{"version":3,"sources":["C:/agents/gcts-mca-ado-buildsvr04-w2022/_work/1/s/src/TransCanada.GCTS.App.UI/node_modules/@angular/compiler/src sync","C:/agents/gcts-mca-ado-buildsvr04-w2022/_work/1/s/src/TransCanada.GCTS.App.UI/node_modules/moment/locale sync ^\\.\\/.*$","src/environments/environment.ts","src/app/shared/services/webapp/configuration/configuration.service.ts","src/app/shared/services/webapp/session/session.service.ts","src/app/shared/classes/base-component.ts","src/app/shared/services/webapp/alert/alert.service.ts","src/app/shared/services/webapp/app/app.service.ts","src/app/shared/services/webapp/jwt/jwt.service.ts","src/app/shared/services/webapp/authentication/authentication.service.ts","src/app/shared/classes/user.ts","src/app/shared/services/webapp/capabilities/capabilities.service.ts","src/app/shared/services/webapp/session-timeout-modal/session-timeout-modal.service.ts","src/app/shared/services/webapp/user/user-service.ts","src/app/shared/classes/date-time.ts","src/app/shared/classes/gas-day.ts","src/app/shared/classes/gcts-http-params.ts","src/app/shared/resources/abstract-resource.service.ts","src/app/shared/services/webapp/uri/uri.service.ts","src/app/shared/resources/nominations-resource.service.ts","src/app/shared/services/nomination/nomination-enterprise/nomination-enterprise.service.ts","src/app/shared/classes/EnrichmentEnterprise.ts","src/app/shared/classes/nomination-pipeline-gas-day.ts","src/app/shared/classes/gas-cycle.ts","src/app/shared/classes/simple-gas-day-cycle-status.ts","src/app/shared/services/nomination/nomination-system/nomination-system.service.ts","src/app/shared/services/nomination/nomination-enrichment/nomination-enrichment.service.ts","src/app/shared/services/nomination/nomination-enterprise-enrichment/nomination-enterprise-enrichment.service.ts","src/app/shared/components/menu-button/menu-button.component.ts","src/app/shared/components/menu-button/menu-button.component.html","src/app/shared/classes/pageable-list.ts","src/app/shared/components/select/select.component.html","src/app/shared/components/select/select.component.ts","src/app/shared/classes/service-models/production-setup-update-request.ts","src/app/shared/services/nomination/nomination-pipeline/nomination-pipeline.service.ts","src/app/shared/services/nomination/pipeline-settings-map/pipeline-setting-map.service.ts","src/app/shared/components/pipeline-dropdown/pipeline-dropdown.component.html","src/app/shared/components/pipeline-dropdown/pipeline-dropdown.component.ts","src/app/shared/components/logout/logout.component.ts","src/app/shared/components/logout/logout.component.html","src/app/shared/components/header/header.component.html","src/app/shared/components/header/header.component.ts","src/app/shared/resources/commondata-resource.service.ts","src/app/shared/services/webapp/test-page/test-page.service.ts","src/app/shared/directives/secure-item/secure-item.directive.ts","src/app/shared/pipes/date-format/date-format.pipe.ts","src/app/shared/components/menu/menu.component.html","src/app/shared/components/menu/menu.component.ts","src/app/shared/services/webapp/load-overlay/load-overlay.service.ts","src/app/shared/components/section-load-overlay/section-load-overlay.component.html","src/app/shared/components/section-load-overlay/section-load-overlay.component.ts","src/app/shared/services/webapp/modal-options/selected-modal-option.ts","src/app/shared/services/webapp/modal-options/modal-options.ts","src/app/shared/services/webapp/modal-options/yes-no-modal-options.ts","src/app/shared/services/webapp/modal-options/yes-no-cancel-modal-options.ts","src/app/shared/services/webapp/modal-options/ok-modal-options.ts","src/app/shared/components/modal/modal-configuration.ts","src/app/shared/services/webapp/modal-options-to-configuration-builder/modal-options-to-configuration-builder.service.ts","src/app/shared/services/webapp/yes-no-cancel-modal/yes-no-cancel-modal.service.ts","src/app/shared/components/modal/modal.component.html","src/app/shared/components/modal/modal.component.ts","src/app/shared/components/yes-no-cancel-modal/yes-no-cancel-modal.component.ts","src/app/shared/components/yes-no-cancel-modal/yes-no-cancel-modal.component.html","src/app/shared/components/session-timeout-modal/session-timeout-modal.component.ts","src/app/shared/components/session-timeout-modal/session-timeout-modal.component.html","src/app/shared/components/content/content.component.ts","src/app/shared/components/content/content.component.html","src/app/gcts/gcts.component.ts","src/app/gcts/gcts.component.html","src/app/shared/services/common-data/enterprise/enterprise.service.ts","src/app/shared/components/alert/alert.component.html","src/app/shared/components/alert/alert.component.ts","src/app/shared/components/back-to-top/back-to-top.component.ts","src/app/shared/components/back-to-top/back-to-top.component.html","src/app/shared/components/page-content/page-content.component.ts","src/app/shared/components/page-content/page-content.component.html","src/app/gcts/assume-identity/assume-identity.component.html","src/app/gcts/assume-identity/assume-identity.component.ts","src/app/shared/services/webapp/health-check/health-check.service.ts","src/app/gcts/health/health.component.html","src/app/gcts/health/health.component.ts","src/app/shared/services/webapp/authorization/authorization.service.ts","src/app/gcts/reporting/reports/external-report/external-report.component.html","src/app/gcts/reporting/reports/external-report/external-report.component.ts","src/app/gcts/reporting/reports/internal-reports/internal-reports.component.html","src/app/gcts/reporting/reports/internal-reports/internal-reports.component.ts","src/app/gcts/reporting/reports/reports.component.html","src/app/gcts/reporting/reports/reports.component.ts","src/app/gcts/reporting/reporting.routes.ts","src/app/shared/classes/gas-month.ts","src/app/shared/resources/flowinggas-resource.service.ts","src/app/shared/services/flowing-gas/flowing-gas-allocation-and-balancing-billing-process/flowing-gas-allocation-and-balancing-billing-process.service.ts","src/app/shared/classes/base-view-model.ts","src/app/gcts/administration/billing-month/billing-month.model.ts","src/app/shared/classes/billing-month-status.ts","src/app/shared/classes/billing-month.ts","src/app/shared/classes/billing-process-status.ts","src/app/shared/classes/validators/param-validator.ts","src/app/shared/services/common-data/common-data-billing-month/common-data-billing-month.service.ts","src/app/shared/services/flowing-gas/flowing-gas-prior-day-pending-activities/flowing-gas-prior-day-pending-activities.service.ts","src/app/shared/resources/invoicing-resource.service.ts","src/app/shared/services/invoicing/invoicing-invoice-billing-process/invoicing-invoice-billing-process.service.ts","src/app/shared/services/flowing-gas/flowing-gas-measurement-billing-process/flowing-gas-measurement-billing-process.service.ts","src/app/shared/services/common-data/common-data-gasday/common-data-gasday.service.ts","src/app/shared/components/gas-month-picker/gas-month-picker.component.ts","src/app/shared/components/gas-month-picker/gas-month-picker.component.html","src/app/shared/pipes/gasmonth-format/gasmonth-format.pipe.ts","src/app/shared/pipes/when-empty-use/when-empty-use.pipe.ts","src/app/gcts/administration/billing-month/billing-month.component.html","src/app/gcts/administration/billing-month/billing-month.component.ts","src/app/shared/resources/scheduledjobs-resource.service.ts","src/app/shared/services/job-scheduling/scheduled-jobs/scheduled-jobs.service.ts","src/app/shared/classes/gcts-process.ts","src/app/shared/components/gas-day-picker/gas-day-picker.component.ts","src/app/shared/components/gas-day-picker/gas-day-picker.component.html","src/app/shared/components/time-picker/time-picker.component.ts","src/app/shared/components/time-picker/time-picker.component.html","src/app/gcts/administration/configure-job-schedules/configure-job-schedules.component.html","src/app/gcts/administration/configure-job-schedules/configure-job-schedules.component.ts","src/app/shared/services/nomination/bid-floor/bid-floor.service.ts","src/app/shared/classes/gas-day-cycle.ts","src/app/shared/services/nomination/nomination-request/nomination-request.service.ts","src/app/shared/services/nomination/nomination-location/nomination-location.service.ts","src/app/shared/classes/typed-params.ts","src/app/shared/classes/base-search-component.ts","src/app/shared/classes/gas-day-cycle-status.ts","src/app/shared/classes/gas-day-cycle-status-collection.ts","src/app/shared/classes/gas-cycle.logic.ts","src/app/shared/classes/gas-day-range-params.ts","src/app/shared/services/nomination/gas-cycle/gas-cycle.service.ts","src/app/shared/services/nomination/nomination-location-enrichment/nomination-location-enrichment.service.ts","src/app/shared/services/webapp/file-service/file.service.ts","src/app/shared/pipes/display-name/display-name.pipe.ts","src/app/shared/components/multi-select/multi-select.component.html","src/app/shared/components/multi-select/multi-select.component.ts","src/app/shared/components/switch/switch/switch.component.ts","src/app/shared/components/switch/switch/switch.component.html","src/app/shared/pipes/gasday-format/gasday-format.pipe.ts","src/app/shared/pipes/boolean-as-yes-no/boolean-as-yes-no.pipe.ts","src/app/shared/pipes/multi-display-name/multi-display-name.pipe.ts","src/app/gcts/administration/view-bid-floors/view-bid-floors.component.html","src/app/gcts/administration/view-bid-floors/view-bid-floors.component.ts","C:/agents/gcts-mca-ado-buildsvr04-w2022/_work/1/s/src/TransCanada.GCTS.App.UI/constants.ts","src/app/shared/services/nomination/fuel-ratio/fuel-ratio.service.ts","src/app/gcts/administration/view-fuel-ratios/view-fuel-ratios.component.html","src/app/gcts/administration/view-fuel-ratios/view-fuel-ratios.component.ts","src/app/shared/classes/CsvUtility.ts","src/app/shared/enums/interval-type.ts","src/app/shared/directives/debounce-click/debounce-click.directive.ts","src/app/gcts/administration/load-fuel-ratios/load-fuel-ratios.component.html","src/app/gcts/administration/load-fuel-ratios/load-fuel-ratios.component.ts","src/app/gcts/administration/bid-floor-gas-cycle-picker/bid-floor-gas-cycle-picker.component.ts","src/app/gcts/administration/bid-floor-gas-cycle-picker/bid-floor-gas-cycle-picker.component.html","src/app/gcts/administration/load-bid-floors/load-bid-floors.component.html","src/app/gcts/administration/load-bid-floors/load-bid-floors.component.ts","src/app/shared/services/invoicing/invoicing-invoice-package/invoicing-invoice-package.service.ts","src/app/gcts/administration/billing-month/edit-billing-month/edit-billing-month.component.html","src/app/gcts/administration/billing-month/edit-billing-month/edit-billing-month.component.ts","src/app/gcts/administration/billing-month/add-billing-month/add-billing-month.component.html","src/app/gcts/administration/billing-month/add-billing-month/add-billing-month.component.ts","src/app/gcts/administration/job-runner/job-runner.model.ts","src/app/shared/classes/edi-confirmation-method.ts","src/app/shared/classes/allocation-method.ts","src/app/shared/classes/services/base-job-service.ts","src/app/shared/resources/contracts-resource.service.ts","src/app/shared/services/job-scheduling/jobs/job.service.ts","src/app/gcts/administration/job-runner/job-runner.component.html","src/app/gcts/administration/job-runner/job-runner.component.ts","src/app/gcts/administration/view-job-history/view-job-history.model.ts","src/app/gcts/administration/view-job-history/view-job-history.component.html","src/app/gcts/administration/view-job-history/view-job-history.component.ts","src/app/shared/services/shared/base-data-configuration.service.ts","src/app/shared/classes/email-subscription.ts","src/app/shared/services/nomination/email-subscription/email-subscription-builder.ts","src/app/gcts/administration/unsubscribe-email-notifications/eventType.ts","src/app/gcts/administration/unsubscribe-email-notifications/unsubscribe-email-notifications.model.ts","src/app/shared/services/nomination/email-subscription/email-subscription.service.ts","src/app/shared/services/common-data/common-data-configuration/common-data-configuration.service.ts","src/app/shared/services/nomination/nomination-data-configuration.service.ts","src/app/shared/services/common-data/common-data-cache/common-data-cache.service.ts","src/app/shared/classes/business-right.ts","src/app/shared/services/contracts/nomination-group/nomination-group.service.ts","src/app/shared/services/common-data/common-data-email-subscription/common-data-email-subscription.service.ts","src/app/gcts/administration/support/support/support.component.html","src/app/gcts/administration/support/support/support.component.ts","src/app/shared/classes/toll-category.ts","src/app/shared/services/invoicing/invoicing-toll/invoicing-toll.service.ts","src/app/gcts/administration/load-tolls/load-tolls.component.html","src/app/gcts/administration/load-tolls/load-tolls.component.ts","src/app/shared/classes/toll-type.ts","src/app/gcts/administration/view-tolls/view-tolls.model.ts","src/app/gcts/administration/view-tolls/delete-toll/delete-toll.component.ts","src/app/gcts/administration/view-tolls/delete-toll/delete-toll.component.html","src/app/shared/devexpress/datagrid-hooks.ts","src/app/shared/interfaces/location.ts","src/app/shared/services/common-data/location/location.service.ts","src/app/shared/services/enrichment/base-enrichment.service.ts","src/app/shared/services/enrichment/location-enrichment.service.ts","src/app/shared/services/invoicing/invoicing-billable-service/invoicing-billable-service.service.ts","src/app/gcts/administration/view-tolls/view-tolls.component.html","src/app/gcts/administration/view-tolls/view-tolls.component.ts","src/app/shared/classes/editable-search-component.ts","src/app/shared/classes/gas-day-search-resource-tracker.ts","src/app/gcts/administration/hourly-flow-maintenance/hourly-flow-maintenance.model.ts","src/app/shared/services/nomination/hourly-flow-maintenance/hourly-flow-maintenance.service.ts","src/app/gcts/administration/hourly-flow-maintenance/hourly-flow-maintenance.component.html","src/app/gcts/administration/hourly-flow-maintenance/hourly-flow-maintenance.component.ts","src/app/shared/services/enrichment/enterprise-enrichment.service.ts","src/app/shared/pipes/space-uppercase/space-uppercase.pipe.ts","src/app/gcts/administration/unsubscribe-email-notifications/unsubscribe-email-notifications.component.html","src/app/gcts/administration/unsubscribe-email-notifications/unsubscribe-email-notifications.component.ts","src/app/gcts/administration/maintain-agents/maintain-agents.model.ts","src/app/shared/services/contracts/customer/customer.service.ts","src/app/shared/services/nomination/agent-relationship/agent-relationship.service.ts","src/app/gcts/administration/maintain-agents/base-agents.component.ts","src/app/shared/services/enrichment/nomgroup-enrichment.service.ts","src/app/gcts/administration/maintain-agents/maintain-agents.component.html","src/app/gcts/administration/maintain-agents/maintain-agents.component.ts","src/app/gcts/administration/maintain-agents/add-agents/add-agent.model.ts","src/app/gcts/administration/maintain-agents/add-agents/add-agent.component.html","src/app/gcts/administration/maintain-agents/add-agents/add-agent.component.ts","src/app/gcts/administration/maintain-agents/view-agents/view-agents.component.html","src/app/gcts/administration/maintain-agents/view-agents/view-agents.component.ts","src/app/gcts/administration/sts-transfer-balance/sts-transfer-balance.model.ts","src/app/shared/services/flowing-gas/sts-transfer-balance-service/sts-transfer-balance.service.ts","src/app/shared/classes/min-and-max.ts","src/app/shared/pipes/number-format/number-format.pipe.ts","src/app/gcts/administration/sts-transfer-balance/sts-transfer-balance.component.html","src/app/gcts/administration/sts-transfer-balance/sts-transfer-balance.component.ts","src/app/gcts/administration/sts-balance-parameters/sts-balance-parameters.model.ts","src/app/shared/services/flowing-gas/flowing-gas-storage-balance-service/flowing-gas-storage-balance-service.ts","src/app/gcts/administration/sts-balance-parameters/sts-balance-parameters.component.html","src/app/gcts/administration/sts-balance-parameters/sts-balance-parameters.component.ts","src/app/gcts/administration/sts-balance-parameters/add-storage-transportation-balance/add-storage-transportation-balance.model.ts","src/app/shared/services/accounts/accounts-enterprise/accounts-enterprise.service.ts","src/app/gcts/administration/sts-balance-parameters/add-storage-transportation-balance/add-storage-transportation-balance.component.ts","src/app/gcts/administration/sts-balance-parameters/add-storage-transportation-balance/add-storage-transportation-balance.component.html","src/app/shared/services/nomination/load-auto-balance-location-order/load-auto-balance-location-order.service.ts","src/app/gcts/administration/load-auto-balance-location-order/load-auto-balance-location-order.component.html","src/app/gcts/administration/load-auto-balance-location-order/load-auto-balance-location-order.component.ts","src/app/shared/services/nomination/load-confirmation-auto-balance-location-order/load-confirmation-auto-balance-location-order.service.ts","src/app/gcts/administration/load-confirmation-auto-balance-location-order/load-confirmation-auto-balance-location-order.component.html","src/app/gcts/administration/load-confirmation-auto-balance-location-order/load-confirmation-auto-balance-location-order.component.ts","src/app/gcts/administration/administration.routes.ts","src/app/gcts/flowinggas/prior-day-pending-activities/prior-day-pending-activities.model.ts","src/app/shared/services/flowing-gas/flowing-gas-prior-day-pending-activities-csv-builder-service/flowing-gas-prior-day-pending-activities-csv-builder.service.ts","src/app/gcts/flowinggas/prior-day-pending-activities/prior-day-pending-activities.component.html","src/app/gcts/flowinggas/prior-day-pending-activities/prior-day-pending-activities.component.ts","src/app/gcts/flowinggas/uniform-hourly-flow-report/uniform-hourly-flow-report.model.ts","src/app/shared/services/flowing-gas/flowing-gas-uniform-hourly-flow-report/flowing-gas-uniform-hourly-flow-report.service.ts","src/app/gcts/flowinggas/uniform-hourly-flow-report/uniform-hourly-flow-report.component.ts","src/app/gcts/flowinggas/uniform-hourly-flow-report/uniform-hourly-flow-report.component.html","src/app/shared/classes/run-report-as-type.ts","src/app/shared/classes/gas-account-type.ts","src/app/gcts/flowinggas/account-summary-by-location-daily-report/account-summary-by-location-daily-report.model.ts","src/app/shared/classes/account-summary-report-type.ts","src/app/shared/services/flowing-gas/flowing-gas-account-summary-service/flowing-gas-account-summary.service.ts","src/app/shared/services/flowing-gas/flowing-gas-enterprise-service/flowing-gas-enterprise-service.ts","src/app/shared/services/flowing-gas/flowing-gas-pipeline-system-setting-service/flowing-gas-pipeline-system-setting-service.ts","src/app/gcts/flowinggas/account-summary-by-location-daily-report/account-summary-by-location-daily-report.component.html","src/app/gcts/flowinggas/account-summary-by-location-daily-report/account-summary-by-location-daily-report.component.ts","src/app/gcts/flowinggas/volume-energy-composition/volume-energy-composition.model.ts","src/app/shared/services/flowing-gas/volume-energy-composition/volume-energy-composition.service.ts","src/app/shared/components/date-time-picker/date-time-picker.component.ts","src/app/shared/components/date-time-picker/date-time-picker.component.html","src/app/gcts/flowinggas/volume-energy-composition/volume-energy-composition.component.html","src/app/gcts/flowinggas/volume-energy-composition/volume-energy-composition.component.ts","src/app/gcts/flowinggas/transportation-account-detail/transportation-account-detail.model.ts","src/app/shared/services/contracts/invoice-group/invoice-group.service.ts","src/app/shared/services/flowing-gas/transportation-account-detail/transportation-account-detail.service.ts","src/app/gcts/flowinggas/transportation-account-detail/transportation-account-details-transportation-tab/transportation-account-details-transportation-tab.component.html","src/app/gcts/flowinggas/transportation-account-detail/transportation-account-details-transportation-tab/transportation-account-details-transportation-tab.component.ts","src/app/gcts/flowinggas/transportation-account-detail/transportation-account-details-transfer-tab/transportation-account-details-transfer-tab.component.html","src/app/gcts/flowinggas/transportation-account-detail/transportation-account-details-transfer-tab/transportation-account-details-transfer-tab.component.ts","src/app/gcts/flowinggas/transportation-account-detail/transportation-account-details-fuel-tab/transportation-account-details-fuel-popup/transportation-account-details-fuel-popup.component.html","src/app/gcts/flowinggas/transportation-account-detail/transportation-account-details-fuel-tab/transportation-account-details-fuel-popup/transportation-account-details-fuel-popup.component.ts","src/app/gcts/flowinggas/transportation-account-detail/transportation-account-details-fuel-tab/transportation-account-details-fuel-tab.component.html","src/app/gcts/flowinggas/transportation-account-detail/transportation-account-details-fuel-tab/transportation-account-details-fuel-tab.component.ts","src/app/gcts/flowinggas/transportation-account-detail/transportation-account-details-transportation-variance-tab/transportation-account-details-transportation-variance-tab.component.html","src/app/gcts/flowinggas/transportation-account-detail/transportation-account-details-transportation-variance-tab/transportation-account-details-transportation-variance-tab.component.ts","src/app/gcts/flowinggas/transportation-account-detail/transportation-account-detail.component.html","src/app/gcts/flowinggas/transportation-account-detail/transportation-account-detail.component.ts","src/app/shared/services/flowing-gas/override-makeup-nominations/override-makeup-nominations.service.ts","src/app/gcts/flowinggas/override-makeup-nominations/override-makeup-nominations.model.ts","src/app/shared/services/flowing-gas/location/flowing-gas-location.service.ts","src/app/shared/services/flowing-gas/override-makeup-nominations/override-makeup-nominations-csv-builder.service.ts","src/app/gcts/flowinggas/override-makeup-nominations/override-makeup-nominations-tab/override-makeup-nominations-tab.component.html","src/app/gcts/flowinggas/override-makeup-nominations/override-makeup-nominations-tab/override-makeup-nominations-tab.component.ts","src/app/gcts/flowinggas/override-makeup-nominations/override-makeup-nominations.component.html","src/app/gcts/flowinggas/override-makeup-nominations/override-makeup-nominations.component.ts","src/app/shared/classes/boolean-helper.ts","src/app/gcts/flowinggas/it-penalities/it-penalties.model.ts","src/app/shared/services/flowing-gas/it-penalties-service/it-penalties.service.ts","src/app/shared/pipes/date-to-gas-day-format/date-to-gas-day-format.pipe.ts","src/app/gcts/flowinggas/it-penalities/it-penalties.component.html","src/app/gcts/flowinggas/it-penalities/it-penalties.component.ts","src/app/gcts/flowinggas/account-summary-by-location-monthly-report/account-summary-by-location-monthly-report.model.ts","src/app/gcts/flowinggas/account-summary-by-location-monthly-report/account-summary-by-location-monthly-report.component.html","src/app/gcts/flowinggas/account-summary-by-location-monthly-report/account-summary-by-location-monthly-report.component.ts","src/app/shared/services/flowing-gas/measurement-service/measurement.service.ts","src/app/shared/components/expand-collapse/expand-collapse.component.html","src/app/shared/components/expand-collapse/expand-collapse.component.ts","src/app/gcts/flowinggas/view-measurement/view-measurement.component.html","src/app/gcts/flowinggas/view-measurement/view-measurement.component.ts","src/app/gcts/flowinggas/operator-balance-report/operator-balance-report.model.ts","src/app/shared/classes/unit-of-measure.ts","src/app/shared/services/flowing-gas/operator-balance/operator-balance-service.ts","src/app/gcts/flowinggas/operator-balance-report/base-operator-balance-report-tab.component.ts","src/app/gcts/flowinggas/operator-balance-report/operator-balance-report-location-balance-tab/operator-balance-report-location-balance-tab.component.html","src/app/gcts/flowinggas/operator-balance-report/operator-balance-report-location-balance-tab/operator-balance-report-location-balance-tab.component.ts","src/app/gcts/flowinggas/operator-balance-report/operator-balance-report-billed-excess-quantity-tab/billed-excess-quantity-popup/billed-excess-quantity-popup.component.html","src/app/gcts/flowinggas/operator-balance-report/operator-balance-report-billed-excess-quantity-tab/billed-excess-quantity-popup/billed-excess-quantity-popup.component.ts","src/app/gcts/flowinggas/operator-balance-report/operator-balance-report-billed-excess-quantity-tab/operator-balance-report-billed-excess-quantity-tab.component.html","src/app/gcts/flowinggas/operator-balance-report/operator-balance-report-billed-excess-quantity-tab/operator-balance-report-billed-excess-quantity-tab.component.ts","src/app/gcts/flowinggas/operator-balance-report/operator-balance-report-lba-daily-variance-tab/operator-balance-report-lba-daily-variance-tab.component.html","src/app/gcts/flowinggas/operator-balance-report/operator-balance-report-lba-daily-variance-tab/operator-balance-report-lba-daily-variance-tab.component.ts","src/app/gcts/flowinggas/operator-balance-report/operator-balance-report-cumulative-excess-tab/operator-balance-report-cumulative-excess-tab.component.html","src/app/gcts/flowinggas/operator-balance-report/operator-balance-report-cumulative-excess-tab/operator-balance-report-cumulative-excess-tab.component.ts","src/app/gcts/flowinggas/operator-balance-report/operator-balance-report.component.html","src/app/gcts/flowinggas/operator-balance-report/operator-balance-report.component.ts","src/app/gcts/flowinggas/pending-prior-period-adjustment/pending-prior-period-adjustment.model.ts","src/app/shared/services/flowing-gas/pending-prior-period-adjustment/pending-prior-period-adjustment.service.ts","src/app/gcts/flowinggas/pending-prior-period-adjustment/pending-ppa-measurement-tab/pending-ppa-measurement-tab.component.html","src/app/gcts/flowinggas/pending-prior-period-adjustment/pending-ppa-measurement-tab/pending-ppa-measurement-tab.component.ts","src/app/gcts/flowinggas/pending-prior-period-adjustment/pending-ppa-transportation-tab/pending-ppa-transportation-tab.component.html","src/app/gcts/flowinggas/pending-prior-period-adjustment/pending-ppa-transportation-tab/pending-ppa-transportation-tab.component.ts","src/app/gcts/flowinggas/pending-prior-period-adjustment/pending-ppa-transfer-tab/pending-ppa-transfer-tab.component.html","src/app/gcts/flowinggas/pending-prior-period-adjustment/pending-ppa-transfer-tab/pending-ppa-transfer-tab.component.ts","src/app/gcts/flowinggas/pending-prior-period-adjustment/pending-prior-period-adjustment.component.html","src/app/gcts/flowinggas/pending-prior-period-adjustment/pending-prior-period-adjustment.component.ts","src/app/gcts/flowinggas/system-balance/system-balance.model.ts","src/app/shared/services/flowing-gas/system-balance-service/system-balalnce.service.ts","src/app/gcts/flowinggas/system-balance/system-balance.component.html","src/app/gcts/flowinggas/system-balance/system-balance.component.ts","src/app/gcts/flowinggas/storage-transportation-balance-report/storage-transportation-balance-report.model.ts","src/app/shared/services/flowing-gas/storage-transportation-balance/storage-transportation-balance.service.ts","src/app/shared/classes/keyboard-input.ts","src/app/shared/classes/datagrid-helpers.ts","src/app/shared/helpers/data-grid-column-format-helper.ts","src/app/gcts/flowinggas/storage-transportation-balance-report/storage-transportation-balance-balance-tab/storage-transportation-balance-balance-tab.component.html","src/app/gcts/flowinggas/storage-transportation-balance-report/storage-transportation-balance-balance-tab/storage-transportation-balance-balance-tab.component.ts","src/app/gcts/flowinggas/storage-transportation-balance-report/storage-transportation-balance-excess-tab/storage-transportation-balance-excess-tab.component.html","src/app/gcts/flowinggas/storage-transportation-balance-report/storage-transportation-balance-excess-tab/storage-transportation-balance-excess-tab.component.ts","src/app/gcts/flowinggas/storage-transportation-balance-report/storage-transportation-balance-report.component.html","src/app/gcts/flowinggas/storage-transportation-balance-report/storage-transportation-balance-report.component.ts","src/app/shared/services/webapp/unsaved-changes/unsaved-changes.service.ts","src/app/gcts/flowinggas/manual-transactions/manual-transactions.model.ts","src/app/shared/services/flowing-gas/manual-transaction-service/manual-transaction.service.ts","src/app/shared/services/common-data/pipelines/common-data-pipelines.service.ts","src/app/gcts/flowinggas/manual-transactions/manual-transactions.component.html","src/app/gcts/flowinggas/manual-transactions/manual-transactions.component.ts","src/app/gcts/flowinggas/statistics-canada-download/statistics-canada-download.model.ts","src/app/shared/services/flowing-gas/statistics-canada-download-service/statistics-canada-download.service.ts","src/app/gcts/flowinggas/statistics-canada-download/statistics-canada-download.component.html","src/app/gcts/flowinggas/statistics-canada-download/statistics-canada-download.component.ts","src/app/gcts/flowinggas/outstanding-balance-export/outstanding-balance-export.model.ts","src/app/shared/services/flowing-gas/outstanding-balance-export-service/outstanding-balance-export.service.ts","src/app/gcts/flowinggas/outstanding-balance-export/outstanding-balance-export.component.html","src/app/gcts/flowinggas/outstanding-balance-export/outstanding-balance-export.component.ts","src/app/gcts/flowinggas/transaction-export/transaction-export.model.ts","src/app/shared/services/accounts/billable-service/accounts-billable-services.service.ts","src/app/gcts/flowinggas/transaction-export/transaction-export.component.html","src/app/gcts/flowinggas/transaction-export/transaction-export.component.ts","src/app/gcts/flowinggas/balancing-fees-summary-report/balancing-fees-summary-report.model.ts","src/app/shared/services/flowing-gas/flowing-gas-balancing-fees-summary-report-service/flowing-gas-balancing-fees-summary-report.service.ts","src/app/gcts/flowinggas/balancing-fees-summary-report/balancing-fees-summary-daily-tab/balancing-fees-summary-daily-tab.component.html","src/app/gcts/flowinggas/balancing-fees-summary-report/balancing-fees-summary-daily-tab/balancing-fees-summary-daily-tab.component.ts","src/app/gcts/flowinggas/balancing-fees-summary-report/balancing-fees-summary-cumulative-tab/balancing-fees-summary-cumulative-tab.component.html","src/app/gcts/flowinggas/balancing-fees-summary-report/balancing-fees-summary-cumulative-tab/balancing-fees-summary-cumulative-tab.component.ts","src/app/gcts/flowinggas/balancing-fees-summary-report/balancing-fees-summary-report.component.html","src/app/gcts/flowinggas/balancing-fees-summary-report/balancing-fees-summary-report.component.ts","src/app/gcts/flowinggas/storage-transportation-balance-summary/storage-transportation-balance-summary.model.ts","src/app/shared/pipes/date-time-format/date-time-format.pipe.ts","src/app/gcts/flowinggas/storage-transportation-balance-summary/storage-transportation-balance-summary.component.html","src/app/gcts/flowinggas/storage-transportation-balance-summary/storage-transportation-balance-summary.component.ts","src/app/shared/classes/view-helpers/measurement-row.ts","src/app/gcts/flowinggas/stage-measurement/stage-measurements-upload-view-model.ts","src/app/shared/classes/service-models/stage-measurement-upload-parameters.ts","src/app/gcts/flowinggas/stage-measurement/stage-measurements.component.html","src/app/gcts/flowinggas/stage-measurement/stage-measurements.component.ts","src/app/shared/classes/flow-direction.ts","src/app/shared/classes/pda-method.ts","src/app/gcts/flowinggas/pda-instructions/pda-instructions.model.ts","src/app/gcts/flowinggas/pda-instructions/pda-instruction-change-tracker.ts","src/app/gcts/flowinggas/pda-instructions/replace-pda-instructions/replace-pda-instructions-model.ts","src/app/gcts/flowinggas/pda-instructions/replace-pda-instructions/replace-pda-instructions-component.html","src/app/gcts/flowinggas/pda-instructions/replace-pda-instructions/replace-pda-instructions-component.ts","src/app/gcts/flowinggas/pda-instruction-event-history/pda-instruction-event-history.model.ts","src/app/shared/services/nomination/account-injection-limit/account-injection-limit.service.ts","src/app/shared/services/nomination/withdrawal-service/withdrawal-service.service.ts","src/app/shared/services/nomination/nomination-nom-group/nomination-nom-group.service.ts","src/app/shared/services/flowing-gas/pda-instructions-service/pda-instructions.service.ts","src/app/gcts/flowinggas/pda-instructions/pda-instructions.component.html","src/app/gcts/flowinggas/pda-instructions/pda-instructions.component.ts","src/app/gcts/flowinggas/flowing-gas-monitor/flowing-gas-monitor.model.ts","src/app/gcts/invoicing/invoice-business-messages/invoice-business-messages.model.ts","src/app/shared/classes/id-name.ts","src/app/shared/services/flowing-gas/flowing-gas-activity-message-service/flowing-gas-activity-message.service.ts","src/app/gcts/flowinggas/flowing-gas-monitor/flowing-gas-monitor.component.html","src/app/gcts/flowinggas/flowing-gas-monitor/flowing-gas-monitor.component.ts","src/app/shared/services/nomination/confirmation/confirmation.service.ts","src/app/gcts/flowinggas/pda-instruction-event-history/pda-instruction-event-history.component.html","src/app/gcts/flowinggas/pda-instruction-event-history/pda-instruction-event-history.component.ts","src/app/shared/classes/service-models/edi-test-harness/upload-pda-instructions-parameters.ts","src/app/shared/services/nomination/edi-test-harness/edi-test-harness.service.ts","src/app/gcts/flowinggas/edi-test-harness/upload-pda-instructions/upload-pda-instructions.component.html","src/app/gcts/flowinggas/edi-test-harness/upload-pda-instructions/upload-pda-instructions.component.ts","src/app/gcts/flowinggas/location-imbalance-report/location-imbalance-report-search-params.ts","src/app/gcts/flowinggas/location-imbalance-report/location-imbalance-report-model.ts","src/app/shared/enums/gas-day-status-code.ts","src/app/shared/enums/ofo-state.ts","src/app/gcts/flowinggas/location-imbalance-report/location-imbalance-report-csv-builder.service.ts","src/app/gcts/flowinggas/location-imbalance-report/location-imbalance-report-dto.ts","src/app/shared/services/flowing-gas/flowing-gas-location-imbalance-service/flowing-gas-location-imbalance.service.ts","src/app/shared/services/flowing-gas/flowing-gas-gas-day-status-service/flowing-gas-gas-day-status.service.ts","src/app/shared/services/flowing-gas/npp-data-service/npp-data.service.ts","src/app/shared/components/email-subscription/email-subscription.component.html","src/app/shared/components/email-subscription/email-subscription.component.ts","src/app/gcts/flowinggas/location-imbalance-report/location-imbalance-report.component.html","src/app/gcts/flowinggas/location-imbalance-report/location-imbalance-report.component.ts","src/app/gcts/flowinggas/view-npp-data/view-npp-data.model.ts","src/app/gcts/flowinggas/view-npp-data/view-npp-data.component.html","src/app/gcts/flowinggas/view-npp-data/view-npp-data.component.ts","src/app/gcts/flowinggas/trend-compliance/trend-compliance.model.ts","src/app/shared/services/flowing-gas/flowing-gas-trend-compliance-service/flowing-gas-trend-compliance-service.ts","src/app/gcts/flowinggas/trend-compliance/trend-compliance.component.html","src/app/gcts/flowinggas/trend-compliance/trend-compliance.component.ts","src/app/shared/classes/ofo-status.ts","src/app/shared/services/flowing-gas/ofo-maintenance-service/ofo-maintenance.service.ts","src/app/gcts/flowinggas/ofo-maintenance/ofo-maintenance.model.ts","src/app/shared/services/webapp/error/error-service.ts","src/app/gcts/flowinggas/ofo-maintenance/new-ofo-watch-modal/new-ofo-watch-modal.component.html","src/app/gcts/flowinggas/ofo-maintenance/new-ofo-watch-modal/new-ofo-watch-modal.component.ts","src/app/gcts/flowinggas/ofo-maintenance/new-ofo-order-modal/new-ofo-order-modal.model.ts","src/app/gcts/flowinggas/ofo-maintenance/new-ofo-order-modal/new-ofo-order-modal.component.html","src/app/gcts/flowinggas/ofo-maintenance/new-ofo-order-modal/new-ofo-order-modal.component.ts","src/app/gcts/flowinggas/ofo-maintenance/shared/ofo-shippers-base.component.ts","src/app/gcts/flowinggas/ofo-maintenance/ofo-watch-shippers/ofo-watch-shippers.component.html","src/app/gcts/flowinggas/ofo-maintenance/ofo-watch-shippers/ofo-watch-shippers.component.ts","src/app/gcts/flowinggas/ofo-maintenance/ofo-penalty/ofo-penalty.component.html","src/app/gcts/flowinggas/ofo-maintenance/ofo-penalty/ofo-penalty.component.ts","src/app/gcts/flowinggas/ofo-maintenance/ofo-order-shippers/ofo-order-shippers.component.html","src/app/gcts/flowinggas/ofo-maintenance/ofo-order-shippers/ofo-order-shippers.component.ts","src/app/gcts/flowinggas/ofo-maintenance/ofo-maintenance.component.html","src/app/gcts/flowinggas/ofo-maintenance/ofo-maintenance.component.ts","src/app/gcts/flowinggas/ofo-maintenance/ofo-penalty-report/ofo-penalty-report.model.ts","src/app/shared/services/flowing-gas/ofo-penalty-report-service/ofo-penalty-report.service.ts","src/app/gcts/flowinggas/ofo-maintenance/ofo-penalty-report/ofo-penalty-report.component.html","src/app/gcts/flowinggas/ofo-maintenance/ofo-penalty-report/ofo-penalty-report.component.ts","src/app/gcts/flowinggas/ofo-maintenance/ofo-penalty-override/ofo-penalty-override.model.ts","src/app/gcts/flowinggas/ofo-maintenance/ofo-penalty-override/ofo-penalty-override.component.html","src/app/gcts/flowinggas/ofo-maintenance/ofo-penalty-override/ofo-penalty-override.component.ts","src/app/gcts/flowinggas/ofo-credit-report/ofo-credit-report-type.ts","src/app/gcts/flowinggas/ofo-credit-report/ofo-credit-report.model.ts","src/app/shared/services/flowing-gas/ofo-credit-report-service/ofo-credit-report.service.ts","src/app/gcts/flowinggas/ofo-credit-report/ofo-credit-summary/ofo-credit-summary.component.html","src/app/gcts/flowinggas/ofo-credit-report/ofo-credit-summary/ofo-credit-summary.component.ts","src/app/shared/services/invoicing/invoicing-ofo-credits/invoicing-ofo-credits.service.ts","src/app/gcts/flowinggas/ofo-credit-report/ofo-credit-details-by-shipper/ofo-credit-details-by-shipper.component.html","src/app/gcts/flowinggas/ofo-credit-report/ofo-credit-details-by-shipper/ofo-credit-details-by-shipper.component.ts","src/app/gcts/flowinggas/ofo-credit-report/ofo-credit-details-by-order/ofo-credit-details-by-order.component.html","src/app/gcts/flowinggas/ofo-credit-report/ofo-credit-details-by-order/ofo-credit-details-by-order.component.ts","src/app/shared/directives/form-input-number-min/form-input-number-min.ts","src/app/shared/directives/form-input-number-max/form-input-number-max.ts","src/app/gcts/flowinggas/ofo-credit-report/ofo-credit-report.component.html","src/app/gcts/flowinggas/ofo-credit-report/ofo-credit-report.component.ts","src/app/gcts/flowinggas/npp-adjustment-export/npp-adjustment-export.model.ts","src/app/shared/services/flowing-gas/npp-adjustment-export-service/npp-adjustment-export.service.ts","src/app/gcts/flowinggas/npp-adjustment-export/npp-adjustment-export.component.html","src/app/gcts/flowinggas/npp-adjustment-export/npp-adjustment-export.component.ts","src/app/gcts/flowinggas/flowinggas.routes.ts","src/app/gcts/invoicing/invoice-monitor/invoice-monitor.model.ts","src/app/shared/services/invoicing/invoice-accounting-status/invoice-accounting-status.service.ts","src/app/gcts/invoicing/invoice-monitor/invoice-monitor.component.html","src/app/gcts/invoicing/invoice-monitor/invoice-monitor.component.ts","src/app/gcts/invoicing/pals-billing-detail-report/pals-billing-detail-report.model.ts","src/app/shared/services/invoicing/pals-billing-detail-report/pals-billing-detail-report.service.ts","src/app/shared/services/invoicing/invoice-recipient/invoice-recipient.service.ts","src/app/shared/pipes/number-or-all/number-or-all.pipe.ts","src/app/gcts/invoicing/pals-billing-detail-report/pals-billing-detail-report.component.html","src/app/gcts/invoicing/pals-billing-detail-report/pals-billing-detail-report.component.ts","src/app/gcts/invoicing/billed-balancing-fees-report/billed-balancing-fees-report.model.ts","src/app/shared/services/flowing-gas/flowing-gas-billed-balancing-fees-report/flowing-gas-billed-balancing-fees-report.service.ts","src/app/gcts/invoicing/billed-balancing-fees-report/billed-balancing-fees-report.component.html","src/app/gcts/invoicing/billed-balancing-fees-report/billed-balancing-fees-report.component.ts","src/app/gcts/invoicing/view-invoice/invoice-package-model.ts","src/app/gcts/nomination/nomination-requests/sorting-service/sorting.service.ts","src/app/shared/pipes/negative-parenthesis-two-decimals/negative-parenthesis-two-decimals.pipe.ts","src/app/gcts/invoicing/view-invoice/view-invoice.component.html","src/app/gcts/invoicing/view-invoice/view-invoice.component.ts","src/app/gcts/invoicing/override-lba-excess-quantity/override-lba-excess-quantity.model.ts","src/app/gcts/invoicing/override-lba-excess-quantity/daily-lba-excess-quantity-tab/daily-lba-excess-quantity-tab.component.html","src/app/gcts/invoicing/override-lba-excess-quantity/daily-lba-excess-quantity-tab/daily-lba-excess-quantity-tab.component.ts","src/app/gcts/invoicing/override-lba-excess-quantity/cumulative-lba-excess-quantity-tab/cumulative-lba-excess-quantity-tab.component.html","src/app/gcts/invoicing/override-lba-excess-quantity/cumulative-lba-excess-quantity-tab/cumulative-lba-excess-quantity-tab.component.ts","src/app/shared/services/flowing-gas/lba-excess-quantity/lba-excess-quantity.service.ts","src/app/gcts/invoicing/override-lba-excess-quantity/lba-excess-comments-tab/lba-excess-comments-tab.component.html","src/app/gcts/invoicing/override-lba-excess-quantity/lba-excess-comments-tab/lba-excess-comments-tab.component.ts","src/app/gcts/invoicing/override-lba-excess-quantity/override-lba-excess-quantity.component.html","src/app/gcts/invoicing/override-lba-excess-quantity/override-lba-excess-quantity.component.ts","src/app/shared/services/invoicing/invoicing-message/invoicing-message.service.ts","src/app/shared/pipes/filter/filter.pipe.ts","src/app/gcts/invoicing/invoice-business-messages/invoice-business-messages.component.html","src/app/gcts/invoicing/invoice-business-messages/invoice-business-messages.component.ts","src/app/gcts/invoicing/generate-charges/generate-charges.model.ts","src/app/gcts/invoicing/generate-charges/generate-charges.component.html","src/app/gcts/invoicing/generate-charges/generate-charges.component.ts","src/app/gcts/invoicing/print-invoice/print-invoices.model.ts","src/app/shared/pipes/number-less-than-format/number-less-than-format.pipe.ts","src/app/gcts/invoicing/print-invoice/print-invoices.component.html","src/app/gcts/invoicing/print-invoice/print-invoices.component.ts","src/app/gcts/invoicing/publish-invoices/publish-invoices-model.ts","src/app/gcts/invoicing/publish-invoices/publish-invoices.component.html","src/app/gcts/invoicing/publish-invoices/publish-invoices.component.ts","src/app/gcts/invoicing/accounts-receivable/accounts-receivable.model.ts","src/app/shared/services/invoicing/accounts-receivable/accounts-receivable.service.ts","src/app/gcts/invoicing/accounts-receivable/accounts-receivable.component.html","src/app/gcts/invoicing/accounts-receivable/accounts-receivable.component.ts","src/app/gcts/invoicing/view-manual-adjustment/view-manual-adjustment.model.ts","src/app/shared/services/invoicing/invoicing-manual-charge/invoicing-manual-change.service.ts","src/app/gcts/invoicing/view-manual-adjustment/manual-adjustment-customer-popup/manual-adjustment-customer-popup.component.html","src/app/gcts/invoicing/view-manual-adjustment/manual-adjustment-customer-popup/manual-adjustment-customer-popup.component.ts","src/app/shared/components/numeric-only-input/numeric-only-input.component.ts","src/app/shared/components/numeric-only-input/numeric-only-input.component.html","src/app/gcts/invoicing/view-manual-adjustment/manual-adjustment-nomination-group-popup/manual-adjustment-nomination-group-popup.component.html","src/app/gcts/invoicing/view-manual-adjustment/manual-adjustment-nomination-group-popup/manual-adjustment-nomination-group-popup.component.ts","src/app/shared/services/contracts/invoice-recipient/invoice-recipient.service.ts","src/app/shared/services/invoicing/invoicing-tax-rate/invoicing-tax-rate.service.ts","src/app/gcts/invoicing/view-manual-adjustment/view-manual-adjustment-customer/view-manual-adjustment-customer.component.html","src/app/gcts/invoicing/view-manual-adjustment/view-manual-adjustment-customer/view-manual-adjustment-customer.component.ts","src/app/gcts/invoicing/view-manual-adjustment/view-manual-adjustment-nomination-group/view-manual-adjustment-nomination-group.component.html","src/app/gcts/invoicing/view-manual-adjustment/view-manual-adjustment-nomination-group/view-manual-adjustment-nomination-group.component.ts","src/app/gcts/invoicing/view-manual-adjustment/view-manual-adjustment-force-majeure/view-manual-adjustment-force-majeure.component.html","src/app/gcts/invoicing/view-manual-adjustment/view-manual-adjustment-force-majeure/view-manual-adjustment-force-majeure.component.ts","src/app/gcts/invoicing/view-manual-adjustment/view-manual-adjustment.component.html","src/app/gcts/invoicing/view-manual-adjustment/view-manual-adjustment.component.ts","src/app/gcts/invoicing/load-manual-adjustment/load-manual-adjustment.model.ts","src/app/gcts/invoicing/load-manual-adjustment/load-manual-adjustment.component.html","src/app/gcts/invoicing/load-manual-adjustment/load-manual-adjustment.component.ts","src/app/gcts/invoicing/daily-discretionary-revenue-report/daily-discretionary-revenue-report-model.ts","src/app/shared/services/invoicing/daily-discretionary-revenue/daily-discretionary-revenue.service.ts","src/app/gcts/invoicing/daily-discretionary-revenue-report/daily-discretionary-revenue-report.component.html","src/app/gcts/invoicing/daily-discretionary-revenue-report/daily-discretionary-revenue-report.component.ts","src/app/gcts/invoicing/demand-commodity-details-report/demand-commodity-details-report.model.ts","src/app/shared/services/invoicing/invoicing-charges/invoicing-charges.service.ts","src/app/gcts/invoicing/demand-commodity-details-report/demand-commodity-details-report.component.html","src/app/gcts/invoicing/demand-commodity-details-report/demand-commodity-details-report.component.ts","src/app/gcts/invoicing/class-of-service-report/class-of-service-report.model.ts","src/app/shared/services/invoicing/invoicing-class-of-service-report/invoicing-class-of-service-report.service.ts","src/app/gcts/invoicing/class-of-service-report/class-of-service-report.component.html","src/app/gcts/invoicing/class-of-service-report/class-of-service-report.component.ts","src/app/gcts/invoicing/expected-payment/expected-payment-model.ts","src/app/shared/services/invoicing/expected-payment/expected-payment.service.ts","src/app/gcts/invoicing/expected-payment/expected-payment.component.html","src/app/gcts/invoicing/expected-payment/expected-payment.component.ts","src/app/gcts/invoicing/customer-invoice-parameters/customer-invoice-parameters.model.ts","src/app/shared/services/invoicing/invoicing-customer-invoice-parameters/invoicing-customer-invoice-parameters.service.ts","src/app/shared/services/common-data/common-data-invoice-contacts/common-data-invoice-contacts.service.ts","src/app/gcts/invoicing/customer-invoice-parameters/customer-invoice-parameters.component.html","src/app/gcts/invoicing/customer-invoice-parameters/customer-invoice-parameters.component.ts","src/app/shared/classes/yes-no.ts","src/app/gcts/invoicing/customer-invoice-parameters/edit-customer-parameters/edit-customer-parameters.model.ts","src/app/gcts/invoicing/customer-invoice-parameters/edit-customer-parameters/edit-customer-parameters.component.html","src/app/gcts/invoicing/invoicing.routes.ts","src/app/gcts/invoicing/customer-invoice-parameters/edit-customer-parameters/edit-customer-parameters.component.ts","src/app/shared/services/flowing-gas/flowing-gas-test/flowing-gas-test.service.ts","src/app/shared/classes/models/capacity-allocation-type.ts","src/app/gcts/test-page/test-page.component.html","src/app/gcts/test-page/test-page.component.ts","src/app/shared/services/common-data/home/home.service.ts","src/app/shared/pipes/safe-html/safe-html.pipe.ts","src/app/gcts/home/home.component.html","src/app/gcts/home/home.component.ts","src/app/shared/components/content-editor/content-editor.component.ts","src/app/shared/components/content-editor/content-editor.component.html","src/app/gcts/home/edit-home/edit-home.component.html","src/app/gcts/home/home.routes.ts","src/app/gcts/home/edit-home/edit-home.component.ts","src/app/shared/services/nomination/auto-balance-log/auto-balance-events.model.ts","src/app/gcts/nomination/auto-balance-events/auto-balance-events.model.ts","src/app/shared/classes/nomination-event.ts","src/app/shared/services/nomination/nomination-nom-group-enrichment/nomination-nom-group-enrichment.service.ts","src/app/shared/services/nomination/auto-balance-log/auto-balance-log.service.ts","src/app/gcts/nomination/auto-balance-events/auto-balance-events.component.html","src/app/gcts/nomination/auto-balance-events/auto-balance-events.component.ts","src/app/shared/services/nomination/title-transfer-report/title-transfer-report.service.ts","src/app/gcts/nomination/title-transfer-report/title-transfer-report.component.html","src/app/gcts/nomination/title-transfer-report/title-transfer-report.component.ts","src/app/gcts/nomination/nomination-requests/hub-balance/hub-balance.component.html","src/app/gcts/nomination/nomination-requests/hub-balance/hub-balance.component.ts","src/app/gcts/nomination/nomination-requests/base-view.ts","src/app/gcts/nomination/nomination-requests/nomination-requests-page-view/nomination-requests-page-view.component.html","src/app/gcts/nomination/nomination-requests/nomination-requests-page-view/nomination-requests-page-view.component.ts","src/app/gcts/nomination/nomination-requests/nomination-requests-tab-view/nomination-requests-tab-view.component.html","src/app/gcts/nomination/nomination-requests/nomination-requests-tab-view/nomination-requests-tab-view.component.ts","src/app/shared/services/nomination/nomination-request/nomination-request.interface.ts","src/app/shared/classes/billable-service-option.ts","src/app/shared/services/nomination/billable-service-option/billable-service-option.service.ts","src/app/gcts/nomination/nomination-requests/nomination-requests.model.ts","src/app/gcts/nomination/nomination-requests/title-transfer-mismatches/title-transfer-mismatches.model.ts","src/app/gcts/nomination/imbalance-trade-requests/imbalance-trade-requests-service.ts","src/app/shared/classes/nomination-transaction-type.ts","src/app/shared/services/nomination/nomination-transaction-type/nomination-transaction-type.service.ts","src/app/gcts/nomination/nomination-requests/nomination-requests.component.html","src/app/gcts/nomination/nomination-requests/nomination-requests.component.ts","src/app/gcts/nomination/gasday-monitor/gasday-monitor.model.ts","src/app/shared/services/nomination/nomination-window/nomination-window.service.ts","src/app/gcts/nomination/gasday-monitor/reset-cycle-dialog.component.ts","src/app/gcts/nomination/gasday-monitor/reset-cycle-dialog.component.html","src/app/shared/services/nomination/auto-balance/auto-balance.service.ts","src/app/shared/services/nomination/prior-day-activity/prior-day-activity.service.ts","src/app/shared/directives/secure-item/insecure-item.directive.ts","src/app/gcts/nomination/gasday-monitor/gasday-monitor.component.html","src/app/gcts/nomination/gasday-monitor/gasday-monitor.component.ts","src/app/shared/classes/base-datagrid-handlers.ts","src/app/gcts/nomination/transportation-summary/transportation-summary-tab-view/transportation-summary-tab-view.component.html","src/app/gcts/nomination/transportation-summary/transportation-summary-tab-view/transportation-summary-tab-view.component.ts","src/app/gcts/nomination/transportation-summary/transportation-summary-model.ts","src/app/gcts/nomination/transportation-summary/authorizable-quantity-task.ts","src/app/shared/services/nomination/nomination-transaction/nomination-transaction.models.ts","src/app/shared/services/nomination/nomination-transaction/nomination-transaction.service.ts","src/app/gcts/nomination/transportation-summary/transportation-summary.component.html","src/app/gcts/nomination/transportation-summary/transportation-summary.component.ts","src/app/shared/classes/confirmation-status.ts","src/app/shared/services/nomination/confirmation/confirmation-models.ts","src/app/gcts/nomination/confirmation-monitor/confirmation-monitor.component.html","src/app/gcts/nomination/confirmation-monitor/confirmation-monitor.component.ts","src/app/shared/services/nomination/auto-balance/auto-balance-models.ts","src/app/shared/classes/base-csv-model.ts","src/app/gcts/nomination/confirmation-details/confirmation-details.model.ts","src/app/gcts/nomination/confirmation-details/confirmation-details.component.html","src/app/gcts/nomination/confirmation-details/confirmation-details.component.ts","src/app/shared/services/nomination/account-summary/account-summary.service.ts","src/app/gcts/nomination/account-summary/account-summary-model.ts","src/app/shared/services/nomination/account-summary-details/account-summary-details.service.ts","src/app/shared/services/nomination/business-right/business-right.service.ts","src/app/shared/pipes/abbreviate-event/abbreviate-event.ts","src/app/gcts/nomination/account-summary/account-summary.component.html","src/app/gcts/nomination/account-summary/account-summary.component.ts","src/app/gcts/nomination/confirmation-history/confirmation-history.component.html","src/app/gcts/nomination/confirmation-history/confirmation-history.component.ts","src/app/shared/classes/service-models/edi-test-harness/upload-confirmation-request-quick-response-parameters.ts","src/app/gcts/nomination/edi-test-harness/upload-edi-test-file-modal/upload-edi-test-file-modal.component.html","src/app/gcts/nomination/edi-test-harness/upload-edi-test-file-modal/upload-edi-test-file-modal.component.ts","src/app/gcts/nomination/edi-test-harness/upload-confirmation-request-quick-response/upload-confirmation-request-quick-response.component.ts","src/app/shared/classes/service-models/edi-test-harness/upload-confirmation-request-response-parameters.ts","src/app/gcts/nomination/edi-test-harness/upload-confirmation-request-response/upload-confirmation-request-response.component.ts","src/app/gcts/nomination/confirmation-event-history/confirmation-event-history.component.html","src/app/gcts/nomination/confirmation-event-history/confirmation-event-history.component.ts","src/app/gcts/nomination/nomination-exceptions/nomination-exceptions.component.html","src/app/gcts/nomination/nomination-exceptions/nomination-exceptions.component.ts","src/app/shared/services/webapp/row-cell-navigation/row-cell-navigation.service.ts","src/app/gcts/nomination/storage-limit-maintenance/storage-limit-grid-base.ts","src/app/gcts/nomination/storage-limit-maintenance/injections-tab/injections-tab.component.html","src/app/gcts/nomination/storage-limit-maintenance/injections-tab/injections-tab.component.ts","src/app/gcts/nomination/storage-limit-maintenance/storage-limit-maintenance-model.ts","src/app/shared/services/nomination/pooling-service/pooling-service.service.ts","src/app/gcts/nomination/storage-limit-maintenance/pooling-tab/pooling-tab.component.html","src/app/gcts/nomination/storage-limit-maintenance/pooling-tab/pooling-tab.component.ts","src/app/gcts/nomination/storage-limit-maintenance/withdrawal-tab/withdrawal-tab.component.html","src/app/gcts/nomination/storage-limit-maintenance/withdrawal-tab/withdrawal-tab.component.ts","src/app/shared/services/nomination/account-uhf-limit/account-uhf-limit.service.ts","src/app/gcts/nomination/storage-limit-maintenance/uhf-tab/uhf-tab.component.html","src/app/gcts/nomination/storage-limit-maintenance/uhf-tab/uhf-tab.component.ts","src/app/gcts/nomination/storage-limit-maintenance/storage-limit-maintenance.component.html","src/app/gcts/nomination/storage-limit-maintenance/storage-limit-maintenance.component.ts","src/app/gcts/nomination/auto-balance-details/auto-balance-details.model.ts","src/app/gcts/nomination/auto-balance-details/auto-balance-details.component.html","src/app/gcts/nomination/auto-balance-details/auto-balance-details.component.ts","src/app/shared/services/nomination/upload-nomination-requests/upload-nomination-requests.service.ts","src/app/shared/classes/upload-error.ts","src/app/gcts/nomination/nomination-requests/upload-nomination-requests/upload-nomination-requests-view-model.ts","src/app/shared/services/webapp/signalr/signalr.service.ts","src/app/gcts/nomination/nomination-requests/upload-nomination-requests/upload-nomination-requests.component.html","src/app/gcts/nomination/nomination-requests/upload-nomination-requests/upload-nomination-requests.component.ts","src/app/shared/classes/waiver-type.ts","src/app/gcts/nomination/title-transfer-waivers/title-transfer-waivers-model.ts","src/app/shared/classes/waiver-state.ts","src/app/shared/classes/waiver.ts","src/app/shared/services/nomination/title-transfer-waivers/waiver-requests.ts","src/app/shared/services/nomination/title-transfer-waivers/waiver-builder.ts","src/app/shared/services/nomination/title-transfer-waivers/title-transfer-waivers.service.ts","src/app/gcts/nomination/title-transfer-waivers/title-transfer-waivers.component.html","src/app/gcts/nomination/title-transfer-waivers/title-transfer-waivers.component.ts","src/app/gcts/nomination/confirmation-response/confirmation-response.model.ts","src/app/gcts/nomination/confirmation-response/confirmation-response.component.html","src/app/gcts/nomination/confirmation-response/confirmation-response.component.ts","src/app/gcts/nomination/gasday-monitor/pending-sts-nominations/pending-sts-nominations.model.ts","src/app/shared/services/nomination/pending-sts-nominations/pending-sts-nominations.service.ts","src/app/gcts/nomination/gasday-monitor/pending-sts-nominations/pending-sts-nominations.component.html","src/app/gcts/nomination/gasday-monitor/pending-sts-nominations/pending-sts-nominations.component.ts","src/app/gcts/nomination/scheduled-quantity-adjustments/scheduled-quantity-adjustments.model.ts","src/app/shared/services/nomination/scheduled-quantity/scheduled-quantity.service.ts","src/app/shared/classes/reduction-reason-code.ts","src/app/gcts/nomination/scheduled-quantity-adjustments/scheduled-quantity-adjustments.component.html","src/app/gcts/nomination/scheduled-quantity-adjustments/scheduled-quantity-adjustments.component.ts","src/app/gcts/nomination/imbalance-transfer-transactions/imbalance-transfer-transactions-model.ts","src/app/shared/services/nomination/imbalance-transfer/imbalance-transfer.service.ts","src/app/gcts/nomination/imbalance-transfer-transactions/imbalance-transfer-transactions.component.html","src/app/gcts/nomination/imbalance-transfer-transactions/imbalance-transfer-transactions.component.ts","src/app/gcts/nomination/minimum-it-bid-rate/minimum-it-bid-rate-model.ts","src/app/shared/services/nomination/minimum-it-bid-rate/minimum-it-bid-rate.service.ts","src/app/gcts/nomination/minimum-it-bid-rate/minimum-it-bid-rate.component.html","src/app/gcts/nomination/minimum-it-bid-rate/minimum-it-bid-rate.component.ts","src/app/shared/services/nomination/nomination-reports/nomination-reports.service.ts","src/app/gcts/nomination/custody-transfer-report/custody-transfer-report.component.html","src/app/gcts/nomination/custody-transfer-report/custody-transfer-report.component.ts","src/app/shared/services/nomination/transportation-summary-csv-builder/transportation-summary-csv-builder.service.ts","src/app/gcts/nomination/bfp-daily-transportation-summary/bfp-daily-transportation-summary.component.html","src/app/gcts/nomination/bfp-daily-transportation-summary/bfp-daily-transportation-summary.component.ts","src/app/gcts/nomination/contract-utilization/contract-utilization-model.ts","src/app/shared/services/nomination/contract-utilization/contract-utilization.service.ts","src/app/gcts/nomination/contract-utilization/contract-utilization.component.html","src/app/gcts/nomination/contract-utilization/contract-utilization.component.ts","src/app/shared/services/nomination/reports-itbidflooraverage/reports-itbidflooraverage.service.ts","src/app/gcts/nomination/it-bid-floor-average-report/it-bid-floor-average-report.model.ts","src/app/gcts/nomination/it-bid-floor-average-report/it-bid-floor-average-report.component.html","src/app/gcts/nomination/it-bid-floor-average-report/it-bid-floor-average-report.component.ts","src/app/gcts/nomination/imbalance-trade-requests/imbalance-trade-requests-model.ts","src/app/gcts/nomination/imbalance-trade-requests/base-view.ts","src/app/gcts/nomination/imbalance-trade-requests/imbalance-trade-requests-page-view/imbalance-trade-requests-page-view.component.html","src/app/gcts/nomination/imbalance-trade-requests/imbalance-trade-requests-page-view/imbalance-trade-requests-page-view.component.ts","src/app/gcts/nomination/imbalance-trade-requests/imbalance-trade-requests-tab-view/imbalance-trade-requests-tab-view.component.html","src/app/gcts/nomination/imbalance-trade-requests/imbalance-trade-requests-tab-view/imbalance-trade-requests-tab-view.component.ts","src/app/gcts/nomination/imbalance-trade-requests/imbalance-trade-requests.component.html","src/app/gcts/nomination/imbalance-trade-requests/imbalance-trade-requests.component.ts","src/app/gcts/nomination/available-capacity/available-capacity.model.ts","src/app/shared/services/nomination/available-capacity/available-capacity-service.ts","src/app/shared/helpers/string-helpers.ts","src/app/shared/services/nomination/available-capacity/available-capacity-csv-builder-service.ts","src/app/gcts/nomination/available-capacity/available-capacity.component.html","src/app/gcts/nomination/available-capacity/available-capacity.component.ts","src/app/gcts/nomination/capacity-allocation-summary/authorized-quantity-task.ts","src/app/gcts/nomination/capacity-allocation-summary/base-capacity-allocation-summary-grid.component.ts","src/app/gcts/nomination/capacity-allocation-summary/transportation-capacity-allocation-summary-grid/transportation-capacity-allocation-summary-grid.component.html","src/app/gcts/nomination/capacity-allocation-summary/transportation-capacity-allocation-summary-grid/transportation-capacity-allocation-summary-grid.component.ts","src/app/gcts/nomination/capacity-allocation-summary/transfer-capacity-allocation-summary-grid/transfer-capacity-allocation-summary-grid.component.html","src/app/gcts/nomination/capacity-allocation-summary/transfer-capacity-allocation-summary-grid/transfer-capacity-allocation-summary-grid.component.ts","src/app/gcts/nomination/capacity-allocation-summary/capacity-allocation-summary-tab-view/capacity-allocation-summary-tab-view.component.html","src/app/gcts/nomination/capacity-allocation-summary/capacity-allocation-summary-tab-view/capacity-allocation-summary-tab-view.component.ts","src/app/shared/services/nomination/capacity-allocation/capacity-allocation-summary.models.ts","src/app/gcts/nomination/capacity-allocation-summary/capacity-allocation-summary-model.ts","src/app/shared/services/nomination/capacity-allocation/capacity-allocation-summary-service.ts","src/app/gcts/nomination/capacity-allocation-summary/capacity-allocation-summary.component.html","src/app/gcts/nomination/capacity-allocation-summary/capacity-allocation-summary.component.ts","src/app/gcts/nomination/capacity-allocation-details/capacity-allocation-details.model.ts","src/app/shared/services/nomination/capacity-allocation/capacity-allocation-aggregate-details-csv-builder-service.ts","src/app/gcts/nomination/capacity-allocation-details/capacity-allocation-details-aggregate-details/capacity-allocation-details-aggregate-details.component.html","src/app/gcts/nomination/capacity-allocation-details/capacity-allocation-details-aggregate-details/capacity-allocation-details-aggregate-details.component.ts","src/app/gcts/nomination/capacity-allocation-details/capacity-allocation-details-aggregate-pane/capacity-allocation-details-aggregate-pane.component.html","src/app/gcts/nomination/capacity-allocation-details/capacity-allocation-details-aggregate-pane/capacity-allocation-details-aggregate-pane.component.ts","src/app/shared/services/nomination/capacity-allocation/capacity-allocation-transaction-details-csv-builder-service.ts","src/app/gcts/nomination/capacity-allocation-details/capacity-allocation-details-transaction-details/capacity-allocation-details-transaction-details.component.html","src/app/gcts/nomination/capacity-allocation-details/capacity-allocation-details-transaction-details/capacity-allocation-details-transaction-details.component.ts","src/app/gcts/nomination/capacity-allocation-details/capacity-allocation-details-transaction-pane/capacity-allocation-details-transaction-pane.component.html","src/app/gcts/nomination/capacity-allocation-details/capacity-allocation-details-transaction-pane/capacity-allocation-details-transaction-pane.component.ts","src/app/gcts/nomination/capacity-allocation-details/capacity-allocation-details.component.html","src/app/gcts/nomination/capacity-allocation-details/capacity-allocation-details.component.ts","src/app/shared/services/nomination/segment-process-order/segment-process-order.service.ts","src/app/gcts/nomination/capacity-allocation-segment-order/capacity-allocation-segment-order.model.ts","src/app/gcts/nomination/capacity-allocation-segment-order/capacity-allocation-segment-order.component.html","src/app/gcts/nomination/capacity-allocation-segment-order/capacity-allocation-segment-order.component.ts","src/app/gcts/nomination/nomination.routes.ts","src/app/gcts/managelocation/load-locations/load-locations.component.html","src/app/gcts/managelocation/load-locations/load-locations.component.ts","src/app/gcts/managelocation/load-location-parameters/load-location-parameters.component.html","src/app/gcts/managelocation/load-location-parameters/load-location-parameters.component.ts","src/app/gcts/managelocation/load-location-relationships/load-location-relationships.component.html","src/app/gcts/managelocation/load-location-relationships/load-location-relationships.component.ts","src/app/gcts/managelocation/load-lba-location-tolerances/load-lba-location-tolerances.component.html","src/app/gcts/managelocation/load-lba-location-tolerances/load-lba-location-tolerances.component.ts","src/app/shared/services/nomination/secondary-locations/secondary-locations.service.ts","src/app/gcts/administration/load-secondary-locations/load-secondary-locations.component.html","src/app/gcts/administration/load-secondary-locations/load-secondary-locations.component.ts","src/app/gcts/administration/publish-accounting-locations/publish-accounting-locations.component.ts","src/app/gcts/administration/publish-accounting-locations/publish-accounting-locations.component.html","src/app/shared/services/flowing-gas/flowing-gas-load-omv-relationships/flowing-gas-load-omv-relationships.service.ts","src/app/gcts/managelocation/load-omv-relationships/load-omv-relationships.component.html","src/app/gcts/managelocation/load-omv-relationships/load-omv-relationships.component.ts","src/app/gcts/managelocation/managelocation.routes.ts","src/app/shared/components/error/error.component.ts","src/app/shared/components/error/error.component.html","src/app/service-unavailable/service-unavailable.component.ts","src/app/service-unavailable/service-unavailable.component.html","src/app/gcts/contracts/account-contract-summary-report/account-contract-summary-report.model.ts","src/app/shared/services/nomination/billable-service/billable-service.service.model.ts","src/app/gcts/contracts/account-contract-summary-report/account-contract-summary-csv-builder.service.ts","src/app/shared/pipes/negative-number-parenthesis-format/negative-number-parenthesis-format.pipe.ts","src/app/gcts/contracts/account-contract-summary-report/account-contract-summary-transportation/account-contract-summary-transportation.component.html","src/app/gcts/contracts/account-contract-summary-report/account-contract-summary-transportation/account-contract-summary-transportation.component.ts","src/app/gcts/contracts/account-contract-summary-report/account-contract-summary-parkandloan/account-contract-summary-parkandloan.component.html","src/app/gcts/contracts/account-contract-summary-report/account-contract-summary-parkandloan/account-contract-summary-parkandloan.component.ts","src/app/shared/services/nomination/billable-service/billable-service.service.ts","src/app/gcts/contracts/account-contract-summary-report/account-contract-summary-report.component.html","src/app/gcts/contracts/account-contract-summary-report/account-contract-summary-report.components.ts","src/app/gcts/contracts/contracts-awaiting-processing/contracts-awaiting-processing.model.ts","src/app/shared/services/contracts/contracts/contracts-awaiting-processing.service.ts","src/app/shared/services/accounts/customer-account-parameters/customer-account-parameters.service.ts","src/app/gcts/contracts/customer-account-parameters/customer-account-parameters.model.ts","src/app/shared/classes/models/temporary-assignment.ts","src/app/shared/classes/service-models/contract-service-requester.ts","src/app/shared/classes/models/contract.ts","src/app/shared/classes/models/move-contract-body.ts","src/app/shared/services/contracts/contracts/contracts.service.ts","src/app/shared/services/accounts/accounts/accounts-job.service.ts","src/app/gcts/contracts/contracts-awaiting-processing/contracts-awaiting-processing.component.html","src/app/gcts/contracts/contracts-awaiting-processing/contracts-awaiting-processing.component.ts","src/app/gcts/contracts/accounts/quantity.ts","src/app/gcts/contracts/accounts/accounts.model.ts","src/app/shared/classes/models/account.ts","src/app/shared/services/accounts/accounts/accounts.service.ts","src/app/gcts/contracts/accounts/edit-account/edit-account.component.html","src/app/gcts/contracts/accounts/edit-account/edit-account.component.ts","src/app/gcts/contracts/accounts/edit-contract/edit-contract.component.html","src/app/gcts/contracts/accounts/edit-contract/edit-contract.component.ts","src/app/gcts/contracts/accounts/unlink-contract/unlink-contract.component.html","src/app/gcts/contracts/accounts/unlink-contract/unlink-contract.component.ts","src/app/gcts/contracts/accounts/shipperHubType.ts","src/app/shared/classes/service-models/view-accounts-report-request.ts","src/app/shared/classes/park-and-loan-type.ts","src/app/gcts/contracts/accounts/accounts.component.html","src/app/gcts/contracts/accounts/accounts.component.ts","src/app/shared/classes/BillableService.ts","src/app/gcts/contracts/customer-certified-gas-parameters/customer-certified-gas-parameters.model.ts","src/app/gcts/contracts/customer-certified-gas-parameters/customer-certified-gas-parameters.component.html","src/app/gcts/contracts/customer-certified-gas-parameters/customer-certified-gas-parameters.component.ts","src/app/gcts/contracts/temporary-assignment/temporary-assignment.model.ts","src/app/gcts/contracts/temporary-assignment/temporary-assignment.component.html","src/app/gcts/contracts/temporary-assignment/temporary-assignment.component.ts","src/app/gcts/contracts/contract-demand-energy/contract-demand-energy.model.ts","src/app/shared/services/contracts/contract-demand-energy/contract-demand-energy.service.ts","src/app/gcts/contracts/contract-demand-energy/contract-demand-energy.component.html","src/app/gcts/contracts/contract-demand-energy/contract-demand-energy.component.ts","src/app/shared/services/contracts/cover-page/cover-page.model.ts","src/app/shared/services/contracts/cover-page/cover-page-base.ts","src/app/gcts/contracts/cover-page-detail/cover-page-detail.component.html","src/app/gcts/contracts/cover-page-detail/cover-page-detail.component.ts","src/app/gcts/contracts/cover-page-contacts/cover-page-contacts.component.html","src/app/gcts/contracts/cover-page-contacts/cover-page-contacts.component.ts","src/app/gcts/contracts/contract-pricing/contract-pricing.model.ts","src/app/shared/services/accounts/contract-pricing/contract-pricing.service.ts","src/app/gcts/contracts/contract-pricing/contract-pricing.component.html","src/app/gcts/contracts/contract-pricing/contract-pricing.component.ts","src/app/gcts/contracts/load-contracts/load-contracts-upload-view-model.ts","src/app/shared/classes/view-helpers/contract-row.ts","src/app/shared/classes/service-models/load-contract-upload-parameters.ts","src/app/gcts/contracts/load-contracts/load-contracts.component.html","src/app/gcts/contracts/load-contracts/load-contracts.component.ts","src/app/gcts/contracts/customer-account-parameters/customer-account-parameters.component.html","src/app/gcts/contracts/accounts.routes.ts","src/app/gcts/contracts/customer-account-parameters/customer-account-parameters.component.ts","src/app/gcts/credit/credit-exposure-report/credit-exposure-report.model.ts","src/app/shared/resources/credit-resource.service.ts","src/app/shared/services/credit/credit-exposure-report/credit-exposure-report.service.ts","src/app/shared/services/credit/enterprise/credit-enterprise.service.ts","src/app/gcts/credit/credit-exposure-report/credit-exposure-report.component.html","src/app/gcts/credit/credit-exposure-report/credit-exposure-report.component.ts","src/app/gcts/credit/credit-overage-report/credit-overage-report.model.ts","src/app/shared/services/credit/credit-overage-report/credit-overage-report.service.ts","src/app/gcts/credit/credit-overage-report/credit-overage-report.component.ts","src/app/gcts/credit/credit-overage-report/credit-overage-report.component.html","src/app/gcts/credit/credit-report-archive-retrieval/credit-report-archive-retrieval.model.ts","src/app/shared/services/credit/credit-report-archive-retrieval/credit-report-archive-retrieval.service.ts","src/app/gcts/credit/credit.routes.ts","src/app/gcts/credit/credit-report-archive-retrieval/credit-report-archive-retrieval.component.ts","src/app/gcts/credit/credit-report-archive-retrieval/credit-report-archive-retrieval.component.html","src/app/shared/services/nomination/nomination-gas-account/nomination-gas-account.service.ts","src/app/gcts/production-setup/production-setup.component.ts","src/app/gcts/gcts.routes.ts","src/app/gcts/production-setup/production-setup.component.html","src/app/shared/components/login/login.component.html","src/app/shared/components/login/login.component.ts","src/app/forbidden/forbidden.component.ts","src/app/forbidden/forbidden.component.html","src/app/not-found/not-found.component.ts","src/app/not-found/not-found.component.html","src/app/health-check/health-check.component.ts","src/app/health-check/health-check.component.html","src/app/shared/services/webapp/app/EmptyRedirect.ts","src/app/app.routes.ts","src/app/shared/directives/directives.module.ts","src/app/shared/pipes/pipes.module.ts","src/app/shared/components/components.module.ts","src/app/shared/resources/resource-services.module.ts","src/app/shared/services/webapp/interceptors/jwt-token-interceptor.ts","src/app/shared/classes/rest-request-type.ts","src/app/shared/services/webapp/interceptors/base-interceptor.ts","src/app/shared/services/webapp/interceptors/overlay-interceptor.ts","src/app/shared/services/webapp/interceptors/login-interceptor.service.ts","src/app/shared/services/webapp/interceptors/http-interceptors.ts","src/app/shared/services/webapp/interceptors/error-interceptor.ts","src/app/shared/services/webapp/analytics/google-analytics.service.ts","src/app/shared/services/webapp/webapp-services.module.ts","src/app/shared/services/common-data/common-data-services.module.ts","src/app/shared/services/contracts/contracts-services.module.ts","src/app/shared/services/flowing-gas/flowing-gas-services.module.ts","src/app/shared/services/job-scheduling/job-secheduling-services.module.ts","src/app/shared/services/nomination/transportation-summary-csv-builder/non-transportation-summary-csv-builder.service.ts","src/app/shared/services/nomination/logging/logging.service.ts","src/app/shared/services/nomination/nomination-services.module.ts","src/app/shared/services/invoicing/invoicing-services.module.ts","src/app/shared/services/credit/credit-services.module.ts","src/app/shared/services/accounts/accounts-services.module.ts","src/app/shared/services/enrichment/enrichment.module.ts","src/app/shared/services/shared/pipeline-init.service.ts","src/app/shared/services/services.module.ts","src/app/shared/shared.module.ts","src/app/shared/components/toggle-row/toggle-row.component.html","src/app/shared/components/toggle-row/toggle-row.component.ts","src/app/shared/components/gas-cycle-picker/gas-cycle-picker.component.ts","src/app/shared/components/gas-cycle-picker/gas-cycle-picker.component.html","src/app/shared/directives/content-disable/content-disable.directive.ts","src/app/shared/directives/form-input-match/form-input-match.directive.ts","src/app/shared/directives/secure-item/secure-item-old.directive.ts","src/app/shared/directives/background-color/background-color.directive.ts","src/app/shared/components/form-errors/form-errors.component.html","src/app/shared/components/form-errors/form-errors.component.ts","src/app/shared/components/analytics/google-tag-manager.component.ts","src/app/shared/pipes/date-cycle-to-gas-day-format/date-cycle-to-gas-day-format.pipe.ts","src/app/gcts/administration/administration.module.ts","src/app/gcts/flowinggas/operator-balance-report/operator-balance-report-billed-excess-quantity-tab/billed-excess-quantity-popup/billed-excess-daily-tab/billed-excess-daily-tab.component.html","src/app/gcts/flowinggas/operator-balance-report/operator-balance-report-billed-excess-quantity-tab/billed-excess-quantity-popup/billed-excess-daily-tab/billed-excess-daily-tab.component.ts","src/app/gcts/flowinggas/flowinggas.module.ts","src/app/gcts/invoicing/invoicing.module.ts","src/app/gcts/reporting/reporting.module.ts","src/app/gcts/nomination/nomination-requests/nomination-requests.logic.ts","src/app/gcts/nomination/nomination-requests/common-hub.service.ts","src/app/gcts/nomination/nomination-requests/hub-component.interface.ts","src/app/gcts/nomination/nomination-requests/receipt-hub/receipt-hub.component.html","src/app/gcts/nomination/nomination-requests/receipt-hub/receipt-hub.component.ts","src/app/gcts/nomination/nomination-requests/delivery-hub/delivery-hub.component.html","src/app/gcts/nomination/nomination-requests/delivery-hub/delivery-hub.component.ts","src/app/gcts/nomination/nomination-requests/transport-hub/transport-hub.component.html","src/app/gcts/nomination/nomination-requests/transport-hub/transport-hub.component.ts","src/app/gcts/nomination/title-transfer-report/title-transfer-report-grid/title-transfer-report-grid.component.html","src/app/gcts/nomination/title-transfer-report/title-transfer-report-grid/title-transfer-report-grid.component.ts","src/app/gcts/nomination/title-transfer-report/title-transfer-report-full/title-transfer-report-full.component.ts","src/app/gcts/nomination/title-transfer-report/title-transfer-report-full/title-transfer-report-full.component.html","src/app/gcts/nomination/title-transfer-report/title-transfer-report-tab/title-transfer-report-tab.component.html","src/app/gcts/nomination/title-transfer-report/title-transfer-report-tab/title-transfer-report-tab.component.ts","src/app/gcts/nomination/nomination-requests/energy-imbalance/energy-imbalance.component.html","src/app/gcts/nomination/nomination-requests/energy-imbalance/energy-imbalance.component.ts","src/app/gcts/nomination/transportation-summary/base-transportation-summary-grid.ts","src/app/gcts/nomination/transportation-summary/transportation-summary-grid/transportation-summary-grid.component.html","src/app/gcts/nomination/transportation-summary/transportation-summary-grid/transportation-summary-grid.component.ts","src/app/gcts/nomination/transportation-summary/non-transportation-summary-grid/non-transportation-summary-grid.component.html","src/app/gcts/nomination/transportation-summary/non-transportation-summary-grid/non-transportation-summary-grid.component.ts","src/app/gcts/nomination/nomination-requests/title-transfer-mismatches/title-transfer-mismatches.component.html","src/app/gcts/nomination/nomination-requests/title-transfer-mismatches/title-transfer-mismatches.component.ts","src/app/gcts/nomination/imbalance-trade-requests/imbalance-trade-component.interface.ts","src/app/gcts/nomination/imbalance-trade-requests/common-imbalance-trade.service.ts","src/app/gcts/nomination/imbalance-trade-requests/imbalance-trade-requests-logic.ts","src/app/gcts/nomination/imbalance-trade-requests/buy-imbalance-trade-requests/buy-imbalance-trade-requests.component.html","src/app/gcts/nomination/imbalance-trade-requests/buy-imbalance-trade-requests/buy-imbalance-trade-requests.component.ts","src/app/gcts/nomination/imbalance-trade-requests/sell-imbalance-trade-requests/sell-imbalance-trade-requests.component.html","src/app/gcts/nomination/imbalance-trade-requests/sell-imbalance-trade-requests/sell-imbalance-trade-requests.component.ts","src/app/shared/classes/models/imbalance-trade-location-balance.ts","src/app/gcts/nomination/imbalance-trade-requests/imbalance-trade-location-balances/imbalance-trade-location-balances.component.html","src/app/gcts/nomination/imbalance-trade-requests/imbalance-trade-location-balances/imbalance-trade-location-balances.component.ts","src/app/gcts/nomination/nomination.module.ts","src/app/gcts/managelocation/managelocation.module.ts","src/app/gcts/contracts/accounts.module.ts","src/app/gcts/credit/credit.module.ts","src/app/gcts/gcts.module.ts","src/app/app.component.ts","src/app/app.component.html","src/app/shared/services/error-handler/error-handler.service.ts","src/app/app.module.ts","src/main.ts","$_lazy_route_resource lazy namespace object"],"names":["webpackEmptyContext","req","e","Error","code","keys","resolve","module","exports","id","map","webpackContext","webpackContextResolve","__webpack_require__","o","Object","APP_CONFIG_TOKEN","ConfigService","data","this","backgroundColor","nominationsUri","jobSchedulingServiceUri","commonDataServiceUri","accountsDataServiceUri","creditDataServiceUri","flowingGasServiceUri","invoicingServiceUri","securityServiceUri","oktaIssuer","oktaClientId","gatewayUrl","publicSiteUrl","internalAuthUrl","internalResourceUrl","showErrors","SessionService","KEY_PIPELINE","pipelineChangeEvent","ReplaySubject","pipelineJSON","sessionStorage","getItem","JSON","parse","console","error","pipeline","setItem","stringify","next","removeItem","BaseComponent","appService","clearMessages","baseSessionService","title","setBrowserTitle","getPipeline","response","saveFile","PDF_CONTENT_TYPE","ZIP_CONTENT_TYPE","CSV_CONTENT_TYPE","TXT_CONTENT_TYPE","contentType","fileContents","Blob","body","type","fileName","headers","get","split","trim","replace","FileSaver","bookmark","blob","objectUrl","URL","createObjectURL","window","open","revokeObjectURL","Message","status","message","MessageStatusEnum","AlertService","messages","addMessage","Success","Information","Warning","InProgress","splice","AppService","titleService","alertService","configService","sessionService","router","menuVisible","environment","showEdiTestHarness","showLoadContractTestHarness","showStageMeasurementsTestHarness","showPdaInstructionsTestHarness","showTestPageTimeMeasurementsPane","showTestPageMeasurementDataSource","version","applicationName","applicationAcronym","frozenDateTime","value","isFrozen","setTitle","getApplicationAcronym","description","analyticsEnabled","analyticsId","JwtService","token","decoded","hasOwnProperty","date","Date","setUTCSeconds","exp","offsetSeconds","getTokenExpirationDate","valueOf","UserClaims","GCTS_Assumed_Role_Claim","Enterprise_Id_Claim","GCTS_User_Identifier_Claim","ClientType","AuthenticationService","jwtService","http","oktaAuth","KEY_CURRENT_REFRESH_TOKEN","KEY_CURRENT_RESOURCE_TOKEN","accessToken","url","oktaAuthenticateUri","authStateManager","_authState","post","oktaAccessToken","enterpriseId","securityUri","addJwtHeader","forceLoginForm","navigate","then","of","refreshToken","getUserRefreshToken","isTokenExpired","getClientType","pipe","concatMap","clientType","authenticateByOkta","loginWithRefreshToken","getGatewayUrl","isInternal","loginWithRefreshToken$","authenticateUri","share","_clientType","clientType$","clientTypeCheckUri","res","IsInternal","set","JWT_HEADER_NAME","JWT_HEADER_VALUE_PREFIX","getUserResourceToken","localStorage","User","user","_roles","_assumedRoles","setRoles","setAssumedRoles","_primaryEnterpriseId","assumedRoles","length","_assumedEnterpriseId","_userIdentifier","role","Array","push","tokenData","isAssumingIdentity","_assumedEnterpriseShortName","assumedEnterpriseDisplayName","assumedEnterpriseShortName","_assumedEnterpriseMnemonic","unique_name","isInternalUser","pipelineCode","roles","r","getPipelineCodeForRole","hasRolesInByCode","intersectedRoles","startsWith","uniq","NominationSpecialistRole","NominationAnalystRole","NominationAdministratorRole","NominationsTransactorRole","NominationsViewRole","SupportRole","ExternalOperatorTransactorRole","CapabilitiesService","capabilities","allCapabilities","getCapabilities","hasCapabilities","AssumeIdentityWriteCapability","capability","key","containsRoles","SessionTimeoutModalService","sessionTimeoutEvent","Subject","sessionTimeoutHandledEvent","warn","UserService","authenticationService","capabilitiesService","sessionTimeoutModalService","inj","currentUserChangedEvent","isCurrentUserValid","_user","haveValidTokens","jwtToken","decodeToken","setUser","isCurrentUserSessionTimedOut","sessionTimedOut","first","authenticate","getUser","throwError","assumeIdentity","authResponse","updateUser","removeCurrentUserResourceToken","removeCurrentUserToken","clearPipeline","hasAnyRole","rolesWithPipeline","x","hasRole","isRefreshTokenExpired","securityTokenResponse","setCurrentRefreshToken","setCurrentUserResourceToken","resourceToken","isCurrentTokenValid","DateTime","dateTime","toString","pad","year","month","day","time","hour","minute","second","originalDateTime","moment","toDate","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","isValid","firstValue","secondValue","isSame","s","undefined","today","timeStr","monthToName","dt","setFullYear","m","withoutSeconds","format","ToDisplayFormat","ToCsvFormat","getTime","add","formatString","numDigits","output","ToDateFormat","ToTimeFormat","startOf","GasDay","_year","_month","_day","isNull","toMoment","from","strict","strictGasDay","ValidInputFormats","gasDay","values","name","max","isGreaterThan","tryParse","strictDateValue","dateValue","maxGasDay","addDays","ToStringFormat","hideMaxGasDay","result","toDisplayFormatAll","MaxGasDayDisplayValue","ToDisplayDateTimeFormat","ToDisplayTimeFormat","ToCsvFormatWithNoDashes","ToTextDisplayFormat","isEqual","isLessThan","startGasDay","endGasDay","isGreatThanOrEqualTo","isLessThanOrEqualTo","isNaN","GasDayForEarliestBillingMonth","httpParams","param","checkForNil","setBoolean","setNumber","setListOfNumbers","setListOfStrings","setGasDay","httpClient","resourceUri","includePipelineInUrl","params","fullUrl","getBaseUri","buildParams","catchError","responseType","observe","put","delete","patch","build","UriService","serviceBaseUri","getUriWithPipelineAndGateway","includePipeline","gatewayUri","getPublicSiteUrl","NominationResourceService","uriService","super","nominationServiceUri","EnterpriseSearchParams","dto","nominationEnterprise","shortName","legalName","mnemonic","dunsNumber","effectiveGasDay","expiryGasDay","stateExpiryGasDay","NominationEnterpriseService","nominationResource","searchParams","buildUrlSearchParams","enterprises","create","el","ent","isLocationOperator","displayValue","gasAccountType","includeInactive","serviceType","accountBusinessRights","ignoreExternalNomGroupFilter","queryEnterpriseNames","DefaultGasAccountType","EnrichmentEnterprise","NominationPipelineGasDay","minGasDayForCycleStatus","GasCycle","gasFlowEffectiveTime","gasCycleCode","STS11Code","STS01Code","STS05Code","ID4Code","ID5Code","gasCycleDto","gasCycle","ediCode","sequence","nominationDeadlineTime","centralClockTimeStringToDate","bidFloorDeadlineTime","isIntraDayCycle","isStandingNomAllowed","isNaesbCycle","isStsCycle","TimelyCycleCode","TimelyCycleName","EveningCode","ID1Code","ID2Code","ID3Code","EODCode","SimpleGasDayCycleStatus","gasDayCycleStatusDto","gasDayCycleStatus","pipelineSystem","nominationDeadline","capacityAllocationStatus","isLaunched","isClosedForNomination","isOpenForNomination","isScheduled","ScheduledStatus","forceTransportationSummaryEditMode","isAllocated","cycleStatus","isStatus","NomWindowOpenStatus","isOpen","Preliminary","CapacityAllocationStatus","Initiated","Initiating","NotStarted","Calculating","Calculated","Authorized","NomWindowClosedStatus","HubsBalanced","AutoBalancingHubs","AutoBalancingCapacityAllocation","AwaitingCapacityAllocation","InitiateRequired","NominationSystemService","timeEndpoint","applicationServerTimes","inOneMonthClockTime","clockTime","addMonths","pipelineGasDayObservable","pipelineGasDay","actualGasDay","allowableGasDay","earliestSelectableGasDay","tomorrowsCalendarAllowableGasDay","latestLaunchedGasDay","lastClosedGasDayCycleStatus","openGasDayCycleStatus","timelyOpenGasDayCycleStatus","latestScheduledCycleStatus","maxGasDayForCycleStatus","latestDayWithPreliminaryStatus","NominationEnrichmentService","nominationSystemService","ngOnInit","pipelineChangedSubscription","unsubscribe","subscribe","clear","observable","getAll","objects","object","addMapEntry","array","idProperty","enrichedPropertyPrefix","fetch","serviceCalls","obj","enrich","forkJoin","getCachedObject","cachedObject","enrichObject","enrichmentObject","fetchedObject","createEnrichmentObject","NominationEnterpriseEnrichmentService","service","cachedEnrichmentObject","MenuButtonComponent","toggleMenu","isMenuVisible","event","target","innerWidth","HideMenuWidthTrigger","hideMenu","opacity","transform","dataList","sortProperty","loadMode","paginate","requireTotalCount","load","Promise","CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR","provide","useExisting","multi","SelectComponent","valueProperty","displayProperty","itemDisplayProperty","showClearButton","disabled","selectionChanged","_dataSource","pagedDataSource","onSelectionChanged","emit","GenerateConfiguration","innerValue","onChangeCallback","onValueChanged","selectBox","onTouchedCallback","fn","setTimeout","element","find","select","onFocusIn","ProductionSetupUpdateRequest","NominationPipelineService","nominationsResource","pipelineEndpoint","isSentToMCAForCapacityAllocation","putWithNoResponseBody","capacityAllocationType","effectiveGasMonth","pipelineOwnerEnterpriseId","productionSetupUpdateRequest","start","PipelineSetting","canSyncData","canHavePendingNominations","ML","GLC","CGL","PipelineSettingMapService","settings","Map","ML_CODE","GLC_CODE","CGL_CODE","PipelineDropdownComponent","nominationPipelineService","userService","pipelineSettings","activatedRoute","pipelines","pipelineId","times","p","hasRolesIn","snapshot","paramMap","toUpperCase","setDropdownAndSession","skipLocationChange","updatePipeline","dropdown","writeValue","setPipeline","pipelineCodes","includes","LogoutComponent","logout","signOut","clearTokensBeforeRedirect","onClicked","HeaderComponent","enterpriseEnrichmentService","model","application","getApplicationName","currentUserChangedSubscription","updateCurrentUser","currentUsername","username","assumeIdentityEnterpriseShortName","assumeIdentityEnterpriseMnemonic","assumedEnterpriseMnemonic","CommondataResourceService","TestPageService","commonDataResource","frozenTime","postWithNoResponseBody","SecureItemDirective","templateRef","viewContainer","capabilityService","performSecurityCheck","onPipelineChanged","createEmbeddedView","DateFormatPipe","MenuComponentModel","MenuComponent","testService","ICON_CHEVRON_DOWN_CLASS","ICON_CHEVRON_UP_CLASS","SUB_MENU_SHOW_CLASS","SUB_MENU_HIDE_CLASS","routeName","getAttribute","applicationVersion","getApplicationVersion","getEnvironment","showTestPage","toggledSections","setFrozenTime","setIsFrozen","section","isDirty","isSectionVisible","hideSection","showSection","routerLinkActive","displaySection","getFrozenDateTime","getIsFrozen","isActive","routeTracker","transitionDuration","LoadOverlayService","requestsQueue","displayOverlay","displayDuration","DurationInitialValue","subscription","timer","DisplayOverlayDelay","startTimer","disposeSubscription","pop","HideOverlayDelay","stopTimer","DisposeSubscriptionDelay","durationObservable","interval","DurationSecondDelay","durationSubscription","SectionLoadOverlayComponent","loadOverlayService","isOverlayShown","overlayDuration","SelectedModalOption","BaseModalOptions","noButtonText","yesButtonText","cancelButtonText","okButtonText","ModalConfiguration","class","DefaultClass","showTitle","DefaultShowTitle","defaultAnimation","DefaultAnimation","modalButtonConfiguration","ModalButtonConfiguration","DefaultDragEnabled","DefaultYesButtonText","DefaultOKButtonText","DefaultNoButtonText","DefaultCancelButtonText","DefaultYesButtonVisible","DefaultNoButtonVisible","DefaultCancelButtonVisible","DefaultYesButtonDisabled","show","duration","scale","hide","to","yesButtonVisible","noButtonVisible","cancelButtonVisible","yesButtonDisabled","dragEnabled","ModalOptionsToConfigurationBuilderService","modalOptions","modalConfiguration","YesNoCancelModalService","modalOptionsToConfigurationBuilder","modal","tap","getDefaultYesNoModalOptions","ModalComponent","height","animation","_manuallyHandleYesClose","onYesClicked","onNoClicked","onCancelClicked","visible","form","valid","runActionThenHide","action","isYesButton","YesNoCancelModalComponent","yesNoCancelModalService","signalNextThenComplete","Yes","No","Cancel","register","property","isPropertyPresent","content","modalSelectionHandler","asObservable","selectedModalOption","complete","SessionTimeoutModalComponent","okModalOptions","sessionTimeoutHandled","ContentComponent","GctsComponent","toLowerCase","CommonDataEnterpriseSearchParams","EnterpriseCertificate","enterpriseCertificateDto","cert","certificateTypeId","certificateTypeName","cid","expiryDay","enterpriseDto","enterprise","extension1","extension2","sapNumber","EnterpriseService","setOptionalGasDay","setOptionalBoolean","isActiveAfterFirstBillingMonth","onlyActive","onlyActiveAndNotTerminated","setOptionalString","hasStorageBalanceLocation","deleteTyped","enterprisecerts","AlertComponent","getMessages","BackToTopComponent","renderer","currentState","currentStateAllowsTransition","Boolean","amountScr","removeScrollListener","listen","Math","abs","getScrollTop","changeState","ms","fadeOut","delayThenFadeOut","scrollTo","top","left","behavior","pageYOffset","document","documentElement","scrollTop","scrollToTop","PageContentComponent","AssumeIdentityComponent","enterpriseService","commonDataEnterpriseSearchParams","setAssumeIdentityDetails","assumeEnterpriseId","clearAssumeIdentity","assumeEnterpriseShortName","assumeEnterpriseMnemonic","isAssumedEnterprise","applyClicked","clearClicked","HealthCheckService","serviceUrl","getUri","verb","HealthCheckStatusEnum","HealthComponent","healthCheckService","httpMethods","mappings","services","performHealthChecks","displayName","uri","summaryHealthCheck","pendingSummaryHealthCheck","httpMethod","verbHealthCheck","healthCheckResult","addHealthCheckResult","errorHealthCheckResult","summaryHealthCheckResult","results","updateHealthCheckStatus","failures","Fail","warnings","Pass","Pending","healthCheckType","statusText","AuthorizationService","route","state","doesUserHaveCapabilities","ExternalReportComponent","InternalReportsComponent","ReportsViewModel","useTabs","ReportingRoutes","path","canActivate","component","ReportsComponent","tabs","template","defaultTabIndex","tabParam","tab","selectedIndex","t","showMenu","GasMonth","_isNullDate","gasMonth","match","exec","indexOf","parseInt","RegExp","test","lowerCaseValue","monthStr","replaced","addMonth","displayEndOfTime","MaxGasMonthDisplayValue","ToCidDisplayFormat","MaxGasMonthCidDisplayValue","endOfTime","FlowinggasResourceService","BillingProcessRequest","FlowingGasAllocationAndBalancingBillingProcessService","flowinggasResource","toDisplayFormat","updateParameters","patchWithNoResponseBody","saveParameters","BaseViewModel","showFilterSection","BillingMonthSearchParams","searchResults","BillingMonthProcessSearchResults","BillingMonthData","process","BillingMonthModalModel","BillingMonthStatus","Statuses","Closed","Open","NotOpen","billingMonth","pipelineName","firstDayOfMonth","lastDayOfMonth","isMigrated","closedBy","invoiceIssueDateTime","invoicePaymentDateTime","openedDateTime","closedDateTime","generateInvoice","BillingProcessStatus","ParamType","ParamValidatorRule","checkType","optional","paramType","isOptional","ListParamValidatorRule","List","ParamTypeValidator","validator","rule","ParamValidator","paramTypeValidators","rules","String","Number","paramValidatorTypes","addRule","getValidator","CommonDataBillingMonthService","commonDataResourceService","dtos","doSave","billingMonthDto","toDto","adjustmentActivity","affectedGasDay","activity","locationId","nomGroupId","gasAccountId","customerId","FlowingGasPriorDayPendingActivitiesService","flowingGasResource","adjustmentActivities","adjustmentActivityDtos","convertToDto","PriorDayPendingActivitiesRequest","InvoicingResourceService","invoiceProcessStatus","generateChargesStatus","publishStatus","InvoicingInvoiceBillingProcessService","invoicingResource","FlowingGasMeasurementBillingProcessService","serverTimeData","serverTime","centralClockTime","utcClockTime","mstTime","CommonDataGasdayService","serverTimeDataDto","GasMonthPickerComponent","isValidValue","placeholder","applyValueMode","width","showCalendar","isValidChange","propagateChange","_gasMonth","dateFormatter","dateParser","displayFormat","formatter","parser","val","min","formattedDate","dateBox","text","_gasMonthValue","default","isEndOfTime","querySelector","textContent","instance","focus","reset","_onChange","c","onOpened","GasMonthFormatPipe","WhenEmptyUsePipe","other","BillingMonthComponent","commonDataBillingMonthService","flowingGasPriorDayPendingActivitiesService","flowingGasAllocationAndBalancingBillingProcessService","invoicingInvoiceBillingProcessService","flowingGasMeasurementBillingProcessService","commonDataGasDayService","modalModel","queryParams","buildQueryParams","cellInfo","UnFinal","billingProcess","yesNoSubmitModal","final","Final","changeToStatus","billingProcessRequest","openBillingMonth","statusButtonMessage","allocationStatusMessage","updateMeasurementStatus","updateAllocationAndBalancingStatus","getPipelineCode","billingGasMonth","lastSearchParams","onCellPrepareEvent","rowType","column","dataField","currentBillingMonthData","cellElement","arg","tooltip","hasFinalizeSecurity","getOpenBillingMonth$","getOpen","getOldestBillingMonth$","getOldest","oldestBillingMonth","minBillingMonth","getNewestBillingMonth$","getNewest","newestBillingMonth","maxBillingMonth","queryAllAdjustmentActivities$","queryAll","priorDayProcessing","time$","getServerTimeData","currentMonth","queryMonth","PARAM_MONTH","areParamsValid","loadSearchResources","paramValidator","Standard","isGasMonth","performSearchForBillingMonth","update","requestBillingGasMonth","getBillingMonth$","getAllocationBalancingProcesses$","billingProcesses","allocationBalancingProcesses","getInvoiceBillingProcess$","invoiceProcess","getMeasurementProcesses$","measurementProcesses","getApplicationServerTimes$","applicationTimes","currentGasDay","billingMonthData","buildBillingMonthData","measurementProcess","allocations","invoice","measurementButtonEnabled","measurementButtonIsEnabled","allocationButtonEnabled","allocationsButtonIsEnabled","isPriorDayProcessingIncomplete","processName","pipelineSystemName","statusDateTime","buildType","buttonCondition","isInRangeOf","currentPriorDayProcessing","gasDayIsInOpenBillingMonth","Finalizing","searchClicked","resetClicked","submitStatusChange","ScheduledJobsResourceService","scheduledJobsServiceUri","ScheduledJob","ScheduledJobsService","scheduledJobsResource","scheduledJobsUri","jobCategory","scheduledJob","effectiveDate","intervalType","dayToRun","timeToRun","toTimeString","timeZone","jobKey","GctsProcess","All","AfterFlow","Nominations","Contracts","Credit","GasDayPickerComponent","changeDetectorRef","disabledDates","_","exception","defaultDate","_gasDayValue","detectChanges","option","determineValidity","onKeyUp","TimePickerComponent","_timeValue","addMode","intervalTypes","daysOfWeek","daysOfMonth","newJob","timeZones","ConfigureJobSchedulesComponent","scheduledJobsService","modalService","addNewJobRowClick","setHours","setMinutes","setSeconds","setMilliseconds","cancelNewJobClick","saveNewJobClick","saveJob","addSuccessMessage","getJobDisplayName","loadResources","pauseOnClick","pause","resumeOnClick","resume","job","jobType","scheduledJobTypes","jt","runJob","showRunJobMessage","updateJob","keyOfRowBeingEdited","undoRecord","runJobFn","jobDisplayName","yesNoModalOptions","deleteJob","showDeleteJobMessage","deleteJobFn","processes","byPipeline","queryParams$","handleActiveRoute","getScheduledJobTypes","getScheduledJobs","getJobSchedulerStatus","scheduledJobs","parseFromTime","createUndoRecord","index","tz","onProcessChanged","BidFloorRequest","BidFloorUploadParameters","BidFloorRow","rowNumber","pointFrom","pointTo","dailyToll","loadFactorPercentage","BidFloorService","fromGasDay","toGasDay","includeRevisions","receiptLocationIds","deliveryLocationIds","bfs","n","gasDayRange","end","uploadParameters","bidFloorRows","gasDayCycleCode","requestParms","pathSetId","getData","GasDayCycle","gasDayCycle","gasCycleName","gasDayCycleDto","Null","cycle","newGasDayCycle","gasCycles","for","gasDayDate","NaN","isOvernightCycle","toDisplayTimeFormat","previous","isAdjustment","endGasDayCycle","transactionType","TransactionTypes","OnSystem","OffSystem","FuelPack","FuelDraft","onSystem","offSystem","transport","tboTransport","buy","sell","fuelDraft","fuelPack","tvarDraft","tvarPack","cvDraft","cvPack","loan","park","parkWithdrawal","loanPayback","linepackPurchase","linepackSale","tboOffSystem","tboOnSystem","tboFuel","tboTransfer","sboInjection","sboWithdrawal","tboImbalanceTransfer","tboDeliveryConfirmation","tboReceiptConfirmation","tboLinepackPurchase","tboLinepackSale","makeupOnSystem","makeupOffSystem","tboFuelPayback","paybackDraft","paybackPack","imbalanceTradeBuy","imbalanceTradeSell","Transport","TboTransport","Buy","Sell","TvarDraft","TvarPack","CvDraft","CvPack","Loan","Park","ParkWithdrawal","LoanPayback","LinepackPurchase","LinepackSale","TboOffSystem","TboOnSystem","TboFuel","TboTransfer","SboInjection","SboWithdrawal","TboImbalanceTransfer","TboDeliveryConfirmation","TboReceiptConfirmation","TboLinepackPurchase","TboLinepackSale","MakeupOnSystem","MakeupOffSystem","TboFuelPayback","PaybackDraft","PaybackPack","ImbalanceTradeBuy","ImbalanceTradeSell","exceptionCount","count","NominationExceptionsRequest","TransportationNominationRequest","statusCode","statusMessage","creditNominationGroupId","debitNominationGroupId","debitGasAccountId","creditGasAccountId","packageId","creditLocationId","deliveryRank","transportationRank","debitLocationId","receiptRank","energy","possibleNominationGroups","startGasDayCycle","startGasDayCycleCode","startGasDayDate","endGasDayEndDate","nextGasDayDate","canBeDeleted","submittedByUserFullName","submittedByUserEnterpriseId","issueDateTime","transportationNominationRequest","setCommonProperties","nominationGroupId","serviceTypeId","billableServiceOptionId","bidPrice","zeroTaxRated","fuelNominationRequest","epsq","FuelNominationRequest","HubBalanceData","EnergyImbalanceInstructionQueryResult","NominationRequestService","hubNomGroupId","queryDateTime","requests","hubType","forEach","item","startGasCycleId","transactionTypeDescription","responseArray","transportationRequests","receiptRequests","deliveryRequests","energyImbalanceInstructions","transportsToDelete","receiptToDelete","deliveryToDelete","nominationLocation","locationClassification","spgId","onStreamGasDay","operatorEnterpriseCid","glcLocationIdForMlVirtualLocation","accountingLocationParameters","NominationAccountingLocationParameters","isReceipt","billableServiceOption","is","areSTSCyclesConfirmed","nomGroup","nomGroups","isOnSystemOrOffSystem","isFuelPackOrFuelDraft","parentNominationGroupId","parentNomGroup","findById","hasStsWithdrawalLimitPaths","accountWithdrawalLimits","receiptLocationId","primaryPath","getPrimaryPath","secondaryReceiptLocations","getSecondaryReceiptLocations","BaseCollection","items","locations","prototype","orderByFunction","orderedNominationLocations","location","nominationAccountingParameters","allocationMethod","isExport","isPressurePoint","isNominationsAllowed","confirmationMethod","isConfirmationByEDI","isPackageIdConfirmed","confirmationUOM","overrideAllowed","isDelivery","isVirtual","isTboNominationAllowed","isCVAllowed","isConfirmed","isConfirmedAtItself","reportOnGdsr","reportOnUhf","isManualHourlySqOnUhf","isSecondaryHubNomAllowed","showFlowRateOnConfirmation","ediConfirmationMethod","ngtlLocationNumber","ngtlLocationMnemonic","LocationSearchParams","onlyNominationsAllowed","onlyOperatorLocations","includeTbo","onlyManualForUhf","onlyUhfReportLocations","NominationLocationService","nominationLocationDto","queryLocationNames","paramName","gasDayStr","asBoolean","asNumber","parseList","asString","parseListString","parameterValue","BaseSearchComponent","componentTitle","isResourcesLoaded","areParamsOutOfSync","$subscriptionsToTrack","performOnInit","trackSubscription","events","parseUrl","setupParams","$s","$subscription","resetSortOrder","resetCompleted","baseLoadInitialResources","loadCompleted","isInitialLoadOfComponent","setupForEmptyParams","setupForNonEmptyParamsAndSearch","setDefaultSearchParams","shouldReloadSearchResourcesForEmptyParams","baseLoadSearchResources","setSearchParams","basePerformSearch","loadInitialResources","performSearch","searchCompleted","GasDayCycleStatus","nominationExceptions","capacityAllocationExceptions","locationExceptions","locationExceptionsHaveRedVariance","pendingNominations","gasDayCycleString","nomWindowClosedStatusLinkEnabled","canSchedule","canUnschedule","canAutoBalanceHubs","canForceNomWindowOpen","canRemoveForceNomWindowOpen","gasDayCycleStatuses","getTimelyGasDayCycleStatus","getGasDayCycleStatus","defaultToID1","isGasDayLaunched","areAllGasDayCycleStatusesNotOpen","earliestNomWindowOpen","filterForOpen","earliestBySequence","isSts11AndID1Open","filterForNaesb","getDefaultEarliestNonScheduled","getDefaultEarliestNotAuthorized","getDefaultLatestScheduled","earliestOpenStsGasCycle","filterForStsGasCycles","onlyTimelyGasDayCycleStatus","isPreviousCycleAuthorized","currentCycleStatus","previousCycleStatus","getPreviousGasCycleStatus","isCapacityAllocationAuthorized","isAtLeastPreliminary","isForNaesb","isForNonSts","endOfDayGasCycleStatus","filter","maxBy","anyScheduled","allScheduled","earliestNonScheduled","filterForNonScheduled","scheduledGasDayCycleStatuses","earliestNotAuthorized","filterForNotAuthorized","lastScheduled","filterForScheduled","latestBySequence","filterForSequenceGreaterThan","defaultCycle","allCyclesScheduled","selectedGasCycleCode","endOfDayGasCycle","_fromGasDay","_toGasDay","GasCycleService","mappedGasCycles","mode","gasDayCycleStatusesDto","exceptionsOnly","gasCycleAndPipelineRequest","defaultGasDay","gasDayRangeDefault","LocationGasDayCycleStatusRequest","hasRedVariance","EnrichmentNominationLocation","NominationLocationEnrichmentService","EnrichmentLocation","FileService","onComplete","header","delimiter","skipEmptyLines","dataRows","csv","downloadTextFileToUser","headings","csvData","row","dataRow","getValue","parseArrayToCsv","filename","filecontents","downloadBlobToUser","navigator","msSaveBlob","anchor","createElement","href","setAttribute","download","appendChild","click","removeChild","parsed","rowValue","DisplayNamePipe","nameProperty","defaultDisplayValue","Default","CUSTOM_INPUT_NG_VALIDATORS","MultiSelectComponent","MAX_SELECTABLE_ITEMS","valueExpr","displayExpr","displayNumberItemsSelected","openWhenContentReady","multiline","maxSelectable","onContentReady","_list","forceOptionsToBeDisplayed","checkMaxSelection","rawDataSource","tagBox","opened","multiSelect","onFocusOut","SwitchComponent","switchOnText","switchOffText","valueChanged","GasDayFormatPipe","isString","isGasDay","BooleanAsYesNoPipe","arg1","MultiDisplayNamePipe","BidFloorSearchType","BidFloorSearchParams","searchType","showRevisions","GasDayRange","ViewBidFloorsComponent","gasCycleService","nominationLocationService","bidFloorService","nominationLocationEnrichmentService","fileService","gasDayChanged","isValidDates","startGasDayCsvFormat","toCsvFormat","endGasDayCsvFormat","dailyEquivalentTollRateCsvFormat","dailyEquivalentTollRate","toFixed","bidFloorCsvFormat","bidFloor","createDateTimeCsvFormat","formatDateTime","createDateTime","getTitle","downloadCsvFile","isRequired","responses","getMinDate","gasDayRangeParamValidator","gasDayCycleParamValidator","setCommonSearchParamsFromRoute","setGasDaySearchParams","getParams","asGasDay","asNullableString","isGasDayRangeSearchType","getBidFloors","bidFloors","searchDateTime","isForQueryParams","request","buildGasCycleCodeForRequest","bidFloorDataGrid","clearSorting","columnOption","sortOrder","sortIndex","minGasDay","enrichArray","parseLocations","queryGasDayCycleStatusesFor","gasCycleGasDay","verifyForValidSelectedParameters","gasDayRangeQueryParams","gasDayCycleQueryParams","verifySelectedGasCycleCode","defaultGasCycleCode","onFromGasDayChanged","onToGasDayChanged","FuelRatioRequest","FuelRatioUploadParameters","FuelRatioRow","fuelRatio","FuelRatioService","billableServiceCode","energyAsNumber","getNumber","FuelRatioSearchParams","ViewFuelRatioModel","ViewFuelRatiosComponent","fuelRatioService","fromGasDayCsvFormat","toGasDayCsvFormat","fuelRatioCsvFormat","ratio","typedParams","asNullableBoolean","getFuelRatios","fuelRatios","fuelRatioDataGrid","hasGasDayCycles","addWarnMessage","toggleFilterSectionClicked","BaseCsvUploadViewModel","CsvUtility","fields","columnName","f","numColumnsInRow","testAllColumns","allowEmptyFiles","parsedHeaders","meta","headerValue","verifyAllHeaders","difference","duplicates","i","iteratee","callback","parseCsvWithoutHeader","tollCategory","strictColumnOrder","allowEmptyFile","parseCsv","validateFile","allRowsValid","validateRow","missingHeaders","addError","extraHeaders","singularErrorMessage","pluralErrorMessage","IntervalType","DebounceClickDirective","debounceTime","debounceClick","clicks","preventDefault","stopPropagation","FuelRatioViewModel","LoadFuelRatiosComponent","csvUtility","initModel","skipFutureGasDayCheck","extractedData","routerState","parameters","fuelRatioRows","pipelineFuelRatioUploadInterval","Monthly","intervalDate","uploadFile","Daily","getMaxEffectiveGasDay","fuelRatioUploadParameters","fuelRatioResponse","errors","resetModel","fuelRatioUploadInterval","nextMonthsFirstCalendarGasDay","firstCalendarDay","queryLaunchedGasDays","d","maxGasMonth","minGasMonth","files","reader","FileReader","onload","extractData","readAsText","findColumnHeaderColumn","uploadClicked","updateClick","overwriteLaterGasDays","BidFloorGasCyclePickerComponent","hideExpiredCycles","configurePicker","selectedGasDay","queryServer","initializePicker","queryAllGasCycleStatuses","serviceCallResponses","currentTime","predicate","handler","initializeForCurrentGasDay","initializeForTomorrowGasDay","initializeForFutureGasDay","initializeForNoSelections","specification","initializeForReopenedNoms","id1GasCycleStatus","id2GasCycleStatus","id3GasCycleStatus","bidFloorDeadlinePassed","initializeForSingleCycle","nominationDeadlinePassed","initializeForCycles","timelyGasCycleStatus","eveningGasCycleStatus","deadline","deadlineTime","getGasCycle","dataSource","reopenedGasCycles","cycleStatuses","LoadBidFloorsComponent","gasDayCycleService","queryNaesb","getGasCycleStatus","serverTimes","nomDeadline","hasBidFloorDeadlinePassed","hasPassed","confirmResultTrue","doUpload","fromGasCycleCode","bidFloorResponse","Observable","observer","bidFloorDeadline","setDate","getMilliseconds","passed","gasDayIsValid","applicableGasDayCycles","invoicePackage","hasCsv","hasPdf","hasPdfWithReports","invoiceRecipientId","isPrinted","manualChargesPreTaxTotal","nonManualChargesPreTaxTotal","revisedDate","revision","taxTotal","total","InvoiceDetail","invoiceDetail","isCustomerManualAdjustmentDetail","invoiceGroup","nominationGroup","invoiceSummary","invoiceNumber","invoiceDetails","InvoiceRecipient","invoiceRecipient","InvoicingInvoicePackageService","startGasMonth","endGasMonth","arNumber","includeRevisionHistory","setOptionalNumber","statuses","setGasMonth","setOptionalListOfStrings","includeReports","updateInvoicePackageRequests","invoiceRecipientIds","lastInvoiceRecipientInvoiceBillingMonth","customerLastInvoiceBillingMonth","nomGroupLastInvoiceBillingMonth","invoiceRecipientLastInvoiceBillingMonth","UpdateInvoicePackageRequest","EditBillingMonthModel","EditBillingMonthSearchParams","invoiceIssueGasDayChanged","invoicePaymentGasDayChanged","EditBillingMonthComponent","invoicingInvoicePackageService","billingMonthRequest","invoiceIssueGasDay","toDateTime","invoicePaymentGasDay","hasDataChanged","cancelEditBillingMonth","gasDayEvent","checkGasDayChanged","minPaymentGasDay","oldDateTime","newInvoiceGasDay","removeTime","originalGenerateInvoice","getPreliminaryBillingMonth$","getPreliminary","preliminaryBillingMonth","selectedBillingGasMonth","setGenerateInvoiceDisabled","doInvoicePackagesExist$","doPriorInvoicePackagesExist","previousMonth","doInvoicePackagesExist","isGenerateInvoiceDisabled","cancelClicked","AddBillingMonthModel","AddBillingMonthComponent","save$","newBillingMonthRequest","save","saveOpen","searchResult","saveMeasurementBillingMonthProcess$","saveAllocationBillingMonthProcess$","saveInvoiceBillingProcess$","newest$","invoiceIssuePaymentMonth","open$","cancelClick","cancelNewBillingMonth","JobRunParam","JobRunnerSearchParams","includeTitleTransfers","JobRunnerViewModel","showGasMonth","showGasDay","showGasCycle","showLocation","invalidParameters","EdiConfirmationMethod","_value","ALL","AGA","X12","AllocationMethod","OBA","LBA","PDA","JobArgs","SubmitJobRequest","ValidateJobParametersRequest","JobRunsRequest","ContractsResourceService","accountsServiceUri","JobService","jobRunsRequest","jobStatus","jobName","toDisplayDateTimeFormat","additionalParameters","jobArgs","toCidDisplayFormat","submitJobRequest","commonDataServiceResource","contractServiceResource","flowingGasServiceResource","invoicingServiceResource","nominationServiceResource","buildJobRunsRequest","jobRunRequest","buildSubmitJobRequest","resource","parametersValidateRequest","buildValidateJobParametersRequest","JobRunnerComponent","scheduledJobService","jobService","nominationResourceService","submitJobConfirmationMessage","submitJobWarnings","submitJobTimePeriodToDisplay","resetPendingJobClicked","resetPendingJobsCallback","resetPendingJobs","resumeJobsClicked","resumeJobsCallback","resumeJobs","failInProgressJobsClicked","failInProgressJobsCallback","failInProgressJobs","resetAllJobs","resetPendingJobsSuccessful","resumeJobsSuccessful","failInProgressJobsSuccessful","resetSelectedOptions","initAfterFlowModel","initNominationsModel","initBasicModel","getSelectedJob","getLocationsIfNeeded","jobRunParam","None","LocationGasDayCycle","LocationGasDay","determineMinGasDayForJob","validateJobParameters","areValid","warningMessage","addErrorMessage","errorMessage","getSelectedTimePeriod","buildConfirmationMessage","promptToConfirmJobSubmit","checkBillingMonthStatusBeforeSubmittingJob","queryAllJobTypes","jobs","openGasMonth","oldestGasMonth","newestGasMonth","determineEarliestSelectableGasDay","getPipelineGasDay$","getNominationJobs$","allowAllLocationConfirmation","j","measurementBillingProcesses","allocationAndBalancingBillingProcesses","invoiceBillingProcess","warningMessages","confirmationMessage","timePeriodToDisplay","buildTimePeriodDisplayValue","submitJobModal","submitJob","jobSubmitSuccessful","includeSelectedJob","locationSearchParams","queryAllDetails","submitClicked","ViewJobHistoryViewModel","jobStatuses","JobStatus","Succeeded","Failed","Cancelled","ViewJobHistoryComponent","maxDate","startTimeSortValue","rowData","jobStart","loadJobTypes","queryJobRuns","jobRuns","cssClass","addClass","Pipeline","JobCategory","jobTypes","jobHistoryDataGrid","EnvironmentConfiguration","BooleanValuedEnvironmentConfiguration","newValue","booleanValue","BaseConfigurationService","EmailSubscription","email","confirmEmail","eventType","emailSubscription","found","subscriptionEvent","EventType","statusValue","Types","ofo","PublishInvoiceNotification","DailyDiscretionaryRevenueReport","OfoEvent","OperationalEvent","ConfirmationRequest","MinimumItBidRate","ScheduledCycle","NominationFailedOrAmended","MismatchedTitleTransfer","ImbalanceTradeRequest","selectedRows","UnsubscribeEmailNotificationsSearchParams","eventTypes","SubscriptionService","EventSubscriptionDto","subscriptionService","userId","emailAddress","userDto","eventDto","CommonData","parseEnterpriseId","uniqueId","EmailSubscriptionService","emailSubscriptionUserDto","buildFromDto","subscriptionUpdateRequest","subscriptionSearchRequest","emailSearchText","usernameSearchText","createForNominations","typeValue","InternalEmailSubscriptionUpdateRequest","init","assign","EmailSubscriptionUpdateRequest","EmailSubscriptionSearchRequest","CommonDataConfigurationService","resourceService","NominationsConfigurationService","CommonDataCacheService","deleteWithNoResponseBody","BusinessRight","fullName","alternateName","legacyName","businessRight","toCheckFor","ConfirmationVariance","CustodyTransfer","Transportation","TransportationVariance","TransportationFuel","MultiTitleTransfer","ParkAndLoan","LdcVariance","PipelineVariance","SboStorage","ShortNoticeBalancing","SystemLinepack","SystemFuel","TboTransportation","Purchase","Sale","SHIPPER_BUSINESS_RIGHTS","OPERATOR_BUSINESS_RIGHTS","NominationGroupService","contractsResource","contractVersionId","nominationGroupDto","invoiceGroupId","requestParams","invoiceRecipientEnterpriseId","setOptionalGasMonth","includeITOnly","forManualTransactionsOnly","invoiceAgentId","anchorShipperRights","mnemonicPrefix","accountMnemonic","accountName","parentAccountId","parkAndLoanType","injectionQuantity","injectionQuantityStartDate","injectionQuantityEndDate","withdrawalQuantity","withdrawalQuantityStartDate","withdrawalQuantityEndDate","totalQuantity","totalQuantityStartDate","totalQuantityEndDate","setOptionalListOfNumbers","nominationGroupIds","billableServiceIds","locationIds","runReportAsType","businessRights","startOfTime","enterpriseIds","queryNomGroupNames","createProductionSetupNominationGroupRequest","CreateProductionSetupNominationGroupRequest","QuerySimpleNomGroupsSearchParams","QueryNomGroupsSearchRequest","searchRequest","BaseCreateAccountRequest","CreateHubAccountRequest","CreateNonHubAccountRequest","CreateParkAndLoanAccountRequest","CreateNominationGroupRequest","ownerEnterpriseId","isGstExempt","invoiceGroupDto","InvoiceGroupDto","NominationGroupNameDto","NominationGroupOperationalQuantityRequest","NominationGroupOperationalParkAndLoanRequest","nominationGroupOperationalQuantity","nomGroupEffectiveGasDay","nomGroupExpiryGasDay","billableServiceId","pathType","deliveryLocationId","taxZeroRated","contractDemandQuantity","contractVolumeDemandQuantity","operationalQuantity","quantityEffectiveGasDay","quantityExpiryGasDay","NominationGroupContractsRequest","NominationGroupContract","partyContractVolumeDemand","counterPartyContractId","counterPartyEnterpriseId","counterPartyContractEffectiveGasDay","counterPartyContractExpiryGasDay","counterPartyQuantityEffectiveGasDay","counterPartyQuantityExpiryGasDay","counterPartyContractVolumeDemand","counterPartyContractDemand","contractAlternatePaths","nominationGroupContract","partyContractId","partyContractEffectiveGasDay","partyContractExpiryGasDay","partyQuantityEffectiveGasDay","partyQuantityExpiryGasDay","partyContractDemand","contractAlternatePath","TempAssignOutType","pathEffectiveGasDay","pathExpiryGasDay","parkAndLoanContracts","nominationGroupPALOperationalQuantity","contracts","parkAndLoanContract","sortByIndex","ParkAndLoanContract","contractNumber","contractEffectiveGasDay","contractExpiryGasDay","quantityType","quantity","sortByMap","Injection","Withdrawal","TotalQuantity","nominationGroupType","nominationAgentEnterpriseId","nominationOwnerEnterpriseId","invoiceGroupOwnerEnterpriseId","parentId","CommonDataEmailSubscriptionService","createForCommonData","EnableExternalAccess","configuration","nominationsConfiguration","nominationsSearchResults","processEdiNotifications","numberOfExternalEmails","allowSendingEmails","isEmailSectionVisible","SupportComponent","commonDataConfigurationService","nominationsConfigurationService","commonDataCacheService","nominationGroupService","commonDataEmailSubscriptionService","nominationsEmailSubscriptionService","testPageService","isPageReady","commonDataExternalAccess$","queryExternalAccess","valueAsBoolean","nominationsExternalAccess$","nominationsProcessEdiNotifications$","getProcessEdiNotificationsConfiguration","allowedToSendEmails$","getAllowedSendingEmailsConfiguration","updateValue","getSubscriptions$","querySubscriptions","delay","updateExternalAccess","updateSuccess","upsertEnvironmentConfig","updateNominationsSuccess","serviceCall","clearCache","broadcastEnterprises","calculateOperationalQuantity","queryEnvironmentConfig","querySubscriptionsFromCommonData$","querySubscriptionsFromCommonData","querySubscriptionsFromNominations$","querySubscriptionsFromNominations","eventSubscriptionDtosFromCommonData","eventSubscriptionDtosFromNominations","TollCategory","isLoadable","Compliance","Forecast","ICENGX","Categories","TollsUploadParameters","rawTolls","TollRow","lineNumber","receiptLocationName","deliveryLocationName","demand","commodity","dailyDemand","TollsUploadResponse","csvLinesFound","tollsToProcess","tollsInserted","tollsExpired","tollsReplaced","tollsDeleted","tollProcessingMessages","tollProcessingErrors","tollProcessingWarnings","hasTollProcessingErrors","tollsFailed","calculateTollStatus","openBillingGasMonth","isDeleted","isReplaced","isExpired","toll","dailyRate","rate","deliveryPointId","receiptPointId","tollType","expiryGasMonth","transportationServiceType","isUsed","TollRequest","InvoicingTollService","fromBillingMonth","toBillingMonth","iTolls","tolls","tollRequest","TollCategories","TollsUploadRequest","TollsUploadLastRequest","tollCategories","LoadTollsComponent","invoicingTollService","csvHeaders","processRows","tollRow","style","lastRequest","loadTolls","setUpLastRequest","validateTolls","isValidFile","doFileChosen","extractLoadTollData","wasVerify","csvUploader","nativeElement","verifyClicked","TollType","Demand","Commodity","PressureDemand","PressureCommodity","DemandSurcharge","CommoditySurcharge","AbandonmentSurcharge","DifferentialSurcharge","CostOfGas","ABNITSameDay2A","RateRider","tollTypes","tollTypesForAdding","billableServices","addButtonDisabled","isAdding","isEditing","isEditingRowValid","ExpireTollModel","DeleteTollComponent","tollsService","deleteTollMessage","viewTollsComponent","buildTollRequest","expireTollModel","deleteToll","cellPreparedEvent","hideCheckBoxCondition","command","css","selectionChangedEvent","dataGrid","isRowSelectableCondition","currentSelectedRowKeys","currentDeselectedRowKeys","selectableItems","selectedRowKey","rowIndex","getRowIndexByKey","deselectRows","deselectAll","currentSelectedRowKey","currentRowIndex","minAndMaxFunction","minAndMax","editorOptions","maxLength","inputAttr","parentType","editorName","onOpenedSetDropDownWidth","onOpenedEvent","popupInstance","_popup","off","args","optionChangedHandler","on","onSelectionChangedFunction","getSelectBox","onSelectBoxSelectionChanged","canHandleSelectBox","configureSelectBoxFunction","hideExpandIconCondition","removeClass","empty","Location","operatorId","gmsId","detailLocations","provinceCode","physicalFlowDirection","LocationsUploadParameters","rows","LocationRow","operatorMnemonic","locationType","drnId","LocationParametersUploadParameters","LocationRelationshipsUploadParameters","LocationParameterRow","accountLocationName","isMeasurementLocation","province","longHaulStorageReceipt","doesTcplInitiateConfirmation","confirmationUom","isStandingRequestUsed","isConfirmationByEdi","isTBONominationAllowed","isCvAllowed","confirmAccountLocationName","areStsCyclesConfirmed","isManualHourlySqForUhf","LocationRelationshipRow","detailLocationName","locationSearchRequest","hasOmvAccount","LocationService","commondataResource","operatorCid","accountingLocationIds","query","includeAgentLocations","operatorName","commonDataLocation","BaseEnrichmentService","that","enrichmentResource","doEnrichArray","fetchByGasDay","fetchAll","doFetch","doEnrich","log","getEnrichmentResource","enrichmentQueryAll","enrichmentGet","LocationEnrichmentService","EnrichmentLocationDto","BillableService","InvoicingBillableServiceService","canHaveTolls","ViewTollsComponent","commonDataGasdayService","locationService","locationEnrichmentService","invoicingBillableServiceService","rowAddError","setEnrichmentResource","dateEditorFormat","dateEditorFormatter","dateEditorParser","gasDayEditorFormat","gasDayEditorFormatter","gasDayEditorParser","locations$","queryAccountLocations","billableServices$","locationCache$","enrichArrayAll","oldestBillingMonth$","firstBillingDay","currentGasDay$","filterTollTypes","searchTolls","clearSearchResults","asGasMonth","asNullableNumber","$event","monthlyToll","created","createdSort","receiptPoint","deliveryPoint","sort","a","b","localeCompare","columns","addRow","editRow","cellInfoData","isGreaterThanOrEqualTo","expireModal","deleteModal","expireToll","receiptPointName","deliveryPointName","saveEditData","saveOrUpdateToll","loadedTolls","clearEditMode","displaySavedAlert","unshift","rowAdded","repaint","setDropDownWidth","calendarOptions","minZoomLevel","maxZoomLevel","dxEditorInstance","editorElement","dxSelectBox","dxNumberBox","dxDateBox","vce","setValue","getController","validate","lastLoadedGasDay","HourlyFlowMaintenanceModel","HourlyFlowMaintenanceSearchParams","showFilters","hours","GasDayHour","sortValue","HourlyFlowMaintenance","hourlyFlowMaintenance","transaction","createdBy","createdDateTime","effectiveTime","hourlyFlow","HourlyFlowMaintenanceService","hourlyFlowDtos","HourlyFlowMaintenanceComponent","hourlyFlowMaintenanceService","gasDayTracker","integerPattern","onRowInserting","brokenRules","hasEditData","saveHourlyFlowMaintenance","tryToCancelEditingData","hasUnsavedChanges","setRowDefaults","h","latestGasDay","previouslyLoadedForSameGasDay","markLastLoadedGasDay","cancelEditData","toggleFilterSection","onGasDayChanged","EnterpriseEnrichmentService","EnrichmentEnterpriseDto","SpaceUppercasePipe","UnsubscribeEmailNotificationsComponent","nominationsEnterpriseEnrichmentService","toDateString","eventSubscriptionsDataGrid","getVisibleRows","groupsPerService","groupBy","unsubscribe$","group","usersPerService","updateSubscriptionInternal","querySubscribedEventTypes","concat","UsernameParam","EmailParam","EventTypeParam","SearchAllParam","unsubscribedClicked","AgentRole","AgentRoles","agentRole","InvoiceAgent","NominationAgent","OperatorAgent","AgentType","Full","Partial","AgentTypes","MaintainAgentsSearchParams","includeExpired","customers","nominationAgentCustomers","operatorAgentCustomers","nominationAgents","agentRoles","CustomerEnterprise","customerEnterpriseDto","customerEnterprise","enterpriseCid","CustomerService","customerEnterpriseDtos","agentRelationship","postAgentRelationshipDto","agentEnterpriseId","agentType","newRow","rowEdited","AgentRelationship","customerEnterpriseId","modifiedDateTime","modifiedByUserId","isEditable","AgentRelationshipSaveRequestDto","AgentLocationsSearchRequest","MaintainAgentSearchRequest","PartialInvoiceGroupRelationship","partialInvoiceGroupRelationship","accountId","AgentRelationshipService","contractService","invoiceGroupIds","agentRelationships","agentRelationshipRows","agentRelationshipId","agentRelationshipSaveRequest","includeAgentFor","BaseAgentsComponent","customerService","nomGroupService","nomGroupEnrichmentService","agentRelationshipService","invoicingBillingProcessService","setDefaultCustomer","isViewPage","getDataSource","store","byKey","queryInvoiceGroupRelationships","partialAgents","queryLocationRelationships","classList","remove","getAllCustomersWithAgentsAvailable","openBillingMonthStartDay","invoicingBillingMonthProcessIsFinal","isFinal","queryLocationOperatorsByPipeline","createFromEnterprise","agentLocationsSearchRequest","queryAgentOperatorLocations","getPartialInvoiceAgentRelationships","partialRelationships","queryAgentRelationships","maintainAgentSearchRequest","userIsInternal","getMaintainAgentRelationships","pipelineGasDay$","getPipelineGasDay","commonDataBillingMonth$","getOpenBillingMonth","isExternalUser","queryNominationAgentEnterprises$","queryAllCustomersWithAgentsAvailable","queryLocationOperatorsByPipeline$","queryInvoicingBillingProcess$","queryInvoicingBillingProcess","isNumber","isBoolean","customerName","agentName","NomGroupEnrichmentService","EnrichmentNomGroupDto","MaintainAgentsComponent","goToAddEditAgentPage","deleteRelationship","deleteAgentRelationship","success","saveAgentRelationship","checkDate","lastDay","isLastDayOfMonth","postAgentRelationships","queryAgentRelationshipsFor","exportCsv","isPartialAgentType","AddAgentComponent","nomGroupsWithNoPartialInvoiceAgentRelationship","queryCustomerEnterpriseNominationGroups","queryCustomerLocations","addAgentRelationship","navigateToMaintainAgentsPage","hideCheckBox","isRowSelectable","handleSelectAndDeselectRowWhenDataGridHasHiddenCheckBox","nomGroupDataGrid","startGasDayOfOpenBillingMonth","getServerTimeData$","EnterpriseIdParam","isOneOf","AgentRoleParam","hasValidParameters","queryNomGroups$","allCustomerAgents$","queryCustomerAgents","queryNomGroupsSearchRequest","searchByEnterpriseAndGasDayRange","queryCustomerEnterpriseNomGroups$","queryNomGroups","queryPartialInvoiceGroupRelationships$","nominationGroups","partialInvoiceGroupRelationships","nomGroupsWithEffectiveInvoiceGroups","partialInvoiceAgentRelationshipsForOtherEnterprises","invoiceGroupIdsWithPartialRelationship","queryCustomerOperatorLocations","agentEnterprises","getSelectedRowsData","saveInvoiceAgentRelationship","locationDataGrid","saveOperatorAgentRelationship","currentRow","previousRow","ViewAgentsComponent","stsBalanceNomGroup","customerStorageBalances","debitLocations","creditLocations","StsTransferBalanceSearchParams","StsTransferBalanceService","stsBalNomGroup","g","stsTransferBal","StsTransferBalance","stsTransferBalance","creditNomGroupId","debitNomGroupId","urlSearchParams","StsTransferBalanceRequest","stsBalance","storageBalanceNomGroups","StorageBalanceChildNomGroups","storageBalanceLocations","StorageBalanceLocations","stsChildNomGroups","acctTypeCode","serviceClass","locationTypeCode","locationName","upstreamDownstreamCode","MinAndMax","NumberFormatPipe","showBlankIfValueIsZero","useLocalFormat","toLocaleString","StsTransferBalanceComponent","commonDataLocationService","nominationGroupEnrichmentService","stsTransferBalanceService","commonDataEnterpriseService","newData","defaultSetCellValue","queryEnterprises$","queryEnterprises","queryStorageBalances$","queryStorageBalances","PARAM_CUSTOMER_ENTERPRISE_ID","buildSearchRequest","queryStsTransferBalances","queryGetStsTransferBalances","stsTransferBalances","showDiscardChangesDialog","resetPage","queryGetStorageBalances","selectedItem","storageBalance","setEditorOptionsMinAndMax","debitSelectBox","debitNomGroupChanged","creditSelectBox","creditNomGroupChanged","rowElement","getCellElement","columnIndex","deleteStsTransferBalance","dateFormater","saveNewStsTransferBalance","updateStsTransferBalance","savedStsTransferBalance","savedStsTransfer","hasSearchResults","searchButtonEnabled","locationEnabled","StsBalanceSearchParams","LocationType","all","upstreamDownstream","UpstreamDownstream","injectionWithdrawal","InjectionWithdrawal","saved","locationExpiryGasDay","selectedStorageBalanceLocation","selectedStorageBalanceNomGroup","selectedStorageBalance","expiredLocations","expiredNomGroups","FlowingGasStorageBalanceService","myStorageBalance","storageBalanceId","myStorageBalanceLocation","storageBalanceLocationId","myStorageBalanceNominationGroup","myStorageBalanceNomGroup","proposedExpiryGasDay","storageBalanceVersion","storageBalanceLocation","upStreamDownStreamCode","getBoolean","storageBalanceNomGroup","valIn","StsBalanceParametersComponent","flowingGasStorageBalanceService","getFilteredNomGroups","bind","setNomGroupAndServiceClassValue","billingMonth$","getLocations","setSearchButtonEnabled","queryLocations","commonDataLocations","queryAccountLocationsGivenGasDay","accountingLocations","queryStorageEnterprises$","storageEnterprises","getAllNominationGroups$","getVariant2","allNominationGroups","getAccountLocations$","getAccountLocations","info","selectedStorageBalanceId","className","getLocations$","queryStorageBalance$","getStorageBalance","storageBalances","reverse","selectStorageBalanceRecord","updateExpiryOnStorageBalance","expireStorageBalance","evt","storageBalanceGrid","storageBalanceLocationsGrid","thereIsALocationValidationError","newStorageBalanceLocationRow","foundLocation","fromDateTime","insertStorageBalanceLocation","errorFound","selectSystemBalanceLocationRecord","expireLocationModal","updateExpiryOnStorageBalanceLocation","updateStorageBalanceLocation","selectedStorageBalanceLocationId","rowindex","options","comparisionOperator","getServiceClassFromNomGroupId","locationTypeSelectBox","selectedType","upDownSelectBox","storageBalanceNomGroupsGrid","thereIsANominationGroupValidationError","newStorageBalanceNomGroupRow","foundNomGroup","insertStorageBalanceNominationGroup","selectSystemBalanceNomGroupRecord","expireNomGroupModal","updateExpiryOnStorageBalanceNomGroup","storageBalanceNomGroupId","updateStorageBalanceNominationGroup","ng","onCustomerChanged","onLocationChanged","expireStorageBalanceLocation","expireStorageBalanceNomGroup","AddStorageTransportationBalanceSearchParams","priorPageSearchParams","PriorPageSearchParams","AccountsEnterpriseService","accountsResource","accessAsNomAgent","accessAsInvoiceAgent","stsCustomersOnly","nomGroupBusinessRights","agentAvailable","updateablePriceOnly","AccountsEnterpriseSearchRequest","AccountsCustomerSearchParams","AddStorageTransportationBalanceComponent","accountsEnterpriseService","allEnterprises","nomgroups","queryCustomersVariant2$","queryCustomersVariant2","customerIds","foundEnterprise","queryAccountLocationsGivenGasDay$","accountLocations","hasChanged","goToStorageTransportationBalanceParametersPage","insertStorageBalance","saveClicked","LoadAutoBalanceLocationOrderRow","flowDirection","LoadAutoBalanceLocationOrderParameters","LoadAutoBalanceLocationOrderRequest","loadAutoBalanceLocationOrderRows","LoadAutoBalanceLocationOrderService","nominationService","LoadAutoBalanceLocationOrderComponent","loadAutoBalanceLocOrderService","loadAutoBalanceLocOrderResponse","ConfirmationAutoBalanceLocationOrderRow","LoadConfirmationAutoBalanceLocationOrderParameters","LoadConfirmationAutoBalanceLocationOrderService","LoadConfirmationAutoBalanceLocationOrderComponent","loadConfirmationAutoBalanceLocOrderService","uploadResponse","uploadConfirmationAutoBalanceLocationOrder","colIndices","AdministrationRoutes","runGuardsAndResolvers","activities","Activity","hasEditSecurity","PriorDayPendingActivitiesSearchParams","_searchResults","_id","_description","ALLOCATION","ACCOUNTBALANCE","STORAGEBALANCE","BALANCEFUEL","OFOPENALTY","FlowingGasPriorDayPendingActivitiesCsvBuilderService","activityAll","affectedGasDayDisplayFormat","PriorDayPendingActivitiesComponent","priorDayPendingActivitiesService","priorDayPendingActivitiesCsvBuilderService","adjustmentActivityPendingStatus","queryAllAdjustmentActivities","submitAdjustmentActivities","processAdjustmentActivities","contentReadyEvent","shouldSkipNextReady","updateDimensions","UniformHourlyFlowSearchParams","nominationLocations","FlowingGasUniformHourlyFlowReportService","UniformHourlyFlowReportRequest","UniformHourlyFlowReportComponent","flowingGasUniformHourlyFlowReportService","gasDayString","asListOfNumbers","queryUniformHourlyFlowReportPdf","mediaType","RunReportAsType","valueAsLowerCase","NOM_GROUP_OWNER","NOMINATION_AGENT","INVOICE_RECIPIENT","GasAccountType","GAS_ACCOUNT_TYPE_TO_BUSINESS_RIGHT","accountSummaryMnemonic","accountSummaryDisplay","CONFIRMATION_VARIANCE","CUSTODY_TRANSFER","LDC_VARIANCE","LINE_PACK_LOSS","OPERATION_LINE_PACK","OWNED_LINE_PACK","OWNED_STORAGE_WORKING_GAS","PARK_AND_LOAN","PIPELINE_FUEL_VARIANCE","PIPELINE_VARIANCE","SHIPPER_FUEL_VARIANCE","SHORT_NOTICE_BALANCING","STORAGE_BY_OTHERS","SYSTEM_LINE_PACK","SHIPPER_OWNED_LINE_PACK","TITLE_TRANSFER","TRANSPORTATION_BY_OTHER","TRANSPORTATION_VARIANCE","VAR_LOC_TRANSFER","WRITE_OFF","OPERATOR_MEASUREMENT_VARIANCE","PACK_AND_DRAFT","MULTI_TITLE_TRANSFER","CUSTOMER_HUB","SHIPPER_GAS_ACCOUNT_TYPES","OPERATOR_GAS_ACCOUNT_TYPES","PIPELINE_GAS_ACCOUNT_TYPES","pipelineGasAccountTypes","accountTypes","runReportAsTypes","allocationMethods","isVarianceOnly","AccountSummaryReportType","SHIPPER","OPERATOR","PIPELINE","ALL_FOR_EXTERNAL_USER","FlowingGasAccountSummaryService","flowingGasResourceService","reportType","accountType","reportingMonth","levelType","AccountSummaryReportLevelType","accountSummary","openingBalance","inTotal","outTotal","variance","closingBalance","isPpa","locationSummaries","dailyDetails","dailyDetail","transactions","in","out","useNomGroup","fromNominationGroupId","toNominationGroupId","fromAccountType","toAccountType","FlowingGasEnterpriseService","GasAccountType2","TransactionType2","TransactionExportRowCount","includePPA","serviceCategory","serviceOption","transactionTypes","includeThreadedColumns","TransactionExportRequest","gasaccountTypeClassification","accountBalancingMethod","transactionExportRowCount","exceedLimit","FlowingGasPipelineSystemSettingService","pipelineSystemSettingDto","PipelineSystemSettingDto","AccountSummaryByLocationDailyReportComponent","flowingGasEnterpriseService","accountsNominationGroupService","flowingGasAccountSummaryService","flowingGasPipelineSystemSettingService","referenceAccountSummaryReportType","referenceAccountSummaryPdfLevelType","adjustFormIfUserIsAnExternalUser","changeAvailableOptionsBasedOnSelectedReportType","maxGasDayWithinMonth","minBillingGasMonth","maxBillingGasMonth","queryNominationGroups","hideExpandIcon","dailySummaries","nominationGroupMnemonic","getAccountSummaryPdf","getCsvFileName","summary","exportArray","locationSummary","summaries","customerShortName","customerMnemonic","ownerEnterpriseMnemonic","objToUpdate","nominationGroupOwnerEnterpriseId","nominationGroupOwnerMnemonic","nominationGroupOwnerName","daily","pushNomGroupOwnerInfo","nomGroupOwner","nomGroupOwnerMnemonic","details","transferNomGroup","transferNomGroupOwner","upDownContract","counterParty","transferLocation","tos","pipelineSystemSettings","summarizeThreadedNomination","useLocation","sqIn","sqOut","displayScheduledQty","reportTypes","queryShipperEnterprises$","queryShipperEnterprises","queryOperatorEnterprises$","queryOperatorEnterprises","queryPipelineEnterprises$","queryPipelineOwners","createAndEnrichEnterpriseIds","pipelineEnterprises","orderEnterpriseByDisplayValue","queryLocations$","pipelineSystemSetting$","getSettings","PARAM_REPORT_TYPE","PARAM_START_GAS_DAY","PARAM_END_GAS_DAY","PARAM_BILLING_MONTH","PARAM_ENTERPRISE_ID","PARAM_LOCATION_ID","PARAM_IS_VARIANCE_ONLY","PARAM_RUN_REPORT_AS","PARAM_NOM_GROUP_ID","PARAM_ACCOUNT_TYPE","shipperGasAccountTypes","PARAM_ALLOCATION_METHOD","queryShipperGasAccountTypes$","queryShipperGasAccountTypes","queryAccountSummary$","buildAccountSummarySearchParams","accountSummaries","enrichShipperData","enrichOperatorData","enrichPipelineData","queryDateTime$","searchResultsAsOf","gasMonthForQueryingStatus","queryAllocationAndBalancingBillingProcess$","allocationAndBalanceBillingProcess","getBusinessRightsForReportType","querySimpleNomGroups","filteredNomGroupsByAccountType","getAssociatedBusinessRight","shipperEnterprises","operatorEnterprises","createWithId","byShipper","byOperator","enrichAccountSummaries","dailySummary","y","enrichDetailTransactions","queryCustomers","withNomGroupBusinessRights","reportLevelType","isDaily","dailyText","onReportTypeChanged","VolumeEnergyCompositionSearchParams","reportByTypes","volumeEnergyCompositionDetail","MeasurementLocation","measurementLocation","reportBy","vecDetail","stationNumber","stationName","volume","pressure","temperature","acceptabilityIndicator","sg","heatValue","n2","c02","c1","c2","c3","nC4","iC4","nC5","iC5","nC6","nC7","nC8","he","VolumeEnergyCompositionSearchRequest","VolumeEnergyCompositionService","reportByType","summaryLocationId","measurementLocationIds","sinceDate","sinceTime","DateTimePickerComponent","dateTimeBox","_dateTimeValue","VolumeEnergyCompositionComponent","volumeEnergyCompositionService","stationNameTemplate","caption","innerText","addEventListener","sinceDateTime","checkAllLocationsForMultiDayRequest","queryVolumeEnergyCompositionCsv","downloadFile","convertCompositionNumber","compositionValue","queryVolumeEnergyCompositionPdf","getMeasurementLocations","queryServerTimeData$","getGasDayServerTimes","queryOperators$","queryOperators","querySummaryLocations","checkMultipleMeasurementLocationsForMoreThanMonthRequest","clearSelection","serviceCalls$","queryVolumeEnergyComposition","operators","queryMeasurementAccountingLocationsForCustomer","summaryLocations","dl","measurementLocations","checkForEmptyMeasurementLocations","measurementLocationId","maxRange","selectedPdfOptions","_transportationSearchResults","transportationTADDetails","_transferSearchResults","transferTADDetails","_fuelSearchResults","fuelTADDetails","_transportationVarianceSearchResults","transportationVarianceTADDetails","PdfOptionType","TRANSPORTATION","TRANSFER","FUEL","runReportAs","InvoiceGroup","InvoiceGroupService","nomEnergy","transportationDetail","invoiceGroupOwnerEnterpriseMnemonic","invoiceGroupOwnerEnterpriseShortName","invoiceRecipientEnterpriseMnemonic","invoiceRecipientEnterpriseShortName","nominationGroupOwnerEnterpriseMnemonic","nominationGroupOwnerEnterpriseShortName","nominationAgentEnterpriseMnemonic","nominationAgentEnterpriseShortName","serviceCode","receiptLocation","deliveryLocation","isTaxExempt","totalNomEnergy","serviceKey","hasPpa","dailyConsumptionDetails","dailyConsumption","transferTADDetail","transferNomGroupMnemonic","transferTypeShort","transferType","transferOwnerEnterpriseId","transferOwnerEnterpriseMnemonic","transferOwnerEnterpriseShortName","ownerEnterpriseShortName","FuelPopup","fuelPopup","fuelDetail","cumulativeVariance","isInPpa","isOutPpa","fuelPopupDetails","fuelTADDetail","fuelNomGroupId","totalIn","totalOut","fuelNomGroupMnemonic","fuelDetails","transportationVarianceTADDetail","transferNomGroupId","totalPack","totalDraft","totalVariance","cummulativeVariance","transportationVarianceDailyDetail","pack","draft","TransportationAccountDetailSearchRequest","TransportationAccountDetailService","pipelineSystemCode","selectedPdfs","TransportationAccountDetailsTransportationTabComponent","transportationSearchResults","recordType","ownerMnemonic","nominationAgent","nomGroupType","invoiceRecipientName","nomGroupOwnerName","nomAgentName","customer","detail","TransportationAccountDetailsTransferTabComponent","transferSearchResults","transferNomGroupOwnerMnemonic","FuelPopupModel","TransportationAccountDetailsFuelPopupComponent","fuelPopupModel","TransportationAccountDetailsFuelTabComponent","attributes","transportationAccountDetailsFuelPopupModal","fuelSearchResults","fuelNomGroup","TransportationAccountDetailsTransportationVarianceTabComponent","transportationVarianceSearchResults","transportationVariance","Pack","Draft","Variance","TransportationAccountDetailComponent","invoicePackageService","transportationAccountDetailService","phase1tabs","phase2tabs","setMaxBillingMonth","maxReportingGasMonth","onRunReportAsChanged","buildTransportationAccountDetailSearchRequest","queryPdf","tabPanel","queryTransfer","queryFuel","queryTransportationVariance","tabPanel2","nominationPipelineGasDay$","minReportingGasMonth","queryCustomers$","queryStatus$","queryStatus","queryCommonDataGasDayService","queryTransportation","pdfOptions","isSearchForGasDayPostPhase2Launch","serverDateTime","transportationDetails","transferDetails","transportationVariances","transportationVarianceDetails","transportationAccountDetailRequest","invoiceGroups","ig","getInvoiceGroups","processNoNominationGroupsFound","queryInvoiceRecipients","invoiceRecipients","makeupNomination","isOverride","comments","nominationId","effectiveDateTime","isTimelyCycle","isCurrentNomination","MakeupNominationsSearchRequest","OverrideMakeupNominationsService","OverrideMakeupNominationsSearchParams","_omvLocations","packTabModel","OverrideMakeupNominationsTabModel","draftTabModel","omvLocations","makeupSearchResults","_makeupSearchResults","makeupNominations","LBALocationTolerancesUploadParameters","LBALocationTolerancepRow","tollTypeCode","OmvLocation","omvLocation","FlowingGasLocationService","OverrideMakeupNominationsCsvBuilderService","isOverrideYesNoFormat","effectiveDateTimeDisplayFormat","issueDateTimeDisplayFormat","OverrideMakeupNominationsTabComponent","overrideMakeupNominationsService","overrideMakeupNominationsCsvBuilderService","performSearchEvent","submitModalModel","tabModel","newComment","saveMakeupNomination","submitMakeupNominationUpdate","$valueChangedEvent","keyDownEvent","keyCode","OverrideMakeupNominationsComponent","nominationsSystemService","flowingGasLocationService","draftType","packType","preliminaryBillingMonth$","preliminary","uiAccessibleGasDay","queryOmvLocations","setBillingGasMonth","setTabToDefaultPosition","omvLocationId","queryLocation$","queryLocationOwner","queryMakeupNominations$","queryMakeupNominations","locationOperator","getOmvLocations","BooleanHelper","isAbbreviated","BooleanDropDownValue","YES","abbrValue","NO","_displayValue","_abbrValue","serviceCodes","defaultServiceCode","taxZeroRatedValues","ItPenaltiesSearchParams","ItPenaltiesService","affectedBillingMonth","itPenalty","penalty","itPenaltyDto","interruptiblePenaltyId","interruptiblePenaltyVersion","finalQuantity","DateToGasDayFormatPipe","ignoreTime","ItPenaltiesComponent","accountsNomGroupService","itPenaltiesService","searchByEnterpriseAndBillingMonth","itNomGroups","enterpriseItNomGroups","deleteItPenalty","saveNewItPenalty","updateItPenalty","savedItPenalty","csvExport","enterpriseMnemonic","toYesOrNo","PARAM_AFFECTED_MONTH","queryAllocationAndBillingProcess$","allocationAndBalancingBillingProcess","queryInvoiceRecipients$","queryAccountLocations$","queryItPenalties","itPenalties","onAffectedBillingMonthChanged","AccountSummaryByLocationMonthlyReportComponent","setMinMaxBillingMonth","exportTransactionType","GetAvailableReportTypes","PARAM_REPORTING_MONTH","queryMonthEnd","buildAccountSummaryMonthEndSearchParams","affectedGasMonth","receiptMeasurement","receiptDelta","deliveryMeasurement","deliveryDelta","netMeasurement","dailyData","gasDayMeasurementSummaries","locationMeasurementSummaries","MeasurementService","ExpandCollapseComponent","isExpandAll","toggleExpandAll","expandAll","ViewMeasurementSearchParams","ViewMeasurementComponent","measurementService","calculateTotals","summaryProcess","totalValue","queryMeasurementAccountingLocations","queryMeasurement","netChange","collapseAll","onGasMonthChanged","selectedTabIndex","OperatorBalanceReportSearchParams","_locationBalanceSearchResults","_billedExcessSearchResults","_dailyExcessSearchResults","_cumulativeExcessSearchResults","UnitOfMeasure","GJ","DTH","OperatorBalanceService","operatorEnterpriseId","unitOfMeasure","locationBalanceDto","billedExcessDto","dailyExcessDto","cumulativeExcessDto","locationBalance","confirmedReceipt","confRecHasPpa","confirmedDelivery","confDelHasPpa","netConfirmed","measuredReceipt","measRecHasPpa","measuredDelivery","measDelHasPpa","netMeasured","netInventoryTransfer","inventoryTransferExists","dailyBalances","dailyBalanceDto","tolerances","toleranceDto","LbaLocationTolerance","dailyPercentages","dailyPercentageDto","LbaTierPercentage","cumulativePercentages","cumulativePercentageDto","feeStructure","feeStructureDto","dailyOperatorBalance","lbaLocationTolerance","tierType","lbaTierPercentage","percentage","tierTypeId","tierFactor","billedExcess","dailyTier1","dailyTier2","dailyTier3","dailyTier4","cumulativeTier1","cumulativeTier2","tierTotal","isNotZero","billedExcessDetails","billedExcessDetailDto","billedExcessDetail","tier1","tier2","tier3","tier4","dailyTierFee","estimatedFee","tolerance","calculatedExcess","dailyExcess","netNominated","authorizedMakeup","nominatedMakeup","measuredNominatedLessMakeup","dailyVariance","dailyVarianceDetails","dailyVarianceDetail","avg30DayNom","cumulativeExcess","cumulativeVarianceDetails","cumulativeVarianceDetail","minimumMakeup","makeupRelief","adjustedCumulativeVariance","operatorBalanceService","lastSearchLocations","getOperatorBalancePdf","units","OperatorBalanceReportLocationBalanceTabComponent","displayIT","orderedLocationBalanceSearchResults","locationBalanceSearchResults","dailyBalance","BilledExcessQuantityPopupModel","BilledExcessTierTabModel","BilledExcessDailyTierModel","tier","unit","billedExcessDailyTierModel","calcExcess","BilledExcessQuantityPopupComponent","dailyModalTabs","dailyTier1Fees","createTierTabModel","dailyTier2Fees","dailyTier3Fees","dailyTier4Fees","cumulativeTier1Fees","cumulativeTier2Fees","billedExcessTierTabModel","displayTotalEstimatedFee","dailyTiers","OperatorBalanceReportBilledExcessQuantityTabComponent","billedExcessQuantityPopupModal","orderedBilledExcessSearchResults","billedExcessSearchResults","tier1BilledExcess","tier2BilledExcess","tier3BilledExcess","tier4BilledExcess","cumulativeTier1BilledExcess","cumulativeTier2BilledExcess","OperatorBalanceReportLbaDailyVarianceTabComponent","removeItemInArray","orderedDailyExcessSearchResults","dailyExcessSearchResults","netInventory","itemToRemove","OperatorBalanceReportCumulativeExcessTabComponent","orderedCumulativeExcessSearchResults","cumulativeExcessSearchResults","OperatorBalanceReportComponent","operatorBalanceTabs","setDefaultBillingGasMonth","setMaxBillingGasMonth","queryOperatorLocations","yesterday","queryOperatorLocations$","queryLocationBalanceData$","queryLocationBalanceData","isLbaTabsDisabled","queryBilledExcessData$","queryBilledExcessData","queryDailyExcessData$","queryDailyExcessData","queryCumulativeExcessData$","queryCumulativeExcessData","getServerDateTime$","monthForStatus","getLocationIdsForReportData","getLocationReportData$","getLocationBalance","locationBalances","getBilledExcess","billedExcesses","getDailyExcess","dailyExcesses","getCumulativeExcess","cumulativeExcesses","filterAllocationMethod","filteredLocations","onStartGasDayChanged","pendingStatuses","PendingPriorPeriodAdjustmentSearchParams","measurementSearchResults","measurementSelectAll","transportationSelectAll","transferSelectAll","clearSelectAlls","pendingStatus","RECEIVED","PendingStatus","ACCEPTED","SUBMITTED","PendingPriorPeriodAdjustmentService","acceptedBillingMonth","measurementType","pendingAdjustmentId","pendingAdjustmentVersion","pendingMeasurementSummary","measurementStatus","latestEnergy","newEnergy","pendingMeasurement","receivedDateTime","pendingTransportationTransaction","serviceOptionCode","pendingTransferTransaction","PendingPpaMeasurementTabComponent","pendingPriorPeriodAdjustmentService","isChecked","queryPendingMeasurementForAllSummaries","measurementSummary","queryPendingMeasurements","pendingMeasurementsResults","pendingMeasurements","enrichedPendingMeasurements","queryPendingMeasurements$","queryPendingMeasurement$","onPendingMeasurementSummaryExpand","PendingPpaTransportationTabComponent","transportationTransaction","orderedTransportationSearchResults","pendingTransportation","taxExempt","PendingPpaTransferTabComponent","transferTransaction","orderedTransferSearchResults","pendingTransfer","debitNomGroup","debitNomGroupOwnerMnemonic","creditNomGroup","creditNomGroupOwnerMnemonic","transferDSFieldsVisible","PendingPriorPeriodAdjustmentComponent","measurementBillingProcess","allSelectedItemsForPreliminaryMonth","pendingMeasurementGasMonth","transportation","transfer","acceptPendingMeasurements","acceptPendingTransportations","acceptPendingTransfers","PARAM_PENDING_STATUS","PARAM_ACCEPTED_BILLING_MONTH","queryMeasurementBillingProcess$","queryMeasurementAccountingLocations$","queryMeasurementSummaries$","queryPendingMeasurementSummaries","measurementSummaries","queryTransportationTransactions$","queryPendingTransportationTransactions","transportationTransactions","queryTransferTransactions$","queryPendingTransferTransactions","transferTransactions","acceptMeasurement$","acceptPendingMeasurement","acceptedMeasurements","acceptTransportations$","acceptPendingTransportationTransaction","acceptTransportations","acceptTransfers$","acceptPendingTransferTransaction","acceptTransfers","SystemBalanceSearchParams","SystemBalance","systemBalance","assets","liabilities","equities","totalLiabilitiesPlusEquities","systemBalanceCategory","totalOpeningBalance","totalDebits","totalCredits","totalClosingBalance","subCategories","gasAccountsSummaries","expanded","gasAccountTypeSummary","debits","credits","transactionTypeSummaries","TransactionTypeSummary","transactionTypeSummary","SystemBalanceService","SystemBalanceComponent","systemBalanceService","getSystemBalanceForGasAccountType","expand","asset","subCategory","liability","equity","StorageTransportationBalanceReportSearchParams","balanceSearchResults","excessSearchResults","nomGroupOwnerEnterpriseId","nomGroupOwnerCid","storageTransportationBalance","enterpriseName","injectionTotal","injHasPpa","withdrawalTotal","withHasPpa","varianceTotal","excessTotal","excessFeeTotal","dailyExcessProjections","dailyExcessQuantities","storageTransportationExcessArray","excessQuantities","excessQuantity","excess","excessFee","storageTransportationExcess","storageTransportationDailyBalance","cumulativeBalance","storageTransportationTransaction","nominationGroupCid","actualInjectionTotal","allowableInjectionTotal","maximumAllowableInjectionTotal","transferDirection","StorageTransportationBalanceService","fromGasMonth","toGasMonth","KeyboardInput","shiftKey","ZeroKey","NineKey","ZeroNumPadKey","NineNumPadKey","AKey","ZKey","SpaceKey","keyboardInputs","BackspaceKey","TabKey","EnterKey","EscKey","DeleteKey","EndKey","HomeKey","LeftKey","RightKey","EditingKeys","DataGridHelpers","onEditorPreparedEvent","numberBox","onDetailsCellPreparedEvent","cellElementToNumberBox","allowEditing","highlightCellContents","activeElement","validKeys","miscKeys","validIntegerKeyCodes","filterKeys","keyboardInput","allowedSpecialKeys","isLetter","isValidPackageIdKey","isValidIntegerKey","onKeyDown","keypress","numberBoxContainer","isSpace","DataRowType","executeFunction","ExpandColumnCommand","DataGridColumnFormatHelper","colSpan","ExpandIconCssClass","color","StorageTransportationBalanceBalanceTabComponent","storageTransportationBalanceService","isDataRow","whenColumnDataFieldIs","setColSpan","hideCell","StorageTransportationBalanceExcessTabComponent","StorageTransportationBalanceReportComponent","storageTransportationBalanceTabs","excessWithdrawalCount","queryBalanceData$","queryStorageTransportationBalanceData","onReportingMonthChanged","UnsavedChangesService","processYesNoCancelModalResponse","processYesNoModalResponse","navigationCancelled","currentRoute","nextState","isRedirectingToLoginOrErrorUrl","defaultMessage","getDefaultChangesWillBeLostMessageOptions","endsWith","ManualTransactionsSearchParams","AccountsToUse","ManualTransactionAccount","manualTransaction","debitAccountType","debitAccountId","debitEnterpriseId","creditAccountType","creditAccountId","creditEnterpriseId","ManualTransactionType","manualTransactionType","debitAccount","creditAccount","CONSTRUCTION_USE","INVENTORY_TRANSFER","LUF_GAIN","LUF_LOSS","MEASURED_FUEL","OTHER_LOSSES","ManualTransactionGasAccountMapping","manualTransactionGasAccountMapping","ManualTransactionService","debitEnterprise","creditEnterprise","debitLocation","creditLocation","CommonDataPipelinesService","CommonPipeline","pipelineOwner","commonPipeline","uiAccessibleDate","primaryContractQuantityType","contractUom","ManualTransactionsComponent","commonDataPipelineService","manualTransactionService","debitAccountRequired","showDebitAccount","creditAccountRequired","showCreditAccount","debitLocationRequired","showDebitLocation","creditLocationRequired","showCreditLocation","accountTypeCellTemplate","ownerNomGroupCellTemplate","setOwnerNomGroupCellText","setTransactionType","setCreditAccountType","setCreditAccount","setDebitAccountType","setDebitAccount","repaintRows","filterOutNonIntegerKeys","showHideLocationColumn","showHideAccountColumn","oldData","selected","debitAccountTypes","getAccountTypesFor","debitAccounts","getAccounts","USE_PIPELINE_OWNER","olpHandler","creditAccounts","USE_NOMINATION_GROUPS_FROM_GAS_ACCOUNT","creditAccountTypes","isDebit","USE_PIPELINE_SYSTEM_ACCOUNT_OWNERS","gasAccountTypes","gasAccountMappings","gam","accountsToUse","olpOwners","getBusinessRightFromGasAccountType","filteredNomGroups","deleteManualTransaction","saveManualTransaction","getTransactionTypes$","queryManualTransactionTypes","getGasAccountMappings$","queryGasAccountMappings","getOlpOwners$","queryOlpOwners","getManualTransactionNomGroups$","queryManualTransactionNomGroups","queryAccountingLocations$","queryAccountingLocations","getOmvLocations$","getPipelineOwner$","getPipelineOwner","queryManualTransactions$","queryManualTransactions","submitManualTransaction","updateManualTransaction","manualTransactions","setAccounts","shipperAccountTypes","manualTransactionTypes","onFromBillingMonthChanged","StatisticsCanadaDownloadSearchParams","StatisticsCanadaDownloadService","StatisticsCanadaDownloadComponent","statisticsCanadaDownloadService","getOpeningBillingMonth$","csvLoading","getStatisticsCanadaCsv","OutstandingBalanceExportService","OutstandingBalanceExportComponent","outstandingBalanceExportService","getExportCsv","exporttocsvClicked","billableServices2","TransactionExportSearchParams","TransactionReportType","ServiceCategoryType","FIRM","INTERRUPTIBLE","ServiceOptionType","NOOPTION","DIVERSION","INJECTION","INJECTIONOVERRUN","WITHDRAWALOVERRUN","BillableService2","AccountsBillableServicesService","onlyTransportation","category","onlyUpdateablePrice","TransactionExportComponent","billableServiceService2","initializeEnrichmentData$","initializeEnrichments","queryTransferEnterprises$","queryTransferEnterprises","queryGasAccountTypes$","queryGasAccountTypes","queryTransactionTypes$","queryTransactionTypes","queryBillableServices$","queryBillableServices","allTransactionTypes","PARAM_INCLUDE_PPA","PARAM_DELIVERY_LOCATION","PARAM_RECEIPT_LOCATION","PARAM_SERVICE","PARAM_SERVICE_CATEGORY","PARAM_SERVICE_OPTION","PARAM_LOCATION","PARAM_TRANSACTION_TYPE","onAccountTypeChanged","transactionCount","loadingMessage","queryTransactionCount$","exportDownloadFile$","queryTransportationCount","exportTransportationFile","queryTransferCount","exportTransferFile","queryTransactionCount","exportCount","queryGetTransportationExportCsv","queryGetTransferExportCsv","asListOfStrings","queryGetTransportationExportCsvCount","transportationCount","queryGetTransferExportCsvCount","transferCount","queryTransportationGasAccountOwners","transportationEnterprises","queryAllGasAccountOwners","transferEnterprises","queryTransferGasAccountTypes","queryTransactionTypesForAccountType","queryGetAllBillableServices","displayBillableServices","queryGetAllBillableServicesForCategory","billableService","queryTransactionTypesForAccount","queryBillableServicesForCategory","aYearFromStart","onStartEndGasDayChange","isRangeOverAYear","aYearFromEnd","BalancingFeesSummaryReportSearchParams","FlowingGasBalancingFeesSummaryReportService","forPdfRequest","BalancingFeesSummaryReportRequest","dataContainer","tier1Total","createTierDetail","tier2Total","tier3Total","tier4Total","cumulativeTier1Total","cumulativeTier2Total","totals","BalancingFeesSummaryReportTotalRow","BalancingFeesSummaryReportRow","tierDetails","TierDetail","balancingFeesSummaryReportRow","balancingFeesSummaryReportTotalRow","BalancingFeesSummaryDailyTabComponent","enterpriseMnemonicSortValue","findEnterpriseMnemonic","dailySearchResults","operator","findLocationName","tier1Excess","tier1Fee","tier2Excess","tier2Fee","tier3Excess","tier3Fee","tier4Excess","tier4Fee","BalancingFeesSummaryCumulativeTabComponent","BalancingFeesSummaryReportComponent","flowingGasBalancingFeesSummaryReportService","balancingFeesSummaryReportTabs","queryAllEnteprises$","queryAllLocations$","getBilledBalancingFeesReportRows$","getBalancingFeesSummaryReportRows","queryServerTimeData","queryFlowingGasBalancingFeesSummaryReport","getSearchParams","setEnterpriseMnemonic","setLocationName","timeOfLastSearch","StorageTransportationBalanceSummaryParams","DateTimeFormatPipe","includeSeconds","use24HourClock","StorageTransportationBalanceSummaryComponent","startBillingMonth","endBillingMonth","getMaxMonth$","summaries$","queryMonthlySummaries","getBillingProcessStatus","queryMonthlySummary","allocationAndBalancingProcess","allocationAndBalancingStatus","l","onStartBillingMonthChanged","onCustomerSelectionChanged","MeasurementRow","stationType","StageMeasurementUploadParameters","StageMeasurementsComponent","uploadStagingMeasurements","FlowDirection","Receipt","Delivery","Bidirectional","AllDirections","SingleDirections","ReceiptOnly","DeliveryOnly","PdaMethod","Whole","Prorata","Methods","PdaInstructionsSearchParams","pdaMethods","flowIndicators","serviceRequesters","editingDisabled","editRowChangeTracker","PdaInstructionChangeTracker","originalValues","date1","date2","compareDates","pdaMethod","pdaMethodHasChanged","expiryGasDayHasChanged","pdaInstruction","serviceRequester","srContract","transactionalFlowIndicator","ReplacePdaInstructionsModel","ReplacePdaInstructionsComponent","instructionsToBeReplaced","callingComponent","dataToSave","duplicateRecords","callingComponentSaveData","locationIsThreaded","isThreadedLocation","confirmationModal","performSave","yesClicked","PdaInstructionEventHistorySearchParams","StorageLimit","storageLimit","limit","injectionOverrun","endDateIsEditable","AccountInjectionLimitService","loc","buildStorageLimit","returnArr","withdrawalLimit","AccountWithdrawalLimitService","arr","buildWithdrawal","withdrawal","paths","associatedBillableService","secondaryFuelLocations","associatedBillableServices","accountInjectionLimit","initialize","pipelineSystemId","isZeroTaxRated","palAgreementType","NominationGroupLocation","isPrimaryHub","isShortNoticeHub","isHubBalanced","targetNomGroupId","stsBillableServiceOption","isTransportation","isTboTransportationFor","isValidPath","billableServiceOptions","isTransportationFuel","parentNominationGroup","parentBillableServiceOptions","billableServiceType","hasInjectionOption","hasInjectionLimit","hasWithdrawalLimit","isPrimaryPath","children","nominationGroupHierarchy","child","isTransportationFor","isTransportationFuelFor","isTransportationVariance","isFuelVariance","isConfirmationVariance","isParkAndLoan","isMultiTitleTransfer","isInventoryTransfer","isTboTransfer","isTboFuel","isCustodyTransfer","isSystemLinepack","distinctBillableServiceIds","orderedNominationGroups","nominationGroupHierarchies","func","orderedNomGroups","secondaryLocation","nominationType","isNominationType","quantities","secondaryLocations","nominationGroupPath","isPathType","nominationGroupLocation","nominationGroupPathQuantity","nominationGroupPathId","NominationGroupGasAccount","nominationGroupGasAccount","NominationNomGroupService","serviceOptions","join","parentBusinessRight","childBusinessRight","nomGroupHierarchiesDto","nomGroupHierarchies","pdaInstructions","effectiveDay","instructions","pdaInstructionsEventHistory","eventPerformed","ediFileId","lastModByUserId","lastModDateTime","PdaInstructionsService","queryRequest","pdaInstructionToDelete","PdaInstructionsComponent","nominationEnterpriseService","nominationEnterpriseEnrichmentService","nominationNomGroupService","pdaInstructionsService","allowedRoles","deniedRoles","allowed","denied","isFutureDated","accountingLocation","instruction","calculateCellValue","lookup","forPDALocations","earliestBillingMonth$","dateResponse","enterpriseCache$","loadPdaLocations","gasDay$","serviceRequesters$","getEnterprises","getAllHubNomGroups","accountingLocation$","queryAccountLocation","queryPdaInstructions","asPdaInstructionsQueryRequest","calculateStatus","allInstructions","getPdaInstructionsCurrentlyInEffect","queryNomGroupNamesByBusinessRights","serviceRequesterName","srContractName","counterparty","effectiveGasDayCsvFormat","expiryGasDayCsvFormat","dxTextBox","ev","matchingNomGroups","cellValue","setAccountValue","isReceiptLocation","isDeliveryLocation","newEffectiveDate","prepareCellEnterpriseId","prepareCellNomGroupId","prepareCellTransactionalFlowIndicator","prepareCellPdaMethod","sorting","delayedCellValidateAndFocus","gridInstance","setCellFocus","editCell","isDeleteDisabled","performDelete","DeletePdaInstruction","possibleDups","existing","newRecord","FindDuplicateRecords","displayCurrentDuplicateMessage","displayRows","replacePdaInstructionsModal","newEffectiveGasDayIsLater","CreatePdaInstruction","UpdatePdaInstruction","buildEventHistoryQueryParams","isPdaAndX12Location","FlowingGasMonitorSearchParams","MessageTypeEnum","messageTypes","InvoiceBusinessMessagesSearchParams","IdName","FlowingGasActivityMessageService","messageDateTime","messageType","activityMessage","FlowingGasMonitorComponent","flowingGasActivityMessageService","messageTypes$","MESSAGE_TYPES","activities$","getActivities","activityMessages$","getActivityMessages","activityMessages","isDateTime","PARAM_MESSAGE_DATE_TIME","PARAM_ACTIVITY","messageTypeStrings","PARAM_MESSAGE_TYPE","notUsed","ConfirmationService","eventHistoryEventId","createPostBody","beforeConfirmationRequestId","confirmationRequest","confirmationHistoryRequest","confirmationEventHistoryRequest","PdaInstructionEventHistoryComponent","confirmationService","loadLocations","queryPdaInstructionEventHistories","asPdaInstructionEventHistoryQueryRequest","eventHistories","isGasDayRangeValid","queryForEdiFile","PdaInstructionEdiRow","headerReferenceId","requesterDuns","documentReferenceNum","recipientQualifier","recipientDuns","preparerQualifier","preparerDuns","issueDate","statementDateTime","contactName","contactPhone","detailReferenceId","beginFlowDate","beginFlowTime","endDate","endTime","transactionTypeCode","locationDrn","locationDrnQualifier","trackingNumber","downstreamContractNumber","downstreamPartyQualifier","downstreamPartyId","upstreamContractNumber","upstreamPartyQualifier","upstreamPartyId","serviceRequesterContract","serviceRequesterQualifier","serviceRequesterId","UploadPdaInstructionsParameters","fileRows","EdiTestHarnessService","UploadPdaInstructionsComponent","ediTestHarnessService","uploadPdaInstructions","LocationImbalanceReportSearchParams","detailTabIndex","GasDayStatusCode","GasDayClosed","OfoState","ofoValue","CriticalDay","NonCriticalDay","LocationImbalanceReportCsvBuilderService","imbalanceByLocationDtos","accumulatedBalance","authorizedSwingQuantityLower","authorizedSwingQuantityUpper","imbalanceByGasDayDtos","adjustment","locationImbalanceDetailDtos","nominatedInEnergy","inEnergy","nominatedOutEnergy","outEnergy","locationMeasurement","locationImbalanceAdjustmentDtos","beforeInEnergy","afterInEnergy","beforeOutEnergy","afterOutEnergy","ImbalanceByLocationDto","imbalanceByLocationDto","imbalanceByGasDay","locationImbalanceReportDto","activeOfoWatchCount","anyImbalanceByLocation","LocationImbalanceDetailBaseDto","LocationImbalanceDetailDto","locationImbalanceDetailDto","apply","gasTransactionAdjustmentSummaryDto","locationImbalanceDetailReportDto","FlowingGasLocationImbalanceService","FlowingGasGasDayStatusService","gasDayStatus","lastTimeMeasurementAllocationRun","NppDataBase","source","netPipelinePosition","closingLinepackQuantity","targetLinepackQuantity","linepackAlert","ofoState","lowAsqLimit","highAsqLimit","operationalInformation","isLatest","endOfGasDay","NppDataService","fromDto","nppData","fromNppData","EmailSubscriptionComponent","nominationEmailSubscriptionService","emailSubscriptionService","getEmailSubscriptionResource","getSubscriptionForEvent","isCurrentlySubscribed","json","buildUpdateRequest","updateSubscription","finalize","subscriptionMessage","controls","updateValueAndValidity","submit","cancel","emailChanged","LocationImbalanceReportComponent","locationImbalanceReportCsvBuilderService","flowingGasLocationImbalanceService","flowingGasGasDayStatusService","nppDataService","loadLocationDetailReport","showDetails","loadGasDayDetailReport","loadAdjustmentReport","npp","nppDatas","sign","borderWidth","border","fontWeight","textAlign","getCustomerName","buildImbalanceByLocationCsv","buildImbalanceByGasDayCsv","buildLocationImbalanceDetailCsv","detailSearchResults","buildLocationImbalanceAdjustmentCsv","queryGasDayValues$","queryGasDayValues","getGasDayServerTime$","getGasDayServerTime","PARAM_GAS_DAY","PARAM_SHOW_DETAILS","PARAM_DETAIL_TAB_INDEX","locationNames$","getGasDayStatus","GetDisplayName","queryNppData","sorted","queryLocationSummaryDetail","locationImbalanceDetailReport","queryLocationSummary","locationImbalanceReport","accountsCustomerSearchParams","getGasDayRangeDefault","gasDayDisabled","NppDataSearchParams","ViewNppDataComponent","editors","linepackAlerts","ofoStates","minSearchGasDay","minAddGasDayDate","previousGasDay","getOfoStateDisplayText","getNppDataDefaults","nnpDataDefaults","endOfGasDayExists","saveNppData","createOrUpdateNppData","queryNppDataDefaults","defaults","TrendComplianceSearchParams","FlowingGasTrendComplianceService","TrendComplianceComponent","flowingGasTrendComplianceService","getTrendComplianceData","trendCompliance","customerData","authorizedSwingQuantityLow","authorizedSwingQuantityHigh","csvOrderedData","OfoStatus","PENDING","ACTIVE","nextStatuses","CANCELLED","EXPIRED","toJsonNoTimeZone","shipper","complianceByGasDay","expiryDateTime","expiryNoticeDateTime","expiryStartOfGasDay","shipperEnterpriseId","shipperMnemonic","shipperEnterpriseMnemonic","watch","activationDateTime","shippers","reviveDates","ofoOrders","order","referenceId","ofoType","complianceRequirement","OfoShipperSelectionInfo","watchReferenceId","OfoMaintenanceService","ofoDetailMinGasDaySource","BehaviorSubject","ofoDetailMinGasDay$","ofoUpdateSource","ofoUpdate$","ofoAddShipperSource","ofoAddShipperNotice$","ofoQueryType","ofoWatches","w","newOfoWatches","newOfoOrder","ofoOrder","ofoWatch","ofoWatchShipper","ofoOrderShipper","shipperName","complianceData","imbalanceMsg","cd","actionString","imbalanceMessage","checkForImbalance","closedGasDay","dataType","curGasDay","QueryShippersInActiveWatch","activeWatches","watches","shipperStatus","confirmAlreadyActiveShipper","enrichedWatches","enterpriseShortName","selectedOption","OfoType","OPERATIONAL","SHIPPER_IMBALANCE","OfoSearchByType","OfoComplianceRequirement","WITHIN_ASQ","WITHIN_CRITICAL_DAY_ASQ","searchByType","selectedOfoType","Watch","Order","referenceNumber","isSearchByTypeGasDayRange","refPrefix","substr","ofoTypes","ofoComplianceRequirements","ofoSearchParams","showWatchSection","showOrderSection","shipperSelectionInfo","refIdPlaceholder","numericSuffixTooltipPrompt","hasWatches","hasOrders","searchResultWatches","searchResultOrders","GlobalVars","hiddenExpiryStart","ErrorService","getLastErrorReferenceNumber","lastErrorReferenceNumberMessage","nestedError","exceptionMessage","getNestedError","buildMessage","referenceNumberMessage","buildReferenceNumberMessage","handleError","statusCodeNumber","addInfoMessage","OfoWatchShipperGridRow","selectedForWatch","ofoWatchShippers","selectedShippers","complianceRequirements","ofoWatchStatuses","NewOfoWatchModalComponent","ofoMaintenanceService","ofoWatchCreated","modalIsActive","dataSubmitted","preselectShippers","confirmed","submitNewOfoWatch","getErrorMessageFromErrorResponse","submitOperationalWatch","submitShipperImbalanceWatch","successMessage","createOfoWatches","closeModal","buildOfoWatchShipperData","ofoShipper","complianceByDate","minComplianceDate","trendComplianceData","fromComplianceCustomerData","watchShipper","preventedShippers","watchComplianceByDate","shipperComplianceData","unselectableReason","selectedForOrder","nonCompliantByAsq","preventedShipperIndex","findIndex","ps","NewOfoOrderModalComponent","ofoOrderCreated","submitNewOfoOrder","createShipperImbalanceOrder","createOfoOrder","orderData","shipperData","queryOfoWatch","shippersInActiveOrders","activeWatchShippers","fromOfoWatchShipperData","OfoShippersBaseComponent","statusOnInitialEdit","complianceByDayOnInitialEdit","allowComplianceByDateChange","availableShipperAccounts","extraShippers","expireFromParentMsg","cancelFromParentMsg","$minDaySubscription","$addShipperSubscription","available","addShipper","addShipperInfo","refId","availableShippers","notificationStatus","expiryNotificationStatus","getPermissibleStatuses","toJSON","newChoice","shipperEnterpriseShortName","shipperInfo","allCurrentShipperInfo","statusNames","lastActiveShipper","getNumShippersWithStatus","editBtnId","editBtn","getElementById","noShipperSelectedOnAdd","disabledByNoChange","cannotExpireLastActive","cannotCancelLastActiveOrPending","saveBtnId","doAdd","doUpdate","doUpdateWithConfirmation","targetStateName","account","doAddShipperWithUserFeedback","updateFunction","err","take","announceOfoUpdate","queryConfirmationData","tcd","OfoWatchShippersComponent","enableEditing","updateOfoWatchShipper","addFunction","addOfoWatchShipper","getNumShippersMatchingStatus","commonAddShipper","availableWatchShippers","ofoWatchReferenceId","confirmActiveShippersInActiveWatches","onEditorPreparing","onInitNewRow","OfoPenaltyComponent","OfoOrderShippersComponent","updateOfoOrderShipper","addOfoOrderShipper","availableOrderShippers","QueryShippersInActiveOrder","activeInAnotherOrder","ss","checkIfActiveInAnotherOrderWithFeedback","notActive","checkIfImbalanceExistsWithFeedback","nonComplianceExists","ofoOrderReferenceId","onCellPrepared","OfoMaintenanceComponent","orderStatuses","watchStatuses","expandResultsAfterSearch","isEditingOrder","statusOnInitialOrderEdit","isEditingWatch","statusOnInitialWatchEdit","extraShippersForWatchByRef","extraShippersForOrderByRef","csvFileHeaders","csvFileColumns","subscribeToOfoUpdates","mergeMap","_detailUpdateMsg","performSearchWithoutParamUpdate","customerEnterprises","PARAM_SEARCH_TYPE","PARAM_CUSTOMER_ID","isSearchByTypeRefId","PARAM_OFO_TYPE","PARAM_REFERENCE_ID","asNullableGasDay","onOfoTypeChanged","ofoSearchType","queryCustomerEnterprises","queryOfos","queryTrendCompliance","queryShippersInActiveOrder","queryShippersInActiveWatch","ofoWatchesGridExpander","toggle","ofoOrdersGridExpander","newOfoWatchModal","watchStatus","isActiveOrPending","activeShippers","hasSelectableShipper","canCreateOfoWatch","newOfoOrderModal","updateSimpleOfoWatch","clearWatchEditMode","saveActiveWatch","doOfoUpdateWithConfirmation","imbalanceInfo","imbalance","shipperEnterprise","ofoData","buildOfoConfirmationMessage","clearOrderEditMode","issueOfoWatch","editWatchCancelClicked","commonEditorPreparing","initialEditStatus","saveDisabledCommon","updateSimpleOfoOrder","saveActiveOrder","editOrderCancelClicked","enrichmentResults","penalties","shipperExcessQuantities","xs","ofoOrderShipperId","toPromise","setDetailMinGasDay","shipperStatusesInOrders","shipperStatusesInWatches","shippersInActiveWatches","addShipperAllowedCommonChecks","currentShippers","activeShippersIds","populateAllCurrentShipperInfo","announceOfoAddShipper","watchRefId","activeWatchShippersIds","orderRefId","currentOrderShipperIds","availableOrderShipperIds","sid","_$event","ofoRefIdPrefix","config","pruneHeaders","headersToPrune","columnsToPrune","now","pruneCsvConfigForExternalUser","exportGridAsCsv","ofoWatchesDataGrid","slice","ofoOrdersDataGrid","grid","ofoStatus","asqLimitDisplayValue","complianceByGasDayCsv","gasDayCsvFormatter","issueDateTimeCsv","csvFormatDateTime","expiryStartOfGasDayCsv","createDateTimeCsv","expiryDateTimeCsv","onOfoWatchCreated","onOfoOrderCreated","OfoPenaltyReportSearchParams","OfoPenaltyReportService","effectiveBillingMonth","overrides","penaltyOverrides","OfoPenaltyOverrideUpdateDto","orderReferenceId","billableExcessQuantity","overrideComment","BillingMonth","OfoPenaltyOverrides","OfoPenaltyReportRequest","OfoPenaltyOverridesRequest","OfoPenaltyReportComponent","ofoPenaltyReportService","billingProcessFinal","userHasExportChargesCapability","queryPipelineService$","queryPipelines","gasDayRequest$","queryOldestBillingMonth$","queryOpenBillingMonth$","queryPreliminaryBillingMonth$","updateCustomerSelection","getSelectedMonthBillingStatus","recipients","pipelineSystems","getOfoPenaltyData$","getOfoPenaltyData","queryOfoPenaltyReport","exportOfoPenalty","penaltyExportResults","asOfGasDay","adjustmentType","calculatedExcessQuantity","averagePrice","threeByAveragePrice","charge","shipperDisplayName","getOfoPenaltyExport","penaltyExportCsv","affectedMonth","adjType","receipt","delivery","qtyType","taxPct","tollCdn","tollChange","totalChange","additionalComments","before","isInEditMode","invoiceFinal","allocationBalancingComplete","OfoPenaltyOverrideSearchParams","OfoPenaltyOverrideComponent","PARAM_AFFECTED_BILLING_MONTH","postOfoPenaltyOverrides","EDITABLE_FIELDS","field","oninput","getPipelines$","getEnterprises$","buildRequest","getInvoiceStatus$","getAllocationBalancingStatus$","getPenaltyOverrides$","queryOfoPenaltyOverrides","getServerTime$","rawCsvData","latestCalculatedExcess","affectedBillingMonthChanged","billingMonthChanged","OfoCreditReportType","SUMMARY","DETAILS_BY_SHIPPER","DETAILS_BY_ORDER","BillingYear","billingYear","invalidCreditSummaryParameters","invalidCreditDetailsByShipperParameters","invalidCreditDetailsByOrderParameters","ofoReferenceId","appliedBillingMonth","OfoCreditReportService","SimpleOfoCreditDetailExportDto","ofoOrderReferenceNumber","SimpleOfoCreditSummaryDto","clearInvoiceBillingMonth","ofoCreditSummaryId","ofoExpenseAmount","initialComplianceGasDay","expiredEffectiveStartOfGasDay","OfoCreditDetailsExportRequest","OfoCreditSummaryRequest","OfoCreditSummaryComponent","ofoCreditReportService","invoicedBillingMonth","sortOfoReferenceNumber","canViewCreditReportByOrder","getOfoReferenceNumber","isSummaryType","performReset","queryOfoCreditSummaries","parts","creditSummary","initialComplianceGasDayCsv","expiredEffectiveStartOfGasDaySort","expiredEffectiveStartOfGasDayCsv","totalPenalties","ofoExpense","totalCredit","calculationStatus","orderId","InvoicingOfoCreditService","reviveMonth","creditYear","OpenBillingMonth","OfoCreditDetailsByShipperComponent","invoicingOfoCreditService","creditDetailsToExport","hasCreditDetailExports","exportingCreditDetailsMessage","creditDetailExportForCustomerName","isDetailsByShipperType","export$","queryOfoCreditDetailExport","creditDetails","exportCreditDetailByShipperToCsv","getAppliedBillingMonth$","getAppliedBillingMonth","dataToExport","creditAmount","selectedCustomer","getAppliedBillingMonthForCreditYear","OfoCreditDetailsByOrderComponent","orderPenalties","orderCredits","orderPenaltiesTmp","orderCreditsTmp","userHasEditCapability","isBillingYearOpen","showPenaltiesSection","showCreditsSection","hasValidationErrors","updateOfoCreditSummary","isDetailsByOrderType","queryAppliedBillingMonth$","queryOfoCreditSummary$","queryOfoCreditSummary","NumberMinValueValidatorDirective","minValue","control","NumberMaxValueValidatorDirective","maxValue","OfoCreditReportComponent","creditChargesExportHeaders","creditChargesExportColumns","PARAM_BILLING_YEAR","PARAM_OFO_REFERENCE_ID","getDefaultBillingYear","creditSummaries","creditDetailsByShipper","creditDetailsByOrder","setMinMaxGasDay","currentYear","earliestBillingYear","setBillingProcessStatus","setupBillingYears","openBillingMonthAllocBalancingFinal","billingYears","searchJobs","updateCustomers","queryOfoCreditManualAdjustments","NppAdjustmentExportSearchParams","NppAdjustmentExportService","NppAdjustmentExportComponent","nppAdjustmentExportService","getGasDayStatusRange$","ofoPenaltyCount","queryNppAdjustmentExportData","exportItems","saveNppAdjustmentExportItemsToCsv","CSV_FILE_HEADERS","CSV_FILE_COLUMNS","FlowingGasRoutes","canDeactivate","InvoiceMonitorModel","openBillingMonthLaterThanFirstYear","ofoCreditAppliedInOtherMonthMsg","showApplyOfoCredits","showAppliedOfoCredits","InvoiceAccountingStatusService","InvoiceMonitorComponent","invoiceAccountingStatusService","pipelineSettingMapService","hasWriteCapability","isCgl","convertedStatus","isManualChargesComplete","invoiceBillingProcessRequest","manualChargesComplete","updateBillingProcessStatus","isInvoicePrintingComplete","invoicePrintingComplete","close","oldestBillingYear","getInvoiceProcessStatus$","getInvoiceProcessStatus","getInvoiceAccountingStatus$","accountingProcessStatus","getOfoCreditAppliedBillingMonth$","ofoCreditAppliedBillingMonth","ofoCreditAppliedThisMonth","ofoCreditAppliedInOtherMonth","addAppliedBillingMonth$","postAppliedBillingMonth","applyInvoiceBillingMonthUpdate$","deleteAppliedBillingMonth$","deleteAppliedBillingMonth","updateRequest","simpleNominationGroups","filteredNominationGroups","invoiceGroupDisabled","PalsBillingDetailReportService","PalsBillingDetailReportRequest","palsBillingDetailReportRow","contractStart","contractEnd","InvoiceRecipientService","NumberOrAllFormatPipe","PalsBillingDetailReportComponent","invoiceRecipientService","invoiceBillingProcessService","palsBillingDetailReportService","priorBillingMonth","temporarilyStoreGasMonth","applyRunReportAsFilterToNomGroups","isCustomerSelected","queryPalsBillingDetailReportPdf","savePdfFile","queryOpenBillingMonth","queryOldestBillingMonth","PARAM_RUN_REPORT_AS_TYPE","PARAM_INVOICE_GROUP","PARAM_NOMINATION_GROUP_IDS","queryBillingProcessStatus$","getPALsBillingDetailRows$","getPALsBillingDetailRows","queryInvoiceRecipientsForBillingMonthRange","deriveInvoiceGroupsFromNomGroups","queryPalsBillingDetailReport","onRunAsReportChanged","onInvoiceGroupChanged","FlowingGasBilledBalancingFeesReportService","BilledBalancingFeesReportRequest","billedBalancingFeesReportRow","iBilledExcessDetailsRow","billedExcessDetailsRow","createTier","BilledBalancingFeesReportComponent","flowingGasBilledBalancingFeesReportService","PARAM_INVOICE_GROUP_ID","checkEnterpriseNomGroupsAndDisplayMessageIfEnterpriseHasNoLdcNomGroups","customers$","billingProcessStatus$","getBilledBalancingFeesReportRows","queryFlowingGasBilledBalancingFeesReport","getMnemonicGivenCustomerId","queryFlowingGasBilledBalancingFeesReportPdf","ViewInvoiceSearchParams","viewRevisionHistory","SortingService","columnValue","getSortStringValue","columnDisplayValue","z","repeat","isNewRecord","Space","Exclamation","MaxNumber","MinDate","addSeconds","MaxDate","NegativeParenthesisTwoDecimalsPipe","getDisplayValue","minimumFractionDigits","maximumFractionDigits","ViewInvoiceComponent","calculateInvoiceGroupSortValue","customSortingFunction","sortingService","getSortDateValue","queryInvoicesForRecipient","invoicesForRecipient","invoicePackages","queryInvoicesForRecipientForAll","expandRow","invoiceSummaryCalls","hasExpandedAll","queryInvoiceSummary","invoicesForPackage","enrichDetailNominationGroups","invoiceSummaries","enrichmentCalls","whenColumnCommandIsExpand","serviceRequests$","getLastInvoiceRecipientInvoiceBillingMonth$","getLastInvoiceRecipientInvoiceBillingMonth","queryInvoicePackages$","queryInvoicePackages","actionsForExternalUser","getAllInvoicePackages","zip","saveZipFile","getDetailsForExport","nomGroupMnemonic","detailTotal","detailCsvCalls","getInvoicePackagePdf","pdf","openNewTabForPdf","getInvoicePackageChargesCsv","saveCsvFile","getInvoicePdf","typeResults","getNumberOfRecordsOfEachType","statusGroups","types","groupItems","groupKey","arNumbers","radioOnChange","OverrideLbaExcessQuantitySearchParams","dailyVarianceResults","cumulativeVarianceResults","commentsResults","sumTier","tierValues","tierValue","override","lbaExcessQuantities","DailyLbaExcessQuantityTabComponent","dailyTier1OverrideSumAsString","dailyTier1OverrideSum","dailyTier2OverrideSumAsString","dailyTier2OverrideSum","dailyTier3OverrideSumAsString","dailyTier3OverrideSum","dailyTier4OverrideSumAsString","dailyTier4OverrideSum","dailyLbaExcessQuantity","tier1Quantity","tier1Override","tier2Quantity","tier2Override","tier3Quantity","tier3Override","tier4Quantity","tier4Override","dataGridComponent","onEditorPrepared","CumulativeLbaExcessQuantityTabComponent","cumulativeTier1OverrideSumAsString","cumulativeTier1OverrideSum","cumulativeTier2OverrideSumAsString","cumulativeTier2OverrideSum","cumulativeLbaExcessQuantity","LbaExcessQuantityService","saveComment","comment","rawExcessOverrides","BaseLbaExcessQuantitySummary","dailyLbaExcessQuantitySummary","cumulativeLbaExcessQuantitySummary","timeStamp","overrideValue","LbaExcessCommentsTabComponent","OverrideLbaExcessQuantityComponent","lbaExcessQuantityService","isDailyTabSelected","getAllDailyLbaExcessQuantities","getAllCumulativeLbaExcessQuantities","postLbaExcessQuantities","disableTabs","saveModal","dailyLbaExcessQuantityTabComponent","cancelEditMode","isCumulativeTabSelected","queryLbaLocations","queryDailyLbaExcessQuantities$","queryDailyLbaExcessQuantities","dailyLbaExcessQuantities","queryCumulativeLbaExcessQuantities$","queryCumulativeLbaExcessQuantities","cumulativeLbaExcessQuantities","queryLbaExcessComments$","queryLbaExcessComments","lbaExcessComments","forLBALocations","cumulativeLbaExcessQuantityTabComponent","enableTabs","modalSaveClicked","InvoicingMessageService","messageContains","FilterPipe","list","InvoiceBusinessMessagesComponent","invoicingMessageService","sortCustomer","ir","sortInvoiceRecipient","PARAM_FROM_BILLING_MONTH","PARAM_TO_BILLING_MONTH","PARAM_MESSAGE_CONTAINS","getActivities$","queryActivities","queryMessages","queryAllActivities","enterpriseMnemonicMap","GenerateChargesSearchParams","GenerateStatus","invoicePackageStatuses","_invoicePackageStatuses","allStatuses","unfinishedInvoicePackageStatuses","FINISHED_STATUS","INVOICE_PACKAGE_STATUS_COMPLETE_WITH_WARNINGS","INVOICE_PACKAGE_STATUS_COMPLETE_WITH_ERRORS","INVOICE_PACKAGE_STATUS_COMPLETE","INVOICE_PACKAGE_STATUS_GENERATION_REQUIRED","INVOICE_PACKAGE_STATUS_PUBLISHED","INVOICE_PACKAGE_STATUS_SUBMITTED","INVOICE_PACKAGE_STATUS_FAILED","GenerateChargesComponent","statusSortValue","selectedInvoicePackages","generateInvoicePackageRequests","updateInvoicePackages","selectAll","cellInfoEvent","queryAllStatuses$","queryAllStatuses","UNFINISHED_STATUS","PARAM_STATUS","queryInvoicePackagesWithStatuses","searchResultsSummaryText","buildSearchResultsSummaryText","invoicePackagesCompleteWithWarnings","invoicePackagesCompleteWithErrors","invoicePackagesComplete","invoicePackagesGenerationRequired","invoicePackagesPublished","invoicePackagesSubmitted","invoicePackagesFailed","completeWithWarningText","completeWithErrorsText","completeText","generationRequiredText","publishedText","submittedText","failedText","searchByInvoiceRecipient","nomGroupDtos","PrintInvoicesStatus","isPrintEnabled","PrintInvoicesSearchParams","_isPrinted","PRINTED","PRINTING_REQUIRED","NumberLessThanFormatPipe","threshold","PrintInvoicesComponent","queryInvoices$","expandableInvoicePackages","ip","hasRevisions","$observable","queryInvoices","canPrint","invoicePackagesToPrint","updateInvoicePackages$","getMergedPackagesPdf$","getMergedPackagesPdf","unselectAll","switchMap","queryAllEnterprises$","PARAM_BILLING_GAS_MONTH","queryInvoicePackageWithPrintStatus","queryInvoicesForPackage","invoices","invoicePackagesPrinted","invoicePackagesPrintRequired","printedText","printRequiredText","PublishInvoicesSearchParams","_statusCounts","countBy","orderBy","PublishInvoicesComponent","publishInvoicePackageRequests","PUBLISHED_STATUS","isPublishableStatus","isPublishEnabled","PARAM_STATUS_GROUP","statusGroup","statTotal","statSummaries","isRecreateDocumentsButtonEnabled","isPassDocumentsButtonEnabled","isSubmitButtonEnabled","AccountsReceivableService","AccountingBatch","loadId","accountingDocument","postPeriod","postYear","amount","hasErrors","hasWarnings","hasManualStatus","documentNumber","lines","AccountingMessage","accountingDocumentLine","generalLedgerAccount","profitCenter","costCenter","orderNumber","AccountsReceivableComponent","invoicingAccountsReceivableService","jobSchedulingJobService","calculateStatusSortValue","calculateStatusForSortAndColoring","STATUS_LOOK_UP","passDocuments","batchDocuments","getAccountingDocumentsCsv","getAccountDocumentsWinshuttle","saveTxtFile","refreshAccountingBatchStatus","accountingBatch","queryAccountingDocuments$","queryAccountingDocuments","accountingDocuments","calculateReportStatistics","updateButtonStatuses","accountingReceivableDataGrid","numberOfPassedDocuments","batchGroups","orderedLoadIds","firstLoadId","prefix","latestLoadId","pendingDocuments","ManualChargePopupModel","CustomerPopupModel","positionTypesForPopup","OptionType","NomGroupPopupModel","serviceClasses","quantityTypes","ViewManualAdjustmentSearchParams","customerSearchResults","nominationGroupSearchResults","forceMajeureSearchResults","display","ManualChargeDefinition","manualChargeDefinition","manualChargeType","companyCode","positionOnInvoice","invoiceSequence","additionalDescription","totalCharge","customerManualCharge","interestRate","unpaidAmount","outstandingFromGasDay","outstandingToGasDay","numberOfDaysInterestCharged","interestAmountPerDay","baseInitialize","nominationGroupManualCharge","taxRate","forceMajeureCredit","contractPrice","ManualChargeSearchRequest","ManualChargeRequest","CustomerManualChargeRequest","NominationGroupManualChargeRequest","InvoicingManualChangeService","extractedCustomerData","nominationGroupData","forceMajeureData","ManualAdjustmentCustomerPopupComponent","manualChargeService","customerPopupModel","okEvent","selectedAdjustmentType","adjustmentTypesForCustomerPopup","newAdjustmentTypeName","position","shouldDisable","isInterestOnLatePayment","isNewAdjustmentType","serviceCall$","saveCustomerManualCharge","buildManualChargeBody","updateCustomerManualCharge","manualChargeBody","newAdjustmentType","invoiceRecipientMnemonic","submitManualCharge","cancelManualCharge","NumericOnlyInputComponent","valueChange","change","ManualAdjustmentNominationGroupPopupComponent","nominationGroupPopupModel","adjustmentTypesForNomGroupPopup","nominationGroupsForSelectedCustomer","locationsForPopup","provincialTaxRates","tollCharge","round","EPSILON","saveNomGroupManualCharge","updateNomGroupManualCharge","nomGroupPopupModel","AccountsInvoiceRecipient","provinceTax","taxCode","InvoicingTaxRateService","ViewManualAdjustmentCustomerComponent","deleteEvent","outstandingFrom","outstandingTo","numberOfDays","interestPerDay","popupModel","setPopupModelProperties","manualAdjustmentCustomerPopupModal","isAccountingProcessComplete","manualAdjustment","deleteCustomerManualCharge","manualCharge","okCustomerPopupEvent","ViewManualAdjustmentNominationGroupComponent","manualAdjustmentNominationGroupPopupModal","deleteNomGroupManualCharge","okNomGroupPopupEvent","ViewManualAdjustmentForceMajeureComponent","ViewManualAdjustmentComponent","pipelineSettingsMapService","invoicingManualChargeService","invoicingTaxRateService","forceMajeureApplies","currentUser","queryManualChargeDefinitions","invoiceRecipientsForSelectedCustomer","getManualChargeDefinitions$","queryTaxRates$","queryTaxRates","queryInvoiceBillingProcess$","queryInvoiceBillingProcess","queryAccountingStatus$","queryAccountingStatus","queryCustomerManualCharges$","queryCustomerManualCharges","queryNominationGroupManualCharges$","queryNominationGroupManualCharges","queryForceMajeureCredits$","queryForceMajeureCredits","queryAccountInvoiceRecipients$","queryInvoiceRecipientsForSelectedCustomer","queryNominationGroups$","querySimpleNominationGroups","provinceTaxes","taxRates","querySimpleNomGroupsForAllBusinessRights","queryInvoiceRecipientsForCustomer","manualChargeDefinitions","adjustmentTypes","customerManualCharges","nomGroupManualCharges","nominationGroupManualCharges","forceMajeureCredits","okNominationGroupPopupEvent","LoadManualAdjustmentParams","manualAdjustmentTypes","ChargeType","extractedCustomerInterestData","extractedNominationGroupData","extractedForceMajeureData","CustomerRow","CustomerInterestRow","NominationGroupRow","ForceMajeureRowData","csvColumns","CUSTOMER","CUSTOMER_INTEREST","NOMINATION_GROUP","FORCE_MAJEURE","CGL_ALL","LoadManualAdjustmentComponent","manualAdjustmentType","uploadCustomerManualCharges","responseResults","uploadNominationGroupManualCharges","uploadForceMajeureManualCharges","uploadCustomerData","uploadNominationGroupData","uploadForceMajeureData","clearCsvData","isCustomer","isCustomerInterest","extractCustomerData","extractCustomerInterestData","extractNominationGroupData","extractForceMajeureData","line","onAdjustmentTypeChanges","browseClicked","DailyDiscretionaryRevenueReportSearchParams","searchTime","billingMonthStatus","DailyDiscretionaryRevenueService","isDetail","serviceGroup","discretionaryQty","pressureQty","discretionaryRevenue","pressureRevenue","rateRiderRevenue","totalRevenue","sortingIndex","serviceGroupSorting","groups","pressureQuantity","revenue","DailyDiscretionaryRevenueReportComponent","dailyDiscretionaryRevenueService","prelimaryBillingMonth","rows$","queryDailyDiscretionaryRevenue","billingMonthStatus$","includeDetails","queryDailyDiscretionaryRevenueCsv","httpResponse","ppaChargeTypes","IsPpaChargeType","DemandCommodityQuantityType","DemandCommodityTransactionType","chargeClasses","chargeTypes","exportTypes","IsExportType","DemandCommodityDetailsReportSearchParams","DOMESTIC","EXPORT","PPA","CURRENT_MONTH","DEMAND","QUANTITY","NON_TRANSPORTATION","ADMIN","ChargeClass","_display","_transactionTypes","DISCRETIONARY","PRESSURE","SURCHARGE","TAXES","MANUAL_ADJUSTMENTS","DISCRETIONARY_TRANSPORT","DISCRETIONARY_NON_TRANSPORT","MANUAL_ADJUSTMENTS_TRANSPORT","MANUAL_ADJUSTMENTS_NON_TRANSPORT","DemandCommodityChargeType","combinations","ALL_CHARGETYPES","LTFP","MDS","EMB","FT","FT_I","FT_NR","FT_NR_D","FT_NR_I","FT_SN","SNB","STS","FT_D","FT_I_O","FT_SN_D","IT","IT_PENALTY","STFT","ST_SN","STS_O","PARK","LOAN","STORAGE_FEES","ABANDONMENT_CHARGE","DIFFERENTIAL_SURCHARGE","UNION_DAWN_SURCHARGE","ColumnOptions","CustomerForCharge","InvoiceRecipientForCharge","invoiceRecipientForCharge","InvoiceGroupForCharge","QueryInvoiceGroupRequest","ExportDemandAndCommodityCsvRequest","InvoicingChargesService","ids","columnOptions","reduce","filters","chargeClass","chargeType","shiftsOnly","isShiftsOnly","transportationType","transportationTypes","fromBillingGasMonth","toBillingGasMonth","DemandCommodityDetailsReportComponent","invoicingManualChangeService","invoicingChargesService","filterChargeClasses","filterChargeTypes","selectedTransactionTypes","minToGasMonth","onFromToGasMonthChanged","invoiceGroupRequest","queryInvoiceGroups","buildExportDemandAndCommodityCsvRequest","exportDemandCommodityCsvFile","queryManualAdjustment$","manualCharges","minFromGasMonth","getAllChargeTypes","getAllColumnOptions","getCustomerForCharges$","getCustomerForCharges","queryInvoiceGroups$","getCustomersForCharges","getInvoiceRecipientsForCharges","receiptLocations","deliveryLocations","manualChargeTypes","convertManualChargeDefToChargeTypes","chargesByPipeline","ALL_BY_PIPELINE","allChargeClasses","newChargeClasses","filteredClasses","classCharges","allChargeTypes","newChargeTypes","filteredChargeTypes","ct","chargeTypeContainsTransactionType","filteredChargeTypesByTxnType","chargeTypeContainsChargeClassAndTransactionType","cc","containsTransactionType","exportClicked","onFromGasMonthChanged","onToGasMonthChanged","onTransactionTypeChanged","onChargedClassChanged","onCustomersChanged","selectAllClicked","searchPerformed","chargeId","Charge","InvoicingClassOfServiceReportService","buildUrlPostParams","createDetail","PostParams","isPPa","classOfServiceDetail","customerLegalName","primaryReceiptLocation","primaryDeliveryLocation","primaryProvince","primaryIsExport","nominatedReceiptLocation","nominatedDeliveryLocation","nominatedProvince","nominatedIsExport","alternateReceiptLocation","alternateDeliveryLocation","assignmentNomGroup","InvoicingClassOfServiceReportRequest","classOfService","totalDemandQuantity","totalCommodityQuantity","totalAmount","categories","createCategory","Row","createRow","commodityQuantity","demandQuantity","ClassOfServiceReportComponent","invoicingClassOfServiceReportService","endBillingMonthMinMonth","endBillingMonthStatus","charges","setNewestBillingMonth","setEndBillingMonthStatus","queryClassOfServiceReport$","queryClassOfServiceReport","queryInvoicingClassOfServiceReport","classesOfService","searchResultCount","nonTransportationSearchResults","totalRevenueSearchResults","taxSearchResults","administrationSearchResults","queryInvoicingClassOfServiceReportDetail","classesOfServiceDetail","searchDetails","generateAndExportDetailReport","subcategory","exportType","queryClassOfServiceDetailReport","ExpectedPaymentSearchParams","dueDate","ExpectedPaymentService","ExpectedPaymentRow","invoiceRecipientArNumber","invoiceRecipientDisplayName","invoiceRecipientShortName","taxAmount","amountBeforeTax","invoiceTotal","ExpectedPaymentComponent","expectedPaymentService","dueDate$","recipientName","beforeTax","CustomerInvoiceParametersSearchParams","customerParametersButtonEnabled","InvoicingCustomerInvoiceParametersService","editCustomerParametersModel","buildBody","isPrintable","saveRequest","isSSSSigned","CustomerInvoiceParametersRequest","customerInvoiceParametersRow","expiryBillingMonth","CommonDataInvoiceContactsService","InvoiceContactsRequest","invoiceContactsRowRow","departmentName","salutation","firstName","lastName","initial","positionTitle","titleExtension","address1","address2","address3","city","countryName","postalZipCode","CustomerInvoiceParametersComponent","accountsCustomerInvoiceParametersService","commonDataInvoiceContactsService","myEnterpriseId","myGasMonth","mySaved","querySimpleNomGroupsForAllBusinessRightsVariant2","accounts","invoiceRecipientEnterprises","invoiceRecipientEnterpriseDisplayName","customerInvoiceParametersRequest","invoiceContactsRequest","queryInvoiceContacts$","queryInvoiceContacts","invoiceContacts","invoiceContactsSearchResults","queryCustomerInvoiceParameters$","queryCustomerInvoiceParameters","customerInvoiceParameters","removeEndOfTimeExpiryDate","queryServerTime$","customerInvoiceParametersRows","goToEditCustomerParametersPage","isSaved","customerParametersClicked","resetHasBeenClicked","YesAndNo","abbr","SaveRequest","yesAndNo","zeroTaxRatedDisabled","InvoicingRoutes","EditCustomerParametersComponent","getEnterprise$","queryEnterprise","queryInvoicingInvoiceBillingProcessService$","addTaxZeroRatedAlert","saveOrUpdateInvoiceParametersService$","updateCustomerInvoiceParameters","insertCustomerInvoiceParameters","goToCustomerInvoiceParametersPage","DetailMeasurementRequest","FlowingGasTestService","currentMeasurementGasDayData","priorMeasurementGasDayData","CapacityAllocationType","CapacityAllocationTypeService","MCA","Manual","TestPageComponent","flowingGasTestService","capacityAllocationTypeService","FullDateTimeFormatNoSeconds","MilitaryFormat","isLoadingResources","currentDate","cctDate","systemDateIsFrozen","currentSystemDate","frozenDateToSet","frozenTimeToSet","frozenCCTDateTime","currentMeasurementGasDay","currentMeasurementGasDayFile","priorMeasurementGasDayFile","configureClock","nominationPipelineGasDay","capacityAllocations","CapacityAllocationTypes","getOne","getLocalTestSettings","setViewModelSystemDate","useMeasurementStagingTable","measurementDataSource","MeasurementDataSource","StagingTable","localTestSettingsPath","dateFormatted","newDateTime","setMenuFrozenClock","response2","clockDate","diff","isFrozenFlag","updateIsSentToMCAForCapacityAllocation","currentMeasurementGasDayExtractedData","extractMeasurementGasDayData","postCurrentMeasurementGasDay","priorMeasurementGasDayExtractedData","gasDayMoment","postPriorMeasurementGasDay","measurementGasDayExtractedData","msg","GmsSoap","saveSettings","HomeService","pageName","SafeHtmlPipe","sanitized","bypassSecurityTrustHtml","HomeViewModel","HomeComponent","homeService","pipelineChange$","getHomePage","getCurrent","setHomePage","pageContent","parseHtml","fileAddress","link","getPdf","$1","$2","ContentEditorComponent","onEditorKeyup","tinymce","selector","elementId","plugins","toolbar1","toolbar2","skin","setup","editor","getContent","setContent","HomeRoutes","EditHomeComponent","loadingEditorContent","refreshEditorContent","pageText","contentEditorComponent","confirm","resetToDefault","pageHasBeenModified","tryToEnableSaveButton","setDirty","AutoBalanceEventsRequest","NominationEvent","abbreviatedName","AutoBalanceLocationPrefix","replacementValue","CreateAutoBalanceLocationNominationEvent","NominationRequested","CapacityAllocation","AutoBalanceHub","AutoBalanceCapacityAllocation","OperatorQuantityEntered","ValidateStandingNom","ValidateITBidFloor","ValidateFirmInjection","ValidateStorageWithdrawal","ValidateFuelRatio","ConfirmationReceived","ScheduledQuantityAdjustment","ImbalanceTransfer","EnrichmentNominationNomGroup","NominationNomGroupEnrichmentService","cachedEnrichmentObj","AutoBalanceLogService","nominationNomGroupEnrichmentService","eventGuid","logs","autoBalanceHubLogs","transactionLogs","AutoBalanceEventsComponent","autoBalanceEventService","getLatestGasDayCycle","latestGasDayCycle","setGasDayAndGasCycleCode","GasDayParam","GasDayCodeParam","nonStsGasCycles","defaultNaesbGasCycleCode","autoBalanceEventsRequest","getEvents","autoBalanceEventsDataGrid","defaultEarliestNonScheduled","TitleTransferReportService","titleTransferReportRequest","buildParameters","counterPartyStartGasDayCycle","counterPartyEndGasDayCycle","titleTransferIds","titleTransferIdsToMatch","mismatchedOnly","TitleTransferReportRequest","TitleTransferReportComponent","titleTransferReportService","cdr","loadNomGroups","isOnChange","queryNomGroupNamesHierarchy","queryTitleTransferReportPdf","buildPdfQueryParams","selectedMismatchedIds","selectedBuys","counterPartyNomRequestId","selectedSells","matchUpTitleTransferRequests","invalidRequests","hasSelectedBuys","hasSelectedSells","TitleTransferReportSearchParameters","setDefaultCustomerForExternalUsers","loadEnterprises","launchedGasCycles","defaultNonStsGasDayCycleStatusesForNomination","loadTitleTransferReports","buyTransfers","sellTransfers","fullView","enterpriseSearchParams","queryAllByPipeline","enrichedEnterprises","queryTitleTransferReports","defaultNaesbEarliestNomWindowOpen","HubBalanceComponent","onLocationChange","canDisableSubmitButton","showHubBalances","hubBalances","toggleHubBalancesClicked","toggleLocations","setUpBalanceData","originalReceiptHubNominationRequests","originalDeliveryHubNominationRequests","inTransactions","outTransactions","hubBalance","sum","current","statusTransactions","failed","pending","mismatched","lockedToShowAll","showAllLocations","_isCellValid","balanceHubSelectedRowKeys","selectedLocations","selectRows","reportParameters","locationChanged","onInitialized","BaseNominationRequestView","components","componentsMap","transportHubComponent","receiptHubComponent","deliveryHubComponent","energyImbalanceComponent","size","addToComponentsIfDefined","TransportHubIndex","ReceiptHubIndex","DeliveryHubIndex","tabIndex","hubComponent","has","NominationRequestsPageViewComponent","undoRow","showTransportationNomRequests","showReceiptHubNomRequests","showDeliveryHubNomRequests","showEnergyImbalanceInstructions","onUndoRow","getComponents","saveEditObservables","refresh","clearFilter","selectSavedRequests","arguments","deselectNewDuplicateKeyRequests","deselectExpiredKeyRequests","clearGridEdits","removeIncompleteRows","isDisabled","isViewOnly","NominationRequestsTabViewComponent","_tabs","_showTabs","availableTabs","buildTabs","idx","hideChildren","Child_Transport","Child_Hub_Receipts","Child_Hub_Deliveries","Child_Balance","LookupItem","nominationGroupCollection","isAssociatedToOneOfTheNomGroups","nominationGroupsForOption","isAssociatedToNomGroup","isStsNominatable","isBiddable","useBillableServicePaths","allowFuelAtAlternateLocation","typeCodeValue","isForCycle","hasInjectionOverrunOption","isExcessCapacity","BillableServiceOptionRequest","BillableServiceOptionService","NominationRequestFields","fuelNominationRequestLocationId","fuelNominationRequestFuel","debitLocationName","creditLocationName","NominationRequestsModel","nominationRequestsComponent","Child_Energy_Imbalance","nomRequestFields","customerHubNomGroups","hubNomGroups","allNomGroups","titleTransferMismatches","imbalanceTradeLocationBalances","childCTNomGroup","lastGasDayCycleStatuses","todaysAllowableGasDay","tomorrowsAllowableGasDay","locations2","nomGroups2","transportationFuelNomGroups","transportationVarianceNomGroups","confirmationVarianceNomGroups","loanNomGroups","parkNomGroups","inventoryTransferNomGroups","tboTransferNomGroups","tboFuelNomGroups","validTransportNomGroups","tboConfirmationNomGroups","validAccounts","billableServiceOptions2","billableServiceNominationGroupMap","copyModel","pageView","hideZeroes","newRowAdded","loadOperatorLocationsOnly","transportationNominationRequests","transportDataSource","transportUndos","transportSelections","receiptHubNominationRequests","receiptDataSource","receiptUndos","receiptSelections","deliveryHubNominationRequests","deliveryDataSource","deliveryUndos","deliverySelections","energyDataSource","energyImbalanceUndos","energyImbalanceSelections","transportFilter","receiptFilter","deliveryFilter","energyFilter","deliveryHubSelectedRowKeys","receiptHubSelectedRowKeys","transportHubSelectedRowKeys","energyImbalanceSelectedRowKeys","canEnableEditMode","disableNomReqEntries","debugging","columnWidths","columnEditorPopupWidths","anyRows","getSelectedIds","isPendingChanged","checkThatRowHasBeenClicked","filteredRows","anyRowsIn","rankFieldMaxLength","UndoRecord","beginGasCycleCode","beginGasDay","endGasDayNextGasDay","beginGasDayMaxGasDay","endGasDayNextGasDayMinGasDay","defaultEndGasDay","selectedGasCycle","beginGasDayCycle","endGasDayNextGasDayMaxGasDay","defaultEndGasDayCycle","updateCopyModalProperties","setEndGasDayNextGasDay","_gasCycleCode","_customerId","_gasDay","isEffectiveFor","accountChanged","otherObj","numberOfMismatchedBuys","numberOfMismatchedSells","titleTransferReportDtos","groupByLocations","mismatchedCounterPartyTitleTransfers","numberOfBuys","numberOfSells","nomRequestId","ImbalanceTradeRequestsService","requestType","imbalanceTradeRequest","requestToDelete","selectedRequests","requestsToMatch","nominationTransactionType","ediNumber","isLinePack","isTbo","isTransport","isConfirmable","NominationTransactionTypeService","NominationRequestsComponent","nominationRequestService","billableServiceOptionService","imbalanceTradeRequestsService","nominationTransactionTypeService","hidePage","recordsBeingProcessed","saveChanges","saveNominationRequests","downloadNominations","datagridIsProcessingData","retry","verifySubmitNominationRequest","submitNominationRequests","locationIsNonThreaded","doesCurrentNomGroupHaveLdcVariance","selectedNomGroup","undoObj","undos","isTransportationNomination","isReceiptTransaction","isDeliveryTransaction","receiptTransportNominationOriginals","deliveryTransportNominationOriginals","undoIndex","receiptUndo","deliveryUndo","transportHub","deliveryHub","receiptHub","nominationRequestPageView","nominationRequestTabView","receiptToAdd","receiptToRemove","deliveryToAdd","deliveryToRemove","clones","transportNominationClones","fuel","updateSelectedRows","transportToAdd","transportToRemove","original","isDownloadDisabled","customerIsPipelineLegalSignorOrEnterprise","loadNomGroupsForCustomer","unsavedStatuses","getView","newOrIncompleteInTransportNomRequests","newOrIncompleteReceiptHubNominationRequests","newOrIncompleteDeliveryHubNominationRequests","updatedEnergyImbalanceInstructions","canSetUpGasDayCycles","gasDayFromSearchParams","postLoadSearchResources","queryAllNominationTypes","updateGasCycleStatuses","updateNominationTransactionTypes","hasValidCustomerSelected","unsavedTransportNomRequests","unsavedDeliveryNomRequests","unsavedReceiptNomRequests","isAfterSaveOrSubmit","selectFirstTabWhenCustomerHasChanged","getTransportationRequests","getTransferRequests","supportingDataServiceCalls","getTboConfirmationNomGroups","queryNomGroupDetails2","getNominationLocations","loadTransportInformation","loadReceiptHubInformation","loadDeliveryInformation","setupEditMode","billableServiceLookupList","toLookupList","organizeNomGroups","resetFilteredNomGroups","resetFilteredTypesOfService","hubBalanceComponent","balanceHubComponent","isReadOnlyMode","isOneDayAdjustmentCapable","isFullAdjustmentCapable","iif","getImbalanceTradeLocationBalances","queryTitleTransferMismatches","hasRoleWithoutPipeline","isYesterdayOrTodayOrFutureGasDay","clearFilters","resetUndoRecords","isSingle","contains","queryAllHubNominationGroupNames","undoRecords","selections","customerHubNomGroup","modelNomGroups","stsBillableService","transportationFor","transportationFuelFor","confirmationVariance","inventoryTransfer","validTransportNoms","createMap","filteredBillableServiceOptions","tryToSaveEditingData","getSelectedReceiptRequestsNotPassed","getSelectedDeliveryRequestsNotPassed","transportRequests","getSelectedTransportRequestsNotPassed","enrichRequestsWithGasDayCycleObjects","clearIssueDateTime","unsavedNewReceiptSystemRequests","getUnsavedNewRequests","unsavedNewDeliverySystemRequests","unsavedNewTransportSystemRequests","deleteNominationRequests","setBeginGasDay","beginGasDayMinGasDay","loadResourcesForCopyModal","isAccountExpired","copyModal","copySelectedNominationRequests","newBeginGasCycleCode","defaultEarliestNomWindowOpen","changeEndGasDay","defaultGasDayCycleStatusesForNomination","hasExpiredAccount","expiredReceiptRequests","getExpiredSelectedReceiptTransactions","getSelectedReceiptRequests","expiredDeliveryRequests","getExpiredSelectedDeliveryTransactions","getSelectedDeliveryRequests","expiredTransportRequests","getExpiredSelectedTransportTransactions","getSelectedTransportRequests","updateReqStartAndEndGasDayCycle","navigationSuccessful","gasDayCycleStatusesToCopy","setPipelineGasDayProperties","focusFirstTab","refreshGrids","anyPendingStsRows","anyNewOrRevisedRows","anyFailedRows","anySavedRows","anySavedRowsThatAreNotSelected","anyRevisedSelectedEnergyImbalance","exclusions","tt","applyFilters","selectedLocationTransportFilter","selectedLocationReceiptFilter","selectedLocationDeliveryFilter","hubLocation","view","queryTransportationRequests","fuelNoms","transportNom","queryTransferRequests","queryAllDetails2","queryNomGroupDetailsByBusinessRights","transportNomRequestResponse","seedTransNoms","resetSelections","createDataSource","recordKey","receiptUpdateObj","deliveryUpdateObj","fuelUpdateObj","prop","prop2","cloneReceiptStartGasDayCycle","cloneDeliveryStartGasDayCycle","cloneFuelStartGasDayCycle","deliveryNomRequestResponse","seedNoms","offSystemRequests","modifiedTransportRequests","modTrans","reverseLocations","modFuelReq","record","updateObj","receiptNomRequestResponse","dataStore","trans","energyImbalanceInstructionResponse","savedTransactions","transportSavedTransactions","receiptSavedTransactions","deliverySavedTransactions","updateSavedStartAndEndGasDayCycles","transportResults","recResults","delResults","checkDuplicateNoms","requestCollection","forTransport","listOfDups","hasDup","dupFound","toCheck","toCompare","compareBusinessKey","packageIdsAreEqual","numToCopy","numExpiredAccounts","accountExpiredMessage","allRequestsExpired","transportListOfExpired","deliveryListOfExpired","receiptListOfExpired","onLoadingChanged","isLoading","legalSignorEnterpriseCid","nominationRoles","reportDtosFilteredByCounterPartyAndGasDay","counterPartyTitleTransferMismatches","queryImbalanceTradeLocationBalances","balances","locationBalancesRequireRefresh","nominationTransactionTypes","receiptHubTransactionTypes","ntt","deliveryHubTransactionTypes","some","dst","downloadClicked","copySelectedNominations","onCopyBeingGasDayChanged","hasPendingActivities","includeNominationExceptions","includePendingNominations","NominationWindowService","ResetStatus","ResetCycleModel","ResetCycleDialogComponent","nominationWindowService","onOk","resetNominationWindow","getAvailableResetStatuses","resetStatuses","AutoBalanceService","PriorDayActivityService","InsecureItemDirective","GasDayMonitorComponent","autoBalanceService","priorDayActivityService","getPipelineSetting","custodyCheckForFailed","submitHubBalancing","appendDateAndCycleToMessage","hasFailedRequests","openGasCycleStatus","closeGasCycleStatus","scheduleGasDayCycle","unscheduleGasDay","resetCycleModal","setSearchParamsGasDayRange","FromGasDayParam","ToGasDayParam","IncludeNominationExceptions","IncludePendingNominations","nominationExceptions$","pendingStsNominations$","queryNominationExceptionCounts","queryPendingStsNominationCounts","getLocationGasCycleStatusExceptionCounts","getTransactionCountsAwaitingCapacityAllocation","nominationExceptionCount","locationExceptionCount","awaitingCapacityAllocationCount","pendingStsNominationCount","matchingNomException","nomException","matchingLocationException","locationException","matchingAwaitingCapacityAllocationCount","awaitingCapacityAllocation","matchingPendingStsNomsCount","gasDayCycleStatusesDataGrid","processActivities","toTextDisplayFormat","isValidFromGasDay","isValidGasDayRange","autoBalanceCustodyCheck","autoBalanceHub","scheduleGasDay","okResetEvent","BaseDatagridHandler","previousControl","nextControl","tabMode","TabMode","Horizontal","blurCallback","onEditorKeyDown","isCellEditable","NAME","breakEvent","updateDateCellValue","updateDefaultCellValue","processingKey","focusedCellPosition","getCurrentCell","isArray","totalCount","moveDown","moveUp","moveShiftTab","moveTab","nextRow","focusOnCell","couldEdit","moveShiftTabHorizontal","moveShiftTabVertical","nextCol","getVisibleColumns","getNumberOfRows","moveTabHorizontal","moveTabVertical","onCellClick","previousRowIndex","getPreviousRowIndex","rowWasChanged","currentRowKey","currentCell","_controllers","keyboardNavigation","_focusedCellPosition","valueChangeEvent","oldGasDay","newGasDay","getKeyByRowIndex","dataGridIsInEditMode","cellIndex","columnAllowsEditing","_editingController","_editRowIndex","Vertical","TransportationSummaryTabViewComponent","onDataChanged","Tab_Transportation","getCurrentGrid","getTransportationDataGrid","Tab_NonTransportation","getNonTransportationDataGrid","executeActionOnAllTabs","resetSortOrderAction","copy","executeActionOnCurrentTab","copyAction","saveEditDataAction","currentGridReference","gridReference","invoker","transportationDatGrid","nonTransportationDatGrid","TransportationStatus","SentMca","CapacityAllocated","TransportationSummarySearchParams","varianceOnly","searchResultsCount","nonTransportationResultsCount","totalNomQty","totalTcplQty","copyButtonDisabled","autoBalanceButtonDisabled","submitButtonDisabled","editModeDisabled","forceEditMode","authorizableQuantities","authorizedQuantity","previousGasCycleAuthorizedQuantity","nominatedQuantity","hasAuthorizableQuantities","scheduledEpsq","authorizableQuantity","nominatedVersusAuthorizedQuantity","TransportatonSummaryRequest","AuthorizeDailyTransferTransactionsRequest","AuthorizeDailyTransferTransactionsData","dailyTransactionId","AuthorizeDailyTransportationTransactionsRequest","AuthorizeDailyTransportationTransactionsData","NominationTransactionService","setUrlSearchParamsForTransportationOrTransferSummary","setUrlSearchParamsForBfpTransportationSummary","authorizeDailyTransportationTransactionsRequest","authorizeDailyTransferTransactionsRequest","TransportationSummaryComponent","nominationTransactionService","submitting","typedParamsSet","formatUserAndGasDay","baseDatagridHandler","searchHasBeenPerformed","modelDirty","isCopyButtonDisabled","isAutoBalanceButtonDisabled","defaultGasDayCycleStatuses","setIsEditModeAvailable","numberOfRowsAffected","transportationSummary$","queryTransportationSummaries","transportationSummary","processTransportationSummary","nonTransportationSummary$","queryNonTransportationSummaries","nonTransportationSummary","processNonTransportationSummary","gasCycleStatus$","gasDayCycleStatusReturned","unAuthorizedCount$","queryCountOfNotCapacityAllocatedTransactions","unAuthorizedCount","setAuthorizedUserAndDate","isHubNotBalanced","scheduledQuantity","transportationSummaries","queryTransferSummary","nonTransportationSummaries","newestAuthTransaction","authorizedByUserId","authorizedDateTime","authorizedDate","head","lastAuthorizedBy","authorizedBy","simpleGasDayCycleStatus","gridResults","fullTypeOfService","typeOfService","setNominatedVersusAuthorizedQuantity","hasVariance","transferSummary","haveAllAuthorizedValuesBeenFilledIn","hasNoQuantitiesToAuthorize","numberOfRecordsUpdated","applyAction","autoBalanceCapacityAllocation","refreshGasDayCycleStatus","userHasWriteAccess","hubIsBalanced","updateTransportationSummaryEditMode","hasCapacityAllocatedQuantities","submitData","authorizeTransactions","dataConflict","uniqueTransportation","transactionId","nonTransportationDetails","uniqueNonTransportation","numRecordsUpdated","authorizeDailyTransportationTransactions","authorizeDailyTransferTransactions","buildTransferRequest","showAuthorizedViewIfRecordsWereUpdated","showAuthorizedView","uniqueTransactions","dataToSubmit","resetModelState","modelDataChanged","checkAllAuthQuantitiesHaveBeenProvided","queryTransportationSummaryReportPdf","isEditModeAvailable","ConfirmationStatus","Exceptions","AwaitingConfirmation","SendCR","Confirmed","AutoBalancing","Balanced","ConfirmationRequestFactory","SendCrRequest","BaseConfirmationDetailsRequest","ConfirmationDetailsHistoryRequest","ValidateConfirmationCsvRequest","confirmationDetailCsvRows","ConfirmationEventHistorySearchRequest","CustodyTransferReportRequest","DailyConfirmationTransaction","ConfirmationRequestDetail","Tuple","ConfirmationHistoryRequest","ConfirmationMonitorComponent","varianceCountHasRedVariance","edi","CreateSendCrRequest","sendCrConfirmation","downloadConfirmationRequestPdf","hasSelectedRows","locationGasDayCycleStatus","canSelect","cycleAutoBalanceDisabled$","shouldDisableAutoBalanceLocation","cycleAutoBalanceDisabled","getAllLocationGasCycleStatuses","operatorShortName","statusName","confirmationMonitorDataGrid","queryAllLocationGasCycleStatuses","noVariance","varianceCount","autoBalanceAllLocations","pdfClicked","AutoBalanceLocationRequest","BaseCsvModel","filteredLaunchedGasCycles","timelyOpenGasDayCycle","ConfirmationDetailsSearchParam","hasConfirmationsEntered","windowWidth","confirmationRecordCount","isExternal","pageViewIsInPPAState","isPPAAnalyst","isPPAAdmin","pageIsReadOnly","pageIsUneditable","dataWasUploaded","isUploading","uploadFileName","uploadedData","uploadErrors","dthValue","tcDeliveryTransaction","scheduledEnergy","deliveryRequestDetail","confirmedEnergyGj","confirmedEnergyDth","scheduledEnergyDth","convertDthToGj","tcReceiptTransaction","receiptRequestDetail","serviceRequestorEnterpriseId","tuple","gridItem","item2","item1","flowRate","scheduledFlowRate","deliveryVariance","calculateDeliveryVariance","receiptVariance","calculateReceiptVariance","deliveryVarianceDth","calculateDeliveryVarianceDth","receiptVarianceDth","calculateReceiptVarianceDth","originalItem","UpdateVariances","sortColumn1","sumRow","net","csvRows","csvRow","enterpriseDunsNumber","serviceRequesterDuns","tcContract","usdsContract","usdsDuns","locationIsConfirmedWithPackageId","canAddReceiptOperatorQty","canAddDeliveryOperatorQty","confirmationDetailsComponent","locationIsDth","receiptOperatorQty","deliveryOperatorQty","_nomGroupId","resetQuantities","checkForCreateableEnergy","newTuple","rowToDevelop","updateRowForAddingOperatorQty","tupleToDevelop","getTupleToDevelop","updateTupleForAddingDeliveryOperatorQty","confirmationTransactions","requestDetail","deliveryOperatorQtyGj","receiptOperatorQtyGj","deliveryOperatorQtyDth","receiptOperatorQtyDth","includeDthColumns","includeFlowRateColumns","headerPrefix","valueOrEmptyString","createHeaders","createColumns","ConfirmationDetailCsvRow","toCsvFormatWithNoDashes","deliveryTCQuantityGj","deliveryOperatorQuantityGj","receiptTCQuantityGj","receiptOperatorQuantityGj","deliveryTCFlowRate","deliveryOperatorFlowRate","receiptTCFlowRate","receiptOperatorFlowRate","deliveryTCQuantityDth","deliveryOperatorQuantityDth","receiptTCQuantityDth","receiptOperatorQuantityDth","createFromGjUpload","accountSummaryCsvModel","ConfirmationDetailsComponent","decimalPipe","displayNamePipe","editCellStyle","summaryCellStyle","summaryRowStyle","redVarianceStyle","goToFirstTab","isLocationVirtual","highlightNumberCellContents","confirmationDataGrid","append","currentValue","checkForValueChanging","onCellValidating","onRowUpdated","calculateSummaryRow","calculateNetRow","canSubmitConfirmationRequest","submitConfirmationRequest","sendCrClicked","sendCr","isSendCrButtonDisabled","isSubmitButtonDisabled","onLocationSelectionChanged","filterGasCycles","onGasCycleSelectionChanged","filterLocations","setupDataGridColumns","validateDeliveryOperatorQtyInGjGreaterThanOrEqualToScheduledEpsq","validateOperatorQtyGreaterThanOrEqualToScheduledEpsq","validateDeliveryOperatorQtyInDthGreaterThanOrEqualToScheduledEpsq","authorizedValue","validateReceiptOperatorQtyInGjGreaterThanOrEqualToScheduledEpsq","validateReceiptOperatorQtyInDthGreaterThanOrEqualToScheduledEpsq","isRowEditable","showSts","CalculateSummary","calculateNet","csvBuilder","locationShowFlowRateOnConfirmation","confirmationQuantityLabel","createFromUpload","createFromFlowRateUpload","createFromDthUpload","addConfirmationDetailPopup","locationControl","valueAccessor","submitControl","gridBlurCallback","baseRequest","CreateBaseConfirmationRequest","baseRequestWithActualCycle","historyRequest","CreateConfirmationHistoryRequest","correctQueryConfirmation","queryConfirmationRequest","queryConfirmationRequestHistory","disableAutoBalanceLocation$","flag","disableAutoBalanceLocation","getLocationGasCycleStatus","queryConfirmationResponseInfo","processSearchResults","setReadonlyAndPageEditableState","confirmationResponseInfo","readOnly","isStsGasCycle","errorCount","locationIsConfirmedWithAgaEdi","resetUpload","confirmationStatuses","addNoLocationsFoundMessage","setDefaultGasCycle","queryNomGroupDetails$","queryNomGroupDetails","resetAndShow","changeLocationGasCycleStatus","preserveExistingData","singleLocationYesNoModalOptions","modalOption","runAutoBalanceLocation","hasBlankReceiptOperatorValue","hasBlankDeliveryOperatorValue","autoBalanceLocation","getRowToDevelop","addDeliveryToRow","addReceiptToRow","buildGasCycleForRequest","createCsvRowFromGridRow","csvModel","buildCsvModel","CreateValidateConfirmationCsvRequest","validateCsv","numErrors","csvUploadErrors","validateFileUploadExtension","isEOD","canViewForPPA","itemCount","buildExternalPageParams","isButtonDisabled","allowedStates","convertGjToDth","existingDetailRow","getMatchingDetailRows","receiptConfirmation","deliveryConfirmation","pos","f1","f2","rowOptions","isOperatorValueValidComparedToEpsq","notAnyVariance","anyVariance","CreateAutoBalanceLocationRequest","inputEvent","editorPreparedEvent","oldValue","confirmationTransactionsItem2Array","originalData","originalConfirmationRequest","requestGasDayCycleInEffect","effectiveGasCycleId","convertTupleToGridItem","submittedBy","newItem","PreserveWithExistingData","confirmationValuesEntered","createKeyForRequestDetail","CreateFromTuple","UpdateBasedOnFlowDirection","existingDetailRows","insert","showUploadSection","nonStsCycles","isLocationStsCyclesConfirmed","addDetails","addModalBusinessKeyInputChanged","onMouseWheel","AccountSummaryRequest","hubAccountId","isDebitTransaction","AccountSummaryService","gasCycleDisplayCode","nomTcplVarianceOnly","allAccounts","filteredAccounts","detailedSearchResultsHaveHistory","showDetailGrid","accountsSelectDisabled","jsEndTime","jsStartTime","emptyCustomerSpecificHubAccounts","updateAccountTypeOptions","rebuildAccountOptions","customerAccountTypes","distinctHubAccountTypes","getDistinctHubAccountTypes","AccountType","AccountSummaryReport","accountSummaryReport","summaryOpeningBalance","summaryInNominatedQuantity","inNominatedQuantity","summaryInScheduledQuantity","inScheduledQuantity","summaryOutNominatedQuantity","outScheduledQuantity","summaryOutScheduledQuantity","summaryVariance","summaryClosingBalance","pageTitle","isDetailedReport","includeHistory","createFileName","getSQText","formatZeroValueColumns","userIsExternal","abbreviatedEvent","columnsToShowZeroes","AccountSummaryDetailsService","buildSearchParams","accountSummarySummaries","accountSummaryDetails","balance","buildHistoryParams","BusinessRightService","AbbreviateEventPipe","AccountSummaryComponent","accountSummaryService","customerHubAccountBalanceDetailsService","businessRightService","setToDefaultCustomer","detailsDataGridOnRowExpanding","getCustomerHubDetailHistory","displayCustomerShortName","lastRenderedCustomerShortName","displayAccount","lastRenderedAccount","loadSpecificHub","loadLocation","onChildGridCellPrepared","customerChangedUpdateDropdowns","setAccountType","allAllowableBusinessRights","summarySearchResults","detailedSearchResults","groupIndex","summaryCells","cell","flattenDeep","each","commit","hidden","hasHistory","quantitySortOrder","parseParamList","gasCycleStatuses$","enterprises$","accountTypes$","getAccountSummaryBusinessRights","defaultSelectedCustomer","getCustomerHubAccountBalanceDetails","customerHubAccountDisplayValue","updateAccountTypeAndAccountDropDowns","getCustomerHubAccountBalanceSummary","queryAccountSummaryDetails","accountDetails","queryCustomerHubAccountBalances","queryAccountSummaryHistory","lastSearchParamsGasCycleCode","foundHistoryRecordsToDisplay","scheduledCycle","createdDateTimeString","csvDataWithHistory","historyIndex","historyRecord","BuildDetailsCsvModel","BuildSummaryCsvModel","columnCount","sortingColumns","co","emptyHubAccounts","savePdf","queryAccountSummaryDetailReportPdf","queryAccountSummarySummaryReportPdf","ConfirmationHistorySearchParams","ConfirmationEventHistoryAtMoment","ConfirmationHistoryComponent","formatGasDay","onGasDaySelectionChanged","buildEventHistoryParams","queryConfirmationHistory","confirmationHistoryDataGrid","historyDto","ConfirmationRequestQuickResponseRow","transactionIdentifier","transactionStatus","errorType","errorCode","UploadConfirmationRequestQuickResponseParameters","confirmationEventId","UploadEdiTestFileEvent","callBackId","UploadEdiTestFileModalComponent","eventData","col","createFileRowObject","dataGridColumns","csvRowData","innerHeight","doFileUpload","updateClicked","UploadConfirmationRequestQuickResponseComponent","modalTitle","setupCsvHeaders","setupDxGridColumns","addDxGridColumn","UploadConfirmationRequestQuickResponse","ConfirmationRequestResponseRow","confirmingPartyQualifier","confirmingPartyDuns","confirmationRequesterQualifier","confirmationRequester","startDate","startTime","cycleIndicator","solicitedOrUnsolicited","operatorQuantity","contractualFlowIndicator","UploadConfirmationRequestResponseParameters","UploadConfirmationRequestResponseComponent","UploadConfirmationRequestResponse","ConfirmationEventHistorySearchParam","defaulted","ConfirmationEventHistoryModel","allGasCycles","ConfirmationEventHistoryComponent","userInitiated","queryForSentConfirmationRequestPdf","enabled","eventRow","ediFileSent","eventId","uploadQuickResponse","uploadConfirmationResponse","handleActiveRouteForGasDayCycle","handleActiveRouteWithNoParams","queryConfirmationEventHistory","gasCycleService$","location$","NominationExceptionsSearchParams","NominationExceptionStatus","Passed","NominationExceptionsModel","NominationExceptionsComponent","setupForm","GasCycleCodeParam","StatusParam","CustomerIdParam","enterprisesCall$","nominationEnterprises","enrichedNominationEnterprises","gasDayCycleStatusesCall$","gasDayCycleStatusCollection","queryNominationExceptions","enrichedNominationExceptions","nominationExceptionsDataGrid","simplifiedTaxZeroRated","cycleCode","customerNomGroupId","RowCellNavigationService","tabList","cellElements","fromColumn","toColumnCaption","colIndex","eq","StorageLimitGridBase","rowCellNavigationService","isRecordInFuture","newTabList","editTabListCurrent","editTabListFuture","filterOutEscapeKey","focusNextTab","inserted","navigateToNextTab","dateIsInTheFuture","topButtonsEnabled","gridInEditMode","disableTopButtons","enableTopButtons","$invalidCell","_$element","attr","e2","previousValue","locationList","editedRowIsValid","columnId","resetInvalidDate","parent","dxValidator","tabElements","keyDownColumns","tabElement","InjectionsTabComponent","accountInjectionLimitService","_currentEditingItemLocations","baseOnEditorPrepared","onInjectionLimitSelectionChanged","deleteStorageLimit","storageLimits","injectionsDataGrid","finishEdit","editRowClicked","onRowPrepared","createStorageLimit","getApplicableInjectionAccounts","reject","availablePoolingsInjectionAccounts","extractObject","updateStorageLimit","newLimit","otherLimitsWithSameAccount","firstOverlappingLimit","StorageLimitMaintenanceSearchParams","StorageLimitMaintenanceModel","poolings","uhfLimits","withdrawals","availablePoolingsWithdrawalAccounts","availableWithdrawalAccounts","nomGroupsForEnterprise","allLocations","poolTypes","PoolType","PoolTypes","Pooling","PoolingService","poolName","poolType","buildPooling","pooling","PoolingTabComponent","poolService","editTabListWithdrawalFuture","editTabListWithdrawalCurrent","newTabWithdrawalList","suspendValueChanged","confirmResultYes","confirmResultNo","poolAccounts","poolingsDataGrid","createPooling","updatePooling","performUpdate","performCreate","poolTypeString","newPooling","otherPoolingsWithSameAccount","findOne","firstOverlappingPooling","haystack","v","locationsNeeded","validLocations","poolingAccounts","setGridEditBox","deletePooling","WithdrawalTabComponent","withdrawalService","withdrawalsDataGrid","createWithdrawal","updateWithdrawal","newWithdrawal","otherWithdrawasWithSameAccountAndLocations","deleteWithdrawal","AccountUhfLimit","accountUhfLimit","contractReference","AccountUhfLimitService","buildUhfLimit","uhfLimit","UhfTabComponent","accountUhfLimitService","uhfLimitsDataGrid","createUhfLimit","updateUhfLimit","createLimit","existingLimitWithSameKey","deleteLimit","StorageLimitMaintenanceComponent","withdrawalLimitService","poolingService","addInjection","addWithdrawal","addPooling","addUhf","getApplicableSTSAccounts","getPools","enrichmentServiceCalls","getWithdrawals","getAccountUhfLimits","queryEnterpriseNamesByServiceOption","getAccountInjectionLimits","getAvailablePoolingsInjectionAccounts","getAvailablePoolingsWithdrawalAccounts","getUhfLimits","injectionLimitsTab","poolingTab","withdrawalTab","uhfLimitsTab","areThereUnsavedChanges","autoBalanceEvents","AutoBalanceDetailsSearchParams","AutoBalanceDetailsComponent","getGasCycles","orderedAutoBalanceData","depth","orderedTransactionLogs","nominatedGasCycleId","hubLocationName","hubNomGroupMnemonic","hubVariance","timeStampForCsv","rank","reasonCode","nominatedGasCycle","originalQty","availableToCut","newQty","percentChange","loopCounter","loopDetectionCounter","autoBalanceEventName","EventGuidParam","getLogs","autoBalanceDetailsDataGrid","getEventName","getHubNominationGroups","guid","onGasCycleChanged","UploadNominationRequestsRow","pipelineDuns","customerIdentifier","customerAccount","beginDate","beginTime","upstreamIdentifier","upstreamContract","downstreamIdentifier","downstreamContract","qty","fuelLocation","transportRank","deliveryReceipt","nominationTrackingIdentifier","UploadNominationRequestsService","postWithDataResponse","UploadError","validationError","uploadNominationRequestsResponse","errorRows","errorRow","SignalRConnectionState","SignalRMethods","NotifyUploadNominationRequestsCompleted","SignalRService","nominationsResourceService","nomsCompleteEvent","connection","connected","$","hubConnection","useDefaultPath","qs","proxy","createHubProxy","disconnected","stop","UploadNominationRequestsComponent","uploadNominationRequestsService","signalRService","changeDetectionRef","uploadInProgress","uploadComplete","submittingNoms","fileEncoding","fileToRead","onFileLoaded","disconnect","nomUploadCompleteSubscription","handleNominationRequestsCompletedEvent","subscribeToNomCompletedEvent","connect","sendIt","uploadNominationRequests","buildFormattedErrors","addMessageWithProgress","linesSaved","testHarnessConvert","WaiverType","formattedName","BiDirectional","TitleTransferWaiversSearchParams","waiverTypes","minExpiryGasDay","_waiver","_visible","WaiverState","Expired","Active","Future","Waiver","expirable","NoMax","QueryWaiversRequest","SaveWaiverRequest","DeleteWaiverRequest","waiver","ExpireWaiverRequest","titleTransferWaiversServiceDto","serviceRequesterEnterpriseId","waiverType","buyMax","sellMax","waiverState","TitleTransferWaiversService","queryWaiversRequest","waiverDtos","waiverDto","buildWaiver","saveWaiverParams","deleteWaiverParams","expireWaiverParams","TitleTransferWaiversComponent","titleTransferWaiversService","valueOption","disabledOption","placeholderOption","parseGasDay","waiversExpiryPopupModel","datePickerEditorFormat","formatGasDayInEditor","saveWaiverRequest","buildWaiverFromCellInfo","counterPartyId","getCounterPartyEnterprises","counterPartyEnterprises","verifySelectedCounterParty","externalUserServiceCalls$","getServiceRequesterEnterprises","serviceRequesterEnterprises","filteredNomGroupHubs","verifySelectedServiceRequester","serviceRequesterEnterprises$","allNomGroups$","externalUserCalls$","orderedEnterprises","queryTitleTransferWaivers","enrichResults","counterPartiesExcludingCurrentRequester","enterprisesWithoutCurrentServiceRequester","titleTransferWaivers","buildFromWaiver","buildExpireRequestFromWaiver","expire","saveWaiver","newWaiver","setMinAndMaxGasDays","validateEditorText","sellElement","buyElement","updateAbilityToEditBuySellBasedOffWaiverType","newDate","sellDisabled","buyDisabled","getDefaultExpiryGasDay","isDeletable","isExpirable","displayBuySellValue","matchingWaiverType","markParamsOutOfSync","okToExpireWaiver","ConfirmationResponseSearchParam","ConfirmationResponseComponent","setGasDayAndGasCycleCodeAndLocation","LocationIdParam","queryConfirmationResponse","confirmationResponseDataGrid","stsGasCycles","isCycleNomWindowClosed","isPreviousCycleSchedule","PendingStsNominationsSearchParams","hubAccounts","locationInfo","isSelected","LocationInfo","PendingStsNominationsService","hubAccountIds","PendingStsNominationsComponent","pendingStsNominationsService","si","summaryItems","gasCycleStatusCollection","isCycleClosedForNominations","isPreviousCycleScheduled","getPendingStsNominations","pendingStsNominationsResponse","pendingStsNominations","nomination","typeOfServiceWithOption","locationNameDisplayValue","summaryNomVariance","priorScheduledVariance","nomRequestStatus","uniqBy","noms","flatten","queryPendingStsNominations","pendingStsNominationsDataGrid","setGasDayAndGasCycleCodeAndCustomer","CustomerParam","defaultEarliestOpenStsGasCycle","mttAccountDisplayValue","hasVarianceAtAnyLocation","selectedHubIds","rejectPendingStsNominations","approvePendingStsNominations","transactionReasonCodeChangedDictionary","showGrid","mttHubAccountId","scheduledQuantities","ScheduledQuantityRequest","ScheduledQuantityUpdateRequest","ScheduledQuantityUpdateDetail","ScheduledQuantityService","scheduledQuantityUpdateDetails","ReductionReasonCode","AOK","PCC","HB","DSR","USR","TTR","CPR","IPA","ScheduledQuantityAdjustmentsComponent","scheduledQuantityService","onRowUpdating","inScheduledQuantityChangedValue","outScheduledQuantityChangedValue","reasonCodeChangedValue","updateReasonCodeOnAssociatedTransactions","outNominatedQuantity","validateInScheduledIsNotBlank","validateOutScheduledIsNotBlank","validateInScheduledQtyLessThanOrEqualToInNomQty","validateOutScheduledQtyLessThanOrEqualToOutNomQty","validateScheduledQtyIsAnInteger","accountCustomerHubControl","currentRowData","transportTransaction","dailyFuelTransactionId","recalculateFuel","fromToLocation","isCycleScheduled","hasRoleToSubmit","buildAccountTypes","scheduledQuantityDetails","scheduledQuantityUpdateDetail","getScheduledQuantityForUpdate","updateScheduledQuantities","reasonCodeLookupList","getScheduledQuantities","allowUpdating","queryScheduledQuantities","fuelTransactionId","fuelTransaction","defaultLatestScheduled","checkIfUnchanged","updateFuelReasonCode","ImbalanceTransferTransactionsSearchParams","allowableBusinessRights","imbalanceTransfer","debitGasAccountType","creditGasAccountType","ImbalanceTransferService","imbalanceTransferDtos","imbalanceTransferTransaction","ImbalanceTransferTransactionsComponent","imbalanceTransferService","cellTemplate","cvNominationGroups","tvarNominationGroups","fuelNominationGroups","palNominationGroups","mttNominationGroups","ctNominationGroups","solpNominationGroups","fvNominationGroups","saveImbalanceTransferTransaction","buildImbalanceTransferTransactionFromCellInfo","onValueChangedSetup","newDebitNomGroupValue","validDebitNominationGroups","getNominationGroupsForAccountType","pageSize","newCreditNomGroupValue","validCreditNominationGroups","queryNomGroupNamesByBusinessRights2","getApplicableImbalanceTransferAccounts","nominationGroupsForEdit","transportationFuel","parkAndLoan","multiTitleTransfer","custodyTransfer","systemLinepack","fuelVariance","MinimumItBidRateSearchParams","MinimumItBidRateModel","MinimumItBidRateService","minimumItBidRateSearchParams","MinimumItBidRateComponent","minimumItBidRateService","queryMinimumItBidRates","bidRates","searchResultFor","queryForPdf","NominationReportsService","custodyTransferRequest","CustodyTransferReportSearchParams","CustodyTransferReportComponent","nominationReportService","defaultMonth","setGasMonthSearchParams","queryCustodyTransferReport","TransportationSummaryCsvBuilderService","transportationTransactionDetailDtos","simplifiedTazZeroRated","BfpDailyTransportationSummaryCsvBuilderService","summaryDto","numberPipe","numberLessThanFormatPipe","gasDayCsvFormat","bidPriceCsvFormat","nominatedQuantityCsvFormat","authorizedQuantityCsvFormat","scheduledQuantityCsvFormat","varianceCsvFormat","nominatedCountCsvFormat","nominatedCount","nominatedQuantityLessThan10000CsvFormat","nominatedQuantityLessThan10000","authorizedQuantityLessThan10000CsvFormat","authorizedQuantityLessThan10000","nominatedCountLessThan10000CsvFormat","nominatedCountLessThan10000","nominatedQuantityGreaterThan10000CsvFormat","nominatedQuantityGreaterThan10000","authorizedQuantityGreaterThan10000CsvFormat","authorizedQuantityGreaterThan10000","nominatedCountGreaterThan10000CsvFormat","nominatedCountGreaterThan10000","bfpServiceCategorySortOrder","getBfpServiceCategorySortOrder","bfpServiceCategory","BfpDailyTransportationSummaryComponent","bfpDailyTransportationSummaryCsvBuilderService","exportCsvClicked","bfpServiceCategorySortValue","BfpDailyTransportationSummaryRequest","bfpAvailableGasDays","availableGasDays","queryBfpDailyTransportationSummary","processBfpDailyTransportationSummaryResults","queryBfpTransportationSummary","percents","utilizationTypes","ContractUtilizationSearchParams","createPercentRanges","createUtilizationTypes","PercentRange","UtilizationType","ContractUtilizationReportRow","primaryReceiptLocationId","primaryDeliveryLocationId","overUnderGJ","overUnder","percent","displayVal","ContractUtilizationSearchRequest","ContractUtilizationService","utilizationType","ContractUtilizationComponent","contractUtilizationService","setExternalUser","getContractUtilizationReport","ordered","overs","unders","queryContractUtilization","CreatePathSetRequest","CreatePathRequest","createPathRequest","reportPath","reportPathTempKey","pathSetName","aPathSetRequest","pathsToPush","aPathRequest","EditITBidFloorAverageReportPath","ReportsItBidFloorAverageService","selectedPathSetId","ItBidFloorPathSetPopupModel","pathSets","editPathSet","ITBidFloorAverageReportComponent","reportsItBidFloorAverageService","addPathSetPopup","myMaxGasMonth","GasMonthParam","PathSetIdParam","nominationLocations$","pathSets$","queryPathSets","getMaxPathSetId","myMaxPathSetId","pathSet","getBidFloorAverage","getPathsForSelectedPathSet","editITBidFloorAverageReportPathSet","selectedPathSet","newPathSetName","placeholderName","addPathSetModal","appendDateToString","toRequest","savePathSet","len","stringToTest","substring","isDate","queryPaths","getPathNameForReceiptandDeliveryLocationId","receiptId","deliveryId","deliveryName","receiptName","selectedReceiptLocationId","selectedDeliveryLocationId","selectedPathsComponent","pathSetIds","retrievePathSetClicked","onPathSetChanged","onSaveClicked","addRandDLocationsToPathSetClicked","removeRandDLocationsToPathSetClicked","imbalanceTradeRequestsComponent","Child_Buys","Child_Sells","imbalanceTradeRequestFields","ImbalanceTradeRequestFields","counterPartyNomGroups","selectableRequestIds","buyImbalanceTradeRequests","buyDataSource","buySelections","buyUndos","sellImbalanceTradeRequests","sellDataSource","sellUndos","sellSelections","buySelectedRowKeys","sellSelectedRowKeys","deleteClicked","buySelectableRequests","counterPartyImbalanceTradeRequestId","sellSelectableRequests","selectableRequests","externalImbalanceTradeDeadlineTime","previousGasDayCycleStatuses","isGasDayAllocated","_mismatchedOnly","counterPartyEnergy","counterPartyGasDay","counterPartySubmittedBy","BaseImbalanceTradeRequestsView","buyIndex","buyImbalanceTradeComponent","sellIndex","sellImbalanceTradeComponent","ImbalanceTradeRequestsPageViewComponent","showBuyImbalanceTradeRequests","showSellImbalanceTradeRequests","ImbalanceTradeRequestsTabViewComponent","ImbalanceTradeRequestsComponent","buyHub","sellHub","imbalanceTradeRequestPageView","imbalanceTradeRequestTabView","selectedRowKeys","selectedRowsData","isBuyTransaction","isSellTransaction","resetEditMode","getServerDateTime","isUserRoleModifyAllowed","saveImbalanceTradeRequests","newOrIncompleteBuyRequests","newOrIncompleteSellRequests","setupPipelineGasDay","loadImbalanceTradeNomGroupsForCustomer","foundRequest","matchImbalanceTradeRequests","deleteImbalanceTradeRequests","anyRequestsSelected","unsavedBuyRequests","unsavedSellRequests","onEnableTabs","getImbalanceTradeRequests","getCounterPartyNomGroups","loadBuyInformation","loadSellInformation","loadCounterPartyNoms","setSelectableRequests","queryCounterPartyImbalanceTrade","queryNominationGroupsForImbalanceTrade","onAccountChanged","buyImbalanceTradeRequestResponse","seedRequests","buyImbalanceTradeRequestOriginals","buyRequests","originalBuyImbalanceTradeRequests","sellImbalanceTradeRequestResponse","sellImbalanceTradeRequestOriginals","sellRequests","originalSellImbalanceTradeRequests","buyFilter","sellFilter","queryImbalanceTradeRequests","getSelectedBuyRequestsNotPassed","getSelectedSellRequestsNotPassed","unsavedNewBuyRequests","unsavedNewSellRequests","normalizeRequest","saveImbalanceTradeRequest","getSelectedBuyRequests","getSelectedSellRequests","requestToSave","editRowKey","AvailableCapacityModelSearchParams","hasCalculatedDailyValue","availableCapacities","availableSegments","availableCapacity","availableSegment","AvailableCapacityRequest","AvailableCapacityService","setupRequestBody","availableCapacityDto","segmentId","StringHelpers","AvailableCapacityCsvBuilderService","availableCapacityDtos","AvailableCapacityComponent","availableCapacityService","availableCapacityCsvBuilderService","currentCapacityFlowRate","setCurrentGasCycleStatus","queryAvailableCapacities","unassignedSegments","highlightCellElement","capacity","effectiveGasCycle","page","_args","recalculateDailyCapacity","calculatedCapacity","currentCapacityQuantity","innerHTML","toCommaFormattedNumber","segment","getSegmentTypeFor","segmentType","segmentName","canUpdateSegment","capacityData","createOrUpdateAvailableCapacity","futureCapacityReplaced","calculateDailyCapacity","calculationResult","prelimSqQty","authorizedQuantities","hasAuthorizedQuantities","flowRateAuthorizedTransport","flowRateAuthorized","BaseCapacitySummaryGrid","highlightCellOnFocus","filterOutArrowKeys","nativeHandler","tryToDisableEditing","validateAuthQtyLessThanOrEqualToPrelimSQFlow","capacityAllocationSummaryDataGrid","prelimSchedQty","isAuthorizedValueValidComparedToPrelimSqQty","isReadOnly","removeEditableCellStyle","addEditableCellStyle","TransportationCapacityAllocationSummaryGridComponent","onSummaryCellPrepared","onRowValidating","TransferCapacityAllocationSummaryGridComponent","CapacityAllocationSummaryTabViewComponent","transportationTabLabel","getTransportationCapacityAllocationDataGrid","nonTransportationReceiptTabLabel","getTransferReceiptCapacityAllocationDataGrid","nonTransportationDeliveryTabLabel","getTransferDeliveryCapacityAllocationDataGrid","transportationCapacityAllocationDataGrid","transferReceiptCapacityAllocationDataGrid","transferDeliveryCapacityAllocationDataGrid","activeNomTabIndex","setTabIndex","CapacityAllocationSummaryRequest","CapacityAllocationSummarySearchParams","CapacityAllocationSummaryModel","transferDeliverySearchResults","transferReceiptSearchResults","CapacityAllocationSummaryService","authorizeRequest","authorizeTransportationTransactionsRequest","authorizeTransferTransactionsRequest","CapacityAllocationSummaryComponent","capacityAllocationSummaryService","confirmCanRunCalculateAllocationJob","okToRun","handleResult","authorizeCapacityAllocation","authorizationRequest","newStatus","isJob","anchorShipper","nomCycle","pathRank","primaryReceipt","nominatedReceipt","primaryDelivery","nominatedDelivery","flowRatePrelimSq","prelimSchedQtyFlowRate","flowRatePrelimFuelSq","prelimFuelSchedQtyFlowRate","flowRatePreviousSq","previousSchedQtyFlowRate","flowRateSchedQtyChange","flowRateCalculatedTransport","flowRateCalculatedFuel","flowRateVariance","flowRatePctAuth","flowRatePctAuthorized","dailyAuthorizedTransport","dailyQuantityAuthorizedTransport","dailyAuthorizedFuel","dailyQuantityAuthorizedFuel","dailyPrelimSq","dailyPrelimFuelSq","prelimFuelSchedQty","dailyQuantitySchedQtyChange","dailyQuantityVariance","dailyPreviousSq","previousSchedQty","GenerateTransportationCsvHeader","GenerateTransportationCsvColumns","dailyQuantityAuthorized","GenerateTransferCsvHeader","GenerateTransferCsvColumns","_e","isCapacityAllocationInitiating","isCapacityAllocationCalculating","isCapacityAllocationInitiated","isCapacityAllocationCalculated","uniqueTransportTransactions","uniqueTransferTransactions","uniqueTransfer","authorizeTransportationTransactions","buildTransportationRequest","authorizeTransferTransactions","queryPipelineGasDay","queryGasDayCycleStatuses","transportationCapacityAllocationSummary$","queryTransportationCapacityAllocationSummaries","processTransportationCapacityAllocationSummary","transferCapacityAllocationSummary$","queryTransferCapacityAllocationSummaries","processTransferCapacityAllocationSummary","defaultGasCycleStatus","defaultEarliestNotAuthorized","_numberOfRowsAffected","_expandAll","defaultGasDayCycleStatusesForCapacityAllocation","transferSummaries","capacityAllocationSummary","buildGasCycleStatusForRequest","csvClicked","CapacityAllocationDetailData","CapacityAllocationAggregateDetailsCsvBuilderService","detailData","combinedData","aggregateDetails","processOrder","priority","processType","iteration","CapacityAllocationDetailsAggregateDetailsComponent","detailsModel","CapacityAllocationDetailsAggregatePaneComponent","capacityAllocationAggregateDetailsCsvBuilderService","input","cells","childNodes","CapacityAllocationTransactionDetailsCsvBuilderService","exportData","transactionDetails","CapacityAllocationDetailsTransactionDetailsComponent","CapacityAllocationDetailsTransactionPaneComponent","capacityAllocationTransactionDetailsCsvBuilderService","CapacityAllocationDetailsComponent","queryCapacityAllocationDetails","allocationDetails","enrichTransactionDetail","SegmentProcessOrderQueryRequest","SegmentProcessOrderService","effectiveGasCycleCode","segmentProcessOrdering","CapacityAllocationSegmentOrderModelSearchParams","CapacityAllocationSegmentOrderComponent","segmentProcessOrderService","allowReordering","rowOrderHasChanged","onReorder","performSearchWithLastSearchParams","determineIfReorderingAllowed","querySegmentProcessOrder","capacityAllocationOrder","newSequence","updateSegmentProcessOrdering","_result","visibleRows","toIndex","fromIndex","itemData","NominationRoutes","LoadLocationsComponent","LoadLocationParametersComponent","publishLocationParameters","LoadLocationRelationshipsComponent","publishLocationRelationships","LoadLbaLocationTolerancesComponent","publishLBALocationTolerances","SecondaryLocationsRow","primaryContractReceiptPoint","primaryContractDeliveryPoint","SecondaryLocationsService","SecondaryLocationsViewModel","LoadSecondaryLocationsComponent","loadEndpointService","loadSecondaryLocations","loadSecondaryLocationsReponse","PublishAccountingLocationsModel","PublishAccountingLocationsComponent","publishAccountingLocations","selectedAccountingLocationIds","OMVRelationshipsUploadParameters","OMVRelationshipRow","parentLocationName","childLocationName","FlowingGasLoadOmvRelationshipsService","ManageLocationRoutes","LoadOmvRelationshipsComponent","publishOMVRelationships","ErrorComponent","errorService","back","goToPreviousPage","ServiceUnavailableComponent","filteredBillableServices","allowableBillableServiceIds","_enterprises","_locations","_nomGroupsForEnterprise","_billableServices","hasOnlyOneItem","nomGroupIds","nominationGroupOperationalQuantities","enterpriseDisplayValue","_palSearchResults","nominationGroupPALOperationalQuantities","adjustNomGroupsForChangedParameters","adjustBillableServicesForChangedParameters","selectedNomGroups","billableServiceIdsForNomGroups","enterpriseBillableServiceIds","NominationGroupContractDisplayDto","isTypeTempAssignOut","primaryContractId","contractId","contractStartGasDay","contractEndGasDay","assignorAssigneeEnterpriseShortName","quantityStartGasDay","quantityEndGasDay","createFromTempAssignOut","CounterPartyEnterpriseShortNameField","BillableServiceReportType","AccountContractSummaryCsvBuilderService","hasVolumeDemand","palOperationalQuantity","accountContractPALSReport","injectionResult","withdrawalResult","totalResult","injectionStartGasDay","injectionEndGasDay","withdrawalStartGasDay","withdrawalEndGasDay","totalStartGasDay","totalEndGasDay","NegativeNumberParenthesisFormatPipe","AccountContractSummaryTransportationComponent","accountContractSummaryCsvBuilderService","queryNomGroupContracts","nominationGroupContracts","convertToNominationGroupContractDtos","hasContractAlternatePaths","contractTransportOperationalQuantitiesDataGrid","buildTransportationSummaryCsv","shouldShowVolumeDemand","downloadAccountContractSummaryDetailsCsv","getPublicSiteUri","nominationGroupContractsRequest","queryContracts","enrichAlternatePaths","shouldProcessNominationGroupContract","nomGroupContractDisplayDto","createFromCounterPartyContract","createFromPartyContract","isContractQuantityTypeVolume","AccountContractSummaryParkAndLoanComponent","clearCell","setBackgroundColor","clearBorder","buildPalsSummaryCsv","palSearchResults","BillableServiceService","forReportType","AccountContractSummaryReportComponent","billableServiceService","commonPipelineService","queryNomGroupsForEnterprise","enterpriseChanged","nomGroupChanged","queryCommonPipeline$","queryCommonPipeline","queryPipelineGasDay$","EnterpriseId","NomGroupIds","ReceiptLocationIds","DeliveryLocationIds","BillableServiceIds","onEnterpriseChanged","queryNominationGroupTransportation$","queryNomGroupTransportation","queryNominationGroupParkAndLoan$","queryNomGroupParkAndLoan","accountContractSummaryTransportationComponent","AccountContractSummaryReport","nominationsGroups","enrichedNominationGroups","queryOperationalQuantity","nomGroupOperationalQuantities","isItServiceType","bs","queryParkAndLoanOperationalQuantity","nomGroupPALOperationalQuantities","ContractsAwaitingLinkingSearchParams","contractQuantitiesShown","areQuantitiesEmpty","selectedQuantities","_contractNumbers","_reasons","contractNumbers","reasons","contractAwaitingProcessingDetail","customerDisplayValue","ContractsAwaitingProcessingService","contractResource","includeAllApplicable","linkAccountToContracts","contractNum","reason","LinkAccountToContract","ContractsAwaitingProcessingReportRequest","contractVersion","contractStartDate","contractEndDate","assignorEnterpriseId","assignorContractNumber","assignorAccount","hasVolumeDemandQuantity","isVolumeDemandQuantityValid","volumeDemandQuantityWarning","ContractAwaitingProcessingQuantity","contractAwaitingProcessingQuantity","quantityUom","additionalFilters","ContractNumber","Reason","CustomerAccountParametersService","CustomerAccountParametersRow","updateCustomerAccountParametersModel","isAnchorShipper","customerAccountParametersRow","CustomerAccountParametersSearchParams","UpdateCustomerAccountParametersModel","temporaryAssignment","assigneeEnterpriseId","contractVolumeQuantity","contractQuantity","assignorAccountId","assigneeContractNumber","assigneeAccountId","customerReferenceNumber","contractServiceRequester","contractPartyStartGasDay","contractPartyEndGasDay","contract","linkStartGasDay","linkEndGasDay","MoveContractBody","ContractsService","mneomic","assignorEnterpriseIds","assigneeEnterpriseIds","AccountsJobService","ContractsAwaitingProcessingComponent","contractsAwaitingProcessingService","contractsService","accountsJobService","customerAccountParametersService","addAccountModel","queryAdditionalFilters","invoiceAgentEnterpriseId","createNomGroupFinalState","updateObject","nominationGroupNameDto","addAvailableAccounts","addAccountModal","errMsg","createNomGroup$","createNomGroupInitialState","invoiceAgents$","getAgentRelationships","queryContractServiceRequesters","customerAccountParameters$","getCustomerAccountParameters","invoiceAgents","customerAccountParameters","newAccountModel","onSelectBoxSelectionChangedForColumn","selectOrDeselectRow","queryContractQuantities$","queryContractQuantities","checkForEmptyQuantities","queryContractServiceRequesters$","shouldDisableForUnlinkedAssignorTAssign","doesAccountHaveDefaultValue","linkAccountsToContracts","linkAccountsToContractsThatHasAccountId","verifyAndWarnForDemandDates","shouldSubmitRequest","acceptAccounts","shouldWarn","invalidContracts","loadSelectedQuantities","queryContractNumbers$","queryContractsAwaitingProcessing","getLastContractSync","setAccountsDataSource","preSelectRows","lastContractsSyncDateTime","contractServiceRequestors","queryAccountsForContract","nominationGroupNameDtos","queryCustomerAccountParameters","nonCglValue","recordsWhereAccountHasDefaultValue","rowIndexes","selectRowsByIndexes","queryAccountsDataSource","loadOptions","queryContractAccounts","shouldDisableForMissingVolumeQuantity","availableAccounts","submitAddAccount","Quantity","AccountSearchParams","NewAccountType","palsQuantities","ShipperHub","businessRightsWithContracts","invoiceGroupStartGasDay","invoiceGroupLinkStartGasDay","invoiceGroupEndGasDay","invoiceGroupLinkEndGasDay","isContracted","AccountsService","EditAccountComponent","contractsResourceService","accountsService","invoiceGroupService","accountToEdit","cancelEvent","isPalsAccount","serviceId","lastSearchGasDay","editAccountModel","invoiceGroupStartGasMonth","invoiceGroupEndGasMonth","minEffectiveGasMonth","minExpiryGasMonth","isLinkableToContracts","minInjectionQuantityEndDate","minWithdrawalQuantityEndDate","accountContracts$","queryAccountContracts","hasLinkedContracts","invoiceGroups$","queryInvoiceGroupsForEnterprise","enrichEditAccountModel$","UpdateNominationGroupBody","moveToInvoiceGroupId","newInvoiceGroup","moveToEffectiveGasDay","newInvoiceGroupEffectiveGasMonth","setEndDate","markIsDirty","isFtAccount","submitEditAccount","cancelEditAccount","EditContractModel","addClicked","reservedNewNomGroup","isNewMnemonicEditable","EditContractComponent","contractToEdit","sortBy","queryContractAccountHistory","validateLink","setupModal","moveContract","newLinkedAccountId","newLinkedAccountStartGasDay","searchedGasDay","newLinkedAccountName","newLinkedAccountMnemonic","futureContractLinks","findFutureAccountLinks","accountMnemonics","setupEditModel$","setupModalModel","accounts$","editContractModel","accountLinkStartGasDay","accountLinkEndGasDay","minEffectiveGasDay","maxEffectiveGasDay","editModel","submitEdit","cancelEdit","UnlinkContractModel","UnlinkContractComponent","contractToUnLink","relinkContract","futureAccounts","unlinkContract","setAccountForRelink","validateUnlink","setupModel","unlinkModel","currentAccountMnemonic","currentAccountLinkStart","currentAccountLinkEnd","relinkAccountMnemonic","relinkAccountLinkStart","relinkAccountLinkEnd","ShipperHubType","matchingType","certifiedGasHubTypes","primary","secondary","shortNotice","renewable","createWithName","certified","ViewAccountsReportRequest","ParkAndLoanType","AccountsComponent","nominationsBillableServiceService","accountsBillableServicesService","editAccountModal","unlinkContractModal","editContractModal","billableServicesNotAllowedEdit","buildAddAccountModel","addHubAccountModal","buildParkAndLoanAccountType","isAddingPalsOnCgl","openBillingMonth$","enterpriseCertificates$","queryEnterpriseCertificates","queryHubTypes$","queryShipperHubTypes","queryLocationsForPipeline","hubTypes","enterpriseCertificates","buildNewAccountTypes","parkAndLoanTypes","newAccountTypes","parentAccounts$","queryParentAccounts","gasAccounts$","queryNominationGroupGasAccounts","existingNominationGroups$","queryNominationGroupsForEnterprise","parentAccounts","gasAccounts","existingNominationGroups","canAddAccount","linkedAccounts","isShipperLinePackAccount","isShipperHub","toReturn","showParentAccount","linkedAccountId","showGasAccount","submitHubAccount","submitParkAndLoanAccount","submitNonHubAccount","paramNameGasDay","paramNameEnterpriseId","paramNameIncludeExpired","paramNameBusinessRights","paramNameBillableServiceIds","queryBusinessRights","shipperHubTypes","buildBaseRequest","createHubAccount","createNonHubAccount","createParkAndLoanAccount","queryAccounts","toplevelgrid","selectedBusinessRights","selectedBusinessRightAlternateNames","queryByEffectiveGasDay","queryEnterprise$","queryBusinessRight$","setStartDate","agents","agentEnterpriseDisplayName","enterpriseDisplayName","okEditAccountEvent","cancelEditEvent","clearSelectedAccountType","CustomerCertifiedGasParametersSearchParams","CustomerCertifiedGasParametersComponent","queryCustomerCertifiedGasParameters$","customerCertifiedGasParameters","selectedMnemonic","selectedEnterpriseId","renavigate","getCertifiedHubTypeByName","saveEnterpriseCertificate","deleteEnterpriseCertificate","customerChanged","TemporaryAssignmentSearchParams","TemporaryAssignmentSearchBy","TemporaryAssignmentComponent","fromGasDayValueChanged","assignor","assignorMnemonic","assignee","assigneeMnemonic","assignmentStartDate","assignmentEndDate","contractVolumeDemand","contractDemand","assignorContract","assigneeContract","assigneeAccount","customerRefNumber","GenerateCsvHeader","GenerateCsvColumns","paramFromGasDay","paramToGasDay","paramPrimaryReceiptLocationId","paramPrimaryDeliveryLocationId","AssignorAssignee","paramSearchType","paramCustomerId","paramAssignorIds","paramAssigneeIds","getSelectedEnterprises","Customer","queryTemporaryAssignments$","queryTemporaryAssignments","queryApplicationDateTime$","queryTempAssignmentForCustomer","queryTempAssignmentForAssignorAssignee","tempAssignments","selection","ContractDemandEnergySearchParams","ContractDemandEnergyService","ent$","loc$","volumeDemand","contractMonthlyPrice","priceStartDate","priceStartGasDay","priceEndDate","priceEndGasDay","currentTariffMonthlyPrice","currentToll","ContractDemandEnergyComponent","contractDemandEnergyService","pipeline$","cache$","loadEnterpriseAndLocationCache","results$","searchComplete","getUnits","CoverPageDetailModel","uploadResult","UploadDetailResult","CoverPageContactsModel","UploadContactsResult","UploadResult","detailResults","CoverPageDetailError","createError","recordsAdded","recordsRead","recordsWithError","contactsResults","CoverPageContactsError","CoverPageDetail","bankLine1","bankLine2","bankLine3","bankLine4","bankCode","bankTransit","bankAccount","swiftCode","payableTo","mailLine1","mailLine2","mailLine3","mailLine4","mailAttention","mainSwitchboard","gstRegistrationNumber","logoLine1","logoLine2","tariffSectionFootnote","CoverPageContacts","typeName","phone","fax","CoverPageBaseComponent","fileError","fileEvent","readFile","FILE_COLUMNS","lastFileName","shift","processFileLines","severity","CoverPageDetailComponent","coverPageDetail","CoverPageContactsComponent","coverPageContacts","ContractPricingSearchParams","contractNumberDisabled","canSubmit","ContractPricingService","updates","added","deleted","addUpdateRequest","prices","price","customerDisplayName","versionNumber","contractVersionNumber","versionId","priceData","expandedPrice","originalPriceStartDate","originalPriceEndDate","dailyPrice","dailyPriceId","contractPriceDailyId","monthlyPrice","monthlyPriceId","contractPriceMonthlyId","priceType","addedRowId","populateAddedRows","PriceUpdate","deleteRequest","originalPriceStartGasDay","originalPriceEndGasDay","ContractPricingComponent","billingMonthService","billableServicesService","gasDayService","disableValidation","showErrorColumn","openBillingMonthAndCustomers$","updateablePriceWithDates","getOnlyUpdateablePrice","serviceTypes","loadLocationCache","prices$","contractNumbers$","loadContractNumbers","queryContractNumbers","numbers","validationMessage","changed","ContractRow","priorityDateTime","num","contractState","createdReason","isRenewableInd","secondaryStartGasDay","creditExposureDays","expansionRelatedInd","uomType","volumeUOMType","gstExempt","LoadContractUploadParameters","LoadContractsComponent","uploadContracts","AccountsRoutes","CustomerAccountParametersComponent","queryCustomerAccountParameters$","accountParameters","parametersModel","updateCustomerAccountParameters","saveParametersClicked","CreditExposureReportSearchParams","CreditResourceService","creditServiceUri","CreditExposureReportService","creditResource","CreditExposureReportRequest","CreditEnterpriseService","creditDataResource","CreditExposureReportComponent","creditService","creditExposureReportService","queryCreditReportPdf","CreditOverageReportSearchParams","CreditOverageReportService","CreditOverageReportRequest","CreditOverageReportComponent","creditOverageReportService","queryCreditOverageReportXlsx","excelClicked","CreditReportArchiveRetrievalSearchParams","CreditReportArchiveRetrievalService","ArchivedCreditReportRequest","CreditRoutes","CreditReportArchiveRetrievalComponent","creditReportArchiveRetrievalService","fetchArchivedCreditReportPdf","fetchClicked","updateEnterprise","NominationGasAccountService","ProductionSetupViewModel","GctsRoutes","ProductionSetupComponent","nominationGasAccountService","originalModel","updateProductionSetup","updateEffectiveGasDays","createProductionSetupGasAccounts$","createProductionSetupGasAccounts","createProductionSetupNominationGroup$","createProductionSetupNominationGroup","createPipelineGasAccountsClicked","LoginModel","LoginComponent","hasServerError","clearErrorMessages","signInWithRedirect","isInvalidCredentials","returnUrl","userPipelines","navigateByUrl","HandleChangePasswordRedirect","PASSWORD_ERROR_MESSAGE","changePasswordUrl","alert","loginByOkta","ForbiddenComponent","NotFoundComponent","HealthCheckComponent","EmptyRedirect","routes","redirectTo","pathMatch","AppRoutingModule","forRoot","useHash","initialNavigation","onSameUrlNavigation","enableTracing","DirectivesModule","PipesModule","ComponentsModule","ResourceServicesModule","JwtTokenInterceptor","isLoggedIn","clone","setHeaders","Authorization","handle","RestRequestTypes","JSONP","BaseInterceptor","method","OverlayInterceptor","pushHttpRequest","popHttpRequest","LoginInterceptor","isAnIgnoredUri","requestUri","uriToLowercase","HttpInterceptorProviders","useClass","ErrorInterceptor","isPasswordRedirect","isAnErrorToLetComponentHandle","processError","catch","GoogleAnalyticsService","WebAppServicesModule","CommonDataServicesModule","ContractsServicesModule","FlowingGasServicesModule","JobSchedulingServicesModule","NonTransportationSummaryCsvBuilderService","LoggingService","buildError","isHttpErrorResponse","stack","NominationServicesModule","InvoicingServicesModule","CreditServicesModule","AccountsServicesModule","EnrichmentModule","PipelineInitService","pipelineMap","hash","notValidPipelineCode","getPipelineCodes","ServicesModule","SharedModule","ToggleRowComponent","isExpandedValue","isExpandedChange","clicked","GasCyclePickerComponent","searchMode","setDefaultToTimely","initializePickerForToday","initializePickerForAnotherDay","intraDayCycles","timely","ContentDisableDirective","shouldAdd","FormInputMatchDirective","valToMatch","SecureItemOldDirective","setStyle","BackgroundColorDirective","removeStyle","FormErrorsComponent","dirty","touched","invalid","getMessage","errorMessages","requiredLength","requiredPattern","GoogleTagManagerComponent","isAnalyticsDisabled","getElementsByTagName","googleAnalyticsId","script","async","src","gtagFunction","DateCycleToGasDayFormatPipe","toGasDayCycleFormatString","AdministrationModule","BilledExcessDailyTabComponent","FlowingGasModule","InvoicingModule","ReportingModule","updateNomRequest","existingNomRequest","undoNomRequest","forCode","isTimelyAndUserHasNotChangedTheStartDate","isGasCycleDifferentThanLastSearchParamsGasCycle","setNominationRequestGasDayCycle","nomRequest","defaultEndGasDayEndDate","selectedGasDayCycleStatus","endGasDayDate","minStartGasDayDate","maxStartGasDayDate","minEndGasDayDate","maxEndGasDayDate","CommonHubService","hasRowChanged","rowWasEdited","columnAlignmentMap","onNgAfterViewInit","cellTemplateCommon","displayCellTemplateDefault","customDisplayFormattingForColumns","editCellTemplate","$cellElement","container","padding","$editor","editing","createEditor","rowKey","alignment","paddingRight","inEditCellTemplate","isDataTextEmpty","encodeHtml","applyInternetExplorerFocusCellHack","isInternetExplorer","userAgent","$rowEl","getRowElement","$container","editorPreparing","selectEvent","createEvent","initEvent","dispatchEvent","setEditorOptionsInputMaxLength","getStartGasDayDateMinAndMax","getEndGasDayDateMinAndMax","rowInitialized","validateStartGasDay","validateEndGasDay","textBox","filterOutNonAlphanumericKeys","onCellHoverChanged","editorPrepared","_input","onCellUpdating","isReceiptHub","performCellUpdate","customOnCellUpdated","filterNonIntegerKeys","columnPosition","filterCommaKeyForPackageId","filterOutCommaKey","nextNewRowKey","closeEditCell","dateEditorFormatter2","dateEditorParser2","endDateDisplayFormatter","isLocationNonThreaded","validateForThreaded","validateForNominationGroup","isTboSelected","getDataForSort","undoObjs","keysToAdd","keysToRemove","isReceiptDeliveryRowEditable","dateEditorFormat2","packQuantity","draftQuantity","isEditingNewRow","isNewRowAddedToDataGrid","texts","confirmDeleteMessage","deleteRow","isEditableStatus","lengthOfRealRecords","lengthOfVisibleRecords","getFilteredLocationsFromNomGroup","getter","desc","locationField","getFilteredTransactionTypes","getFilteredNomGroupsFromTransactionType","prevNomGroupId","onNominationGroupSelectionChanged","delayFocusCellElement","focusCellElement","locationsForCycle","isTransferLocationForCycle","hubNomGroupLocations","hubNomGroupLocationsForTboTransfer","filteredNomGroupsForTboTransfer","rowNomGroupLocationsForTboTransfer","isNonThreaded","isGreenGasHub","getNomGroupsForBuyOrSell","hub","ctsIds","formatGasDayCycle","existingRecord","defaultNominationRequestGasDayCycleBasedOnGasCycle","HubComponentBase","ReceiptHubComponent","rankPattern","integerOnlyColumnIndexes","commonImpl","prepareLocation","prepareTransactionType","prepareNominationGroup","transactionsForCycle","hubNomGroup","onRowInserted","isColumnVisible","getColumnVisibilityForHubColumn","isReceiptDeliveryCellEditable","r1","r2","fromEdit","updateObj2","recordData","transactionTypeSortValue","debitNomGroupSortValue","getNomGroupSortValue","creditLocationSortValue","getLocationSortValue","debitLocationSortValue","tosSortValue","getBillableServiceSortValue","bidPriceSortValue","getSortNumberValue","deliveryRankSortValue","nomQtySortValue","upDownContractSortValue","counterPartySortValue","packageIdSortValue","beginDateSortValue","endDateSortValue","gasCycleSortValue","requestsToSelect","addRecord","describeNumberOfRecords","hasUndoRecord","undoRowEdit","DeliveryHubComponent","creditNomGroupSortValue","receiptRankSortValue","TransportHubComponent","isCapacityAllocationMethodCgl","withTemplateVisible","setPathAndRecalculateFuel","buildReceiptLocations","buildDeliveryLocations","fuelLocations","buildFuelLocations","energyValue","getBillableServiceOption","validateForBidPrice","validateForFuelLocation","validateForFuelColumns","validateForFuel","nomGroupSortValue","transportationRankSortValue","fuelLocationSortValue","fuelQtySortValue","taxZeroRatedSortValue","getSortBooleanValue","nominationGroupHeaderFilter","CGL_CAP_ALLOC_METHOD","billableServiceOptionsForNomGroup","secondaryPaths","includeSecondaryLocations","hasDivertOption","getSecondaryPathIds","shouldIncludeSecondaryLocations","nomGroupPrimaryPath","secondaryFuelLocationIds","billiableServiceOption","setZeroTaxRated","getFilteredNomGroupsFromBillableServiceOptionId","getFilteredBillableServiceOptionsFromNomGroupId2","clearLocationsAndFuel","lookupDataAndSetPathAndRecalcFuel","possibleEndpoints","endpt","updateReceiptLocationAndRecalculateFuel","cpe","sce","creditLocationIdSelectionChanged","configureSelectBox","sb","creditLocationIdDataSource","recalculateFuelBasedOnNumberBoxChanges","transp","selectedFilterOperations","getStatus","defaultCalculateFilterExpression","postProcess","intersectedNomGroups","handleSelectionChanged","updateRecord","updateFuel","updateZeroTaxRated","changeExistingRecordPropertyFunction","updateRecordPropertiesFunction","refreshDataGrid","requiredFuel","TitleTransferReportGridComponent","titleTransferReportComponent","getBlankOnBottomSortValue","counterPartyPackageIdSortValue","counterPartyPackageId","yesNoPipe","getAccountName","getLocationName","buyTransfersCsvData","creditNomGroupMnemonic","debitNomGroupMnemonic","formatBeginDate","getGasDayCycleEffectiveTime","getGasDayCycleCode","formatEndDate","getGasDayCycleEndTime","counterPartyQuantity","counterPartySubmittedByUserFullName","sellTransfersCsvData","gasDayTime","pdfReportClicked","borderBottomStyle","borderTopStyle","disabledKeys","nominationsClicked","getPdfClicked","setSpacerAndCheckboxColumnStyle","selectAllCheckboxHandler","TitleTransferReportFullComponent","TitleTransferReportTabComponent","EnergyImbalanceComponent","classlist","onCellUpdated","setMonth","packOrDraft","undoButtonCellTemplate","undoButtonEditCellTemplate","validatePackQty","validateDraftQty","BaseTransportationSummaryGrid","innerCellStyle","detailsEditorPreparing","validateAuthQtyLessThanOrEqualToNomQtyForSummaries","validateLessThan","validateAuthQtyGreaterThanOrEqualToScheduledEpsq","transportationDataGrid","isAuthorizedValueValidComparedToEpsq","beginUpdate","copyableQuantities","copyNominatedQuantityToAuthorizedQuantity","endUpdate","delegate","datagrid","rowToEditIndex","TransportationSummaryGridComponent","transportationSummaryCsvBuilderService","transportationSummaryComponent","NonTransportationSummaryGridComponent","nonTransportationSummaryCsvBuilderService","TitleTransferMismatchesComponent","showTitleTransferMismatches","toggleTitleTransferMismatchesClicked","CommonImbalanceTradeService","validateGasDay","currentSelectedRowData","getInstance","canAddNewRow","saveRecord","isCounterPartyRequest","BuyImbalanceTradeRequestsComponent","onDisableTabs","isImbalanceTradeRequestCellEditable","applyStatusColumnTemplate","getNomGroupIdFor","locationSortValue","qtySortValue","gasDaySortValue","submittedBySortValue","getCounterPartySortValue","counterPartyName","counterPartyQuantitySortValue","counterPartyGasDaySortValue","counterPartySubmittedBySortValue","shouldShowEditButton","shouldShowDeleteButton","deleteRecord","editClicked","baseSaveClicked","onEditingStart","SellImbalanceTradeRequestsComponent","ImbalanceTradeLocationBalances","ImbalanceTradeLocationBalancesComponent","balancesRequireRefresh","currentBalance","isGasDayClosed","NominationModule","ManageLocationModule","AccountsModule","CreditModule","GctsModule","AppComponent","analyticsService","pipelineInitService","isAuthenticated","defaultOptions","device","deviceType","showSortIndexes","urlParams","URLSearchParams","search","routeHint","isLoginRedirect","parseFromUrl","tokenManager","setTokens","tokens","updateAuthState","redirectToHome","authState","getAuthState","loadSessionPipeline","ErrorHandlerService","loggingService","AppModule","useFactory","deps","configureOkta","configurationService","oktaConfig","issuer","redirectUri","origin","clientId","postLogoutRedirectUri","configData","useValue","webpackEmptyAsyncContext"],"mappings":"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IACA,EAAA,GAAA,EAAA,gBAAA,IAEA,EAAA,GAAA,GAAA,aAAA,IAEA,EAAA,GAAA,GAAA,GAAA,EAAA,EAAA,MAAA,IAGA,EAAA,GAAA,GAAA,aAAA,IAEA,EAAA,GAAA,GAAA,GAAA,EAAA,EAAA,MAAA,IAIA,EAAA,GAAA,GAAA,GAAA,EAAA,EAAA,aAAA,IAEA,EAAA,GAAA,GAAA,GAAA,EAAA,EAAA,MAAA,IAIA,EAAA,GAAA,GAAA,GAAA,EAAA,EAAA,aAAA,IAEA,EAAA,GAAA,GAAA,GAAA,EAAA,EAAA,MAAA,IAIA,EAAA,GAAA,GAAA,GAAA,EAAA,EAAA,aAAA,IAGA,EAAA,GAAA,GAAA,GAAA,EAAA,EAAA,aAAA,IAGA,EAAA,GAAA,GAAA,GAAA,EAAA,EAAA,aAAA,IAGA,EAAA,GAAA,GAAA,GAAA,EAAA,EAAA,aAAA,IAEA,EAAA,GAAA,GAAA,GAAA,EAAA,EAAA,MAAA,IAIA,EAAA,GAAA,GAAA,GAAA,EAAA,EAAA,aAAA,IAEA,EAAA,GAAA,GAAA,GAAA,EAAA,EAAA,MAAA,IAIA,EAAA,GAAA,GAAA,GAAA,EAAA,EAAA,aAAA,IACA,EAAA,GAAA,GAAA,GAAA,EAAA,EAAA,aAAA,IACA,EAAA,GAAA,GAAA,GAAA,EAAA,EAAA,aAAA,IACA,EAAA,GAAA,GAAA,GAAA,EAAA,EAAA,aAAA,IAEA,EAAA,GAAA,GAAA,GAAA,EAAA,EAAA,aAAA,IAEA,EAAA,GAAA,GAAA,GAAA,EAAA,EAAA,aAAA,IAEA,EAAA,GAAA,GAAA,GAAA,EAAA,EAAA,aAAA,IACA,EAAA,GAAA,GAAA,GAAA,EAAA,EAAA,aAAA,IACA,EAAA,GAAA,GAAA,GAAA,EAAA,EAAA,aAAA,IAEA,EAAA,GAAA,GAAA,GAAA,EAAA,EAAA,aAAA,IACA,EAAA,GAAA,GAAA,GAAA,EAAA,EAAA,aAAA,IAEA,EAAA,GAAA,GAAA,GAAA,EAAA,EAAA,aAAA,IAEA,EAAA,GAAA,GAAA,GAAA,EAAA,EAAA,aAAA,IAEA,EAAA,GAAA,GAAA,GAAA,EAAA,EAAA,aAAA,IAEA,EAAA,GAAA,GAAA,GAAA,EAAA,EAAA,aAAA,IAEA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AA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAblB,GACA,GACA,GACA,GACA,GACA,GACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAAiD,CAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,wFCpBnD,EAAA,GAAA,EAAA,aAAA,SAAsL,EAAA,GAAA,SAAA,EAAA,GAAA,EAAA,8BACtL,EAAA,GAAA,EAAA,OACE,EAAA,GAAA,EAAA,kBAAa,EAAA,GAAA,EAAA,MAAK,EAAA,GAAA,EAAA,WACpB,EAAA,iCACA,EAAA,GAAA,EAAA,OACE,EAAA,GAAA,GACF,EAAA,+BADE,EAAA,GAAA,GAAA,EAAA,GAAA,IAAA,EAAA,MAAA,EAAA,MAAA,QAAA,GAAA,OAAA,gIA/DJ,EAAA,GAAA,EAAA,OACA,EAAA,GAAA,EAAA,eAAA,EAAA,GAWE,EAAA,GAAA,EAAA,cAAA,GACA,EAAA,GAAA,EAAA,iBAAA,GACA,EAAA,GAAA,EAAA,gBAAA,GACA,EAAA,GAAA,EAAA,eAAA,GAEA,EAAA,GAAA,EAAA,eACE,EAAA,GAAA,EAAA,iBAAA,GAQA,EAAA,GAAA,EAAA,iBAAA,GAQA,EAAA,GAAA,GAAA,iBAAA,GAQF,EAAA,KACA,EAAA,GAAA,GAAA,aAAA,IACE,EAAA,GAAA,GAAA,IAAA,EAAA,EAAA,MAAA,IAGF,EAAA,KAEA,EAAA,GAAA,GAAA,aAAA,IACA,EAAA,GAAA,GAAA,IAAA,EAAA,EAAA,MAAA,IAIA,EAAA,GAAA,GAAA,aAAA,IACA,EAAA,GAAA,GAAA,aAAA,IACA,EAAA,GAAA,GAAA,aAAA,IACA,EAAA,GAAA,GAAA,aAAA,IACA,EAAA,GAAA,GAAA,IAAA,EAAA,EAAA,aAAA,IACA,EAAA,GAAA,GAAA,IAAA,EAAA,EAAA,MAAA,IAGA,EAAA,GAAA,GAAA,IAAA,EAAA,EAAA,MAAA,IAIF,EAAA,KACA,EAAA,0BA/DE,EAAA,GAAA,GAAA,EAAA,GAAA,YAAA,EAAA,GAAA,GAAA,KAAA,CAA8B,gBAAA,EAA9B,CAA8B,UAAA,EAA9B,CAA8B,mBAAA,EAA9B,CAA8B,aAAA,EAAA,MAAA,WAA9B,CAA8B,yBAAA,EAA9B,CAA8B,aAAA,yCAQD,EAAA,GAAA,GAAA,EAAA,GAAA,mBAAA,GACb,EAAA,GAAA,GAAA,EAAA,GAAA,WAAA,GAEF,EAAA,GAAA,GAAA,EAAA,GAAA,mBAAA,GAQV,EAAA,GAAA,GAAA,EAAA,GAAA,qBAAA,EAAA,CAA2B,iBAAA,GAQ3B,EAAA,GAAA,GAAA,EAAA,GAAA,qBAAA,EAAA,CAA2B,iBAAA,GAO3B,EAAA,GAAA,GAAA,EAAA,GAAA,cAAA,EAAA,GAAA,GAAA,KAAA,CAAmD,qBAAA,EAAnD,CAAmD,iBAAA,GAKY,EAAA,GAAA,GAAA,EAAA,GAAA,aAAA,GAC5D,EAAA,GAAA,GAAA,EAAA,GAAA,eAAA,kBAMF,EAAA,GAAA,GAAA,EAAA,GAAA,eAAA,sBAIiE,EAAA,GAAA,GAAA,EAAA,GAAA,SAAA,EAAA,GAAA,GAAA,MACE,EAAA,GAAA,GAAA,EAAA,GAAA,SAAA,EAAA,GAAA,GAAA,MACI,EAAA,GAAA,GAAA,EAAA,GAAA,SAAA,EAAA,GAAA,GAAA,MACG,EAAA,GAAA,GAAA,EAAA,GAAA,SAAA,EAAA,GAAA,GAAA,MACnE,EAAA,GAAA,GAAA,EAAA,GAAA,OAAA,EAAA,MAAA,0BACP,EAAA,GAAA,GAAA,EAAA,GAAA,eAAA,8BAGA,EAAA,GAAA,GAAA,EAAA,GAAA,eAAA,6BCrDA,IAAA,IAAA,YAAMC,gDAAAA,2BAAAA,EAA6B,UAAA,CAAA,CAAA,gCAAA,UAAA,SAAA,EAAA,SAAA,EAAA,QAE7B,GAAA,GAAmB,k0DDXhC,EAAA,GAAA,EAAA,IAAA,GAAA,GAAA,MAAA,QAAK,EAAA,GAAA,OAAA,EAAA,wGCSE,GCqIA,IAAA,YAAMC,iCAAAA,wDAAAA,IAAgB,QAAA,CA1EhB,CACL,IACA,GAAA,EACA,EAAA,EACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,GAAA,SAiED,QA1CH,GAAkC,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EApBlC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAA4B,CAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,SAjC5B,GAAwB,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,G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AAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAbnC,GACA,IACA,GACA,GACA,IACA,GACA,IACA,IACA,GACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,GACA,GACA,IACA,IACA,IACA,GACA,GACA,GACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAAuC,CAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,UAhDvC,GAAkC,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAdlC,GACA,IACA,GACA,GACA,IACA,GACA,IACA,IACA,GACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,GACA,GACA,IACA,IACA,IACA,GACA,GACA,GACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAAuC,CAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,UA1CvC,GAA4B,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EApB5B,GACA,IACA,GACA,GACA,IACA,GACA,IACA,IACA,GACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,GACA,GACA,IACA,IACA,IACA,GACA,GACA,GACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAAuC,CAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,UAjCvC,GAAqC,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EA7BrC,GACA,IACA,GACA,GACA,IACA,GACA,IACA,IACA,GACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,GACA,GACA,IACA,IACA,IACA,GACA,GACA,GACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAAuC,CAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,UAhBvC,IAA+B,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EA9C/B,GACA,IACA,GACA,GACA,IACA,GACA,IACA,IACA,GACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,GACA,GACA,IACA,IACA,IACA,GACA,GACA,GACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAAuC,CAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,UAfvC,IAAuC,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EA/CvC,GACA,IACA,GACA,GACA,IACA,GACA,IACA,IACA,GACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,GACA,GACA,IACA,IACA,IACA,GACA,GACA,GACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAAuC,CAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,UAdvC,IAAsC,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA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","sourceRoot":"webpack:///","sourcesContent":["function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nmodule.exports = webpackEmptyContext;\nwebpackEmptyContext.id = \"KArk\";","var map = {\n\t\"./af\": \"8GSH\",\n\t\"./af.js\": \"8GSH\",\n\t\"./ar\": \"NcOb\",\n\t\"./ar-dz\": \"1ors\",\n\t\"./ar-dz.js\": \"1ors\",\n\t\"./ar-kw\": \"Sc1Y\",\n\t\"./ar-kw.js\": \"Sc1Y\",\n\t\"./ar-ly\": \"GzvP\",\n\t\"./ar-ly.js\": \"GzvP\",\n\t\"./ar-ma\": \"hH25\",\n\t\"./ar-ma.js\": \"hH25\",\n\t\"./ar-sa\": \"u2jB\",\n\t\"./ar-sa.js\": \"u2jB\",\n\t\"./ar-tn\": \"5Mza\",\n\t\"./ar-tn.js\": \"5Mza\",\n\t\"./ar.js\": \"NcOb\",\n\t\"./az\": \"ZVVJ\",\n\t\"./az.js\": \"ZVVJ\",\n\t\"./be\": \"kQaN\",\n\t\"./be.js\": \"kQaN\",\n\t\"./bg\": \"+n5x\",\n\t\"./bg.js\": \"+n5x\",\n\t\"./bn\": \"aIF2\",\n\t\"./bn.js\": \"aIF2\",\n\t\"./bo\": \"QWb5\",\n\t\"./bo.js\": \"QWb5\",\n\t\"./br\": \"iQoZ\",\n\t\"./br.js\": \"iQoZ\",\n\t\"./bs\": \"EL7g\",\n\t\"./bs.js\": \"EL7g\",\n\t\"./ca\": \"vd/2\",\n\t\"./ca.js\": \"vd/2\",\n\t\"./cs\": \"K+3W\",\n\t\"./cs.js\": \"K+3W\",\n\t\"./cv\": \"Jt3X\",\n\t\"./cv.js\": \"Jt3X\",\n\t\"./cy\": \"sWi3\",\n\t\"./cy.js\": \"sWi3\",\n\t\"./da\": \"YcFX\",\n\t\"./da.js\": \"YcFX\",\n\t\"./de\": \"BKZ+\",\n\t\"./de-at\": \"Oq9h\",\n\t\"./de-at.js\": \"Oq9h\",\n\t\"./de-ch\": \"hHY4\",\n\t\"./de-ch.js\": \"hHY4\",\n\t\"./de.js\": \"BKZ+\",\n\t\"./dv\": \"w8Ej\",\n\t\"./dv.js\": \"w8Ej\",\n\t\"./el\": \"tSbB\",\n\t\"./el.js\": \"tSbB\",\n\t\"./en-au\": \"HgyJ\",\n\t\"./en-au.js\": \"HgyJ\",\n\t\"./en-ca\": \"ZyTy\",\n\t\"./en-ca.js\": \"ZyTy\",\n\t\"./en-gb\": \"exaB\",\n\t\"./en-gb.js\": \"exaB\",\n\t\"./en-ie\": \"yKzn\",\n\t\"./en-ie.js\": \"yKzn\",\n\t\"./en-nz\": \"iDxo\",\n\t\"./en-nz.js\": \"iDxo\",\n\t\"./eo\": \"4bvN\",\n\t\"./eo.js\": \"4bvN\",\n\t\"./es\": \"GNPT\",\n\t\"./es-do\": \"R7mU\",\n\t\"./es-do.js\": \"R7mU\",\n\t\"./es.js\": \"GNPT\",\n\t\"./et\": \"ZOjb\",\n\t\"./et.js\": \"ZOjb\",\n\t\"./eu\": \"kFC9\",\n\t\"./eu.js\": \"kFC9\",\n\t\"./fa\": \"8Cju\",\n\t\"./fa.js\": \"8Cju\",\n\t\"./fi\": \"vcN1\",\n\t\"./fi.js\": \"vcN1\",\n\t\"./fo\": \"8Ygf\",\n\t\"./fo.js\": \"8Ygf\",\n\t\"./fr\": \"Y8Ij\",\n\t\"./fr-ca\": \"t+Zl\",\n\t\"./fr-ca.js\": \"t+Zl\",\n\t\"./fr-ch\": \"SPXN\",\n\t\"./fr-ch.js\": \"SPXN\",\n\t\"./fr.js\": \"Y8Ij\",\n\t\"./fy\": \"T3MF\",\n\t\"./fy.js\": \"T3MF\",\n\t\"./gd\": \"GJYX\",\n\t\"./gd.js\": \"GJYX\",\n\t\"./gl\": \"MdC8\",\n\t\"./gl.js\": \"MdC8\",\n\t\"./gom-latn\": \"5j0y\",\n\t\"./gom-latn.js\": \"5j0y\",\n\t\"./he\": \"ACAV\",\n\t\"./he.js\": \"ACAV\",\n\t\"./hi\": \"3WqV\",\n\t\"./hi.js\": \"3WqV\",\n\t\"./hr\": \"OnNk\",\n\t\"./hr.js\": \"OnNk\",\n\t\"./hu\": \"EQmw\",\n\t\"./hu.js\": \"EQmw\",\n\t\"./hy-am\": \"MNf7\",\n\t\"./hy-am.js\": \"MNf7\",\n\t\"./id\": \"0yow\",\n\t\"./id.js\": \"0yow\",\n\t\"./is\": \"TmOJ\",\n\t\"./is.js\": \"TmOJ\",\n\t\"./it\": \"xD/0\",\n\t\"./it.js\": \"xD/0\",\n\t\"./ja\": \"jOnb\",\n\t\"./ja.js\": \"jOnb\",\n\t\"./jv\": \"lOtj\",\n\t\"./jv.js\": \"lOtj\",\n\t\"./ka\": \"BAN/\",\n\t\"./ka.js\": \"BAN/\",\n\t\"./kk\": \"iNiw\",\n\t\"./kk.js\": \"iNiw\",\n\t\"./km\": \"TUxt\",\n\t\"./km.js\": \"TUxt\",\n\t\"./kn\": \"hQzt\",\n\t\"./kn.js\": \"hQzt\",\n\t\"./ko\": \"ZNZT\",\n\t\"./ko.js\": \"ZNZT\",\n\t\"./ky\": \"JO+T\",\n\t\"./ky.js\": \"JO+T\",\n\t\"./lb\": \"vn/h\",\n\t\"./lb.js\": \"vn/h\",\n\t\"./lo\": \"gnIm\",\n\t\"./lo.js\": \"gnIm\",\n\t\"./lt\": \"6PD3\",\n\t\"./lt.js\": \"6PD3\",\n\t\"./lv\": \"YKe2\",\n\t\"./lv.js\": \"YKe2\",\n\t\"./me\": \"d3TR\",\n\t\"./me.js\": \"d3TR\",\n\t\"./mi\": \"hTlv\",\n\t\"./mi.js\": \"hTlv\",\n\t\"./mk\": \"ffVN\",\n\t\"./mk.js\": \"ffVN\",\n\t\"./ml\": \"ejL1\",\n\t\"./ml.js\": \"ejL1\",\n\t\"./mr\": \"CPJk\",\n\t\"./mr.js\": \"CPJk\",\n\t\"./ms\": \"d5Hy\",\n\t\"./ms-my\": \"t4T9\",\n\t\"./ms-my.js\": \"t4T9\",\n\t\"./ms.js\": \"d5Hy\",\n\t\"./my\": \"LsNb\",\n\t\"./my.js\": \"LsNb\",\n\t\"./nb\": \"h+U8\",\n\t\"./nb.js\": \"h+U8\",\n\t\"./ne\": \"2JSI\",\n\t\"./ne.js\": \"2JSI\",\n\t\"./nl\": \"jsZ8\",\n\t\"./nl-be\": \"+h6j\",\n\t\"./nl-be.js\": \"+h6j\",\n\t\"./nl.js\": \"jsZ8\",\n\t\"./nn\": \"mh29\",\n\t\"./nn.js\": \"mh29\",\n\t\"./pa-in\": \"O6bP\",\n\t\"./pa-in.js\": \"O6bP\",\n\t\"./pl\": \"8Bez\",\n\t\"./pl.js\": \"8Bez\",\n\t\"./pt\": \"DDip\",\n\t\"./pt-br\": \"uHm5\",\n\t\"./pt-br.js\": \"uHm5\",\n\t\"./pt.js\": \"DDip\",\n\t\"./ro\": \"baBi\",\n\t\"./ro.js\": \"baBi\",\n\t\"./ru\": \"ecsu\",\n\t\"./ru.js\": \"ecsu\",\n\t\"./sd\": \"e9KM\",\n\t\"./sd.js\": \"e9KM\",\n\t\"./se\": \"CZRU\",\n\t\"./se.js\": \"CZRU\",\n\t\"./si\": \"TO58\",\n\t\"./si.js\": \"TO58\",\n\t\"./sk\": \"K+Lk\",\n\t\"./sk.js\": \"K+Lk\",\n\t\"./sl\": \"QK6v\",\n\t\"./sl.js\": \"QK6v\",\n\t\"./sq\": \"v3Qg\",\n\t\"./sq.js\": \"v3Qg\",\n\t\"./sr\": \"Ndyf\",\n\t\"./sr-cyrl\": \"PGvg\",\n\t\"./sr-cyrl.js\": \"PGvg\",\n\t\"./sr.js\": \"Ndyf\",\n\t\"./ss\": \"2B8G\",\n\t\"./ss.js\": \"2B8G\",\n\t\"./sv\": \"WF5B\",\n\t\"./sv.js\": \"WF5B\",\n\t\"./sw\": \"4VvY\",\n\t\"./sw.js\": \"4VvY\",\n\t\"./ta\": \"dw3T\",\n\t\"./ta.js\": \"dw3T\",\n\t\"./te\": \"4MAb\",\n\t\"./te.js\": \"4MAb\",\n\t\"./tet\": \"/hi0\",\n\t\"./tet.js\": \"/hi0\",\n\t\"./th\": \"OY2w\",\n\t\"./th.js\": \"OY2w\",\n\t\"./tl-ph\": \"UC+K\",\n\t\"./tl-ph.js\": \"UC+K\",\n\t\"./tlh\": \"cWLW\",\n\t\"./tlh.js\": \"cWLW\",\n\t\"./tr\": \"EqYs\",\n\t\"./tr.js\": \"EqYs\",\n\t\"./tzl\": \"fN8o\",\n\t\"./tzl.js\": \"fN8o\",\n\t\"./tzm\": \"6cYq\",\n\t\"./tzm-latn\": \"pdAN\",\n\t\"./tzm-latn.js\": \"pdAN\",\n\t\"./tzm.js\": \"6cYq\",\n\t\"./uk\": \"6Olw\",\n\t\"./uk.js\": \"6Olw\",\n\t\"./ur\": \"QNGR\",\n\t\"./ur.js\": \"QNGR\",\n\t\"./uz\": \"hLzJ\",\n\t\"./uz-latn\": \"KqOT\",\n\t\"./uz-latn.js\": \"KqOT\",\n\t\"./uz.js\": \"hLzJ\",\n\t\"./vi\": \"EnIJ\",\n\t\"./vi.js\": \"EnIJ\",\n\t\"./x-pseudo\": \"W7dU\",\n\t\"./x-pseudo.js\": \"W7dU\",\n\t\"./yo\": \"QDhB\",\n\t\"./yo.js\": \"QDhB\",\n\t\"./zh-cn\": \"bjMe\",\n\t\"./zh-cn.js\": \"bjMe\",\n\t\"./zh-hk\": \"JFCg\",\n\t\"./zh-hk.js\": \"JFCg\",\n\t\"./zh-tw\": \"xBDH\",\n\t\"./zh-tw.js\": \"xBDH\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"MROq\";","export const environment = {\r\n production: true,\r\n config_file: './config/config.json'\r\n};\r\n","import {Injectable, Inject, InjectionToken} from '@angular/core';\r\nimport {NominationPipeline} from \"@model/nomination-pipeline\";\r\n\r\nexport const APP_CONFIG_TOKEN = new InjectionToken('config');\r\n\r\n@Injectable()\r\nexport class ConfigService {\r\n\r\n public get backgroundColor(): string {\r\n return this.data.backgroundColor;\r\n }\r\n\r\n // Convenience getters so we don't have to access through data.\r\n public get nominationServiceUri(): string {\r\n return this.data.nominationsUri;\r\n }\r\n\r\n public get scheduledJobsServiceUri(): string {\r\n return this.data.jobSchedulingServiceUri;\r\n }\r\n\r\n public get commonDataServiceUri(): string {\r\n return this.data.commonDataServiceUri;\r\n }\r\n\r\n public get accountsServiceUri(): string {\r\n return this.data.accountsDataServiceUri;\r\n }\r\n\r\n public get creditServiceUri(): string {\r\n return this.data.creditDataServiceUri;\r\n }\r\n\r\n public get flowingGasServiceUri(): string {\r\n return this.data.flowingGasServiceUri;\r\n }\r\n\r\n public get invoicingServiceUri(): string {\r\n return this.data.invoicingServiceUri;\r\n }\r\n\r\n\r\n public get securityServiceUri(): string {\r\n return this.data.securityServiceUri;\r\n }\r\n\r\n public get oktaIssuer(): string {\r\n return this.data.oktaIssuer;\r\n }\r\n\r\n public get oktaClientId(): string {\r\n return this.data.oktaClientId;\r\n }\r\n\r\n // Not exposing these right now because jasmine spys don't work for getters yet.\r\n private get gatewayUrl(): string {\r\n return this.data.gatewayUrl;\r\n }\r\n\r\n public getGatewayUrl(): string {\r\n return this.gatewayUrl;\r\n }\r\n\r\n private get publicSiteUrl(): string {\r\n return this.data.publicSiteUrl;\r\n }\r\n\r\n public getPublicSiteUrl(): string {\r\n return this.publicSiteUrl;\r\n }\r\n\r\n public get internalAuthUrl(): string {\r\n return this.data.internalAuthUrl;\r\n }\r\n\r\n public get internalResourceUrl(): string {\r\n return this.data.internalResourceUrl;\r\n }\r\n\r\n public get showErrors(): boolean {\r\n return this.data.showErrors;\r\n }\r\n\r\n constructor(@Inject(APP_CONFIG_TOKEN) public data: ConfigData) {\r\n }\r\n}\r\n\r\nexport class ConfigData {\r\n\r\n // Application Info\r\n applicationName: string;\r\n applicationAcronym: string;\r\n\r\n defaultPipeline: NominationPipeline;\r\n\r\n // Environment Info\r\n showEdiTestHarness: boolean = false;\r\n showLoadContractTestHarness: boolean = false;\r\n showPdaInstructionsTestHarness: boolean = false;\r\n showStageMeasurementsTestHarness: boolean = false;\r\n showTestPageTimeMeasurementsPane: boolean = false;\r\n showTestPageMeasurementDataSource: boolean = false;\r\n production: boolean;\r\n environment: string;\r\n version: string;\r\n\r\n // Web\r\n backgroundColor: string;\r\n\r\n // Micro Service Uris\r\n securityServiceUri: string;\r\n commonDataServiceUri: string;\r\n accountsDataServiceUri: string;\r\n creditDataServiceUri: string;\r\n flowingGasServiceUri: string;\r\n invoicingServiceUri: string;\r\n jobSchedulingServiceUri: string;\r\n dataPumpServiceUri: string;\r\n nominationsUri: string;\r\n\r\n // Okta Config\r\n oktaIssuer: string;\r\n oktaClientId: string;\r\n\r\n gatewayUrl: string; // Local Development uses a proxy to rewrite the /api Urls\r\n publicSiteUrl: string;\r\n internalAuthUrl: string;\r\n internalResourceUrl: string;\r\n showErrors: boolean;\r\n\r\n // Google Analytics\r\n analyticsEnabled: boolean;\r\n analyticsId: string;\r\n\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {ReplaySubject} from \"rxjs\";\r\nimport {NominationPipeline} from \"@model/nomination-pipeline\";\r\n\r\n@Injectable({providedIn: 'root'})\r\nexport class SessionService {\r\n readonly KEY_PIPELINE: string = 'pipeline';\r\n\r\n public pipelineChangeEvent: ReplaySubject = new ReplaySubject();\r\n\r\n constructor() {\r\n }\r\n\r\n public getPipeline(): NominationPipeline {\r\n const pipelineJSON = sessionStorage.getItem(this.KEY_PIPELINE);\r\n if (pipelineJSON) return JSON.parse(pipelineJSON);\r\n console.error('No pipeline in session storage');\r\n }\r\n\r\n public setPipeline(pipeline: NominationPipeline): void {\r\n if (!pipeline) {\r\n console.error('pipeline does not have a value');\r\n return;\r\n }\r\n sessionStorage.setItem(this.KEY_PIPELINE, JSON.stringify(pipeline));\r\n this.pipelineChangeEvent.next(pipeline);\r\n }\r\n\r\n public clearPipeline(): void {\r\n sessionStorage.removeItem(this.KEY_PIPELINE);\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\nimport {AppService} from \"../services/webapp/app/app.service\";\r\nimport {HttpResponse} from \"@angular/common/http\";\r\nimport * as FileSaver from \"file-saver\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\n\r\nexport abstract class BaseComponent {\r\n private static readonly PDF_CONTENT_TYPE: string = 'application/pdf';\r\n private static readonly ZIP_CONTENT_TYPE: string = 'application/zip';\r\n private static readonly CSV_CONTENT_TYPE: string = 'text/csv';\r\n private static readonly TXT_CONTENT_TYPE: string = 'text/plain';\r\n\r\n private title: string;\r\n protected route: string;\r\n baseSessionService: SessionService;\r\n\r\n protected constructor(protected appService: AppService) {\r\n this.appService.clearMessages();\r\n this.baseSessionService = new SessionService();\r\n }\r\n\r\n getTitle(): string {\r\n return this.title;\r\n }\r\n\r\n setTitle(title: string): void {\r\n this.title = title;\r\n this.appService.setBrowserTitle(title);\r\n }\r\n\r\n getPipelineCode(): string {\r\n return this.baseSessionService.getPipeline().code;\r\n }\r\n\r\n protected savePdfFile(response: HttpResponse): void {\r\n this.saveFile(response, BaseComponent.PDF_CONTENT_TYPE);\r\n }\r\n\r\n protected saveZipFile(response: HttpResponse): void {\r\n this.saveFile(response, BaseComponent.ZIP_CONTENT_TYPE);\r\n }\r\n\r\n protected saveCsvFile(response: HttpResponse): void {\r\n this.saveFile(response, BaseComponent.CSV_CONTENT_TYPE);\r\n }\r\n\r\n protected saveTxtFile(response: HttpResponse): void {\r\n this.saveFile(response, BaseComponent.TXT_CONTENT_TYPE);\r\n }\r\n\r\n private saveFile(response: HttpResponse, contentType: string): void {\r\n const fileContents = new Blob([response.body], {type: contentType});\r\n const fileName = response.headers.get('content-disposition').split(';')[1].trim().split('=')[1].replace(/\"/g, '');\r\n\r\n FileSaver.saveAs(fileContents, fileName);\r\n }\r\n\r\n protected openNewTabForPdf(response: HttpResponse, bookmark?: string): void {\r\n const blob = new Blob([response.body], {type: BaseComponent.PDF_CONTENT_TYPE});\r\n const objectUrl = _.isNil(bookmark)\r\n ? URL.createObjectURL(blob)\r\n : URL.createObjectURL(blob) + `#${bookmark}`;\r\n window.open(objectUrl, '_blank');\r\n URL.revokeObjectURL(objectUrl); // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL - remove reference to the file in the browser\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nexport class Message {\r\n type: string;\r\n status: string;\r\n message: string;\r\n\r\n constructor(type: string, status: string, message: string) {\r\n this.type = type;\r\n this.status = status;\r\n this.message = message;\r\n }\r\n}\r\n\r\nexport enum MessageStatusEnum {\r\n Success,\r\n Information,\r\n Warning,\r\n InProgress,\r\n Error\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AlertService {\r\n private messages: Message[];\r\n\r\n constructor() {\r\n this.clearMessages();\r\n }\r\n\r\n clearMessages(): void {\r\n this.messages = [];\r\n }\r\n\r\n getMessages(): Message[] {\r\n return this.messages;\r\n }\r\n\r\n addSuccessMessage(status: string, message: string): void {\r\n this.addMessage(MessageStatusEnum.Success, status, message);\r\n }\r\n\r\n addInfoMessage(status: string, message: string): void {\r\n this.addMessage(MessageStatusEnum.Information, status, message);\r\n }\r\n\r\n addWarnMessage(status: string, message: string): void {\r\n this.addMessage(MessageStatusEnum.Warning, status, message);\r\n }\r\n\r\n addMessageWithProgress(status: string, message: string): void {\r\n this.addMessage(MessageStatusEnum.InProgress, status, message);\r\n }\r\n\r\n addErrorMessage(status: string, message: string): void {\r\n this.addMessage(MessageStatusEnum.Error, status, message);\r\n }\r\n\r\n private addMessage(type: MessageStatusEnum, status: string, message: string): void {\r\n this.messages.splice(0, 0, new Message(MessageStatusEnum[type], status, message));\r\n }\r\n}\r\n\r\n","import {Injectable} from '@angular/core';\r\nimport {Title} from '@angular/platform-browser';\r\nimport {AlertService} from \"app/shared/services/webapp/alert/alert.service\";\r\nimport {ConfigService} from \"../configuration/configuration.service\";\r\nimport {SessionService} from \"../session/session.service\";\r\nimport {Router} from '@angular/router';\r\n\r\n@Injectable()\r\nexport class AppService {\r\n private menuVisible = true;\r\n private isFrozen: boolean;\r\n private frozenDateTime: Date;\r\n\r\n constructor(private titleService: Title,\r\n private alertService: AlertService,\r\n private configService: ConfigService,\r\n private sessionService: SessionService,\r\n private router: Router) {\r\n }\r\n\r\n /**\r\n * Configuration Methods\r\n */\r\n\r\n getEnvironment(): string {\r\n return this.configService.data.environment;\r\n }\r\n\r\n showEdiTestHarness(): boolean {\r\n return this.configService.data.showEdiTestHarness;\r\n }\r\n\r\n showLoadContractTestHarness(): boolean {\r\n return this.configService.data.showLoadContractTestHarness;\r\n }\r\n\r\n showStageMeasurementsTestHarness(): boolean {\r\n return this.configService.data.showStageMeasurementsTestHarness;\r\n }\r\n\r\n showPdaInstructionsTestHarness(): boolean {\r\n return this.configService.data.showPdaInstructionsTestHarness;\r\n }\r\n\r\n showTestPageTimeMeasurementsPane(): boolean {\r\n return this.configService.data.showTestPageTimeMeasurementsPane;\r\n }\r\n\r\n showTestPageMeasurementDataSource(): boolean {\r\n return this.configService.data.showTestPageMeasurementDataSource;\r\n }\r\n\r\n getApplicationVersion(): string {\r\n return this.configService.data.version;\r\n }\r\n\r\n getApplicationName(): string {\r\n return this.configService.data.applicationName;\r\n }\r\n\r\n getApplicationAcronym(): string {\r\n return this.configService.data.applicationAcronym;\r\n }\r\n\r\n getFrozenDateTime(): Date {\r\n return this.frozenDateTime;\r\n }\r\n\r\n setFrozenTime(value: Date) {\r\n this.frozenDateTime = value;\r\n }\r\n\r\n getIsFrozen(): boolean {\r\n return this.isFrozen;\r\n }\r\n\r\n setIsFrozen(value: boolean) {\r\n this.isFrozen = value;\r\n }\r\n\r\n /**\r\n * Menu Methods\r\n */\r\n toggleMenu(): void {\r\n this.menuVisible = !this.menuVisible;\r\n }\r\n\r\n showMenu(): void {\r\n this.menuVisible = true;\r\n }\r\n\r\n hideMenu(): void {\r\n this.menuVisible = false;\r\n }\r\n\r\n isMenuVisible(): boolean {\r\n return this.menuVisible;\r\n }\r\n\r\n /**\r\n * Application Methods\r\n */\r\n\r\n setBrowserTitle(title: string) {\r\n this.titleService.setTitle(title + ' - ' + this.getApplicationAcronym() + ' - ' + this.sessionService.getPipeline().description);\r\n }\r\n\r\n /**\r\n * Application Error Handling\r\n */\r\n\r\n // Deprecated (should we just use the alert service?)\r\n clearMessages(): void {\r\n this.alertService.clearMessages();\r\n }\r\n\r\n /**\r\n * Google Analytics Methods\r\n */\r\n\r\n get analyticsEnabled(): boolean {\r\n return this.configService.data.analyticsEnabled;\r\n }\r\n\r\n get analyticsId(): string {\r\n return this.configService.data.analyticsId;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport * as decoder from 'jwt-decode';\r\n\r\n@Injectable()\r\nexport class JwtService {\r\n\r\n constructor() { }\r\n\r\n public decodeToken(token: string): any {\r\n\r\n let decoded: any;\r\n decoded = decoder(token);\r\n return decoded;\r\n }\r\n\r\n public getTokenExpirationDate(token: string): Date {\r\n let decoded: any;\r\n decoded = decoder(token);\r\n\r\n if (!decoded.hasOwnProperty('exp')) {\r\n return null;\r\n }\r\n\r\n const date = new Date(0); // The 0 here is the key, which sets the date to the epoch\r\n date.setUTCSeconds(decoded.exp);\r\n\r\n return date;\r\n }\r\n\r\n public isTokenExpired(token: string, offsetSeconds?: number): boolean {\r\n const date = this.getTokenExpirationDate(token);\r\n offsetSeconds = offsetSeconds || 0;\r\n\r\n if (date == null) {\r\n return false;\r\n }\r\n\r\n // Token expired?\r\n return !(date.valueOf() > (new Date().valueOf() + (offsetSeconds * 1000)));\r\n }\r\n}\r\n","import {EMPTY, of, Observable} from 'rxjs';\r\nimport {concatMap, share, map} from 'rxjs/operators';\r\nimport * as _ from \"lodash\";\r\nimport {Inject, Injectable} from '@angular/core';\r\nimport {JwtService} from \"../jwt/jwt.service\";\r\nimport {ConfigService} from \"../configuration/configuration.service\";\r\nimport {Router} from \"@angular/router\";\r\nimport {HttpClient, HttpHeaders} from \"@angular/common/http\";\r\nimport {OKTA_AUTH} from \"@okta/okta-angular\";\r\nimport {OktaAuth} from \"@okta/okta-auth-js\";\r\n\r\n\r\nexport interface SecurityTokenResponse {\r\n tokenType: string;\r\n accessToken: string;\r\n refreshToken: string;\r\n}\r\n\r\nexport interface AuthenticatedUser {\r\n unique_name: string;\r\n role: string[];\r\n}\r\n\r\nexport class UserClaims {\r\n // Seb - Maybe a better name for these?\r\n public static GCTS_Assumed_Role_Claim = 'http://transacanada.com/identity/claims/gcts-assumed-role';\r\n public static Enterprise_Id_Claim = 'http://transacanada.com/identity/claims/gcts-primary-enterprise';\r\n public static GCTS_User_Identifier_Claim = 'http://transacanada.com/identity/claims/gcts-userIdentifier';\r\n}\r\n\r\ninterface ClientTypeResponse {\r\n IsInternal: boolean;\r\n}\r\n\r\nexport class ClientType {\r\n isInternal: boolean;\r\n\r\n}\r\n\r\n@Injectable()\r\nexport class AuthenticationService {\r\n private static JWT_HEADER_NAME = 'Authorization';\r\n private static JWT_HEADER_VALUE_PREFIX = 'Bearer ';\r\n\r\n\r\n private readonly KEY_CURRENT_REFRESH_TOKEN: string = 'currentRefreshToken';\r\n private readonly KEY_CURRENT_RESOURCE_TOKEN: string = 'currentResourceToken';\r\n\r\n private _clientType: ClientType;\r\n\r\n // Shared observables.\r\n private loginWithRefreshToken$: Observable;\r\n private clientType$: Observable;\r\n\r\n constructor(private jwtService: JwtService,\r\n private configService: ConfigService,\r\n private router: Router,\r\n private http: HttpClient,\r\n @Inject(OKTA_AUTH) private oktaAuth: OktaAuth) {\r\n }\r\n\r\n authenticateByOkta(): Observable {\r\n let accessToken = null;\r\n const url = this.oktaAuthenticateUri;\r\n const authStateManager = this.oktaAuth.authStateManager;\r\n\r\n try {\r\n const accessTokenObj = authStateManager._authState.accessToken;\r\n accessToken = accessTokenObj.accessToken;\r\n\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n\r\n return this.http.post(url, {oktaAccessToken: accessToken});\r\n }\r\n\r\n assumeIdentity(enterpriseId: number): Observable {\r\n const url = `${this.securityUri}/assumeidentity`;\r\n return this.http.post(url, {enterpriseId: enterpriseId}, {headers: this.addJwtHeader()});\r\n }\r\n\r\n // Tries to authenticate in the following order:\r\n // 1) if valid, use the refresh token\r\n // 2) choose the user's client type\r\n // a) Internal User: login with Windows Auth\r\n // b) External User: Forward to the login page\r\n authenticate(forceLoginForm: boolean = false): Observable {\r\n if (forceLoginForm) {\r\n this.router.navigate([\"./login\"]).then(() => {});\r\n return of(null);\r\n }\r\n\r\n const refreshToken = this.getUserRefreshToken();\r\n if (!_.isNil(refreshToken) && !this.jwtService.isTokenExpired(refreshToken)) {\r\n // authenticate with the refresh token.\r\n return this.loginWithRefreshToken();\r\n } else {\r\n return this.getClientType().pipe(concatMap(clientType => {\r\n return this.authenticateByOkta();\r\n }));\r\n }\r\n }\r\n\r\n // sort-of copying what's in the uriservice because we have issues with circular dependencies\r\n private get securityUri() {\r\n const gatewayUri = this.configService.getGatewayUrl();\r\n const serviceUri = this.configService.securityServiceUri;\r\n return `${gatewayUri}/${serviceUri}`;\r\n }\r\n\r\n public get clientTypeCheckUri() {\r\n const gatewayUri = this.configService.getGatewayUrl();\r\n return `${gatewayUri}/client`;\r\n }\r\n\r\n public get authenticateUri() {\r\n return `${this.securityUri}/authenticate`;\r\n }\r\n\r\n public get oktaAuthenticateUri() {\r\n return `${this.securityUri}/authenticate/okta`;\r\n }\r\n\r\n public isInternal(): Observable {\r\n return this.getClientType().pipe(\r\n map(clientType => clientType.isInternal)\r\n );\r\n }\r\n\r\n private loginWithRefreshToken(): Observable {\r\n if (this.loginWithRefreshToken$) {\r\n return this.loginWithRefreshToken$;\r\n } else {\r\n this.loginWithRefreshToken$ = this.http.post(this.authenticateUri, {refreshToken: this.getUserRefreshToken()}).pipe(\r\n map(response => {\r\n this.loginWithRefreshToken$ = null;\r\n return response;\r\n }),\r\n share());\r\n\r\n return this.loginWithRefreshToken$;\r\n }\r\n }\r\n\r\n private getClientType(): Observable {\r\n if (this._clientType) {\r\n return of(this._clientType);\r\n } else if (this.clientType$) {\r\n return this.clientType$;\r\n } else {\r\n this.clientType$ = this.http.get(this.clientTypeCheckUri).pipe(\r\n map(res => {\r\n this.clientType$ = null;\r\n this._clientType = new ClientType();\r\n this._clientType.isInternal = res.IsInternal;\r\n return this._clientType;\r\n }),\r\n share(),);\r\n return this.clientType$;\r\n }\r\n }\r\n\r\n /***\r\n * This is used to add the current user's JWT token to the request when trying to assume identity. The reason why\r\n * this is not using the HttpService is because it would cause a circular reference. Also, because when requesting\r\n * for assume identity, it should always use the current user's token.\r\n *\r\n */\r\n private addJwtHeader(): HttpHeaders {\r\n let headers = new HttpHeaders();\r\n headers = headers.set(AuthenticationService.JWT_HEADER_NAME, AuthenticationService.JWT_HEADER_VALUE_PREFIX + this.getUserResourceToken());\r\n return headers;\r\n }\r\n\r\n // TODO: Should we move these into another service shared by other services?\r\n private getUserRefreshToken(): string {\r\n return localStorage.getItem(this.KEY_CURRENT_REFRESH_TOKEN);\r\n }\r\n\r\n private getUserResourceToken(): string {\r\n return localStorage.getItem(this.KEY_CURRENT_RESOURCE_TOKEN);\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\nimport {AuthenticatedUser, UserClaims} from \"../services/webapp/authentication/authentication.service\";\r\nimport {NominationPipeline} from \"@model/nomination-pipeline\";\r\n\r\nexport class User {\r\n public static readonly NominationSpecialistRole: string = 'NominationSpecialist';\r\n public static readonly NominationAnalystRole: string = 'NominationAnalyst';\r\n public static readonly NominationAdministratorRole: string = 'NominationAdministrator';\r\n public static readonly NominationsTransactorRole: string = 'NominationsTransactor';\r\n public static readonly NominationsViewRole: string = 'NominationsView';\r\n public static readonly SupportRole: string = 'Support';\r\n public static readonly ExternalOperatorTransactorRole: string = 'ExternalOperatorTransactor';\r\n\r\n private _roles: string[] = [];\r\n private _assumedRoles: string[] = [];\r\n private readonly _assumedEnterpriseId: number;\r\n private _assumedEnterpriseShortName: string;\r\n private _assumedEnterpriseMnemonic: string;\r\n private readonly _primaryEnterpriseId: number;\r\n private readonly _userIdentifier: string;\r\n\r\n constructor(private user: AuthenticatedUser) {\r\n this.setRoles();\r\n this.setAssumedRoles();\r\n\r\n const enterpriseId = this.user[UserClaims.Enterprise_Id_Claim];\r\n this._primaryEnterpriseId = this.assumedRoles.length === 0 ? enterpriseId : null;\r\n this._assumedEnterpriseId = this.assumedRoles.length === 0 ? null : enterpriseId;\r\n this._userIdentifier = this.user[UserClaims.GCTS_User_Identifier_Claim];\r\n }\r\n\r\n private setRoles(): void {\r\n if (this.user.role instanceof Array) {\r\n this._roles = this.user.role;\r\n } else {\r\n this._roles.push(this.user.role);\r\n }\r\n }\r\n\r\n private setAssumedRoles(): void {\r\n const tokenData = this.user[UserClaims.GCTS_Assumed_Role_Claim];\r\n\r\n if (_.isNil(tokenData)) {\r\n return;\r\n }\r\n\r\n if (tokenData instanceof Array) {\r\n this._assumedRoles = tokenData;\r\n } else {\r\n this._assumedRoles.push(tokenData);\r\n }\r\n }\r\n\r\n public get roles(): string[] {\r\n return this._roles;\r\n }\r\n\r\n public get assumedRoles(): string[] {\r\n return this._assumedRoles;\r\n }\r\n\r\n private get assumedEnterpriseId(): number | undefined {\r\n return this._assumedEnterpriseId;\r\n }\r\n\r\n private get primaryEnterpriseId(): number | undefined {\r\n return this._primaryEnterpriseId;\r\n }\r\n\r\n public get enterpriseId(): number | undefined {\r\n return this.isAssumingIdentity\r\n ? this._assumedEnterpriseId\r\n : this._primaryEnterpriseId;\r\n }\r\n\r\n public get assumedEnterpriseShortName(): string {\r\n return this._assumedEnterpriseShortName;\r\n }\r\n\r\n public get enterpriseDisplayName(): string {\r\n if (this.isAssumingIdentity) {\r\n return this.assumedEnterpriseDisplayName;\r\n } else {\r\n return `${this.assumedEnterpriseShortName} (${this._assumedEnterpriseMnemonic})`;\r\n }\r\n }\r\n\r\n public get assumedEnterpriseDisplayName(): string {\r\n return this._assumedEnterpriseShortName + ' (' + this._assumedEnterpriseMnemonic + ')';\r\n }\r\n\r\n public get assumedEnterpriseMnemonic(): string {\r\n return this._assumedEnterpriseMnemonic;\r\n }\r\n\r\n public get username(): string {\r\n return this.user.unique_name; // TODO: Remove Domain\r\n }\r\n\r\n public get isInternalUser(): boolean {\r\n return this._primaryEnterpriseId == null;\r\n }\r\n\r\n public get isAssumingIdentity(): boolean {\r\n return this._assumedEnterpriseId != null;\r\n }\r\n\r\n public get isExternalUser(): boolean {\r\n return this.isAssumingIdentity || !this.isInternalUser;\r\n }\r\n\r\n\r\n public hasRolesInByCode(pipelineCode: string): boolean {\r\n return _.some(this.roles, r => {\r\n return this.getPipelineCodeForRole(r) === pipelineCode;\r\n });\r\n }\r\n\r\n public hasRolesIn(pipeline: NominationPipeline): boolean {\r\n return this.hasRolesInByCode(pipeline.code);\r\n }\r\n\r\n public hasAnyRole(roles: string[]): boolean {\r\n const intersectedRoles = _.intersection(this._roles, roles);\r\n\r\n return !_.isEmpty(intersectedRoles);\r\n }\r\n\r\n private getPipelineCodeForRole(role: string): string {\r\n if (_.isEmpty(role)) { return null; }\r\n\r\n if (role.startsWith('ML_')) { return 'ML'; }\r\n if (role.startsWith('GLC_')) { return 'GLC'; }\r\n if (role.startsWith('CGL_')) { return 'CGL'; }\r\n return null;\r\n }\r\n\r\n public getPipelineCodes(): string[] {\r\n const pipelineCodes = _\r\n .chain(this.roles)\r\n .map(role => this.getPipelineCodeForRole(role))\r\n .uniq()\r\n .value();\r\n return pipelineCodes;\r\n }\r\n\r\n public get userIdentifier(): string | undefined {\r\n return this._userIdentifier;\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\n\r\nimport {Injectable} from '@angular/core';\r\n\r\nimport {User} from \"@model/user\";\r\nimport {CapabilityMap} from \"@shared/interfaces/capability-map\";\r\nimport {ConfigService} from \"@shared/services/webapp/configuration/configuration.service\";\r\n\r\n@Injectable()\r\nexport class CapabilitiesService {\r\n // tslint:disable-next-line:variable-name\r\n private static AssumeIdentityWriteCapability = 'AssumeCustomerIdentity-Write';\r\n\r\n private capabilities: {[capability: string]: string[]};\r\n\r\n constructor(\r\n private configService: ConfigService // TODO - can remove when we want to display Invoice View externally again\r\n )\r\n { }\r\n\r\n // TODO: Write some tests, especially around the assume identity stuff!\r\n hasCapabilities(capabilities: Array, user: User, pipelineCode: string): boolean {\r\n const allCapabilities = this.getCapabilities();\r\n let hasCapabilities: boolean = false;\r\n\r\n // If Assuming Identity, we need to ensure they can still hit the Assume Identity Page\r\n if (user.isAssumingIdentity) {\r\n // This is a bit deceiving - includes is used in the context of does the string include the following substring,\r\n // rather than say from a collection of all role capabilities\r\n if (_.includes(capabilities, CapabilitiesService.AssumeIdentityWriteCapability)) {\r\n hasCapabilities = true;\r\n }\r\n }\r\n\r\n // Standard Capability Check\r\n _.each(capabilities, capability => {\r\n const key = pipelineCode + \"-\" + capability;\r\n\r\n let containsRoles = _.intersection(allCapabilities[key], user.roles);\r\n if (user.isAssumingIdentity && !_.isEmpty(containsRoles)) {\r\n containsRoles = _.intersection(allCapabilities[key], user.assumedRoles);\r\n }\r\n\r\n if (!_.isEmpty(containsRoles)) {\r\n hasCapabilities = true;\r\n }\r\n });\r\n\r\n return hasCapabilities;\r\n }\r\n\r\n\r\n private getCapabilities(): CapabilityMap {\r\n if (_.isNil(this.capabilities)) {\r\n const capabilities: CapabilityMap = {};\r\n\r\n // Can this be moved to a json file?\r\n\r\n // Role capabilities for the Mainline\r\n capabilities['ML-ConfigureJobSchedules-Read'] = ['ML_InvoiceAnalyst', 'ML_NominationAnalyst', 'ML_NominationAdministrator', 'ML_Support', 'ML_FlowingGasAdministrator', 'ML_InvoiceAdministrator'];\r\n capabilities['ML-ConfigureJobSchedules-Write'] = ['ML_NominationAdministrator', 'ML_Support', 'ML_FlowingGasAdministrator', 'ML_InvoiceAdministrator'];\r\n capabilities['ML-JobRunner-Write'] = ['ML_NominationAdministrator', 'ML_Support', 'ML_FlowingGasAdministrator', 'ML_InvoiceAdministrator'];\r\n capabilities['ML-ViewJobHistory-Read'] = ['ML_InvoiceAnalyst', 'ML_NominationAnalyst', 'ML_NominationAdministrator', 'ML_Support', 'ML_FlowingGasAdministrator', 'ML_InvoiceAdministrator'];\r\n capabilities['ML-Support-Read'] = ['ML_Support', 'ML_FlowingGasAdministrator', 'ML_InvoiceAdministrator'];\r\n capabilities['ML-ApplicationConfiguration-Write'] = ['ML_Support', 'ML_FlowingGasAdministrator', 'ML_InvoiceAdministrator', 'ML_NominationAdministrator'];\r\n capabilities['ML-ClearCache-Write'] = ['ML_Support', 'ML_FlowingGasAdministrator', 'ML_InvoiceAdministrator'];\r\n // This only shows up on the support page which runs only on the ML Support page\r\n capabilities['ML-OperationalQty-Calculate'] = ['ML_Support'];\r\n capabilities['ML-LoadBidFloors-Write'] = ['ML_BidFloorPersonnel'];\r\n capabilities['ML-ViewBidFloors-Read'] = ['ML_InvoiceAnalyst', 'ML_NominationAnalyst', 'ML_ViewOnly', 'ML_Support', 'ML_BidFloorPersonnel'];\r\n capabilities['ML-BfpDailyTransportationSummary-Read'] = ['ML_BidFloorPersonnel', 'ML_NominationAnalyst', 'ML_Support'];\r\n capabilities['ML-ITBidFloorAverageReport-Read'] = ['ML_NominationAnalyst', 'ML_NominationAdministrator', 'ML_NominationSpecialist', 'ML_Support'];\r\n\r\n capabilities['ML-LoadFuelRatios-Write'] = ['ML_NominationAnalyst'];\r\n capabilities['ML-ViewFuelRatios-Read'] = ['ML_InvoiceAnalyst', 'ML_NominationAnalyst', 'ML_ViewOnly', 'ML_Support', 'ML_BidFloorPersonnel'];\r\n capabilities['ML-HourlyFlowMaintenance-Read'] = ['ML_NominationAnalyst', 'ML_Support'];\r\n capabilities['ML-HourlyFlowMaintenance-Write'] = ['ML_NominationAnalyst'];\r\n capabilities['ML-NominationRequests-Read'] = ['ML_InvoiceAnalyst', 'ML_NominationAnalyst', 'ML_ViewOnly', 'ML_Support', 'ML_OperatorTransactor', 'ML_NominationsTransactor', 'ML_NominationsView', 'ML_OperatorView', 'ML_NominationAdministrator'];\r\n capabilities['ML-NominationRequests-Write'] = ['ML_NominationAnalyst', 'ML_NominationsTransactor', 'ML_OperatorTransactor', 'ML_NominationAdministrator'];\r\n capabilities['ML-NominationRequests-OneDay-Adjustment'] = ['ML_NominationAnalyst'];\r\n capabilities['ML-NominationRequests-Full-Adjustment'] = ['ML_NominationSpecialist'];\r\n capabilities['ML-NominationRequests-EditMode'] = ['ML_NominationAdministrator', 'ML_NominationAnalyst', 'ML_NominationSpecialist'];\r\n capabilities['ML-GasCycleStatus-Read'] = ['ML_NominationAnalyst', 'ML_Support'];\r\n capabilities['ML-GasCycleStatus-BalanceAndSchedule'] = ['ML_NominationAnalyst'];\r\n capabilities['ML-GasCycleStatus-OpenAndCloseNomWindow'] = ['ML_NominationAdministrator', 'ML_NominationAnalyst'];\r\n capabilities['ML-GasCycleStatus-Unschedule'] = ['ML_NominationAdministrator'];\r\n capabilities['ML-GasCycleStatus-Reset'] = ['ML_NominationAdministrator'];\r\n capabilities['ML-AccountBalance-Update'] = ['ML_NominationAnalyst'];\r\n capabilities['ML-NominationExceptions-Read'] = ['ML_NominationAnalyst', 'ML_Support'];\r\n capabilities['ML-TransportationSummary-Write'] = ['ML_NominationAnalyst', 'ML_NominationAdministrator'];\r\n\r\n // capabilities['ML-TransportationSummary-Read'] = ['ML_InvoiceAnalyst', 'ML_NominationAnalyst', 'ML_ViewOnly', 'ML_Support', 'ML_NominationsView', 'ML_NominationsTransactor'];\r\n capabilities['ML-TransportationSummary-Internal-Read'] = ['ML_InvoiceAnalyst', 'ML_NominationAnalyst', 'ML_ViewOnly', 'ML_Support'];\r\n capabilities['ML-TransportationSummary-External-Read'] = ['ML_NominationsView', 'ML_OperatorView', 'ML_NominationsTransactor', 'ML_OperatorTransactor', 'ML_InvoiceAnalyst', 'ML_NominationAnalyst', 'ML_ViewOnly', 'ML_Support'];\r\n\r\n capabilities['ML-ConfirmationMonitor-SendCR'] = ['ML_NominationAnalyst'];\r\n capabilities['ML-ConfirmationMonitor-Write'] = ['ML_NominationAnalyst', 'ML_OperatorTransactor'];\r\n capabilities['ML-ConfirmationMonitor-Read'] = ['ML_NominationAnalyst', 'ML_Support', 'ML_OperatorView', 'ML_OperatorTransactor'];\r\n\r\n capabilities['ML-ConfirmationDetails-Read'] = ['ML_NominationAnalyst', 'ML_Support', 'ML_OperatorView', 'ML_OperatorTransactor', 'ML_ViewOnly', 'ML_InvoiceAnalyst'];\r\n capabilities['ML-ConfirmationDetails-Basic-Write'] = ['ML_NominationAnalyst', 'ML_OperatorTransactor'];\r\n capabilities['ML-ConfirmationDetails-Elevated-Write'] = ['ML_NominationAnalyst'];\r\n capabilities['ML-CustodyTransferReport-Read'] = ['ML_NominationAnalyst','ML_Support'];\r\n\r\n capabilities['ML-ConfirmationDetails-PPA-OneDay-Adjustment'] = ['ML_NominationAnalyst'];\r\n capabilities['ML-ConfirmationDetails-PPA-Full-Adjustment'] = ['ML_NominationSpecialist'];\r\n\r\n capabilities['ML-ConfirmationHistory-Read'] = ['ML_InvoiceAnalyst', 'ML_NominationAnalyst', 'ML_ViewOnly', 'ML_Support', 'ML_OperatorView', 'ML_OperatorTransactor'];\r\n capabilities['ML-AccountSummary-Read'] = ['ML_InvoiceAnalyst', 'ML_NominationAnalyst', 'ML_ViewOnly', 'ML_Support', 'ML_NominationsView', 'ML_NominationsTransactor'];\r\n capabilities['ML-ScheduledQuantityAdjustments-Read'] = ['ML_NominationAnalyst', 'ML_NominationSpecialist', 'ML_Support'];\r\n capabilities['ML-ScheduledQuantityAdjustments-Write'] = ['ML_NominationAnalyst', 'ML_NominationSpecialist'];\r\n capabilities['ML-AgentMaintenance-Read'] = ['ML_InvoiceAnalyst', 'ML_NominationAnalyst', 'ML_ViewOnly', 'ML_Support', 'ML_ContractAnalyst'];\r\n capabilities['ML-AgentMaintenance-Write'] = ['ML_NominationAnalyst', 'ML_ContractAnalyst'];\r\n capabilities['ML-StorageLimit-Internal-Read'] = ['ML_InvoiceAnalyst', 'ML_NominationAnalyst', 'ML_Support', 'ML_ContractAnalyst'];\r\n capabilities['ML-StorageLimit-External-Read'] = ['ML_InvoiceAnalyst', 'ML_NominationAnalyst', 'ML_Support', 'ML_ContractAnalyst', 'ML_NominationsTransactor', 'ML_NominationsView'];\r\n capabilities['ML-StorageLimit-Write'] = ['ML_NominationAdministrator', 'ML_ContractAnalyst'];\r\n capabilities['ML-TitleTransferReport-Read'] = ['ML_InvoiceAnalyst', 'ML_NominationAnalyst', 'ML_ViewOnly', 'ML_Support', 'ML_NominationsTransactor', 'ML_NominationsView'];\r\n capabilities['ML-TitleTransferReport-Write'] = ['ML_NominationAnalyst', 'ML_NominationsTransactor'];\r\n capabilities['ML-TitleTransferWaivers-Read'] = ['ML_NominationAnalyst', 'ML_Support', 'ML_NominationsTransactor', 'ML_NominationsView'];\r\n capabilities['ML-TitleTransferWaivers-Write'] = ['ML_NominationAnalyst', 'ML_NominationsTransactor'];\r\n capabilities['ML-ImbalanceTransferTransactions-Write'] = ['ML_NominationAdministrator', 'ML_NominationSpecialist'];\r\n capabilities['ML-ImbalanceTransferTransactions-OneDay-Adjustment'] = ['ML_NominationAdministrator'];\r\n capabilities['ML-ImbalanceTransferTransactions-Full-Adjustment'] = ['ML_NominationSpecialist'];\r\n capabilities['ML-ImbalanceTransferTransactions-Read'] = ['ML_NominationAnalyst', 'ML_NominationAdministrator', 'ML_NominationSpecialist', 'ML_Support'];\r\n capabilities['ML-AutoBalanceEvents-Read'] = ['ML_NominationAnalyst', 'ML_Support'];\r\n capabilities['ML-AutoBalanceDetails-Read'] = ['ML_NominationAnalyst', 'ML_Support'];\r\n capabilities['ML-ContractDemandEnergy-Read'] = [];\r\n\r\n capabilities['ML-CreditExposureReport-Read'] = ['ML_NominationAnalyst', 'ML_InvoiceAnalyst', 'ML_ContractAnalyst', 'ML_CounterPartyRiskAnalyst', 'ML_Support'];\r\n capabilities['ML-ArchivedCreditReport-Read'] = ['ML_NominationAnalyst', 'ML_InvoiceAnalyst', 'ML_ContractAnalyst', 'ML_CounterPartyRiskAnalyst', 'ML_Support'];\r\n capabilities['ML-CreditOverageReport-Read'] = ['ML_NominationAnalyst', 'ML_InvoiceAnalyst', 'ML_ContractAnalyst', 'ML_CounterPartyRiskAnalyst', 'ML_Support'];\r\n capabilities['ML-EnterprisePublish-Write'] = ['ML_Support'];\r\n capabilities['ML-LoadLocations-Write'] = ['ML_NominationAdministrator', 'ML_FlowingGasAdministrator', 'ML_InvoiceAdministrator'];\r\n capabilities['ML-LoadLocationParameters-Write'] = ['ML_NominationAdministrator', 'ML_FlowingGasAdministrator', 'ML_InvoiceAdministrator'];\r\n capabilities['ML-LoadLocationRelationships-Write'] = ['ML_NominationAdministrator', 'ML_FlowingGasAdministrator', 'ML_InvoiceAdministrator'];\r\n capabilities['ML-LoadOmvRelationships-Write'] = ['ML_NominationAdministrator', 'ML_FlowingGasAdministrator', 'ML_InvoiceAdministrator'];\r\n capabilities['ML-LoadLbaLocationTolerances-Write'] = ['ML_NominationAdministrator', 'ML_FlowingGasAdministrator', 'ML_InvoiceAdministrator'];\r\n capabilities['ML-LoadSecondaryLocations-Write'] = ['ML_NominationAdministrator', 'ML_FlowingGasAdministrator', 'ML_InvoiceAdministrator'];\r\n capabilities['ML-PublishAccountingLocation-Write'] = ['ML_NominationAdministrator', 'ML_FlowingGasAdministrator', 'ML_InvoiceAdministrator'];\r\n capabilities['ML-AssumeCustomerIdentity-Write'] = ['ML_InvoiceAnalyst', 'ML_NominationAnalyst', 'ML_ViewOnly', 'ML_Support'];\r\n capabilities['ML-Health-Read'] = ['ML_Support'];\r\n capabilities['ML-FailInProgressJobs-Write'] = ['ML_Support'];\r\n capabilities['ML-Home-Read'] = ['ML_InvoiceAnalyst', 'ML_NominationAnalyst', 'ML_NominationAdministrator', 'ML_ViewOnly', 'ML_Support', 'ML_FlowingGasAdministrator', 'ML_InvoiceAdministrator', 'ML_ContractAnalyst', 'ML_PricingAnalyst', 'ML_BidFloorPersonnel', 'ML_OperatorView', 'ML_InvoiceView', 'ML_OperatorTransactor', 'ML_NominationsTransactor', 'ML_NominationsView', 'ML_CounterPartyRiskAnalyst', 'ML_TemporaryAssignmentView'];\r\n capabilities['ML-Home-Write'] = ['ML_NominationAdministrator', 'ML_FlowingGasAdministrator', 'ML_InvoiceAdministrator', 'ML_Support'];\r\n capabilities['ML-TestPage-Read'] = ['ML_InvoiceAnalyst', 'ML_NominationAnalyst', 'ML_NominationAdministrator', 'ML_ViewOnly', 'ML_Support', 'ML_FlowingGasAdministrator', 'ML_InvoiceAdministrator', 'ML_ContractAnalyst', 'ML_PricingAnalyst', 'ML_BidFloorPersonnel'];\r\n\r\n capabilities['ML-PendingStsNominations-Read'] = ['ML_NominationAnalyst', 'ML_Support', 'ML_NominationsTransactor'];\r\n capabilities['ML-PendingStsNominations-Write'] = ['ML_NominationAnalyst'];\r\n capabilities['ML-PendingStsNominations-ApproveReject'] = ['ML_NominationAnalyst', 'ML_NominationSpecialist'];\r\n capabilities['ML-MinimumItBidRate-Read'] = ['ML_NominationAnalyst', 'ML_ViewOnly', 'ML_Support', 'ML_NominationsTransactor', 'ML_NominationsView'];\r\n capabilities['ML-ContractUtilization-Read'] = ['ML_NominationAnalyst', 'ML_ViewOnly', 'ML_InvoiceAnalyst', 'ML_Support', 'ML_NominationsTransactor', 'ML_NominationsView'];\r\n capabilities['ML-AccountContractSummary-Read'] = ['ML_ContractAnalyst', 'ML_NominationAnalyst', 'ML_ViewOnly', 'ML_InvoiceAnalyst', 'ML_Support', 'ML_NominationsTransactor', 'ML_NominationsView'];\r\n // tslint:disable-next-line:max-line-length\r\n capabilities['ML-ViewAgents-Read'] = ['ML_InvoiceAnalyst', 'ML_NominationAnalyst', 'ML_ViewOnly', 'ML_Support', 'ML_ContractAnalyst', 'ML_OperatorView', 'ML_InvoiceView', 'ML_OperatorTransactor', 'ML_NominationsTransactor', 'ML_NominationsView'];\r\n capabilities['ML-ContractsAwaitingProcessing-Read'] = ['ML_Support', 'ML_ContractAnalyst', 'ML_NominationAnalyst'];\r\n capabilities['ML-ContractsAwaitingProcessing-Write'] = ['ML_ContractAnalyst', 'ML_NominationAnalyst'];\r\n capabilities['ML-UnsubscribeEmailNotifications-Read'] = ['ML_NominationAnalyst', 'ML_InvoiceAnalyst'];\r\n capabilities['ML-ViewAccounts-Read'] = ['ML_ContractAnalyst', 'ML_NominationAnalyst', 'ML_InvoiceAnalyst', 'ML_Support', 'ML_ViewOnly'];\r\n capabilities['ML-ViewAccounts-Write'] = ['ML_ContractAnalyst'];\r\n capabilities['ML-PALSAccountView-Write'] = [];\r\n capabilities['ML-TemporaryAssignment-Read'] = ['ML_NominationAnalyst', 'ML_ViewOnly', 'ML_Support', 'ML_InvoiceAnalyst', 'ML_ContractAnalyst', 'ML_NominationsTransactor', 'ML_NominationsView', 'ML_TemporaryAssignmentView'];\r\n capabilities['ML-AccountSummaryByLocationDaily-Read'] = ['ML_InvoiceAnalyst', 'ML_NominationAnalyst', 'ML_ViewOnly', 'ML_Support', 'ML_OperatorView', 'ML_InvoiceView'];\r\n capabilities['ML-AccountSummaryByLocationMonthly-Read'] = ['ML_InvoiceAnalyst', 'ML_NominationAnalyst', 'ML_ViewOnly', 'ML_Support', 'ML_OperatorView', 'ML_InvoiceView'];\r\n capabilities['ML-PriorDayPendingActivities-Read'] = ['ML_InvoiceAnalyst', 'ML_NominationAnalyst', 'ML_NominationAdministrator', 'ML_Support'];\r\n capabilities['ML-PriorDayPendingActivities-Write'] = ['ML_InvoiceAnalyst', 'ML_NominationAnalyst', 'ML_NominationAdministrator'];\r\n capabilities['ML-VolumeEnergyComposition-Read'] = ['ML_InvoiceAnalyst', 'ML_NominationAnalyst', 'ML_ViewOnly', 'ML_Support', 'ML_OperatorView'];\r\n capabilities['ML-UniformHourlyFlow-Read'] = ['ML_InvoiceAnalyst','ML_NominationAnalyst', 'ML_ViewOnly', 'ML_Support','ML_OperatorView','ML_InvoiceView' ,'ML_OperatorTransactor', 'ML_NominationsTransactor','ML_NominationsView'];\r\n capabilities['ML-PalsBillingDetailReport-Read'] = ['ML_InvoiceAnalyst', 'ML_NominationAnalyst', 'ML_ViewOnly', 'ML_Support','ML_OperatorView','ML_InvoiceView'];\r\n capabilities['ML-TransportationAccountDetail-Read'] = ['ML_InvoiceAnalyst', 'ML_InvoiceView', 'ML_NominationAnalyst', 'ML_ViewOnly', 'ML_Support', 'ML_OperatorView'];\r\n capabilities['ML-MakeupNominations-Read'] = ['ML_InvoiceAnalyst', 'ML_NominationAnalyst', 'ML_NominationAdministrator', 'ML_ViewOnly', 'ML_Support'];\r\n capabilities['ML-MakeupNominations-Write'] = ['ML_NominationAnalyst', 'ML_NominationAdministrator'];\r\n capabilities['ML-SystemBalance-Read'] = ['ML_NominationAnalyst', 'ML_NominationAdministrator', 'ML_InvoiceAnalyst','ML_ViewOnly', 'ML_Support'];\r\n\r\n capabilities['ML-ITPenalties-Read'] = ['ML_InvoiceAnalyst', 'ML_NominationAnalyst', 'ML_NominationAdministrator', 'ML_ViewOnly', ];\r\n capabilities['ML-ITPenalties-Write'] = ['ML_InvoiceAnalyst', 'ML_NominationAnalyst', 'ML_NominationAdministrator'];\r\n capabilities['ML-ViewMeasurement-Read'] = ['ML_InvoiceAnalyst', 'ML_NominationAnalyst', 'ML_NominationAdministrator', 'ML_ViewOnly', 'ML_Support'];\r\n capabilities['ML-OperatorBalanceReport-Read'] = ['ML_InvoiceAnalyst', 'ML_NominationAnalyst', 'ML_ViewOnly', 'ML_Support', 'ML_OperatorView'];\r\n capabilities['ML-BilledBalancingFeesReport-Read'] = ['ML_InvoiceAnalyst', 'ML_NominationAnalyst', 'ML_ViewOnly', 'ML_Support', 'ML_OperatorView', 'ML_InvoiceView'];\r\n capabilities['ML-PendingPriorPeriodAdjustment-Read'] = ['ML_InvoiceAnalyst', 'ML_NominationAnalyst', 'ML_NominationAdministrator', 'ML_ViewOnly', 'ML_Support'];\r\n capabilities['ML-PendingPriorPeriodAdjustment-Write'] = ['ML_InvoiceAnalyst', 'ML_NominationAnalyst', 'ML_NominationAdministrator'];\r\n capabilities['ML-StorageTransportationBalance-Read'] = ['ML_InvoiceAnalyst', 'ML_NominationAnalyst', 'ML_ViewOnly', 'ML_Support', 'ML_OperatorView', 'ML_InvoiceView'];\r\n capabilities['ML-ViewInvoices-Read'] = ['ML_InvoiceAnalyst', 'ML_NominationAnalyst', 'ML_ViewOnly', 'ML_Support', 'ML_InvoiceView'];\r\n capabilities['ML-ViewInvoices-DownloadAll'] = ['ML_InvoiceAnalyst', 'ML_Support'];\r\n capabilities['ML-ViewManualAdjustment-Read'] = ['ML_InvoiceAnalyst', 'ML_NominationAnalyst', 'ML_ViewOnly', 'ML_Support'];\r\n capabilities['ML-ViewManualAdjustment-Write'] = ['ML_InvoiceAnalyst'];\r\n capabilities['ML-LoadManualAdjustment-Write'] = ['ML_InvoiceAnalyst'];\r\n capabilities['ML-LbaExcessQuantity-Read'] = ['ML_InvoiceAnalyst', 'ML_NominationAnalyst', 'ML_ViewOnly', 'ML_Support'];\r\n capabilities['ML-LbaExcessQuantity-Write'] = ['ML_InvoiceAnalyst'];\r\n capabilities['ML-ManualTransactions-Read'] = ['ML_InvoiceAnalyst', 'ML_NominationAnalyst', 'ML_ViewOnly', 'ML_Support'];\r\n capabilities['ML-ManualTransactions-Write'] = ['ML_InvoiceAnalyst', 'ML_NominationAnalyst'];\r\n capabilities['ML-InvoiceBusinessMessages-Read'] = ['ML_InvoiceAnalyst', 'ML_NominationAnalyst', 'ML_Support'];\r\n capabilities['ML-GenerateCharges-Read'] = ['ML_InvoiceAnalyst', 'ML_Support'];\r\n capabilities['ML-GenerateCharges-Write'] = ['ML_InvoiceAnalyst'];\r\n capabilities['ML-PublishInvoices-Read'] = ['ML_InvoiceAnalyst', 'ML_Support'];\r\n capabilities['ML-PublishInvoices-Publish'] = ['ML_InvoiceAnalyst'];\r\n capabilities['ML-StatisticsCanadaDownload-Read'] = ['ML_InvoiceAnalyst', 'ML_Support'];\r\n capabilities['ML-PrintInvoices-Read'] = ['ML_InvoiceAnalyst', 'ML_Support'];\r\n capabilities['ML-PrintInvoices-Print'] = ['ML_InvoiceAnalyst'];\r\n capabilities['ML-OutstandingBalanceExport-Read'] = ['ML_InvoiceAnalyst', 'ML_NominationAnalyst', 'ML_ViewOnly', 'ML_Support'];\r\n capabilities['ML-AccountsReceivable-Read'] = ['ML_InvoiceAnalyst', 'ML_Support'];\r\n capabilities['ML-AccountsReceivable-Write'] = ['ML_InvoiceAnalyst'];\r\n capabilities['ML-InvoiceMonitor-Read'] = ['ML_InvoiceAnalyst', 'ML_Support'];\r\n capabilities['ML-InvoiceMonitor-Write'] = ['ML_InvoiceAnalyst'];\r\n capabilities['ML-TransactionExport-Read']=['ML_InvoiceAnalyst', 'ML_NominationAnalyst', 'ML_ViewOnly', 'ML_Support'];\r\n capabilities['ML-DailyDiscretionaryRevenue-Read'] = ['ML_InvoiceAnalyst', 'ML_NominationAnalyst', 'ML_ViewOnly', 'ML_Support', 'ML_ContractAnalyst', 'ML_PricingAnalyst'];\r\n capabilities['ML-BalancingFeesSummaryReport-Read'] = ['ML_InvoiceAnalyst', 'ML_NominationAnalyst', 'ML_ViewOnly', 'ML_Support'];\r\n capabilities['ML-ClassOfServiceReport-Read'] = ['ML_InvoiceAnalyst', 'ML_NominationAnalyst', 'ML_ViewOnly', 'ML_Support'];\r\n capabilities['ML-StsBalanceSummary-Read'] = ['ML_InvoiceAnalyst', 'ML_NominationAnalyst', 'ML_ViewOnly', 'ML_Support'];\r\n capabilities['ML-LoadTolls-Read'] = ['ML_InvoiceAnalyst'];\r\n capabilities['ML-LoadTolls-Write'] = ['ML_InvoiceAnalyst'];\r\n capabilities['ML-ViewTolls-Read'] = ['ML_InvoiceAnalyst', 'ML_NominationAnalyst', 'ML_ViewOnly', 'ML_Support'];\r\n capabilities['ML-ViewTolls-Write'] = ['ML_InvoiceAnalyst'];\r\n capabilities['ML-ExpectedPaymentReport-Read'] = ['ML_InvoiceAnalyst', 'ML_NominationAnalyst', 'ML_ViewOnly', 'ML_Support'];\r\n capabilities['ML-StsTransferBalance-Read'] = ['ML_InvoiceAnalyst', 'ML_NominationAnalyst', 'ML_Support'];\r\n capabilities['ML-StsTransferBalance-Write'] = ['ML_InvoiceAnalyst'];\r\n capabilities['ML-BillingMonth-Read'] = ['ML_InvoiceAnalyst', 'ML_NominationAnalyst', 'ML_NominationAdministrator', 'ML_Support'];\r\n capabilities['ML-BillingMonth-Write'] = ['ML_InvoiceAnalyst'];\r\n capabilities['ML-BillingMonth-FinalizeMeasurement-Write'] = ['ML_InvoiceAnalyst', 'ML_NominationAnalyst', 'ML_NominationAdministrator'];\r\n capabilities['ML-BillingMonth-FinalizeAllocationAndBalancing-Write'] = ['ML_InvoiceAnalyst', 'ML_NominationAnalyst', 'ML_NominationAdministrator'];\r\n capabilities['ML-CustomerInvoiceParameters-Read'] = ['ML_InvoiceAnalyst', 'ML_NominationAnalyst', 'ML_NominationAdministrator', 'ML_ViewOnly', 'ML_Support'];\r\n capabilities['ML-CustomerInvoiceParameters-Write'] = ['ML_InvoiceAnalyst'];\r\n capabilities['ML-CustomerCertifiedGasParameters-Read'] = ['ML_InvoiceAnalyst', 'ML_NominationAnalyst', 'ML_ViewOnly', 'ML_ContractAnalyst'];\r\n capabilities['ML-CustomerCertifiedGasParameters-Write'] = ['ML_ContractAnalyst'];\r\n capabilities['ML-CoverPageDetail-Write'] = ['ML_InvoiceAdministrator'];\r\n capabilities['ML-CoverPageContacts-Write'] = ['ML_InvoiceAdministrator'];\r\n capabilities['ML-StsBalanceParameters-Read'] = ['ML_InvoiceAnalyst','ML_NominationAnalyst', 'ML_ViewOnly', 'ML_Support'];\r\n capabilities['ML-StsBalanceParameters-Write'] = ['ML_InvoiceAnalyst'];\r\n capabilities['ML-ContractPricing-Read'] = ['ML_InvoiceAnalyst', 'ML_NominationAnalyst', 'ML_ViewOnly', 'ML_ContractAnalyst'];\r\n capabilities['ML-ContractPricing-Write'] = ['ML_ContractAnalyst'];\r\n capabilities['ML-OfoPenaltyReport-Internal-Read'] = [];\r\n capabilities['ML-OfoPenaltyReport-External-Read'] = [];\r\n\r\n // Contract upload test harness\r\n capabilities['ML-LoadContracts-Write'] = ['ML_NominationAnalyst', 'ML_ContractAnalyst'];\r\n\r\n /* Load Measurements to Staging Capabilities */\r\n capabilities['ML-StageMeasurements-Write'] = ['ML_NominationAnalyst', 'ML_InvoiceAnalyst'];\r\n\r\n // Role capabilities for Great Lakes\r\n capabilities['GLC-ContractPricing-Write'] = ['GLC_ContractAnalyst'];\r\n capabilities['GLC-ContractPricing-Read'] = ['GLC_InvoiceAnalyst', 'GLC_NominationAnalyst', 'GLC_ViewOnly', 'GLC_ContractAnalyst'];\r\n capabilities['GLC-CustomerInvoiceParameters-Write'] = ['GLC_InvoiceAnalyst'];\r\n capabilities['GLC-CustomerInvoiceParameters-Read'] = ['GLC_InvoiceAnalyst', 'GLC_NominationAnalyst', 'GLC_NominationAdministrator', 'GLC_ViewOnly', 'GLC_Support'];\r\n capabilities['GLC-CustomerCertifiedGasParameters-Write'] = ['GLC_ContractAnalyst'];\r\n capabilities['GLC-CustomerCertifiedGasParameters-Read'] = ['GLC_InvoiceAnalyst', 'GLC_NominationAnalyst', 'GLC_ViewOnly', 'GLC_ContractAnalyst'];\r\n capabilities['GLC-CoverPageContacts-Write'] = ['GLC_InvoiceAdministrator'];\r\n capabilities['GLC-CoverPageDetail-Write'] = ['GLC_InvoiceAdministrator'];\r\n capabilities['GLC-ContractDemandEnergy-Read'] = ['GLC_InvoiceAnalyst', 'GLC_ViewOnly', 'GLC_Support', 'GLC_ContractAnalyst'];\r\n capabilities['GLC-ClassOfServiceReport-Read'] = ['GLC_InvoiceAnalyst', 'GLC_NominationAnalyst', 'GLC_ViewOnly', 'GLC_Support'];\r\n capabilities['GLC-ExpectedPaymentReport-Read'] = ['GLC_InvoiceAnalyst', 'GLC_NominationAnalyst', 'GLC_ViewOnly', 'GLC_Support'];\r\n capabilities['GLC-PalsBillingDetailReport-Read'] = ['GLC_InvoiceAnalyst', 'GLC_NominationAnalyst', 'GLC_ViewOnly', 'GLC_Support','GLC_OperatorView','GLC_InvoiceView'];\r\n capabilities['GLC-ViewAccounts-Read'] = ['GLC_ContractAnalyst', 'GLC_NominationAnalyst', 'GLC_InvoiceAnalyst', 'GLC_Support', 'GLC_ViewOnly'];\r\n capabilities['GLC-ViewAccounts-Write'] = ['GLC_ContractAnalyst'];\r\n capabilities['GLC-PALSAccountView-Write'] = [];\r\n capabilities['GLC-ConfigureJobSchedules-Read'] = ['GLC_InvoiceAnalyst', 'GLC_NominationAnalyst', 'GLC_NominationAdministrator', 'GLC_Support', 'GLC_FlowingGasAdministrator', 'GLC_InvoiceAdministrator'];\r\n capabilities['GLC-ConfigureJobSchedules-Write'] = ['GLC_NominationAdministrator', 'GLC_Support', 'GLC_FlowingGasAdministrator', 'GLC_InvoiceAdministrator'];\r\n capabilities['GLC-JobRunner-Write'] = ['GLC_NominationAdministrator', 'GLC_Support', 'GLC_FlowingGasAdministrator', 'GLC_InvoiceAdministrator'];\r\n capabilities['GLC-ViewJobHistory-Read'] = ['GLC_InvoiceAnalyst', 'GLC_NominationAnalyst', 'GLC_NominationAdministrator', 'GLC_Support', 'GLC_FlowingGasAdministrator', 'GLC_InvoiceAdministrator'];\r\n capabilities['GLC-Support-Read'] = [];\r\n capabilities['GLC-ApplicationConfiguration-Write'] = [];\r\n capabilities['GLC-ClearCache-Write'] = [];\r\n capabilities['GLC-LoadBidFloors-Write'] = ['GLC_BidFloorPersonnel'];\r\n capabilities['GLC-ViewBidFloors-Read'] = ['GLC_InvoiceAnalyst', 'GLC_NominationAnalyst', 'GLC_ViewOnly', 'GLC_Support', 'GLC_BidFloorPersonnel'];\r\n capabilities['GLC-LoadFuelRatios-Write'] = ['GLC_NominationAnalyst'];\r\n capabilities['GLC-ViewFuelRatios-Read'] = ['GLC_InvoiceAnalyst', 'GLC_NominationAnalyst', 'GLC_ViewOnly', 'GLC_Support', 'GLC_BidFloorPersonnel'];\r\n capabilities['GLC-NominationRequests-Read'] = ['GLC_InvoiceAnalyst', 'GLC_NominationAnalyst', 'GLC_ViewOnly', 'GLC_Support', 'GLC_NominationsTransactor', 'GLC_NominationsView', 'GLC_NominationAdministrator'];\r\n capabilities['GLC-NominationRequests-Write'] = ['GLC_NominationAnalyst', 'GLC_NominationsTransactor', 'GLC_NominationAdministrator'];\r\n capabilities['GLC-NominationRequests-OneDay-Adjustment'] = ['GLC_NominationAnalyst'];\r\n capabilities['GLC-NominationRequests-Full-Adjustment'] = ['GLC_NominationSpecialist'];\r\n capabilities['GLC-NominationRequests-EditMode'] = ['GLC_NominationAdministrator', 'GLC_NominationAnalyst', 'GLC_NominationSpecialist'];\r\n capabilities['GLC-GasCycleStatus-Read'] = ['GLC_NominationAnalyst', 'GLC_Support'];\r\n capabilities['GLC-GasCycleStatus-BalanceAndSchedule'] = ['GLC_NominationAnalyst'];\r\n capabilities['GLC-GasCycleStatus-OpenAndCloseNomWindow'] = ['GLC_NominationAdministrator', 'GLC_NominationAnalyst'];\r\n capabilities['GLC-GasCycleStatus-Unschedule'] = ['GLC_NominationAdministrator'];\r\n capabilities['GLC-GasCycleStatus-Reset'] = ['GLC_NominationAdministrator'];\r\n capabilities['GLC-AccountBalance-Update'] = ['GLC_NominationAnalyst'];\r\n capabilities['GLC-NominationExceptions-Read'] = ['GLC_NominationAnalyst', 'GLC_Support'];\r\n capabilities['GLC-TransportationSummary-Write'] = ['GLC_NominationAnalyst'];\r\n capabilities['GLC-TransportationSummary-Internal-Read'] = ['GLC_InvoiceAnalyst', 'GLC_NominationAnalyst', 'GLC_ViewOnly', 'GLC_Support'];\r\n capabilities['GLC-TransportationSummary-External-Read'] = ['GLC_NominationsView', 'GLC_NominationsTransactor'];\r\n capabilities['GLC-ConfirmationMonitor-SendCR'] = ['GLC_NominationAnalyst'];\r\n capabilities['GLC-ConfirmationMonitor-Write'] = ['GLC_NominationAnalyst', 'GLC_OperatorTransactor'];\r\n capabilities['GLC-ConfirmationMonitor-Read'] = ['GLC_NominationAnalyst', 'GLC_Support', 'GLC_OperatorView', 'GLC_OperatorTransactor'];\r\n capabilities['GLC-ConfirmationDetails-Read'] = ['GLC_NominationAnalyst', 'GLC_Support', 'GLC_OperatorView', 'GLC_OperatorTransactor', 'GLC_ViewOnly', 'GLC_InvoiceAnalyst'];\r\n capabilities['GLC-ConfirmationDetails-Basic-Write'] = ['GLC_NominationAnalyst', 'GLC_OperatorTransactor'];\r\n capabilities['GLC-ConfirmationDetails-Elevated-Write'] = ['GLC_NominationAnalyst'];\r\n capabilities['GLC-CustodyTransferReport-Read'] = ['GLC_NominationAnalyst','GLC_Support'];\r\n\r\n capabilities['GLC-ConfirmationDetails-PPA-OneDay-Adjustment'] = ['GLC_NominationAnalyst'];\r\n capabilities['GLC-ConfirmationDetails-PPA-Full-Adjustment'] = ['GLC_NominationSpecialist'];\r\n\r\n\r\n capabilities['GLC-ConfirmationHistory-Read'] = ['GLC_InvoiceAnalyst', 'GLC_NominationAnalyst', 'GLC_ViewOnly', 'GLC_Support', 'GLC_OperatorView', 'GLC_OperatorTransactor'];\r\n capabilities['GLC-AccountSummary-Read'] = ['GLC_NominationAnalyst', 'GLC_ViewOnly', 'GLC_Support', 'GLC_NominationsView', 'GLC_NominationsTransactor', 'GLC_InvoiceAnalyst'];\r\n capabilities['GLC-ScheduledQuantityAdjustments-Read'] = ['GLC_NominationAnalyst', 'GLC_NominationSpecialist', 'GLC_Support'];\r\n capabilities['GLC-ScheduledQuantityAdjustments-Write'] = ['GLC_NominationAnalyst', 'GLC_NominationSpecialist'];\r\n capabilities['GLC-AgentMaintenance-Read'] = ['GLC_NominationAnalyst', 'GLC_ViewOnly', 'GLC_Support', 'GLC_ContractAnalyst'];\r\n capabilities['GLC-AgentMaintenance-Write'] = ['GLC_NominationAnalyst', 'GLC_ContractAnalyst'];\r\n capabilities['GLC-StorageLimit-External-Read'] = [];\r\n capabilities['GLC-StorageLimit-Internal-Read'] = [];\r\n capabilities['GLC-StorageLimit-Write'] = [];\r\n capabilities['GLC-TitleTransferReport-Read'] = ['GLC_NominationAnalyst', 'GLC_ViewOnly', 'GLC_Support', 'GLC_NominationsTransactor', 'GLC_NominationsView'];\r\n capabilities['GLC-TitleTransferReport-Write'] = ['GLC_NominationAnalyst', 'GLC_NominationsTransactor'];\r\n capabilities['GLC-TitleTransferWaivers-Read'] = ['GLC_NominationAnalyst', 'GLC_Support', 'GLC_NominationsTransactor', 'GLC_NominationsView'];\r\n capabilities['GLC-TitleTransferWaivers-Write'] = ['GLC_NominationAnalyst', 'GLC_NominationsTransactor'];\r\n capabilities['GLC-ImbalanceTransferTransactions-Write'] = ['GLC_NominationAdministrator', 'GLC_NominationSpecialist'];\r\n capabilities['GLC-ImbalanceTransferTransactions-OneDay-Adjustment'] = ['GLC_NominationAdministrator'];\r\n capabilities['GLC-ImbalanceTransferTransactions-Full-Adjustment'] = ['GLC_NominationSpecialist'];\r\n capabilities['GLC-ImbalanceTransferTransactions-Read'] = ['GLC_NominationAnalyst', 'GLC_NominationAdministrator', 'GLC_NominationSpecialist', 'GLC_Support'];\r\n capabilities['GLC-AutoBalanceEvents-Read'] = ['GLC_NominationAnalyst', 'GLC_Support'];\r\n capabilities['GLC-AutoBalanceDetails-Read'] = ['GLC_NominationAnalyst', 'GLC_Support'];\r\n capabilities['GLC-CreditExposureReport-Read'] = ['GLC_NominationAnalyst', 'GLC_InvoiceAnalyst', 'GLC_ContractAnalyst', 'GLC_CounterPartyRiskAnalyst', 'GLC_Support'];\r\n capabilities['GLC-CreditOverageReport-Read'] = ['GLC_NominationAnalyst', 'GLC_InvoiceAnalyst', 'GLC_ContractAnalyst', 'GLC_CounterPartyRiskAnalyst', 'GLC_Support'];\r\n capabilities['GLC-ArchivedCreditReport-Read'] = ['GLC_NominationAnalyst', 'GLC_InvoiceAnalyst', 'GLC_ContractAnalyst', 'GLC_CounterPartyRiskAnalyst', 'GLC_Support'];\r\n capabilities['GLC-LoadLocations-Write'] = ['GLC_NominationAdministrator', 'GLC_FlowingGasAdministrator', 'GLC_InvoiceAdministrator'];\r\n capabilities['GLC-LoadLocationParameters-Write'] = ['GLC_NominationAdministrator', 'GLC_FlowingGasAdministrator', 'GLC_InvoiceAdministrator'];\r\n capabilities['GLC-LoadLocationRelationships-Write'] = ['GLC_NominationAdministrator', 'GLC_FlowingGasAdministrator', 'GLC_InvoiceAdministrator'];\r\n capabilities['GLC-LoadOmvRelationships-Write'] = ['GLC_NominationAdministrator', 'GLC_FlowingGasAdministrator', 'GLC_InvoiceAdministrator'];\r\n capabilities['GLC-LoadLbaLocationTolerances-Write'] = [];\r\n capabilities['GLC-LoadSecondaryLocations-Write'] = ['GLC_NominationAdministrator', 'GLC_FlowingGasAdministrator', 'GLC_InvoiceAdministrator'];\r\n capabilities['GLC-PublishAccountingLocation-Write'] = ['GLC_NominationAdministrator', 'GLC_FlowingGasAdministrator', 'GLC_InvoiceAdministrator'];\r\n capabilities['GLC-AssumeCustomerIdentity-Write'] = ['GLC_InvoiceAnalyst', 'GLC_NominationAnalyst', 'GLC_ViewOnly', 'GLC_Support'];\r\n capabilities['GLC-Health-Read'] = ['GLC_Support'];\r\n capabilities['GLC-FailInProgressJobs-Write'] = ['GLC_Support'];\r\n // tslint:disable-next-line:max-line-length\r\n capabilities['GLC-Home-Read'] = ['GLC_InvoiceAnalyst', 'GLC_NominationAnalyst', 'GLC_NominationAdministrator', 'GLC_ViewOnly', 'GLC_Support', 'GLC_FlowingGasAdministrator', 'GLC_InvoiceAdministrator', 'GLC_ContractAnalyst', 'GLC_PricingAnalyst', 'GLC_BidFloorPersonnel', 'GLC_OperatorView', 'GLC_InvoiceView', 'GLC_OperatorTransactor', 'GLC_NominationsTransactor', 'GLC_NominationsView', 'GLC_CounterPartyRiskAnalyst', 'GLC_TemporaryAssignmentView'];\r\n capabilities['GLC-Home-Write'] = ['GLC_NominationAdministrator', 'GLC_FlowingGasAdministrator', 'GLC_InvoiceAdministrator', 'GLC_Support'];\r\n capabilities['GLC-TestPage-Read'] = ['GLC_InvoiceAnalyst', 'GLC_NominationAnalyst', 'GLC_NominationAdministrator', 'GLC_ViewOnly', 'GLC_Support', 'GLC_FlowingGasAdministrator', 'GLC_InvoiceAdministrator', 'GLC_ContractAnalyst', 'GLC_PricingAnalyst', 'GLC_BidFloorPersonnel'];\r\n capabilities['GLC-ContractUtilization-Read'] = ['GLC_NominationAnalyst', 'GLC_ViewOnly', 'GLC_InvoiceAnalyst', 'GLC_Support', 'GLC_NominationsTransactor', 'GLC_NominationsView'];\r\n capabilities['GLC-AccountContractSummary-Read'] = ['GLC_ContractAnalyst', 'GLC_NominationAnalyst', 'GLC_ViewOnly', 'GLC_InvoiceAnalyst', 'GLC_Support', 'GLC_NominationsTransactor', 'GLC_NominationsView'];\r\n capabilities['GLC-ContractsAwaitingProcessing-Read'] = ['GLC_Support', 'GLC_ContractAnalyst', 'GLC_NominationAnalyst'];\r\n capabilities['GLC-ContractsAwaitingProcessing-Write'] = ['GLC_ContractAnalyst', 'GLC_NominationAnalyst'];\r\n capabilities['GLC-UnsubscribeEmailNotifications-Read'] = ['GLC_NominationAnalyst', 'GLC_InvoiceAnalyst'];\r\n capabilities['GLC-ViewAgents-Read'] = ['GLC_InvoiceAnalyst', 'GLC_NominationAnalyst', 'GLC_ViewOnly', 'GLC_Support', 'GLC_ContractAnalyst', 'GLC_OperatorView', 'GLC_InvoiceView', 'GLC_OperatorTransactor', 'GLC_NominationsTransactor', 'GLC_NominationsView'];\r\n capabilities['GLC-TemporaryAssignment-Read'] = ['GLC_NominationAnalyst', 'GLC_ViewOnly', 'GLC_Support', 'GLC_InvoiceAnalyst', 'GLC_ContractAnalyst', 'GLC_NominationsTransactor', 'GLC_NominationsView', 'GLC_TemporaryAssignmentView'];\r\n capabilities['GLC-AccountSummaryByLocationDaily-Read'] = ['GLC_InvoiceAnalyst', 'GLC_NominationAnalyst', 'GLC_ViewOnly', 'GLC_Support', 'GLC_OperatorView', 'GLC_InvoiceView'];\r\n capabilities['GLC-AccountSummaryByLocationMonthly-Read'] = ['GLC_InvoiceAnalyst', 'GLC_NominationAnalyst', 'GLC_ViewOnly', 'GLC_Support', 'GLC_OperatorView', 'GLC_InvoiceView'];\r\n capabilities['GLC-PriorDayPendingActivities-Read'] = ['GLC_InvoiceAnalyst', 'GLC_NominationAnalyst', 'GLC_NominationAdministrator', 'GLC_Support'];\r\n capabilities['GLC-PriorDayPendingActivities-Write'] = ['GLC_InvoiceAnalyst', 'GLC_NominationAnalyst', 'GLC_NominationAdministrator'];\r\n capabilities['GLC-VolumeEnergyComposition-Read'] = ['GLC_InvoiceAnalyst', 'GLC_NominationAnalyst', 'GLC_ViewOnly', 'GLC_Support', 'GLC_OperatorView'];\r\n capabilities['GLC-TransportationAccountDetail-Read'] = ['GLC_InvoiceAnalyst', 'GLC_InvoiceView', 'GLC_NominationAnalyst', 'GLC_ViewOnly', 'GLC_Support', 'GLC_OperatorView'];\r\n capabilities['GLC-MakeupNominations-Read'] = [];\r\n capabilities['GLC-MakeupNominations-Write'] = [];\r\n capabilities['GLC-ITPenalties-Read'] = ['GLC_InvoiceAnalyst', 'GLC_NominationAnalyst', 'GLC_NominationAdministrator', 'GLC_ViewOnly', ];\r\n capabilities['GLC-ITPenalties-Write'] = ['GLC_InvoiceAnalyst', 'GLC_NominationAnalyst', 'GLC_NominationAdministrator'];\r\n capabilities['GLC-ViewMeasurement-Read'] = ['GLC_InvoiceAnalyst', 'GLC_NominationAnalyst', 'GLC_NominationAdministrator', 'GLC_ViewOnly', 'GLC_Support'];\r\n capabilities['GLC-OperatorBalanceReport-Read'] = ['GLC_InvoiceAnalyst', 'GLC_NominationAnalyst', 'GLC_ViewOnly', 'GLC_Support', 'GLC_OperatorView'];\r\n capabilities['GLC-PendingPriorPeriodAdjustment-Read'] = ['GLC_InvoiceAnalyst', 'GLC_NominationAnalyst', 'GLC_NominationAdministrator', 'GLC_ViewOnly', 'GLC_Support'];\r\n capabilities['GLC-PendingPriorPeriodAdjustment-Write'] = ['GLC_InvoiceAnalyst', 'GLC_NominationAnalyst', 'GLC_NominationAdministrator'];\r\n capabilities['GLC-SystemBalance-Read'] = ['GLC_NominationAnalyst', 'GLC_NominationAdministrator', 'GLC_InvoiceAnalyst','GLC_ViewOnly', 'GLC_Support'];\r\n capabilities['GLC-StorageTransportationBalance-Read'] = [];\r\n capabilities['GLC-ViewInvoices-Read'] = ['GLC_InvoiceAnalyst', 'GLC_NominationAnalyst', 'GLC_ViewOnly', 'GLC_Support', 'GLC_InvoiceView'];\r\n capabilities['GLC-ViewInvoices-DownloadAll'] = ['GLC_InvoiceAnalyst', 'GLC_Support'];\r\n capabilities['GLC-ViewManualAdjustment-Read'] = ['GLC_InvoiceAnalyst', 'GLC_NominationAnalyst', 'GLC_ViewOnly', 'GLC_Support'];\r\n capabilities['GLC-ViewManualAdjustment-Write'] = ['GLC_InvoiceAnalyst'];\r\n capabilities['GLC-LoadManualAdjustment-Write'] = ['GLC_InvoiceAnalyst'];\r\n capabilities['GLC-LbaExcessQuantity-Read'] = [];\r\n capabilities['GLC-LbaExcessQuantity-Write'] = [];\r\n capabilities['GLC-ManualTransactions-Read'] = ['GLC_InvoiceAnalyst', 'GLC_NominationAnalyst', 'GLC_ViewOnly', 'GLC_Support'];\r\n capabilities['GLC-ManualTransactions-Write'] = ['GLC_InvoiceAnalyst', 'GLC_NominationAnalyst'];\r\n capabilities['GLC-InvoiceBusinessMessages-Read'] = ['GLC_InvoiceAnalyst', 'GLC_NominationAnalyst', 'GLC_Support'];\r\n capabilities['GLC-GenerateCharges-Read'] = ['GLC_InvoiceAnalyst', 'GLC_Support'];\r\n capabilities['GLC-GenerateCharges-Write'] = ['GLC_InvoiceAnalyst'];\r\n capabilities['GLC-PublishInvoices-Read'] = ['GLC_InvoiceAnalyst', 'GLC_Support'];\r\n capabilities['GLC-PublishInvoices-Publish'] = ['GLC_InvoiceAnalyst'];\r\n capabilities['GLC-StatisticsCanadaDownload-Read'] = ['GLC_InvoiceAnalyst', 'GLC_Support'];\r\n capabilities['GLC-PrintInvoices-Read'] = ['GLC_InvoiceAnalyst', 'GLC_Support'];\r\n capabilities['GLC-PrintInvoices-Print'] = ['GLC_InvoiceAnalyst'];\r\n capabilities['GLC-OutstandingBalanceExport-Read'] = ['GLC_InvoiceAnalyst', 'GLC_NominationAnalyst', 'GLC_ViewOnly', 'GLC_Support'];\r\n capabilities['GLC-AccountsReceivable-Read'] = ['GLC_InvoiceAnalyst', 'GLC_Support'];\r\n capabilities['GLC-AccountsReceivable-Write'] = ['GLC_InvoiceAnalyst'];\r\n capabilities['GLC-InvoiceMonitor-Read'] = ['GLC_InvoiceAnalyst', 'GLC_Support'];\r\n capabilities['GLC-InvoiceMonitor-Write'] = ['GLC_InvoiceAnalyst'];\r\n capabilities['GLC-TransactionExport-Read']=['GLC_InvoiceAnalyst', 'GLC_NominationAnalyst', 'GLC_ViewOnly', 'GLC_Support'];\r\n capabilities['GLC-LoadTolls-Read'] = ['GLC_InvoiceAnalyst'];\r\n capabilities['GLC-LoadTolls-Write'] = ['GLC_InvoiceAnalyst'];\r\n capabilities['GLC-ViewTolls-Read'] = ['GLC_InvoiceAnalyst', 'GLC_NominationAnalyst', 'GLC_ViewOnly', 'GLC_Support'];\r\n capabilities['GLC-ViewTolls-Write'] = ['GLC_InvoiceAnalyst'];\r\n capabilities['GLC-ClassOfServiceReport-Read'] = ['GLC_InvoiceAnalyst', 'GLC_NominationAnalyst', 'GLC_ViewOnly', 'GLC_Support'];\r\n capabilities['GLC-CustomerParameters-Read'] = ['GLC_Support'];\r\n capabilities['GLC-OfoPenaltyReport-Internal-Read'] = [];\r\n capabilities['GLC-OfoPenaltyReport-External-Read'] = [];\r\n\r\n capabilities['GLC-BillingMonth-Read'] = ['GLC_InvoiceAnalyst', 'GLC_NominationAnalyst', 'GLC_NominationAdministrator', 'GLC_Support'];\r\n capabilities['GLC-BillingMonth-Write'] = ['GLC_InvoiceAnalyst'];\r\n capabilities['GLC-BillingMonth-FinalizeMeasurement-Write'] = ['GLC_InvoiceAnalyst', 'GLC_NominationAnalyst', 'GLC_NominationAdministrator'];\r\n capabilities['GLC-BillingMonth-FinalizeAllocationAndBalancing-Write'] = ['GLC_InvoiceAnalyst', 'GLC_NominationAnalyst', 'GLC_NominationAdministrator'];\r\n\r\n // Contract upload test harness\r\n capabilities['GLC-LoadContracts-Write'] = ['GLC_NominationAnalyst', 'GLC_ContractAnalyst'];\r\n\r\n /* Load Measurements to Staging Capabilities */\r\n capabilities['GLC-StageMeasurements-Write'] = ['GLC_NominationAnalyst', 'GLC_InvoiceAnalyst'];\r\n\r\n // Role capabilities for Coastal GasLink\r\n capabilities['CGL-ContractPricing-Write'] = ['CGL_ContractAnalyst'];\r\n capabilities['CGL-ContractPricing-Read'] = ['CGL_InvoiceAnalyst', 'CGL_NominationAnalyst', 'CGL_ViewOnly', 'CGL_ContractAnalyst'];\r\n capabilities['CGL-CustomerInvoiceParameters-Write'] = ['CGL_InvoiceAnalyst'];\r\n capabilities['CGL-CustomerInvoiceParameters-Read'] = ['CGL_InvoiceAnalyst', 'CGL_NominationAnalyst', 'CGL_NominationAdministrator', 'CGL_ViewOnly', 'CGL_Support'];\r\n capabilities['CGL-CustomerAccountParameters-Write'] = ['CGL_InvoiceAnalyst', 'CGL_ContractAnalyst'];\r\n capabilities['CGL-CustomerAccountParameters-Read'] = ['CGL_InvoiceAnalyst', 'CGL_NominationAnalyst', 'CGL_ViewOnly', 'CGL_Support'];\r\n\r\n capabilities['CGL-CustomerCertifiedGasParameters-Read'] = ['CGL_InvoiceAnalyst', 'CGL_NominationAnalyst', 'CGL_ViewOnly', 'CGL_ContractAnalyst'];\r\n capabilities['CGL-CustomerCertifiedGasParameters-Write'] = ['CGL_ContractAnalyst'];\r\n capabilities['CGL-CoverPageContacts-Write'] = ['CGL_InvoiceAdministrator'];\r\n capabilities['CGL-CoverPageDetail-Write'] = ['CGL_InvoiceAdministrator'];\r\n capabilities['CGL-ContractDemandEnergy-Read'] = ['CGL_ContractAnalyst', 'CGL_Support' ];\r\n capabilities['CGL-ClassOfServiceReport-Read'] = ['CGL_InvoiceAnalyst', 'CGL_NominationAnalyst', 'CGL_ViewOnly', 'CGL_Support'];\r\n capabilities['CGL-ExpectedPaymentReport-Read'] = ['CGL_InvoiceAnalyst', 'CGL_NominationAnalyst', 'CGL_ViewOnly', 'CGL_Support'];\r\n capabilities['CGL-PalsBillingDetailReport-Read'] = [];\r\n capabilities['CGL-BilledBalancingFeesReport-Read'] = [];\r\n capabilities['CGL-ViewAccounts-Read'] = ['CGL_ContractAnalyst', 'CGL_NominationAnalyst', 'CGL_InvoiceAnalyst', 'CGL_Support', 'CGL_ViewOnly'];\r\n capabilities['CGL-ViewAccounts-Write'] = ['CGL_ContractAnalyst'];\r\n capabilities['CGL-PALSAccountView-Write'] = ['CGL_NominationAnalyst'];\r\n capabilities['CGL-ConfigureJobSchedules-Read'] = ['CGL_InvoiceAnalyst', 'CGL_NominationAnalyst', 'CGL_NominationAdministrator', 'CGL_Support', 'CGL_InvoiceAdministrator'];\r\n capabilities['CGL-ConfigureJobSchedules-Write'] = ['CGL_NominationAdministrator', 'CGL_Support', 'CGL_InvoiceAdministrator'];\r\n capabilities['CGL-JobRunner-Write'] = ['CGL_NominationAdministrator', 'CGL_Support', 'CGL_InvoiceAdministrator'];\r\n capabilities['CGL-ViewJobHistory-Read'] = ['CGL_InvoiceAnalyst', 'CGL_NominationAnalyst', 'CGL_NominationAdministrator', 'CGL_Support', 'CGL_InvoiceAdministrator'];\r\n capabilities['CGL-Support-Read'] = [];\r\n capabilities['CGL-ApplicationConfiguration-Write'] = [];\r\n capabilities['CGL-ClearCache-Write'] = [];\r\n capabilities['CGL-LoadBidFloors-Write'] = [];\r\n capabilities['CGL-ViewBidFloors-Read'] = [];\r\n capabilities['CGL-LoadFuelRatios-Write'] = ['CGL_NominationAnalyst'];\r\n capabilities['CGL-ViewFuelRatios-Read'] = ['CGL_InvoiceAnalyst', 'CGL_NominationAnalyst', 'CGL_ViewOnly', 'CGL_Support'];\r\n capabilities['CGL-NominationRequests-Read'] = ['CGL_InvoiceAnalyst', 'CGL_NominationAnalyst', 'CGL_ViewOnly', 'CGL_Support', 'CGL_NominationsTransactor', 'CGL_NominationsView', 'CGL_NominationAdministrator'];\r\n capabilities['CGL-NominationRequests-Write'] = ['CGL_NominationAnalyst', 'CGL_NominationsTransactor', 'CGL_NominationAdministrator'];\r\n capabilities['CGL-NominationRequests-OneDay-Adjustment'] = ['CGL_NominationAnalyst'];\r\n capabilities['CGL-NominationRequests-Full-Adjustment'] = ['CGL_NominationSpecialist'];\r\n capabilities['CGL-NominationRequests-EditMode'] = ['CGL_NominationAdministrator', 'CGL_NominationAnalyst', 'CGL_NominationSpecialist'];\r\n\r\n capabilities['CGL-ImbalanceTradeRequests-Read'] = ['CGL_NominationAnalyst', 'CGL_NominationSpecialist', 'CGL_NominationsTransactor', 'CGL_NominationsView', 'CGL_Support'];\r\n capabilities['CGL-ImbalanceTradeRequests-Write'] = ['CGL_NominationAnalyst', 'CGL_NominationSpecialist', 'CGL_NominationsTransactor'];\r\n capabilities['CGL-ImbalanceTradeRequests-OneDay-Adjustment'] = ['CGL_NominationAnalyst'];\r\n capabilities['CGL-ImbalanceTradeRequests-Full-Adjustment'] = ['CGL_NominationSpecialist'];\r\n\r\n capabilities['CGL-GasCycleStatus-Read'] = ['CGL_NominationAnalyst', 'CGL_Support'];\r\n capabilities['CGL-GasCycleStatus-BalanceAndSchedule'] = ['CGL_NominationAnalyst'];\r\n capabilities['CGL-GasCycleStatus-OpenAndCloseNomWindow'] = ['CGL_NominationAdministrator', 'CGL_NominationAnalyst'];\r\n capabilities['CGL-GasCycleStatus-Unschedule'] = ['CGL_NominationAdministrator'];\r\n capabilities['CGL-GasCycleStatus-Reset'] = ['CGL_NominationAdministrator'];\r\n capabilities['CGL-AccountBalance-Update'] = ['CGL_NominationAnalyst'];\r\n capabilities['CGL-NominationExceptions-Read'] = ['CGL_NominationAnalyst', 'CGL_Support'];\r\n capabilities['CGL-TransportationSummary-Write'] = ['CGL_NominationAnalyst'];\r\n capabilities['CGL-TransportationSummary-Internal-Read'] = ['CGL_InvoiceAnalyst', 'CGL_NominationAnalyst', 'CGL_ViewOnly', 'CGL_Support'];\r\n capabilities['CGL-TransportationSummary-External-Read'] = ['CGL_NominationsView', 'CGL_NominationsTransactor'];\r\n capabilities['CGL-ConfirmationMonitor-SendCR'] = ['CGL_NominationAnalyst'];\r\n capabilities['CGL-ConfirmationMonitor-Write'] = ['CGL_NominationAnalyst', 'CGL_OperatorTransactor'];\r\n capabilities['CGL-ConfirmationMonitor-Read'] = ['CGL_NominationAnalyst', 'CGL_Support', 'CGL_OperatorView', 'CGL_OperatorTransactor'];\r\n capabilities['CGL-ConfirmationDetails-Read'] = ['CGL_NominationAnalyst', 'CGL_Support', 'CGL_OperatorView', 'CGL_OperatorTransactor', 'CGL_ViewOnly', 'CGL_InvoiceAnalyst'];\r\n capabilities['CGL-ConfirmationDetails-Basic-Write'] = ['CGL_NominationAnalyst', 'CGL_OperatorTransactor'];\r\n capabilities['CGL-ConfirmationDetails-Elevated-Write'] = ['CGL_NominationAnalyst'];\r\n capabilities['CGL-CustodyTransferReport-Read'] = ['CGL_NominationAnalyst','CGL_Support'];\r\n capabilities['CGL-CapacityAllocationSummary-Read'] = ['CGL_NominationAnalyst','CGL_Support'];\r\n capabilities['CGL-CapacityAllocationSummary-Write'] = ['CGL_NominationAnalyst'];\r\n capabilities['CGL-CapacityAllocationDetails-Read'] = ['CGL_NominationAnalyst','CGL_Support'];\r\n capabilities['CGL-CapacityAllocationSegmentOrder-Read'] = ['CGL_NominationAnalyst','CGL_Support'];\r\n capabilities['CGL-CapacityAllocationSegmentOrder-Write'] = ['CGL_NominationAnalyst'];\r\n\r\n capabilities['CGL-ConfirmationDetails-PPA-OneDay-Adjustment'] = ['CGL_NominationAnalyst'];\r\n capabilities['CGL-ConfirmationDetails-PPA-Full-Adjustment'] = ['CGL_NominationSpecialist'];\r\n\r\n\r\n capabilities['CGL-ConfirmationHistory-Read'] = ['CGL_InvoiceAnalyst', 'CGL_NominationAnalyst', 'CGL_ViewOnly', 'CGL_Support', 'CGL_OperatorView', 'CGL_OperatorTransactor'];\r\n capabilities['CGL-AccountSummary-Read'] = ['CGL_NominationAnalyst', 'CGL_ViewOnly', 'CGL_Support', 'CGL_NominationsView', 'CGL_NominationsTransactor', 'CGL_InvoiceAnalyst'];\r\n capabilities['CGL-ScheduledQuantityAdjustments-Read'] = ['CGL_NominationAnalyst', 'CGL_NominationSpecialist', 'CGL_Support'];\r\n capabilities['CGL-ScheduledQuantityAdjustments-Write'] = ['CGL_NominationAnalyst', 'CGL_NominationSpecialist'];\r\n capabilities['CGL-AgentMaintenance-Read'] = ['CGL_NominationAnalyst', 'CGL_ViewOnly', 'CGL_Support', 'CGL_ContractAnalyst'];\r\n capabilities['CGL-AgentMaintenance-Write'] = ['CGL_NominationAnalyst', 'CGL_ContractAnalyst'];\r\n capabilities['CGL-StorageLimit-External-Read'] = [];\r\n capabilities['CGL-StorageLimit-Internal-Read'] = [];\r\n capabilities['CGL-StorageLimit-Write'] = [];\r\n capabilities['CGL-TitleTransferReport-Read'] = [];\r\n capabilities['CGL-TitleTransferReport-Write'] = [];\r\n capabilities['CGL-TitleTransferWaivers-Read'] = [];\r\n capabilities['CGL-TitleTransferWaivers-Write'] = [];\r\n capabilities['CGL-ImbalanceTransferTransactions-Write'] = ['CGL_NominationAdministrator', 'CGL_NominationSpecialist'];\r\n capabilities['CGL-ImbalanceTransferTransactions-OneDay-Adjustment'] = ['CGL_NominationAdministrator'];\r\n capabilities['CGL-ImbalanceTransferTransactions-Full-Adjustment'] = ['CGL_NominationSpecialist'];\r\n capabilities['CGL-ImbalanceTransferTransactions-Read'] = ['CGL_NominationAnalyst', 'CGL_NominationAdministrator', 'CGL_NominationSpecialist', 'CGL_Support'];\r\n capabilities['CGL-AutoBalanceEvents-Read'] = ['CGL_NominationAnalyst', 'CGL_Support'];\r\n capabilities['CGL-AutoBalanceDetails-Read'] = ['CGL_NominationAnalyst', 'CGL_Support'];\r\n capabilities['CGL-LoadLocations-Write'] = ['CGL_NominationAdministrator', 'CGL_InvoiceAdministrator'];\r\n capabilities['CGL-LoadLocationParameters-Write'] = ['CGL_NominationAdministrator', 'CGL_InvoiceAdministrator'];\r\n capabilities['CGL-LoadLocationRelationships-Write'] = ['CGL_NominationAdministrator', 'CGL_InvoiceAdministrator'];\r\n capabilities['CGL-LoadOmvRelationships-Write'] = [];\r\n capabilities['CGL-LoadLbaLocationTolerances-Write'] = [];\r\n capabilities['CGL-LoadSecondaryLocations-Write'] = ['CGL_NominationAdministrator', 'CGL_InvoiceAdministrator'];\r\n capabilities['CGL-PublishAccountingLocation-Write'] = ['CGL_NominationAdministrator', 'CGL_InvoiceAdministrator'];\r\n capabilities['CGL-AssumeCustomerIdentity-Write'] = ['CGL_InvoiceAnalyst', 'CGL_NominationAnalyst', 'CGL_ViewOnly', 'CGL_Support'];\r\n capabilities['CGL-Health-Read'] = ['CGL_Support'];\r\n capabilities['CGL-FailInProgressJobs-Write'] = ['CGL_Support'];\r\n capabilities['CGL-Home-Read'] = ['CGL_InvoiceAnalyst', 'CGL_NominationAnalyst', 'CGL_NominationAdministrator', 'CGL_ViewOnly', 'CGL_Support', 'CGL_InvoiceAdministrator', 'CGL_ContractAnalyst', 'CGL_OperatorView', 'CGL_InvoiceView', 'CGL_OperatorTransactor', 'CGL_NominationsTransactor', 'CGL_NominationsView', 'CGL_CounterPartyRiskAnalyst', 'CGL_TemporaryAssignmentView'];\r\n capabilities['CGL-Home-Write'] = ['CGL_NominationAdministrator', 'CGL_InvoiceAdministrator', 'CGL_Support'];\r\n capabilities['CGL-TestPage-Read'] = ['CGL_InvoiceAnalyst', 'CGL_NominationAnalyst', 'CGL_NominationAdministrator', 'CGL_ViewOnly', 'CGL_Support', 'CGL_InvoiceAdministrator', 'CGL_ContractAnalyst'];\r\n capabilities['CGL-ContractUtilization-Read'] = ['CGL_NominationAnalyst', 'CGL_ViewOnly', 'CGL_InvoiceAnalyst', 'CGL_Support', 'CGL_NominationsTransactor', 'CGL_NominationsView'];\r\n capabilities['CGL-AccountContractSummary-Read'] = ['CGL_ContractAnalyst', 'CGL_NominationAnalyst', 'CGL_ViewOnly', 'CGL_InvoiceAnalyst', 'CGL_Support', 'CGL_NominationsTransactor', 'CGL_NominationsView'];\r\n capabilities['CGL-ContractsAwaitingProcessing-Read'] = ['CGL_Support', 'CGL_ContractAnalyst', 'CGL_NominationAnalyst'];\r\n capabilities['CGL-ContractsAwaitingProcessing-Write'] = ['CGL_ContractAnalyst', 'CGL_NominationAnalyst'];\r\n capabilities['CGL-UnsubscribeEmailNotifications-Read'] = ['CGL_NominationAnalyst', 'CGL_InvoiceAnalyst'];\r\n capabilities['CGL-ViewAgents-Read'] = ['CGL_InvoiceAnalyst', 'CGL_NominationAnalyst', 'CGL_ViewOnly', 'CGL_Support', 'CGL_ContractAnalyst', 'CGL_OperatorView', 'CGL_InvoiceView', 'CGL_OperatorTransactor', 'CGL_NominationsTransactor', 'CGL_NominationsView'];\r\n capabilities['CGL-TemporaryAssignment-Read'] = ['CGL_NominationAnalyst', 'CGL_ViewOnly', 'CGL_Support', 'CGL_InvoiceAnalyst', 'CGL_ContractAnalyst', 'CGL_NominationsTransactor', 'CGL_NominationsView', 'CGL_TemporaryAssignmentView'];\r\n capabilities['CGL-AccountSummaryByLocationDaily-Read'] = ['CGL_InvoiceAnalyst', 'CGL_NominationAnalyst', 'CGL_ViewOnly', 'CGL_Support', 'CGL_OperatorView', 'CGL_InvoiceView'];\r\n capabilities['CGL-AccountSummaryByLocationMonthly-Read'] = [];\r\n capabilities['CGL-PriorDayPendingActivities-Read'] = ['CGL_InvoiceAnalyst', 'CGL_NominationAnalyst', 'CGL_NominationAdministrator', 'CGL_Support'];\r\n capabilities['CGL-PriorDayPendingActivities-Write'] = ['CGL_InvoiceAnalyst', 'CGL_NominationAnalyst', 'CGL_NominationAdministrator'];\r\n capabilities['CGL-VolumeEnergyComposition-Read'] = ['CGL_InvoiceAnalyst', 'CGL_NominationAnalyst', 'CGL_ViewOnly', 'CGL_Support', 'CGL_OperatorView'];\r\n capabilities['CGL-TransportationAccountDetail-Read'] = ['CGL_InvoiceAnalyst', 'CGL_InvoiceView', 'CGL_NominationAnalyst', 'CGL_ViewOnly', 'CGL_Support', 'CGL_OperatorView'];\r\n capabilities['CGL-MakeupNominations-Read'] = [];\r\n capabilities['CGL-MakeupNominations-Write'] = [];\r\n capabilities['CGL-ITPenalties-Read'] = [];\r\n capabilities['CGL-ITPenalties-Write'] = [];\r\n capabilities['CGL-ViewMeasurement-Read'] = ['CGL_InvoiceAnalyst', 'CGL_NominationAnalyst', 'CGL_NominationAdministrator', 'CGL_ViewOnly', 'CGL_Support'];\r\n capabilities['CGL-OperatorBalanceReport-Read'] = [];\r\n capabilities['CGL-PendingPriorPeriodAdjustment-Read'] = ['CGL_InvoiceAnalyst', 'CGL_NominationAnalyst', 'CGL_NominationAdministrator', 'CGL_ViewOnly', 'CGL_Support'];\r\n capabilities['CGL-PendingPriorPeriodAdjustment-Write'] = ['CGL_InvoiceAnalyst', 'CGL_NominationAnalyst', 'CGL_NominationAdministrator'];\r\n capabilities['CGL-SystemBalance-Read'] = ['CGL_NominationAnalyst', 'CGL_NominationAdministrator', 'CGL_InvoiceAnalyst','CGL_ViewOnly', 'CGL_Support'];\r\n capabilities['CGL-StorageTransportationBalance-Read'] = [];\r\n capabilities['CGL-ViewInvoices-Read'] = ['CGL_InvoiceAnalyst', 'CGL_NominationAnalyst', 'CGL_ViewOnly', 'CGL_Support', 'CGL_InvoiceView'];\r\n capabilities['CGL-ViewInvoices-DownloadAll'] = ['CGL_InvoiceAnalyst', 'CGL_Support'];\r\n capabilities['CGL-ViewManualAdjustment-Read'] = ['CGL_InvoiceAnalyst', 'CGL_NominationAnalyst', 'CGL_ViewOnly', 'CGL_Support'];\r\n capabilities['CGL-ViewManualAdjustment-Write'] = ['CGL_InvoiceAnalyst'];\r\n capabilities['CGL-LoadManualAdjustment-Write'] = ['CGL_InvoiceAnalyst'];\r\n capabilities['CGL-LbaExcessQuantity-Read'] = [];\r\n capabilities['CGL-LbaExcessQuantity-Write'] = [];\r\n capabilities['CGL-ManualTransactions-Read'] = ['CGL_InvoiceAnalyst', 'CGL_NominationAnalyst', 'CGL_ViewOnly', 'CGL_Support'];\r\n capabilities['CGL-ManualTransactions-Write'] = ['CGL_InvoiceAnalyst', 'CGL_NominationAnalyst'];\r\n capabilities['CGL-InvoiceBusinessMessages-Read'] = ['CGL_InvoiceAnalyst', 'CGL_NominationAnalyst', 'CGL_Support'];\r\n capabilities['CGL-GenerateCharges-Read'] = ['CGL_InvoiceAnalyst', 'CGL_Support'];\r\n capabilities['CGL-GenerateCharges-Write'] = ['CGL_InvoiceAnalyst'];\r\n capabilities['CGL-PublishInvoices-Read'] = ['CGL_InvoiceAnalyst', 'CGL_Support'];\r\n capabilities['CGL-PublishInvoices-Publish'] = ['CGL_InvoiceAnalyst'];\r\n capabilities['CGL-StatisticsCanadaDownload-Read'] = [];\r\n capabilities['CGL-PrintInvoices-Read'] = ['CGL_InvoiceAnalyst', 'CGL_Support'];\r\n capabilities['CGL-PrintInvoices-Print'] = ['CGL_InvoiceAnalyst'];\r\n capabilities['CGL-OutstandingBalanceExport-Read'] = ['CGL_InvoiceAnalyst', 'CGL_NominationAnalyst', 'CGL_ViewOnly', 'CGL_Support'];\r\n capabilities['CGL-AccountsReceivable-Read'] = ['CGL_InvoiceAnalyst', 'CGL_Support'];\r\n capabilities['CGL-AccountsReceivable-Write'] = ['CGL_InvoiceAnalyst'];\r\n capabilities['CGL-InvoiceMonitor-Read'] = ['CGL_InvoiceAnalyst', 'CGL_Support'];\r\n capabilities['CGL-InvoiceMonitor-Write'] = ['CGL_InvoiceAnalyst'];\r\n capabilities['CGL-TransactionExport-Read']=['CGL_InvoiceAnalyst', 'CGL_NominationAnalyst', 'CGL_ViewOnly', 'CGL_Support'];\r\n capabilities['CGL-LoadTolls-Read'] = ['CGL_InvoiceAnalyst'];\r\n capabilities['CGL-LoadTolls-Write'] = ['CGL_InvoiceAnalyst'];\r\n capabilities['CGL-ViewTolls-Read'] = ['CGL_InvoiceAnalyst', 'CGL_NominationAnalyst', 'CGL_ViewOnly', 'CGL_Support'];\r\n capabilities['CGL-ViewTolls-Write'] = ['CGL_InvoiceAnalyst'];\r\n capabilities['CGL-ClassOfServiceReport-Read'] = ['CGL_InvoiceAnalyst', 'CGL_NominationAnalyst', 'CGL_ViewOnly', 'CGL_Support'];\r\n\r\n capabilities['CGL-BillingMonth-Read'] = ['CGL_InvoiceAnalyst', 'CGL_NominationAnalyst', 'CGL_NominationAdministrator', 'CGL_Support'];\r\n capabilities['CGL-BillingMonth-Write'] = ['CGL_InvoiceAnalyst'];\r\n capabilities['CGL-BillingMonth-FinalizeMeasurement-Write'] = ['CGL_InvoiceAnalyst', 'CGL_NominationAnalyst', 'CGL_NominationAdministrator'];\r\n capabilities['CGL-BillingMonth-FinalizeAllocationAndBalancing-Write'] = ['CGL_InvoiceAnalyst', 'CGL_NominationAnalyst', 'CGL_NominationAdministrator'];\r\n\r\n capabilities['CGL-PdaInstructions-Read'] = ['CGL_NominationAnalyst', 'CGL_OperatorTransactor', 'CGL_OperatorView', 'CGL_Support'];\r\n capabilities['CGL-PdaInstructions-Write'] = ['CGL_NominationAnalyst', 'CGL_OperatorTransactor'];\r\n capabilities['CGL-PdaInstructions-EventHistory-Read'] = ['CGL_NominationAnalyst', 'CGL_Support'];\r\n\r\n capabilities['CGL-LocationImbalanceReport-Read'] = ['CGL_NominationAnalyst', 'CGL_ViewOnly', 'CGL_Support', 'CGL_NominationsTransactor', 'CGL_NominationsView' ];\r\n\r\n /* Contract Load Capabilities */\r\n capabilities['CGL-LoadContracts-Write'] = ['CGL_NominationAnalyst', 'CGL_ContractAnalyst'];\r\n\r\n /* Load Measurements to Staging Capabilities */\r\n capabilities['CGL-StageMeasurements-Write'] = ['CGL_NominationAnalyst', 'CGL_InvoiceAnalyst'];\r\n\r\n // temporary capabilities for CGL dev, qa and production startup\r\n capabilities['CGL-ProductionSetup-Read'] = ['CGL_NominationAdministrator'];\r\n capabilities['CGL-ProductionSetup-Write'] = ['CGL_NominationAdministrator', 'CGL_InvoiceAdministrator'];\r\n\r\n capabilities['CGL-FlowingGasActivityMessage-Read'] = ['CGL_NominationAnalyst', 'CGL_Support'];\r\n\r\n capabilities['CGL-NppData-Write'] = ['CGL_NominationAnalyst'];\r\n capabilities['CGL-NppData-Read'] = ['CGL_NominationAnalyst', 'CGL_ViewOnly', 'CGL_Support'];\r\n\r\n capabilities['CGL-NppAdjustmentExport-Read'] = ['CGL_NominationAnalyst', 'CGL_InvoiceAnalyst', 'CGL_Support'];\r\n\r\n capabilities['CGL-TrendComplianceReport-Read'] = ['CGL_NominationAnalyst', 'CGL_NominationSpecialist', 'CGL_ViewOnly', 'CGL_Support'];\r\n\r\n capabilities['CGL-OfoMaintenance-Read'] = ['CGL_NominationAnalyst', 'CGL_ViewOnly', 'CGL_Support', 'CGL_NominationsTransactor', 'CGL_NominationsView'];\r\n capabilities['CGL-OfoMaintenance-Write'] = ['CGL_NominationAnalyst'];\r\n\r\n capabilities['CGL-AvailableCapacity-Read'] = ['CGL_NominationAnalyst', 'CGL_Support'];\r\n capabilities['CGL-AvailableCapacity-Write'] = ['CGL_NominationAnalyst'];\r\n\r\n capabilities['CGL-OfoPenaltyReport-Internal-Read'] = ['CGL_InvoiceAnalyst', 'CGL_NominationAnalyst', 'CGL_ViewOnly', 'CGL_Support'];\r\n capabilities['CGL-OfoPenaltyReport-External-Read'] = ['CGL_InvoiceView', 'CGL_NominationsTransactor', 'CGL_NominationsView', 'CGL_InvoiceAnalyst', 'CGL_NominationAnalyst', 'CGL_ViewOnly', 'CGL_Support'];\r\n capabilities['CGL-OfoPenaltyReport-Export-Read'] = ['CGL_InvoiceAnalyst'];\r\n\r\n capabilities['CGL-OfoPenaltyOverride-Write'] = ['CGL_InvoiceAnalyst'];\r\n\r\n capabilities['CGL-OfoCreditSummaryReport-Read'] = ['CGL_InvoiceAnalyst', 'CGL_NominationAnalyst', 'CGL_ViewOnly', 'CGL_Support'];\r\n capabilities['CGL-OfoCreditDetailReport-Read'] = ['CGL_InvoiceAnalyst', 'CGL_NominationAnalyst', 'CGL_Support'];\r\n capabilities['CGL-OfoCreditExportCharges-Read'] = ['CGL_InvoiceAnalyst', 'CGL_Support'];\r\n capabilities['CGL-OfoCreditDetailByOrderReport-Read'] = ['CGL_InvoiceAnalyst', 'CGL_NominationAnalyst', 'CGL_ViewOnly', 'CGL_Support'];\r\n capabilities['CGL-OfoCreditDetailByOrderReport-Write'] = ['CGL_InvoiceAnalyst'];\r\n\r\n this.capabilities = capabilities;\r\n }\r\n\r\n return this.capabilities;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {Observable, Subject} from \"rxjs\";\r\nimport * as _ from \"lodash\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SessionTimeoutModalService {\r\n\r\n // This event should be fired when the Session times out. As a result, the Modal Component will pop-up\r\n public sessionTimeoutEvent: Subject = new Subject();\r\n // This event should be fired when the Modal Session timeout closes.\r\n public sessionTimeoutHandledEvent: Subject = new Subject();\r\n\r\n public sessionTimedOut(): Observable {\r\n this.sessionTimeoutEvent.next();\r\n return this.sessionTimeoutHandledEvent;\r\n }\r\n\r\n public sessionTimeoutHandled(): void {\r\n if (_.isNil(this.sessionTimeoutHandledEvent)) {\r\n console.warn('Modal Closed called with no Event initialized.');\r\n }\r\n this.sessionTimeoutHandledEvent.next(null);\r\n }\r\n}\r\n","import {Observable, of, ReplaySubject, throwError} from 'rxjs';\r\nimport {concatMap, first} from 'rxjs/operators';\r\nimport {Injectable, Injector} from \"@angular/core\";\r\nimport {AuthenticatedUser, AuthenticationService, SecurityTokenResponse} from \"../authentication/authentication.service\";\r\nimport {SessionService} from \"../session/session.service\";\r\nimport * as _ from \"lodash\";\r\nimport {User} from \"@model/user\";\r\nimport {JwtService} from \"../jwt/jwt.service\";\r\nimport {ConfigService} from \"../configuration/configuration.service\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\nimport {CapabilitiesService} from \"@shared/services/webapp/capabilities/capabilities.service\";\r\nimport {SessionTimeoutModalService} from \"@shared/services/webapp/session-timeout-modal/session-timeout-modal.service\";\r\n\r\n@Injectable()\r\nexport class UserService {\r\n\r\n private readonly KEY_CURRENT_REFRESH_TOKEN: string = 'currentRefreshToken';\r\n private readonly KEY_CURRENT_RESOURCE_TOKEN: string = 'currentResourceToken';\r\n\r\n private _user: User;\r\n\r\n // ReplaySubject of 1 to emit the latest user to any new subscribers & existing subscribers\r\n // Using a BehaviorSubject is almost equivalent, but doesn't update the header (assuming identity) and side menu with the latest user\r\n public currentUserChangedEvent: ReplaySubject = new ReplaySubject(1);\r\n\r\n private http: HttpClient;\r\n\r\n constructor(private authenticationService: AuthenticationService,\r\n private sessionService: SessionService,\r\n private jwtService: JwtService,\r\n private configService: ConfigService,\r\n private capabilitiesService: CapabilitiesService,\r\n private sessionTimeoutModalService: SessionTimeoutModalService,\r\n inj: Injector) {\r\n\r\n this.http = inj.get(HttpClient);\r\n }\r\n\r\n // This attempts to get the user in the following order:\r\n // 1) if the user is already valid, return this.user\r\n // 2) if there are valid tokens, rebuild the user and return it.\r\n // 3) if there is already a user object, but neither token are valid, then user's 'session' has timed out.\r\n // present the user with the OK dialog and fall to next step.\r\n // 3) authenticate the user using the order of preference in the authenticate service:\r\n // refresh token, internal auto login, external login screen.\r\n public getUser(forceLoginForm: boolean = false): Observable {\r\n if (this.isCurrentUserValid()) {\r\n return of(this._user);\r\n }\r\n\r\n if (this.haveValidTokens()) {\r\n // rebuild the user from the existing tokens\r\n const jwtToken = this.jwtService.decodeToken(this.getUserResourceToken());\r\n this.setUser(jwtToken);\r\n\r\n return of(this._user);\r\n }\r\n\r\n if (this.isCurrentUserSessionTimedOut()) {\r\n return this.sessionTimeoutModalService.sessionTimedOut().pipe(\r\n first(),\r\n concatMap(() => {\r\n return this.authenticate();\r\n }));\r\n }\r\n\r\n return this.authenticate();\r\n }\r\n\r\n // This should only be used in places where you know the user has been authenticated already - after an auth guard.\r\n public get user(): User {\r\n return this._user;\r\n }\r\n // public loginByOkta(): Observable {\r\n // return this.authenticationService.authenticateByOkta().pipe(\r\n // concatMap(authResponse => {\r\n // return this.updateUser(authResponse);\r\n // }));\r\n // }\r\n\r\n public isLoggedIn(): boolean {\r\n // TODO: Not really sure this is correct.\r\n return !!this.getUserResourceToken();\r\n }\r\n\r\n public getUserResourceToken(): string {\r\n return localStorage.getItem(this.KEY_CURRENT_RESOURCE_TOKEN);\r\n }\r\n\r\n public assumeIdentity(enterpriseId: number): Observable {\r\n // Note: this will cause the user to log-in again before assuming\r\n // identity if their token has timed out.\r\n return this.getUser().pipe(concatMap(user => {\r\n if (!user.isInternalUser) {\r\n throw throwError(\"Cannot assume identity because the user is not valid\");\r\n }\r\n return this.authenticationService.assumeIdentity(enterpriseId).pipe(\r\n concatMap(authResponse => {\r\n return this.updateUser(authResponse);\r\n }));\r\n }));\r\n }\r\n\r\n public clearAssumeIdentity(): void {\r\n this.removeCurrentUserResourceToken();\r\n this.removeCurrentUserToken();\r\n this._user = null;\r\n }\r\n\r\n public logout(): void {\r\n // This will clear everything. User will have to log back in on other tabs.\r\n this.removeCurrentUserToken();\r\n this.removeCurrentUserResourceToken();\r\n this._user = null;\r\n this.sessionService.clearPipeline();\r\n }\r\n\r\n public hasCapabilities(capabilities: string[]): boolean {\r\n return this.capabilitiesService.hasCapabilities(capabilities, this._user, this.sessionService.getPipeline().code);\r\n }\r\n\r\n public hasRole(roles: string[]): boolean {\r\n return this.user.hasAnyRole(roles);\r\n }\r\n\r\n public hasRoleWithoutPipeline(roles: string[]): boolean {\r\n const pipeline = this.sessionService.getPipeline();\r\n\r\n const rolesWithPipeline = _.map(roles, x => `${pipeline.code}_${x}`);\r\n\r\n return this.hasRole(rolesWithPipeline);\r\n }\r\n\r\n private authenticate(forceLoginForm: boolean = false): Observable {\r\n return this.authenticationService.authenticate(forceLoginForm).pipe(\r\n concatMap(authResponse => {\r\n return this.updateUser(authResponse);\r\n }));\r\n }\r\n\r\n private isCurrentUserSessionTimedOut(): boolean {\r\n return !_.isNil(this._user) && this.isRefreshTokenExpired();\r\n }\r\n\r\n private updateUser(securityTokenResponse: SecurityTokenResponse): Observable {\r\n if (_.isNil(securityTokenResponse)) {\r\n this.removeCurrentUserToken();\r\n this.removeCurrentUserResourceToken();\r\n this._user = null;\r\n } else {\r\n this.setCurrentRefreshToken(securityTokenResponse.refreshToken);\r\n this.setCurrentUserResourceToken(securityTokenResponse.accessToken);\r\n const jwtToken = this.jwtService.decodeToken(this.getUserResourceToken());\r\n this.setUser(jwtToken);\r\n }\r\n return of(this._user);\r\n }\r\n\r\n private setUser(jwtToken: AuthenticatedUser) {\r\n this._user = new User(jwtToken);\r\n this.currentUserChangedEvent.next(this._user);\r\n }\r\n\r\n private haveValidTokens(): boolean {\r\n const resourceToken = this.getUserResourceToken();\r\n const refreshToken = this.getUserRefreshToken();\r\n return !_.isNil(resourceToken) && !_.isNil(refreshToken)\r\n && !this.jwtService.isTokenExpired(resourceToken) &&\r\n !this.jwtService.isTokenExpired(refreshToken);\r\n }\r\n\r\n private isCurrentUserValid(): boolean {\r\n return !_.isNil(this._user) && this.isCurrentTokenValid();\r\n }\r\n\r\n private isCurrentTokenValid(): boolean {\r\n const token = this.getUserResourceToken();\r\n if (_.isNil(token)) {\r\n return false;\r\n }\r\n // TODO: Do we want to cache expiry? Right now we decode the token before every http request.\r\n return !this.jwtService.isTokenExpired(this.getUserResourceToken());\r\n }\r\n\r\n private isRefreshTokenExpired(): boolean {\r\n const token = this.getUserRefreshToken();\r\n if (_.isNil(token)) {\r\n // Not sure how this happens if the user is null, but I've seen it.\r\n // Maybe a user manually deleted their LocalStorage?\r\n // In either case, the refresh token is considered expired, and we need to re-authenticate.\r\n return false;\r\n }\r\n return this.jwtService.isTokenExpired(token);\r\n }\r\n\r\n private setCurrentRefreshToken(token: string): void {\r\n localStorage.setItem(this.KEY_CURRENT_REFRESH_TOKEN, token);\r\n }\r\n\r\n private setCurrentUserResourceToken(token: string): void {\r\n localStorage.setItem(this.KEY_CURRENT_RESOURCE_TOKEN, token);\r\n }\r\n\r\n private removeCurrentUserToken(): void {\r\n localStorage.removeItem(this.KEY_CURRENT_REFRESH_TOKEN);\r\n }\r\n\r\n private removeCurrentUserResourceToken(): void {\r\n localStorage.removeItem(this.KEY_CURRENT_RESOURCE_TOKEN);\r\n }\r\n\r\n private getUserRefreshToken(): string {\r\n return localStorage.getItem(this.KEY_CURRENT_REFRESH_TOKEN);\r\n }\r\n}\r\n","import {NgbDate} from \"@ng-bootstrap/ng-bootstrap/datepicker/ngb-date\";\r\nimport * as moment from 'moment';\r\nimport {NgbTimeStruct} from \"@ng-bootstrap/ng-bootstrap\";\r\nimport {IGasDay} from \"@model/gas-day-month.interface\";\r\n\r\nexport class DateTime {\r\n static ToDisplayFormat: string = 'YYYY-MMM-DD HH:mm:ss';\r\n static ToCsvFormat: string = 'YYYY-MM-DD HH:mm:ss';\r\n private static ToDateFormat: string = 'YYYY-MMM-DD';\r\n private static ToTimeFormat: string = \"HH:mm\";\r\n\r\n originalDateTime: Date;\r\n public date: NgbDate;\r\n public time: NgbTimeStruct;\r\n\r\n public static parse(value: string): DateTime {\r\n return new DateTime(moment(value).toDate());\r\n }\r\n\r\n public static isValid(value: string): boolean {\r\n return moment(value).isValid();\r\n }\r\n\r\n public static min(): DateTime {\r\n return new DateTime(new Date(1900, 0, 1));\r\n }\r\n\r\n public static max(): DateTime {\r\n return new DateTime(new Date(9999, 11, 31));\r\n }\r\n\r\n public static parseFromTime(value: string): DateTime {\r\n return new DateTime(moment(value, ['h:m a', 'H:m']).toDate());\r\n }\r\n\r\n public static isSame(firstValue: any, secondValue: any): boolean {\r\n return moment(firstValue).isSame(moment(secondValue));\r\n }\r\n\r\n public static centralClockTimeStringToDate(s: string): Date {\r\n if (s === undefined || !s) { throw new Error(\"Unable to parse s because it is null or undefined.\"); }\r\n const today = new Date();\r\n const timeStr = this.monthToName(today.getMonth()) + ' ' + today.getDate().toString() + ' ' + today.getFullYear().toString() + ' ' + s;\r\n const dt = new Date(timeStr);\r\n dt.setFullYear(0, 0, 0);\r\n return dt;\r\n }\r\n\r\n public static monthToName(m: number) {\r\n return ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'][m];\r\n }\r\n\r\n constructor(dateTime: Date) {\r\n this.originalDateTime = moment(dateTime).toDate();\r\n this.date = {\r\n year: this.originalDateTime.getFullYear(),\r\n month: this.originalDateTime.getMonth() + 1,\r\n day: this.originalDateTime.getDate()\r\n } as NgbDate;\r\n this.time = {\r\n hour: this.originalDateTime.getHours(),\r\n minute: this.originalDateTime.getMinutes(),\r\n second: this.originalDateTime.getSeconds()\r\n } as NgbTimeStruct;\r\n }\r\n\r\n public toDisplayFormat(withoutSeconds: boolean = false): string {\r\n const format = withoutSeconds ? DateTime.ToDisplayFormat.replace(':ss', '') : DateTime.ToDisplayFormat;\r\n return this.format(format);\r\n }\r\n\r\n public toCsvFormat(withoutSeconds: boolean = false): string {\r\n const format = withoutSeconds ? DateTime.ToCsvFormat.replace(':ss', '') : DateTime.ToCsvFormat;\r\n return this.format(format);\r\n }\r\n\r\n public getOriginalDate(): Date {\r\n return this.originalDateTime;\r\n }\r\n\r\n public getOriginalTime(): number {\r\n return this.originalDateTime.getTime();\r\n }\r\n\r\n public addSeconds(value: number): DateTime {\r\n return new DateTime(moment(this.originalDateTime).add(value, 'seconds').toDate());\r\n }\r\n\r\n public addDays(value: number): DateTime {\r\n return new DateTime(moment(this.originalDateTime).add(value, 'days').toDate());\r\n }\r\n\r\n public addMonths(value: number): DateTime {\r\n return new DateTime(moment(this.originalDateTime).add(value, 'months').toDate());\r\n }\r\n\r\n public toDate(): Date {\r\n return moment(this.toString()).toDate();\r\n }\r\n\r\n public toString = (): string => {\r\n return this.pad(this.date.year, 4) + '-' + this.pad(this.date.month, 2) + '-' + this.pad(this.date.day, 2) + ' ' + this.pad(this.time.hour, 2) + ':' + this.pad(this.time.minute, 2) + ':' + this.pad(this.time.second, 2);\r\n };\r\n\r\n public format(formatString: string): string {\r\n return moment(this.toString()).format(formatString);\r\n }\r\n\r\n private pad(value: number, numDigits: number): string {\r\n let output = value + '';\r\n while (output.length < numDigits) {\r\n output = '0' + output;\r\n }\r\n return output;\r\n }\r\n\r\n public toDateString(): string {\r\n return this.format(DateTime.ToDateFormat);\r\n }\r\n\r\n public toTimeString(): string {\r\n return this.format(DateTime.ToTimeFormat);\r\n }\r\n\r\n public isEqual(dateTime: DateTime): boolean {\r\n if (!dateTime) { return false; }\r\n return moment(this.toString()).isSame(dateTime.toString());\r\n }\r\n\r\n public removeTime(): DateTime {\r\n return new DateTime(moment(this.toString()).startOf('day').toDate());\r\n }\r\n\r\n}\r\n","import * as moment from 'moment';\r\nimport {IGasDay} from \"@model/gas-day-month.interface\";\r\nimport {DateTime} from \"@model/date-time\";\r\n\r\nexport class GasDay implements IGasDay {\r\n public get year(): number {\r\n return this._year;\r\n }\r\n public get month(): number {\r\n return this._month;\r\n }\r\n public get day(): number {\r\n return this._day;\r\n }\r\n\r\n constructor(year: number, month: number, day: number) {\r\n if (year <= 0 || month <= 0 || month > 12 || day <= 0 || day > 31) {\r\n throw new Error('Invalid GasDay');\r\n }\r\n this._year = year;\r\n this._month = month; // unlike Date, this is one based. i.e. January will have a numeric value of 1.\r\n this._day = day;\r\n }\r\n\r\n public toDateTime(): DateTime {\r\n return !this.isNull() ? new DateTime(this.toDate) : null;\r\n }\r\n\r\n get toDate(): Date {\r\n if (this.isNull()) {\r\n return null;\r\n } else {\r\n return this.toMoment().toDate();\r\n }\r\n }\r\n\r\n set toDate(value: Date) {\r\n const date = moment(value);\r\n\r\n this._year = date.year();\r\n this._month = date.month() + 1;\r\n this._day = date.date();\r\n }\r\n\r\n get nextGasDayDate(): Date {\r\n return this.next().toDate;\r\n }\r\n\r\n public static readonly GasDayForEarliestBillingMonth: GasDay = new GasDay(2013, 11, 1);\r\n\r\n // TODO: Rename formats to match phase one terminology\r\n public static ToStringFormat = 'YYYY-MM-DD';\r\n public static ToDisplayFormat = 'YYYY-MMM-DD';\r\n public static ToDisplayDateTimeFormat = 'YYYY-MMM-DD 09:00';\r\n public static ToDisplayTimeFormat = 'HH:mm';\r\n public static ToCsvFormat = GasDay.ToStringFormat;\r\n public static ToTextDisplayFormat = 'MMMM DD, YYYY';\r\n public static ToCsvFormatWithNoDashes = 'YYYYMMDD';\r\n public static MaxGasDayDisplayValue = '9999-Dec-31';\r\n public static ValidInputFormats = ['MMM DD YYYY', 'YYYY/MM/DD', 'YYYY-MM-DD', 'YYYY-MMM-DD', 'MM/DD/YYYY'];\r\n\r\n private _year: number;\r\n private _month: number;\r\n private _day: number;\r\n\r\n public static today(): GasDay {\r\n return GasDay.from(moment().toDate());\r\n }\r\n\r\n public static maxGasDay(): GasDay {\r\n return new GasDay(9999, 12, 31);\r\n }\r\n\r\n public static fromDateTime(dateTime: DateTime) : GasDay {\r\n const date = moment(dateTime.originalDateTime);\r\n return new GasDay(date.year(), date.month() + 1, date.date());\r\n }\r\n\r\n public static from(value: Date, strict = false): GasDay {\r\n if (value) {\r\n if (strict) {\r\n const strictGasDay = moment(value, GasDay.ValidInputFormats, true);\r\n return new GasDay(strictGasDay.year(), strictGasDay.month() + 1, strictGasDay.date());\r\n }\r\n const gasDay = moment(value, GasDay.ValidInputFormats, true);\r\n return new GasDay(gasDay.year(), gasDay.month() + 1, gasDay.date());\r\n }\r\n return null;\r\n }\r\n\r\n public static tryParse(value: string, strict: boolean = false) {\r\n if (strict) {\r\n return moment(value, GasDay.ValidInputFormats, true).isValid();\r\n }\r\n\r\n return moment(value).isValid();\r\n }\r\n\r\n /*\r\n Not using ES6 Spread operator because it probably doesn't work in IE11!\r\n */\r\n public static max(values: IGasDay[]): GasDay {\r\n\r\n if (values.length === 0) {\r\n const error = new Error(\"Unable to find max for an empty array\");\r\n error.name = 'ArgumentException';\r\n throw error;\r\n }\r\n\r\n\r\n let max = values[0];\r\n for (const value of values) {\r\n if (value.isGreaterThan(max)) {\r\n max = value;\r\n }\r\n }\r\n return new GasDay(max.year, max.month, max.day);\r\n }\r\n\r\n public static parse(value: string, strict: boolean = false): GasDay {\r\n if (typeof value !== \"string\") {\r\n throw new Error(`Unable to parse GasDay from value: '${value}' because it is not a string.`);\r\n }\r\n\r\n if (!GasDay.tryParse(value, strict)) {\r\n throw new Error(`Unable to parse GasDay from value: '${value}' because it is not a valid input format.`);\r\n }\r\n\r\n if (strict) {\r\n const strictDateValue = moment(value, GasDay.ValidInputFormats, true);\r\n return new GasDay(strictDateValue.year(), strictDateValue.month() + 1, strictDateValue.date());\r\n }\r\n\r\n const dateValue = moment(value);\r\n if (dateValue.year() === GasDay.maxGasDay().year) {\r\n return GasDay.maxGasDay();\r\n }\r\n\r\n return new GasDay(dateValue.year(), dateValue.month() + 1, dateValue.date());\r\n }\r\n\r\n public static startOfTime(): GasDay {\r\n return new GasDay(1753, 1, 1);\r\n }\r\n\r\n public static endOfTime(): GasDay {\r\n return new GasDay(9999, 12, 31);\r\n }\r\n\r\n\r\n\r\n previous(): GasDay {\r\n return this.addDays(-1);\r\n }\r\n\r\n next(): GasDay {\r\n return this.addDays(1);\r\n }\r\n\r\n end(): GasDay {\r\n return this.next();\r\n }\r\n\r\n addDays(value: number): GasDay {\r\n const gasDay = this.toMoment().add(value, 'days');\r\n return new GasDay(gasDay.year(), gasDay.month() + 1, gasDay.date());\r\n }\r\n\r\n addMonths(value: number): GasDay {\r\n const gasDay = this.toMoment().add(value, 'months');\r\n return new GasDay(gasDay.year(), gasDay.month() + 1, gasDay.date());\r\n }\r\n\r\n toString(): string {\r\n const moment2 = this.toMoment();\r\n return moment2.format(GasDay.ToStringFormat);\r\n }\r\n\r\n toDisplayFormatAll(): string {\r\n return this.toMoment().format(GasDay.ToDisplayFormat);\r\n }\r\n\r\n toDisplayFormat(hideMaxGasDay?: boolean): string {\r\n // This is the only way to set a default when what we really want is overloading.\r\n if (hideMaxGasDay === undefined) {\r\n hideMaxGasDay = true;\r\n }\r\n const result = this.toDisplayFormatAll();\r\n return hideMaxGasDay && result === GasDay.MaxGasDayDisplayValue ? '' : result;\r\n }\r\n\r\n toDisplayDateTimeFormat(): string {\r\n return this.toMoment().format(GasDay.ToDisplayDateTimeFormat);\r\n }\r\n\r\n toDisplayTimeFormat(): string {\r\n return this.toMoment().format(GasDay.ToDisplayTimeFormat);\r\n }\r\n\r\n toCsvFormat(): string {\r\n return this.toMoment().format(GasDay.ToCsvFormat);\r\n }\r\n\r\n toCsvFormatWithNoDashes(): string {\r\n return this.toMoment().format(GasDay.ToCsvFormatWithNoDashes);\r\n // return _.replace(this.toCsvFormat(), /-/g, '');\r\n }\r\n\r\n toTextDisplayFormat(): string {\r\n return this.toMoment().format(GasDay.ToTextDisplayFormat);\r\n }\r\n\r\n // This can probably be simplified with some brain-power\r\n isGreaterThan(gasDay: IGasDay): boolean {\r\n if (!gasDay) { return true; }\r\n if (this.year > gasDay.year) {\r\n return true;\r\n }\r\n if (this.year === gasDay.year) {\r\n if (this.month > gasDay.month) {\r\n return true;\r\n }\r\n if (this.month === gasDay.month) {\r\n return this.day > gasDay.day;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n isGreatThanOrEqualTo(gasDay: IGasDay): boolean {\r\n if (!gasDay) { return true; }\r\n return this.isEqual(gasDay) || this.isGreaterThan(gasDay);\r\n }\r\n\r\n isLessThan(gasDay: IGasDay): boolean {\r\n if (!gasDay) { return false; }\r\n return !this.isEqual(gasDay) && !this.isGreaterThan(gasDay);\r\n }\r\n\r\n isLessThanOrEqualTo(gasDay: IGasDay): boolean {\r\n if (!gasDay) { return false; }\r\n return this.isEqual(gasDay) || this.isLessThan(gasDay);\r\n }\r\n\r\n isInRangeOf(startGasDay: IGasDay, endGasDay: IGasDay): boolean {\r\n return this.isGreatThanOrEqualTo(startGasDay) && this.isLessThanOrEqualTo(endGasDay);\r\n }\r\n\r\n isEqual(gasDay: IGasDay): boolean {\r\n if (!gasDay) { return false; }\r\n return this.year === gasDay.year &&\r\n this.month === gasDay.month &&\r\n this.day === gasDay.day;\r\n }\r\n\r\n isNull(): boolean {\r\n return isNaN(this.year) || isNaN(this.month) || isNaN(this.day);\r\n }\r\n\r\n private toMoment() {\r\n return moment([this.year, this.month - 1, this.day, 9, 0, 0]); // Default the time to be 09:00\r\n }\r\n}\r\n","import * as _ from \"lodash\";\r\nimport {HttpParams} from \"@angular/common/http\";\r\nimport {IGasDay} from \"app/shared/classes/gas-day-month.interface\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\n\r\n/*\r\n * The intent of GCTSHttpParams is for:\r\n * - A single, centralized place for converting GCTS datatypes (think GasDay) into simple data types\r\n * - Log for any existing queries that are sending null values in the request\r\n */\r\nexport class GCTSHttpParams {\r\n private httpParams = new HttpParams();\r\n\r\n /*\r\n * Sets properties on the underlying HttpParams\r\n */\r\n public set(param: string, value: string): void {\r\n if (this.checkForNil(param, value)) { return; }\r\n\r\n this.httpParams = this.httpParams.set(param, value);\r\n }\r\n\r\n public setOptionalString(param: string, value: string): void {\r\n if(_.isNil(value)) return;\r\n\r\n this.set(param, value);\r\n }\r\n\r\n public setNumber(param: string, value: number): void {\r\n if (this.checkForNil(param, value)) { return; }\r\n\r\n this.httpParams = this.httpParams.set(param, value.toString());\r\n }\r\n\r\n public setOptionalBoolean(param: string, value: boolean): void {\r\n if (_.isNil(value)) { return; }\r\n this.setBoolean(param, value);\r\n }\r\n\r\n public setOptionalNumber(param: string, value: number): void {\r\n if (_.isNil(value)) { return; }\r\n if (_.isNaN(value)) { return; }\r\n\r\n this.setNumber(param, value);\r\n }\r\n\r\n public setListOfNumbers(param: string, values: number[]): void {\r\n this.set(param, values.toString());\r\n }\r\n public setListOfStrings(param: string, values: string[]): void {\r\n this.set(param, values.toString());\r\n }\r\n\r\n public setOptionalListOfNumbers(param: string, values: number[]): void {\r\n if (_.size(values) === 0) { return; }\r\n\r\n this.setListOfNumbers(param, values);\r\n }\r\n\r\n public setOptionalListOfStrings(param: string, values: string[]): void {\r\n if (_.size(values) === 0) { return; }\r\n\r\n this.setListOfStrings(param, values);\r\n }\r\n\r\n public setBoolean(param: string, value: boolean): void {\r\n if (this.checkForNil(param, value)) { return; }\r\n\r\n this.httpParams = this.httpParams.set(param, value.toString());\r\n }\r\n\r\n public setOptionalGasDay(value: IGasDay, param: string = 'gasDay') {\r\n if(_.isNil(value)) return;\r\n this.setGasDay(value, param);\r\n }\r\n\r\n public setGasDay(value: IGasDay, param: string = 'gasDay'): void {\r\n if (this.checkForNil(param, value)) { return; }\r\n this.httpParams = this.httpParams.set(param, value.toString());\r\n }\r\n\r\n public setGasMonth(value: GasMonth, param: string = 'gasMonth'): void {\r\n if (this.checkForNil(param, value)) { return; }\r\n this.httpParams = this.httpParams.set(param, value.toString());\r\n }\r\n\r\n public setOptionalGasMonth(value: GasMonth, param: string = 'gasMonth') {\r\n if(_.isNil(value)) return;\r\n this.httpParams = this.httpParams.set(param, value.toString());\r\n }\r\n\r\n private checkForNil(param: string, value: any): boolean {\r\n if (_.isNil(value)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /*\r\n * Constructs HttpParams from the given set properties\r\n */\r\n public build(): HttpParams {\r\n return this.httpParams;\r\n }\r\n}\r\n","\r\nimport {of, Observable, throwError} from 'rxjs';\r\n\r\nimport {concatMap, map, catchError} from 'rxjs/operators';\r\nimport * as _ from 'lodash';\r\nimport {HttpClient, HttpParams, HttpResponse} from \"@angular/common/http\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\n\r\nexport abstract class AbstractResourceService {\r\n protected constructor(protected httpClient: HttpClient) {}\r\n\r\n abstract getBaseUri(includePipeline: boolean): string;\r\n\r\n /*\r\n * Returns a Generic typed object back. Useful for most GET situations.\r\n *\r\n * This will be a JSON response that gets converted into the Type T.\r\n *\r\n */\r\n get(resourceUri: string, includePipelineInUrl: boolean = true, params?: GCTSHttpParams): Observable {\r\n const fullUrl = this.getBaseUri(includePipelineInUrl) + resourceUri;\r\n return this.httpClient.get(fullUrl, {params: this.buildParams(params)}).pipe(\r\n catchError(error => throwError(error))); // Catching and throwError allows our components to see errors in the subscribe error block\r\n }\r\n\r\n /*\r\n * Returns a number.\r\n *\r\n * HttpClient .get returns null for 0. So this method was created.\r\n *\r\n */\r\n getNumber(resourceUri: string, includePipelineInUrl: boolean = true, params?: GCTSHttpParams): Observable {\r\n const fullUrl = this.getBaseUri(includePipelineInUrl) + resourceUri;\r\n return this.httpClient.get(fullUrl, {params: this.buildParams(params)}).pipe(map(res => +res),\r\n catchError(error => throwError(error)),); // Catching and throwError allows our components to see errors in the subscribe error block\r\n }\r\n\r\n /*\r\n * For when the body of the response is Text.\r\n *\r\n * Issue with Angular 4 - it does not like a body-less response without responseType set to text.\r\n * See -> https://github.com/angular/angular/issues/18680\r\n *\r\n * For end points that return 200 - OK and no JSON body, we need to use this until we upgrade to Angular 5.2.4\r\n */\r\n getText(resourceUri: string, includePipelineInUrl: boolean = true, params?: GCTSHttpParams): Observable {\r\n const fullUrl = this.getBaseUri(includePipelineInUrl) + resourceUri;\r\n return this.httpClient.get(fullUrl, {params: this.buildParams(params), responseType: 'text'}).pipe(\r\n catchError(error => throwError(error))); // Catching and throwError allows our components to see errors in the subscribe error block\r\n }\r\n\r\n /*\r\n * For when the body of the response is Data.\r\n *\r\n * Also includes HttpResponse, useful for extracting header information such as content-type.\r\n */\r\n getData(resourceUri: string, includePipelineInUrl: boolean = true, params?: GCTSHttpParams): Observable> {\r\n const fullUrl = this.getBaseUri(includePipelineInUrl) + resourceUri;\r\n return this.httpClient.get(fullUrl, {params: this.buildParams(params), responseType: 'arraybuffer', observe: 'response'}).pipe(\r\n catchError(error => throwError(error))); // Catching and throwError allows our components to see errors in the subscribe error block\r\n }\r\n\r\n /*\r\n * Performs a POST action and converts the JSON response to type T.\r\n *\r\n * Avoid using post or post. Instead use postWithNoResponseBody.\r\n */\r\n post(url: string, body: any, includePipelineInUrl: boolean = true, params?: GCTSHttpParams): Observable {\r\n const fullUrl = this.getBaseUri(includePipelineInUrl) + url;\r\n return this.httpClient.post(fullUrl, body, {params: this.buildParams(params)}).pipe(\r\n catchError(error => throwError(error))); // Catching and throwError allows our components to see errors in the subscribe error block\r\n }\r\n\r\n /*\r\n * Performs a POST action and the body of the response is Data.\r\n *\r\n * Includes HttpResponse, useful for extracting header information such as content-type.\r\n */\r\n postWithDataResponse(url: string, body: any, includePipelineInUrl: boolean = true, params?: GCTSHttpParams): Observable> {\r\n const fullUrl = this.getBaseUri(includePipelineInUrl) + url;\r\n return this.httpClient.post(fullUrl, body, {params: this.buildParams(params), responseType: 'arraybuffer', observe: 'response'}).pipe(\r\n catchError(error => throwError(error))); // Catching and throwError allows our components to see errors in the subscribe error block\r\n }\r\n\r\n /*\r\n * For POST endpoints that return no body. For example an HTTP Response code such as 200 OK\r\n *\r\n * Issue with Angular 4 - it does not like a body-less response without responseType set to text.\r\n * See -> https://github.com/angular/angular/issues/18680\r\n *\r\n * We can look at this when we upgrade to Angular >= 5.2.4\r\n */\r\n postWithNoResponseBody(url: string, body: any, includePipelineInUrl: boolean = true, params?: GCTSHttpParams): Observable {\r\n const fullUrl = this.getBaseUri(includePipelineInUrl) + url;\r\n return this.httpClient.post(fullUrl, body, {params: this.buildParams(params), responseType: 'text'}).pipe(\r\n // Converts from type Text -> void.\r\n concatMap(() => of(null)),\r\n catchError(error => throwError(error))); // Catching and throwError allows our components to see errors in the subscribe error block\r\n }\r\n\r\n /*\r\n * Performs a PUT action and converts the JSON response to type T.\r\n *\r\n * Avoid using put or put. Instead use putWithNoResponseBody.\r\n */\r\n put(url: string, body: any, includePipelineInUrl: boolean = true, params?: GCTSHttpParams): Observable {\r\n const fullUrl = this.getBaseUri(includePipelineInUrl) + url;\r\n return this.httpClient.put(fullUrl, body, {params: this.buildParams(params)}).pipe(\r\n catchError(error => throwError(error))); // Catching and throwError allows our components to see errors in the subscribe error block\r\n }\r\n\r\n /*\r\n * For PUT endpoints that return no body. For example an HTTP Response code such as 200 OK\r\n *\r\n * Issue with Angular 4 - it does not like a body-less response without responseType set to text.\r\n * See -> https://github.com/angular/angular/issues/18680\r\n *\r\n * We can look at this when we upgrade to Angular >= 5.2.4\r\n */\r\n putWithNoResponseBody(url: string, body: any, includePipelineInUrl: boolean = true, params?: GCTSHttpParams): Observable {\r\n const fullUrl = this.getBaseUri(includePipelineInUrl) + url;\r\n return this.httpClient.put(fullUrl, body, {params: this.buildParams(params), responseType: 'text'}).pipe(\r\n concatMap(() => of(null)),\r\n catchError(error => throwError(error)),); // Catching and throwError allows our components to see errors in the subscribe error block\r\n }\r\n\r\n /*\r\n * Performs a Delete action and converts the JSON response to type T.\r\n *\r\n * Avoid using delete or delete. Instead use putWithNoResponseBody.\r\n */\r\n deleteTyped(url: string, includePipelineInUrl: boolean = true, params?: GCTSHttpParams): Observable {\r\n const fullUrl = this.getBaseUri(includePipelineInUrl) + url;\r\n return this.httpClient.delete(fullUrl, {params: this.buildParams(params)}).pipe(\r\n catchError(error => throwError(error))); // Catching and throwError allows our components to see errors in the subscribe error block\r\n }\r\n\r\n /*\r\n * For DELETE endpoints that return no body. For example an HTTP Response code such as 200 OK\r\n *\r\n * Issue with Angular 4 - it does not like a body-less response without responseType set to text.\r\n * See -> https://github.com/angular/angular/issues/18680\r\n *\r\n * We can look at this when we upgrade to Angular >= 5.2.4\r\n */\r\n deleteWithNoResponseBody(url: string, includePipelineInUrl: boolean = true, params?: GCTSHttpParams): Observable {\r\n const fullUrl = this.getBaseUri(includePipelineInUrl) + url;\r\n return this.httpClient.delete(fullUrl, {params: this.buildParams(params), responseType: 'text'}).pipe(\r\n concatMap(() => of(null)),\r\n catchError(error => throwError(error)),); // Catching and throwError allows our components to see errors in the subscribe error block\r\n }\r\n\r\n /*\r\n * Performs a PATCH action and converts the JSON response to type T.\r\n *\r\n * Avoid using delete or delete. Instead use putWithNoResponseBody.\r\n */\r\n patchTyped(url: string, includePipelineInUrl: boolean = true, params?: GCTSHttpParams): Observable {\r\n const fullUrl = this.getBaseUri(includePipelineInUrl) + url;\r\n return this.httpClient.patch(fullUrl, {params: this.buildParams(params)}).pipe(\r\n catchError(error => throwError(error))); // Catching and throwError allows our components to see errors in the subscribe error block\r\n }\r\n\r\n /*\r\n * For PATCH endpoints that return no body. For example an HTTP Response code such as 200 OK\r\n *\r\n * Issue with Angular 4 - it does not like a body-less response without responseType set to text.\r\n * See -> https://github.com/angular/angular/issues/18680\r\n *\r\n * We can look at this when we upgrade to Angular >= 5.2.4\r\n */\r\n patchWithNoResponseBody(url: string, body: any, includePipelineInUrl: boolean = true, params?: GCTSHttpParams): Observable {\r\n const fullUrl = this.getBaseUri(includePipelineInUrl) + url;\r\n return this.httpClient.patch(fullUrl, body, {params: this.buildParams(params), responseType: 'text'}).pipe(\r\n concatMap(() => of(null)),\r\n catchError(error => throwError(error)),); // Catching and throwError allows our components to see errors in the subscribe error block\r\n }\r\n\r\n private buildParams(params: GCTSHttpParams): HttpParams {\r\n return (_.isNil(params) || params.build().keys().length === 0) ? null : params.build();\r\n }\r\n}\r\n","import * as _ from \"lodash\";\r\nimport {Injectable} from '@angular/core';\r\nimport {SessionService} from \"../session/session.service\";\r\nimport {ConfigService} from \"../configuration/configuration.service\";\r\n\r\n@Injectable()\r\nexport class UriService {\r\n\r\n constructor(private sessionService: SessionService,\r\n private configService: ConfigService) { }\r\n\r\n public getUri(serviceBaseUri: string) {\r\n return this.getUriWithPipelineAndGateway(serviceBaseUri, false);\r\n }\r\n\r\n // If lookbehind worked with js regex, we could do this in a simpler way.\r\n public getUriWithPipelineAndGateway(serviceBaseUri: string, includePipeline: boolean = true) {\r\n\r\n let gatewayUri = this.configService.getGatewayUrl();\r\n // strip off the last / from the gateway uri\r\n if (gatewayUri) {\r\n gatewayUri = _.trimEnd(gatewayUri, '/');\r\n }\r\n\r\n // strip off the / at the beginning of the serviceBaseUri\r\n if (serviceBaseUri) {\r\n serviceBaseUri = _.trimStart(serviceBaseUri, '/');\r\n }\r\n\r\n if (includePipeline) {\r\n const pipelineCode = this.sessionService.getPipeline().code;\r\n return `${gatewayUri}/${serviceBaseUri}/pipelines/${pipelineCode}`;\r\n }\r\n return `${gatewayUri}/${serviceBaseUri}`;\r\n }\r\n\r\n public getCommonDataUri(includePipeline: boolean = true): string {\r\n return this.getUriWithPipelineAndGateway(this.configService.commonDataServiceUri, includePipeline);\r\n }\r\n\r\n public getSecurityUri(): string {\r\n return this.getUriWithPipelineAndGateway(this.configService.securityServiceUri, false);\r\n }\r\n\r\n public getPublicSiteUri(): string {\r\n return this.configService.getPublicSiteUrl();\r\n }\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {UriService} from \"../services/webapp/uri/uri.service\";\r\nimport {AbstractResourceService} from \"./abstract-resource.service\";\r\nimport {ConfigService} from \"../services/webapp/configuration/configuration.service\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\n\r\n@Injectable()\r\nexport class NominationResourceService extends AbstractResourceService {\r\n\r\n constructor(protected httpClient: HttpClient,\r\n private uriService: UriService,\r\n private configService: ConfigService) {\r\n super(httpClient);\r\n }\r\n\r\n getBaseUri(includePipeline: boolean): string {\r\n return this.uriService.getUriWithPipelineAndGateway(this.configService.nominationServiceUri, includePipeline);\r\n }\r\n}\r\n","\r\nimport {map} from 'rxjs/operators';\r\nimport * as _ from 'lodash';\r\nimport {Injectable} from '@angular/core';\r\nimport {Observable} from \"rxjs\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {BusinessRight} from \"@model/business-right\";\r\nimport {NominationResourceService} from \"@shared/resources/nominations-resource.service\";\r\nimport {IGasDay} from \"@model/gas-day-month.interface\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {IEnrichmentResource} from \"@shared/services/enrichment/base-enrichment.service\";\r\nimport {IEnrichmentEnterprise} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\n\r\nexport class EnterpriseSearchParams {\r\n gasDay: IGasDay;\r\n gasAccountType: string;\r\n serviceType: string;\r\n isLocationOperator: boolean;\r\n includeInactive: boolean;\r\n accountBusinessRights: BusinessRight[];\r\n ignoreExternalNomGroupFilter: boolean;\r\n}\r\n\r\nexport interface INominationEnterpriseDto {\r\n id: number;\r\n shortName: string;\r\n legalName: string;\r\n mnemonic: string;\r\n dunsNumber: string;\r\n effectiveGasDay: string;\r\n expiryGasDay: string;\r\n stateExpiryGasDay: string;\r\n}\r\n\r\nexport class NominationEnterprise implements IEnrichmentEnterprise {\r\n id: number;\r\n shortName: string;\r\n legalName: string;\r\n mnemonic: string;\r\n dunsNumber: string;\r\n effectiveGasDay: GasDay;\r\n expiryGasDay: GasDay;\r\n stateExpiryGasDay: GasDay;\r\n sapNumber: string;\r\n\r\n public static create(dto: INominationEnterpriseDto): NominationEnterprise {\r\n\r\n const nominationEnterprise = new NominationEnterprise();\r\n nominationEnterprise.id = dto.id;\r\n nominationEnterprise.shortName = dto.shortName;\r\n nominationEnterprise.legalName = dto.legalName;\r\n nominationEnterprise.mnemonic = dto.mnemonic;\r\n nominationEnterprise.dunsNumber = dto.dunsNumber;\r\n nominationEnterprise.effectiveGasDay = !_.isNil(dto.effectiveGasDay) ? GasDay.parse(dto.effectiveGasDay) : null;\r\n nominationEnterprise.expiryGasDay = !_.isNil(dto.expiryGasDay) ? GasDay.parse(dto.expiryGasDay) : null;\r\n nominationEnterprise.stateExpiryGasDay = !_.isNil(dto.stateExpiryGasDay) ? GasDay.parse(dto.stateExpiryGasDay) : null;\r\n\r\n return nominationEnterprise;\r\n }\r\n\r\n public get displayValue(): string {\r\n return `${this.shortName} (${this.mnemonic})`;\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport class NominationEnterpriseService implements IEnrichmentResource {\r\n public static DefaultGasAccountType = 'TT';\r\n\r\n constructor(private nominationResource: NominationResourceService) {\r\n }\r\n\r\n queryAll(searchParams: EnterpriseSearchParams): Observable {\r\n return this.nominationResource.get('/enterprises', false, this.buildUrlSearchParams(searchParams));\r\n }\r\n\r\n public queryAllByPipeline(searchParams: EnterpriseSearchParams): Observable {\r\n return this.nominationResource.get('/enterprises', true, this.buildUrlSearchParams(searchParams)).pipe(\r\n map(enterprises => _.map(enterprises, x => NominationEnterprise.create(x))));\r\n }\r\n\r\n queryEnterpriseNames(searchParams: EnterpriseSearchParams): Observable {\r\n return this.nominationResource.get('/enterprises/names', true, this.buildUrlSearchParams(searchParams)).pipe(\r\n map(res => res.map(el => {\r\n const ent = new NominationEnterprise();\r\n ent.id = el.id;\r\n ent.mnemonic = el.mnemonic;\r\n ent.dunsNumber = el.dunsNumber;\r\n ent.legalName = el.legalName;\r\n ent.shortName = el.shortName;\r\n ent.effectiveGasDay = GasDay.parse(el.effectiveGasDay);\r\n ent.expiryGasDay = GasDay.parse(el.expiryGasDay);\r\n ent.stateExpiryGasDay = GasDay.parse(el.stateExpiryGasDay);\r\n\r\n return ent;\r\n })));\r\n }\r\n\r\n queryLocationOperatorsByPipeline(searchParams: EnterpriseSearchParams): Observable {\r\n searchParams.isLocationOperator = true;\r\n return this.nominationResource.get('/enterprises/names', true, this.buildUrlSearchParams(searchParams)).pipe(\r\n map(enterprises => {\r\n return _.orderBy(_.map(enterprises, x => _.extend({}, x, {\r\n displayValue: `${x.shortName} (${x.mnemonic})`\r\n })), x => x.displayValue);\r\n }));\r\n }\r\n\r\n get(id: number): Observable {\r\n return this.nominationResource.get(`/enterprises/${id}`);\r\n }\r\n\r\n private buildUrlSearchParams(searchParams: EnterpriseSearchParams): GCTSHttpParams {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n if (searchParams.gasDay != null) { params.set('gasDay', searchParams.gasDay.toString()); }\r\n if (searchParams.gasAccountType != null) { params.set('gasAccountType', searchParams.gasAccountType); }\r\n if (searchParams.isLocationOperator) { params.set('isLocationOperator', 'true'); }\r\n if (searchParams.includeInactive != null) { params.set('includeInactive', searchParams.includeInactive.toString()); }\r\n if (searchParams.serviceType) {params.set('serviceType', searchParams.serviceType); }\r\n if (searchParams.accountBusinessRights) {params.set('accountBusinessRights', searchParams.accountBusinessRights.map(x => x.name).toString()); }\r\n if (searchParams.ignoreExternalNomGroupFilter != null) {params.set('ignoreExternalNomGroupFilter', searchParams.ignoreExternalNomGroupFilter.toString()); }\r\n\r\n return params;\r\n }\r\n\r\n enrichmentQueryAll(gasDay: GasDay): Observable {\r\n const params = new EnterpriseSearchParams();\r\n params.gasDay = gasDay;\r\n params.gasAccountType = null;\r\n params.includeInactive = true;\r\n\r\n return this.queryEnterpriseNames(params);\r\n }\r\n\r\n enrichmentGet(id: number, gasDay: GasDay): Observable {\r\n return this.get(id);\r\n }\r\n}\r\n","import {GasDay} from \"@model/gas-day\";\r\n\r\nexport class EnrichmentEnterprise {\r\n shortName: string;\r\n mnemonic: string;\r\n dunsNumber: string;\r\n stateExpiryGasDay: GasDay;\r\n\r\n constructor(shortName: string, mnemonic: string, dunsNumber: string, stateExpiryGasDay: GasDay) {\r\n this.shortName = shortName;\r\n this.mnemonic = mnemonic;\r\n this.dunsNumber = dunsNumber;\r\n this.stateExpiryGasDay = stateExpiryGasDay;\r\n }\r\n}\r\n","import {GasDay} from \"./gas-day\";\r\nimport {SimpleGasDayCycleStatus} from \"./simple-gas-day-cycle-status\";\r\n\r\nexport class NominationPipelineGasDay {\r\n public actualGasDay: GasDay;\r\n public allowableGasDay: GasDay;\r\n public latestDayWithPreliminaryStatus: GasDay;\r\n public earliestSelectableGasDay: GasDay;\r\n public tomorrowsCalendarAllowableGasDay: GasDay;\r\n public latestLaunchedGasDay: GasDay;\r\n\r\n public lastClosedGasDayCycleStatus: SimpleGasDayCycleStatus;\r\n public openGasDayCycleStatus: SimpleGasDayCycleStatus;\r\n public timelyOpenGasDayCycleStatus: SimpleGasDayCycleStatus;\r\n public latestEveningScheduduledCycleStatus: SimpleGasDayCycleStatus;\r\n public latestScheduledCycleStatus: SimpleGasDayCycleStatus;\r\n\r\n public minGasDayForCycleStatus: GasDay;\r\n public maxGasDayForCycleStatus: GasDay;\r\n\r\n public hasGasDayCycles(): boolean {\r\n return this.minGasDayForCycleStatus !== null;\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\nimport {DateTime} from \"./date-time\";\r\n\r\nexport class\r\nGasCycle {\r\n public static TimelyCycleCode: string = 'T';\r\n public static TimelyCycleName: string = 'Timely';\r\n public static EveningCode: string = 'E';\r\n public static STS11Code: string = 'STS11';\r\n public static ID1Code: string = 'ID1';\r\n public static ID2Code: string = 'ID2';\r\n public static ID3Code: string = 'ID3';\r\n public static ID4Code: string = 'ID4';\r\n public static ID5Code: string = 'ID5';\r\n public static STS01Code: string = 'STS01';\r\n public static STS05Code: string = 'STS05';\r\n public static EODCode: string = 'EOD'; // Represents the end-of-day cycle, which is STS05 or ID3\r\n\r\n\r\n id: number;\r\n name: string;\r\n code: string;\r\n ediCode: string;\r\n sequence: number;\r\n gasFlowEffectiveTime: string;\r\n nominationDeadlineTime: Date; // In Central Clock Time\r\n bidFloorDeadlineTime: Date; // In Central Clock Time\r\n isIntraDayCycle: boolean;\r\n isStandingNomAllowed: boolean;\r\n isNaesbCycle: boolean;\r\n isStsCycle: boolean;\r\n\r\n public get displayValue(): string {\r\n return `${this.name} (${this.gasFlowEffectiveTime})`;\r\n }\r\n\r\n // TODO - JOE - If we stop passing around strings, maybe this can be on the instance of a gas-cycle instead.\r\n public static isStsCycle(gasCycleCode: string): boolean {\r\n return gasCycleCode === GasCycle.STS11Code || gasCycleCode === GasCycle.STS01Code || gasCycleCode === GasCycle.STS05Code;\r\n }\r\n\r\n public static isOvernightCycle(gasCycleCode: string): boolean {\r\n // TODO - JOE - Consider adding an isOvernight on the GasCycle returned from the backend to avoid hard-coding the cycle code.\r\n // On GLC, we don't have these or any overnight cycles for that matter, so this logic will work but could be improved.\r\n return gasCycleCode === GasCycle.STS01Code || gasCycleCode === GasCycle.STS05Code || gasCycleCode === GasCycle.ID4Code || gasCycleCode === GasCycle.ID5Code;\r\n }\r\n\r\n public static create(gasCycleDto: any): GasCycle {\r\n const gasCycle = new GasCycle();\r\n\r\n gasCycle.id = gasCycleDto.id;\r\n gasCycle.name = gasCycleDto.name;\r\n gasCycle.code = gasCycleDto.code;\r\n gasCycle.ediCode = gasCycleDto.ediCode;\r\n gasCycle.sequence = gasCycleDto.sequence;\r\n gasCycle.gasFlowEffectiveTime = gasCycleDto.gasFlowEffectiveTime;\r\n gasCycle.nominationDeadlineTime = !_.isNil(gasCycleDto.nominationDeadlineTime) ? DateTime.centralClockTimeStringToDate(gasCycleDto.nominationDeadlineTime) : null;\r\n gasCycle.bidFloorDeadlineTime = !_.isNil(gasCycleDto.bidFloorDeadlineTime) ? DateTime.centralClockTimeStringToDate(gasCycleDto.bidFloorDeadlineTime) : null;\r\n gasCycle.isIntraDayCycle = gasCycleDto.isIntraDayCycle;\r\n gasCycle.isStandingNomAllowed = gasCycleDto.isStandingNomAllowed;\r\n gasCycle.isNaesbCycle = gasCycleDto.isNaesbCycle;\r\n gasCycle.isStsCycle = gasCycleDto.isStsCycle;\r\n\r\n return gasCycle;\r\n }\r\n}\r\n\r\nexport class EndOfDayGasCycle extends GasCycle {\r\n\r\n private static Name: string = \"EOD\";\r\n private static Id: number = -1;\r\n\r\n public static createFor(gasCycle: GasCycle): EndOfDayGasCycle {\r\n\r\n // TODO - JOE - Should this be created with the static create()\r\n const cycle = new EndOfDayGasCycle();\r\n cycle.name = EndOfDayGasCycle.Name;\r\n cycle.id = gasCycle.id;\r\n cycle.code = EndOfDayGasCycle.Name;\r\n cycle.sequence = gasCycle.sequence;\r\n\r\n return cycle;\r\n }\r\n\r\n public get displayValue(): string {\r\n return `${this.name}`;\r\n }\r\n}\r\n","import {GasCycle} from \"./gas-cycle\";\r\nimport {GasDay} from \"./gas-day\";\r\n\r\nexport class SimpleGasDayCycleStatus {\r\n public static NomWindowOpenStatus: string = 'Nom Window Open';\r\n public static NomWindowClosedStatus: string = 'Nom Window Closed';\r\n public static HubsBalanced: string = 'Hubs Balanced';\r\n public static AutoBalancingHubs: string = 'Auto Balancing Hubs';\r\n public static AutoBalancingCapacityAllocation: string = 'Auto Balancing Capacity Allocation';\r\n public static Preliminary: string = 'Preliminary';\r\n public static AwaitingCapacityAllocation: string = 'Awaiting Capacity Allocation';\r\n public static ScheduledStatus: string = 'Scheduled';\r\n\r\n pipelineSystem: string;\r\n gasDay: GasDay;\r\n gasCycle: GasCycle;\r\n nominationDeadline: Date;\r\n status: string;\r\n isLaunched: boolean;\r\n isClosedForNomination: boolean;\r\n isOpenForNomination: boolean;\r\n isScheduled: boolean;\r\n forceTransportationSummaryEditMode: boolean;\r\n isAllocated: boolean;\r\n capacityAllocationStatus: string;\r\n\r\n\r\n /**\r\n * Used to build Gas Day Cycle Status object from JSON response.\r\n * @param {() => any} jsonResponse\r\n * @returns {SimpleGasDayCycleStatus}\r\n */\r\n public static create(gasDayCycleStatusDto: ISimpleGasDayCycleStatusResponse): SimpleGasDayCycleStatus {\r\n const gasDayCycleStatus = new SimpleGasDayCycleStatus();\r\n\r\n gasDayCycleStatus.pipelineSystem = gasDayCycleStatusDto.pipelineSystem;\r\n gasDayCycleStatus.gasDay = GasDay.parse(gasDayCycleStatusDto.gasDay);\r\n gasDayCycleStatus.gasCycle = GasCycle.create(gasDayCycleStatusDto.gasCycle);\r\n gasDayCycleStatus.nominationDeadline = new Date(gasDayCycleStatusDto.nominationDeadline);\r\n gasDayCycleStatus.status = gasDayCycleStatusDto.status;\r\n gasDayCycleStatus.capacityAllocationStatus = gasDayCycleStatusDto.capacityAllocationStatus;\r\n gasDayCycleStatus.isLaunched = !!gasDayCycleStatusDto.isLaunched;\r\n gasDayCycleStatus.isClosedForNomination = !!gasDayCycleStatusDto.isClosedForNomination;\r\n gasDayCycleStatus.isOpenForNomination = !!gasDayCycleStatusDto.isOpenForNomination;\r\n gasDayCycleStatus.isScheduled = gasDayCycleStatusDto.status === SimpleGasDayCycleStatus.ScheduledStatus;\r\n gasDayCycleStatus.forceTransportationSummaryEditMode = !!gasDayCycleStatusDto.forceTransportationSummaryEditMode;\r\n gasDayCycleStatus.isAllocated = gasDayCycleStatusDto.isAllocated;\r\n return gasDayCycleStatus;\r\n }\r\n\r\n public static getSQText(cycleStatus: string) : string {\r\n return cycleStatus === SimpleGasDayCycleStatus.ScheduledStatus ? 'Sched Qty' : 'Prelim SQ';\r\n }\r\n\r\n public isOpen(): boolean {\r\n return this.isStatus(SimpleGasDayCycleStatus.NomWindowOpenStatus);\r\n }\r\n\r\n public isNotOpen(): boolean {\r\n return !this.isOpen();\r\n }\r\n\r\n public isStatus(status: string): boolean {\r\n return this.status === status;\r\n }\r\n\r\n public isAtLeastPreliminary(): boolean {\r\n return this.status === SimpleGasDayCycleStatus.Preliminary || this.status === SimpleGasDayCycleStatus.ScheduledStatus;\r\n }\r\n\r\n public isCapacityAllocationInitiated() :boolean{\r\n return this.capacityAllocationStatus === CapacityAllocationStatus.Initiated;\r\n }\r\n\r\n public isCapacityAllocationInitiating() :boolean{\r\n return this.capacityAllocationStatus === CapacityAllocationStatus.Initiating;\r\n }\r\n\r\n public isCapacityAllocationNotStarted() :boolean{\r\n return this.capacityAllocationStatus === CapacityAllocationStatus.NotStarted;\r\n }\r\n\r\n public isCapacityAllocationCalculating() :boolean {\r\n return this.capacityAllocationStatus === CapacityAllocationStatus.Calculating;\r\n }\r\n\r\n public isCapacityAllocationCalculated() :boolean {\r\n return this.capacityAllocationStatus === CapacityAllocationStatus.Calculated;\r\n }\r\n\r\n public isCapacityAllocationAuthorized() {\r\n return this.capacityAllocationStatus === CapacityAllocationStatus.Authorized;\r\n }\r\n}\r\n\r\nexport interface ISimpleGasDayCycleStatusResponse {\r\n pipelineSystem: string;\r\n gasDay: string;\r\n gasCycle: GasCycle;\r\n nominationDeadline: string;\r\n status: string;\r\n capacityAllocationStatus: string;\r\n isLaunched: boolean;\r\n isClosedForNomination: boolean;\r\n isOpenForNomination: boolean;\r\n forceTransportationSummaryEditMode: boolean;\r\n isAllocated: boolean;\r\n}\r\n\r\nexport class CapacityAllocationStatus{\r\n public static InitiateRequired: string = \"Initiate Required\";\r\n public static Initiated: string = \"Initiated\";\r\n public static Initiating: string = \"Initiating\";\r\n public static NotStarted: string = \"Not Started\";\r\n public static Calculating: string = \"Calculating\";\r\n public static Calculated: string = \"Calculated\";\r\n public static Authorized: string = \"Authorized\";\r\n\r\n}\r\n","import * as _ from 'lodash';\r\nimport {Injectable} from '@angular/core';\r\nimport {Observable} from \"rxjs\";\r\n\r\nimport {NominationResourceService} from \"@shared/resources/nominations-resource.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {DateTime} from \"@model/date-time\";\r\nimport {NominationPipelineGasDay} from \"@model/nomination-pipeline-gas-day\";\r\nimport {ISimpleGasDayCycleStatusResponse, SimpleGasDayCycleStatus} from \"@model/simple-gas-day-cycle-status\";\r\nimport {map, share} from \"rxjs/operators\";\r\n\r\nexport class ApplicationServerTimes {\r\n serverTime: string;\r\n clockTime: string;\r\n centralClockTime: string;\r\n utcClockTime: string;\r\n gasDay: string;\r\n mstTime: string;\r\n}\r\n\r\n@Injectable()\r\nexport class NominationSystemService {\r\n private pipelineGasDayObservable: Observable;\r\n\r\n constructor(private nominationResource: NominationResourceService) {\r\n }\r\n\r\n /**\r\n * This method should only be used when we need to display the server time. All other queries should be\r\n * using the pipelineGasDay method.\r\n * @returns {Observable}\r\n */\r\n applicationServerTimes(): Observable {\r\n return this.nominationResource.get(this.timeEndpoint, false);\r\n }\r\n\r\n get timeEndpoint(): string {\r\n return '/healthcheck/time';\r\n }\r\n\r\n get timeUrl(): string {\r\n return this.nominationResource.getBaseUri(false) + this.timeEndpoint;\r\n }\r\n\r\n nextMonthsFirstCalendarGasDay(): Observable {\r\n return this.applicationServerTimes()\r\n .pipe(\r\n map(applicationServerTimes => {\r\n const clockTime = DateTime.parse(applicationServerTimes.clockTime);\r\n const inOneMonthClockTime = clockTime.addMonths(1);\r\n return new GasDay(inOneMonthClockTime.date.year, inOneMonthClockTime.date.month, 1);\r\n }));\r\n }\r\n\r\n public bfpAvailableGasDays(): Observable> {\r\n return this.nominationResource.get('/transportationsummary/bfpavailablegasdays', true);\r\n }\r\n\r\n public pipelineGasDay(): Observable {\r\n // If observable exists, then a request is in place, return the ongoing request\r\n if (this.pipelineGasDayObservable) {\r\n return this.pipelineGasDayObservable;\r\n }\r\n\r\n this.pipelineGasDayObservable = this.nominationResource.get('/gasday')\r\n .pipe(\r\n map(res => {\r\n const pipelineGasDay = new NominationPipelineGasDay();\r\n\r\n pipelineGasDay.actualGasDay = GasDay.parse(res.actualGasDay);\r\n pipelineGasDay.allowableGasDay = GasDay.parse(res.allowableGasDay);\r\n pipelineGasDay.earliestSelectableGasDay = GasDay.parse(res.earliestSelectableGasDay);\r\n pipelineGasDay.tomorrowsCalendarAllowableGasDay = GasDay.parse(res.tomorrowsCalendarAllowableGasDay);\r\n pipelineGasDay.latestLaunchedGasDay = res.latestLaunchedGasDay ? GasDay.parse(res.latestLaunchedGasDay) : null;\r\n\r\n pipelineGasDay.lastClosedGasDayCycleStatus = _.isNil(res.lastClosedGasDayCycleStatus) ? null : SimpleGasDayCycleStatus.create(res.lastClosedGasDayCycleStatus);\r\n pipelineGasDay.openGasDayCycleStatus = _.isNil(res.openGasDayCycleStatus) ? null : SimpleGasDayCycleStatus.create(res.openGasDayCycleStatus);\r\n pipelineGasDay.timelyOpenGasDayCycleStatus = _.isNil(res.timelyOpenGasDayCycleStatus) ? null : SimpleGasDayCycleStatus.create(res.timelyOpenGasDayCycleStatus);\r\n pipelineGasDay.latestScheduledCycleStatus = _.isNil(res.latestScheduledCycleStatus) ? null : SimpleGasDayCycleStatus.create(res.latestScheduledCycleStatus);\r\n\r\n pipelineGasDay.minGasDayForCycleStatus = res.minGasDayForCycleStatus !== null ? GasDay.parse(res.minGasDayForCycleStatus) : null;\r\n pipelineGasDay.maxGasDayForCycleStatus = res.minGasDayForCycleStatus !== null ? GasDay.parse(res.maxGasDayForCycleStatus) : null;\r\n\r\n pipelineGasDay.latestDayWithPreliminaryStatus = !!res.latestDayWithPreliminaryStatus\r\n ? GasDay.parse(res.latestDayWithPreliminaryStatus)\r\n : null;\r\n\r\n this.pipelineGasDayObservable = null;\r\n\r\n return pipelineGasDay;\r\n }), share());\r\n\r\n return this.pipelineGasDayObservable;\r\n }\r\n}\r\n\r\ninterface IPipelineGasDayResponse {\r\n actualGasDay: string;\r\n allowableGasDay: string;\r\n earliestSelectableGasDay: string;\r\n latestDayWithPreliminaryStatus: string;\r\n tomorrowsCalendarAllowableGasDay: string;\r\n minGasDayForCycleStatus: string;\r\n maxGasDayForCycleStatus: string;\r\n latestLaunchedGasDay: string;\r\n\r\n lastClosedGasDayCycleStatus: ISimpleGasDayCycleStatusResponse;\r\n openGasDayCycleStatus: ISimpleGasDayCycleStatusResponse;\r\n timelyOpenGasDayCycleStatus: ISimpleGasDayCycleStatusResponse;\r\n latestEveningScheduduledCycleStatus: ISimpleGasDayCycleStatusResponse;\r\n latestScheduledCycleStatus: ISimpleGasDayCycleStatusResponse;\r\n}\r\n\r\n","\r\nimport {forkJoin, of, Observable, Subscription} from 'rxjs';\r\n\r\nimport {map, share, concatMap} from 'rxjs/operators';\r\nimport {SessionService} from \"../../webapp/session/session.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport * as _ from \"lodash\";\r\nimport {OnDestroy, OnInit} from \"@angular/core\";\r\nimport {NominationSystemService} from \"../nomination-system/nomination-system.service\";\r\n\r\n// TODO: It would be better to make the CommonDataEnrichmentService and NominationsEnrichmentService the same object\r\nexport abstract class NominationEnrichmentService implements OnInit, OnDestroy {\r\n protected map: {[id: number]: E};\r\n protected observable: Observable;\r\n\r\n pipelineChangedSubscription: Subscription;\r\n\r\n protected constructor(protected sessionService: SessionService,\r\n protected nominationSystemService: NominationSystemService) {\r\n\r\n // google says ngOnInit is not called on services.\r\n // https://github.com/angular/angular/issues/23235\r\n this.ngOnInit();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.pipelineChangedSubscription.unsubscribe();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.pipelineChangedSubscription = this.sessionService.pipelineChangeEvent\r\n .subscribe(() => this.clear());\r\n }\r\n\r\n public fetch(): Observable {\r\n if (this.map) {\r\n return of(null);\r\n }\r\n\r\n // If observable exists, then a request is in place, return the ongoing request\r\n if (this.observable) {\r\n return this.observable;\r\n }\r\n\r\n // Make a request to get all objects, then store the objects, and make it\r\n // shared, so more than one subscriber can use the data before it is disposed\r\n this.observable = this.nominationSystemService.pipelineGasDay().pipe(\r\n concatMap(pipelineGasDay => {\r\n return this.getAll(pipelineGasDay.actualGasDay).pipe(\r\n map(objects => {\r\n this.map = {};\r\n for (const object of objects) {\r\n this.addMapEntry(object);\r\n }\r\n this.observable = null;\r\n }));\r\n }),share(),);\r\n\r\n return this.observable;\r\n }\r\n\r\n public enrichArray(array: T[], idProperty: string, enrichedPropertyPrefix: string = ''): Observable {\r\n return this.fetch().pipe(\r\n concatMap(() => {\r\n if (_.isEmpty(array)) {\r\n return of(array);\r\n }\r\n\r\n const serviceCalls: Observable[] = [];\r\n for (const obj of array) {\r\n serviceCalls.push(this.enrich(obj, idProperty, enrichedPropertyPrefix));\r\n }\r\n\r\n return forkJoin(serviceCalls).pipe(concatMap(() => {\r\n return of(array);\r\n }));\r\n }));\r\n }\r\n\r\n public enrich(object: T, idProperty: string, enrichedPropertyPrefix: string = ''): Observable {\r\n if (!object.hasOwnProperty(idProperty)) {\r\n throw new Error(`Object does not have '${idProperty}'`);\r\n }\r\n\r\n const id = object[idProperty];\r\n if (_.isNil(id)) {\r\n return of(object); // Sometimes Id is null. So, we don't enrich these objects\r\n }\r\n\r\n return this.fetch().pipe(concatMap(() => {\r\n return this.getCachedObject(id).pipe(concatMap(cachedObject => {\r\n this.enrichObject(object, cachedObject, enrichedPropertyPrefix);\r\n return of(object);\r\n }));\r\n }));\r\n }\r\n\r\n public getCachedObject(id: number): Observable {\r\n const enrichmentObject = this.map[id];\r\n if (!_.isNil(enrichmentObject)) {\r\n return of(enrichmentObject);\r\n } else {\r\n return this.get(id).pipe(concatMap(object => {\r\n const fetchedObject = this.createEnrichmentObject(object);\r\n this.map[id] = fetchedObject;\r\n return of(fetchedObject);\r\n }));\r\n }\r\n }\r\n\r\n private clear(): void {\r\n this.map = null;\r\n }\r\n\r\n // Service calls to retrieve data\r\n abstract getAll(gasDay: GasDay): Observable;\r\n abstract get(id: number): Observable;\r\n\r\n // Methods to build and enrich objects\r\n abstract addMapEntry(object: N);\r\n abstract createEnrichmentObject(object: N): E;\r\n abstract enrichObject(object: T, cachedEnrichmentObj: E, enrichedPropertyPrefix: string);\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {Observable} from \"rxjs\";\r\n\r\nimport {EnterpriseSearchParams, NominationEnterprise, NominationEnterpriseService} from \"../nomination-enterprise/nomination-enterprise.service\";\r\nimport {EnrichmentEnterprise} from \"@model/EnrichmentEnterprise\";\r\nimport {SessionService} from \"../../webapp/session/session.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {NominationEnrichmentService} from \"../nomination-enrichment/nomination-enrichment.service\";\r\nimport {NominationSystemService} from \"../nomination-system/nomination-system.service\";\r\n\r\n@Injectable()\r\nexport class NominationEnterpriseEnrichmentService extends NominationEnrichmentService {\r\n\r\n constructor(\r\n sessionService: SessionService,\r\n private service: NominationEnterpriseService,\r\n protected nominationSystemService: NominationSystemService) {\r\n super(sessionService, nominationSystemService);\r\n }\r\n\r\n // TODO - JOE - Have the caller send in the gas day, like the nomination group enrichment has been changed to do.\r\n getAll(gasDay: GasDay): Observable {\r\n const params = new EnterpriseSearchParams();\r\n params.gasDay = gasDay;\r\n params.gasAccountType = null;\r\n params.includeInactive = true;\r\n\r\n return this.service.queryEnterpriseNames(params);\r\n }\r\n\r\n get(id: number): Observable {\r\n return this.service.get(id);\r\n }\r\n\r\n addMapEntry(object: NominationEnterprise) {\r\n this.map[object.id] = new EnrichmentEnterprise(object.shortName, object.mnemonic, object.dunsNumber, object.stateExpiryGasDay);\r\n }\r\n\r\n createEnrichmentObject(object: NominationEnterprise): EnrichmentEnterprise {\r\n return new EnrichmentEnterprise(object.shortName, object.mnemonic, object.dunsNumber, object.stateExpiryGasDay);\r\n }\r\n\r\n enrichObject(object: T, cachedEnrichmentObject: EnrichmentEnterprise, enrichedPropertyPrefix: string ) {\r\n object[enrichedPropertyPrefix + (enrichedPropertyPrefix ? 'Mnemonic' : 'mnemonic')] = cachedEnrichmentObject.mnemonic;\r\n object[enrichedPropertyPrefix + (enrichedPropertyPrefix ? 'ShortName' : 'shortName')] = cachedEnrichmentObject.shortName;\r\n object[enrichedPropertyPrefix + (enrichedPropertyPrefix ? 'DisplayName' : 'displayName')] = cachedEnrichmentObject.shortName + ' (' + cachedEnrichmentObject.mnemonic + ')';\r\n object[enrichedPropertyPrefix + (enrichedPropertyPrefix ? 'DunsNumber' : 'dunsNumber')] = cachedEnrichmentObject.dunsNumber;\r\n object[enrichedPropertyPrefix + (enrichedPropertyPrefix ? 'StateExpiryGasDay' : 'stateExpiryGasDay')] = cachedEnrichmentObject.stateExpiryGasDay;\r\n }\r\n}\r\n","import {Component, OnInit} from '@angular/core';\r\nimport {AppService} from \"../../services/webapp/app/app.service\";\r\nimport {state, style, trigger} from \"@angular/animations\";\r\n\r\n@Component({\r\n selector: 'app-menu-button',\r\n templateUrl: 'menu-button.component.html',\r\n styleUrls: ['menu-button.component.css'],\r\n animations: [\r\n trigger('arrow', [\r\n state('false', style({opacity: 0, transform: 'rotate(-180deg)'})),\r\n state('true', style({opacity: 1}))\r\n ]),\r\n trigger('menu', [\r\n state('false', style({opacity: 1, transform: 'rotate(-180deg)'})),\r\n state('true', style({opacity: 0}))\r\n ]),\r\n ],\r\n host: {\r\n '(window:resize)': 'onResize($event)'\r\n }\r\n})\r\n\r\n\r\nexport class MenuButtonComponent implements OnInit {\r\n private static HideMenuWidthTrigger: number = 768;\r\n\r\n constructor(private appService: AppService) {\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n toggleMenu(): void {\r\n this.appService.toggleMenu();\r\n }\r\n\r\n isMenuVisible(): boolean {\r\n return this.appService.isMenuVisible();\r\n }\r\n\r\n onResize(event) {\r\n if (event.target.innerWidth <= MenuButtonComponent.HideMenuWidthTrigger) {\r\n this.appService.hideMenu();\r\n }\r\n }\r\n}\r\n","
\r\n \r\n \r\n
\r\n","import * as _ from 'lodash';\r\n\r\nexport class PageableList {\r\n static GenerateConfiguration(dataList: any, sortProperty?: string): any {\r\n return {\r\n loadMode: \"raw\",\r\n paginate: true,\r\n requireTotalCount: true,\r\n load() {\r\n const d = new Promise((resolve) => {\r\n _.isNil(sortProperty) ? resolve(dataList) : resolve(_.orderBy(dataList, sortProperty));\r\n });\r\n return d;\r\n }\r\n };\r\n }\r\n}\r\n","\r\n
\r\n {{ this.itemDisplayProperty ? data[this.itemDisplayProperty] : data[this.displayProperty] }}\r\n
\r\n\r\n","import * as dx from \"devextreme/core/renderer\";\r\nimport {Component, Input, forwardRef, EventEmitter, Output, ViewChild} from '@angular/core';\r\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from \"@angular/forms\";\r\nimport {DxSelectBoxComponent} from \"devextreme-angular\";\r\nimport {PageableList} from \"@model/pageable-list\";\r\n\r\nexport const CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SelectComponent),\r\n multi: true\r\n};\r\n\r\n@Component({\r\n selector: 'app-select',\r\n templateUrl: './select.component.html',\r\n styleUrls: ['./select.component.css'],\r\n providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR]\r\n})\r\nexport class SelectComponent implements ControlValueAccessor {\r\n @ViewChild('selectBox') selectBox;\r\n @Input() valueProperty: string = 'id';\r\n @Input() displayProperty: string = 'name';\r\n @Input() itemDisplayProperty: string = null;\r\n @Input() sortProperty: string;\r\n @Input() searchEnabled: boolean;\r\n @Input() placeholder: string;\r\n @Input() showClearButton: boolean = false;\r\n @Input() onValueChanged: () => {}; // OBSOLETE: USE (NGMODELCHANGE)=\"func($event)\"\r\n @Input() disabled: boolean = false;\r\n @Output() selectionChanged: EventEmitter = new EventEmitter(); // OBSOLETE: USE (NGMODELCHANGE)=\"func($event)\"\r\n\r\n private onChangeCallback: (_: any) => {};\r\n private onTouchedCallback: () => {};\r\n private innerValue: any;\r\n private _dataSource: any [] = [];\r\n public pagedDataSource: any = {};\r\n\r\n @Input('dataSource')\r\n set dataSource(value: any[]) {\r\n this._dataSource = value;\r\n this.pagedDataSource = PageableList.GenerateConfiguration(value, this.sortProperty);\r\n }\r\n\r\n getDataSource(): any [] {\r\n return this._dataSource;\r\n }\r\n\r\n get value(): any {\r\n return this.innerValue;\r\n }\r\n\r\n set value(value: any) {\r\n if (value !== this.innerValue) {\r\n this.innerValue = value;\r\n this.onChangeCallback(value);\r\n\r\n if (this.onValueChanged) {\r\n this.onValueChanged();\r\n }\r\n }\r\n }\r\n\r\n get nativeElement(): DxSelectBoxComponent {\r\n return this.selectBox;\r\n }\r\n\r\n onBlur() {\r\n this.onTouchedCallback();\r\n }\r\n\r\n writeValue(obj: any): void {\r\n if (obj !== this.innerValue) {\r\n this.innerValue = obj;\r\n }\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChangeCallback = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouchedCallback = fn;\r\n }\r\n\r\n onFocusIn(e) {\r\n setTimeout(function() {\r\n const $el = dx(e.element).find(\"input.dx-texteditor-input\");\r\n $el[0].select();\r\n }, 0);\r\n }\r\n\r\n // Obsolete (should be using onValueChanged\r\n onSelectionChanged = (e): void => {\r\n this.selectionChanged.emit(e);\r\n }\r\n}\r\n","export class ProductionSetupUpdateRequest {\r\n effectiveGasDay: string;\r\n pipelineOwnerEnterpriseId: number;\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {Observable} from \"rxjs\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {NominationResourceService} from \"@shared/resources/nominations-resource.service\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {NominationPipeline} from \"@model/nomination-pipeline\";\r\nimport {ProductionSetupUpdateRequest} from \"@model/service-models/production-setup-update-request\";\r\n\r\n@Injectable()\r\nexport class NominationPipelineService {\r\n\r\n constructor(private nominationsResource: NominationResourceService) {\r\n }\r\n\r\n get(gasDay: GasDay = GasDay.today()): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('gasDay', gasDay.toString());\r\n\r\n return this.nominationsResource.get(this.pipelineEndpoint, false, params);\r\n }\r\n\r\n get pipelineEndpoint(): string {\r\n return '/pipelines';\r\n }\r\n\r\n get pipelineUrl(): string {\r\n return this.nominationsResource.getBaseUri(false) + this.pipelineEndpoint;\r\n }\r\n\r\n getOne(gasDay: GasDay = GasDay.today()): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('GasDay', gasDay.toString());\r\n\r\n // the '' will return /nominations/pipelines/:pipeline. Nothing else needs to be appended.\r\n return this.nominationsResource.get('', true, params);\r\n }\r\n\r\n updateIsSentToMCAForCapacityAllocation(pipelineCode: string, isSentToMCAForCapacityAllocation: string): Observable {\r\n const body = {\r\n pipeline: pipelineCode,\r\n capacityAllocationType: isSentToMCAForCapacityAllocation\r\n };\r\n\r\n return this.nominationsResource.putWithNoResponseBody('/issenttomcaforcapacityallocation', body);\r\n }\r\n\r\n updateProductionSetup(effectiveGasMonth: GasMonth, pipelineOwnerEnterpriseId: number) {\r\n const productionSetupUpdateRequest: ProductionSetupUpdateRequest = new ProductionSetupUpdateRequest();\r\n productionSetupUpdateRequest.effectiveGasDay = effectiveGasMonth.start().toString();\r\n productionSetupUpdateRequest.pipelineOwnerEnterpriseId = pipelineOwnerEnterpriseId;\r\n\r\n return this.nominationsResource.putWithNoResponseBody('/productionSetup', productionSetupUpdateRequest, true);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\n\r\n/**\r\n * Pipeline specific settings that are fixed and aren't returned from the API.\r\n *\r\n */\r\nexport class PipelineSetting {\r\n public static ML: PipelineSetting = new PipelineSetting(true, true);\r\n public static GLC: PipelineSetting = new PipelineSetting(false, false);\r\n public static CGL: PipelineSetting = new PipelineSetting(false, false);\r\n\r\n public canSyncData: boolean;\r\n public canHavePendingNominations: boolean;\r\n\r\n private constructor(canSyncData: boolean, canHavePendingNominations: boolean) {\r\n this.canSyncData = canSyncData;\r\n this.canHavePendingNominations = canHavePendingNominations;\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport class PipelineSettingMapService {\r\n\r\n public static ML_CODE: string = 'ML';\r\n public static GLC_CODE: string = 'GLC';\r\n public static CGL_CODE: string = 'CGL';\r\n\r\n private settings: Map = new Map();\r\n\r\n constructor(private sessionService: SessionService) {\r\n this.settings.set(PipelineSettingMapService.ML_CODE, PipelineSetting.ML);\r\n this.settings.set(PipelineSettingMapService.GLC_CODE, PipelineSetting.GLC);\r\n this.settings.set(PipelineSettingMapService.CGL_CODE, PipelineSetting.CGL);\r\n }\r\n\r\n public pipelineCodes(): string[] {\r\n return Array.from(this.settings.keys());\r\n }\r\n\r\n public getPipelineSetting(): PipelineSetting {\r\n const pipeline = this.sessionService.getPipeline();\r\n return this.settings.get(pipeline.code);\r\n }\r\n\r\n isCgl(code: string): boolean {\r\n return code === PipelineSettingMapService.CGL_CODE;\r\n }\r\n}\r\n","
{{pipelines[0].description}}
\r\n 1\"\r\n required>\r\n\r\n","import * as _ from 'lodash';\r\nimport {Component, OnInit, ViewChild} from '@angular/core';\r\nimport {ActivatedRoute, ParamMap, Router} from '@angular/router';\r\nimport {SessionService} from \"../../services/webapp/session/session.service\";\r\nimport {NominationSystemService} from \"../../services/nomination/nomination-system/nomination-system.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {UserService} from \"../../services/webapp/user/user-service\";\r\nimport {SelectComponent} from \"@shared/components/select/select.component\";\r\nimport {PipelineSettingMapService} from \"@shared/services/nomination/pipeline-settings-map/pipeline-setting-map.service\";\r\nimport {NominationPipelineService} from \"@shared/services/nomination/nomination-pipeline/nomination-pipeline.service\";\r\nimport {NominationPipeline} from \"@model/nomination-pipeline\";\r\n\r\nconst PIPELINE_PARAM = 'pipeline';\r\n\r\n@Component({\r\n selector: 'app-pipeline-dropdown',\r\n templateUrl: './pipeline-dropdown.component.html',\r\n styleUrls: ['./pipeline-dropdown.component.css']\r\n})\r\nexport class PipelineDropdownComponent implements OnInit {\r\n\r\n pipelines: NominationPipeline[] = [];\r\n pipelineId: number = 99;\r\n @ViewChild(SelectComponent) dropdown: SelectComponent;\r\n\r\n constructor(private nominationPipelineService: NominationPipelineService,\r\n private sessionService: SessionService,\r\n private router: Router,\r\n private nominationSystemService: NominationSystemService,\r\n private userService: UserService,\r\n private pipelineSettings: PipelineSettingMapService,\r\n private activatedRoute: ActivatedRoute) {\r\n }\r\n\r\n ngOnInit() {\r\n this.nominationSystemService.applicationServerTimes().subscribe(times => {\r\n this.nominationPipelineService.get(GasDay.parse(times.clockTime, false))\r\n .subscribe(response => {\r\n const pipelines = _.filter(response, p => this.userService.user.hasRolesIn(p));\r\n this.pipelines = pipelines;\r\n\r\n const code = this.activatedRoute.snapshot.paramMap.get(PIPELINE_PARAM).toUpperCase();\r\n\r\n if (response.find(p => p.code === code) === undefined){\r\n this.router.navigate(['/404'], {skipLocationChange: true}).then(() => {});\r\n return;\r\n }\r\n\r\n this.setDropdownAndSession(code);\r\n });\r\n });\r\n\r\n this.activatedRoute.paramMap.subscribe((params: ParamMap) => {\r\n try {\r\n this.updatePipeline(params.get(PIPELINE_PARAM));\r\n } catch (e) {\r\n // need to catch any errors to keep subscription alive\r\n console.error(e);\r\n }\r\n });\r\n }\r\n\r\n setDropdownAndSession(code: string): NominationPipeline {\r\n\r\n const pipeline = this.pipelines.find(p => p.code === code);\r\n this.pipelineId = pipeline.id;\r\n if (this.dropdown) this.dropdown.writeValue(pipeline.id);\r\n this.sessionService.setPipeline(pipeline);\r\n return pipeline;\r\n }\r\n\r\n updatePipeline(code: string) {\r\n\r\n code = code.toUpperCase();\r\n if (!this.pipelineSettings.pipelineCodes().includes(code)) {\r\n this.router.navigate(['/404'], {skipLocationChange: true}).then(() => {});\r\n return;\r\n }\r\n if (!this.userService.user.hasRolesInByCode(code)) {\r\n this.router.navigate(['/403'], {skipLocationChange: true}).then(() => {});\r\n return;\r\n }\r\n const sessionPipeline = this.sessionService.getPipeline();\r\n if (code === sessionPipeline.code) return;\r\n const pipeline = this.setDropdownAndSession(code);\r\n // todo not a requirement but would like to navigate home here, this does not work\r\n this.router.navigate(['/app', pipeline.code, 'home']).then(() => {});\r\n }\r\n\r\n modelChanged(pipelineId): void {\r\n if (!pipelineId) return;\r\n const pipeline = this.pipelines.find(x => x.id === pipelineId);\r\n this.router.navigate(['/app', pipeline.code, 'home']).then(() => {});\r\n }\r\n\r\n}\r\n","import {Component, Inject} from '@angular/core';\r\nimport {Router} from \"@angular/router\";\r\nimport {UserService} from \"../../services/webapp/user/user-service\";\r\nimport { OKTA_AUTH } from '@okta/okta-angular';\r\nimport { OktaAuth } from '@okta/okta-auth-js';\r\n\r\n@Component({\r\n selector: 'app-logout',\r\n templateUrl: 'logout.component.html',\r\n styleUrls: ['logout.component.css']\r\n})\r\nexport class LogoutComponent {\r\n\r\n constructor(private router: Router,\r\n private userService: UserService,\r\n @Inject(OKTA_AUTH) private oktaAuth: OktaAuth) {\r\n }\r\n\r\n onClicked(): void {\r\n this.userService.logout();\r\n this.oktaAuth.signOut({\r\n clearTokensBeforeRedirect: true\r\n });\r\n }\r\n}\r\n","Log Off\r\n","
\r\n \r\n
{{model.application.applicationName}}\r\n
\r\n
\r\n {{model.application.applicationAcronym}}\r\n
\r\n \r\n
{{model.application.defaultPipelineCode}}
\r\n
\r\n Logged in as: {{model.user.currentUsername}}\r\n \r\n
\r\n
Assuming Customer Identity of\r\n {{model.user.assumeIdentityEnterpriseShortName}} ({{model.user.assumeIdentityEnterpriseMnemonic}})\r\n
\r\n
\r\n
\r\n","import {Component, OnInit, OnDestroy} from '@angular/core';\r\nimport {AppService} from \"../../services/webapp/app/app.service\";\r\nimport {Subscription} from \"rxjs\";\r\nimport {NominationEnterpriseEnrichmentService} from \"../../services/nomination/nomination-enterprise-enrichment/nomination-enterprise-enrichment.service\";\r\nimport {UserService} from \"../../services/webapp/user/user-service\";\r\nimport {User} from \"@model/user\";\r\nimport * as _ from \"lodash\";\r\n\r\nclass HeaderComponentModel {\r\n application: ApplicationDetailModel;\r\n user: UserDetailModel;\r\n}\r\n\r\nclass ApplicationDetailModel {\r\n applicationName: string;\r\n applicationAcronym: string;\r\n pipelineCode: string;\r\n defaultPipelineCode: string;\r\n}\r\n\r\nclass UserDetailModel {\r\n currentUsername: string;\r\n isAssumingIdentity: boolean;\r\n assumeIdentityEnterpriseShortName: string;\r\n assumeIdentityEnterpriseMnemonic: string;\r\n}\r\n\r\n@Component({\r\n selector: 'app-header',\r\n templateUrl: 'header.component.html',\r\n styleUrls: ['header.component.css']\r\n})\r\nexport class HeaderComponent implements OnInit, OnDestroy {\r\n model: HeaderComponentModel;\r\n currentUserChangedSubscription: Subscription;\r\n\r\n constructor(private appService: AppService,\r\n private userService: UserService,\r\n private enterpriseEnrichmentService: NominationEnterpriseEnrichmentService) {\r\n\r\n this.model = {\r\n application: {\r\n applicationName: this.appService.getApplicationName(),\r\n applicationAcronym: this.appService.getApplicationAcronym(),\r\n },\r\n user: {}\r\n };\r\n }\r\n\r\n ngOnInit() {\r\n this.currentUserChangedSubscription = this.userService.currentUserChangedEvent\r\n .subscribe(user => this.updateCurrentUser(user));\r\n\r\n this.updateCurrentUser(this.userService.user);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.currentUserChangedSubscription.unsubscribe();\r\n }\r\n\r\n updateCurrentUser(user: User) {\r\n // If the user is null, return. This can occur when visiting a page that doesn't require authorization, like the error pages.\r\n if (_.isNil(user)) return;\r\n\r\n this.model.user.currentUsername = user.username;\r\n\r\n if (user.isAssumingIdentity) {\r\n this.enterpriseEnrichmentService.enrich(user, '_assumedEnterpriseId', '_assumedEnterprise')\r\n .subscribe(() => {\r\n this.model.user.assumeIdentityEnterpriseShortName = user.assumedEnterpriseShortName;\r\n this.model.user.assumeIdentityEnterpriseMnemonic = user.assumedEnterpriseMnemonic;\r\n this.model.user.isAssumingIdentity = user.isAssumingIdentity;\r\n });\r\n } else { this.model.user.isAssumingIdentity = user.isAssumingIdentity; }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {AbstractResourceService} from \"./abstract-resource.service\";\r\nimport {ConfigService} from \"../services/webapp/configuration/configuration.service\";\r\nimport {UriService} from \"../services/webapp/uri/uri.service\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\n\r\n@Injectable()\r\nexport class CommondataResourceService extends AbstractResourceService {\r\n\r\n constructor(protected httpClient: HttpClient,\r\n private uriService: UriService,\r\n private configService: ConfigService) {\r\n super(httpClient);\r\n }\r\n\r\n getBaseUri(includePipeline: boolean): string {\r\n return this.uriService.getUriWithPipelineAndGateway(this.configService.commonDataServiceUri, includePipeline);\r\n }\r\n}\r\n","\r\nimport {share} from 'rxjs/operators';\r\nimport { Injectable } from '@angular/core';\r\nimport {CommondataResourceService} from \"@shared/resources/commondata-resource.service\";\r\nimport {Observable} from \"rxjs\";\r\n\r\nexport interface SystemClock {\r\n isFrozen: boolean;\r\n frozenDateTime: Date;\r\n}\r\n\r\nexport interface LocalTestSettings {\r\n path: string;\r\n}\r\n\r\n@Injectable()\r\nexport class TestPageService {\r\n\r\n constructor(private commonDataResource: CommondataResourceService) {\r\n }\r\n\r\n // TODO: Pass Parameters (or use ng2-resource-rest)\r\n get(): Observable {\r\n return this.commonDataResource\r\n .get('/test/systemClock', false).pipe(\r\n share());\r\n }\r\n\r\n set(isFrozen: boolean, frozenTime: string): Observable {\r\n const body = {isFrozen: isFrozen, frozenDateTime: frozenTime};\r\n\r\n return this.commonDataResource.post('/test/systemClock', body, false);\r\n }\r\n\r\n broadcastEnterprises(): Observable {\r\n const serviceUrl = '/test/initialLoad/enterprise';\r\n\r\n const body = {};\r\n\r\n return this.commonDataResource.postWithNoResponseBody(serviceUrl, body, false);\r\n }\r\n\r\n getLocalTestSettings(): Observable {\r\n return this.commonDataResource\r\n .get('/test/localTestSettings', false).pipe(\r\n share());\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\nimport {Directive, Input, OnDestroy, OnInit, TemplateRef, ViewContainerRef} from '@angular/core';\r\nimport {SessionService} from \"../../services/webapp/session/session.service\";\r\nimport {UserService} from \"../../services/webapp/user/user-service\";\r\nimport {User} from \"@model/user\";\r\nimport {CapabilitiesService} from \"../../services/webapp/capabilities/capabilities.service\";\r\nimport {Subscription} from \"rxjs\";\r\n\r\n@Directive({\r\n selector: '[appSecureItem]'\r\n})\r\nexport class SecureItemDirective implements OnInit, OnDestroy {\r\n @Input('appSecureItem') capabilities: string[];\r\n\r\n currentUserChangedSubscription: Subscription;\r\n\r\n constructor(private templateRef: TemplateRef,\r\n private viewContainer: ViewContainerRef,\r\n private userService: UserService,\r\n private capabilityService: CapabilitiesService,\r\n private sessionService: SessionService) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.currentUserChangedSubscription = this.userService.currentUserChangedEvent\r\n .subscribe(user => this.performSecurityCheck(user));\r\n this.sessionService.pipelineChangeEvent.subscribe(() => this.onPipelineChanged());\r\n\r\n // need to get the user as this items starts loading before we think it would.\r\n this.performSecurityCheck(this.userService.user);\r\n }\r\n\r\n ngOnDestroy() {\r\n if (!_.isNil(this.currentUserChangedSubscription)) {\r\n this.currentUserChangedSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n private onPipelineChanged() {\r\n this.userService.getUser().subscribe(user => {\r\n this.performSecurityCheck(user);\r\n });\r\n }\r\n\r\n private performSecurityCheck(user: User) {\r\n this.viewContainer.clear();\r\n\r\n // If the user is null, return. This can occur when visiting a page that doesn't require authorization, like the error pages.\r\n if (_.isNil(user)) {\r\n return;\r\n }\r\n\r\n // The _.isNil is really here for the Modal as it may not have capabilites set\r\n // and if no capabilities are set, it should be accessible\r\n const hasCapabilities = _.isNil(this.capabilities) ? true :\r\n this.capabilityService.hasCapabilities(this.capabilities, user, this.sessionService.getPipeline().code);\r\n if (hasCapabilities) {\r\n this.viewContainer.createEmbeddedView(this.templateRef);\r\n }\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport * as moment from 'moment';\r\n\r\n@Pipe({\r\n name: 'dateFormat'\r\n})\r\nexport class DateFormatPipe implements PipeTransform {\r\n // TODO: We should not be passing in the format, it should be an optional boolean to determine if we should display time or not\r\n transform(value: Date, format: string): any {\r\n if (value) {\r\n const formatted = moment(value).format(format);\r\n return formatted;\r\n }\r\n }\r\n}\r\n","
\r\n \r\n
\r\n
\r\n {{getPipeline()}}\r\n
\r\n
\r\n Frozen: {{getFrozenDateTime() | dateFormat:'YYYY-MMM-DD H:mm:ss'}}\r\n
\r\n
\r\n
\r\n
\r\n

Version: {{model.applicationVersion}}

\r\n

Environment: {{model.environment}}

\r\n

Call Center 1.877.920.PIPE (7473)

\r\n
\r\n
\r\n","import * as _ from 'lodash';\r\nimport {Component, OnInit} from '@angular/core';\r\nimport * as moment from 'moment';\r\n\r\nimport {AppService} from '../../services/webapp/app/app.service';\r\nimport {RouterLinkActive} from '@angular/router';\r\nimport {TestPageService} from '../../services/webapp/test-page/test-page.service';\r\nimport {SessionService} from '../../services/webapp/session/session.service';\r\nimport {state, style, trigger} from \"@angular/animations\";\r\nimport {UserService} from \"@shared/services/webapp/user/user-service\";\r\n\r\nclass MenuComponentModel {\r\n applicationVersion: string;\r\n environment: string;\r\n toggledSections: string[];\r\n isDirty: boolean;\r\n showTestPage: boolean;\r\n isInternal: boolean = false;\r\n}\r\n\r\n@Component({\r\n selector: 'app-menu',\r\n templateUrl: 'menu.component.html',\r\n styleUrls: ['menu.component.css'],\r\n animations: [\r\n trigger('menu', [\r\n state('false', style({transform: 'translate(-260px,0)', transitionDuration: '1s'}))\r\n ]),\r\n ],\r\n})\r\nexport class MenuComponent implements OnInit {\r\n private readonly ICON_CHEVRON_DOWN_CLASS = 'fa fa-chevron-down tc-nav-chevron';\r\n private readonly ICON_CHEVRON_UP_CLASS = 'fa fa-chevron-up tc-nav-chevron';\r\n private readonly SUB_MENU_SHOW_CLASS = 'tc-sub-menu tc-show';\r\n private readonly SUB_MENU_HIDE_CLASS = 'tc-sub-menu tc-hide';\r\n\r\n model: MenuComponentModel;\r\n\r\n constructor(private appService: AppService,\r\n private testService: TestPageService,\r\n private sessionService: SessionService,\r\n private userService: UserService) {\r\n }\r\n\r\n public routeTracker(event) {\r\n const element: Element = (event.target as Element);\r\n const routeName = (element.getAttribute('href') || '').replace('#/', '');\r\n\r\n // Store the selected toue hint for reload/new tab\r\n if (routeName && routeName !== '') {\r\n localStorage.setItem('routeHint', routeName);\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.model = new MenuComponentModel();\r\n this.model.applicationVersion = this.appService.getApplicationVersion();\r\n this.model.environment = this.appService.getEnvironment();\r\n this.model.showTestPage = this.appService.showTestPageTimeMeasurementsPane() || this.appService.showTestPageMeasurementDataSource();\r\n this.model.toggledSections = this.userService.user.isInternalUser ? [] : ['Reports'];\r\n this.model.isInternal = this.userService.user.isInternalUser;\r\n\r\n this.testService.get()\r\n .subscribe(response => {\r\n this.appService.setFrozenTime(moment(response.frozenDateTime).toDate());\r\n this.appService.setIsFrozen(response.isFrozen);\r\n });\r\n }\r\n\r\n toggleSection(section: string): void {\r\n this.model.isDirty = true;\r\n\r\n if (this.isSectionVisible(section)) {\r\n this.hideSection(section);\r\n } else {\r\n this.showSection(section);\r\n }\r\n }\r\n\r\n getChevronClass(section: string, routerLinkActive: RouterLinkActive): string {\r\n return this.displaySection(section, routerLinkActive) ? this.ICON_CHEVRON_UP_CLASS : this.ICON_CHEVRON_DOWN_CLASS;\r\n }\r\n\r\n getSubMenuClass(section: string, routerLinkActive: RouterLinkActive): string {\r\n return this.displaySection(section, routerLinkActive) ? this.SUB_MENU_SHOW_CLASS : this.SUB_MENU_HIDE_CLASS;\r\n }\r\n\r\n isMenuVisible(): boolean {\r\n return this.appService.isMenuVisible();\r\n }\r\n\r\n getFrozenDateTime(): Date {\r\n return this.appService.getFrozenDateTime();\r\n }\r\n\r\n isFrozenVisible(): boolean {\r\n return this.appService.getIsFrozen();\r\n }\r\n\r\n getPipeline(): string {\r\n return this.sessionService.getPipeline().description;\r\n }\r\n\r\n getPipelineCode(): string {\r\n return this.sessionService.getPipeline().code;\r\n }\r\n\r\n private displaySection(section: string, routerLinkActive: RouterLinkActive): boolean {\r\n if (!this.model.isDirty && routerLinkActive.isActive) {\r\n this.showSection(section);\r\n return true;\r\n } else {\r\n return this.isSectionVisible(section);\r\n }\r\n }\r\n\r\n private isSectionVisible(section: string): boolean {\r\n return _.includes(this.model.toggledSections, section);\r\n }\r\n\r\n private showSection(section: string): void {\r\n if (!_.includes(this.model.toggledSections, section)) {\r\n this.model.toggledSections.push(section);\r\n }\r\n }\r\n\r\n private hideSection(section: string): void {\r\n _.pull(this.model.toggledSections, section);\r\n }\r\n}\r\n","import {interval, timer, Subscription} from 'rxjs';\r\nimport * as _ from 'lodash';\r\nimport {Injectable} from '@angular/core';\r\n\r\n@Injectable()\r\nexport class LoadOverlayService {\r\n private static readonly DisplayOverlayDelay: number = 500;\r\n private static readonly HideOverlayDelay: number = 500;\r\n private static readonly DisposeSubscriptionDelay: number = 750;\r\n private static readonly DurationSecondDelay: number = 1000;\r\n private static readonly DurationInitialValue: number = 0;\r\n\r\n private durationSubscription: Subscription;\r\n private readonly requestsQueue: string[];\r\n private displayOverlay: boolean;\r\n private displayDuration: number;\r\n\r\n\r\n constructor() {\r\n this.requestsQueue = [];\r\n this.displayOverlay = false;\r\n this.displayDuration = LoadOverlayService.DurationInitialValue;\r\n }\r\n\r\n isOverlayShown(): boolean {\r\n return this.displayOverlay;\r\n }\r\n\r\n overlayDuration(): number {\r\n return this.displayDuration;\r\n }\r\n\r\n pushHttpRequest(): void {\r\n this.requestsQueue.push('request');\r\n\r\n // Create a delay before displaying the overlay in the scenario to prevent the pop up\r\n // from showing and hiding when a request is really quick\r\n const showTimer = timer(LoadOverlayService.DisplayOverlayDelay);\r\n const subscription = showTimer.subscribe(() => {\r\n if (!_.isEmpty(this.requestsQueue)) {\r\n if (!this.displayOverlay) {\r\n this.startTimer();\r\n }\r\n\r\n this.displayOverlay = true;\r\n }\r\n });\r\n\r\n this.disposeSubscription(subscription);\r\n }\r\n\r\n popHttpRequest(): void {\r\n this.requestsQueue.pop();\r\n\r\n // Create a delay before hiding the overlay in the scenario that multiple requests\r\n // have been made to keep the overlay window displayed\r\n const hideTimer = timer(LoadOverlayService.HideOverlayDelay);\r\n const subscription = hideTimer.subscribe(() => {\r\n if (_.isEmpty(this.requestsQueue)) {\r\n if (this.displayOverlay) {\r\n this.stopTimer();\r\n }\r\n\r\n this.displayOverlay = false;\r\n }\r\n });\r\n\r\n this.disposeSubscription(subscription);\r\n }\r\n\r\n private disposeSubscription(subscription: Subscription) {\r\n setTimeout(function () {\r\n subscription.unsubscribe();\r\n }, LoadOverlayService.DisposeSubscriptionDelay);\r\n }\r\n\r\n private startTimer(): void {\r\n const durationObservable = interval(LoadOverlayService.DurationSecondDelay);\r\n this.durationSubscription = durationObservable.subscribe(() => {\r\n this.displayDuration++;\r\n });\r\n }\r\n\r\n private stopTimer(): void {\r\n this.durationSubscription.unsubscribe();\r\n this.displayDuration = LoadOverlayService.DurationInitialValue;\r\n }\r\n}\r\n","
\r\n
\r\n
Processing, please wait...
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n {{overlayDuration()}}s\r\n
\r\n
\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport {LoadOverlayService} from \"../../services/webapp/load-overlay/load-overlay.service\";\r\n\r\n@Component({\r\n selector: 'app-section-load-overlay',\r\n templateUrl: './section-load-overlay.component.html',\r\n styleUrls: ['./section-load-overlay.component.css']\r\n})\r\nexport class SectionLoadOverlayComponent implements OnInit {\r\n\r\n constructor(private loadOverlayService: LoadOverlayService) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n isShowOverlay(): boolean {\r\n return this.loadOverlayService.isOverlayShown();\r\n }\r\n\r\n overlayDuration(): number {\r\n return this.loadOverlayService.overlayDuration();\r\n }\r\n}\r\n","export enum SelectedModalOption {\r\n Yes,\r\n No,\r\n Cancel\r\n}\r\n","export interface ModalOptions {\r\n title: string;\r\n message: string;\r\n}\r\n\r\nexport class BaseModalOptions implements ModalOptions {\r\n title: string;\r\n message: string;\r\n\r\n constructor(title: string, message: string) {\r\n this.title = title;\r\n this.message = message;\r\n }\r\n}\r\n","import {BaseModalOptions} from \"./modal-options\";\r\n\r\nexport class YesNoModalOptions extends BaseModalOptions {\r\n noButtonText: string;\r\n yesButtonText: string;\r\n\r\n constructor(title: string, message: string, noButtonText: string = 'No', yesButtonText: string = 'Yes') {\r\n super(title, message);\r\n this.noButtonText = noButtonText;\r\n this.yesButtonText = yesButtonText;\r\n }\r\n}\r\n","import {BaseModalOptions} from \"./modal-options\";\r\n\r\nexport class YesNoCancelModalOptions extends BaseModalOptions {\r\n noButtonText: string;\r\n yesButtonText: string;\r\n cancelButtonText: string;\r\n\r\n constructor(title: string, message: string, noButtonText: string = 'No', yesButtonText: string = 'Yes', cancelButtonText: string = 'Cancel') {\r\n super(title, message);\r\n this.noButtonText = noButtonText;\r\n this.yesButtonText = yesButtonText;\r\n this.cancelButtonText = cancelButtonText;\r\n }\r\n}\r\n","import {BaseModalOptions} from \"./modal-options\";\r\n\r\nexport class OkModalOptions extends BaseModalOptions {\r\n okButtonText: string;\r\n\r\n constructor(title: string, message: string, okButtonText: string = 'Ok') {\r\n super(title, message);\r\n this.okButtonText = okButtonText;\r\n }\r\n}\r\n","export class ModalConfiguration {\r\n public static DefaultShowTitle: boolean = true;\r\n public static DefaultClass: string = \"popup\";\r\n public static DefaultDragEnabled: boolean = true;\r\n public static DefaultYesButtonText: string = \"Yes\";\r\n public static DefaultOKButtonText: string = \"OK\";\r\n public static DefaultNoButtonText: string = \"No\";\r\n public static DefaultCancelButtonText: string = \"Cancel\";\r\n public static DefaultYesButtonVisible: boolean = true;\r\n public static DefaultNoButtonVisible: boolean = false;\r\n public static DefaultCancelButtonVisible: boolean = true;\r\n public static DefaultYesButtonDisabled: boolean = false;\r\n public static DefaultAnimation = {\r\n show: { type: 'pop', duration: 1, from: { scale: 1 } },\r\n hide: { type: 'pop', duration: 1, to: { opacity: 0, scale: 1 }, from: { opacity: 1, scale: 1 } }\r\n };\r\n\r\n class: string = ModalConfiguration.DefaultClass;\r\n width?: number;\r\n height?: number;\r\n showTitle: boolean = ModalConfiguration.DefaultShowTitle;\r\n title: string;\r\n dragEnabled: boolean;\r\n closeOnOutsideClick: boolean;\r\n visible: boolean;\r\n showCloseButton: boolean;\r\n defaultAnimation: any = ModalConfiguration.DefaultAnimation;\r\n\r\n modalButtonConfiguration: ModalButtonConfiguration = new ModalButtonConfiguration();\r\n}\r\n\r\nexport class ModalButtonConfiguration {\r\n yesButtonText: string = ModalConfiguration.DefaultYesButtonText;\r\n noButtonText: string = ModalConfiguration.DefaultNoButtonText;\r\n cancelButtonText: string = ModalConfiguration.DefaultCancelButtonText;\r\n yesButtonVisible: boolean = ModalConfiguration.DefaultYesButtonVisible;\r\n noButtonVisible: boolean = ModalConfiguration.DefaultNoButtonVisible;\r\n cancelButtonVisible: boolean = ModalConfiguration.DefaultCancelButtonVisible;\r\n yesButtonDisabled: boolean = ModalConfiguration.DefaultYesButtonDisabled;\r\n dragEnabled: boolean = ModalConfiguration.DefaultDragEnabled;\r\n yesButtonSecurityCapabilities: string[];\r\n}\r\n","import * as _ from 'lodash';\r\nimport { Injectable } from '@angular/core';\r\nimport {YesNoCancelModalOptions} from \"../modal-options/yes-no-cancel-modal-options\";\r\nimport {YesNoModalOptions} from \"../modal-options/yes-no-modal-options\";\r\nimport {OkModalOptions} from \"../modal-options/ok-modal-options\";\r\nimport {ModalConfiguration} from \"@shared/components/modal/modal-configuration\";\r\nimport {ModalOptions} from \"../modal-options/modal-options\";\r\n\r\n@Injectable()\r\nexport class ModalOptionsToConfigurationBuilderService {\r\n public build(modalOptions: ModalOptions): ModalConfiguration {\r\n const modalConfiguration = new ModalConfiguration();\r\n modalConfiguration.title = modalOptions.title;\r\n\r\n if (modalOptions instanceof OkModalOptions) {\r\n modalConfiguration.modalButtonConfiguration.yesButtonText = ModalConfiguration.DefaultOKButtonText;\r\n modalConfiguration.modalButtonConfiguration.cancelButtonVisible = false;\r\n return modalConfiguration;\r\n }\r\n\r\n if (modalOptions instanceof YesNoModalOptions) {\r\n modalConfiguration.modalButtonConfiguration.yesButtonText = modalOptions.yesButtonText;\r\n modalConfiguration.modalButtonConfiguration.noButtonText = modalOptions.noButtonText;\r\n\r\n modalConfiguration.modalButtonConfiguration.noButtonVisible = true;\r\n modalConfiguration.modalButtonConfiguration.cancelButtonVisible = false;\r\n return modalConfiguration;\r\n }\r\n\r\n if (modalOptions instanceof YesNoCancelModalOptions) {\r\n modalConfiguration.modalButtonConfiguration.noButtonVisible = true;\r\n return modalConfiguration;\r\n }\r\n }\r\n}\r\n","\r\nimport {tap} from 'rxjs/operators';\r\nimport {Injectable} from '@angular/core';\r\nimport {Observable} from \"rxjs\";\r\nimport {ModalOptions} from \"../modal-options/modal-options\";\r\nimport {SelectedModalOption} from \"../modal-options/selected-modal-option\";\r\nimport {YesNoModalOptions} from \"../modal-options/yes-no-modal-options\";\r\nimport {ModalOptionsToConfigurationBuilderService} from \"../modal-options-to-configuration-builder/modal-options-to-configuration-builder.service\";\r\nimport {Modal} from \"@shared/components/yes-no-cancel-modal/modal\";\r\n\r\n/*\r\n * ModalService offers the ability to show a some text and a Yes/No/Cancel button in a modal format.\r\n *\r\n * If you want to put some custom content in the body such as form fields, don't use this service, but instead\r\n * use .\r\n *\r\n * Entities interacting with this service are:\r\n *\r\n * yes-no-cancel-modal.component -> registers itself with -> yes-no-cancel-modal.service\r\n * |\r\n * some.component calls .show(...options)\r\n */\r\n@Injectable()\r\nexport class YesNoCancelModalService {\r\n private modal: Modal;\r\n\r\n public static getDefaultYesNoModalOptions = (): YesNoModalOptions =>\r\n new YesNoModalOptions('Discard Warning', 'Unsaved changes will be lost, would you like to continue?');\r\n\r\n constructor(private modalOptionsToConfigurationBuilder: ModalOptionsToConfigurationBuilderService) {\r\n }\r\n\r\n public show(modalOptions: ModalOptions): Observable {\r\n const modalConfiguration = this.modalOptionsToConfigurationBuilder.build(modalOptions);\r\n return this.modal.show(modalOptions.message, modalConfiguration).pipe(\r\n tap(() => this.modal.hide()));\r\n }\r\n\r\n public register(modal: Modal): void {\r\n this.modal = modal;\r\n }\r\n}\r\n","\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n","import * as _ from 'lodash';\r\nimport {\r\n Component, ContentChild, EventEmitter, Input, Output, ViewChild\r\n} from '@angular/core';\r\nimport {DxPopupComponent} from \"devextreme-angular\";\r\nimport {NgForm} from \"@angular/forms\";\r\nimport {ModalConfiguration} from \"./modal-configuration\";\r\n\r\n/* ModalComponent is the outer wrapper for modals.\r\n * Any content inside will be automatically injected into the modal.\r\n *\r\n * Add a reference like so -> @ViewChild(ModalComponent) modal: ModalComponent;\r\n * to gain access to modal.show();\r\n *\r\n * Cancel and no button automatically hide the modal.\r\n */\r\n@Component({\r\n selector: 'app-modal',\r\n templateUrl: './modal.component.html',\r\n styleUrls: ['./modal.component.css']\r\n})\r\nexport class ModalComponent {\r\n @ViewChild(DxPopupComponent) popUp: DxPopupComponent;\r\n\r\n // Seb - ContentChild allows us to drill down from parent into \r\n @ContentChild(NgForm) public form: NgForm;\r\n\r\n // Inputs\r\n @Input() showTitle: boolean = ModalConfiguration.DefaultShowTitle;\r\n @Input() title: string;\r\n @Input() visible: boolean;\r\n @Input() height: number | string = \"auto\";\r\n @Input() width: number | string;\r\n @Input() class: string = ModalConfiguration.DefaultClass;\r\n @Input() dragEnabled: boolean = ModalConfiguration.DefaultDragEnabled;\r\n @Input() closeOnOutsideClick: boolean;\r\n @Input() yesButtonText: string = ModalConfiguration.DefaultYesButtonText;\r\n @Input() noButtonText: string = ModalConfiguration.DefaultNoButtonText;\r\n @Input() cancelButtonText: string = ModalConfiguration.DefaultCancelButtonText;\r\n @Input() yesButtonVisible: boolean = ModalConfiguration.DefaultYesButtonVisible;\r\n @Input() noButtonVisible: boolean;\r\n @Input() cancelButtonVisible: boolean = ModalConfiguration.DefaultCancelButtonVisible;\r\n @Input() yesButtonDisabled: boolean;\r\n @Input() securityCapabilities: string[];\r\n @Input() showCloseButton: boolean;\r\n @Input() animation: any = ModalConfiguration.DefaultAnimation;\r\n private _manuallyHandleYesClose = false;\r\n @Input('manuallyHandleYesClose')\r\n get manuallyHandleYesClose(): boolean {\r\n return this._manuallyHandleYesClose;\r\n }\r\n set manuallyHandleYesClose(value: boolean) {\r\n this._manuallyHandleYesClose = \"\" + value !== \"false\";\r\n }\r\n\r\n // Outputs\r\n @Output() onYesClicked: EventEmitter = new EventEmitter();\r\n @Output() onNoClicked: EventEmitter = new EventEmitter();\r\n @Output() onCancelClicked: EventEmitter = new EventEmitter();\r\n\r\n /***\r\n * Public Methods\r\n */\r\n\r\n // Seb - this could be achieved with a simple modal.visible, but\r\n // it looks like @Inputs don't inherit -> https://stackoverflow.com/questions/33997690/extend-component-with-input-output\r\n // Currently opening the modal with a .show()\r\n public show(): void {\r\n this.visible = true;\r\n }\r\n\r\n /***\r\n * Protected Methods\r\n */\r\n\r\n /***\r\n * Private Methods\r\n */\r\n\r\n public hide(): void {\r\n this.visible = false;\r\n }\r\n\r\n isFormValid(): boolean {\r\n return _.isNil(this.form) ? true : this.form.valid;\r\n }\r\n\r\n // TODO - Seb: Is there a cleaner, more RXJS way of doing this?\r\n // emit return type is void, so the only other way I can think of is to\r\n // subscribe then close which also seems weak\r\n yesClicked(): void {\r\n this.runActionThenHide(() => this.onYesClicked.emit(null), true);\r\n }\r\n\r\n noClicked(): void {\r\n this.runActionThenHide(() => this.onNoClicked.emit(null), false);\r\n }\r\n\r\n cancelClicked(): void {\r\n this.runActionThenHide(() => this.onCancelClicked.emit(null), false);\r\n }\r\n\r\n private runActionThenHide(action: any, isYesButton: boolean): void {\r\n action();\r\n if (!isYesButton || !this._manuallyHandleYesClose) {\r\n this.hide();\r\n }\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\nimport {Component} from '@angular/core';\r\nimport {YesNoCancelModalService} from \"../../services/webapp/yes-no-cancel-modal/yes-no-cancel-modal.service\";\r\nimport {ModalConfiguration} from \"../modal/modal-configuration\";\r\nimport {ReplaySubject, Observable} from \"rxjs\";\r\nimport {SelectedModalOption} from \"../../services/webapp/modal-options/selected-modal-option\";\r\nimport {Modal} from \"./modal\";\r\n\r\n@Component({\r\n selector: 'app-yes-no-cancel-modal',\r\n templateUrl: './yes-no-cancel-modal.component.html',\r\n styleUrls: ['./yes-no-cancel-modal.component.css']\r\n})\r\nexport class YesNoCancelModalComponent implements Modal {\r\n public content: string;\r\n public modalConfiguration: ModalConfiguration;\r\n public visible: boolean;\r\n\r\n private modalSelectionHandler: ReplaySubject;\r\n\r\n constructor(public yesNoCancelModalService: YesNoCancelModalService) {\r\n this.yesNoCancelModalService.register(this);\r\n }\r\n\r\n /***\r\n * Public Methods\r\n */\r\n\r\n public onYesClicked = (): void => this.signalNextThenComplete(SelectedModalOption.Yes);\r\n public onNoClicked = (): void => this.signalNextThenComplete(SelectedModalOption.No);\r\n public onCancelClicked = (): void => this.signalNextThenComplete(SelectedModalOption.Cancel);\r\n\r\n public getText(property: string): string {\r\n return !this.isPropertyPresent(property) ? null :\r\n this.modalConfiguration.modalButtonConfiguration[property];\r\n }\r\n\r\n public getBoolean(property: string): boolean {\r\n return !this.isPropertyPresent(property) ? false :\r\n this.modalConfiguration.modalButtonConfiguration[property];\r\n }\r\n\r\n public show(content: string, modalConfiguration: ModalConfiguration): Observable {\r\n this.content = content;\r\n this.modalConfiguration = modalConfiguration;\r\n this.visible = true;\r\n this.modalSelectionHandler = new ReplaySubject();\r\n return this.modalSelectionHandler.asObservable();\r\n }\r\n\r\n public hide(): void {\r\n this.visible = false;\r\n }\r\n\r\n /***\r\n * Private Methods\r\n */\r\n\r\n private isPropertyPresent(property: string): boolean {\r\n return (!(_.isNil(this.modalConfiguration) ||\r\n _.isNil(this.modalConfiguration.modalButtonConfiguration) ||\r\n _.isNil(this.modalConfiguration.modalButtonConfiguration[property])));\r\n }\r\n\r\n private signalNextThenComplete(selectedModalOption: SelectedModalOption): void {\r\n this.modalSelectionHandler.next(selectedModalOption);\r\n this.modalSelectionHandler.complete();\r\n }\r\n}\r\n","
{{content}}
\r\n","import {Component, OnInit} from '@angular/core';\r\nimport {ModalConfiguration} from \"@shared/components/modal/modal-configuration\";\r\nimport {OkModalOptions} from \"@shared/services/webapp/modal-options/ok-modal-options\";\r\nimport {ModalOptionsToConfigurationBuilderService} from \"@shared/services/webapp/modal-options-to-configuration-builder/modal-options-to-configuration-builder.service\";\r\nimport * as _ from \"lodash\";\r\nimport {SessionTimeoutModalService} from \"@shared/services/webapp/session-timeout-modal/session-timeout-modal.service\";\r\n\r\n@Component({\r\n selector: 'app-session-timeout-modal',\r\n templateUrl: './session-timeout-modal.component.html',\r\n styleUrls: ['./session-timeout-modal.component.css']\r\n})\r\nexport class SessionTimeoutModalComponent implements OnInit {\r\n\r\n private okModalOptions = new OkModalOptions('Session timed out', 'Session has timed out, click OK to log back in.');\r\n\r\n public content: string;\r\n public title: string;\r\n public modalConfiguration: ModalConfiguration;\r\n public visible: boolean;\r\n\r\n constructor(private modalOptionsToConfigurationBuilder: ModalOptionsToConfigurationBuilderService, private sessionTimeoutModalService: SessionTimeoutModalService) {\r\n this.modalConfiguration = this.modalOptionsToConfigurationBuilder.build(this.okModalOptions);\r\n }\r\n\r\n ngOnInit() {\r\n this.sessionTimeoutModalService.sessionTimeoutEvent\r\n .subscribe(() => this.show());\r\n }\r\n\r\n private isPropertyPresent(property: string): boolean {\r\n return (!(_.isNil(this.modalConfiguration) ||\r\n _.isNil(this.modalConfiguration.modalButtonConfiguration) ||\r\n _.isNil(this.modalConfiguration.modalButtonConfiguration[property])));\r\n }\r\n\r\n public getText(property: string): string {\r\n return !this.isPropertyPresent(property) ? null :\r\n this.modalConfiguration.modalButtonConfiguration[property];\r\n }\r\n\r\n public getBoolean(property: string): boolean {\r\n return !this.isPropertyPresent(property) ? false :\r\n this.modalConfiguration.modalButtonConfiguration[property];\r\n }\r\n\r\n public show(): void {\r\n this.content = this.okModalOptions.message;\r\n this.visible = true;\r\n }\r\n\r\n onYesClicked() {\r\n this.visible = false;\r\n this.sessionTimeoutModalService.sessionTimeoutHandled();\r\n }\r\n}\r\n","
{{content}}
\r\n","import {Component} from '@angular/core';\r\nimport {AppService} from \"../../services/webapp/app/app.service\";\r\nimport {state, style, trigger} from \"@angular/animations\";\r\n\r\n@Component({\r\n selector: 'app-content',\r\n templateUrl: 'content.component.html',\r\n styleUrls: ['content.component.css'],\r\n animations: [\r\n trigger('menuVisible', [\r\n state('false', style({'padding-left': '0px'}))\r\n ]),\r\n ],\r\n})\r\nexport class ContentComponent {\r\n\r\n constructor(private appService: AppService) {\r\n }\r\n\r\n isMenuVisible(): boolean {\r\n return this.appService.isMenuVisible();\r\n }\r\n}\r\n","
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n","import {Component, OnInit} from '@angular/core';\r\nimport {BaseComponent} from \"@model/base-component\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\n\r\n@Component({\r\n selector: 'app-gcts',\r\n templateUrl: './gcts.component.html',\r\n styleUrls: ['./gcts.component.css']\r\n})\r\nexport class GctsComponent extends BaseComponent implements OnInit {\r\n\r\n constructor(protected appService: AppService, private sessionService: SessionService) {\r\n super(appService);\r\n }\r\n\r\n ngOnInit() {\r\n super.setTitle(\"Home\");\r\n }\r\n\r\n getPipelineCode(): string {\r\n const pipeline = this.sessionService.getPipeline();\r\n if (!pipeline || !pipeline.code) { return ''; }\r\n return `pipeline-${pipeline.code.toLowerCase()}`;\r\n }\r\n}\r\n","
\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n
\r\n","import {map} from 'rxjs/operators';\r\nimport * as _ from 'lodash';\r\nimport {Injectable} from '@angular/core';\r\nimport {CommondataResourceService} from \"@shared/resources/commondata-resource.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {Observable} from \"rxjs\";\r\nimport {IEnrichmentResource} from \"@shared/services/enrichment/base-enrichment.service\";\r\nimport {IEnrichmentEnterprise} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\n\r\nexport class CommonDataEnterpriseSearchParams {\r\n isActiveAfterFirstBillingMonth: boolean;\r\n hasStorageBalanceLocation: boolean;\r\n isLocationOperator: boolean;\r\n pipeline: string;\r\n gasDay: GasDay;\r\n onlyActive: boolean;\r\n onlyActiveAndNotTerminated: boolean;\r\n}\r\n\r\nexport interface IEnterpriseCertificate {\r\n id: number;\r\n certificateTypeId: string;\r\n certificateTypeName: string;\r\n effectiveGasDay: GasDay;\r\n expiryGasDay: GasDay;\r\n enterpriseId: number;\r\n pipelineId: number;\r\n}\r\nexport class EnterpriseCertificate implements IEnterpriseCertificate {\r\n id: number;\r\n certificateTypeId: string;\r\n certificateTypeName: string;\r\n effectiveGasDay: GasDay;\r\n expiryGasDay: GasDay;\r\n enterpriseId: number;\r\n pipelineId: number;\r\n\r\n public static create(enterpriseCertificateDto: IEnterpriseCertificate): EnterpriseCertificate {\r\n const cert = new EnterpriseCertificate();\r\n cert.id = enterpriseCertificateDto.id;\r\n cert.certificateTypeId = enterpriseCertificateDto.certificateTypeId;\r\n cert.certificateTypeName = enterpriseCertificateDto.certificateTypeName;\r\n cert.effectiveGasDay = enterpriseCertificateDto.effectiveGasDay;\r\n cert.expiryGasDay = enterpriseCertificateDto.expiryGasDay;\r\n cert.enterpriseId = enterpriseCertificateDto.enterpriseId;\r\n cert.pipelineId = enterpriseCertificateDto.pipelineId;\r\n return cert;\r\n }\r\n}\r\n\r\nexport interface IEnterpriseResponse {\r\n cid: number;\r\n legalName: string;\r\n extension1: string;\r\n extension2: string;\r\n shortName: string;\r\n mnemonic: string;\r\n sapNumber: string;\r\n expiryDay: string;\r\n}\r\n\r\nexport class Enterprise implements IEnrichmentEnterprise {\r\n cid: number;\r\n\r\n // TODO: this isn't in the response from the server.\r\n legalName: string;\r\n extension1: string;\r\n extension2: string;\r\n sapNumber: string;\r\n expiryDay: GasDay;\r\n\r\n // Enrichment Properties\r\n get id(): number {\r\n return this.cid;\r\n }\r\n get stateExpiryGasDay(): GasDay {\r\n return this.expiryDay;\r\n }\r\n shortName: string;\r\n mnemonic: string;\r\n dunsNumber: string; // Not returned from Common Data End Point\r\n\r\n // TODO: this should go away and use the one above.\r\n public static create(enterpriseDto: IEnterpriseResponse): Enterprise {\r\n const enterprise = new Enterprise();\r\n\r\n enterprise.cid = enterpriseDto.cid;\r\n enterprise.extension1 = enterpriseDto.extension1;\r\n enterprise.extension2 = enterpriseDto.extension2;\r\n enterprise.shortName = enterpriseDto.shortName;\r\n enterprise.mnemonic = enterpriseDto.mnemonic;\r\n enterprise.sapNumber = enterpriseDto.sapNumber;\r\n enterprise.expiryDay = GasDay.parse(enterpriseDto.expiryDay);\r\n\r\n return enterprise;\r\n }\r\n\r\n public static createWithId(enterpriseId: number): Enterprise {\r\n const enterprise = new Enterprise();\r\n\r\n enterprise.cid = enterpriseId;\r\n\r\n return enterprise;\r\n }\r\n\r\n // TODO: should probably pick this or display value (don't need both)\r\n public get displayName(): string {\r\n return this.displayValue;\r\n }\r\n\r\n public get displayValue(): string {\r\n return `${this.shortName} (${this.mnemonic})`;\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport class EnterpriseService implements IEnrichmentResource {\r\n\r\n constructor(private commonDataResource: CommondataResourceService) {\r\n }\r\n\r\n queryLocationOperatorsByPipeline(pipeline: string, gasDay?: GasDay): Observable {\r\n const params = new GCTSHttpParams();\r\n params.set('pipeline', pipeline);\r\n params.setBoolean('isLocationOperator', true);\r\n params.setOptionalGasDay(gasDay);\r\n\r\n return this.commonDataResource.get('/enterprises', false, params)\r\n .pipe(\r\n map(enterprises => _.map(enterprises, x => Enterprise.create(x))),\r\n map(enterprises => {\r\n return _.orderBy(_.map(enterprises, x => _.extend({}, x, {\r\n displayValue: `${x.shortName} (${x.mnemonic})`\r\n })), x => x.displayValue);\r\n }));\r\n }\r\n\r\n getAll(searchParams?: CommonDataEnterpriseSearchParams): Observable {\r\n // TODO: This is old and should be updated when we start converting over phase 1 pages\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n\r\n if (searchParams) {\r\n params.setOptionalBoolean('isActiveAfterFirstBillingMonth', searchParams.isActiveAfterFirstBillingMonth);\r\n params.setOptionalBoolean('onlyActive', searchParams.onlyActive);\r\n params.setOptionalBoolean('onlyActiveAndNotTerminated', searchParams.onlyActiveAndNotTerminated);\r\n params.setOptionalString('pipeline', searchParams.pipeline);\r\n params.setOptionalBoolean('hasStorageBalanceLocation', searchParams.hasStorageBalanceLocation);\r\n params.setOptionalGasDay(searchParams.gasDay);\r\n }\r\n return this.commonDataResource.get('/enterprises', false, params)\r\n .pipe(\r\n map(enterprises => _.map(enterprises, x => Enterprise.create(x)))\r\n );\r\n }\r\n\r\n // This actually returns ICommonDataEnterpriseDto, not the class.\r\n public get(id: number): Observable {\r\n return this.commonDataResource.get(`/enterprises/${id}`, false);\r\n }\r\n\r\n public saveEnterpriseCertificate(cert: EnterpriseCertificate) {\r\n return this.commonDataResource.post(`/enterprises/certificates`, cert, false);\r\n }\r\n\r\n public deleteEnterpriseCertificate(id: number) {\r\n return this.commonDataResource.deleteTyped(`/enterprises/certificates/${id}`,false);\r\n }\r\n\r\n public queryEnterpriseCertificates(enterpriseId: number,pipeline: string, gasDay : GasDay): Observable {\r\n const params = new GCTSHttpParams();\r\n params.set('pipeline', pipeline);\r\n params.setNumber('enterpriseId', enterpriseId);\r\n params.setGasDay(gasDay);\r\n return this.commonDataResource.get(`/enterprises/certificates`, false, params)\r\n .pipe(\r\n map(enterprisecerts =>_.map(enterprisecerts, x=> EnterpriseCertificate.create(x)))\r\n );\r\n }\r\n\r\n public enrichmentQueryAll(gasDay: GasDay): Observable {\r\n return this.getAll();\r\n }\r\n\r\n public enrichmentGet(id: number, gasDay: GasDay): Observable {\r\n return this.get(id);\r\n }\r\n}\r\n","
\r\n  \r\n {{message.status}}\r\n \r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport {AlertService, Message} from \"@shared/services/webapp/alert/alert.service\";\r\n\r\n@Component({\r\n selector: 'app-alert',\r\n templateUrl: './alert.component.html',\r\n styleUrls: ['./alert.component.css']\r\n})\r\nexport class AlertComponent implements OnInit {\r\n\r\n constructor(private alertService: AlertService) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n getMessages(): Message[] {\r\n return this.alertService.getMessages();\r\n }\r\n}\r\n","import {Component, OnInit, OnDestroy, ElementRef, Renderer2} from '@angular/core';\r\nimport {trigger, state, style, transition, animate} from '@angular/animations';\r\n\r\nconst hiddenState = 'hidden';\r\nconst visibleState = 'visible';\r\n\r\n@Component({\r\n selector: 'app-back-to-top',\r\n templateUrl: './back-to-top.component.html',\r\n styleUrls: ['./back-to-top.component.css'],\r\n animations: [\r\n trigger('changeDivSize', [\r\n state(hiddenState, style({\r\n opacity: 0,\r\n 'z-index': -1\r\n })),\r\n state(visibleState, style({\r\n opacity: 1,\r\n 'z-index': 1000\r\n })),\r\n transition('hiddenState=>visibleState', animate('1500ms')),\r\n transition('visibleState=>hiddenState', animate('1000ms'))\r\n ]),\r\n ]\r\n})\r\n\r\nexport class BackToTopComponent implements OnInit, OnDestroy {\r\n\r\n private readonly removeScrollListener: Function;\r\n async delayThenFadeOut(ms: number) {\r\n await new Promise(resolve => setTimeout(() => resolve(), ms)).then(() => this.fadeOut());\r\n }\r\n\r\n currentState = hiddenState;\r\n currentStateAllowsTransition = Boolean(true);\r\n amountScr = 0;\r\n\r\n constructor(el: ElementRef, renderer: Renderer2){\r\n this.removeScrollListener = renderer.listen('window','scroll',()=> {\r\n if (this.currentStateAllowsTransition && Math.abs(this.getScrollTop() - this.amountScr) > 200) {\r\n this.amountScr = this.getScrollTop();\r\n this.changeState();\r\n }\r\n });\r\n }\r\n\r\n changeState() {\r\n this.currentStateAllowsTransition = Boolean(false);\r\n this.currentState = this.currentState === hiddenState ? visibleState : hiddenState;\r\n this.delayThenFadeOut(3000).then(() => {});\r\n this.amountScr = this.getScrollTop();\r\n }\r\n fadeOut() {\r\n this.currentState = this.currentState === hiddenState ? visibleState : hiddenState;\r\n this.currentStateAllowsTransition = Boolean(true);\r\n }\r\n\r\n\r\n ngOnInit() {\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n this.removeScrollListener();\r\n }\r\n\r\n public scrollToTop(): void {\r\n window.scrollTo( { top: 0, left: 0, behavior: 'smooth' } );\r\n }\r\n\r\n // scrollTop that supports IE 11.\r\n private getScrollTop(): number {\r\n return typeof window.pageYOffset != 'undefined' ?\r\n window.pageYOffset :\r\n document.documentElement.scrollTop ?\r\n document.documentElement.scrollTop :\r\n document.body.scrollTop ?\r\n document.body.scrollTop :\r\n 0;\r\n }\r\n\r\n}\r\n\r\n","
\r\n\r\n","import {Component} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-page-content',\r\n templateUrl: 'page-content.component.html',\r\n styleUrls: ['page-content.component.css']\r\n})\r\nexport class PageContentComponent {\r\n\r\n constructor() {\r\n }\r\n}\r\n","\r\n
\r\n \r\n
\r\n\r\n\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n {{model.assumeEnterpriseShortName}} ({{model.assumeEnterpriseMnemonic}}) identity is assumed\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n\r\n","import * as _ from 'lodash';\r\nimport {Component, OnInit} from '@angular/core';\r\nimport {CommonDataEnterpriseSearchParams, EnterpriseService, Enterprise} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {BaseComponent} from \"@model/base-component\";\r\nimport {NominationEnterpriseEnrichmentService} from \"@shared/services/nomination/nomination-enterprise-enrichment/nomination-enterprise-enrichment.service\";\r\nimport {UserService} from \"@shared/services/webapp/user/user-service\";\r\nimport {User} from \"@model/user\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\n\r\nclass AssumeIdentityModel {\r\n enterprises: Enterprise[];\r\n assumeEnterpriseId: number;\r\n isAssumedEnterprise: boolean;\r\n assumeEnterpriseShortName: string;\r\n assumeEnterpriseMnemonic: string;\r\n}\r\n\r\n@Component({\r\n selector: 'app-assume-identity',\r\n templateUrl: './assume-identity.component.html',\r\n styleUrls: ['./assume-identity.component.css']\r\n})\r\nexport class AssumeIdentityComponent extends BaseComponent implements OnInit {\r\n model: AssumeIdentityModel;\r\n\r\n constructor(protected appService: AppService,\r\n private enterpriseService: EnterpriseService,\r\n private userService: UserService,\r\n private enterpriseEnrichmentService: NominationEnterpriseEnrichmentService,\r\n private sessionService: SessionService) {\r\n super(appService);\r\n }\r\n\r\n ngOnInit() {\r\n super.setTitle(\"Assume Customer Identity\");\r\n\r\n this.model = ({\r\n enterprises: []\r\n } as AssumeIdentityModel);\r\n\r\n // TODO: Make this only load once?\r\n const commonDataEnterpriseSearchParams = new CommonDataEnterpriseSearchParams();\r\n commonDataEnterpriseSearchParams.isActiveAfterFirstBillingMonth = true;\r\n commonDataEnterpriseSearchParams.pipeline = this.sessionService.getPipeline().code;\r\n\r\n this.enterpriseService.getAll(commonDataEnterpriseSearchParams).subscribe(enterprises => {\r\n // TODO: Sort Enterprise by Mnemonic using Natural Sort Order\r\n this.model.enterprises = enterprises;\r\n });\r\n\r\n this.setAssumeIdentityDetails(null);\r\n }\r\n\r\n\r\n applyClicked() {\r\n this.userService.assumeIdentity(this.model.assumeEnterpriseId).subscribe(user => {\r\n this.setAssumeIdentityDetails(user);\r\n });\r\n }\r\n\r\n clearClicked() {\r\n // Clear the Assume Identity info\r\n this.userService.clearAssumeIdentity();\r\n // Re-login the use\r\n this.userService.getUser().subscribe(user => {\r\n this.setAssumeIdentityDetails(user);\r\n });\r\n }\r\n\r\n private setAssumeIdentityDetails(user: User): void {\r\n const isAssumingIdentity = !_.isNil(user) && user.isAssumingIdentity;\r\n if (isAssumingIdentity) {\r\n this.enterpriseEnrichmentService.enrich(user, '_assumedEnterpriseId', '_assumedEnterprise')\r\n .subscribe(() => {\r\n this.model.assumeEnterpriseShortName = user.assumedEnterpriseShortName;\r\n this.model.assumeEnterpriseMnemonic = user.assumedEnterpriseMnemonic;\r\n this.model.isAssumedEnterprise = isAssumingIdentity;\r\n });\r\n } else {\r\n this.model.isAssumedEnterprise = false;\r\n }\r\n }\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {Observable} from \"rxjs\";\r\nimport {UriService} from \"../uri/uri.service\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\n\r\nexport interface ISummaryHealthCheck {\r\n serviceName: string;\r\n results: IHealthCheckResult[];\r\n}\r\n\r\nexport interface IHealthCheckResult {\r\n healthCheckType: string;\r\n description: string;\r\n status: string;\r\n message: string;\r\n}\r\n\r\n@Injectable()\r\nexport class HealthCheckService {\r\n\r\n constructor(private httpClient: HttpClient,\r\n private uriService: UriService) {\r\n }\r\n\r\n summaryHealthCheck(service: string): Observable {\r\n const serviceUrl = this.uriService.getUri('/' + service + '/healthCheck');\r\n\r\n return this.httpClient.get(serviceUrl);\r\n }\r\n\r\n verbHealthCheck(service: string, verb: string): Observable {\r\n const serviceUrl = this.uriService.getUri('/' + service + '/healthCheck/Verb');\r\n\r\n switch (verb) {\r\n case 'get':\r\n return this.httpClient.get(serviceUrl);\r\n case 'post':\r\n return this.httpClient.post(serviceUrl, null);\r\n case 'put':\r\n return this.httpClient.put(serviceUrl, null);\r\n case 'patch':\r\n return this.httpClient.patch(serviceUrl, null);\r\n case 'delete':\r\n return this.httpClient.delete(serviceUrl, {responseType: 'json'});\r\n default:\r\n throw new Error(`Verb Health Check - Verb [${verb}] was not recognized. Please configure this verb in Health Check.`);\r\n }\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n {{ service.displayName }}\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{result.description}}\r\n \r\n {{result.message}}\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n\r\n\r\n","import * as _ from 'lodash';\r\nimport {Component, OnInit} from '@angular/core';\r\nimport {HealthCheckService, IHealthCheckResult} from \"@shared/services/webapp/health-check/health-check.service\";\r\nimport {BaseComponent} from \"@model/base-component\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\n\r\nclass HealthCheckModel {\r\n services: SummaryHealthCheckModel[];\r\n toggledSections = [];\r\n}\r\n\r\nclass SummaryHealthCheckModel {\r\n displayName: string;\r\n status: string;\r\n results: IHealthCheckResult[];\r\n}\r\n\r\nenum HealthCheckStatusEnum {\r\n Pending,\r\n Fail,\r\n Warning,\r\n Pass\r\n}\r\n\r\n@Component({\r\n selector: 'app-health',\r\n templateUrl: './health.component.html',\r\n styleUrls: ['./health.component.css']\r\n})\r\nexport class HealthComponent extends BaseComponent implements OnInit {\r\n private readonly httpMethods: string[] = ['get', 'post', 'put', 'delete'];\r\n private readonly mappings: {[name: string]: string} = {\r\n 'Security Service': 'security',\r\n 'Nominations Service': 'nominations',\r\n 'Common Data Service': 'commondataservice',\r\n 'Accounts Service': 'accounts',\r\n 'Flowing Gas Service': 'flowinggas',\r\n 'Invoicing Service': 'invoicing',\r\n 'Job Scheduling Service': 'jobschedulingservice',\r\n 'Credit Service': 'credit'\r\n };\r\n\r\n model: HealthCheckModel;\r\n\r\n constructor(protected appService: AppService,\r\n private healthCheckService: HealthCheckService) {\r\n super(appService);\r\n }\r\n\r\n ngOnInit() {\r\n super.setTitle(\"Health Check\");\r\n this.model = {\r\n services: [],\r\n toggledSections: []\r\n };\r\n\r\n for (const key in this.mappings) {\r\n this.performHealthChecks(key, this.mappings[key]);\r\n }\r\n }\r\n\r\n toggleSection(section: string): void {\r\n if (this.isSectionVisible(section)) {\r\n this.hideSection(section);\r\n } else {\r\n this.showSection(section);\r\n }\r\n }\r\n\r\n isSectionVisible(section: string): boolean {\r\n return _.includes(this.model.toggledSections, section);\r\n }\r\n\r\n private showSection(section: string): void {\r\n if (!_.includes(this.model.toggledSections, section)) {\r\n this.model.toggledSections.push(section);\r\n }\r\n }\r\n private hideSection(section: string): void {\r\n _.pull(this.model.toggledSections, section);\r\n }\r\n\r\n private performHealthChecks(displayName: string, uri: string): void {\r\n const summaryHealthCheck = this.pendingSummaryHealthCheck(displayName);\r\n this.model.services.push(summaryHealthCheck);\r\n\r\n for (const httpMethod of this.httpMethods) {\r\n this.healthCheckService.verbHealthCheck(uri, httpMethod).subscribe(healthCheckResult => {\r\n this.addHealthCheckResult(summaryHealthCheck, healthCheckResult);\r\n }, error => {\r\n this.addHealthCheckResult(summaryHealthCheck, this.errorHealthCheckResult(httpMethod, error));\r\n });\r\n }\r\n\r\n this.healthCheckService.summaryHealthCheck(uri).subscribe(summaryHealthCheckResult => {\r\n for (const result of summaryHealthCheckResult.results) {\r\n this.addHealthCheckResult(summaryHealthCheck, result);\r\n }\r\n }, error => {\r\n this.addHealthCheckResult(summaryHealthCheck, this.errorHealthCheckResult('Summary', error));\r\n });\r\n }\r\n\r\n private addHealthCheckResult(summaryHealthCheck: SummaryHealthCheckModel, result: IHealthCheckResult) {\r\n summaryHealthCheck.results.push(result);\r\n this.updateHealthCheckStatus(summaryHealthCheck);\r\n }\r\n\r\n private updateHealthCheckStatus(summaryHealthCheck: SummaryHealthCheckModel) {\r\n const failures = _.filter(summaryHealthCheck.results, function (result) {\r\n return result.status === HealthCheckStatusEnum[HealthCheckStatusEnum.Fail];\r\n });\r\n const warnings = _.filter(summaryHealthCheck.results, function (result) {\r\n return result.status === HealthCheckStatusEnum[HealthCheckStatusEnum.Warning];\r\n });\r\n\r\n if (!_.isEmpty(failures)) summaryHealthCheck.status = HealthCheckStatusEnum[HealthCheckStatusEnum.Fail];\r\n else if (!_.isEmpty(warnings)) summaryHealthCheck.status = HealthCheckStatusEnum[HealthCheckStatusEnum.Warning];\r\n else summaryHealthCheck.status = HealthCheckStatusEnum[HealthCheckStatusEnum.Pass];\r\n }\r\n\r\n private pendingSummaryHealthCheck(displayName: string): SummaryHealthCheckModel {\r\n return {\r\n displayName: displayName,\r\n status: HealthCheckStatusEnum[HealthCheckStatusEnum.Pending],\r\n results: []\r\n };\r\n }\r\n\r\n private errorHealthCheckResult(httpMethod: string, error: any) {\r\n return {\r\n description: httpMethod + ' request',\r\n healthCheckType: 'Service',\r\n status: HealthCheckStatusEnum[HealthCheckStatusEnum.Fail],\r\n message: error.status + ' - ' + error.statusText\r\n };\r\n }\r\n}\r\n","import {Observable, of} from 'rxjs';\r\nimport {concatMap} from 'rxjs/operators';\r\nimport {Injectable} from '@angular/core';\r\nimport {Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot} from '@angular/router';\r\nimport {SessionService} from \"../session/session.service\";\r\nimport {UserService} from \"../user/user-service\";\r\nimport {CapabilitiesService} from \"../capabilities/capabilities.service\";\r\nimport {User} from \"@model/user\";\r\nimport * as _ from \"lodash\";\r\n\r\n@Injectable()\r\nexport class AuthorizationService implements CanActivate {\r\n\r\n constructor(private router: Router,\r\n private sessionService: SessionService,\r\n private userService: UserService,\r\n private capabilitiesService: CapabilitiesService) {\r\n }\r\n\r\n private doesUserHaveCapabilities(user: User, route: ActivatedRouteSnapshot): Observable {\r\n const capabilities = route.data['capabilities'] as Array;\r\n const pipelineCode = this.sessionService.getPipeline().code;\r\n const hasCapability = this.capabilitiesService.hasCapabilities(capabilities, user, pipelineCode);\r\n if (!hasCapability) {\r\n // TODO: Navigate is a promise. Shouldn't we call then and return of(false) in there?\r\n this.router.navigate(['/403']).then(() => {});\r\n return of(false);\r\n }\r\n return of(true);\r\n }\r\n\r\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable {\r\n return this.userService.getUser(!_.isNil(route.data.forceLoginForm)).pipe(\r\n concatMap(user => {\r\n if (_.isNil(user)) {\r\n return of(false);\r\n }\r\n return this.doesUserHaveCapabilities(user, route);\r\n }));\r\n }\r\n}\r\n","\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
ReportOverview
Agents
View AgentsDisplays Nomination Agents, Invoice Agents and Operator Agents for a customer/operator.
Contracts
Account Contract SummaryDisplays a customer's Accounts, Contracts, Temporary Assignments, Contract Demand and Operational Quantities for a range of gas days.
Contract UtilizationDisplays a customer’s scheduled quantity versus their contract demand quantity and the percentage of their contract demand quantity that has been utilized.
Storage LimitDisplays Injection, Withdrawal and Pooling limits for a customer with STS Account.
Temporary AssignmentDisplays a customer's Temporary Assignments over time, for a range of gas days.
Nominations
Account SummaryAccount summary of customer daily transactions by location, gas day, and cycle. Includes account daily transactions with auto balance results. Provides CV, TVAR, PAL, and CT account opening and closing balances with variances.
Minimum IT Bid RateDisplays the minimum authorized bid rate for a nominated IT path by gas day and cycle.
Title Transfer ReportCustomer buy/sell transactions by gas day and cycle. Provides a counter party matching function.
Transportation SummaryA summary of customer account transportation and non-transportation transactions by gas day and cycle. Provides nominated, authorized and scheduled quantities.
Confirmations
Confirmation HistoryProvides operator receipt and delivery confirmation history by gas day, cycle and location.
Flowing Gas
Account Summary By Location - DailyMonthly Summary of daily account transactions and shipper imbalances. Month to date transaction by account type.
Account Summary By Location - Month EndAccount transactions and imbalances summarized for the month. Month to date transactions by account types.
Location Imbalance ReportDisplay of daily and accumulated imbalance(s) across the system, updating throughout the day allowing customer to balance account within ASQ limit. Provides current OFO status as well as the ability to view historical allocation changes.
Operator BalanceSummary of operator, LDC's balance and applicable fees at interconnect points.
Storage Transportation BalanceSummary of storage transportation balance and excess withdrawal fees. Provides a month to date position or a month end summary.
Transportation Account DetailMonthly nomination group summary; main backup to the TransCanada Mainline invoice. Provides a month to date position or a month end summary.
Uniform Hourly FlowCompares the aggregated Hourly Measurement and Tariff Maximum Hourly Flow Rate for delivery locations.
Volume Energy CompositionContains information on the energy, volume, pressure, temperature and composition of gas by meter station and gas day. Either daily or hourly values can be requested.
Invoicing
Billed Balancing FeesInvoice supplement for balancing fees.
PALS Billing DetailInvoice supplement for PALS billing details.
OFO PenaltiesProvides Operational Flow Order Penalties by shipper and billing month.
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\n\r\n@Component({\r\n selector: 'app-external-report',\r\n templateUrl: './external-report.component.html',\r\n styleUrls: ['./external-report.component.css']\r\n})\r\nexport class ExternalReportComponent implements OnInit {\r\n\r\n constructor(private sessionService: SessionService) { }\r\n\r\n public routeTracker(event) {\r\n const element: Element = (event.target as Element);\r\n const routeName = (element.getAttribute('href') || '').replace('#/', '');\r\n\r\n // Store the selected toue hint for reload/new tab\r\n if (routeName && routeName !== '') {\r\n localStorage.setItem('routeHint', routeName);\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n getPipelineCode(): string {\r\n return this.sessionService.getPipeline().code;\r\n }\r\n\r\n}\r\n","\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n
ReportOverview
Contracts
Contract Demand EnergyContains information on the pricing of Firm contracts for a date range.
Credit
Credit Exposure ReportProvides credit exposure related data including credit rating and credit limits for a customer.
Credit Overage ReportProvides credit availability or overages for all customers.
Credit Report Archive RetrievalProvides archive credit exposure report for a customer.
Nominations
Auto Balancing EventsProvides a record of each auto balancing event (Hub, Capacity Allocation, Location).
Capacity Allocation DetailsProvides a record of Capacity Allocation intermediate results by gas day and cycle.
Custody Transfer Report\r\n Month End Reconciliation Report by Location.
Daily Transportation\r\n Summary for BFPSummarizes the daily transportation by path and service category to see the total volumes being\r\n transported for the gas day or range of gas days.\r\n
IT Bid Floor AverageProvides Bid Floor Average and related data for IT Nominations scheduled during a month.
Flowing Gas
Flowing Gas Transaction ExportTransaction search, filter and export for both transportation and transfer transactions.
Location Imbalance ReportDisplay of daily and accumulated imbalance(s) across the system, updating throughout the day allowing customer to balance account within ASQ limit. Provides current OFO status as well as the ability to view historical allocation changes.
Outstanding Balance ExportSnapshot of outstanding customer account balances for inactive accounts.
NPP Adjustment ExportRecalculates NPP for a gas day range, if the NPP direction is different from the value stored for the Gas Day then non-zero penalties are extracted.
Statistics Canada DownloadSpecific for schedule 4 government reporting.
Storage Transportation Balance SummaryDownload of shipper opening balances either for a month or a range of months.
System BalanceGas account system balance for a billing month. Displayed is opening and closing balances with variances for each account with detailed transactions.
Trend ComplianceSnapshot of pipeline status, ASQ limits as well as customer accumulated imbalances.
Invoicing
Balancing Fees SummarySummary of operator daily and cumulative balancing fees for a given month.
Class of ServiceDemand and commodity by service type for billing month.
Daily Discretionary RevenueMonth to date break down of discretionary revenue.
Demand and Commodity DetailsBreak down of demand and commodity details by service type, shipper and location/path.
Expected PaymentList of all invoice receipts expected payments for a given billing month.
OFO CreditDisplays OFO Credits within a calendar year.
\r\n\r\n\r\n Please Note:\r\n

\r\n Report Status:\r\n
    \r\n
  • Preliminary indicates data is incomplete and could be adjusted for any day in the month.
  • \r\n
  • Final indicates the data is complete for a billing month.
  • \r\n
\r\n Reporting Date Parameters:\r\n
    \r\n
  • Reporting Month is the production month in which gas flowed. It can be equal or prior to the current billing month.
  • \r\n
  • Billing Month is the open billing month a report is run as of. It can be equal or prior to the current billing month.
  • \r\n
  • Current Gas Day will be updated with nomination/measurement data the next day after 11:30 am.
  • \r\n
\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\n\r\n@Component({\r\n selector: 'app-internal-reports',\r\n templateUrl: './internal-reports.component.html',\r\n styleUrls: ['./internal-reports.component.css']\r\n})\r\nexport class InternalReportsComponent implements OnInit {\r\n\r\n constructor(private sessionService: SessionService) { }\r\n\r\n public routeTracker(event) {\r\n const element: Element = (event.target as Element);\r\n const routeName = (element.getAttribute('href') || '').replace('#/', '');\r\n\r\n // Store the selected toue hint for reload/new tab\r\n if (routeName && routeName !== '') {\r\n localStorage.setItem('routeHint', routeName);\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n getPipelineCode(): string {\r\n return this.sessionService.getPipeline().code;\r\n }\r\n\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n {{content.title}}\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n\r\n
\r\n\r\n
\r\n","import {Component, OnInit, ViewChild} from '@angular/core';\r\nimport {UserService} from \"app/shared/services/webapp/user/user-service\";\r\nimport {BaseComponent} from \"app/shared/classes/base-component\";\r\nimport {AppService} from \"app/shared/services/webapp/app/app.service\";\r\nimport {DxTabPanelComponent} from \"devextreme-angular\";\r\nimport {ActivatedRoute, Params} from \"@angular/router\";\r\nimport * as _ from 'lodash';\r\n\r\nexport class ReportsViewModel {\r\n public isInternal: boolean = false;\r\n public useTabs: boolean = false;\r\n}\r\n\r\n@Component({\r\n selector: 'app-reports',\r\n templateUrl: './reports.component.html',\r\n styleUrls: ['./reports.component.css']\r\n\r\n})\r\nexport class ReportsComponent extends BaseComponent implements OnInit {\r\n\r\n model: ReportsViewModel;\r\n tabs = [\r\n {id: 1, title: \"External\", template: \"templateExternal\"},\r\n {id: 2, title: \"Internal\", template: \"templateInternal\"}\r\n ];\r\n defaultTabIndex: number = 0;\r\n\r\n @ViewChild('tabPanel') tabPanel: DxTabPanelComponent;\r\n\r\n constructor(protected appService: AppService,\r\n private userService: UserService,\r\n private activatedRoute: ActivatedRoute) {\r\n super(appService);\r\n }\r\n\r\n ngOnInit() {\r\n super.setTitle(\"Reports\");\r\n\r\n this.model = new ReportsViewModel();\r\n\r\n const user = this.userService.user;\r\n\r\n this.model.isInternal = user.isInternalUser;\r\n this.model.useTabs = user.isInternalUser && !user.isAssumingIdentity;\r\n\r\n this.activatedRoute.params.subscribe((params: Params) => {\r\n const tabParam = params.tab;\r\n if (tabParam) {\r\n const selectedIndex = _.findIndex(this.tabs, t => t.title === tabParam);\r\n this.defaultTabIndex = selectedIndex;\r\n }\r\n });\r\n\r\n this.appService.showMenu();\r\n }\r\n}\r\n","import {Route} from \"@angular/router\";\r\n\r\nimport {AuthorizationService} from \"@shared/services/webapp/authorization/authorization.service\";\r\nimport {ReportsComponent} from \"app/gcts/reporting/reports/reports.component\";\r\n\r\nexport const ReportingRoutes: Route[] = [\r\n {\r\n path: 'reports',\r\n canActivate: [AuthorizationService],\r\n/*\r\n children: [\r\n {path: '', redirectTo:'/reports/external', pathMatch: 'full'},\r\n ],\r\n*/\r\n /*\r\n children: [\r\n {path: '', redirectTo:'external', pathMatch: 'full'},\r\n {path: 'internal', component:ReportsComponent},\r\n {path: 'external', component:ReportsComponent}\r\n ],\r\n */\r\n component: ReportsComponent,\r\n data: {capabilities: [\r\n 'AccountSummary-Read', 'AutoBalanceEvents-Read', 'ConfirmationHistory-Read', 'TitleTransferReport-Read', 'TransportationSummary-Internal-Read', 'TransportationSummary-External-Read',\r\n 'BfpDailyTransportationSummary-Read', 'ITBidFloorAverageReport-Read', 'CreditExposureReport-Read', 'CreditOverageReport-Read', 'ArchivedCreditReport-Read','ViewAgents-Read', 'TemporaryAssignment-Read',\r\n 'OperatorBalanceReport-Read', 'StorageLimit-External-Read', 'TemporaryAssignment-Read','MinimumItBidRate-Read','ContractUtilization-Read', 'AccountContractSummary-Read',\r\n 'AccountSummaryByLocationDaily-Read', 'VolumeEnergyComposition-Read', 'TransportationAccountDetail-Read', 'StorageTransportationBalance-Read', 'UniformHourlyFlow-Read',\r\n 'BilledBalancingFeesReport-Read', 'PalsBillingDetailReport-Read', 'ContractDemandEnergy-Read', 'SystemBalance-Read','BalancingFeesSummaryReport-Read', 'DailyDiscretionaryRevenue-Read',\r\n 'ClassOfServiceReport-Read', 'LocationImbalanceReport-Read', 'OfoPenaltyReport-External-Read','OfoPenaltyReport-Internal-Read'\r\n ]\r\n }\r\n }\r\n];\r\n","import * as _ from \"lodash\";\r\nimport * as moment from 'moment';\r\nimport {IGasDay, IGasMonth} from './gas-day-month.interface';\r\nimport {GasDay} from \"@model/gas-day\";\r\n\r\nexport class GasMonth implements IGasMonth {\r\n // TODO: Rename formats to match phase one terminology\r\n public static ToDisplayFormat = 'YYYY-MMM';\r\n public static ToCidDisplayFormat = 'YYYYMM';\r\n public static MaxGasMonthDisplayValue = '9999-Dec';\r\n public static MaxGasMonthCidDisplayValue = '999912';\r\n\r\n private _isNullDate: boolean;\r\n private _year: number;\r\n public get year(): number {\r\n return this._year;\r\n }\r\n private _month: number;\r\n public get month(): number {\r\n return this._month;\r\n }\r\n\r\n public static fromGasDay(gasDay: IGasDay) {\r\n return new GasMonth(gasDay.year, gasDay.month);\r\n }\r\n\r\n public static from(value: Date): GasMonth {\r\n if (value == null) {\r\n return null;\r\n } else {\r\n const gasMonth = moment(value);\r\n return new GasMonth(gasMonth.year(), gasMonth.month() + 1);\r\n }\r\n }\r\n\r\n public static parse(value: string): GasMonth {\r\n // The moment library does not internally support the YYYY-MMM-DD format\r\n // and thus drops down to using the browser's date parsing. YYYY-MMM-DD\r\n // is not supported by IE, so we make a special case check here and\r\n // fall back to moment if it fails.\r\n if (!value) {\r\n return null;\r\n } else {\r\n const re = /(\\d{2}|\\d{4})[-|/| ](Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)/i;\r\n const match = re.exec(value.toLowerCase());\r\n if (match && match.length === 3) {\r\n const month: number = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'].indexOf(match[2]);\r\n let year = parseInt(match[1], 10);\r\n if (year < 100) {\r\n year += 2000;\r\n }\r\n return new GasMonth(year, month + 1);\r\n }\r\n }\r\n\r\n value = value + '-1';\r\n const date = moment(value);\r\n return new GasMonth(date.year(), date.month() + 1);\r\n }\r\n\r\n public static tryParse(value: string) {\r\n\r\n const regEx = new RegExp(/[1-9]\\d\\d\\d-\\D{3}/);\r\n\r\n if (!regEx.test(value)) {\r\n return false;\r\n }\r\n\r\n const lowerCaseValue = value.toLowerCase();\r\n const re = /(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/;\r\n const match = re.exec(lowerCaseValue);\r\n if (match) {\r\n // Replace mon with the padded number of the month. Moment does not like to parse Mon and reverts to the javascript Date\r\n // constructor. While Chrome's Date implementation knows how to build such a date, IE's does not.\r\n const monthIndex: number = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'].indexOf(match[1]);\r\n const month = monthIndex + 1;\r\n const monthStr = (month < 10 ? '0' : '') + month.toString();\r\n const replaced = lowerCaseValue.replace(match[1], monthStr);\r\n return moment(replaced + '-01').isValid();\r\n }\r\n return false;\r\n }\r\n\r\n constructor(year?: number, month?: number) {\r\n if (year != null && month != null && month >= 1 && month <= 12) {\r\n this._year = year;\r\n this._month = month;\r\n this._isNullDate = false;\r\n } else {\r\n this._isNullDate = true;\r\n }\r\n }\r\n\r\n previous(): GasMonth {\r\n return this.addMonth(-1);\r\n }\r\n\r\n next(): GasMonth {\r\n return this.addMonth(1);\r\n }\r\n\r\n start(): GasDay {\r\n return this._isNullDate ? null : new GasDay(this.year, this.month, 1);\r\n }\r\n\r\n end(): GasDay {\r\n return (this._isNullDate) ? null : this.next().start().addDays(-1);\r\n }\r\n\r\n toString(): string {\r\n return (this._isNullDate) ? null : this.year + '-' + moment.monthsShort()[this.month - 1];\r\n }\r\n\r\n toDisplayFormat(displayEndOfTime: boolean = false): string {\r\n if (this._isNullDate) {\r\n return null;\r\n } else {\r\n const result = this.toMoment().format(GasMonth.ToDisplayFormat);\r\n return !displayEndOfTime && result === GasMonth.MaxGasMonthDisplayValue ? '' : result;\r\n }\r\n }\r\n\r\n toCidDisplayFormat(): string {\r\n if (this._isNullDate) {\r\n return null;\r\n } else {\r\n const result = this.toMoment().format(GasMonth.ToCidDisplayFormat);\r\n return result === GasMonth.MaxGasMonthCidDisplayValue ? '' : result;\r\n }\r\n }\r\n\r\n addMonth(value: number): GasMonth {\r\n if (this._isNullDate) {\r\n return null;\r\n } else {\r\n const gasMonth = this.toMoment().add(value, 'months');\r\n return new GasMonth(gasMonth.year(), gasMonth.month() + 1);\r\n }\r\n }\r\n\r\n get toDate(): Date {\r\n if (this._isNullDate) {\r\n return null;\r\n } else {\r\n return this.toMoment().toDate();\r\n }\r\n }\r\n\r\n set toDate(value: Date) {\r\n if (value == null) {\r\n this._isNullDate = true;\r\n } else {\r\n const date = moment(value);\r\n\r\n this._year = date.year();\r\n this._month = date.month() + 1;\r\n this._isNullDate = false;\r\n }\r\n }\r\n\r\n isNull(): boolean {\r\n return this._isNullDate || isNaN(this.year) || isNaN(this.month);\r\n }\r\n\r\n isEqual(gasMonth: GasMonth): boolean {\r\n if (!gasMonth) { return false; }\r\n return this.year === gasMonth.year &&\r\n this.month === gasMonth.month;\r\n }\r\n\r\n isGreaterThan(gasMonth: GasMonth): boolean {\r\n if(!gasMonth) {return false;}\r\n if(this.year > gasMonth.year) return true;\r\n if(this.year === gasMonth.year && this.month > gasMonth.month) return true;\r\n return false;\r\n }\r\n\r\n isGreaterThanOrEqualTo(gasMonth: GasMonth): boolean {\r\n if(!gasMonth) { return false; }\r\n return this.year >= gasMonth.year && this.month >= gasMonth.month;\r\n }\r\n\r\n isLessThan(gasMonth: GasMonth): boolean {\r\n if(!gasMonth) { return false; }\r\n if(this.year < gasMonth.year) return true;\r\n if(this.year === gasMonth.year && this.month < gasMonth.month) return true;\r\n return false;\r\n }\r\n\r\n isLessThanOrEqualTo(gasMonth: GasMonth): boolean {\r\n if(!gasMonth) { return false; }\r\n return this.year <= gasMonth.year && this.month <= gasMonth.month;\r\n }\r\n\r\n private toMoment() {\r\n return moment([this.year, this.month - 1, 1]);\r\n }\r\n\r\n public static get endOfTime(): GasMonth {\r\n return new GasMonth(9999, 12);\r\n }\r\n\r\n public static isEndOfTime(value: Date | number | string): boolean {\r\n if (_.isString(value) && this.tryParse(value)) {\r\n return this.parse(value).isEqual(this.endOfTime);\r\n } else if (_.isDate(value)) {\r\n return this.from(value).isEqual(this.endOfTime);\r\n }\r\n\r\n return false;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {AbstractResourceService} from \"./abstract-resource.service\";\r\nimport {ConfigService} from \"../services/webapp/configuration/configuration.service\";\r\nimport {UriService} from \"../services/webapp/uri/uri.service\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\n\r\n\r\n@Injectable()\r\nexport class FlowinggasResourceService extends AbstractResourceService {\r\n\r\n constructor(protected httpClient: HttpClient,\r\n private uriService: UriService,\r\n private configService: ConfigService) {\r\n super(httpClient);\r\n }\r\n\r\n getBaseUri(includePipeline: boolean): string {\r\n return this.uriService.getUriWithPipelineAndGateway(this.configService.flowingGasServiceUri, includePipeline);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {Observable} from \"rxjs\";\r\nimport {FlowinggasResourceService} from \"app/shared/resources/flowinggas-resource.service\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {DateTime} from \"@model/date-time\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\n\r\n\r\nexport class BillingProcessRequest {\r\n gasMonth: string;\r\n status: string;\r\n version: string;\r\n}\r\n\r\nexport class BillingProcess {\r\n pipelineName: string;\r\n pipelineSystemName: string;\r\n gasMonth: GasMonth;\r\n processName: string;\r\n status: string;\r\n statusDateTime: DateTime;\r\n version: number;\r\n}\r\n\r\n@Injectable()\r\nexport class FlowingGasAllocationAndBalancingBillingProcessService {\r\n\r\n constructor(private flowinggasResource: FlowinggasResourceService) { }\r\n\r\n // DEPRECATED (use get)\r\n queryAll(gasMonth: string): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('gasMonth', gasMonth);\r\n\r\n return this.flowinggasResource.get('/billingprocess/allocationandbalancing', true, params);\r\n }\r\n\r\n get(gasMonth: GasMonth): Observable {\r\n const params = new GCTSHttpParams();\r\n params.set('gasMonth', gasMonth.toDisplayFormat());\r\n\r\n return this.flowinggasResource.get('/billingprocess/allocationandbalancing', true, params);\r\n }\r\n\r\n update(updateParameters: BillingProcessRequest): Observable {\r\n return this.flowinggasResource.patchWithNoResponseBody('/billingprocess/allocationandbalancing', updateParameters);\r\n }\r\n\r\n // TODO: This should be strongly typed\r\n save(saveParameters: BillingProcessRequest ): Observable {\r\n return this.flowinggasResource.post('/billingprocess/allocationandbalancing', saveParameters);\r\n }\r\n}\r\n","export class BaseViewModel {\r\n showFilterSection: boolean = true;\r\n\r\n public toggleFilterSection(): void {\r\n this.showFilterSection = !this.showFilterSection;\r\n }\r\n}\r\n","import {BillingMonth} from \"@model/billing-month\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {AdjustmentActivity} from \"@shared/services/flowing-gas/flowing-gas-prior-day-pending-activities/flowing-gas-prior-day-pending-activities.service\";\r\nimport {BillingProcess} from \"@shared/services/flowing-gas/flowing-gas-allocation-and-balancing-billing-process/flowing-gas-allocation-and-balancing-billing-process.service\";\r\nimport {InvoiceBillingProcess} from \"@shared/services/invoicing/invoicing-invoice-billing-process/invoicing-invoice-billing-process.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {DateTime} from \"@model/date-time\";\r\nimport {BaseViewModel} from \"@model/base-view-model\";\r\n\r\nexport class ViewBillingMonthModel extends BaseViewModel{\r\n openBillingMonth: BillingMonth;\r\n oldestBillingMonth: BillingMonth;\r\n newestBillingMonth: BillingMonth;\r\n minBillingMonth: GasMonth;\r\n maxBillingMonth: GasMonth;\r\n priorDayProcessing: AdjustmentActivity[];\r\n\r\n searchParams: BillingMonthSearchParams = new BillingMonthSearchParams();\r\n lastSearchParams: BillingMonthSearchParams;\r\n\r\n searchResults: BillingMonthProcessSearchResults = new BillingMonthProcessSearchResults();\r\n billingMonthData: BillingMonthData[];\r\n\r\n statusButtonMessage: string;\r\n allocationStatusMessage: string;\r\n\r\n hasFinalizeSecurity: boolean;\r\n today: DateTime;\r\n}\r\n\r\nexport class BillingMonthSearchParams {\r\n billingMonth: GasMonth;\r\n}\r\n\r\nexport class BillingMonthProcessSearchResults {\r\n billingMonth: BillingMonth;\r\n allocationBalancingProcesses: BillingProcess[];\r\n invoiceProcess: InvoiceBillingProcess;\r\n measurementProcesses: BillingProcess[];\r\n currentGasDay: GasDay;\r\n}\r\n\r\nexport class BillingMonthData {\r\n process: string;\r\n pipelineSystem: string;\r\n status: string;\r\n dateTime: DateTime;\r\n type: string;\r\n version: number;\r\n\r\n constructor(process: string, pipelineSystem: string, status: string, dateTime: DateTime, version: number, type: string) {\r\n this.process = process;\r\n this.pipelineSystem = pipelineSystem;\r\n this.status = status;\r\n this.dateTime = dateTime;\r\n this.type = type;\r\n this.version = version;\r\n }\r\n}\r\n\r\nexport class BillingMonthModalModel {\r\n billingProcess: BillingMonthData;\r\n}\r\n","import * as _ from 'lodash';\r\n\r\nexport class BillingMonthStatus {\r\n public static Closed: BillingMonthStatus = new BillingMonthStatus('closed', 'Closed');\r\n public static Open: BillingMonthStatus = new BillingMonthStatus('open', 'Open');\r\n public static NotOpen: BillingMonthStatus = new BillingMonthStatus('notOpen', 'Not Open');\r\n public static Preliminary: BillingMonthStatus = new BillingMonthStatus('preliminary', 'Preliminary');\r\n\r\n public static Statuses: BillingMonthStatus[] = [\r\n BillingMonthStatus.Closed,\r\n BillingMonthStatus.Open,\r\n BillingMonthStatus.NotOpen,\r\n BillingMonthStatus.Preliminary,\r\n ];\r\n\r\n value: string;\r\n name: string;\r\n\r\n constructor(value: string, name: string) {\r\n this.value = value;\r\n this.name = name;\r\n }\r\n\r\n public static parse(value: string): BillingMonthStatus {\r\n return _.find(this.Statuses, x => x.value.toLowerCase() === value.toLowerCase());\r\n }\r\n}\r\n","import {GasDay} from \"./gas-day\";\r\nimport {GasMonth} from \"./gas-month\";\r\nimport {IBillingMonthResponse} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {BillingMonthStatus} from \"@model/billing-month-status\";\r\nimport {DateTime} from \"@model/date-time\";\r\n\r\nexport class BillingMonth {\r\n pipelineName: string;\r\n gasMonth: GasMonth;\r\n firstDayOfMonth: GasDay;\r\n lastDayOfMonth: GasDay;\r\n status: BillingMonthStatus;\r\n isMigrated: boolean;\r\n closedBy: string;\r\n invoiceIssueDateTime: DateTime;\r\n invoicePaymentDateTime: DateTime;\r\n openedDateTime?: DateTime;\r\n closedDateTime?: DateTime;\r\n version: number;\r\n generateInvoice: boolean;\r\n\r\n static create(dto: IBillingMonthResponse): BillingMonth {\r\n const billingMonth = new BillingMonth();\r\n\r\n billingMonth.pipelineName = dto.pipelineName;\r\n billingMonth.gasMonth = GasMonth.parse(dto.gasMonth);\r\n billingMonth.firstDayOfMonth = GasDay.parse(dto.firstDayOfMonth);\r\n billingMonth.lastDayOfMonth = GasDay.parse(dto.lastDayOfMonth);\r\n billingMonth.status = BillingMonthStatus.parse(dto.status);\r\n billingMonth.isMigrated = dto.isMigrated;\r\n billingMonth.closedBy = dto.closedBy;\r\n billingMonth.invoiceIssueDateTime = DateTime.parse(dto.invoiceIssueDateTime);\r\n billingMonth.invoicePaymentDateTime = DateTime.parse(dto.invoicePaymentDateTime);\r\n billingMonth.openedDateTime = dto.openedDateTime ? DateTime.parse(dto.openedDateTime) : null;\r\n billingMonth.closedDateTime = dto.closedDateTime ? DateTime.parse(dto.closedDateTime) : null;\r\n billingMonth.version = dto.version;\r\n billingMonth.generateInvoice = dto.generateInvoice;\r\n\r\n return billingMonth;\r\n }\r\n\r\n public toDto(): IBillingMonthResponse {\r\n return {\r\n pipelineName: this.pipelineName,\r\n gasMonth: this.gasMonth.toDisplayFormat(),\r\n firstDayOfMonth: this.firstDayOfMonth?.toString(),\r\n lastDayOfMonth: this.lastDayOfMonth?.toString(),\r\n status: this.status?.name,\r\n isMigrated: this.isMigrated,\r\n closedBy: this.closedBy,\r\n invoiceIssueDateTime: this.invoiceIssueDateTime.toString(),\r\n invoicePaymentDateTime: this.invoicePaymentDateTime.toString(),\r\n openedDateTime: this.openedDateTime?.toString(),\r\n closedDateTime: this.closedDateTime?.toString(),\r\n version: this.version,\r\n generateInvoice: this.generateInvoice\r\n } as IBillingMonthResponse;\r\n }\r\n}\r\n\r\n","export enum BillingProcessStatus {\r\n Final,\r\n Finalizing,\r\n UnFinal\r\n}\r\n","import * as _ from 'lodash';\r\nimport {Params} from \"@angular/router\";\r\nimport {GasDay} from \"../gas-day\";\r\nimport {GasMonth} from \"../gas-month\";\r\nimport {DateTime} from \"@model/date-time\";\r\n\r\nexport enum ParamType {\r\n String,\r\n Number,\r\n GasDay,\r\n GasMonth,\r\n Boolean,\r\n List,\r\n DateTime\r\n}\r\n\r\nexport class ParamValidatorRule {\r\n property: string;\r\n paramType: ParamType;\r\n isOptional: boolean;\r\n\r\n constructor(property: string, checkType: ParamType, optional: boolean = false) {\r\n this.property = property;\r\n this.paramType = checkType;\r\n this.isOptional = optional;\r\n }\r\n}\r\n\r\nexport class ListParamValidatorRule extends ParamValidatorRule {\r\n values: string[];\r\n\r\n constructor(property: string, values: string[], optional: boolean = false) {\r\n super(property, ParamType.List, optional);\r\n this.values = values;\r\n }\r\n}\r\n\r\nexport class ParamTypeValidator {\r\n paramType: ParamType;\r\n validator: IParamValidator;\r\n\r\n constructor(paramType: ParamType, validator: IParamValidator) {\r\n this.paramType = paramType;\r\n this.validator = validator;\r\n }\r\n}\r\n\r\nexport interface IParamValidator {\r\n isValid(params: Params, rule: ParamValidatorRule): boolean;\r\n}\r\n\r\nexport class GasMonthValidator implements IParamValidator {\r\n isValid(params: Params, rule: ParamValidatorRule): boolean {\r\n if (_.isEmpty(params[rule.property]) && rule.isOptional) return true;\r\n return GasMonth.tryParse(params[rule.property]);\r\n }\r\n}\r\n\r\nexport class GasDayValidator implements IParamValidator {\r\n isValid(params: Params, rule: ParamValidatorRule): boolean {\r\n if (_.isEmpty(params[rule.property]) && rule.isOptional) return true;\r\n return GasDay.tryParse(params[rule.property], true);\r\n }\r\n}\r\n\r\nexport class StringValidator implements IParamValidator {\r\n isValid(params: Params, rule: ParamValidatorRule): boolean {\r\n if (_.isEmpty(params[rule.property]) && rule.isOptional) return true;\r\n\r\n return !_.isEmpty(params[rule.property]) && !!params[rule.property];\r\n }\r\n}\r\n\r\nexport class NumberValidator implements IParamValidator {\r\n isValid(params: Params, rule: ParamValidatorRule): boolean {\r\n if (_.isEmpty(params[rule.property]) && rule.isOptional) return true;\r\n return !!params[rule.property] && !isNaN(params[rule.property]);\r\n }\r\n}\r\n\r\nexport class BooleanValidator implements IParamValidator {\r\n isValid(params: Params, rule: ParamValidatorRule): boolean {\r\n if (_.isEmpty(params[rule.property]) && rule.isOptional) return true;\r\n if (!params[rule.property]) return false;\r\n const value = params[rule.property].toLowerCase();\r\n return value === 'true' || value === 'false';\r\n }\r\n}\r\n\r\nexport class ListValidator implements IParamValidator {\r\n isValid(params: Params, rule: ListParamValidatorRule): boolean {\r\n if (_.isEmpty(params[rule.property]) && rule.isOptional) return true;\r\n if (!params[rule.property]) return false;\r\n const value = params[rule.property].toLowerCase();\r\n const result = _.find(rule.values, x => x.toLowerCase() === value);\r\n return !!result;\r\n }\r\n}\r\n\r\nexport class DateTimeValidator implements IParamValidator {\r\n isValid(params: Params, rule: ParamValidatorRule): boolean {\r\n if (_.isEmpty(params[rule.property]) && rule.isOptional) return true;\r\n return DateTime.isValid(params[rule.property]);\r\n }\r\n}\r\n\r\nexport class ParamValidator {\r\n paramTypeValidators: ParamTypeValidator[];\r\n rules: ParamValidatorRule[];\r\n\r\n public static Standard(): ParamValidator {\r\n const paramTypeValidators = [\r\n new ParamTypeValidator(ParamType.String, new StringValidator()),\r\n new ParamTypeValidator(ParamType.Number, new NumberValidator()),\r\n new ParamTypeValidator(ParamType.GasDay, new GasDayValidator()),\r\n new ParamTypeValidator(ParamType.GasMonth, new GasMonthValidator()),\r\n new ParamTypeValidator(ParamType.Boolean, new BooleanValidator()),\r\n new ParamTypeValidator(ParamType.List, new ListValidator()),\r\n new ParamTypeValidator(ParamType.DateTime, new DateTimeValidator())\r\n ];\r\n\r\n return new ParamValidator(paramTypeValidators);\r\n }\r\n\r\n public static Custom(paramValidatorTypes: ParamTypeValidator[]): ParamValidator {\r\n return new ParamValidator(paramValidatorTypes);\r\n }\r\n\r\n private constructor(paramTypeValidators: ParamTypeValidator[]) {\r\n this.paramTypeValidators = paramTypeValidators;\r\n this.rules = [];\r\n }\r\n\r\n isString(property: string, isOptional: boolean = false) {\r\n this.addRule(property, ParamType.String, isOptional);\r\n }\r\n\r\n isNumber(property: string, isOptional: boolean = false) {\r\n this.addRule(property, ParamType.Number, isOptional);\r\n }\r\n\r\n isGasDay(property: string, isOptional: boolean = false) {\r\n this.addRule(property, ParamType.GasDay, isOptional);\r\n }\r\n\r\n isGasMonth(property: string, isOptional: boolean = false) {\r\n this.addRule(property, ParamType.GasMonth, isOptional);\r\n }\r\n\r\n isBoolean(property: string, isOptional: boolean = true) {\r\n this.addRule(property, ParamType.Boolean, isOptional);\r\n }\r\n\r\n isOneOf(property: string, values: string[], isOptional: boolean = false) {\r\n this.rules.push(new ListParamValidatorRule(property, values, isOptional));\r\n }\r\n\r\n isDateTime(property: string, isOptional: boolean = false) {\r\n this.addRule(property, ParamType.DateTime, isOptional);\r\n }\r\n\r\n isValid(params: Params): boolean {\r\n for (const rule of this.rules) {\r\n const validator = this.getValidator(rule.paramType);\r\n if (!validator.isValid(params, rule)) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private getValidator(paramType: ParamType): IParamValidator {\r\n for (const validator of this.paramTypeValidators) {\r\n if (validator.paramType === paramType) {\r\n return validator.validator;\r\n }\r\n }\r\n\r\n throw new Error(`Unable to find Validator for Param Type '${paramType}'`);\r\n }\r\n\r\n private addRule(property: string, paramType: ParamType, optional: boolean = false) {\r\n this.rules.push(new ParamValidatorRule(property, paramType, optional));\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\nimport {catchError, map} from \"rxjs/operators\";\r\nimport {Observable, of, throwError} from \"rxjs\";\r\nimport {Injectable} from '@angular/core';\r\nimport {GasMonth} from '@model/gas-month';\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport {CommondataResourceService} from \"@shared/resources/commondata-resource.service\";\r\nimport {BillingMonthStatus} from \"@model/billing-month-status\";\r\n\r\n@Injectable()\r\nexport class CommonDataBillingMonthService {\r\n\r\n constructor(private commonDataResourceService: CommondataResourceService) {\r\n }\r\n\r\n queryAll(): Observable {\r\n return this.commonDataResourceService.get('/billingmonths')\r\n .pipe(\r\n map(dtos => _.map(dtos, dto => BillingMonth.create(dto)))\r\n );\r\n }\r\n\r\n get(gasMonth: GasMonth): Observable {\r\n return this.commonDataResourceService.get(`/billingmonths/${gasMonth.toDisplayFormat()}`)\r\n .pipe(\r\n map(dto => BillingMonth.create(dto))\r\n );\r\n }\r\n\r\n // TODO: Handle 404 (Angular 1 had an interceptor)\r\n getPreliminary(): Observable {\r\n return this.commonDataResourceService.get('/billingmonths/preliminary')\r\n .pipe(\r\n map(dto => BillingMonth.create(dto)),\r\n catchError(error => {\r\n if(error.status === 404) {\r\n return of(null);\r\n }\r\n throwError(error);\r\n })\r\n );\r\n }\r\n\r\n getOpen(): Observable {\r\n return this.commonDataResourceService.get('/billingmonths/open')\r\n .pipe(\r\n map(dto => BillingMonth.create(dto))\r\n );\r\n }\r\n\r\n getOldest(): Observable {\r\n return this.commonDataResourceService.get('/billingmonths/oldest')\r\n .pipe(\r\n map(dto => BillingMonth.create(dto))\r\n );\r\n }\r\n\r\n getNewest(): Observable {\r\n return this.commonDataResourceService.get('/billingmonths/newest')\r\n .pipe(\r\n map(dto => BillingMonth.create(dto))\r\n );\r\n }\r\n\r\n public saveOpen(billingMonth: BillingMonth): Observable {\r\n return this.doSave(billingMonth, BillingMonthStatus.Open);\r\n }\r\n\r\n public doSave(billingMonth: BillingMonth, status: BillingMonthStatus): Observable {\r\n const billingMonthDto = billingMonth.toDto();\r\n billingMonthDto.status = status.value;\r\n return this.commonDataResourceService.post('/billingmonths', billingMonthDto)\r\n .pipe(map(dto => BillingMonth.create(dto)));\r\n }\r\n\r\n public save(billingMonth: BillingMonth): Observable {\r\n return this.doSave(billingMonth, BillingMonthStatus.NotOpen);\r\n }\r\n\r\n update(billingMonth: BillingMonth): Observable {\r\n const billingMonthDto = billingMonth.toDto();\r\n\r\n return this.commonDataResourceService.put(`/billingmonths/${billingMonth.gasMonth.toDisplayFormat()}`, billingMonthDto)\r\n .pipe(\r\n map(dto => BillingMonth.create(dto))\r\n );\r\n }\r\n\r\n public close(billingMonth: BillingMonth): Observable {\r\n const billingMonthDto = billingMonth.toDto();\r\n billingMonthDto.status = BillingMonthStatus.Closed.name;\r\n\r\n return this.commonDataResourceService.put(`/billingmonths/${billingMonth.gasMonth.toDisplayFormat()}`, billingMonthDto)\r\n .pipe(\r\n map(dto => BillingMonth.create(dto))\r\n );\r\n }\r\n}\r\n\r\nexport interface IBillingMonthResponse {\r\n pipelineName: string;\r\n gasMonth: string;\r\n firstDayOfMonth: string;\r\n lastDayOfMonth: string;\r\n status: string;\r\n isMigrated: boolean;\r\n closedBy: string;\r\n invoiceIssueDateTime: string;\r\n invoicePaymentDateTime: string;\r\n openedDateTime?: string;\r\n closedDateTime?: string;\r\n version: number;\r\n generateInvoice: boolean;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {Observable} from \"rxjs\";\r\nimport {FlowinggasResourceService} from \"@shared/resources/flowinggas-resource.service\";\r\nimport {map} from \"rxjs/operators\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport * as _ from \"lodash\";\r\nimport {GasDay} from \"@model/gas-day\";\r\n\r\nexport interface IAdjustmentActivity {\r\n id: string;\r\n affectedGasDay: string;\r\n activity: string;\r\n locationId: string;\r\n nomGroupId: string;\r\n gasAccountId: string;\r\n gasAccountType: string;\r\n customerId: string;\r\n status: string;\r\n}\r\n\r\nexport class AdjustmentActivity {\r\n id: number;\r\n affectedGasDay: GasDay;\r\n activity: string;\r\n locationId: number;\r\n nomGroupId: number;\r\n gasAccountId: number;\r\n gasAccountType: string;\r\n customerId: number;\r\n status: string;\r\n\r\n public static create(dto: IAdjustmentActivity): AdjustmentActivity {\r\n const adjustmentActivity = new AdjustmentActivity();\r\n\r\n adjustmentActivity.id = +dto.id;\r\n adjustmentActivity.affectedGasDay = GasDay.parse(dto.affectedGasDay);\r\n adjustmentActivity.activity = dto.activity;\r\n adjustmentActivity.locationId = +dto.locationId;\r\n adjustmentActivity.nomGroupId = +dto.nomGroupId;\r\n adjustmentActivity.gasAccountId = +dto.gasAccountId;\r\n adjustmentActivity.gasAccountType = dto.gasAccountType;\r\n adjustmentActivity.customerId = +dto.customerId;\r\n adjustmentActivity.status = dto.status;\r\n\r\n return adjustmentActivity;\r\n }\r\n\r\n public convertToDto(): IAdjustmentActivity {\r\n return {\r\n id : this.id.toString(),\r\n affectedGasDay : this.affectedGasDay.toString(),\r\n activity : this.activity,\r\n locationId : this.locationId.toString(),\r\n nomGroupId : this.nomGroupId.toString(),\r\n gasAccountId : this.gasAccountId.toString(),\r\n gasAccountType : this.gasAccountType,\r\n customerId : this.customerId.toString(),\r\n status : this.status\r\n } as IAdjustmentActivity;\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport class FlowingGasPriorDayPendingActivitiesService {\r\n\r\n constructor(private flowingGasResource: FlowinggasResourceService) { }\r\n\r\n public queryAll(searchParams: PriorDayPendingActivitiesRequest): Observable {\r\n return this.flowingGasResource.get('/priordaypendingactivities', true, this.buildUrlSearchParams(searchParams))\r\n .pipe(\r\n map(dtos => dtos.map(dto => AdjustmentActivity.create(dto)))\r\n );\r\n }\r\n\r\n public submitAdjustmentActivities(adjustmentActivities: AdjustmentActivity[]): Observable {\r\n const adjustmentActivityDtos = _.map(adjustmentActivities, x=> x.convertToDto());\r\n return this.flowingGasResource.postWithNoResponseBody('/priordaypendingactivities/submit', adjustmentActivityDtos, true);\r\n }\r\n\r\n public processAdjustmentActivities(adjustmentActivities: AdjustmentActivity[]): Observable {\r\n const adjustmentActivityDtos = _.map(adjustmentActivities, x=> x.convertToDto());\r\n return this.flowingGasResource.postWithNoResponseBody('/priordaypendingactivities/process', adjustmentActivityDtos, true);\r\n }\r\n\r\n private buildUrlSearchParams(searchParams: PriorDayPendingActivitiesRequest): GCTSHttpParams {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n if (!_.isNil(searchParams.activity)) {params.set('activity', searchParams.activity);}\r\n\r\n return params;\r\n }\r\n}\r\n\r\nexport class PriorDayPendingActivitiesRequest {\r\n activity: string;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {AbstractResourceService} from \"./abstract-resource.service\";\r\nimport {ConfigService} from \"../services/webapp/configuration/configuration.service\";\r\nimport {UriService} from \"../services/webapp/uri/uri.service\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\n\r\n@Injectable()\r\nexport class InvoicingResourceService extends AbstractResourceService {\r\n\r\n constructor(protected httpClient: HttpClient,\r\n private uriService: UriService,\r\n private configService: ConfigService) {\r\n super(httpClient);\r\n }\r\n\r\n getBaseUri(includePipeline: boolean): string {\r\n return this.uriService.getUriWithPipelineAndGateway(this.configService.invoicingServiceUri, includePipeline);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {InvoicingResourceService} from \"app/shared/resources/invoicing-resource.service\";\r\nimport {\r\n BillingProcess,\r\n BillingProcessRequest\r\n} from \"app/shared/services/flowing-gas/flowing-gas-allocation-and-balancing-billing-process/flowing-gas-allocation-and-balancing-billing-process.service\";\r\nimport {Observable} from \"rxjs\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {map} from \"rxjs/operators\";\r\n\r\nexport class InvoiceBillingProcessRequest extends BillingProcessRequest {\r\n manualChargesComplete: string;\r\n invoicePrintingComplete: string;\r\n}\r\n\r\nexport class InvoiceBillingProcess extends BillingProcess {\r\n isManualChargesComplete: boolean;\r\n isInvoicePrintingComplete: boolean;\r\n isFinal: boolean;\r\n status: string;\r\n}\r\n\r\nexport interface IInvoiceProcessStatusResponse {\r\n pipelineCode: string;\r\n billingMonth: string;\r\n generateChargesStatus: string;\r\n publishStatus: string;\r\n}\r\n\r\nexport class InvoiceProcessStatus {\r\n pipelineCode: string;\r\n billingMonth: GasMonth;\r\n generateChargesStatus: string;\r\n publishStatus: string;\r\n\r\n public static create(dto: IInvoiceProcessStatusResponse): InvoiceProcessStatus {\r\n const invoiceProcessStatus = new InvoiceProcessStatus();\r\n\r\n invoiceProcessStatus.pipelineCode = dto.pipelineCode;\r\n invoiceProcessStatus.billingMonth = GasMonth.parse(dto.pipelineCode);\r\n invoiceProcessStatus.generateChargesStatus = dto.generateChargesStatus;\r\n invoiceProcessStatus.publishStatus = dto.publishStatus;\r\n\r\n return invoiceProcessStatus;\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport class InvoicingInvoiceBillingProcessService {\r\n\r\n constructor(private invoicingResource: InvoicingResourceService) { }\r\n\r\n // DEPRECATED (use get)\r\n getBillingProcess(gasMonth: string): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('gasMonth', gasMonth);\r\n\r\n return this.invoicingResource.get('/billingprocess/invoice', true, params);\r\n }\r\n\r\n get(gasMonth: GasMonth): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('gasMonth', gasMonth.toDisplayFormat());\r\n\r\n return this.invoicingResource.get('/billingprocess/invoice', true, params);\r\n }\r\n\r\n getInvoiceProcessStatus(gasMonth: GasMonth): Observable {\r\n return this.invoicingResource.get(`/invoiceProcessStatuses/${gasMonth.toString()}`, true)\r\n .pipe(\r\n map(dto => InvoiceProcessStatus.create(dto))\r\n );\r\n }\r\n\r\n update(updateParameters: InvoiceBillingProcessRequest): Observable {\r\n return this.invoicingResource.patchWithNoResponseBody('/billingprocess/invoice', updateParameters);\r\n }\r\n\r\n save(saveParameters: BillingProcessRequest ): Observable {\r\n return this.invoicingResource.postWithNoResponseBody('/billingprocess/invoice', saveParameters);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {Observable} from \"rxjs\";\r\nimport {FlowinggasResourceService} from \"app/shared/resources/flowinggas-resource.service\";\r\nimport {\r\n BillingProcess,\r\n BillingProcessRequest\r\n} from \"app/shared/services/flowing-gas/flowing-gas-allocation-and-balancing-billing-process/flowing-gas-allocation-and-balancing-billing-process.service\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\n\r\n\r\n@Injectable()\r\nexport class FlowingGasMeasurementBillingProcessService {\r\n\r\n constructor(private flowinggasResource: FlowinggasResourceService) { }\r\n\r\n // DEPRECATED (use get)\r\n getMeasurementProcesses(gasMonth: string): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('gasMonth', gasMonth);\r\n\r\n return this.flowinggasResource.get('/billingprocess/measurement', true, params);\r\n }\r\n\r\n get(gasMonth: GasMonth): Observable {\r\n const params = new GCTSHttpParams();\r\n params.set('gasMonth', gasMonth.toDisplayFormat());\r\n\r\n return this.flowinggasResource.get('/billingprocess/measurement', true, params);\r\n }\r\n\r\n update(updateParameters: BillingProcessRequest): Observable {\r\n return this.flowinggasResource.patchWithNoResponseBody('/billingprocess/measurement', updateParameters);\r\n }\r\n\r\n save(saveParameters: BillingProcessRequest ): Observable {\r\n return this.flowinggasResource.postWithNoResponseBody('/billingprocess/measurement', saveParameters);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {Observable} from \"rxjs\";\r\nimport {CommondataResourceService} from \"@shared/resources/commondata-resource.service\";\r\nimport {DateTime} from \"@model/date-time\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {map} from \"rxjs/operators\";\r\n\r\nexport class ApplicationServerTimes {\r\n serverTime: DateTime;\r\n clockTime: DateTime;\r\n centralClockTime: DateTime;\r\n utcClockTime: DateTime;\r\n mstTime: DateTime;\r\n gasDay: DateTime;\r\n}\r\n\r\nexport class IServerTime {\r\n serverTime: string;\r\n clockTime: string;\r\n centralClockTime: string;\r\n utcClockTime: string;\r\n mstTime: string;\r\n gasDay: string;\r\n}\r\n\r\nexport class ServerTimeDataDto {\r\n serverTime: string;\r\n clockTime: string;\r\n centralClockTime: string;\r\n utcClockTime: string;\r\n mstTime: string;\r\n gasDay: string;\r\n}\r\n\r\nexport class ServerTimeData {\r\n serverTime: DateTime;\r\n clockTime: DateTime;\r\n centralClockTime: DateTime;\r\n utcClockTime: DateTime;\r\n mstTime: DateTime;\r\n gasDay: GasDay;\r\n\r\n public static create(dto: ServerTimeDataDto): ServerTimeData {\r\n const serverTimeData = new ServerTimeData();\r\n\r\n serverTimeData.serverTime = DateTime.parse(dto.serverTime);\r\n serverTimeData.clockTime = DateTime.parse(dto.clockTime);\r\n serverTimeData.centralClockTime = DateTime.parse(dto.centralClockTime);\r\n serverTimeData.utcClockTime = DateTime.parse(dto.utcClockTime);\r\n serverTimeData.mstTime = DateTime.parse(dto.mstTime);\r\n serverTimeData.gasDay = GasDay.parse(dto.gasDay);\r\n\r\n return serverTimeData;\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport class CommonDataGasdayService {\r\n\r\n constructor(private commonDataResourceService: CommondataResourceService) { }\r\n\r\n // Deprecated\r\n applicationServerTimes(): Observable {\r\n return this.commonDataResourceService.get('/healthcheck/time', false);\r\n }\r\n\r\n // Deprecated\r\n public serverTime(): Observable {\r\n return this.commonDataResourceService.get('/healthcheck/time', false);\r\n }\r\n\r\n public getServerTimeData(): Observable {\r\n return this.commonDataResourceService.get('/healthcheck/time', false)\r\n .pipe(\r\n map(serverTimeDataDto => ServerTimeData.create(serverTimeDataDto))\r\n );\r\n }\r\n}\r\n","import {Component, forwardRef, Input, Output, ViewChild, EventEmitter} from '@angular/core';\r\nimport {ControlValueAccessor, FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator} from '@angular/forms';\r\nimport {DxDateBoxComponent} from 'devextreme-angular';\r\nimport {GasMonth} from '@model/gas-month';\r\nimport * as _ from 'lodash';\r\nimport {DateTime} from \"@model/date-time\";\r\n\r\ninterface IDisplayFormat {\r\n formatter: (datetime: Date) => string;\r\n parser: (value: string) => Date;\r\n}\r\n\r\n@Component({\r\n selector: 'app-gas-month-picker',\r\n templateUrl: './gas-month-picker.component.html',\r\n styleUrls: ['./gas-month-picker.component.css'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => GasMonthPickerComponent),\r\n multi: true\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => GasMonthPickerComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class GasMonthPickerComponent implements ControlValueAccessor, Validator {\r\n @ViewChild('dateBox') dateBox: DxDateBoxComponent;\r\n private _gasMonthValue: Date;\r\n private isValidValue = true;\r\n displayFormat: IDisplayFormat;\r\n public min: Date;\r\n public max: Date;\r\n private _onChange: () => void;\r\n @Input() placeholder: string = 'Select';\r\n @Input() id: string;\r\n @Input() name: string;\r\n @Input() default: Date;\r\n @Input() disabled: boolean = false;\r\n @Input() applyValueMode: string = 'instantly';\r\n @Input() width: string = \"200\";\r\n @Input() showCalendar: boolean = true;\r\n @Input() set minGasMonth(val: GasMonth) {\r\n if (val) {\r\n this.min = val.toDate;\r\n } else {\r\n this.min = null;\r\n }\r\n }\r\n @Input() set maxGasMonth(val: GasMonth) {\r\n if (val) {\r\n this.max = val.toDate;\r\n } else {\r\n this.max = null;\r\n }\r\n }\r\n\r\n @Input() get isValid(): boolean {\r\n return this.isValidValue;\r\n }\r\n set isValid(val: boolean) {\r\n if (val === undefined) {\r\n // This means that the form didn't set an initial\r\n // state for isValid. Interpret it as true.\r\n val = true;\r\n }\r\n if (this.isValidValue !== val) {\r\n if (val && this.value != null) {\r\n // If the user types in an invalid date, the date control sets\r\n // isValid to false but does not change our bound value property. If\r\n // isValid is now being set to true, it means that either the user entered\r\n // a valid date, in which case everything works fine, or they pressed the\r\n // Reset button on the form. In this latter case, the form sets our\r\n // value property to its stored date and isValid to true. However, since\r\n // the date control didn't change our value property when the user entered\r\n // the invalid date, setting value to the stored date doesn't actually\r\n // change anything, so our value setter is not called. This means the\r\n // date control is left in a valid state (no error message) but with the\r\n // text of the invalid date. To work around this, we check the control's\r\n // text to see if it is different from what we think it is.\r\n const dt = this.value;\r\n const formattedDate = this.dateFormatter(dt);\r\n if (this.dateBox.value.valueOf() === this.value.valueOf() && this.dateBox.text !== formattedDate) {\r\n this.dateBox.value = null;\r\n this.dateBox.value = dt;\r\n }\r\n }\r\n this.isValidValue = val;\r\n this.isValidChange.emit(this.isValidValue);\r\n }\r\n }\r\n @Output() isValidChange = new EventEmitter();\r\n\r\n get value(): Date {\r\n return this._gasMonthValue;\r\n }\r\n\r\n set value(val: Date) {\r\n if (!DateTime.isSame(val, this._gasMonthValue)) {\r\n this._gasMonthValue = val;\r\n this.propagateChange(GasMonth.from(this._gasMonthValue));\r\n }\r\n\r\n this.isValidValue = true;\r\n }\r\n\r\n propagateChange = (_gasMonth: GasMonth) => {};\r\n onTouchedCallback = () => {};\r\n\r\n dateFormatter = (dateTime: Date): string => {\r\n return GasMonth.from(dateTime).toDisplayFormat(true);\r\n };\r\n\r\n dateParser = (value: string): Date => {\r\n return GasMonth.parse(value).toDate;\r\n };\r\n\r\n constructor() {\r\n this.displayFormat = {\r\n formatter: this.dateFormatter,\r\n parser: this.dateParser\r\n };\r\n }\r\n\r\n writeValue(value: any) {\r\n if(_.isNil(value)) {\r\n this.value = null;\r\n } else if (value !== undefined) {\r\n if (value instanceof GasMonth) {\r\n this.value = value.toDate;\r\n } else if (value instanceof Date) {\r\n this.value = value;\r\n }\r\n }\r\n }\r\n\r\n registerOnChange(fn) {\r\n this.propagateChange = fn;\r\n }\r\n\r\n registerOnTouched(fn) {\r\n this.onTouchedCallback = fn;\r\n }\r\n\r\n onOpened() {\r\n // if the date box has no value and a default is present, then set the calendar to the default date\r\n if (!this.dateBox.value && this.default)\r\n {\r\n this.dateBox.value = this.default;\r\n }\r\n // if the date box has a value, it is end of time, and a default is present, then set the calendar to the default date\r\n // (so the user doesn't have to scroll all the way to today's date)\r\n else if(GasMonth.isEndOfTime(this.dateBox.value) && this.default)\r\n {\r\n this.dateBox.value = this.default;\r\n }\r\n const element: HTMLElement = document.querySelector('.dx-button-today .dx-button-text');\r\n if (!_.isNil(element)) {\r\n element.textContent = \"Current\";\r\n }\r\n }\r\n\r\n focus(): void {\r\n this.dateBox.instance.focus();\r\n }\r\n\r\n reset(): void {\r\n this.dateBox.instance.reset();\r\n }\r\n\r\n registerOnValidatorChange(fn: () => void): void { this._onChange = fn; }\r\n\r\n validate(c: FormControl): ValidationErrors {\r\n return this.isValidValue ? null : {valid: this.isValidValue};\r\n }\r\n}\r\n","\r\n\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {IGasMonth} from \"@model/gas-day-month.interface\";\r\n\r\n@Pipe({\r\n name: 'gasMonthFormat'\r\n})\r\nexport class GasMonthFormatPipe implements PipeTransform {\r\n\r\n transform(value: IGasMonth): string {\r\n if (value) {\r\n return value.toDisplayFormat();\r\n }\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'whenEmptyUse'\r\n})\r\nexport class WhenEmptyUsePipe implements PipeTransform {\r\n\r\n transform(value: any, other: any): any {\r\n return !value ? other : value;\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Billing Month: {{model.lastSearchParams?.billingMonth | gasMonthFormat}}\r\n Status: {{model.searchResults.billingMonth?.status.name}}\r\n Migrated: {{model.searchResults.billingMonth?.isMigrated? 'Yes':'No'}}\r\n Invoice Issue Date: {{model.searchResults.billingMonth?.invoiceIssueDateTime?.toDate() | dateFormat:'YYYY-MMM-DD'}} \r\n Closed On: {{model.searchResults.billingMonth?.closedDateTime?.toDate() | dateFormat:'YYYY-MMM-DD' | whenEmptyUse: '-'}}\r\n Invoice Payment Date: {{model.searchResults.billingMonth?.invoicePaymentDateTime?.toDate() | dateFormat:'YYYY-MMM-DD'}}\r\n Closed By: {{model.searchResults.billingMonth?.closedBy | whenEmptyUse: '-'}}\r\n Calculate Revenue: {{model.searchResults.billingMonth?.generateInvoice | whenEmptyUse: '-'}}\r\n \r\n
\r\n\r\n \r\n Are you sure you want to change the process status?\r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n\r\n
\r\n {{model.lastSearchParams?.billingMonth | gasMonthFormat}}\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.searchResults.billingMonth?.status.name}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.searchResults.billingMonth?.isMigrated? 'Yes':'No'}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.searchResults.billingMonth?.invoiceIssueDateTime?.toDate() | dateFormat:'YYYY-MMM-DD'}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.searchResults.billingMonth?.closedDateTime?.toDate() | dateFormat:'YYYY-MMM-DD' | whenEmptyUse: '-'}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.searchResults.billingMonth?.invoicePaymentDateTime?.toDate() | dateFormat:'YYYY-MMM-DD' }}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.searchResults.billingMonth?.closedBy | whenEmptyUse: '-'}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.searchResults.billingMonth?.generateInvoice? 'Yes':'No' }}\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n \r\n {{cellInfo.displayValue}}\r\n \r\n
\r\n \r\n\r\n \r\n
\r\n {{model.allocationStatusMessage}}\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n","import {forkJoin, Observable, of} from 'rxjs';\r\nimport * as _ from 'lodash';\r\nimport {Component, OnInit, ViewChild} from '@angular/core';\r\nimport {ActivatedRoute, Params, Router} from '@angular/router';\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {CommonDataBillingMonthService} from '@shared/services/common-data/common-data-billing-month/common-data-billing-month.service';\r\nimport {GasMonth} from '@model/gas-month';\r\nimport {AdjustmentActivity, FlowingGasPriorDayPendingActivitiesService, PriorDayPendingActivitiesRequest} from '@shared/services/flowing-gas/flowing-gas-prior-day-pending-activities/flowing-gas-prior-day-pending-activities.service';\r\nimport {DateTime} from '@model/date-time';\r\nimport {GasDay} from '@model/gas-day';\r\nimport {\r\n BillingProcess,\r\n BillingProcessRequest,\r\n FlowingGasAllocationAndBalancingBillingProcessService\r\n} from '@shared/services/flowing-gas/flowing-gas-allocation-and-balancing-billing-process/flowing-gas-allocation-and-balancing-billing-process.service';\r\nimport {InvoiceBillingProcess, InvoicingInvoiceBillingProcessService} from '@shared/services/invoicing/invoicing-invoice-billing-process/invoicing-invoice-billing-process.service';\r\nimport {FlowingGasMeasurementBillingProcessService} from '@shared/services/flowing-gas/flowing-gas-measurement-billing-process/flowing-gas-measurement-billing-process.service';\r\nimport {ApplicationServerTimes, CommonDataGasdayService, ServerTimeData} from \"@shared/services/common-data/common-data-gasday/common-data-gasday.service\";\r\nimport {AlertService} from \"app/shared/services/webapp/alert/alert.service\";\r\nimport {BillingMonthData, BillingMonthModalModel, ViewBillingMonthModel} from \"app/gcts/administration/billing-month/billing-month.model\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport {catchError, concatMap, tap} from \"rxjs/operators\";\r\nimport {BillingMonthStatus} from \"@model/billing-month-status\";\r\nimport {BillingProcessStatus} from \"@model/billing-process-status\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {ModalComponent} from \"@shared/components/modal/modal.component\";\r\nimport {CapabilitiesService} from \"@shared/services/webapp/capabilities/capabilities.service\";\r\nimport {UserService} from \"@shared/services/webapp/user/user-service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {DxTooltipComponent} from \"devextreme-angular\";\r\nimport {on} from \"devextreme/events\";\r\nimport {BaseComponent} from \"@model/base-component\";\r\n\r\n@Component({\r\n selector: 'app-billing-month',\r\n templateUrl: './billing-month.component.html',\r\n styleUrls: ['./billing-month.component.css']\r\n})\r\nexport class BillingMonthComponent extends BaseComponent implements OnInit {\r\n public static readonly PARAM_MONTH: string = 'month';\r\n\r\n public model: ViewBillingMonthModel = new ViewBillingMonthModel();\r\n public modalModel: BillingMonthModalModel = new BillingMonthModalModel();\r\n\r\n @ViewChild(ModalComponent) yesNoSubmitModal: ModalComponent;\r\n @ViewChild(DxTooltipComponent) tooltip: DxTooltipComponent;\r\n\r\n constructor(protected appService: AppService,\r\n protected router: Router,\r\n protected activatedRoute: ActivatedRoute,\r\n protected alertService: AlertService,\r\n private commonDataBillingMonthService: CommonDataBillingMonthService,\r\n private flowingGasPriorDayPendingActivitiesService: FlowingGasPriorDayPendingActivitiesService,\r\n private flowingGasAllocationAndBalancingBillingProcessService: FlowingGasAllocationAndBalancingBillingProcessService,\r\n private invoicingInvoiceBillingProcessService: InvoicingInvoiceBillingProcessService,\r\n private flowingGasMeasurementBillingProcessService: FlowingGasMeasurementBillingProcessService,\r\n private commonDataGasDayService: CommonDataGasdayService,\r\n private capabilitiesService: CapabilitiesService,\r\n private userService: UserService,\r\n private sessionService: SessionService) {\r\n super(appService);\r\n }\r\n\r\n searchClicked(): void {\r\n this.alertService.clearMessages();\r\n this.router.navigate([], {queryParams: this.buildQueryParams()}).then(() => {});\r\n this.ngOnInit();\r\n }\r\n\r\n resetClicked(): void {\r\n this.alertService.clearMessages();\r\n this.router.navigate([]).then(() => {});\r\n }\r\n\r\n public formatDateTime(obj: Date): string {\r\n return new DateTime(obj).toDisplayFormat();\r\n }\r\n\r\n public billingMonthStatusTextColor(cellInfo: any): string {\r\n return this.model.searchResults.billingMonth?.status.name !== BillingMonthStatus.Open.name\r\n ? 'black' :\r\n cellInfo.data.status === BillingProcessStatus[BillingProcessStatus.UnFinal] ?\r\n 'red':\r\n '#799b3e';\r\n }\r\n\r\n public buttonStatusClicked(cellInfo: any): void {\r\n this.modalModel = new BillingMonthModalModel();\r\n this.modalModel.billingProcess = cellInfo.data as BillingMonthData;\r\n this.yesNoSubmitModal.show();\r\n }\r\n\r\n public submitStatusChange(modalModel: BillingMonthModalModel): void {\r\n const final = BillingProcessStatus[BillingProcessStatus.Final];\r\n const unfinal = BillingProcessStatus[BillingProcessStatus.UnFinal];\r\n const changeToStatus = modalModel.billingProcess?.status === final ? unfinal : final;\r\n\r\n const billingProcessRequest = new BillingProcessRequest();\r\n billingProcessRequest.gasMonth = this.model.openBillingMonth.gasMonth.toString();\r\n billingProcessRequest.status = changeToStatus;\r\n billingProcessRequest.version = (_.isNil(modalModel.billingProcess?.version) ? 1 : modalModel.billingProcess?.version).toString();\r\n\r\n this.model.statusButtonMessage = null;\r\n this.model.allocationStatusMessage = null;\r\n\r\n if (modalModel.billingProcess?.process === 'Measurement') {\r\n this.updateMeasurementStatus(billingProcessRequest);\r\n } else if (modalModel.billingProcess?.process === 'Allocations and Balancing') {\r\n this.updateAllocationAndBalancingStatus(billingProcessRequest);\r\n }\r\n }\r\n\r\n public addClicked() {\r\n this.alertService.clearMessages();\r\n this.router.navigate(['/app', this.getPipelineCode(), 'billingMonths', 'add']).then(() => {});\r\n }\r\n\r\n public editClicked() {\r\n this.alertService.clearMessages();\r\n const billingGasMonth = this.model.lastSearchParams?.billingMonth.toString();\r\n this.router.navigate(['/app', this.getPipelineCode(), 'billingMonths', `${billingGasMonth}`, 'edit']).then(() => {});\r\n }\r\n\r\n public isClosedBillingMonth(): boolean {\r\n return this.model.searchResults?.billingMonth?.status.name === BillingMonthStatus.Closed.name;\r\n }\r\n\r\n public onCellPrepared(onCellPrepareEvent: any): void {\r\n if (onCellPrepareEvent.rowType === 'data' && onCellPrepareEvent.column.dataField === 'status') {\r\n const currentBillingMonthData = onCellPrepareEvent.data as BillingMonthData;\r\n\r\n if (currentBillingMonthData.type !== 'text' || currentBillingMonthData.process !== 'Allocations and Balancing' || _.isNil(this.model.allocationStatusMessage)) {\r\n return;\r\n }\r\n\r\n on(onCellPrepareEvent.cellElement, \"mouseover\", arg => {\r\n this.tooltip.instance.show(arg.target);\r\n });\r\n\r\n on(onCellPrepareEvent.cellElement, \"mouseout\", arg => {\r\n this.tooltip.instance.hide();\r\n });\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n super.setTitle('Billing Month');\r\n this.model.hasFinalizeSecurity = this.capabilitiesService.hasCapabilities(['BillingMonth-FinalizeMeasurement-Write',\r\n 'BillingMonth-FinalizeAllocationAndBalancing-Write'], this.userService.user, this.sessionService.getPipeline().code);\r\n const getOpenBillingMonth$ = this.commonDataBillingMonthService.getOpen().pipe(\r\n tap(openBillingMonth => this.model.openBillingMonth = openBillingMonth)\r\n );\r\n const getOldestBillingMonth$ = this.commonDataBillingMonthService.getOldest().pipe(\r\n tap(oldestBillingMonth => {\r\n this.model.oldestBillingMonth = oldestBillingMonth;\r\n this.model.minBillingMonth = oldestBillingMonth.gasMonth;\r\n })\r\n );\r\n const getNewestBillingMonth$ = this.commonDataBillingMonthService.getNewest().pipe(\r\n tap(newestBillingMonth => {\r\n this.model.newestBillingMonth = newestBillingMonth;\r\n this.model.maxBillingMonth = newestBillingMonth.gasMonth;\r\n })\r\n );\r\n const priorDayPendingActivitiesRequest = {activity: null} as PriorDayPendingActivitiesRequest;\r\n const queryAllAdjustmentActivities$ = this.flowingGasPriorDayPendingActivitiesService.queryAll(priorDayPendingActivitiesRequest).pipe(\r\n tap(adjustmentActivities => this.model.priorDayProcessing = adjustmentActivities)\r\n );\r\n const time$ = this.commonDataGasDayService.getServerTimeData()\r\n .pipe(tap((time:ServerTimeData) => this.model.today = time.clockTime));\r\n\r\n forkJoin([time$, getOpenBillingMonth$, getOldestBillingMonth$, getNewestBillingMonth$, queryAllAdjustmentActivities$])\r\n .pipe(catchError(e => {\r\n console.error(e);\r\n const currentMonth = new BillingMonth();\r\n currentMonth.gasMonth = GasMonth.from(this.model.today.toDate());\r\n this.model.openBillingMonth = currentMonth;\r\n return of({});\r\n }))\r\n .subscribe(() => {\r\n const queryMonth = this.activatedRoute.snapshot.queryParams[BillingMonthComponent.PARAM_MONTH];\r\n if (queryMonth && this.areParamsValid(this.activatedRoute.snapshot.queryParams)) {\r\n this.model.searchParams.billingMonth = GasMonth.parse(queryMonth);\r\n } else {\r\n this.model.searchParams.billingMonth = this.model.openBillingMonth.gasMonth;\r\n }\r\n this.loadSearchResources().subscribe(() => {})\r\n });\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {};\r\n params[BillingMonthComponent.PARAM_MONTH] = this.model.searchParams.billingMonth.toString();\r\n return params;\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n const paramValidator = ParamValidator.Standard();\r\n paramValidator.isGasMonth(BillingMonthComponent.PARAM_MONTH);\r\n return paramValidator.isValid(params);\r\n }\r\n protected loadSearchResources(): Observable {\r\n return this.performSearchForBillingMonth(this.model.searchParams.billingMonth);\r\n }\r\n\r\n private updateMeasurementStatus(billingProcessRequest: BillingProcessRequest): void {\r\n this.flowingGasMeasurementBillingProcessService.update(billingProcessRequest)\r\n .pipe(\r\n concatMap(() => this.loadSearchResources())\r\n )\r\n .subscribe(() => {});\r\n }\r\n\r\n private updateAllocationAndBalancingStatus(billingProcessRequest: BillingProcessRequest): void {\r\n this.flowingGasAllocationAndBalancingBillingProcessService.update(billingProcessRequest)\r\n .pipe(\r\n concatMap(() => this.loadSearchResources())\r\n )\r\n .subscribe(() => {});\r\n }\r\n\r\n private performSearchForBillingMonth(requestBillingGasMonth: GasMonth): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n\r\n const getBillingMonth$ = this.commonDataBillingMonthService.get(requestBillingGasMonth).pipe(\r\n tap(billingMonth => this.model.searchResults.billingMonth = billingMonth)\r\n );\r\n\r\n const getAllocationBalancingProcesses$ = this.flowingGasAllocationAndBalancingBillingProcessService.get(requestBillingGasMonth).pipe(\r\n tap(billingProcesses => this.model.searchResults.allocationBalancingProcesses = billingProcesses)\r\n );\r\n\r\n const getInvoiceBillingProcess$ = this.invoicingInvoiceBillingProcessService.get(requestBillingGasMonth).pipe(\r\n tap(invoiceProcess => this.model.searchResults.invoiceProcess = invoiceProcess)\r\n );\r\n\r\n const getMeasurementProcesses$ = this.flowingGasMeasurementBillingProcessService.get(requestBillingGasMonth).pipe(\r\n tap(measurementProcesses => this.model.searchResults.measurementProcesses = measurementProcesses)\r\n );\r\n\r\n const getApplicationServerTimes$ = this.commonDataGasDayService.applicationServerTimes().pipe(\r\n tap(applicationTimes => this.model.searchResults.currentGasDay = GasDay.parse(applicationTimes.clockTime.toString()))\r\n );\r\n\r\n return forkJoin([getBillingMonth$, getAllocationBalancingProcesses$, getInvoiceBillingProcess$, getMeasurementProcesses$, getApplicationServerTimes$])\r\n .pipe(\r\n tap(() => {\r\n this.model.billingMonthData = this.buildBillingMonthData();\r\n })\r\n );\r\n }\r\n\r\n private buildBillingMonthData(): BillingMonthData[] {\r\n const measurementProcess = this.model.searchResults.measurementProcesses[0];\r\n const allocations = this.model.searchResults.allocationBalancingProcesses[0];\r\n const invoice = this.model.searchResults.invoiceProcess;\r\n\r\n const measurementButtonEnabled = this.measurementButtonIsEnabled(allocations, invoice);\r\n const allocationButtonEnabled = this.allocationsButtonIsEnabled(measurementProcess, allocations, invoice);\r\n\r\n if (this.isPriorDayProcessingIncomplete(allocations)) {\r\n this.model.allocationStatusMessage = 'Prior Day Processing is incomplete';\r\n }\r\n\r\n if (measurementProcess.status !== BillingProcessStatus[BillingProcessStatus.Final]) {\r\n this.model.allocationStatusMessage = 'Measurement must be finalized';\r\n }\r\n\r\n const billingMonthData = new Array();\r\n billingMonthData.push(new BillingMonthData(measurementProcess.processName, measurementProcess.pipelineSystemName, measurementProcess.status, measurementProcess.statusDateTime, measurementProcess.version, this.buildType(measurementButtonEnabled)));\r\n billingMonthData.push(new BillingMonthData(allocations.processName, allocations.pipelineSystemName, allocations.status, allocations.statusDateTime, allocations.version, this.buildType(allocationButtonEnabled)));\r\n billingMonthData.push(new BillingMonthData(invoice.processName, invoice.pipelineSystemName, invoice.status, invoice.statusDateTime, invoice.version, this.buildType(false)));\r\n\r\n return billingMonthData;\r\n }\r\n\r\n private buildType(buttonCondition: boolean): string {\r\n return buttonCondition ? 'button' : 'text';\r\n }\r\n\r\n private gasDayIsInOpenBillingMonth(gasDay: GasDay): boolean {\r\n const openBillingMonth = this.model.openBillingMonth;\r\n return gasDay.isInRangeOf(openBillingMonth.firstDayOfMonth, openBillingMonth.lastDayOfMonth);\r\n }\r\n\r\n private isPriorDayProcessingIncomplete(allocationBalancingProcesses: BillingProcess): boolean {\r\n const currentPriorDayProcessing =\r\n _.filter(this.model.priorDayProcessing, x => this.gasDayIsInOpenBillingMonth(x.affectedGasDay) && x.status !== 'Processed');\r\n\r\n const hasPriorDayProcessing = !_.isEmpty(currentPriorDayProcessing);\r\n\r\n return hasPriorDayProcessing && allocationBalancingProcesses.status === BillingProcessStatus[BillingProcessStatus.UnFinal];\r\n }\r\n\r\n private measurementButtonIsEnabled(allocationBalancingProcesses: BillingProcess, invoiceProcess: InvoiceBillingProcess): boolean {\r\n this.model.statusButtonMessage = 'This button will be enabled when the calendar day is outside of the billing month';\r\n\r\n const billingMonth = this.model.searchResults.billingMonth;\r\n\r\n return billingMonth.status.name === BillingMonthStatus.Open.name &&\r\n !this.gasDayIsInOpenBillingMonth(this.model.searchResults.currentGasDay) &&\r\n allocationBalancingProcesses.status !== BillingProcessStatus[BillingProcessStatus.Final] &&\r\n allocationBalancingProcesses.status !== BillingProcessStatus[BillingProcessStatus.Finalizing] &&\r\n invoiceProcess.status !== BillingProcessStatus[BillingProcessStatus.Final];\r\n }\r\n\r\n private allocationsButtonIsEnabled(measurementProcesses: BillingProcess, allocationBalancingProcesses: BillingProcess, invoiceProcess: InvoiceBillingProcess): boolean {\r\n const billingMonth = this.model.searchResults.billingMonth;\r\n\r\n return billingMonth.status.name === BillingMonthStatus.Open.name &&\r\n !this.gasDayIsInOpenBillingMonth(this.model.searchResults.currentGasDay) &&\r\n !this.isPriorDayProcessingIncomplete(allocationBalancingProcesses) &&\r\n measurementProcesses.status === BillingProcessStatus[BillingProcessStatus.Final] &&\r\n allocationBalancingProcesses.status !== BillingProcessStatus[BillingProcessStatus.Finalizing] &&\r\n invoiceProcess.status !== BillingProcessStatus[BillingProcessStatus.Final];\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {UriService} from \"../services/webapp/uri/uri.service\";\r\nimport {AbstractResourceService} from \"./abstract-resource.service\";\r\nimport {ConfigService} from \"../services/webapp/configuration/configuration.service\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\n\r\n@Injectable()\r\nexport class ScheduledJobsResourceService extends AbstractResourceService {\r\n\r\n constructor(protected httpClient: HttpClient,\r\n private uriService: UriService,\r\n private configService: ConfigService) {\r\n super(httpClient);\r\n }\r\n\r\n getBaseUri(includePipeline: boolean): string {\r\n return this.uriService.getUriWithPipelineAndGateway(this.configService.scheduledJobsServiceUri, includePipeline);\r\n }\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {ScheduledJobsResourceService} from \"@shared/resources/scheduledjobs-resource.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {JobType} from \"@model/job-type\";\r\nimport {Observable} from \"rxjs\";\r\nimport {DateTime} from \"@model/date-time\";\r\n\r\nexport class ScheduledJobType {\r\n key: string;\r\n displayName: string;\r\n jobRunParam: number;\r\n pipelineCodes: string[];\r\n}\r\n\r\nexport class ScheduledJob {\r\n id: string;\r\n effectiveDate: GasDay;\r\n intervalType: string;\r\n dayToRun: GasDay;\r\n timeToRun: DateTime;\r\n timeZone: string;\r\n jobKey: string;\r\n}\r\n\r\nexport class JobSchedulerStatus {\r\n status: string;\r\n}\r\n\r\nexport class UpdateScheduledJobRequest {\r\n id: string;\r\n effectiveDate: string;\r\n intervalType: string;\r\n dayToRun: string;\r\n timeToRun: string;\r\n timeZone: string;\r\n jobKey: string;\r\n}\r\n\r\nexport class Status {\r\n status: string;\r\n}\r\n\r\n@Injectable()\r\nexport class ScheduledJobsService {\r\n private scheduledJobsUri = '/scheduledJobs';\r\n\r\n constructor(private scheduledJobsResource: ScheduledJobsResourceService) {\r\n }\r\n\r\n getScheduledJobs(jobCategory: string): Observable {\r\n return this.scheduledJobsResource.get(this.scheduledJobsUri + '/' + jobCategory);\r\n }\r\n\r\n queryAllJobTypes(jobCategory: string): Observable {\r\n return this.scheduledJobsResource.get(this.scheduledJobsUri + '/jobtypes/' + jobCategory);\r\n }\r\n\r\n getScheduledJobTypes(jobCategory: string): Observable {\r\n return this.scheduledJobsResource.get(this.scheduledJobsUri + '/scheduledjobtypes/' + jobCategory);\r\n }\r\n\r\n runJob(id: string): Observable {\r\n return this.scheduledJobsResource.postWithNoResponseBody(this.scheduledJobsUri + '/' + id + '/run', null);\r\n }\r\n\r\n getJobSchedulerStatus(jobCategory: string): Observable {\r\n return this.scheduledJobsResource.get('/scheduledjobs/status/' + jobCategory);\r\n }\r\n\r\n pause(jobCategory: string): Observable {\r\n return this.scheduledJobsResource.postWithNoResponseBody(this.scheduledJobsUri + '/pause/' + jobCategory, null);\r\n }\r\n\r\n resume(jobCategory: string): Observable {\r\n return this.scheduledJobsResource.postWithNoResponseBody(this.scheduledJobsUri + '/resume/' + jobCategory, null);\r\n }\r\n\r\n deleteJob(id: string): Observable {\r\n return this.scheduledJobsResource.putWithNoResponseBody(this.scheduledJobsUri + '/' + id + '/delete', null);\r\n }\r\n\r\n saveJob(scheduledJob: ScheduledJob, jobCategory: string): Observable {\r\n const body = {\r\n effectiveDate: scheduledJob.effectiveDate ? scheduledJob.effectiveDate.toString() : null,\r\n intervalType: scheduledJob.intervalType,\r\n dayToRun: scheduledJob.dayToRun ? scheduledJob.dayToRun : \"\",\r\n timeToRun: scheduledJob.timeToRun ? scheduledJob.timeToRun.toTimeString() : null,\r\n timeZone: scheduledJob.timeZone,\r\n jobKey: scheduledJob.jobKey\r\n };\r\n return this.scheduledJobsResource.postWithNoResponseBody(this.scheduledJobsUri + '/' + jobCategory, body);\r\n }\r\n\r\n updateJob(scheduledJob: ScheduledJob): Observable {\r\n const body = {\r\n id: scheduledJob.id,\r\n effectiveDate: scheduledJob.effectiveDate ? scheduledJob.effectiveDate.toString() : null,\r\n intervalType: scheduledJob.intervalType,\r\n dayToRun: scheduledJob.dayToRun ? scheduledJob.dayToRun : \"\",\r\n timeToRun: scheduledJob.timeToRun ? scheduledJob.timeToRun.toTimeString() : null,\r\n timeZone: scheduledJob.timeZone,\r\n jobKey: scheduledJob.jobKey\r\n };\r\n\r\n return this.scheduledJobsResource.putWithNoResponseBody(this.scheduledJobsUri + `/${scheduledJob.id}`, body);\r\n }\r\n}\r\n","import * as _ from \"lodash\";\r\n\r\nexport class GctsProcess {\r\n public static readonly AfterFlow: GctsProcess = new GctsProcess('After Flow', 'AfterFlow', ['ML','GLC','CGL']);\r\n public static readonly Nominations: GctsProcess = new GctsProcess('Nominations', 'Nominations',['ML','GLC','CGL']);\r\n public static readonly Contracts: GctsProcess = new GctsProcess('Contracts', 'Contracts',['ML','GLC','CGL']);\r\n public static readonly Credit: GctsProcess = new GctsProcess('Credit', 'Credit',['ML','GLC']);\r\n\r\n public static readonly All: GctsProcess[] = [\r\n GctsProcess.AfterFlow,\r\n GctsProcess.Nominations,\r\n GctsProcess.Contracts,\r\n GctsProcess.Credit\r\n ];\r\n\r\n name: string;\r\n value: string;\r\n pipelines : string[];\r\n\r\n constructor(name: string, value: string, pipelines: string[]) {\r\n this.name = name;\r\n this.value = value;\r\n this.pipelines = pipelines;\r\n }\r\n public static byPipeline(pipeline: string) : GctsProcess[] {\r\n return _.filter(this.All, c => _.includes(c.pipelines, pipeline));\r\n }\r\n}\r\n","import {Component, forwardRef, Input, Output, ViewChild, EventEmitter, ChangeDetectorRef, ElementRef} from '@angular/core';\r\nimport {\r\n ControlValueAccessor, FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors,\r\n Validator\r\n} from '@angular/forms';\r\nimport {GasDay} from '@model/gas-day';\r\nimport {DxDateBoxComponent} from 'devextreme-angular';\r\nimport {DateTime} from \"@model/date-time\";\r\nimport * as _ from 'lodash';\r\n\r\ninterface IDisplayFormat {\r\n formatter: (Date) => string;\r\n parser: (string) => Date;\r\n}\r\n\r\n@Component({\r\n selector: 'app-gas-day-picker',\r\n templateUrl: './gas-day-picker.component.html',\r\n styleUrls: ['./gas-day-picker.component.css'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => GasDayPickerComponent),\r\n multi: true\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => GasDayPickerComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class GasDayPickerComponent implements ControlValueAccessor, Validator {\r\n @ViewChild('dateBox') dateBox: DxDateBoxComponent;\r\n @ViewChild('gasDay') gasDay: ElementRef;\r\n private _gasDayValue: Date;\r\n private isValidValue = true;\r\n displayFormat: IDisplayFormat;\r\n public min: Date;\r\n public max: Date = new Date(10000, 11, 31);\r\n private defaultDate: Date;\r\n private _onChange: () => void;\r\n\r\n @Input('id') id: string;\r\n @Input('name') name: string;\r\n @Input('width') width: string = '160px';\r\n @Input('placeholder') placeholder: string = 'Select date';\r\n @Input('applyValueMode') applyValueMode: string = 'instantly';\r\n // @Input('min') min: Date;\r\n // @Input('max') max: Date;\r\n @Input('default') default: Date;\r\n @Input('disabled') disabled: boolean = false;\r\n @Input('disabledDates') disabledDates: Array = [];\r\n\r\n @Input()\r\n onValueChanged(e: any) {\r\n }\r\n\r\n\r\n @Output() isValidChange = new EventEmitter();\r\n @Output() selectionChanged: EventEmitter = new EventEmitter();\r\n\r\n constructor(private changeDetectorRef: ChangeDetectorRef) {\r\n this.displayFormat = {\r\n formatter: this.dateFormatter,\r\n parser: this.dateParser\r\n };\r\n }\r\n\r\n @Input() get isValid(): boolean {\r\n return this.isValidValue;\r\n }\r\n\r\n @Input() set minGasDay(val: GasDay) {\r\n if (val) {\r\n this.min = val.toDate;\r\n } else {\r\n this.min = null;\r\n }\r\n }\r\n @Input() set maxGasDay(val: GasDay) {\r\n if (val) {\r\n this.max = val.toDate;\r\n }\r\n }\r\n\r\n @Input() set defaultGasDay(val: GasDay) {\r\n if (val) {\r\n this.defaultDate = val.toDate;\r\n } else {\r\n this.defaultDate = null;\r\n }\r\n }\r\n\r\n set isValid(val: boolean) {\r\n if (val === undefined) {\r\n // This means that the form didn't set an initial\r\n // state for isValid. Interpret it as true.\r\n val = true;\r\n }\r\n if (this.isValidValue !== val) {\r\n if (val && this.value != null) {\r\n // If the user types in an invalid date, the date control sets\r\n // isValid to false but does not change our bound value property. If\r\n // isValid is now being set to true, it means that either the user entered\r\n // a valid date, in which case everything works fine, or they pressed the\r\n // Reset button on the form. In this latter case, the form sets our\r\n // value property to its stored date and isValid to true. However, since\r\n // the date control didn't change our value property when the user entered\r\n // the invalid date, setting value to the stored date doesn't actually\r\n // change anything, so our value setter is not called. This means the\r\n // date control is left in a valid state (no error message) but with the\r\n // text of the invalid date. To work around this, we check the control's\r\n // text to see if it is different from what we think it is.\r\n const dt = this.value;\r\n const formattedDate = this.dateFormatter(dt);\r\n if (this.dateBox.value.valueOf() === this.value.valueOf() && this.dateBox.text !== formattedDate) {\r\n this.dateBox.value = null;\r\n this.dateBox.value = dt;\r\n }\r\n }\r\n this.isValidValue = val;\r\n this.isValidChange.emit(this.isValidValue);\r\n }\r\n }\r\n\r\n get value(): Date {\r\n return this._gasDayValue;\r\n }\r\n\r\n set value(val: Date) {\r\n if (!DateTime.isSame(val, this._gasDayValue)) {\r\n this._gasDayValue = val;\r\n this.propagateChange(GasDay.from(this._gasDayValue));\r\n if (!(this.onValueChanged == null)) {\r\n this.onValueChanged(null);\r\n }\r\n }\r\n this.isValidValue = true;\r\n\r\n if (this._onChange() !== null) { this._onChange(); }\r\n }\r\n\r\n propagateChange = (_: GasDay) => {};\r\n onTouchedCallback = () => {};\r\n\r\n dateFormatter = (dateTime: Date): string => {\r\n return GasDay.from(dateTime).toDisplayFormatAll();\r\n }\r\n\r\n dateParser = (value: string): Date => {\r\n try {\r\n const newDate = GasDay.parse(value, true).toDate;\r\n return newDate;\r\n } catch (exception) {\r\n this.isValidValue = false;\r\n return null;\r\n }\r\n }\r\n\r\n writeValue(value: any) {\r\n if (_.isNil(value)) {\r\n this._gasDayValue = undefined;\r\n }\r\n if (value !== undefined) {\r\n if (value instanceof GasDay) {\r\n this._gasDayValue = value.toDate;\r\n } else if (value instanceof Date) {\r\n this._gasDayValue = value;\r\n }\r\n }\r\n }\r\n\r\n registerOnChange(fn) {\r\n this.propagateChange = fn;\r\n }\r\n\r\n registerOnTouched(fn) {\r\n this.onTouchedCallback = fn;\r\n }\r\n\r\n onOpened() {\r\n if (!this.dateBox.value && this.defaultDate) {\r\n this.dateBox.value = this.defaultDate;\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n }\r\n\r\n onFocusIn(e) {\r\n setTimeout(() => {\r\n e.element.querySelector('input.dx-texteditor-input').select();\r\n }, 0);\r\n }\r\n\r\n focus(): void {\r\n this.dateBox.instance.focus();\r\n }\r\n\r\n reset(): void {\r\n this.dateBox.instance.reset();\r\n }\r\n\r\n isDateValid(): boolean {\r\n return this.isValidValue;\r\n }\r\n\r\n onKeyUp(e: any): void {\r\n const dateValue = e.component.option(\"text\");\r\n this.determineValidity(dateValue);\r\n }\r\n\r\n determineValidity(value: string): void {\r\n this.isValidValue = GasDay.tryParse(value, true);\r\n\r\n if (this.isValidValue) {\r\n // Utilize GasDay to convert the input into a date for us as it is aware of a GasDay and will append 09:00 as the time.\r\n const date = GasDay.parse(value, true).toDate;\r\n if (this.min && date < this.min) { this.isValidValue = false; }\r\n if (this.isValidValue && this.max && date > this.max) { this.isValidValue = false; }\r\n }\r\n\r\n if (this._onChange() != null) { this._onChange(); }\r\n }\r\n\r\n validate(c: FormControl): ValidationErrors {\r\n return this.isValidValue ? null : {valid: this.isValidValue};\r\n }\r\n\r\n registerOnValidatorChange(fn: () => void): void { this._onChange = fn; }\r\n}\r\n","\r\n\r\n","import {Component, forwardRef, Input, Output, ViewChild, EventEmitter} from '@angular/core';\r\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\r\nimport {DxDateBoxComponent} from 'devextreme-angular';\r\nimport {DateTime} from \"@model/date-time\";\r\n\r\n\r\n@Component({\r\n selector: 'app-time-picker',\r\n templateUrl: './time-picker.component.html',\r\n styleUrls: ['./time-picker.component.css'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => TimePickerComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class TimePickerComponent implements ControlValueAccessor {\r\n @ViewChild('dateBox') dateBox: DxDateBoxComponent;\r\n private _timeValue: Date;\r\n private isValidValue = true;\r\n\r\n @Input('id') id: string;\r\n @Input('name') name: string;\r\n @Input('default') default: Date;\r\n @Input('width') width: string;\r\n @Input() interval: number = 15;\r\n @Output() isValidChange = new EventEmitter();\r\n\r\n get value(): Date {\r\n return this._timeValue;\r\n }\r\n\r\n set value(val: Date) {\r\n if (val !== this._timeValue) {\r\n this._timeValue = val;\r\n this.propagateChange(new DateTime(this._timeValue));\r\n }\r\n }\r\n\r\n propagateChange = (_: DateTime) => {};\r\n onTouchedCallback = () => {};\r\n\r\n constructor() {\r\n }\r\n\r\n writeValue(value: any) {\r\n if (value !== undefined) {\r\n if (value instanceof Date) {\r\n this.value = value;\r\n } else if (value instanceof DateTime) {\r\n this.value = value.toDate();\r\n }\r\n }\r\n }\r\n\r\n registerOnChange(fn) {\r\n this.propagateChange = fn;\r\n }\r\n\r\n registerOnTouched(fn) {\r\n this.onTouchedCallback = fn;\r\n }\r\n\r\n onOpened() {\r\n if (!this.dateBox.value && this.default) {\r\n this.dateBox.value = this.default;\r\n }\r\n }\r\n\r\n onFocusIn(e) {\r\n setTimeout(function() {\r\n e.element.querySelector('input.dx-texteditor-input').select();\r\n }, 0);\r\n }\r\n\r\n focus(): void {\r\n this.dateBox.instance.focus();\r\n }\r\n}\r\n","\r\n\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n Number of Scheduled Jobs: {{model.scheduledJobs != null ? model.scheduledJobs.length : 0}}\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
Job Name
\r\n
\r\n
\r\n
Effective Date
\r\n (yyyy-mm-dd)\r\n
\r\n
\r\n
\r\n
Interval\r\n
\r\n
\r\n
\r\n
Day to Run\r\n
\r\n
\r\n
\r\n
Time to Run
(hh:mm)
\r\n
\r\n
\r\n
Time Zone
\r\n
\r\n
\r\n
Action
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n {{lookupJobFromKey(job.jobKey)}}\r\n \r\n \r\n \r\n \r\n {{job.effectiveDate}}\r\n \r\n
\r\n \r\n \r\n
\r\n {{job.intervalType}}\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {{job.dayToRun}}\r\n
\r\n
\r\n \r\n
\r\n {{job.timeToRun.toTimeString()}}\r\n
\r\n
\r\n \r\n \r\n
\r\n {{timezoneDisplayValue(job.timeZone)}}\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
No Scheduled Jobs exist.
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n","\r\nimport {forkJoin, Observable, Subscription} from 'rxjs';\r\nimport * as _ from 'lodash';\r\nimport {Component, OnDestroy, OnInit} from '@angular/core';\r\nimport {BaseComponent} from \"@model/base-component\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {ActivatedRoute} from \"@angular/router\";\r\nimport {\r\n ScheduledJob,\r\n ScheduledJobsService,\r\n ScheduledJobType\r\n} from \"@shared/services/job-scheduling/scheduled-jobs/scheduled-jobs.service\";\r\nimport {AlertService} from \"app/shared/services/webapp/alert/alert.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {DateTime} from \"@model/date-time\";\r\nimport {\r\n YesNoCancelModalService\r\n} from \"@shared/services/webapp/yes-no-cancel-modal/yes-no-cancel-modal.service\";\r\nimport {GctsProcess} from \"@model/gcts-process\";\r\nimport {YesNoModalOptions} from \"@shared/services/webapp/modal-options/yes-no-modal-options\";\r\nimport {SelectedModalOption} from \"@shared/services/webapp/modal-options/selected-modal-option\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\n\r\nexport class ConfigureJobSchedulesModel {\r\n processes: GctsProcess[] ;\r\n process: string;\r\n scheduledJobTypes: Array;\r\n scheduledJobs: Array;\r\n status: string;\r\n addMode = false;\r\n intervalTypes = _.map(['Daily', 'Interval', 'Weekly', 'Monthly'], x => { return {id: x, value: x }; });\r\n daysOfWeek = _.map(['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'], x => { return {id: x, value: x }; });\r\n daysOfMonth = _.map(['1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26','27','28'], x => { return {id: x, value: x }; });\r\n newJob: ScheduledJob = null;\r\n timeZones = [{id: 'MCT', value: 'Mountain Clock Time'}, {id: 'MST', value: 'Mountain Standard Time'}];\r\n\r\n keyOfRowBeingEdited: string;\r\n undoRecord: ScheduledJob;\r\n}\r\n\r\n@Component({\r\n selector: 'app-configure-job-schedules',\r\n templateUrl: './configure-job-schedules.component.html',\r\n styleUrls: ['./configure-job-schedules.component.css']\r\n})\r\nexport class ConfigureJobSchedulesComponent extends BaseComponent implements OnInit, OnDestroy {\r\n\r\n model: ConfigureJobSchedulesModel = new ConfigureJobSchedulesModel();\r\n\r\n private queryParams$: Subscription;\r\n\r\n constructor(protected appService: AppService,\r\n private sessionService: SessionService,\r\n protected alertService: AlertService,\r\n private activatedRoute: ActivatedRoute,\r\n private scheduledJobsService: ScheduledJobsService,\r\n private modalService: YesNoCancelModalService) {\r\n super(appService);\r\n }\r\n\r\n ngOnInit() {\r\n super.setTitle(\"Configure Job Schedules\");\r\n const pipelineCode = this.sessionService.getPipeline().code;\r\n this.model.processes = GctsProcess.byPipeline(pipelineCode);\r\n this.queryParams$ = this.activatedRoute.queryParams.subscribe(() => this.handleActiveRoute());\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.queryParams$.unsubscribe();\r\n }\r\n\r\n onProcessChanged(): void {\r\n if (this.model.process) {\r\n this.loadResources();\r\n }\r\n }\r\n\r\n private handleActiveRoute(): void {\r\n if (this.model.process) {\r\n this.loadResources();\r\n }\r\n }\r\n\r\n private loadResources(): void {\r\n const serviceCalls: Observable[] = [\r\n this.scheduledJobsService.getScheduledJobTypes(this.model.process),\r\n this.scheduledJobsService.getScheduledJobs(this.model.process),\r\n this.scheduledJobsService.getJobSchedulerStatus(this.model.process)\r\n ];\r\n\r\n forkJoin(serviceCalls).subscribe(response => {\r\n this.model.scheduledJobTypes = response[0];\r\n const scheduledJobs = response[1];\r\n _.forEach(scheduledJobs, x => {\r\n x.effectiveDate = GasDay.parse(x.effectiveDate);\r\n x.timeToRun = DateTime.parseFromTime(x.timeToRun);\r\n });\r\n this.model.scheduledJobs = scheduledJobs;\r\n this.model.status = response[2].status;\r\n });\r\n }\r\n\r\n // Load all data on page load\r\n\r\n addNewJobRowClick = () => {\r\n const dt = new Date();\r\n dt.setHours(0); dt.setMinutes(0); dt.setSeconds(0); dt.setMilliseconds(0);\r\n this.model.newJob = new ScheduledJob();\r\n this.model.newJob.timeToRun = new DateTime(dt);\r\n this.model.addMode = true;\r\n };\r\n\r\n cancelNewJobClick = () => {\r\n this.model.newJob = null;\r\n this.model.addMode = false;\r\n };\r\n\r\n saveNewJobClick = () => {\r\n this.alertService.clearMessages();\r\n this.scheduledJobsService.saveJob(this.model.newJob, this.model.process).subscribe(() => {\r\n this.alertService.addSuccessMessage('Save Successful', `The job ${this.getJobDisplayName(this.model.newJob)} has been saved.`);\r\n this.model.newJob = null;\r\n this.model.addMode = false;\r\n // Reload page data\r\n this.loadResources();\r\n });\r\n };\r\n\r\n pauseOnClick = () => {\r\n this.scheduledJobsService.pause(this.model.process).subscribe(() => {\r\n // Reload page data\r\n this.loadResources();\r\n });\r\n };\r\n\r\n resumeOnClick = () => {\r\n this.scheduledJobsService.resume(this.model.process).subscribe(() => {\r\n // Reload page data\r\n this.loadResources();\r\n });\r\n };\r\n\r\n shouldShowEditView(key: string): boolean {\r\n return this.model.keyOfRowBeingEdited === key;\r\n }\r\n\r\n shouldShowReadOnlyView(key: string): boolean {\r\n return this.model.keyOfRowBeingEdited !== key;\r\n }\r\n\r\n onEditClick(job: ScheduledJob): void {\r\n this.model.keyOfRowBeingEdited = job.id.toString();\r\n this.createUndoRecord(job);\r\n }\r\n\r\n createUndoRecord(job: ScheduledJob): void {\r\n this.model.undoRecord = _.clone(job);\r\n }\r\n\r\n onEditCancelled(): void {\r\n // Undo edit\r\n const index = _.findIndex(this.model.scheduledJobs, x => x.id.toString() === this.model.keyOfRowBeingEdited);\r\n this.model.scheduledJobs.splice(index, 1, this.model.undoRecord);\r\n this.model.keyOfRowBeingEdited = null;\r\n }\r\n\r\n private getJobDisplayName = (job: ScheduledJob): string => {\r\n const jobType = _.find(this.model.scheduledJobTypes, jt => jt.key === job.jobKey);\r\n return _.isNil(jobType) ? '' : jobType.displayName;\r\n };\r\n\r\n runJob = (job: ScheduledJob) => {\r\n this.alertService.clearMessages();\r\n this.showRunJobMessage(job, () => {\r\n this.scheduledJobsService.runJob(job.id).subscribe(() => {\r\n this.alertService.addSuccessMessage('Submit Successful', `The job ${this.getJobDisplayName(job)} has been successfully submitted.`);\r\n });\r\n });\r\n };\r\n\r\n updateJob = (job: ScheduledJob) => {\r\n this.alertService.clearMessages();\r\n this.scheduledJobsService.updateJob(job).subscribe(() => {\r\n this.alertService.addSuccessMessage('Save Successful', `The job ${this.getJobDisplayName(job)} has been saved.`);\r\n this.model.keyOfRowBeingEdited = null;\r\n this.model.undoRecord = null;\r\n // Reload page data\r\n this.loadResources();\r\n });\r\n };\r\n\r\n private showRunJobMessage = (job: ScheduledJob, runJobFn: () => void): void => {\r\n const jobDisplayName = this.getJobDisplayName(job);\r\n const yesNoModalOptions = new YesNoModalOptions(`Run ${jobDisplayName}?`, `Are you sure you want to run the job ${jobDisplayName}?`, 'Cancel', 'Run Job');\r\n this.modalService.show(yesNoModalOptions).subscribe((selectedModalOption: SelectedModalOption) => {\r\n if (selectedModalOption === SelectedModalOption.Yes) {\r\n runJobFn();\r\n }\r\n });\r\n };\r\n\r\n deleteJob = (job: ScheduledJob) => {\r\n this.alertService.clearMessages();\r\n this.showDeleteJobMessage(job, () => {\r\n this.scheduledJobsService.deleteJob(job.id).subscribe(() => {\r\n this.alertService.addSuccessMessage('Delete Successful', `The job ${this.getJobDisplayName(job)} has been successfully deleted.`);\r\n // Reload page data\r\n this.loadResources();\r\n });\r\n });\r\n };\r\n\r\n private showDeleteJobMessage = (job: ScheduledJob, deleteJobFn: () => void): void => {\r\n const jobDisplayName = this.getJobDisplayName(job);\r\n let dayToRun: string;\r\n switch (job.intervalType) {\r\n case 'Monthly':\r\n dayToRun = `Day ${job.dayToRun} at `;\r\n break;\r\n case 'Weekly':\r\n dayToRun = `${job.dayToRun} at `;\r\n break;\r\n default:\r\n dayToRun = '';\r\n break;\r\n }\r\n const yesNoModalOptions = new YesNoModalOptions(`Delete ${jobDisplayName} Scheduled Job`, `You are about to delete the ${job.intervalType}, ${jobDisplayName} for ${dayToRun}${job.timeToRun.toTimeString()}. Are you sure you want to continue?`);\r\n this.modalService.show(yesNoModalOptions).subscribe((selectedModalOption: SelectedModalOption) => {\r\n if (selectedModalOption === SelectedModalOption.Yes) {\r\n deleteJobFn();\r\n }\r\n });\r\n };\r\n\r\n public lookupJobFromKey(key: string): string {\r\n return _.find(this.model.scheduledJobTypes, x => x.key === key).displayName;\r\n }\r\n\r\n public isPaused(): boolean {\r\n return this.model.status === \"Paused\";\r\n }\r\n\r\n public timezoneDisplayValue(timeZone: string) : string {\r\n return _.isNil(this.model?.timeZones) ? '' : _.find(this.model.timeZones, tz => tz.id === timeZone)?.value;\r\n }\r\n}\r\n","\r\nimport {forkJoin, Observable} from 'rxjs';\r\n\r\nimport {map, tap} from 'rxjs/operators';\r\nimport {Injectable} from '@angular/core';\r\nimport {GasDay} from \"app/shared/classes/gas-day\";\r\nimport {NominationResourceService} from \"app/shared/resources/nominations-resource.service\";\r\nimport {NominationSystemService} from \"../nomination-system/nomination-system.service\";\r\nimport {IGasDay, IGasMonth} from \"@model/gas-day-month.interface\";\r\nimport {GasDayRange} from \"../gas-cycle/gas-cycle.service\";\r\nimport {GasCycle} from \"@model/gas-cycle\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {HttpResponse} from \"@angular/common/http\";\r\nimport {BaseUploadResponse} from \"@model/base-upload-response\";\r\nimport {BaseUploadRowError} from \"@model/base-upload-row-error\";\r\n\r\nexport class BidFloorRequest {\r\n fromGasDay: IGasDay;\r\n toGasDay: IGasDay;\r\n gasDay: IGasDay;\r\n gasCycleCode: string;\r\n receiptLocationIds: number[];\r\n deliveryLocationIds: number[];\r\n includeRevisions: boolean;\r\n}\r\n\r\nexport class BidFloor {\r\n deliveryLocationId: string;\r\n receiptLocationId: string;\r\n gasDayRange: GasDayRange;\r\n gasCycle: GasCycle;\r\n loadFactorPercent: number;\r\n bidFloor: number;\r\n dailyEquivalentTollRate: number;\r\n status: string;\r\n createDateTime: Date;\r\n}\r\n\r\nexport class BidFloorUploadParameters {\r\n gasDay: IGasDay;\r\n gasDayCycleCode: string;\r\n bidFloorRows: BidFloorRow[];\r\n}\r\n\r\nexport class BidFloorRow {\r\n rowNumber: string;\r\n pointFrom: string;\r\n pointTo: string;\r\n loadFactorPercentage: string;\r\n dailyToll: string;\r\n\r\n\r\n constructor(rowNumber: string, pointFrom: string, pointTo: string, dailyToll: string, loadFactorPercentage: string) {\r\n this.rowNumber = rowNumber;\r\n this.pointFrom = pointFrom;\r\n this.pointTo = pointTo;\r\n this.dailyToll = dailyToll;\r\n this.loadFactorPercentage = loadFactorPercentage;\r\n }\r\n}\r\n\r\nexport class BidFloorRowError extends BaseUploadRowError {\r\n bidFloor: string;\r\n\r\n constructor() {\r\n super(0, \"\", null);\r\n }\r\n}\r\n\r\nexport class BidFloorUploadResponse extends BaseUploadResponse {\r\n tollsExpired: string;\r\n\r\n constructor() {\r\n super();\r\n this.tollsExpired = '0';\r\n this.errors = new Array();\r\n }\r\n}\r\n\r\nexport class BidFloorAverageRequest {\r\n gasMonth: IGasMonth;\r\n pathSetId: number;\r\n}\r\n\r\nexport class BidFloorAverageResponse {\r\n}\r\n\r\n@Injectable()\r\nexport class BidFloorService {\r\n\r\n constructor(private nominationsResource: NominationResourceService,\r\n private nominationSystemService: NominationSystemService) {\r\n }\r\n\r\n get(searchParams: BidFloorRequest): Observable<[BidFloor[], Date]> {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n if (searchParams.fromGasDay != null) { params.set('fromGasDay', searchParams.fromGasDay.toString()); }\r\n if (searchParams.toGasDay != null ) { params.set('toGasDay', searchParams.toGasDay.toString()); }\r\n if (searchParams.gasDay != null) { params.set('gasDay', searchParams.gasDay.toString()); }\r\n if (searchParams.gasCycleCode != null ) { params.set('gasCycleCode', searchParams.gasCycleCode.toString()); }\r\n if (searchParams.includeRevisions != null) { params.set('includeRevisions', searchParams.includeRevisions.toString()); }\r\n if (searchParams.receiptLocationIds != null) { params.set('receiptLocationIds', searchParams.receiptLocationIds.toString()); }\r\n if (searchParams.deliveryLocationIds != null) { params.set('deliveryLocationIds', searchParams.deliveryLocationIds.toString()); }\r\n\r\n return forkJoin([\r\n this.nominationsResource.get('/bidfloors', true, params).pipe(\r\n tap(bfs => {\r\n for (let n = 0; n < bfs.length; n++) {\r\n bfs[n].gasDayRange.start = GasDay.parse(bfs[n].gasDayRange.start);\r\n bfs[n].gasDayRange.end = GasDay.parse(bfs[n].gasDayRange.end);\r\n bfs[n].gasCycle = GasCycle.create(bfs[n].gasCycle);\r\n }\r\n })),\r\n this.nominationSystemService.applicationServerTimes().pipe(map(res => new Date(res.serverTime)))\r\n ]);\r\n }\r\n\r\n set(uploadParameters: BidFloorUploadParameters): Observable {\r\n const body = {\r\n bidFloorRows: uploadParameters.bidFloorRows,\r\n gasDayCycleCode: uploadParameters.gasDayCycleCode\r\n };\r\n\r\n return this.nominationsResource.post('/bidfloors/' + uploadParameters.gasDay, body);\r\n }\r\n\r\n getBidFloorAverage(requestParms: BidFloorAverageRequest): Observable> {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('gasMonth', requestParms.gasMonth.toString());\r\n params.set('pathSetId', requestParms.pathSetId.toString());\r\n\r\n return this.nominationsResource.getData('/bidfloors/average/csv', true, params);\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\nimport {GasDay} from \"./gas-day\";\r\nimport {GasCycle} from \"./gas-cycle\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\n\r\nexport interface IGasDayCycleDto {\r\n gasDay: string;\r\n gasCycleCode: string;\r\n gasCycleName: string;\r\n description: string;\r\n gasFlowEffectiveTime: string;\r\n sequence: number;\r\n}\r\n\r\nexport class GasDayCycle {\r\n public static Null = new GasDayCycle();\r\n\r\n gasDay: GasDay;\r\n gasCycleCode: string;\r\n gasCycleName: string;\r\n description: string;\r\n gasFlowEffectiveTime: string;\r\n sequence: number;\r\n\r\n public static create(gasDayCycleDto: IGasDayCycleDto): GasDayCycle {\r\n if (_.isNil(gasDayCycleDto)) return GasDayCycle.Null;\r\n\r\n const gasDayCycle = new GasDayCycle();\r\n\r\n gasDayCycle.gasDay = GasDay.parse(gasDayCycleDto.gasDay);\r\n gasDayCycle.gasCycleCode = gasDayCycleDto.gasCycleCode;\r\n gasDayCycle.gasCycleName = gasDayCycleDto.gasCycleName;\r\n gasDayCycle.description = gasDayCycleDto.description;\r\n gasDayCycle.gasFlowEffectiveTime = gasDayCycleDto.gasFlowEffectiveTime;\r\n gasDayCycle.sequence = gasDayCycleDto.sequence;\r\n\r\n return gasDayCycle;\r\n }\r\n\r\n public static for(gasDay: GasDay, cycle: GasCycle): GasDayCycle {\r\n const newGasDayCycle = new GasDayCycle();\r\n newGasDayCycle.gasDay = gasDay;\r\n newGasDayCycle.gasCycleCode = cycle.code;\r\n newGasDayCycle.gasFlowEffectiveTime = cycle.gasFlowEffectiveTime;\r\n newGasDayCycle.sequence = cycle.sequence;\r\n return newGasDayCycle;\r\n }\r\n\r\n public static forCode(gasDay: GasDay, gasCycleCode: string, gasCycles: GasCycle[]): GasDayCycle {\r\n const gasCycle = _.find(gasCycles, x => x.code === gasCycleCode);\r\n return GasDayCycle.for(gasDay, gasCycle);\r\n }\r\n\r\n // TODO - This can probably eventually be removed...\r\n public static formatGasDayCycle(gasDayCycle: any): string {\r\n const gasDayDate = gasDayCycle.gasDayDate;\r\n\r\n if (_.isNil(gasDayDate)) return new Date(NaN).toString();\r\n\r\n const gasDay = gasDayDate instanceof GasDay\r\n ? gasDayDate\r\n : GasDay.parse(gasDayDate.toString());\r\n\r\n const gasDayDisplayFormat = GasCycle.isOvernightCycle(gasDayCycle.gasCycleCode)\r\n ? gasDay.next().toDisplayFormat()\r\n : gasDay.toDisplayFormat();\r\n\r\n return `${gasDayDisplayFormat} ${gasDayCycle.gasFlowEffectiveTime}`;\r\n }\r\n\r\n constructor(gasDayCycle?: GasDayCycle) {\r\n if (gasDayCycle) {\r\n this.gasDay = GasDay.parse(gasDayCycle.gasDay.toString()); // TODO - Fix this later.\r\n this.gasCycleCode = gasDayCycle.gasCycleCode;\r\n this.gasCycleName = gasDayCycle.gasCycleName;\r\n this.description = gasDayCycle.description;\r\n this.gasFlowEffectiveTime = gasDayCycle.gasFlowEffectiveTime;\r\n }\r\n }\r\n\r\n public toGasDayCycleFormatString(): string {\r\n const gasDayDisplayFormat = GasCycle.isOvernightCycle(this.gasCycleCode) // TODO - If the GasDayCycle created a GasCycle object, we wouldn't need this to be static.\r\n ? this.gasDay.next().toDisplayFormat()\r\n : this.gasDay.toDisplayFormat();\r\n\r\n return `${gasDayDisplayFormat} ${this.gasFlowEffectiveTime}`;\r\n }\r\n\r\n // TODO: This method could go away\r\n get gasDayDate(): Date {\r\n return this.gasDay.toDate;\r\n\r\n\r\n // Need to be able to handle when this.gasDay is a string or a Date object\r\n // (due to dxDataGrid, we don't know when it is a string and when it is a Date object [editing])\r\n // if (typeof this.gasDay === \"string\") {\r\n // return GasDay.parse(this.gasDay, true).toDate;\r\n // } else {\r\n // return GasDay.from(this.gasDay, true).toDate;\r\n // }\r\n }\r\n\r\n set gasDayDate(value: Date) {\r\n this.gasDay = GasDay.from(value, true);\r\n }\r\n\r\n get gasDayTime(): string {\r\n return this.gasDay.toDisplayTimeFormat();\r\n }\r\n\r\n // nextGasDayDate exists because the hub grids display the next gas day for\r\n // end date. While we could parse/format gasDayDate to appear like it's the\r\n // next day, if the user brings up the calendar it would display the real\r\n // gasDayDate.\r\n get nextGasDayDate(): Date {\r\n return this.gasDay.next().toDate;\r\n }\r\n\r\n set nextGasDayDate(value: Date) {\r\n this.gasDay = GasDay.from(value).previous();\r\n }\r\n\r\n defaultEndGasDayCycle(isAdjustment: boolean): GasDayCycle {\r\n const endGasDayCycle = new GasDayCycle(this);\r\n\r\n endGasDayCycle.gasDay = this.gasCycleCode === GasCycle.TimelyCycleCode && !isAdjustment\r\n ? GasMonth.fromGasDay(this.gasDay).end()\r\n : this.gasDay;\r\n\r\n return endGasDayCycle;\r\n }\r\n}\r\n","\r\nimport {map, tap} from 'rxjs/operators';\r\nimport {Injectable} from '@angular/core';\r\nimport {Observable} from \"rxjs\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {NominationResourceService} from \"@shared/resources/nominations-resource.service\";\r\nimport {NominationGroup} from \"../nomination-nom-group/nomination-nom-group.service\";\r\nimport {GasDayCycle, IGasDayCycleDto} from \"@model/gas-day-cycle\";\r\nimport * as _ from \"lodash\";\r\nimport {\r\n IEnergyImbalanceInstruction,\r\n IEnergyImbalanceInstructionQueryResult,\r\n IFuelNominationRequest,\r\n INominationRequest,\r\n ITransferNominationRequestQueryResult,\r\n ITransportationNominationRequest,\r\n ITransportationNominationRequestQueryResult\r\n} from \"./nomination-request.interface\";\r\nimport {SecondaryLocation} from \"../secondary-locations/secondary-locations.service\";\r\nimport {GasCycle} from \"@model/gas-cycle\";\r\nimport {HttpResponse} from \"@angular/common/http\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {DateTime} from \"@model/date-time\";\r\nimport {IGasDay} from \"@model/gas-day-month.interface\";\r\n\r\n\r\nexport class TransactionType {\r\n public static isOnSystemOrOffSystem(transactionType: string) {\r\n return _.includes([TransactionTypes.OnSystem, TransactionTypes.OffSystem], transactionType);\r\n }\r\n\r\n public static isFuelPackOrFuelDraft(transactionType: string) {\r\n return _.includes([TransactionTypes.FuelPack, TransactionTypes.FuelDraft], transactionType);\r\n }\r\n}\r\n\r\nexport const TransactionTypes = {\r\n onSystem: 'On System',\r\n offSystem: 'Off System',\r\n transport: 'Transport',\r\n tboTransport: 'TBO Transport',\r\n buy: 'Buy',\r\n sell: 'Sell',\r\n fuelDraft: 'Fuel Draft',\r\n fuelPack: 'Fuel Pack',\r\n tvarDraft: 'TVAR Draft',\r\n tvarPack: 'TVAR Pack',\r\n cvDraft: 'CV Draft',\r\n cvPack: 'CV Pack',\r\n loan: 'Loan',\r\n park: 'Park',\r\n parkWithdrawal: 'Park Withdrawal',\r\n loanPayback: 'Loan Payback',\r\n linepackPurchase: 'Linepack Purchase',\r\n linepackSale: 'Linepack Sale',\r\n tboOffSystem: 'TBO Off System',\r\n tboOnSystem: 'TBO On System',\r\n tboFuel: 'TBO Fuel',\r\n tboTransfer: 'TBO Transfer',\r\n sboInjection: 'SBO Injection',\r\n sboWithdrawal: 'SBO Withdrawal',\r\n tboImbalanceTransfer: 'TBO Imbalance Transfer',\r\n tboDeliveryConfirmation: 'TBO Delivery Confirmation',\r\n tboReceiptConfirmation: 'TBO Receipt Confirmation',\r\n tboLinepackPurchase: 'TBO Linepack Purchase',\r\n tboLinepackSale: 'TBO Linepack Sale',\r\n makeupOnSystem: 'Makeup On System',\r\n makeupOffSystem: 'Makeup Off System',\r\n tboFuelPayback: 'TBO Fuel Payback',\r\n paybackDraft: 'Payback Draft',\r\n paybackPack: 'Payback Pack',\r\n imbalanceTradeBuy: \"Imbalance Trade Buy\",\r\n imbalanceTradeSell: \"Imbalance Trade Sell\",\r\n\r\n\r\n // As above, but as they come down from the server.\r\n OnSystem: 'On System',\r\n OffSystem: 'Off System',\r\n Transport: 'Transport',\r\n TboTransport: 'TBO Transport',\r\n Buy: 'Buy',\r\n Sell: 'Sell',\r\n FuelDraft: 'Fuel Draft',\r\n FuelPack: 'Fuel Pack',\r\n TvarDraft: 'TVAR Draft',\r\n TvarPack: 'TVAR Pack',\r\n CvDraft: 'CV Draft',\r\n CvPack: 'CV Pack',\r\n Loan: 'Loan',\r\n Park: 'Park',\r\n ParkWithdrawal: 'Park Withdrawal',\r\n LoanPayback: 'Loan Payback',\r\n LinepackPurchase: 'Linepack Purchase',\r\n LinepackSale: 'Linepack Sale',\r\n TboOffSystem: 'TBO Off System',\r\n TboOnSystem: 'TBO On System',\r\n TboFuel: 'TBO Fuel',\r\n TboTransfer: 'TBO Transfer',\r\n SboInjection: 'SBO Injection',\r\n SboWithdrawal: 'SBO Withdrawal',\r\n TboImbalanceTransfer: 'TBO Imbalance Transfer',\r\n TboDeliveryConfirmation: 'TBO Delivery Confirmation',\r\n TboReceiptConfirmation: 'TBO Receipt Confirmation',\r\n TboLinepackPurchase: 'TBO Linepack Purchase',\r\n TboLinepackSale: 'TBO Linepack Sale',\r\n MakeupOnSystem: 'Makeup On System',\r\n MakeupOffSystem: 'Makeup Off System',\r\n TboFuelPayback: 'TBO Fuel Payback',\r\n PaybackDraft: 'Payback Draft',\r\n PaybackPack: 'Payback Pack',\r\n ImbalanceTradeBuy: \"Imbalance Trade Buy\",\r\n ImbalanceTradeSell: \"Imbalance Trade Sell\"\r\n\r\n};\r\n\r\nexport class ExceptionCount {\r\n gasDayCycle: GasDayCycle;\r\n count: number;\r\n\r\n public static create(dto: ExceptionCountResponse): ExceptionCount {\r\n const exceptionCount = new ExceptionCount();\r\n exceptionCount.count = dto.count;\r\n exceptionCount.gasDayCycle = GasDayCycle.create(dto.gasDayCycle);\r\n return exceptionCount;\r\n }\r\n}\r\n\r\nexport class ExceptionCountResponse {\r\n gasDayCycle: IGasDayCycleDto;\r\n count: number;\r\n}\r\n\r\nexport class NominationExceptions {\r\n customerNomGroupId: number;\r\n customerId: number;\r\n cycleCode: string;\r\n tos: string;\r\n nomGroupId: number;\r\n transpRank: number;\r\n receiptLocationId: number;\r\n recRank: number;\r\n deliveryLocationId: number;\r\n delRank: number;\r\n nomQty: number;\r\n packageId: string;\r\n bidPrice: number;\r\n fuelLocationId: number;\r\n fuelQty: number;\r\n zeroTaxRated: boolean;\r\n exceptionMessage: string;\r\n issueDateTime: DateTime;\r\n status: string;\r\n}\r\n\r\nexport class NominationExceptionsRequest {\r\n gasDay: GasDay;\r\n customerId: number;\r\n gasCycleCode: string;\r\n status: string;\r\n\r\n constructor(gasDay: GasDay, customerId: number, gasCycleCode: string, status: string) {\r\n this.gasDay = gasDay;\r\n this.customerId = customerId;\r\n this.gasCycleCode = gasCycleCode;\r\n this.status = status;\r\n }\r\n}\r\n\r\nexport class NominationRequest implements INominationRequest {\r\n id: number;\r\n enterpriseId: number;\r\n statusCode: string;\r\n statusMessage: string;\r\n transactionType: string;\r\n creditNominationGroupId: number;\r\n debitNominationGroupId: number;\r\n debitGasAccountId: number;\r\n creditGasAccountId: number;\r\n packageId: string;\r\n\r\n creditLocationId: number;\r\n deliveryRank: number;\r\n\r\n transportationRank: number;\r\n debitLocationId: number;\r\n receiptRank: number;\r\n\r\n energy: number;\r\n possibleNominationGroups: NominationGroup[];\r\n\r\n startGasDayCycle: GasDayCycle;\r\n endGasDayCycle: GasDayCycle;\r\n\r\n // new fields\r\n startGasDayCycleCode: string;\r\n startGasDayDate: Date;\r\n endGasDayEndDate: Date;\r\n // new fields\r\n\r\n canBeDeleted: boolean;\r\n\r\n // Used to mark up a Pending Nom Request as changed.\r\n isPendingChanged: boolean;\r\n\r\n submittedByUserFullName: string;\r\n submittedByUserEnterpriseId: number;\r\n issueDateTime: DateTime;\r\n\r\n public static setCommonProperties(dto: INominationRequest, target: INominationRequest) {\r\n target.id = dto.id;\r\n target.enterpriseId = dto.enterpriseId;\r\n target.statusCode = dto.statusCode;\r\n target.statusMessage = dto.statusMessage;\r\n target.transactionType = dto.transactionType;\r\n target.creditNominationGroupId = dto.creditNominationGroupId;\r\n target.debitNominationGroupId = dto.debitNominationGroupId;\r\n target.debitGasAccountId = dto.debitGasAccountId;\r\n target.creditGasAccountId = dto.creditGasAccountId;\r\n target.packageId = dto.packageId;\r\n target.creditLocationId = dto.creditLocationId;\r\n target.deliveryRank = dto.deliveryRank;\r\n target.transportationRank = dto.transportationRank;\r\n target.debitLocationId = dto.debitLocationId;\r\n target.receiptRank = dto.receiptRank;\r\n target.energy = dto.energy;\r\n target.possibleNominationGroups = dto.possibleNominationGroups; // TODO - NomRequestRefactoring - This should be a proper object as well.\r\n\r\n // Gas Day cycle fields for Energy Imbalance\r\n // Still here for Energy Imbalance - either remove the Energy Imbalance feature all together or consider using the fields below instead.\r\n const startGasDayCycle = new GasDayCycle(dto.startGasDayCycle);\r\n const endGasDayCycle = new GasDayCycle(dto.endGasDayCycle);\r\n target.startGasDayCycle = new GasDayCycle(startGasDayCycle);\r\n target.endGasDayCycle = new GasDayCycle(endGasDayCycle);\r\n\r\n // Gas Day Cycle fields for Transport, Hub Receipt and Delivery\r\n target.startGasDayCycleCode = startGasDayCycle.gasCycleCode;\r\n target.startGasDayDate = startGasDayCycle.gasDayDate;\r\n target.endGasDayEndDate = endGasDayCycle.nextGasDayDate; // Set to Next Gas Day Date as the Grid needs to show the end of gas day\r\n\r\n target.canBeDeleted = dto.canBeDeleted;\r\n\r\n target.submittedByUserFullName = dto.submittedByUserFullName;\r\n target.submittedByUserEnterpriseId = dto.submittedByUserEnterpriseId;\r\n target.issueDateTime = DateTime.parse(dto.issueDateTime.toString());\r\n }\r\n\r\n constructor(transactionType: string) {\r\n this.transactionType = transactionType;\r\n }\r\n}\r\n\r\nexport class TransportationNominationRequest extends NominationRequest implements ITransportationNominationRequest {\r\n nominationGroupId: number;\r\n serviceTypeId: number;\r\n billableServiceOptionId: number;\r\n bidPrice: number;\r\n zeroTaxRated: boolean;\r\n fuelNominationRequest: IFuelNominationRequest;\r\n epsq: number;\r\n\r\n public static create(dto: ITransportationNominationRequest): TransportationNominationRequest {\r\n\r\n const transportationNominationRequest = new TransportationNominationRequest();\r\n\r\n this.setCommonProperties(dto, transportationNominationRequest);\r\n\r\n transportationNominationRequest.nominationGroupId = dto.nominationGroupId;\r\n transportationNominationRequest.serviceTypeId = dto.serviceTypeId;\r\n transportationNominationRequest.billableServiceOptionId = dto.billableServiceOptionId;\r\n transportationNominationRequest.bidPrice = dto.bidPrice;\r\n transportationNominationRequest.zeroTaxRated = dto.zeroTaxRated;\r\n transportationNominationRequest.fuelNominationRequest = dto.fuelNominationRequest; // TODO - NomRequestRefactoring - This should be a proper object as well.\r\n transportationNominationRequest.epsq = dto.epsq;\r\n return transportationNominationRequest;\r\n }\r\n\r\n constructor() {\r\n super(\"Transport\");\r\n }\r\n\r\n}\r\n\r\nexport class TransportationNominationRequestQueryResult implements ITransportationNominationRequestQueryResult {\r\n queryDateTime: Date;\r\n requests: ITransportationNominationRequest[];\r\n}\r\n\r\nexport class TransferNominationRequestQueryResult implements ITransferNominationRequestQueryResult {\r\n queryDateTime: Date;\r\n requests: INominationRequest[];\r\n}\r\n\r\nexport class CustodyTransferNominationRequest extends NominationRequest {\r\n upDownContract: string;\r\n counterParty: string;\r\n}\r\n\r\nexport class FuelNominationRequest implements IFuelNominationRequest {\r\n id: number;\r\n locationId: number;\r\n fuel: number;\r\n name: string;\r\n possibleLocations: SecondaryLocation[];\r\n}\r\n\r\nexport class HubBalanceData {\r\n locationId: number;\r\n locationName: string;\r\n in: number;\r\n out: number;\r\n variance: number;\r\n passed: number;\r\n saved: number;\r\n failed: number;\r\n pending: number;\r\n mismatched: number;\r\n}\r\n\r\nexport class EnergyImbalanceInstruction implements IEnergyImbalanceInstruction {\r\n enterpriseId: number;\r\n status: string; // Complete, Incomplete\r\n transactionType: string;\r\n locationId: number;\r\n nominationGroupId: number;\r\n packQuantity?: number;\r\n draftQuantity?: number;\r\n upDownContract: string;\r\n counterParty: string;\r\n packageId: string;\r\n rank?: number;\r\n startGasDay: string;\r\n endGasDay: string;\r\n startGasCycleId: number;\r\n gasCycleId: number;\r\n // startGasDayCycle: string;\r\n startGasDayCycle: GasDayCycle;\r\n endGasDayCycle: GasDayCycle;\r\n // endGasDayCycle: string;\r\n packOrDraft: string;\r\n\r\n transactionTypeDescription: string;\r\n statusMessage: string;\r\n}\r\n\r\nexport class EnergyImbalanceInstructionQueryResult implements IEnergyImbalanceInstructionQueryResult {\r\n queryDateTime: Date;\r\n requests: EnergyImbalanceInstruction[];\r\n}\r\n\r\n@Injectable()\r\nexport class NominationRequestService {\r\n\r\n constructor(private nominationResource: NominationResourceService) {\r\n\r\n }\r\n\r\n queryTransportationRequests(customerId: number, hubNomGroupId: number, gasDay: GasDay, gasCycleCode: string): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('enterpriseId', customerId.toString());\r\n params.set('hubNominationGroupId', hubNomGroupId.toString());\r\n params.set('gasDay', gasDay.toString());\r\n params.set('gasCycleCode', gasCycleCode);\r\n\r\n return this.nominationResource.get('/nominationrequests/transportation', true, params).pipe(\r\n map(result => {\r\n result.queryDateTime = new Date(result.queryDateTime);\r\n result.requests = result.requests.map(x => TransportationNominationRequest.create(x));\r\n return result;\r\n }));\r\n }\r\n\r\n downloadNominations(customerId: number, hubNomGroupId: number, gasDay: GasDay, gasCycleCode: string): Observable> {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('enterpriseId', customerId.toString());\r\n params.set('hubNominationGroupId', hubNomGroupId.toString());\r\n params.set('gasDay', gasDay.toString());\r\n params.set('gasCycleCode', gasCycleCode);\r\n\r\n return this.nominationResource.getData('/nominationrequests/download/csv', true, params);\r\n }\r\n\r\n queryTransferRequests(customerId: number, hubNomGroupId: number, gasDay: GasDay, gasCycleCode: string, hubType: string): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('enterpriseId', customerId.toString());\r\n params.set('hubNominationGroupId', hubNomGroupId.toString());\r\n params.set('gasDay', gasDay.toString());\r\n params.set('gasCycleCode', gasCycleCode);\r\n\r\n return this.nominationResource.get('/nominationrequests/transfer/' + hubType, true, params).pipe(\r\n tap(result => {\r\n result.queryDateTime = new Date(result.queryDateTime);\r\n // Create proper GasDayCycle objects because that will give us a bindable date property (gasDayDate).\r\n result.requests.forEach(item => {\r\n const startGasDayCycle = new GasDayCycle(item.startGasDayCycle);\r\n const endGasDayCycle = new GasDayCycle(item.endGasDayCycle);\r\n item.startGasDayCycle = startGasDayCycle;\r\n item.endGasDayCycle = endGasDayCycle;\r\n\r\n item.startGasDayCycleCode = startGasDayCycle.gasCycleCode;\r\n item.startGasDayDate = startGasDayCycle.gasDayDate;\r\n item.endGasDayEndDate = endGasDayCycle.nextGasDayDate; // Set to Next Gas Day Date as the Grid needs to show the end of gas day\r\n\r\n item.issueDateTime = DateTime.parse(item.issueDateTime.toString());\r\n });\r\n }));\r\n }\r\n\r\n queryEnergyImbalanceInstructions(customerId: number, gasDay: GasDay, gasCycleCode: string, gasCycles: GasCycle[]): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('enterpriseId', customerId.toString());\r\n params.set('gasDay', gasDay.toString());\r\n params.set('gasCycleCode', gasCycleCode);\r\n\r\n return this.nominationResource.get('/nominationrequests/energyimbalance', true, params).pipe(\r\n tap(result => {\r\n result.queryDateTime = new Date(result.queryDateTime);\r\n\r\n result.requests.forEach(item => {\r\n\r\n // item.startGasDayCycle = GasDay.parse(item.startGasDay).toDisplayDateTimeFormat() + ' ' + gasCycleCode;\r\n // item.endGasDayCycle = GasDay.parse(item.endGasDay).next().toDisplayDateTimeFormat() + ' ' + gasCycleCode;\r\n\r\n const gasCycle = _.find(gasCycles, x => x.id === item.startGasCycleId);\r\n item.startGasDayCycle = new GasDayCycle();\r\n item.startGasDayCycle.gasCycleCode = gasCycle.code;\r\n item.startGasDayCycle.gasFlowEffectiveTime = gasCycle.gasFlowEffectiveTime;\r\n item.startGasDayCycle.gasDay = GasDay.parse(item.startGasDay);\r\n\r\n item.endGasDayCycle = new GasDayCycle();\r\n item.endGasDayCycle.gasCycleCode = gasCycle.code;\r\n item.endGasDayCycle.gasFlowEffectiveTime = gasCycle.gasFlowEffectiveTime;\r\n item.endGasDayCycle.gasDay = GasDay.parse(item.endGasDay);\r\n\r\n // Get transaction type description.\r\n item.transactionTypeDescription = TransactionTypes[item.transactionType];\r\n });\r\n }));\r\n }\r\n\r\n queryPendingStsNominationCounts(fromGasDay: IGasDay, toGasDay: IGasDay): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setGasDay(fromGasDay, 'fromGasDay');\r\n params.setGasDay(toGasDay, 'toGasDay');\r\n\r\n return this.nominationResource.get('/nominationrequests/pending/counts', true, params).pipe(\r\n map(responseArray => {\r\n return _.map(responseArray, response => ExceptionCount.create(response));\r\n }));\r\n }\r\n\r\n queryNominationExceptionCounts(fromGasDay: IGasDay, toGasDay: IGasDay): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setGasDay(fromGasDay, 'fromGasDay');\r\n params.setGasDay(toGasDay, 'toGasDay');\r\n\r\n return this.nominationResource.get('/nominationrequests/exceptions/count', true, params).pipe(\r\n map(responseArray => {\r\n return _.map(responseArray, response => ExceptionCount.create(response));\r\n }));\r\n }\r\n\r\n queryNominationExceptions(customerId: number, gasDay: GasDay, gasCycleCode: string, status: string): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n if (customerId != null) {\r\n params.set('customerId', customerId.toString());\r\n }\r\n params.set('gasDay', gasDay.toString());\r\n params.set('gasCycleCode', gasCycleCode);\r\n params.set('status', status);\r\n\r\n return this.nominationResource.get('/nominationrequests/exceptions', true, params);\r\n }\r\n\r\n submitNominationRequests(customerId: number, hubNomGroupId: number, gasDay: GasDay, gasCycleCode: string, queryDateTime: Date, transportationRequests: TransportationNominationRequest[],\r\n receiptRequests: CustodyTransferNominationRequest[], deliveryRequests: CustodyTransferNominationRequest[], energyImbalanceInstructions: IEnergyImbalanceInstruction[] ): Observable {\r\n const body = {\r\n enterpriseId: customerId,\r\n nominationGroupId: hubNomGroupId,\r\n gasDay: gasDay.toString(),\r\n gasCycleCode: gasCycleCode,\r\n queryDateTime: queryDateTime,\r\n transportationRequests: transportationRequests,\r\n receiptRequests: receiptRequests,\r\n deliveryRequests: deliveryRequests,\r\n energyImbalanceInstructions: energyImbalanceInstructions\r\n };\r\n\r\n return this.nominationResource.postWithNoResponseBody('/nominationrequests/submit', body);\r\n }\r\n\r\n saveNominationRequests(customerId: number, hubNomGroupId: number, gasDay: GasDay, gasCycleCode: string, queryDateTime: Date, transportationRequests: TransportationNominationRequest[],\r\n receiptRequests: CustodyTransferNominationRequest[], deliveryRequests: CustodyTransferNominationRequest[] ): Observable {\r\n const body = {\r\n enterpriseId: customerId,\r\n nominationGroupId: hubNomGroupId,\r\n gasDay: gasDay.toString(),\r\n gasCycleCode: gasCycleCode,\r\n queryDateTime: queryDateTime,\r\n transportationRequests: transportationRequests,\r\n receiptRequests: receiptRequests,\r\n deliveryRequests: deliveryRequests\r\n };\r\n\r\n return this.nominationResource.postWithNoResponseBody('/nominationrequests/save', body);\r\n }\r\n\r\n // TODO - Seb: Sounds like should be a delete request rather than a POST\r\n deleteNominationRequests(customerId: number, hubNomGroupId: number, gasDay: GasDay, gasCycleCode: string, queryDateTime: Date, transportationRequests: TransportationNominationRequest[],\r\n receiptRequests: CustodyTransferNominationRequest[], deliveryRequests: CustodyTransferNominationRequest[] ): Observable {\r\n const body = {\r\n gasDay: gasDay.toString(),\r\n queryDateTime: queryDateTime,\r\n transportsToDelete: _.map(transportationRequests, x => x.id),\r\n receiptToDelete: _.map(receiptRequests, x => x.id),\r\n deliveryToDelete: _.map(deliveryRequests, x => x.id)\r\n };\r\n\r\n return this.nominationResource.postWithNoResponseBody('/nominationrequests/bulkdelete', body);\r\n }\r\n}\r\n","import {map} from 'rxjs/operators';\r\nimport {Injectable} from '@angular/core';\r\nimport {Observable} from \"rxjs\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {NominationResourceService} from \"@shared/resources/nominations-resource.service\";\r\nimport {IGasDay} from \"@model/gas-day-month.interface\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport * as _ from \"lodash\";\r\nimport {GasCycle} from \"@model/gas-cycle\";\r\nimport {BillableServiceOption} from \"@model/billable-service-option\";\r\nimport {TransactionType} from \"@shared/services/nomination/nomination-request/nomination-request.service\";\r\nimport {NominationGroup, NominationGroupCollection} from \"../nomination-nom-group/nomination-nom-group.service\";\r\nimport {IEnrichmentResource} from \"@shared/services/enrichment/base-enrichment.service\";\r\nimport {IEnrichmentLocation} from \"@shared/services/enrichment/location-enrichment.service\";\r\n\r\nexport interface INominationLocation {\r\n id: number;\r\n pipelineId: number;\r\n pipelineSystemId: number;\r\n locationClassification: string;\r\n name: string;\r\n spgId: number;\r\n onStreamGasDay: GasDay;\r\n state: string;\r\n operatorEnterpriseCid: number;\r\n glcLocationIdForMlVirtualLocation: number;\r\n accountingLocationParameters: INominationAccountingLocationParametersDto;\r\n}\r\n\r\nexport interface INominationLocationDto {\r\n id: number;\r\n pipelineId: number;\r\n pipelineSystemId: number;\r\n locationClassification: string;\r\n name: string;\r\n spgId: number;\r\n onStreamGasDay: string;\r\n state: string;\r\n operatorEnterpriseCid: number;\r\n glcLocationIdForMlVirtualLocation: number;\r\n accountingLocationParameters: INominationAccountingLocationParametersDto;\r\n}\r\n\r\nexport class NominationLocation implements IEnrichmentLocation {\r\n id: number;\r\n pipelineId: number;\r\n pipelineSystemId: number;\r\n locationClassification: string;\r\n name: string;\r\n spgId: number;\r\n onStreamGasDay: GasDay;\r\n state: string;\r\n operatorEnterpriseCid: number;\r\n glcLocationIdForMlVirtualLocation: number;\r\n accountingLocationParameters: NominationAccountingLocationParameters;\r\n\r\n public static create(dto: INominationLocationDto): NominationLocation {\r\n const nominationLocation = new NominationLocation();\r\n\r\n nominationLocation.id = dto.id;\r\n nominationLocation.pipelineId = dto.pipelineId;\r\n nominationLocation.locationClassification = dto.locationClassification;\r\n nominationLocation.name = dto.name;\r\n nominationLocation.spgId = dto.spgId;\r\n nominationLocation.onStreamGasDay = !_.isNil(dto.onStreamGasDay) ? GasDay.parse(dto.onStreamGasDay) : null;\r\n nominationLocation.state = dto.state;\r\n nominationLocation.operatorEnterpriseCid = dto.operatorEnterpriseCid;\r\n nominationLocation.glcLocationIdForMlVirtualLocation = dto.glcLocationIdForMlVirtualLocation;\r\n nominationLocation.accountingLocationParameters = !_.isNil(dto.accountingLocationParameters) ? NominationAccountingLocationParameters.create(dto.accountingLocationParameters) : null;\r\n\r\n return nominationLocation;\r\n }\r\n public isForCycle(gasCycleCode: string, isReceipt: boolean, billableServiceOption: BillableServiceOption): boolean {\r\n if (!GasCycle.isStsCycle(gasCycleCode)) { return true; }\r\n\r\n // receipt\r\n if (isReceipt) {\r\n if (_.isNil(billableServiceOption)) {\r\n return true;\r\n }\r\n\r\n if ((billableServiceOption.is(\"EMB\")) ||\r\n (billableServiceOption.is(\"STS\")) ||\r\n (billableServiceOption.is(\"STS-O\"))) {\r\n return this.accountingLocationParameters.areSTSCyclesConfirmed;\r\n } else {\r\n return true;\r\n }\r\n // delivery\r\n } else {\r\n return this.accountingLocationParameters.areSTSCyclesConfirmed;\r\n }\r\n }\r\n\r\n public isTransferLocationForCycle(transactionType: string, gasCycleCode: string, nomGroup: NominationGroup, nomGroups: NominationGroupCollection): boolean {\r\n if (!GasCycle.isStsCycle(gasCycleCode)) { return true; }\r\n\r\n if (TransactionType.isOnSystemOrOffSystem(transactionType)) {\r\n return this.accountingLocationParameters.areSTSCyclesConfirmed;\r\n }\r\n\r\n if (TransactionType.isFuelPackOrFuelDraft(transactionType)) {\r\n if (_.isNil(nomGroup)) {\r\n return false;\r\n }\r\n\r\n if (_.isNil(nomGroup.parentNominationGroupId)) {\r\n return false;\r\n }\r\n\r\n const parentNomGroup = nomGroups.findById(nomGroup.parentNominationGroupId);\r\n\r\n // Check if there is an STS Withdrawal limit for the parent nom group\r\n if (parentNomGroup.hasStsWithdrawalLimitPaths) {\r\n const withdrawalPaths = parentNomGroup.accountWithdrawalLimits;\r\n if (_.some(withdrawalPaths, x => x.receiptLocationId === this.id)) {\r\n return true;\r\n }\r\n }\r\n\r\n const primaryPath = parentNomGroup.getPrimaryPath();\r\n if (!_.isNil(primaryPath)) {\r\n // If primary path receipt location is the location, then it is valid\r\n if (this.id === primaryPath.receiptLocationId) {\r\n return true;\r\n }\r\n // Or, if the secondary receipt location's primary location equals the location id\r\n const secondaryReceiptLocations = primaryPath.getSecondaryReceiptLocations();\r\n return _.some(secondaryReceiptLocations, x => x.id === this.id);\r\n }\r\n }\r\n return false;\r\n }\r\n}\r\n\r\n/**\r\n * Base Collection, put common collection logic here.\r\n *\r\n */\r\nexport class BaseCollection extends Array {\r\n\r\n}\r\n\r\nexport class NominationLocationCollection extends BaseCollection {\r\n // Replace the prototype of Array with our custom definitions\r\n public static create(items?: Array): NominationLocationCollection {\r\n const locations = Object.create(NominationLocationCollection.prototype);\r\n _.forEach(items, x => locations.push(x));\r\n return locations;\r\n }\r\n\r\n /**\r\n * If you do not specify an order by function, then it will order by name by default.\r\n *\r\n * USAGE: collection.orderBy((x: NominationLocation): number => x.id);\r\n *\r\n * @param {IOrderByFunction} orderByFunction\r\n * @returns {NominationLocationCollection}\r\n */\r\n public orderBy(orderByFunction?: (location: NominationLocation) => TReturnType): NominationLocationCollection {\r\n const orderBy = orderByFunction ? orderByFunction : (location: NominationLocation) => location.name;\r\n const orderedNominationLocations = _.orderBy(this, orderBy);\r\n return NominationLocationCollection.create(orderedNominationLocations);\r\n }\r\n}\r\n\r\nexport interface INominationAccountingLocationParametersDto {\r\n allocationMethod: string;\r\n isExport: boolean;\r\n isPressurePoint: boolean;\r\n isNominationsAllowed: boolean;\r\n confirmationMethod: string;\r\n isConfirmationByEDI: boolean;\r\n isPackageIdConfirmed: boolean;\r\n confirmationUOM: string;\r\n overrideAllowed: boolean;\r\n isReceipt: boolean;\r\n isDelivery: boolean;\r\n isVirtual: boolean;\r\n isTboNominationAllowed: boolean;\r\n isCVAllowed: boolean;\r\n isConfirmed: boolean;\r\n isConfirmedAtItself: boolean;\r\n areSTSCyclesConfirmed: boolean;\r\n reportOnGdsr: boolean;\r\n reportOnUhf: boolean;\r\n isManualHourlySqOnUhf: boolean;\r\n isSecondaryHubNomAllowed: boolean;\r\n showFlowRateOnConfirmation: boolean;\r\n ediConfirmationMethod: string;\r\n ngtlLocationNumber: string;\r\n ngtlLocationMnemonic: string;\r\n}\r\n\r\nexport class NominationAccountingLocationParameters {\r\n allocationMethod: string;\r\n isExport: boolean;\r\n isPressurePoint: boolean;\r\n isNominationsAllowed: boolean;\r\n confirmationMethod: string;\r\n isConfirmationByEDI: boolean;\r\n isPackageIdConfirmed: boolean;\r\n confirmationUOM: string;\r\n overrideAllowed: boolean;\r\n isReceipt: boolean;\r\n isDelivery: boolean;\r\n isVirtual: boolean;\r\n isTboNominationAllowed: boolean;\r\n isCVAllowed: boolean;\r\n isConfirmed: boolean;\r\n isConfirmedAtItself: boolean;\r\n areSTSCyclesConfirmed: boolean;\r\n reportOnGdsr: boolean;\r\n reportOnUhf: boolean;\r\n isManualHourlySqOnUhf: boolean;\r\n isSecondaryHubNomAllowed: boolean;\r\n showFlowRateOnConfirmation: boolean;\r\n ediConfirmationMethod: string;\r\n ngtlLocationNumber: string;\r\n ngtlLocationMnemonic: string;\r\n\r\n public static create(dto: INominationAccountingLocationParametersDto): NominationAccountingLocationParameters {\r\n const nominationAccountingParameters = new NominationAccountingLocationParameters();\r\n nominationAccountingParameters.allocationMethod = dto.allocationMethod;\r\n nominationAccountingParameters.isExport = dto.isExport;\r\n nominationAccountingParameters.isPressurePoint = dto.isPressurePoint;\r\n nominationAccountingParameters.isNominationsAllowed = dto.isNominationsAllowed;\r\n nominationAccountingParameters.confirmationMethod = dto.confirmationMethod;\r\n nominationAccountingParameters.isConfirmationByEDI = dto.isConfirmationByEDI;\r\n nominationAccountingParameters.isPackageIdConfirmed = dto.isPackageIdConfirmed;\r\n nominationAccountingParameters.confirmationUOM = dto.confirmationUOM;\r\n nominationAccountingParameters.overrideAllowed = dto.overrideAllowed;\r\n nominationAccountingParameters.isReceipt = dto.isReceipt;\r\n nominationAccountingParameters.isDelivery = dto.isDelivery;\r\n nominationAccountingParameters.isVirtual = dto.isVirtual;\r\n nominationAccountingParameters.isTboNominationAllowed = dto.isTboNominationAllowed;\r\n nominationAccountingParameters.isCVAllowed = dto.isCVAllowed;\r\n nominationAccountingParameters.isConfirmed = dto.isConfirmed;\r\n nominationAccountingParameters.isConfirmedAtItself = dto.isConfirmedAtItself;\r\n nominationAccountingParameters.areSTSCyclesConfirmed = dto.areSTSCyclesConfirmed;\r\n nominationAccountingParameters.reportOnGdsr = dto.reportOnGdsr;\r\n nominationAccountingParameters.reportOnUhf = dto.reportOnUhf;\r\n nominationAccountingParameters.isManualHourlySqOnUhf = dto.isManualHourlySqOnUhf;\r\n nominationAccountingParameters.isSecondaryHubNomAllowed = dto.isSecondaryHubNomAllowed;\r\n nominationAccountingParameters.showFlowRateOnConfirmation = dto.showFlowRateOnConfirmation;\r\n nominationAccountingParameters.ediConfirmationMethod = dto.ediConfirmationMethod;\r\n nominationAccountingParameters.ngtlLocationNumber = dto.ngtlLocationNumber;\r\n nominationAccountingParameters.ngtlLocationMnemonic = dto.ngtlLocationMnemonic;\r\n\r\n return nominationAccountingParameters;\r\n }\r\n}\r\n\r\nexport class LocationSearchParams {\r\n gasDay: IGasDay;\r\n endGasDay: IGasDay;\r\n onlyNominationsAllowed: boolean;\r\n onlyOperatorLocations: boolean;\r\n includeTbo: boolean;\r\n onlyManualForUhf: boolean;\r\n onlyUhfReportLocations: boolean;\r\n\r\n constructor(gasDay: IGasDay, onlyNominationsAllowed: boolean, endGasDay?: IGasDay, onlyOperatorLocations?: boolean, includeTbo?: boolean, onlyManualForUhf?: boolean, onlyUhfReportLocations: boolean = false) {\r\n this.gasDay = gasDay;\r\n this.onlyNominationsAllowed = onlyNominationsAllowed;\r\n this.endGasDay = endGasDay;\r\n this.onlyOperatorLocations = onlyOperatorLocations;\r\n this.includeTbo = includeTbo;\r\n this.onlyManualForUhf = onlyManualForUhf;\r\n this.onlyUhfReportLocations = onlyUhfReportLocations;\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport class NominationLocationService implements IEnrichmentResource {\r\n\r\n constructor(private nominationsResource: NominationResourceService) {\r\n }\r\n\r\n queryAll(searchParams: LocationSearchParams): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n if (searchParams.gasDay != null) {params.set('GasDay', searchParams.gasDay.toString()); }\r\n if (searchParams.endGasDay != null) {params.set('EndGasDay', searchParams.endGasDay.toString()); }\r\n if (searchParams.onlyNominationsAllowed != null) {params.set('OnlyNominationsAllowed', searchParams.onlyNominationsAllowed.toString()); }\r\n if (searchParams.onlyOperatorLocations != null) {params.set('OnlyOperatorLocations', searchParams.onlyOperatorLocations.toString()); }\r\n if (searchParams.includeTbo != null) {params.set('IncludeTbo', searchParams.includeTbo.toString()); }\r\n\r\n return this.nominationsResource.get('/locations', true, params);\r\n }\r\n\r\n queryLocationNames(searchParams: LocationSearchParams): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n if (searchParams.gasDay != null) {params.set('GasDay', searchParams.gasDay.toString()); }\r\n if (searchParams.endGasDay != null) {params.set('EndGasDay', searchParams.endGasDay.toString()); }\r\n if (searchParams.onlyNominationsAllowed != null) {params.set('OnlyNominationsAllowed', searchParams.onlyNominationsAllowed.toString()); }\r\n if (searchParams.onlyOperatorLocations != null) {params.set('OnlyOperatorLocations', searchParams.onlyOperatorLocations.toString()); }\r\n if (searchParams.includeTbo != null) {params.set('IncludeTbo', searchParams.includeTbo.toString()); }\r\n if (searchParams.onlyManualForUhf != null) {params.set('OnlyManualForUhf', searchParams.onlyManualForUhf.toString()); }\r\n if (searchParams.onlyUhfReportLocations != null) {params.set('OnlyUhfReportLocations', searchParams.onlyUhfReportLocations.toString()); }\r\n return this.nominationsResource.get('/locations/names', true, params);\r\n }\r\n\r\n queryAllDetails(searchParams: LocationSearchParams): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n if (searchParams.gasDay != null) {params.set('GasDay', searchParams.gasDay.toString()); }\r\n if (searchParams.endGasDay != null) {params.set('EndGasDay', searchParams.endGasDay.toString()); }\r\n if (searchParams.onlyNominationsAllowed != null) {params.set('OnlyNominationsAllowed', searchParams.onlyNominationsAllowed.toString()); }\r\n if (searchParams.onlyOperatorLocations != null) {params.set('OnlyOperatorLocations', searchParams.onlyOperatorLocations.toString()); }\r\n if (searchParams.includeTbo != null) {params.set('IncludeTbo', searchParams.includeTbo.toString()); }\r\n\r\n return this.nominationsResource.get('/locations/details', true, params);\r\n }\r\n\r\n queryAllDetails2(searchParams: LocationSearchParams): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n if (searchParams.gasDay != null) {params.set('GasDay', searchParams.gasDay.toString()); }\r\n if (searchParams.endGasDay != null) {params.set('EndGasDay', searchParams.endGasDay.toString()); }\r\n if (searchParams.onlyNominationsAllowed != null) {params.set('OnlyNominationsAllowed', searchParams.onlyNominationsAllowed.toString()); }\r\n if (searchParams.onlyOperatorLocations != null) {params.set('OnlyOperatorLocations', searchParams.onlyOperatorLocations.toString()); }\r\n if (searchParams.includeTbo != null) {params.set('IncludeTbo', searchParams.includeTbo.toString()); }\r\n\r\n return this.nominationsResource.get('/locations/details', true, params).pipe(\r\n map(dto => {\r\n const nominationLocationDto = _.map(dto, x => NominationLocation.create(x));\r\n return NominationLocationCollection.create(nominationLocationDto);\r\n }));\r\n }\r\n\r\n get(id: number): Observable {\r\n return this.nominationsResource.get(`/locations/${id}`);\r\n }\r\n\r\n enrichmentQueryAll(gasDay: GasDay): Observable {\r\n return this.queryLocationNames(new LocationSearchParams(gasDay, false, GasDay.maxGasDay()));\r\n }\r\n\r\n enrichmentGet(id: number, gasDay: GasDay): Observable {\r\n return this.get(id);\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\nimport {Params} from \"@angular/router\";\r\nimport {GasDay} from \"./gas-day\";\r\nimport {IGasMonth} from \"@model/gas-day-month.interface\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {DateTime} from \"@model/date-time\";\r\n\r\n/* It is assumed that param validators have been ran at the point of calling these TypedParams\r\n therefore no extra validation is ran. These TypedParams are called after param validation\r\n in the workflow.\r\n */\r\nexport class TypedParams {\r\n constructor(private readonly params: Params) {}\r\n\r\n public asNumber(paramName: string): number {\r\n return +this.params[paramName];\r\n }\r\n\r\n public asGasDay(paramName: string): GasDay {\r\n return GasDay.parse(this.params[paramName]);\r\n }\r\n\r\n public asNullableGasDay(paramName: string): GasDay {\r\n const gasDayStr = this.params[paramName];\r\n if (_.isNil(gasDayStr)) {\r\n return null;\r\n }\r\n return GasDay.parse(gasDayStr);\r\n }\r\n\r\n public asGasMonth(paramName: string): GasMonth {\r\n return GasMonth.parse(this.params[paramName]);\r\n }\r\n\r\n public asBoolean(paramName: string): boolean {\r\n return this.params[paramName] === 'true';\r\n }\r\n\r\n public asNullableBoolean(paramName: string): boolean {\r\n if (_.isNil(this.params[paramName])) {\r\n return null;\r\n }\r\n\r\n const value = this.asBoolean(paramName);\r\n if (_.isBoolean(value)) {\r\n return value;\r\n }\r\n return null;\r\n }\r\n\r\n public asString(paramName: string): string {\r\n return this.params[paramName];\r\n }\r\n\r\n public asNullableNumber(paramName: string): number {\r\n if (_.isNil(this.params[paramName])) {\r\n return null;\r\n }\r\n\r\n const value = this.asNumber(paramName);\r\n\r\n return _.isNaN(value) ? null : value;\r\n }\r\n\r\n public asListOfNumbers(paramName: string): number[] {\r\n return this.parseList(this.asString(paramName));\r\n }\r\n\r\n public asListOfStrings(paramName: string): string[] {\r\n return this.parseListString(this.asString(paramName));\r\n }\r\n\r\n // TODO: Re-visit, shouldn't be using any\r\n private parseListString(parameterValue: any): string[] {\r\n if (parameterValue && typeof(parameterValue) === 'string') {\r\n parameterValue = parameterValue.split(',');\r\n }\r\n return (parameterValue !== undefined && parameterValue !== null && parameterValue !== '') ? parameterValue.map(String) : [];\r\n }\r\n // TODO: Re-visit, shouldn't be using any\r\n private parseList(parameterValue: any): number[] {\r\n if (parameterValue && typeof(parameterValue) === 'string') {\r\n parameterValue = parameterValue.split(',');\r\n }\r\n return (parameterValue !== undefined && parameterValue !== null && parameterValue !== '') ? parameterValue.map(Number) : [];\r\n }\r\n\r\n // Use case is if we want undefined to be converted to nulls\r\n public asNullableString(paramName: string): string {\r\n return _.isNil(this.params[paramName]) ? null\r\n : this.asString(paramName);\r\n }\r\n\r\n /* Seb - This could be removed and param-validator.ts refactored to utilize TypedParams\r\n * when all components have been updated to use the new workflow process\r\n */\r\n public get getParams(): Params {\r\n return this.params;\r\n }\r\n}\r\n","import {of, Observable, Subscription} from 'rxjs';\r\n\r\nimport {tap, concatMap} from 'rxjs/operators';\r\nimport * as _ from \"lodash\";\r\nimport {AppService} from \"../services/webapp/app/app.service\";\r\nimport {BaseComponent} from \"./base-component\";\r\nimport {OnDestroy, OnInit} from \"@angular/core\";\r\nimport {ActivatedRoute, NavigationEnd, Params, Router} from \"@angular/router\";\r\nimport {TypedParams} from \"./typed-params\";\r\nimport {AlertService} from \"app/shared/services/webapp/alert/alert.service\";\r\n\r\nexport abstract class BaseSearchComponent extends BaseComponent implements OnInit, OnDestroy {\r\n private isResourcesLoaded: boolean = false;\r\n\r\n /**\r\n * Used to check if a search should be run when params don't match data from the page.\r\n * For example, an old bookmark to a page could contain an Enterprise that is no longer valid.\r\n * We don't want to execute a search on that data.\r\n */\r\n private areParamsOutOfSync: boolean = false;\r\n private $subscriptionsToTrack: Subscription[] = [];\r\n\r\n protected constructor(protected componentTitle: string,\r\n protected appService: AppService,\r\n protected activatedRoute: ActivatedRoute,\r\n protected router: Router,\r\n protected alertService: AlertService) {\r\n super(appService);\r\n this.appService.hideMenu();\r\n this.appService.clearMessages();\r\n }\r\n\r\n ngOnInit(): void {\r\n super.setTitle(this.componentTitle);\r\n\r\n this.performOnInit(this.activatedRoute.snapshot.queryParams);\r\n\r\n // Creates an event for when routing within the same page: Search and Resets\r\n this.trackSubscription(\r\n this.router.events.subscribe(event => {\r\n if (event instanceof NavigationEnd) {\r\n const params = this.router.parseUrl(event.url).queryParams;\r\n this.setupParams(params, false).subscribe(() => {\r\n });\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.$subscriptionsToTrack.forEach($s => $s.unsubscribe());\r\n }\r\n\r\n /**\r\n * Public Methods\r\n */\r\n\r\n trackSubscription($subscription: Subscription): void {\r\n this.$subscriptionsToTrack.push($subscription);\r\n }\r\n\r\n searchClicked(): void {\r\n this.resetSortOrder();\r\n this.alertService.clearMessages();\r\n this.router.navigate([], {queryParams: this.buildQueryParams()}).then(() => { });\r\n }\r\n\r\n resetClicked(): void {\r\n this.isResourcesLoaded = false;\r\n this.resetSortOrder();\r\n this.alertService.clearMessages();\r\n\r\n this.router.navigate([]).then(results => {\r\n // results -> navigationWasSuccessful\r\n // true -> UI had unsaved changes and user chose to continue in modal = call UI reset completed\r\n // false -> UI had unsaved changes and user chose to NOT continue in modal = DO NOTHING\r\n // null -> UI had no unsaved changes = call UI reset completed\r\n if (results === null || results) {\r\n this.resetCompleted();\r\n }\r\n });\r\n }\r\n\r\n protected markParamsOutOfSync(): void {\r\n this.areParamsOutOfSync = true;\r\n }\r\n /**\r\n * Private Methods\r\n */\r\n\r\n private performOnInit(params: Params): void {\r\n this.appService.clearMessages();\r\n\r\n this.baseLoadInitialResources()\r\n .pipe(\r\n concatMap(() => this.setupParams(params, true))\r\n )\r\n .subscribe(() => {\r\n // this.isResourcesLoaded = true;\r\n this.loadCompleted();\r\n });\r\n }\r\n\r\n private setupParams(params: Params, isInitialLoadOfComponent: boolean): Observable {\r\n if (_.isEmpty(params) || !this.areParamsValid(params)) {\r\n return this.setupForEmptyParams(isInitialLoadOfComponent);\r\n } else {\r\n return this.setupForNonEmptyParamsAndSearch(new TypedParams(params));\r\n }\r\n }\r\n\r\n private setupForEmptyParams(isInitialLoadOfComponent: boolean): Observable {\r\n this.setDefaultSearchParams();\r\n if (isInitialLoadOfComponent || this.shouldReloadSearchResourcesForEmptyParams()) {\r\n return this.baseLoadSearchResources();\r\n } else {\r\n return of(null);\r\n }\r\n }\r\n\r\n private setupForNonEmptyParamsAndSearch(params: TypedParams): Observable {\r\n this.setSearchParams(params);\r\n return this.baseLoadSearchResources()\r\n .pipe(\r\n concatMap(() => this.basePerformSearch())\r\n );\r\n }\r\n\r\n private baseLoadInitialResources(): Observable {\r\n if (this.isResourcesLoaded) return of(null);\r\n return this.loadInitialResources();\r\n }\r\n\r\n private baseLoadSearchResources(): Observable {\r\n this.areParamsOutOfSync = true;\r\n if (this.isResourcesLoaded) return of(null);\r\n return this.loadSearchResources();\r\n }\r\n\r\n private basePerformSearch(): Observable {\r\n if (this.areParamsOutOfSync) {\r\n return this.performSearch().pipe(tap(() => {\r\n this.searchCompleted();\r\n }));\r\n } else {\r\n return of(null);\r\n }\r\n }\r\n\r\n /**\r\n * Virtual Methods\r\n */\r\n\r\n protected loadCompleted(): void {\r\n // Do Nothing\r\n }\r\n\r\n protected searchCompleted(): void {\r\n // Do Nothing\r\n }\r\n\r\n /**\r\n * Implement this to make a page smarter about when it should reload search resources or not after a Reset.\r\n * Often times we may not need to call reloadSearchResources when we hit Reset. For example, the gas day after reset is the same as before.\r\n * Therefore we don't need to reload all the drop down data (gas cycles, locations, customers, etc)\r\n */\r\n protected shouldReloadSearchResourcesForEmptyParams(): boolean {\r\n return true;\r\n }\r\n\r\n /**\r\n * Implement this to clear grids, and do other work. Resetting search params is done elsewhere.\r\n */\r\n protected resetCompleted(): void {\r\n // Do Nothing\r\n }\r\n\r\n /**\r\n * Abstract Methods\r\n */\r\n\r\n protected abstract loadInitialResources(): Observable;\r\n protected abstract loadSearchResources(): Observable;\r\n\r\n protected abstract areParamsValid(params: Params): boolean;\r\n protected abstract setSearchParams(typedParams: TypedParams): void;\r\n protected abstract setDefaultSearchParams(): void;\r\n\r\n protected abstract performSearch(): Observable;\r\n\r\n protected abstract buildQueryParams(): any;\r\n protected abstract resetSortOrder(): void;\r\n}\r\n","import {GasDay} from \"./gas-day\";\r\nimport { GasCycle } from \"./gas-cycle\";\r\nimport {SimpleGasDayCycleStatus} from \"./simple-gas-day-cycle-status\";\r\n\r\nexport class GasDayCycleStatus extends SimpleGasDayCycleStatus {\r\n static NomWindowClosedStatus: string = 'Nom Window Closed';\r\n static NomWindowOpenStatus: string = 'Nom Window Open';\r\n public static ScheduledStatus: string = 'Scheduled';\r\n\r\n gasDayCycleString: string;\r\n nominationExceptions: number = 0;\r\n capacityAllocationExceptions: number = 0;\r\n locationExceptions: number = 0;\r\n locationExceptionsHaveRedVariance: boolean = false;\r\n sequence: number;\r\n nomWindowClosedStatusLinkEnabled: boolean;\r\n canSchedule: boolean;\r\n canUnschedule: boolean;\r\n canAutoBalanceHubs: boolean;\r\n canForceNomWindowOpen: boolean;\r\n canRemoveForceNomWindowOpen: boolean;\r\n\r\n pendingNominations: number = null;\r\n\r\n public static create(gasDayCycleStatusDto: any): GasDayCycleStatus {\r\n const gasDayCycleStatus = new GasDayCycleStatus();\r\n gasDayCycleStatus.gasDayCycleString = gasDayCycleStatusDto.gasDayCycleString;\r\n gasDayCycleStatus.sequence = gasDayCycleStatusDto.sequence;\r\n gasDayCycleStatus.nomWindowClosedStatusLinkEnabled = gasDayCycleStatusDto.nomWindowClosedStatusLinkEnabled;\r\n gasDayCycleStatus.canSchedule = gasDayCycleStatusDto.canSchedule;\r\n gasDayCycleStatus.canUnschedule = gasDayCycleStatusDto.canUnschedule;\r\n gasDayCycleStatus.canAutoBalanceHubs = gasDayCycleStatusDto.canAutoBalanceHubs;\r\n gasDayCycleStatus.canForceNomWindowOpen = gasDayCycleStatusDto.canForceNomWindowOpen;\r\n gasDayCycleStatus.canRemoveForceNomWindowOpen = gasDayCycleStatusDto.canRemoveForceNomWindowOpen;\r\n\r\n // these are the same as the base\r\n gasDayCycleStatus.pipelineSystem = gasDayCycleStatusDto.pipelineSystem;\r\n gasDayCycleStatus.gasDay = GasDay.parse(gasDayCycleStatusDto.gasDay);\r\n gasDayCycleStatus.gasCycle = GasCycle.create(gasDayCycleStatusDto.gasCycle);\r\n gasDayCycleStatus.nominationDeadline = new Date(gasDayCycleStatusDto.nominationDeadline);\r\n gasDayCycleStatus.status = gasDayCycleStatusDto.status;\r\n gasDayCycleStatus.isLaunched = !!gasDayCycleStatusDto.isLaunched;\r\n\r\n return gasDayCycleStatus;\r\n }\r\n}\r\n","import * as _ from \"lodash\";\r\nimport {GasCycle} from \"./gas-cycle\";\r\nimport {SimpleGasDayCycleStatus} from \"./simple-gas-day-cycle-status\";\r\nimport {GasDayCycleStatus} from \"./gas-day-cycle-status\";\r\n\r\n/**\r\n * This classed, TypeScript does not support Sealed. Never extend from this class due to prototyping!\r\n *\r\n * https://blog.simontest.net/extend-array-with-typescript-965cc1134b3\r\n */\r\nexport class GasDayCycleStatusCollection extends Array {\r\n // Replace the prototype of Array with our custom definitions\r\n public static create(items?: Array): GasDayCycleStatusCollection {\r\n const gasDayCycleStatuses = Object.create(GasDayCycleStatusCollection.prototype);\r\n _.forEach(items, x => gasDayCycleStatuses.push(x));\r\n return gasDayCycleStatuses;\r\n }\r\n\r\n // Use the factory to create this object\r\n private constructor(items?: Array) {\r\n super(...items);\r\n }\r\n\r\n public gasCycles(): GasCycle[] {\r\n return _.map(this, x => x?.gasCycle);\r\n }\r\n\r\n public naesbGasCycles(): GasCycle[] {\r\n return _.filter(this.gasCycles(), x => x.isNaesbCycle);\r\n }\r\n\r\n public nonStsGasCycles(): GasCycle[] {\r\n return _.filter(this.gasCycles(), x => !x.isStsCycle);\r\n }\r\n\r\n public isGasDayLaunched(): boolean {\r\n return this.getTimelyGasDayCycleStatus()?.isLaunched; // Gas Day is launched if Timely is launched.\r\n }\r\n\r\n public getTimelyGasDayCycleStatus(): SimpleGasDayCycleStatus {\r\n return this.getGasDayCycleStatus(GasCycle.TimelyCycleCode);\r\n }\r\n\r\n public getGasDayCycleStatus(gasCycleCode: string): SimpleGasDayCycleStatus {\r\n return _.find(this, x => x.gasCycle.code === gasCycleCode);\r\n }\r\n\r\n /**\r\n * Returns the earliest Gas Day Cycle Status where the status is Nom Window Opened. If the gas day is not launched,\r\n * then it will only return the timely gas day cycle status.\r\n * @returns first cycle with nom window open {SimpleGasDayCycleStatus}\r\n */\r\n public defaultEarliestNomWindowOpen(defaultToID1: boolean = false): SimpleGasDayCycleStatus {\r\n if (!this.isGasDayLaunched() || this.areAllGasDayCycleStatusesNotOpen()) return this.getTimelyGasDayCycleStatus();\r\n\r\n const earliestNomWindowOpen = this.filterForOpen().earliestBySequence();\r\n\r\n // On the nomination request page, we want to default to ID1 if both STS01 and ID1 are open\r\n // Default behavior of sorting by ascending gas cycle sequence will not work as STS01 sequence < ID1 sequence\r\n if (defaultToID1 && earliestNomWindowOpen.gasCycle.code === GasCycle.STS11Code) {\r\n if (this.isSts11AndID1Open()) return this.getGasDayCycleStatus(GasCycle.ID1Code);\r\n }\r\n\r\n return earliestNomWindowOpen;\r\n }\r\n\r\n public defaultNaesbEarliestNomWindowOpen(): SimpleGasDayCycleStatus {\r\n if (!this.isGasDayLaunched()) return this.getTimelyGasDayCycleStatus();\r\n if (this.filterForNaesb().areAllGasDayCycleStatusesNotOpen()) return this.getGasDayCycleStatus(GasCycle.ID3Code);\r\n\r\n return this.filterForNaesb().filterForOpen().earliestBySequence();\r\n }\r\n\r\n /**\r\n * Returns the earliest Gas Day Cycle Status where the status is not Scheduled. If the gas day is not launched,\r\n * then it will only return the timely gas day cycle status. If all gas day cycle statuses are scheduled, then\r\n * this will return the last gas day cycle status.\r\n * @returns first cycle which is not scheduled {SimpleGasDayCycleStatus}\r\n */\r\n public defaultEarliestNonScheduled(defaultToID1: boolean = false): SimpleGasDayCycleStatus {\r\n return this.getDefaultEarliestNonScheduled(this, defaultToID1);\r\n }\r\n\r\n /**\r\n * Returns the earliest Gas Day Cycle Status where the cap alloc status is not Authorized. If the gas day is not launched,\r\n * then it will only return the timely gas day cycle status. If all gas day cycle statuses are scheduled, then\r\n * this will return the last gas day cycle status.\r\n * @returns first status not in capacity allocation authorized state {SimpleGasDayCycleStatus}\r\n */\r\n public defaultEarliestNotAuthorized(): SimpleGasDayCycleStatus {\r\n return this.getDefaultEarliestNotAuthorized(this);\r\n }\r\n\r\n public defaultNaesbEarliestNonScheduled(): SimpleGasDayCycleStatus {\r\n return this.getDefaultEarliestNonScheduled(GasDayCycleStatusCollection.create(_.filter(this, x => x.gasCycle.isNaesbCycle)));\r\n }\r\n\r\n public defaultLatestScheduled(): SimpleGasDayCycleStatus {\r\n return this.getDefaultLatestScheduled(this);\r\n }\r\n\r\n public defaultEarliestOpenStsGasCycle(): SimpleGasDayCycleStatus {\r\n const earliestOpenStsGasCycle = this\r\n .filterForOpen()\r\n .filterForStsGasCycles()\r\n .earliestBySequence();\r\n\r\n if(earliestOpenStsGasCycle != null) return earliestOpenStsGasCycle;\r\n\r\n return this\r\n .filterForStsGasCycles()\r\n .earliestBySequence();\r\n }\r\n\r\n /**\r\n * If Gas Day is Launched, return all Gas Day Cycle Statuses, if not, then return only the Timely Gas Day Cycle Status\r\n * @returns collection of statuses {GasDayCycleStatusCollection}\r\n */\r\n public defaultGasDayCycleStatuses(): GasDayCycleStatusCollection {\r\n return this.isGasDayLaunched()\r\n ? this\r\n : this.onlyTimelyGasDayCycleStatus();\r\n }\r\n\r\n /**\r\n * If Gas Day is Launched, return only the Gas Day Cycle Statuses that are closed or can be nominated, if not, then return only the Timely Gas Day Cycle Status\r\n */\r\n public defaultGasDayCycleStatusesForNomination(): GasDayCycleStatusCollection {\r\n if (!this.isGasDayLaunched()) return this.onlyTimelyGasDayCycleStatus();\r\n\r\n return GasDayCycleStatusCollection.create(_.filter(this, x => x.isClosedForNomination || x.isOpenForNomination));\r\n }\r\n\r\n /**\r\n * If Gas Day is Launched, return only the Gas Day Cycle Statuses where the previous cycle is authorized, if none, then return only the Timely Gas Day Cycle Status\r\n */\r\n public defaultGasDayCycleStatusesForCapacityAllocation(): GasDayCycleStatusCollection {\r\n if (!this.isGasDayLaunched()) return this.onlyTimelyGasDayCycleStatus();\r\n \r\n return GasDayCycleStatusCollection.create(_.filter(this, x => (x.gasCycle.code === GasCycle.TimelyCycleCode) || this.isPreviousCycleAuthorized(x.gasCycle.code)));\r\n }\r\n\r\n public defaultNaesbGasDayCycleStatusesForNomination(): GasDayCycleStatusCollection {\r\n if (!this.isGasDayLaunched()) return this.onlyTimelyGasDayCycleStatus();\r\n\r\n return GasDayCycleStatusCollection.create(_.filter(this, x => (x.isClosedForNomination || x.isOpenForNomination) && x.gasCycle.isNaesbCycle));\r\n }\r\n\r\n public defaultNonStsGasDayCycleStatusesForNomination(): GasDayCycleStatusCollection {\r\n if (!this.isGasDayLaunched()) return this.onlyTimelyGasDayCycleStatus();\r\n\r\n return GasDayCycleStatusCollection.create(_.filter(this, x => (x.isClosedForNomination || x.isOpenForNomination) && !x.gasCycle.isStsCycle));\r\n }\r\n\r\n /**\r\n * If Gas Day is Launched, return only the Gas Day Cycle Statuses that can be nominated, if not, then return only the Timely Gas Day Cycle Status\r\n */\r\n public defaultGasDayCycleStatusesOpenForNomination(): GasDayCycleStatusCollection {\r\n if (!this.isGasDayLaunched()) return this.onlyTimelyGasDayCycleStatus();\r\n\r\n return GasDayCycleStatusCollection.create(_.filter(this, x => x.isOpenForNomination));\r\n }\r\n\r\n /**\r\n * Return only the Timely Gas Day Cycle Status\r\n */\r\n private onlyTimelyGasDayCycleStatus(): GasDayCycleStatusCollection {\r\n return GasDayCycleStatusCollection.create([this.getTimelyGasDayCycleStatus()]);\r\n }\r\n\r\n /**\r\n * Gas Day is closed when all cycles are closed for nomination\r\n */\r\n public isGasDayClosed(): boolean {\r\n return _.every(this, x => x.isClosedForNomination);\r\n }\r\n\r\n public isGasDayAllocated(): boolean{\r\n return _.some(this, x => x.isAllocated);\r\n }\r\n\r\n public allCyclesScheduled(): boolean {\r\n return _.every(this, x => x.isScheduled);\r\n }\r\n\r\n public isPreviousCycleScheduled(gasCycleCode: string): boolean {\r\n const currentCycleStatus = _.find(this, x => x.gasCycle.code === gasCycleCode);\r\n const previousCycleStatus = this.getPreviousGasCycleStatus(currentCycleStatus.gasCycle);\r\n // if we don't find a previous cycle status, then maybe this is the timely, and therefore there is no previously scheduled cycle?\r\n if (_.isNil(previousCycleStatus)) return false;\r\n return previousCycleStatus.isScheduled;\r\n }\r\n\r\n public isPreviousCycleAuthorized(gasCycleCode: string): boolean {\r\n const currentCycleStatus = _.find(this, x => x.gasCycle.code === gasCycleCode);\r\n const previousCycleStatus = this.getPreviousGasCycleStatus(currentCycleStatus.gasCycle);\r\n // if we don't find a previous cycle status, then maybe this is the timely, and therefore there is no previously scheduled cycle?\r\n if (_.isNil(previousCycleStatus)) return false;\r\n return previousCycleStatus.isCapacityAllocationAuthorized();\r\n }\r\n\r\n public isCycleClosedForNominations(gasCycleCode: string): boolean {\r\n return _.find(this, x => x.gasCycle.code === gasCycleCode).isClosedForNomination;\r\n }\r\n\r\n public isCycleScheduled(gasCycleCode: string): boolean {\r\n return _.find(this, x => x.gasCycle.code === gasCycleCode).isScheduled;\r\n }\r\n\r\n public isCyclePreliminaryOrGreater(gasCycleCode: string): boolean {\r\n return _.find(this, x => x.gasCycle.code === gasCycleCode).isAtLeastPreliminary();\r\n }\r\n\r\n public endOfDayGasCycleStatus(isForNaesb: boolean = false, isForNonSts: boolean = false): SimpleGasDayCycleStatus {\r\n const gasDayCycleStatuses = isForNaesb ? _.filter(this, x => x.gasCycle.isNaesbCycle) :\r\n isForNonSts ? _.filter(this, x => !x.gasCycle.isStsCycle) : this;\r\n return _.maxBy(gasDayCycleStatuses, x => x.gasCycle.sequence);\r\n }\r\n\r\n public endOfDayGasCycle(isForNaesb: boolean = false, isForNonSts: boolean = false): GasCycle {\r\n return this.endOfDayGasCycleStatus(isForNaesb, isForNonSts).gasCycle;\r\n }\r\n\r\n public getPreviousGasCycleStatus(gasCycle: GasCycle): SimpleGasDayCycleStatus {\r\n return _.chain(this)\r\n .filter(c => c.gasCycle.sequence < gasCycle.sequence)\r\n .maxBy(c => c.gasCycle.sequence)\r\n .value();\r\n }\r\n\r\n private getDefaultEarliestNonScheduled(gasDayCycleStatuses: GasDayCycleStatusCollection, defaultToID1: boolean = false): SimpleGasDayCycleStatus {\r\n // Gas Day Not Launched and does not contain any Scheduled Statuses\r\n if (!gasDayCycleStatuses.isGasDayLaunched() || !this.anyScheduled()) return this.getTimelyGasDayCycleStatus();\r\n\r\n // All Gas Day Cycle Statuses are Scheduled\r\n if (this.allScheduled()) {\r\n return _.maxBy(gasDayCycleStatuses, gasDayCycleStatus => gasDayCycleStatus.gasCycle.sequence);\r\n }\r\n\r\n const earliestNonScheduled = this.filterForNonScheduled().earliestBySequence();\r\n\r\n return defaultToID1 && earliestNonScheduled.gasCycle.code === GasCycle.STS11Code\r\n ? this.getGasDayCycleStatus(GasCycle.ID1Code)\r\n : earliestNonScheduled;\r\n }\r\n\r\n private getDefaultLatestScheduled(gasDayCycleStatuses: GasDayCycleStatusCollection): SimpleGasDayCycleStatus {\r\n // Gas Day Not Launched and does not contain any Scheduled Statuses\r\n if (!gasDayCycleStatuses.isGasDayLaunched() || !_.some(gasDayCycleStatuses, x => x.status === GasDayCycleStatus.ScheduledStatus)) return this.getTimelyGasDayCycleStatus();\r\n\r\n // All Gas Day Cycle Statuses are Scheduled\r\n if (_.every(gasDayCycleStatuses, gasDayCycleStatus => gasDayCycleStatus.status === GasDayCycleStatus.ScheduledStatus)) {\r\n return _.maxBy(gasDayCycleStatuses, gasDayCycleStatus => gasDayCycleStatus.gasCycle.sequence);\r\n }\r\n\r\n const scheduledGasDayCycleStatuses = _.filter(gasDayCycleStatuses, x => x.status === SimpleGasDayCycleStatus.ScheduledStatus);\r\n return _.maxBy(scheduledGasDayCycleStatuses, x => x.gasCycle.sequence);\r\n }\r\n\r\n private getDefaultEarliestNotAuthorized(gasDayCycleStatuses: GasDayCycleStatusCollection): SimpleGasDayCycleStatus {\r\n // default to timely if nothing scheduled yet\r\n if (!gasDayCycleStatuses.isGasDayLaunched() || !this.anyScheduled()) return this.getTimelyGasDayCycleStatus();\r\n\r\n // null used to represent EOD for fully scheduled day\r\n if (this.allScheduled()) {\r\n return null;\r\n }\r\n\r\n const earliestNotAuthorized = this.filterForNotAuthorized().earliestBySequence();\r\n\r\n return earliestNotAuthorized?.gasCycle.code === GasCycle.STS11Code\r\n ? this.getGasDayCycleStatus(GasCycle.ID1Code)\r\n : earliestNotAuthorized;\r\n }\r\n\r\n private earliestBySequence(): SimpleGasDayCycleStatus {\r\n return _.minBy(this, x => x.gasCycle.sequence);\r\n }\r\n\r\n private latestBySequence(): SimpleGasDayCycleStatus {\r\n return _.maxBy(this, x => x.gasCycle.sequence);\r\n }\r\n\r\n private filterForOpen(): GasDayCycleStatusCollection {\r\n return GasDayCycleStatusCollection.create(_.filter(this, x => x.isOpen()));\r\n }\r\n\r\n private filterForStsGasCycles(): GasDayCycleStatusCollection {\r\n return GasDayCycleStatusCollection.create(_.filter(this, x => x.gasCycle.isStsCycle));\r\n }\r\n\r\n private filterForNonScheduled(): GasDayCycleStatusCollection {\r\n // Find the scheduled cycle with the highest sequence number, this should be the last scheduled cycle\r\n const lastScheduled = this.filterForScheduled().latestBySequence();\r\n return this.filterForSequenceGreaterThan(lastScheduled);\r\n }\r\n\r\n private filterForNotAuthorized(): GasDayCycleStatusCollection {\r\n return GasDayCycleStatusCollection.create(_.filter(this, x => !x.isCapacityAllocationAuthorized()));\r\n }\r\n\r\n private filterForScheduled(): GasDayCycleStatusCollection {\r\n return GasDayCycleStatusCollection.create(_.filter(this, x => x.isScheduled));\r\n }\r\n\r\n private filterForNaesb(): GasDayCycleStatusCollection {\r\n return GasDayCycleStatusCollection.create(_.filter(this, x => x.gasCycle.isNaesbCycle));\r\n }\r\n\r\n private filterForSequenceGreaterThan(gasDayCycleStatus: SimpleGasDayCycleStatus): GasDayCycleStatusCollection {\r\n return GasDayCycleStatusCollection.create(_.filter(this, x => x.gasCycle.sequence > gasDayCycleStatus.gasCycle.sequence));\r\n }\r\n\r\n private isSts11AndID1Open(): boolean {\r\n return this.getGasDayCycleStatus(GasCycle.STS11Code).isOpen() && this.getGasDayCycleStatus(GasCycle.ID1Code).isOpen();\r\n }\r\n\r\n private areAllGasDayCycleStatusesNotOpen(): boolean {\r\n return _.every(this, x => x.status !== SimpleGasDayCycleStatus.NomWindowOpenStatus);\r\n }\r\n\r\n private allScheduled(): boolean {\r\n return _.every(this, gasDayCycleStatus => gasDayCycleStatus.isScheduled);\r\n }\r\n\r\n private anyScheduled(): boolean {\r\n return _.some(this, gasDayCycleStatus => gasDayCycleStatus.isScheduled);\r\n }\r\n}\r\n","import {GasCycle} from \"./gas-cycle\";\r\nimport {GasDayCycleStatusCollection} from \"./gas-day-cycle-status-collection\";\r\nimport * as _ from \"lodash\";\r\nimport {SimpleGasDayCycleStatus} from \"@model/simple-gas-day-cycle-status\";\r\n\r\nexport class GasCycleLogic {\r\n\r\n public static defaultGasCycleCode(gasDayCycleStatuses: GasDayCycleStatusCollection, defaultCycle: GasCycle) {\r\n return gasDayCycleStatuses.allCyclesScheduled() ? null : defaultCycle.code;\r\n }\r\n\r\n public static placeholder(gasDayCycleStatuses: GasDayCycleStatusCollection): string {\r\n return gasDayCycleStatuses.allCyclesScheduled() ? GasCycle.EODCode : null;\r\n }\r\n\r\n public static isRequired(gasDayCycleStatuses: GasDayCycleStatusCollection): boolean {\r\n return !gasDayCycleStatuses.allCyclesScheduled();\r\n }\r\n\r\n public static buildGasCycleForRequest(gasDayCycleStatuses: GasDayCycleStatusCollection, selectedGasCycleCode: string, isForNaesb: boolean = false, isForNonSts: boolean = false): GasCycle {\r\n if (_.isNil(selectedGasCycleCode) && gasDayCycleStatuses.allCyclesScheduled()) {\r\n return gasDayCycleStatuses.endOfDayGasCycle(isForNaesb, isForNonSts);\r\n }\r\n return _.find(gasDayCycleStatuses, x => x.gasCycle.code === selectedGasCycleCode).gasCycle;\r\n }\r\n\r\n public static buildGasCycleCodeForRequest(gasDayCycleStatuses: GasDayCycleStatusCollection, selectedGasCycleCode: string, isForNaesb: boolean = false, isForNonSts: boolean = false): string {\r\n if (_.isNil(selectedGasCycleCode) && gasDayCycleStatuses.allCyclesScheduled()) {\r\n return gasDayCycleStatuses.endOfDayGasCycle(isForNaesb, isForNonSts).code;\r\n }\r\n return selectedGasCycleCode;\r\n }\r\n\r\n public static buildGasCycleStatusForRequest(gasDayCycleStatuses: GasDayCycleStatusCollection, selectedGasCycleCode: string, isForNaesb: boolean = false, isForNonSts: boolean = false): SimpleGasDayCycleStatus {\r\n if (_.isNil(selectedGasCycleCode) && gasDayCycleStatuses.allCyclesScheduled()) {\r\n return gasDayCycleStatuses.endOfDayGasCycleStatus(isForNaesb, isForNonSts);\r\n }\r\n return _.find(gasDayCycleStatuses, x => x.gasCycle.code === selectedGasCycleCode);\r\n }\r\n\r\n public static verifySelectedGasCycleCode(gasDayCycleStatuses: GasDayCycleStatusCollection, gasCycles: GasCycle[], selectedGasCycleCode: string): string {\r\n if (!_.isNil(selectedGasCycleCode)) {\r\n if (!_.some(gasCycles, gasCycle => gasCycle.code === selectedGasCycleCode)) {\r\n return GasCycle.TimelyCycleCode;\r\n }\r\n } else {\r\n if (!gasDayCycleStatuses.allCyclesScheduled()) {\r\n return GasCycle.TimelyCycleCode;\r\n }\r\n }\r\n\r\n return selectedGasCycleCode;\r\n }\r\n}\r\n","import {GasDay} from \"@model/gas-day\";\r\n\r\n/**\r\n * This class is used to help move from/to values when they are out of range.\r\n * For example,\r\n * From Gas Day: Jan 1, 2019\r\n * To Gas Day: Jan 3, 2019\r\n * If From Gas Day is updated to Jan 5, 2019 then the To Gas Day is changed to Jan 5 so that the Range is valid.\r\n *\r\n * Another example,\r\n * From Gas Day: Jan 10, 2019\r\n * To Gas Day: Jan 12, 2019\r\n * If To Gas Day is changed to Jan 5, 2019 then From Gas Day is changed to Jan 5, 2019 so that the Range is valid.\r\n */\r\nexport class GasDayRangeParams {\r\n private _fromGasDay: GasDay;\r\n private _toGasDay: GasDay;\r\n\r\n public get fromGasDay(): GasDay {\r\n return this._fromGasDay;\r\n }\r\n public set fromGasDay(value: GasDay) {\r\n this._fromGasDay = value;\r\n\r\n if (this._fromGasDay && this._fromGasDay.toDate && this._toGasDay && this._toGasDay.toDate && this._fromGasDay.toDate.valueOf() > this._toGasDay.toDate.valueOf()) {\r\n this._toGasDay = GasDay.from(new Date(this._fromGasDay.toDate.valueOf()));\r\n if (this.maxGasDay && this.toGasDay.isGreaterThan(this.maxGasDay)) {\r\n this._toGasDay = this.maxGasDay;\r\n this._fromGasDay = GasDay.from(this._toGasDay.toDate);\r\n }\r\n }\r\n }\r\n\r\n get toGasDay(): GasDay {\r\n return this._toGasDay;\r\n }\r\n\r\n set toGasDay(value: GasDay) {\r\n this._toGasDay = value;\r\n if (this._toGasDay && this._toGasDay.toDate && this._fromGasDay && this._fromGasDay.toDate && this._toGasDay.toDate.valueOf() < this._fromGasDay.toDate.valueOf()) {\r\n this._fromGasDay = GasDay.from(this._toGasDay.toDate);\r\n }\r\n }\r\n\r\n maxGasDay: GasDay; // Optional - restricts the auto-setting of toGasDay.\r\n}\r\n","\r\nimport {map} from 'rxjs/operators';\r\nimport * as _ from 'lodash';\r\nimport {Injectable} from '@angular/core';\r\nimport {Observable} from 'rxjs';\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {GasCycle} from \"@model/gas-cycle\";\r\nimport {NominationResourceService} from \"@shared/resources/nominations-resource.service\";\r\nimport {ISimpleGasDayCycleStatusResponse, SimpleGasDayCycleStatus} from \"@model/simple-gas-day-cycle-status\";\r\nimport {GasDayCycleStatus} from \"@model/gas-day-cycle-status\";\r\nimport {IGasDay} from \"@model/gas-day-month.interface\";\r\nimport {GasDayCycleStatusCollection} from \"@model/gas-day-cycle-status-collection\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {ConfirmationStatus} from \"@model/confirmation-status\";\r\nimport {BaseConfirmationDetailsRequest} from \"../confirmation/confirmation-models\";\r\nimport {GasDayCycle, IGasDayCycleDto} from \"@model/gas-day-cycle\";\r\nimport {\r\n ExceptionCount,\r\n ExceptionCountResponse\r\n} from \"@shared/services/nomination/nomination-request/nomination-request.service\";\r\nimport {GasDayRangeParams} from \"@model/gas-day-range-params\";\r\n\r\n@Injectable()\r\nexport class GasCycleService {\r\n\r\n constructor(private nominationsResource: NominationResourceService) {\r\n }\r\n\r\n /**\r\n * Gas Cycle\r\n */\r\n\r\n public queryAll(gasDay: IGasDay): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('gasDay', gasDay.toString());\r\n\r\n return this.nominationsResource.get('/gascycles', true, params).pipe(\r\n map(gasCycles => _.map(gasCycles, x => GasCycle.create(x))));\r\n }\r\n\r\n public queryNaesb(gasDay: IGasDay): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('gasDay', gasDay.toString());\r\n\r\n return this.nominationsResource.get('/gascycles', true, params).pipe(\r\n map(gasCycles => {\r\n const mappedGasCycles = _.map(gasCycles, x => GasCycle.create(x));\r\n return _.filter(mappedGasCycles, x => x.isNaesbCycle);\r\n }));\r\n }\r\n\r\n public querySts(gasDay: IGasDay): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('gasDay', gasDay.toString());\r\n\r\n return this.nominationsResource.get('/gascycles', true, params).pipe(\r\n map(gasCycles => {\r\n const mappedGasCycles = _.map(gasCycles, x => GasCycle.create(x));\r\n return _.filter(mappedGasCycles, x => x.isStsCycle);\r\n }));\r\n }\r\n\r\n /**\r\n * Gas Day Cycle Status\r\n */\r\n\r\n public openGasCycleStatus(gasDay: IGasDay, gasCycleCode: string): Observable {\r\n return this.nominationsResource.postWithNoResponseBody(`/gasdaycyclestatuses/${gasDay.toString()}/${gasCycleCode}/open`, null);\r\n }\r\n\r\n public closeGasCycleStatus(gasDay: IGasDay, gasCycleCode: string): Observable {\r\n return this.nominationsResource.postWithNoResponseBody(`/gasdaycyclestatuses/${gasDay.toString()}/${gasCycleCode}/close`, null);\r\n }\r\n\r\n public getGasCycleStatus(gasDay: IGasDay, gasCycleCode: string): Observable {\r\n return this.nominationsResource.get(`/gasdaycyclestatuses/${gasDay.toString()}/${gasCycleCode}`, true).pipe(\r\n map(res => SimpleGasDayCycleStatus.create(res)));\r\n }\r\n\r\n public forceTransportationSummaryEditMode(gasDay: IGasDay, gasCycleCode: string, mode: boolean): Observable {\r\n return this.nominationsResource.putWithNoResponseBody(`/gasdaycyclestatuses/${gasDay.toString()}/${gasCycleCode}`, {mode});\r\n }\r\n\r\n public queryGasDayCycleStatusesFor(gasDay: IGasDay): Observable {\r\n return this.nominationsResource.get(`/gasdaycyclestatuses/${gasDay.toString()}`, true).pipe(\r\n map(gasDayCycleStatusesDto => {\r\n const gasDayCycleStatuses = _.map(gasDayCycleStatusesDto, x => SimpleGasDayCycleStatus.create(x));\r\n return GasDayCycleStatusCollection.create(gasDayCycleStatuses);\r\n }));\r\n }\r\n\r\n public shouldDisableAutoBalanceLocation(gasDay: IGasDay, gasCycleCode: string): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n if (gasDay != null) {\r\n params.set('gasDay', gasDay.toString());\r\n }\r\n if (gasCycleCode != null) {\r\n params.set('gasCycleCode', gasCycleCode);\r\n }\r\n return this.nominationsResource.get(`/gasCycle/disableAutoBalanceLocation`, true, params);\r\n }\r\n\r\n public queryAllGasCycleStatuses(searchParams: GasDayCycleStatusSearchParams): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n if (searchParams.fromGasDay != null) {\r\n params.set('fromGasDay', searchParams.fromGasDay.toString());\r\n }\r\n if (searchParams.toGasDay != null) {\r\n params.set('toGasDay', searchParams.toGasDay.toString());\r\n }\r\n\r\n return this.nominationsResource.get('/gasdaycyclestatuses', true, params).pipe(\r\n map(gasDayCycleStatuses => _.map(gasDayCycleStatuses, x => GasDayCycleStatus.create(x))));\r\n }\r\n\r\n /**\r\n * Location Gas Day Cycle Statuses\r\n */\r\n\r\n public queryAllLocationGasCycleStatuses(searchParams: LocationGasDayCycleStatusRequest): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n if (searchParams.gasDay != null) {\r\n params.set('gasDay', searchParams.gasDay.toString());\r\n }\r\n if (searchParams.gasCycleCode != null) {\r\n params.set('gasCycleCode', searchParams.gasCycleCode);\r\n }\r\n if (searchParams.status != null) {\r\n params.set('status', searchParams.status.toString());\r\n }\r\n if (searchParams.enterpriseId != null) {\r\n params.set('enterpriseId', searchParams.enterpriseId.toString());\r\n }\r\n params.set('exceptionsOnly', searchParams.exceptionsOnly ? 'true' : 'false');\r\n\r\n return this.nominationsResource.get('/locationgasdaycyclestatuses', true, params);\r\n }\r\n\r\n public getLocationGasCycleStatus(req: BaseConfirmationDetailsRequest): Observable {\r\n return this.nominationsResource.get(`/locationgasdaycyclestatuses/${req.locationId}/${req.gasDay.toString()}/${req.gasCycleCode}`, true);\r\n }\r\n\r\n public changeLocationGasCycleStatus(gasDay: IGasDay, gasCycleCode: string, locationId: number, status: ConfirmationStatus): Observable {\r\n const body = {\r\n status: status.value\r\n };\r\n\r\n return this.nominationsResource.putWithNoResponseBody(`/locationgasdaycyclestatuses/${locationId}/${gasDay.toString()}/${gasCycleCode}`, body);\r\n }\r\n\r\n public getLocationGasCycleStatusExceptionCounts(fromGasDay: IGasDay, toGasDay: IGasDay): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setGasDay(fromGasDay, 'fromGasDay');\r\n params.setGasDay(toGasDay, 'toGasDay');\r\n\r\n return this.nominationsResource.get('/locationgasdaycyclestatuses/exceptions/count', true, params).pipe(\r\n map(responseArray => {\r\n return _.map(responseArray, response => GasDayCycleLocationExceptionCount.create(response));\r\n }));\r\n }\r\n\r\n public getTransactionCountsAwaitingCapacityAllocation(fromGasDay: IGasDay, toGasDay: IGasDay): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setGasDay(fromGasDay, 'fromGasDay');\r\n params.setGasDay(toGasDay, 'toGasDay');\r\n\r\n return this.nominationsResource.get('/transactions/awaitingcapacityallocation/count', true, params).pipe(\r\n map(responseArray => {\r\n return _.map(responseArray, response => ExceptionCount.create(response));\r\n }));\r\n }\r\n\r\n /**\r\n * Misc\r\n */\r\n\r\n public gasDayRange(gasCycleAndPipelineRequest: GasCycleAndPipelineParams): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n\r\n if (gasCycleAndPipelineRequest.gasCycleCode != null) {\r\n params.set('gasCycleCode', gasCycleAndPipelineRequest.gasCycleCode);\r\n }\r\n\r\n return this.nominationsResource.get('/gasdayrange', true, params).pipe(\r\n map(res => new GasDayRange(res.start, res.end)));\r\n }\r\n\r\n public scheduleGasDay(gasDay: IGasDay, gasCycleCode: string): Observable {\r\n const body = {\r\n gasDay: gasDay.toString(),\r\n gasCycleCode: gasCycleCode,\r\n };\r\n return this.nominationsResource.postWithNoResponseBody('/scheduleGasDay', body);\r\n }\r\n\r\n public unscheduleGasDay(gasDay: IGasDay, gasCycleCode: string): Observable {\r\n const body = {\r\n gasDay: gasDay.toString(),\r\n gasCycleCode: gasCycleCode,\r\n };\r\n return this.nominationsResource.postWithNoResponseBody('/unscheduleGasDay', body);\r\n }\r\n\r\n public queryLaunchedGasDays(gasDayRange: GasDayRangeParams, isLaunched: boolean): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setGasDay(gasDayRange.fromGasDay, 'fromGasDay');\r\n params.setGasDay(gasDayRange.toGasDay, 'toGasDay');\r\n params.setBoolean('isLaunched', isLaunched);\r\n\r\n return this.nominationsResource.get('/querylaunchedgasdays', true, params);\r\n }\r\n}\r\n\r\nexport class GasDayCycleStatusSearchParams extends GasDayRangeParams {\r\n}\r\n\r\nexport class GasDayCycleStatusRequest {\r\n toGasDay: IGasDay;\r\n fromGasDay: IGasDay;\r\n\r\n constructor(fromGasDay: IGasDay, toGasDay: IGasDay) {\r\n this.toGasDay = toGasDay;\r\n this.fromGasDay = fromGasDay;\r\n }\r\n}\r\n\r\nexport class GasCycleAndPipelineParams {\r\n gasCycleCode: string;\r\n}\r\n\r\nexport class GasDayRange {\r\n start: IGasDay;\r\n end: IGasDay;\r\n\r\n constructor(start: string, end: string) {\r\n this.start = GasDay.parse(start);\r\n this.end = GasDay.parse(end);\r\n }\r\n}\r\n\r\nexport class GasDayRangeDefault extends GasDayRange {\r\n default: IGasDay;\r\n\r\n static create(start: string, end: string, defaultGasDay: string): GasDayRangeDefault{\r\n const gasDayRangeDefault:GasDayRangeDefault = new GasDayRangeDefault(start, end);\r\n gasDayRangeDefault.default = GasDay.parse(defaultGasDay);\r\n return gasDayRangeDefault;\r\n }\r\n}\r\n\r\nexport class LocationGasDayCycleStatusRequest {\r\n gasDay: IGasDay;\r\n gasCycleCode?: string;\r\n status: string;\r\n enterpriseId?: number;\r\n exceptionsOnly: boolean;\r\n}\r\n\r\nexport class LocationGasDayCycleStatusDto {\r\n id: number;\r\n pipelineSystemId: number;\r\n operatorId: number;\r\n gasCycleId: number;\r\n gasDay: string;\r\n locationId: string;\r\n status: string;\r\n varianceCount: number;\r\n varianceCountHasRedVariance: boolean;\r\n edi: string;\r\n}\r\n\r\nexport class GasDayCycleLocationExceptionCountResponse {\r\n gasDayCycle: IGasDayCycleDto;\r\n count: number;\r\n hasRedVariance: boolean;\r\n}\r\n\r\nexport class GasDayCycleLocationExceptionCount {\r\n gasDayCycle: GasDayCycle;\r\n count: number;\r\n hasRedVariance: boolean;\r\n\r\n public static create(dto: GasDayCycleLocationExceptionCountResponse): GasDayCycleLocationExceptionCount {\r\n const exceptionCount = new GasDayCycleLocationExceptionCount();\r\n exceptionCount.count = dto.count;\r\n exceptionCount.gasDayCycle = GasDayCycle.create(dto.gasDayCycle);\r\n exceptionCount.hasRedVariance = dto.hasRedVariance;\r\n return exceptionCount;\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {Observable} from \"rxjs\";\r\n\r\nimport {LocationSearchParams, NominationLocation, NominationLocationService} from \"../nomination-location/nomination-location.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {SessionService} from \"../../webapp/session/session.service\";\r\nimport {NominationEnrichmentService} from \"../nomination-enrichment/nomination-enrichment.service\";\r\nimport {NominationSystemService} from \"../nomination-system/nomination-system.service\";\r\n\r\nexport class EnrichmentNominationLocation {\r\n name: string;\r\n\r\n constructor(name: string) {\r\n this.name = name;\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport class NominationLocationEnrichmentService extends NominationEnrichmentService {\r\n\r\n constructor(\r\n sessionService: SessionService,\r\n private service: NominationLocationService,\r\n protected nominationSystemService: NominationSystemService) {\r\n super(sessionService, nominationSystemService);\r\n }\r\n\r\n // TODO - JOE - Have the caller send in the gas day, like the nomination group enrichment has been changed to do.\r\n getAll(gasDay: GasDay): Observable {\r\n const params = new LocationSearchParams(gasDay, false, GasDay.maxGasDay());\r\n return this.service.queryLocationNames(params);\r\n }\r\n\r\n get(id: number): Observable {\r\n return this.service.get(id);\r\n }\r\n\r\n addMapEntry(object: NominationLocation) {\r\n this.map[object.id] = new EnrichmentNominationLocation(object.name);\r\n }\r\n\r\n createEnrichmentObject(object: EnrichmentLocation) {\r\n return new EnrichmentLocation(object.name);\r\n }\r\n\r\n enrichObject(object: T, cachedEnrichmentObject: EnrichmentLocation, enrichedPropertyPrefix: string) {\r\n object[enrichedPropertyPrefix + (enrichedPropertyPrefix ? 'Name' : 'name')] = cachedEnrichmentObject.name;\r\n }\r\n}\r\n\r\nexport class EnrichmentLocation {\r\n constructor(public name: string) {\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport * as Papa from 'papaparse';\r\n\r\n@Injectable(\r\n {providedIn: 'root'}\r\n)\r\nexport class FileService {\r\n\r\n constructor() { }\r\n\r\n parseCsv(data: string, onComplete) {\r\n Papa.parse(data, {\r\n header: true,\r\n delimiter: \",\",\r\n skipEmptyLines: true,\r\n complete: (results) => {\r\n onComplete(results);\r\n }\r\n });\r\n }\r\n\r\n parseCsvWithoutHeader(data: string, onComplete) {\r\n Papa.parse(data, {\r\n header: false,\r\n delimiter: \",\",\r\n skipEmptyLines: true,\r\n complete: (results) => {\r\n onComplete(results);\r\n }\r\n });\r\n }\r\n\r\n\r\n parseArrayToCsv(fileName: string, dataRows: any[]) {\r\n // TODO: ensure there is at least one heading and one value, and that the lenthgs match\r\n const csv = Papa.unparse(dataRows);\r\n this.downloadTextFileToUser(fileName, csv);\r\n }\r\n\r\n downloadCsvFile(fileName: string, dataRows: any[], headings: string[], values: string[]) {\r\n const csvData = new Array();\r\n csvData.push(headings);\r\n\r\n dataRows.forEach(row => {\r\n const dataRow = new Array();\r\n values.forEach(value => {\r\n dataRow.push(this.getValue(row, value));\r\n });\r\n csvData.push(dataRow);\r\n });\r\n\r\n this.parseArrayToCsv(fileName, csvData);\r\n }\r\n\r\n downloadTextFileToUser(filename: string, filecontents: string) {\r\n const blob = new Blob([filecontents], {type: 'text/csv;charset=utf-8;' });\r\n this.downloadBlobToUser(filename, blob);\r\n }\r\n\r\n downloadPdfToUser(filename: string, filecontents: Blob) {\r\n this.downloadBlobToUser(filename, filecontents);\r\n }\r\n\r\n private downloadBlobToUser(filename: string, blob: Blob) {\r\n if (navigator.msSaveBlob) {\r\n navigator.msSaveBlob(blob, filename);\r\n } else {\r\n const anchor = document.createElement('a');\r\n anchor.href = URL.createObjectURL(blob);\r\n anchor.setAttribute('visibility', 'hidden');\r\n anchor.download = filename;\r\n document.body.appendChild(anchor);\r\n anchor.click();\r\n document.body.removeChild(anchor);\r\n }\r\n }\r\n\r\n\r\n private getValue(row: any, value: string) {\r\n const splitOnPeriod = /(\\w+)\\.(.+)/g;\r\n const parsed = splitOnPeriod.exec(value);\r\n if (parsed != null) {\r\n return this.getValue(row[parsed[1]], parsed[2]);\r\n } else {\r\n // Stop CSV from showing NULL for empty values\r\n const rowValue = row[value];\r\n if (rowValue == null) return '';\r\n return rowValue;\r\n }\r\n }\r\n}\r\n","import * as _ from \"lodash\";\r\nimport {Pipe, PipeTransform} from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'displayName'\r\n})\r\nexport class DisplayNamePipe implements PipeTransform {\r\n private static Default: string = 'All';\r\n\r\n transform(value: any, idProperty: string, nameProperty: string, objects: any[], defaultDisplayValue: string = DisplayNamePipe.Default): any {\r\n if (!_.isNil(objects)) {\r\n for (const obj of objects) {\r\n if (obj[idProperty] == value) {\r\n return obj[nameProperty];\r\n }\r\n }\r\n }\r\n\r\n return defaultDisplayValue;\r\n }\r\n}\r\n","\r\n\r\n \r\n \r\n \r\n\r\n
\r\n
\r\n {{value | displayName: valueExpr : displayExpr : rawDataSource }}\r\n
\r\n
1 && value.length != rawDataSource.length\" class=\"tag-container\">\r\n {{value.length}} items selected\r\n
\r\n
1 && value.length != rawDataSource.length\" class=\"tag-container\">\r\n {{value.join(', ')}}\r\n
\r\n
\r\n {{ placeholder }}\r\n
\r\n
1 && value.length == rawDataSource.length)\" class=\"tag-container gcts-placeholder\">\r\n All\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n","import {Component, forwardRef, Input, Output, EventEmitter, ViewChild} from '@angular/core';\r\nimport {ControlValueAccessor, FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR} from \"@angular/forms\";\r\nimport {PageableList} from \"@model/pageable-list\";\r\nimport {DxTagBoxComponent, DxTextBoxComponent} from \"devextreme-angular\";\r\n\r\nexport const CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => MultiSelectComponent),\r\n multi: true\r\n};\r\n\r\nexport const CUSTOM_INPUT_NG_VALIDATORS: any = {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => MultiSelectComponent),\r\n multi: true\r\n};\r\n\r\n@Component({\r\n selector: 'app-multi-select',\r\n templateUrl: './multi-select.component.html',\r\n styleUrls: ['./multi-select.component.css'],\r\n providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR, CUSTOM_INPUT_NG_VALIDATORS]\r\n})\r\nexport class MultiSelectComponent implements ControlValueAccessor {\r\n public readonly MAX_SELECTABLE_ITEMS: number = 50;\r\n\r\n @ViewChild(DxTagBoxComponent)\r\n public tagBox: DxTagBoxComponent;\r\n\r\n @ViewChild(DxTextBoxComponent)\r\n public textBox: DxTextBoxComponent;\r\n\r\n @Input() valueExpr: string = 'id';\r\n @Input() displayExpr: string = 'name';\r\n @Input() placeholder: string;\r\n @Input() displayNumberItemsSelected: boolean = true; // just display the number selected when more that one is selected\r\n @Input() disabled: boolean = false;\r\n @Input() openWhenContentReady = true;\r\n @Input() multiline: boolean = false;\r\n @Input() maxSelectable: number = this.MAX_SELECTABLE_ITEMS;\r\n @Output() selectionChanged: EventEmitter = new EventEmitter();\r\n\r\n public rawDataSource: any[];\r\n public pagedDataSource: any = {};\r\n public searchValue: string;\r\n\r\n private onChangeCallback: (_: any[]) => {};\r\n private onTouchedCallback: () => {};\r\n private innerValue: any[];\r\n\r\n get dataSource(): any[] {\r\n return this.pagedDataSource;\r\n }\r\n\r\n @Input('dataSource')\r\n set dataSource(value: any[]) {\r\n this.rawDataSource = value; // Raw Data Source for Rendering purposes\r\n this.pagedDataSource = PageableList.GenerateConfiguration(value); // Convert to Pageable List for faster performance\r\n }\r\n\r\n get value(): any[] {\r\n return this.innerValue;\r\n }\r\n\r\n set value(value: any[]) {\r\n if (value !== this.innerValue) {\r\n this.innerValue = value;\r\n }\r\n }\r\n\r\n onFocusOut() {\r\n this.onChangeCallback(this.innerValue);\r\n }\r\n\r\n writeValue(obj: any[]): void {\r\n if (obj !== this.innerValue) {\r\n this.innerValue = obj;\r\n }\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChangeCallback = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouchedCallback = fn;\r\n }\r\n\r\n onContentReady = (e: any): void => {\r\n // Always display the scroll bar on the options list. Reference: https://www.devexpress.com/Support/Center/Question/Details/T516017/dxtagbox-always-show-scrollbar\r\n e.component._list.option('showScrollbar', 'always');\r\n\r\n // todo: wondering if we need this... feels odd that changing options should generally open the selector... not sure where we'd want that.\r\n if (this.openWhenContentReady) {\r\n this.forceOptionsToBeDisplayed();\r\n }\r\n };\r\n\r\n onSelectionChanged = (e): void => {\r\n this.selectionChanged.emit(e);\r\n };\r\n\r\n onKeyUp = (): void => {\r\n this.forceOptionsToBeDisplayed();\r\n };\r\n\r\n /**\r\n * The control will be invalid in the scenario the user has manually selected a large amount of items that is greater than the max\r\n * selectable items. This is required to prevent sending a large request parameter to the URL to the webservices (when the URL exceeds\r\n * the browsers max URL length, the webservice call will break.\r\n * @returns {boolean}\r\n */\r\n public checkMaxSelection = (): boolean => {\r\n return this.innerValue && this.rawDataSource\r\n ? this.innerValue.length === this.rawDataSource.length || this.innerValue.length <= this.maxSelectable\r\n : true;\r\n };\r\n\r\n /**\r\n * Due to using the field template, when a user performs a search then selects and item, when the user\r\n * starts typing again to perform a search, the options panel is rendered hidden. This will force the\r\n * the options panel to be displayed after typing.\r\n */\r\n forceOptionsToBeDisplayed(): void {\r\n this.tagBox.opened = true;\r\n }\r\n\r\n /**\r\n * This will validate the multi select control. When valid, it will return null, else, it will return the\r\n * validation object.\r\n * @param {FormControl} c\r\n * @returns {{multiSelect: {valid: boolean}}}\r\n */\r\n public validate(c: FormControl) {\r\n return (this.checkMaxSelection()) ? null : {\r\n multiSelect: {\r\n valid: false\r\n }\r\n };\r\n }\r\n}\r\n","import {Component, EventEmitter, forwardRef, Input, Output} from '@angular/core';\r\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\r\n\r\nexport const CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SwitchComponent),\r\n multi: true\r\n};\r\n\r\n@Component({\r\n selector: 'app-switch',\r\n templateUrl: './switch.component.html',\r\n styleUrls: ['./switch.component.css'],\r\n providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR]\r\n})\r\n\r\nexport class SwitchComponent implements ControlValueAccessor {\r\n @Input() switchOnText = 'On';\r\n @Input() switchOffText = 'Off';\r\n @Input() width = 65;\r\n @Output() valueChanged = new EventEmitter();\r\n @Input() disabled = false;\r\n private onChangeCallback: (_: any[]) => {};\r\n private onTouchedCallback: () => {};\r\n private innerValue: any[];\r\n\r\n get value(): any[] {\r\n return this.innerValue;\r\n }\r\n set value(value: any[]) {\r\n if (value !== this.innerValue) {\r\n this.innerValue = value;\r\n this.onChangeCallback(value);\r\n }\r\n }\r\n writeValue(obj: any[]): void {\r\n if (obj !== this.innerValue) {\r\n this.innerValue = obj;\r\n }\r\n }\r\n registerOnChange(fn: any): void {\r\n this.onChangeCallback = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouchedCallback = fn;\r\n }\r\n\r\n onValueChanged(e: any): void {\r\n this.valueChanged.emit(e.value);\r\n }\r\n}\r\n","\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport {IGasDay} from \"@model/gas-day-month.interface\";\r\nimport {formatDate} from \"@angular/common\";\r\n\r\n@Pipe({\r\n name: 'gasDayFormat'\r\n})\r\nexport class GasDayFormatPipe implements PipeTransform {\r\n // TODO: Should have an optional parameter to tell if we should include time or not, so we don't have to create another Pipe for that scenario\r\n transform(value: IGasDay | string, hideMaxGasDay: boolean = true): any {\r\n if (value) {\r\n if (this.isString(value)) {\r\n return formatDate(value, 'yyyy-MMM-dd', 'en-CA');\r\n }\r\n if (this.isGasDay(value)) {\r\n return value.toDisplayFormat(hideMaxGasDay);\r\n }\r\n }\r\n }\r\n\r\n // private isGasDay = (x: any): x is IGasDay => (x as IGasDay) != null;\r\n\r\n private isGasDay(x: any): x is IGasDay {\r\n return (x as IGasDay) != null;\r\n }\r\n\r\n private isString(x: any): x is string {\r\n return typeof x === 'string';\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport * as _ from \"lodash\";\r\n\r\n@Pipe({\r\n name: 'booleanAsYesNo'\r\n})\r\nexport class BooleanAsYesNoPipe implements PipeTransform {\r\n\r\n transform(value: boolean, arg1: string = ''): any {\r\n if (!_.isNil(arg1) && arg1 === 'abbr') {\r\n return value ? 'Y' : 'N';\r\n }\r\n return value ? 'Yes' : 'No';\r\n }\r\n\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'multiDisplayName'\r\n})\r\nexport class MultiDisplayNamePipe implements PipeTransform {\r\n private static Default: string = 'All';\r\n\r\n transform(value: any[], idProperty: string, nameProperty: string, objects: any[]): any {\r\n if (value) {\r\n if (value.length === objects.length)\r\n return MultiDisplayNamePipe.Default;\r\n if (value.length > 1) {\r\n return value.length + ' items selected';\r\n } else if (value.length === 1) {\r\n for (const obj of objects) {\r\n if (obj[idProperty] == value) {\r\n return obj[nameProperty];\r\n }\r\n }\r\n }\r\n }\r\n\r\n return MultiDisplayNamePipe.Default;\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n Validation Error\r\n From Gas Day cannot be later than To Gas Day.\r\n
\r\n\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n From Gas Day: {{model.lastSearchParams?.fromGasDay | gasDayFormat}}\r\n To Gas Day: {{model.lastSearchParams?.toGasDay | gasDayFormat}}\r\n Gas Day: {{model.lastSearchParams?.gasDay | gasDayFormat}}\r\n Cycle: {{model.lastSearchParams?.gasCycleCode | displayName: 'code' : 'displayValue' : model.gasCycles : 'EOD' }}\r\n Receipt: {{model.lastSearchParams?.receiptLocationIds | displayName: 'id' : 'name' : model.locations}}\r\n Delivery: {{model.lastSearchParams?.deliveryLocationIds | displayName: 'id' : 'name' : model.locations}}\r\n Revisions: {{model.lastSearchParams?.showRevisions | booleanAsYesNo}}\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n Gas Day Cycle\r\n
\r\n
\r\n
\r\n
\r\n Gas Day Range\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.fromGasDay | gasDayFormat}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.toGasDay | gasDayFormat}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.gasDay | gasDayFormat}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.gasCycleCode | displayName: 'code' : 'displayValue' : model.gasCycles : 'EOD' }}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.receiptLocationIds | multiDisplayName: 'id' : 'name' : model.locations}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.deliveryLocationIds | multiDisplayName: 'id' : 'name' : model.locations}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.showRevisions | booleanAsYesNo}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n Number of bid floors found: {{model.searchResults.length}}\r\n AS OF {{model.searchDateTime | dateFormat:'YYYY-MMM-DD H:mm:ss'}}\r\n\r\n
0\" class=\"pull-right\">\r\n Export CSV\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n
\r\n Start
Gas Day\r\n
\r\n \r\n
\r\n End
Gas Day\r\n
\r\n \r\n
\r\n Daily Equivalent
FT ($/GJ)\r\n
\r\n \r\n
\r\n Load Factor
(%)\r\n
\r\n \r\n
\r\n Bid Floor
($/GJ)\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n","import {of, forkJoin, Observable} from 'rxjs';\r\n\r\nimport {tap, concatMap} from 'rxjs/operators';\r\nimport * as _ from 'lodash';\r\nimport {AppService} from '@shared/services/webapp/app/app.service';\r\nimport {\r\n BidFloor,\r\n BidFloorRequest,\r\n BidFloorService\r\n} from '@shared/services/nomination/bid-floor/bid-floor.service';\r\nimport {GasCycleService} from '@shared/services/nomination/gas-cycle/gas-cycle.service';\r\nimport {FileService} from '@shared/services/webapp/file-service/file.service';\r\nimport {GasDay} from '@model/gas-day';\r\nimport {GasCycle} from '@model/gas-cycle';\r\nimport {DateTime} from '@model/date-time';\r\nimport {Location} from '@shared/interfaces/location';\r\nimport {ActivatedRoute, Router, Params} from '@angular/router';\r\nimport {\r\n NominationLocationService,\r\n NominationLocation, LocationSearchParams\r\n} from '@shared/services/nomination/nomination-location/nomination-location.service';\r\nimport {NominationLocationEnrichmentService} from \"@shared/services/nomination/nomination-location-enrichment/nomination-location-enrichment.service\";\r\nimport {Component, ViewChild} from '@angular/core';\r\nimport {NominationSystemService} from '@shared/services/nomination/nomination-system/nomination-system.service';\r\nimport {ParamValidator} from '@model/validators/param-validator';\r\nimport {DxDataGridComponent} from 'devextreme-angular';\r\nimport {IGasDay} from \"@model/gas-day-month.interface\";\r\nimport {BaseViewModel} from \"@model/base-view-model\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {AlertService} from \"app/shared/services/webapp/alert/alert.service\";\r\nimport {NominationPipelineGasDay} from \"@model/nomination-pipeline-gas-day\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {GasDayCycleStatusCollection} from \"@model/gas-day-cycle-status-collection\";\r\nimport {GasCycleLogic} from \"@model/gas-cycle.logic\";\r\n\r\nimport {MLViewBidFloorsMinYear, MLViewBidFloorsMinMonth, MLViewBidFloorsMinDay, GLCViewBidFloorsMinYear, GLCViewBidFloorsMinMonth, GLCViewBidFloorsMinDay} from \"../../../../../../../constants\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\n\r\n/**\r\n * Models\r\n */\r\nexport enum BidFloorSearchType {\r\n GasDayRange,\r\n GasDayCycle\r\n}\r\n\r\nexport class BidFloorSearchParams {\r\n searchType: string = BidFloorSearchType[BidFloorSearchType.GasDayCycle];\r\n fromGasDay: IGasDay;\r\n toGasDay: IGasDay;\r\n gasDay: IGasDay;\r\n gasCycleGasDay: IGasDay;\r\n gasCycleCode?: string;\r\n receiptLocationIds: number[];\r\n deliveryLocationIds: number[];\r\n showRevisions: boolean = false;\r\n\r\n get isGasDayRangeSearchType(): boolean {\r\n return this.searchType === BidFloorSearchType[BidFloorSearchType.GasDayRange];\r\n }\r\n}\r\n\r\nexport class ViewBidFloorModel extends BaseViewModel {\r\n pipelineGasDay: NominationPipelineGasDay;\r\n gasDayCycleStatuses: GasDayCycleStatusCollection = GasDayCycleStatusCollection.create();\r\n\r\n minGasDay: GasDay;\r\n tomorrowsGasDay: GasDay;\r\n today: IGasDay;\r\n gasCycles: GasCycle[] = [];\r\n locations: Location[] = [];\r\n\r\n searchParams: BidFloorSearchParams = new BidFloorSearchParams();\r\n lastSearchParams: BidFloorSearchParams;\r\n\r\n searchResults: BidFloor[];\r\n searchDateTime: Date;\r\n}\r\n\r\n@Component({\r\n selector: 'app-view-bid-floors',\r\n templateUrl: './view-bid-floors.component.html',\r\n styleUrls: ['./view-bid-floors.component.css']\r\n})\r\nexport class ViewBidFloorsComponent extends BaseSearchComponent {\r\n model: ViewBidFloorModel = new ViewBidFloorModel();\r\n @ViewChild(DxDataGridComponent) bidFloorDataGrid: DxDataGridComponent;\r\n\r\n constructor(protected appService: AppService,\r\n protected alertService: AlertService,\r\n protected router: Router,\r\n protected activatedRoute: ActivatedRoute,\r\n protected nominationSystemService: NominationSystemService,\r\n protected gasCycleService: GasCycleService,\r\n protected nominationLocationService: NominationLocationService,\r\n protected bidFloorService: BidFloorService,\r\n protected nominationLocationEnrichmentService: NominationLocationEnrichmentService,\r\n protected fileService: FileService,\r\n private sessionService: SessionService) {\r\n super('View IT Bid Floors', appService, activatedRoute, router, alertService);\r\n }\r\n\r\n /**\r\n * Public Methods\r\n */\r\n\r\n public onGasDayChanged(): void {\r\n this.model.searchParams.fromGasDay = this.model.searchParams.gasDay; // Ensure From and To Gas Day are same as Gas Day\r\n this.model.searchParams.toGasDay = this.model.searchParams.gasDay; // Ensure From and To Gas Day are same as Gas Day\r\n\r\n this.gasDayChanged(this.model.searchParams.gasDay, this.model.searchParams.gasDay).subscribe(() => {});\r\n }\r\n\r\n public onFromGasDayChanged(): void {\r\n this.model.searchParams.gasDay = this.model.searchParams.fromGasDay; // Ensure Gas Day is same as From Gas Day\r\n\r\n if (this.isValidDates()) {\r\n this.gasDayChanged(this.model.searchParams.fromGasDay, this.model.searchParams.toGasDay);\r\n }\r\n }\r\n\r\n public onToGasDayChanged(): void {\r\n if (this.isValidDates()) {\r\n this.gasDayChanged(this.model.searchParams.fromGasDay, this.model.searchParams.toGasDay);\r\n }\r\n }\r\n\r\n public exportCsvClicked() {\r\n const csvData = _.map(this.model.searchResults, x => _.extend({}, x, {\r\n startGasDayCsvFormat: x.gasDayRange.start.toCsvFormat(),\r\n endGasDayCsvFormat: x.gasDayRange.end.toCsvFormat(),\r\n dailyEquivalentTollRateCsvFormat: x.dailyEquivalentTollRate.toFixed(4),\r\n bidFloorCsvFormat: x.bidFloor.toFixed(4),\r\n createDateTimeCsvFormat: this.formatDateTime(new Date(x.createDateTime))\r\n }));\r\n\r\n const filename = this.getTitle() + ' ' + this.model.searchParams.fromGasDay.toDisplayFormat() + ' to ' + this.model.searchParams.toGasDay.toDisplayFormat() + '.csv';\r\n const headers = ['Receipt Location', 'Delivery Location', 'Cycle', 'Start Gas Day', 'End Gas Day', 'Daily Equivalent FT ($/GJ)', 'Load Factor (%)', 'Bid Floor ($/GJ)', 'Creation Date'];\r\n const columns = ['receiptLocationName', 'deliveryLocationName', 'gasCycle.name', 'startGasDayCsvFormat', 'endGasDayCsvFormat', 'dailyEquivalentTollRateCsvFormat', 'loadFactorPercent', 'bidFloorCsvFormat', 'createDateTimeCsvFormat'];\r\n\r\n this.fileService.downloadCsvFile(filename, csvData, headers, columns);\r\n }\r\n\r\n public formatGasDay(obj: any): string {\r\n return obj.value.toDisplayFormat();\r\n }\r\n\r\n public formatLoadFactor(obj: any): string {\r\n return (obj.value).toString();\r\n }\r\n\r\n public formatDateTime(obj: Date): string {\r\n return new DateTime(obj).toDisplayFormat();\r\n }\r\n\r\n isValidDates(): boolean {\r\n if (this.model.searchParams.searchType === 'GasDayCycle') return true;\r\n if (!this.model.searchParams.fromGasDay || !this.model.searchParams.toGasDay) return true;\r\n\r\n return this.model.searchParams.toGasDay >= this.model.searchParams.fromGasDay;\r\n }\r\n\r\n public gasCyclePlaceholder(): string {\r\n return GasCycleLogic.placeholder(this.model.gasDayCycleStatuses);\r\n }\r\n\r\n public isGasCycleRequired(): boolean {\r\n return GasCycleLogic.isRequired(this.model.gasDayCycleStatuses);\r\n }\r\n\r\n /**\r\n * Protected Methods\r\n */\r\n\r\n protected loadInitialResources(): Observable {\r\n // this.appService.hideMenu();\r\n this.appService.clearMessages();\r\n\r\n // this.model.searchParams.gasDay = GasDay.today();\r\n const serviceCalls: Array = [\r\n this.nominationSystemService.pipelineGasDay(), // 0\r\n this.nominationLocationEnrichmentService.fetch() // 1\r\n ];\r\n\r\n return forkJoin(serviceCalls).pipe(tap(responses => {\r\n const pipelineGasDay = responses[0];\r\n const gasDay = pipelineGasDay.tomorrowsCalendarAllowableGasDay;\r\n\r\n this.model.today = gasDay.previous(); // Today.\r\n this.model.pipelineGasDay = pipelineGasDay;\r\n\r\n this.getMinDate();\r\n }));\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return this.gasDayRangeParamValidator().isValid(params) || this.gasDayCycleParamValidator().isValid(params);\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n const gasDay = this.model.pipelineGasDay.tomorrowsCalendarAllowableGasDay;\r\n this.model.searchParams = new BidFloorSearchParams();\r\n this.model.searchResults = undefined;\r\n\r\n this.setCommonSearchParamsFromRoute(null);\r\n this.setGasDaySearchParams(gasDay, gasDay, GasCycle.TimelyCycleCode);\r\n }\r\n\r\n protected setSearchParams(params: TypedParams): void {\r\n if (this.gasDayRangeParamValidator().isValid(params.getParams)) {\r\n const fromGasDay = params.asGasDay('fromGasDay');\r\n const toGasDay = params.asGasDay('toGasDay');\r\n\r\n this.model.searchParams.searchType = BidFloorSearchType[BidFloorSearchType.GasDayRange];\r\n this.setCommonSearchParamsFromRoute(params);\r\n this.setGasDaySearchParams(fromGasDay, toGasDay, null);\r\n } else if (this.gasDayCycleParamValidator().isValid(params.getParams)) {\r\n const gasDay = params.asGasDay('gasDay');\r\n const gasCycle = params.asNullableString('gasCycleCode');\r\n\r\n this.model.searchParams.searchType = BidFloorSearchType[BidFloorSearchType.GasDayCycle];\r\n this.setCommonSearchParamsFromRoute(params);\r\n this.setGasDaySearchParams(gasDay, gasDay, gasCycle);\r\n }\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n if (this.model.searchParams.isGasDayRangeSearchType) {\r\n this.model.searchParams.gasDay = this.model.searchParams.fromGasDay; // Ensure Gas Day is same as From Gas Day\r\n if (this.isValidDates()) {\r\n return this.gasDayChanged(this.model.searchParams.fromGasDay, this.model.searchParams.toGasDay);\r\n }\r\n } else {\r\n this.model.searchParams.fromGasDay = this.model.searchParams.gasDay; // Ensure From and To Gas Day are same as Gas Day\r\n this.model.searchParams.toGasDay = this.model.searchParams.gasDay; // Ensure From and To Gas Day are same as Gas Day\r\n return this.gasDayChanged(this.model.searchParams.gasDay, this.model.searchParams.gasDay);\r\n }\r\n return of(null);\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n\r\n return this.getBidFloors().pipe(tap(results => {\r\n let bidFloors = results[0];\r\n\r\n bidFloors = _.orderBy(bidFloors, ['receiptLocationName', 'deliveryLocationName', 'gasDayRange.start'], ['asc', 'asc', 'asc']);\r\n this.model.searchResults = bidFloors;\r\n this.model.searchDateTime = results[1];\r\n }));\r\n }\r\n\r\n protected buildQueryParams(isForQueryParams: boolean = true): any {\r\n const request = new BidFloorRequest();\r\n\r\n if (this.model.searchParams.searchType === BidFloorSearchType[BidFloorSearchType.GasDayRange]) {\r\n request.fromGasDay = this.model.searchParams.fromGasDay;\r\n request.toGasDay = this.model.searchParams.toGasDay;\r\n } else {\r\n request.gasDay = this.model.searchParams.gasDay;\r\n if (!isForQueryParams) {\r\n request.gasCycleCode = GasCycleLogic.buildGasCycleCodeForRequest(this.model.gasDayCycleStatuses, this.model.searchParams.gasCycleCode);\r\n } else {\r\n request.gasCycleCode = this.model.searchParams.gasCycleCode;\r\n }\r\n }\r\n\r\n request.receiptLocationIds = this.model.searchParams.receiptLocationIds;\r\n request.deliveryLocationIds = this.model.searchParams.deliveryLocationIds;\r\n request.includeRevisions = this.model.searchParams.searchType === 'GasDayRange' ? false : this.model.searchParams.showRevisions;\r\n\r\n return request;\r\n }\r\n\r\n // protected resetCompleted(): void {\r\n // this.model.searchParams = new BidFloorSearchParams();\r\n // this.model.searchParams.gasCycleCode = GasCycle.TimelyCycleCode;\r\n // this.model.searchResults = null;\r\n // }\r\n\r\n protected resetSortOrder(): void {\r\n // Do not execute first time through when the data grid does not exist.\r\n // If a user changes the sort order by sorting data on a column, the new\r\n // sort order persists without a reset\r\n if (this.bidFloorDataGrid) {\r\n this.bidFloorDataGrid.instance.clearSorting();\r\n this.bidFloorDataGrid.instance.columnOption('Receipt Location', {sortOrder: 'asc', sortIndex: 0});\r\n this.bidFloorDataGrid.instance.columnOption('Delivery Location', {sortOrder: 'asc', sortIndex: 1});\r\n this.bidFloorDataGrid.instance.columnOption('Start Gas Day', {sortOrder: 'asc', sortIndex: 2});\r\n }\r\n }\r\n\r\n /**\r\n * Private Methods\r\n *\r\n */\r\n public getMinDate(){\r\n if (this.sessionService.getPipeline().id==3){\r\n this.model.minGasDay= new GasDay(MLViewBidFloorsMinYear, MLViewBidFloorsMinMonth, MLViewBidFloorsMinDay);\r\n }else{\r\n this.model.minGasDay= new GasDay(GLCViewBidFloorsMinYear, GLCViewBidFloorsMinMonth, GLCViewBidFloorsMinDay);\r\n }\r\n }\r\n\r\n\r\n private getBidFloors(): Observable<[BidFloor[], Date]> {\r\n return this.bidFloorService.get(this.buildQueryParams(false)).pipe(\r\n concatMap(response =>\r\n forkJoin(\r\n this.nominationLocationEnrichmentService.enrichArray(response[0], 'deliveryLocationId', 'deliveryLocation'),\r\n this.nominationLocationEnrichmentService.enrichArray(response[0], 'receiptLocationId', 'receiptLocation')\r\n ).pipe(concatMap(() => of(response)))));\r\n }\r\n\r\n private setCommonSearchParamsFromRoute(params: TypedParams): void {\r\n if (params) {\r\n this.model.searchParams.receiptLocationIds = this.parseLocations(params.asString('receiptLocationIds'));\r\n this.model.searchParams.deliveryLocationIds = this.parseLocations(params.asString('deliveryLocationIds'));\r\n this.model.searchParams.showRevisions = params.asBoolean('includeRevisions');\r\n }\r\n }\r\n\r\n private setGasDaySearchParams(fromGasDay: GasDay, toGasDay: GasDay, gasCycleCode?: string): void {\r\n this.model.searchParams.fromGasDay = fromGasDay;\r\n this.model.searchParams.toGasDay = toGasDay;\r\n this.model.searchParams.gasDay = fromGasDay;\r\n this.model.searchParams.gasCycleCode = gasCycleCode;\r\n }\r\n\r\n private gasDayChanged(fromGasDay: IGasDay, toGasDay: IGasDay): Observable {\r\n const serviceCalls: Observable[] = [\r\n this.gasCycleService.queryGasDayCycleStatusesFor(fromGasDay), // 0\r\n this.nominationLocationService.queryLocationNames(\r\n // new LocationSearchParams(fromGasDay, true, toGasDay, false)) // 1\r\n new LocationSearchParams(fromGasDay, true, new GasDay(9999,12 ,31), false)) // 1\r\n ];\r\n\r\n return forkJoin(serviceCalls).pipe(tap( responses => {\r\n const gasDayCycleStatuses = responses[0];\r\n this.model.gasDayCycleStatuses = gasDayCycleStatuses;\r\n this.model.gasCycles = _.filter(gasDayCycleStatuses.gasCycles(), x => x.isNaesbCycle);\r\n this.model.searchParams.gasCycleGasDay = this.model.searchParams.gasDay;\r\n\r\n this.model.locations = _.orderBy(responses[1], x => x.name);\r\n this.verifyForValidSelectedParameters();\r\n }));\r\n }\r\n\r\n private parseLocations(locations: any): number[] {\r\n if (locations && typeof(locations) === 'string') {\r\n locations = locations.split(',');\r\n }\r\n return (locations !== undefined && locations !== null && locations !== '') ? locations.map(Number) : [];\r\n }\r\n\r\n private gasDayRangeParamValidator(): ParamValidator {\r\n const gasDayRangeQueryParams = ParamValidator.Standard();\r\n\r\n gasDayRangeQueryParams.isGasDay('fromGasDay');\r\n gasDayRangeQueryParams.isGasDay('toGasDay');\r\n\r\n return gasDayRangeQueryParams;\r\n }\r\n\r\n private gasDayCycleParamValidator(): ParamValidator {\r\n const gasDayCycleQueryParams = ParamValidator.Standard();\r\n\r\n gasDayCycleQueryParams.isGasDay('gasDay');\r\n gasDayCycleQueryParams.isString('gasCycleCode', true); // Optional for EOD\r\n\r\n return gasDayCycleQueryParams;\r\n }\r\n\r\n private verifyForValidSelectedParameters(): void {\r\n this.model.searchParams.gasCycleCode = GasCycleLogic.verifySelectedGasCycleCode(this.model.gasDayCycleStatuses, this.model.gasCycles, this.model.searchParams.gasCycleCode);\r\n }\r\n\r\n private defaultGasCycleCode(): string {\r\n return GasCycleLogic.defaultGasCycleCode(this.model.gasDayCycleStatuses, this.model.gasDayCycleStatuses.getTimelyGasDayCycleStatus().gasCycle);\r\n }\r\n}\r\n","export const MLViewFuelRatiosMinYear = 2013;\r\nexport const MLViewFuelRatiosMinMonth = 4;\r\nexport const MLViewFuelRatiosMinDay = 1;\r\nexport const MLViewBidFloorsMinYear = 2013;\r\nexport const MLViewBidFloorsMinMonth = 4;\r\nexport const MLViewBidFloorsMinDay = 1;\r\n\r\nexport const GLCViewFuelRatiosMinYear = 2017;\r\nexport const GLCViewFuelRatiosMinMonth = 11;\r\nexport const GLCViewFuelRatiosMinDay = 1;\r\nexport const GLCViewBidFloorsMinYear = 2017;\r\nexport const GLCViewBidFloorsMinMonth = 11;\r\nexport const GLCViewBidFloorsMinDay = 1;\r\n\r\n","import * as _ from 'lodash';\r\nimport {forkJoin, Observable, of} from 'rxjs';\r\nimport {map} from 'rxjs/operators';\r\nimport {Injectable} from \"@angular/core\";\r\nimport {NominationResourceService} from \"@shared/resources/nominations-resource.service\";\r\nimport {NominationSystemService} from \"../nomination-system/nomination-system.service\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {BaseUploadResponse} from \"@model/base-upload-response\";\r\n\r\nexport class FuelRatioRequest {\r\n fromGasDay: GasDay;\r\n toGasDay: GasDay;\r\n receiptLocationIds: number[];\r\n deliveryLocationIds: number[];\r\n includeRevisions: boolean;\r\n}\r\n\r\nexport class FuelRatio {\r\n serviceType: string;\r\n receiptLocationId: string;\r\n deliveryLocationId: string;\r\n fromGasDay: string;\r\n toGasDay: string;\r\n ratio: number;\r\n combinedFuelRatio: number;\r\n status: string;\r\n createDateTime: Date;\r\n}\r\n\r\nexport class FuelRatioUploadParameters {\r\n intervalType: string;\r\n intervalDate: string;\r\n fuelRatioRows: FuelRatioRow[];\r\n}\r\n\r\nexport class FuelRatioRow {\r\n rowNumber: string;\r\n serviceType: string;\r\n pointFrom: string;\r\n pointTo: string;\r\n fuelRatio: string;\r\n\r\n constructor(rowNumber: string, serviceType: string, pointFrom: string, pointTo: string, fuelRatio: string) {\r\n this.rowNumber = rowNumber;\r\n this.serviceType = serviceType;\r\n this.pointFrom = pointFrom;\r\n this.pointTo = pointTo;\r\n this.fuelRatio = fuelRatio;\r\n }\r\n}\r\n\r\n\r\n\r\n@Injectable()\r\nexport class FuelRatioService {\r\n constructor(private nominationsResource: NominationResourceService,\r\n private nominationSystemService: NominationSystemService) {\r\n }\r\n\r\n set(uploadParameters: FuelRatioUploadParameters): Observable> {\r\n return this.nominationsResource.post>('/fuelratios', uploadParameters);\r\n }\r\n\r\n get(searchParams: FuelRatioRequest): Observable<[FuelRatio[], Date]> {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n if (searchParams.fromGasDay != null) {params.set('fromGasDay', searchParams.fromGasDay.toString()); }\r\n if (searchParams.toGasDay != null ) {params.set('toGasDay', searchParams.toGasDay.toString()); }\r\n if (searchParams.receiptLocationIds != null) {params.set('receiptLocationIds', searchParams.receiptLocationIds.toString()); }\r\n if (searchParams.deliveryLocationIds != null) { params.set('deliveryLocationIds', searchParams.deliveryLocationIds.toString()); }\r\n if (searchParams.includeRevisions != null) { params.set('includeRevisions', searchParams.includeRevisions.toString()); }\r\n\r\n return forkJoin([\r\n this.nominationsResource.get('/fuelratios', true, params),\r\n this.nominationSystemService.applicationServerTimes().pipe(map(res => new Date(res.serverTime)))\r\n ]);\r\n }\r\n\r\n queryFuel(gasDay: GasDay, billableServiceCode: string, creditLocationId: number, debitLocationId: number, energy: number): Observable {\r\n // If energy is not defined, there is no point performing the calculation, return zero\r\n if (_.isNil(energy)) {\r\n return of(0);\r\n }\r\n\r\n // If energy is zero, then there is no point performing the calculation, return zero\r\n const energyAsNumber = +energy;\r\n if (energyAsNumber === 0) {\r\n return of(0);\r\n }\r\n\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('gasDay', gasDay.toString());\r\n params.set('deliveryLocationId', creditLocationId.toString());\r\n params.set('receiptLocationId', debitLocationId.toString());\r\n params.set('billableServiceCode', billableServiceCode);\r\n params.set('energy', energyAsNumber.toString());\r\n\r\n return this.nominationsResource.getNumber('/fuelratio/calculate', true, params);\r\n }\r\n\r\n getMaxEffectiveGasDay(): Observable{\r\n return this.nominationsResource.get('/fuelratio/maxeffectivegasday', true);\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n Validation Error\r\n From Gas Day cannot be later than To Gas Day.\r\n
\r\n\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n From Gas Day: {{model.lastSearchParams?.fromGasDay | gasDayFormat}}\r\n To Gas Day: {{model.lastSearchParams?.toGasDay | gasDayFormat}}\r\n Receipt: {{model.lastSearchParams?.receiptLocationIds | displayName: 'id' : 'name' : model.locations}}\r\n Delivery: {{model.lastSearchParams?.deliveryLocationIds | displayName: 'id' : 'name' : model.locations}}\r\n Revisions: {{model.lastSearchParams?.includeRevisions | booleanAsYesNo}}\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.fromGasDay | gasDayFormat}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.toGasDay | gasDayFormat}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.receiptLocationIds | multiDisplayName: 'id' : 'name' : model.locations}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.deliveryLocationIds | multiDisplayName: 'id' : 'name' : model.locations}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.includeRevisions | booleanAsYesNo}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n Number of fuel ratios found: {{model.searchResults.length}}\r\n AS OF {{model.searchDateTime | dateFormat:'YYYY-MMM-DD H:mm:ss'}}\r\n\r\n
0\" class=\"pull-right\">\r\n Export CSV\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n\r\n\r\n","import {forkJoin, Observable} from 'rxjs';\r\n\r\nimport {tap, concatMap, map} from 'rxjs/operators';\r\nimport * as _ from 'lodash';\r\nimport {Component, ViewChild, OnInit, OnDestroy} from '@angular/core';\r\nimport {ActivatedRoute, Router, Params} from '@angular/router';\r\n\r\nimport {DxDataGridComponent} from 'devextreme-angular';\r\n\r\nimport {AppService} from '@shared/services/webapp/app/app.service';\r\nimport {\r\n FuelRatioService,\r\n FuelRatio,\r\n FuelRatioRequest\r\n} from '@shared/services/nomination/fuel-ratio/fuel-ratio.service';\r\nimport {NominationSystemService} from '@shared/services/nomination/nomination-system/nomination-system.service';\r\nimport {\r\n NominationLocationService,\r\n LocationSearchParams,\r\n NominationLocation\r\n} from '@shared/services/nomination/nomination-location/nomination-location.service';\r\nimport {FileService} from '@shared/services/webapp/file-service/file.service';\r\n\r\nimport {GasDay} from '@model/gas-day';\r\nimport {DateTime} from '@model/date-time';\r\nimport {ParamValidator} from '@model/validators/param-validator';\r\nimport {Location} from '@shared/interfaces/location';\r\nimport {NominationLocationEnrichmentService} from \"@shared/services/nomination/nomination-location-enrichment/nomination-location-enrichment.service\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {NominationPipelineGasDay} from \"@model/nomination-pipeline-gas-day\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {MLViewFuelRatiosMinYear, MLViewFuelRatiosMinMonth, MLViewFuelRatiosMinDay, GLCViewFuelRatiosMinYear, GLCViewFuelRatiosMinMonth, GLCViewFuelRatiosMinDay} from \"../../../../../../../constants\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\n\r\nexport class FuelRatioSearchParams {\r\n fromGasDay: GasDay;\r\n toGasDay: GasDay;\r\n receiptLocationIds: number[];\r\n deliveryLocationIds: number[];\r\n includeRevisions: boolean = false;\r\n}\r\n\r\nexport class ViewFuelRatioModel {\r\n minGasDay: GasDay;\r\n gasDay: GasDay;\r\n locations: Location[] = [];\r\n\r\n searchParams: FuelRatioSearchParams = new FuelRatioSearchParams();\r\n lastSearchParams: FuelRatioSearchParams;\r\n\r\n searchResults: FuelRatio[];\r\n searchDateTime: Date;\r\n\r\n showFilterSection: boolean = true;\r\n}\r\n@Component({\r\n selector: 'app-view-fuel-ratios',\r\n templateUrl: './view-fuel-ratios.component.html',\r\n styleUrls: ['./view-fuel-ratios.component.css']\r\n})\r\nexport class ViewFuelRatiosComponent extends BaseSearchComponent implements OnInit, OnDestroy {\r\n model: ViewFuelRatioModel = new ViewFuelRatioModel();\r\n @ViewChild(DxDataGridComponent) fuelRatioDataGrid: DxDataGridComponent;\r\n\r\n constructor(protected appService: AppService,\r\n protected router: Router,\r\n protected activatedRoute: ActivatedRoute,\r\n protected alertService: AlertService,\r\n private nominationSystemService: NominationSystemService,\r\n private nominationLocationService: NominationLocationService,\r\n private fuelRatioService: FuelRatioService,\r\n private nominationLocationEnrichmentService: NominationLocationEnrichmentService,\r\n private fileService: FileService,\r\n private sessionService: SessionService) {\r\n super('View Fuel Ratios', appService, activatedRoute, router, alertService);\r\n }\r\n\r\n exportCsvClicked() {\r\n const csvData = _.map(this.model.searchResults, x => _.extend({}, x, {\r\n fromGasDayCsvFormat: GasDay.parse(x.fromGasDay).toCsvFormat(),\r\n toGasDayCsvFormat: GasDay.parse(x.toGasDay).toCsvFormat(),\r\n fuelRatioCsvFormat: x.ratio.toFixed(2),\r\n createDateTimeCsvFormat: this.formatDateTime(new Date(x.createDateTime))\r\n }));\r\n\r\n const filename = this.getTitle() + ' ' + this.model.searchParams.fromGasDay.toDisplayFormat() + ' to ' + this.model.searchParams.toGasDay.toDisplayFormat() + '.csv';\r\n const headers = ['Service Type', 'Receipt Location', 'Delivery Location', 'From Gas Day', 'To Gas Day', 'Ratio', 'Combined Ratio', 'Status', 'Created Date Time'];\r\n const columns = ['serviceType', 'receiptLocationName', 'deliveryLocationName', 'fromGasDayCsvFormat', 'toGasDayCsvFormat', 'ratio', 'combinedFuelRatio', 'status', 'createDateTimeCsvFormat'];\r\n\r\n this.fileService.downloadCsvFile(filename, csvData, headers, columns);\r\n }\r\n\r\n formatGasDay(obj: any): string {\r\n return GasDay.parse(obj.value).toDisplayFormat(false);\r\n }\r\n\r\n formatDateTime(obj: Date): string {\r\n return new DateTime(obj).toDisplayFormat();\r\n }\r\n\r\n isValidDates(): boolean {\r\n if (this.model.searchParams.toGasDay == null || this.model.searchParams.fromGasDay == null) { return true; }\r\n\r\n return this.model.searchParams.toGasDay >= this.model.searchParams.fromGasDay;\r\n }\r\n\r\n toggleFilterSectionClicked(): void {\r\n this.model.showFilterSection = !this.model.showFilterSection;\r\n }\r\n\r\n /**\r\n * Private Methods\r\n */\r\n public getMinDate(){\r\n if (this.sessionService.getPipeline().id==3){\r\n this.model.minGasDay= new GasDay(MLViewFuelRatiosMinYear, MLViewFuelRatiosMinMonth, MLViewFuelRatiosMinDay);\r\n }else{\r\n this.model.minGasDay= new GasDay(GLCViewFuelRatiosMinYear, GLCViewFuelRatiosMinMonth, GLCViewFuelRatiosMinDay);\r\n }\r\n }\r\n\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams.fromGasDay = typedParams.asGasDay('fromGasDay');\r\n this.model.searchParams.toGasDay = typedParams.asGasDay('toGasDay');\r\n\r\n this.model.searchParams.receiptLocationIds = this.parseLocations(typedParams.asNullableString('receiptLocationIds'));\r\n this.model.searchParams.deliveryLocationIds = this.parseLocations(typedParams.asNullableString('deliveryLocationIds'));\r\n\r\n this.model.searchParams.includeRevisions = typedParams.asNullableBoolean('includeRevisions');\r\n }\r\n\r\n private gasDayRangeParamValidator(): ParamValidator {\r\n const gasDayRangeParamValidator = ParamValidator.Standard();\r\n\r\n gasDayRangeParamValidator.isGasDay('fromGasDay');\r\n gasDayRangeParamValidator.isGasDay('toGasDay');\r\n\r\n return gasDayRangeParamValidator;\r\n }\r\n\r\n private parseLocations(locations: any): number[] {\r\n if (locations && typeof(locations) === 'string') {\r\n locations = locations.split(',');\r\n }\r\n return (locations !== undefined && locations !== null && locations !== '') ? locations.map(Number) : [];\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n\r\n const serviceCalls: Observable[] = [\r\n this.nominationLocationService.queryLocationNames(\r\n new LocationSearchParams(this.model.searchParams.fromGasDay, true, this.model.searchParams.toGasDay, false))\r\n ];\r\n\r\n return forkJoin(serviceCalls).pipe(tap(response => {\r\n this.model.locations = _.orderBy(response[0], x => x.name);\r\n }));\r\n }\r\n\r\n private getFuelRatios(): Observable<[FuelRatio[], Date]> {\r\n return this.fuelRatioService.get(this.buildQueryParams()).pipe(\r\n concatMap(response =>\r\n forkJoin([\r\n this.nominationLocationEnrichmentService.enrichArray(response[0], 'deliveryLocationId', 'deliveryLocation'),\r\n this.nominationLocationEnrichmentService.enrichArray(response[0], 'receiptLocationId', 'receiptLocation')\r\n ]).pipe(map(() => response))));\r\n }\r\n\r\n protected performSearch(): Observable {\r\n return this.getFuelRatios().pipe(tap(results => {\r\n let fuelRatios = results[0];\r\n fuelRatios = _.orderBy(fuelRatios, ['receiptLocationName', 'deliveryLocationName', 'fromGasDay', 'toGasDay', 'createDateTime'], ['asc', 'asc', 'asc', 'asc', 'desc']);\r\n this.model.searchResults = fuelRatios;\r\n this.model.searchDateTime = results[1];\r\n }));\r\n }\r\n\r\n protected buildQueryParams(): FuelRatioRequest {\r\n const request = new FuelRatioRequest();\r\n\r\n request.fromGasDay = this.model.searchParams.fromGasDay;\r\n request.toGasDay = this.model.searchParams.toGasDay;\r\n\r\n request.receiptLocationIds = this.model.searchParams.receiptLocationIds;\r\n request.deliveryLocationIds = this.model.searchParams.deliveryLocationIds;\r\n request.includeRevisions = this.model.searchParams.includeRevisions;\r\n return request;\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n // Do not execute first time through when the data grid does not exist.\r\n // If a user changes the sort order by sorting data on a column, the new\r\n // sort order persists without a reset\r\n if (this.fuelRatioDataGrid) {\r\n this.fuelRatioDataGrid.instance.clearSorting();\r\n this.fuelRatioDataGrid.instance.columnOption('Receipt Location', {sortOrder: 'asc', sortIndex: 0});\r\n this.fuelRatioDataGrid.instance.columnOption('Delivery Location', {sortOrder: 'asc', sortIndex: 1});\r\n this.fuelRatioDataGrid.instance.columnOption('From Gas Day', {sortOrder: 'asc', sortIndex: 2});\r\n this.fuelRatioDataGrid.instance.columnOption('To Gas Day', {sortOrder: 'asc', sortIndex: 3});\r\n this.fuelRatioDataGrid.instance.columnOption('Created Date Time', {sortOrder: 'desc', sortIndex: 4});\r\n }\r\n }\r\n\r\n protected resetCompleted(): void {\r\n this.model.searchResults = undefined;\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return this.gasDayRangeParamValidator().isValid(params);\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams.fromGasDay = this.model.gasDay;\r\n this.model.searchParams.toGasDay = this.model.gasDay;\r\n this.model.searchParams.includeRevisions = false;\r\n this.model.searchParams.deliveryLocationIds = [];\r\n this.model.searchParams.receiptLocationIds = [];\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n\r\n return this.nominationSystemService.pipelineGasDay().pipe(\r\n tap((pipelineGasDay: NominationPipelineGasDay) => {\r\n if (!pipelineGasDay.hasGasDayCycles()) {\r\n this.alertService.addWarnMessage(\"Warning\", \"There are no Gas Day Cycles for the pipeline.\");\r\n return;\r\n }\r\n this.appService.clearMessages();\r\n this.model.gasDay = pipelineGasDay.tomorrowsCalendarAllowableGasDay;\r\n this.getMinDate();\r\n }));\r\n }\r\n}\r\n","import {FileService} from '../services/webapp/file-service/file.service';\r\nimport {Injectable} from '@angular/core';\r\nimport * as _ from 'lodash';\r\nimport {GasMonth} from \"./gas-month\";\r\nimport {GasDay} from \"./gas-day\";\r\n\r\nexport class BaseCsvUploadViewModel {\r\n fileName: string;\r\n isValid: boolean;\r\n error: string;\r\n\r\n public isValidFile(): boolean {\r\n return (this.fileName && this.isValid) ? true : false;\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport class CsvUtility {\r\n\r\n constructor(protected fileService: FileService) {\r\n }\r\n\r\n // returns the string object index from the fields array that matches the given header. This sounds redundant\r\n // but likely here to handle if the field has non-trimmed spaces. eg header = \"Gas Day\", might return a field in the file of \"Gas Day \"\r\n public findColumnHeaderColumn(fields: string[], columnName: string) : string {\r\n return fields[_.findIndex(fields, f => _.trim(f.toString()) === columnName)];\r\n }\r\n\r\n // validates a specific for based on a general approach for csvs\r\n public validateRow(headers: string[], data: any[], rowNumber: number, model) : boolean {\r\n const rowOffset: number = 2; // csv library row is zero based (+1) + header (+1) = 2\r\n const row = data[rowNumber];\r\n\r\n const numColumnsInRow = Object.keys(row).length;\r\n if (numColumnsInRow === headers.length)\r\n return true;\r\n\r\n // Better solution would be to have errors be an array instead of concatenating errors onto this string.\r\n if (!_.isEmpty(model.error))\r\n model.error += '\\n';\r\n model.error += `Line number ${rowNumber + rowOffset} should have ${headers.length} columns but found ${numColumnsInRow}.`;\r\n\r\n return false;\r\n }\r\n\r\n // validates the whole file based on a general approach for csvs\r\n public validateFile(headers: string[], results, model, testAllColumns: boolean, strict: boolean, allowEmptyFiles: boolean = false) : boolean {\r\n\r\n // Verify we have all the required headers\r\n const parsedHeaders = _.map(results.meta.fields, headerValue => _.trim(headerValue));\r\n\r\n // Check that we have all the required columns\r\n if (!this.verifyAllHeaders(model, headers, parsedHeaders, testAllColumns)) {\r\n return false;\r\n }\r\n\r\n // We have all the headers, now check if they are in the right order.\r\n if (strict) {\r\n if (headers.length !== parsedHeaders.length) {\r\n const difference = _.difference(parsedHeaders, headers);\r\n if (difference.length === 0) {\r\n const duplicates = _.filter(parsedHeaders, (val, i, iteratee) => _.includes(iteratee, val, i + 1));\r\n model.error = `The file has duplicate ${duplicates.length > 1 ? 'columns' : 'column'}: ${_.join(duplicates, ', ')}.`;\r\n } else {\r\n model.error = `The file has extra ${difference.length > 1 ? 'columns' : 'column'}: ${_.join(difference, ', ')}.`;\r\n }\r\n return false;\r\n }\r\n\r\n if (!_.isEqual(headers, parsedHeaders)) {\r\n model.error = `The file has columns in an order different from:\\n${_.join(headers, ', ')}.`;\r\n return false;\r\n }\r\n }\r\n\r\n // Parse was unable to parse any data\r\n if (!allowEmptyFiles && (results.data.length === 0)) {\r\n model.error = 'The upload file is empty.';\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public extractLoadTollData(data: string, model, callback) {\r\n model.error = '';\r\n this.fileService.parseCsvWithoutHeader(data, (results) => {\r\n if (results.data.length === 0) {\r\n model.error = 'The upload file is empty.';\r\n return false;\r\n }\r\n const gasMonth = GasMonth.parse(results.data[0][3]);\r\n if (model.request.tollCategory === 'Compliance') {\r\n const openBillingMonth = GasMonth.parse(model.openBillingMonth);\r\n if (openBillingMonth.toDate > gasMonth.toDate) {\r\n model.error = 'The billing month found in the file (' + gasMonth + ') is closed.';\r\n return false;\r\n }\r\n }\r\n model.isValid = true;\r\n callback(results.data);\r\n return;\r\n });\r\n }\r\n\r\n public extractData(data: string, model, headers: Array, callback, testAllColumns: boolean = false, strictColumnOrder: boolean = false, allowEmptyFile: boolean = false): void {\r\n model.error = '';\r\n\r\n this.fileService.parseCsv(data, (results) => {\r\n if (this.validateFile(headers, results, model, testAllColumns, strictColumnOrder, allowEmptyFile)) {\r\n let allRowsValid: boolean = true;\r\n for (let i = 0; i < results.data.length; i++) {\r\n if (!this.validateRow(headers, results.data, i, model)) {\r\n allRowsValid = false;\r\n }\r\n }\r\n if (!allRowsValid) {\r\n return false;\r\n }\r\n\r\n model.isValid = true;\r\n callback(results.data, results.meta.fields);\r\n return;\r\n }\r\n\r\n model.isValid = false;\r\n return;\r\n });\r\n }\r\n\r\n private verifyAllHeaders(model: BaseCsvUploadViewModel, headers: Array, parsedHeaders: Array, testAllColumns: boolean): boolean {\r\n const missingHeaders = _.difference(headers, parsedHeaders);\r\n if (_.some(missingHeaders)) {\r\n this.addError(model, testAllColumns, missingHeaders, \"The file is missing column\", \"The file is missing columns\");\r\n return false;\r\n }\r\n\r\n const extraHeaders = _.difference(parsedHeaders, headers);\r\n if (_.some(extraHeaders)) {\r\n this.addError(model, testAllColumns, extraHeaders, \"The file has an extra column\", \"The file has extra columns\");\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private addError(model: BaseCsvUploadViewModel,\r\n testAllColumns: boolean,\r\n missingHeaders: Array,\r\n singularErrorMessage: string,\r\n pluralErrorMessage: string): void {\r\n model.error = (missingHeaders.length === 1 || !testAllColumns) ? // TODO - JOE - Do we really need this check?\r\n `${singularErrorMessage}: ${missingHeaders[0]}.` :\r\n `${pluralErrorMessage}: ${_.join(missingHeaders, ', ')}.`;\r\n }\r\n}\r\n","export enum IntervalType\r\n{\r\n Interval,\r\n Daily,\r\n Weekly,\r\n Monthly,\r\n Yearly\r\n}\r\n","import {Directive, EventEmitter, HostListener, Input, Output, OnInit, OnDestroy} from \"@angular/core\";\r\nimport {Subject, Subscription} from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\n\r\n/*\r\n * Shamelessly copied from stack overflow ...\r\n * https://stackoverflow.com/questions/51390476/how-to-prevent-double-click-in-angular\r\n * This is a more robust replacement for the prevent-double-click directive and does not interfere\r\n * with the setting of the disable attribute.\r\n * Usage:\r\n * \r\n \r\n \r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n Browse...\r\n \r\n
\r\n \r\n Future Gas Ratios will be overwritten. Do you want to proceed?\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n CSV Parsing Errors:\r\n
{{model.error}}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
{{ model.fuelRatioResponse?.linesInFile }}
\r\n \r\n
{{ model.fuelRatioResponse?.linesSaved }}
\r\n
\r\n
\r\n \r\n
{{ model.fuelRatioResponse?.linesChanged }}
\r\n \r\n
{{ model.fuelRatioResponse?.linesIgnored }}
\r\n
\r\n
\r\n \r\n
{{ model.fuelRatioResponse?.errors.length }}
\r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n","import {Component, OnInit, ViewChild} from '@angular/core';\r\nimport {AppService} from '@shared/services/webapp/app/app.service';\r\nimport {FuelRatioRow, FuelRatioService, FuelRatioUploadParameters} from '@shared/services/nomination/fuel-ratio/fuel-ratio.service';\r\nimport {BaseUploadResponse} from \"@model/base-upload-response\";\r\nimport {GasMonth} from '@model/gas-month';\r\nimport {AlertService} from \"app/shared/services/webapp/alert/alert.service\";\r\nimport {NominationSystemService} from '@shared/services/nomination/nomination-system/nomination-system.service';\r\nimport {BaseComponent} from '@model/base-component';\r\nimport {CsvUtility} from '@model/CsvUtility';\r\nimport {Router} from \"@angular/router\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {IntervalType} from \"@shared/enums/interval-type\";\r\nimport {GasCycleService} from \"@shared/services/nomination/gas-cycle/gas-cycle.service\";\r\nimport {GasDayRangeParams} from \"@model/gas-day-range-params\";\r\nimport {ModalComponent} from \"@shared/components/modal/modal.component\";\r\n\r\nexport class FuelRatioViewModel {\r\n fileName: string;\r\n firstCalendarDay: GasDay;\r\n gasMonth: GasMonth;\r\n minGasMonth: GasMonth;\r\n maxGasMonth: GasMonth;\r\n gasDay: GasDay;\r\n minGasDay: GasDay;\r\n maxGasDay: GasDay;\r\n fuelRatioResponse: BaseUploadResponse;\r\n isValid: boolean;\r\n error: string;\r\n pipelineFuelRatioUploadInterval: IntervalType;\r\n disabledDates: Date[];\r\n}\r\n\r\n@Component({\r\n selector: 'app-load-fuel-ratios',\r\n templateUrl: './load-fuel-ratios.component.html',\r\n styleUrls: ['./load-fuel-ratios.component.css'],\r\n providers: [CsvUtility]\r\n})\r\n\r\nexport class LoadFuelRatiosComponent extends BaseComponent implements OnInit {\r\n IntervalType = IntervalType; // expose to view\r\n\r\n model: FuelRatioViewModel;\r\n extractedData: FuelRatioRow[];\r\n\r\n @ViewChild(ModalComponent) yesNoSubmitModal: ModalComponent;\r\n\r\n constructor(protected appService: AppService,\r\n private fuelRatioService: FuelRatioService,\r\n private alertService: AlertService,\r\n private nominationSystemService: NominationSystemService,\r\n private csvUtility: CsvUtility,\r\n private router: Router,\r\n public sessionService: SessionService,\r\n private gasCycleService: GasCycleService) {\r\n super(appService);\r\n }\r\n\r\n ngOnInit() {\r\n super.setTitle('Load Fuel Ratios');\r\n this.initModel();\r\n }\r\n\r\n uploadClicked(skipFutureGasDayCheck: boolean = false) {\r\n if (this.extractedData == null) {\r\n return;\r\n }\r\n\r\n this.route = this.router.routerState.snapshot.url;\r\n const parameters = new FuelRatioUploadParameters();\r\n parameters.fuelRatioRows = this.extractedData;\r\n parameters.intervalType = IntervalType[this.model.pipelineFuelRatioUploadInterval];\r\n\r\n if (this.model.pipelineFuelRatioUploadInterval === IntervalType.Monthly) {\r\n parameters.intervalDate = this.model.gasMonth.toString();\r\n this.uploadFile(parameters);\r\n } else if (this.model.pipelineFuelRatioUploadInterval === IntervalType.Daily){\r\n parameters.intervalDate = this.model.gasDay.toString();\r\n\r\n if (skipFutureGasDayCheck) {\r\n this.uploadFile(parameters);\r\n } else {\r\n this.fuelRatioService.getMaxEffectiveGasDay().subscribe(result => {\r\n if (this.model.gasDay <= result){\r\n this.yesNoSubmitModal.show();\r\n } else {\r\n this.uploadFile(parameters);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n private uploadFile(fuelRatioUploadParameters: FuelRatioUploadParameters){\r\n this.fuelRatioService.set(fuelRatioUploadParameters).subscribe(\r\n result => {\r\n this.model.fuelRatioResponse = result;\r\n this.model.error = '';\r\n\r\n if (this.model.fuelRatioResponse.errors !== undefined && this.model.fuelRatioResponse.errors.length > 0\r\n && this.route === this.router.routerState.snapshot.url) {\r\n this.alertService.addSuccessMessage('Upload successful', this.model.fileName + ' uploaded with '\r\n + this.model.fuelRatioResponse.errors.length + ' errors.');\r\n } else if (this.route === this.router.routerState.snapshot.url) {\r\n this.alertService.addSuccessMessage('Upload successful', this.model.fileName + ' uploaded.');\r\n }\r\n });\r\n }\r\n\r\n resetClicked() {\r\n this.resetModel();\r\n }\r\n\r\n hoverOver() {\r\n return this.model.error;\r\n }\r\n\r\n private initModel(): void {\r\n this.model = new FuelRatioViewModel();\r\n this.model.pipelineFuelRatioUploadInterval = IntervalType[this.sessionService.getPipeline().fuelRatioUploadInterval];\r\n\r\n this.nominationSystemService.nextMonthsFirstCalendarGasDay().subscribe(firstCalendarDay => {\r\n this.model.firstCalendarDay = firstCalendarDay;\r\n this.resetModel();\r\n if (this.model.pipelineFuelRatioUploadInterval === IntervalType.Daily){\r\n const gasDayRange = new GasDayRangeParams();\r\n gasDayRange.fromGasDay = this.model.minGasDay;\r\n gasDayRange.toGasDay = this.model.maxGasDay;\r\n this.gasCycleService.queryLaunchedGasDays(gasDayRange, true).subscribe(results => {\r\n this.model.disabledDates = results.map(d => new Date(d.toString()));\r\n });\r\n }\r\n });\r\n }\r\n\r\n private resetModel(){\r\n if (this.model.pipelineFuelRatioUploadInterval === IntervalType.Monthly){\r\n this.model.gasMonth = GasMonth.from(this.model.firstCalendarDay.toDate);\r\n this.model.maxGasMonth = GasMonth.from(this.model.firstCalendarDay.toDate);\r\n this.model.minGasMonth = GasMonth.from(this.model.firstCalendarDay.toDate).addMonth(-1) as GasMonth;\r\n } else if (this.model.pipelineFuelRatioUploadInterval === IntervalType.Daily){\r\n this.model.gasDay = this.model.firstCalendarDay;\r\n this.model.maxGasDay = GasMonth.from(this.model.firstCalendarDay.toDate).end();\r\n this.model.minGasDay = GasMonth.from(this.model.firstCalendarDay.toDate).addMonth(-1).start();\r\n }\r\n\r\n this.extractedData = null;\r\n this.model.error = '';\r\n this.model.fileName = '';\r\n this.model.fuelRatioResponse = null;\r\n this.alertService.clearMessages();\r\n }\r\n\r\n public updateClick(e) {\r\n this.extractedData = new Array();\r\n if (e.target.files.length > 0) {\r\n this.model.fileName = e.target.files[0].name;\r\n\r\n const reader = new FileReader();\r\n\r\n reader.onload = (event: any) => {\r\n this.alertService.clearMessages();\r\n this.model.fuelRatioResponse = null;\r\n this.extractData(event.target.result, this.model);\r\n };\r\n\r\n reader.readAsText(e.target.files[0]);\r\n }\r\n }\r\n\r\n protected extractData(data: string, model: FuelRatioViewModel) {\r\n const headers = ['Service Type', 'Point From', 'Point To', 'Fuel Ratio (no pressure)'];\r\n\r\n model.error = '';\r\n model.isValid = false;\r\n\r\n this.csvUtility.extractData(data, this.model, headers, (result, fields) => {\r\n for (let i = 0; i < result.length; i++) {\r\n this.extractedData.push(new FuelRatioRow((i + 1).toString(),\r\n result[i][this.csvUtility.findColumnHeaderColumn(fields, headers[0])],\r\n result[i][this.csvUtility.findColumnHeaderColumn(fields, headers[1])],\r\n result[i][this.csvUtility.findColumnHeaderColumn(fields, headers[2])],\r\n result[i][this.csvUtility.findColumnHeaderColumn(fields, headers[3])]));\r\n }\r\n }, false, true);\r\n }\r\n\r\n // TODO: Can this be done using Form Validations?\r\n public isValidFile(model): boolean {\r\n if (model.fileName !== null && model.fileName !== '' && model.isValid) {\r\n return true;\r\n }\r\n }\r\n\r\n overwriteLaterGasDays() {\r\n this.uploadClicked(true);\r\n }\r\n\r\n getIntervalLabel() : string {\r\n if (!this.model){\r\n return \"\";\r\n }\r\n\r\n switch (this.model.pipelineFuelRatioUploadInterval){\r\n case IntervalType.Daily:\r\n return \"GAS DAY\";\r\n case IntervalType.Monthly:\r\n return \"MONTH\";\r\n }\r\n }\r\n}\r\n","import {forkJoin, Observable} from 'rxjs';\r\nimport {Component, forwardRef, Input, Output, EventEmitter} from '@angular/core';\r\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\r\nimport {GasCycle} from \"@model/gas-cycle\";\r\nimport * as _ from 'lodash';\r\nimport {NominationSystemService} from \"@shared/services/nomination/nomination-system/nomination-system.service\";\r\nimport {GasCycleService, GasDayCycleStatusSearchParams} from \"@shared/services/nomination/gas-cycle/gas-cycle.service\";\r\nimport {GasDayCycleStatus} from \"@model/gas-day-cycle-status\";\r\nimport {GasDay} from \"@model/gas-day\";\r\n\r\nexport const CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => BidFloorGasCyclePickerComponent),\r\n multi: true\r\n};\r\n\r\n@Component({\r\n selector: 'bid-floor-gas-cycle-picker',\r\n templateUrl: './bid-floor-gas-cycle-picker.component.html',\r\n providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR]\r\n})\r\n// TODO: TA\r\n// This component started off as a duplicate of app/shared/components/gas-cycle-picker/gas-cycle-picker.component.ts\r\n// Differences between the components are related to bid floor deadlines / behavior vs. nominated deadlines / behavior\r\n// When time permits we should look at merging common functionality\r\n\r\n// TODO: TA\r\n// A lot of business logic in this class. Should move server side\r\nexport class BidFloorGasCyclePickerComponent implements ControlValueAccessor {\r\n @Input() today: GasDay; // The gas day representing today.\r\n @Input() gasCycles: GasCycle[]; // All potential gas cycles for this screen.\r\n @Input() disabled: boolean = false;\r\n @Input() onValueChanged: () => {};\r\n @Input() hideExpiredCycles: boolean = false;\r\n @Output() selectionChanged: EventEmitter = new EventEmitter();\r\n\r\n private onChangeCallback: (_: any) => {};\r\n private onTouchedCallback: () => {};\r\n private innerValue: any;\r\n private selectedGasDay: GasDay;\r\n public dataSource: GasCycle[];\r\n\r\n constructor(private gasCycleService: GasCycleService, private nominationSystemService: NominationSystemService) { }\r\n\r\n public get placeholder(): string {\r\n return this.hideExpiredCycles ? 'No gas cycles available' : 'Select a gas cycle';\r\n }\r\n\r\n @Input() set gasDay(selectedGasDay: GasDay) {\r\n if (!selectedGasDay || selectedGasDay.isEqual(this.selectedGasDay)) {\r\n return;\r\n }\r\n\r\n\r\n this.configurePicker(selectedGasDay);\r\n }\r\n\r\n private configurePicker = (selectedGasDay: GasDay): void => {\r\n this.selectedGasDay = selectedGasDay;\r\n this.queryServer().subscribe(responses => this.initializePicker(responses));\r\n };\r\n\r\n private queryServer = (): Observable => {\r\n const params = new GasDayCycleStatusSearchParams();\r\n params.fromGasDay = params.toGasDay = this.selectedGasDay;\r\n\r\n return forkJoin([\r\n this.nominationSystemService.applicationServerTimes(),\r\n this.gasCycleService.queryAllGasCycleStatuses(params)\r\n ]);\r\n };\r\n\r\n private initializePicker = (serviceCallResponses): void => {\r\n const serverTimes = serviceCallResponses[0];\r\n const currentTime = new Date(serverTimes.centralClockTime);\r\n\r\n const gasDayCycleStatuses: GasDayCycleStatus[] = serviceCallResponses[1];\r\n\r\n const specifications = [\r\n {\r\n predicate: () => this.selectedGasDay.isEqual(this.today),\r\n handler: () => this.initializeForCurrentGasDay(gasDayCycleStatuses, currentTime)\r\n },\r\n {\r\n predicate: () => this.selectedGasDay.isEqual(this.today.next()),\r\n handler: () => this.initializeForTomorrowGasDay(gasDayCycleStatuses, currentTime)\r\n },\r\n {\r\n predicate: () => this.selectedGasDay.isGreaterThan(this.today.next()),\r\n handler: () => this.initializeForFutureGasDay(gasDayCycleStatuses)\r\n },\r\n {\r\n predicate: () => true, // default handler\r\n handler: this.initializeForNoSelections\r\n }\r\n ];\r\n\r\n _.find(specifications, specification => specification.predicate()).handler();\r\n this.initializeForReopenedNoms(gasDayCycleStatuses);\r\n };\r\n\r\n private initializeForCurrentGasDay = (gasDayCycleStatuses: GasDayCycleStatus[], currentTime: Date): void => {\r\n const id1GasCycleStatus = this.getGasDayCycleStatus(gasDayCycleStatuses, GasCycle.ID1Code);\r\n const id2GasCycleStatus = this.getGasDayCycleStatus(gasDayCycleStatuses, GasCycle.ID2Code);\r\n const id3GasCycleStatus = this.getGasDayCycleStatus(gasDayCycleStatuses, GasCycle.ID3Code);\r\n\r\n const specifications = [\r\n {\r\n predicate: () => !this.bidFloorDeadlinePassed(id1GasCycleStatus, currentTime),\r\n handler: () => this.initializeForSingleCycle(id1GasCycleStatus)\r\n },\r\n {\r\n predicate: () => this.bidFloorDeadlinePassed(id1GasCycleStatus, currentTime) &&\r\n !this.nominationDeadlinePassed(id1GasCycleStatus, currentTime),\r\n handler: () => this.initializeForCycles([ id1GasCycleStatus, id2GasCycleStatus ], GasCycle.ID2Code)\r\n },\r\n {\r\n predicate: () => this.nominationDeadlinePassed(id1GasCycleStatus, currentTime) &&\r\n !this.bidFloorDeadlinePassed(id2GasCycleStatus, currentTime),\r\n handler: () => this.initializeForSingleCycle(id2GasCycleStatus)\r\n },\r\n {\r\n predicate: () => this.bidFloorDeadlinePassed(id2GasCycleStatus, currentTime) &&\r\n !this.nominationDeadlinePassed(id2GasCycleStatus, currentTime),\r\n handler: () => this.initializeForCycles([ id2GasCycleStatus, id3GasCycleStatus ], GasCycle.ID3Code)\r\n },\r\n {\r\n predicate: () => this.nominationDeadlinePassed(id2GasCycleStatus, currentTime) &&\r\n !this.bidFloorDeadlinePassed(id3GasCycleStatus, currentTime),\r\n handler: () => this.initializeForSingleCycle(id3GasCycleStatus)\r\n },\r\n {\r\n predicate: () => this.bidFloorDeadlinePassed(id3GasCycleStatus, currentTime) &&\r\n !this.nominationDeadlinePassed(id3GasCycleStatus, currentTime),\r\n handler: () => this.initializeForCycles([ id3GasCycleStatus ], null)\r\n },\r\n {\r\n predicate: () => this.nominationDeadlinePassed(id3GasCycleStatus, currentTime),\r\n handler: this.initializeForNoSelections\r\n },\r\n ];\r\n\r\n _.find(specifications, specification => specification.predicate()).handler();\r\n };\r\n\r\n private initializeForTomorrowGasDay = (gasDayCycleStatuses: GasDayCycleStatus[], currentTime: Date): void => {\r\n const timelyGasCycleStatus = this.getGasDayCycleStatus(gasDayCycleStatuses, GasCycle.TimelyCycleCode);\r\n const eveningGasCycleStatus = this.getGasDayCycleStatus(gasDayCycleStatuses, GasCycle.EveningCode);\r\n const id1GasCycleStatus = this.getGasDayCycleStatus(gasDayCycleStatuses, GasCycle.ID1Code);\r\n\r\n const specifications = [\r\n {\r\n predicate: () => !this.bidFloorDeadlinePassed(timelyGasCycleStatus, currentTime),\r\n handler: this.initializeForFutureGasDay\r\n },\r\n {\r\n predicate: () => this.bidFloorDeadlinePassed(timelyGasCycleStatus, currentTime) &&\r\n !this.nominationDeadlinePassed(timelyGasCycleStatus, currentTime),\r\n handler: () => this.initializeForCycles([ timelyGasCycleStatus, eveningGasCycleStatus ], GasCycle.EveningCode)\r\n },\r\n {\r\n predicate: () => this.nominationDeadlinePassed(timelyGasCycleStatus, currentTime) &&\r\n !this.bidFloorDeadlinePassed(eveningGasCycleStatus, currentTime),\r\n handler: () => this.initializeForSingleCycle(eveningGasCycleStatus)\r\n },\r\n {\r\n predicate: () => this.bidFloorDeadlinePassed(eveningGasCycleStatus, currentTime) &&\r\n !this.nominationDeadlinePassed(eveningGasCycleStatus, currentTime),\r\n handler: () => this.initializeForCycles([ eveningGasCycleStatus, id1GasCycleStatus ], GasCycle.ID1Code)\r\n },\r\n {\r\n predicate: () => this.nominationDeadlinePassed(eveningGasCycleStatus, currentTime),\r\n handler: () => this.initializeForSingleCycle(id1GasCycleStatus)\r\n }\r\n ];\r\n\r\n _.find(specifications, specification => specification.predicate()).handler(gasDayCycleStatuses);\r\n };\r\n\r\n private bidFloorDeadlinePassed = (gasDayCycleStatus: GasDayCycleStatus, currentTime: Date): boolean => {\r\n const gasCycle = gasDayCycleStatus.gasCycle;\r\n const deadline = _.includes([GasCycle.TimelyCycleCode, GasCycle.EveningCode], gasCycle.code) ?\r\n this.selectedGasDay.previous().toDate :\r\n this.selectedGasDay.toDate;\r\n\r\n const deadlineTime = new Date(gasCycle.bidFloorDeadlineTime);\r\n deadline.setHours(deadlineTime.getHours(), deadlineTime.getMinutes(), deadlineTime.getSeconds());\r\n\r\n return deadline <= currentTime;\r\n };\r\n\r\n private nominationDeadlinePassed = (gasDayCycleStatus: GasDayCycleStatus, currentTime: Date): boolean =>\r\n gasDayCycleStatus.nominationDeadline <= currentTime;\r\n\r\n private initializeForFutureGasDay = (gasDayCycleStatuses: GasDayCycleStatus[]): void => {\r\n const gasCycle = this.getGasCycle(gasDayCycleStatuses, GasCycle.TimelyCycleCode);\r\n\r\n this.value = gasCycle.code;\r\n this.dataSource = [ gasCycle ];\r\n };\r\n\r\n private initializeForCycles = (gasDayCycleStatuses: GasDayCycleStatus[], defaultGasCycleCode: string): void => {\r\n this.value = defaultGasCycleCode ? this.getGasCycle(gasDayCycleStatuses, defaultGasCycleCode).code : null;\r\n this.dataSource = gasDayCycleStatuses.map(x => x.gasCycle);\r\n };\r\n\r\n private initializeForSingleCycle = (gasDayCycleStatus: GasDayCycleStatus): void =>\r\n this.initializeForCycles([ gasDayCycleStatus ], gasDayCycleStatus.gasCycle.code);\r\n\r\n private initializeForNoSelections = (): void => {\r\n this.value = null;\r\n this.dataSource = [];\r\n };\r\n\r\n private initializeForReopenedNoms = (gasDayCycleStatuses: GasDayCycleStatus[]): void => {\r\n const reopenedGasCycleStatuses = gasDayCycleStatuses.filter(cycleStatus => cycleStatus.canRemoveForceNomWindowOpen);\r\n const reopenedGasCycles = reopenedGasCycleStatuses.map(x => x.gasCycle);\r\n\r\n if (!_.some(reopenedGasCycles)) {\r\n return;\r\n }\r\n\r\n this.value = this.value || _.first(reopenedGasCycles).code;\r\n this.dataSource = _.concat(this.dataSource, reopenedGasCycles);\r\n };\r\n\r\n private getGasDayCycleStatus = (cycleStatuses: GasDayCycleStatus[], code: string): GasDayCycleStatus =>\r\n cycleStatuses.find(cycleStatus => cycleStatus.gasCycle.code === code);\r\n\r\n private getGasCycle = (cycleStatuses: GasDayCycleStatus[], code: string): GasCycle =>\r\n this.getGasDayCycleStatus(cycleStatuses, code).gasCycle;\r\n\r\n get value(): any {\r\n return this.innerValue;\r\n }\r\n\r\n set value(value: any) {\r\n\r\n if (value !== this.innerValue) {\r\n this.innerValue = value;\r\n if (this.onChangeCallback) {\r\n this.onChangeCallback(value);\r\n }\r\n if (!(this.onValueChanged == null)) {\r\n this.onValueChanged();\r\n }\r\n }\r\n }\r\n\r\n writeValue(obj: any): void {\r\n if (obj !== this.innerValue) {\r\n this.innerValue = obj;\r\n }\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChangeCallback = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouchedCallback = fn;\r\n }\r\n\r\n onSelectionChanged = (e): void => {\r\n this.selectionChanged.emit(e);\r\n }\r\n}\r\n","\r\n\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n Browse...\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n CSV Parsing Errors:\r\n
{{model.error}}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
{{ model.bidFloorResponse?.linesInFile }}
\r\n \r\n
{{ model.bidFloorResponse?.linesSaved }}
\r\n
\r\n
\r\n \r\n
{{ model.bidFloorResponse?.tollsExpired }}
\r\n \r\n
{{ model.bidFloorResponse?.linesChanged }}
\r\n
\r\n
\r\n \r\n
{{ model.bidFloorResponse?.errors.length }}
\r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n","\r\nimport {forkJoin, Observable} from 'rxjs';\r\nimport {Component, OnInit} from '@angular/core';\r\nimport {AlertService} from \"app/shared/services/webapp/alert/alert.service\";\r\nimport {BidFloorService, BidFloorUploadParameters, BidFloorUploadResponse, BidFloorRow} from '@shared/services/nomination/bid-floor/bid-floor.service';\r\nimport {CsvUtility, BaseCsvUploadViewModel} from \"@model/CsvUtility\";\r\nimport {GasCycleService} from '@shared/services/nomination/gas-cycle/gas-cycle.service';\r\nimport {GasCycle} from '@model/gas-cycle';\r\nimport {\r\n ApplicationServerTimes,\r\n NominationSystemService\r\n} from '@shared/services/nomination/nomination-system/nomination-system.service';\r\nimport {BaseComponent} from '@model/base-component';\r\nimport {AppService} from '@shared/services/webapp/app/app.service';\r\nimport * as _ from 'lodash';\r\nimport {Router} from '@angular/router';\r\nimport {IGasDay} from \"@model/gas-day-month.interface\";\r\nimport {\r\n YesNoCancelModalService\r\n} from \"@shared/services/webapp/yes-no-cancel-modal/yes-no-cancel-modal.service\";\r\nimport {YesNoModalOptions} from \"@shared/services/webapp/modal-options/yes-no-modal-options\";\r\nimport {SelectedModalOption} from \"@shared/services/webapp/modal-options/selected-modal-option\";\r\nimport {GasDay} from \"@model/gas-day\";\r\n\r\nexport class BidFloorUploadViewModel extends BaseCsvUploadViewModel {\r\n gasDay: IGasDay;\r\n gasDayIsValid: boolean;\r\n gasCycles: GasCycle[];\r\n applicableGasDayCycles: GasCycle[];\r\n fromGasCycleCode: string;\r\n bidFloorResponse: BidFloorUploadResponse;\r\n minGasDay: GasDay;\r\n today: GasDay;\r\n}\r\n\r\n@Component({\r\n selector: 'app-load-bid-floors',\r\n templateUrl: './load-bid-floors.component.html',\r\n styleUrls: ['./load-bid-floors.component.css'],\r\n providers: [CsvUtility]\r\n})\r\n\r\nexport class LoadBidFloorsComponent extends BaseComponent implements OnInit {\r\n\r\n model: BidFloorUploadViewModel;\r\n extractedData: BidFloorRow[];\r\n defaultGasDay: GasDay;\r\n\r\n constructor(protected appService: AppService,\r\n private bidFloorService: BidFloorService,\r\n private alertService: AlertService,\r\n private gasDayCycleService: GasCycleService,\r\n private nominationSystemService: NominationSystemService,\r\n private csvUtility: CsvUtility,\r\n private modalService: YesNoCancelModalService,\r\n private router: Router) {\r\n super(appService);\r\n }\r\n\r\n ngOnInit() {\r\n super.setTitle('Load IT Bid Floors');\r\n\r\n this.initModel();\r\n\r\n this.nominationSystemService.pipelineGasDay().subscribe(pipelineGasDay => {\r\n const gasDay = pipelineGasDay.tomorrowsCalendarAllowableGasDay;\r\n\r\n this.model.today = gasDay.previous(); // Today.\r\n if (this.model.today.isLessThan(pipelineGasDay.earliestSelectableGasDay)) {\r\n this.model.minGasDay = pipelineGasDay.earliestSelectableGasDay;\r\n } else {\r\n this.model.minGasDay = this.model.today;\r\n }\r\n this.defaultGasDay = gasDay;\r\n\r\n this.loadResources(gasDay);\r\n });\r\n }\r\n\r\n loadResources(gasDay) {\r\n const serviceCalls: Observable[] = [\r\n this.gasDayCycleService.queryNaesb(gasDay),\r\n this.gasDayCycleService.getGasCycleStatus(gasDay, GasCycle.TimelyCycleCode),\r\n this.nominationSystemService.applicationServerTimes(),\r\n ];\r\n\r\n forkJoin(serviceCalls).subscribe(response => {\r\n this.model.gasCycles = response[0];\r\n const gasDayCycleStatus = response[1];\r\n const serverTimes = response[2];\r\n\r\n // We want to default to the first day with an open timely cycle.\r\n const nomDeadline = new Date(gasDayCycleStatus.nominationDeadline);\r\n const currentTime = new Date(serverTimes.centralClockTime);\r\n if (currentTime.valueOf() > nomDeadline.valueOf()) {\r\n this.defaultGasDay = this.defaultGasDay.next();\r\n }\r\n this.model.gasDay = this.defaultGasDay;\r\n });\r\n }\r\n\r\n uploadClicked() {\r\n if (this.extractedData !== null) {\r\n const parameters = new BidFloorUploadParameters();\r\n\r\n // Has the bid floor deadline passed?\r\n this.hasBidFloorDeadlinePassed().subscribe(hasPassed => {\r\n if (hasPassed) {\r\n const confirmResultTrue = () => {this.doUpload(parameters); };\r\n const yesNoModalOptions = new YesNoModalOptions('Load Bid Floors', 'IT Bid Floor deadline has passed. Do you want to continue?', 'Cancel', 'OK');\r\n this.modalService.show(yesNoModalOptions).subscribe((selectedModalOption: SelectedModalOption) => {\r\n if (selectedModalOption === SelectedModalOption.Yes) {\r\n confirmResultTrue();\r\n }\r\n });\r\n } else {\r\n this.doUpload(parameters);\r\n }\r\n });\r\n }\r\n }\r\n\r\n doUpload(parameters: BidFloorUploadParameters) {\r\n parameters.gasDayCycleCode = this.model.fromGasCycleCode;\r\n parameters.gasDay = this.model.gasDay;\r\n parameters.bidFloorRows = this.extractedData;\r\n\r\n this.route = this.router.routerState.snapshot.url;\r\n\r\n this.bidFloorService.set(parameters)\r\n .subscribe(\r\n response => {\r\n this.model.bidFloorResponse = response;\r\n this.model.bidFloorResponse.errors = _.map(response.errors, x => _.extend({}, x, { effectiveGasDay: this.model.gasDay.toDisplayFormat()}));\r\n this.model.error = '';\r\n if (this.model.bidFloorResponse.errors !== undefined && this.model.bidFloorResponse.errors.length > 0\r\n && this.route === this.router.routerState.snapshot.url) {\r\n this.alertService.addSuccessMessage('Upload successful', this.model.fileName + ' uploaded with '\r\n + this.model.bidFloorResponse.errors.length + ' errors.');\r\n } else if (this.route === this.router.routerState.snapshot.url) {\r\n this.alertService.addSuccessMessage('Upload successful', this.model.fileName + ' uploaded.');\r\n }\r\n });\r\n }\r\n\r\n private hasBidFloorDeadlinePassed(): Observable {\r\n const serviceCalls: Observable[] = [\r\n this.nominationSystemService.applicationServerTimes(),\r\n this.gasDayCycleService.getGasCycleStatus(this.model.gasDay, this.model.fromGasCycleCode)\r\n ];\r\n\r\n const obs = new Observable(observer => {\r\n forkJoin(serviceCalls).subscribe((result) => {\r\n const serverTimes = result[0];\r\n const gasDayCycleStatus = result[1];\r\n const nominationDeadline = new Date(gasDayCycleStatus.nominationDeadline);\r\n const gasCycle = _.find(this.model.gasCycles, x => x.code === this.model.fromGasCycleCode);\r\n const bidFloorDeadline = this.model.gasDay.toDate;\r\n if (!gasCycle.isIntraDayCycle) {\r\n bidFloorDeadline.setDate(bidFloorDeadline.getDate() - 1);\r\n }\r\n bidFloorDeadline.setHours(gasCycle.bidFloorDeadlineTime.getHours());\r\n bidFloorDeadline.setMinutes(gasCycle.bidFloorDeadlineTime.getMinutes());\r\n bidFloorDeadline.setSeconds(gasCycle.bidFloorDeadlineTime.getSeconds());\r\n bidFloorDeadline.setMilliseconds(gasCycle.bidFloorDeadlineTime.getMilliseconds());\r\n const passed = new Date(serverTimes.centralClockTime).valueOf() >= bidFloorDeadline.valueOf();\r\n observer.next(passed);\r\n observer.complete();\r\n });\r\n });\r\n return obs;\r\n }\r\n\r\n resetClicked() {\r\n this.extractedData = null;\r\n this.model.error = '';\r\n this.model.fileName = '';\r\n this.model.bidFloorResponse = null;\r\n this.model.gasDayIsValid = true;\r\n this.model.gasDay = this.defaultGasDay;\r\n this.alertService.clearMessages();\r\n }\r\n\r\n hoverOver() {\r\n return this.model.error;\r\n }\r\n\r\n private initModel(): void {\r\n this.model = new BidFloorUploadViewModel();\r\n this.model.bidFloorResponse = null;\r\n this.model.error = '';\r\n this.model.fileName = '';\r\n this.model.gasCycles = [];\r\n this.model.applicableGasDayCycles = [];\r\n }\r\n\r\n public updateClick(e) {\r\n this.extractedData = new Array();\r\n if (e.target.files.length > 0) {\r\n this.model.fileName = e.target.files[0].name;\r\n\r\n const reader = new FileReader();\r\n\r\n reader.onload = (event: any) => {\r\n this.alertService.clearMessages();\r\n this.model.bidFloorResponse = null;\r\n this.extractData(event.target.result, this.model);\r\n };\r\n reader.readAsText(e.target.files[0]);\r\n }\r\n }\r\n\r\n protected extractData(data: string, model: BidFloorUploadViewModel) {\r\n const headers = ['Point From', 'Point To', 'Base Toll (100%)', 'Load Factor (%)'];\r\n\r\n model.error = '';\r\n model.isValid = false;\r\n\r\n this.csvUtility.extractData(data, this.model, headers, (result, fields) => {\r\n for (let i = 0; i < result.length; i++) {\r\n this.extractedData.push(new BidFloorRow((i + 1).toString(),\r\n result[i][this.csvUtility.findColumnHeaderColumn(fields, headers[0])],\r\n result[i][this.csvUtility.findColumnHeaderColumn(fields, headers[1])],\r\n result[i][this.csvUtility.findColumnHeaderColumn(fields, headers[2])],\r\n result[i][this.csvUtility.findColumnHeaderColumn(fields, headers[3])]));\r\n }\r\n }, false, true);\r\n }\r\n\r\n // TODO: Can this be done using Form Validations?\r\n public isValidFile(model): boolean {\r\n if (model.fileName !== null && model.fileName !== '' && model.isValid) {\r\n return true;\r\n }\r\n }\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {InvoicingResourceService} from \"@shared/resources/invoicing-resource.service\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {Observable} from \"rxjs\";\r\nimport {IEnrichmentEnterprise} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {map} from \"rxjs/operators\";\r\nimport * as _ from \"lodash\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {HttpResponse} from \"@angular/common/http\";\r\n\r\nexport interface IInvoicePackageResponse {\r\n billingMonth: string;\r\n hasCsv: boolean;\r\n hasPdf: boolean;\r\n hasPdfWithReports: boolean;\r\n invoiceRecipientId: number;\r\n isPrinted: boolean;\r\n manualChargesPreTaxTotal?: number;\r\n nonManualChargesPreTaxTotal?: number;\r\n pipelineCode: string;\r\n revisedDate: string;\r\n revision: number;\r\n status: string;\r\n taxTotal?: number;\r\n total?: number;\r\n}\r\n\r\nexport class InvoicePackage {\r\n billingMonth: GasMonth;\r\n hasCsv: boolean;\r\n hasPdf: boolean;\r\n hasPdfWithReports: boolean;\r\n invoiceRecipientId: number;\r\n isPrinted: boolean;\r\n manualChargesPreTaxTotal?: number;\r\n nonManualChargesPreTaxTotal?: number;\r\n pipelineCode: string;\r\n revisedDate: GasDay;\r\n revision: number;\r\n status: string;\r\n taxTotal?: number;\r\n total?: number;\r\n\r\n public static create(dto: IInvoicePackageResponse): InvoicePackage {\r\n const invoicePackage = new InvoicePackage();\r\n invoicePackage.billingMonth = GasMonth.parse(dto.billingMonth);\r\n invoicePackage.hasCsv = dto.hasCsv;\r\n invoicePackage.hasPdf = dto.hasPdf;\r\n invoicePackage.hasPdfWithReports = dto.hasPdfWithReports;\r\n invoicePackage.invoiceRecipientId = dto.invoiceRecipientId;\r\n invoicePackage.isPrinted = dto.isPrinted;\r\n invoicePackage.manualChargesPreTaxTotal = dto.manualChargesPreTaxTotal;\r\n invoicePackage.nonManualChargesPreTaxTotal = dto.nonManualChargesPreTaxTotal;\r\n invoicePackage.pipelineCode = dto.pipelineCode;\r\n invoicePackage.revisedDate = GasDay.parse(dto.revisedDate);\r\n invoicePackage.revision = dto.revision;\r\n invoicePackage.status = dto.status;\r\n invoicePackage.taxTotal = dto.taxTotal;\r\n invoicePackage.total = dto.total;\r\n return invoicePackage;\r\n }\r\n\r\n public get hasRevisions(): boolean {\r\n return this.hasPdf && this.revision > 0;\r\n }\r\n}\r\n\r\nexport interface IInvoiceSummaryResponse {\r\n invoiceRecipientId: number;\r\n invoiceNumber: number;\r\n customerId: number;\r\n total: number;\r\n revision: number;\r\n revisedDate: string;\r\n invoiceDetails: IInvoiceDetailResponse[];\r\n}\r\n\r\nexport interface IInvoiceDetailResponse {\r\n isCustomerManualAdjustmentDetail: boolean;\r\n invoiceGroup: number;\r\n nominationGroup: number;\r\n total: number;\r\n}\r\n\r\nexport class InvoiceDetail {\r\n isCustomerManualAdjustmentDetail: boolean;\r\n invoiceGroup: number;\r\n nominationGroup: number;\r\n total: number;\r\n\r\n public static create(dto: IInvoiceDetailResponse) {\r\n const invoiceDetail = new InvoiceDetail();\r\n invoiceDetail.isCustomerManualAdjustmentDetail = dto.isCustomerManualAdjustmentDetail;\r\n invoiceDetail.invoiceGroup = +dto.invoiceGroup;\r\n invoiceDetail.nominationGroup = +dto.nominationGroup;\r\n invoiceDetail.total = +dto.total;\r\n return invoiceDetail;\r\n }\r\n}\r\n\r\nexport class InvoiceSummary {\r\n invoiceRecipientId: number;\r\n invoiceNumber: number;\r\n customerId: number;\r\n total: number;\r\n revision: number;\r\n revisedDate: GasDay;\r\n invoiceDetails: InvoiceDetail[];\r\n\r\n public static create(dto: IInvoiceSummaryResponse): InvoiceSummary {\r\n const invoiceSummary = new InvoiceSummary();\r\n invoiceSummary.invoiceRecipientId = +dto.invoiceRecipientId;\r\n invoiceSummary.invoiceNumber = +dto.invoiceNumber;\r\n invoiceSummary.customerId = +dto.customerId;\r\n invoiceSummary.total = +dto.total;\r\n invoiceSummary.revision = +dto.revision;\r\n invoiceSummary.revisedDate = GasDay.parse(dto.revisedDate);\r\n invoiceSummary.invoiceDetails = _.map(dto.invoiceDetails, x => InvoiceDetail.create(x));\r\n return invoiceSummary;\r\n }\r\n}\r\n\r\nexport class InvoiceRecipient implements IEnrichmentEnterprise {\r\n id: number;\r\n shortName: string;\r\n mnemonic: string;\r\n dunsNumber: string;\r\n stateExpiryGasDay: GasDay;\r\n sapNumber: string;\r\n\r\n public static create(enterpriseId: number) {\r\n const invoiceRecipient = new InvoiceRecipient();\r\n\r\n invoiceRecipient.id = +enterpriseId;\r\n\r\n return invoiceRecipient;\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport class InvoicingInvoicePackageService {\r\n\r\n constructor(private invoicingResource: InvoicingResourceService) { }\r\n\r\n public queryInvoiceRecipients(startGasMonth: GasMonth, endGasMonth: GasMonth): Observable{\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('startBillingMonth', startGasMonth.toString());\r\n params.set('endBillingMonth', endGasMonth.toString());\r\n\r\n return this.invoicingResource.get('/invoicePackages/invoicerecipients', true, params)\r\n .pipe(\r\n map(dtos => _.map(dtos, dto => InvoiceRecipient.create(dto)))\r\n );\r\n }\r\n\r\n public queryInvoicePackages(startGasMonth: GasMonth, endGasMonth: GasMonth, arNumber: string, includeRevisionHistory: boolean, enterpriseId?: number): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('startBillingMonth', startGasMonth.toString());\r\n params.set('endBillingMonth', endGasMonth.toString());\r\n params.setOptionalNumber('enterpriseId', enterpriseId);\r\n params.set('arNumber', arNumber);\r\n params.setBoolean('includeRevisionHistory', includeRevisionHistory);\r\n\r\n return this.invoicingResource.get('/invoicePackages', true, params)\r\n .pipe(\r\n map(dtos => _.map(dtos, dto => InvoicePackage.create(dto)))\r\n );\r\n }\r\n\r\n public queryInvoicePackagesWithStatuses(billingMonth: GasMonth, enterpriseId?: number, statuses?: string[]): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setGasMonth(billingMonth, 'billingMonth');\r\n params.setOptionalNumber('enterpriseId', enterpriseId);\r\n params.setOptionalListOfStrings('statuses', statuses);\r\n\r\n return this.invoicingResource.get('/invoicePackages', true, params)\r\n .pipe(\r\n map(dtos => _.map(dtos, dto => InvoicePackage.create(dto)))\r\n );\r\n }\r\n\r\n public queryInvoicePackageWithPrintStatus(billingMonth: GasMonth, enterpriseId?: number, isPrinted?: boolean) {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setGasMonth(billingMonth, 'billingMonth');\r\n params.setOptionalNumber('enterpriseId', enterpriseId);\r\n params.setBoolean('includePrintableOnly', true);\r\n params.setBoolean('isPrinted', isPrinted);\r\n\r\n return this.invoicingResource.get('/invoicePackages', true, params)\r\n .pipe(\r\n map(dtos => _.map(dtos, dto => InvoicePackage.create(dto)))\r\n );\r\n }\r\n\r\n public queryInvoiceSummary(billingMonth: GasMonth, invoiceRecipientId: number, revision: number): Observable {\r\n return this.invoicingResource.get(`/invoicePackages/${billingMonth.toString()}/${invoiceRecipientId}/${revision}/invoices`, true)\r\n .pipe(\r\n map(dtos => _.map(dtos, dto => InvoiceSummary.create(dto)))\r\n );\r\n }\r\n\r\n public queryAllStatuses(): Observable {\r\n return this.invoicingResource.get('/invoicePackageStatuses', false);\r\n }\r\n\r\n public getInvoicePackagePdf(billingMonth: GasMonth, invoiceRecipientId: number, revision: number, includeReports: boolean = false): Observable> {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setBoolean('includeReports', includeReports);\r\n\r\n return this.invoicingResource.getData(`/invoicePackages/${billingMonth.toString()}/${invoiceRecipientId}/${revision}/pdf`, true, params);\r\n }\r\n\r\n public getInvoicePackageChargesCsv(billingMonth: GasMonth, invoiceRecipientId: number, customerId?: number): Observable> {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setBoolean('download', true);\r\n params.setOptionalNumber('customerId', customerId);\r\n\r\n return this.invoicingResource.getData(`/invoicePackages/${billingMonth.toString()}/${invoiceRecipientId}/charges/csv`, true, params);\r\n }\r\n\r\n public getInvoicePdf(invoiceNumber: number, revision: number): Observable> {\r\n return this.invoicingResource.getData(`/invoices/${invoiceNumber}/${revision}/pdf`, true);\r\n }\r\n\r\n public getAllInvoicePackages(billingMonth: GasMonth): Observable> {\r\n return this.invoicingResource.getData(`/invoicePackages/${billingMonth.toString()}/zip`, true);\r\n }\r\n\r\n public updateInvoicePackages(updateInvoicePackageRequests: UpdateInvoicePackageRequest[]): Observable {\r\n const body = _.map(updateInvoicePackageRequests, x => x.convertToDto());\r\n return this.invoicingResource.patchWithNoResponseBody('/invoicePackages', body);\r\n }\r\n\r\n public getLastInvoiceRecipientInvoiceBillingMonth(invoiceRecipientId: number): Observable {\r\n const params = new GCTSHttpParams();\r\n params.setNumber('invoiceRecipientId', invoiceRecipientId);\r\n\r\n return this.invoicingResource.get('/lastInvoiceRecipientInvoiceBillingMonth', true, params)\r\n .pipe(\r\n map(dto => LastInvoiceRecipientInvoiceBillingMonth.create(dto))\r\n );\r\n }\r\n\r\n public queryInvoicesForPackage(billingMonth: GasMonth, invoiceRecipientId: number, revision: number): Observable {\r\n return this.invoicingResource.get(`/invoicePackages/${billingMonth.toString()}/${invoiceRecipientId}/${revision}/invoices`);\r\n }\r\n\r\n public getMergedPackagesPdf(billingMonth: GasMonth, invoiceRecipientIds: number[]): Observable> {\r\n const params = new GCTSHttpParams();\r\n params.setListOfNumbers('invoiceRecipientIds', invoiceRecipientIds);\r\n\r\n return this.invoicingResource.getData(`/invoicePackages/${billingMonth.toString()}/pdf`, true, params);\r\n }\r\n\r\n public doPriorInvoicePackagesExist(billingMonth: GasMonth): Observable{\r\n return this.invoicingResource.get(`/invoicePackages/doPriorInvoicePackagesExist/${billingMonth.toString()}`, true);\r\n }\r\n}\r\n\r\nexport interface ILastInvoiceRecipientInvoiceBillingMonthResponse {\r\n customerLastInvoiceBillingMonth: string;\r\n nomGroupLastInvoiceBillingMonth: string;\r\n invoiceRecipientLastInvoiceBillingMonth: string;\r\n}\r\n\r\nexport class LastInvoiceRecipientInvoiceBillingMonth {\r\n customerLastInvoiceBillingMonth?: GasMonth;\r\n nomGroupLastInvoiceBillingMonth?: GasMonth;\r\n invoiceRecipientLastInvoiceBillingMonth?: GasMonth;\r\n\r\n public static create(dto: ILastInvoiceRecipientInvoiceBillingMonthResponse): LastInvoiceRecipientInvoiceBillingMonth {\r\n const lastInvoiceRecipientInvoiceBillingMonth = new LastInvoiceRecipientInvoiceBillingMonth();\r\n\r\n lastInvoiceRecipientInvoiceBillingMonth.customerLastInvoiceBillingMonth = !_.isNil(dto.customerLastInvoiceBillingMonth) ? GasMonth.parse(dto.customerLastInvoiceBillingMonth) : null;\r\n lastInvoiceRecipientInvoiceBillingMonth.nomGroupLastInvoiceBillingMonth = !_.isNil(dto.nomGroupLastInvoiceBillingMonth) ? GasMonth.parse(dto.nomGroupLastInvoiceBillingMonth) : null;\r\n lastInvoiceRecipientInvoiceBillingMonth.invoiceRecipientLastInvoiceBillingMonth = !_.isNil(dto.invoiceRecipientLastInvoiceBillingMonth) ? GasMonth.parse(dto.invoiceRecipientLastInvoiceBillingMonth) : null;\r\n\r\n return lastInvoiceRecipientInvoiceBillingMonth;\r\n }\r\n}\r\n\r\nexport class UpdateInvoicePackageRequest {\r\n public constructor(public pipeline: string,\r\n public billingMonth: GasMonth,\r\n public invoiceRecipientId: number,\r\n public status: string = 'Submitted',\r\n public isPrinted: boolean = null){\r\n }\r\n\r\n public convertToDto(): any {\r\n return {\r\n billingMonth: this.billingMonth.toString(),\r\n invoiceRecipientId: this.invoiceRecipientId,\r\n pipeline: this.pipeline,\r\n status: this.status,\r\n isPrinted: this.isPrinted\r\n };\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n Unsaved changes will be lost, would you like to continue?\r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n\r\n
\r\n {{model.billingMonth?.gasMonth | gasMonthFormat}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.billingMonth?.status?.name}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n\r\n\r\n\r\n","import {forkJoin, Observable, of} from 'rxjs';\r\nimport {Component, ViewChild} from '@angular/core';\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {ActivatedRoute, Router, Params} from \"@angular/router\";\r\nimport {\r\n CommonDataBillingMonthService\r\n} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {tap} from \"rxjs/operators\";\r\nimport {BillingMonthComponent} from \"app/gcts/administration/billing-month/billing-month.component\";\r\nimport * as _ from \"lodash\";\r\nimport {DateTime} from \"@model/date-time\";\r\nimport {ModalComponent} from \"@shared/components/modal/modal.component\";\r\nimport {InvoicingInvoicePackageService} from \"@shared/services/invoicing/invoicing-invoice-package/invoicing-invoice-package.service\";\r\n\r\nexport class EditBillingMonthModel {\r\n openBillingMonth: BillingMonth;\r\n oldestBillingMonth: BillingMonth;\r\n preliminaryBillingMonth: BillingMonth;\r\n\r\n searchParams: EditBillingMonthSearchParams = new EditBillingMonthSearchParams();\r\n\r\n billingMonth: BillingMonth;\r\n minGasDay: GasDay;\r\n minPaymentGasDay: GasDay;\r\n\r\n invoiceIssueGasDayChanged: boolean = false;\r\n invoicePaymentGasDayChanged: boolean = false;\r\n isGenerateInvoiceDisabled: any;\r\n originalGenerateInvoice: boolean;\r\n}\r\n\r\nexport class EditBillingMonthSearchParams {\r\n billingGasMonth: GasMonth;\r\n\r\n invoiceIssueGasDay: GasDay; // making this a GasDay since the GasDay control expects that.\r\n invoicePaymentGasDay: GasDay; // making this a GasDay since the GasDay control expects that.\r\n}\r\n\r\n@Component({\r\n selector: 'app-edit-billing-month',\r\n templateUrl: './edit-billing-month.component.html',\r\n styleUrls: ['./edit-billing-month.component.css']\r\n})\r\nexport class EditBillingMonthComponent extends BaseSearchComponent {\r\n model: EditBillingMonthModel = new EditBillingMonthModel();\r\n @ViewChild(ModalComponent) yesNoSubmitModal: ModalComponent;\r\n\r\n constructor(protected appService: AppService,\r\n protected router: Router,\r\n protected activatedRoute: ActivatedRoute,\r\n protected alertService: AlertService,\r\n private commonDataBillingMonthService: CommonDataBillingMonthService,\r\n private invoicingInvoicePackageService: InvoicingInvoicePackageService) {\r\n super('Edit Billing Month', appService, activatedRoute, router, alertService);\r\n }\r\n\r\n /**\r\n * Public Methods\r\n *\r\n */\r\n\r\n public saveClicked(): void {\r\n this.alertService.clearMessages();\r\n\r\n const billingMonthRequest = this.model.billingMonth;\r\n billingMonthRequest.invoiceIssueDateTime = _.isNil(this.model.searchParams.invoiceIssueGasDay.toDateTime()) ? null : this.model.searchParams.invoiceIssueGasDay.toDateTime();\r\n billingMonthRequest.invoicePaymentDateTime = _.isNil(this.model.searchParams.invoicePaymentGasDay.toDateTime()) ? null : this.model.searchParams.invoicePaymentGasDay.toDateTime();\r\n\r\n const updateBillingMonth$ = this.commonDataBillingMonthService.update(billingMonthRequest).pipe(\r\n tap(billingMonth => {\r\n this.model.billingMonth = billingMonth;\r\n })\r\n );\r\n\r\n updateBillingMonth$.subscribe(() => {\r\n const billingGasMonth = this.model.billingMonth.gasMonth;\r\n this.alertService.addSuccessMessage('Success', `${billingGasMonth.toString()} Billing Month updated successfully.`);\r\n\r\n const params = {};\r\n params[BillingMonthComponent.PARAM_MONTH] = billingGasMonth.toString();\r\n\r\n this.router.navigate(['/app', this.getPipelineCode(), 'billingMonths'], {queryParams: params}).then(() => {});\r\n });\r\n }\r\n\r\n public cancelClicked(): void {\r\n this.alertService.clearMessages();\r\n\r\n if (this.hasDataChanged()) {\r\n this.yesNoSubmitModal.show();\r\n } else {\r\n this.cancelEditBillingMonth();\r\n }\r\n }\r\n\r\n public cancelEditBillingMonth(): void {\r\n const params = {};\r\n params[BillingMonthComponent.PARAM_MONTH] = this.model.searchParams.billingGasMonth.toString();\r\n\r\n this.router.navigate(['/app', this.getPipelineCode(), 'billingMonths'], {queryParams: params}).then(() => {});\r\n }\r\n\r\n public invoiceIssueGasDayChanged(gasDayEvent: any): void {\r\n this.model.invoiceIssueGasDayChanged = this.checkGasDayChanged(gasDayEvent, this.model.billingMonth.invoiceIssueDateTime);\r\n this.model.minPaymentGasDay = gasDayEvent as GasDay;\r\n }\r\n\r\n public invoicePaymentGasDayChanged(gasDayEvent: any): void {\r\n this.model.invoicePaymentGasDayChanged = this.checkGasDayChanged(gasDayEvent, this.model.billingMonth.invoicePaymentDateTime);\r\n }\r\n\r\n private checkGasDayChanged(gasDayEvent: any, oldDateTime: DateTime): boolean {\r\n const newInvoiceGasDay = gasDayEvent as GasDay;\r\n\r\n if (!_.isNil(this.model.billingMonth) && !_.isNil(newInvoiceGasDay)) {\r\n return !newInvoiceGasDay.toDateTime().removeTime().isEqual(oldDateTime);\r\n }\r\n return false;\r\n }\r\n\r\n public hasDataChanged(): boolean {\r\n return this.model.invoicePaymentGasDayChanged || this.model.invoiceIssueGasDayChanged || this.model.billingMonth?.generateInvoice !== this.model.originalGenerateInvoice;\r\n }\r\n\r\n /**\r\n * Protected Methods\r\n *\r\n */\r\n\r\n protected loadInitialResources(): Observable {\r\n const getOpenBillingMonth$ = this.commonDataBillingMonthService.getOpen().pipe(\r\n tap(openBillingMonth => this.model.openBillingMonth = openBillingMonth)\r\n );\r\n\r\n const getOldestBillingMonth$ = this.commonDataBillingMonthService.getOldest().pipe(\r\n tap(oldestBillingMonth => {\r\n this.model.oldestBillingMonth = oldestBillingMonth;\r\n })\r\n );\r\n\r\n const getPreliminaryBillingMonth$ = this.commonDataBillingMonthService.getPreliminary().pipe(\r\n tap(preliminaryBillingMonth => {\r\n this.model.preliminaryBillingMonth = preliminaryBillingMonth;\r\n })\r\n );\r\n\r\n return forkJoin([getOpenBillingMonth$, getOldestBillingMonth$, getPreliminaryBillingMonth$]);\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n const gasMonthUrlParam = this.activatedRoute.snapshot.params['gasMonth'];\r\n this.model.searchParams.billingGasMonth = GasMonth.parse(gasMonthUrlParam);\r\n\r\n const selectedBillingGasMonth = this.model.searchParams.billingGasMonth;\r\n\r\n // display alert if the search param billing month is Open or Preliminary\r\n if (this.model.openBillingMonth.gasMonth.isEqual(selectedBillingGasMonth)) {\r\n this.alertService.addWarnMessage('Warning', `Editing the Open Billing Month will cause charges for ${selectedBillingGasMonth.toString()} to be reset.`);\r\n } else if (this.model.preliminaryBillingMonth !== null && this.model.preliminaryBillingMonth.gasMonth.isEqual(selectedBillingGasMonth)) {\r\n this.alertService.addWarnMessage('Warning', `Editing the Preliminary Billing Month will cause charges for ${selectedBillingGasMonth.toString()} to be reset.`);\r\n }\r\n\r\n const getBillingMonth$ = this.commonDataBillingMonthService.get(selectedBillingGasMonth).pipe(\r\n tap(billingMonth => {\r\n this.model.billingMonth = billingMonth;\r\n\r\n this.model.searchParams.invoiceIssueGasDay = GasDay.parse(billingMonth.invoiceIssueDateTime.toString());\r\n this.model.searchParams.invoicePaymentGasDay = GasDay.parse(billingMonth.invoicePaymentDateTime.toString());\r\n\r\n this.model.minGasDay = billingMonth.gasMonth.next().start();\r\n this.model.minPaymentGasDay = this.model.searchParams.invoiceIssueGasDay;\r\n\r\n this.model.originalGenerateInvoice = this.model.billingMonth.generateInvoice;\r\n if (this.model.billingMonth.generateInvoice){\r\n this.setGenerateInvoiceDisabled();\r\n }\r\n })\r\n );\r\n\r\n return getBillingMonth$;\r\n }\r\n\r\n private setGenerateInvoiceDisabled(){\r\n const getBillingMonth$ = this.commonDataBillingMonthService.get(this.model.billingMonth.gasMonth.previous());\r\n const doInvoicePackagesExist$ = this.invoicingInvoicePackageService.doPriorInvoicePackagesExist(this.model.billingMonth.gasMonth);\r\n\r\n forkJoin([getBillingMonth$, doInvoicePackagesExist$]).subscribe(([previousMonth, doInvoicePackagesExist]) => {\r\n this.model.isGenerateInvoiceDisabled = (_.isNil(previousMonth) ? false : previousMonth.generateInvoice) || doInvoicePackagesExist;\r\n });\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return false;\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n }\r\n\r\n protected performSearch(): Observable {\r\n return of({});\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n Unsaved changes will be lost, would you like to continue?\r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.newBillingMonthRequest?.gasMonth }}\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.newBillingMonthRequest?.status?.name}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n","import {forkJoin, Observable, of} from 'rxjs';\r\nimport {Component, ViewChild} from '@angular/core';\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {BillingProcessRequest, FlowingGasAllocationAndBalancingBillingProcessService} from \"@shared/services/flowing-gas/flowing-gas-allocation-and-balancing-billing-process/flowing-gas-allocation-and-balancing-billing-process.service\";\r\nimport {InvoicingInvoiceBillingProcessService} from \"@shared/services/invoicing/invoicing-invoice-billing-process/invoicing-invoice-billing-process.service\";\r\nimport {FlowingGasMeasurementBillingProcessService} from \"@shared/services/flowing-gas/flowing-gas-measurement-billing-process/flowing-gas-measurement-billing-process.service\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {catchError, concatMap, tap} from \"rxjs/operators\";\r\nimport {ModalComponent} from \"@shared/components/modal/modal.component\";\r\nimport {BillingMonthComponent} from \"app/gcts/administration/billing-month/billing-month.component\";\r\nimport {BillingMonthStatus} from \"@model/billing-month-status\";\r\nimport * as _ from \"lodash\";\r\n\r\nexport class AddBillingMonthModel {\r\n newestBillingMonth: BillingMonth;\r\n openBillingMonth: BillingMonth;\r\n minGasDay: GasDay;\r\n minPaymentGasDay: GasDay;\r\n\r\n newBillingMonthRequest: BillingMonth;\r\n invoiceIssueGasDay: GasDay;\r\n invoicePaymentGasDay: GasDay;\r\n generateInvoice: boolean = false;\r\n\r\n searchResult: BillingMonth;\r\n isGenerateInvoiceDisabled: any;\r\n}\r\n\r\n@Component({\r\n selector: 'app-add-billing-month',\r\n templateUrl: './add-billing-month.component.html',\r\n styleUrls: ['./add-billing-month.component.css']\r\n})\r\nexport class AddBillingMonthComponent extends BaseSearchComponent {\r\n\r\n model: AddBillingMonthModel = new AddBillingMonthModel();\r\n @ViewChild(ModalComponent) yesNoSubmitModal: ModalComponent;\r\n\r\n constructor(protected appService: AppService,\r\n protected router: Router,\r\n protected activatedRoute: ActivatedRoute,\r\n protected alertService: AlertService,\r\n private commonDataBillingMonthService: CommonDataBillingMonthService,\r\n private flowingGasAllocationAndBalancingBillingProcessService: FlowingGasAllocationAndBalancingBillingProcessService,\r\n private invoicingInvoiceBillingProcessService: InvoicingInvoiceBillingProcessService,\r\n private flowingGasMeasurementBillingProcessService: FlowingGasMeasurementBillingProcessService) {\r\n super('New Billing Month', appService, activatedRoute, router, alertService);\r\n }\r\n\r\n public cancelClick(): void {\r\n this.yesNoSubmitModal.show();\r\n }\r\n\r\n public cancelNewBillingMonth(): void {\r\n this.router.navigate(['/app', this.getPipelineCode(), 'billingMonths']).then(() => {});\r\n }\r\n\r\n public saveClick(): void {\r\n // gas month and status are set during load initial resources\r\n this.model.newBillingMonthRequest.invoicePaymentDateTime = this.model.invoicePaymentGasDay.toDateTime();\r\n this.model.newBillingMonthRequest.invoiceIssueDateTime = this.model.invoiceIssueGasDay.toDateTime();\r\n this.model.newBillingMonthRequest.isMigrated = false;\r\n this.model.newBillingMonthRequest.generateInvoice = this.model.generateInvoice;\r\n\r\n let save$: Observable;\r\n if (this.model.openBillingMonth){\r\n save$ = this.commonDataBillingMonthService.save(this.model.newBillingMonthRequest);\r\n }\r\n else {\r\n save$ = this.commonDataBillingMonthService.saveOpen(this.model.newBillingMonthRequest);\r\n }\r\n\r\n save$.pipe(\r\n tap(result => {\r\n this.model.searchResult = result;\r\n }),\r\n concatMap(billingMonth => {\r\n const billingProcessRequest = new BillingProcessRequest();\r\n billingProcessRequest.gasMonth = billingMonth.gasMonth.toString();\r\n\r\n const saveMeasurementBillingMonthProcess$ = this.flowingGasMeasurementBillingProcessService.save(billingProcessRequest);\r\n const saveAllocationBillingMonthProcess$ = this.flowingGasAllocationAndBalancingBillingProcessService.save(billingProcessRequest);\r\n const saveInvoiceBillingProcess$ = this.invoicingInvoiceBillingProcessService.save(billingProcessRequest);\r\n\r\n return forkJoin([saveMeasurementBillingMonthProcess$, saveAllocationBillingMonthProcess$, saveInvoiceBillingProcess$]);\r\n })\r\n ).subscribe(() => {\r\n const billingGasMonth = this.model.searchResult.gasMonth;\r\n this.alertService.addSuccessMessage('Success', ` ${billingGasMonth.toString()} Billing Month added successfully.`);\r\n\r\n const params = {};\r\n params[BillingMonthComponent.PARAM_MONTH] = billingGasMonth.toString();\r\n\r\n this.router.navigate(['/app', this.getPipelineCode(), 'billingMonths'], {queryParams: params}).then(() => {});\r\n });\r\n }\r\n\r\n public invoiceIssueGasDayChanged(gasDayEvent: any): void {\r\n this.model.minPaymentGasDay = gasDayEvent as GasDay;\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n this.model.newBillingMonthRequest = new BillingMonth();\r\n const newest$ = this.commonDataBillingMonthService.getNewest().pipe(\r\n tap(newestBillingMonth => {\r\n this.model.newBillingMonthRequest.status = BillingMonthStatus.NotOpen;\r\n this.model.newestBillingMonth = newestBillingMonth;\r\n this.model.newBillingMonthRequest.gasMonth = newestBillingMonth.gasMonth.addMonth(1);\r\n const invoiceIssuePaymentMonth = newestBillingMonth.gasMonth.next();\r\n this.model.minGasDay = invoiceIssuePaymentMonth.start();\r\n this.model.generateInvoice = newestBillingMonth.generateInvoice;\r\n\r\n if (this.model.generateInvoice){\r\n this.setGenerateInvoiceDisabled();\r\n }\r\n }),\r\n catchError(() => {\r\n this.model.newBillingMonthRequest.status = BillingMonthStatus.Open;\r\n return of({});\r\n })\r\n );\r\n const open$ = this.commonDataBillingMonthService.getOpen()\r\n .pipe(tap(openBillingMonth => this.model.openBillingMonth = openBillingMonth));\r\n return forkJoin([newest$, open$]);\r\n }\r\n\r\n private setGenerateInvoiceDisabled(){\r\n this.commonDataBillingMonthService.get(this.model.newBillingMonthRequest.gasMonth.previous()).subscribe((result) => {\r\n this.model.isGenerateInvoiceDisabled = (_.isNil(result) ? false : result.generateInvoice);\r\n });\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n const invoiceIssuePaymentMonth = this.model.newBillingMonthRequest.gasMonth.addMonth(1);\r\n this.model.invoiceIssueGasDay = new GasDay(invoiceIssuePaymentMonth.year, invoiceIssuePaymentMonth.month, 10);\r\n this.model.invoicePaymentGasDay = new GasDay(invoiceIssuePaymentMonth.year, invoiceIssuePaymentMonth.month, 20);\r\n this.model.minPaymentGasDay = this.model.invoiceIssueGasDay;\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return false;\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n return of({});\r\n }\r\n\r\n protected performSearch(): Observable {\r\n return of({});\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n }\r\n}\r\n","import {GasMonth} from \"@model/gas-month\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {GasCycle} from \"@model/gas-cycle\";\r\nimport {JobType} from \"@model/job-type\";\r\nimport {GctsProcess} from \"@model/gcts-process\";\r\nimport {NominationLocation} from \"@shared/services/nomination/nomination-location/nomination-location.service\";\r\n\r\nexport enum JobRunParam {\r\n GasMonth,\r\n GasDay,\r\n GasDayCycle,\r\n LocationGasDayCycle,\r\n LocationGasDay,\r\n None\r\n}\r\n\r\nexport class JobRunnerSearchParams {\r\n process: string;\r\n job: string;\r\n gasMonth: GasMonth;\r\n gasMonthIsValid: boolean;\r\n gasDay: GasDay;\r\n gasDayIsValid: boolean;\r\n gasCycleCode: string;\r\n locationId: number;\r\n includeTitleTransfers = true;\r\n}\r\n\r\nexport class JobRunnerViewModel {\r\n processes: GctsProcess[];\r\n jobs: JobType[];\r\n gasCycles: GasCycle[];\r\n locations: NominationLocation[];\r\n defaultGasDay: GasDay;\r\n\r\n minGasMonth: GasMonth;\r\n maxGasMonth: GasMonth;\r\n minGasDay: GasDay;\r\n maxGasDay: GasDay;\r\n\r\n searchParams: JobRunnerSearchParams = new JobRunnerSearchParams();\r\n\r\n showGasMonth: boolean = false;\r\n showGasDay: boolean = false;\r\n showGasCycle: boolean = false;\r\n showLocation: boolean = false;\r\n\r\n invalidParameters: boolean = false;\r\n}\r\n","import * as _ from \"lodash\";\r\n\r\nexport class EdiConfirmationMethod {\r\n public static AGA: EdiConfirmationMethod = new EdiConfirmationMethod(\"AGA\");\r\n public static X12: EdiConfirmationMethod = new EdiConfirmationMethod(\"X12\");\r\n\r\n public static ALL: EdiConfirmationMethod[] = [EdiConfirmationMethod.AGA, EdiConfirmationMethod.X12];\r\n\r\n constructor(value: string) {\r\n this._value = value;\r\n }\r\n\r\n private readonly _value: string;\r\n\r\n get value(): string {\r\n return this._value;\r\n }\r\n\r\n public static find(value: string): EdiConfirmationMethod {\r\n if(_.isNil(value)) return null;\r\n return _.find(this.ALL, x => x.value.toLowerCase() === value.toLowerCase());\r\n }\r\n}\r\n","import * as _ from \"lodash\";\r\n\r\nexport class AllocationMethod {\r\n public static OBA: AllocationMethod = new AllocationMethod(\"OBA\");\r\n public static LBA: AllocationMethod = new AllocationMethod(\"LBA\");\r\n public static PDA: AllocationMethod = new AllocationMethod(\"PDA\");\r\n\r\n public static ALL: AllocationMethod[] = [AllocationMethod.OBA, AllocationMethod.LBA, AllocationMethod.PDA];\r\n\r\n constructor(value: string) {\r\n this._value = value;\r\n }\r\n\r\n private readonly _value: string;\r\n\r\n get value(): string {\r\n return this._value;\r\n }\r\n\r\n public static find(value: string): AllocationMethod {\r\n if(_.isNil(value)) return null;\r\n return _.find(this.ALL, x => x.value.toLowerCase() === value.toLowerCase());\r\n }\r\n}\r\n","import {GasDay} from \"../gas-day\";\r\nimport {GasMonth} from \"../gas-month\";\r\nimport {SessionService} from \"../../services/webapp/session/session.service\";\r\nimport {GCTSHttpParams} from \"../gcts-http-params\";\r\n\r\nexport class JobArgs {\r\n pipeline: string;\r\n jobCategory: string;\r\n gasMonth: string;\r\n gasDay: string;\r\n gasCycleCode: string;\r\n locationId?: number;\r\n\r\n additionalParameters: any; // For any job-specific parameters.\r\n}\r\n\r\nexport class SubmitJobRequest {\r\n jobId: number;\r\n sagaId: number;\r\n jobKey: string;\r\n jobArgs: string;\r\n callbackUrl: string;\r\n}\r\n\r\nexport class ValidateJobParametersRequest {\r\n jobKey: string;\r\n pipeline: string;\r\n jobCategory: string;\r\n gasMonth: string;\r\n gasDay: string;\r\n gasCycleCode: string;\r\n}\r\n\r\nexport class ValidateJobParametersResponse {\r\n areValid: boolean;\r\n errorMessage: string;\r\n warningMessage: string;\r\n}\r\n\r\nexport class JobRunsRequest {\r\n jobCategory: string;\r\n jobStatus: string;\r\n jobName: string;\r\n fromGasDay: GasDay;\r\n toGasDay: GasDay;\r\n}\r\n\r\nexport class JobRun {\r\n id: number;\r\n sagaId: number;\r\n jobName: string;\r\n jobStart: Date;\r\n jobEnd: Date;\r\n jobArgs: string;\r\n status: string;\r\n message: string;\r\n details: JobRun[];\r\n duration: string;\r\n}\r\n\r\nexport abstract class BaseJobService {\r\n protected constructor(protected sessionService: SessionService) {\r\n }\r\n\r\n protected buildJobRunsRequest(jobRunsRequest: JobRunsRequest): GCTSHttpParams {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('jobCategory', jobRunsRequest.jobCategory);\r\n if (jobRunsRequest.jobStatus != null) {params.set('status', jobRunsRequest.jobStatus); }\r\n if (jobRunsRequest.jobName != null) {\r\n params.set('jobName', jobRunsRequest.jobName);\r\n } else {\r\n params.set('jobName', 'All'); // Job End Point expects 'All' value, in order to search for all jobs\r\n }\r\n if (jobRunsRequest.fromGasDay != null) {params.set('fromDate', jobRunsRequest.fromGasDay.toDisplayDateTimeFormat().replace('09:00', '00:00')); } // Start of Calendar Day\r\n if (jobRunsRequest.toGasDay != null ) {params.set('toDate', jobRunsRequest.toGasDay.toDisplayDateTimeFormat().replace('09:00', '23:59')); } // End of Calendar Day\r\n\r\n return params;\r\n }\r\n\r\n protected buildSubmitJobRequest(jobCategory: string, jobName: string, gasMonth?: GasMonth, gasDay?: GasDay, gasCycleCode?: string, locationId?: number, additionalParameters?: any): SubmitJobRequest {\r\n const jobArgs = new JobArgs();\r\n jobArgs.pipeline = this.sessionService.getPipeline().code;\r\n jobArgs.jobCategory = jobCategory;\r\n\r\n if (gasMonth) { jobArgs.gasMonth = gasMonth.toCidDisplayFormat(); }\r\n if (gasDay) { jobArgs.gasDay = gasDay.toString(); }\r\n if (gasCycleCode) { jobArgs.gasCycleCode = gasCycleCode; }\r\n if (locationId) { jobArgs.locationId = locationId; }\r\n if (additionalParameters) { jobArgs.additionalParameters = additionalParameters; }\r\n\r\n const submitJobRequest = new SubmitJobRequest();\r\n submitJobRequest.jobKey = jobName;\r\n submitJobRequest.jobArgs = JSON.stringify(jobArgs);\r\n\r\n return submitJobRequest;\r\n }\r\n\r\n protected buildValidateJobParametersRequest(jobCategory: string, jobName: string, gasMonth?: GasMonth, gasDay?: GasDay, gasCycleCode?: string): ValidateJobParametersRequest {\r\n const request = new ValidateJobParametersRequest();\r\n request.jobKey = jobName;\r\n request.pipeline = this.sessionService.getPipeline().code;\r\n request.jobCategory = jobCategory;\r\n if (gasMonth !== null) { request.gasMonth = gasMonth.toCidDisplayFormat(); }\r\n if (gasDay !== null) { request.gasDay = gasDay.toString(); }\r\n if (gasCycleCode !== null) { request.gasCycleCode = gasCycleCode; }\r\n return request;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {AbstractResourceService} from \"./abstract-resource.service\";\r\nimport {ConfigService} from \"../services/webapp/configuration/configuration.service\";\r\nimport {UriService} from \"../services/webapp/uri/uri.service\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\n\r\n@Injectable()\r\nexport class ContractsResourceService extends AbstractResourceService {\r\n\r\n constructor(protected httpClient: HttpClient,\r\n private uriService: UriService,\r\n private configService: ConfigService) {\r\n super(httpClient);\r\n }\r\n\r\n getBaseUri(includePipeline: boolean): string {\r\n return this.uriService.getUriWithPipelineAndGateway(this.configService.accountsServiceUri, includePipeline);\r\n }\r\n}\r\n","import {of, forkJoin, Observable} from 'rxjs';\r\nimport {concatMap} from 'rxjs/operators';\r\nimport {Injectable} from '@angular/core';\r\nimport {ScheduledJobsResourceService} from \"@shared/resources/scheduledjobs-resource.service\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {CommondataResourceService} from \"@shared/resources/commondata-resource.service\";\r\nimport {ContractsResourceService} from \"@shared/resources/contracts-resource.service\";\r\nimport {FlowinggasResourceService} from \"@shared/resources/flowinggas-resource.service\";\r\nimport {InvoicingResourceService} from \"@shared/resources/invoicing-resource.service\";\r\nimport {SessionService} from \"../../webapp/session/session.service\";\r\nimport {\r\n BaseJobService, JobRun, JobRunsRequest,\r\n ValidateJobParametersResponse\r\n} from \"@model/services/base-job-service\";\r\nimport {AbstractResourceService} from \"@shared/resources/abstract-resource.service\";\r\nimport {NominationResourceService} from \"@shared/resources/nominations-resource.service\";\r\n\r\n@Injectable()\r\nexport class JobService extends BaseJobService {\r\n\r\n constructor(protected sessionService: SessionService,\r\n private scheduledJobsResource: ScheduledJobsResourceService,\r\n private commonDataServiceResource: CommondataResourceService,\r\n private contractServiceResource: ContractsResourceService,\r\n private flowingGasServiceResource: FlowinggasResourceService,\r\n private invoicingServiceResource: InvoicingResourceService,\r\n private nominationServiceResource: NominationResourceService) {\r\n super(sessionService);\r\n }\r\n\r\n queryJobRuns(jobRunsRequest: JobRunsRequest): Observable {\r\n const params = super.buildJobRunsRequest(jobRunsRequest);\r\n\r\n return this.scheduledJobsResource.get('/jobs', true, params);\r\n }\r\n\r\n submitJob(jobCategory: string, jobName: string, gasMonth?: GasMonth, gasDay?: GasDay, gasCycle?: string, locationId?: number, additionalParameters?: any): Observable {\r\n const jobRunRequest = this.buildSubmitJobRequest(jobCategory, jobName, gasMonth, gasDay, gasCycle, locationId, additionalParameters);\r\n return this.scheduledJobsResource.postWithNoResponseBody('/jobs/' + jobCategory, jobRunRequest);\r\n }\r\n\r\n validateJobParameters(resource: AbstractResourceService, jobCategory: string, jobName: string, gasMonth?: GasMonth, gasDay?: GasDay, gasCycle?: string): Observable {\r\n const parametersValidateRequest = this.buildValidateJobParametersRequest(jobCategory, jobName, gasMonth, gasDay, gasCycle);\r\n return resource.post('/jobs/validateparameters', parametersValidateRequest);\r\n }\r\n\r\n resetAllJobs(jobCategory: string): Observable {\r\n const serviceCalls: Observable[] = [\r\n this.scheduledJobsResource.putWithNoResponseBody('/jobs/reset/' + jobCategory, null),\r\n this.commonDataServiceResource.putWithNoResponseBody('/jobs/reset/' + jobCategory, null),\r\n this.contractServiceResource.putWithNoResponseBody('/jobs/reset/' + jobCategory, null),\r\n this.flowingGasServiceResource.putWithNoResponseBody('/jobs/reset/' + jobCategory, null),\r\n this.invoicingServiceResource.putWithNoResponseBody('/jobs/reset/' + jobCategory, null)\r\n ];\r\n\r\n return forkJoin(serviceCalls).pipe(concatMap(() => of(true)));\r\n }\r\n\r\n resumeJobs(jobCategory: string): Observable {\r\n const serviceCalls: Observable[] = [\r\n this.nominationServiceResource.putWithNoResponseBody('/jobs/resume/' + jobCategory, null),\r\n this.commonDataServiceResource.putWithNoResponseBody('/jobs/resume/' + jobCategory, null),\r\n this.contractServiceResource.putWithNoResponseBody('/jobs/resume/' + jobCategory, null),\r\n this.flowingGasServiceResource.putWithNoResponseBody('/jobs/resume/' + jobCategory, null),\r\n this.invoicingServiceResource.putWithNoResponseBody('/jobs/resume/' + jobCategory, null)\r\n ];\r\n\r\n return forkJoin(serviceCalls).pipe(concatMap(() => of(true)));\r\n }\r\n\r\n failInProgressJobs(jobCategory: string): Observable {\r\n const serviceCalls: Observable[] = [\r\n this.scheduledJobsResource.putWithNoResponseBody('/jobs/failInProgress/' + jobCategory, null)\r\n ];\r\n\r\n return forkJoin(serviceCalls).pipe(concatMap(() => of(true)));\r\n }\r\n\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
0\">\r\n Warning:

\r\n For '{{submitJobTimePeriodToDisplay}}':
\r\n \r\n - {{warning}}
\r\n
\r\n
\r\n
\r\n
{{submitJobConfirmationMessage}}
\r\n \r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n","import {of, forkJoin, Observable} from 'rxjs';\r\n\r\nimport {concatMap, tap} from 'rxjs/operators';\r\nimport * as _ from 'lodash';\r\nimport {Component, OnInit, ViewChild} from '@angular/core';\r\nimport {BaseComponent} from \"@model/base-component\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {\r\n ScheduledJobsService,\r\n} from \"@shared/services/job-scheduling/scheduled-jobs/scheduled-jobs.service\";\r\nimport {JobService} from \"@shared/services/job-scheduling/jobs/job.service\";\r\nimport {AlertService} from \"app/shared/services/webapp/alert/alert.service\";\r\nimport {\r\n CommonDataBillingMonthService,\r\n} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {FlowingGasMeasurementBillingProcessService} from \"@shared/services/flowing-gas/flowing-gas-measurement-billing-process/flowing-gas-measurement-billing-process.service\";\r\nimport {\r\n BillingProcess,\r\n FlowingGasAllocationAndBalancingBillingProcessService\r\n} from \"@shared/services/flowing-gas/flowing-gas-allocation-and-balancing-billing-process/flowing-gas-allocation-and-balancing-billing-process.service\";\r\nimport {\r\n YesNoCancelModalService\r\n} from \"@shared/services/webapp/yes-no-cancel-modal/yes-no-cancel-modal.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {InvoicingInvoiceBillingProcessService} from \"@shared/services/invoicing/invoicing-invoice-billing-process/invoicing-invoice-billing-process.service\";\r\nimport {GctsProcess} from \"@model/gcts-process\";\r\nimport {BillingProcessStatus} from \"@model/billing-process-status\";\r\nimport {JobType} from \"@model/job-type\";\r\nimport {NominationSystemService} from \"@shared/services/nomination/nomination-system/nomination-system.service\";\r\nimport {GasCycleService} from \"@shared/services/nomination/gas-cycle/gas-cycle.service\";\r\nimport {NominationResourceService} from \"@shared/resources/nominations-resource.service\";\r\nimport {GasMonthPickerComponent} from \"@shared/components/gas-month-picker/gas-month-picker.component\";\r\nimport {GasDayPickerComponent} from \"@shared/components/gas-day-picker/gas-day-picker.component\";\r\nimport {JobRunnerViewModel, JobRunParam} from \"app/gcts/administration/job-runner/job-runner.model\";\r\nimport {\r\n LocationSearchParams,\r\n NominationLocationService\r\n} from \"@shared/services/nomination/nomination-location/nomination-location.service\";\r\nimport {NominationLocationEnrichmentService} from \"@shared/services/nomination/nomination-location-enrichment/nomination-location-enrichment.service\";\r\nimport {YesNoModalOptions} from \"@shared/services/webapp/modal-options/yes-no-modal-options\";\r\nimport {SelectedModalOption} from \"@shared/services/webapp/modal-options/selected-modal-option\";\r\nimport {ModalComponent} from \"@shared/components/modal/modal.component\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {EdiConfirmationMethod} from \"@model/edi-confirmation-method\";\r\nimport {AllocationMethod} from \"@model/allocation-method\";\r\n\r\n@Component({\r\n selector: 'app-job-runner',\r\n templateUrl: './job-runner.component.html',\r\n styleUrls: ['./job-runner.component.css']\r\n})\r\n\r\nexport class JobRunnerComponent extends BaseComponent implements OnInit {\r\n @ViewChild(GasMonthPickerComponent) gasMonth: GasMonthPickerComponent;\r\n @ViewChild(GasDayPickerComponent) gasDay: GasDayPickerComponent;\r\n @ViewChild(ModalComponent) submitJobModal: ModalComponent;\r\n\r\n model: JobRunnerViewModel = new JobRunnerViewModel();\r\n earliestSelectableGasDay: GasDay;\r\n submitJobConfirmationMessage: string = \"\";\r\n submitJobWarnings: string[] = [];\r\n submitJobTimePeriodToDisplay: string = \"\";\r\n\r\n constructor(protected appService: AppService,\r\n private sessionService: SessionService,\r\n private commonDataBillingMonthService: CommonDataBillingMonthService,\r\n private scheduledJobService: ScheduledJobsService,\r\n private flowingGasMeasurementBillingProcessService: FlowingGasMeasurementBillingProcessService,\r\n private flowingGasAllocationAndBalancingBillingProcessService: FlowingGasAllocationAndBalancingBillingProcessService,\r\n private invoicingInvoiceBillingProcessService: InvoicingInvoiceBillingProcessService,\r\n private modalService: YesNoCancelModalService,\r\n private alertService: AlertService,\r\n private jobService: JobService,\r\n private nominationSystemService: NominationSystemService,\r\n private gasCycleService: GasCycleService,\r\n private nominationResourceService: NominationResourceService,\r\n private nominationLocationService: NominationLocationService,\r\n private nominationLocationEnrichmentService: NominationLocationEnrichmentService) {\r\n super(appService);\r\n }\r\n\r\n ngOnInit() {\r\n super.setTitle('Job Runner');\r\n this.initModel();\r\n }\r\n\r\n /**\r\n * Public Methods\r\n */\r\n\r\n onProcessChanged(): void {\r\n this.resetSelectedOptions(true);\r\n if (!this.model.searchParams.process) { return; }\r\n\r\n this.alertService.clearMessages();\r\n\r\n if (this.model.searchParams.process === GctsProcess.AfterFlow.value) {\r\n this.initAfterFlowModel();\r\n } else if (this.model.searchParams.process === GctsProcess.Nominations.value) {\r\n this.initNominationsModel();\r\n } else { // Contracts and Edi\r\n this.initBasicModel();\r\n }\r\n\r\n }\r\n\r\n onJobChanged(): void {\r\n this.resetSelectedOptions(false);\r\n if (!this.model.searchParams.job) { return; }\r\n\r\n this.alertService.clearMessages();\r\n const job = this.getSelectedJob();\r\n\r\n this.getLocationsIfNeeded(job).subscribe(() => {\r\n this.model.showGasMonth = job.jobRunParam === JobRunParam[JobRunParam.GasMonth];\r\n this.model.showGasDay = job.jobRunParam !== JobRunParam[JobRunParam.None] && job.jobRunParam !== JobRunParam[JobRunParam.GasMonth];\r\n this.model.showGasCycle = job.jobRunParam === JobRunParam[JobRunParam.GasDayCycle] || job.jobRunParam === JobRunParam[JobRunParam.LocationGasDayCycle];\r\n this.model.showLocation = job.jobRunParam === JobRunParam[JobRunParam.LocationGasDayCycle] || job.jobRunParam === JobRunParam[JobRunParam.LocationGasDay];\r\n this.model.minGasDay = this.determineMinGasDayForJob(job);\r\n });\r\n }\r\n\r\n onParameterChanged(): void {\r\n const job = this.getSelectedJob();\r\n\r\n if (_.isNil(job)) { return; }\r\n\r\n const gasMonth = job.jobRunParam === JobRunParam[JobRunParam.GasMonth] ? this.model.searchParams.gasMonth : null;\r\n const gasDay = job.jobRunParam === JobRunParam[JobRunParam.GasDay]\r\n || job.jobRunParam === JobRunParam[JobRunParam.GasDayCycle]\r\n || job.jobRunParam === JobRunParam[JobRunParam.LocationGasDay]\r\n || job.jobRunParam === JobRunParam[JobRunParam.LocationGasDayCycle]? this.model.searchParams.gasDay : null;\r\n const gasCycleCode = job.jobRunParam === JobRunParam[JobRunParam.GasDayCycle] ? this.model.searchParams.gasCycleCode : null;\r\n\r\n switch (job.key) {\r\n case 'CopyNominationRequests':\r\n this.model.invalidParameters = true; // Keep the submit button disabled until we can validate the parameters.\r\n if (gasMonth != null) {\r\n this.jobService.validateJobParameters(this.nominationResourceService, this.model.searchParams.process, job.key, gasMonth, gasDay, gasCycleCode).subscribe(response => {\r\n this.alertService.clearMessages();\r\n if (response.areValid) {\r\n this.model.invalidParameters = false;\r\n if (response.warningMessage) {\r\n this.alertService.addWarnMessage(null, response.warningMessage);\r\n }\r\n } else {\r\n this.model.invalidParameters = true;\r\n this.alertService.addErrorMessage(null, response.errorMessage);\r\n }\r\n });\r\n }\r\n break;\r\n\r\n case 'CalculateGasDaySummaryReportTotalsJob':\r\n this.model.invalidParameters = true; // Keep the submit button disabled until we can validate the parameters.\r\n if (gasDay != null && gasCycleCode != null) {\r\n this.jobService.validateJobParameters(this.nominationResourceService, this.model.searchParams.process, job.key, gasMonth, gasDay, gasCycleCode).subscribe(response => {\r\n this.alertService.clearMessages();\r\n if (response.areValid) {\r\n this.model.invalidParameters = false;\r\n if (response.warningMessage) {\r\n this.model.invalidParameters = true; // Keep the button disabled for warnings\r\n this.alertService.addWarnMessage(null, response.warningMessage);\r\n } else {\r\n this.model.invalidParameters = false;\r\n }\r\n } else {\r\n this.model.invalidParameters = true;\r\n this.alertService.addErrorMessage(null, response.errorMessage);\r\n }\r\n });\r\n }\r\n break;\r\n }\r\n }\r\n\r\n submitClicked() {\r\n this.alertService.clearMessages();\r\n\r\n const job = this.getSelectedJob();\r\n\r\n const gasMonth = this.getSelectedTimePeriod(job);\r\n\r\n if (gasMonth === null || job.key === 'LoadFirstMonthNominationRequests' || job.key === 'CopyNominationRequests') {\r\n const title = job.displayName;\r\n const message = this.buildConfirmationMessage(job);\r\n\r\n this.promptToConfirmJobSubmit(title, message);\r\n } else {\r\n this.checkBillingMonthStatusBeforeSubmittingJob(job, gasMonth);\r\n }\r\n }\r\n\r\n resetClicked() {\r\n this.alertService.clearMessages();\r\n this.initModel();\r\n }\r\n\r\n resetPendingJobClicked = () => {\r\n this.alertService.clearMessages();\r\n\r\n const resetPendingJobsCallback = this.resetPendingJobs;\r\n\r\n const yesNoModalOptions = new YesNoModalOptions('Reset Jobs', 'Are you sure you want to manually fail the pending jobs in the queue?');\r\n this.modalService.show(yesNoModalOptions).subscribe((selectedModalOption: SelectedModalOption) => {\r\n if (selectedModalOption === SelectedModalOption.Yes) {\r\n resetPendingJobsCallback();\r\n }\r\n });\r\n };\r\n\r\n resumeJobsClicked = () => {\r\n this.alertService.clearMessages();\r\n\r\n const resumeJobsCallback = this.resumeJobs;\r\n\r\n const yesNoModalOptions = new YesNoModalOptions('Resume Jobs', 'Are you sure you want to resume jobs?');\r\n this.modalService.show(yesNoModalOptions).subscribe((selectedModalOption: SelectedModalOption) => {\r\n if (selectedModalOption === SelectedModalOption.Yes) {\r\n resumeJobsCallback();\r\n }\r\n });\r\n };\r\n\r\n failInProgressJobsClicked = () => {\r\n this.alertService.clearMessages();\r\n\r\n const failInProgressJobsCallback = this.failInProgressJobs;\r\n\r\n const yesNoModalOptions = new YesNoModalOptions('Resume Jobs', 'Are you sure you want to fail InProgress jobs?');\r\n this.modalService.show(yesNoModalOptions).subscribe((selectedModalOption: SelectedModalOption) => {\r\n if (selectedModalOption === SelectedModalOption.Yes) {\r\n failInProgressJobsCallback();\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * Private Methods\r\n */\r\n\r\n initModel(){\r\n const pipelineCode = this.sessionService.getPipeline().code;\r\n this.model = new JobRunnerViewModel();\r\n this.model.processes = GctsProcess.byPipeline(pipelineCode);\r\n }\r\n\r\n initAfterFlowModel(): void {\r\n const serviceCalls: Observable[] = [\r\n this.commonDataBillingMonthService.getOpen(),\r\n this.commonDataBillingMonthService.getOldest(),\r\n this.commonDataBillingMonthService.getNewest(),\r\n this.scheduledJobService.queryAllJobTypes(this.model.searchParams.process)\r\n ];\r\n\r\n forkJoin(serviceCalls).subscribe(response => {\r\n const openBillingMonth = response[0] as BillingMonth;\r\n const oldestBillingMonth = response[1] as BillingMonth;\r\n const newestBillingMonth = response[2] as BillingMonth;\r\n this.model.jobs = response[3] as JobType[];\r\n\r\n const openGasMonth = openBillingMonth.gasMonth;\r\n\r\n this.flowingGasMeasurementBillingProcessService.get(openGasMonth).subscribe(measurementProcesses => {\r\n const oldestGasMonth = oldestBillingMonth.gasMonth;\r\n const newestGasMonth = newestBillingMonth.gasMonth;\r\n\r\n this.model.searchParams.gasMonth = openGasMonth;\r\n this.model.defaultGasDay = openGasMonth.start() as GasDay;\r\n this.model.minGasMonth = oldestGasMonth;\r\n this.model.maxGasMonth = newestGasMonth;\r\n this.earliestSelectableGasDay = this.determineEarliestSelectableGasDay(openGasMonth, measurementProcesses);\r\n this.model.maxGasDay = newestGasMonth.end() as GasDay;\r\n\r\n this.gasCycleService.queryAll(openGasMonth.start() as GasDay).subscribe(gasCycles => {\r\n this.model.gasCycles = gasCycles;\r\n });\r\n });\r\n });\r\n }\r\n\r\n initNominationsModel(): void {\r\n const getPipelineGasDay$ = this.nominationSystemService\r\n .pipelineGasDay()\r\n .pipe(\r\n tap(pipelineGasDay => {\r\n this.model.defaultGasDay = pipelineGasDay.allowableGasDay;\r\n this.model.minGasMonth = GasMonth.fromGasDay(pipelineGasDay.earliestSelectableGasDay);\r\n this.earliestSelectableGasDay = pipelineGasDay.earliestSelectableGasDay;\r\n })\r\n );\r\n\r\n const getNominationJobs$ = this.scheduledJobService\r\n .queryAllJobTypes(this.model.searchParams.process)\r\n .pipe(\r\n tap(jobs=> {\r\n if (this.sessionService.getPipeline().allowAllLocationConfirmation) {\r\n this.model.jobs = jobs;\r\n } else {\r\n this.model.jobs = jobs.filter(j => j.key !== 'AutoBalanceAllLocationsJob');\r\n }\r\n })\r\n );\r\n\r\n forkJoin({getPipelineGasDay$, getNominationJobs$}).subscribe(() => {\r\n this.gasCycleService.queryAll(this.model.defaultGasDay).subscribe(gasCycles => {\r\n this.model.gasCycles = gasCycles;\r\n });\r\n });\r\n }\r\n\r\n initBasicModel(): void {\r\n const serviceCalls: Observable[] = [\r\n this.scheduledJobService.queryAllJobTypes(this.model.searchParams.process)\r\n ];\r\n\r\n forkJoin(serviceCalls).subscribe(response => {\r\n this.model.jobs = response[0] as JobType[];\r\n });\r\n }\r\n\r\n private checkBillingMonthStatusBeforeSubmittingJob(job: JobType, gasMonth: GasMonth) {\r\n const serviceCalls: Observable[] = [\r\n this.flowingGasMeasurementBillingProcessService.get(gasMonth),\r\n this.flowingGasAllocationAndBalancingBillingProcessService.get(gasMonth),\r\n this.invoicingInvoiceBillingProcessService.get(gasMonth)\r\n ];\r\n\r\n forkJoin(serviceCalls).subscribe(response => {\r\n const measurementBillingProcesses = response[0];\r\n const allocationAndBalancingBillingProcesses = response[1];\r\n const invoiceBillingProcess = response[2];\r\n\r\n const warningMessages = [];\r\n\r\n if (measurementBillingProcesses.length > 0 && measurementBillingProcesses[0].status === BillingProcessStatus[BillingProcessStatus.Final]) {\r\n warningMessages.push('The Measurement Billing Process is finalized');\r\n }\r\n\r\n if (allocationAndBalancingBillingProcesses.length > 0 && allocationAndBalancingBillingProcesses[0].status === BillingProcessStatus[BillingProcessStatus.Final]) {\r\n warningMessages.push('The Allocations and Balancing Billing Process is finalized');\r\n }\r\n\r\n if (invoiceBillingProcess != null && invoiceBillingProcess.status === BillingProcessStatus[BillingProcessStatus.Final]) {\r\n warningMessages.push('The Invoice Billing Process is finalized');\r\n }\r\n\r\n const title = job.displayName;\r\n const confirmationMessage = this.buildConfirmationMessage(job);\r\n const timePeriodToDisplay = this.buildTimePeriodDisplayValue(job);\r\n\r\n this.promptToConfirmJobSubmit(title, confirmationMessage, warningMessages, timePeriodToDisplay);\r\n });\r\n }\r\n\r\n private promptToConfirmJobSubmit(title: string, message: string, warnings: string[] = [], timePeriodToDisplay: string = \"\") {\r\n this.submitJobConfirmationMessage = message;\r\n this.submitJobWarnings = warnings;\r\n this.submitJobTimePeriodToDisplay = timePeriodToDisplay;\r\n this.submitJobModal.title = title;\r\n this.submitJobModal.show();\r\n }\r\n\r\n public submitJob(): void {\r\n const job = this.getSelectedJob();\r\n\r\n const gasMonth = job.jobRunParam === JobRunParam[JobRunParam.GasMonth] ? this.model.searchParams.gasMonth : null;\r\n const gasDay = job.jobRunParam === JobRunParam[JobRunParam.GasDay]\r\n || job.jobRunParam === JobRunParam[JobRunParam.GasDayCycle]\r\n || job.jobRunParam === JobRunParam[JobRunParam.LocationGasDayCycle]\r\n || job.jobRunParam === JobRunParam[JobRunParam.LocationGasDay] ? this.model.searchParams.gasDay : null;\r\n const gasCycleCode = job.jobRunParam === JobRunParam[JobRunParam.GasDayCycle] || job.jobRunParam === JobRunParam[JobRunParam.LocationGasDayCycle] ? this.model.searchParams.gasCycleCode : null;\r\n const locationId = job.jobRunParam === JobRunParam[JobRunParam.LocationGasDayCycle] || job.jobRunParam === JobRunParam[JobRunParam.LocationGasDay] ? this.model.searchParams.locationId : null;\r\n\r\n let additionalParameters = null;\r\n\r\n switch (job.key) {\r\n case 'LoadFirstMonthNominationRequests':\r\n additionalParameters = { includeTitleTransfers: this.model.searchParams.includeTitleTransfers };\r\n break;\r\n }\r\n\r\n this.jobService.submitJob(this.model.searchParams.process, job.key, gasMonth, gasDay, gasCycleCode, locationId, additionalParameters)\r\n .subscribe(() => {\r\n this.jobSubmitSuccessful(job);\r\n });\r\n }\r\n\r\n private resetPendingJobs = (): void => {\r\n this.jobService.resetAllJobs(this.model.searchParams.process)\r\n .subscribe(() => {\r\n this.resetPendingJobsSuccessful();\r\n });\r\n };\r\n\r\n private resumeJobs = (): void => {\r\n this.jobService.resumeJobs(this.model.searchParams.process)\r\n .subscribe( () => {\r\n this.resumeJobsSuccessful();\r\n });\r\n };\r\n\r\n private failInProgressJobs = (): void => {\r\n this.jobService.failInProgressJobs(this.model.searchParams.process)\r\n .subscribe( () => {\r\n this.failInProgressJobsSuccessful();\r\n });\r\n };\r\n\r\n private jobSubmitSuccessful(job: JobType): void {\r\n const message = job.jobRunParam === JobRunParam[JobRunParam.None] ?\r\n `The job '${job.displayName}' has been successfully submitted.` :\r\n `The job '${job.displayName}' has been successfully submitted for '${this.buildTimePeriodDisplayValue(job)}'.`;\r\n\r\n this.alertService.addSuccessMessage('Submit Successful', message);\r\n\r\n // Reset Date Search Params\r\n if (this.gasMonth) {\r\n this.gasMonth.reset();\r\n }\r\n if (this.gasDay) {\r\n this.gasDay.reset();\r\n }\r\n this.model.searchParams.gasCycleCode = null;\r\n this.model.searchParams.locationId = null;\r\n }\r\n\r\n private resetPendingJobsSuccessful(): void {\r\n this.alertService.addSuccessMessage('Success', 'Request to Reset All Jobs has been successfully submitted.');\r\n\r\n this.model = new JobRunnerViewModel(); // Reset Search Params\r\n }\r\n\r\n private resumeJobsSuccessful(): void {\r\n this.alertService.addSuccessMessage('Success', 'Request to Resume Jobs has been successfully submitted.');\r\n\r\n this.model = new JobRunnerViewModel(); // Reset Search Params\r\n }\r\n\r\n private failInProgressJobsSuccessful(): void {\r\n this.alertService.addSuccessMessage('Success', 'Request to Fail InProgress Jobs has been successfully submitted.');\r\n\r\n this.model = new JobRunnerViewModel(); // Reset Search Params\r\n }\r\n\r\n\r\n private buildConfirmationMessage(job: JobType): string {\r\n if (job.jobRunParam === JobRunParam[JobRunParam.None]) {\r\n return `Are you sure you want to run the job '${job.displayName}'?`;\r\n }\r\n\r\n const timePeriodToDisplay = this.buildTimePeriodDisplayValue(job);\r\n return `Are you sure you want to run the job '${job.displayName}' for '${timePeriodToDisplay}'?`;\r\n }\r\n\r\n private buildTimePeriodDisplayValue(job: JobType) {\r\n if (job.jobRunParam === JobRunParam[JobRunParam.GasMonth]) {\r\n return this.model.searchParams.gasMonth.toDisplayFormat();\r\n }\r\n\r\n if (job.jobRunParam === JobRunParam[JobRunParam.GasDay] || job.jobRunParam === JobRunParam[JobRunParam.LocationGasDay]) {\r\n return this.model.searchParams.gasDay.toDisplayFormat();\r\n }\r\n\r\n if (job.jobRunParam === JobRunParam[JobRunParam.GasDayCycle] || job.jobRunParam === JobRunParam[JobRunParam.LocationGasDayCycle]) {\r\n const gasDay = this.model.searchParams.gasDay;\r\n const gasCycle = _.find(this.model.gasCycles, {code: this.model.searchParams.gasCycleCode});\r\n return `${gasDay.toDisplayFormat()} ${gasCycle.displayValue}`;\r\n }\r\n }\r\n\r\n private determineEarliestSelectableGasDay(openGasMonth: GasMonth, measurementProcesses: BillingProcess[]): GasDay {\r\n // If the open billing month's measurement process is Final, then we need to change the min gas day\r\n // to the beginning of next month\r\n for (const index in measurementProcesses) {\r\n if (measurementProcesses[index].status === BillingProcessStatus[BillingProcessStatus.Final]) {\r\n return openGasMonth.next().start() as GasDay;\r\n }\r\n }\r\n\r\n return openGasMonth.start() as GasDay;\r\n }\r\n\r\n private determineMinGasDayForJob(job: JobType): GasDay {\r\n switch (job.key) {\r\n case 'LoadFirstMonthNominationRequests':\r\n return null;\r\n\r\n case 'GetAbNitPriceJob':\r\n return this.model.minGasMonth.start();\r\n\r\n default:\r\n return this.earliestSelectableGasDay;\r\n }\r\n }\r\n\r\n private getSelectedJob(): JobType {\r\n return _.find(this.model.jobs, {key: this.model.searchParams.job});\r\n }\r\n\r\n private getSelectedTimePeriod(job: JobType): GasMonth | null {\r\n if (job.jobRunParam === JobRunParam[JobRunParam.GasMonth]) {\r\n return this.model.searchParams.gasMonth;\r\n }\r\n\r\n if (job.jobRunParam === JobRunParam[JobRunParam.GasDay]\r\n || job.jobRunParam === JobRunParam[JobRunParam.GasDayCycle]\r\n || job.jobRunParam === JobRunParam[JobRunParam.LocationGasDay]\r\n || job.jobRunParam === JobRunParam[JobRunParam.LocationGasDayCycle]\r\n ) {\r\n return GasMonth.fromGasDay(this.model.searchParams.gasDay);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private isDataPumpJob(job: JobType) {\r\n return job.displayName.startsWith('Data Pump');\r\n }\r\n\r\n private resetSelectedOptions(includeSelectedJob: boolean = false) {\r\n if (includeSelectedJob) {\r\n this.model.searchParams.job = undefined;\r\n }\r\n\r\n if (this.gasMonth) {\r\n this.gasMonth.reset();\r\n }\r\n if (this.gasDay) {\r\n this.gasDay.reset();\r\n }\r\n this.model.searchParams.gasCycleCode = null;\r\n this.model.invalidParameters = false;\r\n }\r\n\r\n private getLocationsIfNeeded(job: JobType): Observable {\r\n if (job.jobRunParam !== JobRunParam[JobRunParam.LocationGasDay]\r\n && job.jobRunParam !== JobRunParam[JobRunParam.LocationGasDayCycle])\r\n { return of(null); }\r\n\r\n const locationSearchParams = new LocationSearchParams(GasDay.today(), false);\r\n return this.nominationLocationService.queryAllDetails(locationSearchParams).pipe(concatMap(locations => {\r\n return this.nominationLocationEnrichmentService.enrichArray(locations, 'id').pipe(concatMap(() => {\r\n if (job.key === \"SendSQForOperatorEdiJob\") {\r\n locations = _.filter(locations, x => x.accountingLocationParameters.isConfirmationByEDI\r\n && x.accountingLocationParameters.ediConfirmationMethod === EdiConfirmationMethod.X12.value);\r\n } else if (job.key === \"SendEDIAdjustmentsJob\") {\r\n locations = _.filter(locations, x => x.accountingLocationParameters.isConfirmationByEDI\r\n && x.accountingLocationParameters.ediConfirmationMethod === EdiConfirmationMethod.X12.value\r\n && x.accountingLocationParameters.allocationMethod === AllocationMethod.PDA.value);\r\n }\r\n\r\n this.model.locations = _.sortBy(locations, x => x.name);\r\n\r\n return of(null);\r\n }));\r\n }));\r\n }\r\n}\r\n","import {JobRun} from \"@model/services/base-job-service\";\r\nimport {JobType} from \"@model/job-type\";\r\nimport {GctsProcess} from \"@model/gcts-process\";\r\nimport {GasDay} from \"@model/gas-day\";\r\n\r\nexport class ViewJobHistorySearchParams {\r\n process: string;\r\n jobStatus: string;\r\n job: string;\r\n fromGasDay: GasDay = GasDay.today();\r\n toGasDay: GasDay = GasDay.today();\r\n}\r\n\r\nexport class ViewJobHistoryViewModel {\r\n processes: GctsProcess[] ;\r\n jobStatuses: JobStatus[] = JobStatus.All;\r\n jobs: JobType[];\r\n\r\n searchParams: ViewJobHistorySearchParams = new ViewJobHistorySearchParams();\r\n lastSearchParams: ViewJobHistorySearchParams;\r\n\r\n searchResults: JobRun[];\r\n}\r\n\r\nexport class JobStatus {\r\n public static readonly Pending: JobStatus = new JobStatus('Pending', 'Pending');\r\n public static readonly InProgress: JobStatus = new JobStatus('In Progress', 'InProgress');\r\n public static readonly Succeeded: JobStatus = new JobStatus('Succeeded', 'Succeeded');\r\n public static readonly Failed: JobStatus = new JobStatus('Failed', 'Failed');\r\n public static readonly Cancelled: JobStatus = new JobStatus('Cancelled', 'Cancelled');\r\n\r\n public static readonly All: JobStatus[] = [\r\n JobStatus.Pending,\r\n JobStatus.InProgress,\r\n JobStatus.Succeeded,\r\n JobStatus.Failed,\r\n JobStatus.Cancelled\r\n ];\r\n\r\n name: string;\r\n value: string;\r\n\r\n constructor(name: string, value: string) {\r\n this.name = name;\r\n this.value = value;\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n Validation Error\r\n From Date cannot be later than To Date.\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.process | displayName: 'value' : 'name' : model.processes}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.jobStatus | displayName: 'value' : 'name' : model.jobStatuses}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.job | displayName: 'key' : 'displayName' : model.jobs}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.fromGasDay | gasDayFormat}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.toGasDay | gasDayFormat}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n Number of job runs found: {{model.searchResults.length}}\r\n
\r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n {{cell.data.jobStart | dateFormat: 'YYYY-MMM-DD hh:mm:ss a'}}\r\n
\r\n
\r\n \r\n
\r\n {{cell.data.jobEnd | dateFormat: 'YYYY-MMM-DD hh:mm:ss a'}}\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n {{detail.jobStart | dateFormat:'hh:mm:ss a'}} - Step {{index + 1}} - {{detail.jobName}} Started.\r\n
\r\n
\r\n {{detail.jobEnd | dateFormat:'hh:mm:ss a'}} - Step {{index + 1}} - {{detail.jobName}} {{detail.status}}.\r\n
\r\n
\r\n\r\n
\r\n
{{cell.data.message}}
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
Job Parameters
\r\n
{{formatJobParameters(cell.data.jobArgs)}}
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n\r\n\r\n","import {of, Observable} from 'rxjs';\r\n\r\nimport {tap} from 'rxjs/operators';\r\nimport * as _ from 'lodash';\r\nimport {Component, Renderer2, ViewChild} from '@angular/core';\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {ScheduledJobsService} from \"@shared/services/job-scheduling/scheduled-jobs/scheduled-jobs.service\";\r\nimport {JobService} from \"@shared/services/job-scheduling/jobs/job.service\";\r\nimport {JobRun, JobRunsRequest} from \"@model/services/base-job-service\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {ViewJobHistoryViewModel} from \"./view-job-history.model\";\r\nimport {NominationLocationEnrichmentService} from \"@shared/services/nomination/nomination-location-enrichment/nomination-location-enrichment.service\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {JobType} from \"@model/job-type\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {GctsProcess} from \"@model/gcts-process\";\r\n\r\n@Component({\r\n selector: 'app-view-job-history',\r\n templateUrl: './view-job-history.component.html',\r\n styleUrls: ['./view-job-history.component.css']\r\n})\r\nexport class ViewJobHistoryComponent extends BaseSearchComponent {\r\n @ViewChild(DxDataGridComponent) jobHistoryDataGrid: DxDataGridComponent;\r\n\r\n maxDate = new Date(8640000000000000);\r\n\r\n model: ViewJobHistoryViewModel = new ViewJobHistoryViewModel();\r\n\r\n constructor(public appService: AppService,\r\n private sessionService: SessionService,\r\n public router: Router,\r\n public activatedRoute: ActivatedRoute,\r\n private jobService: JobService,\r\n private scheduledJobsService: ScheduledJobsService,\r\n private nominationLocationEnrichmentService: NominationLocationEnrichmentService,\r\n private renderer: Renderer2,\r\n public alertService: AlertService) {\r\n super('Job History', appService, activatedRoute, router, alertService);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n return {\r\n process: this.model.searchParams.process,\r\n jobStatus: this.model.searchParams.jobStatus,\r\n job: this.model.searchParams.job,\r\n from: this.model.searchParams.fromGasDay,\r\n to: this.model.searchParams.toGasDay\r\n };\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n const pipelineCode = this.sessionService.getPipeline().code;\r\n this.model.processes = GctsProcess.byPipeline(pipelineCode);\r\n return this.nominationLocationEnrichmentService.fetch();\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n return this.loadJobTypes();\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n\r\n return this.jobService.queryJobRuns(this.buildJobRunsRequest()).pipe(\r\n tap(jobRuns => {\r\n this.model.searchResults = jobRuns;\r\n }));\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return this.gasDayRangeParamValidator().isValid(params);\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n const processes = this.model.processes;\r\n\r\n this.model = new ViewJobHistoryViewModel();\r\n this.model.processes = processes; // Preserve Processes from Previous Load\r\n }\r\n\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n const params = typedParams.getParams;\r\n\r\n this.model.searchParams.process = params['process'];\r\n this.model.searchParams.jobStatus = params['jobStatus'];\r\n this.model.searchParams.job = params['job'];\r\n this.model.searchParams.fromGasDay = GasDay.parse(params['from']);\r\n this.model.searchParams.toGasDay = GasDay.parse(params['to']);\r\n }\r\n\r\n onProcessChanged(): void {\r\n this.loadJobTypes().subscribe(() => {});\r\n }\r\n\r\n\r\n onCellPrepared(e): void {\r\n if (e.rowType === 'data' && e.column.dataField === 'status') {\r\n const cssClass =\r\n\r\n e.data.status === 'Failed' ? 'danger' :\r\n e.data.status === 'Succeeded' ? 'success' :\r\n e.data.status === 'InProgress' ? 'info' :\r\n e.data.status === 'Cancelled' ? 'danger' :\r\n null;\r\n\r\n if (cssClass) {\r\n this.renderer.addClass(e.cellElement, cssClass);\r\n }\r\n }\r\n }\r\n\r\n formatJobParameters(jobArgs: string): string {\r\n if (jobArgs) {\r\n const obj = JSON.parse(jobArgs);\r\n if (obj.pipeline === null) {\r\n delete obj.pipeline;\r\n }\r\n if (obj.gasMonth === null) {\r\n delete obj.gasMonth;\r\n }\r\n if (obj.gasDay === null) {\r\n delete obj.gasDay;\r\n }\r\n if (obj.gasCycleCode === null) {\r\n delete obj.gasCycleCode;\r\n }\r\n if (obj.locationId === null) {\r\n delete obj.locationId;\r\n }\r\n if (obj.locationId != null) {\r\n this.nominationLocationEnrichmentService.enrich(obj, 'locationId', 'location').subscribe(() => {\r\n delete obj.locationId;\r\n });\r\n }\r\n\r\n // TODO: Why do we have two pipelines and job Categories, there should only be one.\r\n if (obj.pipeline !== null && obj.Pipeline !== null) {\r\n delete obj.Pipeline;\r\n }\r\n if (obj.jobCategory !== null && obj.JobCategory !== null) {\r\n delete obj.JobCategory;\r\n }\r\n\r\n return JSON.stringify(obj, null, ' ');\r\n }\r\n\r\n return 'None';\r\n }\r\n\r\n isValidDates(): boolean {\r\n if (this.model.searchParams.toGasDay == null || this.model.searchParams.fromGasDay == null) {\r\n return true;\r\n }\r\n\r\n return this.model.searchParams.toGasDay >= this.model.searchParams.fromGasDay;\r\n }\r\n\r\n private gasDayRangeParamValidator(): ParamValidator {\r\n const gasDayRangeQueryParams = ParamValidator.Standard();\r\n\r\n gasDayRangeQueryParams.isString('process');\r\n gasDayRangeQueryParams.isGasDay('from');\r\n gasDayRangeQueryParams.isGasDay('to');\r\n\r\n return gasDayRangeQueryParams;\r\n }\r\n\r\n private loadJobTypes(): Observable {\r\n\r\n if (_.isNil(this.model.searchParams.process)) {\r\n this.model.jobs = [];\r\n return of(null);\r\n }\r\n return this.scheduledJobsService.queryAllJobTypes(this.model.searchParams.process).pipe(\r\n tap(jobTypes => {\r\n if (this.sessionService.getPipeline().allowAllLocationConfirmation) {\r\n this.model.jobs = jobTypes;\r\n } else {\r\n this.model.jobs = jobTypes.filter(j => j.key !== 'AutoBalanceAllLocationsJob');\r\n }\r\n }));\r\n }\r\n\r\n private buildJobRunsRequest(): JobRunsRequest {\r\n const request = new JobRunsRequest();\r\n\r\n request.jobCategory = this.model.searchParams.process;\r\n request.jobStatus = this.model.searchParams.jobStatus;\r\n request.jobName = this.getJobDisplayName();\r\n request.fromGasDay = this.model.searchParams.fromGasDay;\r\n request.toGasDay = this.model.searchParams.toGasDay;\r\n\r\n return request;\r\n }\r\n\r\n protected resetSortOrder() {\r\n if (this.jobHistoryDataGrid) {\r\n this.jobHistoryDataGrid.instance.clearSorting();\r\n this.jobHistoryDataGrid.instance.columnOption('Start Time', {sortOrder: 'desc', sortIndex: 0});\r\n }\r\n }\r\n\r\n private getJobDisplayName(): string | null {\r\n return this.model.searchParams.job\r\n ? _.find(this.model.jobs, {key: this.model.searchParams.job}).displayName\r\n : null;\r\n }\r\n\r\n startTimeSortValue = (rowData: JobRun) => {\r\n // Put Pending values (null start date) on top.\r\n return (rowData.jobStart) ? rowData.jobStart : this.maxDate;\r\n };\r\n\r\n}\r\n","import {AbstractResourceService} from \"@shared/resources/abstract-resource.service\";\r\nimport {Observable} from \"rxjs\";\r\n\r\nexport class EnvironmentConfiguration {\r\n id: number;\r\n environment: string;\r\n key: string;\r\n value: string;\r\n version: number;\r\n}\r\n\r\nexport class BooleanValuedEnvironmentConfiguration extends EnvironmentConfiguration {\r\n booleanValue: boolean;\r\n\r\n updateValue(newValue: boolean): void {\r\n this.booleanValue = newValue;\r\n this.value = this.booleanValue.toString();\r\n }\r\n}\r\n\r\nexport abstract class BaseConfigurationService {\r\n\r\n protected constructor(private commonDataResource: AbstractResourceService) { }\r\n\r\n public queryExternalAccess(environment: string, key: string): Observable {\r\n return this.commonDataResource.get(`/configuration/environment/${environment}/key/${key}`, false);\r\n }\r\n\r\n public updateExternalAccess(updateParameters: EnvironmentConfiguration): Observable {\r\n return this.commonDataResource.putWithNoResponseBody(`/configuration/environment/${updateParameters.environment}/key/${updateParameters.key}`, updateParameters, false);\r\n }\r\n\r\n public queryEnvironmentConfig(environment: string, key: string): Observable {\r\n return this.commonDataResource.get(`/configuration/environment/${environment}/key/${key}`, false);\r\n }\r\n\r\n public upsertEnvironmentConfig(updateParameters: EnvironmentConfiguration): Observable {\r\n return this.commonDataResource.postWithNoResponseBody(`/configuration/environment/upsertconfig`, updateParameters, false);\r\n }\r\n}\r\n","export class EmailSubscription {\r\n id: number;\r\n email: string;\r\n eventType: string;\r\n confirmEmail: string;\r\n subscribe: boolean;\r\n\r\n public isValid(): boolean {\r\n // todo: email regex\r\n return this.email === this.confirmEmail;\r\n }\r\n}\r\n","import {IEmailSubscriptionEventDto, IEmailSubscriptionUserDto} from \"./email-subscription.service\";\r\nimport {EmailSubscription} from \"@model/email-subscription\";\r\nimport * as _ from 'lodash';\r\n\r\nexport class EmailSubscriptionBuilder {\r\n public buildFromDto(dto: IEmailSubscriptionUserDto, eventType: string, pipelineCode: string): EmailSubscription {\r\n const emailSubscription = new EmailSubscription();\r\n\r\n const found = _.find(dto.events, function(subscriptionEvent: IEmailSubscriptionEventDto) {\r\n return subscriptionEvent.eventType === eventType && subscriptionEvent.pipelineCode === pipelineCode;\r\n });\r\n\r\n emailSubscription.email = found ? found.email : dto.email;\r\n emailSubscription.eventType = found ? found.eventType : \"\";\r\n emailSubscription.subscribe = !!found;\r\n return emailSubscription;\r\n }\r\n}\r\n","export class EventType {\r\n\r\n // tslint:disable:variable-name\r\n public static PublishInvoiceNotification: EventType = new EventType('PublishInvoiceNotification', 'Publish Invoice Notification');\r\n public static DailyDiscretionaryRevenueReport: EventType = new EventType('DailyDiscretionaryRevenueReport', 'Daily Discretionary Revenue Report');\r\n public static OfoEvent: EventType = new EventType('OfoEvent', 'Ofo Event');\r\n public static OperationalEvent: EventType = new EventType('OperationalEvent', 'Operational Event');\r\n public static ConfirmationRequest: EventType = new EventType('ConfirmationRequest', 'Confirmation Request');\r\n public static MinimumItBidRate: EventType = new EventType('MinimumItBidRate', 'Minimum It Bid Rate');\r\n public static ScheduledCycle: EventType = new EventType('ScheduledCycle', 'Scheduled Cycle');\r\n public static NominationFailedOrAmended: EventType = new EventType('NominationFailedOrAmended', 'Nomination Failed Or Amended');\r\n public static MismatchedTitleTransfer: EventType = new EventType('MismatchedTitleTransfer', 'Mismatched Title Transfer');\r\n public static ImbalanceTradeRequest: EventType = new EventType('ImbalanceTradeRequest', 'Imbalance Trade Request');\r\n\r\n public static Types: EventType[] = [\r\n EventType.PublishInvoiceNotification,\r\n EventType.DailyDiscretionaryRevenueReport,\r\n EventType.OfoEvent,\r\n EventType.OperationalEvent,\r\n EventType.ConfirmationRequest,\r\n EventType.MinimumItBidRate,\r\n EventType.ScheduledCycle,\r\n EventType.NominationFailedOrAmended,\r\n EventType.MismatchedTitleTransfer,\r\n EventType.ImbalanceTradeRequest\r\n ];\r\n // tslint:enable:variable-name\r\n\r\n value: string;\r\n name: string;\r\n\r\n public static GetDisplayName(statusValue: string): string{\r\n return this.Types.find(ofo => ofo.value === statusValue)?.name ?? statusValue;\r\n }\r\n\r\n constructor(value: string, name: string) {\r\n this.value = value;\r\n this.name = name;\r\n }\r\n}\r\n","import {BaseViewModel} from \"@model/base-view-model\";\r\nimport {IEmailSubscriptionEventDto, IEmailSubscriptionUserDto} from \"@shared/services/nomination/email-subscription/email-subscription.service\";\r\nimport {EventType} from \"app/gcts/administration/unsubscribe-email-notifications/eventType\";\r\n\r\nexport class UnsubscribeEmailNotificationsModel extends BaseViewModel {\r\n public selectedRows: EventSubscriptionDto[] = [];\r\n\r\n public searchParams: UnsubscribeEmailNotificationsSearchParams = new UnsubscribeEmailNotificationsSearchParams();\r\n public lastSearchParams: UnsubscribeEmailNotificationsSearchParams;\r\n\r\n public searchResults: EventSubscriptionDto[];\r\n\r\n public eventTypes: EventType[] = EventType.Types;\r\n}\r\n\r\nexport class UnsubscribeEmailNotificationsSearchParams {\r\n public username: string;\r\n public email: string;\r\n public eventType: string;\r\n}\r\n\r\nexport enum SubscriptionService {\r\n CommonData,\r\n Nominations\r\n}\r\n\r\nexport class EventSubscriptionDto {\r\n public subscriptionService: SubscriptionService;\r\n public userId: string;\r\n public emailAddress: string;\r\n public enterpriseId: number;\r\n public event: string;\r\n\r\n public static createForCommonData(userDto: IEmailSubscriptionUserDto, eventDto: IEmailSubscriptionEventDto): EventSubscriptionDto {\r\n return new EventSubscriptionDto(\r\n SubscriptionService.CommonData,\r\n userDto.username,\r\n userDto.email, // email is on the SubscriptionUser\r\n eventDto.eventType,\r\n this.parseEnterpriseId(eventDto.uniqueId)\r\n );\r\n }\r\n\r\n // TODO: If we clean up Subscriptions, then we don't have to have separate calls for CommonData and Nominations.\r\n public static createForNominations(userDto: IEmailSubscriptionUserDto, eventDto: IEmailSubscriptionEventDto): EventSubscriptionDto {\r\n return new EventSubscriptionDto(\r\n SubscriptionService.Nominations,\r\n userDto.username,\r\n eventDto.email, // email is on the Event\r\n eventDto.eventType,\r\n this.parseEnterpriseId(eventDto.uniqueId)\r\n );\r\n }\r\n\r\n private static parseEnterpriseId(value: string): number {\r\n return !!value ? +value : null;\r\n }\r\n\r\n constructor(subscriptionService: SubscriptionService, userId: string, emailAddress: string, event: string, enterpriseId: number) {\r\n this.subscriptionService = subscriptionService;\r\n this.userId = userId;\r\n this.emailAddress = emailAddress;\r\n this.event = event;\r\n this.enterpriseId = enterpriseId;\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\nimport {Injectable} from '@angular/core';\r\nimport {Observable} from \"rxjs\";\r\nimport {NominationResourceService} from \"@shared/resources/nominations-resource.service\";\r\nimport {EmailSubscription} from \"@model/email-subscription\";\r\nimport {EmailSubscriptionBuilder} from \"./email-subscription-builder\";\r\nimport {SessionService} from \"../../webapp/session/session.service\";\r\nimport {map} from \"rxjs/operators\";\r\nimport {EventSubscriptionDto} from \"app/gcts/administration/unsubscribe-email-notifications/unsubscribe-email-notifications.model\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {EventType} from \"app/gcts/administration/unsubscribe-email-notifications/eventType\";\r\n\r\n@Injectable()\r\nexport class EmailSubscriptionService implements IEmailSubscriptionService {\r\n\r\n constructor(private nominationResourceService: NominationResourceService, private sessionService: SessionService) {\r\n }\r\n\r\n getSubscriptionForEvent(eventType: string): Observable {\r\n return this.nominationResourceService.get('/emailsubscriptions/user', true)\r\n .pipe(\r\n map(emailSubscriptionUserDto => {\r\n if (emailSubscriptionUserDto === null) return new EmailSubscription();\r\n return new EmailSubscriptionBuilder().buildFromDto(emailSubscriptionUserDto, eventType, this.sessionService.getPipeline().code);\r\n })\r\n );\r\n }\r\n\r\n // This uses the user in the Jwt Token to determine who is unsubscribing.\r\n updateSubscription(subscriptionUpdateRequest: EmailSubscriptionUpdateRequest): Observable {\r\n return this.nominationResourceService.put('/emailsubscriptions/user', subscriptionUpdateRequest, true);\r\n }\r\n\r\n // This uses the user in the request object to determine who is unsubscribing.\r\n updateSubscriptionInternal(subscriptionUpdateRequest: InternalEmailSubscriptionUpdateRequest): Observable {\r\n return this.nominationResourceService.post('/emailsubscriptions', subscriptionUpdateRequest, true);\r\n }\r\n\r\n querySubscriptions(subscriptionSearchRequest: EmailSubscriptionSearchRequest): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('emailSearchText', subscriptionSearchRequest.emailSearchText);\r\n params.set('usernameSearchText', subscriptionSearchRequest.usernameSearchText);\r\n\r\n return this.nominationResourceService.get('/emailsubscriptions', true, params)\r\n .pipe(\r\n map(response =>\r\n // for each dto in the response array create a new array for all the events in the dto.\r\n _.flatMap(response, dto =>\r\n _.map(dto.events, event => EventSubscriptionDto.createForNominations(dto, event)\r\n ))));\r\n }\r\n\r\n public querySubscribedEventTypes(): Observable {\r\n return this.nominationResourceService.get('/emailsubscriptions/events', true)\r\n .pipe(\r\n map(response => _.map(response, (typeValue) => EventType.Types.find((t) => t.value === typeValue)))\r\n );\r\n }\r\n}\r\n\r\nexport interface IEmailSubscriptionService {\r\n updateSubscription(subscriptionUpdateRequest: EmailSubscriptionUpdateRequest): Observable;\r\n getSubscriptionForEvent(eventType: string): Observable;\r\n}\r\n\r\nexport class InternalEmailSubscriptionUpdateRequest {\r\n username: string;\r\n eventTypes: string[];\r\n email: string;\r\n subscribe: string;\r\n\r\n public constructor(init?: Partial) {\r\n Object.assign(this, init);\r\n }\r\n\r\n}\r\n\r\nexport class EmailSubscriptionUpdateRequest {\r\n username: string;\r\n eventType: string;\r\n email: string;\r\n subscribe: string;\r\n\r\n public constructor(init?: Partial) {\r\n Object.assign(this, init);\r\n }\r\n\r\n}\r\n\r\nexport class EmailSubscriptionSearchRequest {\r\n emailSearchText: string;\r\n usernameSearchText: string;\r\n\r\n public constructor(init?: Partial) {\r\n Object.assign(this, init);\r\n }\r\n}\r\n\r\nexport interface IEmailSubscriptionUserDto {\r\n username: string;\r\n email: string;\r\n events: IEmailSubscriptionEventDto[];\r\n}\r\n\r\nexport interface IEmailSubscriptionEventDto {\r\n pipelineCode: string;\r\n email: string;\r\n eventType: string;\r\n subscribed: boolean;\r\n uniqueId: string;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {BaseConfigurationService} from \"@shared/services/shared/base-data-configuration.service\";\r\nimport {CommondataResourceService} from \"@shared/resources/commondata-resource.service\";\r\n\r\n@Injectable()\r\nexport class CommonDataConfigurationService extends BaseConfigurationService {\r\n\r\n constructor(resourceService: CommondataResourceService) {\r\n super(resourceService);\r\n }\r\n}\r\n\r\n","import {Injectable} from \"@angular/core\";\r\nimport {BaseConfigurationService} from \"@shared/services/shared/base-data-configuration.service\";\r\nimport {NominationResourceService} from \"@shared/resources/nominations-resource.service\";\r\n\r\n@Injectable()\r\nexport class NominationsConfigurationService extends BaseConfigurationService {\r\n\r\n constructor(resourceService: NominationResourceService) {\r\n super(resourceService);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {Observable} from \"rxjs\";\r\nimport {CommondataResourceService} from \"@shared/resources/commondata-resource.service\";\r\n\r\n@Injectable()\r\nexport class CommonDataCacheService {\r\n\r\n constructor(private commonDataResource: CommondataResourceService) { }\r\n\r\n clearCache(): Observable {\r\n return this.commonDataResource.deleteWithNoResponseBody('/cache/clear', false);\r\n }\r\n}\r\n","import * as _ from \"lodash\";\r\n\r\nexport class BusinessRight {\r\n public static ConfirmationVariance: BusinessRight = new BusinessRight('ConfirmationVariance', 'Confirmation Variance', 'ConfirmationVariance', 'Confirmation Var');\r\n public static CustodyTransfer: BusinessRight = new BusinessRight('CustodyTransfer', 'Custody Transfer');\r\n public static Transportation: BusinessRight = new BusinessRight('Transportation', 'Transportation', 'MainlineTransportation', 'Mainline Transp');\r\n public static TransportationVariance: BusinessRight = new BusinessRight('TransportationVariance', 'Transportation Variance', 'MainlineTransportationVariance', 'MT Variance');\r\n public static TransportationFuel: BusinessRight = new BusinessRight('TransportationFuel', 'Transportation Fuel', 'MainlineTransportationFuel', 'MT Fuel');\r\n public static MultiTitleTransfer: BusinessRight = new BusinessRight('MultiTitleTransfer', 'Multi Title Transfer');\r\n public static ParkAndLoan: BusinessRight = new BusinessRight('ParkAndLoan', 'Park And Loan');\r\n public static LdcVariance: BusinessRight = new BusinessRight('LdcVariance', 'Ldc Variance');\r\n public static PipelineVariance: BusinessRight = new BusinessRight('PipelineVariance', 'Pipeline Variance');\r\n public static SboStorage: BusinessRight = new BusinessRight('SboStorage', 'Sbo Storage');\r\n public static ShortNoticeBalancing: BusinessRight = new BusinessRight('ShortNoticeBalancing', 'Short Notice Balancing','ShortNoticeBalancing', 'SN Balancing');\r\n public static SystemLinepack: BusinessRight = new BusinessRight('SystemLinepack', 'System Linepack');\r\n public static SystemFuel: BusinessRight = new BusinessRight('SystemFuel', 'System Fuel');\r\n public static TboTransportation: BusinessRight = new BusinessRight('TboTransportation', 'Tbo Transportation', 'TBO Transp');\r\n public static TboFuel: BusinessRight = new BusinessRight('TboFuel', 'Tbo Fuel');\r\n public static Purchase: BusinessRight = new BusinessRight('Purchase', 'Purchase');\r\n public static Sale: BusinessRight = new BusinessRight('Sale', 'Sale');\r\n\r\n private static All: BusinessRight[] = [\r\n BusinessRight.ConfirmationVariance,\r\n BusinessRight.CustodyTransfer,\r\n BusinessRight.Transportation,\r\n BusinessRight.TransportationVariance,\r\n BusinessRight.TransportationFuel,\r\n BusinessRight.MultiTitleTransfer,\r\n BusinessRight.ParkAndLoan,\r\n BusinessRight.LdcVariance,\r\n BusinessRight.PipelineVariance,\r\n BusinessRight.SboStorage,\r\n BusinessRight.ShortNoticeBalancing,\r\n BusinessRight.SystemLinepack,\r\n BusinessRight.SystemFuel,\r\n BusinessRight.TboTransportation,\r\n BusinessRight.TboFuel,\r\n BusinessRight.Purchase,\r\n BusinessRight.Sale\r\n ];\r\n\r\n public static SHIPPER_BUSINESS_RIGHTS: BusinessRight[] = [\r\n BusinessRight.ConfirmationVariance,\r\n BusinessRight.CustodyTransfer,\r\n BusinessRight.TransportationVariance,\r\n BusinessRight.TransportationFuel,\r\n BusinessRight.MultiTitleTransfer,\r\n BusinessRight.ParkAndLoan,\r\n BusinessRight.ShortNoticeBalancing,\r\n BusinessRight.SystemLinepack\r\n ];\r\n\r\n public static OPERATOR_BUSINESS_RIGHTS: BusinessRight[] = [\r\n BusinessRight.LdcVariance,\r\n BusinessRight.PipelineVariance\r\n ];\r\n\r\n name: string;\r\n displayName: string;\r\n alternateName: string;\r\n legacyName: string;\r\n\r\n constructor(name: string, fullName: string, alternateName?: string, legacyName?: string) {\r\n this.name = name;\r\n this.displayName = fullName;\r\n this.alternateName = !_.isNil(alternateName) ? alternateName : name;\r\n this.legacyName = !_.isNil(legacyName) ? legacyName : name;\r\n }\r\n\r\n public static find(businessRight: string): BusinessRight {\r\n if(_.isNil(businessRight)) return null;\r\n\r\n const toCheckFor = businessRight.toLowerCase();\r\n return _.find(this.All, x => x.name.toLowerCase() === toCheckFor || x.displayName.toLowerCase() === toCheckFor || x.alternateName.toLowerCase() === toCheckFor || x.legacyName.toLowerCase() === toCheckFor);\r\n }\r\n}\r\n","import * as _ from \"lodash\";\r\nimport { Injectable } from '@angular/core';\r\nimport {ContractsResourceService} from \"@shared/resources/contracts-resource.service\";\r\nimport {Observable} from \"rxjs\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {IGasDay} from \"@model/gas-day-month.interface\";\r\nimport {map} from \"rxjs/operators\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {HttpResponse} from \"@angular/common/http\";\r\nimport {BusinessRight} from \"@model/business-right\";\r\nimport {IEnrichmentResource} from \"@shared/services/enrichment/base-enrichment.service\";\r\nimport {IEnrichmentNomGroup} from \"@shared/services/enrichment/nomgroup-enrichment.service\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {RunReportAsType} from \"@model/run-report-as-type\";\r\nimport {NominationGroup} from \"@shared/services/nomination/nomination-nom-group/nomination-nom-group.service\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NominationGroupService implements IEnrichmentResource {\r\n\r\n constructor(private contractsResource: ContractsResourceService) { }\r\n\r\n public queryNomGroupNames(): Observable {\r\n return this.contractsResource.get('/nominationGroups/enrichment');\r\n }\r\n\r\n get(id: number, gasDay: GasDay): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setGasDay(gasDay);\r\n\r\n return this.contractsResource.get('/nominationGroups/' + id.toString(), true, params)\r\n .pipe(\r\n map(dto => NominationGroupDto.create(dto))\r\n );\r\n }\r\n\r\n getVariant2(params: GCTSHttpParams): Observable {\r\n return this.contractsResource.get('/nominationGroups', true, params)\r\n .pipe(\r\n map(dtos => _.map(dtos, dto => NominationGroupDto.create(dto)))\r\n );\r\n }\r\n\r\n public queryHubTypes(enterpriseId: number): Observable {\r\n return this.contractsResource.get(`/nominationGroup/hubTypes/${enterpriseId}`, true);\r\n }\r\n\r\n public queryNominationGroupsForEnterprise(enterpriseId: number) : Observable{\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setOptionalBoolean('includeExpired', true);\r\n\r\n return this.contractsResource.get(`/nominationGroup/enterprise/${enterpriseId}`, true, params);\r\n }\r\n\r\n public createNomGroupInitialState(contractVersionId: number): Observable {\r\n return this.contractsResource.get(`/nominationGroups/defaultValue/${contractVersionId}`, true)\r\n .pipe(\r\n map(dto => {\r\n const nominationGroupDto = NominationGroupDto.create(dto);\r\n\r\n nominationGroupDto.invoiceGroupId = nominationGroupDto.id; // The Invoice Group Id will be the same as the account id.\r\n\r\n return nominationGroupDto;\r\n })\r\n );\r\n }\r\n\r\n public queryNomGroups(requestParams: QueryNomGroupsSearchRequest): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setOptionalNumber('customerEnterpriseCid', requestParams.enterpriseId);\r\n params.setOptionalNumber('invoiceRecipientEnterpriseCid', requestParams.invoiceRecipientEnterpriseId);\r\n params.setOptionalGasDay(requestParams.fromGasDay, 'fromGasDay');\r\n params.setOptionalGasDay(requestParams.toGasDay, 'toGasDay');\r\n params.setOptionalGasMonth(requestParams.gasMonth, 'gasMonth');\r\n params.setBoolean('includeITOnly', requestParams.includeITOnly);\r\n params.setBoolean('forManualTransactionsOnly', requestParams.forManualTransactionsOnly);\r\n\r\n return this.contractsResource.get('/nominationGroups', true, params)\r\n .pipe(\r\n map(dtos => _.map(dtos, dto => NominationGroupDto.create(dto)))\r\n );\r\n }\r\n\r\n public createNomGroupFinalState(request: CreateNominationGroupRequest): Observable {\r\n const body = {\r\n contractVersionId: request.contractVersionId,\r\n\r\n id: request.id,\r\n mnemonic: request.mnemonic,\r\n name: request.name,\r\n invoiceAgentId: request.invoiceAgentId,\r\n enterpriseId: request.enterpriseId,\r\n effectiveGasDay: request.effectiveGasDay.toString(),\r\n expiryGasDay: request.expiryGasDay.toString(),\r\n anchorShipperRights: request.anchorShipperRights\r\n };\r\n\r\n return this.contractsResource.postWithNoResponseBody('/nominationgroups', body);\r\n }\r\n\r\n public createHubAccount(request: CreateHubAccountRequest): Observable {\r\n const body = {\r\n enterpriseId: request.enterpriseId,\r\n mnemonicPrefix: request.mnemonicPrefix,\r\n hubType: request.hubType,\r\n invoiceRecipientId: request.invoiceRecipientId,\r\n effectiveGasDay: request.effectiveGasDay.toString(),\r\n expiryGasDay: request.expiryGasDay.toString()\r\n };\r\n\r\n return this.contractsResource.postWithNoResponseBody('/nominationgroup/hub', body);\r\n }\r\n\r\n public createNonHubAccount(request: CreateNonHubAccountRequest): Observable {\r\n const body = {\r\n enterpriseId: request.enterpriseId,\r\n accountMnemonic: request.accountMnemonic,\r\n accountName: request.accountName,\r\n parentAccountId: request.parentAccountId,\r\n gasAccountId: request.gasAccountId,\r\n invoiceRecipientId: request.invoiceRecipientId,\r\n businessRight: request.businessRight,\r\n effectiveGasDay: request.effectiveGasDay.toString(),\r\n expiryGasDay: request.expiryGasDay.toString()\r\n };\r\n\r\n return this.contractsResource.postWithNoResponseBody('/nominationgroup/nonhub', body);\r\n }\r\n\r\n createParkAndLoanAccount(request: CreateParkAndLoanAccountRequest) {\r\n const body = {\r\n enterpriseId: request.enterpriseId,\r\n accountMnemonic: request.accountMnemonic,\r\n accountName: request.accountName,\r\n parentAccountId: request.parentAccountId,\r\n gasAccountId: request.gasAccountId,\r\n invoiceRecipientId: request.invoiceRecipientId,\r\n businessRight: request.businessRight,\r\n effectiveGasDay: request.effectiveGasDay.toString(),\r\n expiryGasDay: request.expiryGasDay.toString(),\r\n locationId: request.locationId,\r\n parkAndLoanType: request.parkAndLoanType,\r\n injectionQuantity: request.injectionQuantity,\r\n injectionQuantityStartDate: request.injectionQuantityStartDate.toString(),\r\n injectionQuantityEndDate: request.injectionQuantityEndDate.toString(),\r\n withdrawalQuantity: request.withdrawalQuantity,\r\n withdrawalQuantityStartDate: request.withdrawalQuantityStartDate.toString(),\r\n withdrawalQuantityEndDate: request.withdrawalQuantityEndDate.toString(),\r\n totalQuantity: request.totalQuantity,\r\n totalQuantityStartDate: request.totalQuantityStartDate.toString(),\r\n totalQuantityEndDate: request.totalQuantityEndDate.toString()\r\n };\r\n\r\n return this.contractsResource.postWithNoResponseBody('/nominationgroup/parkAndLoan', body);\r\n }\r\n\r\n queryOperationalQuantity(requestParams: NominationGroupOperationalQuantityRequest): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setGasDay(requestParams.fromGasDay, 'fromGasDay');\r\n params.setGasDay(requestParams.toGasDay, 'toGasDay');\r\n params.setOptionalNumber('enterpriseId', requestParams.enterpriseId);\r\n params.setOptionalListOfNumbers('nominationGroupIds', requestParams.nominationGroupIds);\r\n params.setOptionalListOfNumbers('receiptLocationIds', requestParams.receiptLocationIds);\r\n params.setOptionalListOfNumbers('deliveryLocationIds', requestParams.deliveryLocationIds);\r\n params.setOptionalListOfNumbers('billableServiceIds', requestParams.billableServiceIds);\r\n\r\n return this.contractsResource.get('/nominationgroups/operationalquantities', true, params)\r\n .pipe(\r\n map(dtos => dtos.map(dto => NominationGroupOperationalQuantity.create(dto)))\r\n );\r\n }\r\n\r\n queryParkAndLoanOperationalQuantity(requestParams: NominationGroupOperationalParkAndLoanRequest): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setGasDay(requestParams.fromGasDay, 'fromGasDay');\r\n params.setGasDay(requestParams.toGasDay, 'toGasDay');\r\n params.setOptionalNumber('enterpriseId', requestParams.enterpriseId);\r\n params.setOptionalListOfNumbers('nominationGroupIds', requestParams.nominationGroupIds);\r\n params.setOptionalListOfNumbers('locationIds', requestParams.locationIds);\r\n\r\n return this.contractsResource.get('/nominationgroups/parkandloan', true, params)\r\n .pipe(\r\n map(dtos => dtos.map(dto => NominationGroupPALOperationalQuantity.create(dto)))\r\n );\r\n }\r\n\r\n queryContracts(requestParams: NominationGroupContractsRequest): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setNumber('nominationGroupId', requestParams.nominationGroupId);\r\n params.setGasDay(requestParams.fromGasDay, 'fromGasDay');\r\n params.setGasDay(requestParams.toGasDay, 'toGasDay');\r\n\r\n return this.contractsResource.get('/nominationgroups/details', true, params)\r\n .pipe(\r\n map(dtos => dtos.map(dto => NominationGroupContract.create(dto)))\r\n );\r\n }\r\n\r\n calculateOperationalQuantity(nominationGroup: number): Observable {\r\n return this.contractsResource.postWithNoResponseBody('/nominationGroups/operationalQuantity/' + nominationGroup, null, false);\r\n }\r\n\r\n downloadAccountContractSummaryDetailsCsv(requestParams: NominationGroupOperationalQuantityRequest): Observable> {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setGasDay(requestParams.fromGasDay, 'fromGasDay');\r\n params.setGasDay(requestParams.toGasDay, 'toGasDay');\r\n params.setOptionalNumber('enterpriseId', requestParams.enterpriseId);\r\n params.setOptionalListOfNumbers('nominationGroupIds', requestParams.nominationGroupIds);\r\n params.setOptionalListOfNumbers('receiptLocationIds', requestParams.receiptLocationIds);\r\n params.setOptionalListOfNumbers('deliveryLocationIds', requestParams.deliveryLocationIds);\r\n params.setOptionalListOfNumbers('billableServiceIds', requestParams.billableServiceIds);\r\n\r\n return this.contractsResource.getData('/nominationgroups/details/csv', true, params);\r\n }\r\n\r\n public querySimpleNomGroups(searchParams: QuerySimpleNomGroupsSearchParams): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setGasMonth(searchParams.gasMonth);\r\n params.setNumber('enterpriseId', searchParams.enterpriseId);\r\n params.set('nomGroupRelationship', searchParams.runReportAsType.id);\r\n params.setListOfStrings('nomGroupBusinessRight', _.map(searchParams.businessRights, businessRight => businessRight.alternateName));\r\n\r\n return this.contractsResource.get('/simpleNominationGroups', true, params)\r\n .pipe(\r\n map(dtos => _.map(dtos, dto => SimpleNominationGroup.create(dto)))\r\n );\r\n }\r\n\r\n public querySimpleNomGroupsForAllBusinessRights(gasMonth: GasMonth, customerId: number): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setGasMonth(gasMonth);\r\n params.setGasDay(GasDay.startOfTime(), 'fromGasDay');\r\n params.setGasDay(GasDay.endOfTime(), 'toGasDay');\r\n params.setNumber('enterpriseId', customerId);\r\n params.set('allBillableBusinessRights', 'true');\r\n\r\n return this.contractsResource.get('/simpleNominationGroups', true, params)\r\n .pipe(\r\n map(dtos => _.map(dtos, dto => SimpleNominationGroup.create(dto)))\r\n );\r\n }\r\n\r\n public querySimpleNomGroupsForCustomersBusinessRights(gasDay: GasDay, enterpriseIds: number[], businessRights: BusinessRight[]): Observable{\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setGasDay(gasDay);\r\n params.setListOfNumbers('enterpriseIds', enterpriseIds);\r\n params.setListOfStrings('businessRights', _.map(businessRights, businessRight => businessRight.alternateName));\r\n\r\n return this.contractsResource.get('/simpleNominationGroups/enterprisesBusinessRights', true, params)\r\n .pipe(\r\n map(dtos => _.map(dtos, dto => SimpleNominationGroup.create(dto)))\r\n );\r\n }\r\n\r\n public querySimpleNomGroupsForAllBusinessRightsVariant2(startGasDay: GasDay, endGasDay: GasDay): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setGasDay(GasDay.startOfTime(), 'fromGasDay');\r\n params.setGasDay(GasDay.endOfTime(), 'toGasDay');\r\n params.set('allBillableBusinessRights', 'true');\r\n\r\n return this.contractsResource.get('/simpleNominationGroups', true, params)\r\n .pipe(\r\n map(dtos => _.map(dtos, dto => SimpleNominationGroup.create(dto)))\r\n );\r\n }\r\n\r\n enrichmentQueryAll(gasDay: GasDay): Observable {\r\n return this.queryNomGroupNames();\r\n }\r\n\r\n enrichmentGet(id: number, gasDay: GasDay): Observable {\r\n // Same as the get method, but did not want to expose the enrichment property to the rest of the api.\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setGasDay(gasDay);\r\n params.setBoolean('forEnrichment', true);\r\n\r\n return this.contractsResource.get('/nominationGroups/' + id.toString(), true, params)\r\n .pipe(\r\n map(dto => NominationGroupDto.create(dto))\r\n );\r\n }\r\n\r\n public createProductionSetupNominationGroup(enterpriseId: number, effectiveGasDay: string): Observable{\r\n const createProductionSetupNominationGroupRequest: CreateProductionSetupNominationGroupRequest = new CreateProductionSetupNominationGroupRequest();\r\n createProductionSetupNominationGroupRequest.enterpriseId = enterpriseId;\r\n createProductionSetupNominationGroupRequest.effectiveGasDay = effectiveGasDay;\r\n return this.contractsResource.post(`/nominationGroup/productionSetup`, createProductionSetupNominationGroupRequest, true);\r\n }\r\n}\r\n\r\nexport class CreateProductionSetupNominationGroupRequest{\r\n enterpriseId: number;\r\n effectiveGasDay: string;\r\n}\r\n\r\nexport class QuerySimpleNomGroupsSearchParams {\r\n constructor(public gasMonth: GasMonth, public enterpriseId: number, public runReportAsType: RunReportAsType, public businessRights: BusinessRight[]) {\r\n }\r\n}\r\n\r\nexport class QueryNomGroupsSearchRequest {\r\n enterpriseId: number;\r\n invoiceRecipientEnterpriseId: number;\r\n fromGasDay?: GasDay;\r\n toGasDay?: GasDay;\r\n gasMonth?: GasMonth;\r\n includeITOnly?: boolean;\r\n forManualTransactionsOnly?: boolean;\r\n\r\n public static searchByEnterpriseAndGasDayRange(enterpriseId: number, fromGasDay: GasDay, toGasDay: GasDay) {\r\n const searchRequest = new QueryNomGroupsSearchRequest();\r\n\r\n searchRequest.enterpriseId = enterpriseId;\r\n searchRequest.fromGasDay = fromGasDay;\r\n searchRequest.toGasDay = toGasDay;\r\n\r\n return searchRequest;\r\n }\r\n\r\n public static searchByEnterpriseAndBillingMonth(enterpriseId: number, gasMonth: GasMonth, includeITOnly: boolean = false) {\r\n const searchRequest = new QueryNomGroupsSearchRequest();\r\n\r\n searchRequest.enterpriseId = enterpriseId;\r\n searchRequest.gasMonth = gasMonth;\r\n searchRequest.includeITOnly = includeITOnly;\r\n\r\n return searchRequest;\r\n }\r\n\r\n public static searchByInvoiceRecipient(invoiceRecipientEnterpriseId: number, gasMonth: GasMonth) {\r\n const searchRequest = new QueryNomGroupsSearchRequest();\r\n\r\n searchRequest.invoiceRecipientEnterpriseId = invoiceRecipientEnterpriseId;\r\n searchRequest.gasMonth = gasMonth;\r\n\r\n return searchRequest;\r\n }\r\n}\r\n\r\nexport class BaseCreateAccountRequest{\r\n enterpriseId: number;\r\n effectiveGasDay: GasDay;\r\n expiryGasDay: GasDay;\r\n invoiceRecipientId: number;\r\n}\r\n\r\nexport class CreateHubAccountRequest extends BaseCreateAccountRequest{\r\n hubType: string;\r\n mnemonicPrefix: string;\r\n}\r\n\r\nexport class CreateNonHubAccountRequest extends BaseCreateAccountRequest {\r\n accountMnemonic: string;\r\n accountName: string;\r\n parentAccountId?: number;\r\n gasAccountId?: number;\r\n businessRight: string;\r\n}\r\n\r\nexport class CreateParkAndLoanAccountRequest extends CreateNonHubAccountRequest {\r\n parkAndLoanType: string;\r\n locationId: number;\r\n\r\n injectionQuantity: number;\r\n injectionQuantityStartDate: GasDay;\r\n injectionQuantityEndDate: GasDay;\r\n\r\n withdrawalQuantity: number;\r\n withdrawalQuantityStartDate: GasDay;\r\n withdrawalQuantityEndDate: GasDay;\r\n\r\n totalQuantity: number;\r\n totalQuantityStartDate: GasDay;\r\n totalQuantityEndDate: GasDay;\r\n\r\n}\r\n\r\nexport class CreateNominationGroupRequest {\r\n contractVersionId: number;\r\n\r\n id: number;\r\n mnemonic: string;\r\n name: string;\r\n invoiceAgentId: number;\r\n enterpriseId: number;\r\n effectiveGasDay: GasDay;\r\n expiryGasDay: GasDay;\r\n anchorShipperRights: boolean;\r\n}\r\n\r\nexport class NominationGroupDto implements IEnrichmentNomGroup {\r\n public id: number;\r\n public invoiceGroupId: number;\r\n public ownerEnterpriseId: number;\r\n public mnemonic: string;\r\n public name: string;\r\n public serviceType: string;\r\n public effectiveGasDay: GasDay;\r\n public expiryGasDay: GasDay;\r\n public isGstExempt: boolean;\r\n public businessRight: BusinessRight;\r\n\r\n public invoiceGroup: InvoiceGroupDto;\r\n\r\n public static create(dto: INominationGroupDto): NominationGroupDto {\r\n if (!dto) {\r\n return null;\r\n }\r\n\r\n const nominationGroupDto = new NominationGroupDto();\r\n\r\n nominationGroupDto.id = +dto.id;\r\n nominationGroupDto.ownerEnterpriseId = +dto.ownerEnterpriseId;\r\n nominationGroupDto.mnemonic = dto.mnemonic;\r\n nominationGroupDto.name = dto.name;\r\n nominationGroupDto.serviceType = dto.serviceType;\r\n nominationGroupDto.effectiveGasDay = GasDay.parse(dto.effectiveGasDay);\r\n nominationGroupDto.expiryGasDay = GasDay.parse(dto.expiryGasDay);\r\n nominationGroupDto.isGstExempt = dto.isGstExempt;\r\n nominationGroupDto.businessRight = BusinessRight.find(dto.businessRight);\r\n\r\n nominationGroupDto.invoiceGroupId = dto.invoiceGroup && dto.invoiceGroup.id ? +dto.invoiceGroup.id : +dto.invoiceGroupId;\r\n\r\n if(dto.invoiceGroup) {\r\n const invoiceGroupDto = new InvoiceGroupDto();\r\n invoiceGroupDto.id = +dto.invoiceGroup.id;\r\n invoiceGroupDto.effectiveGasDay = GasDay.parse(dto.invoiceGroup.effectiveGasDay);\r\n invoiceGroupDto.expiryGasDay = GasDay.parse(dto.invoiceGroup.expiryGasDay);\r\n\r\n nominationGroupDto.invoiceGroup = invoiceGroupDto;\r\n }\r\n\r\n return nominationGroupDto;\r\n }\r\n}\r\n\r\nexport class InvoiceGroupDto {\r\n id: number;\r\n effectiveGasDay: GasDay;\r\n expiryGasDay: GasDay;\r\n}\r\n\r\nexport interface INominationGroupDto {\r\n id: string;\r\n invoiceGroupId: string;\r\n ownerEnterpriseId: string;\r\n mnemonic: string;\r\n name: string;\r\n serviceType: string;\r\n effectiveGasDay: string;\r\n expiryGasDay: string;\r\n isGstExempt: boolean;\r\n businessRight: string;\r\n invoiceGroup: IInvoiceGroupDto;\r\n}\r\n\r\nexport interface IInvoiceGroupDto {\r\n id: string;\r\n effectiveGasDay: string;\r\n expiryGasDay: string;\r\n}\r\n\r\nexport class NominationGroupNameDto implements IEnrichmentNomGroup {\r\n public id: number;\r\n public mnemonic: string;\r\n public name: string;\r\n public ownerEnterpriseId: number;\r\n\r\n public get mnemonicAndName(): string {\r\n return `${this.mnemonic} ${this.name}`;\r\n }\r\n\r\n public static create(id: number, mnemonic: string, name: string): NominationGroupNameDto {\r\n const dto = new NominationGroupNameDto();\r\n\r\n dto.id = id;\r\n dto.mnemonic = mnemonic;\r\n dto.name = name;\r\n\r\n return dto;\r\n }\r\n}\r\n\r\nexport class NominationGroupOperationalQuantityRequest {\r\n fromGasDay: IGasDay;\r\n toGasDay: IGasDay;\r\n enterpriseId?: number;\r\n nominationGroupIds?: number[];\r\n receiptLocationIds?: number[];\r\n deliveryLocationIds?: number[];\r\n billableServiceIds?: number[];\r\n\r\n constructor(\r\n fromGasDay: IGasDay,\r\n toGasDay: IGasDay,\r\n enterpriseId?: number,\r\n nominationGroupIds?: number[],\r\n receiptLocationIds?: number[],\r\n deliveryLocationIds?: number[],\r\n billableServiceIds?: number[]) {\r\n this.fromGasDay = fromGasDay;\r\n this.toGasDay = toGasDay;\r\n this.enterpriseId = enterpriseId;\r\n this.nominationGroupIds = nominationGroupIds;\r\n this.receiptLocationIds = receiptLocationIds;\r\n this.deliveryLocationIds = deliveryLocationIds;\r\n this.billableServiceIds = billableServiceIds;\r\n }\r\n}\r\n\r\nexport class NominationGroupOperationalParkAndLoanRequest {\r\n fromGasDay: IGasDay;\r\n toGasDay: IGasDay;\r\n enterpriseId?: number;\r\n nominationGroupIds?: number[];\r\n locationIds?: number[];\r\n billableServiceIds?: number[];\r\n\r\n constructor(\r\n fromGasDay: IGasDay,\r\n toGasDay: IGasDay,\r\n enterpriseId?: number,\r\n nominationGroupIds?: number[],\r\n locationIds?: number[],\r\n billableServiceIds?: number[]) {\r\n this.fromGasDay = fromGasDay;\r\n this.toGasDay = toGasDay;\r\n this.enterpriseId = enterpriseId;\r\n this.nominationGroupIds = nominationGroupIds;\r\n this.locationIds = locationIds;\r\n this.billableServiceIds = billableServiceIds;\r\n }\r\n}\r\n\r\nexport class NominationGroupOperationalQuantity {\r\n enterpriseId: number;\r\n nominationGroupId: number;\r\n nomGroupEffectiveGasDay: IGasDay;\r\n nomGroupExpiryGasDay: IGasDay;\r\n invoiceGroupId: number;\r\n billableServiceId: number;\r\n pathType: string;\r\n receiptLocationId: number;\r\n deliveryLocationId: number;\r\n taxZeroRated: boolean;\r\n contractDemandQuantity: number;\r\n contractVolumeDemandQuantity: number;\r\n operationalQuantity: number;\r\n quantityEffectiveGasDay: IGasDay;\r\n quantityExpiryGasDay: IGasDay;\r\n\r\n public static create(dto: any): NominationGroupOperationalQuantity {\r\n const nominationGroupOperationalQuantity = new NominationGroupOperationalQuantity();\r\n\r\n nominationGroupOperationalQuantity.enterpriseId = +dto.enterpriseId;\r\n nominationGroupOperationalQuantity.nominationGroupId = +dto.nominationGroupId;\r\n nominationGroupOperationalQuantity.nomGroupEffectiveGasDay = !_.isNil(dto.nomGroupEffectiveGasDay) ? GasDay.parse(dto.nomGroupEffectiveGasDay) : null;\r\n nominationGroupOperationalQuantity.nomGroupExpiryGasDay = !_.isNil(dto.nomGroupExpiryGasDay) ? GasDay.parse(dto.nomGroupExpiryGasDay) : null;\r\n nominationGroupOperationalQuantity.invoiceGroupId = +dto.invoiceGroupId;\r\n nominationGroupOperationalQuantity.billableServiceId = +dto.billableServiceId;\r\n nominationGroupOperationalQuantity.pathType = dto.pathType;\r\n nominationGroupOperationalQuantity.receiptLocationId = !_.isNil(dto.receiptLocationId) ? +dto.receiptLocationId : null;\r\n nominationGroupOperationalQuantity.deliveryLocationId = !_.isNil(dto.deliveryLocationId) ? +dto.deliveryLocationId : null;\r\n nominationGroupOperationalQuantity.taxZeroRated = !!dto.taxZeroRated;\r\n nominationGroupOperationalQuantity.contractDemandQuantity = !_.isNil(dto.contractDemandQuantity) ? +dto.contractDemandQuantity : null;\r\n nominationGroupOperationalQuantity.contractVolumeDemandQuantity = !_.isNil(dto.contractVolumeDemandQuantity) ? +dto.contractVolumeDemandQuantity : null;\r\n nominationGroupOperationalQuantity.operationalQuantity = !_.isNil(dto.operationalQuantity) ? +dto.operationalQuantity : null;\r\n nominationGroupOperationalQuantity.quantityEffectiveGasDay = !_.isNil(dto.quantityEffectiveGasDay) ? GasDay.parse(dto.quantityEffectiveGasDay) : null;\r\n nominationGroupOperationalQuantity.quantityExpiryGasDay = !_.isNil(dto.quantityExpiryGasDay) ? GasDay.parse(dto.quantityExpiryGasDay) : null;\r\n\r\n return nominationGroupOperationalQuantity;\r\n }\r\n}\r\n\r\nexport class NominationGroupContractsRequest {\r\n nominationGroupId: number;\r\n fromGasDay: IGasDay;\r\n toGasDay: IGasDay;\r\n\r\n constructor(\r\n nominationGroupId,\r\n fromGasDay: IGasDay,\r\n toGasDay: IGasDay) {\r\n this.nominationGroupId = nominationGroupId;\r\n this.fromGasDay = fromGasDay;\r\n this.toGasDay = toGasDay;\r\n }\r\n}\r\n\r\nexport class NominationGroupContract {\r\n static TempAssignOutType: string = 'TA Out';\r\n\r\n nominationGroupId: number;\r\n type: string;\r\n\r\n partyContractId: number;\r\n partyContractEffectiveGasDay: IGasDay;\r\n partyContractExpiryGasDay: IGasDay;\r\n partyQuantityEffectiveGasDay: IGasDay;\r\n partyQuantityExpiryGasDay: IGasDay;\r\n partyContractVolumeDemand?: number = null;\r\n partyContractDemand: number;\r\n\r\n counterPartyContractId?: number = null;\r\n counterPartyEnterpriseId?: number = null;\r\n counterPartyContractEffectiveGasDay?: IGasDay = null;\r\n counterPartyContractExpiryGasDay?: IGasDay = null;\r\n counterPartyQuantityEffectiveGasDay?: IGasDay = null;\r\n counterPartyQuantityExpiryGasDay?: IGasDay = null;\r\n counterPartyContractVolumeDemand?: number = null;\r\n counterPartyContractDemand?: number = null;\r\n\r\n contractAlternatePaths: ContractAlternatePath[] = [];\r\n\r\n public static create(dto: any): NominationGroupContract {\r\n const nominationGroupContract = new NominationGroupContract();\r\n\r\n nominationGroupContract.nominationGroupId = +dto.nominationGroupId;\r\n nominationGroupContract.type = dto.type;\r\n\r\n nominationGroupContract.partyContractId = +dto.partyContractId;\r\n nominationGroupContract.partyContractEffectiveGasDay = GasDay.parse(dto.partyContractEffectiveGasDay);\r\n nominationGroupContract.partyContractExpiryGasDay = GasDay.parse(dto.partyContractExpiryGasDay);\r\n nominationGroupContract.partyQuantityEffectiveGasDay = !!dto.partyQuantityEffectiveGasDay ? GasDay.parse(dto.partyQuantityEffectiveGasDay) : null;\r\n nominationGroupContract.partyQuantityExpiryGasDay = !!dto.partyQuantityExpiryGasDay ? GasDay.parse(dto.partyQuantityExpiryGasDay) : null;\r\n nominationGroupContract.partyContractVolumeDemand = !!dto.partyContractVolumeDemand ? +dto.partyContractVolumeDemand : null;\r\n nominationGroupContract.partyContractDemand = !!dto.partyContractDemand ? +dto.partyContractDemand : null;\r\n\r\n if (dto.counterPartyContractId) {\r\n nominationGroupContract.counterPartyContractId = +dto.counterPartyContractId;\r\n nominationGroupContract.counterPartyEnterpriseId = +dto.counterPartyEnterpriseId;\r\n nominationGroupContract.counterPartyContractEffectiveGasDay = GasDay.parse(dto.counterPartyContractEffectiveGasDay);\r\n nominationGroupContract.counterPartyContractExpiryGasDay = GasDay.parse(dto.counterPartyContractExpiryGasDay);\r\n nominationGroupContract.counterPartyQuantityEffectiveGasDay = GasDay.parse(dto.counterPartyQuantityEffectiveGasDay);\r\n nominationGroupContract.counterPartyQuantityExpiryGasDay = GasDay.parse(dto.counterPartyQuantityExpiryGasDay);\r\n nominationGroupContract.counterPartyContractVolumeDemand = !!dto.counterPartyContractVolumeDemand ? +dto.counterPartyContractVolumeDemand : null;\r\n nominationGroupContract.counterPartyContractDemand = +dto.counterPartyContractDemand;\r\n }\r\n\r\n if (dto.contractAlternatePaths && dto.contractAlternatePaths instanceof Array) {\r\n nominationGroupContract.contractAlternatePaths = _.map(dto.contractAlternatePaths, contractAlternatePath => ContractAlternatePath.create(contractAlternatePath));\r\n }\r\n\r\n return nominationGroupContract;\r\n }\r\n\r\n public isTypeTempAssignOut(): boolean {\r\n return this.type === NominationGroupContract.TempAssignOutType;\r\n }\r\n}\r\n\r\nexport class ContractAlternatePath {\r\n public type: string;\r\n public receiptLocationId: number;\r\n public deliveryLocationId: number;\r\n public pathEffectiveGasDay: IGasDay;\r\n public pathExpiryGasDay: IGasDay;\r\n\r\n public static create(dto: any): ContractAlternatePath {\r\n const contractAlternatePath = new ContractAlternatePath();\r\n\r\n contractAlternatePath.type = dto.type;\r\n contractAlternatePath.receiptLocationId = +dto.receiptLocationId;\r\n contractAlternatePath.deliveryLocationId = +dto.deliveryLocationId;\r\n contractAlternatePath.pathEffectiveGasDay = GasDay.parse(dto.pathEffectiveGasDay);\r\n contractAlternatePath.pathExpiryGasDay = GasDay.parse(dto.pathExpiryGasDay);\r\n\r\n return contractAlternatePath;\r\n }\r\n}\r\n\r\nexport class NominationGroupPALOperationalQuantity {\r\n enterpriseId: number;\r\n nominationGroupId: number;\r\n invoiceGroupId: number;\r\n billableServiceId: number;\r\n type: string;\r\n locationId: number;\r\n taxZeroRated: boolean;\r\n parkAndLoanContracts: ParkAndLoanContract[] = [];\r\n\r\n public static create(dto: any): NominationGroupPALOperationalQuantity {\r\n const nominationGroupPALOperationalQuantity = new NominationGroupPALOperationalQuantity();\r\n\r\n nominationGroupPALOperationalQuantity.enterpriseId = +dto.enterpriseId;\r\n nominationGroupPALOperationalQuantity.nominationGroupId = +dto.nomGroupId;\r\n nominationGroupPALOperationalQuantity.invoiceGroupId = +dto.invoiceGroupId;\r\n nominationGroupPALOperationalQuantity.billableServiceId = +dto.billableServiceId;\r\n nominationGroupPALOperationalQuantity.type = dto.type;\r\n nominationGroupPALOperationalQuantity.locationId = +dto.locationId;\r\n nominationGroupPALOperationalQuantity.taxZeroRated = !!dto.taxZeroRated;\r\n\r\n if (dto.contracts && dto.contracts instanceof Array) {\r\n nominationGroupPALOperationalQuantity.parkAndLoanContracts = _.sortBy(\r\n _.map(dto.contracts, parkAndLoanContract => ParkAndLoanContract.create(parkAndLoanContract)), x => x.sortByIndex);\r\n }\r\n\r\n return nominationGroupPALOperationalQuantity;\r\n }\r\n}\r\n\r\n\r\nexport class ParkAndLoanContract {\r\n public static sortByMap: { [quantityType: string ]: number; } = {\r\n Injection: 1,\r\n Withdrawal: 2,\r\n TotalQuantity: 3\r\n };\r\n\r\n public contractNumber: string;\r\n public contractEffectiveGasDay: IGasDay;\r\n public contractExpiryGasDay: IGasDay;\r\n public quantityType: string;\r\n public quantity: number;\r\n public quantityEffectiveGasDay: IGasDay;\r\n public quantityExpiryGasDay: IGasDay;\r\n public sortByIndex: number;\r\n\r\n public static create(dto: any): ParkAndLoanContract {\r\n const parkAndLoanContract = new ParkAndLoanContract();\r\n\r\n parkAndLoanContract.contractNumber = dto.contractNumber;\r\n parkAndLoanContract.contractEffectiveGasDay = GasDay.parse(dto.contractEffectiveGasDay);\r\n parkAndLoanContract.contractExpiryGasDay = GasDay.parse(dto.contractExpiryGasDay);\r\n\r\n parkAndLoanContract.quantityType = dto.quantityType === 'TotalQuantity' ? 'Total Quantity' : dto.quantityType;\r\n parkAndLoanContract.quantity = +dto.quantity;\r\n parkAndLoanContract.quantityEffectiveGasDay = GasDay.parse(dto.quantityEffectiveGasDay);\r\n parkAndLoanContract.quantityExpiryGasDay = GasDay.parse(dto.quantityExpiryGasDay);\r\n\r\n parkAndLoanContract.sortByIndex = ParkAndLoanContract.sortByMap[dto.quantityType];\r\n\r\n return parkAndLoanContract;\r\n }\r\n}\r\n\r\nexport interface ISimpleNominationGroupResponse {\r\n id: string;\r\n mnemonic: string;\r\n nominationGroupType: string;\r\n nominationAgentEnterpriseId: string;\r\n nominationOwnerEnterpriseId: string;\r\n invoiceRecipientEnterpriseId: string;\r\n invoiceGroupId: string;\r\n invoiceGroupOwnerEnterpriseId: string;\r\n businessRight: string;\r\n parentId: string;\r\n pipeline: string;\r\n\r\n}\r\n\r\nexport class SimpleNominationGroup {\r\n id: number;\r\n mnemonic: string;\r\n nominationGroupType: string;\r\n nominationAgentEnterpriseId: number;\r\n nominationOwnerEnterpriseId: number;\r\n invoiceRecipientEnterpriseId: number;\r\n invoiceGroupId: number;\r\n invoiceGroupOwnerEnterpriseId: number;\r\n businessRight: BusinessRight;\r\n parentId?: number;\r\n pipeline: string;\r\n\r\n public static create(dto: ISimpleNominationGroupResponse): SimpleNominationGroup {\r\n const nomGroup = new SimpleNominationGroup();\r\n\r\n nomGroup.id = +dto.id;\r\n nomGroup.mnemonic = dto.mnemonic;\r\n nomGroup.nominationGroupType = dto.nominationGroupType; // TODO: Create Enum?\r\n nomGroup.nominationAgentEnterpriseId = +dto.nominationAgentEnterpriseId;\r\n nomGroup.nominationOwnerEnterpriseId = +dto.nominationOwnerEnterpriseId;\r\n nomGroup.invoiceRecipientEnterpriseId = +dto.invoiceRecipientEnterpriseId;\r\n nomGroup.invoiceGroupId = +dto.invoiceGroupId;\r\n nomGroup.invoiceGroupOwnerEnterpriseId = +dto.invoiceGroupOwnerEnterpriseId;\r\n nomGroup.businessRight = BusinessRight.find(dto.businessRight);\r\n nomGroup.parentId = !_.isNil(dto.parentId) ? +dto.parentId : null;\r\n nomGroup.pipeline = dto.pipeline;\r\n\r\n return nomGroup;\r\n }\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {EmailSubscriptionSearchRequest, EmailSubscriptionUpdateRequest, IEmailSubscriptionService, IEmailSubscriptionUserDto, InternalEmailSubscriptionUpdateRequest} from \"@shared/services/nomination/email-subscription/email-subscription.service\";\r\nimport {Observable, of} from \"rxjs\";\r\nimport {EventSubscriptionDto} from \"app/gcts/administration/unsubscribe-email-notifications/unsubscribe-email-notifications.model\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {concatMap, map} from \"rxjs/operators\";\r\nimport * as _ from \"lodash\";\r\nimport {CommondataResourceService} from \"@shared/resources/commondata-resource.service\";\r\nimport {EmailSubscription} from \"@model/email-subscription\";\r\nimport {EmailSubscriptionBuilder} from \"@shared/services/nomination/email-subscription/email-subscription-builder\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {EventType} from \"app/gcts/administration/unsubscribe-email-notifications/eventType\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CommonDataEmailSubscriptionService implements IEmailSubscriptionService {\r\n\r\n constructor(private commonDataResourceService: CommondataResourceService, private sessionService: SessionService) { }\r\n\r\n public querySubscriptions(subscriptionSearchRequest: EmailSubscriptionSearchRequest): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('emailSearchText', subscriptionSearchRequest.emailSearchText);\r\n params.set('usernameSearchText', subscriptionSearchRequest.usernameSearchText);\r\n\r\n return this.commonDataResourceService.get('/subscriptions', true, params)\r\n .pipe(\r\n map(response =>\r\n // for each dto in the response array create a new array for all the events in the dto.\r\n _.flatMap(response, dto => {\r\n return _.map(dto.events, event => EventSubscriptionDto.createForCommonData(dto, event));\r\n })));\r\n }\r\n\r\n getSubscriptionForEvent(eventType: string): Observable {\r\n return this.commonDataResourceService.get('/subscribe', true)\r\n .pipe(\r\n map(emailSubscriptionUserDto => {\r\n if (emailSubscriptionUserDto === null) return new EmailSubscription();\r\n _.forEach(emailSubscriptionUserDto.events, x => {\r\n x.pipelineCode = emailSubscriptionUserDto['pipelineCode'];\r\n x.email = emailSubscriptionUserDto.email;\r\n });\r\n return new EmailSubscriptionBuilder().buildFromDto(emailSubscriptionUserDto, eventType, this.sessionService.getPipeline().code);\r\n })\r\n );\r\n }\r\n\r\n updateSubscription(subscriptionUpdateRequest: EmailSubscriptionUpdateRequest): Observable {\r\n const body = {\r\n email: subscriptionUpdateRequest.email,\r\n subscribe: subscriptionUpdateRequest.subscribe,\r\n eventType: subscriptionUpdateRequest.eventType,\r\n pipeline: this.sessionService.getPipeline().code\r\n };\r\n\r\n return this.commonDataResourceService.post('/subscribe', body, true).pipe(\r\n concatMap(() => of(null))\r\n );\r\n }\r\n\r\n public updateSubscriptionInternal(subscriptionUpdateRequest: InternalEmailSubscriptionUpdateRequest): Observable {\r\n return this.commonDataResourceService.post('/emailsubscriptions', subscriptionUpdateRequest, true);\r\n }\r\n\r\n public querySubscribedEventTypes(): Observable {\r\n return this.commonDataResourceService.get('/subscriptions/events', true)\r\n .pipe(\r\n map(response => _.map(response, (typeValue) => EventType.Types.find((t) => t.value === typeValue)))\r\n );\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n

\r\n Configuration\r\n

\r\n
\r\n
\r\n
\r\n \r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n *There may be a delay of up to 5 mins for this change to take affect.\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n
\r\n
\r\n

\r\n Cache\r\n

\r\n
\r\n
\r\n
\r\n \r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n

\r\n Nomination Groups\r\n

\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

\r\n Enterprises\r\n

\r\n
\r\n
\r\n Migrates enterprises from Common Data to Nominations\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n
\r\n

\r\n Emailing\r\n

\r\n
\r\n
\r\n There are currently {{model.numberOfExternalEmails}} email subscriptions\r\n
\r\n This toggles both Common Data and Nominations\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n\r\n\r\n","import * as _ from \"lodash\";\r\nimport {Component, OnDestroy, OnInit} from '@angular/core';\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {ActivatedRoute, Router} from \"@angular/router\";\r\nimport {CommonDataConfigurationService} from \"@shared/services/common-data/common-data-configuration/common-data-configuration.service\";\r\nimport {forkJoin, Observable} from \"rxjs\";\r\nimport {CommonDataCacheService} from \"@shared/services/common-data/common-data-cache/common-data-cache.service\";\r\nimport {AlertService} from \"app/shared/services/webapp/alert/alert.service\";\r\nimport {BaseComponent} from \"@model/base-component\";\r\nimport {BooleanValuedEnvironmentConfiguration, EnvironmentConfiguration} from \"@shared/services/shared/base-data-configuration.service\";\r\nimport {NominationsConfigurationService} from \"@shared/services/nomination/nomination-data-configuration.service\";\r\nimport {NominationGroupService} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport {concatMap, delay, map, tap} from \"rxjs/operators\";\r\nimport {TestPageService} from \"@shared/services/webapp/test-page/test-page.service\";\r\nimport {EventSubscriptionDto} from \"app/gcts/administration/unsubscribe-email-notifications/unsubscribe-email-notifications.model\";\r\nimport {EmailSubscriptionSearchRequest, EmailSubscriptionService} from \"@shared/services/nomination/email-subscription/email-subscription.service\";\r\nimport {CommonDataEmailSubscriptionService} from \"@shared/services/common-data/common-data-email-subscription/common-data-email-subscription.service\";\r\n\r\nexport class EnableExternalAccess {\r\n valueAsBoolean: boolean;\r\n}\r\n\r\nexport class SupportModel {\r\n configuration: EnableExternalAccess = new EnableExternalAccess();\r\n nominationsConfiguration: EnableExternalAccess = new EnableExternalAccess();\r\n searchResults: EnvironmentConfiguration = new EnvironmentConfiguration();\r\n nominationsSearchResults: EnvironmentConfiguration = new EnvironmentConfiguration();\r\n\r\n processEdiNotifications: BooleanValuedEnvironmentConfiguration = new BooleanValuedEnvironmentConfiguration();\r\n nominationGroupId: number;\r\n numberOfExternalEmails: number = 3;\r\n allowSendingEmails: BooleanValuedEnvironmentConfiguration = new BooleanValuedEnvironmentConfiguration();\r\n isEmailSectionVisible: boolean = true;\r\n\r\n}\r\n@Component({\r\n selector: 'app-support',\r\n templateUrl: './support.component.html',\r\n styleUrls: ['./support.component.css']\r\n})\r\n\r\nexport class SupportComponent extends BaseComponent implements OnInit, OnDestroy {\r\n\r\n model: SupportModel = new SupportModel();\r\n constructor(protected appService: AppService,\r\n private router: Router,\r\n private activatedRoute: ActivatedRoute,\r\n private commonDataConfigurationService: CommonDataConfigurationService,\r\n private nominationsConfigurationService: NominationsConfigurationService,\r\n private commonDataCacheService: CommonDataCacheService,\r\n private alertService: AlertService,\r\n private nominationGroupService: NominationGroupService,\r\n private commonDataEmailSubscriptionService: CommonDataEmailSubscriptionService,\r\n private nominationsEmailSubscriptionService: EmailSubscriptionService,\r\n private testPageService: TestPageService) { super(appService); }\r\n\r\n private isPageReady: boolean = false;\r\n\r\n ngOnInit() {\r\n super.setTitle('Support');\r\n this.appService.clearMessages();\r\n this.model.allowSendingEmails.key = 'Allow Emailing';\r\n if (this.appService.getEnvironment() === 'AWS-Prod') { // Developer Test\r\n this.model.isEmailSectionVisible = false;\r\n }\r\n\r\n const commonDataExternalAccess$ =\r\n this.commonDataConfigurationService.queryExternalAccess('Application', 'ExternalAccessOn').pipe(\r\n tap(result => {\r\n this.model.searchResults = result;\r\n this.model.configuration.valueAsBoolean = this.model.searchResults.value === 'true';\r\n })\r\n );\r\n const nominationsExternalAccess$ =\r\n this.nominationsConfigurationService.queryExternalAccess('Application', 'ExternalAccessOn').pipe(\r\n tap(result => {\r\n this.model.nominationsSearchResults = result;\r\n this.model.nominationsConfiguration.valueAsBoolean = this.model.nominationsSearchResults.value === 'true';\r\n })\r\n );\r\n\r\n const nominationsProcessEdiNotifications$ =\r\n this.getProcessEdiNotificationsConfiguration().pipe(\r\n tap(result => {\r\n this.model.processEdiNotifications = result;\r\n // this.model.processEdiNotifications.valueAsBoolean = this.model.searchResults.value === 'true';\r\n })\r\n );\r\n\r\n const allowedToSendEmails$ =\r\n this.getAllowedSendingEmailsConfiguration().pipe(\r\n tap(result => {\r\n this.model.allowSendingEmails.updateValue(result.booleanValue);\r\n // this.model.processEdiNotifications.valueAsBoolean = this.model.searchResults.value === 'true';\r\n })\r\n );\r\n\r\n const getSubscriptions$ = this.querySubscriptions();\r\n\r\n forkJoin([commonDataExternalAccess$, nominationsExternalAccess$, nominationsProcessEdiNotifications$, allowedToSendEmails$, getSubscriptions$]).pipe(\r\n delay(1000), // let's not set isPageReady for one second. That way we don't get onValueChanged events happening when we load the page!\r\n tap(() => {\r\n this.isPageReady = true;\r\n })\r\n ).subscribe(() => {});\r\n }\r\n\r\n ngOnDestroy(): void {\r\n }\r\n\r\n onValueChanged(e: any): void {\r\n if (!this.isPageReady) { return; }\r\n\r\n this.appService.clearMessages();\r\n this.model.configuration.valueAsBoolean = e;\r\n this.model.searchResults.value = e.toString();\r\n this.commonDataConfigurationService.updateExternalAccess(this.model.searchResults).pipe(\r\n tap(() => {\r\n this.alertService.addSuccessMessage('', 'External Access has been updated.');\r\n }),\r\n concatMap(() => {\r\n return this.updateSuccess();\r\n })\r\n ).subscribe();\r\n }\r\n\r\n onProcessEdiNotificationsValueChanged(e: boolean) {\r\n if (!this.isPageReady) { return; }\r\n\r\n this.appService.clearMessages();\r\n this.model.processEdiNotifications.updateValue(e);\r\n\r\n this.nominationsConfigurationService.updateExternalAccess(this.model.processEdiNotifications).pipe(\r\n concatMap(() => {\r\n return this.getProcessEdiNotificationsConfiguration();\r\n }),\r\n tap(result => {\r\n this.model.processEdiNotifications = result;\r\n this.alertService.addSuccessMessage('', 'Nominations Process Edi Notifications has been updated.');\r\n })\r\n ).subscribe();\r\n }\r\n // MR\r\n allowSendingEmailsValueChanged(e: boolean) {\r\n if (!this.isPageReady) { return; }\r\n\r\n this.appService.clearMessages();\r\n this.model.allowSendingEmails.updateValue(e);\r\n this.model.allowSendingEmails.environment = 'Application';\r\n\r\n this.nominationsConfigurationService.upsertEnvironmentConfig(this.model.allowSendingEmails).pipe(\r\n concatMap(() => {\r\n return this.getAllowedSendingEmailsConfiguration();\r\n }),\r\n tap(result => {\r\n this.model.allowSendingEmails.updateValue(result.booleanValue);\r\n })\r\n ).subscribe();\r\n // MR adding the below I haven't been able to test Invoicing emails so to play it safe I'm going to\r\n // toggle those also but I'm not sure if its needed or not\r\n this.commonDataConfigurationService.upsertEnvironmentConfig(this.model.allowSendingEmails).subscribe();\r\n }\r\n\r\n // TODO: JOE - This component is a bit odd in how it's made, but it does seem to work and it's an internal/administrative type of page only.\r\n onNominationsValueChanged(e: any) {\r\n if (!this.isPageReady) { return; }\r\n\r\n this.appService.clearMessages();\r\n this.model.nominationsConfiguration.valueAsBoolean = e;\r\n this.model.nominationsSearchResults.value = e.toString();\r\n this.nominationsConfigurationService.updateExternalAccess(this.model.nominationsSearchResults).pipe(\r\n tap(() => {\r\n this.alertService.addSuccessMessage('', 'Nominations External Access has been updated.');\r\n }),\r\n concatMap(() => {\r\n return this.updateNominationsSuccess();\r\n })\r\n ).subscribe();\r\n }\r\n\r\n clearServiceCache(): void {\r\n this.appService.clearMessages();\r\n const serviceCall: Observable = this.commonDataCacheService.clearCache();\r\n forkJoin(serviceCall).subscribe(() => {\r\n this.alertService.addSuccessMessage('', 'Service Cache Cleared.');\r\n });\r\n }\r\n\r\n broadcastEnterprise() {\r\n this.appService.clearMessages();\r\n this.testPageService.broadcastEnterprises()\r\n .subscribe(\r\n () => {\r\n this.alertService.addSuccessMessage('Success', 'You have successfully broadcasted Enterprise data.');\r\n });\r\n }\r\n\r\n recalculateNomGroupOpQty(): void {\r\n this.appService.clearMessages();\r\n\r\n this.nominationGroupService.calculateOperationalQuantity(this.model.nominationGroupId).subscribe(() => {\r\n this.alertService.addSuccessMessage('', 'Nomination Group Operational Qty re-calculated.');\r\n });\r\n }\r\n\r\n private updateSuccess(): Observable {\r\n return this.commonDataConfigurationService.queryExternalAccess('Application', 'ExternalAccessOn').pipe(\r\n tap(result => {\r\n this.model.searchResults = result;\r\n }));\r\n }\r\n\r\n private updateNominationsSuccess(): Observable {\r\n return this.nominationsConfigurationService.queryExternalAccess('Application', 'ExternalAccessOn').pipe(\r\n tap(result => {\r\n this.model.nominationsSearchResults = result;\r\n }));\r\n }\r\n\r\n private getProcessEdiNotificationsConfiguration(): Observable {\r\n return this.nominationsConfigurationService.queryExternalAccess('Application', 'ProcessEdiNotifications').pipe(\r\n map(result => {\r\n const other = new BooleanValuedEnvironmentConfiguration();\r\n _.assign(other, result);\r\n other.booleanValue = other.value === 'true';\r\n return other;\r\n }));\r\n }\r\n\r\n private getAllowedSendingEmailsConfiguration(): Observable {\r\n return this.nominationsConfigurationService.queryEnvironmentConfig('Application', 'Allow Emailing').pipe(\r\n map(result => {\r\n const other = new BooleanValuedEnvironmentConfiguration();\r\n _.assign(other, result);\r\n other.booleanValue = other.value === 'true';\r\n return other;\r\n }));\r\n }\r\n\r\n private querySubscriptions(): Observable<[EventSubscriptionDto[], EventSubscriptionDto[]]> {\r\n const querySubscriptionsFromCommonData$ = this.querySubscriptionsFromCommonData();\r\n const querySubscriptionsFromNominations$ = this.querySubscriptionsFromNominations();\r\n\r\n return forkJoin(querySubscriptionsFromCommonData$, querySubscriptionsFromNominations$)\r\n .pipe(\r\n tap(([eventSubscriptionDtosFromCommonData, eventSubscriptionDtosFromNominations]) =>\r\n this.model.numberOfExternalEmails = _.concat(eventSubscriptionDtosFromCommonData, eventSubscriptionDtosFromNominations).length\r\n ));\r\n }\r\n\r\n private querySubscriptionsFromCommonData(): Observable {\r\n const request = new EmailSubscriptionSearchRequest();\r\n return this.commonDataEmailSubscriptionService.querySubscriptions(request);\r\n }\r\n\r\n private querySubscriptionsFromNominations(): Observable {\r\n const request = new EmailSubscriptionSearchRequest();\r\n return this.nominationsEmailSubscriptionService.querySubscriptions(request);\r\n }\r\n\r\n\r\n}\r\n","export class TollCategory {\r\n\r\n public static Compliance: TollCategory = new TollCategory('Compliance', 'Compliance', true);\r\n public static Forecast: TollCategory = new TollCategory('Forecast', 'Forecast', true);\r\n public static Credit: TollCategory = new TollCategory('Credit', 'Credit', false);\r\n public static ICENGX: TollCategory = new TollCategory('ICE-NGX', 'ICE-NGX', true);\r\n\r\n public static Categories: TollCategory[] = [\r\n TollCategory.Compliance,\r\n TollCategory.Forecast,\r\n TollCategory.Credit,\r\n TollCategory.ICENGX\r\n ];\r\n\r\n value: string;\r\n name: string;\r\n isLoadable: boolean;\r\n\r\n constructor(value: string, name: string, isLoadable: boolean) {\r\n this.value = value;\r\n this.name = name;\r\n this.isLoadable = isLoadable;\r\n }\r\n}\r\n","import {Observable} from 'rxjs';\r\nimport {map} from 'rxjs/operators';\r\nimport { Injectable } from '@angular/core';\r\nimport {InvoicingResourceService} from \"@shared/resources/invoicing-resource.service\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {DateTime} from \"@model/date-time\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport * as _ from \"lodash\";\r\nimport {ViewTollsSearchParams} from \"app/gcts/administration/view-tolls/view-tolls.model\";\r\nimport {TollCategory} from \"@model/toll-category\";\r\n\r\nexport class TollsUploadParameters {\r\n constructor(public rawTolls: TollRow[],\r\n public effectiveGasMonth: string,\r\n public pipeline: string,\r\n public tollCategory: string) { }\r\n}\r\n\r\nexport class TollRow {\r\n constructor(public lineNumber: number,\r\n public receiptLocationName: string,\r\n public deliveryLocationName: string,\r\n public service: string,\r\n public effectiveGasMonth: string,\r\n public demand: string,\r\n public commodity: string,\r\n public dailyDemand: string\r\n\r\n ) {}\r\n}\r\n\r\nexport class TollRowError extends TollRow {\r\n errorMessage: string;\r\n}\r\n\r\nexport class TollsUploadResponse {\r\n csvLinesFound = 0;\r\n tollsToProcess = 0;\r\n tollsInserted = 0;\r\n tollsExpired = 0;\r\n tollsReplaced = 0;\r\n tollsDeleted = 0;\r\n tollProcessingMessages = new Array();\r\n tollProcessingErrors = new Array();\r\n tollProcessingWarnings = new Array();\r\n hasTollProcessingErrors = false;\r\n tollsFailed = 0;\r\n\r\n}\r\n\r\ninterface ITollSearchResponse {\r\n id: number;\r\n transportationServiceType: string;\r\n receiptPointId?: number;\r\n deliveryPointId?: number;\r\n tollType: string;\r\n rate?: number;\r\n dailyRate?: number;\r\n startGasDay: string;\r\n endGasDay: string;\r\n effectiveGasMonth: string;\r\n expiryGasMonth: string;\r\n createDateTime: string;\r\n isReplaced: boolean;\r\n isUsed: boolean;\r\n isDeleted: boolean;\r\n}\r\n\r\nexport class Toll {\r\n id: number;\r\n receiptPointId: number;\r\n receiptLocationName: string;\r\n deliveryPointId: number;\r\n deliveryLocationName: string;\r\n tollType: string;\r\n rate: number;\r\n dailyRate: number;\r\n startGasDay: Date;\r\n endGasDay: Date;\r\n effectiveGasMonth: GasMonth; // Is GasMonth on the back end and comes in over the wire as yyyy-Mon\r\n expiryGasMonth: GasMonth;\r\n transportationServiceType: string; // this is the code like FT\r\n isUsed: boolean;\r\n isReplaced: boolean;\r\n isDeleted: boolean;\r\n status: string;\r\n createDateTime: DateTime;\r\n\r\n public static create(response: ITollSearchResponse): Toll {\r\n const toll = new Toll();\r\n toll.id = response.id;\r\n toll.createDateTime = DateTime.parse(response.createDateTime);\r\n toll.dailyRate = response.dailyRate;\r\n toll.rate = response.rate;\r\n toll.deliveryPointId = response.deliveryPointId;\r\n toll.receiptPointId = response.receiptPointId;\r\n toll.tollType = response.tollType;\r\n toll.startGasDay = new Date(response.startGasDay);\r\n toll.endGasDay = new Date(response.endGasDay);\r\n toll.effectiveGasMonth = GasMonth.parse(response.effectiveGasMonth);\r\n toll.expiryGasMonth = GasMonth.parse(response.expiryGasMonth);\r\n toll.transportationServiceType = response.transportationServiceType;\r\n toll.isDeleted = response.isDeleted;\r\n toll.isReplaced = response.isReplaced;\r\n toll.isUsed = response.isUsed;\r\n return toll;\r\n }\r\n\r\n public calculateTollStatus = (openBillingGasMonth: GasMonth, tollCategory: string): void => {\r\n if (this.isDeleted) {\r\n this.status = 'Deleted';\r\n }\r\n else if (this.isReplaced) {\r\n this.status = 'Replaced';\r\n }\r\n else if (this.isExpired(openBillingGasMonth) && tollCategory !== TollCategory.ICENGX.value) {\r\n this.status = 'Expired';\r\n } else {\r\n this.status = '';\r\n }\r\n };\r\n\r\n public isExpired(openGasMonth: GasMonth): boolean {\r\n return !this.isReplaced && this.expiryGasMonth.isLessThan(openGasMonth);\r\n }\r\n}\r\n\r\nexport class TollRequest {\r\n id: number;\r\n tollCategory: string;\r\n tollType: string;\r\n rate: number;\r\n dailyRate: number;\r\n receiptPointName: string;\r\n deliveryPointName: string;\r\n transportationServiceType: string;\r\n effectiveGasMonth: string;\r\n startGasDay: string;\r\n}\r\n\r\nexport class LoadTolls {\r\n tollsInserted: number;\r\n tollsExpired: number;\r\n tollsReplaced: number;\r\n tollsDeleted: number;\r\n}\r\n\r\n@Injectable()\r\nexport class InvoicingTollService {\r\n\r\n constructor(private invoicingResource: InvoicingResourceService) { }\r\n\r\n loadTolls(uploadParameters: TollsUploadParameters): Observable {\r\n return this.invoicingResource.put('/tolls/load', uploadParameters);\r\n }\r\n\r\n validateTolls(uploadParameters: TollsUploadParameters): Observable {\r\n return this.invoicingResource.put('/tolls/validate', uploadParameters);\r\n }\r\n\r\n searchTolls(searchParams: ViewTollsSearchParams, openBillingMonth: GasMonth): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setOptionalString('tollType', searchParams.tollType);\r\n params.set('tollCategory', searchParams.tollCategory);\r\n params.setGasMonth(searchParams.fromBillingMonth, 'gasMonthStart');\r\n params.setGasMonth(searchParams.toBillingMonth, 'gasMonthEnd');\r\n params.setGasDay(searchParams.fromGasDay, 'gasDayStart');\r\n params.setGasDay(searchParams.toGasDay, 'gasDayEnd');\r\n params.setOptionalNumber('receiptLocationId', searchParams.receiptLocationId);\r\n params.setOptionalNumber('deliveryLocationId', searchParams.deliveryLocationId);\r\n params.setOptionalNumber('transportationServiceId', searchParams.billableServiceId);\r\n params.setOptionalBoolean('showRevisions', searchParams.showRevisions);\r\n\r\n return this.invoicingResource.get('/tolls', true, params).pipe(\r\n map(iTolls => {\r\n const tolls = _.map(iTolls, (toll: ITollSearchResponse) => Toll.create(toll));\r\n tolls.forEach(t => t.calculateTollStatus(openBillingMonth, searchParams.tollCategory));\r\n return tolls;\r\n }));\r\n }\r\n\r\n deleteToll(tollRequest: TollRequest): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n if (tollRequest.id) { params.set('id', tollRequest.id.toString()); }\r\n if (tollRequest.tollCategory) { params.set('tollCategory', tollRequest.tollCategory); }\r\n return this.invoicingResource.deleteWithNoResponseBody(`/tolls/${tollRequest.id}`, true, params);\r\n }\r\n\r\n saveOrUpdateToll(tollRequest: TollRequest): Observable {\r\n return this.invoicingResource.post(\"/tolls\", tollRequest);\r\n }\r\n\r\n expireToll(tollRequest: TollRequest): Observable {\r\n return this.invoicingResource.put(`/tolls/${tollRequest.id}/expireToll/`, tollRequest);\r\n }\r\n\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Toll Category: {{model.lastRequest.tollCategory}}\r\n CSV Date File: {{model.lastRequest.filename}}\r\n \r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n Browse...\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.openBillingMonth}}\r\n
\r\n
\r\n \r\n {{model.request.effectiveGasMonth}}\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n
\r\n {{model.lastRequest.tollCategory}}\r\n
\r\n
\r\n \r\n {{model.lastRequest.filename}} \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n {{model.lastRequest.effectiveGasMonth}} \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n
\r\n {{ model.response.csvLinesFound }}\r\n
\r\n
\r\n \r\n {{model.response.tollsToProcess}}\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{ model.response.csvLinesFound - (model.response.tollProcessingMessages.length - model.response.tollsDeleted) }}\r\n
\r\n
\r\n \r\n {{ model.response.tollsInserted}}\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{ model.response.tollProcessingMessages.length - model.response.tollsDeleted }}\r\n
\r\n
\r\n \r\n {{ model.response.tollsExpired}}\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{ model.response.tollsDeleted}}\r\n
\r\n
\r\n \r\n {{ model.response.tollsReplaced}}\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n Number of Error Messages: {{model.response.tollProcessingMessages.length}}\r\n
0\" class=\"pull-right\">\r\n Export CSV\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n\r\n","import {forkJoin, Observable} from 'rxjs';\r\nimport * as _ from 'lodash';\r\nimport {Component, ElementRef, OnInit, ViewChild} from '@angular/core';\r\nimport {BaseComponent} from \"@model/base-component\";\r\nimport {BaseCsvUploadViewModel, CsvUtility} from \"@model/CsvUtility\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {\r\n InvoicingTollService, TollRow, TollsUploadParameters,\r\n TollsUploadResponse\r\n} from \"@shared/services/invoicing/invoicing-toll/invoicing-toll.service\";\r\nimport {AlertService} from \"app/shared/services/webapp/alert/alert.service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {Router} from \"@angular/router\";\r\nimport {\r\n CommonDataBillingMonthService\r\n} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\n\r\nexport class TollCategories {\r\n public static Compliance: TollCategories = new TollCategories('Compliance', 'Compliance');\r\n public static Forecast: TollCategories = new TollCategories('Forecast', 'Forecast');\r\n\r\n public static Categories: TollCategories[] = [\r\n TollCategories.Compliance,\r\n TollCategories.Forecast\r\n ];\r\n constructor(public value: string, public name: string) {\r\n }\r\n}\r\n\r\nexport class TollsUploadRequest {\r\n tollCategory: string;\r\n jobName: string;\r\n effectiveGasMonth: string;\r\n}\r\nexport class TollsUploadLastRequest {\r\n tollCategory: string;\r\n filename: string;\r\n effectiveGasMonth: string;\r\n wasVerify: boolean;\r\n}\r\nexport class TollsUploadViewModel extends BaseCsvUploadViewModel {\r\n public extractedData: Array;\r\n response: TollsUploadResponse;\r\n openBillingMonth: string;\r\n tollCategories: TollCategories [] = [];\r\n request: TollsUploadRequest;\r\n lastRequest: TollsUploadLastRequest;\r\n showFilterSection: boolean = true;\r\n\r\n public toggleFilterSection(): void {\r\n this.showFilterSection = !this.showFilterSection;\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'app-load-tolls',\r\n templateUrl: './load-tolls.component.html',\r\n styleUrls: ['./load-tolls.component.css'],\r\n providers: [CsvUtility]\r\n})\r\nexport class LoadTollsComponent extends BaseComponent implements OnInit {\r\n\r\n model: TollsUploadViewModel;\r\n billingMonth = new BillingMonth();\r\n csvHeaders = [\r\n 'receiptLocationName', 'deliveryLocationName', 'service', 'effectiveGasMonth', 'demand', 'commodity', 'dailyDemand'\r\n ];\r\n pipelineCode: string;\r\n @ViewChild('csvUploader') csvUploader: ElementRef;\r\n\r\n constructor(protected appService: AppService,\r\n private invoicingTollService: InvoicingTollService,\r\n private commonDataBillingMonthService: CommonDataBillingMonthService,\r\n private alertService: AlertService,\r\n private csvUtility: CsvUtility,\r\n private sessionService: SessionService,\r\n private router: Router,\r\n private fileService: FileService) {\r\n super(appService);\r\n this.appService.hideMenu();\r\n }\r\n\r\n ngOnInit() {\r\n super.setTitle('Load Tolls');\r\n this.pipelineCode = this.sessionService.getPipeline().code;\r\n this.initModel();\r\n this.model.request.tollCategory = 'Compliance';\r\n const serviceCall: Observable = this.commonDataBillingMonthService.getOpen();\r\n forkJoin(serviceCall).subscribe(res => {\r\n this.billingMonth = res[0];\r\n this.model.openBillingMonth = this.billingMonth.gasMonth.toString();\r\n });\r\n }\r\n\r\n onCellPrepared(e) {\r\n if (e.rowType === 'data') {\r\n if (e.column.dataField === 'errorMessage') {\r\n if (e.data.errorMessage !== 'Information: Toll was deleted.') {\r\n e.cellElement.style.backgroundColor = \"#f2dede\";\r\n } else if ( e.data.errorMessage === 'Information: Toll was deleted.') {\r\n e.cellElement.style.backgroundColor = \"#ebf9ff\";\r\n }\r\n }\r\n }\r\n }\r\n\r\n exportCsvClicked() {\r\n const csvData = _.map(this.model.response.tollProcessingMessages, x => _.omit(x, ['receiptLocationId', 'deliveryLocationId']));\r\n const filename = 'LoadTolls_' + this.model.lastRequest.effectiveGasMonth + '_errors.csv';\r\n const headers = ['Line Number', 'Receipt Location', 'Delivery Location', 'Service', 'Effective Billing Month', 'Demand', 'Commodity', 'Daily Demand', 'Error Message'];\r\n const columns = ['lineNumber', 'receiptLocationName', 'deliveryLocationName', 'service', 'effectiveGasMonth', 'demand', 'commodity', 'dailyDemand', 'errorMessage'];\r\n this.fileService.downloadCsvFile(filename, csvData, headers, columns);\r\n }\r\n\r\n uploadClicked() {\r\n if (this.model.extractedData !== null) {\r\n this.alertService.clearMessages();\r\n this.model.request.jobName = 'loadTolls';\r\n const parameters = new TollsUploadParameters(this.model.extractedData, this.model.request.effectiveGasMonth, this.pipelineCode, this.model.request.tollCategory);\r\n this.route = this.router.routerState.snapshot.url;\r\n this.invoicingTollService.loadTolls(parameters)\r\n .subscribe(\r\n response => {\r\n this.model.response = response;\r\n this.setUpLastRequest();\r\n this.model.error = '';\r\n if (this.route === this.router.routerState.snapshot.url) {\r\n this.alertService.addSuccessMessage('Upload successful',\r\n (this.model.response.tollProcessingMessages && this.model.response.tollProcessingMessages.length > 0) ?\r\n `${this.model.fileName} uploaded with ${this.model.response.tollProcessingMessages.length} errors.` :\r\n `${this.model.fileName} uploaded.`);\r\n }\r\n this.model.fileName = '';\r\n });\r\n }\r\n }\r\n\r\n verifyClicked() {\r\n if (this.model.extractedData !== null) {\r\n this.alertService.clearMessages();\r\n this.model.request.jobName = 'validateTolls';\r\n const parameters = new TollsUploadParameters(this.model.extractedData, this.model.request.effectiveGasMonth, this.pipelineCode, this.model.request.tollCategory);\r\n this.route = this.router.routerState.snapshot.url;\r\n this.invoicingTollService.validateTolls(parameters)\r\n .subscribe(response => {\r\n this.model.response = response;\r\n this.setUpLastRequest();\r\n this.model.error = '';\r\n if (this.route === this.router.routerState.snapshot.url) {\r\n this.alertService.addSuccessMessage('Verify Successful ', `${this.model.fileName} verified.`);\r\n }\r\n this.model.fileName = '';\r\n });\r\n }\r\n }\r\n\r\n resetClicked() {\r\n this.initModel();\r\n this.alertService.clearMessages();\r\n this.model.request.tollCategory = 'Compliance';\r\n this.model.openBillingMonth = this.billingMonth.gasMonth.toString();\r\n }\r\n\r\n hoverOver() {\r\n return this.model.error;\r\n }\r\n\r\n public getTitle(): string { // To get rid of annoying lint error.\r\n return super.getTitle();\r\n }\r\n\r\n public isValidFile(): boolean {\r\n return this.model.isValidFile();\r\n }\r\n\r\n public fileChosen(e) {\r\n this.doFileChosen(e.target);\r\n }\r\n\r\n private doFileChosen(e) {\r\n if (e.files.length > 0) {\r\n const reader = new FileReader();\r\n reader.onload = (event: any) => this.extractData(e.files[0].name, event.target.result);\r\n reader.readAsText(e.files[0]);\r\n }\r\n }\r\n\r\n protected extractData(fileName: string, data: string) {\r\n this.model.error = '';\r\n this.model.isValid = false;\r\n this.model.fileName = fileName;\r\n this.csvUtility.extractLoadTollData(data, this.model, this.processRows);\r\n }\r\n\r\n private processRows = (result: Array>) => {\r\n this.model.extractedData = _.map(result, (tollRow, index) => {\r\n // bug 264283 - need to format effectiveGasMonth to a parsable GasMonth format for the back-end first\r\n const effectiveGasMonth = GasMonth.parse(tollRow[3]).toDisplayFormat();\r\n return new TollRow(index += 1, tollRow[0], tollRow[1], tollRow[2], effectiveGasMonth, tollRow[4], tollRow[5], tollRow[6]);\r\n });\r\n this.model.request.effectiveGasMonth = GasMonth.parse(this.model.extractedData[0].effectiveGasMonth).toDisplayFormat();\r\n };\r\n\r\n private setUpLastRequest(): void {\r\n this.model.lastRequest = new TollsUploadLastRequest();\r\n this.model.lastRequest.tollCategory = this.model.request.tollCategory;\r\n this.model.lastRequest.filename = this.model.fileName;\r\n this.model.lastRequest.effectiveGasMonth = this.model.request.effectiveGasMonth;\r\n this.model.lastRequest.wasVerify = this.model.request.jobName === 'validateTolls';\r\n }\r\n\r\n private initModel(): void {\r\n this.model = new TollsUploadViewModel();\r\n this.model.fileName = '';\r\n this.model.isValid = false;\r\n this.model.extractedData = null;\r\n this.model.tollCategories = TollCategories.Categories;\r\n this.model.request = new TollsUploadRequest();\r\n this.model.request.jobName = 'loadTolls';\r\n this.model.request.effectiveGasMonth = ' ';\r\n this.model.response = new TollsUploadResponse();\r\n }\r\n\r\n tollCategoryChanged() {\r\n this.doFileChosen(this.csvUploader.nativeElement);\r\n }\r\n}\r\n","\r\nexport class TollType {\r\n\r\n public static Demand: TollType = new TollType('Demand', 'Demand');\r\n public static Commodity: TollType = new TollType('Commodity', 'Commodity');\r\n public static PressureDemand: TollType = new TollType('PressureDemand', 'Pressure Demand');\r\n public static PressureCommodity: TollType = new TollType('PressureCommodity', 'Pressure Commodity');\r\n public static DemandSurcharge: TollType = new TollType('DemandSurcharge', 'Demand Surcharge');\r\n public static CommoditySurcharge: TollType = new TollType('CommoditySurcharge', 'Commodity Surcharge');\r\n public static AbandonmentSurcharge: TollType = new TollType('AbandonmentSurcharge', 'Abandonment Surcharge');\r\n public static DifferentialSurcharge: TollType = new TollType('DifferentialSurcharge', 'Differential Surcharge');\r\n public static CostOfGas: TollType = new TollType('CostOfGas', 'Cost of Gas');\r\n public static ABNITSameDay2A: TollType = new TollType('ABNITSameDay2A', 'ABNITSameDay2A');\r\n public static RateRider: TollType = new TollType('RateRider', 'Rider');\r\n\r\n public static Types: TollType[] = [\r\n TollType.CostOfGas,\r\n TollType.Demand,\r\n TollType.Commodity,\r\n TollType.PressureDemand,\r\n TollType.PressureCommodity,\r\n TollType.DemandSurcharge,\r\n TollType.CommoditySurcharge,\r\n TollType.AbandonmentSurcharge,\r\n TollType.DifferentialSurcharge,\r\n TollType.ABNITSameDay2A, \r\n TollType.RateRider\r\n ];\r\n\r\n value: string;\r\n name: string;\r\n\r\n constructor(value: string, name: string) {\r\n this.value = value;\r\n this.name = name;\r\n }\r\n\r\n}\r\n","import {TollCategory} from \"@model/toll-category\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {TollType} from \"@model/toll-type\";\r\nimport {AccountingLocation} from \"@shared/interfaces/location\";\r\nimport {BillableService} from \"@shared/services/invoicing/invoicing-billable-service/invoicing-billable-service.service\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport {Toll} from \"@shared/services/invoicing/invoicing-toll/invoicing-toll.service\";\r\nimport {BaseViewModel} from \"@model/base-view-model\";\r\nimport * as _ from \"lodash\";\r\nimport {GasDay} from \"@model/gas-day\";\r\n\r\nexport class ViewTollsSearchParams {\r\n tollType: string;\r\n tollCategory: string = TollCategory.Compliance.name;\r\n receiptLocationId: number;\r\n deliveryLocationId: number;\r\n fromBillingMonth: GasMonth;\r\n toBillingMonth: GasMonth;\r\n fromGasDay: GasDay;\r\n toGasDay: GasDay;\r\n billableServiceId: number;\r\n showRevisions: boolean = false;\r\n}\r\n\r\nexport class ViewTollsModel extends BaseViewModel {\r\n tollTypes: TollType[] = _.orderBy(TollType.Types, ['value']);\r\n tollTypesForAdding: TollType[] = [];\r\n locations: AccountingLocation[] = [];\r\n firstBillingDay: GasDay;\r\n currentGasDay: GasDay;\r\n tollCategories: TollCategory[] = _.orderBy(TollCategory.Categories, ['value']);\r\n billableServices: BillableService[] = [];\r\n\r\n openBillingMonth: BillingMonth = new BillingMonth();\r\n\r\n searchParams: ViewTollsSearchParams = new ViewTollsSearchParams();\r\n lastSearchParams: ViewTollsSearchParams = null;\r\n\r\n showFilterSection: boolean = true;\r\n\r\n addButtonDisabled: boolean = true;\r\n\r\n searchResults: Toll[] = null;\r\n searchDateTime: Date;\r\n\r\n isAdding: boolean = false;\r\n isEditing: boolean = false;\r\n isEditingRowValid: boolean = false;\r\n currentKey: any;\r\n\r\n clearSearchResults() {\r\n this.searchResults = null;\r\n this.searchDateTime = null;\r\n this.addButtonDisabled = true;\r\n }\r\n}\r\n\r\nexport class ExpireTollModel {\r\n toll: Toll;\r\n expiryGasMonth: GasMonth;\r\n}\r\n","import {Component, Input, ViewChild} from '@angular/core';\r\nimport {ModalComponent} from \"@shared/components/modal/modal.component\";\r\nimport {ExpireTollModel} from \"app/gcts/administration/view-tolls/view-tolls.model\";\r\nimport {InvoicingTollService} from \"@shared/services/invoicing/invoicing-toll/invoicing-toll.service\";\r\nimport {ViewTollsComponent} from \"app/gcts/administration/view-tolls/view-tolls.component\";\r\nimport {TollCategory} from \"@model/toll-category\";\r\n\r\n@Component({\r\n selector: 'app-delete-toll',\r\n templateUrl: './delete-toll.component.html',\r\n styleUrls: ['./delete-toll.component.css']\r\n})\r\nexport class DeleteTollComponent {\r\n\r\n @ViewChild(ModalComponent) modal: ModalComponent;\r\n @Input() tollCategory: string = '';\r\n expireTollModel: ExpireTollModel;\r\n viewTollsComponent: ViewTollsComponent;\r\n deleteTollMessage: string;\r\n\r\n constructor(private tollsService: InvoicingTollService) { }\r\n\r\n show() {\r\n this.deleteTollMessage = `You are about to delete this ${this.tollCategory === TollCategory.ICENGX.value ? \"price\" : \"toll\"}, are you sure you want to continue?`;\r\n this.modal.show();\r\n }\r\n\r\n deleteToll() {\r\n const request = this.viewTollsComponent.buildTollRequest(this.expireTollModel.toll);\r\n this.tollsService.deleteToll(request).subscribe(tolls => {\r\n this.viewTollsComponent.expireTollModel = new ExpireTollModel();\r\n this.viewTollsComponent.performSearch().subscribe();\r\n this.viewTollsComponent.alertService.addSuccessMessage('Delete Success:', 'The selected toll was deleted successfully.');\r\n });\r\n }\r\n}\r\n","\r\n
\r\n
{{this.deleteTollMessage}}
\r\n
\r\n
\r\n\r\n","import * as _ from 'lodash';\r\nimport * as dx from \"devextreme/core/renderer\";\r\nimport {MinAndMax} from \"@model/min-and-max\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {isEmpty} from \"rxjs/operators\";\r\n\r\nexport class DataGridHooks {\r\n /**\r\n * Hide and Disable Check Box based on condition provided by function parameter.\r\n *\r\n * Reference: https://supportcenter.devexpress.com/ticket/details/t497347/datagrid-how-to-disable-or-hide-selection-check-boxes-for-specific-rows\r\n */\r\n public static hideCheckBox(cellPreparedEvent: any, hideCheckBoxCondition: (cellPreparedEvent: any) => boolean): void {\r\n if (cellPreparedEvent.rowType === 'data' && cellPreparedEvent.column.command === 'select' && hideCheckBoxCondition(cellPreparedEvent)) {\r\n const cellElement = dx(cellPreparedEvent.cellElement);\r\n const selectCheckBox = cellElement.find('.dx-select-checkbox');\r\n selectCheckBox.css(\"display\", \"none\");\r\n }\r\n }\r\n\r\n /**\r\n * Even though the check box is hidden and disabled, the user can still click on the cell to select the row. We need\r\n * to handle the on selection changed to prevent that from happening.\r\n *\r\n * Reference: https://supportcenter.devexpress.com/ticket/details/t497347/datagrid-how-to-disable-or-hide-selection-check-boxes-for-specific-rows\r\n */\r\n public static handleSelectAndDeselectRowWhenDataGridHasHiddenCheckBox(\r\n selectionChangedEvent: any,\r\n dataGrid: DxDataGridComponent,\r\n isRowSelectableCondition: (currentRowIndex: number) => boolean): void {\r\n // If toggled from SelectAll or DeselectAll, then we want to skip the logic below.\r\n // Only the toggle will have multiple rows selected/deselected.\r\n //\r\n // SelectAll will select all rows regardless whether they're hidden or not\r\n // So we need to deselect all hidden rows again after SelectAll is clicked\r\n // But because of the fix above, now if you click SelectAll and then DeselectAll after, DeselectAll will select all the hidden rows\r\n // So we need an additional check to deselect everything if all selected rows are supposed to be hidden\r\n if (selectionChangedEvent.currentSelectedRowKeys.length > 1 || selectionChangedEvent.currentDeselectedRowKeys.length > 1) {\r\n const selectableItems = [];\r\n\r\n selectionChangedEvent.currentSelectedRowKeys.forEach((selectedRowKey) => {\r\n const rowIndex = dataGrid.instance.getRowIndexByKey(selectedRowKey);\r\n\r\n if (isRowSelectableCondition(rowIndex)) {\r\n selectableItems.push(selectedRowKey);\r\n }\r\n\r\n if (!isRowSelectableCondition(rowIndex)) {\r\n dataGrid.instance.deselectRows([selectedRowKey]);\r\n }\r\n });\r\n\r\n if (_.isEmpty(selectableItems)) {dataGrid.instance.deselectAll();}\r\n\r\n return;\r\n }\r\n\r\n const currentSelectedRowKey = selectionChangedEvent.currentSelectedRowKeys[0];\r\n const currentRowIndex = dataGrid.instance.getRowIndexByKey(currentSelectedRowKey);\r\n\r\n if (!isRowSelectableCondition(currentRowIndex)) {\r\n dataGrid.instance.deselectRows([currentSelectedRowKey]);\r\n }\r\n }\r\n\r\n public static setEditorOptionsMinAndMax(e: any, model: TModel, columnName: string, minAndMaxFunction: (row: TRowData, model: TModel) => MinAndMax): void {\r\n if (e.dataField !== columnName) return;\r\n\r\n const minAndMax = minAndMaxFunction(e.row.data, model);\r\n\r\n e.editorOptions.min = minAndMax.min;\r\n e.editorOptions.max = minAndMax.max;\r\n }\r\n\r\n public static setEditorOptionsInputMaxLength(e: any, columnName: string, maxLength: number): void {\r\n if (e.dataField !== columnName) return;\r\n\r\n e.editorOptions.inputAttr.maxLength = maxLength;\r\n }\r\n\r\n /**\r\n * Change the drop down width to be larger than it's cell width. Required when the drop down values\r\n * are larger than the width of the cell.\r\n */\r\n public static setDropDownWidth(e: any, columnName: string, width: number): void {\r\n if (e.parentType === 'dataRow' && e.editorName === 'dxSelectBox' && e.dataField === columnName) {\r\n e.editorOptions.onOpened = arg => {\r\n this.onOpenedSetDropDownWidth(arg, width);\r\n };\r\n }\r\n }\r\n\r\n public static onOpenedSetDropDownWidth(onOpenedEvent: any, width: number): void {\r\n const popupInstance = onOpenedEvent.component._popup;\r\n popupInstance.option('width', width);\r\n popupInstance.off(\"optionChanged\", (args) => this.optionChangedHandler(args, width));\r\n popupInstance.on(\"optionChanged\", (args) => this.optionChangedHandler(args, width));\r\n }\r\n\r\n private static optionChangedHandler(args: any, width: number): void {\r\n // It is odd that this handler is required. I have seen the drop-down re-size on it's own (e.g. try scrolling when the drop down is open).\r\n // Moreover, their support group also has this handler in their post.\r\n // https://www.devexpress.com/Support/Center/Question/Details/T484722/datagrid-how-to-set-the-drop-down-width-in-a-lookup-column\r\n if (args.name === \"width\" && args.value < width) {\r\n args.component.option(\"width\", width);\r\n }\r\n }\r\n\r\n public static onSelectBoxSelectionChangedForColumn(cellPreparedEvent: any, columnName: string, onSelectionChangedFunction: (cellPreparedEvent: any, selectionChangedEvent: any) => void): void {\r\n if (cellPreparedEvent.rowType !== 'data') return;\r\n const selectBox = this.getSelectBox(cellPreparedEvent);\r\n return this.onSelectBoxSelectionChanged(cellPreparedEvent, selectBox, columnName, onSelectionChangedFunction);\r\n }\r\n\r\n private static getSelectBox(cellPreparedEvent: any): any {\r\n const cellElement = dx(cellPreparedEvent.cellElement);\r\n const selectBoxEditorElement = cellElement.find('.dx-selectbox');\r\n return selectBoxEditorElement.data('dxSelectBox');\r\n }\r\n\r\n public static onSelectBoxSelectionChanged(cellPreparedEvent: any, selectBox: any, columnName: string, onSelectionChangedFunction: (cellPreparedEvent: any, selectionChangedEvent: any) => void): void {\r\n if (!this.canHandleSelectBox(cellPreparedEvent, selectBox, columnName)) return;\r\n\r\n selectBox.on('selectionChanged', selectionChangedEvent => onSelectionChangedFunction(cellPreparedEvent, selectionChangedEvent));\r\n }\r\n\r\n public static configureSelectBox(cellPreparedEvent: any, selectBox: any, columnName: string, configureSelectBoxFunction: (cellPreparedEvent: any, selectBox: any) => void): void {\r\n if (!this.canHandleSelectBox(cellPreparedEvent, selectBox, columnName)) return;\r\n\r\n configureSelectBoxFunction(cellPreparedEvent, selectBox);\r\n }\r\n\r\n private static canHandleSelectBox(cellPreparedEvent: any, selectBox: any, columnName: string): boolean {\r\n return !_.isNil(selectBox) && cellPreparedEvent.column.dataField === columnName;\r\n }\r\n\r\n public static hideExpandIcon(cellPreparedEvent: any, hideExpandIconCondition: (rowData: any) => boolean): void {\r\n if (cellPreparedEvent.rowType === \"data\") {\r\n if (cellPreparedEvent.column.command === \"expand\") {\r\n if (hideExpandIconCondition(cellPreparedEvent.data)) {\r\n dx(cellPreparedEvent.cellElement).removeClass(\"dx-datagrid-expand\");\r\n dx(cellPreparedEvent.cellElement).empty();\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","import {IEnrichmentLocation} from \"@shared/services/enrichment/location-enrichment.service\";\r\nimport {IAccountingLocationResponse, ILocationResponse} from \"@shared/services/common-data/location/location.service\";\r\nimport * as _ from \"lodash\";\r\n\r\nexport class Location implements IEnrichmentLocation {\r\n id: number;\r\n name: string;\r\n operatorEnterpriseCid: number;\r\n\r\n public static create(dto: ILocationResponse): Location {\r\n const location = new Location();\r\n\r\n location.id = dto.id;\r\n location.name = dto.name;\r\n location.operatorEnterpriseCid = +dto.operatorId;\r\n\r\n return location;\r\n }\r\n}\r\n\r\nexport class AccountingLocation extends Location {\r\n id: number;\r\n name: string;\r\n gmsId: number;\r\n detailLocations: AccountingLocation[];\r\n provinceCode: string;\r\n physicalFlowDirection: string;\r\n confirmationMethod: string;\r\n isReceipt: boolean;\r\n isDelivery: boolean;\r\n ediConfirmationMethod: string;\r\n allocationMethod: string;\r\n\r\n public static create(dto: IAccountingLocationResponse): AccountingLocation {\r\n const location = new AccountingLocation();\r\n\r\n location.id = dto.id;\r\n location.name = dto.name;\r\n location.gmsId = dto.gmsId;\r\n location.detailLocations = _.map(dto.detailLocations, x => AccountingLocation.create(x));\r\n location.provinceCode = dto.provinceCode;\r\n location.physicalFlowDirection = dto.physicalFlowDirection;\r\n location.confirmationMethod = dto.confirmationMethod;\r\n location.isReceipt = dto.isReceipt;\r\n location.isDelivery = dto.isDelivery;\r\n location.ediConfirmationMethod = dto.ediConfirmationMethod;\r\n location.allocationMethod = dto.allocationMethod;\r\n\r\n return location;\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\nimport {Injectable} from '@angular/core';\r\nimport {Observable} from \"rxjs\";\r\n\r\nimport {AccountingLocation, Location} from \"@shared/interfaces/location\";\r\nimport {CommondataResourceService} from \"@shared/resources/commondata-resource.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {IEnrichmentResource} from \"@shared/services/enrichment/base-enrichment.service\";\r\nimport {IEnrichmentLocation} from \"@shared/services/enrichment/location-enrichment.service\";\r\nimport {map} from \"rxjs/operators\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {AllocationMethod} from \"@model/allocation-method\";\r\n\r\n// A collection of LocationRows for transport to /pipelines/{pipeline}/locations.\r\nexport class LocationsUploadParameters {\r\n constructor(public rows: Array) { }\r\n}\r\n\r\n// This class represents a record that can be posted to the /pipelines/{pipeline}/locations record.\r\nexport class LocationRow {\r\n constructor(public rowNumber: number,\r\n public id: string,\r\n public pipelineSystem: string,\r\n public name: string,\r\n public operatorMnemonic: string,\r\n public locationType: string,\r\n public isExport: string,\r\n public isPressurePoint: string,\r\n public nomGroup: string,\r\n public onStreamGasDay: string,\r\n public spgId: string,\r\n public gmsId: string,\r\n public drnId: string,\r\n public pipeline: string,\r\n public status: string) {\r\n }\r\n}\r\n\r\n// An error returned from /pipelines/{pipeline}/locations .\r\nexport class LocationRowError {\r\n row: LocationRow;\r\n rowNumber: number;\r\n error: string;\r\n}\r\n\r\n// The response from /pipelines/{pipeline}/locations.\r\nexport class LocationsUploadResponse {\r\n recordsRead: string;\r\n recordsAdded: string;\r\n recordsWithError: string;\r\n results: Array;\r\n\r\n constructor() {\r\n this.recordsRead = '0';\r\n this.recordsAdded = '0';\r\n this.recordsWithError = '0';\r\n this.results = new Array();\r\n }\r\n}\r\n\r\n// A collection of LocationParameterRows for transport to /pipelines/{pipeline}/locationParameters.\r\nexport class LocationParametersUploadParameters {\r\n constructor(public rows: Array) { }\r\n}\r\n\r\nexport class LocationRelationshipsUploadParameters {\r\n constructor(public rows: Array) { }\r\n}\r\n\r\n// This class represents a record that can be posted to the /pipelines/{pipeline}/locationParameters record.\r\nexport class LocationParameterRow {\r\n constructor(public lineNumber: number,\r\n public accountLocationName: string,\r\n public effectiveGasDay: string,\r\n public expiryGasDay: string,\r\n public isMeasurementLocation: string,\r\n public allocationMethod: string,\r\n public province: string,\r\n public longHaulStorageReceipt: string,\r\n public physicalFlowDirection: string,\r\n public doesTcplInitiateConfirmation: string,\r\n public confirmationUom: string,\r\n public isPackageIdConfirmed: string,\r\n public isStandingRequestUsed: string,\r\n public isExport: string,\r\n public isPressurePoint: string,\r\n public isNominationsAllowed: string,\r\n public confirmationMethod: string,\r\n public isConfirmationByEdi: string,\r\n public overrideAllowed: string,\r\n public isReceipt: string,\r\n public isDelivery: string,\r\n public isVirtual: string,\r\n public isTBONominationAllowed: string,\r\n public isCvAllowed: string,\r\n public confirmAccountLocationName: string,\r\n public areStsCyclesConfirmed: string,\r\n public reportOnGdsr: string,\r\n public reportOnUhf: string,\r\n public isManualHourlySqForUhf: string,\r\n public isSecondaryHubNomAllowed: string,\r\n public showFlowRateOnConfirmation: string,\r\n public ediConfirmationMethod: string,\r\n public ngtlLocationNumber: string,\r\n public ngtlLocationMnemonic: string) {\r\n }\r\n}\r\n\r\nexport class LocationRelationshipRow {\r\n constructor(public rowNumber: number,\r\n public accountLocationName: string,\r\n public detailLocationName: string,\r\n public effectiveGasDay: string,\r\n public expiryGasDay: string\r\n ) {}\r\n}\r\n\r\n// An error returned from /pipelines/{pipeline}/locationParameters .\r\nexport class LocationParameterRowError extends LocationParameterRow {\r\n error: string;\r\n}\r\n\r\nexport class LocationRelationshipRowError {\r\n error: string;\r\n row: LocationRelationshipRow;\r\n rowNumber: number;\r\n}\r\n// The response from /pipelines/{pipeline}/locationParameters.\r\nexport class LocationParametersUploadResponse {\r\n recordsAdded = 0;\r\n recordsRead = 0;\r\n recordsWithError = 0;\r\n results = new Array();\r\n}\r\n\r\nexport class LocationRelationshipsUploadResponse {\r\n recordsAdded = 0;\r\n recordsRead = 0;\r\n recordsWithError = 0;\r\n results = new Array();\r\n}\r\n\r\nexport class LocationSearchRequest {\r\n gasDay: GasDay;\r\n operatorCid: number;\r\n hasOmvAccount: boolean;\r\n hasStorageBalanceLocation: boolean;\r\n allocationMethod?: AllocationMethod;\r\n\r\n public static forLBALocations(gasDay: GasDay) : LocationSearchRequest {\r\n const locationSearchRequest = new LocationSearchRequest();\r\n\r\n locationSearchRequest.gasDay = gasDay;\r\n locationSearchRequest.allocationMethod = AllocationMethod.LBA;\r\n locationSearchRequest.hasOmvAccount = true;\r\n\r\n return locationSearchRequest;\r\n }\r\n\r\n public static forPDALocations(gasDay: GasDay): LocationSearchRequest {\r\n const locationSearchRequest = new LocationSearchRequest();\r\n\r\n locationSearchRequest.gasDay = gasDay;\r\n locationSearchRequest.allocationMethod = AllocationMethod.PDA;\r\n locationSearchRequest.hasOmvAccount = true;\r\n\r\n return locationSearchRequest;\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport class LocationService implements IEnrichmentResource {\r\n\r\n constructor(private commondataResource: CommondataResourceService) {\r\n }\r\n\r\n // TODO: Pass Parameters (or use ng2-resource-rest)\r\n queryAll(): Observable {\r\n return this.commondataResource.get('/locations');\r\n }\r\n\r\n query(id: number, gasDay: GasDay): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setGasDay(gasDay);\r\n\r\n return this.commondataResource.get('/locations/' + id.toString(), true, params);\r\n }\r\n\r\n queryAccountingLocations(): Observable {\r\n return this.commondataResource.get('/accountinglocations');\r\n }\r\n\r\n queryLocations(locationSearchRequest: LocationSearchRequest): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setGasDay(locationSearchRequest.gasDay);\r\n params.setOptionalNumber('operatorCid', locationSearchRequest.operatorCid);\r\n if(!_.isNil(locationSearchRequest.hasOmvAccount) && locationSearchRequest.hasOmvAccount) {\r\n params.setBoolean('hasOmvAccount', true);\r\n }\r\n if(!_.isNil(locationSearchRequest.hasStorageBalanceLocation) && locationSearchRequest.hasStorageBalanceLocation) {\r\n params.setBoolean('hasStorageBalanceLocation', true);\r\n }\r\n params.setOptionalString('allocationMethod', locationSearchRequest.allocationMethod?.value);\r\n\r\n return this.commondataResource.get('/locations', true, params)\r\n .pipe(\r\n map(dtos => _.map(dtos, dto => CommonDataLocation.create(dto)))\r\n );\r\n }\r\n\r\n queryAccountLocations(): Observable {\r\n return this.commondataResource.get('/accountlocations')\r\n .pipe(\r\n map(dtos => _.map(dtos, dto => AccountingLocation.create(dto)))\r\n );\r\n }\r\n\r\n queryAccountLocationsGivenGasDay(gasDay:GasDay): Observable {\r\n const searchParams = new GCTSHttpParams();\r\n searchParams.setGasDay(gasDay,'gasDay');\r\n return this.commondataResource.get('/accountlocations',true,searchParams)\r\n .pipe(\r\n map(dtos => _.map(dtos, dto => AccountingLocation.create(dto)))\r\n );\r\n }\r\n\r\n queryAccountLocation(locationId: number, gasDay:GasDay): Observable {\r\n const searchParams = new GCTSHttpParams();\r\n searchParams.setGasDay(gasDay,'gasDay');\r\n return this.commondataResource.get(`/accountlocations/${locationId}`,true,searchParams)\r\n .pipe(\r\n map(dto => AccountingLocation.create(dto))\r\n );\r\n }\r\n\r\n publishAccountingLocations(locationIds: number[]): Observable {\r\n const body = {\r\n accountingLocationIds: locationIds\r\n };\r\n return this.commondataResource.postWithNoResponseBody('/publishAccountingLocations', body);\r\n }\r\n\r\n publishLocationParameters(uploadParameters: LocationParametersUploadParameters): Observable {\r\n return this.commondataResource.post('/locationParameters', uploadParameters.rows);\r\n }\r\n\r\n set(uploadParameters: LocationsUploadParameters): Observable {\r\n return this.commondataResource.post('/locations', uploadParameters.rows);\r\n }\r\n\r\n publishLocationRelationships(uploadParameters: LocationRelationshipsUploadParameters): Observable {\r\n return this.commondataResource.post('/locationRelationships', uploadParameters.rows);\r\n }\r\n\r\n enrichmentQueryAll(gasDay: GasDay): Observable {\r\n return this.queryAll();\r\n }\r\n\r\n enrichmentGet(id: number, gasDay: GasDay): Observable {\r\n return this.query(id, gasDay);\r\n }\r\n\r\n queryMeasurementAccountingLocations(gasMonth: GasMonth): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setGasDay(gasMonth.end());\r\n return this.commondataResource.get('/measurementaccountinglocations', true, params).pipe(\r\n map(locations => _.map(locations, x => AccountingLocation.create(x))));\r\n }\r\n\r\n queryMeasurementAccountingLocationsForCustomer(customerId: number, startGasDay: GasDay, endGasDay: GasDay, includeAgentLocations: boolean): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setGasDay(startGasDay);\r\n params.setGasDay(endGasDay, \"endGasDay\");\r\n params.setOptionalNumber(\"operatorCid\", customerId);\r\n params.setBoolean(\"includeAgentLocations\", includeAgentLocations);\r\n\r\n return this.commondataResource.get('/measurementaccountinglocations', true, params).pipe(\r\n map(locations => _.map(locations, x => AccountingLocation.create(x))));\r\n }\r\n}\r\n\r\nexport interface ILocationResponse {\r\n id: number;\r\n name: string;\r\n operatorId: number;\r\n}\r\n\r\nexport interface IAccountingLocationResponse extends ILocationResponse{\r\n physicalFlowDirection: string;\r\n provinceCode: string;\r\n gmsId: number;\r\n detailLocations: IAccountingLocationResponse[];\r\n confirmationMethod: string;\r\n isReceipt: boolean;\r\n isDelivery: boolean;\r\n ediConfirmationMethod: string;\r\n allocationMethod: string;\r\n}\r\n\r\nexport interface ICommonDataLocationResponse extends ILocationResponse {\r\n allocationMethod: string;\r\n\r\n operatorId: number;\r\n operatorMnemonic: string;\r\n operatorName: string;\r\n}\r\n\r\nexport class CommonDataLocation extends Location {\r\n allocationMethod: string;\r\n\r\n operatorId: number;\r\n operatorMnemonic: string;\r\n operatorName: string;\r\n\r\n // noinspection JSUnusedGlobalSymbols\r\n /**\r\n * DO NOT REMOVE even though WebStorm says it's not used...\r\n * It is used by pipes for displaying the Operator Name and Mnemonic (added in noinspection).\r\n */\r\n public get operatorDisplayName(): string {\r\n return `${this.operatorName} (${this.operatorMnemonic})`;\r\n }\r\n\r\n public static create(dto: ICommonDataLocationResponse): CommonDataLocation {\r\n const commonDataLocation = new CommonDataLocation();\r\n\r\n commonDataLocation.id = dto.id;\r\n commonDataLocation.name = dto.name;\r\n\r\n commonDataLocation.allocationMethod = dto.allocationMethod;\r\n\r\n commonDataLocation.operatorId = dto.operatorId;\r\n commonDataLocation.operatorMnemonic = dto.operatorMnemonic;\r\n commonDataLocation.operatorName = dto.operatorName;\r\n\r\n return commonDataLocation;\r\n }\r\n}\r\n","import * as _ from \"lodash\";\r\nimport {OnDestroy, OnInit} from \"@angular/core\";\r\nimport {forkJoin, Observable, of, Subscription} from \"rxjs\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {NominationSystemService} from \"@shared/services/nomination/nomination-system/nomination-system.service\";\r\nimport {concatMap, map, share} from \"rxjs/operators\";\r\nimport {GasDay} from \"@model/gas-day\";\r\n\r\nexport abstract class BaseEnrichmentService implements OnInit, OnDestroy {\r\n protected map: {[id: number]: TEnrichmentCacheDto};\r\n protected observable: Observable;\r\n\r\n private enrichmentResource: IEnrichmentResource; // Please use the getResource method to access\r\n private pipelineChangedSubscription: Subscription;\r\n private that = this;\r\n\r\n protected constructor(protected sessionService: SessionService,\r\n protected nominationSystemService: NominationSystemService) {\r\n\r\n // google says ngOnInit is not called on services.\r\n // https://github.com/angular/angular/issues/23235\r\n this.ngOnInit();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.pipelineChangedSubscription.unsubscribe();\r\n }\r\n\r\n ngOnInit(): void {\r\n // Clear enrichment cache whenever the pipeline is changed\r\n this.pipelineChangedSubscription = this.sessionService.pipelineChangeEvent.subscribe(() => this.clear());\r\n }\r\n\r\n public setEnrichmentResource(enrichmentResource: IEnrichmentResource): void {\r\n this.enrichmentResource = enrichmentResource;\r\n }\r\n\r\n private getEnrichmentResource(): IEnrichmentResource {\r\n if (!this.enrichmentResource) {\r\n throw new Error(\"Enrichment Service requires the Enrichment Service to be set. Please set this in your component's constructor with the 'setResource' method.\");\r\n }\r\n\r\n return this.enrichmentResource;\r\n }\r\n\r\n public enrichArray(array: TObject[], idProperty: string, enrichedPropertyPrefix: string = ''): Observable {\r\n return this.doEnrichArray(array, idProperty, enrichedPropertyPrefix, this.fetchByGasDay);\r\n }\r\n\r\n public enrichArrayAll(array: TObject[], idProperty: string, enrichedPropertyPrefix: string = ''): Observable {\r\n return this.doEnrichArray(array, idProperty, enrichedPropertyPrefix, this.fetchAll);\r\n }\r\n\r\n private doEnrichArray(array: TObject[], idProperty: string, enrichedPropertyPrefix: string = '', doFetch): Observable {\r\n return this.fetch(doFetch).pipe(\r\n concatMap(() => {\r\n if (_.isEmpty(array)) {\r\n return of(array);\r\n }\r\n\r\n const serviceCalls: Observable[] = [];\r\n for (const obj of array) {\r\n serviceCalls.push(this.enrich(obj, idProperty, enrichedPropertyPrefix));\r\n }\r\n\r\n return forkJoin(serviceCalls)\r\n .pipe(\r\n concatMap(() => of(array))\r\n );\r\n })\r\n );\r\n }\r\n\r\n public enrich(object: TObject, idProperty: string, enrichedPropertyPrefix: string = ''): Observable {\r\n return this.doEnrich(object, idProperty, enrichedPropertyPrefix, this.fetchByGasDay);\r\n }\r\n\r\n public enrichAll(object: TObject, idProperty: string, enrichedPropertyPrefix: string = ''): Observable {\r\n return this.doEnrich(object, idProperty, enrichedPropertyPrefix, this.fetchAll);\r\n }\r\n\r\n private doEnrich(object: TObject, idProperty: string, enrichedPropertyPrefix: string = '', doFetch): Observable {\r\n if (!object.hasOwnProperty(idProperty)) {\r\n throw new Error(`Object does not have '${idProperty}'`);\r\n }\r\n\r\n const id = object[idProperty];\r\n if (_.isNil(id) || _.isNaN(id) || id === 0) {\r\n return of(object); // Sometimes Id is null. So, we don't enrich these objects\r\n }\r\n\r\n return this.fetch(doFetch)\r\n .pipe(\r\n concatMap(() => {\r\n return this.getCachedObject(id)\r\n .pipe(\r\n concatMap(cachedObject => {\r\n if (cachedObject) {\r\n this.enrichObject(object, cachedObject, enrichedPropertyPrefix);\r\n } else {\r\n if (console) {\r\n console.log(`Unable to enrich object with id '${id}'.`);\r\n }\r\n }\r\n\r\n return of(object);\r\n })\r\n );\r\n })\r\n );\r\n }\r\n\r\n private fetch(doFetch): Observable {\r\n if (this.map) {\r\n return of(null);\r\n }\r\n\r\n // If observable exists, then a request is in place, return the ongoing request\r\n if (this.observable) {\r\n return this.observable;\r\n }\r\n\r\n // Make a request to get all objects, then store the objects, and make it\r\n // shared, so more than one subscriber can use the data before it is disposed\r\n this.observable = doFetch(this);\r\n\r\n return this.observable;\r\n }\r\n\r\n private fetchByGasDay(that: BaseEnrichmentService) {\r\n return that.nominationSystemService.pipelineGasDay()\r\n .pipe(\r\n concatMap(pipelineGasDay => {\r\n return that.getEnrichmentResource().enrichmentQueryAll(pipelineGasDay.actualGasDay)\r\n .pipe(\r\n map(objects => {\r\n that.map = {};\r\n for (const object of objects) {\r\n that.addMapEntry(object);\r\n }\r\n that.observable = null;\r\n })\r\n );\r\n }),\r\n share()\r\n );\r\n }\r\n\r\n private fetchAll(that: BaseEnrichmentService): Observable {\r\n return that.getEnrichmentResource().enrichmentQueryAll(null)\r\n .pipe(map(objects => {\r\n that.map = {};\r\n for (const object of objects) {\r\n that.addMapEntry(object);\r\n }\r\n that.observable = null;\r\n }));\r\n }\r\n\r\n private getCachedObject(id: number): Observable {\r\n const enrichmentObject = this.map[id];\r\n if (!_.isNil(enrichmentObject)) {\r\n return of(enrichmentObject);\r\n } else {\r\n return this.nominationSystemService.pipelineGasDay()\r\n .pipe(\r\n concatMap(pipelineGasDay => {\r\n return this.getEnrichmentResource().enrichmentGet(id, pipelineGasDay.actualGasDay)\r\n .pipe(\r\n concatMap(object => {\r\n if (!object) {\r\n if (console) {\r\n console.log(`Unable to enrich object with id '${id}'.`);\r\n }\r\n\r\n return of(null);\r\n } else {\r\n const fetchedObject = this.createEnrichmentObject(object);\r\n this.map[id] = fetchedObject;\r\n return of(fetchedObject);\r\n }\r\n })\r\n );\r\n })\r\n );\r\n }\r\n }\r\n\r\n public addMapEntry(object: TEnrichmentType): void {\r\n this.map[object.id] = this.createEnrichmentObject(object);\r\n }\r\n\r\n private clear(): void {\r\n this.map = null;\r\n }\r\n\r\n // Methods to build and enrich objects\r\n abstract createEnrichmentObject(object: TEnrichmentType): TEnrichmentCacheDto;\r\n abstract enrichObject(object: T, cachedEnrichmentObj: TEnrichmentCacheDto, enrichedPropertyPrefix: string): void;\r\n}\r\n\r\nexport interface IEnrichmentResource {\r\n enrichmentQueryAll(gasDay: GasDay): Observable;\r\n enrichmentGet(id: number, gasDay: GasDay): Observable;\r\n}\r\n\r\nexport interface IEnrichmentEntity {\r\n id: number;\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {BaseEnrichmentService, IEnrichmentEntity} from \"@shared/services/enrichment/base-enrichment.service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {NominationSystemService} from \"@shared/services/nomination/nomination-system/nomination-system.service\";\r\n\r\n@Injectable()\r\nexport class LocationEnrichmentService extends BaseEnrichmentService {\r\n constructor(\r\n sessionService: SessionService,\r\n protected nominationSystemService: NominationSystemService) {\r\n super(sessionService, nominationSystemService);\r\n }\r\n\r\n createEnrichmentObject(object: IEnrichmentLocation): EnrichmentLocationDto {\r\n return new EnrichmentLocationDto(object.name);\r\n }\r\n\r\n enrichObject(object: TObject, cachedEnrichmentObject: EnrichmentLocationDto, enrichedPropertyPrefix: string ) {\r\n object[enrichedPropertyPrefix + (enrichedPropertyPrefix ? 'Name' : 'name')] = cachedEnrichmentObject.name;\r\n }\r\n}\r\n\r\nexport class EnrichmentLocationDto {\r\n name: string;\r\n\r\n constructor(name: string) {\r\n this.name = name;\r\n }\r\n}\r\n\r\nexport interface IEnrichmentLocation extends IEnrichmentEntity {\r\n name: string;\r\n}\r\n","import * as _ from \"lodash\";\r\nimport { Injectable } from '@angular/core';\r\nimport {Observable} from \"rxjs\";\r\nimport {InvoicingResourceService} from \"app/shared/resources/invoicing-resource.service\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {map} from \"rxjs/operators\";\r\n\r\nexport class BillableService {\r\n id: number;\r\n service: string;\r\n name: string;\r\n\r\n public static create(dto: IBillableServiceResponse): BillableService {\r\n return new BillableService(dto.id, dto.service, dto.name);\r\n }\r\n\r\n constructor(id: number, service: string, name: string) {\r\n this.id = id;\r\n this.service = service;\r\n this.name = name;\r\n }\r\n}\r\n\r\ninterface IBillableServiceResponse {\r\n id: number;\r\n name: string;\r\n service: string;\r\n}\r\n\r\n@Injectable()\r\nexport class InvoicingBillableServiceService {\r\n\r\n constructor(private invoicingResource: InvoicingResourceService) { }\r\n\r\n get(canHaveTolls: boolean): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setOptionalBoolean('canHaveTolls', canHaveTolls);\r\n\r\n return this.invoicingResource.get('/billableservices', true, params)\r\n .pipe(\r\n map(results => _.map(results, dto => BillableService.create(dto)))\r\n );\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n \r\n\r\n
\r\n\r\n
\r\n -\r\n +\r\n Filters\r\n 0\" style=\"font-weight: normal;\">\r\n :\r\n Category: {{model.lastSearchParams?.tollCategory | displayName: 'value' : 'name' : model.tollCategories}}\r\n Toll Type: {{model.lastSearchParams?.tollType | displayName: 'value' : 'name' : model.tollTypes}}\r\n Receipt: {{model.lastSearchParams?.receiptLocationId | displayName: 'id' : 'name' : model.locations}}\r\n Delivery: {{model.lastSearchParams?.deliveryLocationId | displayName: 'id' : 'name' : model.locations}}\r\n From Month: {{model.lastSearchParams?.fromBillingMonth | gasMonthFormat}}\r\n To Month: {{model.lastSearchParams?.toBillingMonth | gasMonthFormat}}\r\n Service: {{model.lastSearchParams?.billableServiceId | displayName: 'id' : 'service' : model.billableServices}}\r\n Revisions: {{model.lastSearchParams?.showRevisions | booleanAsYesNo}}\r\n \r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.tollCategory | displayName: 'value' : 'name' : model.tollCategories}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.tollType | displayName: 'value' : 'name' : model.tollTypes}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.receiptLocationId | displayName: 'id' : 'name' : model.locations}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.deliveryLocationId | displayName: 'id' : 'name' : model.locations}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.fromBillingMonth | gasMonthFormat}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.toBillingMonth | gasMonthFormat}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.fromGasDay | gasDayFormat}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.toGasDay | gasDayFormat}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.billableServiceId | displayName: 'id' : 'service' : model.billableServices}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.showRevisions | booleanAsYesNo}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n Number of Tolls Found: {{model.searchResults.length}}\r\n\r\n
0\" class=\"pull-right\">\r\n Export CSV\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n
\r\n {{cellInfo.value | gasMonthFormat}}\r\n
\r\n\r\n \r\n \r\n \r\n\r\n
\r\n {{cellInfo.value | dateTimeFormat : false : false}}\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n
\r\n {{cellInfo.value | dateTimeFormat : false : false}}\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
You are about to Expire This Toll, are you sure you want to continue?
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n\r\n
\r\n
\r\n","import {Component, ViewChild} from '@angular/core';\r\nimport {CommonDataGasdayService} from \"@shared/services/common-data/common-data-gasday/common-data-gasday.service\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {ExpireTollModel, ViewTollsModel, ViewTollsSearchParams} from \"app/gcts/administration/view-tolls/view-tolls.model\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {forkJoin, Observable, of} from \"rxjs\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {NominationGroupService} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {concatMap, tap} from \"rxjs/operators\";\r\nimport {LocationService} from \"@shared/services/common-data/location/location.service\";\r\nimport {InvoicingBillableServiceService} from \"@shared/services/invoicing/invoicing-billable-service/invoicing-billable-service.service\";\r\nimport {InvoicingTollService, LoadTolls, Toll, TollRequest} from \"@shared/services/invoicing/invoicing-toll/invoicing-toll.service\";\r\nimport * as _ from \"lodash\";\r\nimport {IDateDisplayFormat} from \"@shared/interfaces/date-display-format\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {TollType} from \"@model/toll-type\";\r\nimport * as dx from \"devextreme/core/renderer\";\r\nimport {TollCategory} from \"@model/toll-category\";\r\nimport {ModalComponent} from \"@shared/components/modal/modal.component\";\r\nimport {DeleteTollComponent} from \"app/gcts/administration/view-tolls/delete-toll/delete-toll.component\";\r\nimport {LocationEnrichmentService} from \"@shared/services/enrichment/location-enrichment.service\";\r\nimport {DataGridHooks} from \"@shared/devexpress/datagrid-hooks\";\r\nimport {GasDay} from \"@model/gas-day\";\r\n\r\n@Component({\r\n selector: 'app-view-tolls',\r\n templateUrl: './view-tolls.component.html',\r\n styleUrls: ['./view-tolls.component.css']\r\n})\r\nexport class ViewTollsComponent extends BaseSearchComponent {\r\n\r\n model: ViewTollsModel = new ViewTollsModel();\r\n dateEditorFormat: IDateDisplayFormat;\r\n gasDayEditorFormat: IDateDisplayFormat;\r\n expireTollModel: ExpireTollModel = new ExpireTollModel();\r\n\r\n @ViewChild(DxDataGridComponent) dataGrid: DxDataGridComponent;\r\n @ViewChild(ModalComponent) expireModal: ModalComponent;\r\n @ViewChild(DeleteTollComponent) deleteModal: DeleteTollComponent;\r\n\r\n constructor(protected appService: AppService,\r\n protected router: Router,\r\n protected activatedRoute: ActivatedRoute,\r\n public alertService: AlertService,\r\n private commonDataGasdayService: CommonDataGasdayService,\r\n protected commonDataBillingMonthService: CommonDataBillingMonthService,\r\n protected nominationGroupService: NominationGroupService,\r\n protected fileService: FileService,\r\n private locationService: LocationService,\r\n private locationEnrichmentService: LocationEnrichmentService,\r\n private invoicingBillableServiceService: InvoicingBillableServiceService,\r\n private tollsService: InvoicingTollService) {\r\n super('View Tolls', appService, activatedRoute, router, alertService);\r\n locationEnrichmentService.setEnrichmentResource(locationService);\r\n this.dateEditorFormat = {\r\n formatter: this.dateEditorFormatter,\r\n parser: this.dateEditorParser\r\n };\r\n this.gasDayEditorFormat = {\r\n formatter: this.gasDayEditorFormatter,\r\n parser: this.gasDayEditorParser\r\n }\r\n }\r\n\r\n private paramValidator(): ParamValidator {\r\n return ParamValidator.Standard();\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return this.paramValidator().isValid(params);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {};\r\n params['tollType'] = this.model.searchParams.tollType;\r\n params['tollCategory'] = this.model.searchParams.tollCategory;\r\n params['transportationServiceId'] = this.model.searchParams.billableServiceId;\r\n\r\n params['receiptLocationId'] = this.model.searchParams.receiptLocationId;\r\n params['deliveryLocationId'] = this.model.searchParams.deliveryLocationId;\r\n params['fromBillingMonth'] = this.model.searchParams.fromBillingMonth;\r\n params['toBillingMonth'] = this.model.searchParams.toBillingMonth;\r\n params['fromGasDay'] = this.model.searchParams.fromGasDay;\r\n params['toGasDay'] = this.model.searchParams.toGasDay;\r\n\r\n\r\n params['showRevisions'] = this.model.searchParams.showRevisions;\r\n return params;\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n const getOpenBillingMonth$ = this.commonDataBillingMonthService.getOpen()\r\n .pipe(tap(openBillingMonth => this.model.openBillingMonth = openBillingMonth));\r\n const locations$ = this.locationService.queryAccountLocations()\r\n .pipe(tap(locations => this.model.locations = locations));\r\n const billableServices$ = this.invoicingBillableServiceService.get(true)\r\n .pipe(tap(billableServices => this.model.billableServices = billableServices));\r\n const locationCache$ = this.locationEnrichmentService.enrichArrayAll([], '');\r\n const oldestBillingMonth$ = this.commonDataBillingMonthService.getOldest()\r\n .pipe(tap(oldestBillingMonth => this.model.firstBillingDay = oldestBillingMonth.firstDayOfMonth));\r\n const currentGasDay$ = this.commonDataGasdayService.getServerTimeData()\r\n .pipe(tap(serverTimeData => this.model.currentGasDay = serverTimeData.gasDay));\r\n return forkJoin([getOpenBillingMonth$, locations$, locationCache$, billableServices$, oldestBillingMonth$, currentGasDay$]);\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n return of(null);\r\n }\r\n\r\n public performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n this.model.searchResults = null;\r\n this.model.addButtonDisabled = false;\r\n this.filterTollTypes();\r\n this.model.isEditing = false;\r\n this.model.isAdding = false;\r\n return this.tollsService.searchTolls(this.model.searchParams, this.model.openBillingMonth.gasMonth).pipe(\r\n concatMap(response => this.locationEnrichmentService.enrichArrayAll(response, 'receiptPointId', 'receiptLocation')),\r\n concatMap(response => this.locationEnrichmentService.enrichArrayAll(response, 'deliveryPointId', 'deliveryLocation')),\r\n tap(results => this.model.searchResults = results)\r\n );\r\n }\r\n\r\n protected resetSortOrder(): void { }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams = new ViewTollsSearchParams();\r\n this.model.searchParams.fromBillingMonth = this.model.openBillingMonth.gasMonth;\r\n this.model.searchParams.toBillingMonth = this.model.openBillingMonth.gasMonth;\r\n this.model.searchParams.fromGasDay = this.model.openBillingMonth.firstDayOfMonth;\r\n this.model.searchParams.toGasDay = this.model.openBillingMonth.lastDayOfMonth;\r\n this.model.clearSearchResults();\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams.fromBillingMonth = typedParams.asGasMonth('fromBillingMonth');\r\n this.model.searchParams.toBillingMonth = typedParams.asGasMonth('toBillingMonth');\r\n this.model.searchParams.fromGasDay = typedParams.asGasDay('fromGasDay');\r\n this.model.searchParams.toGasDay = typedParams.asGasDay('toGasDay');\r\n this.model.searchParams.tollCategory = typedParams.asString('tollCategory');\r\n this.model.searchParams.tollType = typedParams.asNullableString('tollType');\r\n this.model.searchParams.receiptLocationId = typedParams.asNullableNumber('receiptLocationId');\r\n this.model.searchParams.deliveryLocationId = typedParams.asNullableNumber('deliveryLocationId');\r\n this.model.searchParams.billableServiceId = typedParams.asNullableNumber('transportationServiceId');\r\n this.model.searchParams.showRevisions = typedParams.asNullableBoolean('showRevisions');\r\n }\r\n\r\n public isRateValid($event): boolean {\r\n const monthlyRateRequired: string[] = [TollType.AbandonmentSurcharge.name, TollType.Demand.name, TollType.DemandSurcharge.name,\r\n TollType.DifferentialSurcharge.name, TollType.PressureDemand.name];\r\n\r\n const tollType = $event.data.tollType;\r\n if (_.includes(monthlyRateRequired, tollType) ) {\r\n const isEmpty: boolean = _.isNil($event.value) || $event.value.length < 1;\r\n return !isEmpty;\r\n }\r\n return true;\r\n }\r\n\r\n public exportCsvClicked() {\r\n const csvData = [];\r\n // If the tolltype is ABNITSameDay2A then only export the current tolls and not the revisions.\r\n this.model.searchResults\r\n .filter((r: Toll) => (r.tollType === TollType.ABNITSameDay2A.value && !r.isReplaced && !r.isDeleted) || r.tollType !== TollType.ABNITSameDay2A.value)\r\n .forEach((r: Toll) => {\r\n if (this.model.searchParams?.tollCategory == TollCategory.ICENGX.value) {\r\n csvData.push({\r\n tollType: r.tollType,\r\n transportationServiceType: r.transportationServiceType,\r\n monthlyToll: r.rate,\r\n dailyToll: r.dailyRate,\r\n gasDay: GasDay.from(new Date(r.startGasDay.toString())).toString(),\r\n created: r.createDateTime.toDisplayFormat(),\r\n createdSort: r.createDateTime.toDate()\r\n });\r\n } else {\r\n csvData.push({\r\n tollType: r.tollType,\r\n transportationServiceType: r.transportationServiceType,\r\n receiptPoint: r.receiptLocationName,\r\n deliveryPoint: r.deliveryLocationName,\r\n monthlyToll: r.rate,\r\n dailyToll: r.dailyRate,\r\n effectiveGasMonth: r.effectiveGasMonth.toDisplayFormat(),\r\n expiryGasMonth: r.expiryGasMonth.toDisplayFormat(),\r\n created: r.createDateTime.toDisplayFormat(),\r\n createdSort: r.createDateTime.toDate()\r\n });\r\n }\r\n });\r\n\r\n csvData.sort((a, b) => {\r\n const type = a.tollType?.localeCompare(b.tollType);\r\n if (type != 0) return type;\r\n const gasDay = a.tollType === TollType.ABNITSameDay2A.value ? b.startGasDay?.localeCompare(a.gasDay) : a.gasDay?.localeCompare(b.startGasDay);\r\n if (gasDay != 0) return gasDay;\r\n return b.createdSort - a.createdSort;\r\n });\r\n const fileName = `TollData__From_${this.model.searchParams.fromBillingMonth.toDisplayFormat()}_To_${this.model.searchParams.toBillingMonth.toDisplayFormat()}.csv`;\r\n const headers = this.model.searchParams?.tollCategory == TollCategory.ICENGX.value\r\n ? ['Toll Type','30 Day Average Price','Daily Price','Start Gas Day','Create DateTime']\r\n :['Toll Type','Transportation Service Type','Receipt Point','Delivery Point','Monthly Toll','Daily Toll','Effective Gas Month','Expiry Gas Month','Create DateTime'];\r\n const columns = this.model.searchParams?.tollCategory == TollCategory.ICENGX.value\r\n ? ['tollType','monthlyToll','dailyToll','gasDay','created']\r\n : ['tollType','transportationServiceType','receiptPoint','deliveryPoint','monthlyToll','dailyToll','effectiveGasMonth','expiryGasMonth','created'];\r\n this.fileService.downloadCsvFile(fileName, csvData, headers, columns);\r\n }\r\n\r\n public dateEditorFormatter(date: Date): string {\r\n const gasMonth = GasMonth.from(date);\r\n return gasMonth.toDisplayFormat();\r\n };\r\n\r\n public dateEditorParser(value: string): Date {\r\n try {\r\n return GasMonth.parse(value).toDate;\r\n } catch (e) {\r\n return new Date(NaN);\r\n }\r\n };\r\n\r\n public gasDayEditorFormatter(date: Date): string {\r\n const gasDay = GasDay.from(date);\r\n return gasDay.toDisplayFormat();\r\n };\r\n\r\n public gasDayEditorParser(value: string): Date {\r\n try {\r\n return GasDay.parse(value).toDate;\r\n } catch (e) {\r\n return new Date(NaN);\r\n }\r\n };\r\n\r\n public addClicked(): void {\r\n this.dataGrid.instance.clearSorting();\r\n this.alertService.clearMessages();\r\n this.model.isAdding = this.model.addButtonDisabled = true;\r\n this.model.isEditingRowValid = false;\r\n this.dataGrid.instance.addRow();\r\n }\r\n\r\n private filterTollTypes() {\r\n const tollCategory = this.model.lastSearchParams?.tollCategory ?? this.model.searchParams.tollCategory;\r\n if (tollCategory === TollCategory.Credit.value) {\r\n this.model.tollTypes = [TollType.CostOfGas];\r\n this.model.tollTypesForAdding = [TollType.CostOfGas];\r\n }\r\n else if (tollCategory === TollCategory.ICENGX.value) {\r\n this.model.tollTypes = [TollType.ABNITSameDay2A];\r\n this.model.tollTypesForAdding = [TollType.ABNITSameDay2A]\r\n }\r\n else {\r\n this.model.tollTypes = _.orderBy(TollType.Types.filter(t => t != TollType.CostOfGas && t != TollType.ABNITSameDay2A), ['value']);\r\n this.model.tollTypesForAdding = _.orderBy(TollType.Types.filter(t => t != TollType.CostOfGas && t != TollType.ABNITSameDay2A), ['value']);\r\n }\r\n }\r\n\r\n public editClicked(cellInfo: any): void {\r\n this.alertService.clearMessages();\r\n this.model.isEditingRowValid = false;\r\n this.model.isEditing = this.model.addButtonDisabled = true;\r\n cellInfo.data.isEditing = true;\r\n cellInfo.component.editRow(cellInfo.rowIndex);\r\n }\r\n\r\n deleteButtonTitle(cellInfo: any) {\r\n if (cellInfo.data.isUsed) {\r\n return 'Expire Toll';\r\n }\r\n return 'Delete Toll';\r\n }\r\n\r\n public canRemove(cellInfoData: any): boolean {\r\n // If the toll is not an ABNIT toll, then it can be deleted.\r\n if (cellInfoData.tollType !== TollType.ABNITSameDay2A.value)\r\n return true;\r\n\r\n const date = new Date(cellInfoData.startGasDay);\r\n const gasMonth = new GasMonth(date.getFullYear(), date.getMonth() + 1);\r\n // ABNIT toll cannot be removed if it is in a closed billing month.\r\n return gasMonth.isGreaterThanOrEqualTo(this.model.openBillingMonth.gasMonth);\r\n }\r\n\r\n public removeClicked(toll: Toll): void {\r\n this.alertService.clearMessages();\r\n this.expireTollModel.toll = toll;\r\n if (toll.isUsed) {\r\n if (!toll.expiryGasMonth.isEqual(GasMonth.endOfTime)) {\r\n this.alertService.addWarnMessage('Expire Toll:', 'Could not expire the selected toll as it is already expired.');\r\n return;\r\n }\r\n this.expireTollModel.expiryGasMonth = this.model.searchParams.fromBillingMonth;\r\n this.expireModal.show();\r\n } else {\r\n if (toll.isDeleted || toll.isReplaced) {\r\n this.alertService.addWarnMessage('Delete Toll:', 'Could not delete the selected toll as it has already been deleted.');\r\n return;\r\n }\r\n this.deleteModal.viewTollsComponent = this;\r\n this.deleteModal.expireTollModel = this.expireTollModel;\r\n this.deleteModal.show();\r\n }\r\n }\r\n\r\n expireToll() {\r\n const request = this.buildTollRequest(this.expireTollModel.toll);\r\n request.effectiveGasMonth = this.expireTollModel.expiryGasMonth.toString();\r\n this.tollsService.expireToll(request).subscribe(tolls => {\r\n this.expireTollModel = new ExpireTollModel();\r\n this.performSearch().subscribe();\r\n this.alertService.addSuccessMessage('Expire Success:', 'The selected toll was expired successfully.');\r\n });\r\n }\r\n\r\n buildTollRequest(toll: Toll): TollRequest {\r\n const request = new TollRequest();\r\n request.id = toll.id;\r\n request.tollCategory = this.model.searchParams.tollCategory;\r\n request.tollType = toll.tollType;\r\n request.rate = toll.rate;\r\n request.dailyRate = toll.dailyRate;\r\n request.receiptPointName = toll.receiptLocationName;\r\n request.deliveryPointName = toll.deliveryLocationName;\r\n request.transportationServiceType = toll.transportationServiceType;\r\n if (request.tollCategory != TollCategory.ICENGX.value) {\r\n request.effectiveGasMonth = GasMonth.from(new Date(toll.effectiveGasMonth.toString())).toDisplayFormat();\r\n }\r\n else {\r\n request.startGasDay = GasDay.from(new Date(toll.startGasDay.toString())).toString();\r\n }\r\n return request;\r\n }\r\n\r\n public saveClicked(cellInfo: any): void {\r\n this.alertService.clearMessages();\r\n this.dataGrid.instance.saveEditData().then(() => {\r\n const toll = cellInfo.row.data as Toll;\r\n const request = this.buildTollRequest(toll);\r\n this.tollsService.saveOrUpdateToll(request).subscribe(loadedTolls => {\r\n this.clearEditMode(cellInfo);\r\n this.displaySavedAlert(loadedTolls);\r\n this.performSearch().subscribe();\r\n }, () => {\r\n this.model.searchResults.unshift(this.model.searchResults.pop());\r\n this.rowAdded = cellInfo;\r\n this.rowAddError = true;\r\n if (this.model.searchResults.length < 2) {\r\n this.dataGrid.instance.repaint();\r\n }\r\n });\r\n });\r\n }\r\n\r\n rowAdded;\r\n rowAddError: boolean = false;\r\n\r\n onContentReady() {\r\n if (this.rowAddError) {\r\n this.rowAddError = false;\r\n this.rowAdded.component.editRow(0);\r\n }\r\n }\r\n\r\n public cancelClicked(cellInfo: any): void {\r\n this.alertService.clearMessages();\r\n this.clearEditMode(cellInfo);\r\n this.performSearch().subscribe(() => {\r\n });\r\n }\r\n\r\n public onEditorPreparing(event: any) {\r\n DataGridHooks.setDropDownWidth(event, 'tollType', 180);\r\n if (event.parentType !== \"dataRow\") {\r\n return;\r\n }\r\n if (event.dataField === \"effectiveGasMonth\") {\r\n event.editorOptions.min = this.model.openBillingMonth.gasMonth;\r\n event.editorOptions.calendarOptions={ minZoomLevel: 'century', maxZoomLevel: 'year', max: '9999-12' };\r\n }\r\n if (event.dataField === \"startGasDay\") {\r\n event.editorOptions.min = this.model.firstBillingDay.toDate;\r\n }\r\n }\r\n\r\n public onInitNewRow(event: any): void {\r\n event.data.isEditing = true;\r\n if (this.model.lastSearchParams.tollCategory === TollCategory.Credit.name) {\r\n event.data.tollType = 'Cost of Gas';\r\n } else if (this.model.lastSearchParams.tollCategory === TollCategory.ICENGX.name) {\r\n event.data.tollType = TollType.ABNITSameDay2A.name;\r\n event.data.startGasDay = this.model.currentGasDay; //GasDay.from(new Date(), true);\r\n }\r\n }\r\n\r\n public onEditorPrepared(event: any) {\r\n if (event.parentType === 'dataRow') {\r\n let dxEditorInstance = null;\r\n switch (event.dataField) {\r\n case \"tollType\":\r\n case \"transportationServiceType\":\r\n case \"receiptPointId\":\r\n case \"deliveryPointId\":\r\n dxEditorInstance = dx(event.editorElement).dxSelectBox('instance');\r\n break;\r\n case \"rate\":\r\n case \"dailyRate\":\r\n dxEditorInstance = dx(event.editorElement).dxNumberBox('instance');\r\n break;\r\n case \"effectiveGasMonth\":\r\n case \"startGasDay\":\r\n dxEditorInstance = dx(event.editorElement).dxDateBox('instance');\r\n break;\r\n case \"expiryGasMonth\":\r\n case \"status\":\r\n case \"createDateTime\":\r\n break;\r\n }\r\n if (dxEditorInstance) {\r\n dxEditorInstance.option('valueChangeEvent', 'keydown keyup');\r\n dxEditorInstance.on('valueChanged', (vce) => {\r\n event.setValue(vce.value);\r\n event.component.getController('validating').validate().then((result: boolean) => {\r\n this.model.isEditingRowValid = result;\r\n });\r\n });\r\n }\r\n }\r\n }\r\n\r\n public onCategoryChange() {\r\n this.filterTollTypes();\r\n this.model.clearSearchResults();\r\n }\r\n\r\n public tollCategoryICENGX(): boolean {\r\n return this.model.searchParams.tollCategory == TollCategory.ICENGX.name;\r\n }\r\n\r\n private displaySavedAlert(loadedTolls: LoadTolls): void {\r\n let message: string;\r\n if (loadedTolls.tollsInserted !== 0) {\r\n message = `${loadedTolls.tollsInserted} Toll was inserted`;\r\n }\r\n if (loadedTolls.tollsReplaced !== 0) {\r\n message += ` and ${loadedTolls.tollsReplaced} Toll was replaced`;\r\n }\r\n this.alertService.addSuccessMessage(\"Save Success:\", message);\r\n }\r\n\r\n private clearEditMode(rowData: any): void {\r\n rowData.isEditing = false;\r\n this.model.isAdding = false;\r\n this.model.isEditing = false;\r\n this.model.addButtonDisabled = false;\r\n }\r\n\r\n fromBillingMonthChanged() {\r\n if(!_.isNil(this.model.searchParams.fromBillingMonth) && this.model.searchParams.fromBillingMonth.isGreaterThan(this.model.searchParams.toBillingMonth)){\r\n this.model.searchParams.toBillingMonth = this.model.searchParams.fromBillingMonth;\r\n }\r\n }\r\n\r\n fromGasDayChanged(value: any) {\r\n if(!_.isNil(this.model.searchParams.fromGasDay) && value.isGreaterThan(this.model.searchParams.toGasDay)){\r\n this.model.searchParams.toGasDay = value;\r\n }\r\n }\r\n}\r\n","import {BaseSearchComponent} from \"./base-search-component\";\r\nimport {GuardAgainstUnsavedChanges} from \"../services/webapp/unsaved-changes/unsaved-changes.service\";\r\nimport {AppService} from \"../services/webapp/app/app.service\";\r\nimport {ActivatedRoute, Router} from \"@angular/router\";\r\nimport {AlertService} from \"app/shared/services/webapp/alert/alert.service\";\r\nimport {ModalOptions} from \"../services/webapp/modal-options/modal-options\";\r\n\r\nexport abstract class EditableSearchComponent extends BaseSearchComponent implements GuardAgainstUnsavedChanges {\r\n\r\n protected constructor(protected componentTitle: string,\r\n protected appService: AppService,\r\n protected activatedRoute: ActivatedRoute,\r\n protected router: Router,\r\n protected alertService: AlertService) {\r\n super(componentTitle, appService, activatedRoute, router, alertService);\r\n }\r\n\r\n /**\r\n * Public Methods\r\n */\r\n\r\n public searchClicked(): void {\r\n super.searchClicked();\r\n }\r\n\r\n /**\r\n * Abstract Methods\r\n */\r\n\r\n abstract hasUnsavedChanges(): boolean;\r\n abstract navigationCancelled(): void;\r\n abstract getDefaultChangesWillBeLostMessageOptions(): ModalOptions;\r\n}\r\n","import * as _ from \"lodash\";\r\nimport {IGasDay} from \"@model/gas-day-month.interface\";\r\n\r\nexport class GasDaySearchResourceTracker {\r\n\r\n private lastLoadedGasDay: IGasDay = null;\r\n\r\n public markLastLoadedGasDay(value: IGasDay) {\r\n this.lastLoadedGasDay = value;\r\n }\r\n\r\n public reset(): void {\r\n this.lastLoadedGasDay = null;\r\n }\r\n\r\n public previouslyLoadedForSameGasDay(gasDay: IGasDay): boolean {\r\n if (_.isNil(this.lastLoadedGasDay)) return false;\r\n return this.lastLoadedGasDay.isEqual(gasDay);\r\n }\r\n}\r\n","import {GasDay} from \"app/shared/classes/gas-day\";\r\nimport {\r\n NominationLocation\r\n} from \"app/shared/services/nomination/nomination-location/nomination-location.service\";\r\nimport {HourlyFlowMaintenance} from \"@shared/services/nomination/hourly-flow-maintenance/hourly-flow-maintenance.service\";\r\n\r\n\r\nexport class HourlyFlowMaintenanceModel {\r\n gasDay: GasDay;\r\n minGasDay: GasDay;\r\n maxGasDay: GasDay;\r\n searchParams: HourlyFlowMaintenanceSearchParams = new HourlyFlowMaintenanceSearchParams();\r\n lastSearchParams: HourlyFlowMaintenanceSearchParams = null;\r\n\r\n searchResults: HourlyFlowMaintenance[];\r\n locations: NominationLocation[];\r\n\r\n showFilters: boolean = true;\r\n isEditing: boolean;\r\n isEditingRowValid: boolean;\r\n\r\n hours: GasDayHour[] = GasDayHour.All;\r\n}\r\n\r\nexport class GasDayHour {\r\n public static All: GasDayHour[] = [\r\n new GasDayHour('9:00', '09:00', 24),\r\n new GasDayHour('10:00', '10:00', 23),\r\n new GasDayHour('11:00', '11:00', 22),\r\n new GasDayHour('12:00', '12:00', 21),\r\n new GasDayHour('13:00', '13:00', 20),\r\n new GasDayHour('14:00', '14:00', 19),\r\n new GasDayHour('15:00', '15:00', 18),\r\n new GasDayHour('16:00', '16:00', 17),\r\n new GasDayHour('17:00', '17:00', 16),\r\n new GasDayHour('18:00', '18:00', 15),\r\n new GasDayHour('19:00', '19:00', 14),\r\n new GasDayHour('20:00', '20:00', 13),\r\n new GasDayHour('21:00', '21:00', 12),\r\n new GasDayHour('22:00', '22:00', 11),\r\n new GasDayHour('23:00', '23:00', 10),\r\n new GasDayHour('0:00', '00:00', 9),\r\n new GasDayHour('1:00', '01:00', 8),\r\n new GasDayHour('2:00', '02:00', 7),\r\n new GasDayHour('3:00', '03:00', 6),\r\n new GasDayHour('4:00', '04:00', 5),\r\n new GasDayHour('5:00', '05:00', 4),\r\n new GasDayHour('6:00', '06:00', 3),\r\n new GasDayHour('7:00', '07:00', 2),\r\n new GasDayHour('8:00', '08:00', 1),\r\n ];\r\n\r\n id: string;\r\n value: string;\r\n sortValue: number;\r\n\r\n constructor(id: string, value: string, sortValue: number) {\r\n this.id = id;\r\n this.value = value;\r\n this.sortValue = sortValue;\r\n }\r\n}\r\n\r\nexport class HourlyFlowMaintenanceSearchParams {\r\n gasDay: GasDay;\r\n locationId: number;\r\n}\r\n\r\n","\r\nimport {map} from 'rxjs/operators';\r\nimport {Injectable} from \"@angular/core\";\r\nimport {NominationResourceService} from \"app/shared/resources/nominations-resource.service\";\r\nimport {GCTSHttpParams} from \"app/shared/classes/gcts-http-params\";\r\nimport {Observable} from \"rxjs\";\r\nimport {GasDay} from \"app/shared/classes/gas-day\";\r\nimport * as _ from \"lodash\";\r\n\r\nexport class HourlyFlowMaintenance {\r\n createdDateTime: string;\r\n createdBy: string;\r\n effectiveTime: string;\r\n hourlyFlow: number;\r\n isEditing: boolean;\r\n\r\n public static create(hourlyFlowMaintenance: HourlyFlowMaintenance) {\r\n\r\n const transaction = new HourlyFlowMaintenance();\r\n transaction.createdBy = hourlyFlowMaintenance.createdBy;\r\n transaction.createdDateTime = hourlyFlowMaintenance.createdDateTime;\r\n transaction.effectiveTime = hourlyFlowMaintenance.effectiveTime;\r\n transaction.hourlyFlow = hourlyFlowMaintenance.hourlyFlow;\r\n\r\n return transaction;\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport class HourlyFlowMaintenanceService {\r\n\r\n constructor(private nominationsResource: NominationResourceService) {\r\n }\r\n\r\n queryAll(gasDay: GasDay, locationId: number): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n\r\n params.setGasDay(gasDay);\r\n params.setNumber('locationId', locationId);\r\n\r\n return this.nominationsResource.get('/hourlyFlow', true, params).pipe(\r\n map(hourlyFlowDtos => _.map(hourlyFlowDtos, (x: HourlyFlowMaintenance) =>\r\n HourlyFlowMaintenance.create(x))));\r\n }\r\n\r\n save(gasDay: GasDay, locationId: number, effectiveTime: string, hourlyFlow: number): Observable {\r\n const body = {\r\n gasDay: gasDay.toString(),\r\n locationId: locationId,\r\n effectiveTime: effectiveTime,\r\n hourlyFlow: hourlyFlow\r\n };\r\n\r\n return this.nominationsResource.postWithNoResponseBody('/hourlyFlow/save', body);\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n - Filters\r\n + Filters\r\n \r\n :\r\n Gas Day: {{model.lastSearchParams?.gasDay}}\r\n Delivery Area: {{model.lastSearchParams?.locationId | displayName: 'id' : 'name' : model.locations}}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.gasDay | gasDayFormat }}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.locationId | displayName: 'id' : 'name' : model.locations}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n Number of Records: {{model.searchResults.length}}\r\n
\r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n","import {of, forkJoin, Observable} from 'rxjs';\r\n\r\nimport {tap} from 'rxjs/operators';\r\nimport * as dx from \"devextreme/core/renderer\";\r\nimport * as _ from 'lodash';\r\nimport {Component, ViewChild} from \"@angular/core\";\r\nimport {EditableSearchComponent} from \"app/shared/classes/editable-search-component\";\r\nimport {AppService} from \"app/shared/services/webapp/app/app.service\";\r\nimport {YesNoCancelModalService} from \"app/shared/services/webapp/yes-no-cancel-modal/yes-no-cancel-modal.service\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {AlertService} from \"app/shared/services/webapp/alert/alert.service\";\r\nimport {ModalOptions} from \"app/shared/services/webapp/modal-options/modal-options\";\r\nimport {TypedParams} from \"app/shared/classes/typed-params\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {NominationSystemService} from \"app/shared/services/nomination/nomination-system/nomination-system.service\";\r\nimport {NominationLocationEnrichmentService} from \"app/shared/services/nomination/nomination-location-enrichment/nomination-location-enrichment.service\";\r\nimport {\r\n LocationSearchParams, NominationLocation,\r\n NominationLocationService\r\n} from \"app/shared/services/nomination/nomination-location/nomination-location.service\";\r\nimport {ParamValidator} from \"app/shared/classes/validators/param-validator\";\r\nimport {GasDay} from \"app/shared/classes/gas-day\";\r\nimport {GasDaySearchResourceTracker} from \"@model/gas-day-search-resource-tracker\";\r\nimport {HourlyFlowMaintenance, HourlyFlowMaintenanceService} from \"@shared/services/nomination/hourly-flow-maintenance/hourly-flow-maintenance.service\";\r\nimport {GasDayHour, HourlyFlowMaintenanceModel} from \"app/gcts/administration/hourly-flow-maintenance/hourly-flow-maintenance.model\";\r\n\r\n@Component({\r\n selector: 'app-hourly-flow-maintenance',\r\n templateUrl: './hourly-flow-maintenance.component.html',\r\n styleUrls: ['./hourly-flow-maintenance.component.css']\r\n})\r\nexport class HourlyFlowMaintenanceComponent extends EditableSearchComponent {\r\n public model: HourlyFlowMaintenanceModel = new HourlyFlowMaintenanceModel();\r\n private gasDayTracker: GasDaySearchResourceTracker = new GasDaySearchResourceTracker();\r\n\r\n public integerPattern: any = /^[0-9]+$/;\r\n\r\n @ViewChild(DxDataGridComponent) dataGrid: DxDataGridComponent;\r\n\r\n constructor(protected appService: AppService,\r\n protected activatedRoute: ActivatedRoute,\r\n protected router: Router,\r\n protected alertService: AlertService,\r\n protected modalService: YesNoCancelModalService,\r\n protected nominationSystemService: NominationSystemService,\r\n protected nominationLocationService: NominationLocationService,\r\n protected hourlyFlowMaintenanceService: HourlyFlowMaintenanceService,\r\n protected nominationLocationEnrichmentService: NominationLocationEnrichmentService\r\n\r\n ) {\r\n super('Hourly Flow Maintenance', appService, activatedRoute, router, alertService);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {\r\n gasDay: this.model.searchParams.gasDay,\r\n locationId: this.model.searchParams.locationId\r\n };\r\n\r\n return params;\r\n }\r\n\r\n getDefaultChangesWillBeLostMessageOptions(): ModalOptions {\r\n return YesNoCancelModalService.getDefaultYesNoModalOptions();\r\n }\r\n\r\n hasUnsavedChanges(): boolean {\r\n if (!this.dataGrid) return false;\r\n return this.dataGrid.instance.hasEditData();\r\n }\r\n\r\n navigationCancelled(): void {\r\n }\r\n\r\n onGasDayChanged(): void {\r\n // this will be fired even when a null value is returned from the date picker and don't want to reload with a bad date\r\n if (!this.model.searchParams.gasDay) return;\r\n\r\n this.loadSearchResources().subscribe(() => {});\r\n }\r\n\r\n public saveClicked(cellInfo: any): void {\r\n this.saveHourlyFlowMaintenance(cellInfo);\r\n }\r\n\r\n public saveHourlyFlowMaintenance(cellInfo: any): void {\r\n this.appService.clearMessages();\r\n // MR const hourlyFlowRate = cellInfo.data; implicit conversion doesn't seem to be working\r\n // this.hourlyFlowMaintenanceService.save(this.model.lastSearchParams.gasDay, this.model.lastSearchParams.locationId, hourlyFlowRate)\r\n // gonna try passing the raw values\r\n this.hourlyFlowMaintenanceService.save(this.model.lastSearchParams.gasDay, this.model.lastSearchParams.locationId, cellInfo.values[0], cellInfo.values[1])\r\n // .concatMap(res => this.performSearch())\r\n .subscribe(() => {\r\n this.model.isEditing = false;\r\n this.alertService.addSuccessMessage(\"Success\", \"The Hourly Flow rate has been added.\");\r\n cellInfo.component.saveEditData();\r\n this.performSearch().subscribe(() => {});\r\n }, () => {\r\n this.model.isEditing = true;\r\n });\r\n }\r\n\r\n public cancelClicked(): void {\r\n this.tryToCancelEditingData();\r\n }\r\n\r\n public toggleFilterSection() {\r\n this.model.showFilters = !this.model.showFilters;\r\n }\r\n\r\n public isAddButtonDisabled(): boolean {\r\n if (this.hasUnsavedChanges() || _.isNil(this.model.searchResults) || _.isNil(this.model.lastSearchParams.locationId)) {\r\n return true;\r\n }\r\n }\r\n\r\n public addClicked(): void {\r\n if (_.isNil(this.dataGrid) || _.isNil(this.dataGrid.instance)) return;\r\n this.dataGrid.instance.addRow();\r\n this.model.isEditing = true;\r\n }\r\n\r\n public onInitNewRow(e: any): void {\r\n e.data.isEditing = true;\r\n const hourlyFlowRate = e.data;\r\n this.setRowDefaults(hourlyFlowRate);\r\n }\r\n\r\n public onEditorPrepared(e: any) {\r\n if (e.parentType === 'dataRow') {\r\n let dxEditorInstance = null;\r\n switch (e.dataField) {\r\n case \"hourlyFlow\":\r\n dxEditorInstance = dx(e.editorElement).dxNumberBox('instance');\r\n break;\r\n }\r\n\r\n if (dxEditorInstance) {\r\n dxEditorInstance.option('valueChangeEvent', 'keydown keyup');\r\n dxEditorInstance.on('valueChanged', (vce) => {\r\n e.setValue(vce.value);\r\n this.model.isEditingRowValid = e.component.getController('validating').validate();\r\n });\r\n }\r\n }\r\n }\r\n\r\n public onRowInserting = (e: any) => {\r\n if (e.brokenRules.length === 0) {\r\n this.model.isEditingRowValid = true;\r\n }\r\n };\r\n\r\n\r\n public sortValue(e) {\r\n return GasDayHour.All.find(h => h.id === e.effectiveTime).sortValue;\r\n }\r\n\r\n public formatGasDay(obj: any): string {\r\n if (_.isNil(obj.value)) return null;\r\n const gasDay = GasDay.from(obj.value);\r\n return gasDay.toDisplayFormat();\r\n }\r\n\r\n private setRowDefaults(hourlyFlowMaintenance: HourlyFlowMaintenance): void {\r\n hourlyFlowMaintenance.isEditing = true;\r\n hourlyFlowMaintenance.effectiveTime = null;\r\n hourlyFlowMaintenance.createdDateTime = '';\r\n hourlyFlowMaintenance.createdBy = '';\r\n this.model.isEditingRowValid = false;\r\n }\r\n\r\n public onRowValidating(e): void {\r\n if (e.brokenRules.length === 0) {\r\n this.model.isEditingRowValid = true;\r\n }\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n const serviceCalls: Observable[] = [\r\n this.nominationSystemService.pipelineGasDay(), // 0\r\n this.nominationLocationEnrichmentService.fetch()\r\n ];\r\n\r\n return forkJoin(serviceCalls).pipe(tap(response => {\r\n const pipelineGasDay = response[0];\r\n\r\n this.appService.hideMenu();\r\n this.appService.clearMessages();\r\n\r\n const latestGasDay = pipelineGasDay.latestScheduledCycleStatus != null ? pipelineGasDay.latestScheduledCycleStatus.gasDay : pipelineGasDay.openGasDayCycleStatus.gasDay;\r\n this.model.gasDay = latestGasDay.isGreaterThan(pipelineGasDay.earliestSelectableGasDay) ?\r\n latestGasDay : pipelineGasDay.earliestSelectableGasDay;\r\n this.model.minGasDay = pipelineGasDay.earliestSelectableGasDay;\r\n this.model.maxGasDay = latestGasDay;\r\n }));\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n\r\n const gasDay = this.model.searchParams.gasDay ?\r\n this.model.searchParams.gasDay :\r\n this.model.gasDay;\r\n\r\n if (this.gasDayTracker.previouslyLoadedForSameGasDay(gasDay)) {\r\n return of(null);\r\n }\r\n\r\n const serviceCalls: Observable[] = [\r\n this.nominationLocationService.queryLocationNames(new LocationSearchParams(gasDay,false,gasDay,false,false,true)) // 2\r\n // 0\r\n ];\r\n\r\n return forkJoin(serviceCalls).pipe(tap(response => {\r\n this.model.locations = _.orderBy(response[0], x => x.name);\r\n\r\n this.gasDayTracker.markLastLoadedGasDay(this.model.searchParams.gasDay);\r\n }));\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n this.tryToCancelEditingData();\r\n\r\n const serviceCalls: Observable[] = [\r\n this.hourlyFlowMaintenanceService.queryAll(this.model.lastSearchParams.gasDay, this.model.lastSearchParams.locationId)\r\n ];\r\n\r\n return forkJoin(serviceCalls).pipe(tap(response => {\r\n this.model.searchResults = _.sortBy(response[0], x => GasDayHour.All.find(h => h.id === x.effectiveTime).sortValue);\r\n }));\r\n }\r\n\r\n protected resetSortOrder(): void { }\r\n\r\n protected resetCompleted(): void {\r\n this.model.lastSearchParams = null;\r\n this.model.searchResults = null;\r\n this.tryToCancelEditingData();\r\n this.model.searchResults = null;\r\n this.model.isEditing = false;\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return this.paramValidator().isValid(params);\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams.gasDay = this.model.gasDay;\r\n this.model.searchParams.locationId = null;\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams.gasDay = typedParams.asGasDay('gasDay');\r\n this.model.searchParams.locationId = typedParams.asNumber('locationId');\r\n }\r\n\r\n private paramValidator(): ParamValidator {\r\n const queryParams = ParamValidator.Standard();\r\n queryParams.isGasDay('gasDay');\r\n queryParams.isString('locationId');\r\n\r\n return queryParams;\r\n }\r\n\r\n private tryToCancelEditingData(): void {\r\n if (_.isNil(this.dataGrid) || _.isNil(this.dataGrid.instance)) return;\r\n if (!this.model.isEditing) return;\r\n this.dataGrid.instance.cancelEditData();\r\n this.model.isEditing = false;\r\n this.performSearch().subscribe(() => { });\r\n }\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {BaseEnrichmentService, IEnrichmentEntity} from \"@shared/services/enrichment/base-enrichment.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {NominationSystemService} from \"@shared/services/nomination/nomination-system/nomination-system.service\";\r\n\r\n@Injectable()\r\nexport class EnterpriseEnrichmentService extends BaseEnrichmentService {\r\n constructor(\r\n sessionService: SessionService,\r\n protected nominationSystemService: NominationSystemService) {\r\n super(sessionService, nominationSystemService);\r\n }\r\n\r\n createEnrichmentObject(object: IEnrichmentEnterprise): EnrichmentEnterpriseDto {\r\n return new EnrichmentEnterpriseDto(object.shortName, object.mnemonic, object.dunsNumber, object.stateExpiryGasDay, object.sapNumber);\r\n }\r\n\r\n enrichObject(object: TObject, cachedEnrichmentObject: EnrichmentEnterpriseDto, enrichedPropertyPrefix: string ) {\r\n object[enrichedPropertyPrefix + (enrichedPropertyPrefix ? 'Mnemonic' : 'mnemonic')] = cachedEnrichmentObject.mnemonic;\r\n object[enrichedPropertyPrefix + (enrichedPropertyPrefix ? 'ShortName' : 'shortName')] = cachedEnrichmentObject.shortName;\r\n object[enrichedPropertyPrefix + (enrichedPropertyPrefix ? 'DunsNumber' : 'dunsNumber')] = cachedEnrichmentObject.dunsNumber;\r\n object[enrichedPropertyPrefix + (enrichedPropertyPrefix ? 'ArNumber' : 'arNumber')] = cachedEnrichmentObject.sapNumber;\r\n\r\n try {\r\n object[enrichedPropertyPrefix + (enrichedPropertyPrefix ? 'StateExpiryGasDay' : 'stateExpiryGasDay')] = cachedEnrichmentObject.stateExpiryGasDay;\r\n object[enrichedPropertyPrefix + (enrichedPropertyPrefix ? 'DisplayName' : 'displayName')] = `${cachedEnrichmentObject.shortName} (${cachedEnrichmentObject.mnemonic})`;\r\n } catch {\r\n // Do Nothing, not too sure if this is the best way but if the object already has a State Expiry Gas Day / Display Name, this should not cause the page to fail.\r\n }\r\n }\r\n}\r\n\r\nexport class EnrichmentEnterpriseDto {\r\n shortName: string;\r\n mnemonic: string;\r\n dunsNumber: string;\r\n stateExpiryGasDay: GasDay;\r\n sapNumber: string;\r\n\r\n constructor(shortName: string, mnemonic: string, dunsNumber: string, stateExpiryGasDay: GasDay, sapNumber: string) {\r\n this.shortName = shortName;\r\n this.mnemonic = mnemonic;\r\n this.dunsNumber = dunsNumber;\r\n this.stateExpiryGasDay = stateExpiryGasDay;\r\n this.sapNumber = sapNumber;\r\n }\r\n}\r\n\r\nexport interface IEnrichmentEnterprise extends IEnrichmentEntity {\r\n shortName: string;\r\n mnemonic: string;\r\n dunsNumber: string;\r\n stateExpiryGasDay: GasDay; // TODO: Why do we need Expiry Gas Day\r\n sapNumber: string;\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'spaceUppercase'\r\n})\r\nexport class SpaceUppercasePipe implements PipeTransform {\r\n\r\n transform(value: string): string {\r\n return value.replace(/([A-Z])/g, ' $1').trim();\r\n }\r\n}\r\n","\r\n\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n \r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n User Id: {{ model.lastSearchParams?.username ? model.lastSearchParams?.username : 'All' }}\r\n Email: {{ model.lastSearchParams?.email ? model.lastSearchParams?.email : 'All' }}\r\n Event Type: {{ model.lastSearchParams?.eventType ? model.lastSearchParams?.eventType : 'All' }}\r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{ model.lastSearchParams?.username ? model.lastSearchParams?.username : 'All' }}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{ model.lastSearchParams?.email ? model.lastSearchParams?.email : 'All' }}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{ model.lastSearchParams?.eventType ? model.lastSearchParams?.eventType : 'All' }}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n Number of results found: {{model.searchResults.length}}\r\n \r\n Export CSV\r\n \r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n
\r\n {{event.text | spaceUppercase}}\r\n
\r\n\r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n","import * as _ from 'lodash';\r\nimport {Component, ViewChild} from \"@angular/core\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {forkJoin, Observable, of} from \"rxjs\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {EventSubscriptionDto, UnsubscribeEmailNotificationsModel, UnsubscribeEmailNotificationsSearchParams} from \"app/gcts/administration/unsubscribe-email-notifications/unsubscribe-email-notifications.model\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {concatMap, tap} from \"rxjs/operators\";\r\nimport {NominationEnterpriseEnrichmentService} from \"@shared/services/nomination/nomination-enterprise-enrichment/nomination-enterprise-enrichment.service\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {EmailSubscriptionSearchRequest, EmailSubscriptionService, InternalEmailSubscriptionUpdateRequest} from \"@shared/services/nomination/email-subscription/email-subscription.service\";\r\nimport {CommonDataEmailSubscriptionService} from \"@shared/services/common-data/common-data-email-subscription/common-data-email-subscription.service\";\r\nimport {YesNoCancelModalService} from \"@shared/services/webapp/yes-no-cancel-modal/yes-no-cancel-modal.service\";\r\nimport {SelectedModalOption} from \"@shared/services/webapp/modal-options/selected-modal-option\";\r\nimport {YesNoModalOptions} from \"@shared/services/webapp/modal-options/yes-no-modal-options\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\n\r\n@Component({\r\n selector: 'app-unsubscribe-email-notifications',\r\n templateUrl: './unsubscribe-email-notifications.component.html',\r\n styleUrls: ['./unsubscribe-email-notifications.component.css']\r\n})\r\nexport class UnsubscribeEmailNotificationsComponent extends BaseSearchComponent {\r\n static UsernameParam: string = 'username';\r\n static EmailParam: string = 'email';\r\n static SearchAllParam: string = 'searchAll';\r\n static EventTypeParam: string = 'eventType';\r\n\r\n @ViewChild(DxDataGridComponent) eventSubscriptionsDataGrid: DxDataGridComponent;\r\n\r\n public model: UnsubscribeEmailNotificationsModel = new UnsubscribeEmailNotificationsModel();\r\n\r\n constructor(protected appService: AppService,\r\n protected activatedRoute: ActivatedRoute,\r\n protected router: Router,\r\n protected alertService: AlertService,\r\n private enterpriseService: EnterpriseService,\r\n private nominationsEnterpriseEnrichmentService: NominationEnterpriseEnrichmentService,\r\n private nominationsEmailSubscriptionService: EmailSubscriptionService,\r\n private commonDataEmailSubscriptionService: CommonDataEmailSubscriptionService,\r\n private enterpriseEnrichmentService: EnterpriseEnrichmentService,\r\n private fileService: FileService,\r\n private modalService: YesNoCancelModalService) {\r\n super('Unsubscribe Notifications', appService, activatedRoute, router, alertService);\r\n\r\n enterpriseEnrichmentService.setEnrichmentResource(enterpriseService);\r\n }\r\n\r\n /**\r\n * Public Methods\r\n */\r\n\r\n public unsubscribedClicked(): void {\r\n const modalOptions = new YesNoModalOptions('Unsubscribed Warning', 'Selected Emails will be unsubscribed from Event notifications. Would you like to continue?');\r\n this.modalService.show(modalOptions).subscribe((selectedModalOption: SelectedModalOption) => {\r\n if (selectedModalOption === SelectedModalOption.Yes) { this.unsubscribe(); }\r\n });\r\n }\r\n\r\n public exportCsv(): void {\r\n const today = new Date();\r\n const fileName = `UnsubscribeNotification_${today.toDateString()}.csv`;\r\n const columns = ['userId','emailAddress','enterpriseShortName','event'];\r\n const headers = ['User Id','Email','Enterprise','Event'];\r\n const data = this.eventSubscriptionsDataGrid.instance.getVisibleRows().map((r) => r.data);\r\n this.fileService.downloadCsvFile(fileName, data, headers, columns);\r\n }\r\n\r\n public resultsFound(): boolean {\r\n return this.model.searchResults?.length > 0;\r\n }\r\n\r\n private unsubscribe(): void {\r\n // Need to group selected rows by service followed by username and send the unsubscribe with the list of selected event types to unsubscribe\r\n const groupsPerService =\r\n _.chain(this.model.selectedRows)\r\n .groupBy(x => x.subscriptionService)\r\n .map((value, key) => ({\r\n subscriptionService: key,\r\n rows: value\r\n }))\r\n .value();\r\n\r\n const unsubscribe$ = [];\r\n for (const group of groupsPerService) {\r\n const usersPerService =\r\n _.chain(group.rows)\r\n .groupBy(x => x.userId)\r\n .map((value, key) => ({\r\n userId: key,\r\n rows: value\r\n }))\r\n .value();\r\n\r\n for (const user of usersPerService) {\r\n const request = new InternalEmailSubscriptionUpdateRequest({\r\n username: user.userId,\r\n email: 'dummy@email.com',\r\n subscribe: false.toString(),\r\n eventTypes: _.map(user.rows, x => x.event)\r\n });\r\n\r\n if (group.subscriptionService === '1') {\r\n unsubscribe$.push(this.nominationsEmailSubscriptionService.updateSubscriptionInternal(request));\r\n } else {\r\n unsubscribe$.push(this.commonDataEmailSubscriptionService.updateSubscriptionInternal(request));\r\n }\r\n }\r\n }\r\n\r\n forkJoin(unsubscribe$)\r\n .subscribe(() => {\r\n this.searchClicked();\r\n this.alertService.addSuccessMessage(\"Success\", \"Unsubscribe complete.\");\r\n });\r\n }\r\n\r\n /**\r\n * Protected Methods\r\n */\r\n\r\n protected loadInitialResources(): Observable {\r\n return forkJoin([\r\n this.nominationsEmailSubscriptionService.querySubscribedEventTypes(),\r\n this.commonDataEmailSubscriptionService.querySubscribedEventTypes()\r\n ])\r\n .pipe(\r\n tap(response => {\r\n this.model.eventTypes = _.sortBy(response[0].concat(response[1]), (t) => t.name);\r\n }\r\n )\r\n );\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return this.paramValidator().isValid(params);\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams = new UnsubscribeEmailNotificationsSearchParams();\r\n this.model.searchResults = null;\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams = new UnsubscribeEmailNotificationsSearchParams();\r\n this.model.searchParams.username = typedParams.asString(UnsubscribeEmailNotificationsComponent.UsernameParam);\r\n this.model.searchParams.email = typedParams.asString(UnsubscribeEmailNotificationsComponent.EmailParam);\r\n this.model.searchParams.eventType = typedParams.asString(UnsubscribeEmailNotificationsComponent.EventTypeParam);\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n return of({});\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.selectedRows = [];\r\n this.model.lastSearchParams = { ...this.model.searchParams };\r\n\r\n return this.querySubscriptions();\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {};\r\n\r\n // This is required to trigger a search when an username and email are not entered. This does not affect the search params model.\r\n if (!this.model.searchParams.username && !this.model.searchParams.email) {\r\n params[UnsubscribeEmailNotificationsComponent.SearchAllParam] = true;\r\n }\r\n\r\n if (this.model.searchParams.username) {\r\n params[UnsubscribeEmailNotificationsComponent.UsernameParam] = this.model.searchParams.username;\r\n }\r\n\r\n if (this.model.searchParams.email) {\r\n params[UnsubscribeEmailNotificationsComponent.EmailParam] = this.model.searchParams.email;\r\n }\r\n\r\n if (this.model.searchParams.eventType) {\r\n params[UnsubscribeEmailNotificationsComponent.EventTypeParam] = this.model.searchParams.eventType;\r\n }\r\n\r\n return params;\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n if (this.eventSubscriptionsDataGrid) {\r\n this.eventSubscriptionsDataGrid.instance.clearSorting();\r\n this.eventSubscriptionsDataGrid.instance.columnOption('userId', {sortOrder: 'asc', sortIndex: 0});\r\n this.eventSubscriptionsDataGrid.instance.columnOption('event', {sortOrder: 'asc', sortIndex: 1});\r\n }\r\n }\r\n\r\n /**\r\n * Private Methods\r\n */\r\n\r\n private paramValidator(): ParamValidator {\r\n const validator = ParamValidator.Standard();\r\n\r\n validator.isString(UnsubscribeEmailNotificationsComponent.UsernameParam, true);\r\n validator.isString(UnsubscribeEmailNotificationsComponent.EmailParam, true);\r\n\r\n return validator;\r\n }\r\n\r\n private querySubscriptions(): Observable<[EventSubscriptionDto[], EventSubscriptionDto[]]> {\r\n const querySubscriptionsFromCommonData$ = this.querySubscriptionsFromCommonData();\r\n const querySubscriptionsFromNominations$ = this.querySubscriptionsFromNominations();\r\n\r\n return forkJoin(querySubscriptionsFromCommonData$, querySubscriptionsFromNominations$)\r\n .pipe(\r\n tap(([eventSubscriptionDtosFromCommonData, eventSubscriptionDtosFromNominations]) =>\r\n this.model.searchResults = _.concat(eventSubscriptionDtosFromCommonData, eventSubscriptionDtosFromNominations)\r\n .filter(s => _.isNil(this.model.searchParams.eventType) || (this.model.searchParams.eventType === s.event))\r\n ));\r\n }\r\n\r\n private querySubscriptionsFromCommonData(): Observable {\r\n const request = new EmailSubscriptionSearchRequest({\r\n usernameSearchText: this.model.searchParams.username,\r\n emailSearchText: this.model.searchParams.email\r\n });\r\n\r\n return this.commonDataEmailSubscriptionService.querySubscriptions(request)\r\n .pipe(\r\n concatMap(dtos => this.enterpriseEnrichmentService.enrichArray(dtos, 'enterpriseId', 'enterprise'))\r\n );\r\n }\r\n\r\n private querySubscriptionsFromNominations(): Observable {\r\n const request = new EmailSubscriptionSearchRequest({\r\n usernameSearchText: this.model.searchParams.username,\r\n emailSearchText: this.model.searchParams.email\r\n });\r\n\r\n return this.nominationsEmailSubscriptionService.querySubscriptions(request)\r\n .pipe(\r\n concatMap(dtos =>\r\n this.nominationsEnterpriseEnrichmentService.enrichArray(dtos, 'enterpriseId', 'enterprise')));\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\nimport {CustomerEnterprise} from \"@shared/services/contracts/customer/customer.service\";\r\nimport {BaseViewModel} from \"@model/base-view-model\";\r\nimport {AgentRelationship} from \"@shared/services/nomination/agent-relationship/agent-relationship.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\n\r\nexport class AgentRole {\r\n public static InvoiceAgent = new AgentRole('InvoiceAgent', 'Invoice Agent')\r\n public static NominationAgent = new AgentRole('NominationAgent', 'Nomination Agent');\r\n public static OperatorAgent = new AgentRole('OperatorAgent', 'Operator Agent');\r\n\r\n public static AgentRoles: AgentRole[] = [\r\n AgentRole.InvoiceAgent,\r\n AgentRole.NominationAgent,\r\n AgentRole.OperatorAgent,\r\n ];\r\n\r\n value: string;\r\n displayName: string;\r\n\r\n constructor(value: string, displayName: string) {\r\n this.value = value;\r\n this.displayName = displayName;\r\n }\r\n\r\n public static parse(value: string): AgentRole {\r\n return _.find(this.AgentRoles, agentRole => agentRole.value.toLowerCase() === value.toLowerCase() || agentRole.displayName.toLowerCase() === value.toLowerCase());\r\n }\r\n}\r\n\r\nexport class AgentType {\r\n public static Full = new AgentRole('Full', 'Full');\r\n public static Partial = new AgentRole('Partial', 'Partial');\r\n\r\n public static AgentTypes: AgentType[] = [\r\n AgentType.Full,\r\n AgentType.Partial\r\n ];\r\n\r\n value: string;\r\n displayName: string;\r\n\r\n constructor(value: string, displayName: string) {\r\n this.value = value;\r\n this.displayName = displayName;\r\n }\r\n}\r\n\r\nexport class MaintainAgentsSearchParams {\r\n customerId?: number;\r\n agentRole: string = AgentRole.InvoiceAgent.value;\r\n includeExpired: boolean = false;\r\n}\r\n\r\nexport class MaintainAgentsModel extends BaseViewModel {\r\n searchParams: MaintainAgentsSearchParams = new MaintainAgentsSearchParams();\r\n lastSearchParams: MaintainAgentsSearchParams;\r\n customers: CustomerEnterprise[] = [];\r\n nominationAgentCustomers: CustomerEnterprise[] = [];\r\n operatorAgentCustomers: CustomerEnterprise[] = [];\r\n nominationAgents: CustomerEnterprise[] = [];\r\n agentRoles: AgentRole[] = AgentRole.AgentRoles;\r\n gasDay: GasDay;\r\n openBillingMonth: GasMonth;\r\n openBillingMonthStartDay: GasDay;\r\n invoicingBillingMonthProcessIsFinal: boolean;\r\n\r\n searchResults: AgentRelationship[];\r\n\r\n isAdding: boolean = false;\r\n isEditing: boolean = false;\r\n isViewPage: boolean;\r\n userIsInternal: boolean;\r\n\r\n public hasSearchResults(): boolean {\r\n return !!this.searchResults;\r\n }\r\n\r\n public clearSearchResults(): void {\r\n this.isAdding = false;\r\n this.isEditing = false;\r\n this.searchResults = null;\r\n }\r\n}\r\n","\r\nimport {map} from 'rxjs/operators';\r\nimport * as _ from 'lodash';\r\nimport { Injectable } from '@angular/core';\r\nimport {ContractsResourceService} from \"@shared/resources/contracts-resource.service\";\r\nimport {Observable} from \"rxjs\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {Enterprise, IEnterpriseResponse} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\n\r\nexport class CustomerEnterprise {\r\n enterpriseCid: number;\r\n mnemonic: string;\r\n shortName: string;\r\n\r\n public static create(customerEnterpriseDto: any): CustomerEnterprise {\r\n const customerEnterprise = new CustomerEnterprise();\r\n\r\n customerEnterprise.enterpriseCid = customerEnterpriseDto.enterpriseCid;\r\n customerEnterprise.mnemonic = customerEnterpriseDto.mnemonic;\r\n customerEnterprise.shortName = customerEnterpriseDto.shortName;\r\n\r\n return customerEnterprise;\r\n }\r\n\r\n public static createFromEnterprise(enterprise: Enterprise): CustomerEnterprise {\r\n const customerEnterprise = new CustomerEnterprise();\r\n\r\n customerEnterprise.enterpriseCid = enterprise.cid;\r\n customerEnterprise.mnemonic = enterprise.mnemonic;\r\n customerEnterprise.shortName = enterprise.shortName;\r\n\r\n return customerEnterprise;\r\n }\r\n\r\n public get displayName(): string {\r\n return `${this.shortName} (${this.mnemonic})`;\r\n }\r\n}\r\n\r\nexport class CustomerEnterpriseDto {\r\n enterpriseCid: number;\r\n mnemonic: string;\r\n shortName: string;\r\n}\r\n\r\n@Injectable()\r\nexport class CustomerService {\r\n\r\n constructor(private contractsResource: ContractsResourceService) { }\r\n\r\n getAllCustomersWithAgentsAvailable(): Observable {\r\n return this.contractsResource.get('/customers?AgentAvailable=true').pipe(\r\n map(customerEnterpriseDtos => _.map(customerEnterpriseDtos, x => CustomerEnterprise.create(x))));\r\n }\r\n\r\n getAllCustomersWithActiveContracts(): Observable {\r\n return this.contractsResource.get('/customers').pipe(\r\n map(customerEnterpriseDtos => _.map(customerEnterpriseDtos, x => CustomerEnterprise.create(x))));\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\nimport {map} from 'rxjs/operators';\r\nimport {Injectable} from '@angular/core';\r\nimport {Observable} from \"rxjs\";\r\nimport {ContractsResourceService} from \"@shared/resources/contracts-resource.service\";\r\nimport {GasDay} from \"app/shared/classes/gas-day\";\r\nimport {Location} from \"@shared/interfaces/location\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {AgentRole, AgentType} from \"app/gcts/administration/maintain-agents/maintain-agents.model\";\r\n\r\nexport interface IAgentRelationshipDto {\r\n id: number;\r\n agentType: string;\r\n agentRole: string;\r\n agentEnterpriseId: number;\r\n customerEnterpriseId: string;\r\n pipeline: string;\r\n effectiveGasDay: string;\r\n expiryGasDay: string;\r\n modifiedDateTime: string;\r\n modifiedByUserId: string;\r\n isEditable: boolean;\r\n}\r\n\r\nexport class PostAgentRelationshipDto {\r\n id: string;\r\n agentEnterpriseId: string;\r\n agentRole: string;\r\n agentType: string;\r\n effectiveGasDay: string;\r\n expiryGasDay: string;\r\n newRow: string;\r\n rowEdited: string;\r\n locationIds: string[];\r\n\r\n public static create(agentRelationship: AgentRelationship): PostAgentRelationshipDto {\r\n const postAgentRelationshipDto = new PostAgentRelationshipDto();\r\n\r\n // Only set Id, if the domain object contains an id\r\n if (!_.isNil(agentRelationship.id)) {\r\n postAgentRelationshipDto.id = agentRelationship.id.toString();\r\n }\r\n\r\n postAgentRelationshipDto.agentEnterpriseId = agentRelationship.agentEnterpriseId.toString();\r\n postAgentRelationshipDto.agentRole = agentRelationship.agentRole;\r\n postAgentRelationshipDto.agentType = agentRelationship.agentType;\r\n postAgentRelationshipDto.effectiveGasDay = _.isDate(agentRelationship.effectiveGasDay) ? GasDay.from(agentRelationship.effectiveGasDay).toString() : agentRelationship.effectiveGasDay.toString();\r\n postAgentRelationshipDto.expiryGasDay = _.isDate(agentRelationship.expiryGasDay) ? GasDay.from(agentRelationship.expiryGasDay).toString() : agentRelationship.expiryGasDay.toString();\r\n postAgentRelationshipDto.newRow = agentRelationship.newRow.toString();\r\n postAgentRelationshipDto.rowEdited = agentRelationship.rowEdited.toString();\r\n postAgentRelationshipDto.locationIds = agentRelationship.locationIds;\r\n\r\n return postAgentRelationshipDto;\r\n }\r\n}\r\n\r\nexport class AgentRelationship {\r\n id: number;\r\n customerEnterpriseId: string; // TODO: Number\r\n agentEnterpriseId: number;\r\n agentRole: string; // TODO: Is this a Enum/Class?\r\n agentType: string; // TODO: Is this a Enum/Class?\r\n pipeline: string; // TODO: pipelineCode\r\n effectiveGasDay: string;\r\n expiryGasDay: string;\r\n modifiedDateTime: string;\r\n modifiedByUserId: string;\r\n newRow: boolean = false;\r\n rowEdited: boolean = false;\r\n locationIds: any[]; // TODO: Number\r\n\r\n isEditing: boolean;\r\n isEditable: boolean;\r\n\r\n public agentEnterpriseDisplayName: string;\r\n\r\n\r\n public static create(dto: IAgentRelationshipDto): AgentRelationship {\r\n const agentRelationship = new AgentRelationship();\r\n\r\n agentRelationship.id = dto.id;\r\n agentRelationship.agentType = dto.agentType;\r\n agentRelationship.agentRole = dto.agentRole;\r\n agentRelationship.agentEnterpriseId = dto.agentEnterpriseId;\r\n agentRelationship.customerEnterpriseId = dto.customerEnterpriseId;\r\n agentRelationship.pipeline = dto.pipeline;\r\n agentRelationship.effectiveGasDay = dto.effectiveGasDay;\r\n agentRelationship.expiryGasDay = dto.expiryGasDay;\r\n agentRelationship.modifiedDateTime = dto.modifiedDateTime;\r\n agentRelationship.modifiedByUserId = dto.modifiedByUserId;\r\n agentRelationship.isEditable = dto.isEditable;\r\n\r\n return agentRelationship;\r\n }\r\n\r\n constructor() {\r\n this.newRow = false;\r\n this.locationIds = new Array();\r\n }\r\n}\r\n\r\nexport class AgentRelationshipResponse {\r\n success: boolean;\r\n errors: string[];\r\n messages: string[];\r\n}\r\n\r\nexport class AgentRelationshipSaveRequestDto {\r\n customerId: number;\r\n\r\n agentRelationshipRows: PostAgentRelationshipDto[];\r\n}\r\n\r\nexport class AgentRelationshipCustomerSearchRequest {\r\n customerId: string;\r\n agentRole: string;\r\n agentType: string;\r\n operatorAgentEnterpriseId: string;\r\n effectiveGasDay: string;\r\n expiryGasDay: string;\r\n}\r\n\r\nexport class AgentLocationsSearchRequest {\r\n customerId: string;\r\n agentEnterpriseId: string;\r\n agentRelationshipId: string;\r\n effectiveGasDay: string;\r\n expiryGasDay: string;\r\n}\r\n\r\nexport class AgentRelationshipDeleteRequest {\r\n agentRelationshipId: string;\r\n}\r\n\r\nexport class MaintainAgentSearchRequest {\r\n customerId: string;\r\n agentRole: string;\r\n includeExpired: boolean;\r\n agentType: string;\r\n effectiveGasDay: GasDay;\r\n\r\n includeAgentFor: boolean;\r\n}\r\n\r\nexport class PartialInvoiceGroupRelationship {\r\n invoiceGroupId: number;\r\n accountId: number;\r\n serviceType: string;\r\n customerEnterpriseId: number;\r\n agentEnterpriseId: number;\r\n\r\n public static create(dto: any): PartialInvoiceGroupRelationship {\r\n const partialInvoiceGroupRelationship = new PartialInvoiceGroupRelationship();\r\n\r\n partialInvoiceGroupRelationship.invoiceGroupId = dto.invoiceGroupId;\r\n partialInvoiceGroupRelationship.accountId = +dto.accountId;\r\n partialInvoiceGroupRelationship.serviceType = dto.serviceType;\r\n partialInvoiceGroupRelationship.customerEnterpriseId = +dto.customerEnterpriseId;\r\n partialInvoiceGroupRelationship.agentEnterpriseId = +dto.agentEnterpriseId;\r\n\r\n return partialInvoiceGroupRelationship;\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport class AgentRelationshipService {\r\n constructor(private contractService: ContractsResourceService) { }\r\n\r\n public saveInvoiceAgentRelationship(customerEnterpriseId: number, agentEnterpriseId: number, effectiveGasDay: GasDay, expiryGasDay: GasDay, agentRole: AgentRole, agentType: AgentType, invoiceGroupIds: number[]): Observable {\r\n let agentRelationships = _.map(invoiceGroupIds, invoiceGroupId => ({\r\n agentEnterpriseId: agentEnterpriseId,\r\n agentRole: agentRole.value,\r\n agentType: agentType.value,\r\n effectiveGasDay: effectiveGasDay.toString(),\r\n expiryGasDay: expiryGasDay.toString(),\r\n invoiceGroupId: invoiceGroupId\r\n }));\r\n\r\n if (agentRelationships.length === 0) {\r\n agentRelationships = [{\r\n agentEnterpriseId: agentEnterpriseId,\r\n agentRole: agentRole.value,\r\n agentType: agentType.value,\r\n effectiveGasDay: effectiveGasDay.toString(),\r\n expiryGasDay: expiryGasDay.toString(),\r\n invoiceGroupId: 0}];\r\n }\r\n\r\n const body = {\r\n customerId: customerEnterpriseId,\r\n agentRelationshipRows: agentRelationships\r\n };\r\n\r\n return this.contractService.post('/agentrelationships', body, true)\r\n .pipe(\r\n map(() => {})\r\n );\r\n }\r\n\r\n public saveOperatorAgentRelationship(customerEnterpriseId: number, agentEnterpriseId: number, effectiveGasDay: GasDay, expiryGasDay: GasDay, agentRole: AgentRole, agentType: AgentType, locationIds: number[]) {\r\n const agentRelationships = [\r\n {\r\n agentEnterpriseId: agentEnterpriseId,\r\n agentRole: agentRole.value,\r\n agentType: agentType.value,\r\n effectiveGasDay: effectiveGasDay.toString(),\r\n expiryGasDay: expiryGasDay.toString(),\r\n locationIds: locationIds\r\n }\r\n ];\r\n\r\n const body = {\r\n customerId: customerEnterpriseId,\r\n agentRelationshipRows: agentRelationships\r\n };\r\n\r\n return this.contractService.post('/agentrelationships', body, true)\r\n .pipe(\r\n map(() => {})\r\n );\r\n }\r\n\r\n public queryCustomerOperatorLocations(customerEnterpriseId: number, effectiveGasDay: GasDay, expiryGasDay: GasDay): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n\r\n params.setNumber('customerId', customerEnterpriseId);\r\n params.setGasDay(effectiveGasDay, 'effectiveGasDay');\r\n params.setGasDay(expiryGasDay, 'expiryGasDay');\r\n\r\n return this.contractService.get('/agentrelationships/locations', true, params);\r\n }\r\n\r\n /**\r\n * Old Stuff: can these be removed once the old agent maintenance page gets removed>?\r\n */\r\n\r\n deleteAgentRelationship(agentRelationshipId: number): Observable {\r\n return this.contractService.deleteTyped('/agentrelationships/' + agentRelationshipId.toString(), true);\r\n }\r\n\r\n postAgentRelationships(customerId: number, agentRelationships: AgentRelationship[]): Observable {\r\n const agentRelationshipSaveRequest = new AgentRelationshipSaveRequestDto();\r\n agentRelationshipSaveRequest.customerId = customerId;\r\n agentRelationshipSaveRequest.agentRelationshipRows = _.map(agentRelationships, agentRelationship => PostAgentRelationshipDto.create(agentRelationship));\r\n\r\n return this.contractService.post('/agentrelationships', agentRelationshipSaveRequest, true);\r\n }\r\n\r\n queryAgentOperatorLocations(searchParams): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n\r\n params.set('customerId', searchParams.customerId);\r\n params.set('effectiveGasDay', searchParams.effectiveGasDay);\r\n params.set('expiryGasDay', searchParams.expiryGasDay);\r\n if (!_.isNil(searchParams.agentRelationshipId)) { params.set('agentRelationshipId', searchParams.agentRelationshipId); }\r\n\r\n return this.contractService.get('/agentrelationships/locations', true, params);\r\n }\r\n\r\n getMaintainAgentRelationships(searchParams: MaintainAgentSearchRequest): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n\r\n if ( !_.isNil(searchParams.customerId)) { params.set('customerId', searchParams.customerId); }\r\n params.set('agentRole', searchParams.agentRole);\r\n params.setBoolean('includeExpired', searchParams.includeExpired);\r\n params.setBoolean('includeAgentFor', searchParams.includeAgentFor);\r\n if (!_.isNil(searchParams.agentType)) {params.set('agentType', searchParams.agentType); }\r\n if (!_.isNil(searchParams.effectiveGasDay)) {params.set('effectiveGasDay', searchParams.effectiveGasDay.toString()); }\r\n\r\n return this.contractService.get('/agentrelationships', true, params).pipe(\r\n map(dtos => _.map(dtos, dto => AgentRelationship.create(dto))));\r\n }\r\n\r\n getPartialInvoiceAgentRelationships(customerId: number, effectiveGasDay: GasDay, expiryGasDay: GasDay, agentEnterpriseId?: number): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setNumber('customerId', customerId);\r\n params.setGasDay(effectiveGasDay, 'effectiveGasDay');\r\n params.setGasDay(expiryGasDay, 'expiryGasDay');\r\n\r\n params.setOptionalNumber('agentEnterpriseId', agentEnterpriseId);\r\n\r\n return this.contractService.get('/agentrelationships/partialinvoice', true, params).pipe(\r\n map(dtos => _.map(dtos, dto => PartialInvoiceGroupRelationship.create(dto))));\r\n }\r\n}\r\n","import { ViewChild, Directive } from \"@angular/core\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {AgentRole, MaintainAgentsModel, MaintainAgentsSearchParams} from \"app/gcts/administration/maintain-agents/maintain-agents.model\";\r\nimport * as dx from \"devextreme/core/renderer\";\r\nimport * as _ from \"lodash\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {CustomerEnterprise, CustomerService} from \"@shared/services/contracts/customer/customer.service\";\r\nimport {Enterprise, EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {AgentLocationsSearchRequest, AgentRelationship, AgentRelationshipService, MaintainAgentSearchRequest, PartialInvoiceGroupRelationship} from \"@shared/services/nomination/agent-relationship/agent-relationship.service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {YesNoCancelModalService} from \"@shared/services/webapp/yes-no-cancel-modal/yes-no-cancel-modal.service\";\r\nimport {NominationSystemService} from \"@shared/services/nomination/nomination-system/nomination-system.service\";\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {UriService} from \"@shared/services/webapp/uri/uri.service\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {DateTime} from \"@model/date-time\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {forkJoin, Observable} from \"rxjs\";\r\nimport {concatMap, tap} from \"rxjs/operators\";\r\nimport {NominationPipelineGasDay} from \"@model/nomination-pipeline-gas-day\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {PageableList} from \"@model/pageable-list\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {UserService} from \"@shared/services/webapp/user/user-service\";\r\nimport {Location} from \"@shared/interfaces/location\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {LocationEnrichmentService} from \"@shared/services/enrichment/location-enrichment.service\";\r\nimport {LocationService} from \"@shared/services/common-data/location/location.service\";\r\nimport {NomGroupEnrichmentService} from \"@shared/services/enrichment/nomgroup-enrichment.service\";\r\nimport {NominationGroupService} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport {InvoiceBillingProcess, InvoicingInvoiceBillingProcessService} from \"@shared/services/invoicing/invoicing-invoice-billing-process/invoicing-invoice-billing-process.service\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\n\r\n\r\n@Directive()\r\nexport abstract class BaseAgentsComponent extends BaseSearchComponent {\r\n model: MaintainAgentsModel = new MaintainAgentsModel();\r\n\r\n @ViewChild(DxDataGridComponent) dataGrid: DxDataGridComponent;\r\n\r\n protected constructor(protected componentTitle: string,\r\n protected appService: AppService,\r\n protected alertService: AlertService,\r\n protected customerService: CustomerService,\r\n protected enterpriseService: EnterpriseService,\r\n protected enterpriseEnrichmentService: EnterpriseEnrichmentService,\r\n protected locationService: LocationService,\r\n protected locationEnrichmentService: LocationEnrichmentService,\r\n protected nomGroupService: NominationGroupService,\r\n protected nomGroupEnrichmentService: NomGroupEnrichmentService,\r\n protected agentRelationshipService: AgentRelationshipService,\r\n protected sessionService: SessionService,\r\n protected fileService: FileService,\r\n protected modalService: YesNoCancelModalService,\r\n protected nominationSystemService: NominationSystemService,\r\n protected commonDataBillingMonthService: CommonDataBillingMonthService,\r\n protected invoicingBillingProcessService: InvoicingInvoiceBillingProcessService,\r\n protected uriService: UriService,\r\n protected router: Router,\r\n protected activatedRoute: ActivatedRoute,\r\n protected userService: UserService) {\r\n super(componentTitle, appService, activatedRoute, router, alertService);\r\n\r\n enterpriseEnrichmentService.setEnrichmentResource(enterpriseService);\r\n locationEnrichmentService.setEnrichmentResource(locationService);\r\n nomGroupEnrichmentService.setEnrichmentResource(nomGroupService);\r\n }\r\n\r\n protected onAgentRoleSelectionChanged() {\r\n this.setDefaultCustomer();\r\n if (!this.model.isViewPage && this.model.searchParams.agentRole === AgentRole.OperatorAgent.value) {\r\n this.model.customers = this.model.operatorAgentCustomers;\r\n } else {\r\n this.model.customers = this.model.nominationAgentCustomers;\r\n }\r\n }\r\n\r\n public formatDateTime = (obj): string => {\r\n return new DateTime(obj.value).toDisplayFormat();\r\n };\r\n\r\n public formatGasDay(obj): string {\r\n if (obj.value !== undefined) {\r\n return GasDay.from(obj.value).toDisplayFormatAll();\r\n }\r\n return '';\r\n }\r\n\r\n public expandRow($event): void {\r\n $event.component.getDataSource().store().byKey($event.key).then((row) => {\r\n if (this.model.lastSearchParams.agentRole === AgentRole.InvoiceAgent.value) {\r\n this.queryInvoiceGroupRelationships(row.customerEnterpriseId, row.effectiveGasDay, row.expiryGasDay, row.agentEnterpriseId)\r\n .subscribe(partialAgents => row['partialAgents'] = partialAgents);\r\n } else if (this.model.lastSearchParams.agentRole === AgentRole.OperatorAgent.value) {\r\n this.queryLocationRelationships(row.customerEnterpriseId, row.effectiveGasDay, row.expiryGasDay, row.id)\r\n .subscribe(partialAgents => row['partialAgents'] = partialAgents);\r\n }\r\n });\r\n }\r\n\r\n public showOrHideExpansion(e): void {\r\n if (e.rowType === \"data\") {\r\n if (e.column.command === \"expand\") {\r\n if (e.data.agentType !== 'Partial') {\r\n e.cellElement.classList.remove('dx-datagrid-expand');\r\n dx(e.cellElement).removeClass(\"dx-datagrid-expand\");\r\n dx(e.cellElement).empty();\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected queryAllCustomersWithAgentsAvailable(): Observable {\r\n return this.customerService.getAllCustomersWithAgentsAvailable()\r\n .pipe(\r\n concatMap(enterprises => this.enterpriseEnrichmentService.enrichArray(enterprises, 'enterpriseCid')),\r\n tap(enterprises => {\r\n this.model.customers = enterprises;\r\n this.model.nominationAgentCustomers = enterprises;\r\n })\r\n );\r\n }\r\n\r\n protected queryInvoicingBillingProcess(): Observable {\r\n const openGasMonth = GasMonth.fromGasDay(this.model.openBillingMonthStartDay);\r\n return this.invoicingBillingProcessService.get(openGasMonth)\r\n .pipe(\r\n tap(billingProcess => {\r\n this.model.invoicingBillingMonthProcessIsFinal = billingProcess.isFinal;\r\n })\r\n );\r\n }\r\n\r\n protected queryLocationOperatorsByPipeline(): Observable {\r\n return this.enterpriseService.queryLocationOperatorsByPipeline(this.sessionService.getPipeline().code)\r\n .pipe(\r\n concatMap(enterprises => this.enterpriseEnrichmentService.enrichArray(enterprises, 'cid')),\r\n tap(enterprises => {\r\n this.model.operatorAgentCustomers = _.map(enterprises, x => CustomerEnterprise.createFromEnterprise(x));\r\n })\r\n );\r\n }\r\n\r\n protected queryLocationRelationships(customerId: number, effectiveGasDay: string, expiryGasDay: string, agentRelationshipId: number): Observable {\r\n const agentLocationsSearchRequest = new AgentLocationsSearchRequest();\r\n agentLocationsSearchRequest.customerId = customerId.toString();\r\n agentLocationsSearchRequest.expiryGasDay = expiryGasDay;\r\n agentLocationsSearchRequest.effectiveGasDay = effectiveGasDay;\r\n agentLocationsSearchRequest.agentRelationshipId = agentRelationshipId.toString();\r\n\r\n return this.agentRelationshipService.queryAgentOperatorLocations(agentLocationsSearchRequest)\r\n .pipe(\r\n concatMap(locations => this.locationEnrichmentService.enrichArray(locations, 'id'))\r\n );\r\n }\r\n\r\n protected queryInvoiceGroupRelationships(customerId: number, effectiveGasDay: string, expiryGasDay: string, agentEnterpriseId?: number): Observable {\r\n return this.agentRelationshipService.getPartialInvoiceAgentRelationships(customerId, GasDay.parse(effectiveGasDay), GasDay.parse(expiryGasDay), agentEnterpriseId)\r\n .pipe(\r\n concatMap(partialRelationships => this.nomGroupEnrichmentService.enrichArray(partialRelationships, 'accountId', 'account'))\r\n );\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n this.model.isAdding = false;\r\n this.model.isEditing = false;\r\n\r\n return this.queryAgentRelationships();\r\n }\r\n\r\n protected abstract queryAgentRelationships(): Observable;\r\n\r\n protected queryAgentRelationshipsFor(includeAgentFor: boolean): Observable {\r\n const maintainAgentSearchRequest = new MaintainAgentSearchRequest();\r\n maintainAgentSearchRequest.agentRole = this.model.lastSearchParams.agentRole;\r\n maintainAgentSearchRequest.includeExpired = this.model.lastSearchParams.includeExpired;\r\n maintainAgentSearchRequest.includeAgentFor = includeAgentFor;\r\n if (this.model.lastSearchParams.customerId !== undefined && this.model.lastSearchParams.customerId !== null) {\r\n maintainAgentSearchRequest.customerId = this.model.lastSearchParams.customerId.toString();\r\n }\r\n if (!this.model.userIsInternal) {\r\n maintainAgentSearchRequest.customerId = this.userService.user.enterpriseId.toString();\r\n }\r\n\r\n return this.agentRelationshipService.getMaintainAgentRelationships(maintainAgentSearchRequest)\r\n .pipe(\r\n concatMap(agentRelationships => this.enterpriseEnrichmentService.enrichArray(agentRelationships, 'customerEnterpriseId', 'customer')),\r\n concatMap(agentRelationships => this.enterpriseEnrichmentService.enrichArray(agentRelationships, 'agentEnterpriseId', 'agent')),\r\n tap(agentRelationships => {\r\n this.model.searchResults = agentRelationships;\r\n this.model.nominationAgents = PageableList.GenerateConfiguration(_.filter(this.model.nominationAgentCustomers, x => x.enterpriseCid !== this.model.lastSearchParams.customerId));\r\n })\r\n );\r\n }\r\n\r\n private getPipelineGasDay(): Observable {\r\n return this.nominationSystemService.pipelineGasDay() .pipe(\r\n tap(pipelineGasDay => {\r\n this.model.gasDay = pipelineGasDay.actualGasDay;\r\n })\r\n );\r\n }\r\n\r\n private getOpenBillingMonth(): Observable {\r\n return this.commonDataBillingMonthService.getOpen().pipe(\r\n tap(response => {\r\n const openGasMonth = response.gasMonth;\r\n this.model.openBillingMonth = openGasMonth;\r\n this.model.openBillingMonthStartDay = openGasMonth.start();\r\n })\r\n );\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n this.appService.hideMenu();\r\n const pipelineGasDay$ = this.getPipelineGasDay();\r\n const commonDataBillingMonth$ = this.getOpenBillingMonth();\r\n\r\n this.model.userIsInternal = !this.userService.user.isExternalUser;\r\n\r\n return forkJoin([pipelineGasDay$, commonDataBillingMonth$]);\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n const queryNominationAgentEnterprises$ = this.queryAllCustomersWithAgentsAvailable();\r\n const queryLocationOperatorsByPipeline$ = this.queryLocationOperatorsByPipeline();\r\n const queryInvoicingBillingProcess$ = this.queryInvoicingBillingProcess();\r\n\r\n return forkJoin([queryNominationAgentEnterprises$, queryLocationOperatorsByPipeline$, queryInvoicingBillingProcess$]);\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n const paramValidator = ParamValidator.Standard();\r\n paramValidator.isString('agentRole');\r\n paramValidator.isNumber('customerId', true);\r\n paramValidator.isBoolean('includeExpired');\r\n return paramValidator.isValid(params);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {};\r\n params['agentRole'] = this.model.searchParams.agentRole;\r\n params['includeExpired'] = this.model.searchParams.includeExpired;\r\n\r\n if (!_.isNil(this.model.searchParams.customerId) && !isNaN(this.model.searchParams.customerId)) {\r\n params['customerId'] = this.model.searchParams.customerId;\r\n }\r\n\r\n return params;\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n protected resetCompleted(): void {\r\n this.model.lastSearchParams = null;\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams = new MaintainAgentsSearchParams();\r\n this.model.searchParams.agentRole = AgentRole.InvoiceAgent.value;\r\n this.model.searchParams.includeExpired = false;\r\n this.setDefaultCustomer();\r\n\r\n this.model.clearSearchResults();\r\n }\r\n\r\n private setDefaultCustomer(): void {\r\n this.model.searchParams.customerId = !this.model.userIsInternal ? Number(this.userService.user.enterpriseId) : null;\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams.agentRole = typedParams.asString('agentRole');\r\n this.model.searchParams.customerId = typedParams.asNullableNumber('customerId');\r\n this.model.searchParams.includeExpired = typedParams.asBoolean('includeExpired');\r\n }\r\n\r\n protected abstract exportCsvClicked();\r\n\r\n protected exportCsv(headers: string[], columns: string[]) {\r\n let csvData = _.map(this.model.searchResults, x => _.extend({}, x, {\r\n customerName: x['customerDisplayName'],\r\n agentName: x['agentDisplayName'],\r\n fromGasDayCsvFormat: GasDay.parse(x.effectiveGasDay).toCsvFormat(),\r\n toGasDayCsvFormat: GasDay.parse(x.expiryGasDay).toCsvFormat()\r\n }));\r\n\r\n csvData = _.orderBy(csvData, ['customerName', 'fromGasDayCsvFormat', 'toGasDayCsvFormat'], ['asc', 'desc', 'desc']);\r\n\r\n const filename = this.getTitle() + '.csv';\r\n\r\n this.fileService.downloadCsvFile(filename, csvData, headers, columns);\r\n }\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {BaseEnrichmentService, IEnrichmentEntity} from \"@shared/services/enrichment/base-enrichment.service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {NominationSystemService} from \"@shared/services/nomination/nomination-system/nomination-system.service\";\r\n\r\n@Injectable()\r\nexport class NomGroupEnrichmentService extends BaseEnrichmentService {\r\n constructor(\r\n sessionService: SessionService,\r\n protected nominationSystemService: NominationSystemService) {\r\n super(sessionService, nominationSystemService);\r\n }\r\n\r\n createEnrichmentObject(object: IEnrichmentNomGroup): EnrichmentNomGroupDto {\r\n return new EnrichmentNomGroupDto(object.name, object.mnemonic, object.ownerEnterpriseId);\r\n }\r\n\r\n enrichObject(object: TObject, cachedEnrichmentObject: EnrichmentNomGroupDto, enrichedPropertyPrefix: string ) {\r\n object[enrichedPropertyPrefix + (enrichedPropertyPrefix ? 'Name' : 'name')] = cachedEnrichmentObject.name;\r\n object[enrichedPropertyPrefix + (enrichedPropertyPrefix ? 'Mnemonic' : 'mnemonic')] = cachedEnrichmentObject.mnemonic;\r\n object[enrichedPropertyPrefix + (enrichedPropertyPrefix ? 'OwnerEnterpriseId' : 'ownerEnterpriseId')] = cachedEnrichmentObject.ownerEnterpriseId;\r\n }\r\n}\r\n\r\nexport class EnrichmentNomGroupDto {\r\n name: string;\r\n mnemonic: string;\r\n ownerEnterpriseId: number;\r\n\r\n constructor(name: string, mnemonic: string, ownerEnterpriseId: number) {\r\n this.name = name;\r\n this.mnemonic = mnemonic;\r\n this.ownerEnterpriseId = ownerEnterpriseId;\r\n }\r\n}\r\n\r\nexport interface IEnrichmentNomGroup extends IEnrichmentEntity {\r\n name: string;\r\n mnemonic: string;\r\n ownerEnterpriseId: number;\r\n}\r\n","\r\n
\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Agent Role: {{model.lastSearchParams?.agentRole | displayName: 'value' : 'displayName' : model.agentRoles}}\r\n Customer: {{model.lastSearchParams?.customerId | displayName: 'enterpriseCid' : 'displayName' : model.customers}}\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.agentRole | displayName: 'value' : 'displayName' : model.agentRoles}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.customerId | displayName: 'enterpriseCid' : 'displayName' : model.customers}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.includeExpired | booleanAsYesNo}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Number of Agents Found: {{model.searchResults.length}}\r\n
0\" class=\"pull-right\">\r\n Export CSV\r\n
\r\n
\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n","import {Component} from \"@angular/core\";\r\nimport {ActivatedRoute, Router} from \"@angular/router\";\r\nimport {Observable} from \"rxjs\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {CustomerService} from \"@shared/services/contracts/customer/customer.service\";\r\nimport {EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {AgentRelationship, AgentRelationshipService} from \"@shared/services/nomination/agent-relationship/agent-relationship.service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {YesNoCancelModalService} from \"@shared/services/webapp/yes-no-cancel-modal/yes-no-cancel-modal.service\";\r\nimport {NominationSystemService} from \"@shared/services/nomination/nomination-system/nomination-system.service\";\r\nimport {AgentRole, AgentType} from \"app/gcts/administration/maintain-agents/maintain-agents.model\";\r\nimport * as _ from \"lodash\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {YesNoModalOptions} from \"@shared/services/webapp/modal-options/yes-no-modal-options\";\r\nimport {SelectedModalOption} from \"@shared/services/webapp/modal-options/selected-modal-option\";\r\nimport {UriService} from \"@shared/services/webapp/uri/uri.service\";\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {BaseAgentsComponent} from \"app/gcts/administration/maintain-agents/base-agents.component\";\r\nimport {UserService} from \"@shared/services/webapp/user/user-service\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {LocationService} from \"@shared/services/common-data/location/location.service\";\r\nimport {LocationEnrichmentService} from \"@shared/services/enrichment/location-enrichment.service\";\r\nimport {NominationGroupService} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport {NomGroupEnrichmentService} from \"@shared/services/enrichment/nomgroup-enrichment.service\";\r\nimport {InvoicingInvoiceBillingProcessService} from \"@shared/services/invoicing/invoicing-invoice-billing-process/invoicing-invoice-billing-process.service\";\r\nimport {IDateDisplayFormat} from \"@shared/interfaces/date-display-format\";\r\n\r\n@Component({\r\n selector: 'app-maintain-agents',\r\n templateUrl: './maintain-agents.component.html',\r\n styleUrls: ['./maintain-agents.component.css']\r\n})\r\n\r\nexport class MaintainAgentsComponent extends BaseAgentsComponent {\r\n\r\n public dateEditorFormat: IDateDisplayFormat;\r\n\r\n constructor(protected appService: AppService,\r\n protected alertService: AlertService,\r\n protected customerService: CustomerService,\r\n protected enterpriseService: EnterpriseService,\r\n protected enterpriseEnrichmentService: EnterpriseEnrichmentService,\r\n protected locationService: LocationService,\r\n protected locationEnrichmentService: LocationEnrichmentService,\r\n protected nomGroupService: NominationGroupService,\r\n protected nomGroupEnrichmentService: NomGroupEnrichmentService,\r\n protected agentRelationshipService: AgentRelationshipService,\r\n protected sessionService: SessionService,\r\n protected fileService: FileService,\r\n protected modalService: YesNoCancelModalService,\r\n protected nominationSystemService: NominationSystemService,\r\n protected commonDataBillingMonthService: CommonDataBillingMonthService,\r\n protected invoicingBillingProcessService: InvoicingInvoiceBillingProcessService,\r\n protected uriService: UriService,\r\n protected router: Router,\r\n protected activatedRoute: ActivatedRoute,\r\n protected userService: UserService) {\r\n super('Maintain Agents', appService, alertService, customerService, enterpriseService, enterpriseEnrichmentService, locationService, locationEnrichmentService,\r\n nomGroupService, nomGroupEnrichmentService, agentRelationshipService, sessionService, fileService, modalService, nominationSystemService,\r\n commonDataBillingMonthService, invoicingBillingProcessService, uriService, router, activatedRoute, userService);\r\n\r\n this.model.isViewPage = false;\r\n this.dateEditorFormat = {\r\n formatter: this.dateEditorFormatter,\r\n parser: this.dateEditorParser\r\n };\r\n }\r\n\r\n dateEditorFormatter = (date: Date): string => {\r\n const gasDay = GasDay.from(date);\r\n return gasDay.toDisplayFormatAll();\r\n };\r\n\r\n dateEditorParser = (value: string): Date => {\r\n try {\r\n return GasDay.parse(value, true).toDate;\r\n } catch (e) {\r\n return new Date(NaN);\r\n }\r\n };\r\n\r\n public setMinDate(e: any) {\r\n if (e.parentType !== \"dataRow\") {\r\n return;\r\n }\r\n if (e.dataField === \"effectiveGasDay\") {\r\n e.editorOptions.min = this.model.lastSearchParams.agentRole === AgentRole.InvoiceAgent.value ? this.model.openBillingMonthStartDay.toDate : this.model.gasDay.toDate;\r\n }\r\n if (e.dataField === \"expiryGasDay\") {\r\n e.editorOptions.min = this.model.lastSearchParams.agentRole === AgentRole.InvoiceAgent.value ? this.model.openBillingMonthStartDay.previous().toDate :this.model.gasDay.toDate;\r\n }\r\n }\r\n\r\n public editExpiryAfterEffective(e): boolean {\r\n const effectiveDate = GasDay.parse(e.data.effectiveGasDay);\r\n return effectiveDate.isLessThanOrEqualTo(GasDay.from(e.value));\r\n }\r\n\r\n public showDelete(data: any): boolean {\r\n const agentRelationship = data as AgentRelationship;\r\n\r\n if (this.model.lastSearchParams.agentRole !== AgentRole.InvoiceAgent.value) {\r\n return GasDay.parse(agentRelationship.effectiveGasDay) >= this.model.gasDay;\r\n }\r\n\r\n const effectiveGasDay = GasDay.parse(agentRelationship.effectiveGasDay);\r\n if (this.model.openBillingMonth.start() <= effectiveGasDay && this.model.openBillingMonth.end() >= effectiveGasDay) {\r\n return !this.model.invoicingBillingMonthProcessIsFinal;\r\n }\r\n return GasDay.parse(agentRelationship.effectiveGasDay) >= this.model.openBillingMonthStartDay;\r\n }\r\n\r\n public addClicked() {\r\n this.alertService.clearMessages();\r\n\r\n const max = GasDay.maxGasDay();\r\n if (_.some(this.model.searchResults, x => x.agentType === 'Full' && GasDay.parse(x.expiryGasDay).isEqual(max))) {\r\n this.alertService.addWarnMessage('Error', 'The current Full agent must be expired to create a new one.');\r\n return;\r\n }\r\n\r\n if (this.model.lastSearchParams.agentRole === AgentRole.NominationAgent.value) {\r\n this.model.isAdding = true;\r\n this.dataGrid.instance.addRow();\r\n } else {\r\n this.goToAddEditAgentPage();\r\n }\r\n }\r\n\r\n private goToAddEditAgentPage(): void {\r\n const queryParams = {\r\n enterpriseId: this.model.lastSearchParams.customerId,\r\n agentRole: this.model.lastSearchParams.agentRole\r\n };\r\n\r\n this.router.navigate(['/app', this.getPipelineCode(), 'agent', 'add'], {queryParams}).then(() => {});\r\n }\r\n\r\n public onInitNewRow(e: any): void {\r\n e.data.isEditing = true;\r\n const agentRelationship = e.data as AgentRelationship;\r\n agentRelationship.isEditable = true;\r\n this.setRowDefaults(agentRelationship);\r\n }\r\n\r\n public deleteClicked(data: any) {\r\n this.alertService.clearMessages();\r\n const yesNoModalOptions = new YesNoModalOptions('Delete row?', 'This will delete this relationship, are you sure?');\r\n this.modalService.show(yesNoModalOptions).subscribe((selectedModalOption: SelectedModalOption) => {\r\n if (selectedModalOption === SelectedModalOption.Yes) {\r\n const agentRelationship = data as AgentRelationship;\r\n this.deleteRelationship(agentRelationship);\r\n }\r\n });\r\n }\r\n\r\n public editClicked(cellInfo: any) {\r\n const agentRelationship = cellInfo.data as AgentRelationship;\r\n agentRelationship.isEditing = true;\r\n this.model.isEditing = true;\r\n agentRelationship.expiryGasDay = GasDay.parse(agentRelationship.expiryGasDay).isEqual(GasDay.maxGasDay()) ?\r\n GasDay.max([this.model.gasDay, GasDay.parse(agentRelationship.effectiveGasDay)]).toString() : agentRelationship.expiryGasDay;\r\n cellInfo.component.editRow(cellInfo.rowIndex);\r\n }\r\n\r\n private deleteRelationship(agentRelationship: AgentRelationship): void {\r\n this.agentRelationshipService.deleteAgentRelationship(agentRelationship.id)\r\n .subscribe(response => {\r\n this.model.isAdding = false;\r\n agentRelationship.isEditing = false;\r\n if (response.success) {\r\n _.forEach(response.messages, (message) => this.alertService.addSuccessMessage('Delete Success:', message));\r\n this.performSearch().subscribe(() => {});\r\n } else {\r\n _.forEach(response.errors, (error) => this.alertService.addSuccessMessage('Delete Failed:', error));\r\n }\r\n }, error => {\r\n _.forEach(error.messages, (message) => this.alertService.addErrorMessage('Delete Failed:', message));\r\n });\r\n }\r\n\r\n public cancelClicked(data: any) {\r\n this.alertService.clearMessages();\r\n data.isEditing = false;\r\n this.model.isAdding = false;\r\n this.model.isEditing = false;\r\n this.performSearch().subscribe(() => {});\r\n }\r\n\r\n public submitClicked(cellInfo: any) {\r\n this.alertService.clearMessages();\r\n this.dataGrid.instance.saveEditData().then(() => {\r\n this.saveAgentRelationship(cellInfo);\r\n });\r\n }\r\n\r\n public isLastDayOfMonth(expiryGasDay : string): boolean{\r\n const checkDate = GasDay.parse(expiryGasDay).toDate;\r\n const lastDay = new Date(checkDate.getFullYear(),(checkDate.getMonth())+1,0).getDate();\r\n if(checkDate.getDate() === lastDay)\r\n return true;\r\n else\r\n return false;\r\n }\r\n private saveAgentRelationship(cellInfo: any): void {\r\n const agentRelationship = cellInfo.row.data as AgentRelationship;\r\n const isLastDayOfMonth = this.isLastDayOfMonth(agentRelationship.expiryGasDay);\r\n if(!isLastDayOfMonth && agentRelationship.agentRole === \"NominationAgent\")\r\n {\r\n this.alertService.addWarnMessage('Error', 'Expire the nomination agent to the end of the month.');\r\n return;\r\n }\r\n this.agentRelationshipService.postAgentRelationships(this.model.lastSearchParams.customerId, [agentRelationship])\r\n .subscribe(response => {\r\n this.model.isAdding = false;\r\n this.model.isEditing = false;\r\n agentRelationship.isEditing = false;\r\n _.forEach(response.messages, (message) => this.alertService.addSuccessMessage('Save Success:', message));\r\n this.performSearch().subscribe(() => {});\r\n }, error => {\r\n _.forEach(error.messages, (message) => this.alertService.addErrorMessage('Save Failed:', message));\r\n cellInfo.component.editRow(cellInfo.rowIndex);\r\n });\r\n }\r\n\r\n private setRowDefaults(agentRelationship: AgentRelationship): void {\r\n agentRelationship.isEditing = true;\r\n\r\n agentRelationship.customerEnterpriseId = this.model.lastSearchParams.customerId.toString();\r\n agentRelationship.agentEnterpriseId = null;\r\n agentRelationship.agentRole = this.model.lastSearchParams.agentRole;\r\n agentRelationship.agentType = AgentType.Full.value;\r\n agentRelationship.effectiveGasDay = this.model.gasDay.toString();\r\n agentRelationship.newRow = true;\r\n agentRelationship.rowEdited = false;\r\n const gasDay = GasDay.maxGasDay();\r\n agentRelationship.expiryGasDay = gasDay.toString();\r\n\r\n this.enterpriseEnrichmentService.enrich(agentRelationship, 'customerEnterpriseId', 'customer').subscribe(x => {});\r\n }\r\n\r\n protected queryAgentRelationships(): Observable {\r\n return this.queryAgentRelationshipsFor(false);\r\n }\r\n\r\n protected exportCsvClicked() {\r\n const headers = ['Customer', 'Agent', 'Agent Role', 'Agent Type', 'Effective Gas Day', 'Expiry Gas Day', 'Date Modified', 'Modified By'];\r\n const columns = ['customerName', 'agentName', 'agentRole', 'agentType', 'fromGasDayCsvFormat', 'toGasDayCsvFormat', 'modifiedDateTime', 'modifiedByUserId'];\r\n\r\n this.exportCsv(headers, columns);\r\n }\r\n}\r\n","import {GasDay} from \"@model/gas-day\";\r\nimport {CustomerEnterprise} from \"@shared/services/contracts/customer/customer.service\";\r\nimport {NominationGroupDto} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport {AgentRole} from \"app/gcts/administration/maintain-agents/maintain-agents.model\";\r\nimport {Location} from \"@shared/interfaces/location\";\r\n\r\nexport class AddAgentModel {\r\n public hasValidParameters: boolean;\r\n public startGasDayOfOpenBillingMonth: GasDay;\r\n public currentGasDay: GasDay;\r\n\r\n public enterpriseId: number;\r\n public agentEnterpriseId: number;\r\n public effectiveGasDay: GasDay;\r\n public expiryGasDay: GasDay = GasDay.endOfTime();\r\n public agentRole: AgentRole;\r\n public isPartialAgentType: boolean = false;\r\n\r\n public enterprises: CustomerEnterprise[];\r\n public agentEnterprises: CustomerEnterprise[];\r\n public nomGroups: NominationGroupDto[];\r\n public nomGroupsWithNoPartialInvoiceAgentRelationship: NominationGroupDto[];\r\n public locations: Location[];\r\n}\r\n","\r\n\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{ model.enterpriseId | displayName: 'enterpriseCid' : 'enterpriseDisplayName' : model.enterprises }}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{ model.agentRole?.displayName }}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n Number of results found: {{model.nomGroupsWithNoPartialInvoiceAgentRelationship.length}}\r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n Number of results found: {{model.locations.length}}\r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n","import {Component, ViewChild} from \"@angular/core\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {forkJoin, Observable, of} from \"rxjs\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {AddAgentModel} from \"app/gcts/administration/maintain-agents/add-agents/add-agent.model\";\r\nimport {CommonDataGasdayService} from \"@shared/services/common-data/common-data-gasday/common-data-gasday.service\";\r\nimport {concatMap, tap} from \"rxjs/operators\";\r\nimport {CustomerEnterprise, CustomerService} from \"@shared/services/contracts/customer/customer.service\";\r\nimport {NominationGroupDto, NominationGroupService, QueryNomGroupsSearchRequest} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport * as _ from \"lodash\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {AgentRelationshipService, PartialInvoiceGroupRelationship} from \"@shared/services/nomination/agent-relationship/agent-relationship.service\";\r\nimport {AgentRole, AgentType} from \"app/gcts/administration/maintain-agents/maintain-agents.model\";\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {Location} from \"@shared/interfaces/location\";\r\nimport {DataGridHooks} from \"@shared/devexpress/datagrid-hooks\";\r\nimport {EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {LocationEnrichmentService} from \"@shared/services/enrichment/location-enrichment.service\";\r\nimport {LocationService} from \"@shared/services/common-data/location/location.service\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\n\r\n@Component({\r\n selector: 'app-add-agent',\r\n templateUrl: './add-agent.component.html',\r\n styleUrls: ['./add-agent.component.css']\r\n})\r\n\r\nexport class AddAgentComponent extends BaseSearchComponent {\r\n public static readonly EnterpriseIdParam: string = \"enterpriseId\";\r\n public static readonly AgentRoleParam: string = \"agentRole\";\r\n\r\n public model: AddAgentModel = new AddAgentModel();\r\n\r\n @ViewChild('nomGroupDataGrid')\r\n public nomGroupDataGrid: DxDataGridComponent;\r\n\r\n @ViewChild('locationDataGrid')\r\n public locationDataGrid: DxDataGridComponent;\r\n\r\n constructor(\r\n protected appService: AppService,\r\n protected activatedRoute: ActivatedRoute,\r\n protected router: Router,\r\n protected alertService: AlertService,\r\n private commonDataGasdayService: CommonDataGasdayService,\r\n private customerService: CustomerService,\r\n private nominationGroupService: NominationGroupService,\r\n private agentRelationshipService: AgentRelationshipService,\r\n private commonDataBillingMonthService: CommonDataBillingMonthService,\r\n private locationService: LocationService,\r\n private locationEnrichmentService: LocationEnrichmentService,\r\n private enterpriseService: EnterpriseService,\r\n private enterpriseEnrichmentService: EnterpriseEnrichmentService) {\r\n super(\"Add Agent\", appService, activatedRoute, router, alertService);\r\n\r\n enterpriseEnrichmentService.setEnrichmentResource(enterpriseService);\r\n locationEnrichmentService.setEnrichmentResource(locationService);\r\n }\r\n\r\n /**\r\n * Public Methods\r\n */\r\n\r\n public submitClicked(): void {\r\n this.alertService.clearMessages();\r\n this.addAgentRelationship();\r\n }\r\n\r\n public cancelClicked(): void {\r\n this.navigateToMaintainAgentsPage();\r\n }\r\n\r\n public onGasDayChanged = (): void => {\r\n // Clear Data Grid to Reset Selections\r\n this.model.nomGroups = null;\r\n this.model.nomGroupsWithNoPartialInvoiceAgentRelationship = null;\r\n this.model.locations = null;\r\n\r\n if (this.model.agentRole === AgentRole.InvoiceAgent) {\r\n this.queryCustomerEnterpriseNominationGroups().subscribe(x => {});\r\n } else if (this.model.agentRole === AgentRole.OperatorAgent) {\r\n this.queryCustomerLocations().subscribe(x => {});\r\n }\r\n };\r\n\r\n public nomGroupDataGridCellPrepared(cellPreparedEvent: any): void {\r\n DataGridHooks.hideCheckBox(cellPreparedEvent, e => !this.isRowSelectable(e.rowIndex));\r\n }\r\n\r\n public nomGroupDataGridOnSelectionChanged(selectionChangedEvent: any): void {\r\n DataGridHooks.handleSelectAndDeselectRowWhenDataGridHasHiddenCheckBox(selectionChangedEvent, this.nomGroupDataGrid, (currentRowIndex) => this.isRowSelectable(currentRowIndex));\r\n }\r\n\r\n /**\r\n * Protected Methods\r\n */\r\n\r\n protected loadInitialResources(): Observable {\r\n const getOpenBillingMonth$ = this.commonDataBillingMonthService.getOpen()\r\n .pipe(\r\n tap(openBillingMonth => this.model.startGasDayOfOpenBillingMonth = openBillingMonth.gasMonth.start())\r\n );\r\n\r\n const getServerTimeData$ = this.commonDataGasdayService.getServerTimeData()\r\n .pipe(\r\n tap(serverTimeData => this.model.currentGasDay = serverTimeData.gasDay)\r\n );\r\n\r\n return forkJoin([getOpenBillingMonth$, getServerTimeData$]);\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n const paramValidator = ParamValidator.Standard();\r\n\r\n paramValidator.isNumber(AddAgentComponent.EnterpriseIdParam);\r\n paramValidator.isOneOf(AddAgentComponent.AgentRoleParam, _.map(AgentRole.AgentRoles, agentRole => agentRole.value));\r\n\r\n return this.model.hasValidParameters = paramValidator.isValid(params); // Set Model Valid Parameter is True to Render Html Elements\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.alertService.addErrorMessage('Bad Request', 'Url parameters for the request are invalid.');\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.effectiveGasDay = this.model.currentGasDay;\r\n this.model.enterpriseId = typedParams.asNumber(AddAgentComponent.EnterpriseIdParam);\r\n this.model.agentRole = AgentRole.parse(typedParams.asString(AddAgentComponent.AgentRoleParam));\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n if (!this.model.hasValidParameters) {\r\n return of({});\r\n }\r\n\r\n this.alertService.clearMessages();\r\n\r\n const queryNomGroups$ = this.queryCustomerEnterpriseNominationGroups();\r\n const queryCustomerLocations = this.queryCustomerLocations();\r\n const allCustomerAgents$ = this.queryCustomerAgents();\r\n\r\n return forkJoin([queryNomGroups$, queryCustomerLocations, allCustomerAgents$]);\r\n }\r\n\r\n private queryCustomerEnterpriseNominationGroups(): Observable<[NominationGroupDto[], PartialInvoiceGroupRelationship[]]> {\r\n if (this.model.agentRole !== AgentRole.InvoiceAgent) {\r\n return of(null);\r\n }\r\n\r\n const queryNomGroupsSearchRequest = QueryNomGroupsSearchRequest.searchByEnterpriseAndGasDayRange(this.model.enterpriseId, this.model.effectiveGasDay, this.model.expiryGasDay);\r\n const queryCustomerEnterpriseNomGroups$ = this.nominationGroupService.queryNomGroups(queryNomGroupsSearchRequest);\r\n const queryPartialInvoiceGroupRelationships$ = this.agentRelationshipService.getPartialInvoiceAgentRelationships(this.model.enterpriseId, this.model.effectiveGasDay, this.model.expiryGasDay);\r\n\r\n return forkJoin([queryCustomerEnterpriseNomGroups$, queryPartialInvoiceGroupRelationships$])\r\n .pipe(\r\n tap(([nominationGroups, partialInvoiceGroupRelationships]: [NominationGroupDto[], PartialInvoiceGroupRelationship[]]) => {\r\n // bug/157992 - currently an issue with the end point returning nomination groups with expired invoice groups. The end point is used in P1 and due to being so close to release time, we will filter out the\r\n // expired nomination groups with expired invoice groups on the front end. The end point will be reviewed/corrected when we port over the P1 web pages.\r\n const nomGroupsWithEffectiveInvoiceGroups = _.filter(nominationGroups, x => x.invoiceGroup.effectiveGasDay <= this.model.effectiveGasDay && x.invoiceGroup.expiryGasDay >= this.model.effectiveGasDay);\r\n\r\n const partialInvoiceAgentRelationshipsForOtherEnterprises = _.filter(partialInvoiceGroupRelationships, x => x.agentEnterpriseId !== this.model.enterpriseId);\r\n const invoiceGroupIdsWithPartialRelationship = _.map(partialInvoiceAgentRelationshipsForOtherEnterprises, x => x.invoiceGroupId);\r\n\r\n this.model.nomGroups = _.filter(nomGroupsWithEffectiveInvoiceGroups, nomGroup => !_.isNil(nomGroup.serviceType));\r\n this.model.nomGroupsWithNoPartialInvoiceAgentRelationship = _.filter(this.model.nomGroups, nomGroup => !_.includes(invoiceGroupIdsWithPartialRelationship, nomGroup.invoiceGroupId));\r\n })\r\n );\r\n }\r\n\r\n private queryCustomerLocations(): Observable {\r\n if (this.model.agentRole !== AgentRole.OperatorAgent) {\r\n return of(null);\r\n }\r\n\r\n return this.agentRelationshipService.queryCustomerOperatorLocations(this.model.enterpriseId, this.model.effectiveGasDay, this.model.expiryGasDay)\r\n .pipe(\r\n concatMap(locations => this.locationEnrichmentService.enrichArray(locations, 'id')),\r\n tap(locations => {\r\n this.model.locations = locations;\r\n })\r\n );\r\n }\r\n\r\n private queryCustomerAgents(): Observable {\r\n return this.customerService.getAllCustomersWithAgentsAvailable()\r\n .pipe(\r\n concatMap(enterprises => this.enterpriseEnrichmentService.enrichArray(enterprises, 'enterpriseCid', 'enterprise')),\r\n tap(enterprises => {\r\n this.model.enterprises = enterprises;\r\n this.model.agentEnterprises = _.filter(enterprises, x => x.enterpriseCid !== this.model.enterpriseId);\r\n })\r\n );\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n return {}; // Do Nothing\r\n }\r\n\r\n protected performSearch(): Observable {\r\n return of({}); // Do Nothing\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n // Do Nothing\r\n }\r\n\r\n /**\r\n * Private Methods\r\n */\r\n\r\n private addAgentRelationship(): void {\r\n const agentType = this.model.isPartialAgentType ? AgentType.Partial : AgentType.Full;\r\n\r\n if (this.model.agentRole === AgentRole.InvoiceAgent) {\r\n const invoiceGroupIds: number[] = agentType === AgentType.Partial\r\n ? _.map(this.nomGroupDataGrid.instance.getSelectedRowsData(), x => x.invoiceGroupId)\r\n : _.map(this.model.nomGroups, x => x.invoiceGroupId); // If Full Agent Type, then pass all invoice group ids\r\n\r\n this.agentRelationshipService\r\n .saveInvoiceAgentRelationship(this.model.enterpriseId, this.model.agentEnterpriseId, this.model.effectiveGasDay, this.model.expiryGasDay, this.model.agentRole, agentType, invoiceGroupIds)\r\n .subscribe(() => {\r\n this.navigateToMaintainAgentsPage();\r\n });\r\n } else if (this.model.agentRole === AgentRole.OperatorAgent) {\r\n const locationIds: number[] = agentType === AgentType.Partial\r\n ? _.map(this.locationDataGrid.instance.getSelectedRowsData(), x => x.id)\r\n : _.map(this.model.locations, x => x.id);\r\n\r\n this.agentRelationshipService\r\n .saveOperatorAgentRelationship(this.model.enterpriseId, this.model.agentEnterpriseId, this.model.effectiveGasDay, this.model.expiryGasDay, this.model.agentRole, agentType, locationIds)\r\n .subscribe(() => {\r\n this.navigateToMaintainAgentsPage();\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Row is selectable if it's invoice group id does not match the previous row's invoice group id.\r\n */\r\n private isRowSelectable(rowIndex: number): boolean {\r\n if (rowIndex <= 0) {\r\n return true;\r\n }\r\n\r\n const currentRow = this.nomGroupDataGrid.instance.getVisibleRows()[rowIndex];\r\n const previousRow = this.nomGroupDataGrid.instance.getVisibleRows()[rowIndex - 1];\r\n return currentRow.data.invoiceGroupId !== previousRow.data.invoiceGroupId;\r\n }\r\n\r\n private navigateToMaintainAgentsPage(): void {\r\n const queryParams = {\r\n customerId: this.model.enterpriseId,\r\n agentRole: this.model.agentRole.value\r\n };\r\n\r\n this.router.navigate(['/app', this.getPipelineCode(), 'maintainagents'], {queryParams}).then(() => {});\r\n }\r\n}\r\n","\r\n
\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Agent Role: {{model.lastSearchParams?.agentRole | displayName: 'value' : 'displayName' : model.agentRoles}}\r\n Customer: {{model.lastSearchParams?.customerId | displayName: 'enterpriseCid' : 'displayName' : model.customers}}\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.agentRole | displayName: 'value' : 'displayName' : model.agentRoles}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.customerId | displayName: 'enterpriseCid' : 'displayName' : model.customers}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.includeExpired | booleanAsYesNo}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Number of Agents Found: {{model.searchResults.length}}\r\n
0\" class=\"pull-right\">\r\n Export CSV\r\n
\r\n
\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n","import {Component} from \"@angular/core\";\r\nimport {ActivatedRoute, Router} from \"@angular/router\";\r\nimport {Observable} from \"rxjs\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {CustomerService} from \"@shared/services/contracts/customer/customer.service\";\r\nimport {EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {AgentRelationship, AgentRelationshipService} from \"@shared/services/nomination/agent-relationship/agent-relationship.service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {YesNoCancelModalService} from \"@shared/services/webapp/yes-no-cancel-modal/yes-no-cancel-modal.service\";\r\nimport {NominationSystemService} from \"@shared/services/nomination/nomination-system/nomination-system.service\";\r\nimport {UriService} from \"@shared/services/webapp/uri/uri.service\";\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {BaseAgentsComponent} from \"app/gcts/administration/maintain-agents/base-agents.component\";\r\nimport {UserService} from \"@shared/services/webapp/user/user-service\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {LocationService} from \"@shared/services/common-data/location/location.service\";\r\nimport {LocationEnrichmentService} from \"@shared/services/enrichment/location-enrichment.service\";\r\nimport {NominationGroupService} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport {NomGroupEnrichmentService} from \"@shared/services/enrichment/nomgroup-enrichment.service\";\r\nimport {InvoicingInvoiceBillingProcessService} from \"@shared/services/invoicing/invoicing-invoice-billing-process/invoicing-invoice-billing-process.service\";\r\n\r\n@Component({\r\n selector: 'app-view-agents',\r\n templateUrl: './view-agents.component.html',\r\n styleUrls: ['./view-agents.component.css']\r\n})\r\n\r\nexport class ViewAgentsComponent extends BaseAgentsComponent {\r\n\r\n constructor(protected appService: AppService,\r\n protected alertService: AlertService,\r\n protected customerService: CustomerService,\r\n protected enterpriseService: EnterpriseService,\r\n protected enterpriseEnrichmentService: EnterpriseEnrichmentService,\r\n protected locationService: LocationService,\r\n protected locationEnrichmentService: LocationEnrichmentService,\r\n protected nomGroupService: NominationGroupService,\r\n protected nomGroupEnrichmentService: NomGroupEnrichmentService,\r\n protected agentRelationshipService: AgentRelationshipService,\r\n protected sessionService: SessionService,\r\n protected fileService: FileService,\r\n protected modalService: YesNoCancelModalService,\r\n protected nominationSystemService: NominationSystemService,\r\n protected commonDataBillingMonthService: CommonDataBillingMonthService,\r\n protected invoicingBillingProcessService: InvoicingInvoiceBillingProcessService,\r\n protected uriService: UriService,\r\n protected router: Router,\r\n protected activatedRoute: ActivatedRoute,\r\n protected userService: UserService) {\r\n super('View Agents', appService, alertService, customerService, enterpriseService, enterpriseEnrichmentService, locationService, locationEnrichmentService,\r\n nomGroupService, nomGroupEnrichmentService, agentRelationshipService, sessionService, fileService, modalService, nominationSystemService,\r\n commonDataBillingMonthService, invoicingBillingProcessService, uriService, router, activatedRoute, userService);\r\n\r\n this.model.isViewPage = true;\r\n }\r\n\r\n protected queryAgentRelationships(): Observable {\r\n return this.queryAgentRelationshipsFor(true);\r\n }\r\n\r\n protected exportCsvClicked() {\r\n const headers = ['Customer', 'Agent', 'Agent Role', 'Agent Type', 'Effective Gas Day', 'Expiry Gas Day'];\r\n const columns = ['customerName', 'agentName', 'agentRole', 'agentType', 'fromGasDayCsvFormat', 'toGasDayCsvFormat'];\r\n\r\n this.exportCsv(headers, columns);\r\n }\r\n}\r\n","import {BaseViewModel} from \"@model/base-view-model\";\r\nimport {Enterprise} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {STSBalanceNominationGroup, StsTransferBalance} from \"@shared/services/flowing-gas/sts-transfer-balance-service/sts-transfer-balance.service\";\r\n\r\nexport class StsTransferBalanceModel extends BaseViewModel {\r\n enterprises: Enterprise[];\r\n stsBalanceNomGroup : STSBalanceNominationGroup[]=[];\r\n openBillingMonth: BillingMonth;\r\n openGasMonth : GasMonth;\r\n currentGasDay : GasDay;\r\n minGasDay : GasDay;\r\n maxGasDay : GasDay;\r\n customerStorageBalances : STSBalanceNominationGroup[] =[];\r\n nominationGroups : STSBalanceNominationGroup[]=[];\r\n debitLocations : STSBalanceNominationGroup[] =[]; // STSBalanceNominationGroup contain the locationId and locationName\r\n creditLocations : STSBalanceNominationGroup[]=[];\r\n\r\n isAdding: boolean = false;\r\n isEditing: boolean = false;\r\n\r\n searchParams: StsTransferBalanceSearchParams = new StsTransferBalanceSearchParams();\r\n lastSearchParams: StsTransferBalanceSearchParams;\r\n\r\n searchResults: StsTransferBalance[];\r\n isEditingRowValid: boolean;\r\n}\r\nexport class StsTransferBalanceSearchParams {\r\n customerEnterpriseId?: number;\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {FlowinggasResourceService} from \"@shared/resources/flowinggas-resource.service\";\r\nimport {Observable} from \"rxjs\";\r\nimport {map} from \"rxjs/operators\";\r\nimport * as _ from \"lodash\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\n\r\n@Injectable()\r\nexport class StsTransferBalanceService {\r\n constructor(private flowingGasResource: FlowinggasResourceService) {\r\n }\r\n public queryGetStorageBalances(): Observable {\r\n return this.flowingGasResource.get('/storagebalances')\r\n .pipe(\r\n map(stsBalNomGroup => _.map(stsBalNomGroup, g => STSBalanceNominationGroup.create(g)))\r\n );\r\n }\r\n public queryGetStsTransferBalances(searchParams :StsTransferBalanceRequest): Observable {\r\n return this.flowingGasResource.get('/stsTransferBalance',true,\r\n this.buildUrlSearchParams(searchParams))\r\n .pipe(\r\n map(stsTransferBal => _.map(stsTransferBal, g => StsTransferBalance.create(g)))\r\n );\r\n }\r\n public saveNewStsTransferBalance(stsTransferBalance: StsTransferBalance,searchParams :StsTransferBalanceRequest): Observable {\r\n const body = {\r\n customerId : searchParams.enterpriseId,\r\n affectedGasDay: stsTransferBalance.affectedGasDay.toString(),\r\n creditNominationGroupId: stsTransferBalance.creditNomGroupId,\r\n creditLocationId: stsTransferBalance.creditLocationId,\r\n debitNominationGroupId: stsTransferBalance.debitNomGroupId,\r\n debitLocationId: stsTransferBalance.debitLocationId,\r\n energy: stsTransferBalance.energy\r\n };\r\n return this.flowingGasResource.postWithNoResponseBody('/stsTransferBalance', body);\r\n }\r\n public updateStsTransferBalance(stsTransferBalance: StsTransferBalance): Observable {\r\n const body = {\r\n id: stsTransferBalance.id,\r\n energy: stsTransferBalance.energy,\r\n version: stsTransferBalance.version\r\n };\r\n return this.flowingGasResource.putWithNoResponseBody('/stsTransferBalance',body);\r\n }\r\n public deleteStsTransferBalance(stsTransferBalance: StsTransferBalance): Observable {\r\n return this.flowingGasResource.deleteWithNoResponseBody(`/stsTransferBalance/${stsTransferBalance.id}`, true);\r\n }\r\n private buildUrlSearchParams(searchParams :StsTransferBalanceRequest) : GCTSHttpParams{\r\n const urlSearchParams = new GCTSHttpParams();\r\n urlSearchParams.setNumber('customerId',searchParams.enterpriseId);\r\n return urlSearchParams;\r\n }\r\n}\r\nexport class StsTransferBalanceRequest{\r\n public enterpriseId?: number;\r\n}\r\n\r\nexport interface IStsTransferBalance{\r\n id : number;\r\n affectedGasDay : string;\r\n creditLocationId : number;\r\n creditNomGroupId : number;\r\n debitLocationId : number;\r\n debitNomGroupId : number;\r\n energy : number;\r\n version : number;\r\n}\r\n\r\nexport class StsTransferBalance {\r\n id : number;\r\n affectedGasDay : string;\r\n creditLocationId : number;\r\n creditNomGroupId : number;\r\n debitLocationId : number;\r\n debitNomGroupId : number;\r\n energy : number;\r\n version : number;\r\n\r\n public static create(dto: IStsTransferBalance): StsTransferBalance {\r\n const stsTransferBalance = new StsTransferBalance();\r\n stsTransferBalance.id = +dto.id;\r\n stsTransferBalance.affectedGasDay = dto.affectedGasDay;\r\n stsTransferBalance.creditLocationId = +dto.creditLocationId;\r\n stsTransferBalance.creditNomGroupId = +dto.creditNomGroupId;\r\n stsTransferBalance.debitLocationId = +dto.debitLocationId;\r\n stsTransferBalance.debitNomGroupId = +dto.debitNomGroupId;\r\n stsTransferBalance.energy= +dto.energy;\r\n stsTransferBalance.version= +dto.version;\r\n return stsTransferBalance;\r\n }\r\n}\r\n\r\nexport interface ISTSBalanceNominationGroup {\r\n id : string;\r\n locationId: number;\r\n enterpriseId: number;\r\n nomGroupId: number;\r\n effectiveGasDay: GasDay;\r\n expiryGasDay: GasDay;\r\n version : string;\r\n isExpired : boolean;\r\n storageBalanceNomGroups: IStorageBalanceChildNomGroups[];\r\n storageBalanceLocations: IStorageBalanceLocations[];\r\n}\r\n\r\nexport interface IStorageBalanceChildNomGroups{\r\n id : string;\r\n acctTypeCode : string;\r\n nomGroupId: number;\r\n serviceClass: string ;\r\n effectiveGasDay: GasDay;\r\n expiryGasDay: GasDay;\r\n isExpired : boolean;\r\n}\r\n\r\nexport interface IStorageBalanceLocations{\r\n id : string;\r\n locationTypeCode : string;\r\n locationId: number;\r\n locationName : string;\r\n upstreamDownstreamCode : string;\r\n effectiveGasDay: GasDay;\r\n expiryGasDay: GasDay;\r\n isExpired : boolean;\r\n}\r\n\r\nexport class STSBalanceNominationGroup {\r\n id : string;\r\n locationId: number;\r\n enterpriseId: number;\r\n nomGroupId: number;\r\n effectiveGasDay: GasDay;\r\n expiryGasDay: GasDay;\r\n version : string;\r\n isExpired : boolean;\r\n storageBalanceNomGroups: StorageBalanceChildNomGroups[];\r\n storageBalanceLocations: StorageBalanceLocations[];\r\n\r\n public static create(dto: ISTSBalanceNominationGroup): STSBalanceNominationGroup {\r\n const stsBalance = new STSBalanceNominationGroup();\r\n stsBalance.id = dto.id;\r\n stsBalance.locationId = +dto.locationId;\r\n stsBalance.enterpriseId = +dto.enterpriseId;\r\n stsBalance.nomGroupId = +dto.nomGroupId;\r\n stsBalance.effectiveGasDay = dto.effectiveGasDay;\r\n stsBalance.expiryGasDay = dto.expiryGasDay;\r\n stsBalance.version = dto.version;\r\n stsBalance.isExpired= dto.isExpired;\r\n\r\n stsBalance.storageBalanceNomGroups = _.map(dto.storageBalanceNomGroups, x => StorageBalanceChildNomGroups.create(x));\r\n stsBalance.storageBalanceLocations = _.map(dto.storageBalanceLocations, x => StorageBalanceLocations.create(x));\r\n return stsBalance;\r\n }\r\n}\r\n\r\nexport class StorageBalanceChildNomGroups{\r\n id : string;\r\n acctTypeCode : string;\r\n nomGroupId: number;\r\n serviceClass: string ;\r\n effectiveGasDay: GasDay;\r\n expiryGasDay: GasDay;\r\n isExpired : boolean;\r\n\r\n public static create(dto: IStorageBalanceChildNomGroups): StorageBalanceChildNomGroups {\r\n const stsChildNomGroups = new StorageBalanceChildNomGroups();\r\n stsChildNomGroups.id= dto.id;\r\n stsChildNomGroups.acctTypeCode = dto.acctTypeCode;\r\n stsChildNomGroups.nomGroupId = +dto.nomGroupId;\r\n stsChildNomGroups.serviceClass = dto.serviceClass;\r\n stsChildNomGroups.effectiveGasDay= dto.effectiveGasDay;\r\n stsChildNomGroups.expiryGasDay = dto.expiryGasDay;\r\n stsChildNomGroups.isExpired = dto.isExpired;\r\n return stsChildNomGroups;\r\n }\r\n}\r\n\r\nexport class StorageBalanceLocations{\r\n id : string;\r\n locationTypeCode : string;\r\n locationId: number;\r\n locationName : string;\r\n upstreamDownstreamCode : string;\r\n effectiveGasDay: GasDay;\r\n expiryGasDay: GasDay;\r\n isExpired : boolean;\r\n\r\n public static create(dto:IStorageBalanceLocations) : StorageBalanceLocations {\r\n const storageBalanceLocations = new StorageBalanceLocations();\r\n storageBalanceLocations.id = dto.id;\r\n storageBalanceLocations.locationTypeCode = dto.locationTypeCode;\r\n storageBalanceLocations.locationId = dto.locationId;\r\n storageBalanceLocations.locationName = dto.locationName;\r\n storageBalanceLocations.upstreamDownstreamCode = dto.upstreamDownstreamCode;\r\n storageBalanceLocations.effectiveGasDay = dto.effectiveGasDay;\r\n storageBalanceLocations.expiryGasDay = dto.expiryGasDay;\r\n storageBalanceLocations.isExpired = dto.isExpired;\r\n return storageBalanceLocations;\r\n }\r\n}\r\n","export class MinAndMax {\r\n min: TType;\r\n max: TType;\r\n\r\n constructor(min: TType, max: TType) {\r\n this.min = min;\r\n this.max = max;\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'numberFormat'\r\n})\r\nexport class NumberFormatPipe implements PipeTransform {\r\n transform(value: number, showBlankIfValueIsZero: boolean = false, useLocalFormat: boolean = true): string {\r\n\r\n if ((value === undefined || value === null) || (showBlankIfValueIsZero && value === 0)) {\r\n return \"\";\r\n }\r\n\r\n if (useLocalFormat) {\r\n return value.toLocaleString('en');\r\n } else {\r\n return value.toString();\r\n }\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Customer: {{model.lastSearchParams?.customerEnterpriseId | displayName: 'id' : 'displayValue' : model.enterprises}}\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.customerEnterpriseId | displayName: 'id' : 'displayValue' : model.enterprises}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n Number of Sts Transfer Balances Found: {{model.searchResults.length}}\r\n
\r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {{ row.value | numberFormat}}\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n","import {Component, EventEmitter, OnDestroy, OnInit, Output, ViewChild} from \"@angular/core\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {forkJoin, Observable, of} from \"rxjs\";\r\nimport {EditableSearchComponent} from \"@model/editable-search-component\";\r\nimport {ModalOptions} from \"@shared/services/webapp/modal-options/modal-options\";\r\nimport {YesNoCancelModalService} from \"@shared/services/webapp/yes-no-cancel-modal/yes-no-cancel-modal.service\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {StsTransferBalanceModel, StsTransferBalanceSearchParams} from \"app/gcts/administration/sts-transfer-balance/sts-transfer-balance.model.ts\";\r\nimport {concatMap, tap} from \"rxjs/operators\";\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {CommonDataEnterpriseSearchParams, Enterprise, EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport * as _ from \"lodash\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {CommonDataGasdayService} from \"@shared/services/common-data/common-data-gasday/common-data-gasday.service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {STSBalanceNominationGroup, StsTransferBalance, StsTransferBalanceRequest, StsTransferBalanceService} from \"@shared/services/flowing-gas/sts-transfer-balance-service/sts-transfer-balance.service\";\r\nimport * as dx from \"devextreme/core/renderer\";\r\nimport {YesNoModalOptions} from \"@shared/services/webapp/modal-options/yes-no-modal-options\";\r\nimport {SelectedModalOption} from \"@shared/services/webapp/modal-options/selected-modal-option\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {LocationEnrichmentService} from \"@shared/services/enrichment/location-enrichment.service\";\r\nimport {LocationService} from \"@shared/services/common-data/location/location.service\";\r\nimport {NomGroupEnrichmentService} from \"@shared/services/enrichment/nomgroup-enrichment.service\";\r\nimport {NominationGroupService} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport {DataGridHooks} from \"@shared/devexpress/datagrid-hooks\";\r\nimport {MinAndMax} from \"@model/min-and-max\";\r\nimport {ModalComponent} from \"@shared/components/modal/modal.component\";\r\nimport {IDateDisplayFormat} from \"@shared/interfaces/date-display-format\";\r\nimport {formatDate } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'app-sts-transfer-balance',\r\n templateUrl: './sts-transfer-balance.component.html',\r\n styleUrls: ['./sts-transfer-balance.component.css']\r\n})\r\n\r\nexport class StsTransferBalanceComponent extends EditableSearchComponent{\r\n private static PARAM_CUSTOMER_ENTERPRISE_ID: string = 'customerEnterpriseId';\r\n public model: StsTransferBalanceModel = new StsTransferBalanceModel();\r\n public dateEditorFormat: IDateDisplayFormat;\r\n\r\n @ViewChild(DxDataGridComponent)\r\n dataGrid: DxDataGridComponent;\r\n\r\n @ViewChild(ModalComponent) modal: ModalComponent;\r\n\r\n setCellValue(newData, value) {\r\n const column = this as any;\r\n column.defaultSetCellValue(newData, value);\r\n if(newData.debitNomGroupId){\r\n newData.debitLocationId = \"\";\r\n }\r\n if(newData.creditNomGroupId){\r\n newData.creditLocationId =\"\";\r\n }\r\n }\r\n\r\n constructor(protected appService: AppService,\r\n protected sessionService: SessionService,\r\n protected activatedRoute: ActivatedRoute,\r\n protected router: Router,\r\n protected alertService: AlertService,\r\n private modalService: YesNoCancelModalService,\r\n private locationEnrichmentService: LocationEnrichmentService,\r\n private commonDataLocationService: LocationService,\r\n private nominationGroupEnrichmentService: NomGroupEnrichmentService,\r\n private nominationGroupService: NominationGroupService,\r\n private commonDataGasDayService: CommonDataGasdayService,\r\n private stsTransferBalanceService: StsTransferBalanceService,\r\n private commonDataEnterpriseService: EnterpriseService,\r\n private enterpriseEnrichmentService: EnterpriseEnrichmentService,\r\n private commonDataBillingMonthService: CommonDataBillingMonthService\r\n ) {\r\n super('STS Transfer Balance', appService, activatedRoute, router, alertService);\r\n this.enterpriseEnrichmentService.setEnrichmentResource(this.commonDataEnterpriseService);\r\n this.locationEnrichmentService.setEnrichmentResource(this.commonDataLocationService);\r\n this.nominationGroupEnrichmentService.setEnrichmentResource(this.nominationGroupService);\r\n\r\n this.dateEditorFormat = {\r\n formatter: this.dateEditorFormatter,\r\n parser: this.dateEditorParser\r\n };\r\n }\r\n\r\n /**\r\n * Protected Methods\r\n */\r\n dateEditorFormatter = (date: Date): string => {\r\n const gasDay = GasDay.from(date);\r\n return gasDay.toDisplayFormatAll();\r\n };\r\n\r\n dateEditorParser = (value: string): Date => {\r\n try {\r\n return GasDay.parse(value, true).toDate;\r\n } catch (e) {\r\n return new Date(NaN);\r\n }\r\n };\r\n\r\n protected loadInitialResources(): Observable {\r\n const getOpenBillingMonth$ = this.commonDataBillingMonthService.getOpen()\r\n .pipe(\r\n tap(openBillingMonth => this.model.openBillingMonth = openBillingMonth)\r\n );\r\n\r\n const getServerTimeData$ = this.commonDataGasDayService.getServerTimeData()\r\n .pipe(\r\n tap(serverTimeData => this.model.currentGasDay = serverTimeData.gasDay)\r\n );\r\n\r\n const queryEnterprises$ = this.queryEnterprises();\r\n\r\n const queryStorageBalances$ = this.queryStorageBalances();\r\n\r\n return forkJoin([getOpenBillingMonth$,getServerTimeData$,queryEnterprises$,queryStorageBalances$])\r\n .pipe(\r\n tap(() => {\r\n this.model.openGasMonth = this.model.openBillingMonth.gasMonth;\r\n this.model.minGasDay = this.model.openGasMonth.start();\r\n this.model.maxGasDay = this.model.openGasMonth.end();\r\n })\r\n );\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n const paramValidator = ParamValidator.Standard();\r\n paramValidator.isNumber(StsTransferBalanceComponent.PARAM_CUSTOMER_ENTERPRISE_ID, true);\r\n return paramValidator.isValid(params);\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.alertService.clearMessages();\r\n this.model.searchParams = new StsTransferBalanceSearchParams();\r\n this.model.searchParams.customerEnterpriseId = null;\r\n this.model.searchResults = null;\r\n this.model.lastSearchParams = null;\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams.customerEnterpriseId = typedParams.asNullableNumber(StsTransferBalanceComponent.PARAM_CUSTOMER_ENTERPRISE_ID);\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n return of({});\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {};\r\n params[StsTransferBalanceComponent.PARAM_CUSTOMER_ENTERPRISE_ID] = this.model.searchParams.customerEnterpriseId;\r\n return params;\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.alertService.clearMessages();\r\n this.model.searchResults = null;\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n const searchRequest = this.buildSearchRequest();\r\n const queryStsTransferBalances = this.stsTransferBalanceService.queryGetStsTransferBalances(searchRequest)\r\n .pipe(\r\n concatMap(stsTransferBalances => this.locationEnrichmentService.enrichArray(stsTransferBalances, 'debitLocationId', 'debitLocation')),\r\n concatMap(stsTransferBalances => this.locationEnrichmentService.enrichArray(stsTransferBalances, 'creditLocationId', 'creditLocation')),\r\n concatMap(stsTransferBalances => this.nominationGroupEnrichmentService.enrichArray(stsTransferBalances, 'debitNomGroupId', 'debitNomGroup')),\r\n concatMap(stsTransferBalances => this.nominationGroupEnrichmentService.enrichArray(stsTransferBalances, 'creditNomGroupId', 'creditNomGroup')),\r\n tap(stsTransferBalances =>{\r\n this.model.searchResults = stsTransferBalances;\r\n })\r\n );\r\n return forkJoin([queryStsTransferBalances]);\r\n }\r\n\r\n\r\n getDefaultChangesWillBeLostMessageOptions(): ModalOptions {\r\n return YesNoCancelModalService.getDefaultYesNoModalOptions();\r\n }\r\n\r\n hasUnsavedChanges(): boolean {\r\n if (!this.dataGrid) return false;\r\n return this.dataGrid.instance.hasEditData();\r\n }\r\n\r\n navigationCancelled(): void {\r\n }\r\n\r\n // Event driven functions\r\n public resetClicked(): void {\r\n if ((this.model.isAdding || this.model.isEditing)){\r\n this.showDiscardChangesDialog();\r\n }\r\n else {\r\n super.resetClicked();\r\n }\r\n }\r\n\r\n public addClicked(): void {\r\n this.alertService.clearMessages();\r\n this.model.isAdding = true;\r\n this.model.isEditing= false;\r\n this.model.isEditingRowValid = false;\r\n this.dataGrid.instance.addRow();\r\n }\r\n\r\n isAddDisabled(): boolean {\r\n return ((this.model.isAdding || this.model.isEditing)) || _.isNil(this.model.searchResults) ||\r\n !this.model.lastSearchParams?.customerEnterpriseId;\r\n }\r\n\r\n public showDiscardChangesDialog(): void {\r\n this.alertService.clearMessages();\r\n const yesNoModalOptions = new YesNoModalOptions('Discard Changes', 'Unsaved changes will be lost, would you like to continue?', 'No', 'Yes');\r\n this.modalService.show(yesNoModalOptions).subscribe((selectedModalOption: SelectedModalOption) =>\r\n {\r\n if (selectedModalOption === SelectedModalOption.Yes){\r\n this.resetPage();\r\n }\r\n if (selectedModalOption === SelectedModalOption.No){\r\n // do nothing stay in the dataGrid for edit\r\n }\r\n }\r\n );\r\n }\r\n\r\n private resetPage(): void {\r\n this.model.isAdding = false;\r\n this.model.isEditing = false;\r\n super.resetClicked();\r\n }\r\n\r\n // Private functions\r\n\r\n private buildSearchRequest(): StsTransferBalanceRequest {\r\n const request = new StsTransferBalanceRequest();\r\n request.enterpriseId = this.model.searchParams.customerEnterpriseId;\r\n return request;\r\n }\r\n\r\n private queryEnterprises(): Observable {\r\n const commonDataEnterpriseSearchParams = new CommonDataEnterpriseSearchParams();\r\n commonDataEnterpriseSearchParams.pipeline = this.sessionService.getPipeline().code;\r\n commonDataEnterpriseSearchParams.gasDay = GasDay.today();\r\n commonDataEnterpriseSearchParams.hasStorageBalanceLocation = true;\r\n return this.commonDataEnterpriseService.getAll(commonDataEnterpriseSearchParams)\r\n .pipe(\r\n tap(enterprises => {\r\n this.enterpriseEnrichmentService.enrichArray(enterprises, 'cid');\r\n this.model.enterprises = _.orderBy(enterprises, x => x.displayName);\r\n })\r\n );\r\n }\r\n\r\n private queryStorageBalances() : Observable {\r\n return this.stsTransferBalanceService.queryGetStorageBalances()\r\n .pipe(\r\n concatMap(stsTransferBalances => this.nominationGroupEnrichmentService.enrichArray(stsTransferBalances, 'nomGroupId')),\r\n concatMap(stsTransferBalances => this.locationEnrichmentService.enrichArray(stsTransferBalances, 'locationId', 'location')),\r\n tap(stsBalanceNomGroup => {\r\n this.model.stsBalanceNomGroup = stsBalanceNomGroup;\r\n })\r\n );\r\n }\r\n\r\n // Data grid Functions and events\r\n\r\n public debitNomGroupChanged(e : any) : void{\r\n this.model.debitLocations = _.filter(this.model.customerStorageBalances,nomGroup => nomGroup.nomGroupId === e.selectedItem.nomGroupId);\r\n }\r\n\r\n public creditNomGroupChanged(e : any) : void{\r\n this.model.creditLocations = _.filter(this.model.customerStorageBalances,nomGroup => nomGroup.nomGroupId === e.selectedItem.nomGroupId);\r\n }\r\n\r\n public onInitNewRow($event: any): void {\r\n $event.data.isEditing = true;\r\n const stsTransferBalance = $event.data as StsTransferBalance;\r\n stsTransferBalance.affectedGasDay = this.model.openGasMonth.start().toString();\r\n // const customerStorageBalances = _.filter(this.model.stsBalanceNomGroup,storageBalance => storageBalance.enterpriseId === this.model.searchParams.customerEnterpriseId );\r\n this.model.customerStorageBalances = _.filter(this.model.stsBalanceNomGroup,storageBalance => storageBalance.enterpriseId === this.model.searchParams.customerEnterpriseId );\r\n this.model.nominationGroups = _.uniqBy(_.sortBy(this.model.customerStorageBalances, x => x['mnemonic']),'nomGroupId');\r\n }\r\n\r\n public onEditorPreparing($event: any) : void {\r\n DataGridHooks.setEditorOptionsMinAndMax($event, $event.data, 'affectedGasDay',\r\n () => new MinAndMax(this.model.minGasDay.toDate, this.model.maxGasDay.toDate));\r\n }\r\n\r\n onEditorPrepared($event: any) {\r\n if ($event.parentType === 'dataRow') {\r\n let dxEditorInstance = null;\r\n switch ($event.dataField) {\r\n case \"debitNomGroupId\":\r\n const debitSelectBox = dx($event.editorElement).dxSelectBox('instance');\r\n if (debitSelectBox) {\r\n debitSelectBox.on('selectionChanged', x => this.debitNomGroupChanged(x));\r\n }\r\n break ;\r\n case \"creditNomGroupId\":\r\n const creditSelectBox = dx($event.editorElement).dxSelectBox('instance');\r\n if (creditSelectBox) {\r\n creditSelectBox.on('selectionChanged', x => this.creditNomGroupChanged(x));\r\n }\r\n break;\r\n /*case \"affectedGasDay\":\r\n dxEditorInstance = dx($event.editorElement).dxDateBox('instance');\r\n break;*/\r\n case \"energy\":\r\n dxEditorInstance = dx($event.editorElement).dxNumberBox('instance');\r\n break;\r\n }\r\n if (dxEditorInstance) {\r\n dxEditorInstance.option('valueChangeEvent', 'keydown keyup');\r\n dxEditorInstance.on('valueChanged', (vce) => {\r\n $event.setValue(vce.value);\r\n $event.component.getController('validating').validate().then((result: boolean) => {\r\n this.model.isEditingRowValid = result;\r\n });\r\n });\r\n }\r\n }\r\n }\r\n\r\n public onRowPrepared($event: any) {\r\n $event.rowElement.classList.add('gcts-grid-row');\r\n }\r\n\r\n public editClicked(cellInfo: any): void {\r\n this.alertService.clearMessages();\r\n this.model.isAdding = false;\r\n this.model.isEditing = true;\r\n cellInfo.data.isEditing = true;\r\n const stsTransfer = cellInfo.data as StsTransferBalance;\r\n // stsTransfer.energy = null;\r\n const element = this.dataGrid.instance.getCellElement(cellInfo.rowIndex, cellInfo.columnIndex - 1);\r\n this.dataGrid.instance.focus(element);\r\n cellInfo.component.editRow(cellInfo.rowIndex);\r\n }\r\n\r\n public deleteClicked(cellInfo: any): void {\r\n this.alertService.clearMessages();\r\n const yesNoModalOptions = new YesNoModalOptions('Delete Sts Transfer Balance', 'You are about to delete this Sts Transfer Balance, are you sure you want to continue?');\r\n this.modalService.show(yesNoModalOptions)\r\n .subscribe((selectedModalOption: SelectedModalOption) => {\r\n if (selectedModalOption === SelectedModalOption.Yes) {\r\n const stsTransferBalance = cellInfo.data as StsTransferBalance;\r\n this.stsTransferBalanceService.deleteStsTransferBalance(stsTransferBalance)\r\n .pipe(\r\n tap(() => this.alertService.addSuccessMessage(\"Delete Success:\", \"The selected IT Penalty was deleted successfully.\")),\r\n concatMap(() => this.performSearch())\r\n )\r\n .subscribe(() => {\r\n });\r\n }\r\n });\r\n }\r\n\r\n public cancelClicked(cellInfo: any): void {\r\n this.alertService.clearMessages();\r\n const yesNoModalOptions = new YesNoModalOptions('Discard Changes', 'Unsaved changes will be lost, would you like to continue?');\r\n this.modalService.show(yesNoModalOptions)\r\n .subscribe((selectedModalOption: SelectedModalOption) => {\r\n if(selectedModalOption === SelectedModalOption.Yes) {\r\n this.clearEditMode(cellInfo.data);\r\n this.dataGrid.instance.cancelEditData();\r\n this.performSearch().subscribe(() => {});\r\n }\r\n });\r\n }\r\n\r\n private clearEditMode(rowData: any): void {\r\n rowData.isEditing = false;\r\n this.model.isAdding = false;\r\n this.model.isEditing = false;\r\n }\r\n\r\n public dateFormater(date:string):string{\r\n const strInputValue = formatDate(date, 'yyyy-MM-dd', 'en-US');\r\n return strInputValue;\r\n }\r\n\r\n public saveClicked(cellInfo: any): void {\r\n this.alertService.clearMessages();\r\n this.dataGrid.instance.saveEditData().then(() => {\r\n const stsTransferBalance = cellInfo.row.data as StsTransferBalance;\r\n stsTransferBalance.affectedGasDay = this.dateFormater(stsTransferBalance.affectedGasDay);\r\n const searchRequest = this.buildSearchRequest();\r\n const saveObservable$ = this.model.isAdding\r\n ? this.stsTransferBalanceService.saveNewStsTransferBalance(stsTransferBalance,searchRequest)\r\n : this.stsTransferBalanceService.updateStsTransferBalance(stsTransferBalance);\r\n saveObservable$\r\n .subscribe(savedStsTransferBalance => {\r\n this.clearEditMode(cellInfo);\r\n this.performSearch().subscribe(() => {\r\n this.displaySavedAlert(stsTransferBalance);\r\n });\r\n },\r\n () => {\r\n // Provide users the ability to continue to edit the row on an server side validation error\r\n cellInfo.component.editRow(cellInfo.rowIndex);\r\n }\r\n );\r\n });\r\n }\r\n\r\n private displaySavedAlert(savedStsTransfer: StsTransferBalance): void {\r\n if (savedStsTransfer.debitNomGroupId || savedStsTransfer.creditNomGroupId) {\r\n this.alertService.addSuccessMessage(\"Save Success:\", \"Sts Transfer Balance was saved.\");\r\n } else {\r\n this.alertService.addWarnMessage(\"Save Success with Warning:\", \"Sts Transfer Balance was saved with Warnings.\");\r\n }\r\n }\r\n}\r\n\r\n\r\n","import {BaseViewModel} from \"@model/base-view-model\";\r\nimport * as _ from \"lodash\";\r\nimport {Enterprise} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {AccountingLocation} from \"@shared/interfaces/location\";\r\nimport {CommonDataLocation} from \"@shared/services/common-data/location/location.service\";\r\nimport {StorageBalance, StorageBalanceLocation, StorageBalanceNomGroup} from \"@shared/services/flowing-gas/flowing-gas-storage-balance-service/flowing-gas-storage-balance-service\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport {NominationGroupDto} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\n\r\nexport class StsBalanceParametersModel extends BaseViewModel {\r\n public storageEnterprises: Enterprise[];\r\n public currentGasDay: GasDay;\r\n public openBillingMonth: BillingMonth;\r\n public storageBalances: StorageBalance[];\r\n public selectedStorageBalance: StorageBalance;\r\n public selectedStorageBalanceId: number;\r\n\r\n public selectedStorageBalanceLocation: StorageBalanceLocation;\r\n public selectedStorageBalanceLocationId: number;\r\n\r\n public selectedStorageBalanceNomGroup: StorageBalanceNomGroup;\r\n public hasSearchResults: boolean = false;\r\n\r\n public searchButtonEnabled:boolean = false;\r\n public isEditing: boolean=false;\r\n public locationEnabled:boolean=false;\r\n public searchParams: StsBalanceSearchParams = new StsBalanceSearchParams();\r\n public lastSearchParams: StsBalanceSearchParams = new StsBalanceSearchParams();\r\n\r\n public locations: CommonDataLocation[];\r\n\r\n // Location Lookups\r\n locationType: LocationType[] = LocationType.all;\r\n upstreamDownstream: UpstreamDownstream[] = UpstreamDownstream.all;\r\n accountingLocations: AccountingLocation[];\r\n\r\n // NominationGroup Lookups\r\n injectionWithdrawal:InjectionWithdrawal[] = InjectionWithdrawal.all;\r\n allNominationGroups: NominationGroupDto[];\r\n saved: boolean = false;\r\n\r\n public expiryGasDay: GasDay = GasDay.today();\r\n public locationExpiryGasDay: GasDay = GasDay.today();\r\n public nomGroupExpiryGasDay: GasDay = GasDay.today();\r\n\r\n\r\n public getSelectedStorageBalanceLocationName():string{\r\n if(_.isNil(this.selectedStorageBalanceLocation)){\r\n return;\r\n }\r\n return this.selectedStorageBalanceLocation.locationName;\r\n }\r\n\r\n public getSelectedStorageBalanceNomGroupId():number{\r\n if(_.isNil(this.selectedStorageBalanceNomGroup)){\r\n return;\r\n }\r\n return this.selectedStorageBalanceNomGroup.nomGroupId;\r\n }\r\n\r\n public getLocationsGridHeader(): string {\r\n if(_.isNil(this.selectedStorageBalance.storageBalanceLocations)){\r\n return 'Active(0), Expired(0)';\r\n }\r\n const expiredLocations= _.filter(this.selectedStorageBalance.storageBalanceLocations,x=> GasDay.today().isGreaterThan(x.expiryGasDay));\r\n if(_.isNil(expiredLocations)){\r\n return `Active(${this.selectedStorageBalance.storageBalanceLocations.length}}), Expired(0)`;\r\n }\r\n return `Active (${this.selectedStorageBalance.storageBalanceLocations.length-expiredLocations.length}), Expired (${expiredLocations.length})`;\r\n }\r\n public getNominationGroupGridHeader(): string {\r\n if(_.isNil(this.selectedStorageBalance.storageBalanceNomGroups)){\r\n return 'Active(0), Expired(0)';\r\n }\r\n const expiredNomGroups= _.filter(this.selectedStorageBalance.storageBalanceNomGroups,x=> GasDay.today().isGreaterThan(x.expiryGasDay));\r\n if(_.isNil(expiredNomGroups)){\r\n return `Active(${this.selectedStorageBalance.storageBalanceNomGroups.length}}), Expired(0)`;\r\n }\r\n return `Active (${this.selectedStorageBalance.storageBalanceNomGroups.length-expiredNomGroups.length}), Expired (${expiredNomGroups.length})`;\r\n }\r\n}\r\nexport class LocationType {\r\n public static all: LocationType[] = [\r\n new LocationType('Injection', 'Injection', 2),\r\n new LocationType('Market', 'Market', 1),\r\n ];\r\n id: string;\r\n value: string;\r\n sortValue: number;\r\n\r\n constructor(id: string, value: string, sortValue: number) {\r\n this.id = id;\r\n this.value = value;\r\n this.sortValue = sortValue;\r\n }\r\n}\r\n\r\nexport class UpstreamDownstream {\r\n public static all: UpstreamDownstream[] = [\r\n new LocationType('Upstream', 'Upstream', 2),\r\n new LocationType('Downstream', 'Downstream', 1),\r\n ];\r\n id: string;\r\n value: string;\r\n sortValue: number;\r\n\r\n constructor(id: string, value: string, sortValue: number) {\r\n this.id = id;\r\n this.value = value;\r\n this.sortValue = sortValue;\r\n }\r\n}\r\n\r\nexport class StsBalanceSearchParams {\r\n // billingGasMonth: GasMonth;\r\n enterpriseCid: number;\r\n locationId: number;\r\n}\r\n\r\nexport class InjectionWithdrawal {\r\n public static all: UpstreamDownstream[] = [\r\n new LocationType('Injection', 'Injection', 1),\r\n new LocationType('Withdrawal', 'Withdrawal', 2),\r\n ];\r\n id: string;\r\n value: string;\r\n sortValue: number;\r\n\r\n constructor(id: string, value: string, sortValue: number) {\r\n this.id = id;\r\n this.value = value;\r\n this.sortValue = sortValue;\r\n }\r\n}\r\n\r\n\r\n","import {GasDay} from \"@model/gas-day\";\r\nimport * as _ from \"lodash\";\r\nimport {Observable} from \"rxjs\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {map} from \"rxjs/operators\";\r\nimport {Injectable} from \"@angular/core\";\r\nimport {FlowinggasResourceService} from \"@shared/resources/flowinggas-resource.service\";\r\nimport {IItPenaltyResponse, ItPenalty} from \"@shared/services/flowing-gas/it-penalties-service/it-penalties.service\";\r\nimport {Params} from \"@angular/router\";\r\n\r\n@Injectable()\r\nexport class FlowingGasStorageBalanceService {\r\n\r\n constructor(private flowingGasResource: FlowinggasResourceService) {\r\n }\r\n\r\n public getStorageBalance(enterpriseCid: number, locationId: number): Observable {\r\n const params = new GCTSHttpParams();\r\n params.setNumber('locationId', locationId);\r\n params.setNumber('enterpriseCid', enterpriseCid);\r\n\r\n return this.flowingGasResource.get(`/storageBalances`, true, params)\r\n .pipe(\r\n map(dtos => dtos.map(dto => StorageBalance.create(dto)))\r\n );\r\n }\r\n\r\n public insertStorageBalance(params:GCTSHttpParams, body:Params):Observable{\r\n return this.flowingGasResource.post(`/storageBalances`, body,true,params)\r\n .pipe(\r\n map(myStorageBalance => StorageBalance.create(myStorageBalance))\r\n );\r\n }\r\n\r\n public insertStorageBalanceLocation(params:GCTSHttpParams, body:Params,storageBalanceId: number):Observable{\r\n return this.flowingGasResource.post(`/storageBalances/${storageBalanceId}/locations`, body,true,params)\r\n .pipe(\r\n map(myStorageBalanceLocation => StorageBalanceLocation.create(myStorageBalanceLocation))\r\n );\r\n }\r\n public updateStorageBalanceLocation(params:GCTSHttpParams, body:Params,storageBalanceId: number,storageBalanceLocationId: number):Observable{\r\n return this.flowingGasResource.put(`/storageBalances/${storageBalanceId}/locations/${storageBalanceLocationId}`, body,true,params)\r\n .pipe(\r\n map(myStorageBalanceLocation => StorageBalanceLocation.create(myStorageBalanceLocation))\r\n );\r\n }\r\n\r\n public insertStorageBalanceNominationGroup(params:GCTSHttpParams, body:Params,storageBalanceId: number):Observable{\r\n return this.flowingGasResource.post(`/storageBalances/${storageBalanceId}/nomgroups`, body,true,params)\r\n .pipe(\r\n map(myStorageBalanceNominationGroup => StorageBalanceNomGroup.create(myStorageBalanceNominationGroup))\r\n );\r\n }\r\n public updateStorageBalanceNominationGroup(params:GCTSHttpParams, body:Params,storageBalanceId: number,storageBalanceLocationId: number):Observable{\r\n return this.flowingGasResource.put(`/storageBalances/${storageBalanceId}/nomgroups/${storageBalanceLocationId}`, body,true,params)\r\n .pipe(\r\n map(myStorageBalanceNomGroup => StorageBalanceNomGroup.create(myStorageBalanceNomGroup))\r\n );\r\n }\r\n\r\n\r\n\r\n\r\n public expireStorageBalance(proposedExpiryGasDay: GasDay, storageBalance: StorageBalance,pipelineCode: string):Observable{\r\n const params = new GCTSHttpParams();\r\n params.setGasDay(proposedExpiryGasDay,'expiryGasDay');\r\n params.setNumber('storageBalanceVersion', storageBalance.version);\r\n\r\n const body = {\r\n expiryGasDay: proposedExpiryGasDay.toString(),\r\n pipeline: pipelineCode,\r\n storageBalanceId: storageBalance.id,\r\n storageBalanceVersion: storageBalance.version\r\n };\r\n\r\n return this.flowingGasResource.put(`/storageBalances/${storageBalance.id}`, body,true,params)\r\n .pipe(\r\n map(myStorageBalance => StorageBalance.create(myStorageBalance))\r\n );\r\n }\r\n}\r\n\r\n\r\n\r\n\r\nexport interface IStorageBalance {\r\n id: string;\r\n locationId: string;\r\n enterpriseId: string;\r\n nomGroupId: string;\r\n effectiveGasDay: string;\r\n expiryGasDay: string;\r\n version: string;\r\n isExpired: string;\r\n\r\n storageBalanceNomGroups: IStorageBalanceNomGroup[];\r\n storageBalanceLocations: IStorageBalanceLocation[];\r\n}\r\nexport interface IStorageBalanceLocation{\r\n id: string;\r\n locationTypeCode: string;\r\n locationId: string;\r\n locationName: string;\r\n upstreamDownstreamCode: string;\r\n effectiveGasDay: string;\r\n expiryGasDay: string;\r\n isExpired: string;\r\n}\r\n\r\nexport class StorageBalanceLocation {\r\n id: number;\r\n locationTypeCode: string;\r\n locationId: number;\r\n locationName: string;\r\n upStreamDownStreamCode: string;\r\n effectiveGasDay: GasDay;\r\n expiryGasDay: GasDay;\r\n isExpired: boolean;\r\n\r\n public static create(dto: IStorageBalanceLocation): StorageBalanceLocation {\r\n const storageBalanceLocation = new StorageBalanceLocation();\r\n storageBalanceLocation.id = +dto.id;\r\n storageBalanceLocation.locationTypeCode = dto.locationTypeCode;\r\n storageBalanceLocation.locationId = +dto.locationId;\r\n storageBalanceLocation.locationName = dto.locationName;\r\n storageBalanceLocation.upStreamDownStreamCode = _.isNil(dto.upstreamDownstreamCode)? '' : dto.upstreamDownstreamCode;\r\n storageBalanceLocation.effectiveGasDay = GasDay.parse(dto.effectiveGasDay);\r\n storageBalanceLocation.expiryGasDay = GasDay.parse(dto.expiryGasDay);\r\n storageBalanceLocation.isExpired = this.getBoolean(dto.isExpired);\r\n return storageBalanceLocation;\r\n }\r\n private static getBoolean(value:any):boolean{\r\n switch(value){\r\n case true:\r\n case \"true\":\r\n case 1:\r\n case \"1\":\r\n case \"on\":\r\n case \"yes\":\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n}\r\n\r\nexport interface IStorageBalanceNomGroup {\r\n id: string;\r\n acctTypeCode: string;\r\n nomGroupId: string;\r\n serviceClass: string;\r\n effectiveGasDay: string;\r\n expiryGasDay: string;\r\n isExpired: string;\r\n}\r\n\r\nexport class StorageBalanceNomGroup {\r\n id: number;\r\n acctTypeCode: string;\r\n nomGroupId: number;\r\n serviceClass: string;\r\n effectiveGasDay: GasDay;\r\n expiryGasDay: GasDay;\r\n isExpired: boolean;\r\n\r\n public static create(dto: IStorageBalanceNomGroup): StorageBalanceNomGroup {\r\n const storageBalanceNomGroup = new StorageBalanceNomGroup();\r\n storageBalanceNomGroup.id = +dto.id;\r\n storageBalanceNomGroup.acctTypeCode = dto.acctTypeCode;\r\n storageBalanceNomGroup.nomGroupId = +dto.nomGroupId;\r\n storageBalanceNomGroup.serviceClass = dto.serviceClass;\r\n storageBalanceNomGroup.effectiveGasDay = GasDay.parse(dto.effectiveGasDay);\r\n storageBalanceNomGroup.expiryGasDay = GasDay.parse(dto.expiryGasDay);\r\n storageBalanceNomGroup.isExpired = this.getBoolean(dto.isExpired);\r\n return storageBalanceNomGroup;\r\n }\r\n private static getBoolean(value:any):boolean{\r\n switch(value){\r\n case true:\r\n case \"true\":\r\n case 1:\r\n case \"1\":\r\n case \"on\":\r\n case \"yes\":\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n}\r\n\r\nexport class StorageBalance {\r\n id: number;\r\n locationId: number;\r\n enterpriseId: number;\r\n nomGroupId: number;\r\n effectiveGasDay: GasDay;\r\n expiryGasDay: GasDay;\r\n version: number;\r\n isExpired: boolean;\r\n\r\n storageBalanceNomGroups: StorageBalanceNomGroup[];\r\n storageBalanceLocations: StorageBalanceLocation[];\r\n\r\n public static create(dto: IStorageBalance): StorageBalance {\r\n const storageBalance = new StorageBalance();\r\n\r\n storageBalance.id = +dto.id;\r\n storageBalance.locationId = +dto.locationId;\r\n storageBalance.enterpriseId = +dto.enterpriseId;\r\n storageBalance.nomGroupId = +dto.nomGroupId;\r\n storageBalance.effectiveGasDay = GasDay.parse(dto.effectiveGasDay);\r\n storageBalance.expiryGasDay = GasDay.parse(dto.expiryGasDay);\r\n storageBalance.version = +dto.version;\r\n storageBalance.isExpired = this.getBoolean(dto.isExpired);\r\n\r\n storageBalance.storageBalanceNomGroups = _.map(dto.storageBalanceNomGroups, dtos => StorageBalanceNomGroup.create(dtos));\r\n storageBalance.storageBalanceLocations = _.map(dto.storageBalanceLocations, dtos => StorageBalanceLocation.create(dtos));\r\n return storageBalance;\r\n }\r\n private static removeQuotes(valIn: string) {\r\n return valIn.replace(/^\"(.*)\"$/, '$1');\r\n }\r\n private static getBoolean(value:any):boolean{\r\n switch(value){\r\n case true:\r\n case \"true\":\r\n case 1:\r\n case \"1\":\r\n case \"on\":\r\n case \"yes\":\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n}\r\n\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n \r\n
\r\n
\r\n
You are about to expire balancing Nomination Group {{getSelectedSystemBalanceNomGroupId()}}, are you sure you want to continue?
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Customer: {{model.lastSearchParams?.enterpriseCid | displayName: 'cid' : 'storageEnterpriseDisplayName' : model.storageEnterprises}}\r\n Location: {{model.lastSearchParams?.locationId | displayName: 'id' : 'name': model.locations}}\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.enterpriseCid | displayName: 'cid' : 'storageEnterpriseDisplayName' : model.storageEnterprises}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.locationId | displayName: 'id' : 'name': model.locations}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n Balancing Nomination Group\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n
\r\n \r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n \r\n
\r\n
\r\n
You are about to expire {{this.model.getSelectedStorageBalanceLocationName()}}, are you sure you want to continue?
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Locations: {{model.getLocationsGridHeader()}}\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n \r\n
\r\n
\r\n
You are about to expire {{this.model.getSelectedStorageBalanceNomGroupId()}}, are you sure you want to continue?
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n Nomination Groups: {{this.model.getNominationGroupGridHeader()}}\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n","import {Component, ViewChild} from \"@angular/core\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {CommonDataEnterpriseSearchParams, Enterprise, EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {LocationSearchRequest, LocationService} from \"@shared/services/common-data/location/location.service\";\r\nimport {LocationEnrichmentService} from \"@shared/services/enrichment/location-enrichment.service\";\r\nimport {NomGroupEnrichmentService} from \"@shared/services/enrichment/nomgroup-enrichment.service\";\r\nimport {NominationGroupService} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {forkJoin, Observable, of} from \"rxjs\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {concatMap, tap} from \"rxjs/operators\";\r\nimport * as _ from \"lodash\";\r\nimport {StsBalanceParametersModel} from \"app/gcts/administration/sts-balance-parameters/sts-balance-parameters.model\";\r\nimport {CommonDataGasdayService, ServerTimeData} from \"@shared/services/common-data/common-data-gasday/common-data-gasday.service\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {FlowingGasStorageBalanceService, StorageBalance, StorageBalanceLocation, StorageBalanceNomGroup} from \"@shared/services/flowing-gas/flowing-gas-storage-balance-service/flowing-gas-storage-balance-service\";\r\nimport {ModalComponent} from \"@shared/components/modal/modal.component\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {DateTime} from \"@model/date-time\";\r\nimport * as dx from \"devextreme/core/renderer\";\r\n\r\n\r\n\r\n@Component({\r\n selector: 'app-sts-balance-parameters',\r\n templateUrl: './sts-balance-parameters.component.html',\r\n styleUrls: ['./sts-balance-parameters.component.css']\r\n})\r\nexport class StsBalanceParametersComponent extends BaseSearchComponent {\r\n\r\n constructor(protected appService: AppService,\r\n protected activatedRoute: ActivatedRoute,\r\n protected router: Router,\r\n protected alertService: AlertService,\r\n private commonDataBillingMonthService: CommonDataBillingMonthService,\r\n private enterpriseService: EnterpriseService,\r\n private enterpriseEnrichmentService: EnterpriseEnrichmentService,\r\n private locationService: LocationService,\r\n private locationEnrichmentService: LocationEnrichmentService,\r\n private flowingGasStorageBalanceService: FlowingGasStorageBalanceService,\r\n private nomGroupEnrichmentService: NomGroupEnrichmentService,\r\n private nominationGroupService: NominationGroupService,\r\n private sessionService: SessionService,\r\n private commonDataGasDayService: CommonDataGasdayService\r\n ) {\r\n super('Storage Transportation Balance Parameters', appService, activatedRoute, router, alertService);\r\n\r\n enterpriseEnrichmentService.setEnrichmentResource(enterpriseService);\r\n locationEnrichmentService.setEnrichmentResource(locationService);\r\n nomGroupEnrichmentService.setEnrichmentResource(nominationGroupService);\r\n\r\n this.getFilteredNomGroups = this.getFilteredNomGroups.bind(this);\r\n this.setNomGroupAndServiceClassValue = this.setNomGroupAndServiceClassValue.bind(this);\r\n }\r\n public model: StsBalanceParametersModel = new StsBalanceParametersModel();\r\n public selectedType: string;\r\n public upDownSelectBox: any;\r\n @ViewChild('expireModal') expireModal: ModalComponent;\r\n @ViewChild('expireLocationModal') expireLocationModal: ModalComponent;\r\n @ViewChild('expireNomGroupModal') expireNomGroupModal: ModalComponent;\r\n @ViewChild('storageBalanceLocationsGrid') storageBalanceLocationsGrid: DxDataGridComponent;\r\n @ViewChild('storageBalanceNomGroupsGrid') storageBalanceNomGroupsGrid: DxDataGridComponent;\r\n @ViewChild('storageBalanceGrid') storageBalanceGrid: DxDataGridComponent;\r\n\r\n /**\r\n * Protected Methods\r\n *\r\n */\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n const paramValidator = ParamValidator.Standard();\r\n paramValidator.isNumber('enterpriseCid');\r\n paramValidator.isNumber('locationId');\r\n return paramValidator.isValid(params);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {};\r\n params['enterpriseCid'] = this.model.searchParams.enterpriseCid;\r\n params['locationId'] = this.model.searchParams.locationId;\r\n return params;\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n const saved = this.activatedRoute.snapshot.queryParams['saved'];\r\n if (!_.isNil(saved) && \"true\"===saved) {\r\n this.model.saved = true;\r\n }else{\r\n this.model.saved=false;\r\n }\r\n\r\n const time$ = this.commonDataGasDayService.getServerTimeData()\r\n .pipe(\r\n tap((time:ServerTimeData ) => this.model.currentGasDay = time.gasDay),\r\n );\r\n const billingMonth$ = this.commonDataBillingMonthService.getOpen()\r\n .pipe(\r\n tap(openBillingMonth => {\r\n this.model.openBillingMonth = openBillingMonth;\r\n })\r\n );\r\n return forkJoin([time$,billingMonth$]);\r\n }\r\n\r\n public onCustomerChanged():void{\r\n // if search params match the activated route you shouldn't\r\n // need to clear out the location id as it is likely due to a cancel event\r\n if(!(this.activatedRoute.queryParams['enterpriseCid']===this.model.searchParams.enterpriseCid) ||\r\n !(this.activatedRoute.queryParams['locationId']===this.model.searchParams.locationId)) {\r\n this.model.searchParams.locationId = null;\r\n }\r\n if(_.isNil(this.model.searchParams.enterpriseCid)){\r\n this.model.locationEnabled=false;\r\n }else{\r\n this.getLocations().subscribe();\r\n this.model.locationEnabled=true;\r\n }\r\n this.setSearchButtonEnabled();\r\n }\r\n public onLocationChanged():void{\r\n this.setSearchButtonEnabled();\r\n }\r\n\r\n private setSearchButtonEnabled():void{\r\n if(_.isNil(this.model.searchParams.enterpriseCid) || _.isNil(this.model.searchParams.locationId)) {\r\n this.model.searchButtonEnabled = false;\r\n }else{\r\n this.model.searchButtonEnabled = true;\r\n }\r\n }\r\n\r\n public getLocations():Observable{\r\n const locationSearchRequest=new LocationSearchRequest();\r\n locationSearchRequest.gasDay = this.model.currentGasDay;\r\n locationSearchRequest.operatorCid = this.model.searchParams.enterpriseCid;\r\n locationSearchRequest.hasStorageBalanceLocation = true;\r\n\r\n return this.locationService.queryLocations(locationSearchRequest)\r\n .pipe(\r\n tap(commonDataLocations => {\r\n this.model.locations = _.sortBy(commonDataLocations,x=> x.name);\r\n if(commonDataLocations.length===1){\r\n this.model.searchParams.locationId = commonDataLocations[0].id;\r\n this.setSearchButtonEnabled();\r\n }\r\n })\r\n );\r\n }\r\n\r\n public getAccountLocations(): Observable{\r\n return this.locationService.queryAccountLocationsGivenGasDay(this.model.currentGasDay)\r\n .pipe(\r\n tap(accountingLocations => {\r\n this.model.accountingLocations = accountingLocations;\r\n })\r\n );\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n const commonDataEnterpriseSearchParams= new CommonDataEnterpriseSearchParams ();\r\n commonDataEnterpriseSearchParams.hasStorageBalanceLocation=true;\r\n commonDataEnterpriseSearchParams.pipeline = \"ML\";\r\n commonDataEnterpriseSearchParams.gasDay = GasDay.today();\r\n const queryStorageEnterprises$ = this.enterpriseService.getAll(commonDataEnterpriseSearchParams)\r\n .pipe(\r\n concatMap(storageEnterprises => this.enterpriseEnrichmentService.enrichArray(storageEnterprises, 'cid', 'storageEnterprise')),\r\n tap(storageEnterprises => {\r\n this.model.storageEnterprises = storageEnterprises;\r\n })\r\n );\r\n\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set(\"businessRight\",\"MainlineTransportation\");\r\n params.setGasDay(this.model.openBillingMonth.gasMonth.start(),\"fromGasDay\");\r\n params.setBoolean(\"includeServiceClass\",true);\r\n params.setGasDay(GasDay.endOfTime(),\"toGasDay\");\r\n\r\n const getAllNominationGroups$= this.nominationGroupService.getVariant2(params)\r\n .pipe(\r\n tap( nomGroups => {\r\n this.model.allNominationGroups = nomGroups;\r\n })\r\n );\r\n\r\n const getAccountLocations$ = this.getAccountLocations();\r\n\r\n return forkJoin([queryStorageEnterprises$,getAccountLocations$,getAllNominationGroups$]);\r\n }\r\n\r\n\r\n onRowPrepared(info:any) {\r\n if (info.rowType === \"data\")\r\n if(info.data.id===this.model.selectedStorageBalanceId)\r\n // info.rowElement.style.backgroundColor = 'lightseagreen';\r\n info.rowElement.style.backgroundColor = '#00A33980';\r\n info.rowElement.className = info.rowElement.className.replace(\"dx-row-alt\", \"\");\r\n }\r\n\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n\r\n if(this.model.saved===true){\r\n this.alertService.addSuccessMessage(\"Success\", \"The storage balance was successfully added.\");\r\n this.model.saved=false;\r\n }\r\n\r\n this.setSearchButtonEnabled();\r\n const getLocations$ = this.getLocations();\r\n const queryStorageBalance$ = this.flowingGasStorageBalanceService.getStorageBalance(this.model.searchParams.enterpriseCid,this.model.searchParams.locationId)\r\n .pipe(\r\n tap(storageBalances => {\r\n this.model.storageBalances =_.sortBy(storageBalances, storageBalance => storageBalance.expiryGasDay).reverse();\r\n this.selectStorageBalanceRecord();\r\n this.model.hasSearchResults = true;\r\n })\r\n );\r\n if(_.isNil(this.model.locations)){\r\n // perform search initiated from add page and locations are probably not populated yet so lets add them\r\n if(!_.isNil(this.model.searchParams.enterpriseCid)){\r\n this.model.locationEnabled=true;\r\n }\r\n return forkJoin([queryStorageBalance$,getLocations$]);\r\n }else{\r\n return forkJoin([queryStorageBalance$]);\r\n }\r\n }\r\n\r\n protected expiryDateCustomizeText(cellInfo:any):any {\r\n if(_.isNil(cellInfo.value)){\r\n return \"\";\r\n }\r\n if(GasDay.endOfTime().isEqual(cellInfo.value)){\r\n return \"\";\r\n }\r\n return cellInfo.value.toDisplayFormat();\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n protected resetCompleted(): void {\r\n this.model.lastSearchParams = null;\r\n this.model.hasSearchResults = false;\r\n this.model.isEditing = false;\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams.enterpriseCid = null;\r\n this.model.searchParams.locationId = null;\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams.enterpriseCid = typedParams.asNumber('enterpriseCid');\r\n this.model.searchParams.locationId = typedParams.asNumber('locationId');\r\n }\r\n\r\n private selectStorageBalanceRecord(id?: number): void{\r\n if(_.isNil(id)){\r\n this.model.selectedStorageBalance = this.model.storageBalances[0];\r\n }else{\r\n this.model.selectedStorageBalance = _.find(this.model.storageBalances, x => x.id === id);\r\n }\r\n this.model.selectedStorageBalanceId = this.model.selectedStorageBalance.id;\r\n }\r\n\r\n\r\n // MR Balancing Nomination Grid Methods\r\n public storageAddButtonClicked(): void {\r\n // MR need to re-navigate also to remove the parameters from the url also\r\n const queryParams = {\r\n enterpriseCid: this.model.searchParams.enterpriseCid,\r\n locationId: this.model.searchParams.locationId,\r\n };\r\n const url = ['/app', this.getPipelineCode(), 'stsbalances', 'add'];\r\n this.router.navigate(url, {queryParams}).then(() => {});\r\n }\r\n\r\n public getSelectedSystemBalanceNomGroupId(): number {\r\n if(!_.isNil(this.model.selectedStorageBalance) && !_.isNil(this.model.selectedStorageBalance.nomGroupId)){\r\n return this.model.selectedStorageBalance.nomGroupId;\r\n }\r\n return null;\r\n }\r\n\r\n public openExpireStorageBalanceModal(e) {\r\n this.alertService.clearMessages();\r\n if (e.rowType === 'data') {\r\n this.selectStorageBalanceRecord(e.data.id);\r\n this.expireModal.show();\r\n }\r\n }\r\n public expireStorageBalance():void{\r\n this.updateExpiryOnStorageBalance().subscribe();\r\n }\r\n\r\n private updateExpiryOnStorageBalance():Observable{\r\n return this.flowingGasStorageBalanceService.expireStorageBalance(\r\n this.model.expiryGasDay,\r\n this.model.selectedStorageBalance,\r\n this.sessionService.getPipeline().code)\r\n .pipe(\r\n tap(storageBalance => {\r\n if(this.model.expiryGasDay.isEqual(storageBalance.expiryGasDay)){\r\n this.alertService.addSuccessMessage(\"Storage Balance Expired\",`The storage balance was expired successfully.`);\r\n this.performSearch().subscribe();\r\n }\r\n this.selectStorageBalanceRecord(storageBalance.id);\r\n })\r\n );\r\n }\r\n\r\n onRowClick(evt: any, data: any): void {\r\n this.model.selectedStorageBalance = this.model.storageBalances[data.rowIndex];\r\n this.model.selectedStorageBalanceId = data.data.id;\r\n this.storageBalanceGrid.instance.repaint();\r\n }\r\n\r\n /**\r\n * Location Grid Public Methods\r\n *\r\n */\r\n public onAddLocationClicked(){\r\n this.alertService.clearMessages();\r\n if (_.isNil(this.storageBalanceLocationsGrid) || _.isNil(this.storageBalanceLocationsGrid.instance)) return;\r\n this.storageBalanceLocationsGrid.instance.addRow();\r\n this.model.isEditing = true;\r\n }\r\n\r\n public onInitNewLocationRow(e: any): void {\r\n e.data.isEditing = true;\r\n const storageBalanceLocation = e.data as StorageBalanceLocation;\r\n storageBalanceLocation.effectiveGasDay = this.model.openBillingMonth.gasMonth.start();\r\n }\r\n\r\n public cancelLocationClicked(e: any){\r\n this.alertService.clearMessages();\r\n this.storageBalanceLocationsGrid.instance.cancelEditData();\r\n this.model.isEditing = false;\r\n }\r\n\r\n public saveLocationClicked(e: any){\r\n // requirements for saving a location is a location type, Location and Effective Date\r\n // validate params\r\n this.alertService.clearMessages();\r\n if (this.thereIsALocationValidationError(e)){return;}\r\n const newStorageBalanceLocationRow = new StorageBalanceLocation();\r\n newStorageBalanceLocationRow.locationTypeCode = e.values[0];\r\n newStorageBalanceLocationRow.locationName = e.values[1];\r\n const foundLocation = _.find(this.model.accountingLocations,locations => locations.name===e.values[1]);\r\n // @ts-ignore\r\n newStorageBalanceLocationRow.locationId = foundLocation.id;\r\n if(!_.isNil(e.values[2])) {\r\n newStorageBalanceLocationRow.upStreamDownStreamCode = e.values[2];\r\n }\r\n if(!_.isNil(e.values[3])) {\r\n const dateTime = DateTime.parse(e.values[3]);\r\n newStorageBalanceLocationRow.effectiveGasDay = GasDay.fromDateTime(dateTime);\r\n }\r\n\r\n this.insertStorageBalanceLocation(newStorageBalanceLocationRow).subscribe();\r\n this.model.isEditing = false;\r\n }\r\n\r\n public thereIsALocationValidationError(e:any): boolean{\r\n let errorFound = false;\r\n if(_.isNil(e.values[0])){\r\n this.alertService.addWarnMessage(\"Invalid Location Type Code:\",\"Please select a valid type code\");\r\n errorFound=true;\r\n }\r\n if(_.isNil(e.values[1])){\r\n this.alertService.addWarnMessage(\"Invalid Location:\",\"Please select a location\");\r\n errorFound=true;\r\n }\r\n return errorFound;\r\n }\r\n\r\n public openExpireStorageBalanceLocationModal(e) {\r\n this.alertService.clearMessages();\r\n if (e.rowType === 'data') {\r\n this.selectSystemBalanceLocationRecord(e.rowIndex);\r\n this.expireLocationModal.show();\r\n }\r\n }\r\n public expireStorageBalanceLocation():void{\r\n this.expireLocationModal.hide();\r\n this.updateExpiryOnStorageBalanceLocation().subscribe();\r\n }\r\n\r\n public updateExpiryOnStorageBalanceLocation():Observable{\r\n const params = new GCTSHttpParams();\r\n params.setGasDay(this.model.selectedStorageBalanceLocation.effectiveGasDay,'effectiveGasDay');\r\n params.setGasDay(this.model.locationExpiryGasDay,'expiryGasDay');\r\n params.setNumber('locationId', this.model.selectedStorageBalanceLocation.locationId);\r\n params.set(\"locationName\",this.model.selectedStorageBalanceLocation.locationName);\r\n params.set(\"locationTypeCode\",this.model.selectedStorageBalanceLocation.locationTypeCode);\r\n params.setNumber('storageBalanceVersion', this.model.selectedStorageBalance.version);\r\n if(!_.isNil(this.model.selectedStorageBalanceLocation.upStreamDownStreamCode)) {\r\n params.set('upstreamDownstreamCode', this.model.selectedStorageBalanceLocation.upStreamDownStreamCode);\r\n }\r\n\r\n const body = {\r\n effectiveGasDay: this.model.selectedStorageBalanceLocation.effectiveGasDay.toString(),\r\n expiryGasDay: this.model.locationExpiryGasDay.toString(),\r\n id: this.model.selectedStorageBalanceLocation.id,\r\n isExpired: this.model.selectedStorageBalanceLocation.expiryGasDay.isLessThan(GasDay.today()),\r\n locationId: this.model.selectedStorageBalanceLocation.locationId,\r\n locationName: this.model.selectedStorageBalanceLocation.locationName,\r\n locationTypeCode: this.model.selectedStorageBalanceLocation.locationTypeCode,\r\n pipeline: this.sessionService.getPipeline().code,\r\n name: this.model.selectedStorageBalanceLocation.locationName,\r\n storageBalanceId: this.model.selectedStorageBalance.id.toString(),\r\n storageBalanceLocationId: this.model.selectedStorageBalanceLocation.id,\r\n storageBalanceVersion:this.model.selectedStorageBalance.version.toString(),\r\n upStreamDownStreamCode: this.model.selectedStorageBalanceLocation.upStreamDownStreamCode,\r\n };\r\n return this.flowingGasStorageBalanceService.updateStorageBalanceLocation(\r\n params,body,this.model.selectedStorageBalance.id,this.model.selectedStorageBalanceLocationId)\r\n .pipe(\r\n tap(storageBalanceLocation => {\r\n if (!_.isNil(storageBalanceLocation)) {\r\n if(storageBalanceLocation.expiryGasDay.isEqual(this.model.locationExpiryGasDay))\r\n this.alertService.addSuccessMessage(\"Success: \",`The ${this.model.selectedStorageBalanceLocation.locationName} location was expired successfully.`);\r\n this.performSearch().subscribe();\r\n }\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Location Grid Private Methods\r\n *\r\n */\r\n\r\n private insertStorageBalanceLocation(newStorageBalanceLocationRow:StorageBalanceLocation):Observable{\r\n const params = new GCTSHttpParams();\r\n params.setGasDay(newStorageBalanceLocationRow.effectiveGasDay,'effectiveGasDay');\r\n params.setGasDay(this.model.selectedStorageBalance.expiryGasDay,'expiryGasDay');\r\n params.setNumber('locationId', newStorageBalanceLocationRow.locationId);\r\n params.set(\"locationName\",newStorageBalanceLocationRow.locationName);\r\n params.set(\"locationTypeCode\",newStorageBalanceLocationRow.locationTypeCode);\r\n params.setNumber('storageBalanceVersion', this.model.selectedStorageBalance.version);\r\n params.setOptionalString('upstreamDownstreamCode', newStorageBalanceLocationRow.upStreamDownStreamCode);\r\n\r\n const body = {\r\n effectiveGasDay: newStorageBalanceLocationRow.effectiveGasDay.toString(),\r\n expiryGasDay: this.model.selectedStorageBalance.expiryGasDay.toString(),\r\n location: newStorageBalanceLocationRow.locationId.toString(),\r\n locationId: newStorageBalanceLocationRow.locationId.toString(),\r\n locationName: newStorageBalanceLocationRow.locationName,\r\n locationTypeCode: newStorageBalanceLocationRow.locationTypeCode,\r\n name: newStorageBalanceLocationRow.locationName,\r\n pipeline: this.sessionService.getPipeline().code,\r\n storageBalanceId: this.model.selectedStorageBalance.id.toString(),\r\n storageBalanceVersion:this.model.selectedStorageBalance.version.toString(),\r\n upStreamDownStreamCode: newStorageBalanceLocationRow.upStreamDownStreamCode,\r\n };\r\n\r\n return this.flowingGasStorageBalanceService.insertStorageBalanceLocation(\r\n params,body,this.model.selectedStorageBalance.id)\r\n .pipe(\r\n tap(storageBalanceLocation => {\r\n if (!_.isNil(storageBalanceLocation)) {\r\n // sucessfully inserted\r\n this.alertService.addSuccessMessage(\"Location Added:\", `The ${storageBalanceLocation.locationName} location was added successfully.`);\r\n this.performSearch().subscribe();\r\n }\r\n })\r\n );\r\n }\r\n\r\n private selectSystemBalanceLocationRecord(rowindex: number): void{\r\n this.model.selectedStorageBalanceLocation = this.model.selectedStorageBalance.storageBalanceLocations[rowindex];\r\n this.model.selectedStorageBalanceLocationId = this.model.selectedStorageBalanceLocation.id;\r\n }\r\n\r\n\r\n /**\r\n * Nom Group Grid Public Methods\r\n *\r\n */\r\n\r\n public getFilteredNomGroups(options) {\r\n let comparisionOperator = \"=\";\r\n\r\n if (!_.isNil(options.data)) {\r\n comparisionOperator = (options.data.acctTypeCode === \"Injection\") ? \"<>\" : \"=\";\r\n }\r\n\r\n return {\r\n store: this.model.allNominationGroups,\r\n filter: options.data ? [\r\n [\"ownerEnterpriseId\", \"=\", this.model.searchParams.enterpriseCid],\r\n [\"serviceType\", comparisionOperator, 'STS']] : null\r\n };\r\n }\r\n\r\n public setNomGroupAndServiceClassValue(rowData: any, value: any): void {\r\n rowData.nomGroupId = value;\r\n rowData.serviceClass = this.getServiceClassFromNomGroupId(value);\r\n }\r\n\r\n\r\n\r\n public setAcctTypeCodeValue(rowData: any, value: any): void {\r\n rowData.nomGroupId = null;\r\n (this as any).defaultSetCellValue(rowData, value);\r\n }\r\n\r\n // Disables the Nom Group Id select box if an STS type hasn't been selected\r\n public onEditorPreparing(e: any) {\r\n if(e.parentType === \"dataRow\" && e.dataField === \"nomGroupId\") {\r\n e.editorOptions.disabled = (typeof(e.row.data.acctTypeCode) !== \"string\");\r\n }\r\n }\r\n\r\n /**\r\n * Disables the Up Stream/ Down Stream select box when Injection is selected\r\n * Reference: https://supportcenter.devexpress.com/ticket/details/t364240/enabling-or-disabling-a-grid-cell-based-on-lookup-selected-value\r\n */\r\n public onEditorPrepared(e: any) {\r\n if (e.parentType === 'dataRow' && e.dataField === 'locationTypeCode') {\r\n const locationTypeSelectBox = dx(e.editorElement).dxSelectBox('instance');\r\n\r\n if (locationTypeSelectBox) {\r\n locationTypeSelectBox.on('valueChanged', x => {\r\n this.selectedType = x.value;\r\n this.upDownSelectBox.option(\"disabled\", this.selectedType === 'Injection');\r\n });\r\n }\r\n }\r\n\r\n if (e.parentType === 'dataRow' && e.dataField === 'upStreamDownStreamCode') {\r\n this.upDownSelectBox = dx(e.editorElement).dxSelectBox('instance');\r\n\r\n if (this.upDownSelectBox) {\r\n this.upDownSelectBox.option(\"disabled\", this.selectedType === 'Injection');\r\n }\r\n }\r\n }\r\n\r\n public onAddNominationGroupClicked(){\r\n this.alertService.clearMessages();\r\n if (_.isNil(this.storageBalanceNomGroupsGrid) || _.isNil(this.storageBalanceNomGroupsGrid.instance)) return;\r\n this.storageBalanceNomGroupsGrid.instance.addRow();\r\n this.model.isEditing = true;\r\n }\r\n\r\n public onInitNewNomGroupRow(e: any): void {\r\n e.data.isEditing = true;\r\n\r\n const storageBalanceNomGroup = e.data as StorageBalanceNomGroup;\r\n storageBalanceNomGroup.effectiveGasDay = this.model.openBillingMonth.gasMonth.start();\r\n }\r\n\r\n public cancelNominationGroupClicked(e: any){\r\n this.alertService.clearMessages();\r\n this.storageBalanceNomGroupsGrid.instance.cancelEditData();\r\n this.model.isEditing = false;\r\n }\r\n public saveNominationGroupClicked(e:any){\r\n // // requirements for saving a location is a location type, Location and Effective Date\r\n // // validate params\r\n this.alertService.clearMessages();\r\n if (this.thereIsANominationGroupValidationError(e)){return;}\r\n const newStorageBalanceNomGroupRow = new StorageBalanceNomGroup();\r\n // id: number;\r\n // acctTypeCode: string;\r\n // nomGroupId: number;\r\n // serviceClass: string;\r\n // effectiveGasDay: GasDay;\r\n // expiryGasDay: GasDay;\r\n // isExpired: boolean;\r\n newStorageBalanceNomGroupRow.acctTypeCode = e.values[0];\r\n newStorageBalanceNomGroupRow.nomGroupId = e.values[1];\r\n const foundNomGroup = _.find(this.model.allNominationGroups,nomGroups => nomGroups.id===e.values[1]);\r\n\r\n // @ts-ignore\r\n newStorageBalanceNomGroupRow.serviceClass = foundNomGroup.serviceType;\r\n if(!_.isNil(e.values[3])) {\r\n const dateTime = DateTime.parse(e.values[3]);\r\n newStorageBalanceNomGroupRow.effectiveGasDay = GasDay.fromDateTime(dateTime);\r\n }\r\n\r\n this.insertStorageBalanceNominationGroup(newStorageBalanceNomGroupRow).subscribe();\r\n this.model.isEditing = false;\r\n }\r\n\r\n public thereIsANominationGroupValidationError(e:any): boolean{\r\n let errorFound = false;\r\n if(_.isNil(e.values[0])){\r\n this.alertService.addWarnMessage(\"Invalid Account Type Code:\",\"Please select a valid nom group account type code.\");\r\n errorFound=true;\r\n }\r\n if(_.isNil(e.values[1])){\r\n this.alertService.addWarnMessage(\"Invalid NomGroup:\",\"Please select a nom group.\");\r\n errorFound=true;\r\n }\r\n return errorFound;\r\n }\r\n\r\n public openExpireStorageBalanceNomGroupModal(e) {\r\n this.alertService.clearMessages();\r\n if (e.rowType === 'data') {\r\n this.selectSystemBalanceNomGroupRecord(e.rowIndex);\r\n this.expireNomGroupModal.show();\r\n }\r\n }\r\n public expireStorageBalanceNomGroup():void{\r\n this.expireNomGroupModal.hide();\r\n this.updateExpiryOnStorageBalanceNomGroup().subscribe();\r\n }\r\n\r\n public updateExpiryOnStorageBalanceNomGroup():Observable{\r\n const params = new GCTSHttpParams();\r\n params.set(\"acctTypeCode\",this.model.selectedStorageBalanceNomGroup.acctTypeCode);\r\n params.setNumber('childNomGroupId', this.model.selectedStorageBalanceNomGroup.nomGroupId);\r\n params.setGasDay(this.model.selectedStorageBalanceNomGroup.effectiveGasDay,'effectiveGasDay');\r\n params.setGasDay(this.model.nomGroupExpiryGasDay,'expiryGasDay');\r\n params.set(\"serviceClass\",this.model.selectedStorageBalanceNomGroup.serviceClass);\r\n params.setNumber('storageBalanceVersion', this.model.selectedStorageBalance.version);\r\n\r\n const body = {\r\n acctTypeCode: this.model.selectedStorageBalanceNomGroup.acctTypeCode,\r\n effectiveGasDay: this.model.selectedStorageBalanceNomGroup.effectiveGasDay.toString(),\r\n expiryGasDay: this.model.nomGroupExpiryGasDay.toString(),\r\n id: this.model.selectedStorageBalanceNomGroup.id.toString(),\r\n isExpired: this.model.selectedStorageBalanceNomGroup.expiryGasDay.isLessThan(GasDay.today()),\r\n nomGroupId: this.model.selectedStorageBalanceNomGroup.nomGroupId,\r\n pipeline: this.sessionService.getPipeline().code,\r\n serviceClass: this.model.selectedStorageBalanceNomGroup.serviceClass,\r\n storageBalanceId: this.model.selectedStorageBalance.id.toString(),\r\n storageBalanceNomGroupId: this.model.selectedStorageBalanceNomGroup.id.toString(),\r\n storageBalanceVersion:this.model.selectedStorageBalance.version.toString(),\r\n };\r\n return this.flowingGasStorageBalanceService.updateStorageBalanceNominationGroup(\r\n params,body,this.model.selectedStorageBalance.id,this.model.selectedStorageBalanceNomGroup.id)\r\n .pipe(\r\n tap(storageBalanceNomGroup => {\r\n if (!_.isNil(storageBalanceNomGroup)) {\r\n if(storageBalanceNomGroup.expiryGasDay.isEqual(this.model.nomGroupExpiryGasDay))\r\n this.alertService.addSuccessMessage(\"Success: \",`The Nom Group ${this.model.selectedStorageBalanceNomGroup.nomGroupId} was expired successfully.`);\r\n this.performSearch().subscribe();\r\n }\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Nom Group Grid Public Methods\r\n *\r\n */\r\n private getServiceClassFromNomGroupId(value: number): string {\r\n const nomGroup = _.find(this.model.allNominationGroups, ng => ng.id === value);\r\n return nomGroup.serviceType;\r\n }\r\n\r\n private insertStorageBalanceNominationGroup(newStorageBalanceNomGroupRow:StorageBalanceNomGroup):Observable{\r\n const params = new GCTSHttpParams();\r\n params.set(\"acctTypeCode\",newStorageBalanceNomGroupRow.acctTypeCode);\r\n params.setNumber('childNomGroupId', newStorageBalanceNomGroupRow.nomGroupId);\r\n params.setGasDay(newStorageBalanceNomGroupRow.effectiveGasDay,'effectiveGasDay');\r\n params.setGasDay(this.model.selectedStorageBalance.expiryGasDay,'expiryGasDay');\r\n params.set(\"serviceClass\",newStorageBalanceNomGroupRow.serviceClass);\r\n params.setNumber('storageBalanceVersion', this.model.selectedStorageBalance.version);\r\n\r\n const body = {\r\n acctTypeCode: newStorageBalanceNomGroupRow.acctTypeCode,\r\n effectiveGasDay: newStorageBalanceNomGroupRow.effectiveGasDay.toString(),\r\n expiryGasDay: this.model.selectedStorageBalance.expiryGasDay.toString(),\r\n nomGroupId: newStorageBalanceNomGroupRow.nomGroupId.toString(),\r\n pipeline: this.sessionService.getPipeline().code,\r\n serviceClass: newStorageBalanceNomGroupRow.serviceClass,\r\n storageBalanceId: this.model.selectedStorageBalance.id.toString(),\r\n storageBalanceVersion:this.model.selectedStorageBalance.version.toString(),\r\n };\r\n\r\n return this.flowingGasStorageBalanceService.insertStorageBalanceNominationGroup(\r\n params,body,this.model.selectedStorageBalance.id)\r\n .pipe(\r\n tap(storageBalanceNomGroup => {\r\n if (!_.isNil(storageBalanceNomGroup)) {\r\n // sucessfully inserted\r\n this.alertService.addSuccessMessage(\"Nomgroup Added:\", `Nom Group ${storageBalanceNomGroup.nomGroupId} was added successfully.`);\r\n this.performSearch().subscribe();\r\n }\r\n })\r\n );\r\n }\r\n\r\n private selectSystemBalanceNomGroupRecord(rowindex: number): void{\r\n this.model.selectedStorageBalanceNomGroup = this.model.selectedStorageBalance.storageBalanceNomGroups[rowindex];\r\n // this.model.selectedStorageBalanceNomGroupId = this.model.selectedStorageBalanceLocation.id;\r\n }\r\n\r\n}\r\n","import {BaseViewModel} from \"@model/base-view-model\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport {Enterprise} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {NominationGroupDto} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport {AccountingLocation} from \"@shared/interfaces/location\";\r\nimport * as _ from \"lodash\";\r\nimport {GasDay} from \"@model/gas-day\";\r\n\r\n\r\nexport class AddStorageTransportationBalanceModel extends BaseViewModel {\r\n public openBillingMonth: BillingMonth;\r\n public searchParams: AddStorageTransportationBalanceSearchParams = new AddStorageTransportationBalanceSearchParams();\r\n public priorPageSearchParams:PriorPageSearchParams = new PriorPageSearchParams();\r\n // MR it would be more efficient to return the 6 customers from the backend instead of ids lacking the required supporting info\r\n public customersIds : number[];\r\n public allEnterprises: Enterprise[];\r\n public customers: Enterprise[];\r\n // MR it would be way more efficient to return the 6 customers from the backend instead of ids lacking the required supporting info\r\n public nominationGroups: NominationGroupDto[];\r\n public accountLocations: AccountingLocation[];\r\n hasChanged():boolean{\r\n if(!_.isNil(this.searchParams.locationId) || !_.isNil(this.searchParams.customerId) || !_.isNil(this.searchParams.nominationGroupId) || !(this.searchParams.gasDay.isEqual(this.openBillingMonth.gasMonth.start())) ){\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\nexport class PriorPageSearchParams{\r\n locationId: number;\r\n enterpriseCid: number;\r\n}\r\n\r\nexport class AddStorageTransportationBalanceSearchParams {\r\n gasDay: GasDay;\r\n customerId: number;\r\n nominationGroupId: number;\r\n locationId: number;\r\n}\r\n\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport {ContractsResourceService} from \"@shared/resources/contracts-resource.service\";\r\nimport {Observable} from \"rxjs\";\r\nimport {Enterprise, IEnterpriseResponse} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {map} from \"rxjs/operators\";\r\nimport * as _ from \"lodash\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {IGasDay} from \"@model/gas-day-month.interface\";\r\nimport {BusinessRight} from \"@model/business-right\";\r\nimport {GasDay} from \"@model/gas-day\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AccountsEnterpriseService {\r\n constructor(private accountsResource: ContractsResourceService) {\r\n }\r\n\r\n getAll(searchParams: AccountsEnterpriseSearchRequest): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n\r\n params.setGasDay(searchParams.gasDay);\r\n params.set('agentRole', searchParams.agentRole);\r\n\r\n return this.accountsResource.get('/enterprises', true, params).pipe(\r\n map(enterprises => _.map(enterprises, x => Enterprise.create(x))));\r\n }\r\n\r\n public queryCustomers(searchParams: AccountsCustomerSearchParams, accessAsNomAgent: boolean = false, accessAsInvoiceAgent: boolean = false): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n if(!_.isNil(searchParams.stsCustomersOnly)) {\r\n params.setBoolean('stsCustomersOnly', searchParams.stsCustomersOnly);\r\n }\r\n if(!_.isEmpty(searchParams.nomGroupBusinessRights)) {\r\n params.setListOfStrings('nomGroupBusinessRight', _.map(searchParams.nomGroupBusinessRights, x => x.alternateName));\r\n params.setBoolean('agentAvailable', searchParams.agentAvailable);\r\n }\r\n if(!_.isNil(searchParams.updateablePriceOnly)) params.setBoolean('updateablePriceOnly', searchParams.updateablePriceOnly);\r\n if(!_.isNil(searchParams.fromGasDay)) params.setGasDay(searchParams.fromGasDay, 'fromGasDay');\r\n if(!_.isNil(searchParams.toGasDay)) params.setGasDay(searchParams.toGasDay, 'toGasDay');\r\n\r\n params.setBoolean('accessAsNomAgent', accessAsNomAgent);\r\n params.setBoolean('accessAsInvoiceAgent', accessAsInvoiceAgent);\r\n\r\n return this.accountsResource.get('/customers/id', true, params);\r\n }\r\n\r\n public queryCustomersVariant2(params: GCTSHttpParams): Observable {\r\n return this.accountsResource.get('/customers/id', true, params);\r\n }\r\n}\r\n\r\nexport class AccountsEnterpriseSearchRequest {\r\n constructor(public gasDay: IGasDay, public agentRole: string) {\r\n }\r\n}\r\n\r\nexport class AccountsCustomerSearchParams {\r\n public stsCustomersOnly?: boolean;\r\n public nomGroupBusinessRights: BusinessRight[];\r\n public updateablePriceOnly?: boolean;\r\n public fromGasDay: GasDay;\r\n public toGasDay: GasDay;\r\n public agentAvailable?: boolean;\r\n\r\n private constructor() {\r\n }\r\n\r\n public static withNomGroupBusinessRights(businessRights: BusinessRight[], agentAvailable: boolean = true): AccountsCustomerSearchParams {\r\n const searchParams = new AccountsCustomerSearchParams();\r\n searchParams.nomGroupBusinessRights = businessRights;\r\n searchParams.agentAvailable = agentAvailable;\r\n return searchParams;\r\n }\r\n\r\n public static onlyStsCustomersOnly(): AccountsCustomerSearchParams {\r\n const searchParams = new AccountsCustomerSearchParams();\r\n searchParams.stsCustomersOnly = true;\r\n return searchParams;\r\n }\r\n\r\n public static updateablePriceWithDates(fromGasDay: GasDay, toGasDay: GasDay): AccountsCustomerSearchParams {\r\n const searchParams = new AccountsCustomerSearchParams();\r\n searchParams.updateablePriceOnly = true;\r\n searchParams.fromGasDay = fromGasDay;\r\n searchParams.toGasDay = toGasDay;\r\n return searchParams;\r\n }\r\n}\r\n","import {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport * as _ from \"lodash\";\r\nimport {forkJoin, Observable, of} from \"rxjs\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {Component} from \"@angular/core\";\r\nimport {tap} from \"rxjs/operators\";\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {AddStorageTransportationBalanceModel} from \"app/gcts/administration/sts-balance-parameters/add-storage-transportation-balance/add-storage-transportation-balance.model\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {AccountsEnterpriseService} from \"@shared/services/accounts/accounts-enterprise/accounts-enterprise.service\";\r\nimport {Enterprise, EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {NominationGroupService} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport {LocationService} from \"@shared/services/common-data/location/location.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {YesNoModalOptions} from \"@shared/services/webapp/modal-options/yes-no-modal-options\";\r\nimport {SelectedModalOption} from \"@shared/services/webapp/modal-options/selected-modal-option\";\r\nimport {YesNoCancelModalService} from \"@shared/services/webapp/yes-no-cancel-modal/yes-no-cancel-modal.service\";\r\nimport {FlowingGasStorageBalanceService, StorageBalance} from \"@shared/services/flowing-gas/flowing-gas-storage-balance-service/flowing-gas-storage-balance-service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\n\r\n\r\n@Component({\r\n selector: 'app-add-storage-transportation-balance',\r\n templateUrl: './add-storage-transportation-balance.component.html',\r\n styleUrls: ['./add-storage-transportation-balance.component.css']\r\n})\r\nexport class AddStorageTransportationBalanceComponent extends BaseSearchComponent {\r\n\r\n constructor(protected appService: AppService,\r\n protected activatedRoute: ActivatedRoute,\r\n protected router: Router,\r\n protected alertService: AlertService,\r\n private accountsEnterpriseService: AccountsEnterpriseService,\r\n private enterpriseService: EnterpriseService,\r\n private nominationGroupService: NominationGroupService,\r\n protected modalService: YesNoCancelModalService,\r\n private locationService: LocationService,\r\n private flowingGasStorageBalanceService: FlowingGasStorageBalanceService,\r\n protected commonDataBillingMonthService: CommonDataBillingMonthService,\r\n private sessionService: SessionService\r\n\r\n ) {\r\n super('Add Storage Transportation Balance', appService, activatedRoute, router, alertService);\r\n }\r\n public model: AddStorageTransportationBalanceModel = new AddStorageTransportationBalanceModel();\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return true;\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n const billingMonth$ = this.commonDataBillingMonthService.getOpen()\r\n .pipe(\r\n tap(openBillingMonth => {\r\n this.model.openBillingMonth = openBillingMonth;\r\n this.model.searchParams.gasDay = openBillingMonth.gasMonth.start();\r\n })\r\n );\r\n const queryEnterprises$= this.queryEnterprises();\r\n return forkJoin([billingMonth$,queryEnterprises$]);\r\n }\r\n\r\n private queryEnterprises(): Observable {\r\n return this.enterpriseService.getAll()\r\n .pipe(\r\n tap(enterprises => {\r\n this.model.allEnterprises = enterprises;\r\n })\r\n );\r\n }\r\n\r\n public onCustomerChanged():void{\r\n this.model.searchParams.nominationGroupId=null;\r\n if(_.isNil(this.model.searchParams.customerId)){\r\n return; // short circuit processing\r\n }\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setNumber(\"customerEnterpriseCid\",this.model.searchParams.customerId);\r\n params.setBoolean(\"includeSTSOnly\",true);\r\n\r\n this.nominationGroupService.getVariant2(params)\r\n .pipe(\r\n tap( nomgroups => {\r\n if(nomgroups.length===1){\r\n this.model.searchParams.nominationGroupId=nomgroups[0].id;\r\n }\r\n this.model.nominationGroups = nomgroups;\r\n })\r\n ).subscribe();\r\n }\r\n\r\n\r\n protected loadSearchResources(): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setBoolean(\"includeActiveNomGroupsOnly\",false);\r\n params.setBoolean(\"includeInvoiceRecipients\",false);\r\n params.setBoolean(\"stsCustomersOnly\",true);\r\n this.model.customers = [];\r\n const queryCustomersVariant2$ = this.accountsEnterpriseService.queryCustomersVariant2(params)\r\n .pipe(\r\n tap( customerIds => {\r\n _.forEach(customerIds,id=> {\r\n const foundEnterprise = _.find(this.model.allEnterprises,x=> x.id === id);\r\n if(!_.isNil(foundEnterprise)) {\r\n this.model.customers.push(foundEnterprise);\r\n }\r\n this.model.customers = _.sortBy(this.model.customers,x=> x.displayName);\r\n });\r\n })\r\n );\r\n const queryAccountLocationsGivenGasDay$ = this.locationService.queryAccountLocationsGivenGasDay(GasDay.today())\r\n .pipe(\r\n tap( accountLocations => this.model.accountLocations=accountLocations)\r\n );\r\n return forkJoin([queryCustomersVariant2$,queryAccountLocationsGivenGasDay$]);\r\n }\r\n\r\n public cancelClicked() {\r\n this.alertService.clearMessages();\r\n if (this.model.hasChanged()) {\r\n const yesNoModalOptions = new YesNoModalOptions('Discard Changes', 'Unsaved Changes will be lost, would you like to continue?');\r\n this.modalService.show(yesNoModalOptions).subscribe((selectedModalOption: SelectedModalOption) => {\r\n if (selectedModalOption === SelectedModalOption.Yes) {\r\n this.goToStorageTransportationBalanceParametersPage();\r\n }\r\n });\r\n }else{\r\n this.goToStorageTransportationBalanceParametersPage();\r\n }\r\n }\r\n\r\n private goToStorageTransportationBalanceParametersPage(enterpriseId?: number, locationId?: number, saved?: boolean): void {\r\n\r\n const queryParams = {\r\n enterpriseCid: _.isNil(enterpriseId)?this.model.priorPageSearchParams.enterpriseCid:enterpriseId,\r\n locationId: _.isNil(locationId)?this.model.priorPageSearchParams.locationId:locationId,\r\n saved: _.isNil(saved)?false:saved,\r\n };\r\n const url = ['/app', this.getPipelineCode(), 'stsbalances'];\r\n this.router.navigate(url, {queryParams}).then(() => {});\r\n }\r\n\r\n\r\n protected performSearch(): Observable {\r\n return of({});\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.priorPageSearchParams.enterpriseCid = typedParams.asNumber('enterpriseCid');\r\n this.model.priorPageSearchParams.locationId = typedParams.asNumber('locationId');\r\n }\r\n\r\n public saveClicked():void{\r\n this.insertStorageBalance().subscribe();\r\n }\r\n\r\n private insertStorageBalance():Observable{\r\n const params = new GCTSHttpParams();\r\n params.setGasDay(this.model.searchParams.gasDay,'effectiveGasDay');\r\n params.setNumber('enterpriseCid', this.model.searchParams.customerId);\r\n params.setGasDay(GasDay.endOfTime(),'expiryGasDay');\r\n params.setNumber('locationId', this.model.searchParams.locationId);\r\n params.setNumber('nomGroupId', this.model.searchParams.nominationGroupId);\r\n\r\n const body = {\r\n effectiveGasDay: this.model.searchParams.gasDay,\r\n enterpriseCid: this.model.searchParams.customerId,\r\n expiryGasDay: GasDay.endOfTime(),\r\n locationId: this.model.searchParams.locationId,\r\n nomGroupId: this.model.searchParams.nominationGroupId,\r\n pipeline: this.sessionService.getPipeline().code\r\n };\r\n return this.flowingGasStorageBalanceService.insertStorageBalance(\r\n params,body)\r\n .pipe(\r\n tap(storageBalance => {\r\n if(!_.isNil(storageBalance)){\r\n this.goToStorageTransportationBalanceParametersPage(this.model.searchParams.customerId,this.model.searchParams.locationId,true);\r\n }\r\n })\r\n );\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n","import { Injectable } from '@angular/core';\r\nimport {Observable} from \"rxjs\";\r\nimport {NominationResourceService} from \"@shared/resources/nominations-resource.service\";\r\n\r\nexport class LoadAutoBalanceLocationOrderRow {\r\n rowNumber: string;\r\n locationName: string;\r\n flowDirection: string;\r\n sequence: string;\r\n errorMessage: string;\r\n\r\n constructor(lineNumber: string, locationName: string, flowDirection: string, sequence: string) {\r\n this.rowNumber = lineNumber;\r\n this.locationName = locationName;\r\n this.flowDirection = flowDirection;\r\n this.sequence = sequence;\r\n }\r\n}\r\n\r\nexport class LoadAutoBalanceLocationOrderParameters {\r\n rows: LoadAutoBalanceLocationOrderRow[];\r\n}\r\n\r\n// Post request to controller\r\nexport class LoadAutoBalanceLocationOrderRequest {\r\n loadAutoBalanceLocationOrderRows: LoadAutoBalanceLocationOrderRow[];\r\n\r\n constructor() {\r\n this.loadAutoBalanceLocationOrderRows = new Array();\r\n }\r\n}\r\n\r\n\r\nexport class LoadAutoBalanceLocationOrderRowError {\r\n row: LoadAutoBalanceLocationOrderRow;\r\n rowNumber: number;\r\n error: string;\r\n}\r\n\r\nexport class LoadAutoBalanceLocationOrderResponse {\r\n linesInFile: string;\r\n linesChanged: string;\r\n linesSaved: string;\r\n linesIgnored: string;\r\n errors: LoadAutoBalanceLocationOrderRowError[];\r\n\r\n constructor() {\r\n this.linesChanged = '0';\r\n this.linesInFile = '0';\r\n this.linesSaved = '0';\r\n this.linesIgnored = '0';\r\n this.errors = [];\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport class LoadAutoBalanceLocationOrderService {\r\n\r\n constructor(protected nominationService: NominationResourceService) { }\r\n\r\n public set(parameters: LoadAutoBalanceLocationOrderParameters): Observable {\r\n const body = new LoadAutoBalanceLocationOrderRequest();\r\n body.loadAutoBalanceLocationOrderRows = parameters.rows;\r\n\r\n return this.nominationService.post('/locations/loadAutoBalanceOrder', body);\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n Browse...\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
{{ model.loadAutoBalanceLocOrderResponse?.linesInFile }}
\r\n \r\n
{{ model.loadAutoBalanceLocOrderResponse?.linesSaved }}
\r\n
\r\n
\r\n \r\n
{{ model.loadAutoBalanceLocOrderResponse?.linesChanged }}
\r\n \r\n
{{ model.loadAutoBalanceLocOrderResponse?.linesIgnored }}
\r\n
\r\n
\r\n \r\n
{{ model.loadAutoBalanceLocOrderResponse?.errors.length }}
\r\n
\r\n
\r\n
\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport {BaseComponent} from '@model/base-component';\r\nimport {AppService} from '@shared/services/webapp/app/app.service';\r\nimport {AlertService} from \"app/shared/services/webapp/alert/alert.service\";\r\nimport {\r\n LoadAutoBalanceLocationOrderResponse,\r\n LoadAutoBalanceLocationOrderParameters,\r\n LoadAutoBalanceLocationOrderRow,\r\n LoadAutoBalanceLocationOrderService\r\n} from \"@shared/services/nomination/load-auto-balance-location-order/load-auto-balance-location-order.service\";\r\nimport {BaseCsvUploadViewModel, CsvUtility} from \"@model/CsvUtility\";\r\nimport {Router} from '@angular/router';\r\n\r\nexport class LoadAutoBalanceLocationOrderViewModel extends BaseCsvUploadViewModel {\r\n loadAutoBalanceLocOrderResponse: LoadAutoBalanceLocationOrderResponse;\r\n}\r\n\r\n@Component({\r\n selector: 'app-load-auto-balance-location-order',\r\n templateUrl: './load-auto-balance-location-order.component.html',\r\n styleUrls: ['./load-auto-balance-location-order.component.css'],\r\n providers: [CsvUtility]\r\n})\r\n\r\nexport class LoadAutoBalanceLocationOrderComponent extends BaseComponent implements OnInit {\r\n model: LoadAutoBalanceLocationOrderViewModel;\r\n extractedData: LoadAutoBalanceLocationOrderRow[];\r\n\r\n constructor(protected appService: AppService,\r\n protected alertService: AlertService,\r\n protected loadAutoBalanceLocOrderService: LoadAutoBalanceLocationOrderService,\r\n protected csvUtility: CsvUtility,\r\n protected router: Router) {\r\n super(appService);\r\n }\r\n\r\n ngOnInit() {\r\n super.setTitle('Seed Auto Balance Location Order');\r\n this.initModel();\r\n }\r\n\r\n private initModel(): void {\r\n this.model = new LoadAutoBalanceLocationOrderViewModel();\r\n this.model.loadAutoBalanceLocOrderResponse = null;\r\n this.model.error = '';\r\n this.model.fileName = '';\r\n }\r\n\r\n // This is called when you click the Upload Button\r\n public uploadClicked() {\r\n\r\n if (this.extractedData !== null) {\r\n const parameters = new LoadAutoBalanceLocationOrderParameters();\r\n\r\n parameters.rows = this.extractedData;\r\n this.route = this.router.routerState.snapshot.url;\r\n\r\n this.loadAutoBalanceLocOrderService.set(parameters)\r\n .subscribe(\r\n response => {\r\n this.model.loadAutoBalanceLocOrderResponse = response;\r\n this.model.error = '';\r\n\r\n if (this.model.loadAutoBalanceLocOrderResponse.errors !== undefined && this.model.loadAutoBalanceLocOrderResponse.errors.length > 0\r\n && this.route === this.router.routerState.snapshot.url) {\r\n this.alertService.addErrorMessage('Validation Error', this.model.fileName + ' did not upload due to ' + this.model.loadAutoBalanceLocOrderResponse.errors.length + ' errors.');\r\n } else if (this.route === this.router.routerState.snapshot.url) {\r\n this.alertService.addSuccessMessage('Upload successful', this.model.fileName + ' uploaded.');\r\n }\r\n });\r\n }\r\n }\r\n\r\n public updateClick(e) {\r\n this.extractedData = new Array();\r\n if (e.target.files.length > 0) {\r\n this.model.fileName = e.target.files[0].name;\r\n\r\n const reader = new FileReader();\r\n\r\n reader.onload = (event: any) => {\r\n this.alertService.clearMessages();\r\n this.model.loadAutoBalanceLocOrderResponse = null;\r\n this.extractData(event.target.result, this.model);\r\n };\r\n\r\n reader.readAsText(e.target.files[0]);\r\n }\r\n }\r\n\r\n protected extractData(data: string, model: LoadAutoBalanceLocationOrderViewModel) {\r\n const headers = ['Location', 'Flow Direction', 'Sequence'];\r\n\r\n model.error = '';\r\n model.isValid = false;\r\n\r\n this.csvUtility.extractData(data, this.model, headers, (result, fields) => {\r\n for (let i = 0; i < result.length; i++) {\r\n this.extractedData.push(\r\n new LoadAutoBalanceLocationOrderRow(\r\n (i + 1).toString(),\r\n result[i][this.csvUtility.findColumnHeaderColumn(fields, headers[0])],\r\n result[i][this.csvUtility.findColumnHeaderColumn(fields, headers[1])],\r\n result[i][this.csvUtility.findColumnHeaderColumn(fields, headers[2])]\r\n )\r\n );\r\n }\r\n });\r\n }\r\n\r\n resetClicked() {\r\n this.extractedData = null;\r\n this.model.error = '';\r\n this.model.fileName = '';\r\n this.model.loadAutoBalanceLocOrderResponse = null;\r\n this.alertService.clearMessages();\r\n }\r\n\r\n hoverOver() {\r\n return this.model.error;\r\n }\r\n\r\n public isValidFile(model): boolean {\r\n if (model.fileName != null && model.fileName !== '' && model.isValid) {\r\n return true;\r\n }\r\n }\r\n\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {Observable} from \"rxjs\";\r\nimport {NominationResourceService} from \"@shared/resources/nominations-resource.service\";\r\nimport {BaseUploadResponse} from \"@model/base-upload-response\";\r\n\r\nexport class ConfirmationAutoBalanceLocationOrderRow {\r\n constructor(\r\n public rowNumber: number,\r\n public locationName: string,\r\n public sequence: string\r\n ) { }\r\n}\r\n\r\nexport class LoadConfirmationAutoBalanceLocationOrderParameters {\r\n constructor(public rows: Array) {}\r\n}\r\n\r\n\r\n@Injectable()\r\nexport class LoadConfirmationAutoBalanceLocationOrderService {\r\n\r\n constructor(protected nominationService: NominationResourceService) { }\r\n\r\n public uploadConfirmationAutoBalanceLocationOrder(parameters: LoadConfirmationAutoBalanceLocationOrderParameters): Observable> {\r\n return this.nominationService.post>(\"/locations/confirmationAutoBalanceLocationOrders\", parameters.rows, true );\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n Browse...\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
{{ model.uploadResponse?.linesInFile }}
\r\n \r\n
{{ model.uploadResponse?.linesSaved }}
\r\n
\r\n
\r\n \r\n
{{ model.uploadResponse?.linesChanged }}
\r\n \r\n
{{ model.uploadResponse?.linesIgnored }}
\r\n
\r\n
\r\n \r\n
{{ model.uploadResponse?.errors.length }}
\r\n
\r\n
\r\n
\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport {Router} from '@angular/router';\r\nimport {BaseComponent} from '@model/base-component';\r\nimport {BaseUploadResponse} from \"@model/base-upload-response\";\r\nimport {BaseCsvUploadViewModel, CsvUtility} from \"@model/CsvUtility\";\r\nimport {AppService} from '@shared/services/webapp/app/app.service';\r\nimport {AlertService} from \"app/shared/services/webapp/alert/alert.service\";\r\nimport {\r\n LoadConfirmationAutoBalanceLocationOrderParameters,\r\n ConfirmationAutoBalanceLocationOrderRow,\r\n LoadConfirmationAutoBalanceLocationOrderService\r\n} from \"@shared/services/nomination/load-confirmation-auto-balance-location-order/load-confirmation-auto-balance-location-order.service\";\r\n\r\n\r\nexport class LoadConfirmationAutoBalanceLocationOrderViewModel extends BaseCsvUploadViewModel {\r\n public uploadResponse: BaseUploadResponse;\r\n public extractedData: Array;\r\n}\r\n\r\n@Component({\r\n selector: 'app-load-confirmation-auto-balance-location-order',\r\n templateUrl: './load-confirmation-auto-balance-location-order.component.html',\r\n styleUrls: ['./load-confirmation-auto-balance-location-order.component.css'],\r\n providers: [CsvUtility]\r\n})\r\nexport class LoadConfirmationAutoBalanceLocationOrderComponent extends BaseComponent implements OnInit {\r\n\r\n // csvHeaders must be in the same order as MeasurementRow's constructor parameters.\r\n csvHeaders = ['Location', 'Sequence'];\r\n\r\n model: LoadConfirmationAutoBalanceLocationOrderViewModel;\r\n\r\n constructor(protected appService: AppService,\r\n protected alertService: AlertService,\r\n protected loadConfirmationAutoBalanceLocOrderService: LoadConfirmationAutoBalanceLocationOrderService,\r\n protected csvUtility: CsvUtility,\r\n protected router: Router) {\r\n super(appService);\r\n }\r\n\r\n ngOnInit() {\r\n super.setTitle('Seed Confirmation Auto Balance Location Order');\r\n this.initModel();\r\n }\r\n\r\n private initModel(): void {\r\n this.model = new LoadConfirmationAutoBalanceLocationOrderViewModel();\r\n this.model.extractedData = new Array();\r\n this.model.uploadResponse = null;\r\n this.model.error = '';\r\n this.model.fileName = '';\r\n }\r\n\r\n public isValidFile(): boolean {\r\n return this.model.isValidFile();\r\n }\r\n\r\n hoverOver() {\r\n return this.model.error;\r\n }\r\n\r\n public resetClicked(): void {\r\n this.initModel();\r\n this.alertService.clearMessages();\r\n }\r\n\r\n // This is called when you click the Upload Button\r\n public uploadClicked() {\r\n if (this.model.extractedData === null) return;\r\n\r\n this.alertService.clearMessages();\r\n const parameters = new LoadConfirmationAutoBalanceLocationOrderParameters(this.model.extractedData);\r\n this.route = this.router.routerState.snapshot.url;\r\n\r\n this.loadConfirmationAutoBalanceLocOrderService.uploadConfirmationAutoBalanceLocationOrder(parameters).subscribe(\r\n response => {\r\n\r\n this.model.uploadResponse = response;\r\n\r\n if(this.model.uploadResponse !== undefined && this.model.uploadResponse.errors.length > 0 && this.route === this.router.routerState.snapshot.url){\r\n this.alertService.addErrorMessage('Validation Error', this.model.fileName + ' uploaded with ' + this.model.uploadResponse.errors.length + ' errors.');\r\n }else if(this.route === this.router.routerState.snapshot.url) {\r\n this.alertService.addSuccessMessage('Upload successful', this.model.fileName + ' uploaded.');\r\n }\r\n });\r\n }\r\n\r\n public updateClick(e) {\r\n if (e.target.files.length > 0) {\r\n const reader = new FileReader();\r\n\r\n reader.onload = (event: any) => {\r\n this.extractData(e.target.files[0].name, event.target.result);\r\n };\r\n\r\n reader.readAsText(e.target.files[0]);\r\n }\r\n }\r\n\r\n protected extractData(fileName: string, data: string) {\r\n this.resetClicked();\r\n this.model.fileName = fileName;\r\n this.csvUtility.extractData(data, this.model, this.csvHeaders, this.processRows.bind(this));\r\n }\r\n\r\n\r\n private processRows (result: Array>, fields: Array) {\r\n const colIndices = new Array();\r\n this.csvHeaders.forEach((header) => colIndices.push(this.csvUtility.findColumnHeaderColumn(fields, header)));\r\n\r\n let rowIndex = 0;\r\n this.model.extractedData = new Array();\r\n result.forEach((row: Array) => {\r\n this.model.extractedData.push(new ConfirmationAutoBalanceLocationOrderRow(\r\n ++rowIndex,\r\n row[colIndices[0]],\r\n row[colIndices[1]]\r\n ));\r\n });\r\n }\r\n\r\n}\r\n","import {Route} from \"@angular/router\";\r\n\r\nimport {AuthorizationService} from \"@shared/services/webapp/authorization/authorization.service\";\r\n\r\nimport {BillingMonthComponent} from \"./billing-month/billing-month.component\";\r\nimport {ConfigureJobSchedulesComponent} from \"./configure-job-schedules/configure-job-schedules.component\";\r\nimport {ViewBidFloorsComponent} from \"./view-bid-floors/view-bid-floors.component\";\r\nimport {ViewFuelRatiosComponent} from \"./view-fuel-ratios/view-fuel-ratios.component\";\r\nimport {LoadFuelRatiosComponent} from \"./load-fuel-ratios/load-fuel-ratios.component\";\r\nimport {LoadBidFloorsComponent} from \"./load-bid-floors/load-bid-floors.component\";\r\nimport {EditBillingMonthComponent} from \"./billing-month/edit-billing-month/edit-billing-month.component\";\r\nimport {AddBillingMonthComponent} from \"./billing-month/add-billing-month/add-billing-month.component\";\r\nimport {JobRunnerComponent} from \"./job-runner/job-runner.component\";\r\nimport {ViewJobHistoryComponent} from \"./view-job-history/view-job-history.component\";\r\nimport {SupportComponent} from \"./support/support/support.component\";\r\nimport {LoadTollsComponent} from \"./load-tolls/load-tolls.component\";\r\nimport {ViewTollsComponent} from \"./view-tolls/view-tolls.component\";\r\nimport {HourlyFlowMaintenanceComponent} from \"app/gcts/administration/hourly-flow-maintenance/hourly-flow-maintenance.component\";\r\nimport {UnsubscribeEmailNotificationsComponent} from \"app/gcts/administration/unsubscribe-email-notifications/unsubscribe-email-notifications.component\";\r\nimport {MaintainAgentsComponent} from \"app/gcts/administration/maintain-agents/maintain-agents.component\";\r\nimport {AddAgentComponent} from \"app/gcts/administration/maintain-agents/add-agents/add-agent.component\";\r\nimport {ViewAgentsComponent} from \"app/gcts/administration/maintain-agents/view-agents/view-agents.component\";\r\nimport {StsTransferBalanceComponent} from \"app/gcts/administration/sts-transfer-balance/sts-transfer-balance.component\";\r\nimport {StsBalanceParametersComponent} from \"app/gcts/administration/sts-balance-parameters/sts-balance-parameters.component\";\r\nimport {AddStorageTransportationBalanceComponent} from \"app/gcts/administration/sts-balance-parameters/add-storage-transportation-balance/add-storage-transportation-balance.component\";\r\nimport {LoadAutoBalanceLocationOrderComponent} from \"app/gcts/administration/load-auto-balance-location-order/load-auto-balance-location-order.component\";\r\nimport {LoadConfirmationAutoBalanceLocationOrderComponent} from \"app/gcts/administration/load-confirmation-auto-balance-location-order/load-confirmation-auto-balance-location-order.component\";\r\n\r\nexport const AdministrationRoutes: Route[] = [\r\n {\r\n path: 'billingMonths',\r\n component: BillingMonthComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['BillingMonth-Read']}\r\n },\r\n {\r\n path: 'billingMonths/:gasMonth/edit',\r\n component: EditBillingMonthComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['BillingMonth-Write']},\r\n },\r\n {\r\n path: 'billingMonths/add',\r\n component: AddBillingMonthComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['BillingMonth-Write']}\r\n },\r\n {\r\n path: 'configurejobschedules',\r\n component: ConfigureJobSchedulesComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['ConfigureJobSchedules-Read']}\r\n },\r\n {\r\n path: 'support',\r\n component: SupportComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['Support-Read']}\r\n },\r\n {\r\n path: 'tolls/view',\r\n component: ViewTollsComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['ViewTolls-Read']}\r\n },\r\n {\r\n path: 'tolls/load',\r\n component: LoadTollsComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['LoadTolls-Read']}\r\n },\r\n {\r\n path: 'viewBidFloors',\r\n component: ViewBidFloorsComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['ViewBidFloors-Read']}\r\n },\r\n {\r\n path: 'loadBidFloors',\r\n component: LoadBidFloorsComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['LoadBidFloors-Write']}\r\n },\r\n {\r\n path: 'viewFuelRatios',\r\n component: ViewFuelRatiosComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['ViewFuelRatios-Read']}\r\n },\r\n {\r\n path: 'loadFuelRatios',\r\n component: LoadFuelRatiosComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['LoadFuelRatios-Write']}\r\n },\r\n {\r\n path: 'jobrunner',\r\n component: JobRunnerComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['JobRunner-Write']}\r\n },\r\n {\r\n path: 'viewjobhistory',\r\n component: ViewJobHistoryComponent,\r\n canActivate: [AuthorizationService],\r\n runGuardsAndResolvers: 'always',\r\n data: {capabilities: ['ViewJobHistory-Read']}\r\n },\r\n {\r\n path: 'hourlyflowmaintenance',\r\n component: HourlyFlowMaintenanceComponent,\r\n canActivate: [AuthorizationService],\r\n runGuardsAndResolvers: 'always',\r\n data: {capabilities: ['HourlyFlowMaintenance-Read']}\r\n },\r\n {\r\n path: 'unsubscribeemailnotifications',\r\n component: UnsubscribeEmailNotificationsComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['UnsubscribeEmailNotifications-Read']}\r\n },\r\n {\r\n path: 'maintainagents',\r\n component: MaintainAgentsComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['AgentMaintenance-Read']}\r\n },\r\n {\r\n path: 'agent/add',\r\n component: AddAgentComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['AgentMaintenance-Write']}\r\n },\r\n {\r\n path: 'viewagents',\r\n component: ViewAgentsComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['ViewAgents-Read']}\r\n },\r\n {\r\n path: 'ststransferbalance',\r\n component: StsTransferBalanceComponent,\r\n canActivate: [AuthorizationService],\r\n runGuardsAndResolvers: 'always',\r\n data: {capabilities: ['StsTransferBalance-Read']}\r\n },\r\n {\r\n path: 'stsbalances/add',\r\n component: AddStorageTransportationBalanceComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['StsBalanceParameters-Write']}\r\n },\r\n {\r\n path: 'stsbalances',\r\n component: StsBalanceParametersComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['StsBalanceParameters-Read']}\r\n },\r\n {\r\n path: 'seedAutoBalanceLocationOrder',\r\n component: LoadAutoBalanceLocationOrderComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['TestPage-Read']}\r\n },\r\n {\r\n path: 'seedConfirmationAutoBalanceLocationOrder',\r\n component: LoadConfirmationAutoBalanceLocationOrderComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['TestPage-Read']}\r\n }\r\n];\r\n","import {BillingMonth} from \"@model/billing-month\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {AdjustmentActivity} from \"@shared/services/flowing-gas/flowing-gas-prior-day-pending-activities/flowing-gas-prior-day-pending-activities.service\";\r\nimport {BaseViewModel} from \"@model/base-view-model\";\r\n\r\nexport class PriorDayPendingActivitiesModel extends BaseViewModel {\r\n public openBillingMonth: BillingMonth;\r\n public activities: Activity[] = Activity.ALL;\r\n public hasEditSecurity: boolean = false;\r\n\r\n public searchParams: PriorDayPendingActivitiesSearchParams = new PriorDayPendingActivitiesSearchParams();\r\n public lastSearchParams: PriorDayPendingActivitiesSearchParams;\r\n\r\n // Search Result properties\r\n private _searchResults: AdjustmentActivity[];\r\n\r\n public get searchResults(): AdjustmentActivity[] {\r\n return this._searchResults;\r\n }\r\n\r\n public set searchResults(adjustmentActivities: AdjustmentActivity[]) {\r\n this._searchResults = adjustmentActivities;\r\n }\r\n\r\n public hasSearchResults(): boolean {\r\n return !!this._searchResults;\r\n }\r\n\r\n public clearSearchResults(): void {\r\n this._searchResults = null;\r\n }\r\n}\r\n\r\nexport class PriorDayPendingActivitiesSearchParams {\r\n activity: string;\r\n billingGasMonth: GasMonth;\r\n}\r\n\r\n\r\nexport class Activity {\r\n\r\n public static ALLOCATION: Activity = new Activity(\"Allocation\", \"Allocation\");\r\n public static ACCOUNTBALANCE: Activity = new Activity(\"AccountBalance\", \"Account Balance\");\r\n public static STORAGEBALANCE: Activity = new Activity(\"StorageBalance\", \"Storage Balance\");\r\n public static BALANCEFUEL: Activity = new Activity(\"BalanceFuel\", \"Balance Fuel\");\r\n public static OFOPENALTY: Activity = new Activity(\"OfoPenalty\", \"OFO Penalty\");\r\n\r\n public static ALL: Activity[] = [Activity.ALLOCATION, Activity.ACCOUNTBALANCE, Activity.STORAGEBALANCE, Activity.BALANCEFUEL, Activity.OFOPENALTY];\r\n\r\n constructor(id: string, description: string) {\r\n\r\n this._id = id;\r\n this._description = description;\r\n }\r\n\r\n private readonly _id: string;\r\n private readonly _description: string;\r\n\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n get description(): string {\r\n return this._description;\r\n }\r\n\r\n public get displayName(): string {\r\n return `${this._description} (${this._id})`;\r\n }\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {AdjustmentActivity} from \"@shared/services/flowing-gas/flowing-gas-prior-day-pending-activities/flowing-gas-prior-day-pending-activities.service\";\r\nimport * as _ from 'lodash';\r\nimport {GasMonth} from \"@model/gas-month\";\r\n\r\n@Injectable()\r\nexport class FlowingGasPriorDayPendingActivitiesCsvBuilderService {\r\n constructor(private fileService: FileService) {}\r\n public readonly activityAll: string = 'All';\r\n\r\n build(title: string,\r\n gasMonth: GasMonth,\r\n activity: string,\r\n adjustmentActivities: AdjustmentActivity[]): void {\r\n let csvData = _.map(adjustmentActivities, x => _.extend({}, x, {\r\n affectedGasDayDisplayFormat: x.affectedGasDay.toDisplayFormat()\r\n }));\r\n\r\n csvData = _.sortBy(csvData, ['activity', 'locationName', 'affectedGasDay', 'nomGroupMnemonic', 'gasAccountType']);\r\n\r\n if (!activity) {\r\n activity = this.activityAll;\r\n }\r\n\r\n const filename = title + '_' + gasMonth.toDisplayFormat() + '_' + activity + '.csv';\r\n\r\n const headers = ['Affected Gas Day', 'Activity', 'Location', 'Nom Group', 'Gas Account', 'Customer', 'Status'];\r\n\r\n const columns = ['affectedGasDayDisplayFormat', 'activity', 'locationName', 'nomGroupMnemonic', 'gasAccountType', 'customerMnemonic', 'status'];\r\n\r\n this.fileService.downloadCsvFile(filename, csvData, headers, columns);\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Activity: {{model.lastSearchParams?.activity | displayName: 'id' : 'description' : model.activities}}\r\n Billing Month: {{model.lastSearchParams?.billingGasMonth | gasMonthFormat}}\r\n \r\n
\r\n\r\n \r\n Run Process Jobs for Selected Activities.\r\n

\r\n Do you want to continue?\r\n \r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.activity | displayName: 'id' : 'description' : model.activities }}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.billingGasMonth | gasMonthFormat}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n Number of results found: {{model.searchResults.length}}\r\n\r\n
0\" class=\"pull-right\">\r\n Export CSV\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n {{row.value | gasDayFormat}}\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n","import {Component, OnInit, ViewChild} from '@angular/core';\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {Observable, of} from \"rxjs\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {PriorDayPendingActivitiesModel, PriorDayPendingActivitiesSearchParams} from \"app/gcts/flowinggas/prior-day-pending-activities/prior-day-pending-activities.model\";\r\nimport {concatMap, tap} from \"rxjs/operators\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {AdjustmentActivity, FlowingGasPriorDayPendingActivitiesService, PriorDayPendingActivitiesRequest} from \"@shared/services/flowing-gas/flowing-gas-prior-day-pending-activities/flowing-gas-prior-day-pending-activities.service\";\r\nimport * as _ from \"lodash\";\r\nimport {NomGroupEnrichmentService} from \"@shared/services/enrichment/nomgroup-enrichment.service\";\r\nimport {LocationEnrichmentService} from \"@shared/services/enrichment/location-enrichment.service\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {NominationGroupService} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport {LocationService} from \"@shared/services/common-data/location/location.service\";\r\nimport {EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {CapabilitiesService} from \"@shared/services/webapp/capabilities/capabilities.service\";\r\nimport {UserService} from \"@shared/services/webapp/user/user-service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {ModalComponent} from \"@shared/components/modal/modal.component\";\r\nimport {FlowingGasPriorDayPendingActivitiesCsvBuilderService} from \"@shared/services/flowing-gas/flowing-gas-prior-day-pending-activities-csv-builder-service/flowing-gas-prior-day-pending-activities-csv-builder.service\";\r\nimport {DataGridHooks} from \"@shared/devexpress/datagrid-hooks\";\r\n\r\n\r\n@Component({\r\n selector: 'app-prior-day-pending-activities',\r\n templateUrl: './prior-day-pending-activities.component.html',\r\n styleUrls: ['./prior-day-pending-activities.component.css']\r\n})\r\n\r\nexport class PriorDayPendingActivitiesComponent extends BaseSearchComponent implements OnInit {\r\n\r\n constructor(protected appService: AppService,\r\n protected activatedRoute: ActivatedRoute,\r\n protected router: Router,\r\n protected alertService: AlertService,\r\n private commonDataBillingMonthService: CommonDataBillingMonthService,\r\n private priorDayPendingActivitiesService: FlowingGasPriorDayPendingActivitiesService,\r\n private priorDayPendingActivitiesCsvBuilderService: FlowingGasPriorDayPendingActivitiesCsvBuilderService,\r\n private nomGroupEnrichmentService: NomGroupEnrichmentService,\r\n private locationEnrichmentService: LocationEnrichmentService,\r\n private enterpriseEnrichmentService: EnterpriseEnrichmentService,\r\n private nominationGroupService: NominationGroupService,\r\n private locationService: LocationService,\r\n private enterpriseService: EnterpriseService,\r\n private capabilitiesService: CapabilitiesService,\r\n private userService: UserService,\r\n private sessionService: SessionService) {\r\n super('Prior Day Pending Activities', appService, activatedRoute, router, alertService);\r\n\r\n enterpriseEnrichmentService.setEnrichmentResource(enterpriseService);\r\n locationEnrichmentService.setEnrichmentResource(locationService);\r\n nomGroupEnrichmentService.setEnrichmentResource(nominationGroupService);\r\n }\r\n\r\n public model: PriorDayPendingActivitiesModel = new PriorDayPendingActivitiesModel();\r\n private readonly adjustmentActivityPendingStatus: string = 'Pending';\r\n\r\n @ViewChild(DxDataGridComponent)\r\n dataGrid: DxDataGridComponent;\r\n\r\n @ViewChild(ModalComponent)\r\n yesNoSubmitModal: ModalComponent;\r\n\r\n /**\r\n * Base search component implementations\r\n */\r\n\r\n protected loadInitialResources(): Observable {\r\n this.appService.hideMenu();\r\n this.model.hasEditSecurity = this.capabilitiesService.hasCapabilities(\r\n [\"PriorDayPendingActivities-Write\"],\r\n this.userService.user,\r\n this.sessionService.getPipeline().code);\r\n\r\n return this.commonDataBillingMonthService.getOpen()\r\n .pipe(\r\n tap(openBillingMonth => this.model.openBillingMonth = openBillingMonth)\r\n );\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n return of({});\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams = new PriorDayPendingActivitiesSearchParams();\r\n this.model.clearSearchResults();\r\n }\r\n\r\n protected resetCompleted(): void {\r\n this.model.lastSearchParams = null;\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams.billingGasMonth = this.model.openBillingMonth.gasMonth;\r\n }\r\n\r\n private paramValidator(): ParamValidator {\r\n return ParamValidator.Standard();\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return this.paramValidator().isValid(params);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {};\r\n params['activity'] = !_.isNil(this.model.searchParams.activity) ? this.model.searchParams.activity : '';\r\n\r\n return params;\r\n }\r\n\r\n private queryAllAdjustmentActivities(): Observable {\r\n const searchRequest = new PriorDayPendingActivitiesRequest();\r\n searchRequest.activity = this.model.searchParams.activity;\r\n\r\n return this.priorDayPendingActivitiesService.queryAll(searchRequest)\r\n .pipe(\r\n concatMap(adjustmentActivities => this.nomGroupEnrichmentService.enrichArray(adjustmentActivities, 'nomGroupId', 'nomGroup')),\r\n concatMap(adjustmentActivities => this.enterpriseEnrichmentService.enrichArray(adjustmentActivities, 'customerId', 'customer')),\r\n concatMap(adjustmentActivities => this.locationEnrichmentService.enrichArray(adjustmentActivities, 'locationId', 'location')),\r\n tap( adjustmentActivities => {\r\n this.model.searchResults = adjustmentActivities;\r\n })\r\n );\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.clearSearchResults(); // Destroy grid\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n\r\n return this.queryAllAdjustmentActivities();\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n /**\r\n * Submit function\r\n */\r\n\r\n public submitAdjustmentActivities(): void {\r\n const dataRows = this.dataGrid.instance.getSelectedRowsData();\r\n\r\n this.priorDayPendingActivitiesService.submitAdjustmentActivities(dataRows)\r\n .pipe(\r\n concatMap(()=> this.priorDayPendingActivitiesService.processAdjustmentActivities(dataRows)),\r\n concatMap(() => this.performSearch())\r\n )\r\n .subscribe( () => {\r\n this.alertService.addSuccessMessage('Submit Successful', 'Prior Day Pending Activities submitted for processing.');\r\n this.yesNoSubmitModal.hide();\r\n });\r\n }\r\n\r\n /**\r\n * Data grid functions\r\n */\r\n\r\n public onCellPrepared(cellPreparedEvent: any): void {\r\n DataGridHooks.hideCheckBox(cellPreparedEvent, e => !this.isRowSelectable(e.rowIndex));\r\n }\r\n\r\n public onSelectionChanged(selectionChangedEvent: any): void {\r\n DataGridHooks.handleSelectAndDeselectRowWhenDataGridHasHiddenCheckBox(selectionChangedEvent, this.dataGrid, (currentRowIndex) => this.isRowSelectable(currentRowIndex));\r\n }\r\n\r\n /**\r\n * The onContentReady code is required to position the checkboxes to the right of the grid\r\n * The default position is on the left\r\n *\r\n * Reference: https://supportcenter.devexpress.com/ticket/details/t585769/dxdatagrid-how-to-change-selection-column-position\r\n */\r\n public onContentReady(contentReadyEvent: any): void {\r\n if (contentReadyEvent.component.shouldSkipNextReady) {\r\n contentReadyEvent.component.shouldSkipNextReady = false;\r\n }\r\n else {\r\n contentReadyEvent.component.shouldSkipNextReady = true;\r\n contentReadyEvent.component.columnOption(\"command:select\", \"visibleIndex\", 99);\r\n contentReadyEvent.component.updateDimensions();\r\n }\r\n }\r\n\r\n /**\r\n * Row is selectable if the status is in Pending\r\n */\r\n private isRowSelectable(rowIndex: number): boolean {\r\n if (rowIndex < 0) {\r\n return true;\r\n }\r\n\r\n const currentRow = this.dataGrid.instance.getVisibleRows()[rowIndex];\r\n return currentRow.data.status === this.adjustmentActivityPendingStatus;\r\n }\r\n\r\n /**\r\n * Others\r\n */\r\n public showYesNoModal(): void {\r\n this.alertService.clearMessages();\r\n this.yesNoSubmitModal.show();\r\n }\r\n\r\n public hasSelectedRows(): boolean {\r\n if (!this.dataGrid) {return false;}\r\n\r\n const selectedRows = this.dataGrid.instance.getSelectedRowsData();\r\n return !_.isNil(selectedRows) && _.some(selectedRows, x => !_.isNil(x.id));\r\n }\r\n\r\n public exportCsvClicked(): void {\r\n this.priorDayPendingActivitiesCsvBuilderService.build(\r\n 'PriorDayPendingActivities',\r\n this.model.searchParams.billingGasMonth,\r\n this.model.searchParams.activity,\r\n this.model.searchResults\r\n );\r\n }\r\n\r\n}\r\n","import {BaseViewModel} from \"@model/base-view-model\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {GasCycle} from \"@model/gas-cycle\";\r\nimport {NominationLocation} from \"@shared/services/nomination/nomination-location/nomination-location.service\";\r\n\r\nexport class UniformHourlyFlowSearchParams {\r\n locationIds: number[] = [];\r\n startGasDay: GasDay;\r\n}\r\n\r\nexport class UniformHourlyFlowReportModel extends BaseViewModel {\r\n minGasDay: GasDay;\r\n maxGasDay: GasDay;\r\n\r\n today: GasDay;\r\n gasCycles: GasCycle[] = [];\r\n nominationLocations: NominationLocation[] = [];\r\n\r\n searchParams: UniformHourlyFlowSearchParams = new UniformHourlyFlowSearchParams();\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {Observable} from \"rxjs\";\r\nimport {HttpResponse} from \"@angular/common/http\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {NominationResourceService} from \"@shared/resources/nominations-resource.service\";\r\n\r\n\r\n@Injectable()\r\nexport class FlowingGasUniformHourlyFlowReportService {\r\n constructor(private nominationsResource: NominationResourceService) { }\r\n\r\n queryUniformHourlyFlowReportPdf(searchParams: UniformHourlyFlowReportRequest): Observable> {\r\n return this.nominationsResource.getData('/uniformhourlyflow/pdf', true, this.buildUrlSearchParams(searchParams));\r\n }\r\n\r\n private buildUrlSearchParams(searchParams: UniformHourlyFlowReportRequest): GCTSHttpParams {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('gasDay', searchParams.gasDay.toString());\r\n params.set('OnlyUhfReportLocations', \"true\");\r\n params.setOptionalListOfNumbers('locationIds', searchParams.locationIds);\r\n return params;\r\n }\r\n}\r\n\r\nexport class UniformHourlyFlowReportRequest {\r\n locationIds: number[];\r\n gasDay: GasDay;\r\n}\r\n","import {Component} from \"@angular/core\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {Observable} from \"rxjs\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {UniformHourlyFlowReportModel} from \"app/gcts/flowinggas/uniform-hourly-flow-report/uniform-hourly-flow-report.model\";\r\nimport {tap} from \"rxjs/operators\";\r\nimport {NominationSystemService} from \"@shared/services/nomination/nomination-system/nomination-system.service\";\r\nimport {LocationSearchParams, NominationLocationService} from \"@shared/services/nomination/nomination-location/nomination-location.service\";\r\nimport * as FileSaver from \"file-saver\";\r\nimport {FlowingGasUniformHourlyFlowReportService, UniformHourlyFlowReportRequest} from \"@shared/services/flowing-gas/flowing-gas-uniform-hourly-flow-report/flowing-gas-uniform-hourly-flow-report.service\";\r\nimport * as _ from \"lodash\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\n\r\n@Component({\r\n selector: 'app-uniform-hourly-flow-report',\r\n templateUrl: './uniform-hourly-flow-report.component.html',\r\n styleUrls: ['./uniform-hourly-flow-report.component.css']\r\n})\r\n\r\nexport class UniformHourlyFlowReportComponent extends BaseSearchComponent {\r\n\r\n public model: UniformHourlyFlowReportModel = new UniformHourlyFlowReportModel();\r\n private gasDayString = \"gasDay\";\r\n private locationIds = \"locationIds\";\r\n\r\n constructor(appService: AppService,\r\n activatedRoute: ActivatedRoute,\r\n router: Router,\r\n alertService: AlertService,\r\n private flowingGasUniformHourlyFlowReportService: FlowingGasUniformHourlyFlowReportService,\r\n private nominationSystemService: NominationSystemService,\r\n private nominationLocationService: NominationLocationService) {\r\n super('Uniform Hourly Flow', appService, activatedRoute, router, alertService);\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n const paramValidator = ParamValidator.Standard();\r\n paramValidator.isGasDay(this.gasDayString);\r\n return paramValidator.isValid(params);\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams.startGasDay = this.model.today;\r\n this.model.searchParams.locationIds = [];\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams.startGasDay = typedParams.asGasDay(this.gasDayString);\r\n this.model.searchParams.locationIds = typedParams.asListOfNumbers(this.locationIds);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n return {\r\n gasDay: this.model.searchParams.startGasDay,\r\n locationIds: this.model.searchParams.locationIds\r\n };\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n return this.nominationSystemService.pipelineGasDay()\r\n .pipe(\r\n tap(response => {\r\n this.model.today = response.actualGasDay;\r\n this.model.searchParams.startGasDay = response.actualGasDay;\r\n this.model.maxGasDay = response.latestScheduledCycleStatus.gasDay;\r\n this.model.minGasDay = response.earliestSelectableGasDay;\r\n })\r\n );\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n const locationSearchParams = new LocationSearchParams(this.model.searchParams.startGasDay,false, null , null, null , null ,true);\r\n return this.nominationLocationService.queryLocationNames(locationSearchParams)\r\n .pipe(\r\n tap(response => {\r\n this.model.nominationLocations = _.sortBy(response, x=> x.name);\r\n })\r\n );\r\n }\r\n\r\n protected performSearch(): Observable {\r\n const searchParams = new UniformHourlyFlowReportRequest();\r\n searchParams.gasDay = this.model.searchParams.startGasDay;\r\n searchParams.locationIds = this.model.searchParams.locationIds;\r\n\r\n return this.flowingGasUniformHourlyFlowReportService.queryUniformHourlyFlowReportPdf(searchParams)\r\n .pipe(\r\n tap(response => {\r\n const mediaType = response.headers.get('content-type');\r\n const blob = new Blob([response.body], {type: mediaType});\r\n const filename = response.headers.get('content-disposition').split(';')[1].trim().split('=')[1].replace(/\"/g, '');\r\n FileSaver.saveAs(blob, filename);\r\n }\r\n )\r\n );\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n\r\n
\r\n\r\n\r\n
\r\n
\r\n
\r\n","import * as _ from \"lodash\";\r\n\r\nexport class RunReportAsType {\r\n public static NOM_GROUP_OWNER: RunReportAsType = new RunReportAsType('NomGroupOwner', \"Nom Group Owner\");\r\n public static NOMINATION_AGENT: RunReportAsType = new RunReportAsType('NomAgent', \"Nomination Agent\");\r\n public static INVOICE_RECIPIENT: RunReportAsType = new RunReportAsType('InvoiceRecipient', \"Invoice Recipient\");\r\n\r\n public static ALL: RunReportAsType[] = [RunReportAsType.NOM_GROUP_OWNER, RunReportAsType.NOMINATION_AGENT, RunReportAsType.INVOICE_RECIPIENT];\r\n\r\n constructor(id: string, value: string) {\r\n this._id = id;\r\n this._value = value;\r\n }\r\n\r\n private readonly _id: string;\r\n private readonly _value: string;\r\n\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n get value(): string {\r\n return this._value;\r\n }\r\n\r\n public static find(value: string): RunReportAsType {\r\n if(_.isNil(value)) return null;\r\n const valueAsLowerCase = value.toLowerCase();\r\n return _.find(this.ALL, x => x.id.toLowerCase() === valueAsLowerCase || x.value.toLowerCase() === valueAsLowerCase);\r\n }\r\n}\r\n","import * as _ from \"lodash\";\r\nimport {BusinessRight} from \"@model/business-right\";\r\nimport {IGasAccountTypeResponse} from \"@shared/services/flowing-gas/flowing-gas-account-summary-service/flowing-gas-account-summary.service\";\r\n\r\nexport class GasAccountType {\r\n\r\n public static CONFIRMATION_VARIANCE = new GasAccountType('CV' , 'Confirmation Variance');\r\n public static CUSTODY_TRANSFER = new GasAccountType('CT' , 'Custody Transfer');\r\n public static LDC_VARIANCE = new GasAccountType('LDC' , 'LDC Variance');\r\n public static LINE_PACK_LOSS = new GasAccountType('LPL' , 'Line Pack Loss');\r\n public static OPERATION_LINE_PACK = new GasAccountType('OPLP' , 'Operation Line Pack');\r\n public static OWNED_LINE_PACK = new GasAccountType('OLP' , 'Owned Linepack');\r\n public static OWNED_STORAGE_WORKING_GAS = new GasAccountType('OSWG' , 'Owned Storage Working Gas');\r\n public static PARK_AND_LOAN = new GasAccountType('PAL' , 'Park And Loan');\r\n public static PIPELINE_FUEL_VARIANCE = new GasAccountType('FV' , 'Pipeline Fuel Variance');\r\n public static PIPELINE_VARIANCE = new GasAccountType('PV' , 'Pipeline Variance');\r\n public static SHIPPER_FUEL_VARIANCE = new GasAccountType('SFV' , 'Shipper Fuel Variance');\r\n public static SHORT_NOTICE_BALANCING = new GasAccountType('SNB' , 'Short Notice Balancing');\r\n public static STORAGE_BY_OTHERS = new GasAccountType('SBO' , 'Storage By Others');\r\n public static SYSTEM_LINE_PACK = new GasAccountType('SLP' , 'System Linepack');\r\n public static SHIPPER_OWNED_LINE_PACK = new GasAccountType('SOLP' , 'Shipper Owned Line pack');\r\n public static TITLE_TRANSFER = new GasAccountType('TT' , 'Title Transfer');\r\n public static TRANSPORTATION_BY_OTHER = new GasAccountType('TBO' , 'Transportation By Other');\r\n public static TRANSPORTATION_VARIANCE = new GasAccountType('TV' , 'Transportation Variance');\r\n public static VAR_LOC_TRANSFER = new GasAccountType('VLT' , 'Var Loc Transfer');\r\n public static WRITE_OFF = new GasAccountType('WO' , 'Write Off');\r\n public static OPERATOR_MEASUREMENT_VARIANCE = new GasAccountType('OMV', 'Operator Measurement Variance');\r\n public static PACK_AND_DRAFT = new GasAccountType('PAD' , 'Pack And Draft');\r\n public static MULTI_TITLE_TRANSFER =new GasAccountType('MTT', 'Multi Title Transfer');\r\n public static CUSTOMER_HUB =new GasAccountType('HUB', 'CUSTOMER_HUB');\r\n\r\n\r\n public static ALL = [\r\n GasAccountType.CONFIRMATION_VARIANCE,\r\n GasAccountType.CUSTODY_TRANSFER,\r\n GasAccountType.LDC_VARIANCE,\r\n GasAccountType.LINE_PACK_LOSS,\r\n GasAccountType.OPERATION_LINE_PACK,\r\n GasAccountType.OWNED_LINE_PACK,\r\n GasAccountType.OWNED_STORAGE_WORKING_GAS,\r\n GasAccountType.PARK_AND_LOAN,\r\n GasAccountType.PIPELINE_FUEL_VARIANCE,\r\n GasAccountType.PIPELINE_VARIANCE,\r\n GasAccountType.SHIPPER_FUEL_VARIANCE,\r\n GasAccountType.SHORT_NOTICE_BALANCING,\r\n GasAccountType.STORAGE_BY_OTHERS,\r\n GasAccountType.SYSTEM_LINE_PACK,\r\n GasAccountType.TITLE_TRANSFER,\r\n GasAccountType.TRANSPORTATION_BY_OTHER,\r\n GasAccountType.TRANSPORTATION_VARIANCE,\r\n GasAccountType.VAR_LOC_TRANSFER,\r\n GasAccountType.WRITE_OFF,\r\n GasAccountType.PACK_AND_DRAFT,\r\n GasAccountType.MULTI_TITLE_TRANSFER,\r\n GasAccountType.CUSTOMER_HUB,\r\n\r\n ];\r\n\r\n public static SHIPPER_GAS_ACCOUNT_TYPES: GasAccountType[] = [\r\n GasAccountType.CONFIRMATION_VARIANCE,\r\n GasAccountType.CUSTODY_TRANSFER,\r\n GasAccountType.TRANSPORTATION_VARIANCE,\r\n GasAccountType.SHIPPER_FUEL_VARIANCE,\r\n GasAccountType.TITLE_TRANSFER,\r\n GasAccountType.PARK_AND_LOAN,\r\n GasAccountType.PACK_AND_DRAFT,\r\n GasAccountType.SHORT_NOTICE_BALANCING,\r\n GasAccountType.MULTI_TITLE_TRANSFER,\r\n ];\r\n\r\n public static OPERATOR_GAS_ACCOUNT_TYPES: GasAccountType[] = [\r\n GasAccountType.LDC_VARIANCE,\r\n GasAccountType.PIPELINE_VARIANCE\r\n ];\r\n\r\n public static PIPELINE_GAS_ACCOUNT_TYPES: GasAccountType[] = [\r\n GasAccountType.SYSTEM_LINE_PACK,\r\n GasAccountType.TRANSPORTATION_BY_OTHER,\r\n GasAccountType.STORAGE_BY_OTHERS,\r\n GasAccountType.OWNED_LINE_PACK,\r\n GasAccountType.OWNED_STORAGE_WORKING_GAS,\r\n GasAccountType.OPERATION_LINE_PACK,\r\n GasAccountType.LINE_PACK_LOSS,\r\n GasAccountType.PIPELINE_FUEL_VARIANCE,\r\n GasAccountType.VAR_LOC_TRANSFER,\r\n GasAccountType.WRITE_OFF\r\n ];\r\n\r\n public static GAS_ACCOUNT_TYPE_TO_BUSINESS_RIGHT: { [gasAccountTypeValue: string]: BusinessRight } =\r\n {\r\n [GasAccountType.CUSTODY_TRANSFER.id]: BusinessRight.CustodyTransfer,\r\n [GasAccountType.TITLE_TRANSFER.id]: BusinessRight.MultiTitleTransfer,\r\n [GasAccountType.CUSTOMER_HUB.id]: BusinessRight.MultiTitleTransfer,\r\n [GasAccountType.MULTI_TITLE_TRANSFER.id]: BusinessRight.MultiTitleTransfer,\r\n [GasAccountType.CONFIRMATION_VARIANCE.id]: BusinessRight.ConfirmationVariance,\r\n [GasAccountType.SHIPPER_FUEL_VARIANCE.id]: BusinessRight.TransportationFuel,\r\n [GasAccountType.TRANSPORTATION_VARIANCE.id]: BusinessRight.TransportationVariance,\r\n [GasAccountType.PARK_AND_LOAN.id]: BusinessRight.ParkAndLoan,\r\n [GasAccountType.PACK_AND_DRAFT.id]: BusinessRight.ParkAndLoan,\r\n [GasAccountType.SHORT_NOTICE_BALANCING.id]: BusinessRight.ShortNoticeBalancing,\r\n [GasAccountType.OWNED_LINE_PACK.id]: BusinessRight.SystemLinepack\r\n };\r\n\r\n constructor(id: string, description: string) {\r\n this._id = id;\r\n this._description = description;\r\n }\r\n\r\n private readonly _id: string;\r\n private readonly _description: string;\r\n\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n get description(): string {\r\n return this._description;\r\n }\r\n\r\n public get displayName(): string {\r\n return `${this._description} (${this._id})`;\r\n }\r\n\r\n public getAssociatedBusinessRight(): BusinessRight {\r\n return GasAccountType.GAS_ACCOUNT_TYPE_TO_BUSINESS_RIGHT[this.id];\r\n }\r\n\r\n public static find(value: string): GasAccountType {\r\n if(_.isNil(value)) return null;\r\n\r\n const valueAsLowerCase = value.toLowerCase();\r\n return _.find(this.ALL, x => x.id.toLowerCase() === valueAsLowerCase || x.description.toLowerCase() === valueAsLowerCase);\r\n }\r\n\r\n public static create(dto: IGasAccountTypeResponse): GasAccountType {\r\n return new GasAccountType(dto.accountSummaryMnemonic, dto.accountSummaryDisplay);\r\n }\r\n}\r\n","import {GasDay} from \"@model/gas-day\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {Enterprise} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {Location} from \"@shared/interfaces/location\";\r\nimport {NominationGroupDto} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport {AccountSummaryReportType} from \"@model/account-summary-report-type\";\r\nimport {RunReportAsType} from \"@model/run-report-as-type\";\r\nimport {AllocationMethod} from \"@model/allocation-method\";\r\nimport {GasAccountType} from \"@model/gas-account-type\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport {AccountSummary} from \"@shared/services/flowing-gas/flowing-gas-account-summary-service/flowing-gas-account-summary.service\";\r\nimport {DateTime} from \"@model/date-time\";\r\nimport {BaseViewModel} from \"@model/base-view-model\";\r\nimport {BillingProcess} from \"@shared/services/flowing-gas/flowing-gas-allocation-and-balancing-billing-process/flowing-gas-allocation-and-balancing-billing-process.service\";\r\nimport {PipelineSystemSettingDto} from \"@shared/services/flowing-gas/flowing-gas-pipeline-system-setting-service/flowing-gas-pipeline-system-setting-service\";\r\n\r\nexport class AccountSummaryByLocationDailyReportModel extends BaseViewModel {\r\n isExternalUser: boolean = true;\r\n\r\n oldestBillingMonth: BillingMonth;\r\n openBillingMonth: BillingMonth;\r\n preliminaryBillingMonth: BillingMonth;\r\n\r\n allocationAndBalanceBillingProcess: BillingProcess;\r\n\r\n minGasDay: GasDay;\r\n maxGasDay: GasDay;\r\n maxGasDayWithinMonth: GasDay;\r\n\r\n minBillingGasMonth: GasMonth;\r\n maxBillingGasMonth: GasMonth;\r\n\r\n shipperEnterprises: Enterprise[];\r\n operatorEnterprises: Enterprise[];\r\n pipelineEnterprises: Enterprise[];\r\n\r\n shipperGasAccountTypes: GasAccountType[];\r\n pipelineGasAccountTypes: GasAccountType[] = GasAccountType.PIPELINE_GAS_ACCOUNT_TYPES;\r\n\r\n reportTypes: AccountSummaryReportType[];\r\n enterprises: Enterprise[];\r\n allEnterprises: Enterprise[]; // Test\r\n accountTypes: GasAccountType[] = GasAccountType.SHIPPER_GAS_ACCOUNT_TYPES;\r\n locations: Location[];\r\n runReportAsTypes: RunReportAsType[] = RunReportAsType.ALL;\r\n nominationGroups: NominationGroupDto[];\r\n allocationMethods: AllocationMethod[] = AllocationMethod.ALL;\r\n\r\n searchParams: AccountSummaryByLocationDailyReportSearchParams = new AccountSummaryByLocationDailyReportSearchParams();\r\n lastSearchParams: AccountSummaryByLocationDailyReportSearchParams;\r\n\r\n searchResults: AccountSummary[];\r\n searchResultsAsOf: DateTime;\r\n\r\n pipelineSystemSettings: PipelineSystemSettingDto;\r\n}\r\n\r\nexport class AccountSummaryByLocationDailyReportSearchParams {\r\n // For All Report Types\r\n reportType: string;\r\n startGasDay: GasDay;\r\n endGasDay: GasDay;\r\n billingGasMonth: GasMonth;\r\n customerEnterpriseId?: number;\r\n\r\n // Shipper And Operator\r\n locationId?: number;\r\n isVarianceOnly: boolean = true;\r\n runReportAsType: string = RunReportAsType.NOM_GROUP_OWNER.id;\r\n nominationGroupId?: number;\r\n\r\n // Shipper And Pipeline\r\n accountType: string;\r\n\r\n // Operator\r\n allocationMethod: string;\r\n\r\n // Last Search Params\r\n enterprises: Enterprise[];\r\n accountTypes: GasAccountType[];\r\n nominationGroups: NominationGroupDto[];\r\n}\r\n","import * as _ from \"lodash\";\r\n\r\nexport class AccountSummaryReportType {\r\n public static SHIPPER: AccountSummaryReportType = new AccountSummaryReportType(\"Shipper\");\r\n public static OPERATOR: AccountSummaryReportType = new AccountSummaryReportType(\"Operator\");\r\n public static PIPELINE: AccountSummaryReportType = new AccountSummaryReportType(\"Pipeline\");\r\n\r\n public static ALL: AccountSummaryReportType[] = [AccountSummaryReportType.SHIPPER, AccountSummaryReportType.OPERATOR, AccountSummaryReportType.PIPELINE];\r\n public static ALL_FOR_EXTERNAL_USER: AccountSummaryReportType[] = [AccountSummaryReportType.SHIPPER, AccountSummaryReportType.OPERATOR];\r\n\r\n constructor(value: string) {\r\n this._value = value;\r\n }\r\n\r\n private readonly _value: string;\r\n\r\n get value(): string {\r\n return this._value;\r\n }\r\n\r\n public static find(value: string): AccountSummaryReportType {\r\n return _.find(this.ALL, x => x.value.toLowerCase() === value.toLowerCase());\r\n }\r\n}\r\n","import * as _ from \"lodash\";\r\nimport {Injectable} from \"@angular/core\";\r\nimport {Observable} from \"rxjs\";\r\nimport {map} from \"rxjs/operators\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {AccountSummaryReportType} from \"@model/account-summary-report-type\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {GasAccountType} from \"@model/gas-account-type\";\r\nimport {RunReportAsType} from \"@model/run-report-as-type\";\r\nimport {AllocationMethod} from \"@model/allocation-method\";\r\nimport {FlowinggasResourceService} from \"@shared/resources/flowinggas-resource.service\";\r\nimport {HttpResponse} from \"@angular/common/http\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FlowingGasAccountSummaryService {\r\n constructor(private flowingGasResourceService: FlowinggasResourceService) {\r\n }\r\n\r\n public queryShipperGasAccountTypes(startGasDay: GasDay, endGasDay: GasDay) : Observable{\r\n const params = new GCTSHttpParams();\r\n params.setGasDay(startGasDay, 'fromGasDay');\r\n params.setGasDay(endGasDay, 'toGasDay');\r\n\r\n return this.flowingGasResourceService.get(`/reports/gasAccountSummaryAccountTypes/${AccountSummaryReportType.SHIPPER.value}`, true, params)\r\n .pipe(\r\n map(dtos => _.map(dtos, dto => GasAccountType.create(dto)))\r\n );\r\n }\r\n\r\n public query(searchParams: AccountSummarySearchParams): Observable {\r\n const params = new GCTSHttpParams();\r\n params.set('accountSummaryType', searchParams.reportType.value);\r\n params.setGasDay(searchParams.startGasDay, 'fromGasDay');\r\n params.setGasDay(searchParams.endGasDay, 'toGasDay');\r\n params.setGasMonth(searchParams.billingMonth, 'billingMonth');\r\n params.setNumber('enterpriseCid', searchParams.enterpriseId);\r\n params.set('accountType', searchParams.accountType?.id);\r\n params.set('allocationMethod', searchParams.allocationMethod?.value);\r\n params.setNumber('locationId', searchParams.locationId);\r\n params.set('runReportAs', searchParams.runReportAsType?.id);\r\n params.setBoolean('varianceOnly', searchParams.isVarianceOnly);\r\n params.setNumber('nominationGroupId', searchParams.nomGroupId);\r\n\r\n return this.flowingGasResourceService.get('/reports/gasAccountSummary', true, params)\r\n .pipe(\r\n map(dtos => _.map(dtos, dto => AccountSummary.create(dto)))\r\n );\r\n }\r\n\r\n public queryMonthEnd(searchParams: AccountSummaryMonthEndSearchParams): Observable {\r\n const params = new GCTSHttpParams();\r\n params.set('accountSummaryType', searchParams.reportType.value);\r\n params.setGasDay(searchParams.reportingMonth.start(), 'fromGasDay');\r\n params.setGasDay(searchParams.reportingMonth.end(), 'toGasDay');\r\n params.setGasMonth(searchParams.reportingMonth, 'reportingMonth');\r\n params.setGasMonth(searchParams.billingMonth, 'billingMonth');\r\n params.setNumber('enterpriseCid', searchParams.enterpriseId);\r\n params.set('accountType', searchParams.accountType?.id);\r\n params.set('allocationMethod', searchParams.allocationMethod?.value);\r\n params.setNumber('locationId', searchParams.locationId);\r\n params.set('runReportAs', searchParams.runReportAsType?.id);\r\n params.setBoolean('varianceOnly', searchParams.isVarianceOnly);\r\n params.setNumber('nominationGroupId', searchParams.nomGroupId);\r\n\r\n return this.flowingGasResourceService.get('/reports/gasAccountSummaryMonthEnd', true, params)\r\n .pipe(\r\n map(dtos => _.map(dtos, dto => AccountSummary.create(dto)))\r\n );\r\n }\r\n\r\n public getAccountSummaryPdf(levelType: AccountSummaryReportLevelType, reportType: AccountSummaryReportType, fromGasDay: GasDay, toGasDay: GasDay, billingMonth: GasMonth,\r\n enterpriseId?: number, accountType?: GasAccountType, allocationMethod?: AllocationMethod, locationId?: number, isVarianceOnly?: boolean, runReportAsType?: RunReportAsType,\r\n nomGroupId?: number): Observable> {\r\n const params = new GCTSHttpParams();\r\n params.set('accountSummaryType', reportType.value);\r\n params.setGasDay(fromGasDay, 'fromGasDay');\r\n params.setGasDay(toGasDay, 'toGasDay');\r\n params.setGasMonth(billingMonth, 'billingMonth');\r\n params.setNumber('enterpriseCid', enterpriseId);\r\n params.set('accountType', accountType?.id);\r\n params.set('allocationMethod', allocationMethod?.value);\r\n params.setNumber('locationId', locationId);\r\n params.set('runReportAs', runReportAsType?.id);\r\n params.setBoolean('varianceOnly', isVarianceOnly);\r\n params.setNumber('nominationGroupId', nomGroupId);\r\n params.set('level', levelType.toString());\r\n\r\n return this.flowingGasResourceService.getData('/reports/gasAccountSummary/pdf', true, params);\r\n }\r\n}\r\n\r\nexport enum AccountSummaryReportLevelType {\r\n summary = 'summary',\r\n transactions = 'transactions',\r\n details = 'details'\r\n}\r\n\r\nexport class AccountSummarySearchParams {\r\n private constructor(\r\n public reportType: AccountSummaryReportType,\r\n public startGasDay: GasDay,\r\n public endGasDay: GasDay,\r\n public billingMonth: GasMonth,\r\n public enterpriseId: number,\r\n public isVarianceOnly: boolean,\r\n public runReportAsType?: RunReportAsType,\r\n public accountType?: GasAccountType,\r\n public allocationMethod?: AllocationMethod,\r\n public locationId?: number,\r\n public nomGroupId?: number) {\r\n }\r\n\r\n public static byShipper(startGasDay: GasDay, endGasDay: GasDay, billingMonth: GasMonth, enterpriseId: number,\r\n isVarianceOnly: boolean, runReportAsType: RunReportAsType, accountType?: GasAccountType,\r\n locationId?: number, nomGroupId?: number): AccountSummarySearchParams {\r\n return new AccountSummarySearchParams(AccountSummaryReportType.SHIPPER, startGasDay, endGasDay, billingMonth, enterpriseId, isVarianceOnly, runReportAsType, accountType, null, locationId, nomGroupId);\r\n }\r\n\r\n public static byOperator(startGasDay: GasDay, endGasDay: GasDay, billingMonth: GasMonth, enterpriseId: number,\r\n isVarianceOnly: boolean, runReportAsType: RunReportAsType, allocationMethod?: AllocationMethod,\r\n locationId?: number, nomGroupId?: number): AccountSummarySearchParams {\r\n return new AccountSummarySearchParams(AccountSummaryReportType.OPERATOR, startGasDay, endGasDay, billingMonth, enterpriseId, isVarianceOnly, runReportAsType, null, allocationMethod, locationId, nomGroupId);\r\n }\r\n\r\n public static byPipeline(startGasDay: GasDay, endGasDay: GasDay, billingMonth: GasMonth, enterpriseId: number,\r\n accountType?: GasAccountType): AccountSummarySearchParams {\r\n return new AccountSummarySearchParams(AccountSummaryReportType.PIPELINE, startGasDay, endGasDay, billingMonth, enterpriseId, false, null, accountType, null, null, null);\r\n }\r\n}\r\n\r\nexport class AccountSummaryMonthEndSearchParams {\r\n private constructor(\r\n public reportType: AccountSummaryReportType,\r\n public reportingMonth: GasMonth,\r\n public billingMonth: GasMonth,\r\n public enterpriseId: number,\r\n public isVarianceOnly: boolean,\r\n public runReportAsType?: RunReportAsType,\r\n public accountType?: GasAccountType,\r\n public allocationMethod?: AllocationMethod,\r\n public locationId?: number,\r\n public nomGroupId?: number) {\r\n }\r\n\r\n public static byShipper(reportingMonth: GasMonth, billingMonth: GasMonth, enterpriseId: number,\r\n isVarianceOnly: boolean, runReportAsType: RunReportAsType, accountType?: GasAccountType,\r\n locationId?: number, nomGroupId?: number): AccountSummaryMonthEndSearchParams {\r\n return new AccountSummaryMonthEndSearchParams(AccountSummaryReportType.SHIPPER, reportingMonth, billingMonth, enterpriseId, isVarianceOnly, runReportAsType, accountType, null, locationId, nomGroupId);\r\n }\r\n\r\n public static byOperator(reportingMonth: GasMonth, billingMonth: GasMonth, enterpriseId: number,\r\n isVarianceOnly: boolean, runReportAsType: RunReportAsType, allocationMethod?: AllocationMethod,\r\n locationId?: number, nomGroupId?: number): AccountSummaryMonthEndSearchParams {\r\n return new AccountSummaryMonthEndSearchParams(AccountSummaryReportType.OPERATOR, reportingMonth, billingMonth, enterpriseId, isVarianceOnly, runReportAsType, null, allocationMethod, locationId, nomGroupId);\r\n }\r\n\r\n public static byPipeline(reportingMonth: GasMonth, billingMonth: GasMonth, enterpriseId: number,\r\n accountType?: GasAccountType): AccountSummaryMonthEndSearchParams {\r\n return new AccountSummaryMonthEndSearchParams(AccountSummaryReportType.PIPELINE, reportingMonth, billingMonth, enterpriseId, false, null, accountType, null, null, null);\r\n }\r\n}\r\n\r\nexport interface IGasAccountTypeResponse {\r\n code: string;\r\n description: string;\r\n accountSummaryDisplay: string;\r\n accountSummaryMnemonic: string;\r\n}\r\n\r\nexport interface IAccountSummaryResponse {\r\n // global\r\n gasMonth: string;\r\n openingBalance: string;\r\n inTotal: string;\r\n outTotal: string;\r\n variance: string;\r\n closingBalance: string;\r\n isPpa: boolean;\r\n\r\n // shipper & operator\r\n customerId: string;\r\n locationSummaries: IGasAccountSummaryLocationDetailResponse[];\r\n\r\n // pipeline\r\n ownerEnterpriseId: string;\r\n dailyDetails: IDailyDetailResponse[];\r\n accountType: string;\r\n}\r\n\r\nexport interface IDailyDetailResponse {\r\n gasDay: string;\r\n openingBalance: string;\r\n inTotal: string;\r\n outTotal: string;\r\n variance: string;\r\n closingBalance: string;\r\n isPpa: boolean;\r\n\r\n transactions: IDailyDetailTransactionResponse[];\r\n}\r\n\r\nexport interface IDailyDetailTransactionResponse {\r\n transactionType: string;\r\n in?: string;\r\n out?: string;\r\n useNomGroup: boolean;\r\n isPpa: boolean;\r\n fromNominationGroupId?: string;\r\n toNominationGroupId?: string;\r\n fromAccountType: string;\r\n toAccountType: string;\r\n locationId: string;\r\n}\r\n\r\nexport interface IGasAccountSummaryLocationDetailResponse {\r\n customerId?: number;\r\n locationId: number;\r\n openingBalance: number;\r\n inTotal: number;\r\n outTotal: number;\r\n variance: number;\r\n closingBalance: number;\r\n isPpa: boolean;\r\n\r\n summaries: IGasAccountSummaryDetailResponse[];\r\n}\r\n\r\nexport interface IGasAccountSummaryDetailResponse {\r\n customerId?: string;\r\n accountType: string;\r\n locationId?: number;\r\n nominationGroupId?: number;\r\n nominationGroupMnemonic?: string;\r\n nominationGroupOwnerEnterpriseId?: number;\r\n nominationGroupOwnerName?: string;\r\n nominationGroupOwnerMnemonic?: string;\r\n openingBalance: number;\r\n inTotal: number;\r\n outTotal: number;\r\n variance: number;\r\n closingBalance: number;\r\n isPpa: boolean;\r\n\r\n dailySummaries: IGasAccountDailySummaryResponse[];\r\n}\r\n\r\nexport interface IGasAccountDailySummaryResponse {\r\n gasDay: string;\r\n openingBalance: string;\r\n inTotal: string;\r\n outTotal: string;\r\n variance: string;\r\n closingBalance: string;\r\n isPpa: boolean;\r\n locationId?: number;\r\n nominationGroupId?: number;\r\n\r\n transactions: IGasAccountSummaryTransactionResponse[];\r\n}\r\n\r\nexport class IGasAccountSummaryTransactionResponse {\r\n transactionType: string;\r\n in?: string;\r\n out?: string;\r\n useNomGroup: boolean;\r\n isPpa: boolean;\r\n gasDay: string;\r\n locationName: string;\r\n transferLocationName: string;\r\n nominationGroupId?: number;\r\n accountType: string;\r\n nominationGroupOwnerId?: number;\r\n locationId?: number;\r\n useLocation: boolean;\r\n tos: string;\r\n taxZeroRated: string;\r\n bidPrice: string;\r\n upDownContract: string;\r\n counterParty: string;\r\n sqIn: number;\r\n sqOut: number;\r\n}\r\n\r\nexport class AccountSummary {\r\n // global\r\n gasMonth: GasMonth;\r\n openingBalance: number;\r\n inTotal: number;\r\n outTotal: number;\r\n variance: number;\r\n closingBalance: number;\r\n isPpa: boolean;\r\n\r\n // shipper & operator\r\n customerId: number;\r\n locationSummaries: IGasAccountSummaryLocationDetailResponse[];\r\n\r\n // pipeline\r\n ownerEnterpriseId: number;\r\n dailyDetails: AccountSummaryDailyDetail[];\r\n accountType: string;\r\n\r\n public static create(dto: IAccountSummaryResponse): AccountSummary {\r\n const accountSummary = new AccountSummary();\r\n\r\n accountSummary.gasMonth = GasMonth.parse(dto.gasMonth);\r\n accountSummary.openingBalance = +dto.openingBalance;\r\n accountSummary.inTotal = +dto.inTotal;\r\n accountSummary.outTotal = +dto.outTotal;\r\n accountSummary.variance = +dto.variance;\r\n accountSummary.closingBalance = +dto.closingBalance;\r\n accountSummary.isPpa = dto.isPpa;\r\n\r\n // shipper & operator\r\n accountSummary.customerId = +dto.customerId;\r\n accountSummary.locationSummaries = dto.locationSummaries;\r\n\r\n // pipeline\r\n accountSummary.ownerEnterpriseId = +dto.ownerEnterpriseId;\r\n accountSummary.dailyDetails = _.map(dto.dailyDetails, x => AccountSummaryDailyDetail.create(x));\r\n accountSummary.accountType = dto.accountType;\r\n\r\n return accountSummary;\r\n }\r\n}\r\n\r\nexport class AccountSummaryDailyDetail {\r\n gasDay: GasDay;\r\n openingBalance: number;\r\n inTotal: number;\r\n outTotal: number;\r\n variance: number;\r\n closingBalance: number;\r\n isPpa: boolean;\r\n\r\n transactions: DailyDetailTransaction[];\r\n\r\n public static create(dto: IDailyDetailResponse): AccountSummaryDailyDetail {\r\n const dailyDetail = new AccountSummaryDailyDetail();\r\n\r\n dailyDetail.gasDay = GasDay.parse(dto.gasDay);\r\n dailyDetail.openingBalance = +dto.openingBalance;\r\n dailyDetail.inTotal = +dto.inTotal;\r\n dailyDetail.outTotal = +dto.outTotal;\r\n dailyDetail.variance = +dto.variance;\r\n dailyDetail.closingBalance = +dto.closingBalance;\r\n dailyDetail.isPpa = !!dto.isPpa;\r\n\r\n dailyDetail.transactions = _.map(dto.transactions, x => DailyDetailTransaction.create(x));\r\n\r\n return dailyDetail;\r\n }\r\n}\r\n\r\nexport class DailyDetailTransaction {\r\n transactionType: string;\r\n in?: number;\r\n out?: number;\r\n useNomGroup: boolean;\r\n isPpa: boolean;\r\n fromNominationGroupId?: number;\r\n toNominationGroupId?: number;\r\n fromAccountType: string;\r\n toAccountType: string;\r\n locationId: number;\r\n\r\n public static create(dto: IDailyDetailTransactionResponse): DailyDetailTransaction {\r\n const transaction = new DailyDetailTransaction();\r\n\r\n transaction.transactionType = dto.transactionType;\r\n transaction.in = !_.isNil(dto.in) ? +dto.in : null;\r\n transaction.out = !_.isNil(dto.out) ? +dto.out : null;\r\n transaction.useNomGroup = dto.useNomGroup;\r\n transaction.isPpa = dto.isPpa;\r\n transaction.fromNominationGroupId = +dto.fromNominationGroupId;\r\n transaction.toNominationGroupId = +dto.toNominationGroupId;\r\n transaction.fromAccountType = dto.fromAccountType;\r\n transaction.toAccountType = dto.toAccountType;\r\n transaction.locationId = +dto.locationId;\r\n\r\n return transaction;\r\n }\r\n}\r\n","import {FlowinggasResourceService} from \"@shared/resources/flowinggas-resource.service\";\r\nimport {Observable} from \"rxjs\";\r\nimport {Injectable} from \"@angular/core\";\r\nimport {map} from \"rxjs/operators\";\r\nimport * as _ from \"lodash\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {HttpResponse} from \"@angular/common/http\";\r\nimport {GasDay} from \"@model/gas-day\";\r\n\r\n@Injectable()\r\nexport class FlowingGasEnterpriseService {\r\n constructor(private flowinggasResource: FlowinggasResourceService) {\r\n }\r\n\r\n public queryPipelineOwners(): Observable {\r\n return this.flowinggasResource.get('/gasAccount/pipeline/owners');\r\n }\r\n\r\n public queryTransportationGasAccountOwners(): Observable {\r\n return this.flowinggasResource.get('/gasAccount/transportation/owners');\r\n }\r\n\r\n public queryAllGasAccountOwners(): Observable {\r\n return this.flowinggasResource.get('/gasAccount/owners');\r\n }\r\n\r\n public queryTransferGasAccountTypes(): Observable {\r\n return this.flowinggasResource.get('/gasAccountTypes/transfer')\r\n .pipe(\r\n map(gasAccountType => _.map(gasAccountType, g => GasAccountType2.create(g)))\r\n );\r\n }\r\n\r\n public queryTransactionTypesForAccountType(accountType : string): Observable {\r\n return this.flowinggasResource.get(`/transactionType/${accountType}`, true)\r\n .pipe(\r\n map(transactionType => _.map(transactionType, g => TransactionType2.create(g)))\r\n );\r\n }\r\n\r\n public queryGetTransportationExportCsv(searchParams :TransactionExportRequest): Observable>{\r\n return this.flowinggasResource.getData('/transactionExport/transportation/csv', true,\r\n this.buildUrlSearchParams(searchParams));\r\n }\r\n\r\n public queryGetTransportationExportCsvCount(searchParams :TransactionExportRequest) : Observable{\r\n return this.flowinggasResource.get('/transactionExport/transportation/csv/count',true,\r\n this.buildUrlSearchParams(searchParams))\r\n .pipe(\r\n map(res => TransactionExportRowCount.create(res)));\r\n }\r\n\r\n public queryGetTransferExportCsv(searchParams :TransactionExportRequest) : Observable>{\r\n return this.flowinggasResource.getData('/transactionExport/transfer/csv',true,\r\n this.buildUrlSearchParams(searchParams));\r\n }\r\n\r\n public queryGetTransferExportCsvCount(searchParams :TransactionExportRequest) : Observable{\r\n return this.flowinggasResource.get('/transactionExport/transfer/csv/count',\r\n true,this.buildUrlSearchParams(searchParams))\r\n .pipe(\r\n map(res => TransactionExportRowCount.create(res)));\r\n }\r\n\r\n private buildUrlSearchParams(searchParams :TransactionExportRequest) : GCTSHttpParams{\r\n const urlSearchParams = new GCTSHttpParams();\r\n urlSearchParams.set('exportByType',searchParams.reportType);\r\n urlSearchParams.setGasDay(searchParams.startGasDay,'fromGasDay');\r\n urlSearchParams.setGasDay(searchParams.endGasDay, 'toGasDay');\r\n urlSearchParams.setOptionalNumber('customerId',searchParams.enterpriseId);\r\n urlSearchParams.setBoolean('includePPA',searchParams.includePPA);\r\n if(searchParams.reportType === \"Transportation\")\r\n {\r\n urlSearchParams.setOptionalNumber('receiptLocationId',searchParams.receiptLocationId);\r\n urlSearchParams.setOptionalNumber('deliveryLocationId',searchParams.deliveryLocationId);\r\n urlSearchParams.set('serviceCategory',searchParams.serviceCategory);\r\n urlSearchParams.setListOfStrings('serviceCodes', searchParams.billableServiceIds);\r\n urlSearchParams.set('serviceOptionCode', searchParams.serviceOption);\r\n }\r\n if(searchParams.reportType === \"Transfer\")\r\n {\r\n urlSearchParams.setOptionalNumber('locationId',searchParams.locationId);\r\n urlSearchParams.set('accountType',searchParams.accountType);\r\n urlSearchParams.setListOfStrings('transactionTypes', searchParams.transactionTypes);\r\n urlSearchParams.setBoolean('includeThreadedColumns',searchParams.includeThreadedColumns);\r\n }\r\n return urlSearchParams;\r\n }\r\n}\r\n\r\n// Query Request\r\nexport class TransactionExportRequest{\r\n\r\n // For all report types\r\n public reportType : string;\r\n public startGasDay: GasDay;\r\n public endGasDay: GasDay;\r\n public enterpriseId?: number;\r\n public includePPA: boolean = true;\r\n\r\n // For Transportation\r\n public receiptLocationId?: number;\r\n public deliveryLocationId?: number;\r\n public serviceCategory : string;\r\n public billableServiceIds : string[];\r\n public serviceOption : string;\r\n\r\n // For Transfer\r\n locationId?: number;\r\n accountType: string;\r\n transactionTypes: string[];\r\n includeThreadedColumns: boolean;\r\n}\r\n\r\nexport interface IGasAccountType {\r\n id : string;\r\n description : string;\r\n gasaccountTypeClassification : string;\r\n accountBalancingMethod : string;\r\n}\r\n\r\nexport class GasAccountType2{\r\n id: string;\r\n description: string;\r\n gasaccountTypeClassification: string;\r\n accountBalancingMethod: string;\r\n\r\n public static create(dto: IGasAccountType): GasAccountType2 {\r\n const gasAccountType = new GasAccountType2();\r\n gasAccountType.id= dto.id;\r\n gasAccountType.description = dto.description;\r\n gasAccountType.gasaccountTypeClassification = dto.gasaccountTypeClassification;\r\n gasAccountType.accountBalancingMethod = dto.accountBalancingMethod;\r\n return gasAccountType;\r\n }\r\n}\r\n\r\nexport interface ITransactionType {\r\n id: string;\r\n description: string;\r\n}\r\n\r\nexport class TransactionType2{\r\n id: string;\r\n description: string;\r\n\r\n public static create(dto: ITransactionType): TransactionType2 {\r\n const transactionType = new TransactionType2();\r\n transactionType.id= dto.id;\r\n transactionType.description = dto.description;\r\n return transactionType;\r\n }\r\n}\r\n\r\nexport interface ITransactionExportRowCount{\r\n count : number;\r\n exceedLimit : boolean;\r\n message : string;\r\n}\r\n\r\nexport class TransactionExportRowCount{\r\n count : number;\r\n exceedLimit : boolean;\r\n message : string;\r\n\r\n public static create(dto: ITransactionExportRowCount): TransactionExportRowCount {\r\n const transactionExportRowCount = new TransactionExportRowCount();\r\n transactionExportRowCount.count= dto.count;\r\n transactionExportRowCount.exceedLimit = dto.exceedLimit;\r\n transactionExportRowCount.message = dto.message;\r\n return transactionExportRowCount;\r\n }\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {FlowinggasResourceService} from \"@shared/resources/flowinggas-resource.service\";\r\nimport {Observable} from \"rxjs\";\r\n\r\n@Injectable()\r\nexport class FlowingGasPipelineSystemSettingService {\r\n constructor(private flowingGasResource: FlowinggasResourceService) {}\r\n\r\n public getSettings(): Observable {\r\n return this.flowingGasResource.get('/pipelineSystemSetting', true, null);\r\n }\r\n\r\n public saveSettings(pipelineSystemSettingDto: PipelineSystemSettingDto): Observable {\r\n return this.flowingGasResource.putWithNoResponseBody('/pipelineSystemSetting', pipelineSystemSettingDto, true, null);\r\n }\r\n}\r\n\r\nexport class PipelineSystemSettingDto\r\n{\r\n public measurementDataSource: string;\r\n public summarizeThreadedNomination: boolean;\r\n public displayScheduledQty: boolean;\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Account Summary By: {{model.lastSearchParams?.reportType}}\r\n Start Gas Day: {{model.lastSearchParams?.startGasDay | gasDayFormat}}\r\n End Gas Day: {{model.lastSearchParams?.endGasDay | gasDayFormat}}\r\n
\r\n Billing Month: {{model.lastSearchParams?.billingGasMonth}}\r\n \r\n Customer:\r\n Owner:\r\n {{model.lastSearchParams?.customerEnterpriseId | displayName: 'id' : 'displayValue' : model.lastSearchParams.enterprises}}\r\n \r\n Account Type: {{model.lastSearchParams?.accountType | displayName: 'id' : 'displayName' : model.lastSearchParams.accountTypes}}\r\n Allocation Method: {{model.lastSearchParams?.allocationMethod | displayName: 'value' : 'value' : model.allocationMethods}}\r\n \r\n
\r\n Location: {{model.lastSearchParams?.locationId | displayName: 'id' : 'name' : model.locations}}\r\n Variance Only: {{model.lastSearchParams?.isVarianceOnly | booleanAsYesNo}}\r\n Run Report As: {{model.lastSearchParams?.runReportAsType | displayName: 'id' : 'value' : model.runReportAsTypes}}\r\n Nomination Group: {{model.lastSearchParams?.nominationGroupId | displayName: 'id' : 'mnemonic' : model.lastSearchParams.nominationGroups}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.searchParams.billingGasMonth}}\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.searchParams?.customerEnterpriseId | displayName: 'id' : 'displayValue' : model.enterprises}}\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.reportType}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.allocationAndBalanceBillingProcess.status === 'Final' ? 'Final' : 'Preliminary'}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.startGasDay | gasDayFormat}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.endGasDay | gasDayFormat}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.billingGasMonth}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.customerEnterpriseId | displayName: 'id' : 'displayValue' : model.lastSearchParams.enterprises}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.accountType | displayName: 'id' : 'displayName' : model.lastSearchParams.accountTypes}}\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.allocationMethod | displayName: 'value' : 'value' : model.allocationMethods}}\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.locationId | displayName: 'id' : 'name' : model.locations}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n  \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.isVarianceOnly | booleanAsYesNo}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.runReportAsType | displayName: 'id' : 'value' : model.runReportAsTypes}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.nominationGroupId | displayName: 'id' : 'mnemonic' : model.lastSearchParams.nominationGroups}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n 0\">\r\n Account Summary PDF\r\n \r\n | Account Detail PDF\r\n \r\n \r\n
\r\n
\r\n
\r\n Number of results found: {{model.searchResults.length}}\r\n AS OF {{model.searchResultsAsOf.toDate() | dateFormat:'YYYY-MMM-DD H:mm:ss A'}}\r\n\r\n 0\">\r\n Export Summary CSV |\r\n Export Daily Summary CSV |\r\n Export Details CSV\r\n \r\n
\r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n
\r\n TOTAL {{row.value}}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n
\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n\r\n \r\n\r\n \r\n
\r\n
{{ data.value | gasDayFormat }}
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
{{ row.value?.toLocaleString() }}
\r\n
\r\n\r\n
\r\n \r\n\r\n \r\n\r\n \r\n
\r\n Transaction
Type\r\n
\r\n \r\n
\r\n Transfer
Nom Group\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n Transfer
Location\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
{{ row.value ? row.value : ' ' }}
\r\n
\r\n
\r\n
{{ row.value || row.value === 0 ? row.value?.toLocaleString() : ' ' }}
\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n\r\n \r\n\r\n \r\n
\r\n TOTAL {{ data.value }}\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n 0 && model.searchResults[0].locationSummaries.length > 0\">\r\n Account Summary PDF\r\n \r\n | Account Detail PDF\r\n \r\n \r\n
\r\n
\r\n
\r\n Number of results found: {{model.searchResults[0].locationSummaries.length}}\r\n AS OF {{model.searchResultsAsOf.toDate() | dateFormat:'YYYY-MMM-DD H:mm:ss A'}}\r\n\r\n 0 && model.searchResults[0].locationSummaries.length > 0\">\r\n Export Summary CSV |\r\n Export Daily Summary CSV |\r\n Export Details CSV\r\n \r\n
\r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n\r\n \r\n\r\n \r\n
\r\n
{{ data.value | gasDayFormat }}
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
{{ row.value?.toLocaleString() }}
\r\n
\r\n\r\n
\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n
\r\n Transfer
Nom Group\r\n
\r\n \r\n
\r\n
{{ row.data['useLocation'] ? row.data['locationName'] : row.value ? row.value : ' ' }}
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
{{ row.value ? row.value : ' ' }}
\r\n
\r\n
\r\n
{{ row.value || row.value === 0 ? row.value?.toLocaleString() : ' ' }}
\r\n
\r\n\r\n \r\n
\r\n\r\n \r\n
\r\n\r\n \r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n Number of results found: {{model.searchResults.length}}\r\n AS OF {{model.searchResultsAsOf.toDate() | dateFormat:'YYYY-MMM-DD H:mm:ss A'}}\r\n\r\n 0\">\r\n Export Summary CSV |\r\n Export Daily Summary CSV |\r\n Export Details CSV\r\n \r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n\r\n \r\n\r\n \r\n
\r\n {{ data.value | gasDayFormat }}\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n\r\n \r\n\r\n \r\n \r\n
\r\n
{{row.value?row.value:row.data.fromAccountType }}
\r\n
\r\n \r\n
\r\n
{{row.value?row.value:row.data.toAccountType }}
\r\n
\r\n \r\n \r\n \r\n\r\n \r\n
\r\n\r\n \r\n
\r\n\r\n \r\n\r\n
\r\n
\r\n\r\n
\r\n\r\n\r\n
\r\n","import * as _ from \"lodash\";\r\nimport {Component} from \"@angular/core\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {forkJoin, Observable, of} from \"rxjs\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {\r\n AccountSummaryByLocationDailyReportModel,\r\n AccountSummaryByLocationDailyReportSearchParams\r\n} from \"app/gcts/flowinggas/account-summary-by-location-daily-report/account-summary-by-location-daily-report.model\";\r\nimport {AccountSummaryReportType} from \"@model/account-summary-report-type\";\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {concatMap, tap} from \"rxjs/operators\";\r\nimport {LocationService} from \"@shared/services/common-data/location/location.service\";\r\nimport {\r\n AccountsCustomerSearchParams,\r\n AccountsEnterpriseService\r\n} from \"@shared/services/accounts/accounts-enterprise/accounts-enterprise.service\";\r\nimport {BusinessRight} from \"@model/business-right\";\r\nimport {Enterprise, EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {FlowingGasEnterpriseService} from \"@shared/services/flowing-gas/flowing-gas-enterprise-service/flowing-gas-enterprise-service\";\r\nimport {\r\n NominationGroupService,\r\n QuerySimpleNomGroupsSearchParams\r\n} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {RunReportAsType} from \"@model/run-report-as-type\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {GasAccountType} from \"@model/gas-account-type\";\r\nimport {AllocationMethod} from \"@model/allocation-method\";\r\nimport {\r\n AccountSummary,\r\n AccountSummaryReportLevelType,\r\n AccountSummarySearchParams,\r\n DailyDetailTransaction,\r\n FlowingGasAccountSummaryService, IGasAccountSummaryDetailResponse,\r\n} from \"@shared/services/flowing-gas/flowing-gas-account-summary-service/flowing-gas-account-summary.service\";\r\nimport {CommonDataGasdayService} from \"@shared/services/common-data/common-data-gasday/common-data-gasday.service\";\r\nimport {LocationEnrichmentService} from \"@shared/services/enrichment/location-enrichment.service\";\r\nimport {NomGroupEnrichmentService} from \"@shared/services/enrichment/nomgroup-enrichment.service\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport * as FileSaver from \"file-saver\";\r\nimport {UserService} from \"@shared/services/webapp/user/user-service\";\r\nimport {DataGridHooks} from \"@shared/devexpress/datagrid-hooks\";\r\nimport {FlowingGasAllocationAndBalancingBillingProcessService} from \"@shared/services/flowing-gas/flowing-gas-allocation-and-balancing-billing-process/flowing-gas-allocation-and-balancing-billing-process.service\";\r\nimport {FlowingGasPipelineSystemSettingService, PipelineSystemSettingDto} from \"@shared/services/flowing-gas/flowing-gas-pipeline-system-setting-service/flowing-gas-pipeline-system-setting-service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {PipelineSettingMapService} from \"@shared/services/nomination/pipeline-settings-map/pipeline-setting-map.service\";\r\n\r\n@Component({\r\n selector: 'app-account-summary-by-location-daily-report',\r\n templateUrl: './account-summary-by-location-daily-report.component.html',\r\n styleUrls: ['./account-summary-by-location-daily-report.component.css']\r\n})\r\nexport class AccountSummaryByLocationDailyReportComponent extends BaseSearchComponent {\r\n private static PARAM_REPORT_TYPE: string = 'reportType';\r\n private static PARAM_START_GAS_DAY: string = 'startGasDay';\r\n private static PARAM_END_GAS_DAY: string = 'endGasDay';\r\n private static PARAM_BILLING_MONTH: string = 'billingMonth';\r\n private static PARAM_ENTERPRISE_ID: string = 'enterpriseId';\r\n private static PARAM_LOCATION_ID: string = 'locationId';\r\n private static PARAM_IS_VARIANCE_ONLY: string = 'isVarianceOnly';\r\n private static PARAM_RUN_REPORT_AS: string = 'runReportAs';\r\n private static PARAM_NOM_GROUP_ID: string = 'nomGroupId';\r\n private static PARAM_ACCOUNT_TYPE: string = 'accountType';\r\n private static PARAM_ALLOCATION_METHOD: string = 'allocationMethod';\r\n\r\n public referenceAccountSummaryReportType = AccountSummaryReportType;\r\n public referenceAccountSummaryPdfLevelType = AccountSummaryReportLevelType;\r\n\r\n public model: AccountSummaryByLocationDailyReportModel = new AccountSummaryByLocationDailyReportModel();\r\n\r\n constructor(appService: AppService,\r\n activatedRoute: ActivatedRoute,\r\n router: Router,\r\n alertService: AlertService,\r\n private userService: UserService,\r\n private commonDataGasDayService: CommonDataGasdayService,\r\n private commonDataBillingMonthService: CommonDataBillingMonthService,\r\n private commonDataLocationService: LocationService,\r\n private commonDataEnterpriseService: EnterpriseService,\r\n private accountsEnterpriseService: AccountsEnterpriseService,\r\n private flowingGasEnterpriseService: FlowingGasEnterpriseService,\r\n private accountsNominationGroupService: NominationGroupService,\r\n private enterpriseEnrichmentService: EnterpriseEnrichmentService,\r\n private locationEnrichmentService: LocationEnrichmentService,\r\n private nominationGroupEnrichmentService: NomGroupEnrichmentService,\r\n private flowingGasAccountSummaryService: FlowingGasAccountSummaryService,\r\n private flowingGasAllocationAndBalancingBillingProcessService: FlowingGasAllocationAndBalancingBillingProcessService,\r\n private fileService: FileService,\r\n private flowingGasPipelineSystemSettingService: FlowingGasPipelineSystemSettingService,\r\n private sessionService: SessionService) {\r\n super('Account Summary by Location - Daily', appService, activatedRoute, router, alertService);\r\n\r\n enterpriseEnrichmentService.setEnrichmentResource(commonDataEnterpriseService);\r\n locationEnrichmentService.setEnrichmentResource(commonDataLocationService);\r\n nominationGroupEnrichmentService.setEnrichmentResource(accountsNominationGroupService);\r\n\r\n this.appService.hideMenu();\r\n }\r\n\r\n /**\r\n * Public Methods\r\n */\r\n\r\n public isSearchDisabled() : boolean {\r\n return this.model.searchParams.customerEnterpriseId\r\n && (this.model.searchParams.reportType !== this.referenceAccountSummaryReportType.PIPELINE.value)\r\n && (!this.model.nominationGroups || this.model.nominationGroups.length === 0);\r\n }\r\n\r\n public onReportTypeChanged(): void {\r\n this.alertService.clearMessages();\r\n\r\n // Clear Selected Fields\r\n this.model.searchParams.customerEnterpriseId = null;\r\n this.model.searchParams.accountType = null;\r\n this.model.searchParams.allocationMethod = null;\r\n this.model.searchParams.nominationGroupId = null;\r\n\r\n this.adjustFormIfUserIsAnExternalUser();\r\n\r\n this.changeAvailableOptionsBasedOnSelectedReportType();\r\n }\r\n\r\n public onStartGasDayChanged(): void {\r\n if (!this.model.searchParams.startGasDay) return;\r\n\r\n const startGasMonth = GasMonth.fromGasDay(this.model.searchParams.startGasDay);\r\n this.model.searchParams.endGasDay = startGasMonth.end();\r\n this.model.maxGasDayWithinMonth = startGasMonth.end();\r\n\r\n this.model.minBillingGasMonth = startGasMonth; // cannot select billing month prior to start gas day\r\n\r\n if (this.model.preliminaryBillingMonth && startGasMonth.isEqual(this.model.preliminaryBillingMonth.gasMonth)) {\r\n // working in preliminary billing month, so can only select it for the billing month\r\n this.model.maxBillingGasMonth = startGasMonth;\r\n } else {\r\n // otherwise cannot select billing month after the open month\r\n this.model.maxBillingGasMonth = this.model.openBillingMonth.gasMonth;\r\n }\r\n\r\n // ensure the current selection is within the limits\r\n if (this.model.searchParams.billingGasMonth.isLessThan(this.model.minBillingGasMonth)) {\r\n this.model.searchParams.billingGasMonth = this.model.minBillingGasMonth;\r\n }\r\n if (this.model.searchParams.billingGasMonth.isGreaterThan(this.model.maxBillingGasMonth)) {\r\n this.model.searchParams.billingGasMonth = this.model.maxBillingGasMonth;\r\n }\r\n }\r\n\r\n\r\n public onCustomerEnterpriseIdChanged(): void {\r\n this.alertService.clearMessages();\r\n\r\n this.model.searchParams.nominationGroupId = null;\r\n\r\n this.queryNominationGroups().subscribe(() => {});\r\n }\r\n\r\n public onAccountTypeChanged(): void {\r\n if(this.model.searchParams.reportType === AccountSummaryReportType.SHIPPER.value) {\r\n this.queryNominationGroups().subscribe(() => {});\r\n }\r\n }\r\n\r\n public shipperSearchResultsDataGridOnRowPrepared(row) {\r\n if(row.rowType === 'data') {\r\n row.rowElement.classList.add('opening-balance-summary');\r\n }\r\n }\r\n\r\n public onRunReportAsTypeChanged(): void {\r\n this.queryNominationGroups().subscribe(() => {});\r\n }\r\n\r\n public shipperLocationSearchResultsDataGridOnCellPrepared($event): void {\r\n DataGridHooks.hideExpandIcon($event, rowData => !rowData.dailySummaries || rowData.dailySummaries.length === 0);\r\n }\r\n\r\n public operatorLocationSearchResultsDataGridOnCellPrepared($event): void {\r\n DataGridHooks.hideExpandIcon($event, rowData => !rowData['summaries'][0]['dailySummaries'] || rowData['summaries'][0]['dailySummaries'].length === 0);\r\n }\r\n\r\n public pipelineSearchResultsDataGridOnCellPrepared($event): void {\r\n DataGridHooks.hideExpandIcon($event, rowData => !rowData.dailyDetails || rowData.dailyDetails.length === 0);\r\n }\r\n\r\n public accountSummaryDetailDataGridOnCellPrepared($event): void {\r\n DataGridHooks.hideExpandIcon($event, rowData => !rowData['transactions'] || rowData['transactions'].length === 0);\r\n }\r\n\r\n public transactionTypeSortValue(data: any): string {\r\n // Transport and Nominated Fuel should be grouped together (will be done using their Nom Group Mnemonic)\r\n if(data.transactionType === 'Transport') return `${data.transactionType}_${data.nominationGroupMnemonic}`;\r\n if(data.transactionType === 'Nominated Fuel') return `Transport_${data.nominationGroupMnemonic}`;\r\n return data.transactionType;\r\n }\r\n\r\n public inSortValue(data: any): number {\r\n return _.isNil(data.in) ? 10 : 1; // Rows with in values will display first\r\n }\r\n\r\n public exportAccountSummaryPdf(levelType: AccountSummaryReportLevelType): void {\r\n this.flowingGasAccountSummaryService.getAccountSummaryPdf(\r\n levelType,\r\n AccountSummaryReportType.find(this.model.lastSearchParams.reportType),\r\n this.model.lastSearchParams.startGasDay,\r\n this.model.lastSearchParams.endGasDay,\r\n this.model.lastSearchParams.billingGasMonth,\r\n this.model.lastSearchParams.customerEnterpriseId,\r\n GasAccountType.find(this.model.lastSearchParams.accountType),\r\n AllocationMethod.find(this.model.lastSearchParams.allocationMethod),\r\n this.model.lastSearchParams.locationId,\r\n this.model.lastSearchParams.isVarianceOnly,\r\n RunReportAsType.find(this.model.lastSearchParams.runReportAsType),\r\n this.model.lastSearchParams.nominationGroupId\r\n )\r\n .pipe(\r\n tap(response => {\r\n const mediaType = response.headers.get('content-type');\r\n const blob = new Blob([response.body], {type: mediaType});\r\n const filename = response.headers.get('content-disposition').split(';')[1].trim().split('=')[1].replace(/\"/g, '');\r\n FileSaver.saveAs(blob, filename);\r\n }\r\n )\r\n )\r\n .subscribe(() => {});\r\n }\r\n\r\n public exportSummaryCsv(): void {\r\n const filename = this.getCsvFileName(AccountSummaryReportLevelType.summary, false);\r\n\r\n if(this.model.lastSearchParams.reportType === AccountSummaryReportType.SHIPPER.value) {\r\n const exportArray = [];\r\n _.forEach(this.model.searchResults, accountSummary => {\r\n _.forEach(accountSummary.locationSummaries, locationSummary => {\r\n _.forEach(locationSummary.summaries, summary => {\r\n const row = {\r\n customerShortName: accountSummary['customerShortName'],\r\n customerMnemonic: accountSummary['customerMnemonic'],\r\n locationName: locationSummary['locationName'],\r\n accountType: summary.accountType,\r\n nominationGroupMnemonic: summary['nominationGroupMnemonic'],\r\n startGasDay: this.model.lastSearchParams.startGasDay.toString(),\r\n endGasDay: this.model.lastSearchParams.endGasDay.toString(),\r\n openingBalance: summary.openingBalance,\r\n inTotal: summary.inTotal,\r\n outTotal: summary.outTotal,\r\n variance: summary.variance,\r\n closingBalance: summary.closingBalance\r\n };\r\n\r\n exportArray.push(row);\r\n });\r\n });\r\n });\r\n\r\n const headers = ['Customer Name', 'Customer Mnemonic', 'Location Name', 'Account Type', 'Nom Group', 'Start Gas Day', 'End Gas Day', 'Opening Balance', 'In(GJ)', 'Out (GJ)', 'Variance (GJ)', 'Closing Balance (GJ)'];\r\n const columns = ['customerShortName', 'customerMnemonic', 'locationName', 'accountType', 'nominationGroupMnemonic', 'startGasDay', 'endGasDay', 'openingBalance', 'inTotal', 'outTotal', 'variance', 'closingBalance'];\r\n\r\n this.fileService.downloadCsvFile(filename, exportArray, headers, columns);\r\n }\r\n\r\n if(this.model.lastSearchParams.reportType === AccountSummaryReportType.OPERATOR.value) {\r\n const exportArray = [];\r\n _.forEach(this.model.searchResults, accountSummary => {\r\n _.forEach(accountSummary.locationSummaries, locationSummary => {\r\n _.forEach(locationSummary.summaries, summary => {\r\n const row = {\r\n locationName: locationSummary['locationName'],\r\n startGasDay: this.model.lastSearchParams.startGasDay.toString(),\r\n endGasDay: this.model.lastSearchParams.endGasDay.toString(),\r\n openingBalance: summary.openingBalance,\r\n inTotal: summary.inTotal,\r\n outTotal: summary.outTotal,\r\n variance: summary.variance,\r\n closingBalance: summary.closingBalance\r\n };\r\n\r\n exportArray.push(row);\r\n });\r\n });\r\n });\r\n\r\n const headers = ['Location Name', 'Start Gas Day', 'End Gas Day', 'Opening Balance', 'In(GJ)', 'Out (GJ)', 'Variance (GJ)', 'Closing Balance (GJ)'];\r\n const columns = ['locationName', 'startGasDay', 'endGasDay', 'openingBalance', 'inTotal', 'outTotal', 'variance', 'closingBalance'];\r\n\r\n this.fileService.downloadCsvFile(filename, exportArray, headers, columns);\r\n }\r\n\r\n if(this.model.lastSearchParams.reportType === AccountSummaryReportType.PIPELINE.value) {\r\n const exportArray = [];\r\n _.forEach(this.model.searchResults, summary => {\r\n const row = {\r\n accountType: summary.accountType,\r\n ownerEnterpriseMnemonic: summary['ownerEnterpriseMnemonic'],\r\n startGasDay: this.model.lastSearchParams.startGasDay.toString(),\r\n endGasDay: this.model.lastSearchParams.endGasDay.toString(),\r\n openingBalance: summary.openingBalance,\r\n inTotal: summary.inTotal,\r\n outTotal: summary.outTotal,\r\n variance: summary.variance,\r\n closingBalance: summary.closingBalance\r\n };\r\n\r\n exportArray.push(row);\r\n });\r\n\r\n const headers = ['Account Type', 'Owner Mnemonic', 'Start Gas Day', 'End Gas Day', 'Opening Balance', 'In (GJ)', 'Out (GJ)', 'Variance (GJ)', 'Closing Balance (GJ)'];\r\n const columns = ['accountType', 'ownerEnterpriseMnemonic', 'startGasDay', 'endGasDay', 'openingBalance', 'inTotal', 'outTotal', 'variance', 'closingBalance'];\r\n\r\n this.fileService.downloadCsvFile(filename, exportArray, headers, columns);\r\n }\r\n }\r\n\r\n public pushNomGroupOwnerInfo(objToUpdate: IGasAccountSummaryDetailResponse){\r\n if(_.isNil(objToUpdate.nominationGroupOwnerEnterpriseId)) {\r\n return;\r\n }\r\n const enterprise = _.find(this.model.allEnterprises, x => x.id === objToUpdate.nominationGroupOwnerEnterpriseId);\r\n objToUpdate.nominationGroupOwnerMnemonic = enterprise.mnemonic;\r\n objToUpdate.nominationGroupOwnerName = enterprise.shortName;\r\n }\r\n\r\n public exportDailySummaryCsv(): void {\r\n const filename = this.getCsvFileName(AccountSummaryReportLevelType.summary, false);\r\n\r\n if(this.model.lastSearchParams.reportType === AccountSummaryReportType.SHIPPER.value) {\r\n const exportArray = [];\r\n _.forEach(this.model.searchResults, accountSummary => {\r\n _.forEach(accountSummary.locationSummaries, locationSummary => {\r\n _.forEach(locationSummary.summaries, summary => {\r\n _.forEach(summary.dailySummaries, daily => {\r\n const row = {\r\n customerShortName: accountSummary['customerShortName'],\r\n customerMnemonic: accountSummary['customerMnemonic'],\r\n locationName: locationSummary['locationName'],\r\n accountType: summary.accountType,\r\n nominationGroupMnemonic: summary['nominationGroupMnemonic'],\r\n gasDay: GasDay.parse(daily.gasDay).toString(),\r\n openingBalance: daily.openingBalance,\r\n inTotal: daily.inTotal,\r\n outTotal: daily.outTotal,\r\n variance: daily.variance,\r\n closingBalance: daily.closingBalance\r\n };\r\n\r\n exportArray.push(row);\r\n });\r\n });\r\n });\r\n });\r\n\r\n const headers = ['Customer Name', 'Customer Mnemonic', 'Location Name', 'Account Type', 'Nom Group', 'Gas Day', 'Opening Balance', 'In(GJ)', 'Out (GJ)', 'Variance (GJ)', 'Closing Balance (GJ)'];\r\n const columns = ['customerShortName', 'customerMnemonic', 'locationName', 'accountType', 'nominationGroupMnemonic', 'gasDay', 'openingBalance', 'inTotal', 'outTotal', 'variance', 'closingBalance'];\r\n\r\n this.fileService.downloadCsvFile(filename, exportArray, headers, columns);\r\n }\r\n\r\n\r\n if(this.model.lastSearchParams.reportType === AccountSummaryReportType.OPERATOR.value) {\r\n const exportArray = [];\r\n _.forEach(this.model.searchResults, accountSummary => {\r\n _.forEach(accountSummary.locationSummaries, locationSummary => {\r\n _.forEach(locationSummary.summaries, summary => {\r\n this.pushNomGroupOwnerInfo(summary);\r\n _.forEach(summary.dailySummaries, daily => {\r\n const row = {\r\n locationName: locationSummary['locationName'],\r\n nomGroupOwner: summary['nominationGroupOwnerName'],\r\n nomGroupOwnerMnemonic: summary['nominationGroupOwnerMnemonic'],\r\n gasDay: daily.gasDay.toString(),\r\n openingBalance: daily.openingBalance,\r\n inTotal: daily.inTotal,\r\n outTotal: daily.outTotal,\r\n variance: daily.variance,\r\n closingBalance: daily.closingBalance\r\n };\r\n\r\n exportArray.push(row);\r\n });\r\n });\r\n });\r\n });\r\n\r\n const headers = ['Location Name', 'Nomination Group Owner', 'Nomination Group Owner Mnemonic', 'Gas Day', 'Opening Balance', 'In(GJ)', 'Out (GJ)', 'Variance (GJ)', 'Closing Balance (GJ)'];\r\n const columns = ['locationName', 'nomGroupOwner', 'nomGroupOwnerMnemonic', 'gasDay', 'openingBalance', 'inTotal', 'outTotal', 'variance', 'closingBalance'];\r\n\r\n this.fileService.downloadCsvFile(filename, exportArray, headers, columns);\r\n }\r\n\r\n if(this.model.lastSearchParams.reportType === AccountSummaryReportType.PIPELINE.value) {\r\n const exportArray = [];\r\n _.forEach(this.model.searchResults, summary => {\r\n _.forEach(summary.dailyDetails, dailyDetail => {\r\n const row = {\r\n accountType: summary.accountType,\r\n ownerEnterpriseMnemonic: summary['ownerEnterpriseMnemonic'],\r\n gasDay: dailyDetail.gasDay.toString(),\r\n openingBalance: dailyDetail.openingBalance,\r\n inTotal: dailyDetail.inTotal,\r\n outTotal: dailyDetail.outTotal,\r\n variance: dailyDetail.variance,\r\n closingBalance: dailyDetail.closingBalance\r\n };\r\n\r\n exportArray.push(row);\r\n });\r\n });\r\n\r\n const headers = ['Account Type', 'Owner Mnemonic', 'Gas Day', 'Opening Balance', 'In (GJ)', 'Out (GJ)', 'Variance (GJ)', 'Closing Balance (GJ)'];\r\n const columns = ['accountType', 'ownerEnterpriseMnemonic', 'gasDay', 'openingBalance', 'inTotal', 'outTotal', 'variance', 'closingBalance'];\r\n\r\n this.fileService.downloadCsvFile(filename, exportArray, headers, columns);\r\n }\r\n }\r\n\r\n public exportDetailsCsv(): void {\r\n const filename = this.getCsvFileName(AccountSummaryReportLevelType.details, true);\r\n\r\n if(this.model.lastSearchParams.reportType === AccountSummaryReportType.SHIPPER.value) {\r\n const exportArray = [];\r\n _.forEach(this.model.searchResults, accountSummary => {\r\n _.forEach(accountSummary.locationSummaries, locationSummary => {\r\n _.forEach(locationSummary.summaries, summary => {\r\n _.forEach(summary.dailySummaries, daily => {\r\n _.forEach(daily.transactions, transaction => {\r\n const row = {\r\n customerShortName: accountSummary['customerShortName'],\r\n customerMnemonic: accountSummary['customerMnemonic'],\r\n locationName: locationSummary['locationName'],\r\n accountType: summary.accountType,\r\n nominationGroupMnemonic: summary['nominationGroupMnemonic'],\r\n gasDay: GasDay.parse(daily.gasDay).toString(),\r\n transactionType: transaction.transactionType,\r\n transferNomGroup: transaction.useNomGroup ? transaction['nominationGroupMnemonic'] : transaction.accountType,\r\n transferNomGroupOwner: transaction['nominationGroupOwnerShortName'],\r\n upDownContract: transaction.upDownContract,\r\n counterParty: transaction.counterParty,\r\n transferLocation: transaction.locationName,\r\n tos: transaction.tos,\r\n taxZeroRated: transaction.taxZeroRated,\r\n bidPrice: transaction.bidPrice,\r\n in: transaction.in,\r\n out: transaction.out\r\n };\r\n\r\n exportArray.push(row);\r\n });\r\n });\r\n });\r\n });\r\n });\r\n\r\n const headers = ['Customer Name', 'Customer Mnemonic', 'Location Name', 'Account Type', 'Nom Group', 'Gas Day', 'Transaction Type', 'Transfer Nom Group', 'Transfer Nom Group Owner'];\r\n const columns = ['customerShortName', 'customerMnemonic', 'locationName', 'accountType', 'nominationGroupMnemonic', 'gasDay', 'transactionType', 'transferNomGroup', 'transferNomGroupOwner'];\r\n\r\n if (!this.model.pipelineSystemSettings.summarizeThreadedNomination){\r\n headers.push('Up Dn Contract', 'Up Dn ID');\r\n columns.push('upDownContract', 'counterParty');\r\n }\r\n\r\n headers.push('Transfer Location', 'TOS', 'Tax Zero Rated', 'Bid Price', 'In (GJ)', 'Out (GJ)');\r\n columns.push('transferLocation', 'tos', 'taxZeroRated', 'bidPrice', 'in', 'out');\r\n\r\n this.fileService.downloadCsvFile(filename, exportArray, headers, columns);\r\n }\r\n\r\n if(this.model.lastSearchParams.reportType === AccountSummaryReportType.OPERATOR.value) {\r\n const exportArray = [];\r\n _.forEach(this.model.searchResults, accountSummary => {\r\n _.forEach(accountSummary.locationSummaries, locationSummary => {\r\n _.forEach(locationSummary.summaries, summary => {\r\n _.forEach(summary.dailySummaries, daily => {\r\n _.forEach(daily.transactions, transaction => {\r\n let transferNomGroup = '';\r\n if(transaction.useNomGroup) {\r\n if (transaction['nominationGroupOwnerShortName'] != null && !transaction.useLocation) {\r\n transferNomGroup = transaction['nominationGroupOwnerDisplayName'];\r\n }\r\n else if (transaction.useLocation) {\r\n transferNomGroup = transaction.locationName;\r\n }\r\n }\r\n\r\n const row = {\r\n locationName: locationSummary['locationName'],\r\n nomGroupOwner: transaction['nominationGroupOwnerShortName'],\r\n nomGroupOwnerMnemonic: transaction['nominationGroupOwnerMnemonic'],\r\n gasDay: daily.gasDay.toString(),\r\n transactionType: transaction.transactionType,\r\n transferNomGroup: transaction.useNomGroup ? transaction['nominationGroupMnemonic'] : transaction.accountType,\r\n transferNomGroupOwner: transferNomGroup,\r\n in: transaction.in,\r\n out: transaction.out,\r\n upDownContract: transaction.upDownContract,\r\n counterParty: transaction.counterParty,\r\n sqIn: transaction.sqIn,\r\n sqOut: transaction.sqOut\r\n };\r\n\r\n exportArray.push(row);\r\n });\r\n });\r\n });\r\n });\r\n });\r\n\r\n const headers = ['Location Name', 'Nomination Group Owner', 'Nomination Group Owner Mnemonic', 'Gas Day', 'Transaction Type', 'Transfer Nom Group', 'Transfer Nom Group Owner'];\r\n const columns = ['locationName', 'nomGroupOwner', 'nomGroupOwnerMnemonic', 'gasDay', 'transactionType', 'transferNomGroup', 'transferNomGroupOwner'];\r\n\r\n if (!this.model.pipelineSystemSettings.summarizeThreadedNomination){\r\n headers.push('Up Dn Contract', 'Up Dn ID');\r\n columns.push('upDownContract', 'counterParty');\r\n }\r\n if (this.model.pipelineSystemSettings.displayScheduledQty){\r\n headers.push('SQ In (GJ)');\r\n columns.push('sqIn');\r\n }\r\n\r\n headers.push('In (GJ)');\r\n columns.push('in');\r\n\r\n if (this.model.pipelineSystemSettings.displayScheduledQty){\r\n headers.push('SQ Out (GJ)');\r\n columns.push('sqOut');\r\n }\r\n\r\n headers.push('Out (GJ)');\r\n columns.push('out');\r\n\r\n this.fileService.downloadCsvFile(filename, exportArray, headers, columns);\r\n }\r\n\r\n\r\n if(this.model.lastSearchParams.reportType === AccountSummaryReportType.PIPELINE.value) {\r\n const exportArray = [];\r\n _.forEach(this.model.searchResults, summary => {\r\n _.forEach(summary.dailyDetails, dailyDetail => {\r\n _.forEach(dailyDetail.transactions, transaction => {\r\n const row = {\r\n accountType: summary.accountType,\r\n ownerEnterpriseMnemonic: summary['ownerEnterpriseMnemonic'],\r\n gasDay: dailyDetail.gasDay.toString(),\r\n transactionType: transaction.transactionType,\r\n from: transaction.useNomGroup ? transaction['fromNominationGroupMnemonic'] : transaction.fromAccountType,\r\n to: transaction.useNomGroup ? transaction['toNominationGroupMnemonic'] : transaction.toAccountType,\r\n location: transaction['locationName'],\r\n in: transaction.in,\r\n out: transaction.out\r\n };\r\n\r\n exportArray.push(row);\r\n });\r\n });\r\n });\r\n\r\n const headers = ['Account Type', 'Owner Mnemonic', 'Gas Day', 'Transaction Type', 'From', 'To', 'Location', 'In(GJ)', 'Out (GJ)'];\r\n const columns = ['accountType', 'ownerEnterpriseMnemonic', 'gasDay', 'transactionType', 'from', 'to', 'location', 'in', 'out'];\r\n\r\n this.fileService.downloadCsvFile(filename, exportArray, headers, columns);\r\n }\r\n }\r\n\r\n /**\r\n * Protected Methods\r\n */\r\n\r\n protected loadInitialResources(): Observable {\r\n this.model.isExternalUser = this.userService.user.isExternalUser;\r\n this.model.reportTypes = this.model.isExternalUser\r\n ? AccountSummaryReportType.ALL_FOR_EXTERNAL_USER\r\n : AccountSummaryReportType.ALL;\r\n\r\n const getOldestBillingMonth$ = this.commonDataBillingMonthService.getOldest()\r\n .pipe(\r\n tap(oldestBillingMonth => this.model.oldestBillingMonth = oldestBillingMonth)\r\n );\r\n\r\n const getOpenBillingMonth$ = this.commonDataBillingMonthService.getOpen()\r\n .pipe(\r\n tap(openBillingMonth => this.model.openBillingMonth = openBillingMonth)\r\n );\r\n\r\n const getPreliminaryBillingMonth$ = this.commonDataBillingMonthService.getPreliminary()\r\n .pipe(\r\n tap(preliminaryBillingMonth => this.model.preliminaryBillingMonth = preliminaryBillingMonth)\r\n );\r\n\r\n const queryShipperEnterprises$ = this.queryShipperEnterprises();\r\n\r\n const queryOperatorEnterprises$ = this.queryOperatorEnterprises();\r\n\r\n const queryPipelineEnterprises$ = this.flowingGasEnterpriseService.queryPipelineOwners()\r\n .pipe(\r\n concatMap(enterpriseIds => this.createAndEnrichEnterpriseIds(enterpriseIds)),\r\n tap(enterprises => this.model.pipelineEnterprises = this.orderEnterpriseByDisplayValue(enterprises))\r\n );\r\n\r\n const queryEnterprises$ = this.commonDataEnterpriseService.getAll()\r\n .pipe(\r\n tap(enterprises => {\r\n this.enterpriseEnrichmentService.enrichArray(enterprises, 'cid');\r\n this.model.allEnterprises = _.orderBy(enterprises, x => x.displayName);\r\n })\r\n );\r\n\r\n const queryLocations$ = this.commonDataLocationService.queryAccountLocations()\r\n .pipe(\r\n tap(locations => this.model.locations = locations)\r\n );\r\n\r\n const pipelineSystemSetting$ = this.flowingGasPipelineSystemSettingService.getSettings()\r\n .pipe(\r\n tap(settings => {\r\n this.model.pipelineSystemSettings = settings;\r\n }));\r\n\r\n return forkJoin([\r\n getOldestBillingMonth$,\r\n getOpenBillingMonth$,\r\n getPreliminaryBillingMonth$,\r\n queryShipperEnterprises$,\r\n queryOperatorEnterprises$,\r\n queryPipelineEnterprises$,\r\n queryEnterprises$,\r\n queryLocations$,\r\n pipelineSystemSetting$\r\n ])\r\n .pipe(\r\n tap(() => {\r\n this.model.minGasDay = this.model.oldestBillingMonth.firstDayOfMonth;\r\n this.model.maxGasDay = this.model.preliminaryBillingMonth\r\n ? this.model.preliminaryBillingMonth.lastDayOfMonth\r\n : this.model.openBillingMonth.lastDayOfMonth;\r\n\r\n this.model.minBillingGasMonth = this.model.openBillingMonth.gasMonth;\r\n this.model.maxBillingGasMonth = this.model.openBillingMonth.gasMonth;\r\n })\r\n );\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n const paramValidator = ParamValidator.Standard();\r\n paramValidator.isOneOf(AccountSummaryByLocationDailyReportComponent.PARAM_REPORT_TYPE, _.map(AccountSummaryReportType.ALL, x => x.value));\r\n paramValidator.isGasDay(AccountSummaryByLocationDailyReportComponent.PARAM_START_GAS_DAY);\r\n paramValidator.isGasDay(AccountSummaryByLocationDailyReportComponent.PARAM_END_GAS_DAY);\r\n paramValidator.isGasMonth(AccountSummaryByLocationDailyReportComponent.PARAM_BILLING_MONTH);\r\n paramValidator.isNumber(AccountSummaryByLocationDailyReportComponent.PARAM_ENTERPRISE_ID, true);\r\n\r\n if(params[AccountSummaryByLocationDailyReportComponent.PARAM_REPORT_TYPE] === AccountSummaryReportType.SHIPPER.value ||\r\n params[AccountSummaryByLocationDailyReportComponent.PARAM_REPORT_TYPE] === AccountSummaryReportType.OPERATOR.value) {\r\n paramValidator.isNumber(AccountSummaryByLocationDailyReportComponent.PARAM_LOCATION_ID, true);\r\n paramValidator.isBoolean(AccountSummaryByLocationDailyReportComponent.PARAM_IS_VARIANCE_ONLY);\r\n paramValidator.isOneOf(AccountSummaryByLocationDailyReportComponent.PARAM_RUN_REPORT_AS, _.map(RunReportAsType.ALL, x => x.id));\r\n paramValidator.isNumber(AccountSummaryByLocationDailyReportComponent.PARAM_NOM_GROUP_ID, true);\r\n }\r\n\r\n if(params[AccountSummaryByLocationDailyReportComponent.PARAM_REPORT_TYPE] === AccountSummaryReportType.SHIPPER.value) {\r\n paramValidator.isOneOf(AccountSummaryByLocationDailyReportComponent.PARAM_ACCOUNT_TYPE, _.map(this.model.shipperGasAccountTypes, x => x.id), true);\r\n }\r\n\r\n if(params[AccountSummaryByLocationDailyReportComponent.PARAM_REPORT_TYPE] === AccountSummaryReportType.OPERATOR.value) {\r\n paramValidator.isOneOf(AccountSummaryByLocationDailyReportComponent.PARAM_ALLOCATION_METHOD, _.map(AllocationMethod.ALL, x => x.value), true);\r\n }\r\n\r\n if(params[AccountSummaryByLocationDailyReportComponent.PARAM_REPORT_TYPE] === AccountSummaryReportType.PIPELINE.value) {\r\n paramValidator.isOneOf(AccountSummaryByLocationDailyReportComponent.PARAM_ACCOUNT_TYPE, _.map(GasAccountType.PIPELINE_GAS_ACCOUNT_TYPES, x => x.id), true);\r\n }\r\n\r\n return paramValidator.isValid(params);\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams = new AccountSummaryByLocationDailyReportSearchParams();\r\n this.model.searchParams.startGasDay = this.model.openBillingMonth.firstDayOfMonth;\r\n this.model.searchParams.endGasDay = this.model.openBillingMonth.lastDayOfMonth;\r\n this.model.searchParams.billingGasMonth = this.model.openBillingMonth.gasMonth;\r\n\r\n if(this.model.isExternalUser || this.sessionService.getPipeline().code === PipelineSettingMapService.CGL_CODE) {\r\n this.model.searchParams.isVarianceOnly = false;\r\n }\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams.reportType = typedParams.asString(AccountSummaryByLocationDailyReportComponent.PARAM_REPORT_TYPE);\r\n this.model.searchParams.startGasDay = typedParams.asGasDay(AccountSummaryByLocationDailyReportComponent.PARAM_START_GAS_DAY);\r\n this.model.searchParams.endGasDay = typedParams.asGasDay(AccountSummaryByLocationDailyReportComponent.PARAM_END_GAS_DAY);\r\n this.model.searchParams.billingGasMonth = typedParams.asGasMonth(AccountSummaryByLocationDailyReportComponent.PARAM_BILLING_MONTH);\r\n this.model.searchParams.customerEnterpriseId = typedParams.asNullableNumber(AccountSummaryByLocationDailyReportComponent.PARAM_ENTERPRISE_ID);\r\n\r\n if(this.model.searchParams.reportType === AccountSummaryReportType.SHIPPER.value ||\r\n this.model.searchParams.reportType === AccountSummaryReportType.OPERATOR.value) {\r\n this.model.searchParams.locationId = typedParams.asNullableNumber(AccountSummaryByLocationDailyReportComponent.PARAM_LOCATION_ID);\r\n this.model.searchParams.isVarianceOnly = typedParams.asBoolean(AccountSummaryByLocationDailyReportComponent.PARAM_IS_VARIANCE_ONLY);\r\n this.model.searchParams.runReportAsType = typedParams.asString(AccountSummaryByLocationDailyReportComponent.PARAM_RUN_REPORT_AS);\r\n this.model.searchParams.nominationGroupId = typedParams.asNullableNumber(AccountSummaryByLocationDailyReportComponent.PARAM_NOM_GROUP_ID);\r\n }\r\n\r\n if(this.model.searchParams.reportType === AccountSummaryReportType.SHIPPER.value ||\r\n this.model.searchParams.reportType === AccountSummaryReportType.PIPELINE.value) {\r\n this.model.searchParams.accountType = typedParams.asNullableString(AccountSummaryByLocationDailyReportComponent.PARAM_ACCOUNT_TYPE);\r\n }\r\n\r\n if(this.model.searchParams.reportType === AccountSummaryReportType.OPERATOR.value) {\r\n this.model.searchParams.allocationMethod = typedParams.asNullableString(AccountSummaryByLocationDailyReportComponent.PARAM_ALLOCATION_METHOD);\r\n }\r\n\r\n // Manually Trigger Changed Events\r\n this.changeAvailableOptionsBasedOnSelectedReportType();\r\n this.queryNominationGroups().subscribe(() => {\r\n if(this.model.lastSearchParams) {\r\n this.model.lastSearchParams.nominationGroups = this.model.nominationGroups; // Need to store nomination groups in last search params\r\n }\r\n });\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {};\r\n params[AccountSummaryByLocationDailyReportComponent.PARAM_REPORT_TYPE] = this.model.searchParams.reportType;\r\n params[AccountSummaryByLocationDailyReportComponent.PARAM_START_GAS_DAY] = this.model.searchParams.startGasDay;\r\n params[AccountSummaryByLocationDailyReportComponent.PARAM_END_GAS_DAY] = this.model.searchParams.endGasDay;\r\n params[AccountSummaryByLocationDailyReportComponent.PARAM_BILLING_MONTH] = this.model.searchParams.billingGasMonth;\r\n params[AccountSummaryByLocationDailyReportComponent.PARAM_ENTERPRISE_ID] = this.model.searchParams.customerEnterpriseId;\r\n\r\n if(this.model.searchParams.reportType === AccountSummaryReportType.SHIPPER.value ||\r\n this.model.searchParams.reportType === AccountSummaryReportType.OPERATOR.value) {\r\n params[AccountSummaryByLocationDailyReportComponent.PARAM_LOCATION_ID] = this.model.searchParams.locationId;\r\n params[AccountSummaryByLocationDailyReportComponent.PARAM_IS_VARIANCE_ONLY] = this.model.searchParams.isVarianceOnly;\r\n params[AccountSummaryByLocationDailyReportComponent.PARAM_RUN_REPORT_AS] = this.model.searchParams.runReportAsType;\r\n params[AccountSummaryByLocationDailyReportComponent.PARAM_NOM_GROUP_ID] = this.model.searchParams.nominationGroupId;\r\n }\r\n\r\n if(this.model.searchParams.reportType === AccountSummaryReportType.SHIPPER.value ||\r\n this.model.searchParams.reportType === AccountSummaryReportType.PIPELINE.value) {\r\n params[AccountSummaryByLocationDailyReportComponent.PARAM_ACCOUNT_TYPE] = this.model.searchParams.accountType;\r\n }\r\n\r\n if(this.model.searchParams.reportType === AccountSummaryReportType.OPERATOR.value) {\r\n params[AccountSummaryByLocationDailyReportComponent.PARAM_ALLOCATION_METHOD] = this.model.searchParams.allocationMethod;\r\n }\r\n\r\n return params;\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n const startGasDay = this.model.searchParams.startGasDay ?\r\n this.model.searchParams.startGasDay :\r\n this.model.minGasDay;\r\n\r\n const endGasDay = this.model.searchParams.endGasDay ?\r\n this.model.searchParams.endGasDay :\r\n this.model.maxGasDay;\r\n\r\n const queryShipperGasAccountTypes$ = this.flowingGasAccountSummaryService.queryShipperGasAccountTypes(startGasDay, endGasDay)\r\n .pipe(\r\n tap(accountTypes => this.model.shipperGasAccountTypes = accountTypes)\r\n );\r\n\r\n if(this.model.searchParams.reportType === AccountSummaryReportType.SHIPPER.value){\r\n return queryShipperGasAccountTypes$\r\n .pipe(\r\n tap(() => {\r\n this.model.accountTypes = this.model.shipperGasAccountTypes;\r\n })\r\n );\r\n }\r\n return queryShipperGasAccountTypes$;\r\n }\r\n\r\n\r\n protected performSearch(): Observable {\r\n this.adjustFormIfUserIsAnExternalUser();\r\n\r\n this.model.searchResults = null; // Destroy Grid (to refresh data grid, we do not want to preserve any expanded rows)\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n this.model.lastSearchParams.enterprises = this.model.enterprises;\r\n this.model.lastSearchParams.accountTypes = this.model.accountTypes;\r\n\r\n const queryAccountSummary$ = this.flowingGasAccountSummaryService.query(this.buildAccountSummarySearchParams())\r\n .pipe(\r\n concatMap(accountSummaries => this.enterpriseEnrichmentService.enrichArray(accountSummaries, 'customerId', 'customer')),\r\n concatMap(accountSummaries => this.enterpriseEnrichmentService.enrichArray(accountSummaries, 'ownerEnterpriseId', 'ownerEnterprise')),\r\n concatMap(accountSummaries => this.enrichShipperData(accountSummaries)),\r\n concatMap(accountSummaries => this.enrichOperatorData(accountSummaries)),\r\n concatMap(accountSummaries => this.enrichPipelineData(accountSummaries)),\r\n tap(accountSummaries => this.model.searchResults = accountSummaries)\r\n );\r\n\r\n const queryDateTime$ = this.commonDataGasDayService.getServerTimeData()\r\n .pipe(\r\n tap(serverTimeData => this.model.searchResultsAsOf = serverTimeData.serverTime)\r\n );\r\n\r\n const gasMonthForQueryingStatus = this.model.isExternalUser ? GasMonth.fromGasDay(this.model.searchParams.startGasDay) : this.model.searchParams.billingGasMonth;\r\n const queryAllocationAndBalancingBillingProcess$ = this.flowingGasAllocationAndBalancingBillingProcessService.get(gasMonthForQueryingStatus)\r\n .pipe(\r\n tap(allocationAndBalanceBillingProcess => this.model.allocationAndBalanceBillingProcess = allocationAndBalanceBillingProcess[0])\r\n );\r\n\r\n return forkJoin([queryAccountSummary$, queryDateTime$, queryAllocationAndBalancingBillingProcess$]);\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n protected resetCompleted(): void {\r\n this.model.searchResults = null; // Clear Search Results\r\n }\r\n\r\n /**\r\n * Private Methods\r\n */\r\n\r\n private queryNominationGroups(): Observable {\r\n if(_.isNil(this.model.searchParams.customerEnterpriseId) || this.model.searchParams.reportType === AccountSummaryReportType.PIPELINE.value) {\r\n return of({})\r\n .pipe(\r\n tap(() => this.model.nominationGroups = null)\r\n );\r\n }\r\n\r\n const searchParams = new QuerySimpleNomGroupsSearchParams(\r\n GasMonth.fromGasDay(this.model.searchParams.endGasDay),\r\n this.model.searchParams.customerEnterpriseId,\r\n RunReportAsType.find(this.model.searchParams.runReportAsType),\r\n this.getBusinessRightsForReportType(AccountSummaryReportType.find(this.model.searchParams.reportType))\r\n );\r\n\r\n return this.accountsNominationGroupService.querySimpleNomGroups(searchParams)\r\n .pipe(\r\n tap(nominationGroups => {\r\n // Warning Message if no Nom Groups are returned\r\n if(_.isEmpty(nominationGroups)) {\r\n this.alertService.clearMessages();\r\n const enterprise = _.find(this.model.enterprises, x => x.id === this.model.searchParams.customerEnterpriseId);\r\n this.alertService.addWarnMessage('Warning', `No Nomination Groups were found for '${enterprise.displayName}' as a '${RunReportAsType.find(this.model.searchParams.runReportAsType).value}' for '${this.model.searchParams.billingGasMonth}'`);\r\n }\r\n\r\n // Filter Nom Groups\r\n const filteredNomGroupsByAccountType = _.filter(nominationGroups,\r\n nomGroup => !this.model.searchParams.accountType || nomGroup.nominationGroupType === GasAccountType.find(this.model.searchParams.accountType).getAssociatedBusinessRight().alternateName);\r\n\r\n // Order and Set Nom Groups\r\n this.model.nominationGroups = _.sortBy(filteredNomGroupsByAccountType, x => x.mnemonic);\r\n\r\n // Auto Select Nom Group\r\n if(this.model.nominationGroups.length === 1) {\r\n this.model.searchParams.nominationGroupId = this.model.nominationGroups[0].id;\r\n }\r\n\r\n // Remove Selected Nom Group if it does not exist\r\n if(this.model.searchParams.nominationGroupId && !_.some(this.model.nominationGroups, nomGroup => nomGroup.id === this.model.searchParams.nominationGroupId)) {\r\n this.model.searchParams.nominationGroupId = null;\r\n }\r\n })\r\n );\r\n }\r\n\r\n private changeAvailableOptionsBasedOnSelectedReportType(): void {\r\n if(this.model.searchParams.reportType === AccountSummaryReportType.SHIPPER.value) {\r\n this.model.enterprises = this.model.shipperEnterprises;\r\n this.model.accountTypes = this.model.shipperGasAccountTypes;\r\n } else if(this.model.searchParams.reportType === AccountSummaryReportType.OPERATOR.value) {\r\n this.model.enterprises = this.model.operatorEnterprises;\r\n } else if(this.model.searchParams.reportType === AccountSummaryReportType.PIPELINE.value) {\r\n this.model.enterprises = this.model.pipelineEnterprises;\r\n this.model.accountTypes = this.model.pipelineGasAccountTypes;\r\n }\r\n }\r\n\r\n private getBusinessRightsForReportType(reportType: AccountSummaryReportType): BusinessRight[] {\r\n if(reportType === AccountSummaryReportType.SHIPPER) {\r\n return BusinessRight.SHIPPER_BUSINESS_RIGHTS;\r\n } else if(reportType === AccountSummaryReportType.OPERATOR) {\r\n return BusinessRight.OPERATOR_BUSINESS_RIGHTS;\r\n } else if(reportType === AccountSummaryReportType.PIPELINE) {\r\n return [];\r\n }\r\n }\r\n\r\n private createAndEnrichEnterpriseIds(enterpriseIds: number[]): Observable {\r\n const enterprises = _.map(enterpriseIds, enterpriseId => Enterprise.createWithId(enterpriseId));\r\n return this.enterpriseEnrichmentService.enrichArray(enterprises, 'cid');\r\n }\r\n\r\n private orderEnterpriseByDisplayValue(enterprises: Enterprise[]): Enterprise[] {\r\n return _.sortBy(enterprises, enterprise => enterprise.displayValue);\r\n }\r\n\r\n private buildAccountSummarySearchParams(): AccountSummarySearchParams {\r\n if(this.model.searchParams.reportType === AccountSummaryReportType.SHIPPER.value) {\r\n return AccountSummarySearchParams.byShipper(\r\n this.model.searchParams.startGasDay,\r\n this.model.searchParams.endGasDay,\r\n this.model.searchParams.billingGasMonth,\r\n this.model.searchParams.customerEnterpriseId,\r\n this.model.searchParams.isVarianceOnly,\r\n RunReportAsType.find(this.model.searchParams.runReportAsType),\r\n GasAccountType.find(this.model.searchParams.accountType),\r\n this.model.searchParams.locationId,\r\n this.model.searchParams.nominationGroupId);\r\n }\r\n\r\n if(this.model.searchParams.reportType === AccountSummaryReportType.OPERATOR.value) {\r\n return AccountSummarySearchParams.byOperator(\r\n this.model.searchParams.startGasDay,\r\n this.model.searchParams.endGasDay,\r\n this.model.searchParams.billingGasMonth,\r\n this.model.searchParams.customerEnterpriseId,\r\n this.model.searchParams.isVarianceOnly,\r\n RunReportAsType.find(this.model.searchParams.runReportAsType),\r\n AllocationMethod.find(this.model.searchParams.allocationMethod),\r\n this.model.searchParams.locationId,\r\n this.model.searchParams.nominationGroupId);\r\n }\r\n\r\n if(this.model.searchParams.reportType === AccountSummaryReportType.PIPELINE.value) {\r\n return AccountSummarySearchParams.byPipeline(\r\n this.model.searchParams.startGasDay,\r\n this.model.searchParams.endGasDay,\r\n this.model.searchParams.billingGasMonth,\r\n this.model.searchParams.customerEnterpriseId,\r\n GasAccountType.find(this.model.searchParams.accountType));\r\n }\r\n }\r\n\r\n private enrichShipperData(accountSummaries: AccountSummary[]): Observable {\r\n if(this.model.lastSearchParams.reportType !== AccountSummaryReportType.SHIPPER.value) return of(accountSummaries);\r\n\r\n const enrichAccountSummaries: Observable[] = [];\r\n enrichAccountSummaries.push(of([]));\r\n\r\n _.forEach(accountSummaries, accountSummary => {\r\n enrichAccountSummaries.push(this.locationEnrichmentService.enrichArray(accountSummary.locationSummaries, 'locationId', 'location'));\r\n\r\n _.forEach(accountSummary.locationSummaries, locationSummary => {\r\n enrichAccountSummaries.push(this.locationEnrichmentService.enrichArray(locationSummary.summaries, 'locationId', 'location'));\r\n enrichAccountSummaries.push(this.nominationGroupEnrichmentService.enrichArray(locationSummary.summaries, 'nominationGroupId', 'nominationGroup'));\r\n\r\n _.forEach(locationSummary.summaries, summary => {\r\n _.forEach(summary.dailySummaries, dailySummary => {\r\n enrichAccountSummaries.push(this.nominationGroupEnrichmentService.enrichArray(dailySummary.transactions, 'nominationGroupId', 'nominationGroup'));\r\n enrichAccountSummaries.push(this.enterpriseEnrichmentService.enrichArray(dailySummary.transactions, 'nominationGroupOwnerId', 'nominationGroupOwner'));\r\n enrichAccountSummaries.push(this.locationEnrichmentService.enrichArray(dailySummary.transactions, 'locationId', 'location'));\r\n });\r\n });\r\n });\r\n });\r\n\r\n return forkJoin(enrichAccountSummaries)\r\n .pipe(\r\n concatMap(() => {\r\n accountSummaries = _.sortBy(accountSummaries, x => x['customerDisplayName']);\r\n\r\n _.forEach(accountSummaries, x => {\r\n x.locationSummaries = _.sortBy(x.locationSummaries, y => y['locationName']);\r\n });\r\n\r\n return of(accountSummaries);\r\n })\r\n );\r\n }\r\n\r\n private enrichOperatorData(accountSummaries: AccountSummary[]): Observable {\r\n if(this.model.lastSearchParams.reportType !== AccountSummaryReportType.OPERATOR.value) return of(accountSummaries);\r\n\r\n const enrichAccountSummaries: Observable[] = [];\r\n enrichAccountSummaries.push(of([]));\r\n _.forEach(accountSummaries, accountSummary => {\r\n enrichAccountSummaries.push(this.locationEnrichmentService.enrichArray(accountSummary.locationSummaries, 'locationId', 'location'));\r\n\r\n _.forEach(accountSummary.locationSummaries, locationSummary => {\r\n enrichAccountSummaries.push(this.locationEnrichmentService.enrichArray(locationSummary.summaries, 'locationId', 'location'));\r\n enrichAccountSummaries.push(this.nominationGroupEnrichmentService.enrichArray(locationSummary.summaries, 'nominationGroupId', 'nominationGroup'));\r\n\r\n _.forEach(locationSummary.summaries, summary => {\r\n _.forEach(summary.dailySummaries, dailySummary => {\r\n enrichAccountSummaries.push(this.nominationGroupEnrichmentService.enrichArray(dailySummary.transactions, 'nominationGroupId', 'nominationGroup'));\r\n enrichAccountSummaries.push(this.enterpriseEnrichmentService.enrichArray(dailySummary.transactions, 'nominationGroupOwnerId', 'nominationGroupOwner'));\r\n enrichAccountSummaries.push(this.locationEnrichmentService.enrichArray(dailySummary.transactions, 'locationId', 'location'));\r\n });\r\n });\r\n });\r\n });\r\n\r\n return forkJoin(enrichAccountSummaries)\r\n .pipe(\r\n concatMap(() => {\r\n accountSummaries[0].locationSummaries = _.sortBy(accountSummaries[0].locationSummaries, x => x['locationName']);\r\n _.forEach(accountSummaries, accountSummary => {\r\n _.forEach(accountSummary.locationSummaries, locationSummary => {\r\n enrichAccountSummaries.push(this.enterpriseEnrichmentService.enrichArray(locationSummary.summaries, 'nominationGroupOwnerEnterpriseId', 'nominationGroup'));\r\n });\r\n });\r\n return of(accountSummaries);\r\n })\r\n );\r\n\r\n }\r\n\r\n private enrichPipelineData(accountSummaries: AccountSummary[]): Observable {\r\n if(this.model.lastSearchParams.reportType !== AccountSummaryReportType.PIPELINE.value) return of(accountSummaries);\r\n\r\n const enrichDetailTransactions: Observable[] = [];\r\n enrichDetailTransactions.push(of([]));\r\n _.forEach(accountSummaries, x => {\r\n _.forEach(x.dailyDetails, y => {\r\n enrichDetailTransactions.push(this.nominationGroupEnrichmentService.enrichArray(y.transactions, 'fromNominationGroupId', 'fromNominationGroup'));\r\n enrichDetailTransactions.push(this.nominationGroupEnrichmentService.enrichArray(y.transactions, 'toNominationGroupId', 'toNominationGroup'));\r\n enrichDetailTransactions.push(this.locationEnrichmentService.enrichArray(y.transactions, 'locationId', 'location'));\r\n });\r\n });\r\n\r\n return forkJoin(enrichDetailTransactions)\r\n .pipe(\r\n concatMap(() => of(accountSummaries))\r\n );\r\n }\r\n\r\n private adjustFormIfUserIsAnExternalUser(): void {\r\n if(this.model.isExternalUser) {\r\n this.model.searchParams.customerEnterpriseId = this.userService.user.enterpriseId;\r\n this.queryNominationGroups().subscribe(() => {});\r\n }\r\n }\r\n\r\n private queryShipperEnterprises(): Observable {\r\n const queryCustomer$ = !this.model.isExternalUser\r\n ? this.accountsEnterpriseService.queryCustomers(AccountsCustomerSearchParams.withNomGroupBusinessRights(BusinessRight.SHIPPER_BUSINESS_RIGHTS))\r\n : of([this.userService.user.enterpriseId]);\r\n\r\n return queryCustomer$\r\n .pipe(\r\n concatMap(enterpriseIds => this.createAndEnrichEnterpriseIds(enterpriseIds)),\r\n tap(enterprises => this.model.shipperEnterprises = this.orderEnterpriseByDisplayValue(enterprises))\r\n );\r\n }\r\n\r\n private queryOperatorEnterprises(): Observable {\r\n const queryCustomer$ = !this.model.isExternalUser\r\n ? this.accountsEnterpriseService.queryCustomers(AccountsCustomerSearchParams.withNomGroupBusinessRights(BusinessRight.OPERATOR_BUSINESS_RIGHTS))\r\n : of([this.userService.user.enterpriseId]);\r\n\r\n return queryCustomer$\r\n .pipe(\r\n concatMap(enterpriseIds => this.createAndEnrichEnterpriseIds(enterpriseIds)),\r\n tap(enterprises => this.model.operatorEnterprises = this.orderEnterpriseByDisplayValue(enterprises))\r\n );\r\n }\r\n\r\n private getCsvFileName(reportLevelType: AccountSummaryReportLevelType, isDaily: boolean): string {\r\n const dailyText = isDaily ? \"-Daily\" : \"\";\r\n const customerName = this.model.lastSearchParams.customerEnterpriseId\r\n ? _.find(this.model.lastSearchParams.enterprises, enterprise => enterprise.id === this.model.lastSearchParams.customerEnterpriseId).displayName\r\n : \"All_Customers\";\r\n\r\n if(this.model.lastSearchParams.reportType !== AccountSummaryReportType.PIPELINE.value) {\r\n const locationName = this.model.lastSearchParams.locationId\r\n ? _.find(this.model.locations, location => location.id === this.model.lastSearchParams.locationId).name\r\n : \"All_Locations\";\r\n\r\n return `${AccountSummaryReportType.find(this.model.lastSearchParams.reportType).value}_${reportLevelType}_by_Location${dailyText}_${customerName}_${locationName}_${this.model.lastSearchParams.startGasDay}-${this.model.lastSearchParams.endGasDay}_for_${this.model.lastSearchParams.billingGasMonth}.csv`;\r\n } else {\r\n return `${AccountSummaryReportType.find(this.model.lastSearchParams.reportType).value}_${reportLevelType}_by_Location${dailyText}_${customerName}_${this.model.lastSearchParams.startGasDay}-${this.model.lastSearchParams.endGasDay}_for_${this.model.lastSearchParams.billingGasMonth}.csv`;\r\n }\r\n }\r\n}\r\n","import {BaseViewModel} from \"@model/base-view-model\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {DateTime} from \"@model/date-time\";\r\nimport {Enterprise} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {AccountingLocation, Location} from \"@shared/interfaces/location\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {VolumeEnergyCompositionDetail} from \"@shared/services/flowing-gas/volume-energy-composition/volume-energy-composition.service\";\r\n\r\nexport class VolumeEnergyCompositionModel extends BaseViewModel {\r\n public oldestBillingMonth: BillingMonth;\r\n public openBillingMonth: BillingMonth;\r\n public preliminaryBillingMonth: BillingMonth;\r\n public minBillingGasMonth: GasMonth;\r\n public maxBillingGasMonth: GasMonth;\r\n public currentGasDay: GasDay;\r\n\r\n public searchParams: VolumeEnergyCompositionSearchParams = new VolumeEnergyCompositionSearchParams();\r\n public lastSearchParams: VolumeEnergyCompositionSearchParams;\r\n\r\n public minGasDay: GasDay;\r\n public maxGasDay: GasDay;\r\n public defaultGasDay: GasDay;\r\n\r\n public userIsInternal: boolean;\r\n\r\n public reportByTypes: ReportByType[] = [ {id: 'Daily', displayValue: 'Daily'},\r\n {id: 'Hourly', displayValue: 'Hourly'} ];\r\n public operators: Enterprise[];\r\n public summaryLocations: AccountingLocation[];\r\n public measurementLocations: MeasurementLocation[];\r\n\r\n public searchResultsAsOf: DateTime;\r\n private _searchResults: VolumeEnergyCompositionDetail[];\r\n public get searchResults(): VolumeEnergyCompositionDetail[] {\r\n return this._searchResults;\r\n }\r\n public set searchResults(volumeEnergyCompositionDetail: VolumeEnergyCompositionDetail[]) {\r\n this._searchResults = volumeEnergyCompositionDetail;\r\n }\r\n\r\n public hasSearchResults(): boolean {\r\n return !!this._searchResults;\r\n }\r\n\r\n public clearSearchResults(): void {\r\n this._searchResults = null;\r\n }\r\n}\r\n\r\nexport class ReportByType {\r\n public id: string;\r\n public displayValue: string;\r\n}\r\n\r\nexport class MeasurementLocation {\r\n public id: number;\r\n public name: string;\r\n public displayValue: string;\r\n\r\n public static create(id: number, gmsId: number, name: string): MeasurementLocation {\r\n const measurementLocation = new MeasurementLocation();\r\n measurementLocation.id = id;\r\n measurementLocation.name = name;\r\n measurementLocation.displayValue = name + '(' + gmsId + ')';\r\n return measurementLocation;\r\n }\r\n}\r\n\r\nexport class VolumeEnergyCompositionSearchParams {\r\n public reportBy: string = 'Daily';\r\n public startGasDay: GasDay;\r\n public endGasDay: GasDay;\r\n public operatorId: number;\r\n public summaryLocationId: number;\r\n public measurementLocationIds: number[];\r\n public sinceDateTime: DateTime;\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {FlowinggasResourceService} from \"@shared/resources/flowinggas-resource.service\";\r\nimport {Observable} from \"rxjs\";\r\nimport {map} from \"rxjs/operators\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport * as _ from \"lodash\";\r\nimport {DateTime} from \"@model/date-time\";\r\nimport {HttpResponse} from \"@angular/common/http\";\r\n\r\nexport interface IVolumeEnergyCompositionDetailResponse {\r\n stationNumber: number;\r\n stationName: string;\r\n gasDay: DateTime;\r\n energy: number;\r\n volume: number;\r\n pressure: number;\r\n temperature: number;\r\n acceptabilityIndicator: number;\r\n sg: number;\r\n heatValue: number;\r\n n2?: number;\r\n c02?: number;\r\n c1?: number;\r\n c2?: number;\r\n c3?: number;\r\n nC4?: number;\r\n iC4?: number;\r\n nC5?: number;\r\n iC5?: number;\r\n nC6?: number;\r\n nC7?: number;\r\n nC8?: number;\r\n he?: number;\r\n}\r\n\r\nexport class VolumeEnergyCompositionDetail {\r\n stationNumber: number;\r\n stationName: string;\r\n gasDay: string;\r\n energy: number;\r\n volume: number;\r\n pressure: number;\r\n temperature: number;\r\n acceptabilityIndicator: number;\r\n sg: number;\r\n heatValue: number;\r\n n2?: number;\r\n c02?: number;\r\n c1?: number;\r\n c2?: number;\r\n c3?: number;\r\n nC4?: number;\r\n iC4?: number;\r\n nC5?: number;\r\n iC5?: number;\r\n nC6?: number;\r\n nC7?: number;\r\n nC8?: number;\r\n he?: number;\r\n\r\n public static create(dto: IVolumeEnergyCompositionDetailResponse): VolumeEnergyCompositionDetail {\r\n const vecDetail = new VolumeEnergyCompositionDetail();\r\n vecDetail.stationNumber = +dto.stationNumber;\r\n vecDetail.stationName = dto.stationName;\r\n vecDetail.gasDay = DateTime.parse(dto.gasDay.toString()).format(\"YYYYMMDD\");\r\n vecDetail.energy = +dto.energy;\r\n vecDetail.volume = +dto.volume;\r\n vecDetail.pressure = +dto.pressure;\r\n vecDetail.temperature = +dto.temperature;\r\n vecDetail.acceptabilityIndicator = +dto.acceptabilityIndicator;\r\n vecDetail.sg = +dto.sg;\r\n vecDetail.heatValue = +dto.heatValue;\r\n vecDetail.n2 = dto.n2;\r\n vecDetail.c02 = dto.c02;\r\n vecDetail.c1 = dto.c1;\r\n vecDetail.c2 = dto.c2;\r\n vecDetail.c3 = dto.c3;\r\n vecDetail.nC4 = dto.nC4;\r\n vecDetail.iC4 = dto.iC4;\r\n vecDetail.nC5 = dto.nC5;\r\n vecDetail.iC5 = dto.iC5;\r\n vecDetail.nC6 = dto.nC6;\r\n vecDetail.nC7 = dto.nC7;\r\n vecDetail.nC8 = dto.nC8;\r\n vecDetail.he = dto.he;\r\n return vecDetail;\r\n }\r\n}\r\n\r\nexport class VolumeEnergyCompositionSearchRequest {\r\n reportByType: string;\r\n fromGasDay: GasDay;\r\n toGasDay: GasDay;\r\n operatorCid: number;\r\n summaryLocationId: number;\r\n measurementLocationIds: number[];\r\n sinceDate: string;\r\n sinceTime: string;\r\n}\r\n\r\n@Injectable()\r\nexport class VolumeEnergyCompositionService {\r\n\r\n constructor(private flowingGasResource: FlowinggasResourceService) { }\r\n\r\n queryVolumeEnergyComposition(searchRequest: VolumeEnergyCompositionSearchRequest): Observable {\r\n const params = this.buildQueryParams(searchRequest);\r\n\r\n return this.flowingGasResource.get('/reports/volumeEnergyComposition', true, params)\r\n .pipe(\r\n map(dtos => _.map(dtos, dto => VolumeEnergyCompositionDetail.create(dto)))\r\n );\r\n }\r\n\r\n queryVolumeEnergyCompositionPdf(searchRequest: VolumeEnergyCompositionSearchRequest): Observable> {\r\n const params = this.buildQueryParams(searchRequest);\r\n params.setBoolean('download', true);\r\n\r\n return this.flowingGasResource.getData('/reports/volumeEnergyComposition/pdf', true, params);\r\n }\r\n\r\n queryVolumeEnergyCompositionCsv(searchRequest: VolumeEnergyCompositionSearchRequest): Observable> {\r\n const params = this.buildQueryParams(searchRequest);\r\n\r\n return this.flowingGasResource.getData('/reports/volumeEnergyComposition/csv', true, params);\r\n }\r\n\r\n private buildQueryParams(searchRequest: VolumeEnergyCompositionSearchRequest): GCTSHttpParams {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('reportByType', searchRequest.reportByType);\r\n params.setGasDay(searchRequest.fromGasDay, 'fromGasDay');\r\n params.setGasDay(searchRequest.toGasDay, 'toGasDay');\r\n params.setOptionalNumber('operatorCid', searchRequest.operatorCid);\r\n params.setOptionalListOfNumbers('summaryLocationIds', _.isNil(searchRequest.summaryLocationId) ? [] : [searchRequest.summaryLocationId]);\r\n params.setOptionalListOfNumbers('measurementLocationIds', searchRequest.measurementLocationIds);\r\n params.set('sinceDate', searchRequest.sinceDate);\r\n params.set('sinceTime', searchRequest.sinceTime);\r\n return params;\r\n }\r\n}\r\n","import {Component, forwardRef, Input, Output, ViewChild, EventEmitter, ChangeDetectorRef} from '@angular/core';\r\nimport {\r\n ControlValueAccessor, FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors,\r\n Validator\r\n} from '@angular/forms';\r\nimport {GasDay} from '@model/gas-day';\r\nimport {DxDateBoxComponent} from 'devextreme-angular';\r\nimport {DateTime} from \"@model/date-time\";\r\nimport * as _ from 'lodash';\r\n\r\n/*\r\ninterface IDisplayFormat {\r\n formatter: (Date) => string;\r\n parser: (string) => Date;\r\n}\r\n*/\r\n\r\n@Component({\r\n selector: 'app-date-time-picker',\r\n templateUrl: './date-time-picker.component.html',\r\n styleUrls: ['./date-time-picker.component.css'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => DateTimePickerComponent),\r\n multi: true\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => DateTimePickerComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class DateTimePickerComponent implements ControlValueAccessor, Validator {\r\n\r\n constructor(private changeDetectorRef: ChangeDetectorRef) {\r\n }\r\n\r\n @Input() get isValid(): boolean {\r\n return this.isValidValue;\r\n }\r\n\r\n/*\r\n @Input() set minGasDay(val: GasDay) {\r\n if (val) {\r\n this.min = val.toDate;\r\n } else {\r\n this.min = null;\r\n }\r\n }\r\n @Input() set maxGasDay(val: GasDay) {\r\n if (val) {\r\n this.max = val.toDate;\r\n }\r\n }\r\n*/\r\n\r\n/*\r\n @Input() set defaultGasDay(val: GasDay) {\r\n if (val) {\r\n this.defaultDate = val.toDate;\r\n } else {\r\n this.defaultDate = null;\r\n }\r\n }\r\n*/\r\n\r\n set isValid(val: boolean) {\r\n if (val === undefined) {\r\n // This means that the form didn't set an initial\r\n // state for isValid. Interpret it as true.\r\n val = true;\r\n }\r\n if (this.isValidValue !== val) {\r\n if (val && this.value != null) {\r\n const dt: DateTime = this.value;\r\n const formattedDate: string = this.dateFormatter(dt);\r\n if (this.dateTimeBox.value.valueOf() === this.value.valueOf() && this.dateTimeBox.text !== formattedDate) {\r\n this.dateTimeBox.value = null;\r\n this.dateTimeBox.value = formattedDate;\r\n }\r\n }\r\n this.isValidValue = val;\r\n this.isValidChange.emit(this.isValidValue);\r\n }\r\n }\r\n\r\n get value(): DateTime {\r\n return this._dateTimeValue;\r\n }\r\n\r\n set value(val: DateTime) {\r\n if (!DateTime.isSame(val, this._dateTimeValue)) {\r\n this._dateTimeValue = val;\r\n this.propagateChange(this._dateTimeValue);\r\n if (!(this.onValueChanged == null)) {\r\n this.onValueChanged(null);\r\n }\r\n }\r\n this.isValidValue = true;\r\n\r\n if (this._onChange() !== null) { this._onChange(); }\r\n }\r\n @ViewChild('dateTimeBox') dateTimeBox: DxDateBoxComponent;\r\n private _dateTimeValue: DateTime;\r\n private isValidValue = true;\r\n public min: Date;\r\n public max: Date = new Date(10000, 11, 31);\r\n private defaultDate: Date;\r\n private _onChange: () => void;\r\n\r\n @Input('id') id: string;\r\n @Input('name') name: string;\r\n @Input('width') width: string = '200px';\r\n @Input('placeholder') placeholder: string = 'Select date and time';\r\n @Input('applyValueMode') applyValueMode: string = 'useButtons';\r\n // @Input('default') default: Date;\r\n @Input('displayFormat') displayFormat: string = 'yyyy-MM-dd hh:mm a';\r\n @Input('disabled') disabled: boolean = false;\r\n @Input('disabledDates') disabledDates: Array = [];\r\n\r\n @Output() isValidChange = new EventEmitter();\r\n @Output() selectionChanged: EventEmitter = new EventEmitter();\r\n\r\n @Input()\r\n onValueChanged(e: any) {\r\n }\r\n\r\n propagateChange = (_value: DateTime) => {};\r\n onTouchedCallback = () => {};\r\n\r\n dateFormatter = (dateTime: DateTime): string => {\r\n return dateTime.format(this.displayFormat);\r\n };\r\n\r\n dateParser = (value: string): Date => {\r\n try {\r\n const newDate = DateTime.parse(value).toDate();\r\n return newDate;\r\n } catch (exception) {\r\n this.isValidValue = false;\r\n return null;\r\n }\r\n };\r\n\r\n writeValue(value: any) {\r\n if (_.isNil(value)) {\r\n this._dateTimeValue = undefined;\r\n }\r\n if (value !== undefined) {\r\n if (value instanceof DateTime) {\r\n this._dateTimeValue = value;\r\n } else if (value instanceof Date) {\r\n this._dateTimeValue = new DateTime(value as Date);\r\n }\r\n }\r\n }\r\n\r\n registerOnChange(fn) {\r\n this.propagateChange = fn;\r\n }\r\n\r\n registerOnTouched(fn) {\r\n this.onTouchedCallback = fn;\r\n }\r\n\r\n onOpened() {\r\n if (!this.dateTimeBox.value && this.defaultDate) {\r\n this.dateTimeBox.value = this.defaultDate;\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n }\r\n\r\n onFocusIn(e) {\r\n setTimeout(() => {\r\n e.element.querySelector('input.dx-texteditor-input').select();\r\n }, 0);\r\n }\r\n\r\n focus(): void {\r\n this.dateTimeBox.instance.focus();\r\n }\r\n\r\n reset(): void {\r\n this.dateTimeBox.instance.reset();\r\n }\r\n\r\n isDateValid(): boolean {\r\n return this.isValidValue;\r\n }\r\n\r\n onKeyUp(e: any): void {\r\n const dateValue = e.component.option(\"text\");\r\n this.determineValidity(dateValue);\r\n }\r\n\r\n determineValidity(value: string): void {\r\n this.isValidValue = GasDay.tryParse(value, true);\r\n\r\n if (this.isValidValue) {\r\n // Utilize GasDay to convert the input into a date for us as it is aware of a GasDay and will append 09:00 as the time.\r\n const date = GasDay.parse(value, true).toDate;\r\n if (this.min && date < this.min) { this.isValidValue = false; }\r\n if (this.isValidValue && this.max && date > this.max) { this.isValidValue = false; }\r\n }\r\n\r\n if (this._onChange() != null) { this._onChange(); }\r\n }\r\n\r\n validate(c: FormControl): ValidationErrors {\r\n return this.isValidValue ? null : {valid: this.isValidValue};\r\n }\r\n\r\n registerOnValidatorChange(fn: () => void): void { this._onChange = fn; }\r\n}\r\n","\r\n\r\n"," \r\n
\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Report By: {{model.lastSearchParams?.reportBy | displayName: 'id' : 'displayValue' : model.reportByTypes}}\r\n Operator: {{model.lastSearchParams?.operatorId | displayName: 'cid' : 'displayValue' : model.operators}}\r\n Start Gas Day: {{model.lastSearchParams?.startGasDay | gasDayFormat}}\r\n End Gas Day: {{model.lastSearchParams?.endGasDay | gasDayFormat}}\r\n Summary Location: {{model.lastSearchParams?.summaryLocationId | displayName: 'id' : 'name' : model.summaryLocations}}\r\n Measurement Location: {{model.lastSearchParams?.measurementLocationIds | multiDisplayName: 'id' : 'displayValue' : model.measurementLocations}}\r\n Show Changes Since: {{model.lastSearchParams?.sinceDateTime}}\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n {{model.searchParams.operatorId | displayName: 'cid' : 'displayValue' : model.operators}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.reportBy | displayName: 'id' : 'displayValue' : model.reportByTypes}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.operatorId | displayName: 'cid' : 'displayValue' : model.operators}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.startGasDay | gasDayFormat}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.endGasDay | gasDayFormat}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.summaryLocationId | displayName: 'id' : 'name' : model.summaryLocations}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.measurementLocationIds | multiDisplayName: 'id' : 'displayValue' : model.measurementLocations}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.sinceDateTime?.toDisplayFormat(true)}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n Number of results found: {{model.searchResults.length }} \r\n AS OF {{model.searchResultsAsOf.toDate() | dateFormat:'YYYY-MMM-DD H:mm:ss A'}}\r\n\r\n
0\" class=\"pull-right\">\r\n Export CSV\r\n | \r\n Export PDF\r\n
\r\n
\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n
\r\n Energy
GJ\r\n
\r\n
\r\n {{data.value.toFixed(0)}}\r\n
\r\n\r\n \r\n
\r\n Vol
e3m3\r\n
\r\n\r\n \r\n
\r\n Press
kPa\r\n
\r\n\r\n
\r\n {{data.value.toFixed(1)}}\r\n
\r\n\r\n \r\n
\r\n Temp
C\r\n
\r\n\r\n \r\n
\r\n Acpt
%\r\n
\r\n\r\n \r\n\r\n \r\n
\r\n HV
MJ/M3\r\n
\r\n\r\n \r\n
\r\n N2
%\r\n
\r\n\r\n \r\n
\r\n C02
%\r\n
\r\n\r\n \r\n
\r\n C1
%\r\n
\r\n\r\n \r\n
\r\n C2
%\r\n
\r\n\r\n \r\n
\r\n C3
%\r\n
\r\n\r\n \r\n
\r\n NC4
%\r\n
\r\n\r\n \r\n
\r\n IC4
%\r\n
\r\n\r\n \r\n
\r\n NC5
%\r\n
\r\n\r\n \r\n
\r\n IC5
%\r\n
\r\n\r\n \r\n
\r\n NC6
%\r\n
\r\n\r\n \r\n
\r\n NC7
%\r\n
\r\n\r\n \r\n
\r\n NC8
%\r\n
\r\n\r\n \r\n
\r\n HE
%\r\n
\r\n\r\n
\r\n {{row.value === null ? 'N/A' : row.value.toFixed(3).toString()}}\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n","import {Component, OnInit, ViewChild} from \"@angular/core\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {forkJoin, Observable, of} from \"rxjs\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {MeasurementLocation, VolumeEnergyCompositionModel, VolumeEnergyCompositionSearchParams} from \"app/gcts/flowinggas/volume-energy-composition/volume-energy-composition.model\";\r\nimport {concatMap, tap} from \"rxjs/operators\";\r\nimport * as _ from \"lodash\";\r\nimport {LocationService} from \"@shared/services/common-data/location/location.service\";\r\nimport {AccountingLocation} from \"@shared/interfaces/location\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {LocationEnrichmentService} from \"@shared/services/enrichment/location-enrichment.service\";\r\nimport {Enterprise, EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {VolumeEnergyCompositionDetail, VolumeEnergyCompositionSearchRequest, VolumeEnergyCompositionService} from \"@shared/services/flowing-gas/volume-energy-composition/volume-energy-composition.service\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {DateTime} from \"@model/date-time\";\r\nimport {CommonDataGasdayService, ServerTimeData} from \"@shared/services/common-data/common-data-gasday/common-data-gasday.service\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {HttpResponse} from \"@angular/common/http\";\r\nimport * as FileSaver from \"file-saver\";\r\nimport {UserService} from \"@shared/services/webapp/user/user-service\";\r\n\r\n@Component({\r\n selector: 'app-volume-energy-composition',\r\n templateUrl: './volume-energy-composition.component.html',\r\n styleUrls: ['./volume-energy-composition.component.css']\r\n})\r\nexport class VolumeEnergyCompositionComponent extends BaseSearchComponent implements OnInit {\r\n\r\n @ViewChild(DxDataGridComponent)\r\n dataGrid: DxDataGridComponent;\r\n\r\n model: VolumeEnergyCompositionModel = new VolumeEnergyCompositionModel();\r\n\r\n constructor(protected appService: AppService,\r\n protected activatedRoute: ActivatedRoute,\r\n protected router: Router,\r\n protected alertService: AlertService,\r\n protected sessionService: SessionService,\r\n protected commonDataBillingMonthService: CommonDataBillingMonthService,\r\n protected commonDataGasDayService: CommonDataGasdayService,\r\n protected locationService: LocationService,\r\n protected locationEnrichmentService: LocationEnrichmentService,\r\n protected enterpriseService: EnterpriseService,\r\n protected enterpriseEnrichmentService: EnterpriseEnrichmentService,\r\n protected volumeEnergyCompositionService: VolumeEnergyCompositionService,\r\n protected fileService: FileService,\r\n protected userService: UserService) {\r\n super('Volume Energy Composition', appService, activatedRoute, router, alertService);\r\n locationEnrichmentService.setEnrichmentResource(locationService);\r\n enterpriseEnrichmentService.setEnrichmentResource(enterpriseService);\r\n\r\n this.appService.hideMenu();\r\n }\r\n\r\n public exportHourlyClicked(): void {\r\n // MR I think the below happens automatically when perform search is called (probably pulls it out of the url)\r\n if(!_.isNil(this.model.searchParams.sinceDateTime)){\r\n if(_.isNil(this.model.searchParams.sinceDateTime.date)) {\r\n this.model.searchParams.sinceDateTime = DateTime.parse(this.model.searchParams.sinceDateTime.toString());\r\n }\r\n }\r\n this.alertService.clearMessages();\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n if(this.checkAllLocationsForMultiDayRequest()) {\r\n return;\r\n }\r\n\r\n this.volumeEnergyCompositionService.queryVolumeEnergyCompositionCsv(this.buildSearchRequest())\r\n .subscribe(data => {\r\n this.downloadFile(data);\r\n });\r\n }\r\n\r\n public exportCsvClicked(): void {\r\n const headers = ['Stn No', 'Gas Day', 'Energy GJ', 'Vol e3m3', 'Press kPa', 'Temp C', 'Acpt %', 'SG', 'HV MJ/M3',\r\n 'N2 %', 'C02 %', 'C1 %', 'C2 %', 'C3 %', 'NC4 %', 'IC4 %', 'NC5 %', 'IC5 %', 'NC6 %', 'NC7 %', 'NC8 %', 'HE %', 'Stn Name'];\r\n const columns = ['stationNumber', 'gasDay', 'energy', 'volume', 'pressure', 'temperature', 'acceptabilityIndicator', 'sg', 'heatValue',\r\n 'n2', 'c02', 'c1', 'c2', 'c3', 'nC4', 'iC4', 'nC5', 'iC5', 'nC6', 'nC7', 'nC8', 'he', 'stationName'];\r\n const data = _.map(this.model.searchResults, searchResult => {\r\n return {\r\n stationNumber: searchResult.stationNumber,\r\n gasDay: searchResult.gasDay,\r\n energy: searchResult.energy,\r\n volume: searchResult.volume,\r\n pressure: searchResult.pressure,\r\n temperature: searchResult.temperature,\r\n acceptabilityIndicator: searchResult.acceptabilityIndicator,\r\n sg: searchResult.sg,\r\n heatValue: searchResult.heatValue,\r\n n2: this.convertCompositionNumber(searchResult.n2),\r\n c02: this.convertCompositionNumber(searchResult.c02),\r\n c1: this.convertCompositionNumber(searchResult.c1),\r\n c2: this.convertCompositionNumber(searchResult.c2),\r\n c3: this.convertCompositionNumber(searchResult.c3),\r\n nC4: this.convertCompositionNumber(searchResult.nC4),\r\n iC4: this.convertCompositionNumber(searchResult.iC4),\r\n nC5: this.convertCompositionNumber(searchResult.nC5),\r\n iC5: this.convertCompositionNumber(searchResult.iC5),\r\n nC6: this.convertCompositionNumber(searchResult.nC6),\r\n nC7: this.convertCompositionNumber(searchResult.nC7),\r\n nC8: this.convertCompositionNumber(searchResult.nC8),\r\n he: this.convertCompositionNumber(searchResult.he),\r\n stationName: searchResult.stationName\r\n };\r\n });\r\n this.exportCsv(headers, columns, data);\r\n }\r\n\r\n private convertCompositionNumber(compositionValue?: number): string {\r\n return !_.isNil(compositionValue) ? compositionValue.toString() : 'N/A';\r\n }\r\n\r\n public exportPdfClicked(): void {\r\n this.alertService.clearMessages();\r\n if(this.checkAllLocationsForMultiDayRequest()) {\r\n return;\r\n }\r\n this.volumeEnergyCompositionService.queryVolumeEnergyCompositionPdf(this.buildSearchRequest())\r\n .subscribe(data =>\r\n this.downloadFile(data)\r\n );\r\n }\r\n\r\n public onReportByChanged(): void {\r\n this.model.clearSearchResults();\r\n this.model.lastSearchParams = null;\r\n }\r\n\r\n public onSummaryLocationChanged(): void {\r\n this.getMeasurementLocations();\r\n }\r\n\r\n public onOperatorChanged(): void {\r\n this.model.searchParams.summaryLocationId = null;\r\n this.model.searchParams.measurementLocationIds = null;\r\n this.loadSearchResources().subscribe(() => {});\r\n }\r\n\r\n public onParamChanged(): void {\r\n if(this.model.searchParams.startGasDay > this.model.searchParams.endGasDay) {\r\n this.model.searchParams.endGasDay = this.model.searchParams.startGasDay;\r\n }\r\n this.loadSearchResources().subscribe(() => {});\r\n }\r\n\r\n stationNameTemplate = (cellElement: HTMLElement, cellInfo) => {\r\n if (cellInfo.column.caption === \"Stn No\") {\r\n if (!_.isNil(cellInfo.data.stationName) && cellInfo.data.stationName.length > 0) {\r\n cellElement.innerText = cellInfo.data.stationNumber;\r\n cellElement.addEventListener('mousemove', () => {\r\n cellElement.setAttribute('title', cellInfo.data.stationName);\r\n });\r\n }\r\n }\r\n };\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return this.paramValidator().isValid(params);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {};\r\n params['reportBy'] = this.model.searchParams.reportBy;\r\n params['operatorId'] = this.model.searchParams.operatorId;\r\n params['startGasDay'] = this.model.searchParams.startGasDay;\r\n params['endGasDay'] = this.model.searchParams.endGasDay;\r\n params['summaryLocationId'] = !_.isNil(this.model.searchParams.summaryLocationId) ? this.model.searchParams.summaryLocationId : null;\r\n params['measurementLocationIds'] = !_.isNil(this.model.searchParams.measurementLocationIds) ? this.model.searchParams.measurementLocationIds : null;\r\n\r\n params['sinceDate'] = !_.isNil(this.model.searchParams.sinceDateTime) ? this.model.searchParams.sinceDateTime.toDateString() : null;\r\n params['sinceTime'] = !_.isNil(this.model.searchParams.sinceDateTime) ? this.model.searchParams.sinceDateTime.toTimeString() : null;\r\n return params;\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n const getOldestBillingMonth$ = this.commonDataBillingMonthService.getOldest()\r\n .pipe(\r\n tap(oldestBillingMonth => this.model.oldestBillingMonth = oldestBillingMonth)\r\n );\r\n\r\n const getOpenBillingMonth$ = this.commonDataBillingMonthService.getOpen()\r\n .pipe(\r\n tap(openBillingMonth => this.model.openBillingMonth = openBillingMonth)\r\n );\r\n\r\n this.model.userIsInternal = !this.userService.user.isExternalUser;\r\n\r\n const queryServerTimeData$ = this.getGasDayServerTimes();\r\n\r\n return forkJoin([getOldestBillingMonth$, getOpenBillingMonth$, queryServerTimeData$])\r\n .pipe(\r\n tap(() => {\r\n this.model.minGasDay = this.model.oldestBillingMonth.firstDayOfMonth;\r\n this.model.minBillingGasMonth = this.model.oldestBillingMonth.gasMonth;\r\n })\r\n );\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n if(_.isNil(this.model.searchParams.startGasDay) || _.isNil(this.model.searchParams.endGasDay)) {\r\n return of(null);\r\n }\r\n const queryOperators$ = this.queryOperators();\r\n const queryLocations$ = this.querySummaryLocations(this.model.searchParams.operatorId, this.model.searchParams.startGasDay, this.model.searchParams.endGasDay);\r\n\r\n return forkJoin([queryOperators$, queryLocations$]);\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.searchResults = null;\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n if(this.checkAllLocationsForMultiDayRequest() || this.checkMultipleMeasurementLocationsForMoreThanMonthRequest()) {\r\n return of({});\r\n }\r\n // Clear All Selections\r\n if (this.dataGrid) {\r\n this.dataGrid.instance.clearSelection();\r\n }\r\n\r\n const queryDateTime$ = this.commonDataGasDayService.getServerTimeData()\r\n .pipe(\r\n tap(serverTimeData => this.model.searchResultsAsOf = serverTimeData.serverTime)\r\n );\r\n\r\n const serviceCalls$ = [\r\n this.queryVolumeEnergyComposition(),\r\n queryDateTime$\r\n ];\r\n\r\n return forkJoin(serviceCalls$);\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams = new VolumeEnergyCompositionSearchParams();\r\n this.model.searchParams.reportBy = 'Daily';\r\n this.model.searchParams.startGasDay = this.model.defaultGasDay;\r\n this.model.searchParams.endGasDay = this.model.defaultGasDay;\r\n this.setDefaultCustomer();\r\n this.model.clearSearchResults();\r\n }\r\n\r\n protected resetCompleted(): void {\r\n this.model.lastSearchParams = null;\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams = new VolumeEnergyCompositionSearchParams();\r\n\r\n this.model.searchParams.reportBy = typedParams.asString('reportBy');\r\n this.model.searchParams.operatorId = typedParams.asNullableNumber('operatorId');\r\n this.model.searchParams.startGasDay = typedParams.asGasDay('startGasDay');\r\n this.model.searchParams.endGasDay = typedParams.asGasDay('endGasDay');\r\n this.model.searchParams.summaryLocationId = typedParams.asNullableNumber('summaryLocationId');\r\n this.model.searchParams.measurementLocationIds = typedParams.asListOfNumbers('measurementLocationIds');\r\n if (!_.isNil(typedParams.getParams['sinceDate'])) {\r\n this.model.searchParams.sinceDateTime = DateTime.parse(typedParams.getParams['sinceDate'] + ' ' + typedParams.getParams['sinceTime']);\r\n }\r\n }\r\n\r\n protected exportCsv(headers: string[], columns: string[], data: any[]) {\r\n const operatorName = _.isNil(this.model.lastSearchParams.operatorId) ? 'All' : _.find(this.model.operators, x => x.cid === this.model.lastSearchParams.operatorId).displayValue;\r\n const filename = 'DailyVec_' + operatorName + '_' + this.model.lastSearchParams.startGasDay + '-' + this.model.lastSearchParams.endGasDay + '.csv';\r\n\r\n this.fileService.downloadCsvFile(filename, data, headers, columns);\r\n }\r\n\r\n downloadFile(response: HttpResponse) {\r\n const mediaType = response.headers.get('content-type');\r\n const blob = new Blob([response.body], {type: mediaType});\r\n\r\n // from the content disposition, should be second element with =\"{filename}\" surrounding it\r\n const filename = response.headers.get('content-disposition').split(';')[1].trim().split('=')[1].replace(/\"/g, '');\r\n FileSaver.saveAs(blob, filename);\r\n }\r\n\r\n private setDefaultCustomer(): void {\r\n this.model.searchParams.operatorId = !this.model.userIsInternal ? Number(this.userService.user.enterpriseId) : null;\r\n }\r\n\r\n private paramValidator(): ParamValidator {\r\n return ParamValidator.Standard();\r\n }\r\n\r\n private queryVolumeEnergyComposition(): Observable {\r\n const searchRequest = this.buildSearchRequest();\r\n\r\n return this.volumeEnergyCompositionService.queryVolumeEnergyComposition(searchRequest)\r\n .pipe(\r\n tap(volumeEnergyCompositionDetail => {\r\n this.model.searchResults = volumeEnergyCompositionDetail;\r\n })\r\n );\r\n }\r\n\r\n private buildSearchRequest(): VolumeEnergyCompositionSearchRequest {\r\n const searchRequest = new VolumeEnergyCompositionSearchRequest();\r\n\r\n searchRequest.reportByType = this.model.lastSearchParams.reportBy;\r\n searchRequest.fromGasDay = this.model.lastSearchParams.startGasDay;\r\n searchRequest.toGasDay = this.model.lastSearchParams.endGasDay;\r\n searchRequest.operatorCid = this.model.lastSearchParams.operatorId;\r\n searchRequest.summaryLocationId = this.model.lastSearchParams.summaryLocationId;\r\n searchRequest.measurementLocationIds = this.model.lastSearchParams.measurementLocationIds;\r\n searchRequest.sinceDate = !_.isNil(this.model.lastSearchParams.sinceDateTime) ? this.model.lastSearchParams.sinceDateTime.toDateString() : null;\r\n searchRequest.sinceTime = !_.isNil(this.model.lastSearchParams.sinceDateTime) ? this.model.lastSearchParams.sinceDateTime.toTimeString() : null;\r\n\r\n return searchRequest;\r\n }\r\n\r\n private getGasDayServerTimes(): Observable{\r\n return this.commonDataGasDayService.getServerTimeData()\r\n .pipe(\r\n tap(serverTimeData => {\r\n this.model.currentGasDay = serverTimeData.gasDay;\r\n this.model.maxBillingGasMonth = GasMonth.fromGasDay(this.model.currentGasDay);\r\n this.model.maxGasDay = this.model.currentGasDay;\r\n this.model.defaultGasDay = this.model.maxGasDay.addDays(-1);\r\n })\r\n );\r\n }\r\n\r\n private queryOperators(): Observable {\r\n const queryOperators$ = !this.userService.user.isExternalUser\r\n ? this.enterpriseService.queryLocationOperatorsByPipeline(this.sessionService.getPipeline().code, this.model.currentGasDay)\r\n : of([Enterprise.createWithId(this.userService.user.enterpriseId)]);\r\n\r\n return queryOperators$\r\n .pipe(\r\n concatMap(enterprises => this.enterpriseEnrichmentService.enrichArray(enterprises, 'cid')),\r\n tap(enterprises => {\r\n this.model.operators = enterprises;\r\n\r\n if(this.userService.user.isExternalUser) {\r\n this.model.searchParams.operatorId = this.userService.user.enterpriseId;\r\n }\r\n })\r\n );\r\n }\r\n\r\n private querySummaryLocations(operatorId: number, startGasDay: GasDay, endGasDay: GasDay): Observable {\r\n return this.locationService.queryMeasurementAccountingLocationsForCustomer(operatorId, startGasDay, endGasDay, true)\r\n .pipe(\r\n concatMap(locations => this.locationEnrichmentService.enrichArray(locations, 'id', 'location')),\r\n tap(locations => {\r\n this.model.summaryLocations = _.orderBy(locations, x => x.name);\r\n this.getMeasurementLocations();\r\n })\r\n );\r\n }\r\n\r\n private getMeasurementLocations() {\r\n this.alertService.clearMessages();\r\n const results = new Array();\r\n _.forEach(this.model.summaryLocations, x => {\r\n if(_.isNil(this.model.searchParams.summaryLocationId) || this.model.searchParams.summaryLocationId === x.id) {\r\n if(!_.isNil(x.gmsId)) {\r\n results.push(MeasurementLocation.create(x.id, x.gmsId, x.name));\r\n }\r\n _.forEach(x.detailLocations, dl => results.push(MeasurementLocation.create(dl.id, dl.gmsId, dl.name)));\r\n }\r\n });\r\n this.model.measurementLocations = _.orderBy(results, x => x.name);\r\n this.checkForEmptyMeasurementLocations();\r\n\r\n // If no summary location is selected then clear selected measurement locations\r\n if(!this.model.searchParams.summaryLocationId) {\r\n const measurementLocationIds = _.map(this.model.measurementLocations, 'id');\r\n this.model.searchParams.measurementLocationIds = _.intersection(this.model.searchParams.measurementLocationIds, measurementLocationIds);\r\n }\r\n\r\n // Only keep measurement locations if they are in the new list of measurement locations\r\n this.model.searchParams.measurementLocationIds = _.filter(this.model.searchParams.measurementLocationIds, measurementLocationId => _.some(this.model.measurementLocations, x => x.id === measurementLocationId));\r\n\r\n // Auto Select Measurement Location if it's the only one that exists\r\n if(this.model.measurementLocations && this.model.measurementLocations.length === 1) {\r\n this.model.searchParams.measurementLocationIds = [this.model.measurementLocations[0].id];\r\n }\r\n }\r\n\r\n private checkForEmptyMeasurementLocations(): void {\r\n if(this.model.measurementLocations.length === 0) {\r\n const name = _.isNil(this.model.searchParams.operatorId) ?\r\n _.find(this.model.summaryLocations, x => x.id === this.model.searchParams.summaryLocationId).name :\r\n _.find(this.model.operators, x => x.cid === this.model.searchParams.operatorId).displayValue;\r\n this.alertService.addWarnMessage('Warning', 'Location Measurement not found for \\'' + name + '\\'');\r\n }\r\n }\r\n\r\n private checkAllLocationsForMultiDayRequest(): boolean {\r\n if(_.isNil(this.model.lastSearchParams.operatorId) &&\r\n _.isNil(this.model.lastSearchParams.summaryLocationId) &&\r\n (_.isNil(this.model.lastSearchParams.measurementLocationIds) || this.model.lastSearchParams.measurementLocationIds.length === 0) &&\r\n !this.model.lastSearchParams.startGasDay.isEqual(this.model.lastSearchParams.endGasDay)) {\r\n this.alertService.addWarnMessage('Warning', 'The maximum date range is 1 day if All locations selected. Please adjust your dates.');\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n private checkMultipleMeasurementLocationsForMoreThanMonthRequest(): boolean {\r\n const maxRange = this.model.lastSearchParams.startGasDay.addMonths(1);\r\n if((_.isNil(this.model.lastSearchParams.measurementLocationIds) || this.model.lastSearchParams.measurementLocationIds.length > 1) &&\r\n this.model.lastSearchParams.endGasDay.isGreaterThan(maxRange)) {\r\n this.alertService.addWarnMessage('Warning', 'The maximum date range must be less than 1 month if multiple locations selected. Please adjust your dates.');\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\n","import {BaseViewModel} from \"@model/base-view-model\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {RunReportAsType} from \"@model/run-report-as-type\";\r\nimport {InvoiceGroup} from \"@shared/services/contracts/invoice-group/invoice-group.service\";\r\nimport {FuelTADDetail, TransferTADDetail, TransportationTADDetail, TransportationVarianceTADDetail} from \"@shared/services/flowing-gas/transportation-account-detail/transportation-account-detail.service\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport {InvoiceRecipient} from \"@shared/services/invoicing/invoicing-invoice-package/invoicing-invoice-package.service\";\r\nimport {SimpleNominationGroup} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport {NominationPipelineGasDay} from \"@model/nomination-pipeline-gas-day\";\r\nimport * as _ from \"lodash\";\r\n\r\nexport class TransportationAccountDetailModel extends BaseViewModel {\r\n public searchParams: TransportationAccountDetailSearchParams = new TransportationAccountDetailSearchParams();\r\n public lastSearchParams: TransportationAccountDetailSearchParams;\r\n\r\n public customers: InvoiceRecipient[];\r\n public runReportAsTypes: RunReportAsType[] = RunReportAsType.ALL;\r\n public invoiceGroups: InvoiceGroup[];\r\n public nominationGroups: SimpleNominationGroup[];\r\n\r\n pipelineGasDay: NominationPipelineGasDay;\r\n oldestBillingMonth: BillingMonth;\r\n openBillingMonth: BillingMonth;\r\n preliminaryBillingMonth: BillingMonth;\r\n\r\n minReportingGasMonth: GasMonth;\r\n maxReportingGasMonth: GasMonth;\r\n maxBillingGasMonth: GasMonth;\r\n\r\n userIsInternal: boolean;\r\n\r\n searchDateTime: Date;\r\n status: string;\r\n\r\n pdfOptions: PdfOptionType[];\r\n selectedPdfOptions: string[] = [];\r\n\r\n hasSearchResults: boolean = false;\r\n\r\n private _transportationSearchResults: TransportationTADDetail[];\r\n public get transportationSearchResults(): TransportationTADDetail[] {\r\n return this._transportationSearchResults;\r\n }\r\n public set transportationSearchResults(transportationTADDetails: TransportationTADDetail[]) {\r\n this._transportationSearchResults = transportationTADDetails;\r\n }\r\n\r\n private _transferSearchResults: TransferTADDetail[];\r\n public get transferSearchResults(): TransferTADDetail[] {\r\n return this._transferSearchResults;\r\n }\r\n public set transferSearchResults(transferTADDetails: TransferTADDetail[]) {\r\n this._transferSearchResults = transferTADDetails;\r\n }\r\n\r\n private _fuelSearchResults: FuelTADDetail[];\r\n public get fuelSearchResults(): FuelTADDetail[] {\r\n return this._fuelSearchResults;\r\n }\r\n public set fuelSearchResults(fuelTADDetails: FuelTADDetail[]) {\r\n this._fuelSearchResults = fuelTADDetails;\r\n }\r\n\r\n private _transportationVarianceSearchResults: TransportationVarianceTADDetail[];\r\n public get transportationVarianceSearchResults(): TransportationVarianceTADDetail[] {\r\n return this._transportationVarianceSearchResults;\r\n }\r\n public set transportationVarianceSearchResults(transportationVarianceTADDetails: TransportationVarianceTADDetail[]) {\r\n this._transportationVarianceSearchResults = transportationVarianceTADDetails;\r\n }\r\n\r\n public clearSearchResults(): void {\r\n this._transportationSearchResults = null;\r\n this._transferSearchResults = null;\r\n this._fuelSearchResults = null;\r\n this._transportationVarianceSearchResults = null;\r\n this.hasSearchResults = false;\r\n }\r\n}\r\n\r\nexport class PdfOptionType {\r\n public static TRANSPORTATION: PdfOptionType = new PdfOptionType('Transportation', \"Transportation\");\r\n public static TRANSFER: PdfOptionType = new PdfOptionType('Transfer', \"Transfer\");\r\n public static FUEL: PdfOptionType = new PdfOptionType('Fuel', \"Fuel\");\r\n public static TRANSPORTATION_VARIANCE: PdfOptionType = new PdfOptionType('TransportationVariance', \"Transportation Variance\");\r\n\r\n constructor(id: string, value: string) {\r\n this._id = id;\r\n this._value = value;\r\n }\r\n\r\n private readonly _id: string;\r\n private readonly _value: string;\r\n\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n get value(): string {\r\n return this._value;\r\n }\r\n}\r\n\r\nexport class TransportationAccountDetailSearchParams {\r\n public reportingMonth: GasMonth;\r\n public customerId: number;\r\n public billingMonth: GasMonth;\r\n public runReportAs: string = RunReportAsType.NOM_GROUP_OWNER.id;\r\n public invoiceGroupId: number;\r\n public nominationGroupId: number;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {ContractsResourceService} from \"@shared/resources/contracts-resource.service\";\r\nimport {Observable} from \"rxjs\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {map} from \"rxjs/operators\";\r\nimport {IInvoiceGroupDto} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport * as _ from \"lodash\";\r\n\r\nexport class InvoiceGroup {\r\n public id: number;\r\n\r\n public static create(dto: IInvoiceGroupDto): InvoiceGroup {\r\n const invoiceGroup = new InvoiceGroup();\r\n invoiceGroup.id = +dto.id;\r\n return invoiceGroup;\r\n }\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class InvoiceGroupService {\r\n\r\n constructor(private contractsResource: ContractsResourceService) {\r\n }\r\n\r\n\r\n public queryInvoiceGroupsForEnterprise(enterpriseId: number): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setNumber('enterpriseCid', enterpriseId);\r\n params.setBoolean('findAll', true);\r\n\r\n return this.contractsResource.get('/invoiceGroups', true, params)\r\n .pipe(\r\n map(dtos => {\r\n dtos = _.uniqBy(dtos, dto => dto.id);\r\n return dtos.map(dto => InvoiceGroup.create(dto));\r\n })\r\n );\r\n }\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {FlowinggasResourceService} from \"@shared/resources/flowinggas-resource.service\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {Observable, of} from \"rxjs\";\r\nimport {map} from \"rxjs/operators\";\r\nimport * as _ from \"lodash\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {HttpResponse} from \"@angular/common/http\";\r\nimport {VolumeEnergyCompositionSearchRequest} from \"@shared/services/flowing-gas/volume-energy-composition/volume-energy-composition.service\";\r\n\r\nexport interface IDailyConsumptionResponse {\r\n gasDay: string;\r\n nomEnergy: number;\r\n}\r\n\r\nexport class DailyConsumptionDetail {\r\n gasDay: GasDay;\r\n nomEnergy: number;\r\n\r\n public static create(dto: IDailyConsumptionResponse): DailyConsumptionDetail {\r\n const dailyDetail = new DailyConsumptionDetail();\r\n dailyDetail.gasDay = GasDay.parse(dto.gasDay);\r\n dailyDetail.nomEnergy = +dto.nomEnergy;\r\n return dailyDetail;\r\n }\r\n}\r\n\r\nexport interface ITransportationTADDetailResponse {\r\n nominationGroupId: number;\r\n nominationGroupMnemonic: string;\r\n nominationGroupType: string;\r\n\r\n invoiceGroupId: number;\r\n\r\n invoiceGroupOwnerEnterpriseId: number;\r\n invoiceGroupOwnerEnterpriseMnemonic: string;\r\n invoiceGroupOwnerEnterpriseShortName: string;\r\n\r\n invoiceRecipientEnterpriseId: number;\r\n invoiceRecipientEnterpriseMnemonic: string;\r\n invoiceRecipientEnterpriseShortName: string;\r\n\r\n nominationGroupOwnerEnterpriseId: number;\r\n nominationGroupOwnerEnterpriseMnemonic: string;\r\n nominationGroupOwnerEnterpriseShortName: string;\r\n\r\n nominationAgentEnterpriseId: number;\r\n nominationAgentEnterpriseMnemonic: string;\r\n nominationAgentEnterpriseShortName: string;\r\n\r\n serviceOption: string;\r\n serviceCode: string;\r\n receiptLocation: string;\r\n deliveryLocation: string;\r\n bidPrice: number;\r\n isTaxExempt: boolean;\r\n totalNomEnergy: number;\r\n\r\n nomGroupOwner: string;\r\n\r\n serviceKey: string;\r\n hasPpa: boolean;\r\n\r\n dailyConsumption: IDailyConsumptionResponse[];\r\n}\r\n\r\nexport interface ITransferTADDetailResponse {\r\n invoiceGroupId: number;\r\n nominationGroupId: number;\r\n nominationGroupMnemonic: string;\r\n transferNomGroupMnemonic: string;\r\n transferTypeShort: string;\r\n transferType: string;\r\n location: string;\r\n transactionType: string;\r\n transactionTypeDescription: string;\r\n nominationGroupType: string;\r\n totalNomEnergy: number;\r\n invoiceGroupOwnerEnterpriseId: number;\r\n invoiceRecipientEnterpriseId: number;\r\n nominationGroupOwnerEnterpriseId: number;\r\n nominationAgentEnterpriseId: number;\r\n transferOwnerEnterpriseId: number;\r\n transferOwnerEnterpriseMnemonic: string;\r\n transferOwnerEnterpriseShortName: string;\r\n ownerEnterpriseId: number;\r\n ownerEnterpriseMnemonic: string;\r\n ownerEnterpriseShortName: string;\r\n nomGroupOwner: string;\r\n hasPpa: boolean;\r\n serviceKey: string;\r\n dailyConsumption: IDailyConsumptionResponse[];\r\n}\r\n\r\nexport interface IFuelPopupResponse {\r\n transactionType: string;\r\n transferType: string;\r\n transferOwnerEnterpriseId: number;\r\n transferOwnerEnterpriseShortName: string;\r\n transferOwnerEnterpriseMnemonic: string;\r\n transferNomGroupMnemonic: string;\r\n locationId: number;\r\n in: number;\r\n out: number;\r\n isPpa: boolean;\r\n}\r\n\r\nexport interface IFuelDetailResponse {\r\n gasDay: string;\r\n in: number;\r\n out: number;\r\n variance: number;\r\n cumulativeVariance: number;\r\n isInPpa: boolean;\r\n isOutPpa: boolean;\r\n\r\n transactions: IFuelPopupResponse[];\r\n}\r\n\r\nexport interface IFuelTADDetailResponse {\r\n invoiceGroupId: number;\r\n nominationGroupId: number;\r\n locationId: number;\r\n fuelNomGroupId: number;\r\n\r\n nominationGroupOwnerEnterpriseId: number;\r\n nominationAgentEnterpriseId: number;\r\n invoiceGroupOwnerEnterpriseId: number;\r\n invoiceRecipientEnterpriseId: number;\r\n nominationGroupType: string;\r\n\r\n isInPpa: boolean;\r\n isOutPpa: boolean;\r\n\r\n openingBalance: number;\r\n totalIn: number;\r\n totalOut: number;\r\n variance: number;\r\n cumulativeVariance: number;\r\n\r\n dailyConsumption: IFuelDetailResponse[];\r\n\r\n location: string;\r\n nominationGroupOwnerEnterpriseShortName: string;\r\n nominationGroupOwnerEnterpriseMnemonic: string;\r\n nominationGroupMnemonic: string;\r\n nomGroupOwner: string;\r\n fuelNomGroupMnemonic: string;\r\n totalNomEnergy: number;\r\n}\r\n\r\nexport interface ITransportationVarianceTADDetailResponse {\r\n invoiceRecipientEnterpriseId: number;\r\n invoiceGroup: number;\r\n invoiceGroupOwnerEnterpriseId: number;\r\n nominationGroupId: number;\r\n nominationGroupMnemonic: string;\r\n transferNomGroupId: number;\r\n transferNomGroupMnemonic: string ;\r\n nominationGroupOwnerEnterpriseId: number;\r\n nominationAgentEnterpriseId: number;\r\n locationId: number;\r\n openingBalance: number;\r\n totalPack: number;\r\n totalDraft: number;\r\n totalVariance: number;\r\n cummulativeVariance: number;\r\n hasPpa: boolean;\r\n\r\n dailyDetails: ITransportationVarianceDailyDetailResponse[];\r\n}\r\n\r\nexport interface ITransportationVarianceDailyDetailResponse {\r\n gasDay: string;\r\n pack: number;\r\n draft: number;\r\n variance: number;\r\n cumulativeVariance: number;\r\n hasPpa: boolean;\r\n}\r\n\r\nexport class TransportationTADDetail {\r\n nominationGroupId: number;\r\n nominationGroupMnemonic: string;\r\n nominationGroupType: string;\r\n\r\n invoiceGroupId: number;\r\n\r\n invoiceGroupOwnerEnterpriseId: number;\r\n invoiceGroupOwnerEnterpriseMnemonic: string;\r\n invoiceGroupOwnerEnterpriseShortName: string;\r\n\r\n invoiceRecipientEnterpriseId: number;\r\n invoiceRecipientEnterpriseMnemonic: string;\r\n invoiceRecipientEnterpriseShortName: string;\r\n\r\n nominationGroupOwnerEnterpriseId: number;\r\n nominationGroupOwnerEnterpriseMnemonic: string;\r\n nominationGroupOwnerEnterpriseShortName: string;\r\n\r\n nominationAgentEnterpriseId: number;\r\n nominationAgentEnterpriseMnemonic: string;\r\n nominationAgentEnterpriseShortName: string;\r\n\r\n serviceOption: string;\r\n serviceCode: string;\r\n receiptLocation: string;\r\n deliveryLocation: string;\r\n bidPrice: number;\r\n isTaxExempt: boolean;\r\n totalNomEnergy: number;\r\n\r\n nomGroupOwner: string;\r\n\r\n serviceKey: string;\r\n hasPpa: boolean;\r\n\r\n dailyConsumption: DailyConsumptionDetail[];\r\n\r\n public static create(dto: ITransportationTADDetailResponse): TransportationTADDetail {\r\n const transportationDetail = new TransportationTADDetail();\r\n transportationDetail.nominationGroupId = +dto.nominationGroupId;\r\n transportationDetail.nominationGroupMnemonic = dto.nominationGroupMnemonic;\r\n transportationDetail.nominationGroupType = dto.nominationGroupType;\r\n transportationDetail.invoiceGroupId = +dto.invoiceGroupId;\r\n transportationDetail.invoiceGroupOwnerEnterpriseId = +dto.invoiceGroupOwnerEnterpriseId;\r\n transportationDetail.invoiceGroupOwnerEnterpriseMnemonic = dto.invoiceGroupOwnerEnterpriseMnemonic;\r\n transportationDetail.invoiceGroupOwnerEnterpriseShortName = dto.invoiceGroupOwnerEnterpriseShortName;\r\n transportationDetail.invoiceRecipientEnterpriseId = +dto.invoiceRecipientEnterpriseId;\r\n transportationDetail.invoiceRecipientEnterpriseMnemonic = dto.invoiceRecipientEnterpriseMnemonic;\r\n transportationDetail.invoiceRecipientEnterpriseShortName = dto.invoiceRecipientEnterpriseShortName;\r\n transportationDetail.nominationGroupOwnerEnterpriseId = +dto.nominationGroupOwnerEnterpriseId;\r\n transportationDetail.nominationGroupOwnerEnterpriseMnemonic = dto.nominationGroupOwnerEnterpriseMnemonic;\r\n transportationDetail.nominationGroupOwnerEnterpriseShortName = dto.nominationGroupOwnerEnterpriseShortName;\r\n transportationDetail.nominationAgentEnterpriseId = +dto.nominationAgentEnterpriseId;\r\n transportationDetail.nominationAgentEnterpriseMnemonic = dto.nominationAgentEnterpriseMnemonic;\r\n transportationDetail.nominationAgentEnterpriseShortName = dto.nominationAgentEnterpriseShortName;\r\n transportationDetail.serviceOption = dto.serviceOption;\r\n transportationDetail.serviceCode = dto.serviceCode;\r\n transportationDetail.receiptLocation = dto.receiptLocation;\r\n transportationDetail.deliveryLocation = dto.deliveryLocation;\r\n transportationDetail.bidPrice = +dto.bidPrice;\r\n transportationDetail.isTaxExempt = dto.isTaxExempt;\r\n transportationDetail.totalNomEnergy = +dto.totalNomEnergy;\r\n transportationDetail.nomGroupOwner = dto.nomGroupOwner;\r\n transportationDetail.serviceKey = dto.serviceKey;\r\n transportationDetail.hasPpa = dto.hasPpa;\r\n\r\n const dailyConsumptionDetails: DailyConsumptionDetail[] = [];\r\n\r\n _.forEach(dto.dailyConsumption, x => {\r\n dailyConsumptionDetails.push(DailyConsumptionDetail.create(x));\r\n });\r\n\r\n transportationDetail.dailyConsumption = dailyConsumptionDetails;\r\n\r\n return transportationDetail;\r\n }\r\n}\r\n\r\nexport class TransferTADDetail {\r\n invoiceGroupId: number;\r\n nominationGroupId: number;\r\n nominationGroupMnemonic: string;\r\n transferNomGroupMnemonic: string;\r\n transferTypeShort: string;\r\n transferType: string;\r\n location: string;\r\n transactionType: string;\r\n transactionTypeDescription: string;\r\n nominationGroupType: string;\r\n totalNomEnergy: number;\r\n invoiceGroupOwnerEnterpriseId: number;\r\n invoiceRecipientEnterpriseId: number;\r\n nominationGroupOwnerEnterpriseId: number;\r\n nominationAgentEnterpriseId: number;\r\n transferOwnerEnterpriseId: number;\r\n transferOwnerEnterpriseMnemonic: string;\r\n transferOwnerEnterpriseShortName: string;\r\n ownerEnterpriseId: number;\r\n ownerEnterpriseMnemonic: string;\r\n ownerEnterpriseShortName: string;\r\n nomGroupOwner: string;\r\n hasPpa: boolean;\r\n serviceKey: string;\r\n dailyConsumption: DailyConsumptionDetail[];\r\n\r\n public static create(dto: ITransferTADDetailResponse): TransferTADDetail {\r\n const transferTADDetail = new TransferTADDetail();\r\n transferTADDetail.invoiceGroupId = +dto.invoiceGroupId;\r\n transferTADDetail.nominationGroupId = +dto.nominationGroupId;\r\n transferTADDetail.nominationGroupMnemonic = dto.nominationGroupMnemonic;\r\n transferTADDetail.transferNomGroupMnemonic = dto.transferNomGroupMnemonic;\r\n transferTADDetail.transferTypeShort = dto.transferTypeShort;\r\n transferTADDetail.transferType = dto.transferType;\r\n transferTADDetail.location = dto.location;\r\n transferTADDetail.transactionType = dto.transactionType;\r\n transferTADDetail.transactionTypeDescription = dto.transactionTypeDescription;\r\n transferTADDetail.nominationGroupType = dto.nominationGroupType;\r\n transferTADDetail.totalNomEnergy = +dto.totalNomEnergy;\r\n transferTADDetail.invoiceGroupOwnerEnterpriseId = +dto.invoiceGroupOwnerEnterpriseId;\r\n transferTADDetail.invoiceRecipientEnterpriseId = +dto.invoiceRecipientEnterpriseId;\r\n transferTADDetail.nominationGroupOwnerEnterpriseId = +dto.nominationGroupOwnerEnterpriseId;\r\n transferTADDetail.nominationAgentEnterpriseId = +dto.nominationAgentEnterpriseId;\r\n transferTADDetail.transferOwnerEnterpriseId = +dto.transferOwnerEnterpriseId;\r\n transferTADDetail.transferOwnerEnterpriseMnemonic = dto.transferOwnerEnterpriseMnemonic;\r\n transferTADDetail.transferOwnerEnterpriseShortName = dto.transferOwnerEnterpriseShortName;\r\n transferTADDetail.ownerEnterpriseId = +dto.ownerEnterpriseId;\r\n transferTADDetail.ownerEnterpriseMnemonic = dto.ownerEnterpriseMnemonic;\r\n transferTADDetail.ownerEnterpriseShortName = dto.ownerEnterpriseShortName;\r\n transferTADDetail.nomGroupOwner = dto.nomGroupOwner;\r\n transferTADDetail.serviceKey = dto.serviceKey;\r\n transferTADDetail.hasPpa = dto.hasPpa;\r\n\r\n const dailyConsumptionDetails: DailyConsumptionDetail[] = [];\r\n\r\n _.forEach(dto.dailyConsumption, x => {\r\n dailyConsumptionDetails.push(DailyConsumptionDetail.create(x));\r\n });\r\n\r\n transferTADDetail.dailyConsumption = dailyConsumptionDetails;\r\n return transferTADDetail;\r\n }\r\n}\r\n\r\nexport class FuelPopup {\r\n gasDay: GasDay;\r\n transactionType: string;\r\n transferType: string;\r\n transferOwnerEnterpriseId: number;\r\n transferOwnerEnterpriseShortName: string;\r\n transferOwnerEnterpriseMnemonic: string;\r\n transferNomGroupMnemonic: string;\r\n locationId: number;\r\n in: number;\r\n out: number;\r\n isPpa: boolean;\r\n\r\n public static create(dto: IFuelPopupResponse): FuelPopup {\r\n const fuelPopup = new FuelPopup();\r\n fuelPopup.transactionType = dto.transactionType;\r\n fuelPopup.transferType = dto.transferType;\r\n fuelPopup.transferOwnerEnterpriseId = +dto.transferOwnerEnterpriseId;\r\n fuelPopup.transferOwnerEnterpriseMnemonic = dto.transferOwnerEnterpriseMnemonic;\r\n fuelPopup.transferOwnerEnterpriseShortName = dto.transferOwnerEnterpriseShortName;\r\n fuelPopup.transferNomGroupMnemonic = dto.transferNomGroupMnemonic;\r\n fuelPopup.locationId = +dto.locationId;\r\n fuelPopup.in = +dto.in;\r\n fuelPopup.out = +dto.out;\r\n fuelPopup.isPpa = dto.isPpa;\r\n return fuelPopup;\r\n }\r\n}\r\n\r\nexport class FuelDetail {\r\n gasDay: GasDay;\r\n in: number;\r\n out: number;\r\n variance: number;\r\n cumulativeVariance: number;\r\n isInPpa: boolean;\r\n isOutPpa: boolean;\r\n\r\n transactions: FuelPopup[];\r\n\r\n public static create(dto: IFuelDetailResponse): FuelDetail {\r\n const fuelDetail = new FuelDetail();\r\n fuelDetail.gasDay = GasDay.parse(dto.gasDay);\r\n fuelDetail.in = +dto.in;\r\n fuelDetail.out = +dto.out;\r\n fuelDetail.variance = +dto.variance;\r\n fuelDetail.cumulativeVariance = + dto.cumulativeVariance;\r\n fuelDetail.isInPpa = dto.isInPpa;\r\n fuelDetail.isOutPpa = dto.isOutPpa;\r\n const fuelPopupDetails: FuelPopup[] = [];\r\n\r\n _.forEach(dto.transactions, x => {\r\n fuelPopupDetails.push(FuelPopup.create(x));\r\n });\r\n\r\n fuelDetail.transactions = fuelPopupDetails;\r\n return fuelDetail;\r\n }\r\n}\r\n\r\nexport class FuelTADDetail {\r\n invoiceGroupId: number;\r\n nominationGroupId: number;\r\n locationId: number;\r\n fuelNomGroupId: number;\r\n\r\n nominationGroupOwnerEnterpriseId: number;\r\n nominationAgentEnterpriseId: number;\r\n invoiceGroupOwnerEnterpriseId: number;\r\n invoiceRecipientEnterpriseId: number;\r\n nominationGroupType: string;\r\n\r\n isInPpa: boolean;\r\n isOutPpa: boolean;\r\n\r\n openingBalance: number;\r\n totalIn: number;\r\n totalOut: number;\r\n variance: number;\r\n cumulativeVariance: number;\r\n\r\n dailyConsumption: FuelDetail[];\r\n\r\n location: string;\r\n nominationGroupOwnerEnterpriseShortName: string;\r\n nominationGroupOwnerEnterpriseMnemonic: string;\r\n nominationGroupMnemonic: string;\r\n nomGroupOwner: string;\r\n fuelNomGroupMnemonic: string;\r\n totalNomEnergy: number;\r\n\r\n public static create(dto: IFuelTADDetailResponse): FuelTADDetail {\r\n const fuelTADDetail = new FuelTADDetail();\r\n fuelTADDetail.invoiceGroupId = +dto.invoiceGroupId;\r\n fuelTADDetail.nominationGroupId = +dto.nominationGroupId;\r\n fuelTADDetail.locationId = +dto.locationId;\r\n fuelTADDetail.fuelNomGroupId = +dto.fuelNomGroupId;\r\n fuelTADDetail.nominationGroupOwnerEnterpriseId = +dto.nominationGroupOwnerEnterpriseId;\r\n fuelTADDetail.nominationAgentEnterpriseId = +dto.nominationAgentEnterpriseId;\r\n fuelTADDetail.invoiceGroupOwnerEnterpriseId = +dto.invoiceGroupOwnerEnterpriseId;\r\n fuelTADDetail.invoiceRecipientEnterpriseId = +dto.invoiceRecipientEnterpriseId;\r\n fuelTADDetail.nominationGroupType = dto.nominationGroupType;\r\n fuelTADDetail.isInPpa = dto.isInPpa;\r\n fuelTADDetail.isOutPpa = dto.isOutPpa;\r\n fuelTADDetail.openingBalance = +dto.openingBalance;\r\n fuelTADDetail.totalIn = +dto.totalIn;\r\n fuelTADDetail.totalOut = +dto.totalOut;\r\n fuelTADDetail.variance = +dto.variance;\r\n fuelTADDetail.cumulativeVariance = +dto.cumulativeVariance;\r\n\r\n fuelTADDetail.location = dto.location;\r\n fuelTADDetail.nominationGroupOwnerEnterpriseShortName = dto.nominationGroupOwnerEnterpriseShortName;\r\n fuelTADDetail.nominationGroupOwnerEnterpriseMnemonic = dto.nominationGroupOwnerEnterpriseMnemonic;\r\n fuelTADDetail.nominationGroupMnemonic = dto.nominationGroupMnemonic;\r\n fuelTADDetail.nomGroupOwner = dto.nomGroupOwner;\r\n fuelTADDetail.fuelNomGroupMnemonic = dto.fuelNomGroupMnemonic;\r\n fuelTADDetail.totalNomEnergy = +dto.totalNomEnergy;\r\n\r\n const fuelDetails: FuelDetail[] = [];\r\n\r\n _.forEach(dto.dailyConsumption, x => {\r\n fuelDetails.push(FuelDetail.create(x));\r\n });\r\n\r\n fuelTADDetail.dailyConsumption = fuelDetails;\r\n return fuelTADDetail;\r\n }\r\n}\r\n\r\nexport class TransportationVarianceTADDetail {\r\n invoiceRecipientEnterpriseId: number;\r\n invoiceGroup: number;\r\n invoiceGroupOwnerEnterpriseId: number;\r\n nominationGroupId: number;\r\n nominationGroupMnemonic: string;\r\n transferNomGroupId: number;\r\n transferNomGroupMnemonic: string;\r\n nominationGroupOwnerEnterpriseId: number;\r\n nominationAgentEnterpriseId: number;\r\n locationId: number;\r\n openingBalance: number;\r\n totalPack: number;\r\n totalDraft: number;\r\n totalVariance: number;\r\n cumulativeVariance: number;\r\n hasPpa: boolean;\r\n\r\n dailyDetails: TransportationVarianceDailyDetail[];\r\n\r\n public static create(dto: ITransportationVarianceTADDetailResponse): TransportationVarianceTADDetail {\r\n const transportationVarianceTADDetail = new TransportationVarianceTADDetail();\r\n\r\n transportationVarianceTADDetail.invoiceRecipientEnterpriseId = dto.invoiceRecipientEnterpriseId;\r\n transportationVarianceTADDetail.invoiceGroup = dto.invoiceGroup;\r\n transportationVarianceTADDetail.invoiceGroupOwnerEnterpriseId = dto.invoiceGroupOwnerEnterpriseId;\r\n transportationVarianceTADDetail.nominationGroupId = dto.nominationGroupId;\r\n transportationVarianceTADDetail.nominationGroupMnemonic = dto.nominationGroupMnemonic;\r\n transportationVarianceTADDetail.transferNomGroupId = dto.transferNomGroupId;\r\n transportationVarianceTADDetail.transferNomGroupMnemonic = dto.transferNomGroupMnemonic;\r\n transportationVarianceTADDetail.nominationGroupOwnerEnterpriseId = dto.nominationGroupOwnerEnterpriseId;\r\n transportationVarianceTADDetail.nominationAgentEnterpriseId = dto.nominationAgentEnterpriseId;\r\n transportationVarianceTADDetail.locationId = dto.locationId;\r\n transportationVarianceTADDetail.openingBalance = dto.openingBalance;\r\n transportationVarianceTADDetail.totalPack = dto.totalPack;\r\n transportationVarianceTADDetail.totalDraft = dto.totalDraft;\r\n transportationVarianceTADDetail.totalVariance = dto.totalVariance;\r\n transportationVarianceTADDetail.cumulativeVariance = dto.cummulativeVariance;\r\n transportationVarianceTADDetail.hasPpa = dto.hasPpa;\r\n\r\n transportationVarianceTADDetail.dailyDetails = _.map(dto.dailyDetails, x => TransportationVarianceDailyDetail.create(x));\r\n\r\n return transportationVarianceTADDetail;\r\n }\r\n}\r\n\r\nexport class TransportationVarianceDailyDetail {\r\n gasDay: GasDay;\r\n pack: number;\r\n draft: number;\r\n variance: number;\r\n cumulativeVariance: number;\r\n hasPpa: boolean;\r\n\r\n public static create(dto: ITransportationVarianceDailyDetailResponse): TransportationVarianceDailyDetail {\r\n const transportationVarianceDailyDetail = new TransportationVarianceDailyDetail();\r\n\r\n transportationVarianceDailyDetail.gasDay = GasDay.parse(dto.gasDay);\r\n transportationVarianceDailyDetail.pack = dto.pack;\r\n transportationVarianceDailyDetail.draft = dto.draft;\r\n transportationVarianceDailyDetail.variance = dto.variance;\r\n transportationVarianceDailyDetail.cumulativeVariance = dto.cumulativeVariance;\r\n transportationVarianceDailyDetail.hasPpa = dto.hasPpa;\r\n\r\n return transportationVarianceDailyDetail;\r\n }\r\n}\r\n\r\nexport class TransportationAccountDetailSearchRequest {\r\n pipelineSystemCode: string;\r\n billingMonth: GasMonth;\r\n reportingMonth: GasMonth;\r\n customerId: number;\r\n invoiceGroupId: number;\r\n nominationGroupId: number;\r\n runReportAs: string;\r\n}\r\n\r\n@Injectable()\r\nexport class TransportationAccountDetailService {\r\n\r\n constructor(private flowingGasResource: FlowinggasResourceService) { }\r\n\r\n\r\n queryTransportation(searchRequest: TransportationAccountDetailSearchRequest): Observable {\r\n const params = this.buildQueryParams(searchRequest);\r\n\r\n return this.flowingGasResource.get('/pipelineSystems/' + searchRequest.pipelineSystemCode + '/TransportationNominationSummary', true, params)\r\n .pipe(\r\n map(dtos => _.map(dtos, dto => TransportationTADDetail.create(dto)))\r\n );\r\n }\r\n\r\n queryTransfer(searchRequest: TransportationAccountDetailSearchRequest): Observable {\r\n const params = this.buildQueryParams(searchRequest);\r\n\r\n return this.flowingGasResource.get('/pipelineSystems/' + searchRequest.pipelineSystemCode + '/TransferNominationSummary', true, params)\r\n .pipe(\r\n map(dtos => _.map(dtos, dto => TransferTADDetail.create(dto)))\r\n );\r\n }\r\n\r\n queryFuel(searchRequest: TransportationAccountDetailSearchRequest): Observable {\r\n const params = this.buildQueryParams(searchRequest);\r\n\r\n return this.flowingGasResource.get('/pipelineSystems/' + searchRequest.pipelineSystemCode + '/fuelSummary', true, params)\r\n .pipe(\r\n map(dtos => _.map(dtos, dto => FuelTADDetail.create(dto)))\r\n );\r\n }\r\n\r\n queryTransportationVariance(searchRequest: TransportationAccountDetailSearchRequest): Observable {\r\n const params = this.buildQueryParams(searchRequest);\r\n\r\n return this.flowingGasResource.get('/pipelineSystems/' + searchRequest.pipelineSystemCode + '/transportationVariance', true, params)\r\n .pipe(\r\n map(dtos => _.map(dtos, dto => TransportationVarianceTADDetail.create(dto)))\r\n );\r\n }\r\n\r\n queryPdf(searchRequest: TransportationAccountDetailSearchRequest, selectedPdfs: string[]): Observable> {\r\n const params = this.buildQueryParams(searchRequest);\r\n params.setBoolean('download', true);\r\n params.setListOfStrings('pdfs', selectedPdfs);\r\n\r\n return this.flowingGasResource.getData('/pipelineSystems/' + searchRequest.pipelineSystemCode + '/transportationAccountDetail/pdf', true, params);\r\n }\r\n\r\n private buildQueryParams(searchRequest: TransportationAccountDetailSearchRequest): GCTSHttpParams {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('reportingMonth', searchRequest.reportingMonth.toString());\r\n params.setNumber('customerId', searchRequest.customerId);\r\n params.set('gasMonth', searchRequest.billingMonth.toString());\r\n params.set('runReportAs', searchRequest.runReportAs);\r\n params.setOptionalNumber('invoiceGroupId', searchRequest.invoiceGroupId);\r\n params.setOptionalListOfNumbers('nominationGroupIds', _.isNil(searchRequest.nominationGroupId) ? [] : [searchRequest.nominationGroupId]);\r\n return params;\r\n }\r\n}\r\n","
\r\n
\r\n Summary Rows: {{model.transportationSearchResults.length}}\r\n AS OF {{model.searchDateTime | dateFormat:'YYYY-MMM-DD H:mm:ss'}}\r\n\r\n
0\" class=\"pull-right\">\r\n Export Summary CSV\r\n | \r\n Export Details CSV\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n
\r\n Invoice
Group\r\n
\r\n
\r\n {{ data.value }}\r\n
\r\n\r\n \r\n
\r\n {{ data.value }}\r\n
\r\n\r\n \r\n
\r\n Owner
Mnemonic\r\n
\r\n\r\n \r\n\r\n \r\n \r\n\r\n\r\n \r\n\r\n \r\n
\r\n Tax Zero
Rated\r\n
\r\n
\r\n {{ row.data.isTaxExempt | booleanAsYesNo: 'abbr' }}\r\n
\r\n\r\n \r\n\r\n \r\n\r\n
\r\n \r\n\r\n \r\n \r\n
\r\n {{ row.data.gasDay | gasDayFormat }}\r\n
\r\n\r\n \r\n \r\n
\r\n\r\n \r\n
\r\n","import {Component, Input, ViewChild} from '@angular/core';\r\nimport {TransportationAccountDetailModel} from \"app/gcts/flowinggas/transportation-account-detail/transportation-account-detail.model\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport * as _ from \"lodash\";\r\n\r\n@Component({\r\n selector: 'app-transportation-account-details-transportation-tab',\r\n templateUrl: './transportation-account-details-transportation-tab.component.html',\r\n styleUrls: ['./transportation-account-details-transportation-tab.component.css']\r\n})\r\nexport class TransportationAccountDetailsTransportationTabComponent{\r\n @Input() model: TransportationAccountDetailModel;\r\n @ViewChild(DxDataGridComponent) transportationTADDataGrid: DxDataGridComponent;\r\n\r\n constructor(protected fileService: FileService) { }\r\n\r\n public exportSummaryCsvClicked(): void {\r\n const csvData = [];\r\n\r\n this.model.transportationSearchResults.forEach(row => {\r\n csvData.push({\r\n recordType: 'Transportation',\r\n invoiceRecipient: row.invoiceRecipientEnterpriseMnemonic,\r\n invoiceGroup: row.invoiceGroupId,\r\n nomGroup: row.nominationGroupMnemonic,\r\n ownerMnemonic: row.nominationGroupOwnerEnterpriseMnemonic,\r\n nominationAgent: row.nominationAgentEnterpriseMnemonic,\r\n nomGroupType: row.nominationGroupType,\r\n serviceCode: row.serviceCode,\r\n receiptLocation: row.receiptLocation,\r\n deliveryLocation: row.deliveryLocation,\r\n bidPrice: row.bidPrice.toFixed(5),\r\n taxZeroRated: row.isTaxExempt ? 'Yes' : 'No',\r\n gasDay: this.model.lastSearchParams.billingMonth.toString(),\r\n energy: row.totalNomEnergy,\r\n invoiceRecipientName: row.invoiceRecipientEnterpriseShortName,\r\n nomGroupOwnerName: row.nominationGroupOwnerEnterpriseShortName,\r\n nomAgentName: row.nominationAgentEnterpriseShortName\r\n });\r\n });\r\n\r\n const customer = _.find(this.model.customers, x => x.id === this.model.lastSearchParams.customerId);\r\n const filename = 'TransportationAccountSummary_Transportation_' + customer['displayName'] + '_' + this.model.lastSearchParams.billingMonth + '.csv';\r\n const headers = ['Record Type', 'Invoice Recipient', 'Invoice Group', 'Nom Group', 'Owner Mnemonic', 'Nomination Agent', 'Nom Group Type', 'Service Code',\r\n 'Receipt Location', 'Delivery Location', 'Bid Price', 'Tax Zero Rated', 'Gas Day', 'Energy', 'Invoice Recipient Name', 'Nom Group Owner Name', 'Nomination Agent Name'];\r\n const columns = ['recordType', 'invoiceRecipient', 'invoiceGroup', 'nomGroup', 'ownerMnemonic', 'nominationAgent', 'nomGroupType', 'serviceCode',\r\n 'receiptLocation', 'deliveryLocation', 'bidPrice', 'taxZeroRated', 'gasDay', 'energy', 'invoiceRecipientName', 'nomGroupOwnerName', 'nomAgentName'];\r\n\r\n this.fileService.downloadCsvFile(filename, csvData, headers, columns);\r\n }\r\n\r\n public exportDetailCsvClicked(): void {\r\n const csvData = [];\r\n\r\n this.model.transportationSearchResults.forEach(row => {\r\n _.forEach(row.dailyConsumption, detail => {\r\n csvData.push({\r\n recordType: 'Transportation',\r\n invoiceRecipient: row.invoiceRecipientEnterpriseMnemonic,\r\n invoiceGroup: row.invoiceGroupId,\r\n nomGroup: row.nominationGroupMnemonic,\r\n ownerMnemonic: row.nominationGroupOwnerEnterpriseMnemonic,\r\n nominationAgent: row.nominationAgentEnterpriseMnemonic,\r\n nomGroupType: row.nominationGroupType,\r\n serviceCode: row.serviceCode,\r\n receiptLocation: row.receiptLocation,\r\n deliveryLocation: row.deliveryLocation,\r\n bidPrice: row.bidPrice.toFixed(5),\r\n taxZeroRated: row.isTaxExempt ? 'Yes' : 'No',\r\n gasDay: detail.gasDay,\r\n energy: detail.nomEnergy,\r\n invoiceRecipientName: row.invoiceRecipientEnterpriseShortName,\r\n nomGroupOwnerName: row.nominationGroupOwnerEnterpriseShortName,\r\n nomAgentName: row.nominationAgentEnterpriseShortName\r\n });\r\n });\r\n });\r\n\r\n const customer = _.find(this.model.customers, x => x.id === this.model.lastSearchParams.customerId);\r\n const filename = 'TransportationAccountDetail_Transportation_' + customer['displayName'] + '_' + this.model.lastSearchParams.billingMonth + '.csv';\r\n const headers = ['Record Type', 'Invoice Recipient', 'Invoice Group', 'Nom Group', 'Owner Mnemonic', 'Nomination Agent', 'Nom Group Type', 'Service Code',\r\n 'Receipt Location', 'Delivery Location', 'Bid Price', 'Tax Zero Rated', 'Gas Day', 'Energy', 'Invoice Recipient Name', 'Nom Group Owner Name', 'Nomination Agent Name'];\r\n const columns = ['recordType', 'invoiceRecipient', 'invoiceGroup', 'nomGroup', 'ownerMnemonic', 'nominationAgent', 'nomGroupType', 'serviceCode',\r\n 'receiptLocation', 'deliveryLocation', 'bidPrice', 'taxZeroRated', 'gasDay', 'energy', 'invoiceRecipientName', 'nomGroupOwnerName', 'nomAgentName'];\r\n\r\n this.fileService.downloadCsvFile(filename, csvData, headers, columns);\r\n }\r\n}\r\n\r\n","
\r\n
\r\n Summary Rows: {{model.transferSearchResults.length}}\r\n AS OF {{model.searchDateTime | dateFormat:'YYYY-MMM-DD H:mm:ss'}}\r\n
0\" class=\"pull-right\">\r\n Export Summary CSV\r\n | \r\n Export Details CSV\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n
\r\n Invoice
Group\r\n
\r\n
\r\n {{ data.value }}\r\n
\r\n\r\n \r\n
\r\n {{ data.value }}\r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n
\r\n Transfer
Owner\r\n
\r\n\r\n \r\n
\r\n Transfer
Nom Group\r\n
\r\n\r\n \r\n \r\n \r\n\r\n
\r\n \r\n\r\n \r\n \r\n
\r\n {{ row.data.gasDay | gasDayFormat }}\r\n
\r\n\r\n \r\n \r\n
\r\n\r\n \r\n
\r\n","import {Component, Input, ViewChild} from '@angular/core';\r\nimport {TransportationAccountDetailModel} from \"app/gcts/flowinggas/transportation-account-detail/transportation-account-detail.model\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport * as _ from \"lodash\";\r\n\r\n@Component({\r\n selector: 'app-transportation-account-details-transfer-tab',\r\n templateUrl: './transportation-account-details-transfer-tab.component.html',\r\n styleUrls: ['./transportation-account-details-transfer-tab.component.css']\r\n})\r\nexport class TransportationAccountDetailsTransferTabComponent{\r\n @Input() model: TransportationAccountDetailModel;\r\n @ViewChild(DxDataGridComponent) transportationTADDataGrid: DxDataGridComponent;\r\n\r\n constructor(protected fileService: FileService) { }\r\n\r\n public exportSummaryCsvClicked(): void {\r\n const csvData = [];\r\n\r\n this.model.transferSearchResults.forEach(row => {\r\n csvData.push({\r\n recordType: 'Transfer',\r\n invoiceRecipient: row['invoiceRecipientEnterpriseMnemonic'],\r\n invoiceGroup: row.invoiceGroupId,\r\n nomGroup: row.nominationGroupMnemonic,\r\n ownerMnemonic: row['nominationGroupOwnerEnterpriseMnemonic'],\r\n nominationAgent: row['nominationAgentEnterpriseMnemonic'],\r\n nomGroupType: row.nominationGroupType,\r\n location: row.location,\r\n transferType: row.transferType,\r\n transferNomGroupOwnerMnemonic: row.transferOwnerEnterpriseMnemonic,\r\n transferNomGroup: row.transferNomGroupMnemonic,\r\n transactionType: row.transactionTypeDescription,\r\n gasDay: this.model.lastSearchParams.billingMonth.toString(),\r\n energy: row.totalNomEnergy,\r\n invoiceRecipientName: row['invoiceRecipientEnterpriseShortName'],\r\n nomGroupOwnerName: row['nominationGroupOwnerEnterpriseShortName'],\r\n nomAgentName: row['nominationAgentEnterpriseShortName']\r\n });\r\n });\r\n\r\n const customer = _.find(this.model.customers, x => x.id === this.model.lastSearchParams.customerId);\r\n const filename = 'TransportationAccountSummary_Transfer_' + customer['displayName'] + '_' + this.model.lastSearchParams.billingMonth + '.csv';\r\n const headers = ['Record Type', 'Invoice Recipient', 'Invoice Group', 'Nom Group', 'Owner Mnemonic', 'Nomination Agent', 'Nom Group Type', 'Location',\r\n 'Transfer Type', 'Transfer Nom Group Owner Mnemonic', 'Transfer Nom Group', 'Transaction Type', 'Gas Day', 'Energy', 'Invoice Recipient Name', 'Nom Group Owner Name', 'Nomination Agent Name'];\r\n const columns = ['recordType', 'invoiceRecipient', 'invoiceGroup', 'nomGroup', 'ownerMnemonic', 'nominationAgent', 'nomGroupType', 'location',\r\n 'transferType', 'transferNomGroupOwnerMnemonic', 'transferNomGroup', 'transactionType', 'gasDay', 'energy', 'invoiceRecipientName', 'nomGroupOwnerName', 'nomAgentName'];\r\n\r\n this.fileService.downloadCsvFile(filename, csvData, headers, columns);\r\n }\r\n\r\n public exportDetailCsvClicked(): void {\r\n const csvData = [];\r\n\r\n this.model.transferSearchResults.forEach(row => {\r\n _.forEach(row.dailyConsumption, detail => {\r\n csvData.push({\r\n recordType: 'Transfer',\r\n invoiceRecipient: row['invoiceRecipientEnterpriseMnemonic'],\r\n invoiceGroup: row.invoiceGroupId,\r\n nomGroup: row.nominationGroupMnemonic,\r\n ownerMnemonic: row['nominationGroupOwnerEnterpriseMnemonic'],\r\n nominationAgent: row['nominationAgentEnterpriseMnemonic'],\r\n nomGroupType: row.nominationGroupType,\r\n location: row.location,\r\n transferType: row.transferType,\r\n transferNomGroupOwnerMnemonic: row.transferOwnerEnterpriseMnemonic,\r\n transferNomGroup: row.transferNomGroupMnemonic,\r\n transactionType: row.transactionTypeDescription,\r\n gasDay: detail.gasDay,\r\n energy: detail.nomEnergy,\r\n invoiceRecipientName: row['invoiceRecipientEnterpriseShortName'],\r\n nomGroupOwnerName: row['nominationGroupOwnerEnterpriseShortName'],\r\n nomAgentName: row['nominationAgentEnterpriseShortName']\r\n });\r\n });\r\n });\r\n\r\n const customer = _.find(this.model.customers, x => x.id === this.model.lastSearchParams.customerId);\r\n const filename = 'TransportationAccountDetail_Transfer_' + customer['displayName'] + '_' + this.model.lastSearchParams.billingMonth + '.csv';\r\n const headers = ['Record Type', 'Invoice Recipient', 'Invoice Group', 'Nom Group', 'Owner Mnemonic', 'Nomination Agent', 'Nom Group Type', 'Location',\r\n 'Transfer Type', 'Transfer Nom Group Owner Mnemonic', 'Transfer Nom Group', 'Transaction Type', 'Gas Day', 'Energy', 'Invoice Recipient Name', 'Nom Group Owner Name', 'Nomination Agent Name'];\r\n const columns = ['recordType', 'invoiceRecipient', 'invoiceGroup', 'nomGroup', 'ownerMnemonic', 'nominationAgent', 'nomGroupType', 'location',\r\n 'transferType', 'transferNomGroupOwnerMnemonic', 'transferNomGroup', 'transactionType', 'gasDay', 'energy', 'invoiceRecipientName', 'nomGroupOwnerName', 'nomAgentName'];\r\n\r\n this.fileService.downloadCsvFile(filename, csvData, headers, columns);\r\n }\r\n}\r\n\r\n","\r\n
\r\n \r\n\r\n \r\n \r\n
\r\n Transaction
Type\r\n
\r\n\r\n \r\n \r\n
\r\n Transfer
Nom Group\r\n
\r\n \r\n
\r\n In
(GJ)\r\n
\r\n \r\n
\r\n Out
(GJ)\r\n
\r\n \r\n
\r\n
\r\n\r\n","import {GasDay} from \"@model/gas-day\";\r\nimport {ModalComponent} from \"@shared/components/modal/modal.component\";\r\nimport {Component, OnInit, ViewChild} from \"@angular/core\";\r\nimport {FuelPopup} from \"@shared/services/flowing-gas/transportation-account-detail/transportation-account-detail.service\";\r\n\r\nclass FuelPopupModel {\r\n transactions: FuelPopup[];\r\n}\r\n\r\n@Component({\r\n selector: 'app-transportation-account-details-fuel-popup',\r\n templateUrl: './transportation-account-details-fuel-popup.component.html',\r\n styleUrls: ['./transportation-account-details-fuel-popup.component.css']\r\n})\r\nexport class TransportationAccountDetailsFuelPopupComponent implements OnInit {\r\n\r\n model: FuelPopupModel = new FuelPopupModel();\r\n\r\n @ViewChild(ModalComponent) modal: ModalComponent;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n close() {\r\n this.modal.hide();\r\n }\r\n\r\n show(gasDay: GasDay, transactions: FuelPopup[]): void {\r\n this.model.transactions = transactions;\r\n if(this.model.transactions.length >= 1) {\r\n this.model.transactions[0].gasDay = gasDay;\r\n }\r\n this.modal.show();\r\n }\r\n\r\n private setupModel() {\r\n const fuelPopupModel = new FuelPopupModel();\r\n\r\n this.model = fuelPopupModel;\r\n }\r\n}\r\n","
\r\n \r\n\r\n
\r\n Summary Rows: {{model.fuelSearchResults.length}}\r\n AS OF {{model.searchDateTime | dateFormat:'YYYY-MMM-DD H:mm:ss'}}\r\n
0\" class=\"pull-right\">\r\n Export Summary CSV\r\n | \r\n Export Details CSV\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n
\r\n Invoice
Group\r\n
\r\n
\r\n {{ data.value }}\r\n
\r\n\r\n \r\n
\r\n {{ data.value }}\r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n\r\n \r\n\r\n \r\n
\r\n \r\n Opening Balance:\r\n \r\n \r\n {{ getOpeningBalance(row) | numberFormat }}\r\n \r\n
\r\n\r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n","import {Component, Input, OnInit, ViewChild} from '@angular/core';\r\nimport {TransportationAccountDetailModel} from \"app/gcts/flowinggas/transportation-account-detail/transportation-account-detail.model\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport * as _ from \"lodash\";\r\nimport {FuelDetail} from \"@shared/services/flowing-gas/transportation-account-detail/transportation-account-detail.service\";\r\nimport {TransportationAccountDetailsFuelPopupComponent} from \"app/gcts/flowinggas/transportation-account-detail/transportation-account-details-fuel-tab/transportation-account-details-fuel-popup/transportation-account-details-fuel-popup.component\";\r\n\r\n@Component({\r\n selector: 'app-transportation-account-details-fuel-tab',\r\n templateUrl: './transportation-account-details-fuel-tab.component.html',\r\n styleUrls: ['./transportation-account-details-fuel-tab.component.css']\r\n})\r\nexport class TransportationAccountDetailsFuelTabComponent {\r\n\r\n @Input() model: TransportationAccountDetailModel;\r\n @ViewChild(DxDataGridComponent) fuelTADDataGrid: DxDataGridComponent;\r\n @ViewChild(TransportationAccountDetailsFuelPopupComponent) transportationAccountDetailsFuelPopupModal: TransportationAccountDetailsFuelPopupComponent;\r\n\r\n constructor(protected fileService: FileService) { }\r\n\r\n public getOpeningBalance(e: any): number {\r\n return +e.component.element().attributes[\"data-master\"].value;\r\n }\r\n\r\n public loadPopup(data: any): void {\r\n const fuelDetails = data as FuelDetail;\r\n this.transportationAccountDetailsFuelPopupModal.show(fuelDetails.gasDay, fuelDetails.transactions);\r\n }\r\n\r\n public exportSummaryCsvClicked(): void {\r\n const csvData = [];\r\n\r\n this.model.fuelSearchResults.forEach(row => {\r\n csvData.push({\r\n recordType: 'Fuel',\r\n invoiceRecipient: row['invoiceRecipientEnterpriseMnemonic'],\r\n invoiceGroup: row.invoiceGroupId,\r\n nomGroup: row.nominationGroupMnemonic,\r\n ownerMnemonic: row.nominationGroupOwnerEnterpriseMnemonic,\r\n nominationAgent: row['nominationAgentEnterpriseMnemonic'],\r\n nomGroupType: row.nominationGroupType,\r\n fuelNomGroup: row.fuelNomGroupMnemonic,\r\n location: row['locationName'],\r\n gasMonth: this.model.lastSearchParams.billingMonth.toString(),\r\n in: row.totalIn,\r\n out: row.totalOut,\r\n variance: row.variance,\r\n cumulativeVariance: row.cumulativeVariance,\r\n invoiceRecipientName: row['invoiceRecipientEnterpriseShortName'],\r\n nomGroupOwnerName: row.nominationGroupOwnerEnterpriseShortName,\r\n nomAgentName: row['nominationAgentEnterpriseShortName']\r\n });\r\n });\r\n\r\n const customer = _.find(this.model.customers, x => x.id === this.model.lastSearchParams.customerId);\r\n const filename = 'TransportationAccountSummary_Fuel_' + customer['displayName'] + '_' + this.model.lastSearchParams.billingMonth + '.csv';\r\n const headers = ['Record Type', 'Invoice Recipient', 'Invoice Group', 'Nom Group', 'Owner Mnemonic', 'Nomination Agent', 'Nom Group Type', 'Fuel Nom Group',\r\n 'Location', 'Gas Month', 'In', 'Out', 'Variance', 'Cumulative Variance', 'Invoice Recipient Name', 'Nom Group Owner Name', 'Nomination Agent Name'];\r\n const columns = ['recordType', 'invoiceRecipient', 'invoiceGroup', 'nomGroup', 'ownerMnemonic', 'nominationAgent', 'nomGroupType', 'fuelNomGroup',\r\n 'location', 'gasMonth', 'in', 'out', 'variance', 'cumulativeVariance', 'invoiceRecipientName', 'nomGroupOwnerName', 'nomAgentName'];\r\n\r\n this.fileService.downloadCsvFile(filename, csvData, headers, columns);\r\n }\r\n\r\n public exportDetailCsvClicked(): void {\r\n const csvData = [];\r\n\r\n this.model.fuelSearchResults.forEach(row => {\r\n _.forEach(row.dailyConsumption, detail => {\r\n _.forEach(detail.transactions, transaction => {\r\n csvData.push({\r\n recordType: 'Fuel',\r\n invoiceRecipient: row['invoiceRecipientEnterpriseMnemonic'],\r\n invoiceGroup: row.invoiceGroupId,\r\n nomGroup: row.nominationGroupMnemonic,\r\n ownerMnemonic: row.nominationGroupOwnerEnterpriseMnemonic,\r\n nominationAgent: row['nominationAgentEnterpriseMnemonic'],\r\n nomGroupType: row.nominationGroupType,\r\n location: row['locationName'],\r\n transferType: transaction.transferType,\r\n transferNomGroupOwnerMnemonic: transaction.transferOwnerEnterpriseMnemonic,\r\n transferNomGroup: transaction.transferNomGroupMnemonic,\r\n transactionType: transaction.transactionType,\r\n gasDay: detail.gasDay,\r\n energy: transaction.transferType === 'Transfer In' ? transaction.in : transaction.out,\r\n invoiceRecipientName: row['invoiceRecipientEnterpriseShortName'],\r\n nomGroupOwnerName: row.nominationGroupOwnerEnterpriseShortName,\r\n nomAgentName: row['nominationAgentEnterpriseShortName']\r\n });\r\n });\r\n });\r\n });\r\n\r\n const customer = _.find(this.model.customers, x => x.id === this.model.lastSearchParams.customerId);\r\n const filename = 'TransportationAccountDetail_Fuel_' + customer['displayName'] + '_' + this.model.lastSearchParams.billingMonth + '.csv';\r\n const headers = ['Record Type', 'Invoice Recipient', 'Invoice Group', 'Nom Group', 'Owner Mnemonic', 'Nomination Agent', 'Nom Group Type', 'Location',\r\n 'Transfer Type', 'Transfer Nom Group Owner Mnemonic', 'Transfer Nom Group', 'Transaction Type', 'Gas Day', 'Energy', 'Invoice Recipient Name', 'Nom Group Owner Name', 'Nomination Agent Name'];\r\n const columns = ['recordType', 'invoiceRecipient', 'invoiceGroup', 'nomGroup', 'ownerMnemonic', 'nominationAgent', 'nomGroupType', 'location',\r\n 'transferType', 'transferNomGroupOwnerMnemonic', 'transferNomGroup', 'transactionType', 'gasDay', 'energy', 'invoiceRecipientName', 'nomGroupOwnerName', 'nomAgentName'];\r\n\r\n this.fileService.downloadCsvFile(filename, csvData, headers, columns);\r\n }\r\n}\r\n\r\n\r\n","
\r\n
\r\n Summary Rows: {{model.transportationVarianceSearchResults.length}}\r\n AS OF {{model.searchDateTime | dateFormat:'YYYY-MMM-DD H:mm:ss A'}}\r\n\r\n 0\">\r\n Export Summary CSV |\r\n Export Details CSV\r\n \r\n
\r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n
\r\n {{ data.value }}\r\n
\r\n\r\n \r\n
\r\n Owner
Mnemonic\r\n
\r\n\r\n \r\n \r\n
\r\n Transfer
Nom Group\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n Cumulative
Variance (GJ)\r\n
\r\n
\r\n
{{ row.value }}
\r\n
\r\n\r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n \r\n Opening Balance:\r\n \r\n \r\n {{ getOpeningBalance(row) | numberFormat }}\r\n \r\n
\r\n\r\n \r\n \r\n
\r\n {{ row.data.gasDay | gasDayFormat }}\r\n
\r\n\r\n \r\n \r\n \r\n \r\n
\r\n
{{ row.value}}
\r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n","import * as _ from \"lodash\";\r\nimport {Component, Input} from \"@angular/core\";\r\nimport {TransportationAccountDetailModel} from \"app/gcts/flowinggas/transportation-account-detail/transportation-account-detail.model\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\n\r\n@Component({\r\n selector: 'app-transportation-account-details-transportation-variance-tab',\r\n templateUrl: './transportation-account-details-transportation-variance-tab.component.html',\r\n styleUrls: ['./transportation-account-details-transportation-variance-tab.component.css']\r\n})\r\nexport class TransportationAccountDetailsTransportationVarianceTabComponent {\r\n @Input() model: TransportationAccountDetailModel;\r\n\r\n constructor(private fileService: FileService) {\r\n }\r\n\r\n public getOpeningBalance(e: any): number {\r\n return +e.component.element().attributes[\"data-master\"].value;\r\n }\r\n\r\n public exportSummaryCsv(): void {\r\n const exportArray = _.map(this.model.transportationVarianceSearchResults, transportationVariance => ({\r\n InvoiceRecipient: transportationVariance['invoiceRecipientEnterpriseMnemonic'],\r\n \"Invoice Group\": transportationVariance.invoiceGroup,\r\n \"Nom Group\": transportationVariance.nominationGroupMnemonic,\r\n \"Owner Mnemonic\": transportationVariance['nominationGroupOwnerEnterpriseMnemonic'],\r\n Location: transportationVariance['locationName'],\r\n \"Transfer Nom Group\": transportationVariance.transferNomGroupMnemonic,\r\n \"Gas Month\": this.model.lastSearchParams.billingMonth,\r\n Pack: transportationVariance.totalPack,\r\n Draft: transportationVariance.totalDraft,\r\n Variance: transportationVariance.totalVariance,\r\n \"Cumulative Variance\": transportationVariance.cumulativeVariance,\r\n \"Invoice Recipient Name\": transportationVariance['invoiceRecipientEnterpriseShortName'],\r\n \"Nom Group Owner Name\": transportationVariance['nominationGroupOwnerEnterpriseShortName'],\r\n \"Nomination Agent Name\": transportationVariance['nominationAgentEnterpriseShortName']\r\n }));\r\n\r\n const enterprise = _.find(this.model.customers, x => x.id === this.model.lastSearchParams.customerId);\r\n const csvFileName = `TransportationAccountSummary_TransportationVariance_${enterprise['displayName']}_${this.model.lastSearchParams.billingMonth}.csv`;\r\n const columns = ['InvoiceRecipient', 'Invoice Group', 'Nom Group', 'Owner Mnemonic', 'Location', 'Transfer Nom Group', 'Gas Month', 'Pack','Draft', 'Variance','Cumulative Variance', 'Invoice Recipient Name', 'Nom Group Owner Name', 'Nomination Agent Name'];\r\n\r\n this.fileService.downloadCsvFile(csvFileName, exportArray, columns, columns);\r\n }\r\n\r\n public exportDetailsCsv(): void {\r\n const exportArray = [];\r\n\r\n _.forEach(this.model.transportationVarianceSearchResults, transportationVariance => {\r\n _.forEach(transportationVariance.dailyDetails, dailyDetail => {\r\n exportArray.push({\r\n InvoiceRecipient: transportationVariance['invoiceRecipientEnterpriseMnemonic'],\r\n \"Invoice Group\": transportationVariance.invoiceGroup,\r\n \"Nom Group\": transportationVariance.nominationGroupMnemonic,\r\n \"Owner Mnemonic\": transportationVariance['nominationGroupOwnerEnterpriseMnemonic'],\r\n Location: transportationVariance['locationName'],\r\n \"Transfer Nom Group\": transportationVariance.transferNomGroupMnemonic,\r\n \"Gas Day\": dailyDetail.gasDay.toString(),\r\n \"Pack (GJ)\": dailyDetail.pack,\r\n \"Draft (GJ)\": dailyDetail.draft,\r\n \"Variance (GJ)\": dailyDetail.variance,\r\n \"Cumulative Variance (GJ)\": dailyDetail.cumulativeVariance,\r\n \"Invoice Recipient Name\": transportationVariance['invoiceRecipientEnterpriseShortName'],\r\n \"Nom Group Owner Name\": transportationVariance['nominationGroupOwnerEnterpriseShortName'],\r\n \"Nomination Agent Name\": transportationVariance['nominationAgentEnterpriseShortName']\r\n });\r\n });\r\n });\r\n\r\n const enterprise = _.find(this.model.customers, x => x.id === this.model.lastSearchParams.customerId);\r\n const csvFileName = `TransportationAccountDetail_TransportationVariance_${enterprise['displayName']}_${this.model.lastSearchParams.billingMonth}.csv`;\r\n const columns = ['InvoiceRecipient', 'Invoice Group', 'Nom Group', 'Owner Mnemonic', 'Location', 'Transfer Nom Group', 'Gas Day', 'Pack (GJ)','Draft (GJ)', 'Variance (GJ)','Cumulative Variance (GJ)', 'Invoice Recipient Name', 'Nom Group Owner Name', 'Nomination Agent Name'];\r\n\r\n this.fileService.downloadCsvFile(csvFileName, exportArray, columns, columns);\r\n }\r\n}\r\n","\r\n
\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Reporting Month: {{model.lastSearchParams?.reportingMonth | gasMonthFormat}}\r\n Customer: {{model.lastSearchParams?.customerId | displayName: 'id' : 'displayName' : model.customers}}\r\n Billing Month: {{model.lastSearchParams?.billingMonth | gasMonthFormat}}\r\n Run Report As: {{model.lastSearchParams?.runReportAs | displayName: 'id' : 'value' : model.runReportAsTypes}}\r\n Invoice Group: {{model.lastSearchParams?.invoiceGroupId | displayName: 'id' : 'id' : model.invoiceGroups}}\r\n Nom Group: {{model.lastSearchParams?.nominationGroupId | displayName: 'id' : 'mnemonic' : model.nominationGroups}}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.searchParams?.customerId | displayName: 'id' : 'displayName' : model.customers}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.billingMonth | gasMonthFormat}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.status}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.reportingMonth | gasMonthFormat}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.customerId | displayName: 'id' : 'displayName' : model.customers}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.invoiceGroupId | displayName: 'id' : 'id' : model.invoiceGroups}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.runReportAs | displayName: 'id' : 'value' : model.runReportAsTypes}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.nominationGroupId | displayName: 'id' : 'mnemonic' : model.nominationGroups}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n","import {Component, OnInit, ViewChild} from \"@angular/core\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {DxTabPanelComponent} from \"devextreme-angular\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {LocationService} from \"@shared/services/common-data/location/location.service\";\r\nimport {LocationEnrichmentService} from \"@shared/services/enrichment/location-enrichment.service\";\r\nimport {EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {UserService} from \"@shared/services/webapp/user/user-service\";\r\nimport {forkJoin, Observable, of} from \"rxjs\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {PdfOptionType, TransportationAccountDetailModel, TransportationAccountDetailSearchParams} from \"app/gcts/flowinggas/transportation-account-detail/transportation-account-detail.model\";\r\nimport {concatMap, tap} from \"rxjs/operators\";\r\nimport {InvoiceRecipient, InvoicingInvoicePackageService} from \"@shared/services/invoicing/invoicing-invoice-package/invoicing-invoice-package.service\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport * as _ from \"lodash\";\r\nimport {RunReportAsType} from \"@model/run-report-as-type\";\r\nimport {NominationGroupService, QuerySimpleNomGroupsSearchParams, SimpleNominationGroup} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport {InvoiceGroup} from \"@shared/services/contracts/invoice-group/invoice-group.service\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {NominationPipelineGasDay} from \"@model/nomination-pipeline-gas-day\";\r\nimport {NominationSystemService} from \"@shared/services/nomination/nomination-system/nomination-system.service\";\r\nimport {\r\n FuelTADDetail,\r\n TransferTADDetail,\r\n TransportationAccountDetailSearchRequest,\r\n TransportationAccountDetailService,\r\n TransportationTADDetail,\r\n TransportationVarianceTADDetail\r\n} from \"@shared/services/flowing-gas/transportation-account-detail/transportation-account-detail.service\";\r\nimport {CommonDataGasdayService, ServerTimeData} from \"@shared/services/common-data/common-data-gasday/common-data-gasday.service\";\r\nimport {NomGroupEnrichmentService} from \"@shared/services/enrichment/nomgroup-enrichment.service\";\r\nimport {BusinessRight} from \"@model/business-right\";\r\nimport {HttpResponse} from \"@angular/common/http\";\r\nimport * as FileSaver from \"file-saver\";\r\nimport {BillingProcess, FlowingGasAllocationAndBalancingBillingProcessService} from \"@shared/services/flowing-gas/flowing-gas-allocation-and-balancing-billing-process/flowing-gas-allocation-and-balancing-billing-process.service\";\r\n\r\n@Component({\r\n selector: 'app-transportation-account-detail',\r\n templateUrl: './transportation-account-detail.component.html',\r\n styleUrls: ['./transportation-account-detail.component.css']\r\n})\r\nexport class TransportationAccountDetailComponent extends BaseSearchComponent implements OnInit {\r\n\r\n model: TransportationAccountDetailModel = new TransportationAccountDetailModel();\r\n @ViewChild('tabPanel') tabPanel: DxTabPanelComponent;\r\n @ViewChild('tabPanel2') tabPanel2: DxTabPanelComponent;\r\n\r\n phase1tabs = [\r\n {id: 1, title: \"Transportation\", template: \"transportationTemplate\"},\r\n {id: 2, title: \"Transfer\", template: \"transferTemplate\"},\r\n {id: 3, title: \"Fuel\", template: \"fuelTemplate\"},\r\n {id: 4, title: \"Transportation Variance\", template: \"transportationVarianceTemplate\"}\r\n ];\r\n\r\n phase2tabs = [\r\n {id: 1, title: \"Transportation\", template: \"transportationTemplate\"},\r\n {id: 2, title: \"Fuel\", template: \"fuelTemplate\"}\r\n // Need to add two others for pre some-x date.\r\n ];\r\n\r\n constructor(protected appService: AppService,\r\n protected activatedRoute: ActivatedRoute,\r\n protected router: Router,\r\n protected alertService: AlertService,\r\n protected sessionService: SessionService,\r\n protected commonDataBillingMonthService: CommonDataBillingMonthService,\r\n protected invoicePackageService: InvoicingInvoicePackageService,\r\n protected nominationGroupService: NominationGroupService,\r\n protected locationService: LocationService,\r\n protected locationEnrichmentService: LocationEnrichmentService,\r\n protected enterpriseService: EnterpriseService,\r\n protected enterpriseEnrichmentService: EnterpriseEnrichmentService,\r\n protected nominationSystemService: NominationSystemService,\r\n protected transportationAccountDetailService: TransportationAccountDetailService,\r\n protected commonDataGasDayService: CommonDataGasdayService,\r\n protected nomGroupEnrichmentService: NomGroupEnrichmentService,\r\n protected flowingGasAllocationAndBalancingBillingProcessService: FlowingGasAllocationAndBalancingBillingProcessService,\r\n protected fileService: FileService,\r\n protected userService: UserService) {\r\n super('Transportation Account Detail', appService, activatedRoute, router, alertService);\r\n locationEnrichmentService.setEnrichmentResource(locationService);\r\n enterpriseEnrichmentService.setEnrichmentResource(enterpriseService);\r\n nomGroupEnrichmentService.setEnrichmentResource(nominationGroupService);\r\n }\r\n\r\n public onReportingMonthChanged(): void {\r\n if (_.isNil(this.model.searchParams.reportingMonth)) {\r\n this.model.searchParams.billingMonth = undefined;\r\n return;\r\n }\r\n\r\n this.setMaxBillingMonth();\r\n if(this.model.searchParams.reportingMonth.isEqual(this.model.openBillingMonth.gasMonth) || this.model.searchParams.reportingMonth.isEqual(this.model.maxReportingGasMonth)) {\r\n this.model.searchParams.billingMonth = this.model.searchParams.reportingMonth;\r\n return;\r\n }\r\n if(this.model.searchParams.billingMonth.isEqual(this.model.maxReportingGasMonth)) {\r\n this.model.searchParams.billingMonth = this.model.openBillingMonth.gasMonth;\r\n return;\r\n }\r\n if(this.model.searchParams.billingMonth.toDate < this.model.searchParams.reportingMonth.toDate) {\r\n this.model.searchParams.billingMonth = this.model.searchParams.reportingMonth;\r\n }\r\n }\r\n\r\n public setMaxBillingMonth(): void {\r\n if(this.model.searchParams.reportingMonth.isEqual(this.model.maxReportingGasMonth)) {\r\n this.model.maxBillingGasMonth = this.model.maxReportingGasMonth;\r\n }\r\n else {\r\n this.model.maxBillingGasMonth = this.model.openBillingMonth.gasMonth;\r\n }\r\n }\r\n\r\n public onCustomerChanged(): void {\r\n if(_.isNil(this.model.searchParams.customerId)) {\r\n this.model.searchParams.runReportAs = RunReportAsType.NOM_GROUP_OWNER.id;\r\n }\r\n this.onRunReportAsChanged();\r\n }\r\n\r\n public onRunReportAsChanged(): void {\r\n this.model.searchParams.nominationGroupId = null;\r\n this.model.searchParams.invoiceGroupId = null;\r\n this.queryNominationGroups().subscribe(() => {});\r\n }\r\n\r\n public pdfClicked(): void {\r\n const searchRequest = this.buildTransportationAccountDetailSearchRequest();\r\n this.transportationAccountDetailService.queryPdf(searchRequest, this.model.selectedPdfOptions)\r\n .subscribe(data => {\r\n this.downloadFile(data);\r\n });\r\n }\r\n\r\n public isSearchForGasDayPostPhase2Launch(): boolean {\r\n const startOfGasMonth = this.model.searchParams.reportingMonth.start();\r\n return startOfGasMonth >= this.model.pipelineGasDay.earliestSelectableGasDay;\r\n }\r\n\r\n public onPhase1TabChanged(e: any): void {\r\n if(!_.isNil(this.tabPanel) && this.tabPanel.selectedIndex === 1 && !this.model.transferSearchResults)\r\n {\r\n this.queryTransfer().subscribe(() => {});\r\n }\r\n if(!_.isNil(this.tabPanel) && this.tabPanel.selectedIndex === 2 && !this.model.fuelSearchResults)\r\n {\r\n this.queryFuel().subscribe(() => {});\r\n }\r\n if(!_.isNil(this.tabPanel) && this.tabPanel.selectedIndex === 3 && !this.model.fuelSearchResults)\r\n {\r\n this.queryTransportationVariance().subscribe(() => {});\r\n }\r\n }\r\n\r\n public onPhase2TabChanged(e: any): void {\r\n if(!_.isNil(this.tabPanel2) && this.tabPanel2.selectedIndex === 1 && !this.model.fuelSearchResults)\r\n {\r\n this.queryFuel().subscribe(() => {});\r\n }\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return this.paramValidator().isValid(params);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {};\r\n params['reportingMonth'] = this.model.searchParams.reportingMonth;\r\n params['customerId'] = this.model.searchParams.customerId;\r\n params['billingMonth'] = this.model.searchParams.billingMonth;\r\n params['runReportAs'] = this.model.searchParams.runReportAs;\r\n params['invoiceGroupId'] = this.model.searchParams.invoiceGroupId;\r\n params['nominationGroupId'] = this.model.searchParams.nominationGroupId;\r\n return params;\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n this.appService.hideMenu();\r\n\r\n const getOldestBillingMonth$ = this.commonDataBillingMonthService.getOldest()\r\n .pipe(\r\n tap(oldestBillingMonth => this.model.oldestBillingMonth = oldestBillingMonth)\r\n );\r\n\r\n const getOpenBillingMonth$ = this.commonDataBillingMonthService.getOpen()\r\n .pipe(\r\n tap(openBillingMonth => this.model.openBillingMonth = openBillingMonth)\r\n );\r\n\r\n const getPreliminaryBillingMonth$ = this.commonDataBillingMonthService.getPreliminary()\r\n .pipe(\r\n tap(preliminaryBillingMonth => this.model.preliminaryBillingMonth = preliminaryBillingMonth)\r\n );\r\n\r\n const nominationPipelineGasDay$ = this.getPipelineGasDay();\r\n\r\n this.model.userIsInternal = !this.userService.user.isExternalUser;\r\n\r\n return forkJoin([getOldestBillingMonth$, getOpenBillingMonth$, getPreliminaryBillingMonth$, nominationPipelineGasDay$])\r\n .pipe(\r\n tap(() => {\r\n this.model.minReportingGasMonth = this.model.oldestBillingMonth.gasMonth;\r\n this.model.maxReportingGasMonth = this.model.preliminaryBillingMonth ? this.model.preliminaryBillingMonth.gasMonth : this.model.openBillingMonth.gasMonth;\r\n this.model.maxBillingGasMonth = this.model.maxReportingGasMonth;\r\n\r\n this.model.searchParams.reportingMonth = this.model.openBillingMonth.gasMonth;\r\n this.model.searchParams.billingMonth = this.model.openBillingMonth.gasMonth;\r\n })\r\n );\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n const queryCustomers$ = this.queryCustomers(this.model.searchParams.billingMonth, this.model.searchParams.billingMonth);\r\n const queryStatus$ = this.queryStatus();\r\n\r\n return forkJoin([queryCustomers$, queryStatus$]);\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams = new TransportationAccountDetailSearchParams();\r\n this.model.searchParams.runReportAs = RunReportAsType.NOM_GROUP_OWNER.id;\r\n this.model.searchParams.reportingMonth = this.model.openBillingMonth.gasMonth;\r\n this.model.searchParams.billingMonth = this.model.openBillingMonth.gasMonth;\r\n this.setDefaultCustomer();\r\n if(!_.isNil(this.model.searchParams.customerId)) {\r\n this.queryCustomers(this.model.searchParams.billingMonth,this.model.searchParams.billingMonth);\r\n this.onCustomerChanged();\r\n }\r\n this.model.searchParams.invoiceGroupId = null;\r\n this.model.searchParams.nominationGroupId = null;\r\n this.model.clearSearchResults();\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams = new TransportationAccountDetailSearchParams();\r\n\r\n this.model.searchParams.reportingMonth = typedParams.asGasMonth('reportingMonth');\r\n this.model.searchParams.customerId = typedParams.asNumber('customerId');\r\n this.model.searchParams.billingMonth = typedParams.asGasMonth('billingMonth');\r\n this.model.searchParams.runReportAs = typedParams.asString('runReportAs');\r\n if(!_.isNil(this.model.searchParams.customerId)) {\r\n this.onCustomerChanged();\r\n }\r\n this.model.searchParams.invoiceGroupId = typedParams.asNullableNumber('invoiceGroupId');\r\n this.model.searchParams.nominationGroupId = typedParams.asNullableNumber('nominationGroupId');\r\n }\r\n\r\n protected performSearch(): Observable {\r\n if(!_.isNil(this.tabPanel)) {\r\n this.tabPanel.selectedIndex = 0;\r\n }\r\n if(!_.isNil(this.tabPanel2)) {\r\n this.tabPanel2.selectedIndex = 0;\r\n }\r\n this.model.clearSearchResults();\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n\r\n const serviceCalls$: Observable[] = [\r\n this.queryCommonDataGasDayService(),\r\n this.queryTransportation()\r\n ];\r\n\r\n this.model.pdfOptions = [PdfOptionType.TRANSPORTATION, PdfOptionType.FUEL];\r\n\r\n if(!this.isSearchForGasDayPostPhase2Launch()) {\r\n this.model.pdfOptions.push(PdfOptionType.TRANSFER);\r\n this.model.pdfOptions.push(PdfOptionType.TRANSPORTATION_VARIANCE);\r\n }\r\n\r\n return forkJoin(serviceCalls$).pipe(\r\n tap(() => this.model.hasSearchResults = true));\r\n }\r\n\r\n private downloadFile(response: HttpResponse): void {\r\n const mediaType = response.headers.get('content-type');\r\n const blob = new Blob([response.body], {type: mediaType});\r\n\r\n // from the content disposition, should be second element with =\"{filename}\" surrounding it\r\n const filename = response.headers.get('content-disposition').split(';')[1].trim().split('=')[1].replace(/\"/g, '');\r\n FileSaver.saveAs(blob, filename);\r\n }\r\n\r\n private queryCommonDataGasDayService(): Observable {\r\n return this.commonDataGasDayService.getServerTimeData()\r\n .pipe(\r\n tap(serverDateTime => this.model.searchDateTime = serverDateTime.clockTime.toDate())\r\n );\r\n }\r\n\r\n private queryTransportation() : Observable {\r\n const searchRequest = this.buildTransportationAccountDetailSearchRequest();\r\n return this.transportationAccountDetailService.queryTransportation(searchRequest)\r\n .pipe(\r\n concatMap(results => this.enterpriseEnrichmentService.enrichArray(results, 'invoiceRecipientEnterpriseId', 'invoiceRecipientEnterprise')),\r\n concatMap(results => this.enterpriseEnrichmentService.enrichArray(results, 'nominationGroupOwnerEnterpriseId', 'nominationGroupOwnerEnterprise')),\r\n concatMap(results => this.enterpriseEnrichmentService.enrichArray(results, 'invoiceGroupOwnerEnterpriseId', 'invoiceGroupOwnerEnterprise')),\r\n concatMap(results => this.enterpriseEnrichmentService.enrichArray(results, 'nominationAgentEnterpriseId', 'nominationAgentEnterprise')),\r\n tap(transportationDetails => {\r\n this.model.transportationSearchResults = transportationDetails;\r\n })\r\n );\r\n }\r\n\r\n private queryFuel() : Observable {\r\n const searchRequest = this.buildTransportationAccountDetailSearchRequest();\r\n return this.transportationAccountDetailService.queryFuel(searchRequest)\r\n .pipe(\r\n concatMap(results => this.enterpriseEnrichmentService.enrichArray(results, 'invoiceRecipientEnterpriseId', 'invoiceRecipientEnterprise')),\r\n concatMap(results => this.enterpriseEnrichmentService.enrichArray(results, 'nominationGroupOwnerEnterpriseId', 'nominationGroupOwnerEnterprise')),\r\n concatMap(results => this.enterpriseEnrichmentService.enrichArray(results, 'invoiceGroupOwnerEnterpriseId', 'invoiceGroupOwnerEnterprise')),\r\n concatMap(results => this.enterpriseEnrichmentService.enrichArray(results, 'nominationAgentEnterpriseId', 'nominationAgentEnterprise')),\r\n concatMap(results => this.locationEnrichmentService.enrichArray(results, 'locationId', 'location')),\r\n concatMap(results => {\r\n if(results.length === 0) {\r\n return of(results);\r\n }\r\n const serviceCalls: Observable[] = [];\r\n _.forEach(results, x => {\r\n _.forEach(x.dailyConsumption, d => {\r\n serviceCalls.push(this.enterpriseEnrichmentService.enrichArray(d.transactions, 'transferOwnerEnterpriseId', 'transferOwnerEnterprise'));\r\n });\r\n });\r\n return forkJoin(serviceCalls).pipe(concatMap(() => of(results)));\r\n }),\r\n tap(fuelDetails => {\r\n this.model.fuelSearchResults = fuelDetails;\r\n })\r\n );\r\n }\r\n\r\n private queryTransfer() : Observable {\r\n const searchRequest = this.buildTransportationAccountDetailSearchRequest();\r\n return this.transportationAccountDetailService.queryTransfer(searchRequest)\r\n .pipe(\r\n concatMap(results => this.enterpriseEnrichmentService.enrichArray(results, 'invoiceRecipientEnterpriseId', 'invoiceRecipientEnterprise')),\r\n concatMap(results => this.enterpriseEnrichmentService.enrichArray(results, 'nominationGroupOwnerEnterpriseId', 'nominationGroupOwnerEnterprise')),\r\n concatMap(results => this.enterpriseEnrichmentService.enrichArray(results, 'invoiceGroupOwnerEnterpriseId', 'invoiceGroupOwnerEnterprise')),\r\n concatMap(results => this.enterpriseEnrichmentService.enrichArray(results, 'nominationAgentEnterpriseId', 'nominationAgentEnterprise')),\r\n tap(transferDetails => {\r\n this.model.transferSearchResults = transferDetails;\r\n })\r\n );\r\n }\r\n\r\n private queryTransportationVariance() : Observable {\r\n const searchRequest = this.buildTransportationAccountDetailSearchRequest();\r\n return this.transportationAccountDetailService.queryTransportationVariance(searchRequest)\r\n .pipe(\r\n concatMap(transportationVariances => this.nomGroupEnrichmentService.enrichArray(transportationVariances, 'nominationGroupId' , 'nominationGroup')),\r\n concatMap(transportationVariances => this.nomGroupEnrichmentService.enrichArray(transportationVariances, 'transferNomGroupId' , 'transferNomGroup')),\r\n concatMap(transportationVariances => this.enterpriseEnrichmentService.enrichArray(transportationVariances, 'nominationGroupOwnerEnterpriseId' , 'nominationGroupOwnerEnterprise')),\r\n concatMap(transportationVariances => this.enterpriseEnrichmentService.enrichArray(transportationVariances, 'invoiceRecipientEnterpriseId' , 'invoiceRecipientEnterprise')),\r\n concatMap(transportationVariances => this.enterpriseEnrichmentService.enrichArray(transportationVariances, 'nominationAgentEnterpriseId' , 'nominationAgentEnterprise')),\r\n concatMap(transportationVariances => this.locationEnrichmentService.enrichArray(transportationVariances, 'locationId' , 'location')),\r\n tap(transportationVarianceDetails => this.model.transportationVarianceSearchResults = transportationVarianceDetails)\r\n );\r\n }\r\n\r\n private buildTransportationAccountDetailSearchRequest(): TransportationAccountDetailSearchRequest {\r\n const transportationAccountDetailRequest = new TransportationAccountDetailSearchRequest();\r\n transportationAccountDetailRequest.pipelineSystemCode = this.sessionService.getPipeline().code;\r\n transportationAccountDetailRequest.reportingMonth = this.model.searchParams.reportingMonth;\r\n transportationAccountDetailRequest.customerId = this.model.searchParams.customerId;\r\n transportationAccountDetailRequest.billingMonth = this.model.searchParams.billingMonth;\r\n transportationAccountDetailRequest.runReportAs = this.model.searchParams.runReportAs;\r\n transportationAccountDetailRequest.invoiceGroupId = this.model.searchParams.invoiceGroupId;\r\n transportationAccountDetailRequest.nominationGroupId = this.model.searchParams.nominationGroupId;\r\n return transportationAccountDetailRequest;\r\n }\r\n\r\n private setDefaultCustomer(): void {\r\n this.model.searchParams.customerId = !this.model.userIsInternal ? Number(this.userService.user.enterpriseId) : null;\r\n }\r\n\r\n private paramValidator(): ParamValidator {\r\n return ParamValidator.Standard();\r\n }\r\n\r\n private getPipelineGasDay(): Observable {\r\n return this.nominationSystemService.pipelineGasDay().pipe(\r\n tap((pipelineGasDay) => {\r\n this.model.pipelineGasDay = pipelineGasDay;\r\n })\r\n );\r\n }\r\n\r\n private getInvoiceGroups(): void {\r\n this.model.invoiceGroups = _.uniqBy(_.map(this.model.nominationGroups, x => {\r\n const invoiceGroup = new InvoiceGroup();\r\n invoiceGroup.id = x.invoiceGroupId;\r\n return invoiceGroup;\r\n }), ig => ig.id);\r\n\r\n if(this.model.invoiceGroups.length === 1) {\r\n this.model.searchParams.invoiceGroupId = this.model.invoiceGroups[0].id;\r\n }\r\n }\r\n\r\n private queryNominationGroups() : Observable {\r\n this.alertService.clearMessages();\r\n if(_.isNil(this.model.searchParams.customerId) || _.isNil(this.model.searchParams.runReportAs)) {\r\n this.model.nominationGroups = [];\r\n this.model.invoiceGroups = [];\r\n return of(null);\r\n }\r\n\r\n const searchParams = new QuerySimpleNomGroupsSearchParams(\r\n this.model.searchParams.billingMonth,\r\n this.model.searchParams.customerId,\r\n RunReportAsType.find(this.model.searchParams.runReportAs),\r\n [BusinessRight.Transportation]);\r\n\r\n return this.nominationGroupService.querySimpleNomGroups(searchParams)\r\n .pipe(\r\n tap(nominationGroups => {\r\n if(nominationGroups.length === 0) {\r\n this.processNoNominationGroupsFound();\r\n return;\r\n }\r\n this.model.nominationGroups = _.orderBy(nominationGroups, x => x.mnemonic);\r\n if(this.model.nominationGroups.length === 1) {\r\n this.model.searchParams.nominationGroupId = this.model.nominationGroups[0].id;\r\n }\r\n this.getInvoiceGroups();\r\n })\r\n );\r\n }\r\n\r\n private processNoNominationGroupsFound(): void {\r\n const customer = _.find(this.model.customers, x => x.id === this.model.searchParams.customerId);\r\n const runReportAs = RunReportAsType.find(this.model.searchParams.runReportAs);\r\n this.alertService.addWarnMessage('Warning', 'Transportation Account Details were not found for \\'' + customer['displayName'] + '\\' as a \\''\r\n + runReportAs.value + '\\' for \\'' + this.model.searchParams.billingMonth + '\\'');\r\n this.model.nominationGroups = [];\r\n this.model.invoiceGroups = [];\r\n this.model.searchParams.invoiceGroupId = null;\r\n this.model.searchParams.nominationGroupId = null;\r\n }\r\n\r\n private queryStatus(): Observable {\r\n const monthForStatus = this.model.userIsInternal ? this.model.searchParams.billingMonth : this.model.searchParams.reportingMonth;\r\n return this.flowingGasAllocationAndBalancingBillingProcessService.get(monthForStatus)\r\n .pipe(\r\n tap(billingProcess => {\r\n this.model.status = billingProcess[0].status === 'Final' ? 'Final' : 'Preliminary';\r\n })\r\n );\r\n }\r\n\r\n public onlyOneCustomerInList():boolean{\r\n if(_.isNil(this.model.customers)){\r\n return false;\r\n }else if(this.model.customers.length===1){\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n private queryCustomers(startGasMonth: GasMonth, endGasMonth: GasMonth): Observable {\r\n const queryInvoiceRecipients$ = !this.userService.user.isExternalUser\r\n ? this.invoicePackageService.queryInvoiceRecipients(startGasMonth, endGasMonth)\r\n : of([ InvoiceRecipient.create(Number(this.userService.user.enterpriseId))]);\r\n\r\n return queryInvoiceRecipients$\r\n .pipe(\r\n concatMap(invoiceRecipients => this.enterpriseEnrichmentService.enrichArray(invoiceRecipients, 'id')),\r\n tap(invoiceRecipients => {\r\n this.model.customers = _.orderBy(invoiceRecipients, x => x['displayName']);\r\n })\r\n );\r\n }\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {FlowinggasResourceService} from \"@shared/resources/flowinggas-resource.service\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {Observable} from \"rxjs\";\r\nimport {IGasMonth} from \"@model/gas-day-month.interface\";\r\nimport {DateTime} from \"@model/date-time\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {map} from \"rxjs/operators\";\r\nimport * as _ from \"lodash\";\r\n\r\nexport interface IMakeupNomination {\r\n pipeline: string;\r\n id: string;\r\n version: string;\r\n isOverride: boolean;\r\n comments: string;\r\n billingMonth: string;\r\n type: string;\r\n nominationId: string;\r\n effectiveDateTime: string;\r\n issueDateTime: string;\r\n quantity: string;\r\n isTimelyCycle: boolean;\r\n isCurrentNomination: boolean;\r\n}\r\n\r\nexport class MakeupNomination {\r\n pipeline: string;\r\n id: number;\r\n version: number;\r\n isOverride: boolean;\r\n comments: string;\r\n billingMonth?: GasMonth;\r\n type: string;\r\n nominationId: number;\r\n effectiveDateTime: Date;\r\n issueDateTime: Date;\r\n quantity: number;\r\n isTimelyCycle: boolean;\r\n isCurrentNomination: boolean;\r\n\r\n public static create(dto: IMakeupNomination): MakeupNomination {\r\n const makeupNomination = new MakeupNomination();\r\n\r\n makeupNomination.pipeline = dto.pipeline;\r\n makeupNomination.id = +dto.id;\r\n makeupNomination.version = +dto.version;\r\n makeupNomination.isOverride = dto.isOverride;\r\n makeupNomination.comments = dto.comments;\r\n makeupNomination.billingMonth = !_.isNil(dto.billingMonth) ? GasMonth.parse(dto.billingMonth) : null;\r\n makeupNomination.type = dto.type;\r\n makeupNomination.nominationId = +dto.nominationId;\r\n makeupNomination.effectiveDateTime = new Date(dto.effectiveDateTime);\r\n makeupNomination.issueDateTime = new Date(dto.issueDateTime);\r\n makeupNomination.quantity = +dto.quantity;\r\n makeupNomination.isTimelyCycle = dto.isTimelyCycle;\r\n makeupNomination.isCurrentNomination = dto.isCurrentNomination;\r\n\r\n return makeupNomination;\r\n }\r\n}\r\n\r\nexport class MakeupNominationsSearchRequest {\r\n gasDay: GasDay;\r\n billingMonth: GasMonth;\r\n locationId: number;\r\n}\r\n\r\n@Injectable()\r\nexport class OverrideMakeupNominationsService {\r\n constructor(private flowingGasResource: FlowinggasResourceService) {}\r\n\r\n public queryMakeupNominations(searchParams: MakeupNominationsSearchRequest): Observable {\r\n return this.flowingGasResource.get('/makeupnominations', true, this.buildUrlSearchParams(searchParams))\r\n .pipe(\r\n map(dtos => dtos.map(dto => MakeupNomination.create(dto)))\r\n );\r\n }\r\n\r\n public submitMakeupNominationUpdate(makeupNomination: MakeupNomination, billingMonth: GasMonth): Observable {\r\n const body = {\r\n pipeline: makeupNomination.pipeline,\r\n id: makeupNomination.id,\r\n version: makeupNomination.version,\r\n comments: makeupNomination.comments,\r\n isOverride: true,\r\n billingMonth: billingMonth.toString()\r\n };\r\n\r\n return this.flowingGasResource.putWithNoResponseBody(`/makeupnominations/${makeupNomination.id}`, body);\r\n }\r\n\r\n private buildUrlSearchParams(searchParams: MakeupNominationsSearchRequest): GCTSHttpParams {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n if (!_.isNil(searchParams.gasDay)) {params.setGasDay(searchParams.gasDay);}\r\n if (!_.isNil(searchParams.billingMonth)) {params.setGasMonth(searchParams.billingMonth, 'billingMonth');}\r\n if (!_.isNil(searchParams.locationId)) {params.set('locationId', searchParams.locationId.toString());}\r\n\r\n return params;\r\n }\r\n}\r\n","import {BillingMonth} from \"@model/billing-month\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {NominationPipelineGasDay} from \"@model/nomination-pipeline-gas-day\";\r\nimport {OmvLocation} from \"@shared/services/flowing-gas/location/flowing-gas-location.service\";\r\nimport {MakeupNomination} from \"@shared/services/flowing-gas/override-makeup-nominations/override-makeup-nominations.service\";\r\nimport {BaseViewModel} from \"@model/base-view-model\";\r\nimport * as _ from \"lodash\";\r\n\r\nexport class OverrideMakeupNominationsModel extends BaseViewModel {\r\n public openBillingMonth: BillingMonth;\r\n public preliminaryBillingMonth: BillingMonth;\r\n\r\n public minGasDay: GasDay;\r\n public maxGasDay: GasDay;\r\n\r\n public pipelineGasDay: NominationPipelineGasDay;\r\n\r\n public locationOperator: string;\r\n\r\n public searchParams: OverrideMakeupNominationsSearchParams = new OverrideMakeupNominationsSearchParams();\r\n public lastSearchParams: OverrideMakeupNominationsSearchParams;\r\n\r\n private _omvLocations: OmvLocation[] = [];\r\n public get omvLocations(): OmvLocation[] {\r\n return this._omvLocations;\r\n }\r\n public set omvLocations(omvLocations: OmvLocation[]) {\r\n this._omvLocations = omvLocations;\r\n }\r\n\r\n public packTabModel: OverrideMakeupNominationsTabModel = new OverrideMakeupNominationsTabModel('Pack');\r\n public draftTabModel: OverrideMakeupNominationsTabModel = new OverrideMakeupNominationsTabModel('Draft');\r\n\r\n public hasSearchResults(): boolean {\r\n return !_.isNil(this.packTabModel.makeupSearchResults) || !_.isNil(this.draftTabModel.makeupSearchResults);\r\n }\r\n}\r\n\r\nexport class OverrideMakeupNominationsSearchParams {\r\n gasDay: GasDay;\r\n billingGasMonth: GasMonth;\r\n omvLocationId: number;\r\n}\r\n\r\nexport class SubmitMakeupNominationModel {\r\n makeupNomination: MakeupNomination = new MakeupNomination();\r\n public newComment: string;\r\n}\r\n\r\nexport class OverrideMakeupNominationsTabModel {\r\n\r\n constructor(type: string) {\r\n this.type = type;\r\n }\r\n\r\n public gasDay: GasDay;\r\n public billingGasMonth: GasMonth;\r\n public locationName: string;\r\n\r\n public isEditing: boolean;\r\n public type: string;\r\n\r\n public newComment: string;\r\n\r\n private _makeupSearchResults: MakeupNomination[];\r\n public get makeupSearchResults(): MakeupNomination[] {\r\n return this._makeupSearchResults;\r\n }\r\n public set makeupSearchResults(makeupNominations: MakeupNomination[]) {\r\n this._makeupSearchResults = makeupNominations;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {Observable} from \"rxjs\";\r\nimport {FlowinggasResourceService} from \"@shared/resources/flowinggas-resource.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {map} from \"rxjs/operators\";\r\nimport * as _ from \"lodash\";\r\n\r\nexport class LBALocationTolerancesUploadParameters {\r\n constructor(public rows: Array) { }\r\n}\r\n\r\nexport class LBALocationTolerancepRow {\r\n constructor(public lineNumber: number,\r\n public locationName: string,\r\n public effectiveGasDay: string,\r\n public expiryGasDay: string,\r\n public quantity: string,\r\n public tollTypeCode: string\r\n\r\n ) {}\r\n}\r\n\r\nexport class LBALocationToleranceRowError extends LBALocationTolerancepRow {\r\n error: string;\r\n}\r\n\r\nexport class LBALocationTolerancesUploadResponse {\r\n recordsAdded = 0;\r\n recordsRead = 0;\r\n recordsWithError = 0;\r\n results = new Array();\r\n}\r\n\r\nexport interface IOmvLocation {\r\n locationId: string;\r\n}\r\n\r\nexport class OmvLocation {\r\n locationId: number;\r\n\r\n public static create(dto: IOmvLocation): OmvLocation {\r\n const omvLocation: OmvLocation = new OmvLocation();\r\n omvLocation.locationId = +dto.locationId;\r\n\r\n return omvLocation;\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport class FlowingGasLocationService {\r\n\r\n constructor(private flowinggasResource: FlowinggasResourceService) { }\r\n\r\n public publishLBALocationTolerances(uploadParameters: LBALocationTolerancesUploadParameters): Observable {\r\n return this.flowinggasResource.post('/lbalocationtolerances', uploadParameters.rows);\r\n }\r\n\r\n public getOmvLocations(gasDay: GasDay): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n if (!_.isNil(gasDay)) {params.setGasDay(gasDay);}\r\n\r\n return this.flowinggasResource.get('/omvlocations', true, params)\r\n .pipe(\r\n map(dtos => dtos.map(x => OmvLocation.create(x)))\r\n );\r\n }\r\n}\r\n","import {MakeupNomination} from \"@shared/services/flowing-gas/override-makeup-nominations/override-makeup-nominations.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport * as _ from 'lodash';\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {DateTime} from \"@model/date-time\";\r\nimport {Injectable} from \"@angular/core\";\r\n\r\n@Injectable()\r\nexport class OverrideMakeupNominationsCsvBuilderService {\r\n constructor(private fileService: FileService) {}\r\n\r\n build(title: string,\r\n gasDay: GasDay,\r\n gasMonth: GasMonth,\r\n locationName: string,\r\n type: string,\r\n makeupNominations: MakeupNomination[]): void\r\n {\r\n let csvData = _.map(makeupNominations, x => _.extend({}, x, {\r\n isOverrideYesNoFormat: x.isOverride ? 'Yes' : 'No',\r\n effectiveDateTimeDisplayFormat: new DateTime(x.effectiveDateTime).toDisplayFormat(true),\r\n issueDateTimeDisplayFormat: new DateTime(x.issueDateTime).toDisplayFormat(true)\r\n }));\r\n\r\n csvData = _.sortBy(csvData, ['effectiveDateTime', 'issueDateTime']).reverse();\r\n\r\n const filename = title + '_' + locationName + '_' + gasDay.toDisplayFormat() + '_' + gasMonth.toString() + '_' + type + '.csv';\r\n\r\n const headers = ['Is Override', 'Nomination Id', 'Effective Date Time', 'Issue Date Time', 'Quantity', 'Comment'];\r\n const columns = ['isOverrideYesNoFormat', 'nominationId', 'effectiveDateTimeDisplayFormat', 'issueDateTimeDisplayFormat', 'quantity', 'comments'];\r\n\r\n this.fileService.downloadCsvFile(filename, csvData, headers, columns);\r\n }\r\n}\r\n","\r\n The Override {{submitModalModel.makeupNomination.type}} Makeup nomination {{submitModalModel.makeupNomination.nominationId}} was selected for a cycle other than 09:00.\r\n

\r\n Do you want to continue?\r\n\r\n\r\n
\r\n
\r\n Number of {{tabModel.type}} Makeup Nominations Found: {{tabModel.makeupSearchResults.length}}\r\n\r\n
0\" class=\"pull-right\">\r\n Export CSV\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n \r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n {{row.value | booleanAsYesNo }}\r\n
\r\n\r\n
\r\n {{row.value | dateFormat : 'YYYY-MMM-DD HH:mm'}}\r\n
\r\n\r\n
\r\n
{{row.data['comments']}}
\r\n
\r\n\r\n
\r\n
{{row.data['comments']}}
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n","import {Component, EventEmitter, Input, Output, ViewChild} from \"@angular/core\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {MakeupNomination, OverrideMakeupNominationsService} from \"@shared/services/flowing-gas/override-makeup-nominations/override-makeup-nominations.service\";\r\nimport {ModalComponent} from \"@shared/components/modal/modal.component\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {OverrideMakeupNominationsTabModel, SubmitMakeupNominationModel} from \"app/gcts/flowinggas/override-makeup-nominations/override-makeup-nominations.model\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {OverrideMakeupNominationsCsvBuilderService} from \"@shared/services/flowing-gas/override-makeup-nominations/override-makeup-nominations-csv-builder.service\";\r\n\r\n@Component({\r\n selector: 'app-override-makeup-nominations-tab',\r\n templateUrl: './override-makeup-nominations-tab.component.html',\r\n styleUrls: ['./override-makeup-nominations-tab.component.css']\r\n})\r\n\r\nexport class OverrideMakeupNominationsTabComponent {\r\n @Input() tabModel: OverrideMakeupNominationsTabModel;\r\n @Output() performSearchEvent = new EventEmitter();\r\n\r\n @ViewChild(ModalComponent)\r\n yesNoSubmitModal: ModalComponent;\r\n @ViewChild(DxDataGridComponent) dataGrid: DxDataGridComponent;\r\n\r\n public submitModalModel: SubmitMakeupNominationModel = new SubmitMakeupNominationModel();\r\n\r\n\r\n constructor(private alertService: AlertService,\r\n private sessionService: SessionService,\r\n private overrideMakeupNominationsService: OverrideMakeupNominationsService,\r\n private overrideMakeupNominationsCsvBuilderService: OverrideMakeupNominationsCsvBuilderService) {\r\n }\r\n\r\n public editClicked(cellInfo: any): void {\r\n this.alertService.clearMessages();\r\n\r\n this.tabModel.isEditing = true;\r\n cellInfo.data.isEditing = true;\r\n cellInfo.component.editRow(cellInfo.rowIndex);\r\n }\r\n\r\n public cancelClicked(cellInfo: any): void {\r\n this.alertService.clearMessages();\r\n this.tabModel.newComment = null;\r\n\r\n this.clearEditMode(cellInfo.data);\r\n }\r\n\r\n public saveClicked(cellInfo: any): void {\r\n this.alertService.clearMessages();\r\n const makeupNomination = cellInfo.data as MakeupNomination;\r\n\r\n if (!makeupNomination.isTimelyCycle) {\r\n this.submitModalModel.makeupNomination = makeupNomination;\r\n this.yesNoSubmitModal.show();\r\n } else {\r\n this.saveMakeupNomination(makeupNomination);\r\n }\r\n }\r\n\r\n public saveMakeupNomination(makeupNomination: MakeupNomination): void {\r\n // this ensures empty comments are saved as empty strings and not nulls\r\n const comments = makeupNomination.comments ? makeupNomination.comments : \"\";\r\n makeupNomination.comments = comments + \"\\r\\n\" + this.tabModel.newComment;\r\n\r\n makeupNomination.pipeline = this.sessionService.getPipeline().code;\r\n\r\n this.dataGrid.instance.saveEditData().then(() => {\r\n this.overrideMakeupNominationsService.submitMakeupNominationUpdate(makeupNomination, this.tabModel.billingGasMonth)\r\n .subscribe(() => {\r\n this.performSearchEvent.emit(this.tabModel.type);\r\n this.alertService.addSuccessMessage('Success', 'Makeup Nomination was saved.');\r\n this.clearEditMode(makeupNomination);\r\n this.tabModel.newComment = null;\r\n });\r\n });\r\n }\r\n\r\n private clearEditMode(rowData: any): void {\r\n rowData.isEditing = false;\r\n this.tabModel.isEditing = false;\r\n }\r\n\r\n public exportCsvClicked(): void {\r\n this.overrideMakeupNominationsCsvBuilderService.build(\r\n 'OMN',\r\n this.tabModel.gasDay,\r\n this.tabModel.billingGasMonth,\r\n this.tabModel.locationName,\r\n this.tabModel.type,\r\n this.tabModel.makeupSearchResults\r\n );\r\n }\r\n\r\n public onValueChanged($valueChangedEvent: any, tabModel: OverrideMakeupNominationsTabModel): void {\r\n tabModel.newComment = $valueChangedEvent.value;\r\n }\r\n\r\n public onKeyDown(keyDownEvent: any) {\r\n if(keyDownEvent.event.keyCode === 13){\r\n keyDownEvent.event.stopPropagation();\r\n }\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Gas Day: {{model.lastSearchParams?.gasDay | gasDayFormat}}\r\n Billing Month: {{model.lastSearchParams?.billingGasMonth | gasMonthFormat}}\r\n Location: {{model.lastSearchParams?.omvLocationId | displayName: 'locationId' : 'locationName' : model.omvLocations}}\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.searchParams.billingGasMonth | gasMonthFormat}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.gasDay | gasDayFormat}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.omvLocationId | displayName: 'locationId' : 'locationName' : model.omvLocations}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.billingGasMonth | gasMonthFormat}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.locationOperator}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n","import {Component, OnInit} from \"@angular/core\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {forkJoin, Observable} from \"rxjs\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {concatMap, tap} from \"rxjs/operators\";\r\nimport {OverrideMakeupNominationsModel, OverrideMakeupNominationsSearchParams} from \"app/gcts/flowinggas/override-makeup-nominations/override-makeup-nominations.model\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {NominationSystemService} from \"@shared/services/nomination/nomination-system/nomination-system.service\";\r\nimport {FlowingGasLocationService, OmvLocation} from \"@shared/services/flowing-gas/location/flowing-gas-location.service\";\r\nimport * as _ from \"lodash\";\r\nimport {LocationEnrichmentService} from \"@shared/services/enrichment/location-enrichment.service\";\r\nimport {LocationService} from \"@shared/services/common-data/location/location.service\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {MakeupNomination, MakeupNominationsSearchRequest, OverrideMakeupNominationsService} from \"@shared/services/flowing-gas/override-makeup-nominations/override-makeup-nominations.service\";\r\nimport {Location} from \"@shared/interfaces/location\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\n\r\n@Component({\r\n selector: 'app-override-makeup-nominations',\r\n templateUrl: './override-makeup-nominations.component.html',\r\n styleUrls: ['./override-makeup-nominations.component.css']\r\n})\r\n\r\nexport class OverrideMakeupNominationsComponent extends BaseSearchComponent implements OnInit{\r\n private readonly draftType: string = 'Draft';\r\n private readonly packType: string = 'Pack';\r\n\r\n public model: OverrideMakeupNominationsModel = new OverrideMakeupNominationsModel();\r\n\r\n tabs = [\r\n {id: 0, title: \"Pack\", template: \"packMakeupNominations\"},\r\n {id: 1, title: \"Draft\", template: \"draftMakeupNominations\"}\r\n ];\r\n\r\n public selectedIndex: number = this.tabs[0].id;\r\n\r\n constructor(protected appService: AppService,\r\n protected activatedRoute: ActivatedRoute,\r\n protected router: Router,\r\n protected alertService: AlertService,\r\n private sessionService: SessionService,\r\n private commonDataBillingMonthService: CommonDataBillingMonthService,\r\n private nominationsSystemService: NominationSystemService,\r\n private flowingGasLocationService: FlowingGasLocationService,\r\n private commonDataLocationService: LocationService,\r\n private locationEnrichmentService: LocationEnrichmentService,\r\n private overrideMakeupNominationsService: OverrideMakeupNominationsService ) {\r\n super('Override Makeup Nominations', appService, activatedRoute, router, alertService);\r\n\r\n locationEnrichmentService.setEnrichmentResource(commonDataLocationService);\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n this.appService.hideMenu();\r\n\r\n const getOpenBillingMonth$ = this.commonDataBillingMonthService.getOpen()\r\n .pipe(\r\n tap(openBillingMonth => this.model.openBillingMonth = openBillingMonth)\r\n );\r\n\r\n const preliminaryBillingMonth$ = this.commonDataBillingMonthService.getPreliminary()\r\n .pipe(\r\n tap(preliminary => this.model.preliminaryBillingMonth = preliminary)\r\n );\r\n\r\n return forkJoin([\r\n getOpenBillingMonth$,\r\n preliminaryBillingMonth$]).pipe(\r\n tap(() => {\r\n this.model.minGasDay = GasDay.parse(this.sessionService.getPipeline().uiAccessibleGasDay);\r\n this.model.maxGasDay = this.model.preliminaryBillingMonth.lastDayOfMonth\r\n ? this.model.preliminaryBillingMonth.lastDayOfMonth\r\n : this.model.openBillingMonth.lastDayOfMonth;\r\n })\r\n );\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n return this.queryOmvLocations();\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.packTabModel.makeupSearchResults = this.model.draftTabModel.makeupSearchResults = null;\r\n\r\n this.model.searchParams = new OverrideMakeupNominationsSearchParams();\r\n this.model.searchParams.gasDay = this.model.openBillingMonth.lastDayOfMonth;\r\n\r\n this.setBillingGasMonth();\r\n this.setTabToDefaultPosition();\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {};\r\n params['locationId'] = this.model.searchParams.omvLocationId;\r\n params['gasDay'] = this.model.searchParams.gasDay.toString();\r\n params['billingMonth'] = this.model.searchParams.billingGasMonth.toString();\r\n\r\n return params;\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n const paramValidator = ParamValidator.Standard();\r\n return paramValidator.isValid(params);\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams = new OverrideMakeupNominationsSearchParams();\r\n\r\n this.model.searchParams.omvLocationId = typedParams.asNullableNumber('locationId');\r\n this.model.searchParams.gasDay = typedParams.asGasDay('gasDay');\r\n this.model.searchParams.billingGasMonth = typedParams.asGasMonth('billingMonth');\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.packTabModel.makeupSearchResults = this.model.draftTabModel.makeupSearchResults = null;\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n this.model.packTabModel.billingGasMonth = this.model.draftTabModel.billingGasMonth = this.model.lastSearchParams.billingGasMonth;\r\n this.model.packTabModel.gasDay = this.model.draftTabModel.gasDay = this.model.lastSearchParams.gasDay;\r\n\r\n const queryLocation$ = this.queryLocationOwner();\r\n const queryMakeupNominations$ = this.queryMakeupNominations();\r\n\r\n return forkJoin([queryMakeupNominations$, queryLocation$]);\r\n }\r\n\r\n private queryLocationOwner(): Observable {\r\n return this.commonDataLocationService.query(this.model.lastSearchParams.omvLocationId, this.model.lastSearchParams.gasDay)\r\n .pipe(\r\n tap(location => {\r\n this.model.locationOperator = location['operatorName'] + ' (' + location['operatorMnemonic'] + ')';\r\n this.model.packTabModel.locationName = this.model.draftTabModel.locationName = location['name'];\r\n })\r\n );\r\n }\r\n\r\n private queryMakeupNominations(): Observable {\r\n const searchRequest = new MakeupNominationsSearchRequest();\r\n searchRequest.gasDay = this.model.searchParams.gasDay;\r\n searchRequest.billingMonth = this.model.searchParams.billingGasMonth;\r\n searchRequest.locationId = this.model.searchParams.omvLocationId;\r\n\r\n return this.overrideMakeupNominationsService.queryMakeupNominations(searchRequest)\r\n .pipe(\r\n tap(makeupNominations => {\r\n this.model.packTabModel.makeupSearchResults = _.filter(makeupNominations, r => r.type === this.packType);\r\n this.tabs[0].title = `Pack (${this.model.packTabModel.makeupSearchResults.length})`;\r\n\r\n this.model.draftTabModel.makeupSearchResults = _.filter(makeupNominations, r => r.type === this.draftType);\r\n this.tabs[1].title = `Draft (${this.model.draftTabModel.makeupSearchResults.length})`;\r\n\r\n this.setTabToDefaultPosition();\r\n })\r\n );\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n public onGasDayChanged(): void {\r\n if (_.isNil(this.model.searchParams.gasDay)) return;\r\n\r\n this.setBillingGasMonth();\r\n // update locations on gas day change\r\n this.queryOmvLocations().subscribe( () => {});\r\n }\r\n\r\n private setBillingGasMonth() {\r\n const gasMonth = GasMonth.fromGasDay(this.model.searchParams.gasDay);\r\n if (gasMonth.isLessThanOrEqualTo(this.model.openBillingMonth.gasMonth)) {\r\n this.model.searchParams.billingGasMonth = this.model.openBillingMonth.gasMonth;\r\n } else if (gasMonth.isEqual(this.model.preliminaryBillingMonth.gasMonth)) {\r\n this.model.searchParams.billingGasMonth = this.model.preliminaryBillingMonth.gasMonth;\r\n }\r\n }\r\n\r\n public queryOmvLocations(): Observable {\r\n return this.flowingGasLocationService.getOmvLocations(this.model.searchParams.gasDay)\r\n .pipe(\r\n concatMap(omvLocations => this.locationEnrichmentService.enrichArray(omvLocations, 'locationId', 'location')),\r\n tap(omvLocations => this.model.omvLocations = _.sortBy(omvLocations, x => x['locationName']))\r\n );\r\n }\r\n\r\n private setTabToDefaultPosition(): void {\r\n this.selectedIndex = this.tabs[0].id;\r\n }\r\n\r\n public performSearchEvent(type: string): void {\r\n this.performSearch().subscribe(() => {\r\n this.selectedIndex =\r\n this.tabs[0].title.includes(type) ? this.tabs[0].id :\r\n this.tabs[1].title.includes(type) ? this.tabs[1].id : 0;\r\n });\r\n }\r\n}\r\n","export class BooleanHelper {\r\n public static toYesOrNo(value: boolean, isAbbreviated: boolean = false) {\r\n if(isAbbreviated)\r\n return value ? BooleanDropDownValue.YES.abbrValue : BooleanDropDownValue.NO.abbrValue;\r\n\r\n return value ? BooleanDropDownValue.YES.displayValue : BooleanDropDownValue.NO.displayValue;\r\n }\r\n}\r\n\r\nexport class BooleanDropDownValue {\r\n public static YES: BooleanDropDownValue = new BooleanDropDownValue(true, 'Yes', 'Y');\r\n public static NO: BooleanDropDownValue = new BooleanDropDownValue(false, 'No', 'N');\r\n public static ALL: BooleanDropDownValue[] = [BooleanDropDownValue.YES, BooleanDropDownValue.NO];\r\n\r\n constructor(private _value: boolean, private _displayValue: string, private _abbrValue: string) {\r\n }\r\n\r\n get value(): boolean {\r\n return this._value;\r\n }\r\n\r\n get displayValue(): string {\r\n return this._displayValue;\r\n }\r\n\r\n get abbrValue(): string {\r\n return this._abbrValue;\r\n }\r\n}\r\n","import {GasMonth} from \"@model/gas-month\";\r\nimport {BaseViewModel} from \"@model/base-view-model\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport {Location} from \"@shared/interfaces/location\";\r\nimport {InvoiceRecipient} from \"@shared/services/invoicing/invoicing-invoice-package/invoicing-invoice-package.service\";\r\nimport {BooleanDropDownValue} from \"@model/boolean-helper\";\r\nimport {NominationGroupDto} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport {BillingProcess} from \"@shared/services/flowing-gas/flowing-gas-allocation-and-balancing-billing-process/flowing-gas-allocation-and-balancing-billing-process.service\";\r\nimport {ItPenalty} from \"@shared/services/flowing-gas/it-penalties-service/it-penalties.service\";\r\n\r\nexport class ItPenaltiesModel extends BaseViewModel {\r\n oldestBillingMonth: BillingMonth;\r\n newestBillingMonth: BillingMonth;\r\n openBillingMonth: BillingMonth;\r\n allocationAndBalancingBillingProcess: BillingProcess;\r\n\r\n minBillingMonth: GasMonth;\r\n isAdding: boolean = false;\r\n isEditing: boolean = false;\r\n\r\n enterprises: InvoiceRecipient[];\r\n locations: Location[];\r\n serviceCodes: string[] = ['IT', 'SSS'];\r\n defaultServiceCode = 'IT';\r\n taxZeroRatedValues: BooleanDropDownValue[] = BooleanDropDownValue.ALL;\r\n\r\n enterpriseItNomGroups: NominationGroupDto[];\r\n\r\n searchParams: ItPenaltiesSearchParams = new ItPenaltiesSearchParams();\r\n lastSearchParams: ItPenaltiesSearchParams;\r\n\r\n // TODO: This should not be defined as any! This should be ITPenalty. This isn't Javascript.\r\n searchResults: any;\r\n\r\n isEditingRowValid: boolean;\r\n}\r\n\r\nexport class ItPenaltiesSearchParams {\r\n affectedBillingMonth: GasMonth;\r\n billingMonth: GasMonth;\r\n customerEnterpriseId?: number;\r\n}\r\n","import * as _ from \"lodash\";\r\nimport {Injectable} from \"@angular/core\";\r\nimport {FlowinggasResourceService} from \"@shared/resources/flowinggas-resource.service\";\r\nimport {Observable} from \"rxjs\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {map} from \"rxjs/operators\";\r\nimport {GasDay} from \"@model/gas-day\";\r\n\r\n@Injectable()\r\nexport class ItPenaltiesService {\r\n constructor(private flowingGasResourceService: FlowinggasResourceService) { }\r\n\r\n public queryItPenalties(affectedBillingMonth: GasMonth, billingMonth: GasMonth, enterpriseId?: number): Observable {\r\n const params = new GCTSHttpParams();\r\n params.setGasMonth(affectedBillingMonth, 'affectedBillingMonth');\r\n params.setOptionalNumber('enterpriseCid', enterpriseId);\r\n params.setGasMonth(billingMonth, 'billingMonth');\r\n\r\n return this.flowingGasResourceService.get('/interruptiblePenalties', true, params)\r\n .pipe(\r\n map(dtos => _.map(dtos, dto => ItPenalty.create(dto)))\r\n );\r\n }\r\n\r\n public saveNewItPenalty(itPenalty: ItPenalty): Observable {\r\n const body = {\r\n enterpriseCid: itPenalty.enterpriseCid,\r\n nominationGroupId: itPenalty.nominationGroupId,\r\n affectedGasDay: itPenalty.affectedGasDay.toString(),\r\n billingMonth: itPenalty.billingMonth.toString(),\r\n serviceCode: itPenalty.serviceCode,\r\n receiptLocationId: itPenalty.receiptLocationId,\r\n deliveryLocationId: itPenalty.deliveryLocationId,\r\n isGstExempt: itPenalty.isGstExempt,\r\n bidPrice: itPenalty.bidPrice,\r\n penalty: itPenalty.penalty\r\n };\r\n\r\n return this.flowingGasResourceService.post('/interruptiblePenalties', body)\r\n .pipe(\r\n map(itPenaltyDto => ItPenalty.create(itPenaltyDto))\r\n );\r\n }\r\n\r\n public updateItPenalty(itPenalty: ItPenalty, billingMonth: GasMonth): Observable {\r\n const body = {\r\n id: itPenalty.id,\r\n interruptiblePenaltyId: itPenalty.id,\r\n billingMonth: billingMonth.toString(),\r\n interruptiblePenaltyVersion: itPenalty.version,\r\n nominationGroupId: itPenalty.nominationGroupId,\r\n penalty: itPenalty.penalty\r\n };\r\n\r\n return this.flowingGasResourceService.put(`/interruptiblePenalties/${itPenalty.id}`, body)\r\n .pipe(\r\n map(itPenaltyDto => ItPenalty.create(itPenaltyDto))\r\n );\r\n }\r\n\r\n public deleteItPenalty(itPenalty: ItPenalty): Observable {\r\n const params = new GCTSHttpParams();\r\n params.setNumber('nominationGroupId', itPenalty.nominationGroupId);\r\n params.setGasMonth(itPenalty.billingMonth, 'billingMonth');\r\n\r\n return this.flowingGasResourceService.deleteWithNoResponseBody(`/interruptiblePenalties/${itPenalty.id}`, true, params);\r\n }\r\n}\r\n\r\nexport interface IItPenaltyResponse {\r\n id: number;\r\n nominationId?: number;\r\n nominationGroupId: number;\r\n nominationGroupMnemonic: string;\r\n enterpriseCid: number;\r\n affectedGasDay: string;\r\n billingMonth: string;\r\n serviceCode: string;\r\n receiptLocationId: number;\r\n deliveryLocationId: number;\r\n isGstExempt: boolean;\r\n bidPrice: number;\r\n finalQuantity?: number;\r\n penalty: number;\r\n version: number;\r\n}\r\n\r\nexport class ItPenalty {\r\n id: number;\r\n nominationId?: number;\r\n nominationGroupId: number;\r\n nominationGroupMnemonic: string;\r\n enterpriseCid: number;\r\n affectedGasDay: GasDay;\r\n billingMonth: GasMonth;\r\n serviceCode: string;\r\n receiptLocationId: number;\r\n deliveryLocationId: number;\r\n isGstExempt: boolean;\r\n bidPrice: number;\r\n finalQuantity?: number;\r\n penalty: number;\r\n version: number;\r\n\r\n public static create(dto: IItPenaltyResponse): ItPenalty {\r\n const itPenalty = new ItPenalty();\r\n\r\n itPenalty.id = dto.id;\r\n itPenalty.nominationId = dto.nominationId;\r\n itPenalty.nominationGroupId = dto.nominationGroupId;\r\n itPenalty.nominationGroupMnemonic = dto.nominationGroupMnemonic;\r\n itPenalty.enterpriseCid = dto.enterpriseCid;\r\n itPenalty.affectedGasDay = GasDay.parse(dto.affectedGasDay);\r\n itPenalty.billingMonth = GasMonth.parse(dto.billingMonth);\r\n itPenalty.serviceCode = dto.serviceCode;\r\n itPenalty.receiptLocationId = dto.receiptLocationId;\r\n itPenalty.deliveryLocationId = dto.deliveryLocationId;\r\n itPenalty.isGstExempt = dto.isGstExempt;\r\n itPenalty.bidPrice = dto.bidPrice;\r\n itPenalty.finalQuantity = dto.finalQuantity;\r\n itPenalty.penalty = dto.penalty;\r\n itPenalty.version = dto.version;\r\n\r\n return itPenalty;\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\nimport {GasDay} from \"@model/gas-day\";\r\n\r\n@Pipe({\r\n name: 'dateToGasDayFormat'\r\n})\r\nexport class DateToGasDayFormatPipe implements PipeTransform {\r\n transform(dateValue: Date, ignoreTime: boolean = false): string {\r\n const gasDay = GasDay.from(dateValue);\r\n\r\n return ignoreTime\r\n ? gasDay.toDisplayFormatAll()\r\n : gasDay.toDisplayDateTimeFormat();\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Affected Month: {{model.lastSearchParams?.affectedBillingMonth}}\r\n Customer: {{model.lastSearchParams?.customerEnterpriseId | displayName: 'id' : 'displayValue' : model.enterprises}}\r\n Billing Month: {{model.lastSearchParams?.billingMonth}}\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.affectedBillingMonth}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.customerEnterpriseId | displayName: 'id' : 'displayValue' : model.enterprises}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.billingMonth}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n Number of results found: {{model.searchResults.length}}\r\n\r\n
0\" class=\"pull-right\">\r\n Export CSV\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {{ data.value | dateToGasDayFormat : true }}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {{ row.value | booleanAsYesNo }}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n","import * as dx from \"devextreme/core/renderer\";\r\nimport * as _ from \"lodash\";\r\nimport {Component, ViewChild} from \"@angular/core\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {forkJoin, Observable} from \"rxjs\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {ItPenaltiesModel, ItPenaltiesSearchParams} from \"app/gcts/flowinggas/it-penalities/it-penalties.model\";\r\nimport {concatMap, tap} from \"rxjs/operators\";\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {LocationService} from \"@shared/services/common-data/location/location.service\";\r\nimport {InvoicingInvoicePackageService} from \"@shared/services/invoicing/invoicing-invoice-package/invoicing-invoice-package.service\";\r\nimport {EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {ItPenaltiesService, ItPenalty} from \"@shared/services/flowing-gas/it-penalties-service/it-penalties.service\";\r\nimport {LocationEnrichmentService} from \"@shared/services/enrichment/location-enrichment.service\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {BooleanHelper} from \"@model/boolean-helper\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {NominationGroupService, QueryNomGroupsSearchRequest} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport {YesNoCancelModalService} from \"@shared/services/webapp/yes-no-cancel-modal/yes-no-cancel-modal.service\";\r\nimport {YesNoModalOptions} from \"@shared/services/webapp/modal-options/yes-no-modal-options\";\r\nimport {SelectedModalOption} from \"@shared/services/webapp/modal-options/selected-modal-option\";\r\nimport {FlowingGasAllocationAndBalancingBillingProcessService} from \"@shared/services/flowing-gas/flowing-gas-allocation-and-balancing-billing-process/flowing-gas-allocation-and-balancing-billing-process.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {EditableSearchComponent} from \"@model/editable-search-component\";\r\nimport {DataGridHooks} from \"@shared/devexpress/datagrid-hooks\";\r\nimport {MinAndMax} from \"@model/min-and-max\";\r\nimport {ModalOptions} from \"@shared/services/webapp/modal-options/modal-options\";\r\n\r\n@Component({\r\n selector: 'app-it-penalties',\r\n templateUrl: './it-penalties.component.html',\r\n styleUrls: ['./it-penalties.component.css']\r\n})\r\n\r\nexport class ItPenaltiesComponent extends EditableSearchComponent {\r\n private static PARAM_AFFECTED_MONTH: string = 'affectedBillingMonth';\r\n private static PARAM_CUSTOMER_ENTERPRISE_ID: string = 'enterpriseId';\r\n private static PARAM_BILLING_MONTH: string = 'billingMonth';\r\n\r\n public model: ItPenaltiesModel = new ItPenaltiesModel();\r\n\r\n @ViewChild(DxDataGridComponent)\r\n dataGrid: DxDataGridComponent;\r\n\r\n constructor(\r\n appService: AppService,\r\n activatedRoute: ActivatedRoute,\r\n router: Router,\r\n protected alertService: AlertService,\r\n private modalService: YesNoCancelModalService,\r\n private commonDataBillingMonthService: CommonDataBillingMonthService,\r\n private invoicingInvoicePackageService: InvoicingInvoicePackageService,\r\n private flowingGasAllocationAndBalancingBillingProcessService: FlowingGasAllocationAndBalancingBillingProcessService,\r\n private commonDataEnterpriseService: EnterpriseService,\r\n private commonDataLocationService: LocationService,\r\n private accountsNomGroupService: NominationGroupService,\r\n private enterpriseEnrichmentService: EnterpriseEnrichmentService,\r\n private locationEnrichmentService: LocationEnrichmentService,\r\n private itPenaltiesService: ItPenaltiesService,\r\n private fileService: FileService\r\n ) {\r\n super('IT Penalties', appService, activatedRoute, router, alertService);\r\n\r\n this.enterpriseEnrichmentService.setEnrichmentResource(this.commonDataEnterpriseService);\r\n this.locationEnrichmentService.setEnrichmentResource(this.commonDataLocationService);\r\n }\r\n\r\n /**\r\n * Public Methods\r\n */\r\n\r\n public onAffectedBillingMonthChanged(): void {\r\n if (!this.model.searchParams.affectedBillingMonth) return;\r\n\r\n this.model.minBillingMonth = this.model.searchParams.affectedBillingMonth;\r\n this.model.searchParams.billingMonth = this.model.openBillingMonth.gasMonth; // Bug 14805 - always reset the \"Billing Month\" to the open billing month when affected billing month changes\r\n }\r\n\r\n public sortEnterpriseMnemonic(itPenalty: ItPenalty): string {\r\n return _.isNil(itPenalty.id) ? '' : itPenalty['enterpriseMnemonic']; // Keep the new record on top during editing\r\n }\r\n\r\n public addClicked(): void {\r\n this.alertService.clearMessages();\r\n\r\n const searchRequest =\r\n QueryNomGroupsSearchRequest.searchByEnterpriseAndBillingMonth(\r\n this.model.lastSearchParams.customerEnterpriseId, this.model.lastSearchParams.billingMonth, true);\r\n this.accountsNomGroupService\r\n .queryNomGroups(searchRequest)\r\n .subscribe(itNomGroups => {\r\n this.model.enterpriseItNomGroups = itNomGroups;\r\n\r\n this.model.isAdding = true;\r\n this.model.isEditingRowValid = false;\r\n this.dataGrid.instance.addRow();\r\n });\r\n }\r\n\r\n public editClicked(cellInfo: any): void {\r\n this.alertService.clearMessages();\r\n\r\n this.model.isEditing = true;\r\n cellInfo.data.isEditing = true;\r\n cellInfo.component.editRow(cellInfo.rowIndex);\r\n }\r\n\r\n public deleteClicked(cellInfo: any): void {\r\n this.alertService.clearMessages();\r\n\r\n const yesNoModalOptions = new YesNoModalOptions('Delete IT Penalty', 'You are about to delete this IT Penalty, are you sure you want to continue?');\r\n this.modalService.show(yesNoModalOptions)\r\n .subscribe((selectedModalOption: SelectedModalOption) => {\r\n if (selectedModalOption === SelectedModalOption.Yes) {\r\n const itPenalty = cellInfo.data as ItPenalty;\r\n this.itPenaltiesService.deleteItPenalty(itPenalty)\r\n .pipe(\r\n tap(() => this.alertService.addSuccessMessage(\"Delete Success:\", \"The selected IT Penalty was deleted successfully.\")),\r\n concatMap(() => this.performSearch())\r\n )\r\n .subscribe(() => {\r\n });\r\n }\r\n });\r\n }\r\n\r\n public cancelClicked(cellInfo: any): void {\r\n this.alertService.clearMessages();\r\n\r\n this.clearEditMode(cellInfo.data);\r\n this.performSearch().subscribe(() => {\r\n });\r\n }\r\n\r\n public saveClicked(cellInfo: any): void {\r\n this.alertService.clearMessages();\r\n\r\n this.dataGrid.instance.saveEditData().then(() => {\r\n const itPenalty = cellInfo.row.data as ItPenalty;\r\n\r\n const saveObservable$ = this.model.isAdding\r\n ? this.itPenaltiesService.saveNewItPenalty(itPenalty)\r\n : this.itPenaltiesService.updateItPenalty(itPenalty, this.model.openBillingMonth.gasMonth);\r\n\r\n saveObservable$\r\n .subscribe(savedItPenalty => {\r\n this.clearEditMode(cellInfo);\r\n this.displaySavedAlert(savedItPenalty);\r\n this.performSearch().subscribe(() => {\r\n });\r\n },\r\n () => {\r\n // Provide users the ability to continue to edit the row on an server side validation error\r\n cellInfo.component.editRow(cellInfo.rowIndex);\r\n }\r\n );\r\n });\r\n }\r\n\r\n public exportCsvClicked(): void {\r\n const csvExport = _.map(this.model.searchResults, itPenalty => ({\r\n ownerMnemonic: itPenalty.enterpriseMnemonic,\r\n nomGroup: itPenalty.nominationGroupMnemonic,\r\n affectedGasDay: itPenalty.affectedGasDay.toString(),\r\n billingMonth: itPenalty.billingMonth,\r\n serviceCode: itPenalty.serviceCode,\r\n receiptLocation: itPenalty.receiptLocationName,\r\n deliveryLocation: itPenalty.deliveryLocationName,\r\n taxZeroRated: BooleanHelper.toYesOrNo(itPenalty.isGstExempt),\r\n bidPrice: itPenalty.bidPrice,\r\n finalQuantity: itPenalty.finalQuantity,\r\n penalty: itPenalty.penalty\r\n }));\r\n\r\n const enterpriseValue = this.model.lastSearchParams.customerEnterpriseId\r\n ? _.find(this.model.enterprises, x => x.id === this.model.lastSearchParams.customerEnterpriseId).mnemonic\r\n : 'All';\r\n\r\n const fileName = `ITPenalties_${enterpriseValue}_${this.model.lastSearchParams.billingMonth.toString()}.csv`;\r\n const headers = ['Owner Mnemonic', 'Nom Group', 'Affected Gas Day', 'Billing Month', 'Service Code', 'Receipt Location', 'Delivery Location', 'Tax Zero Rated', 'Bid Price', 'Final Quantity(GJ)', 'Penalty(GJ)'];\r\n const columns = ['ownerMnemonic', 'nomGroup', 'affectedGasDay', 'billingMonth', 'serviceCode', 'receiptLocation', 'deliveryLocation', 'taxZeroRated', 'bidPrice', 'finalQuantity', 'penalty'];\r\n\r\n this.fileService.downloadCsvFile(fileName, csvExport, headers, columns);\r\n }\r\n\r\n public onInitNewRow($event: any): void {\r\n $event.data.isEditing = true;\r\n\r\n const itPenalty = $event.data as ItPenalty;\r\n\r\n itPenalty.enterpriseCid = this.model.lastSearchParams.customerEnterpriseId;\r\n itPenalty.affectedGasDay = this.model.lastSearchParams.affectedBillingMonth.start();\r\n itPenalty.billingMonth = this.model.openBillingMonth.gasMonth;\r\n\r\n if (this.model.enterpriseItNomGroups.length === 1) {\r\n // it there is only one nom group, default nom group drop down\r\n // and set the gst exempt to the same value for the nom group\r\n const nominationGroupDto = this.model.enterpriseItNomGroups[0];\r\n itPenalty.nominationGroupId = nominationGroupDto.id;\r\n itPenalty.isGstExempt = nominationGroupDto.isGstExempt;\r\n }\r\n\r\n // Default service code to 'IT'\r\n itPenalty.serviceCode = this.model.defaultServiceCode;\r\n\r\n // Enrich Enterprise\r\n this.enterpriseEnrichmentService\r\n .enrich(itPenalty, 'enterpriseCid', 'enterprise')\r\n .subscribe(() => {\r\n });\r\n\r\n setTimeout(() => {\r\n this.dataGrid.instance.saveEditData().then(() => {\r\n });\r\n }, 100);\r\n }\r\n\r\n public onRowPrepared($event: any) {\r\n $event.rowElement.classList.add('gcts-grid-row');\r\n }\r\n\r\n public onEditorPreparing($event: any) : void {\r\n DataGridHooks.setEditorOptionsMinAndMax($event, $event.data, 'affectedGasDay.toDate',\r\n () => new MinAndMax(this.model.searchParams.affectedBillingMonth.start().toDate, this.model.searchParams.affectedBillingMonth.end().toDate));\r\n }\r\n\r\n /**\r\n * Protected Methods\r\n */\r\n\r\n protected loadInitialResources(): Observable {\r\n const getOldestBillingMonth$ = this.commonDataBillingMonthService.getOldest()\r\n .pipe(\r\n tap(oldestBillingMonth => this.model.oldestBillingMonth = oldestBillingMonth)\r\n );\r\n\r\n const getOpenBillingMonth$ = this.commonDataBillingMonthService.getOpen()\r\n .pipe(\r\n tap(openBillingMonth => this.model.openBillingMonth = openBillingMonth)\r\n );\r\n\r\n const getPreliminaryBillingMonth$ = this.commonDataBillingMonthService.getNewest()\r\n .pipe(\r\n tap(newestBillingMonth => this.model.newestBillingMonth = newestBillingMonth)\r\n );\r\n\r\n return forkJoin([getOldestBillingMonth$, getOpenBillingMonth$, getPreliminaryBillingMonth$])\r\n .pipe(\r\n tap(() => {\r\n this.model.minBillingMonth = this.model.openBillingMonth.gasMonth;\r\n })\r\n );\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n const paramValidator = ParamValidator.Standard();\r\n\r\n paramValidator.isGasMonth(ItPenaltiesComponent.PARAM_AFFECTED_MONTH);\r\n paramValidator.isNumber(ItPenaltiesComponent.PARAM_CUSTOMER_ENTERPRISE_ID, true);\r\n paramValidator.isGasMonth(ItPenaltiesComponent.PARAM_BILLING_MONTH);\r\n\r\n return paramValidator.isValid(params);\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams = new ItPenaltiesSearchParams();\r\n this.model.searchParams.affectedBillingMonth = this.model.openBillingMonth.gasMonth;\r\n this.model.searchParams.billingMonth = this.model.openBillingMonth.gasMonth;\r\n this.model.searchResults = null;\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams.affectedBillingMonth = typedParams.asGasMonth(ItPenaltiesComponent.PARAM_AFFECTED_MONTH);\r\n this.model.searchParams.customerEnterpriseId = typedParams.asNullableNumber(ItPenaltiesComponent.PARAM_CUSTOMER_ENTERPRISE_ID);\r\n this.model.searchParams.billingMonth = typedParams.asGasMonth(ItPenaltiesComponent.PARAM_BILLING_MONTH);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {};\r\n params[ItPenaltiesComponent.PARAM_AFFECTED_MONTH] = this.model.searchParams.affectedBillingMonth;\r\n params[ItPenaltiesComponent.PARAM_CUSTOMER_ENTERPRISE_ID] = this.model.searchParams.customerEnterpriseId;\r\n params[ItPenaltiesComponent.PARAM_BILLING_MONTH] = this.model.searchParams.billingMonth;\r\n return params;\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n const queryAllocationAndBillingProcess$ = this.flowingGasAllocationAndBalancingBillingProcessService.get(this.model.openBillingMonth.gasMonth)\r\n .pipe(\r\n tap(allocationAndBalancingBillingProcess => this.model.allocationAndBalancingBillingProcess = allocationAndBalancingBillingProcess[0])\r\n );\r\n\r\n const queryInvoiceRecipients$ = this.invoicingInvoicePackageService.queryInvoiceRecipients(this.model.oldestBillingMonth.gasMonth, this.model.newestBillingMonth.gasMonth)\r\n .pipe(\r\n concatMap(invoiceRecipients => this.enterpriseEnrichmentService.enrichArray(invoiceRecipients, 'id')),\r\n tap(invoiceRecipients => this.model.enterprises = _.orderBy(invoiceRecipients, x => x.shortName))\r\n );\r\n\r\n const queryAccountLocations$ = this.commonDataLocationService.queryAccountLocations()\r\n .pipe(\r\n tap(locations => this.model.locations = locations)\r\n );\r\n\r\n return forkJoin([queryAllocationAndBillingProcess$, queryInvoiceRecipients$, queryAccountLocations$]);\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n\r\n const queryItPenalties = this.itPenaltiesService.queryItPenalties(this.model.searchParams.affectedBillingMonth, this.model.searchParams.billingMonth, this.model.searchParams.customerEnterpriseId)\r\n .pipe(\r\n concatMap(itPenalties => this.enterpriseEnrichmentService.enrichArray(itPenalties, 'enterpriseCid', 'enterprise')),\r\n concatMap(itPenalties => this.locationEnrichmentService.enrichArray(itPenalties, 'receiptLocationId', 'receiptLocation')),\r\n concatMap(itPenalties => this.locationEnrichmentService.enrichArray(itPenalties, 'deliveryLocationId', 'deliveryLocation')),\r\n tap(itPenalties => this.model.searchResults = itPenalties)\r\n );\r\n\r\n return forkJoin([queryItPenalties]);\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n /**\r\n * Private\r\n */\r\n\r\n private clearEditMode(rowData: any): void {\r\n rowData.isEditing = false;\r\n this.model.isAdding = false;\r\n this.model.isEditing = false;\r\n }\r\n\r\n private displaySavedAlert(savedItPenalty: ItPenalty): void {\r\n if (savedItPenalty.nominationId) {\r\n this.alertService.addSuccessMessage(\"Save Success:\", \"IT Penalty was saved.\");\r\n } else {\r\n this.alertService.addWarnMessage(\"Save Success with Warning:\", \"IT Penalty was saved but a Nomination was not found to support the IT Penalty.\");\r\n }\r\n }\r\n\r\n public formatGasDay(cellInfo: any): string {\r\n const gasDayDate = cellInfo.value as Date;\r\n const gasDay = GasDay.from(gasDayDate);\r\n return gasDay.toDisplayFormat();\r\n }\r\n\r\n getDefaultChangesWillBeLostMessageOptions(): ModalOptions {\r\n return YesNoCancelModalService.getDefaultYesNoModalOptions();\r\n }\r\n\r\n hasUnsavedChanges(): boolean {\r\n if (!this.dataGrid) return false;\r\n return this.dataGrid.instance.hasEditData();\r\n }\r\n\r\n navigationCancelled(): void {\r\n }\r\n\r\n\r\n onEditorPrepared($event: any) {\r\n if ($event.parentType === 'dataRow') {\r\n let dxEditorInstance = null;\r\n switch ($event.dataField) {\r\n case \"nominationGroupId\":\r\n case \"serviceCode\":\r\n case \"receiptLocationId\":\r\n case \"deliveryLocationId\":\r\n case \"isGstExempt\":\r\n dxEditorInstance = dx($event.editorElement).dxSelectBox('instance');\r\n break;\r\n case \"affectedGasDay.toDate\":\r\n dxEditorInstance = dx($event.editorElement).dxDateBox('instance');\r\n break;\r\n case \"bidPrice\":\r\n case \"penalty\":\r\n dxEditorInstance = dx($event.editorElement).dxNumberBox('instance');\r\n break;\r\n }\r\n if (dxEditorInstance) {\r\n dxEditorInstance.option('valueChangeEvent', 'keydown keyup');\r\n dxEditorInstance.on('valueChanged', (vce) => {\r\n $event.setValue(vce.value);\r\n\r\n $event.component.getController('validating').validate().then((result: boolean) => {\r\n this.model.isEditingRowValid = result;\r\n });\r\n });\r\n }\r\n }\r\n }\r\n\r\n isAddDisabled(): boolean {\r\n return this.model.isAdding ||\r\n this.model.isEditing ||\r\n !this.model.lastSearchParams?.customerEnterpriseId ||\r\n !this.model.lastSearchParams?.billingMonth.isEqual(this.model.openBillingMonth?.gasMonth) ||\r\n this.model.allocationAndBalancingBillingProcess?.status === 'Final';\r\n }\r\n}\r\n","import {GasDay} from \"@model/gas-day\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {Enterprise} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {Location} from \"@shared/interfaces/location\";\r\nimport {NominationGroupDto} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport {AccountSummaryReportType} from \"@model/account-summary-report-type\";\r\nimport {RunReportAsType} from \"@model/run-report-as-type\";\r\nimport {AllocationMethod} from \"@model/allocation-method\";\r\nimport {GasAccountType} from \"@model/gas-account-type\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport {AccountSummary} from \"@shared/services/flowing-gas/flowing-gas-account-summary-service/flowing-gas-account-summary.service\";\r\nimport {DateTime} from \"@model/date-time\";\r\nimport {BaseViewModel} from \"@model/base-view-model\";\r\n\r\nexport class AccountSummaryByLocationMonthlyReportModel extends BaseViewModel {\r\n isExternalUser: boolean = true;\r\n status: string;\r\n\r\n oldestBillingMonth: BillingMonth;\r\n openBillingMonth: BillingMonth;\r\n preliminaryBillingMonth: BillingMonth;\r\n\r\n minReportingGasMonth: GasMonth;\r\n maxReportingGasMonth: GasMonth;\r\n\r\n minBillingGasMonth: GasMonth;\r\n maxBillingGasMonth: GasMonth;\r\n\r\n shipperEnterprises: Enterprise[];\r\n operatorEnterprises: Enterprise[];\r\n pipelineEnterprises: Enterprise[];\r\n\r\n shipperGasAccountTypes: GasAccountType[] = GasAccountType.SHIPPER_GAS_ACCOUNT_TYPES;\r\n pipelineGasAccountTypes: GasAccountType[] = GasAccountType.PIPELINE_GAS_ACCOUNT_TYPES;\r\n\r\n reportTypes: AccountSummaryReportType[];\r\n enterprises: Enterprise[];\r\n accountTypes: GasAccountType[] = GasAccountType.SHIPPER_GAS_ACCOUNT_TYPES;\r\n locations: Location[];\r\n runReportAsTypes: RunReportAsType[] = RunReportAsType.ALL;\r\n nominationGroups: NominationGroupDto[];\r\n allocationMethods: AllocationMethod[] = AllocationMethod.ALL;\r\n\r\n searchParams: AccountSummaryByLocationMonthlyReportSearchParams = new AccountSummaryByLocationMonthlyReportSearchParams();\r\n lastSearchParams: AccountSummaryByLocationMonthlyReportSearchParams;\r\n\r\n searchResults: AccountSummary[];\r\n searchResultsAsOf: DateTime;\r\n\r\n transactionTypes: string[] = [];\r\n exportTransactionType: string[];\r\n}\r\n\r\nexport class AccountSummaryByLocationMonthlyReportSearchParams {\r\n // For All Report Types\r\n reportType: string;\r\n reportingMonth: GasMonth;\r\n billingGasMonth: GasMonth;\r\n customerEnterpriseId?: number;\r\n\r\n // Shipper And Operator\r\n locationId?: number;\r\n isVarianceOnly: boolean = true;\r\n runReportAsType: string = RunReportAsType.NOM_GROUP_OWNER.id;\r\n nominationGroupId?: number;\r\n\r\n // Shipper And Pipeline\r\n accountType: string;\r\n\r\n // Operator\r\n allocationMethod: string;\r\n\r\n // Last Search Params\r\n enterprises: Enterprise[];\r\n accountTypes: GasAccountType[];\r\n nominationGroups: NominationGroupDto[];\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Account Summary By: {{model.lastSearchParams?.reportType}}\r\n Reporting Month: {{model.lastSearchParams?.reportingMonth | gasMonthFormat}}\r\n
\r\n Billing Month: {{model.lastSearchParams?.billingGasMonth}}\r\n \r\n Customer:\r\n Owner:\r\n {{model.lastSearchParams?.customerEnterpriseId | displayName: 'id' : 'displayValue' : model.lastSearchParams.enterprises}}\r\n \r\n Account Type: {{model.lastSearchParams?.accountType | displayName: 'id' : 'displayName' : model.lastSearchParams.accountTypes}}\r\n Allocation Method: {{model.lastSearchParams?.allocationMethod | displayName: 'value' : 'value' : model.allocationMethods}}\r\n \r\n
\r\n Location: {{model.lastSearchParams?.locationId | displayName: 'id' : 'name' : model.locations}}\r\n Variance Only: {{model.lastSearchParams?.isVarianceOnly | booleanAsYesNo}}\r\n Run Report As: {{model.lastSearchParams?.runReportAsType | displayName: 'id' : 'value' : model.runReportAsTypes}}\r\n Nomination Group: {{model.lastSearchParams?.nominationGroupId | displayName: 'id' : 'mnemonic' : model.lastSearchParams.nominationGroups}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.searchParams?.customerEnterpriseId | displayName: 'id' : 'displayValue' : model.enterprises}}\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.searchParams.billingGasMonth}}\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.reportType}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.status}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.reportingMonth | gasMonthFormat}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.customerEnterpriseId | displayName: 'id' : 'displayValue' : model.lastSearchParams.enterprises}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.billingGasMonth}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.isVarianceOnly | booleanAsYesNo}}\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.accountType | displayName: 'id' : 'displayName' : model.lastSearchParams.accountTypes}}\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.accountType | displayName: 'id' : 'displayName' : model.lastSearchParams.accountTypes}}\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.allocationMethod | displayName: 'value' : 'value' : model.allocationMethods}}\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.locationId | displayName: 'id' : 'name' : model.locations}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.runReportAsType | displayName: 'id' : 'value' : model.runReportAsTypes}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.nominationGroupId | displayName: 'id' : 'mnemonic' : model.lastSearchParams.nominationGroups}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n Number of results found: {{model.searchResults.length}}\r\n AS OF {{model.searchResultsAsOf.toDate() | dateFormat:'YYYY-MMM-DD H:mm:ss A'}}\r\n\r\n 0\">\r\n
\r\n     \r\n Export Month End Details CSV\r\n
\r\n
\r\n \r\n \r\n
\r\n
Export Transaction Type:
\r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n
\r\n TOTAL {{row.value}}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n
\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n
\r\n {{ getGasMonth(row) }}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n\r\n \r\n\r\n \r\n
\r\n Transaction
Type\r\n
\r\n \r\n
\r\n Transfer
Nom Group\r\n
\r\n \r\n \r\n
\r\n Transfer
Location\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
{{ row.value ? row.value : ' ' }}
\r\n
\r\n
\r\n
{{ row.value || row.value === 0 ? row.value?.toLocaleString() : ' ' }}
\r\n
\r\n \r\n
\r\n \r\n\r\n \r\n \r\n \r\n
\r\n TOTAL {{ data.value }}\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n Number of results found: {{model.searchResults[0].locationSummaries.length}}\r\n AS OF {{model.searchResultsAsOf.toDate() | dateFormat:'YYYY-MMM-DD H:mm:ss A'}}\r\n\r\n 0 && model.searchResults[0].locationSummaries.length > 0\">\r\n
\r\n     \r\n Export Month End Details CSV\r\n
\r\n
\r\n \r\n \r\n
\r\n
Export Transaction Type:
\r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n
\r\n {{ getGasMonth(row) }}\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n
{{ row.data['useLocation'] ? row.data['locationName'] : row.value ? row.value : ' ' }}
\r\n
\r\n\r\n \r\n \r\n
\r\n
{{ row.value ? row.value : ' ' }}
\r\n
\r\n
\r\n
{{ row.value ? row.value?.toLocaleString() : ' ' }}
\r\n
\r\n\r\n \r\n
\r\n \r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n Number of results found: {{model.searchResults.length}}\r\n AS OF {{model.searchResultsAsOf.toDate() | dateFormat:'YYYY-MMM-DD H:mm:ss A'}}\r\n\r\n 0\">\r\n\r\n
\r\n     \r\n Export Month End Details CSV\r\n
\r\n
\r\n \r\n \r\n
\r\n
Export Transaction Type:
\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n\r\n \r\n\r\n \r\n \r\n
\r\n
{{row.value?row.value:row.data.fromAccountType }}
\r\n
\r\n \r\n
\r\n
{{row.value?row.value:row.data.toAccountType }}
\r\n
\r\n \r\n \r\n \r\n\r\n \r\n
\r\n \r\n\r\n
\r\n
\r\n\r\n
\r\n\r\n\r\n
\r\n","import * as _ from \"lodash\";\r\nimport {Component} from \"@angular/core\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {forkJoin, Observable, of} from \"rxjs\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {AccountSummaryReportType} from \"@model/account-summary-report-type\";\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {concatMap, tap} from \"rxjs/operators\";\r\nimport {LocationService} from \"@shared/services/common-data/location/location.service\";\r\nimport {AccountsCustomerSearchParams, AccountsEnterpriseService} from \"@shared/services/accounts/accounts-enterprise/accounts-enterprise.service\";\r\nimport {BusinessRight} from \"@model/business-right\";\r\nimport {Enterprise, EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {FlowingGasEnterpriseService} from \"@shared/services/flowing-gas/flowing-gas-enterprise-service/flowing-gas-enterprise-service\";\r\nimport {NominationGroupService, QuerySimpleNomGroupsSearchParams} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport {RunReportAsType} from \"@model/run-report-as-type\";\r\nimport {GasAccountType} from \"@model/gas-account-type\";\r\nimport {AllocationMethod} from \"@model/allocation-method\";\r\nimport {\r\n AccountSummary,\r\n AccountSummaryMonthEndSearchParams,\r\n AccountSummaryReportLevelType,\r\n DailyDetailTransaction,\r\n FlowingGasAccountSummaryService,\r\n} from \"@shared/services/flowing-gas/flowing-gas-account-summary-service/flowing-gas-account-summary.service\";\r\nimport {CommonDataGasdayService} from \"@shared/services/common-data/common-data-gasday/common-data-gasday.service\";\r\nimport {LocationEnrichmentService} from \"@shared/services/enrichment/location-enrichment.service\";\r\nimport {NomGroupEnrichmentService} from \"@shared/services/enrichment/nomgroup-enrichment.service\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {UserService} from \"@shared/services/webapp/user/user-service\";\r\nimport {DataGridHooks} from \"@shared/devexpress/datagrid-hooks\";\r\nimport {AccountSummaryByLocationMonthlyReportModel, AccountSummaryByLocationMonthlyReportSearchParams} from \"app/gcts/flowinggas/account-summary-by-location-monthly-report/account-summary-by-location-monthly-report.model\";\r\nimport {BillingProcess, FlowingGasAllocationAndBalancingBillingProcessService} from \"@shared/services/flowing-gas/flowing-gas-allocation-and-balancing-billing-process/flowing-gas-allocation-and-balancing-billing-process.service\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {PipelineSettingMapService} from \"@shared/services/nomination/pipeline-settings-map/pipeline-setting-map.service\";\r\n\r\n@Component({\r\n selector: 'app-account-summary-by-location-monthly-report',\r\n templateUrl: './account-summary-by-location-monthly-report.component.html',\r\n styleUrls: ['./account-summary-by-location-monthly-report.component.css']\r\n})\r\nexport class AccountSummaryByLocationMonthlyReportComponent extends BaseSearchComponent {\r\n private static PARAM_REPORT_TYPE: string = 'reportType';\r\n private static PARAM_REPORTING_MONTH: string = 'reportingMonth';\r\n private static PARAM_BILLING_MONTH: string = 'billingMonth';\r\n private static PARAM_ENTERPRISE_ID: string = 'enterpriseId';\r\n private static PARAM_LOCATION_ID: string = 'locationId';\r\n private static PARAM_IS_VARIANCE_ONLY: string = 'isVarianceOnly';\r\n private static PARAM_RUN_REPORT_AS: string = 'runReportAs';\r\n private static PARAM_NOM_GROUP_ID: string = 'nomGroupId';\r\n private static PARAM_ACCOUNT_TYPE: string = 'accountType';\r\n private static PARAM_ALLOCATION_METHOD: string = 'allocationMethod';\r\n\r\n public referenceAccountSummaryReportType = AccountSummaryReportType;\r\n\r\n public model: AccountSummaryByLocationMonthlyReportModel = new AccountSummaryByLocationMonthlyReportModel();\r\n\r\n constructor(appService: AppService,\r\n activatedRoute: ActivatedRoute,\r\n router: Router,\r\n alertService: AlertService,\r\n private userService: UserService,\r\n private commonDataGasDayService: CommonDataGasdayService,\r\n private commonDataBillingMonthService: CommonDataBillingMonthService,\r\n private commonDataLocationService: LocationService,\r\n private commonDataEnterpriseService: EnterpriseService,\r\n private accountsEnterpriseService: AccountsEnterpriseService,\r\n private flowingGasEnterpriseService: FlowingGasEnterpriseService,\r\n private accountsNominationGroupService: NominationGroupService,\r\n private enterpriseEnrichmentService: EnterpriseEnrichmentService,\r\n private locationEnrichmentService: LocationEnrichmentService,\r\n private nominationGroupEnrichmentService: NomGroupEnrichmentService,\r\n private flowingGasAccountSummaryService: FlowingGasAccountSummaryService,\r\n private flowingGasAllocationAndBalancingBillingProcessService: FlowingGasAllocationAndBalancingBillingProcessService,\r\n private fileService: FileService,\r\n private sessionService: SessionService) {\r\n super('Account Summary by Location - Month End', appService, activatedRoute, router, alertService);\r\n\r\n enterpriseEnrichmentService.setEnrichmentResource(commonDataEnterpriseService);\r\n locationEnrichmentService.setEnrichmentResource(commonDataLocationService);\r\n nominationGroupEnrichmentService.setEnrichmentResource(accountsNominationGroupService);\r\n\r\n this.appService.hideMenu();\r\n }\r\n\r\n /**\r\n * Public Methods\r\n */\r\n\r\n public onReportTypeChanged(): void {\r\n this.alertService.clearMessages();\r\n\r\n // Clear Selected Fields\r\n this.model.searchParams.customerEnterpriseId = null;\r\n this.model.searchParams.accountType = null;\r\n this.model.searchParams.allocationMethod = null;\r\n this.model.searchParams.nominationGroupId = null;\r\n\r\n this.adjustFormIfUserIsAnExternalUser();\r\n\r\n this.changeAvailableOptionsBasedOnSelectedReportType();\r\n }\r\n public getGasMonth(e: any): string {\r\n return e.component.element().attributes[\"data-master\"].value;\r\n }\r\n\r\n public onReportingMonthChanged(): void {\r\n if(!this.model.searchParams.reportingMonth) return;\r\n\r\n if(this.model.searchParams.reportingMonth.isEqual(this.model.openBillingMonth.gasMonth) || this.model.searchParams.reportingMonth.isEqual(this.model.maxReportingGasMonth)) {\r\n this.model.searchParams.billingGasMonth = this.model.searchParams.reportingMonth;\r\n this.setMinMaxBillingMonth();\r\n return;\r\n }\r\n\r\n if(this.model.searchParams.billingGasMonth.isEqual(this.model.maxBillingGasMonth)) {\r\n this.model.searchParams.billingGasMonth = this.model.openBillingMonth.gasMonth;\r\n this.setMinMaxBillingMonth();\r\n return;\r\n }\r\n\r\n if(this.model.searchParams.billingGasMonth.isLessThan(this.model.searchParams.reportingMonth)) {\r\n this.model.searchParams.billingGasMonth = this.model.searchParams.reportingMonth;\r\n }\r\n\r\n this.setMinMaxBillingMonth();\r\n }\r\n\r\n public setMinMaxBillingMonth(): void {\r\n this.model.minBillingGasMonth = this.model.searchParams.reportingMonth;\r\n this.model.maxBillingGasMonth = this.model.searchParams.reportingMonth.isEqual(this.model.maxReportingGasMonth) ? this.model.maxReportingGasMonth : this.model.openBillingMonth.gasMonth;\r\n }\r\n\r\n public onCustomerEnterpriseIdChanged(): void {\r\n this.alertService.clearMessages();\r\n\r\n this.model.searchParams.nominationGroupId = null;\r\n\r\n this.queryNominationGroups().subscribe(() => {});\r\n }\r\n\r\n public onAccountTypeChanged(): void {\r\n if(this.model.searchParams.reportType === AccountSummaryReportType.SHIPPER.value) {\r\n this.queryNominationGroups().subscribe(() => {});\r\n }\r\n }\r\n\r\n public onRunReportAsTypeChanged(): void {\r\n this.queryNominationGroups().subscribe(() => {});\r\n }\r\n\r\n public shipperSearchResultsDataGridOnRowPrepared(row) {\r\n if(row.rowType === 'data') {\r\n row.rowElement.classList.add('opening-balance-summary');\r\n }\r\n }\r\n\r\n public shipperLocationSearchResultsDataGridOnCellPrepared($event): void {\r\n DataGridHooks.hideExpandIcon($event, rowData => !rowData.dailySummaries || rowData.dailySummaries[0].transactions.length === 0);\r\n }\r\n\r\n public operatorLocationSearchResultsDataGridOnCellPrepared($event): void {\r\n DataGridHooks.hideExpandIcon($event, rowData => !rowData['summaries'][0]['dailySummaries'] || rowData['summaries'][0]['dailySummaries'][0].transactions.length === 0);\r\n }\r\n\r\n public pipelineSearchResultsDataGridOnCellPrepared($event): void {\r\n DataGridHooks.hideExpandIcon($event, rowData => !rowData.dailyDetails || rowData.dailyDetails[0].transactions.length === 0);\r\n }\r\n\r\n public transactionTypeSortValue(data: any): string {\r\n // Transport and Nominated Fuel should be grouped together (will be done using their Nom Group Mnemonic)\r\n if(data.transactionType === 'Transport') return `${data.transactionType}_${data.nominationGroupMnemonic}`;\r\n if(data.transactionType === 'Nominated Fuel') return `Transport_${data.nominationGroupMnemonic}`;\r\n return data.transactionType;\r\n }\r\n\r\n public inSortValue(data: any): number {\r\n return _.isNil(data.in) ? 10 : 1; // Rows with in values will display first\r\n }\r\n\r\n public exportDetailsCsv(): void {\r\n const filename = this.getCsvFileName(AccountSummaryReportLevelType.summary);\r\n\r\n if(this.model.lastSearchParams.reportType === AccountSummaryReportType.SHIPPER.value) {\r\n const exportArray = [];\r\n _.forEach(this.model.searchResults, accountSummary => {\r\n _.forEach(accountSummary.locationSummaries, locationSummary => {\r\n _.forEach(locationSummary.summaries, summary => {\r\n _.forEach(summary.dailySummaries, daily => {\r\n _.forEach(daily.transactions, transaction => {\r\n if(this.model.exportTransactionType.length === 0 || _.includes(this.model.exportTransactionType, transaction.transactionType)) {\r\n const row = {\r\n customerShortName: accountSummary['customerShortName'],\r\n customerMnemonic: accountSummary['customerMnemonic'],\r\n locationName: locationSummary['locationName'],\r\n accountType: summary.accountType,\r\n nominationGroupMnemonic: summary['nominationGroupMnemonic'],\r\n gasMonth: accountSummary.gasMonth,\r\n transactionType: transaction.transactionType,\r\n transferNomGroup: transaction.useNomGroup ? transaction['nominationGroupMnemonic'] : transaction.accountType,\r\n transferNomGroupOwner: transaction['nominationGroupOwnerShortName'],\r\n transferLocation: transaction.locationName,\r\n tos: transaction.tos,\r\n taxZeroRated: transaction.taxZeroRated,\r\n bidPrice: transaction.bidPrice,\r\n in: transaction.in,\r\n out: transaction.out\r\n };\r\n\r\n exportArray.push(row);\r\n }\r\n });\r\n });\r\n });\r\n });\r\n });\r\n\r\n const headers = ['Customer Name', 'Customer Mnemonic', 'Location', 'Account Type', 'Nom Group', 'Gas Month', 'Transaction Type', 'Transfer Nom Group', 'Transfer Nom Group Owner', 'Transfer Location', 'TOS', 'Tax Zero Rated', 'Bid Price', 'In(GJ)', 'Out (GJ)'];\r\n const columns = ['customerShortName', 'customerMnemonic', 'locationName', 'accountType', 'nominationGroupMnemonic', 'gasMonth', 'transactionType', 'transferNomGroup', 'transferNomGroupOwner', 'transferLocation', 'tos', 'taxZeroRated', 'bidPrice', 'in', 'out'];\r\n\r\n this.fileService.downloadCsvFile(filename, exportArray, headers, columns);\r\n }\r\n\r\n if(this.model.lastSearchParams.reportType === AccountSummaryReportType.OPERATOR.value) {\r\n const exportArray = [];\r\n _.forEach(this.model.searchResults, accountSummary => {\r\n _.forEach(accountSummary.locationSummaries, locationSummary => {\r\n _.forEach(locationSummary.summaries, summary => {\r\n _.forEach(summary.dailySummaries, daily => {\r\n _.forEach(daily.transactions, transaction => {\r\n if(this.model.exportTransactionType.length === 0 || _.includes(this.model.exportTransactionType, transaction.transactionType)) {\r\n let transferNomGroup = '';\r\n if(transaction.useNomGroup) {\r\n if (transaction['nominationGroupOwnerShortName'] != null && !transaction.useLocation) {\r\n transferNomGroup = transaction['nominationGroupOwnerDisplayName'];\r\n }\r\n else if (transaction.useLocation) {\r\n transferNomGroup = transaction.locationName;\r\n }\r\n }\r\n\r\n const row = {\r\n locationName: locationSummary['locationName'],\r\n nomGroupOwner: transaction['nominationGroupOwnerShortName'],\r\n nomGroupOwnerMnemonic: transaction['nominationGroupOwnerMnemonic'],\r\n gasMonth: accountSummary.gasMonth,\r\n transactionType: transaction.transactionType,\r\n transferNomGroup: transaction.useNomGroup ? transaction['nominationGroupMnemonic'] : transaction.accountType,\r\n transferNomGroupOwner: transferNomGroup,\r\n in: transaction.in,\r\n out: transaction.out\r\n };\r\n\r\n exportArray.push(row);\r\n }\r\n });\r\n });\r\n });\r\n });\r\n });\r\n\r\n const headers = ['Location Name', 'Nomination Group Owner', 'Nomination Group Owner Mnemonic', 'Gas Month', 'Transaction Type', 'Transfer Nom Group', 'Transfer Nom Group Owner', 'In(GJ)', 'Out (GJ)'];\r\n const columns = ['locationName', 'nomGroupOwner', 'nomGroupOwnerMnemonic', 'gasMonth', 'transactionType', 'transferNomGroup', 'transferNomGroupOwner', 'in', 'out'];\r\n\r\n this.fileService.downloadCsvFile(filename, exportArray, headers, columns);\r\n }\r\n\r\n\r\n if(this.model.lastSearchParams.reportType === AccountSummaryReportType.PIPELINE.value) {\r\n const exportArray = [];\r\n _.forEach(this.model.searchResults, summary => {\r\n _.forEach(summary.dailyDetails, dailyDetail => {\r\n _.forEach(dailyDetail.transactions, transaction => {\r\n if(this.model.exportTransactionType.length === 0 || _.includes(this.model.exportTransactionType, transaction.transactionType)) {\r\n const row = {\r\n accountType: summary.accountType,\r\n ownerEnterpriseMnemonic: summary['ownerEnterpriseMnemonic'],\r\n gasMonth: summary.gasMonth,\r\n transactionType: transaction.transactionType,\r\n from: transaction.useNomGroup ? transaction['fromNominationGroupMnemonic'] : transaction.fromAccountType,\r\n to: transaction.useNomGroup ? transaction['toNominationGroupMnemonic'] : transaction.toAccountType,\r\n location: transaction['locationName'],\r\n in: transaction.in,\r\n out: transaction.out\r\n };\r\n\r\n exportArray.push(row);\r\n }\r\n });\r\n });\r\n });\r\n\r\n const headers = ['Account Type', 'Owner Mnemonic', 'Gas Month', 'Transaction Type', 'From', 'To', 'Location', 'In(GJ)', 'Out (GJ)'];\r\n const columns = ['accountType', 'ownerEnterpriseMnemonic', 'gasMonth', 'transactionType', 'from', 'to', 'location', 'in', 'out'];\r\n\r\n this.fileService.downloadCsvFile(filename, exportArray, headers, columns);\r\n }\r\n }\r\n\r\n /**\r\n * Protected Methods\r\n */\r\n\r\n protected loadInitialResources(): Observable {\r\n this.model.isExternalUser = this.userService.user.isExternalUser;\r\n this.model.reportTypes = this.GetAvailableReportTypes();\r\n\r\n const getOldestBillingMonth$ = this.commonDataBillingMonthService.getOldest()\r\n .pipe(\r\n tap(oldestBillingMonth => this.model.oldestBillingMonth = oldestBillingMonth)\r\n );\r\n\r\n const getOpenBillingMonth$ = this.commonDataBillingMonthService.getOpen()\r\n .pipe(\r\n tap(openBillingMonth => this.model.openBillingMonth = openBillingMonth)\r\n );\r\n\r\n const getPreliminaryBillingMonth$ = this.commonDataBillingMonthService.getPreliminary()\r\n .pipe(\r\n tap(preliminaryBillingMonth => this.model.preliminaryBillingMonth = preliminaryBillingMonth)\r\n );\r\n\r\n const queryShipperEnterprises$ = this.queryShipperEnterprises();\r\n\r\n const queryOperatorEnterprises$ = this.queryOperatorEnterprises();\r\n\r\n const queryPipelineEnterprises$ = this.flowingGasEnterpriseService.queryPipelineOwners()\r\n .pipe(\r\n concatMap(enterpriseIds => this.createAndEnrichEnterpriseIds(enterpriseIds)),\r\n tap(enterprises => this.model.pipelineEnterprises = this.orderEnterpriseByDisplayValue(enterprises))\r\n );\r\n\r\n const queryLocations$ = this.commonDataLocationService.queryAccountLocations()\r\n .pipe(\r\n tap(locations => this.model.locations = locations)\r\n );\r\n\r\n return forkJoin([\r\n getOldestBillingMonth$,\r\n getOpenBillingMonth$,\r\n getPreliminaryBillingMonth$,\r\n queryShipperEnterprises$,\r\n queryOperatorEnterprises$,\r\n queryPipelineEnterprises$,\r\n queryLocations$\r\n ])\r\n .pipe(\r\n tap(() => {\r\n this.model.minReportingGasMonth = this.model.oldestBillingMonth.gasMonth;\r\n this.model.maxReportingGasMonth = this.model.preliminaryBillingMonth\r\n ? this.model.preliminaryBillingMonth.gasMonth\r\n : this.model.openBillingMonth.gasMonth;\r\n\r\n this.model.minBillingGasMonth = this.model.openBillingMonth.gasMonth;\r\n this.model.maxBillingGasMonth = this.model.openBillingMonth.gasMonth;\r\n })\r\n );\r\n }\r\n\r\n public isSearchDisabled():boolean{\r\n // MR additional criteria for search button being disabled\r\n if(_.isNil(this.model.searchParams.reportingMonth)) {\r\n return true;\r\n }\r\n if(_.isNil(this.model.searchParams.billingGasMonth)){\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n const paramValidator = ParamValidator.Standard();\r\n paramValidator.isOneOf(AccountSummaryByLocationMonthlyReportComponent.PARAM_REPORT_TYPE, _.map(AccountSummaryReportType.ALL, x => x.value));\r\n paramValidator.isGasMonth(AccountSummaryByLocationMonthlyReportComponent.PARAM_REPORTING_MONTH);\r\n paramValidator.isGasMonth(AccountSummaryByLocationMonthlyReportComponent.PARAM_BILLING_MONTH);\r\n paramValidator.isNumber(AccountSummaryByLocationMonthlyReportComponent.PARAM_ENTERPRISE_ID, true);\r\n\r\n if(params[AccountSummaryByLocationMonthlyReportComponent.PARAM_REPORT_TYPE] === AccountSummaryReportType.SHIPPER.value ||\r\n params[AccountSummaryByLocationMonthlyReportComponent.PARAM_REPORT_TYPE] === AccountSummaryReportType.OPERATOR.value) {\r\n paramValidator.isNumber(AccountSummaryByLocationMonthlyReportComponent.PARAM_LOCATION_ID, true);\r\n paramValidator.isBoolean(AccountSummaryByLocationMonthlyReportComponent.PARAM_IS_VARIANCE_ONLY);\r\n paramValidator.isOneOf(AccountSummaryByLocationMonthlyReportComponent.PARAM_RUN_REPORT_AS, _.map(RunReportAsType.ALL, x => x.id));\r\n paramValidator.isNumber(AccountSummaryByLocationMonthlyReportComponent.PARAM_NOM_GROUP_ID, true);\r\n }\r\n\r\n if(params[AccountSummaryByLocationMonthlyReportComponent.PARAM_REPORT_TYPE] === AccountSummaryReportType.SHIPPER.value) {\r\n paramValidator.isOneOf(AccountSummaryByLocationMonthlyReportComponent.PARAM_ACCOUNT_TYPE, _.map(GasAccountType.SHIPPER_GAS_ACCOUNT_TYPES, x => x.id), true);\r\n }\r\n\r\n if(params[AccountSummaryByLocationMonthlyReportComponent.PARAM_REPORT_TYPE] === AccountSummaryReportType.OPERATOR.value) {\r\n paramValidator.isOneOf(AccountSummaryByLocationMonthlyReportComponent.PARAM_ALLOCATION_METHOD, _.map(AllocationMethod.ALL, x => x.value), true);\r\n }\r\n\r\n if(params[AccountSummaryByLocationMonthlyReportComponent.PARAM_REPORT_TYPE] === AccountSummaryReportType.PIPELINE.value) {\r\n paramValidator.isOneOf(AccountSummaryByLocationMonthlyReportComponent.PARAM_ACCOUNT_TYPE, _.map(GasAccountType.PIPELINE_GAS_ACCOUNT_TYPES, x => x.id), true);\r\n }\r\n\r\n return paramValidator.isValid(params);\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams = new AccountSummaryByLocationMonthlyReportSearchParams();\r\n this.model.searchParams.reportingMonth = this.model.openBillingMonth.gasMonth;\r\n this.model.searchParams.billingGasMonth = this.model.openBillingMonth.gasMonth;\r\n\r\n if(this.model.isExternalUser) {\r\n this.model.searchParams.isVarianceOnly = false;\r\n }\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams.reportType = typedParams.asString(AccountSummaryByLocationMonthlyReportComponent.PARAM_REPORT_TYPE);\r\n this.model.searchParams.reportingMonth = typedParams.asGasMonth(AccountSummaryByLocationMonthlyReportComponent.PARAM_REPORTING_MONTH);\r\n this.model.searchParams.billingGasMonth = typedParams.asGasMonth(AccountSummaryByLocationMonthlyReportComponent.PARAM_BILLING_MONTH);\r\n this.model.searchParams.customerEnterpriseId = typedParams.asNullableNumber(AccountSummaryByLocationMonthlyReportComponent.PARAM_ENTERPRISE_ID);\r\n\r\n if(this.model.searchParams.reportType === AccountSummaryReportType.SHIPPER.value ||\r\n this.model.searchParams.reportType === AccountSummaryReportType.OPERATOR.value) {\r\n this.model.searchParams.locationId = typedParams.asNullableNumber(AccountSummaryByLocationMonthlyReportComponent.PARAM_LOCATION_ID);\r\n this.model.searchParams.isVarianceOnly = typedParams.asBoolean(AccountSummaryByLocationMonthlyReportComponent.PARAM_IS_VARIANCE_ONLY);\r\n this.model.searchParams.runReportAsType = typedParams.asString(AccountSummaryByLocationMonthlyReportComponent.PARAM_RUN_REPORT_AS);\r\n this.model.searchParams.nominationGroupId = typedParams.asNullableNumber(AccountSummaryByLocationMonthlyReportComponent.PARAM_NOM_GROUP_ID);\r\n }\r\n\r\n if(this.model.searchParams.reportType === AccountSummaryReportType.SHIPPER.value ||\r\n this.model.searchParams.reportType === AccountSummaryReportType.PIPELINE.value) {\r\n this.model.searchParams.accountType = typedParams.asNullableString(AccountSummaryByLocationMonthlyReportComponent.PARAM_ACCOUNT_TYPE);\r\n }\r\n\r\n if(this.model.searchParams.reportType === AccountSummaryReportType.OPERATOR.value) {\r\n this.model.searchParams.allocationMethod = typedParams.asNullableString(AccountSummaryByLocationMonthlyReportComponent.PARAM_ALLOCATION_METHOD);\r\n }\r\n\r\n // Manually Trigger Changed Events\r\n this.changeAvailableOptionsBasedOnSelectedReportType();\r\n this.queryNominationGroups().subscribe(() => {\r\n if(this.model.lastSearchParams) {\r\n this.model.lastSearchParams.nominationGroups = this.model.nominationGroups; // Need to store nomination groups in last search params\r\n }\r\n });\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {};\r\n params[AccountSummaryByLocationMonthlyReportComponent.PARAM_REPORT_TYPE] = this.model.searchParams.reportType;\r\n params[AccountSummaryByLocationMonthlyReportComponent.PARAM_REPORTING_MONTH] = this.model.searchParams.reportingMonth;\r\n params[AccountSummaryByLocationMonthlyReportComponent.PARAM_BILLING_MONTH] = this.model.searchParams.billingGasMonth;\r\n params[AccountSummaryByLocationMonthlyReportComponent.PARAM_ENTERPRISE_ID] = this.model.searchParams.customerEnterpriseId;\r\n\r\n if(this.model.searchParams.reportType === AccountSummaryReportType.SHIPPER.value ||\r\n this.model.searchParams.reportType === AccountSummaryReportType.OPERATOR.value) {\r\n params[AccountSummaryByLocationMonthlyReportComponent.PARAM_LOCATION_ID] = this.model.searchParams.locationId;\r\n params[AccountSummaryByLocationMonthlyReportComponent.PARAM_IS_VARIANCE_ONLY] = this.model.searchParams.isVarianceOnly;\r\n params[AccountSummaryByLocationMonthlyReportComponent.PARAM_RUN_REPORT_AS] = this.model.searchParams.runReportAsType;\r\n params[AccountSummaryByLocationMonthlyReportComponent.PARAM_NOM_GROUP_ID] = this.model.searchParams.nominationGroupId;\r\n }\r\n\r\n if(this.model.searchParams.reportType === AccountSummaryReportType.SHIPPER.value ||\r\n this.model.searchParams.reportType === AccountSummaryReportType.PIPELINE.value) {\r\n params[AccountSummaryByLocationMonthlyReportComponent.PARAM_ACCOUNT_TYPE] = this.model.searchParams.accountType;\r\n }\r\n\r\n if(this.model.searchParams.reportType === AccountSummaryReportType.OPERATOR.value) {\r\n params[AccountSummaryByLocationMonthlyReportComponent.PARAM_ALLOCATION_METHOD] = this.model.searchParams.allocationMethod;\r\n }\r\n\r\n return params;\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n const queryStatus$ = this.queryStatus();\r\n const queryShipperGasAccountTypes$ = this.queryShipperGasAccountTypes();\r\n\r\n return forkJoin([queryStatus$, queryShipperGasAccountTypes$]);\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.adjustFormIfUserIsAnExternalUser();\r\n\r\n this.model.searchResults = null; // Destroy Grid (to refresh data grid, we do not want to preserve any expanded rows)\r\n this.model.exportTransactionType = [];\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n this.model.lastSearchParams.enterprises = this.model.enterprises;\r\n this.model.lastSearchParams.accountTypes = this.model.accountTypes;\r\n\r\n const queryAccountSummary$ = this.flowingGasAccountSummaryService.queryMonthEnd(this.buildAccountSummaryMonthEndSearchParams())\r\n .pipe(\r\n concatMap(accountSummaries => this.enterpriseEnrichmentService.enrichArray(accountSummaries, 'customerId', 'customer')),\r\n concatMap(accountSummaries => this.enterpriseEnrichmentService.enrichArray(accountSummaries, 'ownerEnterpriseId', 'ownerEnterprise')),\r\n concatMap(accountSummaries => this.enrichShipperData(accountSummaries)),\r\n concatMap(accountSummaries => this.enrichOperatorData(accountSummaries)),\r\n concatMap(accountSummaries => this.enrichPipelineData(accountSummaries)),\r\n tap(accountSummaries => this.model.searchResults = accountSummaries)\r\n );\r\n\r\n const queryDateTime$ = this.commonDataGasDayService.getServerTimeData()\r\n .pipe(\r\n tap(serverTimeData => this.model.searchResultsAsOf = serverTimeData.serverTime)\r\n );\r\n\r\n return forkJoin([queryAccountSummary$, queryDateTime$]);\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n protected resetCompleted(): void {\r\n this.model.searchResults = null; // Clear Search Results\r\n }\r\n\r\n /**\r\n * Private Methods\r\n */\r\n\r\n private queryNominationGroups(): Observable {\r\n if(_.isNil(this.model.searchParams.customerEnterpriseId)) {\r\n return of({})\r\n .pipe(\r\n tap(() => this.model.nominationGroups = null)\r\n );\r\n }\r\n\r\n const searchParams = new QuerySimpleNomGroupsSearchParams(\r\n this.model.searchParams.billingGasMonth,\r\n this.model.searchParams.customerEnterpriseId,\r\n RunReportAsType.find(this.model.searchParams.runReportAsType),\r\n this.getBusinessRightsForReportType(AccountSummaryReportType.find(this.model.searchParams.reportType))\r\n );\r\n\r\n return this.accountsNominationGroupService.querySimpleNomGroups(searchParams)\r\n .pipe(\r\n tap(nominationGroups => {\r\n // Warning Message if no Nom Groups are returned\r\n if(_.isEmpty(nominationGroups)) {\r\n this.alertService.clearMessages();\r\n const enterprise = _.find(this.model.enterprises, x => x.id === this.model.searchParams.customerEnterpriseId);\r\n this.alertService.addWarnMessage('Warning', `No Nomination Groups were found for '${enterprise.displayName}' as a '${RunReportAsType.find(this.model.searchParams.runReportAsType).value}' for '${this.model.searchParams.billingGasMonth}'`);\r\n }\r\n\r\n // Filter Nom Groups\r\n const filteredNomGroupsByAccountType = _.filter(nominationGroups,\r\n nomGroup => !this.model.searchParams.accountType || nomGroup.nominationGroupType === GasAccountType.find(this.model.searchParams.accountType).getAssociatedBusinessRight().alternateName);\r\n\r\n // Order and Set Nom Groups\r\n this.model.nominationGroups = _.sortBy(filteredNomGroupsByAccountType, x => x.mnemonic);\r\n\r\n // Auto Select Nom Group\r\n if(this.model.nominationGroups.length === 1) {\r\n this.model.searchParams.nominationGroupId = this.model.nominationGroups[0].id;\r\n }\r\n\r\n // Remove Selected Nom Group if it does not exist\r\n if(this.model.searchParams.nominationGroupId && !_.some(this.model.nominationGroups, nomGroup => nomGroup.id === this.model.searchParams.nominationGroupId)) {\r\n this.model.searchParams.nominationGroupId = null;\r\n }\r\n })\r\n );\r\n }\r\n\r\n private changeAvailableOptionsBasedOnSelectedReportType(): void {\r\n if(this.model.searchParams.reportType === AccountSummaryReportType.SHIPPER.value) {\r\n this.model.enterprises = this.model.shipperEnterprises;\r\n this.model.accountTypes = this.model.shipperGasAccountTypes;\r\n } else if(this.model.searchParams.reportType === AccountSummaryReportType.OPERATOR.value) {\r\n this.model.enterprises = this.model.operatorEnterprises;\r\n } else if(this.model.searchParams.reportType === AccountSummaryReportType.PIPELINE.value) {\r\n this.model.enterprises = this.model.pipelineEnterprises;\r\n this.model.accountTypes = this.model.pipelineGasAccountTypes;\r\n }\r\n }\r\n\r\n private getBusinessRightsForReportType(reportType: AccountSummaryReportType): BusinessRight[] {\r\n if(reportType === AccountSummaryReportType.SHIPPER) {\r\n return BusinessRight.SHIPPER_BUSINESS_RIGHTS;\r\n } else if(reportType === AccountSummaryReportType.OPERATOR) {\r\n return BusinessRight.OPERATOR_BUSINESS_RIGHTS;\r\n } else if(reportType === AccountSummaryReportType.PIPELINE) {\r\n return [];\r\n }\r\n }\r\n\r\n private createAndEnrichEnterpriseIds(enterpriseIds: number[]): Observable {\r\n const enterprises = _.map(enterpriseIds, enterpriseId => Enterprise.createWithId(enterpriseId));\r\n return this.enterpriseEnrichmentService.enrichArray(enterprises, 'cid');\r\n }\r\n\r\n private orderEnterpriseByDisplayValue(enterprises: Enterprise[]): Enterprise[] {\r\n return _.sortBy(enterprises, enterprise => enterprise.displayValue);\r\n }\r\n\r\n private buildAccountSummaryMonthEndSearchParams(): AccountSummaryMonthEndSearchParams {\r\n if(this.model.searchParams.reportType === AccountSummaryReportType.SHIPPER.value) {\r\n return AccountSummaryMonthEndSearchParams.byShipper(\r\n this.model.searchParams.reportingMonth,\r\n this.model.searchParams.billingGasMonth,\r\n this.model.searchParams.customerEnterpriseId,\r\n this.model.searchParams.isVarianceOnly,\r\n RunReportAsType.find(this.model.searchParams.runReportAsType),\r\n GasAccountType.find(this.model.searchParams.accountType),\r\n this.model.searchParams.locationId,\r\n this.model.searchParams.nominationGroupId);\r\n }\r\n\r\n if(this.model.searchParams.reportType === AccountSummaryReportType.OPERATOR.value) {\r\n return AccountSummaryMonthEndSearchParams.byOperator(\r\n this.model.searchParams.reportingMonth,\r\n this.model.searchParams.billingGasMonth,\r\n this.model.searchParams.customerEnterpriseId,\r\n this.model.searchParams.isVarianceOnly,\r\n RunReportAsType.find(this.model.searchParams.runReportAsType),\r\n AllocationMethod.find(this.model.searchParams.allocationMethod),\r\n this.model.searchParams.locationId,\r\n this.model.searchParams.nominationGroupId);\r\n }\r\n\r\n if(this.model.searchParams.reportType === AccountSummaryReportType.PIPELINE.value) {\r\n return AccountSummaryMonthEndSearchParams.byPipeline(\r\n this.model.searchParams.reportingMonth,\r\n this.model.searchParams.billingGasMonth,\r\n this.model.searchParams.customerEnterpriseId,\r\n GasAccountType.find(this.model.searchParams.accountType));\r\n }\r\n }\r\n\r\n private enrichShipperData(accountSummaries: AccountSummary[]): Observable {\r\n if(this.model.lastSearchParams.reportType !== AccountSummaryReportType.SHIPPER.value) return of(accountSummaries);\r\n this.model.transactionTypes = [];\r\n const enrichAccountSummaries: Observable[] = [];\r\n enrichAccountSummaries.push(of([]));\r\n\r\n _.forEach(accountSummaries, accountSummary => {\r\n enrichAccountSummaries.push(this.locationEnrichmentService.enrichArray(accountSummary.locationSummaries, 'locationId', 'location'));\r\n\r\n _.forEach(accountSummary.locationSummaries, locationSummary => {\r\n enrichAccountSummaries.push(this.locationEnrichmentService.enrichArray(locationSummary.summaries, 'locationId', 'location'));\r\n enrichAccountSummaries.push(this.nominationGroupEnrichmentService.enrichArray(locationSummary.summaries, 'nominationGroupId', 'nominationGroup'));\r\n\r\n _.forEach(locationSummary.summaries, summary => {\r\n _.forEach(summary.dailySummaries, dailySummary => {\r\n enrichAccountSummaries.push(this.nominationGroupEnrichmentService.enrichArray(dailySummary.transactions, 'nominationGroupId', 'nominationGroup'));\r\n enrichAccountSummaries.push(this.enterpriseEnrichmentService.enrichArray(dailySummary.transactions, 'nominationGroupOwnerId', 'nominationGroupOwner'));\r\n enrichAccountSummaries.push(this.locationEnrichmentService.enrichArray(dailySummary.transactions, 'locationId', 'location'));\r\n _.forEach(dailySummary.transactions, x => this.model.transactionTypes.push(x.transactionType));\r\n });\r\n });\r\n });\r\n });\r\n\r\n return forkJoin(enrichAccountSummaries)\r\n .pipe(\r\n concatMap(() => {\r\n accountSummaries = _.sortBy(accountSummaries, x => x['customerDisplayName']);\r\n\r\n _.forEach(accountSummaries, x => {\r\n x.locationSummaries = _.sortBy(x.locationSummaries, y => y['locationName']);\r\n });\r\n\r\n this.model.transactionTypes = _.uniq(this.model.transactionTypes);\r\n\r\n return of(accountSummaries);\r\n })\r\n );\r\n }\r\n\r\n private enrichOperatorData(accountSummaries: AccountSummary[]): Observable {\r\n if(this.model.lastSearchParams.reportType !== AccountSummaryReportType.OPERATOR.value) return of(accountSummaries);\r\n this.model.transactionTypes = [];\r\n\r\n const enrichAccountSummaries: Observable[] = [];\r\n enrichAccountSummaries.push(of([]));\r\n _.forEach(accountSummaries, accountSummary => {\r\n enrichAccountSummaries.push(this.locationEnrichmentService.enrichArray(accountSummary.locationSummaries, 'locationId', 'location'));\r\n\r\n _.forEach(accountSummary.locationSummaries, locationSummary => {\r\n _.forEach(locationSummary.summaries, summary => {\r\n _.forEach(summary.dailySummaries, dailySummary => {\r\n enrichAccountSummaries.push(this.nominationGroupEnrichmentService.enrichArray(dailySummary.transactions, 'nominationGroupId', 'nominationGroup'));\r\n enrichAccountSummaries.push(this.enterpriseEnrichmentService.enrichArray(dailySummary.transactions, 'nominationGroupOwnerId', 'nominationGroupOwner'));\r\n enrichAccountSummaries.push(this.locationEnrichmentService.enrichArray(dailySummary.transactions, 'locationId', 'location'));\r\n _.forEach(dailySummary.transactions, x => this.model.transactionTypes.push(x.transactionType));\r\n });\r\n });\r\n });\r\n });\r\n\r\n return forkJoin(enrichAccountSummaries)\r\n .pipe(\r\n concatMap(() => {\r\n accountSummaries[0].locationSummaries = _.sortBy(accountSummaries[0].locationSummaries, x => x['locationName']);\r\n this.model.transactionTypes = _.uniq(this.model.transactionTypes);\r\n return of(accountSummaries);\r\n })\r\n );\r\n }\r\n\r\n private enrichPipelineData(accountSummaries: AccountSummary[]): Observable {\r\n if(this.model.lastSearchParams.reportType !== AccountSummaryReportType.PIPELINE.value) return of(accountSummaries);\r\n this.model.transactionTypes = [];\r\n\r\n const enrichDetailTransactions: Observable[] = [];\r\n enrichDetailTransactions.push(of([]));\r\n _.forEach(accountSummaries, x => {\r\n _.forEach(x.dailyDetails, y => {\r\n enrichDetailTransactions.push(this.nominationGroupEnrichmentService.enrichArray(y.transactions, 'fromNominationGroupId', 'fromNominationGroup'));\r\n enrichDetailTransactions.push(this.nominationGroupEnrichmentService.enrichArray(y.transactions, 'toNominationGroupId', 'toNominationGroup'));\r\n enrichDetailTransactions.push(this.locationEnrichmentService.enrichArray(y.transactions, 'locationId', 'location'));\r\n _.forEach(y.transactions, t => this.model.transactionTypes.push(t.transactionType));\r\n });\r\n });\r\n\r\n return forkJoin(enrichDetailTransactions)\r\n .pipe(\r\n concatMap(() => {\r\n this.model.transactionTypes = _.uniq(this.model.transactionTypes);\r\n return of(accountSummaries);\r\n })\r\n );\r\n }\r\n\r\n private adjustFormIfUserIsAnExternalUser(): void {\r\n if(this.model.isExternalUser) {\r\n this.model.searchParams.customerEnterpriseId = this.userService.user.enterpriseId;\r\n\r\n this.queryNominationGroups().subscribe(() => {});\r\n }\r\n }\r\n\r\n private queryStatus(): Observable {\r\n const monthForStatus = this.model.isExternalUser ? this.model.searchParams.reportingMonth : this.model.searchParams.billingGasMonth;\r\n return this.flowingGasAllocationAndBalancingBillingProcessService.get(monthForStatus)\r\n .pipe(\r\n tap(billingProcess => {\r\n this.model.status = billingProcess[0].status === 'Final' ? 'Final' : 'Preliminary';\r\n })\r\n );\r\n }\r\n\r\n private queryShipperGasAccountTypes(): Observable {\r\n const startGasDay = this.model.searchParams.billingGasMonth ?\r\n this.model.searchParams.billingGasMonth.start() :\r\n this.model.minBillingGasMonth.start();\r\n\r\n const endGasDay = this.model.searchParams.billingGasMonth ?\r\n this.model.searchParams.billingGasMonth.end() :\r\n this.model.maxBillingGasMonth.end();\r\n\r\n return this.flowingGasAccountSummaryService.queryShipperGasAccountTypes(startGasDay, endGasDay)\r\n .pipe(\r\n tap(accountTypes => {\r\n this.model.shipperGasAccountTypes = accountTypes;\r\n if (this.model.searchParams.reportType === AccountSummaryReportType.SHIPPER.value) {\r\n this.model.accountTypes = this.model.shipperGasAccountTypes;\r\n }\r\n })\r\n );\r\n }\r\n\r\n private queryShipperEnterprises(): Observable {\r\n const queryCustomer$ = !this.model.isExternalUser\r\n ? this.accountsEnterpriseService.queryCustomers(AccountsCustomerSearchParams.withNomGroupBusinessRights(BusinessRight.SHIPPER_BUSINESS_RIGHTS))\r\n : of([this.userService.user.enterpriseId]);\r\n\r\n return queryCustomer$\r\n .pipe(\r\n concatMap(enterpriseIds => this.createAndEnrichEnterpriseIds(enterpriseIds)),\r\n tap(enterprises => this.model.shipperEnterprises = this.orderEnterpriseByDisplayValue(enterprises))\r\n );\r\n }\r\n\r\n private queryOperatorEnterprises(): Observable {\r\n const queryCustomer$ = !this.model.isExternalUser\r\n ? this.accountsEnterpriseService.queryCustomers(AccountsCustomerSearchParams.withNomGroupBusinessRights(BusinessRight.OPERATOR_BUSINESS_RIGHTS))\r\n : of([this.userService.user.enterpriseId]);\r\n\r\n return queryCustomer$\r\n .pipe(\r\n concatMap(enterpriseIds => this.createAndEnrichEnterpriseIds(enterpriseIds)),\r\n tap(enterprises => this.model.operatorEnterprises = this.orderEnterpriseByDisplayValue(enterprises))\r\n );\r\n }\r\n\r\n private getCsvFileName(reportLevelType: AccountSummaryReportLevelType): string {\r\n const customerName = this.model.lastSearchParams.customerEnterpriseId\r\n ? _.find(this.model.lastSearchParams.enterprises, enterprise => enterprise.id === this.model.lastSearchParams.customerEnterpriseId).displayName\r\n : \"All_Customers\";\r\n const accountType = this.model.lastSearchParams.accountType\r\n ? GasAccountType.find(this.model.lastSearchParams.accountType).description\r\n : \"All\";\r\n\r\n if(this.model.lastSearchParams.reportType !== AccountSummaryReportType.PIPELINE.value) {\r\n const locationName = this.model.lastSearchParams.locationId\r\n ? _.find(this.model.locations, location => location.id === this.model.lastSearchParams.locationId).name\r\n : \"All_Locations\";\r\n\r\n return `${AccountSummaryReportType.find(this.model.lastSearchParams.reportType).value}_${reportLevelType}_by_location_${customerName}_${locationName}_${accountType}_${this.model.lastSearchParams.reportingMonth}_for_${this.model.lastSearchParams.billingGasMonth}.csv`;\r\n } else {\r\n return `${AccountSummaryReportType.find(this.model.lastSearchParams.reportType).value}_${reportLevelType}_by_location_${customerName}_${accountType}_${this.model.lastSearchParams.reportingMonth}_for_${this.model.lastSearchParams.billingGasMonth}.csv`;\r\n }\r\n }\r\n\r\n public onOpened(onOpenedEvent: any) {\r\n DataGridHooks.onOpenedSetDropDownWidth(onOpenedEvent, 300);\r\n }\r\n\r\n private GetAvailableReportTypes(): AccountSummaryReportType[] {\r\n\r\n const reportTypes = this.userService.user.isExternalUser\r\n ? AccountSummaryReportType.ALL_FOR_EXTERNAL_USER\r\n : AccountSummaryReportType.ALL;\r\n\r\n if (this.sessionService.getPipeline().code === PipelineSettingMapService.CGL_CODE){\r\n reportTypes.forEach((type,index)=>{\r\n if(type === AccountSummaryReportType.SHIPPER) reportTypes.splice(index,1);\r\n });\r\n }\r\n\r\n return reportTypes;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {FlowinggasResourceService} from \"@shared/resources/flowinggas-resource.service\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {Observable} from \"rxjs\";\r\nimport * as _ from \"lodash\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {map} from \"rxjs/operators\";\r\nimport {StageMeasurementUploadParameters} from \"@model/service-models/stage-measurement-upload-parameters\";\r\nimport {BaseUploadResponse} from \"@model/base-upload-response\";\r\nimport {MeasurementRow} from \"@model/view-helpers/measurement-row\";\r\n\r\ninterface IMeasurementResponse {\r\n gasMonth: string;\r\n receiptMeasurement?: number;\r\n receiptDelta?: number;\r\n deliveryMeasurement?: number;\r\n deliveryDelta?: number;\r\n netMeasurement?: number;\r\n locationMeasurementSummaries: ILocationMeasurementSummaryResponse[];\r\n}\r\n\r\ninterface ILocationMeasurementSummaryResponse {\r\n locationName: string;\r\n locationId: number;\r\n affectedGasMonth: string;\r\n receiptMeasurement?: number;\r\n receiptDelta?: number;\r\n deliveryMeasurement?: number;\r\n deliveryDelta?: number;\r\n netMeasurement?: number;\r\n gasDayMeasurementSummaries: IGasDayMeasurementSummaryResponse[];\r\n}\r\n\r\ninterface IGasDayMeasurementSummaryResponse {\r\n affectedGasMonth: string;\r\n affectedGasDay: string;\r\n receiptMeasurement?: number;\r\n receiptDelta?: number;\r\n deliveryMeasurement?: number;\r\n deliveryDelta?: number;\r\n netMeasurement?: number;\r\n}\r\n\r\nexport class MeasurementLocationDailyData {\r\n affectedGasDay: GasDay;\r\n affectedGasMonth: GasMonth;\r\n receiptMeasurement?: number;\r\n receiptDelta?: number;\r\n deliveryMeasurement?: number;\r\n deliveryDelta?: number;\r\n netMeasurement?: number;\r\n\r\n public static create(dto: IGasDayMeasurementSummaryResponse): MeasurementLocationDailyData {\r\n const data = new MeasurementLocationDailyData();\r\n data.affectedGasDay = GasDay.parse(dto.affectedGasDay);\r\n data.affectedGasMonth = GasMonth.parse(dto.affectedGasMonth);\r\n data.receiptMeasurement = dto.receiptMeasurement;\r\n data.receiptDelta = dto.receiptDelta;\r\n data.deliveryMeasurement = dto.deliveryMeasurement;\r\n data.deliveryDelta = dto.deliveryDelta;\r\n data.netMeasurement = dto.netMeasurement;\r\n return data;\r\n }\r\n}\r\n\r\nexport class MeasurementLocationSummary {\r\n locationName: string;\r\n locationId: number;\r\n affectedGasMonth: GasMonth;\r\n receiptMeasurement?: number;\r\n receiptDelta?: number;\r\n deliveryMeasurement?: number;\r\n deliveryDelta?: number;\r\n netMeasurement?: number;\r\n dailyData: MeasurementLocationDailyData[];\r\n\r\n public static create(dto: ILocationMeasurementSummaryResponse): MeasurementLocationSummary {\r\n const data = new MeasurementLocationSummary();\r\n data.locationName = dto.locationName;\r\n data.locationId = dto.locationId;\r\n data.affectedGasMonth = GasMonth.parse(dto.affectedGasMonth);\r\n data.receiptMeasurement = dto.receiptMeasurement;\r\n data.receiptDelta = dto.receiptDelta;\r\n data.deliveryMeasurement = dto.deliveryMeasurement;\r\n data.deliveryDelta = dto.deliveryDelta;\r\n data.netMeasurement = dto.netMeasurement;\r\n data.dailyData = _.map(dto.gasDayMeasurementSummaries, x => MeasurementLocationDailyData.create(x));\r\n return data;\r\n }\r\n}\r\n\r\nexport class MeasurementSummary {\r\n gasMonth: GasMonth;\r\n receiptMeasurement?: number;\r\n receiptDelta?: number;\r\n deliveryMeasurement?: number;\r\n deliveryDelta?: number;\r\n netMeasurement?: number;\r\n locationSummaries: MeasurementLocationSummary[];\r\n\r\n public static create(response: IMeasurementResponse): MeasurementSummary {\r\n const data = new MeasurementSummary();\r\n data.gasMonth = GasMonth.parse(response.gasMonth);\r\n data.receiptMeasurement = response.receiptMeasurement;\r\n data.receiptDelta = response.receiptDelta;\r\n data.deliveryMeasurement = response.deliveryMeasurement;\r\n data.deliveryDelta = response.deliveryDelta;\r\n data.netMeasurement = response.netMeasurement;\r\n\r\n data.locationSummaries = _.map(response.locationMeasurementSummaries, dto => MeasurementLocationSummary.create(dto));\r\n return data;\r\n }\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MeasurementService {\r\n\r\n constructor(private flowingGasResource: FlowinggasResourceService) {\r\n }\r\n\r\n public queryMeasurement(gasMonth: GasMonth, locationId?: number): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setGasMonth(gasMonth);\r\n\r\n const url: string = locationId ? `/measurement/${locationId}` : '/measurement';\r\n return this.flowingGasResource.get(url, true, params)\r\n .pipe(\r\n map(response => MeasurementSummary.create(response))\r\n );\r\n }\r\n\r\n public uploadStagingMeasurements(parameters: StageMeasurementUploadParameters): Observable> {\r\n return this.flowingGasResource.put>(\"/measurementStaging\", parameters.rows, true );\r\n }\r\n}\r\n","\r\n\r\n","import {Component, EventEmitter, Input, Output} from \"@angular/core\";\r\n\r\n@Component({\r\n selector: 'app-expand-collapse',\r\n templateUrl: './expand-collapse.component.html'\r\n})\r\nexport class ExpandCollapseComponent {\r\n @Input() isExpandAll: boolean = false;\r\n @Output() toggleExpandAll = new EventEmitter();\r\n\r\n public toggle(expandAll: boolean): void {\r\n this.isExpandAll = expandAll;\r\n this.toggleExpandAll.emit(expandAll);\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Affected Month: {{model.lastSearchParams?.gasMonth}}\r\n Location: {{model.lastSearchParams?.locationId}}\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.gasMonth}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.locationId | displayName: 'id' : 'name' : model.locations}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n Number of results found: {{model.searchResults.locationSummaries.length}}\r\n\r\n
0\" class=\"pull-right\">\r\n Export CSV\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n\r\n\r\n \r\n
\r\n
\r\n Totals:\r\n
\r\n
\r\n
\r\n\r\n\r\n \r\n
\r\n
\r\n \r\n Location Name\r\n
\r\n
\r\n\r\n \r\n
\r\n Affected
Gas Day\r\n
\r\n
\r\n \r\n
\r\n Receipt
Measurement (GJ)\r\n
\r\n
\r\n \r\n \r\n
\r\n Delivery
Measurement (GJ)\r\n
\r\n
\r\n \r\n \r\n\r\n
\r\n \r\n\r\n \r\n \r\n \r\n
\r\n {{data.value | gasDayFormat }}\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {forkJoin, Observable, of} from \"rxjs\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {AccountingLocation, Location} from \"@shared/interfaces/location\";\r\nimport {LocationEnrichmentService} from \"@shared/services/enrichment/location-enrichment.service\";\r\nimport {LocationService} from \"@shared/services/common-data/location/location.service\";\r\nimport {concatMap, tap} from \"rxjs/operators\";\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport * as _ from \"lodash\";\r\nimport {MeasurementLocationDailyData, MeasurementLocationSummary, MeasurementService, MeasurementSummary} from \"@shared/services/flowing-gas/measurement-service/measurement.service\";\r\nimport {BaseViewModel} from \"@model/base-view-model\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\n\r\nexport class ViewMeasurementModel extends BaseViewModel {\r\n locations: Location[];\r\n\r\n oldestBillingMonth: BillingMonth;\r\n openBillingMonth: BillingMonth;\r\n preliminaryBillingMonth: BillingMonth;\r\n\r\n maxGasMonth: GasMonth;\r\n searchResults: MeasurementSummary;\r\n\r\n searchParams: ViewMeasurementSearchParams = new ViewMeasurementSearchParams();\r\n lastSearchParams: ViewMeasurementSearchParams;\r\n}\r\n\r\n\r\nexport class ViewMeasurementSearchParams {\r\n gasMonth: GasMonth;\r\n locationId? : number;\r\n}\r\n\r\n@Component({\r\n selector: 'app-view-measurement',\r\n templateUrl: './view-measurement.component.html',\r\n styleUrls: ['./view-measurement.component.css']\r\n})\r\nexport class ViewMeasurementComponent extends BaseSearchComponent implements OnInit {\r\n\r\n model: ViewMeasurementModel = new ViewMeasurementModel();\r\n constructor(protected appService: AppService,\r\n protected router: Router,\r\n protected activatedRoute: ActivatedRoute,\r\n protected alertService: AlertService,\r\n private commonDataBillingMonthService: CommonDataBillingMonthService,\r\n private locationEnrichmentService: LocationEnrichmentService,\r\n private commonDataLocationService: LocationService,\r\n private measurementService: MeasurementService,\r\n private fileService: FileService) {\r\n super('View Measurement', appService, activatedRoute, router, alertService);\r\n\r\n locationEnrichmentService.setEnrichmentResource(commonDataLocationService);\r\n }\r\n\r\n private validator(): ParamValidator {\r\n const paramValidator = ParamValidator.Standard();\r\n\r\n paramValidator.isGasMonth('gasMonth');\r\n return paramValidator;\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return this.validator().isValid(params);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {\r\n gasMonth: this.model.searchParams.gasMonth\r\n };\r\n\r\n if (this.model.searchParams.locationId) {\r\n params['locationId'] = this.model.searchParams.locationId;\r\n }\r\n return params;\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n const getOldestBillingMonth$ = this.commonDataBillingMonthService.getOldest()\r\n .pipe(\r\n tap(oldestBillingMonth => this.model.oldestBillingMonth = oldestBillingMonth)\r\n );\r\n\r\n const getOpenBillingMonth$ = this.commonDataBillingMonthService.getOpen()\r\n .pipe(\r\n tap(openBillingMonth => this.model.openBillingMonth = openBillingMonth)\r\n );\r\n\r\n const getPreliminaryBillingMonth$ = this.commonDataBillingMonthService.getPreliminary()\r\n .pipe(\r\n tap(preliminaryBillingMonth => this.model.preliminaryBillingMonth = preliminaryBillingMonth)\r\n );\r\n\r\n return forkJoin([\r\n getOldestBillingMonth$,\r\n getOpenBillingMonth$,\r\n getPreliminaryBillingMonth$\r\n ]).pipe(\r\n tap(([oldestBillingMonth, openBillingMonth, preliminaryBillingMonth]: [BillingMonth, BillingMonth, BillingMonth]) => {\r\n this.model.maxGasMonth = _.isNil(preliminaryBillingMonth) ? openBillingMonth.gasMonth : preliminaryBillingMonth.gasMonth;\r\n })\r\n );\r\n }\r\n\r\n private querySummaryLocations(gasMonth: GasMonth): Observable {\r\n return this.commonDataLocationService.queryMeasurementAccountingLocations(gasMonth)\r\n .pipe(\r\n concatMap(locations => this.locationEnrichmentService.enrichArray(locations, 'id', 'location')),\r\n tap(locations => {\r\n this.model.locations = _.orderBy(locations, x => x.name);\r\n })\r\n );\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n // return this.querySummaryLocations(this.model.openBillingMonth.gasMonth);\r\n return of(null);\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.searchResults = null; // Destroy Grid (to refresh data grid, we do not want to preserve any expanded rows)\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n\r\n const queryMeasurement$ = this.measurementService.queryMeasurement(this.model.searchParams.gasMonth, this.model.searchParams.locationId)\r\n .pipe(\r\n tap(results => this.model.searchResults = results)\r\n );\r\n return queryMeasurement$;\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams = new ViewMeasurementSearchParams();\r\n this.model.searchParams.gasMonth = this.model.openBillingMonth.gasMonth;\r\n this.model.searchResults = null;\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n if (_.isNil(this.model?.searchParams?.gasMonth) || !this.model?.searchParams?.gasMonth.isEqual(typedParams.asGasMonth('gasMonth'))) {\r\n this.model.searchParams.gasMonth = typedParams.asGasMonth('gasMonth');\r\n }\r\n\r\n this.model.searchParams.locationId =typedParams.asNullableNumber('locationId');\r\n }\r\n\r\n public exportCsvClicked() {\r\n const csvData = [];\r\n _.each(this.model.searchResults.locationSummaries, (summary: MeasurementLocationSummary) => {\r\n _.each(summary.dailyData, (dailyData: MeasurementLocationDailyData) => {\r\n csvData.push({\r\n locationName: summary.locationName,\r\n gasDay: dailyData.affectedGasDay.toString(),\r\n receiptMeasurement: dailyData.receiptMeasurement,\r\n receiptDelta: dailyData.receiptDelta,\r\n deliveryMeasurement: dailyData.deliveryMeasurement,\r\n deliveryDelta: dailyData.deliveryDelta,\r\n netChange: dailyData.netMeasurement\r\n });\r\n });\r\n });\r\n const filename = `ViewMeasurement_${this.model.lastSearchParams.gasMonth.toString()}_${this.model.lastSearchParams.locationId ? this.model.searchResults.locationSummaries[0].locationName : 'All'}.csv`;\r\n const headers = ['Location Name', 'Gas Day', 'Receipt Measurement', 'Receipt Delta', 'Delivery Measurement', 'Delivery Delta', 'Net Change'];\r\n const columns = ['locationName', 'gasDay', 'receiptMeasurement', 'receiptDelta', 'deliveryMeasurement', 'deliveryDelta', 'netChange'];\r\n\r\n this.fileService.downloadCsvFile(filename, csvData, headers, columns);\r\n\r\n }\r\n\r\n onGasMonthChanged(): void {\r\n if(!_.isNil(this.model.searchParams.gasMonth)) {\r\n this.querySummaryLocations(this.model.searchParams.gasMonth).subscribe(() => {\r\n });\r\n }\r\n }\r\n\r\n calculateTotals = (options) => {\r\n if (options.summaryProcess === 'start' && this.model.searchResults) {\r\n switch(options.name) {\r\n case 'receiptMeasurement':\r\n options.totalValue = this.model.searchResults.receiptMeasurement;\r\n break;\r\n case 'receiptDelta':\r\n options.totalValue = this.model.searchResults.receiptDelta;\r\n break;\r\n case 'deliveryMeasurement':\r\n options.totalValue = this.model.searchResults.deliveryMeasurement;\r\n break;\r\n case 'deliveryDelta':\r\n options.totalValue = this.model.searchResults.deliveryDelta;\r\n break;\r\n case 'netMeasurement':\r\n options.totalValue = this.model.searchResults.netMeasurement;\r\n break;\r\n }\r\n }\r\n };\r\n\r\n public toggleExpandAll(expandAll: boolean, dataGrid: DxDataGridComponent): void {\r\n if(expandAll) {\r\n dataGrid.instance.expandAll(-1);\r\n } else {\r\n dataGrid.instance.collapseAll(-1);\r\n }\r\n }\r\n\r\n public showStageMeasurementsTestHarness() : boolean {\r\n return this.appService.showStageMeasurementsTestHarness();\r\n }\r\n\r\n public testHarnessClicked(): void {\r\n this.router.navigate(['/app', this.getPipelineCode(), 'stagemeasurements']).then();\r\n }\r\n\r\n}\r\n","import {BaseViewModel} from \"@model/base-view-model\";\r\nimport {Enterprise} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {Location} from \"@shared/interfaces/location\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport {BilledExcess, CumulativeExcess, DailyExcess, LocationBalance} from \"@shared/services/flowing-gas/operator-balance/operator-balance-service\";\r\nimport {CommonDataLocation} from \"@shared/services/common-data/location/location.service\";\r\n\r\nexport class OperatorBalanceReportModel extends BaseViewModel {\r\n selectedTabIndex: number = 0;\r\n\r\n status: string;\r\n isExternalUser: boolean;\r\n\r\n minGasDay: GasDay;\r\n maxGasDay: GasDay;\r\n maxGasDayWithinMonth: GasDay;\r\n currentGasDay: GasDay;\r\n minBillingGasMonth: GasMonth;\r\n maxBillingGasMonth: GasMonth;\r\n maxReportingGasMonth: GasMonth;\r\n\r\n searchDateTime: Date;\r\n displayIT: boolean;\r\n\r\n oldestBillingMonth: BillingMonth;\r\n openBillingMonth: BillingMonth;\r\n preliminaryBillingMonth: BillingMonth;\r\n\r\n operators: Enterprise[];\r\n locations: CommonDataLocation[];\r\n lastSearchLocations: Location[];\r\n\r\n hasSearchResults: boolean = false;\r\n searchParams: OperatorBalanceReportSearchParams = new OperatorBalanceReportSearchParams();\r\n lastSearchParams: OperatorBalanceReportSearchParams;\r\n\r\n private _locationBalanceSearchResults: LocationBalance[];\r\n public get locationBalanceSearchResults(): LocationBalance[] {\r\n return this._locationBalanceSearchResults;\r\n }\r\n public set locationBalanceSearchResults(results: LocationBalance[]) {\r\n this._locationBalanceSearchResults = results;\r\n }\r\n\r\n private _billedExcessSearchResults: BilledExcess[];\r\n public get billedExcessSearchResults(): BilledExcess[] {\r\n return this._billedExcessSearchResults;\r\n }\r\n public set billedExcessSearchResults(results: BilledExcess[]) {\r\n this._billedExcessSearchResults = results;\r\n }\r\n\r\n private _dailyExcessSearchResults: DailyExcess[];\r\n public get dailyExcessSearchResults(): DailyExcess[] {\r\n return this._dailyExcessSearchResults;\r\n }\r\n public set dailyExcessSearchResults(results: DailyExcess[]) {\r\n this._dailyExcessSearchResults = results;\r\n }\r\n\r\n private _cumulativeExcessSearchResults: CumulativeExcess[];\r\n public get cumulativeExcessSearchResults(): CumulativeExcess[] {\r\n return this._cumulativeExcessSearchResults;\r\n }\r\n public set cumulativeExcessSearchResults(results: CumulativeExcess[]) {\r\n this._cumulativeExcessSearchResults = results;\r\n }\r\n\r\n public clearSearchResults(): void {\r\n this._locationBalanceSearchResults = null;\r\n this._billedExcessSearchResults = null;\r\n this._dailyExcessSearchResults = null;\r\n this._cumulativeExcessSearchResults = null;\r\n this.hasSearchResults = false;\r\n }\r\n}\r\n\r\nexport class OperatorBalanceReportSearchParams {\r\n startGasDay: GasDay;\r\n endGasDay: GasDay;\r\n billingGasMonth: GasMonth;\r\n operatorId: number;\r\n units: string;\r\n locationId: number;\r\n}\r\n","import * as _ from \"lodash\";\r\n\r\nexport class UnitOfMeasure {\r\n public static GJ: UnitOfMeasure = new UnitOfMeasure('GJ');\r\n public static DTH: UnitOfMeasure = new UnitOfMeasure('Dth');\r\n\r\n public static ALL: UnitOfMeasure[] = [UnitOfMeasure.GJ, UnitOfMeasure.DTH];\r\n\r\n private constructor(private _value: string) {\r\n }\r\n\r\n get value(): string {\r\n return this._value;\r\n }\r\n\r\n public static find(value: string): UnitOfMeasure {\r\n if(_.isNil(value)) return null;\r\n const valueAsLowerCase = value.toLowerCase();\r\n return _.find(this.ALL, x => x.value.toLowerCase() === valueAsLowerCase);\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\nimport {Injectable} from \"@angular/core\";\r\nimport {FlowinggasResourceService} from \"@shared/resources/flowinggas-resource.service\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {map} from \"rxjs/operators\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {UnitOfMeasure} from \"@model/unit-of-measure\";\r\nimport {Observable} from \"rxjs\";\r\nimport {HttpResponse} from \"@angular/common/http\";\r\n\r\n@Injectable()\r\nexport class OperatorBalanceService {\r\n\r\n constructor(private flowingGasResource: FlowinggasResourceService) {\r\n }\r\n\r\n public getLocationBalance(locationId: number, fromGasDay: GasDay, toGasDay: GasDay, gasMonth: GasMonth, operatorEnterpriseId: number, unitOfMeasure: UnitOfMeasure): Observable {\r\n const params = new GCTSHttpParams();\r\n params.setGasDay(fromGasDay, 'fromGasDay');\r\n params.setGasDay(toGasDay, 'toGasDay');\r\n params.setGasMonth(gasMonth, 'gasMonth');\r\n params.setNumber('operatorCid', operatorEnterpriseId);\r\n params.set('units', unitOfMeasure.value);\r\n\r\n return this.flowingGasResource.get(`/reports/operatorbalance/locationbalance/${locationId}`, true, params)\r\n .pipe(\r\n map(locationBalanceDto => LocationBalance.create(locationBalanceDto))\r\n );\r\n }\r\n\r\n public getOperatorBalancePdf(fromGasDay: GasDay, toGasDay: GasDay, gasMonth: GasMonth, operatorEnterpriseId: number, unitOfMeasure: UnitOfMeasure, locationIds: number[], pipelineSystemCode: string): Observable> {\r\n const params = new GCTSHttpParams();\r\n params.setGasDay(fromGasDay, 'fromGasDay');\r\n params.setGasDay(toGasDay, 'toGasDay');\r\n params.setGasMonth(gasMonth, 'gasMonth');\r\n params.setNumber('operatorCid', operatorEnterpriseId);\r\n params.set('units', unitOfMeasure.value);\r\n params.setListOfNumbers('locationIds', locationIds);\r\n params.set('pipelineSystemCid', pipelineSystemCode);\r\n params.setBoolean('download', true);\r\n\r\n return this.flowingGasResource.getData('/reports/operatorBalance/pdf', true, params);\r\n }\r\n\r\n public getBilledExcess(locationId: number, fromGasDay: GasDay, toGasDay: GasDay, gasMonth: GasMonth, operatorEnterpriseId: number, unitOfMeasure: UnitOfMeasure): Observable {\r\n const params = new GCTSHttpParams();\r\n params.setGasDay(fromGasDay, 'fromGasDay');\r\n params.setGasDay(toGasDay, 'toGasDay');\r\n params.setGasMonth(gasMonth, 'gasMonth');\r\n params.setNumber('operatorCid', operatorEnterpriseId);\r\n params.set('units', unitOfMeasure.value);\r\n\r\n return this.flowingGasResource.get(`/reports/operatorbalance/billedexcess/${locationId}`, true, params)\r\n .pipe(\r\n map(billedExcessDto => BilledExcess.create(billedExcessDto))\r\n );\r\n }\r\n\r\n public getDailyExcess(locationId: number, fromGasDay: GasDay, toGasDay: GasDay, gasMonth: GasMonth, operatorEnterpriseId: number, unitOfMeasure: UnitOfMeasure): Observable {\r\n const params = new GCTSHttpParams();\r\n params.setGasDay(fromGasDay, 'fromGasDay');\r\n params.setGasDay(toGasDay, 'toGasDay');\r\n params.setGasMonth(gasMonth, 'gasMonth');\r\n params.setNumber('operatorCid', operatorEnterpriseId);\r\n params.set('units', unitOfMeasure.value);\r\n\r\n return this.flowingGasResource.get(`/reports/operatorbalance/dailyexcess/${locationId}`, true, params)\r\n .pipe(\r\n map(dailyExcessDto => DailyExcess.create(dailyExcessDto))\r\n );\r\n }\r\n\r\n public getCumulativeExcess(locationId: number, fromGasDay: GasDay, toGasDay: GasDay, gasMonth: GasMonth, operatorEnterpriseId: number, unitOfMeasure: UnitOfMeasure): Observable {\r\n const params = new GCTSHttpParams();\r\n params.setGasDay(fromGasDay, 'fromGasDay');\r\n params.setGasDay(toGasDay, 'toGasDay');\r\n params.setGasMonth(gasMonth, 'gasMonth');\r\n params.setNumber('operatorCid', operatorEnterpriseId);\r\n params.set('units', unitOfMeasure.value);\r\n\r\n return this.flowingGasResource.get(`/reports/operatorbalance/cumulativeexcess/${locationId}`, true, params)\r\n .pipe(\r\n map(cumulativeExcessDto => CumulativeExcess.create(cumulativeExcessDto))\r\n );\r\n }\r\n}\r\n\r\nexport interface ILocationBalanceResponse {\r\n location: number;\r\n openingBalance: number;\r\n confirmedReceipt: number;\r\n confRecHasPpa: boolean;\r\n confirmedDelivery: number;\r\n confDelHasPpa: boolean;\r\n netConfirmed: number;\r\n measuredReceipt: number;\r\n measRecHasPpa: boolean;\r\n measuredDelivery: number;\r\n measDelHasPpa: boolean;\r\n netMeasured: number;\r\n netInventoryTransfer: number;\r\n inventoryTransferExists: boolean;\r\n variance: number;\r\n cumulativeVariance: number;\r\n\r\n dailyBalances: IDailyOperatorBalanceResponse[];\r\n tolerances: ILbaLocationToleranceResponse[];\r\n dailyPercentages: ILbaTierPercentageResponse[];\r\n cumulativePercentages: ILbaTierPercentageResponse[];\r\n feeStructure: IFeeStructureResponse[];\r\n}\r\n\r\nexport interface IDailyOperatorBalanceResponse {\r\n gasDay: string;\r\n confirmedReceipt: number;\r\n confRecHasPpa: boolean;\r\n confirmedDelivery: number;\r\n confDelHasPpa: boolean;\r\n netConfirmed: number;\r\n measuredReceipt: number;\r\n measRecHasPpa: boolean;\r\n measuredDelivery: number;\r\n measDelHasPpa: boolean;\r\n netMeasured: number;\r\n netInventoryTransfer: number;\r\n variance: number;\r\n cumulativeVariance: number;\r\n}\r\n\r\nexport interface ILbaLocationToleranceResponse {\r\n location: number;\r\n quantity: number;\r\n tierType: string;\r\n}\r\n\r\nexport interface ILbaTierPercentageResponse {\r\n percentage: number;\r\n tierType: string;\r\n}\r\n\r\nexport interface IFeeStructureResponse {\r\n pipeline: string;\r\n gasMonth: string;\r\n tierTypeId: string;\r\n tierFactor: number;\r\n dailyRate: number;\r\n}\r\n\r\nexport class LocationBalance {\r\n location: number;\r\n openingBalance: number;\r\n confirmedReceipt: number;\r\n confRecHasPpa: boolean;\r\n confirmedDelivery: number;\r\n confDelHasPpa: boolean;\r\n netConfirmed: number;\r\n measuredReceipt: number;\r\n measRecHasPpa: boolean;\r\n measuredDelivery: number;\r\n measDelHasPpa: boolean;\r\n netMeasured: number;\r\n netInventoryTransfer: number;\r\n inventoryTransferExists: boolean;\r\n variance: number;\r\n cumulativeVariance: number;\r\n\r\n dailyBalances: DailyOperatorBalance[];\r\n tolerances: LbaLocationTolerance[];\r\n dailyPercentages: LbaTierPercentage[];\r\n cumulativePercentages: LbaTierPercentage[];\r\n feeStructure:FeeStructure[];\r\n\r\n public static create(dto: ILocationBalanceResponse): LocationBalance {\r\n const locationBalance = new LocationBalance();\r\n\r\n locationBalance.location = dto.location;\r\n locationBalance.openingBalance = dto.openingBalance;\r\n locationBalance.confirmedReceipt = dto.confirmedReceipt;\r\n locationBalance.confRecHasPpa = dto.confRecHasPpa;\r\n locationBalance.confirmedDelivery = dto.confirmedDelivery;\r\n locationBalance.confDelHasPpa = dto.confDelHasPpa;\r\n locationBalance.netConfirmed = dto.netConfirmed;\r\n locationBalance.measuredReceipt = dto.measuredReceipt;\r\n locationBalance.measRecHasPpa = dto.measRecHasPpa;\r\n locationBalance.measuredDelivery = dto.measuredDelivery;\r\n locationBalance.measDelHasPpa = dto.measDelHasPpa;\r\n locationBalance.netMeasured = dto.netMeasured;\r\n locationBalance.netInventoryTransfer = dto.netInventoryTransfer;\r\n locationBalance.inventoryTransferExists = dto.inventoryTransferExists;\r\n locationBalance.variance = dto.variance;\r\n locationBalance.cumulativeVariance = dto.cumulativeVariance;\r\n\r\n locationBalance.dailyBalances = _.map(dto.dailyBalances, dailyBalanceDto => DailyOperatorBalance.create(dailyBalanceDto));\r\n locationBalance.tolerances = _.map(dto.tolerances, toleranceDto => LbaLocationTolerance.create(toleranceDto));\r\n locationBalance.dailyPercentages = _.map(dto.dailyPercentages, dailyPercentageDto => LbaTierPercentage.create(dailyPercentageDto));\r\n locationBalance.cumulativePercentages = _.map(dto.cumulativePercentages, cumulativePercentageDto => LbaTierPercentage.create(cumulativePercentageDto));\r\n locationBalance.feeStructure = _.map(dto.feeStructure, feeStructureDto => FeeStructure.create(feeStructureDto));\r\n\r\n return locationBalance;\r\n }\r\n}\r\n\r\nexport class DailyOperatorBalance {\r\n gasDay: GasDay;\r\n confirmedReceipt: number;\r\n confRecHasPpa: boolean;\r\n confirmedDelivery: number;\r\n confDelHasPpa: boolean;\r\n netConfirmed: number;\r\n measuredReceipt: number;\r\n measRecHasPpa: boolean;\r\n measuredDelivery: number;\r\n measDelHasPpa: boolean;\r\n netMeasured: number;\r\n netInventoryTransfer: number;\r\n variance: number;\r\n cumulativeVariance: number;\r\n\r\n public static create(dto: IDailyOperatorBalanceResponse): DailyOperatorBalance {\r\n const dailyOperatorBalance = new DailyOperatorBalance();\r\n\r\n dailyOperatorBalance.gasDay = GasDay.parse(dto.gasDay);\r\n dailyOperatorBalance.confirmedReceipt = dto.confirmedReceipt;\r\n dailyOperatorBalance.confRecHasPpa = dto.confRecHasPpa;\r\n dailyOperatorBalance.confirmedDelivery = dto.confirmedDelivery;\r\n dailyOperatorBalance.confDelHasPpa = dto.confDelHasPpa;\r\n dailyOperatorBalance.netConfirmed = dto.netConfirmed;\r\n dailyOperatorBalance.measuredReceipt = dto.measuredReceipt;\r\n dailyOperatorBalance.measRecHasPpa = dto.measRecHasPpa;\r\n dailyOperatorBalance.measuredDelivery = dto.measuredDelivery;\r\n dailyOperatorBalance.measDelHasPpa = dto.measDelHasPpa;\r\n dailyOperatorBalance.netMeasured = dto.netMeasured;\r\n dailyOperatorBalance.netInventoryTransfer = dto.netInventoryTransfer;\r\n dailyOperatorBalance.variance = dto.variance;\r\n dailyOperatorBalance.cumulativeVariance = dto.cumulativeVariance;\r\n\r\n return dailyOperatorBalance;\r\n }\r\n}\r\n\r\nexport class LbaLocationTolerance {\r\n location: number;\r\n quantity: number;\r\n tierType: string;\r\n\r\n public static create(dto: ILbaLocationToleranceResponse): LbaLocationTolerance {\r\n const lbaLocationTolerance = new LbaLocationTolerance();\r\n\r\n lbaLocationTolerance.location = dto.location;\r\n lbaLocationTolerance.quantity = dto.quantity;\r\n lbaLocationTolerance.tierType = dto.tierType;\r\n\r\n return lbaLocationTolerance;\r\n }\r\n}\r\n\r\nexport class LbaTierPercentage {\r\n percentage: number;\r\n tierType: string;\r\n\r\n public static create(dto: ILbaTierPercentageResponse): LbaTierPercentage {\r\n const lbaTierPercentage = new LbaTierPercentage();\r\n\r\n lbaTierPercentage.percentage = dto.percentage;\r\n lbaTierPercentage.tierType = dto.tierType;\r\n\r\n return lbaTierPercentage;\r\n }\r\n}\r\n\r\nexport class FeeStructure {\r\n pipeline: string;\r\n gasMonth: GasMonth;\r\n tierTypeId: string;\r\n tierFactor: number;\r\n dailyRate: number;\r\n\r\n public static create(dto: IFeeStructureResponse): FeeStructure {\r\n const feeStructure = new FeeStructure();\r\n\r\n feeStructure.pipeline = dto.pipeline;\r\n feeStructure.gasMonth = GasMonth.parse(dto.gasMonth);\r\n feeStructure.tierTypeId = dto.tierTypeId;\r\n feeStructure.tierFactor = dto.tierFactor;\r\n feeStructure.dailyRate = dto.dailyRate;\r\n\r\n return feeStructure;\r\n }\r\n}\r\n\r\nexport interface IBilledExcessResponse {\r\n location: number;\r\n dailyTier1: number;\r\n dailyTier2: number;\r\n dailyTier3: number;\r\n dailyTier4: number;\r\n cumulativeTier1: number;\r\n cumulativeTier2: number;\r\n tierTotal: number;\r\n isNotZero: boolean;\r\n\r\n billedExcessDetails: IBilledExcessDetailResponse[];\r\n tolerances: ILbaLocationToleranceResponse[];\r\n dailyPercentages: ILbaTierPercentageResponse[];\r\n cumulativePercentages: ILbaTierPercentageResponse[];\r\n}\r\n\r\nexport interface IBilledExcessDetailResponse {\r\n gasDay: string;\r\n tier1: IDailyTierFeeResponse;\r\n tier2: IDailyTierFeeResponse;\r\n tier3: IDailyTierFeeResponse;\r\n tier4: IDailyTierFeeResponse;\r\n cumulativeTier1: IDailyTierFeeResponse;\r\n cumulativeTier2: IDailyTierFeeResponse;\r\n total?: number;\r\n}\r\n\r\nexport interface IDailyTierFeeResponse {\r\n billedExcess?: number;\r\n estimatedFee?: number;\r\n\r\n tierType: string;\r\n locationId: number;\r\n gasDay: string;\r\n\r\n tolerance: number;\r\n variance: number;\r\n calculatedExcess?: number;\r\n}\r\n\r\nexport class BilledExcess {\r\n location: number;\r\n dailyTier1: number;\r\n dailyTier2: number;\r\n dailyTier3: number;\r\n dailyTier4: number;\r\n cumulativeTier1: number;\r\n cumulativeTier2: number;\r\n tierTotal: number;\r\n isNotZero: boolean;\r\n\r\n billedExcessDetails: BilledExcessDetail[];\r\n tolerances: LbaLocationTolerance[];\r\n dailyPercentages: LbaTierPercentage[];\r\n cumulativePercentages: LbaTierPercentage[];\r\n\r\n public static create(dto: IBilledExcessResponse): BilledExcess {\r\n const billedExcess = new BilledExcess();\r\n\r\n billedExcess.location = dto.location;\r\n billedExcess.dailyTier1 = dto.dailyTier1;\r\n billedExcess.dailyTier2 = dto.dailyTier2;\r\n billedExcess.dailyTier3 = dto.dailyTier3;\r\n billedExcess.dailyTier4 = dto.dailyTier4;\r\n billedExcess.cumulativeTier1 = dto.cumulativeTier1;\r\n billedExcess.cumulativeTier2 = dto.cumulativeTier2;\r\n billedExcess.tierTotal = dto.tierTotal;\r\n billedExcess.isNotZero = dto.isNotZero;\r\n\r\n billedExcess.billedExcessDetails = _.map(dto.billedExcessDetails, billedExcessDetailDto => BilledExcessDetail.create(billedExcessDetailDto));\r\n billedExcess.tolerances = _.map(dto.tolerances, toleranceDto => LbaLocationTolerance.create(toleranceDto));\r\n billedExcess.dailyPercentages = _.map(dto.dailyPercentages, dailyPercentageDto => LbaTierPercentage.create(dailyPercentageDto));\r\n billedExcess.cumulativePercentages = _.map(dto.cumulativePercentages, cumulativePercentageDto => LbaTierPercentage.create(cumulativePercentageDto));\r\n\r\n return billedExcess;\r\n }\r\n}\r\n\r\nexport class BilledExcessDetail {\r\n gasDay: GasDay;\r\n tier1: DailyTierFee;\r\n tier2: DailyTierFee;\r\n tier3: DailyTierFee;\r\n tier4: DailyTierFee;\r\n cumulativeTier1: DailyTierFee;\r\n cumulativeTier2: DailyTierFee;\r\n total?: number;\r\n\r\n public static create(dto: IBilledExcessDetailResponse): BilledExcessDetail {\r\n const billedExcessDetail = new BilledExcessDetail();\r\n\r\n billedExcessDetail.gasDay = GasDay.parse(dto.gasDay);\r\n billedExcessDetail.tier1 = DailyTierFee.create(dto.tier1);\r\n billedExcessDetail.tier2 = DailyTierFee.create(dto.tier2);\r\n billedExcessDetail.tier3 = DailyTierFee.create(dto.tier3);\r\n billedExcessDetail.tier4 = DailyTierFee.create(dto.tier4);\r\n billedExcessDetail.cumulativeTier1 = DailyTierFee.create(dto.cumulativeTier1);\r\n billedExcessDetail.cumulativeTier2 = DailyTierFee.create(dto.cumulativeTier2);\r\n billedExcessDetail.total = dto.total;\r\n\r\n return billedExcessDetail;\r\n }\r\n}\r\n\r\nexport class DailyTierFee {\r\n billedExcess?: number;\r\n estimatedFee?: number;\r\n\r\n tierType: string;\r\n locationId: number;\r\n gasDay: GasDay;\r\n\r\n tolerance: number;\r\n variance: number;\r\n calculatedExcess?: number;\r\n\r\n public static create(dto: IDailyTierFeeResponse): DailyTierFee {\r\n const dailyTierFee = new DailyTierFee();\r\n\r\n dailyTierFee.billedExcess = dto.billedExcess;\r\n dailyTierFee.estimatedFee = dto.estimatedFee;\r\n\r\n dailyTierFee.tierType = dto.tierType;\r\n dailyTierFee.locationId = dto.locationId;\r\n dailyTierFee.gasDay = GasDay.parse(dto.gasDay);\r\n\r\n dailyTierFee.tolerance = dto.tolerance;\r\n dailyTierFee.variance = dto.variance;\r\n dailyTierFee.calculatedExcess = dto.calculatedExcess;\r\n\r\n return dailyTierFee;\r\n }\r\n}\r\n\r\nexport interface IDailyExcessResponse{\r\n location: number;\r\n openingBalance: number;\r\n netNominated: number;\r\n authorizedMakeup: number;\r\n nominatedMakeup: number;\r\n measuredNominatedLessMakeup: number;\r\n netMeasured: number;\r\n netInventoryTransfer: number;\r\n inventoryTransferExists: number;\r\n dailyVariance: number;\r\n\r\n dailyVarianceDetails: IDailyVarianceDetailResponse[];\r\n}\r\n\r\nexport interface IDailyVarianceDetailResponse {\r\n gasDay: string;\r\n netNominated: number;\r\n authorizedMakeup: number;\r\n nominatedMakeup: number;\r\n measuredNominatedLessMakeup: number;\r\n netMeasured: number;\r\n netInventoryTransfer: number;\r\n dailyVariance: number;\r\n cumulativeVariance: number;\r\n avg30DayNom: number;\r\n}\r\n\r\nexport class DailyExcess {\r\n location: number;\r\n openingBalance: number;\r\n netNominated: number;\r\n authorizedMakeup: number;\r\n nominatedMakeup: number;\r\n measuredNominatedLessMakeup: number;\r\n netMeasured: number;\r\n netInventoryTransfer: number;\r\n inventoryTransferExists: number;\r\n dailyVariance: number;\r\n\r\n dailyVarianceDetails: DailyVarianceDetail[];\r\n\r\n public static create(dto: IDailyExcessResponse): DailyExcess {\r\n const dailyExcess = new DailyExcess();\r\n\r\n dailyExcess.location = dto.location;\r\n dailyExcess.openingBalance = dto.openingBalance;\r\n dailyExcess.netNominated = dto.netNominated;\r\n dailyExcess.authorizedMakeup = dto.authorizedMakeup;\r\n dailyExcess.nominatedMakeup = dto.nominatedMakeup;\r\n dailyExcess.measuredNominatedLessMakeup = dto.measuredNominatedLessMakeup;\r\n dailyExcess.netMeasured = dto.netMeasured;\r\n dailyExcess.netInventoryTransfer = dto.netInventoryTransfer;\r\n dailyExcess.inventoryTransferExists = dto.inventoryTransferExists;\r\n dailyExcess.dailyVariance = dto.dailyVariance;\r\n\r\n dailyExcess.dailyVarianceDetails = _.map(dto.dailyVarianceDetails, dailyVarianceDetail => DailyVarianceDetail.create(dailyVarianceDetail));\r\n\r\n return dailyExcess;\r\n }\r\n}\r\n\r\nexport class DailyVarianceDetail {\r\n gasDay: GasDay;\r\n netNominated: number;\r\n authorizedMakeup: number;\r\n nominatedMakeup: number;\r\n measuredNominatedLessMakeup: number;\r\n netMeasured: number;\r\n netInventoryTransfer: number;\r\n dailyVariance: number;\r\n cumulativeVariance: number;\r\n avg30DayNom: number;\r\n\r\n public static create(dto: IDailyVarianceDetailResponse): DailyVarianceDetail {\r\n const dailyVarianceDetail = new DailyVarianceDetail();\r\n\r\n dailyVarianceDetail.gasDay = GasDay.parse(dto.gasDay);\r\n dailyVarianceDetail.netNominated = dto.netNominated;\r\n dailyVarianceDetail.authorizedMakeup = dto.authorizedMakeup;\r\n dailyVarianceDetail.nominatedMakeup = dto.nominatedMakeup;\r\n dailyVarianceDetail.measuredNominatedLessMakeup = dto.measuredNominatedLessMakeup;\r\n dailyVarianceDetail.netMeasured = dto.netMeasured;\r\n dailyVarianceDetail.netInventoryTransfer = dto.netInventoryTransfer;\r\n dailyVarianceDetail.dailyVariance = dto.dailyVariance;\r\n dailyVarianceDetail.cumulativeVariance = dto.cumulativeVariance;\r\n dailyVarianceDetail.avg30DayNom = dto.avg30DayNom;\r\n\r\n return dailyVarianceDetail;\r\n }\r\n}\r\n\r\nexport interface ICumulativeExcessResponse {\r\n location: number;\r\n cumulativeVarianceDetails: ICumulativeVarianceDetailResponse[];\r\n tolerances: ILbaLocationToleranceResponse[];\r\n dailyPercentages: ILbaTierPercentageResponse[];\r\n cumulativePercentages: ILbaTierPercentageResponse[];\r\n feeStructure: IFeeStructureResponse[];\r\n}\r\n\r\nexport interface ICumulativeVarianceDetailResponse {\r\n gasDay: string;\r\n cumulativeVariance: number;\r\n minimumMakeup: number;\r\n makeupRelief: number;\r\n adjustedCumulativeVariance: number;\r\n}\r\n\r\nexport class CumulativeExcess {\r\n location: number;\r\n cumulativeVarianceDetails: CumulativeVarianceDetail[];\r\n tolerances: LbaLocationTolerance[];\r\n dailyPercentages: LbaTierPercentage[];\r\n cumulativePercentages: LbaTierPercentage[];\r\n feeStructure: FeeStructure[];\r\n\r\n public static create(dto: ICumulativeExcessResponse): CumulativeExcess {\r\n const cumulativeExcess = new CumulativeExcess();\r\n\r\n cumulativeExcess.location = dto.location;\r\n cumulativeExcess.cumulativeVarianceDetails = _.map(dto.cumulativeVarianceDetails, cumulativeVarianceDetail => CumulativeVarianceDetail.create(cumulativeVarianceDetail));\r\n cumulativeExcess.tolerances = _.map(dto.tolerances, toleranceDto => LbaLocationTolerance.create(toleranceDto));\r\n cumulativeExcess.dailyPercentages = _.map(dto.dailyPercentages, dailyPercentageDto => LbaTierPercentage.create(dailyPercentageDto));\r\n cumulativeExcess.cumulativePercentages = _.map(dto.cumulativePercentages, cumulativePercentageDto => LbaTierPercentage.create(cumulativePercentageDto));\r\n cumulativeExcess.feeStructure = _.map(dto.feeStructure, feeStructureDto => FeeStructure.create(feeStructureDto));\r\n\r\n return cumulativeExcess;\r\n }\r\n}\r\n\r\nexport class CumulativeVarianceDetail {\r\n gasDay: GasDay;\r\n cumulativeVariance: number;\r\n minimumMakeup: number;\r\n makeupRelief: number;\r\n adjustedCumulativeVariance: number;\r\n\r\n public static create(dto: ICumulativeVarianceDetailResponse): CumulativeVarianceDetail {\r\n const cumulativeVarianceDetail = new CumulativeVarianceDetail();\r\n\r\n cumulativeVarianceDetail.gasDay = GasDay.parse(dto.gasDay);\r\n cumulativeVarianceDetail.cumulativeVariance = dto.cumulativeVariance;\r\n cumulativeVarianceDetail.minimumMakeup = dto.minimumMakeup;\r\n cumulativeVarianceDetail.makeupRelief = dto.makeupRelief;\r\n cumulativeVarianceDetail.adjustedCumulativeVariance = dto.adjustedCumulativeVariance;\r\n\r\n return cumulativeVarianceDetail;\r\n }\r\n}\r\n","import {OperatorBalanceService} from \"@shared/services/flowing-gas/operator-balance/operator-balance-service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport * as _ from \"lodash\";\r\nimport {UnitOfMeasure} from \"@model/unit-of-measure\";\r\nimport {HttpResponse} from \"@angular/common/http\";\r\nimport * as FileSaver from \"file-saver\";\r\nimport {OperatorBalanceReportModel} from \"app/gcts/flowinggas/operator-balance-report/operator-balance-report.model\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\n\r\nexport class BaseOperatorBalanceReportTabComponent {\r\n constructor(protected operatorBalanceService: OperatorBalanceService,\r\n protected sessionService: SessionService) { }\r\n\r\n public toggleExpandAll(expandAll: boolean, dataGrid: DxDataGridComponent): void {\r\n if(expandAll) {\r\n dataGrid.instance.expandAll(-1);\r\n } else {\r\n dataGrid.instance.collapseAll(-1);\r\n }\r\n }\r\n\r\n public pdfClicked(model: OperatorBalanceReportModel): void {\r\n const locationIds = _.isNil(model.lastSearchParams.locationId) ? _.map(model.lastSearchLocations, x => x.id) : [model.lastSearchParams.locationId];\r\n this.operatorBalanceService.getOperatorBalancePdf(model.searchParams.startGasDay, model.searchParams.endGasDay, model.searchParams.billingGasMonth,\r\n model.searchParams.operatorId, UnitOfMeasure.find(model.searchParams.units), locationIds, this.sessionService.getPipeline().code)\r\n .subscribe(data => {\r\n this.downloadFile(data);\r\n });\r\n }\r\n\r\n\r\n downloadFile(response: HttpResponse) {\r\n const mediaType = response.headers.get('content-type');\r\n const blob = new Blob([response.body], {type: mediaType});\r\n\r\n // from the content disposition, should be second element with =\"{filename}\" surrounding it\r\n const filename = response.headers.get('content-disposition').split(';')[1].trim().split('=')[1].replace(/\"/g, '');\r\n FileSaver.saveAs(blob, filename);\r\n }\r\n}\r\n","
\r\n
\r\n Number of Locations Found: {{model.locationBalanceSearchResults.length}}\r\n AS OF {{model.searchDateTime | dateFormat:'YYYY-MMM-DD H:mm:ss'}}\r\n
0\" class=\"pull-right\">\r\n Export CSV\r\n | \r\n PDF\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n
\r\n Confirmed
Receipt (Out)\r\n
\r\n
\r\n
{{ row.value.toLocaleString() }}
\r\n
\r\n\r\n \r\n
\r\n Confirmed
Delivery (In)\r\n
\r\n
\r\n
{{ row.value.toLocaleString() }}
\r\n
\r\n\r\n \r\n
\r\n
{{ row.value.toLocaleString() }}
\r\n
\r\n\r\n \r\n
\r\n Measured
Receipt (In)\r\n
\r\n
\r\n
{{ row.value.toLocaleString() }}
\r\n
\r\n\r\n \r\n
\r\n Measured
Delivery (Out)\r\n
\r\n
\r\n
{{ row.value.toLocaleString() }}
\r\n
\r\n\r\n \r\n \r\n
\r\n Net
Inventory Transfer\r\n
\r\n\r\n \r\n \r\n
\r\n Cumulative
Variance\r\n
\r\n\r\n
\r\n \r\n\r\n \r\n\r\n \r\n
\r\n \r\n Opening Balance:\r\n \r\n \r\n {{ getOpeningBalance(row) | numberFormat }}\r\n \r\n
\r\n \r\n \r\n
\r\n {{ cellInfo.value | gasDayFormat }}\r\n
\r\n\r\n \r\n
\r\n
{{ row.value.toLocaleString() }}
\r\n
\r\n\r\n \r\n
\r\n
{{ row.value.toLocaleString() }}
\r\n
\r\n\r\n \r\n
\r\n
{{ row.value.toLocaleString() }}
\r\n
\r\n\r\n \r\n
\r\n
{{ row.value.toLocaleString() }}
\r\n
\r\n\r\n \r\n
\r\n
{{ row.value.toLocaleString() }}
\r\n
\r\n\r\n \r\n
\r\n
{{ row.value.toLocaleString() }}
\r\n
\r\n\r\n \r\n\r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n","import {Component, Input, ViewChild} from '@angular/core';\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {OperatorBalanceReportModel} from \"app/gcts/flowinggas/operator-balance-report/operator-balance-report.model\";\r\nimport * as _ from \"lodash\";\r\nimport {OperatorBalanceService} from \"@shared/services/flowing-gas/operator-balance/operator-balance-service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {BaseOperatorBalanceReportTabComponent} from \"app/gcts/flowinggas/operator-balance-report/base-operator-balance-report-tab.component\";\r\n\r\n@Component({\r\n selector: 'app-operator-balance-report-location-balance-tab',\r\n templateUrl: './operator-balance-report-location-balance-tab.component.html',\r\n styleUrls: ['./operator-balance-report-location-balance-tab.component.css']\r\n})\r\nexport class OperatorBalanceReportLocationBalanceTabComponent extends BaseOperatorBalanceReportTabComponent {\r\n @Input() model: OperatorBalanceReportModel;\r\n @ViewChild(DxDataGridComponent) operatorBalanceReportLocationBalanceDataGrid: DxDataGridComponent;\r\n\r\n constructor(protected fileService: FileService,\r\n protected operatorBalanceService: OperatorBalanceService,\r\n protected sessionService: SessionService) {\r\n super(operatorBalanceService, sessionService);\r\n }\r\n\r\n public getOpeningBalance(e: any): number {\r\n return +e.component.element().attributes[\"data-master\"].value;\r\n }\r\n\r\n public exportCsvClicked(): void {\r\n const headers = ['Location Name', 'Gas Day', 'Confirmed Receipt (Out)', 'Confirmed Delivery (In)', 'Net Confirmed', 'Measured Receipt (In)', 'Measured Delivery (Out)', 'Net Measured'];\r\n const columns = ['locationName', 'gasDay', 'confirmedReceipt', 'confirmedDelivery', 'netConfirmed', 'measuredReceipt', 'measuredDelivery', 'netMeasured'];\r\n\r\n if (this.model.displayIT) {\r\n headers.push('Net Inventory Transfer');\r\n columns.push('netInventoryTransfer');\r\n }\r\n\r\n headers.push('Variance');\r\n headers.push('Cumulative Variance');\r\n columns.push('variance');\r\n columns.push('cumulativeVariance');\r\n\r\n const data = [];\r\n const orderedLocationBalanceSearchResults = _.orderBy(this.model.locationBalanceSearchResults, x => x['locationName']);\r\n _.forEach(orderedLocationBalanceSearchResults, searchResult => {\r\n _.forEach(searchResult.dailyBalances, dailyBalance => {\r\n data.push({\r\n locationName: searchResult['locationName'],\r\n gasDay: dailyBalance.gasDay,\r\n confirmedReceipt: dailyBalance.confirmedReceipt,\r\n confirmedDelivery: dailyBalance.confirmedDelivery,\r\n netConfirmed: dailyBalance.netConfirmed,\r\n measuredReceipt: dailyBalance.measuredReceipt,\r\n measuredDelivery: dailyBalance.measuredDelivery,\r\n netMeasured: dailyBalance.netMeasured,\r\n netInventoryTransfer: dailyBalance.netInventoryTransfer,\r\n variance: dailyBalance.variance,\r\n cumulativeVariance: dailyBalance.cumulativeVariance\r\n });\r\n });\r\n });\r\n this.exportCsv(headers, columns, data);\r\n }\r\n\r\n\r\n protected exportCsv(headers: string[], columns: string[], data: any[]) {\r\n const operatorMnemonic = _.isNil(this.model.lastSearchParams.operatorId) ? 'All' : _.find(this.model.operators, x => x.cid === this.model.lastSearchParams.operatorId).mnemonic;\r\n const filename = 'locationBalance_' + operatorMnemonic + '_' + this.model.lastSearchParams.billingGasMonth + '.csv';\r\n\r\n this.fileService.downloadCsvFile(filename, data, headers, columns);\r\n }\r\n\r\n}\r\n\r\n","\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n","import {GasDay} from \"@model/gas-day\";\r\nimport {ModalComponent} from \"@shared/components/modal/modal.component\";\r\nimport {Component, OnInit, ViewChild} from \"@angular/core\";\r\nimport {BilledExcess, BilledExcessDetail} from \"@shared/services/flowing-gas/operator-balance/operator-balance-service\";\r\nimport {DxTabPanelComponent} from \"devextreme-angular\";\r\nimport * as _ from \"lodash\";\r\nimport {UnitOfMeasure} from \"@model/unit-of-measure\";\r\n\r\nexport class BilledExcessQuantityPopupModel {\r\n dailyTier1Fees: BilledExcessTierTabModel;\r\n dailyTier2Fees: BilledExcessTierTabModel;\r\n dailyTier3Fees: BilledExcessTierTabModel;\r\n dailyTier4Fees: BilledExcessTierTabModel;\r\n cumulativeTier1Fees: BilledExcessTierTabModel;\r\n cumulativeTier2Fees: BilledExcessTierTabModel;\r\n}\r\n\r\nexport class BilledExcessTierTabModel {\r\n displayTotalEstimatedFee: boolean;\r\n\r\n dailyTiers: BilledExcessDailyTierModel[];\r\n}\r\n\r\nexport class BilledExcessDailyTierModel {\r\n gasDay: GasDay;\r\n variance: number;\r\n tolerance: number;\r\n calcExcess: number;\r\n billedExcess: number;\r\n estimatedFee: number;\r\n\r\n public static create(tier: string, billedExcessDetail: BilledExcessDetail, unit: string): BilledExcessDailyTierModel {\r\n const billedExcessDailyTierModel = new BilledExcessDailyTierModel();\r\n billedExcessDailyTierModel.gasDay = billedExcessDetail.gasDay;\r\n billedExcessDailyTierModel.variance = billedExcessDetail[tier].variance;\r\n billedExcessDailyTierModel.tolerance = billedExcessDetail[tier].tolerance;\r\n billedExcessDailyTierModel.calcExcess = billedExcessDetail[tier].calculatedExcess;\r\n billedExcessDailyTierModel.billedExcess = billedExcessDetail[tier].billedExcess;\r\n billedExcessDailyTierModel.estimatedFee = billedExcessDetail[tier].estimatedFee;\r\n return billedExcessDailyTierModel;\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'app-billed-excess-quantity-popup',\r\n templateUrl: './billed-excess-quantity-popup.component.html',\r\n styleUrls: ['./billed-excess-quantity-popup.component.css']\r\n})\r\nexport class BilledExcessQuantityPopupComponent implements OnInit {\r\n\r\n model: BilledExcessQuantityPopupModel = new BilledExcessQuantityPopupModel();\r\n\r\n @ViewChild(ModalComponent) modal: ModalComponent;\r\n @ViewChild('tabPanel') tabPanel: DxTabPanelComponent;\r\n\r\n dailyModalTabs = [\r\n {id: 1, title: \"Daily Tier 1\", template: \"dailyTier1Template\"},\r\n {id: 2, title: \"Daily Tier 2\", template: \"dailyTier2Template\"},\r\n {id: 3, title: \"Daily Tier 3\", template: \"dailyTier3Template\"},\r\n {id: 4, title: \"Daily Tier 4\", template: \"dailyTier4Template\"},\r\n {id: 5, title: \"Cumulative Tier 1\", template: \"cumulativeTier1Template\"},\r\n {id: 4, title: \"Cumulative Tier 2\", template: \"cumulativeTier2Template\"}\r\n ];\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n close() {\r\n this.modal.hide();\r\n }\r\n\r\n show(billedExcess: BilledExcess, unit: string): void {\r\n this.model.dailyTier1Fees = this.createTierTabModel('tier1', billedExcess.billedExcessDetails, unit);\r\n this.model.dailyTier2Fees = this.createTierTabModel('tier2', billedExcess.billedExcessDetails, unit);\r\n this.model.dailyTier3Fees = this.createTierTabModel('tier3', billedExcess.billedExcessDetails, unit);\r\n this.model.dailyTier4Fees = this.createTierTabModel('tier4', billedExcess.billedExcessDetails, unit);\r\n this.model.cumulativeTier1Fees = this.createTierTabModel('cumulativeTier1', billedExcess.billedExcessDetails, unit);\r\n this.model.cumulativeTier2Fees = this.createTierTabModel('cumulativeTier2', billedExcess.billedExcessDetails, unit);\r\n this.modal.show();\r\n }\r\n\r\n private createTierTabModel(tier: string, billedExcessDetails: BilledExcessDetail[], unit: string): BilledExcessTierTabModel {\r\n const billedExcessTierTabModel = new BilledExcessTierTabModel();\r\n billedExcessTierTabModel.displayTotalEstimatedFee = unit === UnitOfMeasure.GJ.value;\r\n billedExcessTierTabModel.dailyTiers = _.map(billedExcessDetails, x => BilledExcessDailyTierModel.create(tier, x, unit));\r\n return billedExcessTierTabModel;\r\n }\r\n}\r\n","\r\n
\r\n
\r\n Summary Rows: {{model.billedExcessSearchResults.length}}\r\n AS OF {{model.searchDateTime | dateFormat:'YYYY-MMM-DD H:mm:ss'}}\r\n
0\" class=\"pull-right\">\r\n Export CSV\r\n | \r\n PDF\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n\r\n \r\n
\r\n Daily Tier 1
Billed Excess\r\n
\r\n\r\n \r\n
\r\n Daily Tier 2
Billed Excess\r\n
\r\n\r\n \r\n
\r\n Daily Tier 3
Billed Excess\r\n
\r\n\r\n \r\n
\r\n Daily Tier 4
Billed Excess\r\n
\r\n\r\n \r\n
\r\n Cumulative Tier
1 Billed Excess\r\n
\r\n\r\n \r\n
\r\n Cumulative Tier
2 Billed Excess\r\n
\r\n\r\n \r\n
\r\n Detail\r\n
\r\n\r\n
\r\n \r\n\r\n \r\n\r\n \r\n \r\n
\r\n {{ cellInfo.value | gasDayFormat }}\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n","import {Component, Input, ViewChild} from '@angular/core';\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {OperatorBalanceReportModel} from \"app/gcts/flowinggas/operator-balance-report/operator-balance-report.model\";\r\nimport {BaseOperatorBalanceReportTabComponent} from \"app/gcts/flowinggas/operator-balance-report/base-operator-balance-report-tab.component\";\r\nimport {BilledExcess, OperatorBalanceService} from \"@shared/services/flowing-gas/operator-balance/operator-balance-service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport * as _ from \"lodash\";\r\nimport {BilledExcessQuantityPopupComponent} from \"app/gcts/flowinggas/operator-balance-report/operator-balance-report-billed-excess-quantity-tab/billed-excess-quantity-popup/billed-excess-quantity-popup.component\";\r\n\r\n@Component({\r\n selector: 'app-operator-balance-report-billed-excess-quantity-tab',\r\n templateUrl: './operator-balance-report-billed-excess-quantity-tab.component.html',\r\n styleUrls: ['./operator-balance-report-billed-excess-quantity-tab.component.css']\r\n})\r\nexport class OperatorBalanceReportBilledExcessQuantityTabComponent extends BaseOperatorBalanceReportTabComponent{\r\n @Input() model: OperatorBalanceReportModel;\r\n @ViewChild(DxDataGridComponent) operatorBalanceReportBilledExcessQuantityDataGrid: DxDataGridComponent;\r\n @ViewChild(BilledExcessQuantityPopupComponent) billedExcessQuantityPopupModal: BilledExcessQuantityPopupComponent;\r\n\r\n constructor(protected fileService: FileService,\r\n protected operatorBalanceService: OperatorBalanceService,\r\n protected sessionService: SessionService) {\r\n super(operatorBalanceService, sessionService);\r\n }\r\n\r\n public loadPopup(data: any): void {\r\n const billedExcess = data as BilledExcess;\r\n\r\n this.billedExcessQuantityPopupModal.show(billedExcess, this.model.lastSearchParams.units);\r\n }\r\n\r\n public exportCsvClicked(): void {\r\n const headers = ['Location', 'Gas Day', 'Daily Tier 1 Billed Excess', 'Daily Tier 2 Billed Excess', 'Daily Tier 3 Billed Excess', 'Daily Tier 4 Billed Excess', 'Cumulative Tier 1 Billed Excess', 'Cumulative Tier 2 Billed Excess'];\r\n const columns = ['locationName', 'gasDay', 'tier1BilledExcess', 'tier2BilledExcess', 'tier3BilledExcess', 'tier4BilledExcess', 'cumulativeTier1BilledExcess', 'cumulativeTier2BilledExcess'];\r\n\r\n const data = [];\r\n const orderedBilledExcessSearchResults = _.orderBy(this.model.billedExcessSearchResults, x => x['locationName']);\r\n _.forEach(orderedBilledExcessSearchResults, searchResult => {\r\n _.forEach(searchResult.billedExcessDetails, daily => {\r\n data.push({\r\n locationName: searchResult['locationName'],\r\n gasDay: daily.gasDay,\r\n tier1BilledExcess: daily.tier1.billedExcess,\r\n tier2BilledExcess: daily.tier2.billedExcess,\r\n tier3BilledExcess: daily.tier3.billedExcess,\r\n tier4BilledExcess: daily.tier4.billedExcess,\r\n cumulativeTier1BilledExcess: daily.cumulativeTier1.billedExcess,\r\n cumulativeTier2BilledExcess: daily.cumulativeTier2.billedExcess\r\n });\r\n });\r\n });\r\n this.exportCsv(headers, columns, data);\r\n }\r\n\r\n protected exportCsv(headers: string[], columns: string[], data: any[]) {\r\n const operatorMnemonic = _.isNil(this.model.lastSearchParams.operatorId) ? 'All' : _.find(this.model.operators, x => x.cid === this.model.lastSearchParams.operatorId).mnemonic;\r\n const filename = 'billedexcess_' + operatorMnemonic + '_' + this.model.lastSearchParams.billingGasMonth + '.csv';\r\n\r\n this.fileService.downloadCsvFile(filename, data, headers, columns);\r\n }\r\n}\r\n\r\n","
\r\n
\r\n Number of Locations Found: {{model.dailyExcessSearchResults.length}}\r\n AS OF {{model.searchDateTime | dateFormat:'YYYY-MMM-DD H:mm:ss'}}\r\n
0\" class=\"pull-right\">\r\n Export CSV\r\n | \r\n PDF\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n Net Confirmed
(A)\r\n
\r\n \r\n
\r\n Authorized Makeup
(B)\r\n
\r\n \r\n
\r\n Nominated
Makeup
(C)\r\n
\r\n \r\n
\r\n Measured
Nominated Less
Makeup
(D = A - B)\r\n
\r\n \r\n
\r\n Net Measured
(E)\r\n
\r\n \r\n \r\n
\r\n Daily Variance
(F = E + D)\r\n
\r\n \r\n
\r\n Cumulative Variance
(G = G(-1) + F + B)\r\n
\r\n \r\n
\r\n Avg 30 Day Nom
Col D
(H)\r\n
\r\n\r\n
\r\n \r\n\r\n \r\n\r\n \r\n
\r\n Opening Balance:\r\n {{ getOpeningBalance(cellInfo) | numberFormat }}\r\n
\r\n \r\n \r\n
\r\n {{ cellInfo.value | gasDayFormat }}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n","import {Component, Input, ViewChild} from '@angular/core';\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {OperatorBalanceReportModel} from \"app/gcts/flowinggas/operator-balance-report/operator-balance-report.model\";\r\nimport {BaseOperatorBalanceReportTabComponent} from \"app/gcts/flowinggas/operator-balance-report/base-operator-balance-report-tab.component\";\r\nimport {OperatorBalanceService} from \"@shared/services/flowing-gas/operator-balance/operator-balance-service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport * as _ from \"lodash\";\r\n\r\n@Component({\r\n selector: 'app-operator-balance-report-lba-daily-variance-tab',\r\n templateUrl: './operator-balance-report-lba-daily-variance-tab.component.html',\r\n styleUrls: ['./operator-balance-report-lba-daily-variance-tab.component.css']\r\n})\r\nexport class OperatorBalanceReportLbaDailyVarianceTabComponent extends BaseOperatorBalanceReportTabComponent{\r\n @Input() model: OperatorBalanceReportModel;\r\n @ViewChild(DxDataGridComponent) operatorBalanceReportLbaDailyVarianceDataGrid: DxDataGridComponent;\r\n\r\n constructor(protected fileService: FileService,\r\n protected operatorBalanceService: OperatorBalanceService,\r\n protected sessionService: SessionService) {\r\n super(operatorBalanceService, sessionService);\r\n }\r\n\r\n public getOpeningBalance(cellInfo\r\n : any): number {\r\n return +cellInfo.component.element().attributes[\"data-master\"].value;\r\n }\r\n\r\n public exportCsvClicked(): void {\r\n const headers = [\r\n 'Location',\r\n 'Gas Day',\r\n 'Net Confirmed (A)',\r\n 'Authorized Makeup (B)',\r\n 'Nominated Makeup (C)',\r\n 'Measured Nominated Less Makeup (D = A - B)',\r\n 'Net Measured (E)',\r\n 'Net Inventory Transfer',\r\n 'Daily Variance (F = E + D)',\r\n 'Cumulative Variance (G = G(-1) + F + B)',\r\n 'Avg 30 Day Nom Col D (H)'\r\n ];\r\n const columns = [\r\n 'location',\r\n 'gasDay',\r\n 'netConfirmed',\r\n 'authorizedMakeup',\r\n 'nominatedMakeup',\r\n 'measuredNominatedLessMakeup',\r\n 'netMeasured',\r\n 'netInventory',\r\n 'dailyVariance',\r\n 'cumulativeVariance',\r\n 'avg30DayNom'\r\n ];\r\n\r\n if(!this.model.displayIT) {\r\n this.removeItemInArray(headers, 'Net Inventory Transfer');\r\n this.removeItemInArray(columns, 'netInventory');\r\n }\r\n\r\n const csvData = [];\r\n const orderedDailyExcessSearchResults = _.orderBy(this.model.dailyExcessSearchResults, x => x['locationName']);\r\n _.forEach(orderedDailyExcessSearchResults, dailyExcess => {\r\n _.forEach(dailyExcess.dailyVarianceDetails, dailyVarianceDetail => {\r\n csvData.push({\r\n location: dailyExcess['locationName'],\r\n gasDay: dailyVarianceDetail.gasDay.toString(),\r\n netConfirmed: dailyVarianceDetail.netNominated,\r\n authorizedMakeup: dailyVarianceDetail.authorizedMakeup,\r\n nominatedMakeup: dailyVarianceDetail.nominatedMakeup,\r\n measuredNominatedLessMakeup: dailyVarianceDetail.measuredNominatedLessMakeup,\r\n netMeasured: dailyVarianceDetail.netMeasured,\r\n netInventory: dailyVarianceDetail.netInventoryTransfer,\r\n dailyVariance: dailyVarianceDetail.dailyVariance,\r\n cumulativeVariance: dailyVarianceDetail.cumulativeVariance,\r\n avg30DayNom: dailyVarianceDetail.avg30DayNom\r\n });\r\n });\r\n });\r\n\r\n this.fileService.downloadCsvFile(this.getCsvFileName(), csvData, headers, columns);\r\n }\r\n\r\n private getCsvFileName(): string {\r\n const enterpriseMnemonic = _.find(this.model.operators, x => x.cid === this.model.lastSearchParams.operatorId).mnemonic;\r\n return `dailyExcess_${enterpriseMnemonic}_${this.model.lastSearchParams.billingGasMonth.toString()}.csv`;\r\n }\r\n\r\n private removeItemInArray(array: string[], itemToRemove: string): void {\r\n const index: number = array.indexOf(itemToRemove);\r\n if (index !== -1) {\r\n array.splice(index, 1);\r\n }\r\n }\r\n}\r\n\r\n","
\r\n
\r\n Number of Locations Found: {{model.cumulativeExcessSearchResults.length}}\r\n AS OF {{model.searchDateTime | dateFormat:'YYYY-MMM-DD H:mm:ss'}}\r\n
0\" class=\"pull-right\">\r\n Export CSV\r\n | \r\n PDF\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n {{ cumulativeExcessDaily.locationName}}\r\n
\r\n \r\n
\r\n {{ cellInfo.value | gasDayFormat }}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n","import * as _ from \"lodash\";\r\nimport {Component, Input, ViewChild} from '@angular/core';\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {OperatorBalanceReportModel} from \"app/gcts/flowinggas/operator-balance-report/operator-balance-report.model\";\r\nimport {OperatorBalanceService} from \"@shared/services/flowing-gas/operator-balance/operator-balance-service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {BaseOperatorBalanceReportTabComponent} from \"app/gcts/flowinggas/operator-balance-report/base-operator-balance-report-tab.component\";\r\n\r\n@Component({\r\n selector: 'app-operator-balance-report-cumulative-excess-tab',\r\n templateUrl: './operator-balance-report-cumulative-excess-tab.component.html',\r\n styleUrls: ['./operator-balance-report-cumulative-excess-tab.component.css']\r\n})\r\nexport class OperatorBalanceReportCumulativeExcessTabComponent extends BaseOperatorBalanceReportTabComponent {\r\n @Input() model: OperatorBalanceReportModel;\r\n @ViewChild(DxDataGridComponent) operatorBalanceReportCumulativeExcessDataGrid: DxDataGridComponent;\r\n\r\n constructor(protected fileService: FileService,\r\n protected operatorBalanceService: OperatorBalanceService,\r\n protected sessionService: SessionService) {\r\n super(operatorBalanceService, sessionService);\r\n }\r\n\r\n public exportCsvClicked(): void {\r\n const headers = ['Location', 'Gas Day', 'Cumulative Variance', 'Minimum Makeup', 'Makeup Relief', 'Adjusted Cumulative Variance'];\r\n const columns = ['location', 'gasDay', 'cumulativeVariance', 'minimumMakeup', 'makeupRelief', 'adjustedCumulativeVariance'];\r\n\r\n const csvData = [];\r\n const orderedCumulativeExcessSearchResults = _.orderBy(this.model.cumulativeExcessSearchResults, x => x['locationName']);\r\n _.forEach(orderedCumulativeExcessSearchResults, cumulativeExcess => {\r\n _.forEach(cumulativeExcess.cumulativeVarianceDetails, cumulativeVarianceDetail => {\r\n csvData.push({\r\n location: cumulativeExcess['locationName'],\r\n gasDay: cumulativeVarianceDetail.gasDay.toString(),\r\n cumulativeVariance: cumulativeVarianceDetail.cumulativeVariance,\r\n minimumMakeup: cumulativeVarianceDetail.minimumMakeup,\r\n makeupRelief: cumulativeVarianceDetail.makeupRelief,\r\n adjustedCumulativeVariance: cumulativeVarianceDetail.adjustedCumulativeVariance\r\n });\r\n });\r\n });\r\n\r\n this.fileService.downloadCsvFile(this.getCsvFileName(), csvData, headers, columns);\r\n }\r\n\r\n private getCsvFileName(): string {\r\n const enterpriseMnemonic = _.find(this.model.operators, x => x.cid === this.model.lastSearchParams.operatorId).mnemonic;\r\n return `cumulativeExcess_${enterpriseMnemonic}_${this.model.lastSearchParams.billingGasMonth.toString()}.csv`;\r\n }\r\n}\r\n\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Start Gas Day: {{model.lastSearchParams?.startGasDay | gasDayFormat}}\r\n End Gas Day: {{model.lastSearchParams?.endGasDay | gasDayFormat}}\r\n Billing Month: {{model.lastSearchParams?.billingGasMonth}}\r\n Operator: {{model.lastSearchParams?.operatorId | displayName: 'cid' : 'displayName' : model.operators}}\r\n Units: {{model.lastSearchParams?.units}}\r\n Location: {{model.lastSearchParams?.locationId | displayName: 'id' : 'name' : model.lastSearchLocations | whenEmptyUse: 'All' }}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.searchParams.billingGasMonth}}\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.searchParams?.operatorId | displayName: 'id' : 'displayValue' : model.operators}}\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n GJ\r\n
\r\n
\r\n
\r\n
\r\n Dth\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.status}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.startGasDay | gasDayFormat}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.endGasDay | gasDayFormat}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.billingGasMonth}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.operatorId | displayName: 'cid' : 'displayValue' : model.operators}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.units}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.locationId | displayName: 'id' : 'name' : model.lastSearchLocations}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n","import {Component, ViewChild} from \"@angular/core\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {forkJoin, Observable, of} from \"rxjs\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {OperatorBalanceReportModel, OperatorBalanceReportSearchParams} from \"app/gcts/flowinggas/operator-balance-report/operator-balance-report.model\";\r\nimport {Enterprise, EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {concatMap, map, tap} from \"rxjs/operators\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {CommonDataLocation, LocationSearchRequest, LocationService} from \"@shared/services/common-data/location/location.service\";\r\nimport {LocationEnrichmentService} from \"@shared/services/enrichment/location-enrichment.service\";\r\nimport * as _ from \"lodash\";\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {CommonDataGasdayService} from \"@shared/services/common-data/common-data-gasday/common-data-gasday.service\";\r\nimport {UserService} from \"@shared/services/webapp/user/user-service\";\r\nimport {BillingProcess, FlowingGasAllocationAndBalancingBillingProcessService} from \"@shared/services/flowing-gas/flowing-gas-allocation-and-balancing-billing-process/flowing-gas-allocation-and-balancing-billing-process.service\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {DxTabPanelComponent} from \"devextreme-angular\";\r\nimport {BilledExcess, CumulativeExcess, DailyExcess, LocationBalance, OperatorBalanceService} from \"@shared/services/flowing-gas/operator-balance/operator-balance-service\";\r\nimport {UnitOfMeasure} from \"@model/unit-of-measure\";\r\nimport {AllocationMethod} from \"@model/allocation-method\";\r\n\r\n@Component({\r\n selector: 'app-operator-balance-report',\r\n templateUrl: './operator-balance-report.component.html',\r\n styleUrls: ['./operator-balance-report.component.css']\r\n})\r\n\r\nexport class OperatorBalanceReportComponent extends BaseSearchComponent {\r\n\r\n public model: OperatorBalanceReportModel = new OperatorBalanceReportModel();\r\n\r\n @ViewChild('tabPanel') tabPanel: DxTabPanelComponent;\r\n\r\n operatorBalanceTabs = [\r\n {id: 1, title: \"Location Balance\", template: \"locationBalanceTemplate\", disabled: false},\r\n {id: 2, title: \"Billed Excess Quantity\", template: \"billedExcessQuantityTemplate\", disabled: false},\r\n {id: 3, title: \"LBA Daily Variance\", template: \"lbaDailyVarianceTemplate\", disabled: false},\r\n {id: 4, title: \"Cumulative Excess\", template: \"cumulativeExcessTemplate\", disabled: false}\r\n ];\r\n\r\n constructor(\r\n appService: AppService,\r\n activatedRoute: ActivatedRoute,\r\n router: Router,\r\n protected alertService: AlertService,\r\n protected sessionService: SessionService,\r\n protected commonDataBillingMonthService: CommonDataBillingMonthService,\r\n protected enterpriseService: EnterpriseService,\r\n protected enterpriseEnrichmentService: EnterpriseEnrichmentService,\r\n protected locationService: LocationService,\r\n protected locationEnrichmentService: LocationEnrichmentService,\r\n protected commonDataGasDayService: CommonDataGasdayService,\r\n protected userService: UserService,\r\n protected flowingGasAllocationAndBalancingBillingProcessService: FlowingGasAllocationAndBalancingBillingProcessService,\r\n protected operatorBalanceService: OperatorBalanceService\r\n ) {\r\n super('Operator Balance Report', appService, activatedRoute, router, alertService);\r\n\r\n enterpriseEnrichmentService.setEnrichmentResource(enterpriseService);\r\n locationEnrichmentService.setEnrichmentResource(locationService);\r\n\r\n this.appService.hideMenu();\r\n }\r\n\r\n public onStartGasDayChanged(): void {\r\n if(_.isNil(this.model.searchParams.startGasDay)) return;\r\n\r\n const startGasMonth = GasMonth.fromGasDay(this.model.searchParams.startGasDay);\r\n this.model.minBillingGasMonth = startGasMonth;\r\n this.model.searchParams.endGasDay = this.model.maxGasDay.isLessThan(startGasMonth.end()) ? this.model.maxGasDay : startGasMonth.end();\r\n this.model.maxGasDayWithinMonth = this.model.searchParams.endGasDay;\r\n\r\n this.model.searchParams.billingGasMonth = this.setDefaultBillingGasMonth(startGasMonth);\r\n this.model.maxBillingGasMonth = this.setMaxBillingGasMonth(startGasMonth);\r\n }\r\n\r\n public onOperatorChanged(): void {\r\n this.model.searchParams.locationId = null;\r\n if(_.isNil(this.model.searchParams.operatorId)) {\r\n this.model.locations = [];\r\n return;\r\n }\r\n this.queryOperatorLocations().subscribe(() => {});\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return this.paramValidator().isValid(params);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {};\r\n params['startGasDay'] = this.model.searchParams.startGasDay;\r\n params['endGasDay'] = this.model.searchParams.endGasDay;\r\n params['operatorCid'] = this.model.searchParams.operatorId;\r\n params['locationId'] = !_.isNil(this.model.searchParams.locationId) ? this.model.searchParams.locationId : null;\r\n params['gasMonth'] = this.model.searchParams.billingGasMonth;\r\n params['units'] = this.model.searchParams.units;\r\n return params;\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n this.model.isExternalUser = this.userService.user.isExternalUser;\r\n const getOldestBillingMonth$ = this.commonDataBillingMonthService.getOldest()\r\n .pipe(\r\n tap(oldestBillingMonth => this.model.oldestBillingMonth = oldestBillingMonth)\r\n );\r\n\r\n const getOpenBillingMonth$ = this.commonDataBillingMonthService.getOpen()\r\n .pipe(\r\n tap(openBillingMonth => this.model.openBillingMonth = openBillingMonth)\r\n );\r\n\r\n const getPreliminaryBillingMonth$ = this.commonDataBillingMonthService.getPreliminary()\r\n .pipe(\r\n tap(preliminaryBillingMonth => this.model.preliminaryBillingMonth = preliminaryBillingMonth)\r\n );\r\n\r\n const queryDateTime$ = this.commonDataGasDayService.getServerTimeData()\r\n .pipe(\r\n tap(serverTimeData => this.model.currentGasDay = serverTimeData.gasDay)\r\n );\r\n\r\n return forkJoin([getOldestBillingMonth$, getOpenBillingMonth$, getPreliminaryBillingMonth$, queryDateTime$])\r\n .pipe(\r\n tap(() => {\r\n this.model.maxReportingGasMonth = this.model.preliminaryBillingMonth ? this.model.preliminaryBillingMonth.gasMonth : this.model.openBillingMonth.gasMonth;\r\n\r\n this.model.minGasDay = this.model.oldestBillingMonth.firstDayOfMonth;\r\n const yesterday = this.model.currentGasDay.addDays(-1);\r\n this.model.maxGasDay = yesterday.isLessThan(this.model.maxReportingGasMonth.end()) ? yesterday : this.model.maxReportingGasMonth.end();\r\n this.model.maxGasDayWithinMonth = this.model.maxGasDay;\r\n\r\n this.model.minBillingGasMonth = this.model.oldestBillingMonth.gasMonth;\r\n this.model.maxBillingGasMonth = this.model.openBillingMonth.gasMonth;\r\n })\r\n );\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n const queryOperators$ = this.queryOperators();\r\n const queryOperatorLocations$ = this.queryOperatorLocations();\r\n\r\n return forkJoin([queryOperators$, queryOperatorLocations$]);\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n this.model.lastSearchLocations = _.clone(this.model.locations);\r\n\r\n const queryStatus$ = this.queryStatus();\r\n\r\n const queryLocationBalanceData$ = this.queryLocationBalanceData();\r\n\r\n const isLbaTabsDisabled = _.isNil(this.model.searchParams.locationId)\r\n ? !_.some(this.model.locations , x => x.allocationMethod === AllocationMethod.LBA.value)\r\n : !_.some(this.model.locations, x => x.id === this.model.searchParams.locationId && x.allocationMethod === AllocationMethod.LBA.value);\r\n\r\n const queryBilledExcessData$ = isLbaTabsDisabled? of({}): this.queryBilledExcessData();\r\n\r\n const queryDailyExcessData$ = isLbaTabsDisabled? of({}): this.queryDailyExcessData();\r\n\r\n const queryCumulativeExcessData$ = isLbaTabsDisabled? of({}): this.queryCumulativeExcessData();\r\n\r\n const getServerDateTime$ = this.commonDataGasDayService.getServerTimeData()\r\n .pipe(\r\n tap(serverTimeData => this.model.searchDateTime = serverTimeData.serverTime.toDate())\r\n );\r\n\r\n return forkJoin([queryStatus$, queryLocationBalanceData$, queryBilledExcessData$, queryDailyExcessData$, queryCumulativeExcessData$, getServerDateTime$])\r\n .pipe(\r\n tap(() => {\r\n this.model.selectedTabIndex = 0;\r\n this.model.hasSearchResults = true;\r\n this.operatorBalanceTabs[1].disabled = this.operatorBalanceTabs[2].disabled = this.operatorBalanceTabs[3].disabled = isLbaTabsDisabled;\r\n })\r\n );\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams = new OperatorBalanceReportSearchParams();\r\n // bug 176875\r\n const yesterday = this.model.currentGasDay.addDays(-1);\r\n this.model.searchParams.endGasDay = yesterday;\r\n this.model.searchParams.startGasDay = GasMonth.fromGasDay(yesterday).start();\r\n this.model.maxGasDayWithinMonth = this.model.maxGasDay;\r\n\r\n const startGasMonth = GasMonth.fromGasDay(this.model.searchParams.startGasDay);\r\n this.model.minBillingGasMonth = startGasMonth;\r\n this.model.maxBillingGasMonth = this.setMaxBillingGasMonth(startGasMonth);\r\n this.model.searchParams.billingGasMonth = this.setDefaultBillingGasMonth(startGasMonth);\r\n\r\n this.model.searchParams.units = 'GJ';\r\n this.model.clearSearchResults();\r\n }\r\n\r\n private setDefaultBillingGasMonth(startGasMonth: GasMonth): GasMonth {\r\n if (startGasMonth.isEqual(this.model.openBillingMonth.gasMonth)) {\r\n return this.model.openBillingMonth.gasMonth;\r\n } else if (startGasMonth.isGreaterThan(this.model.openBillingMonth.gasMonth) ||\r\n (startGasMonth.isLessThan(this.model.openBillingMonth.gasMonth) && this.model.searchParams.billingGasMonth.isLessThan(startGasMonth))) {\r\n return startGasMonth;\r\n } else if (startGasMonth.isLessThan(this.model.openBillingMonth.gasMonth)) {\r\n return this.model.openBillingMonth.gasMonth;\r\n }\r\n }\r\n\r\n private setMaxBillingGasMonth(startGasMonth: GasMonth) : GasMonth {\r\n return startGasMonth.isEqual(this.model.maxReportingGasMonth) ? this.model.maxReportingGasMonth : this.model.openBillingMonth.gasMonth;\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams = new OperatorBalanceReportSearchParams();\r\n\r\n this.model.searchParams.startGasDay = typedParams.asGasDay('startGasDay');\r\n this.model.searchParams.endGasDay = typedParams.asGasDay('endGasDay');\r\n this.model.searchParams.operatorId = typedParams.asNumber('operatorCid');\r\n this.model.searchParams.locationId = typedParams.asNullableNumber('locationId');\r\n this.model.searchParams.billingGasMonth = typedParams.asGasMonth('gasMonth');\r\n this.model.searchParams.units = typedParams.asString('units');\r\n }\r\n\r\n private paramValidator(): ParamValidator {\r\n return ParamValidator.Standard();\r\n }\r\n\r\n private queryStatus(): Observable {\r\n const monthForStatus = this.model.isExternalUser ? GasMonth.fromGasDay(this.model.lastSearchParams.startGasDay) : this.model.lastSearchParams.billingGasMonth;\r\n return this.flowingGasAllocationAndBalancingBillingProcessService.get(monthForStatus)\r\n .pipe(\r\n tap(billingProcess => {\r\n this.model.status = billingProcess[0].status === 'Final' ? 'Final' : 'Preliminary';\r\n })\r\n );\r\n }\r\n\r\n private queryLocationBalanceData(): Observable {\r\n return this.getLocationIdsForReportData()\r\n .pipe(\r\n concatMap(locationIds => {\r\n const getLocationReportData$ = _.map(locationIds, locationId => this.operatorBalanceService.getLocationBalance(\r\n locationId,\r\n this.model.searchParams.startGasDay,\r\n this.model.searchParams.endGasDay,\r\n this.model.searchParams.billingGasMonth,\r\n this.model.searchParams.operatorId,\r\n UnitOfMeasure.find(this.model.searchParams.units)));\r\n\r\n return forkJoin(getLocationReportData$);\r\n }),\r\n concatMap(locationBalances => this.locationEnrichmentService.enrichArray(locationBalances, 'location', 'location')),\r\n tap(locationBalances => {\r\n this.model.locationBalanceSearchResults = locationBalances;\r\n this.model.displayIT = _.some(locationBalances, x => x.inventoryTransferExists);\r\n })\r\n );\r\n }\r\n\r\n private queryBilledExcessData(): Observable {\r\n return this.getLocationIdsForReportData(AllocationMethod.LBA)\r\n .pipe(\r\n concatMap(locationIds => {\r\n // Handle when there are no LBA Locations\r\n if(_.isEmpty(locationIds)) {\r\n this.model.billedExcessSearchResults = [];\r\n return of([]);\r\n }\r\n\r\n const getLocationReportData$ = _.map(locationIds, locationId => this.operatorBalanceService.getBilledExcess(\r\n locationId,\r\n this.model.searchParams.startGasDay,\r\n this.model.searchParams.endGasDay,\r\n this.model.searchParams.billingGasMonth,\r\n this.model.searchParams.operatorId,\r\n UnitOfMeasure.find(this.model.searchParams.units)));\r\n\r\n return forkJoin(getLocationReportData$);\r\n }),\r\n concatMap(locationBalances => this.locationEnrichmentService.enrichArray(locationBalances, 'location', 'location')),\r\n tap(billedExcesses => this.model.billedExcessSearchResults = billedExcesses)\r\n );\r\n }\r\n\r\n private queryDailyExcessData(): Observable {\r\n return this.getLocationIdsForReportData(AllocationMethod.LBA)\r\n .pipe(\r\n concatMap(locationIds => {\r\n // Handle when there are no LBA Locations\r\n if(_.isEmpty(locationIds)) {\r\n this.model.dailyExcessSearchResults = [];\r\n return of([]);\r\n }\r\n\r\n const getLocationReportData$ = _.map(locationIds, locationId => this.operatorBalanceService.getDailyExcess(\r\n locationId,\r\n this.model.searchParams.startGasDay,\r\n this.model.searchParams.endGasDay,\r\n this.model.searchParams.billingGasMonth,\r\n this.model.searchParams.operatorId,\r\n UnitOfMeasure.find(this.model.searchParams.units)));\r\n\r\n return forkJoin(getLocationReportData$);\r\n }),\r\n concatMap(locationBalances => this.locationEnrichmentService.enrichArray(locationBalances, 'location', 'location')),\r\n tap(dailyExcesses => this.model.dailyExcessSearchResults = dailyExcesses)\r\n );\r\n }\r\n\r\n\r\n private queryCumulativeExcessData(): Observable {\r\n return this.getLocationIdsForReportData(AllocationMethod.LBA)\r\n .pipe(\r\n concatMap(locationIds => {\r\n // Handle when there are no LBA Locations\r\n if(_.isEmpty(locationIds)) {\r\n this.model.cumulativeExcessSearchResults = [];\r\n return of([]);\r\n }\r\n\r\n const getLocationReportData$ = _.map(locationIds, locationId => this.operatorBalanceService.getCumulativeExcess(\r\n locationId,\r\n this.model.searchParams.startGasDay,\r\n this.model.searchParams.endGasDay,\r\n this.model.searchParams.billingGasMonth,\r\n this.model.searchParams.operatorId,\r\n UnitOfMeasure.find(this.model.searchParams.units)));\r\n\r\n return forkJoin(getLocationReportData$);\r\n }),\r\n concatMap(locationBalances => this.locationEnrichmentService.enrichArray(locationBalances, 'location', 'location')),\r\n tap(cumulativeExcesses => this.model.cumulativeExcessSearchResults = cumulativeExcesses)\r\n );\r\n }\r\n\r\n private getLocationIdsForReportData(filterAllocationMethod?: AllocationMethod): Observable {\r\n const searchParams = new LocationSearchRequest();\r\n searchParams.gasDay = this.model.searchParams.billingGasMonth.end();\r\n searchParams.operatorCid = this.model.searchParams.operatorId;\r\n searchParams.hasOmvAccount = true;\r\n return this.model.searchParams.locationId\r\n ? of([this.model.searchParams.locationId])\r\n : this.locationService.queryLocations(searchParams)\r\n .pipe(\r\n map(locations => {\r\n const filteredLocations = _.filter(locations, location => !filterAllocationMethod || location.allocationMethod === filterAllocationMethod.value);\r\n return _.map(filteredLocations, location => location.id);\r\n })\r\n );\r\n }\r\n\r\n private queryOperatorLocations(): Observable {\r\n if(this.userService.user.isExternalUser) {\r\n this.model.searchParams.operatorId = this.userService.user.enterpriseId;\r\n }\r\n\r\n if(_.isNil(this.model.searchParams.operatorId)) {\r\n return of(null);\r\n }\r\n const searchParams = new LocationSearchRequest();\r\n searchParams.gasDay = this.model.searchParams.billingGasMonth.end();\r\n searchParams.operatorCid = this.model.searchParams.operatorId;\r\n searchParams.hasOmvAccount = true;\r\n\r\n return this.locationService.queryLocations(searchParams)\r\n .pipe(\r\n concatMap(locations => this.locationEnrichmentService.enrichArray(locations, 'id')),\r\n tap(locations => {\r\n this.model.locations = _.orderBy(locations, x => x.name);\r\n if(this.model.locations.length === 1) {\r\n this.model.searchParams.locationId = this.model.locations[0].id;\r\n }\r\n })\r\n );\r\n }\r\n\r\n private queryOperators(): Observable {\r\n const queryOperators$ = !this.userService.user.isExternalUser\r\n ? this.enterpriseService.queryLocationOperatorsByPipeline(this.sessionService.getPipeline().code, this.model.searchParams.billingGasMonth.end())\r\n : of([Enterprise.createWithId(this.userService.user.enterpriseId)]);\r\n\r\n return queryOperators$\r\n .pipe(\r\n concatMap(enterprises => this.enterpriseEnrichmentService.enrichArray(enterprises, 'cid')),\r\n tap(enterprises => {\r\n this.model.operators = enterprises;\r\n\r\n if(this.userService.user.isExternalUser) {\r\n this.model.searchParams.operatorId = this.userService.user.enterpriseId;\r\n }\r\n })\r\n );\r\n }\r\n}\r\n","import {BillingMonth} from \"@model/billing-month\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport * as _ from \"lodash\";\r\nimport {BillingProcess} from \"@shared/services/flowing-gas/flowing-gas-allocation-and-balancing-billing-process/flowing-gas-allocation-and-balancing-billing-process.service\";\r\nimport {AccountingLocation} from \"@shared/interfaces/location\";\r\nimport {BaseViewModel} from \"@model/base-view-model\";\r\nimport {PendingMeasurementSummary, PendingTransferTransaction, PendingTransportationTransaction} from \"@shared/services/flowing-gas/pending-prior-period-adjustment/pending-prior-period-adjustment.service\";\r\n\r\nexport class PendingPriorPeriodAdjustmentModel extends BaseViewModel {\r\n oldestBillingMonth: BillingMonth;\r\n maxBillingMonth: BillingMonth;\r\n openBillingMonth: BillingMonth;\r\n preliminaryBillingMonth: BillingMonth;\r\n measurementBillingProcess: BillingProcess;\r\n allocationAndBalancingBillingProcess: BillingProcess;\r\n locations: AccountingLocation[];\r\n\r\n pendingStatuses: PendingStatus[] = PendingStatus.ALL;\r\n\r\n searchParams: PendingPriorPeriodAdjustmentSearchParams = new PendingPriorPeriodAdjustmentSearchParams();\r\n lastSearchParams: PendingPriorPeriodAdjustmentSearchParams;\r\n\r\n measurementSelectAll: boolean;\r\n transportationSelectAll: boolean;\r\n transferSelectAll: boolean;\r\n\r\n measurementSearchResults: PendingMeasurementSummary[];\r\n transportationSearchResults: PendingTransportationTransaction[];\r\n transferSearchResults: PendingTransferTransaction[];\r\n\r\n transferDSFieldsVisible: boolean;\r\n public hasSearchResults(): boolean {\r\n return !_.isNil(this.measurementSearchResults) && !_.isNil(this.transportationSearchResults) && !_.isNil(this.transferSearchResults);\r\n }\r\n\r\n public clearSelectAlls(): void {\r\n this.measurementSelectAll = this.transportationSelectAll = this.transferSelectAll = false;\r\n }\r\n\r\n public clearSearchResults(): void {\r\n this.clearSelectAlls();\r\n this.measurementSearchResults = this.transportationSearchResults = this.transferSearchResults = null;\r\n }\r\n}\r\n\r\nexport class PendingPriorPeriodAdjustmentSearchParams {\r\n billingMonth: GasMonth;\r\n acceptedBillingMonth: GasMonth;\r\n pendingStatus: string = PendingStatus.RECEIVED.value;\r\n locationId?: number;\r\n}\r\n\r\nexport class PendingStatus {\r\n public static RECEIVED: PendingStatus = new PendingStatus('Received');\r\n public static ACCEPTED: PendingStatus = new PendingStatus('Accepted');\r\n public static SUBMITTED: PendingStatus = new PendingStatus('Submitted');\r\n\r\n public static ALL:PendingStatus[] = [PendingStatus.RECEIVED, PendingStatus.ACCEPTED, PendingStatus.SUBMITTED];\r\n\r\n constructor(private _value: string) {\r\n }\r\n\r\n get value(): string {\r\n return this._value;\r\n }\r\n\r\n public static find(value: string): PendingStatus {\r\n if(_.isNil(value)) return null;\r\n const valueAsLowerCase = value.toLowerCase();\r\n return _.find(this.ALL, x => x.value.toLowerCase() === valueAsLowerCase);\r\n }\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {FlowinggasResourceService} from \"@shared/resources/flowinggas-resource.service\";\r\nimport {Observable} from \"rxjs\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {map} from \"rxjs/operators\";\r\nimport * as _ from \"lodash\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {DateTime} from \"@model/date-time\";\r\n\r\n@Injectable()\r\nexport class PendingPriorPeriodAdjustmentService {\r\n\r\n constructor(private flowingGasResourceService: FlowinggasResourceService) {\r\n }\r\n\r\n public queryPendingMeasurementSummaries(gasMonth: GasMonth, acceptedBillingMonth: GasMonth, pendingStatus: string, locationId?: number): Observable{\r\n const params = new GCTSHttpParams();\r\n params.setGasMonth(gasMonth, 'gasMonth');\r\n params.setGasMonth(acceptedBillingMonth, 'acceptedBillingMonth');\r\n params.set('status', pendingStatus);\r\n params.setOptionalNumber('locationId', locationId);\r\n\r\n return this.flowingGasResourceService.get('/pendingmeasurementsummaries', true, params)\r\n .pipe(\r\n map(dtos => _.map(dtos, dto => PendingMeasurementSummary.create(dto)))\r\n );\r\n }\r\n\r\n public queryPendingMeasurements(gasMonth: GasMonth, locationId: number, pendingStatus: string, measurementType: string): Observable{\r\n const params = new GCTSHttpParams();\r\n params.setGasMonth(gasMonth, 'gasMonth');\r\n params.setNumber('locationId', locationId);\r\n params.set('status', pendingStatus);\r\n params.set('type', measurementType);\r\n\r\n return this.flowingGasResourceService.get('/pendingmeasurements', true, params)\r\n .pipe(\r\n map(dtos => _.map(dtos, dto => PendingMeasurement.create(dto)))\r\n );\r\n }\r\n\r\n public acceptPendingMeasurement(pendingAdjustmentId: number, pendingAdjustmentVersion: number): Observable {\r\n const body = {\r\n pendingAdjustmentId: pendingAdjustmentId,\r\n pendingAdjustmentVersion: pendingAdjustmentVersion\r\n };\r\n\r\n return this.flowingGasResourceService.put('/pendingmeasurements', body)\r\n .pipe(\r\n map(dto => PendingMeasurement.create(dto))\r\n );\r\n }\r\n\r\n public queryPendingTransportationTransactions(gasMonth: GasMonth, acceptedBillingMonth: GasMonth, pendingStatus: string, locationId?: number): Observable {\r\n const params = new GCTSHttpParams();\r\n params.setGasMonth(gasMonth, 'gasMonth');\r\n params.setGasMonth(acceptedBillingMonth, 'acceptedBillingMonth');\r\n params.set('status', pendingStatus);\r\n params.setOptionalNumber('locationId', locationId);\r\n\r\n return this.flowingGasResourceService.get('/pendingtransportationtransactions', true, params)\r\n .pipe(\r\n map(dtos => _.map(dtos, dto => PendingTransportationTransaction.create(dto)))\r\n );\r\n }\r\n\r\n public acceptPendingTransportationTransaction(pendingAdjustmentId: number, pendingAdjustmentVersion: number): Observable {\r\n const body = {\r\n pendingAdjustmentId: pendingAdjustmentId,\r\n pendingAdjustmentVersion: pendingAdjustmentVersion\r\n };\r\n\r\n return this.flowingGasResourceService.put('/pendingtransportationtransactions', body)\r\n .pipe(\r\n map(dto => PendingTransportationTransaction.create(dto))\r\n );\r\n }\r\n\r\n public queryPendingTransferTransactions(gasMonth: GasMonth, acceptedBillingMonth: GasMonth, pendingStatus: string, locationId?: number): Observable {\r\n const params = new GCTSHttpParams();\r\n params.setGasMonth(gasMonth, 'gasMonth');\r\n params.setGasMonth(acceptedBillingMonth, 'acceptedBillingMonth');\r\n params.set('status', pendingStatus);\r\n params.setOptionalNumber('locationId', locationId);\r\n\r\n return this.flowingGasResourceService.get('/pendingtransfertransactions', true, params)\r\n .pipe(\r\n map(dtos => _.map(dtos, dto => PendingTransferTransaction.create(dto)))\r\n );\r\n }\r\n\r\n public acceptPendingTransferTransaction(pendingAdjustmentId: number, pendingAdjustmentVersion: number): Observable {\r\n const body = {\r\n pendingAdjustmentId: pendingAdjustmentId,\r\n pendingAdjustmentVersion: pendingAdjustmentVersion\r\n };\r\n\r\n return this.flowingGasResourceService.put('/pendingtransfertransactions', body)\r\n .pipe(\r\n map(dto => PendingTransferTransaction.create(dto))\r\n );\r\n }\r\n}\r\n\r\nexport interface IPendingMeasurementSummaryResponse {\r\n id: number;\r\n version: number;\r\n billingMonth: string;\r\n locationId: number;\r\n measurementType: string;\r\n measurementStatus: string;\r\n latestEnergy?: number;\r\n newEnergy: number;\r\n netChange: number;\r\n}\r\n\r\nexport class PendingMeasurementSummary {\r\n id: number;\r\n version: number;\r\n billingMonth: GasMonth;\r\n locationId: number;\r\n measurementType: string;\r\n measurementStatus: string;\r\n latestEnergy?: number;\r\n newEnergy: number;\r\n netChange: number;\r\n\r\n public static create(dto: IPendingMeasurementSummaryResponse) {\r\n const pendingMeasurementSummary = new PendingMeasurementSummary();\r\n\r\n pendingMeasurementSummary.id = dto.id;\r\n pendingMeasurementSummary.version = dto.version;\r\n pendingMeasurementSummary.billingMonth = GasMonth.parse(dto.billingMonth);\r\n pendingMeasurementSummary.locationId = dto.locationId;\r\n pendingMeasurementSummary.measurementType = dto.measurementType;\r\n pendingMeasurementSummary.measurementStatus = dto.measurementStatus;\r\n pendingMeasurementSummary.latestEnergy = dto.latestEnergy;\r\n pendingMeasurementSummary.newEnergy = dto.newEnergy;\r\n pendingMeasurementSummary.netChange = dto.netChange;\r\n\r\n return pendingMeasurementSummary;\r\n }\r\n}\r\n\r\nexport interface IPendingMeasurementResponse extends IPendingMeasurementSummaryResponse {\r\n affectedGasDay: string;\r\n receivedDateTime: string;\r\n}\r\n\r\nexport class PendingMeasurement extends PendingMeasurementSummary {\r\n affectedGasDay: GasDay;\r\n receivedDateTime: DateTime;\r\n\r\n public static create(dto: IPendingMeasurementResponse): PendingMeasurement {\r\n const pendingMeasurement = new PendingMeasurement();\r\n\r\n pendingMeasurement.id = dto.id;\r\n pendingMeasurement.version = dto.version;\r\n pendingMeasurement.billingMonth = GasMonth.parse(dto.billingMonth);\r\n pendingMeasurement.locationId = dto.locationId;\r\n pendingMeasurement.measurementType = dto.measurementType;\r\n pendingMeasurement.measurementStatus = dto.measurementStatus;\r\n pendingMeasurement.latestEnergy = dto.latestEnergy;\r\n pendingMeasurement.newEnergy = dto.newEnergy;\r\n pendingMeasurement.netChange = dto.netChange;\r\n\r\n pendingMeasurement.affectedGasDay = GasDay.parse(dto.affectedGasDay);\r\n pendingMeasurement.receivedDateTime = DateTime.parse(dto.receivedDateTime);\r\n\r\n return pendingMeasurement;\r\n }\r\n}\r\n\r\nexport interface IPendingTransportationTransactionResponse {\r\n id: number;\r\n nomGroupId: number;\r\n serviceCode: string;\r\n serviceOptionCode: string;\r\n receiptLocationId: number;\r\n deliveryLocationId: number;\r\n bidPrice: number;\r\n isTaxExempt: boolean;\r\n affectedGasDay: string;\r\n acceptedBillingMonth?: string;\r\n receivedDateTime: string;\r\n energy: number;\r\n status: string;\r\n version: number;\r\n}\r\n\r\nexport class PendingTransportationTransaction {\r\n id: number;\r\n nomGroupId: number;\r\n serviceCode: string;\r\n serviceOptionCode: string;\r\n receiptLocationId: number;\r\n deliveryLocationId: number;\r\n bidPrice: number;\r\n isTaxExempt: boolean;\r\n affectedGasDay: GasDay;\r\n acceptedBillingMonth?: GasMonth;\r\n receivedDateTime: DateTime;\r\n energy: number;\r\n status: string;\r\n version: number;\r\n\r\n public static create(dto: IPendingTransportationTransactionResponse): PendingTransportationTransaction {\r\n const pendingTransportationTransaction = new PendingTransportationTransaction();\r\n\r\n pendingTransportationTransaction.id = dto.id;\r\n pendingTransportationTransaction.nomGroupId = dto.nomGroupId;\r\n pendingTransportationTransaction.serviceCode = dto.serviceCode;\r\n pendingTransportationTransaction.serviceOptionCode = dto.serviceOptionCode;\r\n pendingTransportationTransaction.receiptLocationId = dto.receiptLocationId;\r\n pendingTransportationTransaction.deliveryLocationId = dto.deliveryLocationId;\r\n pendingTransportationTransaction.bidPrice = dto.bidPrice;\r\n pendingTransportationTransaction.isTaxExempt = dto.isTaxExempt;\r\n pendingTransportationTransaction.affectedGasDay = GasDay.parse(dto.affectedGasDay);\r\n pendingTransportationTransaction.acceptedBillingMonth = GasMonth.parse(dto.acceptedBillingMonth);\r\n pendingTransportationTransaction.receivedDateTime = DateTime.parse(dto.receivedDateTime);\r\n pendingTransportationTransaction.energy = dto.energy;\r\n pendingTransportationTransaction.status = dto.status;\r\n pendingTransportationTransaction.version = dto.version;\r\n\r\n return pendingTransportationTransaction;\r\n }\r\n}\r\n\r\nexport interface IPendingTransferTransactionResponse {\r\n id: number;\r\n debitNomGroupId: number;\r\n creditNomGroupId: number;\r\n locationId: number;\r\n transactionType: string;\r\n affectedGasDay: string;\r\n acceptedBillingMonth?: string;\r\n receivedDateTime: string;\r\n energy: number;\r\n status: string;\r\n version: number;\r\n upDownContract: string;\r\n counterParty: string;\r\n}\r\n\r\nexport class PendingTransferTransaction {\r\n id: number;\r\n debitNomGroupId: number;\r\n creditNomGroupId: number;\r\n locationId: number;\r\n transactionType: string;\r\n affectedGasDay: GasDay;\r\n acceptedBillingMonth?: GasMonth;\r\n receivedDateTime: DateTime;\r\n energy: number;\r\n status: string;\r\n version: number;\r\n upDownContract: string;\r\n counterParty: string;\r\n\r\n public static create(dto: IPendingTransferTransactionResponse) {\r\n const pendingTransferTransaction = new PendingTransferTransaction();\r\n\r\n pendingTransferTransaction.id = dto.id;\r\n pendingTransferTransaction.debitNomGroupId = dto.debitNomGroupId;\r\n pendingTransferTransaction.creditNomGroupId = dto.creditNomGroupId;\r\n pendingTransferTransaction.locationId = dto.locationId;\r\n pendingTransferTransaction.transactionType = dto.transactionType;\r\n pendingTransferTransaction.affectedGasDay = GasDay.parse(dto.affectedGasDay);\r\n pendingTransferTransaction.acceptedBillingMonth = GasMonth.parse(dto.acceptedBillingMonth);\r\n pendingTransferTransaction.receivedDateTime = DateTime.parse(dto.receivedDateTime);\r\n pendingTransferTransaction.energy = dto.energy;\r\n pendingTransferTransaction.status = dto.status;\r\n pendingTransferTransaction.version = dto.version;\r\n pendingTransferTransaction.upDownContract = dto.upDownContract;\r\n pendingTransferTransaction.counterParty = dto.counterParty;\r\n\r\n return pendingTransferTransaction;\r\n }\r\n}\r\n","
\r\n
\r\n Number of results found: {{model.measurementSearchResults.length}}\r\n\r\n
0\" class=\"pull-right\">\r\n Export CSV\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n\r\n \r\n \r\n\r\n \r\n
\r\n {{ data.value | gasDayFormat }}\r\n
\r\n \r\n
\r\n {{data.value.toDate() | dateFormat:'YYYY-MMM-DD hh:mm:ss A'}}\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n","import {Component, Input} from \"@angular/core\";\r\nimport {PendingPriorPeriodAdjustmentModel} from \"app/gcts/flowinggas/pending-prior-period-adjustment/pending-prior-period-adjustment.model\";\r\nimport {PendingMeasurement, PendingMeasurementSummary, PendingPriorPeriodAdjustmentService} from \"@shared/services/flowing-gas/pending-prior-period-adjustment/pending-prior-period-adjustment.service\";\r\nimport * as _ from \"lodash\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {forkJoin, Observable} from \"rxjs\";\r\nimport {LocationService} from \"@shared/services/common-data/location/location.service\";\r\nimport {LocationEnrichmentService} from \"@shared/services/enrichment/location-enrichment.service\";\r\nimport {tap} from \"rxjs/operators\";\r\n\r\n@Component({\r\n selector: 'app-pending-ppa-measurement-tab',\r\n templateUrl: './pending-ppa-measurement-tab.component.html',\r\n styleUrls: ['./pending-ppa-measurement-tab.component.css']\r\n})\r\n\r\nexport class PendingPpaMeasurementTabComponent {\r\n @Input() model: PendingPriorPeriodAdjustmentModel;\r\n\r\n constructor(\r\n private pendingPriorPeriodAdjustmentService: PendingPriorPeriodAdjustmentService,\r\n private commonDataLocationService: LocationService,\r\n private locationEnrichmentService: LocationEnrichmentService,\r\n private fileService: FileService) {\r\n locationEnrichmentService.setEnrichmentResource(commonDataLocationService);\r\n }\r\n\r\n public onSelectAllClicked($event: any): void {\r\n const isChecked = this.model.measurementSelectAll;\r\n\r\n // Select or De-Select All Pending Measurements\r\n this.queryPendingMeasurementForAllSummaries()\r\n .subscribe(\r\n () => {}, // Do Nothing\r\n () => {}, // Do Nothing\r\n () => {\r\n _.forEach(this.model.measurementSearchResults, measurementSummary => {\r\n _.forEach(measurementSummary['pendingMeasurements'], pendingMeasurement => {\r\n pendingMeasurement['isSelected'] = isChecked;\r\n });\r\n });\r\n });\r\n }\r\n\r\n public uncheckMeasurementSelectAll($event: any): void {\r\n this.model.measurementSelectAll = false;\r\n }\r\n\r\n public exportCsvClicked(): void {\r\n const queryPendingMeasurements = _.map(this.model.measurementSearchResults,\r\n measurementSummary => this.pendingPriorPeriodAdjustmentService.queryPendingMeasurements(this.model.searchParams.billingMonth, measurementSummary.locationId, measurementSummary.measurementStatus, measurementSummary.measurementType));\r\n\r\n forkJoin(queryPendingMeasurements)\r\n .subscribe((pendingMeasurementsResults:PendingMeasurement[][]) => {\r\n const pendingMeasurements: PendingMeasurement[] = [];\r\n\r\n _.forEach(pendingMeasurementsResults, pendingMeasurementSummary => {\r\n _.forEach(pendingMeasurementSummary, pendingMeasurement => pendingMeasurements.push(pendingMeasurement));\r\n });\r\n\r\n this.locationEnrichmentService.enrichArray(pendingMeasurements, 'locationId', 'location')\r\n .subscribe(enrichedPendingMeasurements => {\r\n const csvData = _.map(enrichedPendingMeasurements, pendingMeasurement => ({\r\n locationName: pendingMeasurement['locationName'],\r\n measurementStatus: pendingMeasurement.measurementStatus,\r\n measurementType: pendingMeasurement.measurementType,\r\n affectedGasDay: pendingMeasurement.affectedGasDay.toString(),\r\n receivedDateTime: pendingMeasurement.receivedDateTime.toString(),\r\n latestEnergy: pendingMeasurement.latestEnergy,\r\n newEnergy: pendingMeasurement.newEnergy,\r\n netChange: pendingMeasurement.netChange\r\n })\r\n );\r\n\r\n const locationName = _.isNil(this.model.lastSearchParams.locationId) ? 'All' : _.find(this.model.locations, x => x.id === this.model.lastSearchParams.locationId).name;\r\n const fileName = `PendingMeasurement_${locationName}_${this.model.lastSearchParams.billingMonth.toString()}.csv`;\r\n const headers = ['Location Name', 'Measurement Status', 'Measurement Type', 'Affected Gas Day', 'Received Date Time', 'Latest Energy (GJ)', 'New Energy (GJ)', 'Net Change (GJ)'];\r\n const columns = ['locationName','measurementStatus','measurementType','affectedGasDay','receivedDateTime','latestEnergy','newEnergy','netChange'];\r\n\r\n this.fileService.downloadCsvFile(fileName, csvData, headers, columns);\r\n });\r\n });\r\n }\r\n\r\n public onPendingMeasurementSummaryExpand($event: any): void {\r\n $event.component.getDataSource().store().byKey($event.key).then(row => {\r\n if(!_.isNil(row['pendingMeasurements'])) return; // Do not reload or else we lose isSelected information\r\n\r\n const pendingMeasurementSummary = row as PendingMeasurementSummary;\r\n this.pendingPriorPeriodAdjustmentService\r\n .queryPendingMeasurements(this.model.searchParams.acceptedBillingMonth, pendingMeasurementSummary.locationId, pendingMeasurementSummary.measurementStatus, pendingMeasurementSummary.measurementType)\r\n .subscribe(pendingMeasurements => row['pendingMeasurements'] = pendingMeasurements);\r\n });\r\n }\r\n\r\n private queryPendingMeasurementForAllSummaries(): Observable {\r\n const queryPendingMeasurements$ = [];\r\n _.forEach(this.model.measurementSearchResults, measurementSummary => {\r\n if(!_.isNil(measurementSummary['pendingMeasurements'])) return; // Do not reload data\r\n\r\n const queryPendingMeasurement$ = this.pendingPriorPeriodAdjustmentService.queryPendingMeasurements(this.model.searchParams.billingMonth, measurementSummary.locationId, measurementSummary.measurementStatus, measurementSummary.measurementType)\r\n .pipe(\r\n tap(pendingMeasurements => measurementSummary['pendingMeasurements'] = pendingMeasurements)\r\n );\r\n\r\n queryPendingMeasurements$.push(queryPendingMeasurement$);\r\n });\r\n\r\n return forkJoin(queryPendingMeasurements$);\r\n }\r\n}\r\n","
\r\n
\r\n Number of results found: {{model.transportationSearchResults.length}}\r\n\r\n
0\" class=\"pull-right\">\r\n Export CSV\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n
\r\n {{cellInfo.data['serviceOptionCode'] ? cellInfo.data['serviceCode'] + \" \" + cellInfo.data['serviceOptionCode'] : cellInfo.data['serviceCode']}}\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n {{cellInfo.value | booleanAsYesNo}}\r\n
\r\n \r\n
\r\n {{ cellInfo.value | gasDayFormat }}\r\n
\r\n \r\n
\r\n {{cellInfo.value.toDate() | dateFormat:'YYYY-MMM-DD hh:mm:ss A'}}\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n","import {Component, Input} from \"@angular/core\";\r\nimport {PendingPriorPeriodAdjustmentModel} from \"app/gcts/flowinggas/pending-prior-period-adjustment/pending-prior-period-adjustment.model\";\r\nimport * as _ from \"lodash\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {BooleanHelper} from \"@model/boolean-helper\";\r\n\r\n@Component({\r\n selector: 'app-pending-ppa-transportation-tab',\r\n templateUrl: './pending-ppa-transportation-tab.component.html',\r\n styleUrls: ['./pending-ppa-transportation-tab.component.css']\r\n})\r\n\r\nexport class PendingPpaTransportationTabComponent {\r\n @Input() model: PendingPriorPeriodAdjustmentModel;\r\n\r\n constructor(private fileService: FileService) {\r\n }\r\n\r\n public onSelectAllClicked($event: any): void {\r\n const isChecked = this.model.transportationSelectAll;\r\n\r\n _.forEach(this.model.transportationSearchResults, transportationTransaction => {\r\n transportationTransaction['isSelected'] = isChecked;\r\n });\r\n }\r\n\r\n public uncheckTransportationSelectAll($event: any): void {\r\n this.model.transportationSelectAll = false;\r\n }\r\n\r\n public exportCsvClicked(): void {\r\n const orderedTransportationSearchResults = _.sortBy(this.model.transportationSearchResults, ['nomGroupMnemonic', 'serviceCode', 'receiptLocationName', 'deliveryLocationName', 'affectedGasDay', 'receivedDateTime', 'bidPrice', 'isTaxExempt']);\r\n const csvData = _.map(orderedTransportationSearchResults, pendingTransportation => ({\r\n nomGroup: pendingTransportation['nomGroupMnemonic'],\r\n nomGroupOwnerMnemonic: pendingTransportation['nomGroupOwnerEnterpriseMnemonic'],\r\n serviceCode: pendingTransportation.serviceOptionCode !== \"\" ? pendingTransportation.serviceCode + \" \" + pendingTransportation.serviceOptionCode : pendingTransportation.serviceCode,\r\n receiptLocation: pendingTransportation['receiptLocationName'],\r\n deliveryLocation: pendingTransportation['deliveryLocationName'],\r\n bidPrice: pendingTransportation.bidPrice,\r\n taxExempt: BooleanHelper.toYesOrNo(pendingTransportation.isTaxExempt),\r\n affectedGasDay: pendingTransportation.affectedGasDay.toString(),\r\n acceptedBillingMonth: pendingTransportation.acceptedBillingMonth?.toString(),\r\n receivedDateTime: pendingTransportation.receivedDateTime.toString(),\r\n energy: pendingTransportation.energy,\r\n status: pendingTransportation.status\r\n })\r\n );\r\n\r\n const fileName = `PendingTransportationTransaction_${this.model.lastSearchParams.billingMonth.toString()}.csv`;\r\n const headers = ['Nom Group', 'Nom Group Owner Mnemonic', 'Service Code', 'Receipt Location', 'Delivery Location', 'Bid Price', 'Tax Zero Rated', 'Affected Gas Day', 'Accepted Billing Month', 'Received Date Time', 'Energy (GJ)', 'Status'];\r\n const columns = ['nomGroup', 'nomGroupOwnerMnemonic', 'serviceCode', 'receiptLocation', 'deliveryLocation', 'bidPrice', 'taxExempt', 'affectedGasDay', 'acceptedBillingMonth', 'receivedDateTime', 'energy', 'status'];\r\n\r\n this.fileService.downloadCsvFile(fileName, csvData, headers, columns);\r\n }\r\n}\r\n","
\r\n
\r\n Number of results found: {{model.transferSearchResults.length}}\r\n\r\n
0\" class=\"pull-right\">\r\n Export CSV\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {{ cellInfo.value | gasDayFormat }}\r\n
\r\n \r\n
\r\n {{cellInfo.value.toDate() | dateFormat:'YYYY-MMM-DD hh:mm:ss A'}}\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n","import {Component, Input} from \"@angular/core\";\r\nimport {PendingPriorPeriodAdjustmentModel} from \"app/gcts/flowinggas/pending-prior-period-adjustment/pending-prior-period-adjustment.model\";\r\nimport * as _ from \"lodash\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\n\r\n@Component({\r\n selector: 'app-pending-ppa-transfer-tab',\r\n templateUrl: './pending-ppa-transfer-tab.component.html',\r\n styleUrls: ['./pending-ppa-transfer-tab.component.css']\r\n})\r\n\r\nexport class PendingPpaTransferTabComponent {\r\n @Input() model: PendingPriorPeriodAdjustmentModel;\r\n\r\n constructor(private fileService: FileService) {\r\n }\r\n\r\n public onSelectAllClicked($event: any): void {\r\n const isChecked = this.model.transferSelectAll;\r\n\r\n _.forEach(this.model.transferSearchResults, transferTransaction => {\r\n transferTransaction['isSelected'] = isChecked;\r\n });\r\n }\r\n\r\n public uncheckTransferSelectAll($event: any): void {\r\n this.model.transferSelectAll = false;\r\n }\r\n\r\n public exportCsvClicked(): void {\r\n const orderedTransferSearchResults = _.sortBy(this.model.transferSearchResults, ['debitNomGroupMnemonic', 'creditNomGroupMnemonic', 'locationName', 'affectedGasDay', 'receivedDateTime']);\r\n const csvData = _.map(orderedTransferSearchResults, (pendingTransfer) => {\r\n const result = {\r\n debitNomGroup: pendingTransfer['debitNomGroupMnemonic'],\r\n debitNomGroupOwnerMnemonic: pendingTransfer['debitNomGroupOwnerEnterpriseMnemonic'],\r\n creditNomGroup: pendingTransfer['creditNomGroupMnemonic'],\r\n creditNomGroupOwnerMnemonic: pendingTransfer['creditNomGroupOwnerEnterpriseMnemonic'],\r\n location: pendingTransfer['locationName'],\r\n transactionType: pendingTransfer.transactionType,\r\n affectedGasDay: pendingTransfer.affectedGasDay.toString(),\r\n acceptedBillingMonth: pendingTransfer.acceptedBillingMonth?.toString(),\r\n receivedDateTime: pendingTransfer.receivedDateTime.toString(),\r\n energy: pendingTransfer.energy,\r\n status: pendingTransfer.status\r\n };\r\n\r\n if (this.model.transferDSFieldsVisible){\r\n result['upDownContract'] = pendingTransfer.upDownContract;\r\n result['counterParty'] = pendingTransfer.counterParty;\r\n }\r\n\r\n return result;\r\n }\r\n );\r\n\r\n const fileName = `PendingTransferTransaction_${this.model.lastSearchParams.billingMonth.toString()}.csv`;\r\n const headers = ['Debit Nom Group', 'Debit Nom Group Mnemonic', 'Credit Nom Group', 'Credit Nom Group Mnemonic', 'Location', 'Transaction Type', 'Affected Gas Day', 'Accepted Billing Month', 'Received Date Time', 'Energy (GJ)', 'Status'];\r\n const columns = ['debitNomGroup', 'debitNomGroupOwnerMnemonic', 'creditNomGroup', 'creditNomGroupOwnerMnemonic', 'location', 'transactionType', 'affectedGasDay', 'acceptedBillingMonth', 'receivedDateTime', 'energy', 'status'];\r\n\r\n if (this.model.transferDSFieldsVisible){\r\n headers.splice(4, 0, 'Up Dn Contract', 'Up Dn ID');\r\n columns.splice(4, 0, 'upDownContract', 'counterParty');\r\n }\r\n\r\n this.fileService.downloadCsvFile(fileName, csvData, headers, columns);\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Billing Month: {{model.lastSearchParams?.billingMonth}}\r\n Pending Status: {{model.lastSearchParams?.pendingStatus}}\r\n Location: {{model.lastSearchParams?.locationId | displayName: 'id' : 'name' : model.locations}}\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.searchParams.billingMonth}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.billingMonth}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.measurementBillingProcess.status === 'Final' ? 'Final' : 'Preliminary'}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.acceptedBillingMonth}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.pendingStatus}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
 
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.locationId | displayName: 'id' : 'name' : model.locations}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n","import * as _ from \"lodash\";\r\nimport {Component, ViewChild} from \"@angular/core\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {forkJoin, Observable} from \"rxjs\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {concatMap, tap} from \"rxjs/operators\";\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {PendingPriorPeriodAdjustmentModel, PendingPriorPeriodAdjustmentSearchParams, PendingStatus} from \"app/gcts/flowinggas/pending-prior-period-adjustment/pending-prior-period-adjustment.model\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {FlowingGasAllocationAndBalancingBillingProcessService} from \"@shared/services/flowing-gas/flowing-gas-allocation-and-balancing-billing-process/flowing-gas-allocation-and-balancing-billing-process.service\";\r\nimport {FlowingGasMeasurementBillingProcessService} from \"@shared/services/flowing-gas/flowing-gas-measurement-billing-process/flowing-gas-measurement-billing-process.service\";\r\nimport {LocationService} from \"@shared/services/common-data/location/location.service\";\r\nimport {PendingPriorPeriodAdjustmentService} from \"@shared/services/flowing-gas/pending-prior-period-adjustment/pending-prior-period-adjustment.service\";\r\nimport {LocationEnrichmentService} from \"@shared/services/enrichment/location-enrichment.service\";\r\nimport {DxTabPanelComponent} from \"devextreme-angular\";\r\nimport {JobService} from \"@shared/services/job-scheduling/jobs/job.service\";\r\nimport {NomGroupEnrichmentService} from \"@shared/services/enrichment/nomgroup-enrichment.service\";\r\nimport {NominationGroupService} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport {EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\n\r\n@Component({\r\n selector: 'app-pending-prior-period-adjustment',\r\n templateUrl: './pending-prior-period-adjustment.component.html',\r\n styleUrls: ['./pending-prior-period-adjustment.component.css']\r\n})\r\n\r\nexport class PendingPriorPeriodAdjustmentComponent extends BaseSearchComponent {\r\n private static PARAM_BILLING_MONTH: string = 'billingMonth';\r\n private static PARAM_ACCEPTED_BILLING_MONTH: string = 'acceptedBillingMonth';\r\n private static PARAM_PENDING_STATUS: string = 'pendingStatus';\r\n private static PARAM_LOCATION_ID: string = 'locationId';\r\n\r\n @ViewChild('tabPanel') tabPanel: DxTabPanelComponent;\r\n\r\n model: PendingPriorPeriodAdjustmentModel = new PendingPriorPeriodAdjustmentModel();\r\n\r\n tabs = [\r\n {id: 1, title: 'Measurement', template: \"measurementTemplate\"},\r\n {id: 2, title: 'Transportation', template: \"transportationTemplate\"},\r\n {id: 3, title: 'Transfer', template: \"transferTemplate\"},\r\n ];\r\n\r\n constructor(\r\n appService: AppService,\r\n activatedRoute: ActivatedRoute,\r\n router: Router,\r\n protected alertService: AlertService,\r\n private commonDataBillingMonthService: CommonDataBillingMonthService,\r\n private commonDataLocationService: LocationService,\r\n private commonDataEnterpriseService: EnterpriseService,\r\n private flowingGasMeasurementBillingProcessService: FlowingGasMeasurementBillingProcessService,\r\n private flowingGasAllocationAndBalancingBillingProcessService: FlowingGasAllocationAndBalancingBillingProcessService,\r\n private accountsNomGroupService: NominationGroupService,\r\n private pendingPriorPeriodAdjustmentService: PendingPriorPeriodAdjustmentService,\r\n private enterpriseEnrichmentService: EnterpriseEnrichmentService,\r\n private locationEnrichmentService: LocationEnrichmentService,\r\n private nomGroupEnrichmentService: NomGroupEnrichmentService,\r\n private jobService: JobService,\r\n private sessionService: SessionService) {\r\n super('Pending Prior Period Adjustment', appService, activatedRoute, router, alertService);\r\n\r\n this.enterpriseEnrichmentService.setEnrichmentResource(commonDataEnterpriseService);\r\n this.locationEnrichmentService.setEnrichmentResource(commonDataLocationService);\r\n this.nomGroupEnrichmentService.setEnrichmentResource(accountsNomGroupService);\r\n }\r\n\r\n /**\r\n * Public Methods\r\n */\r\n\r\n public isSearchAcceptedPendingStatus(): boolean {\r\n return this.model.lastSearchParams?.pendingStatus === 'Accepted';\r\n }\r\n\r\n public isBillingProcessFinal(): boolean {\r\n if(!this.tabPanel) return true; // Default to Finalized State to Prevent Submits\r\n\r\n return this.tabPanel.selectedIndex === 0\r\n ? this.model.measurementBillingProcess.status === 'Final'\r\n : this.model.allocationAndBalancingBillingProcess.status === 'Final';\r\n }\r\n\r\n public areAllSelectedItemsForPreliminaryMonth(): boolean {\r\n // Allow pending adjustments that affects a preliminary billing to be selected and submitted at any time\r\n // It does not depend on the status of the Open Billing month.\r\n let allSelectedItemsForPreliminaryMonth = true;\r\n _.forEach(this.model.measurementSearchResults, measurementSummary => {\r\n _.forEach(measurementSummary['pendingMeasurements'], pendingMeasurement => {\r\n if (pendingMeasurement && pendingMeasurement['isSelected']) {\r\n const pendingMeasurementGasMonth = GasMonth.fromGasDay(pendingMeasurement.affectedGasDay);\r\n\r\n allSelectedItemsForPreliminaryMonth = allSelectedItemsForPreliminaryMonth &&\r\n (pendingMeasurementGasMonth.isEqual(this.model.preliminaryBillingMonth?.gasMonth));\r\n }\r\n });\r\n });\r\n\r\n return allSelectedItemsForPreliminaryMonth;\r\n }\r\n\r\n public hasSelectedItems(): boolean {\r\n if(!this.tabPanel) return false;\r\n\r\n if(this.tabPanel.selectedIndex === 0) {\r\n return _.some(this.model.measurementSearchResults, measurementSummary => _.some(measurementSummary['pendingMeasurements'], pendingMeasurement => pendingMeasurement['isSelected']));\r\n } else if(this.tabPanel.selectedIndex === 1) {\r\n return _.some(this.model.transportationSearchResults, transportation => transportation['isSelected']);\r\n } else if(this.tabPanel.selectedIndex === 2) {\r\n return _.some(this.model.transferSearchResults, transfer => transfer['isSelected']);\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public submitClicked(): void {\r\n this.alertService.clearMessages();\r\n\r\n if(this.tabPanel.selectedIndex === 0) {\r\n this.acceptPendingMeasurements();\r\n } else if(this.tabPanel.selectedIndex === 1) {\r\n this.acceptPendingTransportations();\r\n } else if(this.tabPanel.selectedIndex === 2) {\r\n this.acceptPendingTransfers();\r\n }\r\n }\r\n\r\n /**\r\n * Protected Methods\r\n */\r\n\r\n protected loadInitialResources(): Observable {\r\n this.model.transferDSFieldsVisible = !this.sessionService.getPipeline().summarizeThreadedNomination;\r\n\r\n const getOldestBillingMonth$ = this.commonDataBillingMonthService.getOldest()\r\n .pipe(\r\n tap(oldestBillingMonth => this.model.oldestBillingMonth = oldestBillingMonth)\r\n );\r\n\r\n const getOpenBillingMonth$ = this.commonDataBillingMonthService.getOpen()\r\n .pipe(\r\n tap(openBillingMonth => this.model.openBillingMonth = openBillingMonth)\r\n );\r\n\r\n const getPreliminaryBillingMonth$ = this.commonDataBillingMonthService.getPreliminary()\r\n .pipe(\r\n tap(preliminaryBillingMonth => this.model.preliminaryBillingMonth = preliminaryBillingMonth)\r\n );\r\n\r\n return forkJoin([getOldestBillingMonth$, getOpenBillingMonth$, getPreliminaryBillingMonth$])\r\n .pipe(\r\n tap(() => {\r\n this.model.maxBillingMonth = _.isNil(this.model.preliminaryBillingMonth) ? this.model.openBillingMonth : this.model.preliminaryBillingMonth;\r\n }));\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n const paramValidator = ParamValidator.Standard();\r\n\r\n paramValidator.isGasMonth(PendingPriorPeriodAdjustmentComponent.PARAM_BILLING_MONTH);\r\n paramValidator.isOneOf(PendingPriorPeriodAdjustmentComponent.PARAM_PENDING_STATUS, _.map(PendingStatus.ALL, x => x.value));\r\n paramValidator.isNumber(PendingPriorPeriodAdjustmentComponent.PARAM_LOCATION_ID, true);\r\n\r\n return paramValidator.isValid(params);\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.clearSearchResults();\r\n\r\n this.model.searchParams = new PendingPriorPeriodAdjustmentSearchParams();\r\n this.model.searchParams.billingMonth = this.model.openBillingMonth.gasMonth;\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams.billingMonth = typedParams.asGasMonth(PendingPriorPeriodAdjustmentComponent.PARAM_BILLING_MONTH);\r\n this.model.searchParams.pendingStatus = typedParams.asString(PendingPriorPeriodAdjustmentComponent.PARAM_PENDING_STATUS);\r\n\r\n if (this.model.searchParams.pendingStatus === PendingStatus.ACCEPTED.value) {\r\n this.model.searchParams.acceptedBillingMonth = typedParams.asGasMonth(PendingPriorPeriodAdjustmentComponent.PARAM_ACCEPTED_BILLING_MONTH);\r\n } else {\r\n this.model.searchParams.acceptedBillingMonth = this.model.searchParams.billingMonth;\r\n }\r\n\r\n this.model.searchParams.locationId = typedParams.asNullableNumber(PendingPriorPeriodAdjustmentComponent.PARAM_LOCATION_ID);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {};\r\n params[PendingPriorPeriodAdjustmentComponent.PARAM_BILLING_MONTH] = this.model.searchParams.billingMonth;\r\n params[PendingPriorPeriodAdjustmentComponent.PARAM_ACCEPTED_BILLING_MONTH] = this.model.searchParams.acceptedBillingMonth;\r\n params[PendingPriorPeriodAdjustmentComponent.PARAM_PENDING_STATUS] = this.model.searchParams.pendingStatus;\r\n params[PendingPriorPeriodAdjustmentComponent.PARAM_LOCATION_ID] = this.model.searchParams.locationId;\r\n return params;\r\n\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n const queryMeasurementBillingProcess$ = this.flowingGasMeasurementBillingProcessService.get(this.model.openBillingMonth.gasMonth)\r\n .pipe(\r\n tap(measurementBillingProcess => this.model.measurementBillingProcess = measurementBillingProcess[0])\r\n );\r\n\r\n const queryAllocationAndBillingProcess$ = this.flowingGasAllocationAndBalancingBillingProcessService.get(this.model.openBillingMonth.gasMonth)\r\n .pipe(\r\n tap(allocationAndBalancingBillingProcess => this.model.allocationAndBalancingBillingProcess = allocationAndBalancingBillingProcess[0])\r\n );\r\n\r\n const queryMeasurementAccountingLocations$ = this.commonDataLocationService.queryMeasurementAccountingLocations(this.model.openBillingMonth.gasMonth)\r\n .pipe(\r\n tap(locations => this.model.locations = locations)\r\n );\r\n\r\n return forkJoin([queryMeasurementBillingProcess$, queryAllocationAndBillingProcess$, queryMeasurementAccountingLocations$]);\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.clearSelectAlls();\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n\r\n const queryMeasurementSummaries$ = this.pendingPriorPeriodAdjustmentService\r\n .queryPendingMeasurementSummaries(this.model.openBillingMonth.gasMonth, this.model.searchParams.acceptedBillingMonth, this.model.searchParams.pendingStatus, this.model.searchParams.locationId)\r\n .pipe(\r\n concatMap(measurementSummaries => this.locationEnrichmentService.enrichArray(measurementSummaries, 'locationId', 'location')),\r\n tap(measurementSummaries => {\r\n this.model.measurementSearchResults = measurementSummaries;\r\n this.tabs[0].title = `Measurement (${this.model.measurementSearchResults.length})`;\r\n })\r\n );\r\n\r\n const queryTransportationTransactions$ = this.pendingPriorPeriodAdjustmentService\r\n .queryPendingTransportationTransactions(this.model.openBillingMonth.gasMonth, this.model.searchParams.acceptedBillingMonth, this.model.searchParams.pendingStatus, this.model.searchParams.locationId)\r\n .pipe(\r\n concatMap(transportationTransactions => this.nomGroupEnrichmentService.enrichArray(transportationTransactions, 'nomGroupId', 'nomGroup')),\r\n concatMap(transportationTransactions => this.enterpriseEnrichmentService.enrichArray(transportationTransactions, 'nomGroupOwnerEnterpriseId', 'nomGroupOwnerEnterprise')),\r\n concatMap(transportationTransactions => this.locationEnrichmentService.enrichArray(transportationTransactions, 'receiptLocationId', 'receiptLocation')),\r\n concatMap(transportationTransactions => this.locationEnrichmentService.enrichArray(transportationTransactions, 'deliveryLocationId', 'deliveryLocation')),\r\n tap(transportationTransactions => {\r\n this.model.transportationSearchResults = transportationTransactions;\r\n this.tabs[1].title = `Transportation (${this.model.transportationSearchResults.length})`;\r\n })\r\n );\r\n\r\n const queryTransferTransactions$ = this.pendingPriorPeriodAdjustmentService\r\n .queryPendingTransferTransactions(this.model.openBillingMonth.gasMonth, this.model.searchParams.acceptedBillingMonth, this.model.searchParams.pendingStatus, this.model.searchParams.locationId)\r\n .pipe(\r\n concatMap(transferTransactions => this.nomGroupEnrichmentService.enrichArray(transferTransactions, 'debitNomGroupId', 'debitNomGroup')),\r\n concatMap(transferTransactions => this.nomGroupEnrichmentService.enrichArray(transferTransactions, 'creditNomGroupId', 'creditNomGroup')),\r\n concatMap(transferTransactions => this.enterpriseEnrichmentService.enrichArray(transferTransactions, 'debitNomGroupOwnerEnterpriseId', 'debitNomGroupOwnerEnterprise')),\r\n concatMap(transferTransactions => this.enterpriseEnrichmentService.enrichArray(transferTransactions, 'creditNomGroupOwnerEnterpriseId', 'creditNomGroupOwnerEnterprise')),\r\n concatMap(transferTransactions => this.locationEnrichmentService.enrichArray(transferTransactions, 'locationId', 'location')),\r\n tap(transferTransactions => {\r\n this.model.transferSearchResults = transferTransactions;\r\n this.tabs[2].title = `Transfer (${this.model.transferSearchResults.length})`;\r\n })\r\n );\r\n\r\n return forkJoin([queryMeasurementSummaries$, queryTransportationTransactions$, queryTransferTransactions$]);\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n /**\r\n * Private Methods\r\n */\r\n\r\n private acceptPendingMeasurements(): void {\r\n const acceptMeasurement$ = [];\r\n\r\n _.forEach(this.model.measurementSearchResults, measurementSummary => {\r\n _.forEach(measurementSummary['pendingMeasurements'], pendingMeasurement => {\r\n if (pendingMeasurement && pendingMeasurement['isSelected']) {\r\n acceptMeasurement$.push(this.pendingPriorPeriodAdjustmentService.acceptPendingMeasurement(pendingMeasurement.id, pendingMeasurement.version));\r\n }\r\n });\r\n });\r\n\r\n forkJoin(acceptMeasurement$)\r\n .pipe(\r\n tap(acceptedMeasurements => this.alertService.addSuccessMessage('Success', `${acceptedMeasurements.length} Pending Measurement accepted.`)),\r\n concatMap(() => this.jobService.submitJob('AfterFlow', 'AcceptingMeasurementPpaStep')),\r\n concatMap(() => this.performSearch())\r\n )\r\n .subscribe(() => {});\r\n }\r\n\r\n private acceptPendingTransportations(): void {\r\n const acceptTransportations$ = [];\r\n\r\n _.forEach(this.model.transportationSearchResults, transportation => {\r\n if(transportation['isSelected']) {\r\n acceptTransportations$.push(this.pendingPriorPeriodAdjustmentService.acceptPendingTransportationTransaction(transportation.id, transportation.version));\r\n }\r\n });\r\n\r\n forkJoin(acceptTransportations$)\r\n .pipe(\r\n tap(acceptTransportations => this.alertService.addSuccessMessage('Success', `${acceptTransportations.length} Pending Transportation Transactions accepted.`)),\r\n concatMap(() => this.jobService.submitJob('AfterFlow', 'AcceptingTransportationNominationPpaStep')),\r\n concatMap(() => this.performSearch())\r\n )\r\n .subscribe(() => {});\r\n }\r\n\r\n private acceptPendingTransfers(): void {\r\n const acceptTransfers$ = [];\r\n\r\n _.forEach(this.model.transferSearchResults, transfer => {\r\n if(transfer['isSelected']) {\r\n acceptTransfers$.push(this.pendingPriorPeriodAdjustmentService.acceptPendingTransferTransaction(transfer.id, transfer.version));\r\n }\r\n });\r\n\r\n forkJoin(acceptTransfers$)\r\n .pipe(\r\n tap(acceptTransfers => this.alertService.addSuccessMessage('Success', `${acceptTransfers.length} Pending Transfer Transactions accepted.`)),\r\n concatMap(() => this.jobService.submitJob('AfterFlow', 'AcceptingTransferNominationPpaStep')),\r\n concatMap(() => this.performSearch())\r\n )\r\n .subscribe(() => {});\r\n }\r\n\r\n onStatusChanged() {\r\n if (this.model.searchParams.pendingStatus !== PendingStatus.ACCEPTED.value) {\r\n this.model.searchParams.acceptedBillingMonth = this.model.openBillingMonth.gasMonth;\r\n }\r\n }\r\n\r\n isAccepted(params: PendingPriorPeriodAdjustmentSearchParams) {\r\n return params.pendingStatus === PendingStatus.ACCEPTED.value;\r\n }\r\n}\r\n","import {GasMonth} from \"@model/gas-month\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport {BaseViewModel} from \"@model/base-view-model\";\r\nimport {SystemBalance} from \"@shared/services/flowing-gas/system-balance-service/system-balalnce.service\";\r\n\r\nexport class SystemBalanceModel extends BaseViewModel {\r\n public openBillingMonth: BillingMonth;\r\n public preliminaryBillingMonth: BillingMonth;\r\n\r\n public minGasMonth: GasMonth;\r\n public maxGasMonth: GasMonth;\r\n\r\n public searchParams: SystemBalanceSearchParams = new SystemBalanceSearchParams();\r\n public lastSearchParams: SystemBalanceSearchParams;\r\n\r\n public searchResults: SystemBalance;\r\n\r\n public expandAll: boolean = false;\r\n\r\n public hasSearchResults(): boolean {\r\n return !!this.searchResults;\r\n }\r\n\r\n public clearSearchResults(): void {\r\n this.searchResults = null;\r\n }\r\n}\r\n\r\nexport class SystemBalanceSearchParams {\r\n billingGasMonth: GasMonth;\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {FlowinggasResourceService} from \"@shared/resources/flowinggas-resource.service\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport * as _ from \"lodash\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {Observable} from \"rxjs\";\r\nimport {map} from \"rxjs/operators\";\r\n\r\nexport interface ISystemBalance {\r\n assets: ISystemBalanceCategory;\r\n liabilities: ISystemBalanceCategory;\r\n equities: ISystemBalanceCategory;\r\n totalLiabilitiesPlusEquities: ISystemBalanceCategory;\r\n totalVariance: ISystemBalanceCategory;\r\n}\r\n\r\nexport interface ISystemBalanceCategory {\r\n name: string;\r\n totalOpeningBalance: string;\r\n totalDebits: string;\r\n totalCredits: string;\r\n totalVariance: string;\r\n totalClosingBalance: string;\r\n\r\n subCategories: ISystemBalanceCategory[];\r\n gasAccountsSummaries: IGasAccountTypeSummary[];\r\n}\r\n\r\nexport interface IGasAccountTypeSummary {\r\n name: string;\r\n gasAccountType: string;\r\n openingBalance: string;\r\n debits: string;\r\n credits: string;\r\n variance: string;\r\n closingBalance: string;\r\n\r\n transactionTypeSummaries: ITransactionTypeSummary[];\r\n}\r\n\r\nexport interface ITransactionTypeSummary\r\n{\r\n debits: string;\r\n credits: string;\r\n transactionType: string;\r\n}\r\n\r\nexport class SystemBalance {\r\n assets: SystemBalanceCategory;\r\n liabilities: SystemBalanceCategory;\r\n equities: SystemBalanceCategory;\r\n totalLiabilitiesPlusEquities: SystemBalanceCategory;\r\n totalVariance: SystemBalanceCategory;\r\n\r\n public static create(dto: ISystemBalance): SystemBalance {\r\n const systemBalance = new SystemBalance();\r\n\r\n systemBalance.assets = SystemBalanceCategory.create(dto.assets);\r\n systemBalance.liabilities = SystemBalanceCategory.create(dto.liabilities);\r\n systemBalance.equities = SystemBalanceCategory.create(dto.equities);\r\n systemBalance.totalLiabilitiesPlusEquities = SystemBalanceCategory.create(dto.totalLiabilitiesPlusEquities);\r\n systemBalance.totalVariance = SystemBalanceCategory.create(dto.totalVariance);\r\n\r\n return systemBalance;\r\n }\r\n}\r\n\r\nexport class SystemBalanceCategory {\r\n name: string;\r\n totalOpeningBalance: number;\r\n totalDebits: number;\r\n totalCredits: number;\r\n totalVariance: number;\r\n totalClosingBalance: number;\r\n\r\n subCategories: SystemBalanceCategory[];\r\n gasAccountsSummaries: GasAccountTypeSummary[];\r\n\r\n public static create(dto: ISystemBalanceCategory): SystemBalanceCategory {\r\n const systemBalanceCategory = new SystemBalanceCategory();\r\n\r\n systemBalanceCategory.name = dto.name;\r\n systemBalanceCategory.totalOpeningBalance = +dto.totalOpeningBalance;\r\n systemBalanceCategory.totalDebits = +dto.totalDebits;\r\n systemBalanceCategory.totalCredits = +dto.totalCredits;\r\n systemBalanceCategory.totalVariance = +dto.totalVariance;\r\n systemBalanceCategory.totalClosingBalance = +dto.totalClosingBalance;\r\n\r\n systemBalanceCategory.subCategories = _.map(dto.subCategories, x => SystemBalanceCategory.create(x));\r\n systemBalanceCategory.gasAccountsSummaries = _.map(dto.gasAccountsSummaries, x => GasAccountTypeSummary.create(x));\r\n\r\n return systemBalanceCategory;\r\n }\r\n}\r\n\r\nexport class GasAccountTypeSummary {\r\n name: string;\r\n gasAccountType: string;\r\n openingBalance: number;\r\n debits: number;\r\n credits: number;\r\n variance: number;\r\n closingBalance: number;\r\n\r\n transactionTypeSummaries: TransactionTypeSummary[];\r\n\r\n expanded: boolean = false;\r\n\r\n public static create(dto: IGasAccountTypeSummary): GasAccountTypeSummary {\r\n const gasAccountTypeSummary = new GasAccountTypeSummary();\r\n\r\n gasAccountTypeSummary.name = dto.name;\r\n gasAccountTypeSummary.gasAccountType = dto.gasAccountType;\r\n gasAccountTypeSummary.openingBalance = +dto.openingBalance;\r\n gasAccountTypeSummary.debits = +dto.debits;\r\n gasAccountTypeSummary.credits = +dto.credits;\r\n gasAccountTypeSummary.variance = +dto.variance;\r\n gasAccountTypeSummary.closingBalance = +dto.closingBalance;\r\n\r\n gasAccountTypeSummary.transactionTypeSummaries = _.map(dto.transactionTypeSummaries, x => TransactionTypeSummary.create(x));\r\n return gasAccountTypeSummary;\r\n }\r\n}\r\n\r\nexport class TransactionTypeSummary\r\n{\r\n debits: number;\r\n credits: number;\r\n transactionType: string;\r\n\r\n public static create(dto: ITransactionTypeSummary): TransactionTypeSummary {\r\n const transactionTypeSummary = new TransactionTypeSummary();\r\n transactionTypeSummary.debits = +dto.debits;\r\n transactionTypeSummary.credits = +dto.credits;\r\n transactionTypeSummary.transactionType = dto.transactionType;\r\n\r\n return transactionTypeSummary;\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport class SystemBalanceService {\r\n constructor(private flowingGasResource: FlowinggasResourceService) {}\r\n\r\n public getSystemBalanceForGasAccountType(billingGasMonth: GasMonth): Observable {\r\n const urlSearchParams = new GCTSHttpParams();\r\n urlSearchParams.setGasMonth(billingGasMonth);\r\n\r\n return this.flowingGasResource.get('/reports/systemBalance', true, urlSearchParams)\r\n .pipe(\r\n map(dto => SystemBalance.create(dto))\r\n );\r\n }\r\n\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Billing Month: {{model.lastSearchParams?.billingGasMonth | gasMonthFormat}}\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.billingGasMonth | gasMonthFormat}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
Opening BalanceTransaction TypeDebitsCreditsVariance (GJ)Closing Balance
Assets
\r\n
\r\n \r\n \r\n
\r\n
{{ row.name }}{{ row.openingBalance | number }}{{ row.debits | number }}{{ row.credits | number }}{{ row.variance | number }}{{ row.closingBalance | number }}
{{ transactionTypeSummary.transactionType }}{{ transactionTypeSummary.debits | number }}{{ transactionTypeSummary.credits | number }}
Total Assets{{ model.searchResults.assets.totalOpeningBalance | number }}{{ model.searchResults.assets.totalDebits | number }}{{ model.searchResults.assets.totalCredits | number }}{{ model.searchResults.assets.totalVariance | number }}{{ model.searchResults.assets.totalClosingBalance | number }}
Liabilities
{{ subCategory.name }}
\r\n
\r\n \r\n \r\n
\r\n
{{ summary.name }}{{ summary.openingBalance | number }}{{ summary.debits | number }}{{ summary.credits | number }}{{ summary.variance | number }}{{ summary.closingBalance | number }}
{{ transactionTypeSummary.transactionType }}{{ transactionTypeSummary.debits | number }}{{ transactionTypeSummary.credits | number }}
Total {{ subCategory.name }}{{ subCategory.totalOpeningBalance | number }}{{ subCategory.totalDebits | number }}{{ subCategory.totalCredits | number }}{{ subCategory.totalVariance | number }}{{ subCategory.totalClosingBalance | number }}
Total Liabilities{{ model.searchResults.liabilities.totalOpeningBalance | number }}{{ model.searchResults.liabilities.totalDebits | number }}{{ model.searchResults.liabilities.totalCredits | number }}{{ model.searchResults.liabilities.totalVariance | number }}{{ model.searchResults.liabilities.totalClosingBalance | number }}
Equities
\r\n
\r\n \r\n \r\n
\r\n
{{ row.name }}{{ row.openingBalance | number }}{{ row.debits | number }}{{ row.credits | number }}{{ row.variance | number }}{{ row.closingBalance | number }}
{{ transactionTypeSummary.transactionType }}{{ transactionTypeSummary.debits | number }}{{ transactionTypeSummary.credits | number }}
Total Equities{{ model.searchResults.equities.totalOpeningBalance | number }}{{ model.searchResults.equities.totalDebits | number }}{{ model.searchResults.equities.totalCredits | number }}{{ model.searchResults.equities.totalVariance | number }}{{ model.searchResults.equities.totalClosingBalance | number }}
Total Equitities + Liabilities{{ model.searchResults.totalLiabilitiesPlusEquities.totalOpeningBalance | number }}{{ model.searchResults.totalLiabilitiesPlusEquities.totalDebits | number }}{{ model.searchResults.totalLiabilitiesPlusEquities.totalCredits | number }}{{ model.searchResults.totalLiabilitiesPlusEquities.totalVariance | number }}{{ model.searchResults.totalLiabilitiesPlusEquities.totalClosingBalance | number }}
Variance{{ model.searchResults.totalVariance.totalOpeningBalance | number }}{{ model.searchResults.totalVariance.totalClosingBalance | number }}
No results found for search criteria
\r\n
\r\n
\r\n\r\n
\r\n
\r\n","import {Component} from \"@angular/core\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {forkJoin, Observable, of} from \"rxjs\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {SystemBalanceModel, SystemBalanceSearchParams} from \"app/gcts/flowinggas/system-balance/system-balance.model\";\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport {tap} from \"rxjs/operators\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport * as _ from \"lodash\";\r\nimport {GasAccountTypeSummary, SystemBalance, SystemBalanceService} from \"@shared/services/flowing-gas/system-balance-service/system-balalnce.service\";\r\n\r\n@Component({\r\n selector: 'app-system-balance',\r\n templateUrl: './system-balance.component.html',\r\n styleUrls: ['./system-balance.component.css']\r\n})\r\n\r\nexport class SystemBalanceComponent extends BaseSearchComponent {\r\n\r\n constructor(appService: AppService,\r\n activatedRoute: ActivatedRoute,\r\n router: Router,\r\n alertService: AlertService,\r\n private commonDataBillingMonthService: CommonDataBillingMonthService,\r\n private systemBalanceService: SystemBalanceService) {\r\n super('System Balance', appService, activatedRoute, router, alertService);\r\n }\r\n\r\n public model: SystemBalanceModel = new SystemBalanceModel();\r\n\r\n protected loadInitialResources(): Observable {\r\n const getOldestBillingMonth$ = this.commonDataBillingMonthService.getOldest()\r\n .pipe(\r\n tap(oldestBillingMonth => this.model.minGasMonth = oldestBillingMonth.gasMonth)\r\n );\r\n\r\n const getOpenBillingMonth$ = this.commonDataBillingMonthService.getOpen().pipe(\r\n tap(openBillingMonth => {\r\n this.model.openBillingMonth = openBillingMonth;\r\n })\r\n );\r\n\r\n const getPreliminaryBillingMonth$ = this.commonDataBillingMonthService.getPreliminary().pipe(\r\n tap(preliminaryBillingMonth => {\r\n this.model.preliminaryBillingMonth = preliminaryBillingMonth;\r\n })\r\n );\r\n\r\n return forkJoin([getOldestBillingMonth$, getOpenBillingMonth$, getPreliminaryBillingMonth$])\r\n .pipe(\r\n tap(() => {\r\n this.model.maxGasMonth = _.isNil(this.model.preliminaryBillingMonth)\r\n ? this.model.openBillingMonth.gasMonth\r\n : this.model.preliminaryBillingMonth.gasMonth;\r\n })\r\n );\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n return of({});\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams = new SystemBalanceSearchParams();\r\n this.model.searchParams.billingGasMonth = this.model.openBillingMonth.gasMonth;\r\n\r\n this.model.clearSearchResults();\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {};\r\n params['billingMonth'] = this.model.searchParams.billingGasMonth;\r\n\r\n return params;\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n const paramValidator = ParamValidator.Standard();\r\n return paramValidator.isValid(params);\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams = new SystemBalanceSearchParams();\r\n this.model.searchParams.billingGasMonth = typedParams.asGasMonth('billingMonth');\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.searchResults = null; // Destroy Grid\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n\r\n // TODO Clear All Selections\r\n // if (this.dataGrid) {\r\n // this.dataGrid.instance.clearSelection();\r\n // }\r\n return this.systemBalanceService.getSystemBalanceForGasAccountType(this.model.searchParams.billingGasMonth)\r\n .pipe(\r\n tap( systemBalance => {\r\n this.model.searchResults = systemBalance;\r\n })\r\n );\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n protected resetCompleted(): void {\r\n this.model.lastSearchParams = null;\r\n }\r\n\r\n public expandAll(expand: boolean): void {\r\n _.each(this.model.searchResults.assets.gasAccountsSummaries, asset => {\r\n asset.expanded = expand;\r\n });\r\n _.each(this.model.searchResults.liabilities.subCategories, subCategory => {\r\n _.each(subCategory.gasAccountsSummaries, liability => {\r\n liability.expanded = expand;\r\n });\r\n });\r\n _.each(this.model.searchResults.equities.gasAccountsSummaries, equity => {\r\n equity.expanded = expand;\r\n });\r\n }\r\n\r\n public clickedExpandAll(): void {\r\n if (this.model.expandAll === false) {\r\n this.model.expandAll = true;\r\n } else {\r\n this.model.expandAll = false;\r\n }\r\n\r\n this.expandAll(this.model.expandAll);\r\n }\r\n\r\n public clickedExpanded(row: GasAccountTypeSummary): void {\r\n if (row.expanded === false) {\r\n row.expanded = true;\r\n } else {\r\n row.expanded = false;\r\n }\r\n }\r\n\r\n\r\n}\r\n","import {BaseViewModel} from \"@model/base-view-model\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport {Enterprise} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {CommonDataLocation} from \"@shared/services/common-data/location/location.service\";\r\nimport {StorageTransportationBalance} from \"@shared/services/flowing-gas/storage-transportation-balance/storage-transportation-balance.service\";\r\n\r\nexport class StorageTransportationBalanceReportModel extends BaseViewModel {\r\n expandAll: boolean = false;\r\n\r\n searchParams: StorageTransportationBalanceReportSearchParams = new StorageTransportationBalanceReportSearchParams();\r\n lastSearchParams: StorageTransportationBalanceReportSearchParams;\r\n isExternalUser: boolean;\r\n oldestBillingMonth: BillingMonth;\r\n openBillingMonth: BillingMonth;\r\n preliminaryBillingMonth: BillingMonth;\r\n currentGasDay: GasDay;\r\n minReportingGasMonth: GasMonth;\r\n maxReportingGasMonth: GasMonth;\r\n minGasDay: GasDay;\r\n maxGasDay: GasDay;\r\n maxGasDayWithinMonth: GasDay;\r\n minBillingGasMonth: GasMonth;\r\n maxBillingGasMonth: GasMonth;\r\n lastSearchLocations: any;\r\n locations: CommonDataLocation[];\r\n searchDateTime: Date;\r\n status: string;\r\n customers: Enterprise[];\r\n excessWithdrawalCount: number;\r\n\r\n hasSearchResults: boolean = false;\r\n\r\n public balanceSearchResults: StorageTransportationBalance[];\r\n public excessSearchResults: StorageTransportationBalance[];\r\n\r\n public clearSearchResults(): void {\r\n this.balanceSearchResults = null;\r\n this.excessSearchResults = null;\r\n this.hasSearchResults = false;\r\n }\r\n}\r\n\r\nexport class StorageTransportationBalanceReportSearchParams {\r\n public reportingMonth: GasMonth;\r\n public billingGasMonth: GasMonth;\r\n public customerId: number;\r\n public locationId: number;\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {FlowinggasResourceService} from \"@shared/resources/flowinggas-resource.service\";\r\nimport {Observable} from \"rxjs\";\r\nimport {map} from \"rxjs/operators\";\r\nimport * as _ from \"lodash\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {HttpResponse} from \"@angular/common/http\";\r\n\r\nexport interface IStorageTransportationBalanceResponse {\r\n enterpriseCid: number;\r\n enterpriseName: string;\r\n locationId: number;\r\n locationName: string;\r\n openingBalance: number;\r\n injectionTotal: number;\r\n injHasPpa: boolean;\r\n withdrawalTotal: number;\r\n withHasPpa: boolean;\r\n varianceTotal: number;\r\n excessTotal: number;\r\n excessFeeTotal: number;\r\n dailyBalances: IStorageTransportationDailyBalanceResponse[];\r\n dailyExcessQuantities: IStorageTransportationDailyExcessResponse[];\r\n}\r\n\r\nexport interface IStorageTransportationDailyBalanceResponse {\r\n gasDay: string;\r\n injectionTotal: number;\r\n injHasPpa: boolean;\r\n withdrawalTotal: number;\r\n withHasPpa: boolean;\r\n dailyVariance: number;\r\n cumulativeBalance: number;\r\n transactions: IStorageTransportationTransactionResponse[];\r\n}\r\n\r\nexport interface IStorageTransportationTransactionResponse {\r\n gasDay: string;\r\n nominationGroupCid: number;\r\n nominationGroupMnemonic: string;\r\n receiptLocationId: number;\r\n receiptLocationName: string;\r\n deliveryLocationId: number;\r\n deliveryLocationName: string;\r\n serviceClass: string;\r\n actualInjectionTotal: number;\r\n allowableInjectionTotal: number;\r\n maximumAllowableInjectionTotal: number;\r\n injHasPpa: boolean;\r\n withdrawalTotal: number;\r\n withHasPpa: boolean;\r\n isAdjustment: boolean;\r\n transferDirection: string;\r\n}\r\n\r\nexport interface IStorageTransportationDailyExcessResponse {\r\n gasDay: string;\r\n openingBalance: number;\r\n dailyVariance: number;\r\n excessQuantities: IStorageTransportationExcessResponse[];\r\n}\r\n\r\nexport interface IStorageTransportationExcessResponse {\r\n gasDay: string;\r\n locationId: number;\r\n locationName: string;\r\n excess: number;\r\n excessFee: number;\r\n}\r\n\r\nexport class IStorageTransportationBalanceSummaryResponse {\r\n nomGroupOwnerCid: number;\r\n nomGroupId: number;\r\n locationId: number;\r\n gasDay: string;\r\n openingBalance: number;\r\n}\r\n\r\nexport class StorageTransportationBalanceSummary {\r\n nomGroupOwnerEnterpriseId: number;\r\n nomGroupId: number;\r\n locationId: number;\r\n gasDay: GasDay;\r\n openingBalance: number;\r\n\r\n public static create(dto: IStorageTransportationBalanceSummaryResponse): StorageTransportationBalanceSummary {\r\n const result = new StorageTransportationBalanceSummary();\r\n result.nomGroupOwnerEnterpriseId = dto.nomGroupOwnerCid;\r\n result.nomGroupId = dto.nomGroupId;\r\n result.locationId = dto.locationId;\r\n result.gasDay = GasDay.parse(dto.gasDay);\r\n result.openingBalance = dto.openingBalance;\r\n return result;\r\n }\r\n}\r\n\r\nexport class StorageTransportationBalance {\r\n enterpriseCid: number;\r\n enterpriseName: string;\r\n locationId: number;\r\n locationName: string;\r\n openingBalance: number;\r\n injectionTotal: number;\r\n injHasPpa: boolean;\r\n withdrawalTotal: number;\r\n withHasPpa: boolean;\r\n varianceTotal: number;\r\n excessTotal: number;\r\n excessFeeTotal: number;\r\n dailyBalances: StorageTransportationDailyBalance[];\r\n dailyExcessProjections: StorageTransportationExcess[];\r\n\r\n public static create(dto: IStorageTransportationBalanceResponse): StorageTransportationBalance {\r\n const storageTransportationBalance = new StorageTransportationBalance();\r\n storageTransportationBalance.enterpriseCid = +dto.enterpriseCid;\r\n storageTransportationBalance.enterpriseName = dto.enterpriseName;\r\n storageTransportationBalance.locationId = +dto.locationId;\r\n storageTransportationBalance.locationName = dto.locationName;\r\n storageTransportationBalance.openingBalance = +dto.openingBalance;\r\n storageTransportationBalance.injectionTotal = +dto.injectionTotal;\r\n storageTransportationBalance.injHasPpa = dto.injHasPpa;\r\n storageTransportationBalance.withdrawalTotal = +dto.withdrawalTotal;\r\n storageTransportationBalance.withHasPpa = dto.withHasPpa;\r\n storageTransportationBalance.varianceTotal = +dto.varianceTotal;\r\n storageTransportationBalance.excessTotal = +dto.excessTotal;\r\n storageTransportationBalance.excessFeeTotal = +dto.excessFeeTotal;\r\n\r\n storageTransportationBalance.dailyBalances = _.map(dto.dailyBalances, x => StorageTransportationDailyBalance.create(x));\r\n storageTransportationBalance.dailyExcessProjections = StorageTransportationExcess.create(dto.dailyExcessQuantities);\r\n return storageTransportationBalance;\r\n }\r\n}\r\n\r\nexport class StorageTransportationExcess {\r\n gasDay: GasDay;\r\n locationId: number;\r\n locationName: string;\r\n excess: number;\r\n excessFee: number;\r\n\r\n public static create(dto: IStorageTransportationDailyExcessResponse[]): StorageTransportationExcess[] {\r\n const storageTransportationExcessArray: StorageTransportationExcess[] = [];\r\n\r\n _.forEach(dto, x => {\r\n _.forEach(x.excessQuantities, excessQuantity => {\r\n if(excessQuantity.excess > 0 || excessQuantity.excessFee > 0) {\r\n const storageTransportationExcess = new StorageTransportationExcess();\r\n storageTransportationExcess.gasDay = GasDay.parse(excessQuantity.gasDay);\r\n storageTransportationExcess.locationId = +excessQuantity.locationId;\r\n storageTransportationExcess.locationName = excessQuantity.locationName;\r\n storageTransportationExcess.excess = +excessQuantity.excess;\r\n storageTransportationExcess.excessFee = +excessQuantity.excessFee;\r\n storageTransportationExcessArray.push(storageTransportationExcess);\r\n }\r\n });\r\n });\r\n\r\n return storageTransportationExcessArray;\r\n }\r\n}\r\n\r\nexport class StorageTransportationDailyBalance {\r\n gasDay: GasDay;\r\n injectionTotal: number;\r\n injHasPpa: boolean;\r\n withdrawalTotal: number;\r\n withHasPpa: boolean;\r\n dailyVariance: number;\r\n cumulativeBalance: number;\r\n transactions: StorageTransportationTransaction[];\r\n\r\n public static create(dto: IStorageTransportationDailyBalanceResponse) {\r\n const storageTransportationDailyBalance = new StorageTransportationDailyBalance();\r\n storageTransportationDailyBalance.gasDay = GasDay.parse(dto.gasDay);\r\n storageTransportationDailyBalance.injectionTotal = +dto.injectionTotal;\r\n storageTransportationDailyBalance.injHasPpa = dto.injHasPpa;\r\n storageTransportationDailyBalance.withdrawalTotal = +dto.withdrawalTotal;\r\n storageTransportationDailyBalance.withHasPpa = dto.withHasPpa;\r\n storageTransportationDailyBalance.dailyVariance = +dto.dailyVariance;\r\n storageTransportationDailyBalance.cumulativeBalance = +dto.cumulativeBalance;\r\n storageTransportationDailyBalance.transactions = _.map(dto.transactions, x => StorageTransportationTransaction.create(x));\r\n return storageTransportationDailyBalance;\r\n }\r\n}\r\n\r\nexport class StorageTransportationTransaction {\r\n gasDay: GasDay;\r\n nominationGroupId: number;\r\n nominationGroupMnemonic: string;\r\n receiptLocationId: number;\r\n receiptLocationName: string;\r\n deliveryLocationId: number;\r\n deliveryLocationName: string;\r\n serviceClass: string;\r\n actualInjectionTotal: number;\r\n allowableInjectionTotal: number;\r\n maximumAllowableInjectionTotal: number;\r\n injHasPpa: boolean;\r\n withdrawalTotal: number;\r\n withHasPpa: boolean;\r\n isAdjustment: boolean;\r\n transferDirection: string;\r\n\r\n public static create(dto: IStorageTransportationTransactionResponse): StorageTransportationTransaction {\r\n const storageTransportationTransaction = new StorageTransportationTransaction();\r\n storageTransportationTransaction.gasDay = GasDay.parse(dto.gasDay);\r\n storageTransportationTransaction.nominationGroupId = !_.isNil(dto.nominationGroupCid) ? +dto.nominationGroupCid : null;\r\n storageTransportationTransaction.nominationGroupMnemonic = dto.nominationGroupMnemonic;\r\n storageTransportationTransaction.receiptLocationId = !_.isNil(dto.receiptLocationId) ? +dto.receiptLocationId : null;\r\n storageTransportationTransaction.receiptLocationName = dto.receiptLocationName;\r\n storageTransportationTransaction.deliveryLocationId = !_.isNil(dto.deliveryLocationId) ? +dto.deliveryLocationId : null;\r\n storageTransportationTransaction.deliveryLocationName = dto.deliveryLocationName;\r\n storageTransportationTransaction.serviceClass = dto.serviceClass;\r\n storageTransportationTransaction.actualInjectionTotal = +dto.actualInjectionTotal;\r\n storageTransportationTransaction.allowableInjectionTotal = +dto.allowableInjectionTotal;\r\n storageTransportationTransaction.maximumAllowableInjectionTotal = +dto.maximumAllowableInjectionTotal;\r\n storageTransportationTransaction.injHasPpa = dto.injHasPpa;\r\n storageTransportationTransaction.withdrawalTotal = +dto.withdrawalTotal;\r\n storageTransportationTransaction.withHasPpa = dto.withHasPpa;\r\n storageTransportationTransaction.isAdjustment = dto.isAdjustment;\r\n storageTransportationTransaction.transferDirection = dto.transferDirection;\r\n return storageTransportationTransaction;\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport class StorageTransportationBalanceService {\r\n\r\n constructor(private flowingGasResource: FlowinggasResourceService) { }\r\n\r\n query(reportingMonth: GasMonth, billingMonth: GasMonth, customerId: number, locationId: number): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('asOfBillingMonth', billingMonth.toString());\r\n params.set('gasMonth', reportingMonth.toString());\r\n params.setOptionalNumber('enterpriseCid', customerId);\r\n params.setOptionalNumber('locationId', locationId);\r\n\r\n return this.flowingGasResource.get('/reports/storageTransportationBalance', true, params)\r\n .pipe(\r\n map(dtos => _.map(dtos, dto => StorageTransportationBalance.create(dto)))\r\n );\r\n }\r\n\r\n queryPdf(reportingMonth: GasMonth, billingMonth: GasMonth, customerId: number, locationId: number): Observable> {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('asOfBillingMonth', billingMonth.toString());\r\n params.set('gasMonth', reportingMonth.toString());\r\n params.setOptionalNumber('enterpriseCid', customerId);\r\n params.setOptionalNumber('locationId', locationId);\r\n\r\n return this.flowingGasResource.getData('/reports/storageTransportationBalance/pdf', true, params);\r\n }\r\n\r\n queryMonthlySummary(fromGasMonth: GasMonth, toGasMonth: GasMonth, enterpriseId?: number, locationId?: number): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setGasMonth(fromGasMonth, 'fromGasMonth');\r\n params.setGasMonth(toGasMonth, 'toGasMonth');\r\n params.setOptionalNumber('enterpriseCid', enterpriseId);\r\n params.setOptionalNumber('locationId', locationId);\r\n\r\n return this.flowingGasResource.get('/storageTransportationBalanceSummaries', true, params)\r\n .pipe(\r\n map(dtos => _.map(dtos, dto => StorageTransportationBalanceSummary.create(dto)))\r\n );\r\n }\r\n}\r\n","import * as _ from \"lodash\";\r\n\r\nexport class KeyboardInput {\r\n // Special characters\r\n public static BackspaceKey: KeyboardInput = new KeyboardInput(8);\r\n public static TabKey: KeyboardInput = new KeyboardInput(9);\r\n public static EnterKey: KeyboardInput = new KeyboardInput(13);\r\n public static EscKey: KeyboardInput = new KeyboardInput(27);\r\n public static DeleteKey: KeyboardInput = new KeyboardInput(46);\r\n public static SpaceKey: KeyboardInput = new KeyboardInput(32);\r\n public static EndKey: KeyboardInput = new KeyboardInput(35);\r\n public static HomeKey: KeyboardInput = new KeyboardInput(36);\r\n public static LeftKey: KeyboardInput = new KeyboardInput(37);\r\n public static RightKey: KeyboardInput = new KeyboardInput(39);\r\n\r\n // Letters (a-z): 65 - 90\r\n public static AKey: KeyboardInput = new KeyboardInput(65);\r\n public static ZKey: KeyboardInput = new KeyboardInput(90);\r\n\r\n // Number Keys (0-9): 48 - 57\r\n public static ZeroKey: KeyboardInput = new KeyboardInput(48);\r\n public static NineKey: KeyboardInput = new KeyboardInput(57);\r\n\r\n // Number Keys via Numeric KeyPad (0-9): 96 - 105\r\n public static ZeroNumPadKey: KeyboardInput = new KeyboardInput(96);\r\n public static NineNumPadKey: KeyboardInput = new KeyboardInput(105);\r\n\r\n public static EditingKeys: KeyboardInput[] =\r\n [KeyboardInput.BackspaceKey, KeyboardInput.TabKey, KeyboardInput.EnterKey, KeyboardInput.EscKey, KeyboardInput.DeleteKey,\r\n KeyboardInput.HomeKey, KeyboardInput.EndKey, KeyboardInput.LeftKey, KeyboardInput.RightKey];\r\n\r\n code: number;\r\n name: string;\r\n\r\n\r\n public isNumber(shiftKey: boolean): boolean {\r\n // Shift key & digit key would be for { !@#$%^&*()_+ }, which is not numeric.\r\n if (shiftKey) {\r\n return false;\r\n }\r\n\r\n return ((this.code >= KeyboardInput.ZeroKey.code && this.code <= KeyboardInput.NineKey.code) || (this.code >= KeyboardInput.ZeroNumPadKey.code && this.code <= KeyboardInput.NineNumPadKey.code));\r\n }\r\n\r\n public isLetter(): boolean {\r\n return ((this.code >= KeyboardInput.AKey.code && this.code <= KeyboardInput.ZKey.code));\r\n }\r\n\r\n public isSpace(): boolean {\r\n return this.code === KeyboardInput.SpaceKey.code;\r\n }\r\n\r\n public isOneOf(keyboardInputs: KeyboardInput[]): boolean {\r\n return _.includes(keyboardInputs.map(x => x.code), this.code);\r\n }\r\n\r\n public constructor(code: number) {\r\n this.code = code;\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\nimport {Observable} from \"rxjs\";\r\nimport {KeyboardInput} from \"app/shared/classes/keyboard-input\";\r\n export class DataGridHelpers {\r\n private static readonly DataRowType: string = 'data';\r\n private static readonly ExpandColumnCommand: string = 'expand';\r\n\r\n static miscKeys = [\r\n 13, // Enter\r\n 27, // Esc\r\n 9, // Tab\r\n 8, // Backspace\r\n 46 // Delete\r\n ];\r\n\r\n static validIntegerKeyCodes = [\r\n 48, // 0\r\n 49, // 1\r\n 50, // 2\r\n 51, // 3\r\n 52, // 4\r\n 53, // 5\r\n 54, // 6\r\n 55, // 7\r\n 56, // 8\r\n 57, // 9\r\n 96, // 0\r\n 97, // 1\r\n 98, // 2\r\n 99, // 3\r\n 100, // 4\r\n 101, // 5\r\n 102, // 6\r\n 103, // 7\r\n 104, // 8\r\n 105 // 9\r\n ];\r\n\r\n static onNumberColumnChange(onEditorPreparedEvent: any, columnName: string): Observable {\r\n return Observable.create(observer => {\r\n if (onEditorPreparedEvent.parentType === 'dataRow' && onEditorPreparedEvent.dataField === columnName) {\r\n const numberBox = onEditorPreparedEvent.editorElement.dxNumberBox('instance');\r\n\r\n if (numberBox) {\r\n numberBox.option('onValueChanged', args => {\r\n onEditorPreparedEvent.setValue(args.value);\r\n observer.next(null);\r\n observer.complete();\r\n });\r\n }\r\n }\r\n });\r\n }\r\n\r\n static highlightCellElement(e: any): void {\r\n setTimeout(() => e.querySelector('.dx-texteditor-input').select(), 0);\r\n }\r\n\r\n static highlightCellOnFocus(e: any): void {\r\n if (!!e.dataField && e.parentType === \"dataRow\") {\r\n e.editorOptions.onFocusIn = function (args) {\r\n setTimeout(() => args.element.querySelector('.dx-texteditor-input').select(), 0);\r\n };\r\n }\r\n }\r\n\r\n // Highlights the contents of a cell when you click on it\r\n static highlightNumberCellContents(onDetailsCellPreparedEvent: any): void {\r\n const numberBox = this.cellElementToNumberBox(onDetailsCellPreparedEvent.cellElement);\r\n if (numberBox) {\r\n if (onDetailsCellPreparedEvent.column.allowEditing) {\r\n this.highlightCellContents(numberBox);\r\n }\r\n }\r\n }\r\n\r\n private static highlightCellContents(element: HTMLInputElement): void {\r\n const fn = () => {\r\n if (element !== document.activeElement) {\r\n window.setTimeout(fn, 25);\r\n } else {\r\n element.select();\r\n }\r\n };\r\n window.setTimeout(fn, 0);\r\n }\r\n\r\n // Use from html with: (onKeyDown)=\"filterNonIntegerKeys($event)\" . You will probably need to create a local\r\n // method that calls this static method. I don't believe you can call static methods directly from the HTML\r\n static filterNonIntegerKeys(e: any): void {\r\n const validKeys = _.union(this.miscKeys, this.validIntegerKeyCodes);\r\n this.filterKeys(e, validKeys);\r\n }\r\n\r\n private static filterKeys(e: any, validKeys: Array): void {\r\n const keyCode = e.event.keyCode;\r\n const isValidKeyCode = _.includes(validKeys, keyCode);\r\n !isValidKeyCode && e.event.preventDefault();\r\n }\r\n\r\n static filterOutEscapeKey(e: any): void {\r\n const keyCode = e.event.keyCode;\r\n if (keyCode === 27) e.event.preventDefault();\r\n }\r\n\r\n static filterOutCommaKey(e: any): void {\r\n const keyCode = e.event.keyCode;\r\n const shiftKey = e.event.shiftKey;\r\n\r\n const keyboardInput = new KeyboardInput(keyCode);\r\n\r\n const allowedSpecialKeys: KeyboardInput[] =\r\n [KeyboardInput.BackspaceKey, KeyboardInput.TabKey, KeyboardInput.SpaceKey, KeyboardInput.DeleteKey, KeyboardInput.HomeKey, KeyboardInput.EndKey, KeyboardInput.LeftKey, KeyboardInput.RightKey];\r\n\r\n if (keyboardInput.isLetter() || keyboardInput.isNumber(shiftKey) || keyboardInput.isOneOf(allowedSpecialKeys)) {\r\n return;\r\n }\r\n\r\n e.event.preventDefault();\r\n }\r\n\r\n static filterOutNonAlphanumericKeys(e: any): void {\r\n const keyboardInput = new KeyboardInput(e.event.keyCode);\r\n const shiftKey = e.event.shiftKey;\r\n\r\n if (DataGridHelpers.isValidPackageIdKey(keyboardInput, shiftKey)) {\r\n return;\r\n }\r\n e.event.preventDefault();\r\n }\r\n\r\n static filterOutNonIntegerKeys(e: any): void {\r\n const keyboardInput = new KeyboardInput(e.event.keyCode);\r\n const shiftKey = e.event.shiftKey;\r\n\r\n if (DataGridHelpers.isValidIntegerKey(keyboardInput, shiftKey)) {\r\n return;\r\n }\r\n e.event.preventDefault();\r\n }\r\n\r\n static filterOutArrowKeys(e: any): void {\r\n // Don't process up/down arrows that would otherwise change values in the cell (i.e. grid)\r\n e.editorOptions.onKeyDown = (keypress) => {\r\n const key = keypress.event.key;\r\n if (key === \"ArrowUp\" || key === \"Up\" || key === \"ArrowDown\" || key === \"Down\") {\r\n keypress.event.preventDefault();\r\n keypress.event.stopPropagation();\r\n }\r\n };\r\n }\r\n\r\n // Give a datagrid's cell element, returns the embedded number\r\n // box or null.\r\n static cellElementToNumberBox(cellElement: HTMLDivElement): HTMLInputElement {\r\n const numberBoxContainer = cellElement.querySelector('.dx-numberbox');\r\n if (numberBoxContainer) {\r\n return numberBoxContainer.querySelector('.dx-texteditor-input');\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n public static isValidPackageIdKey(keyboardInput: KeyboardInput, shiftKey: boolean) {\r\n return (keyboardInput.isLetter() || keyboardInput.isNumber(shiftKey) || keyboardInput.isSpace() || keyboardInput.isOneOf(KeyboardInput.EditingKeys));\r\n }\r\n\r\n public static isValidIntegerKey(keyboardInput: KeyboardInput, shiftKey: boolean) {\r\n return (keyboardInput.isNumber(shiftKey) || keyboardInput.isOneOf(KeyboardInput.EditingKeys));\r\n }\r\n\r\n /**\r\n * https://js.devexpress.com/Documentation/ApiReference/UI_Widgets/dxDataGrid/Row/#rowType\r\n */\r\n public static isDataRow(rowType: string): boolean {\r\n return rowType === this.DataRowType;\r\n }\r\n\r\n public static whenColumnDataFieldIs($event: any, dataField: string, executeFunction: () => void) {\r\n if ($event.column.dataField !== dataField) return;\r\n\r\n executeFunction();\r\n }\r\n\r\n public static whenColumnCommandIsExpand($event: any, executeFunction: () => void) {\r\n if ($event.column.command !== this.ExpandColumnCommand) return;\r\n\r\n executeFunction();\r\n }\r\n}\r\n","import * as dx from \"devextreme/core/renderer\";\r\n\r\nexport class DataGridColumnFormatHelper {\r\n private static ExpandIconCssClass: string = 'dx-datagrid-expand';\r\n\r\n public static setColSpan($event, colSpan: number): void {\r\n $event.cellElement.colSpan = colSpan;\r\n }\r\n public static hideExpandIcon($event): void {\r\n dx($event.cellElement).removeClass(DataGridColumnFormatHelper.ExpandIconCssClass);\r\n dx($event.cellElement).empty();\r\n }\r\n public static hideCell($event): void {\r\n dx($event.cellElement).css(\"display\", \"none\");\r\n }\r\n public static setBackgroundColor($event, color: string): void {\r\n dx($event.cellElement).css(\"background-color\", color);\r\n }\r\n public static clearCell($event): void {\r\n dx($event.cellElement).empty();\r\n }\r\n public static clearBorder($event): void {\r\n dx($event.cellElement).css(\"border\", \"none\");\r\n dx($event.cellElement).css(\"border-color\");\r\n }\r\n}\r\n","
\r\n
\r\n AS OF {{model.searchDateTime | dateFormat:'YYYY-MMM-DD H:mm:ss'}}\r\n\r\n
0\" class=\"pull-right\">\r\n Export PDF\r\n
\r\n
\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n Opening Balance for {{ row.data.enterpriseDisplayName }} at {{ row.data.locationName }}\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n Allowed
Injection
(GJ)\r\n
\r\n \r\n
\r\n Allowed
Withdrawal
(GJ)\r\n
\r\n \r\n
\r\n Daily
Variance (GJ)\r\n
\r\n \r\n
\r\n Cumulative
Balance (GJ)\r\n
\r\n
\r\n {{ row.data.openingBalance | numberFormat}}\r\n
\r\n\r\n
\r\n \r\n\r\n \r\n
\r\n {{ row.data.gasDay | gasDayFormat }}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
{{ row.value.toLocaleString() }}
\r\n
\r\n \r\n
\r\n
{{ row.value.toLocaleString() }}
\r\n
\r\n \r\n \r\n
\r\n {{ row.value | numberFormat}}\r\n
\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n\r\n \r\n \r\n \r\n
\r\n {{ !row.data['isAdjustment'] ? row.value : row.data['transferDirection']}}\r\n
\r\n\r\n \r\n \r\n \r\n
\r\n
{{ row.value.toLocaleString() }}
\r\n
\r\n \r\n
\r\n
{{ row.value.toLocaleString() }}
\r\n
\r\n \r\n \r\n
\r\n {{ row.value | numberFormat}}\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n","import {Component, Input, ViewChild} from '@angular/core';\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {StorageTransportationBalanceReportModel} from \"app/gcts/flowinggas/storage-transportation-balance-report/storage-transportation-balance-report.model\";\r\nimport {StorageTransportationBalanceService} from \"@shared/services/flowing-gas/storage-transportation-balance/storage-transportation-balance.service\";\r\nimport {DataGridHelpers} from \"@model/datagrid-helpers\";\r\nimport {DataGridColumnFormatHelper} from \"@shared/helpers/data-grid-column-format-helper\";\r\nimport {HttpResponse} from \"@angular/common/http\";\r\nimport * as FileSaver from \"file-saver\";\r\n\r\n@Component({\r\n selector: 'app-storage-transportation-balance-balance-tab',\r\n templateUrl: './storage-transportation-balance-balance-tab.component.html',\r\n styleUrls: ['./storage-transportation-balance-balance-tab.component.css']\r\n})\r\nexport class StorageTransportationBalanceBalanceTabComponent {\r\n @Input() model: StorageTransportationBalanceReportModel;\r\n @ViewChild(DxDataGridComponent) dataGrid: DxDataGridComponent;\r\n\r\n constructor(protected storageTransportationBalanceService: StorageTransportationBalanceService) { }\r\n\r\n public onRowPrepared(row) {\r\n if(row.rowType === 'data') {\r\n row.rowElement.classList.add('opening-balance-summary');\r\n }\r\n }\r\n\r\n public storageTransportationBalanceBalanceOnCellPrepared($event): void {\r\n if (!DataGridHelpers.isDataRow($event.rowType)) {\r\n return;\r\n }\r\n\r\n DataGridHelpers.whenColumnDataFieldIs($event, 'enterpriseDisplayName', () => DataGridColumnFormatHelper.setColSpan($event, 8));\r\n DataGridHelpers.whenColumnDataFieldIs($event, 'nominationGroupMnemonic', () => DataGridColumnFormatHelper.hideCell($event));\r\n DataGridHelpers.whenColumnDataFieldIs($event, 'receiptLocationName', () => DataGridColumnFormatHelper.hideCell($event));\r\n DataGridHelpers.whenColumnDataFieldIs($event, 'deliveryLocationName', () => DataGridColumnFormatHelper.hideCell($event));\r\n DataGridHelpers.whenColumnDataFieldIs($event, 'serviceClass', () => DataGridColumnFormatHelper.hideCell($event));\r\n DataGridHelpers.whenColumnDataFieldIs($event, 'allowedInjection', () => DataGridColumnFormatHelper.hideCell($event));\r\n DataGridHelpers.whenColumnDataFieldIs($event, 'allowedWithdrawal', () => DataGridColumnFormatHelper.hideCell($event));\r\n DataGridHelpers.whenColumnDataFieldIs($event, 'dailyVariance', () => DataGridColumnFormatHelper.hideCell($event));\r\n }\r\n\r\n public getLocationName(e: any): string {\r\n return e.component.element().attributes[\"data-master\"].value;\r\n }\r\n\r\n public exportPdfClicked(): void {\r\n this.storageTransportationBalanceService.queryPdf(this.model.lastSearchParams.reportingMonth, this.model.lastSearchParams.billingGasMonth, this.model.lastSearchParams.customerId, this.model.lastSearchParams.locationId)\r\n .subscribe(data =>\r\n this.downloadFile(data)\r\n );\r\n }\r\n\r\n private downloadFile(response: HttpResponse) {\r\n const mediaType = response.headers.get('content-type');\r\n const blob = new Blob([response.body], {type: mediaType});\r\n\r\n // from the content disposition, should be second element with =\"{filename}\" surrounding it\r\n const filename = response.headers.get('content-disposition').split(';')[1].trim().split('=')[1].replace(/\"/g, '');\r\n FileSaver.saveAs(blob, filename);\r\n }\r\n\r\n public toggleExpandAll(expandAll: boolean, dataGrid: DxDataGridComponent): void {\r\n this.model.expandAll = expandAll;\r\n\r\n if(expandAll) {\r\n dataGrid.instance.expandAll(-1);\r\n } else {\r\n dataGrid.instance.collapseAll(-1);\r\n }\r\n }\r\n}\r\n\r\n","
\r\n
\r\n AS OF {{model.searchDateTime | dateFormat:'YYYY-MMM-DD H:mm:ss'}}\r\n\r\n
0\" class=\"pull-right\">\r\n Export PDF\r\n
\r\n
\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n
\r\n {{ row.data.enterpriseDisplayName }} at {{ row.data.locationName }}\r\n
\r\n\r\n \r\n \r\n \r\n\r\n
\r\n \r\n\r\n \r\n
\r\n {{ row.data.gasDay | gasDayFormat }}\r\n
\r\n \r\n \r\n
\r\n {{ row.value | numberFormat}}\r\n
\r\n \r\n
\r\n {{ row.value !== null ? (row.value | currency) : 'Unable to determine estimated fee at this time.' }}\r\n
\r\n \r\n
\r\n \r\n\r\n
\r\n","import {Component, Input, ViewChild} from '@angular/core';\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {StorageTransportationBalanceReportModel} from \"app/gcts/flowinggas/storage-transportation-balance-report/storage-transportation-balance-report.model\";\r\nimport {DataGridHelpers} from \"@model/datagrid-helpers\";\r\nimport {DataGridColumnFormatHelper} from \"@shared/helpers/data-grid-column-format-helper\";\r\nimport {HttpResponse} from \"@angular/common/http\";\r\nimport * as FileSaver from \"file-saver\";\r\nimport {StorageTransportationBalanceService} from \"@shared/services/flowing-gas/storage-transportation-balance/storage-transportation-balance.service\";\r\n\r\n@Component({\r\n selector: 'app-storage-transportation-balance-excess-tab',\r\n templateUrl: './storage-transportation-balance-excess-tab.component.html',\r\n styleUrls: ['./storage-transportation-balance-excess-tab.component.css']\r\n})\r\nexport class StorageTransportationBalanceExcessTabComponent {\r\n @Input() model: StorageTransportationBalanceReportModel;\r\n @ViewChild(DxDataGridComponent) dataGrid: DxDataGridComponent;\r\n\r\n constructor(protected storageTransportationBalanceService: StorageTransportationBalanceService) { }\r\n\r\n public storageTransportationBalanceExcessOnCellPrepared($event): void {\r\n if (!DataGridHelpers.isDataRow($event.rowType)) {\r\n return;\r\n }\r\n\r\n DataGridHelpers.whenColumnDataFieldIs($event, 'enterpriseDisplayName', () => DataGridColumnFormatHelper.setColSpan($event, 4));\r\n DataGridHelpers.whenColumnDataFieldIs($event, 'locationName', () => DataGridColumnFormatHelper.hideCell($event));\r\n DataGridHelpers.whenColumnDataFieldIs($event, 'excess', () => DataGridColumnFormatHelper.hideCell($event));\r\n DataGridHelpers.whenColumnDataFieldIs($event, 'excessFee', () => DataGridColumnFormatHelper.hideCell($event));\r\n }\r\n\r\n public exportPdfClicked(): void {\r\n this.storageTransportationBalanceService.queryPdf(this.model.lastSearchParams.reportingMonth, this.model.lastSearchParams.billingGasMonth, this.model.lastSearchParams.customerId, this.model.lastSearchParams.locationId)\r\n .subscribe(data =>\r\n this.downloadFile(data)\r\n );\r\n }\r\n\r\n private downloadFile(response: HttpResponse) {\r\n const mediaType = response.headers.get('content-type');\r\n const blob = new Blob([response.body], {type: mediaType});\r\n\r\n // from the content disposition, should be second element with =\"{filename}\" surrounding it\r\n const filename = response.headers.get('content-disposition').split(';')[1].trim().split('=')[1].replace(/\"/g, '');\r\n FileSaver.saveAs(blob, filename);\r\n }\r\n\r\n}\r\n\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Reporting Month: {{model.lastSearchParams?.reportingMonth }}\r\n Customer: {{model.lastSearchParams?.customerId | displayName: 'cid' : 'displayValue' : model.customers}}\r\n Billing Month: {{model.lastSearchParams?.billingGasMonth}}\r\n Location: {{model.lastSearchParams?.locationId | displayName: 'id' : 'name' : model.lastSearchLocations}}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.searchParams?.customerId | displayName: 'id' : 'displayValue' : model.customers}}\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.searchParams.billingGasMonth}}\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.reportingMonth | gasMonthFormat}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.status}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.billingGasMonth}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.customerId | displayName: 'cid' : 'displayValue' : model.customers}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.locationId | displayName: 'id' : 'name' : model.lastSearchLocations}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
Notes:
\r\n
\r\n
    \r\n
  1. Negative variances and balances represent drafts or gas withdrawn from storage
  2. \r\n
  3. Postitive variances and balances represent packs or gas injected into storage
  4. \r\n
  5. These calculations are estimates only and are based on the latest nomination information provided by the customer
  6. \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n","import {Component, ViewChild} from \"@angular/core\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {forkJoin, Observable, of} from \"rxjs\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {CommonDataEnterpriseSearchParams, Enterprise, EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {concatMap, tap} from \"rxjs/operators\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {CommonDataLocation, LocationSearchRequest, LocationService} from \"@shared/services/common-data/location/location.service\";\r\nimport {LocationEnrichmentService} from \"@shared/services/enrichment/location-enrichment.service\";\r\nimport * as _ from \"lodash\";\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {CommonDataGasdayService} from \"@shared/services/common-data/common-data-gasday/common-data-gasday.service\";\r\nimport {UserService} from \"@shared/services/webapp/user/user-service\";\r\nimport {BillingProcess, FlowingGasAllocationAndBalancingBillingProcessService} from \"@shared/services/flowing-gas/flowing-gas-allocation-and-balancing-billing-process/flowing-gas-allocation-and-balancing-billing-process.service\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {DxTabPanelComponent} from \"devextreme-angular\";\r\nimport {StorageTransportationBalanceReportModel, StorageTransportationBalanceReportSearchParams} from \"app/gcts/flowinggas/storage-transportation-balance-report/storage-transportation-balance-report.model\";\r\nimport {StorageTransportationBalance, StorageTransportationBalanceService} from \"@shared/services/flowing-gas/storage-transportation-balance/storage-transportation-balance.service\";\r\nimport {NominationGroupService} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport {NomGroupEnrichmentService} from \"@shared/services/enrichment/nomgroup-enrichment.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\n\r\n@Component({\r\n selector: 'app-storage-transportation-balance-report',\r\n templateUrl: './storage-transportation-balance-report.component.html',\r\n styleUrls: ['./storage-transportation-balance-report.component.css']\r\n})\r\n\r\nexport class StorageTransportationBalanceReportComponent extends BaseSearchComponent {\r\n\r\n public model: StorageTransportationBalanceReportModel = new StorageTransportationBalanceReportModel();\r\n\r\n @ViewChild('tabPanel') tabPanel: DxTabPanelComponent;\r\n\r\n storageTransportationBalanceTabs = [\r\n {id: 1, title: \"Balance\", template: \"balanceTemplate\"},\r\n {id: 2, title: \"Excess Withdrawal\", template: \"excessWithdrawalTemplate\"}\r\n ];\r\n\r\n constructor(\r\n appService: AppService,\r\n activatedRoute: ActivatedRoute,\r\n router: Router,\r\n protected alertService: AlertService,\r\n protected sessionService: SessionService,\r\n protected commonDataBillingMonthService: CommonDataBillingMonthService,\r\n protected enterpriseService: EnterpriseService,\r\n protected enterpriseEnrichmentService: EnterpriseEnrichmentService,\r\n protected locationService: LocationService,\r\n protected locationEnrichmentService: LocationEnrichmentService,\r\n protected commonDataGasDayService: CommonDataGasdayService,\r\n protected nominationGroupService: NominationGroupService,\r\n protected nominationGroupEnrichmentService: NomGroupEnrichmentService,\r\n protected userService: UserService,\r\n protected flowingGasAllocationAndBalancingBillingProcessService: FlowingGasAllocationAndBalancingBillingProcessService,\r\n protected storageTransportationBalanceService: StorageTransportationBalanceService\r\n ) {\r\n super('Storage Transportation Balance', appService, activatedRoute, router, alertService);\r\n\r\n enterpriseEnrichmentService.setEnrichmentResource(enterpriseService);\r\n locationEnrichmentService.setEnrichmentResource(locationService);\r\n nominationGroupEnrichmentService.setEnrichmentResource(nominationGroupService);\r\n\r\n this.appService.hideMenu();\r\n }\r\n\r\n public onReportingMonthChanged(): void {\r\n if (_.isNil(this.model.searchParams.reportingMonth)) {\r\n this.model.searchParams.billingGasMonth = undefined;\r\n return;\r\n }\r\n\r\n this.setMaxBillingMonth();\r\n if(this.model.searchParams.reportingMonth.isEqual(this.model.openBillingMonth.gasMonth) || this.model.searchParams.reportingMonth.isEqual(this.model.maxReportingGasMonth)) {\r\n this.model.searchParams.billingGasMonth = this.model.searchParams.reportingMonth;\r\n return;\r\n }\r\n if(this.model.searchParams.billingGasMonth.isEqual(this.model.maxReportingGasMonth)) {\r\n this.model.searchParams.billingGasMonth = this.model.openBillingMonth.gasMonth;\r\n return;\r\n }\r\n if(this.model.searchParams.billingGasMonth.toDate < this.model.searchParams.reportingMonth.toDate) {\r\n this.model.searchParams.billingGasMonth = this.model.searchParams.reportingMonth;\r\n }\r\n }\r\n\r\n public setMaxBillingMonth(): void {\r\n if(this.model.searchParams.reportingMonth.isEqual(this.model.maxReportingGasMonth)) {\r\n this.model.maxBillingGasMonth = this.model.maxReportingGasMonth;\r\n }\r\n else {\r\n this.model.maxBillingGasMonth = this.model.openBillingMonth.gasMonth;\r\n }\r\n }\r\n\r\n public onCustomerChanged(): void {\r\n this.model.searchParams.locationId = null;\r\n if(_.isNil(this.model.searchParams.customerId)) {\r\n this.model.locations = [];\r\n return;\r\n }\r\n this.queryCustomerLocations().subscribe(() => {});\r\n }\r\n\r\n public shouldShowNotes() {\r\n return this.model.lastSearchParams && !(this.tabPanel && this.tabPanel.selectedIndex === 1 && this.model.excessWithdrawalCount === 0);\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return this.paramValidator().isValid(params);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {};\r\n params['reportingMonth'] = this.model.searchParams.reportingMonth;\r\n params['billingMonth'] = this.model.searchParams.billingGasMonth;\r\n params['enterpriseCid'] = !_.isNil(this.model.searchParams.customerId) ? this.model.searchParams.customerId : null;\r\n params['locationId'] = !_.isNil(this.model.searchParams.locationId) ? this.model.searchParams.locationId : null;\r\n return params;\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n this.model.isExternalUser = this.userService.user.isExternalUser;\r\n const getOldestBillingMonth$ = this.commonDataBillingMonthService.getOldest()\r\n .pipe(\r\n tap(oldestBillingMonth => this.model.oldestBillingMonth = oldestBillingMonth)\r\n );\r\n\r\n const getOpenBillingMonth$ = this.commonDataBillingMonthService.getOpen()\r\n .pipe(\r\n tap(openBillingMonth => this.model.openBillingMonth = openBillingMonth)\r\n );\r\n\r\n const getPreliminaryBillingMonth$ = this.commonDataBillingMonthService.getPreliminary()\r\n .pipe(\r\n tap(preliminaryBillingMonth => this.model.preliminaryBillingMonth = preliminaryBillingMonth)\r\n );\r\n\r\n const queryDateTime$ = this.commonDataGasDayService.getServerTimeData()\r\n .pipe(\r\n tap(serverTimeData => this.model.currentGasDay = serverTimeData.gasDay)\r\n );\r\n\r\n return forkJoin([getOldestBillingMonth$, getOpenBillingMonth$, getPreliminaryBillingMonth$, queryDateTime$])\r\n .pipe(\r\n tap(() => {\r\n this.model.maxReportingGasMonth = this.model.preliminaryBillingMonth ? this.model.preliminaryBillingMonth.gasMonth : this.model.openBillingMonth.gasMonth;\r\n\r\n this.model.minGasDay = this.model.oldestBillingMonth.firstDayOfMonth;\r\n const yesterday = this.model.currentGasDay.addDays(-1);\r\n this.model.maxGasDay = yesterday.isLessThan(this.model.maxReportingGasMonth.end()) ? yesterday : this.model.maxReportingGasMonth.end();\r\n this.model.maxGasDayWithinMonth = this.model.maxGasDay;\r\n\r\n this.model.minReportingGasMonth = GasMonth.fromGasDay(GasDay.parse(this.sessionService.getPipeline().uiAccessibleGasDay));\r\n this.model.minBillingGasMonth = this.model.oldestBillingMonth.gasMonth;\r\n this.model.maxBillingGasMonth = this.model.openBillingMonth.gasMonth;\r\n })\r\n );\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n if(this.userService.user.isExternalUser) {\r\n this.model.searchParams.customerId = this.userService.user.enterpriseId;\r\n }\r\n\r\n const queryOperators$ = this.queryCustomers();\r\n const queryOperatorLocations$ = this.queryCustomerLocations();\r\n\r\n return forkJoin([queryOperators$, queryOperatorLocations$]);\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n this.model.lastSearchLocations = _.clone(this.model.locations);\r\n\r\n const queryStatus$ = this.queryStatus();\r\n\r\n const queryBalanceData$ = this.queryStorageTransportationBalanceData();\r\n\r\n const getServerDateTime$ = this.commonDataGasDayService.getServerTimeData()\r\n .pipe(\r\n tap(serverTimeData => this.model.searchDateTime = serverTimeData.serverTime.toDate())\r\n );\r\n\r\n return forkJoin([queryStatus$, queryBalanceData$, getServerDateTime$]).pipe(\r\n tap(() => {\r\n this.model.hasSearchResults = true;\r\n })\r\n );\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams = new StorageTransportationBalanceReportSearchParams();\r\n this.model.searchParams.reportingMonth = this.model.openBillingMonth.gasMonth;\r\n this.model.minBillingGasMonth = this.model.oldestBillingMonth.gasMonth;\r\n this.model.maxBillingGasMonth = this.model.openBillingMonth.gasMonth;\r\n this.model.searchParams.billingGasMonth = this.model.openBillingMonth.gasMonth;\r\n this.model.searchParams.customerId = null;\r\n this.model.searchParams.locationId = null;\r\n this.model.clearSearchResults();\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams = new StorageTransportationBalanceReportSearchParams();\r\n this.model.searchParams.reportingMonth = typedParams.asGasMonth('reportingMonth');\r\n this.model.searchParams.billingGasMonth = typedParams.asGasMonth('billingMonth');\r\n this.model.searchParams.customerId = typedParams.asNullableNumber('enterpriseCid');\r\n this.model.searchParams.locationId = typedParams.asNullableNumber('locationId');\r\n }\r\n\r\n private paramValidator(): ParamValidator {\r\n return ParamValidator.Standard();\r\n }\r\n\r\n private queryStatus(): Observable {\r\n const monthForStatus = this.model.isExternalUser ? this.model.lastSearchParams.reportingMonth : this.model.lastSearchParams.billingGasMonth;\r\n return this.flowingGasAllocationAndBalancingBillingProcessService.get(monthForStatus)\r\n .pipe(\r\n tap(billingProcess => {\r\n this.model.status = billingProcess[0].status === 'Final' ? 'Final' : 'Preliminary';\r\n })\r\n );\r\n }\r\n\r\n private queryStorageTransportationBalanceData(): Observable {\r\n return this.storageTransportationBalanceService.query(this.model.lastSearchParams.reportingMonth, this.model.lastSearchParams.billingGasMonth, this.model.lastSearchParams.customerId, this.model.lastSearchParams.locationId)\r\n .pipe(\r\n concatMap(response => this.enterpriseEnrichmentService.enrichArray(response, 'enterpriseCid', 'enterprise')),\r\n concatMap(response => this.locationEnrichmentService.enrichArray(response, 'locationId', 'location')),\r\n concatMap(response => {\r\n if(response.length === 0) {\r\n return of(response);\r\n }\r\n const serviceCalls: Observable[] = [];\r\n _.forEach(response, x => {\r\n _.forEach(x.dailyBalances, d => {\r\n serviceCalls.push(this.nominationGroupEnrichmentService.enrichArray(d.transactions, 'nominationGroupId', 'nominationGroup'));\r\n serviceCalls.push(this.locationEnrichmentService.enrichArray(d.transactions, 'receiptLocationId', 'receiptLocation'));\r\n serviceCalls.push(this.locationEnrichmentService.enrichArray(d.transactions, 'deliveryLocationId', 'deliveryLocation'));\r\n });\r\n serviceCalls.push(this.locationEnrichmentService.enrichArray(x.dailyExcessProjections, 'locationId', 'location'));\r\n });\r\n return forkJoin(serviceCalls).pipe(concatMap(() => of(response)));\r\n }),\r\n tap(response => {\r\n this.model.balanceSearchResults = response;\r\n this.model.excessSearchResults = _.filter(response, x => x.dailyExcessProjections.length > 0);\r\n this.model.excessWithdrawalCount = 0;\r\n _.forEach(this.model.excessSearchResults, x => {\r\n this.model.excessWithdrawalCount = this.model.excessWithdrawalCount + x.dailyExcessProjections.length;\r\n });\r\n this.storageTransportationBalanceTabs[1].title = `Excess Withdrawal (${this.model.excessWithdrawalCount})`;\r\n })\r\n );\r\n }\r\n\r\n private queryCustomerLocations(): Observable {\r\n if(_.isNil(this.model.searchParams.customerId)) {\r\n return of(null);\r\n }\r\n const searchParams = new LocationSearchRequest();\r\n searchParams.gasDay = this.model.searchParams.billingGasMonth.end();\r\n searchParams.operatorCid = this.model.searchParams.customerId;\r\n searchParams.hasStorageBalanceLocation = true;\r\n\r\n return this.locationService.queryLocations(searchParams)\r\n .pipe(\r\n concatMap(locations => this.locationEnrichmentService.enrichArray(locations, 'id')),\r\n tap(locations => {\r\n this.model.locations = _.orderBy(locations, x => x.name);\r\n if(this.model.locations.length === 1) {\r\n this.model.searchParams.locationId = this.model.locations[0].id;\r\n }\r\n\r\n if(_.isEmpty(this.model.locations)) {\r\n // Using enrichment to get enterprise name, because the enterprises might not be set at the model at this time\r\n // because it is queried at the same time locations are queried.\r\n const enterprise = Enterprise.createWithId(this.model.searchParams.customerId);\r\n this.enterpriseEnrichmentService.enrich(enterprise, 'cid').subscribe(() => {\r\n this.alertService.addWarnMessage('Warning', `A Storage Transportation Balance was not found for ${enterprise.displayName}`);\r\n });\r\n }\r\n })\r\n );\r\n }\r\n\r\n private queryCustomers(): Observable {\r\n const commonDataEnterpriseSearchParams = new CommonDataEnterpriseSearchParams();\r\n commonDataEnterpriseSearchParams.hasStorageBalanceLocation = true;\r\n commonDataEnterpriseSearchParams.pipeline = this.sessionService.getPipeline().code;\r\n\r\n const queryCustomers = !this.userService.user.isExternalUser\r\n ? this.enterpriseService.getAll(commonDataEnterpriseSearchParams)\r\n : of([Enterprise.createWithId(this.userService.user.enterpriseId)]);\r\n\r\n return queryCustomers\r\n .pipe(\r\n concatMap(enterprises => this.enterpriseEnrichmentService.enrichArray(enterprises, 'cid')),\r\n tap(enterprises => {\r\n this.model.customers = enterprises;\r\n\r\n if(this.userService.user.isExternalUser) {\r\n this.model.searchParams.customerId = this.userService.user.enterpriseId;\r\n }\r\n })\r\n );\r\n }\r\n}\r\n","\r\nimport {of, Observable} from 'rxjs';\r\n\r\nimport {map} from 'rxjs/operators';\r\nimport * as _ from 'lodash';\r\nimport {Injectable} from '@angular/core';\r\nimport {ActivatedRouteSnapshot, CanDeactivate, RouterStateSnapshot} from \"@angular/router\";\r\nimport {YesNoCancelModalService} from \"../yes-no-cancel-modal/yes-no-cancel-modal.service\";\r\nimport {ModalOptions} from \"../modal-options/modal-options\";\r\nimport {SelectedModalOption} from \"../modal-options/selected-modal-option\";\r\nimport {YesNoCancelModalOptions} from \"../modal-options/yes-no-cancel-modal-options\";\r\nimport {YesNoModalOptions} from \"../modal-options/yes-no-modal-options\";\r\n\r\nexport interface GuardAgainstUnsavedChanges {\r\n // This Guard will get triggered when the router navigates. Side Note: If you click the search button for example,\r\n // and don't change any Filters at the top of a Search page, then this Guard will not get triggered. Only if the URI\r\n // is changing somehow\r\n\r\n // Some tips:\r\n // If you want to check whether the form is dirty, import the form with @ViewChild(NgForm) f;\r\n // Then use something like this.f.form.valid or this.f.form.pristine to check dirty state\r\n hasUnsavedChanges(): boolean;\r\n\r\n // Some tips:\r\n // The options of ModalService.getDefaultYesNoModalOptions(); are useful for a Yes/No scenario\r\n getDefaultChangesWillBeLostMessageOptions(): ModalOptions;\r\n\r\n navigationCancelled(): void;\r\n}\r\n\r\n@Injectable()\r\nexport class UnsavedChangesService implements CanDeactivate {\r\n\r\n constructor(private modalService: YesNoCancelModalService) { }\r\n\r\n canDeactivate(component: GuardAgainstUnsavedChanges,\r\n currentRoute: ActivatedRouteSnapshot,\r\n currentState: RouterStateSnapshot,\r\n nextState?: RouterStateSnapshot): Observable {\r\n if (_.isNil(component) || !component.hasUnsavedChanges()) { return of(true); }\r\n if (this.isRedirectingToLoginOrErrorUrl(nextState)) { return of(true); }\r\n\r\n // TODO: Implement error logging\r\n const defaultMessage = component.getDefaultChangesWillBeLostMessageOptions();\r\n\r\n return this.modalService.show(defaultMessage).pipe(map(selectedModalOption => {\r\n const response = SelectedModalOption[selectedModalOption];\r\n\r\n if (defaultMessage instanceof YesNoCancelModalOptions) {\r\n return this.processYesNoCancelModalResponse(response);\r\n }\r\n\r\n if (defaultMessage instanceof YesNoModalOptions) {\r\n return this.processYesNoModalResponse(response, component);\r\n }\r\n }));\r\n }\r\n\r\n /**\r\n * If Url is redirecting to the login or error page, we don't want to pop up the unsaved changes dialog.\r\n */\r\n private isRedirectingToLoginOrErrorUrl(nextState?: RouterStateSnapshot): boolean {\r\n if (_.isNil(nextState)) return false;\r\n return nextState.url.includes('/login') ||\r\n nextState.url.endsWith('/error');\r\n }\r\n\r\n processYesNoCancelModalResponse = (response): boolean => {\r\n return response === SelectedModalOption[SelectedModalOption.Yes] || response === SelectedModalOption[SelectedModalOption.No];\r\n };\r\n\r\n processYesNoModalResponse = (response, component): boolean => {\r\n const navigationCancelled = response === SelectedModalOption[SelectedModalOption.No];\r\n\r\n if (navigationCancelled) {\r\n component.navigationCancelled();\r\n }\r\n\r\n return !navigationCancelled;\r\n }\r\n}\r\n","import {BaseViewModel} from \"@model/base-view-model\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {ManualTransaction, ManualTransactionGasAccountMapping, ManualTransactionType} from \"@shared/services/flowing-gas/manual-transaction-service/manual-transaction.service\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport {Enterprise} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {CommonDataLocation} from \"@shared/services/common-data/location/location.service\";\r\nimport {NominationGroupDto} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport {PipelineOwner} from \"@shared/services/common-data/pipelines/common-data-pipelines.service\";\r\nimport {Location} from \"@shared/interfaces/location\";\r\n\r\nexport class ManualTransactionsModel extends BaseViewModel {\r\n oldestBillingMonth: BillingMonth;\r\n newestBillingMonth: BillingMonth;\r\n openBillingMonth: BillingMonth;\r\n\r\n minBillingMonth: GasMonth;\r\n maxBillingMonth: GasMonth;\r\n isEditing: boolean;\r\n isAdding: boolean;\r\n isEditingRowValid: boolean;\r\n\r\n showDebitAccount: boolean;\r\n showCreditAccount: boolean;\r\n showDebitLocation: boolean;\r\n showCreditLocation: boolean;\r\n\r\n searchParams: ManualTransactionsSearchParams = new ManualTransactionsSearchParams();\r\n lastSearchParams: ManualTransactionsSearchParams;\r\n\r\n searchResults: ManualTransaction[];\r\n\r\n transactionTypes: ManualTransactionType[];\r\n gasAccountMappings: ManualTransactionGasAccountMapping[];\r\n olpOwners: Enterprise[];\r\n omvLocations: CommonDataLocation[];\r\n accountingLocations: Location[];\r\n nominationGroups: NominationGroupDto[];\r\n pipelineOwner: PipelineOwner;\r\n\r\n debitAccountTypes: ManualTransactionGasAccountMapping[];\r\n debitAccounts: ManualTransactionAccount[];\r\n debitLocations: Location[];\r\n creditAccountTypes: ManualTransactionGasAccountMapping[];\r\n creditAccounts: ManualTransactionAccount[];\r\n creditLocations: Location[];\r\n}\r\n\r\nexport enum AccountsToUse {\r\n USE_PIPELINE_OWNER,\r\n USE_PIPELINE_SYSTEM_ACCOUNT_OWNERS,\r\n USE_NOMINATION_GROUPS_FROM_GAS_ACCOUNT\r\n}\r\n\r\nexport class ManualTransactionAccount {\r\n public id: number;\r\n public mnemonic: string;\r\n\r\n constructor(id: number, mnemonic: string) {\r\n this.id = id;\r\n this.mnemonic = mnemonic;\r\n }\r\n\r\n public static create(id: number, mnemonic: string) {\r\n return new ManualTransactionAccount(id, mnemonic);\r\n }\r\n}\r\n\r\nexport class ManualTransactionsSearchParams {\r\n fromBillingMonth: GasMonth;\r\n toBillingMonth: GasMonth;\r\n transactionType: string;\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {FlowinggasResourceService} from \"@shared/resources/flowinggas-resource.service\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {Observable} from \"rxjs\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {map} from \"rxjs/operators\";\r\nimport * as _ from \"lodash\";\r\nimport {GasDay} from \"@model/gas-day\";\r\n\r\n\r\nexport interface IManualTransactionTypeResponse {\r\n transactionType: string;\r\n debitAccount: string;\r\n creditAccount: string;\r\n}\r\n\r\nexport interface IManualTransactionGasAccountResponse {\r\n transactionType: string;\r\n gasAccountType: string;\r\n accountType: string;\r\n pipelineCode: string;\r\n}\r\n\r\nexport interface IManualTransactionResponse {\r\n pipeline: string;\r\n id: string;\r\n billingMonth: string;\r\n affectedGasDay: string;\r\n transactionType: string;\r\n energy: number;\r\n version: string;\r\n debitAccountType: string;\r\n debitAccountId: string;\r\n debitNomGroupId: string;\r\n debitEnterpriseId: string;\r\n debitLocationId: string;\r\n creditAccountType: string;\r\n creditAccountId: string;\r\n creditNomGroupId: string;\r\n creditEnterpriseId: string;\r\n creditLocationId: string;\r\n}\r\n\r\nexport class ManualTransaction {\r\n pipeline: string;\r\n id: number;\r\n billingMonth: GasMonth;\r\n affectedGasDay: string;\r\n transactionType: string;\r\n energy: number;\r\n version: number;\r\n debitAccountType: string;\r\n debitAccountId: number;\r\n debitNomGroupId: number;\r\n debitEnterpriseId: number;\r\n debitLocationId: number;\r\n debitAccount: string;\r\n creditAccountType: string;\r\n creditAccountId: number;\r\n creditNomGroupId: number;\r\n creditEnterpriseId: number;\r\n creditLocationId: number;\r\n creditAccount: string;\r\n\r\n isEditing: boolean;\r\n\r\n public static create(dto: IManualTransactionResponse): ManualTransaction {\r\n const manualTransaction = new ManualTransaction();\r\n manualTransaction.pipeline = dto.pipeline;\r\n manualTransaction.id = +dto.id;\r\n manualTransaction.billingMonth = GasMonth.parse(dto.billingMonth);\r\n manualTransaction.affectedGasDay = dto.affectedGasDay;\r\n manualTransaction.transactionType = dto.transactionType;\r\n manualTransaction.energy = +dto.energy;\r\n manualTransaction.version = +dto.version;\r\n manualTransaction.debitAccountType = dto.debitAccountType;\r\n manualTransaction.debitAccountId = !_.isNil(dto.debitAccountId) ? +dto.debitAccountId : null;\r\n manualTransaction.debitNomGroupId = !_.isNil(dto.debitNomGroupId) ? +dto.debitNomGroupId : null;\r\n manualTransaction.debitEnterpriseId = !_.isNil(dto.debitEnterpriseId) ? +dto.debitEnterpriseId : null;\r\n manualTransaction.debitLocationId = !_.isNil(dto.debitLocationId) ? +dto.debitLocationId : null;\r\n manualTransaction.creditAccountType = dto.creditAccountType;\r\n manualTransaction.creditAccountId = !_.isNil(dto.creditAccountId) ? +dto.creditAccountId : null;\r\n manualTransaction.creditNomGroupId = !_.isNil(dto.creditNomGroupId) ? +dto.creditNomGroupId : null;\r\n manualTransaction.creditEnterpriseId = !_.isNil(dto.creditEnterpriseId) ? +dto.creditEnterpriseId : null;\r\n manualTransaction.creditLocationId = !_.isNil(dto.creditLocationId) ? +dto.creditLocationId : null;\r\n\r\n return manualTransaction;\r\n }\r\n}\r\n\r\nexport class ManualTransactionType {\r\n public static CONSTRUCTION_USE: string = 'Construction Use';\r\n public static INVENTORY_TRANSFER: string = 'Inventory Transfer';\r\n public static LUF_GAIN: string = 'LUF Gain';\r\n public static LUF_LOSS: string = 'LUF Loss';\r\n public static MEASURED_FUEL: string = 'Measured Fuel';\r\n public static OTHER_LOSSES: string = 'Other Losses';\r\n public static WRITE_OFF: string = 'Write Off';\r\n\r\n transactionType: string;\r\n debitAccount: string;\r\n creditAccount: string;\r\n\r\n public static create(dto: IManualTransactionTypeResponse): ManualTransactionType {\r\n const manualTransactionType = new ManualTransactionType();\r\n manualTransactionType.transactionType = dto.transactionType;\r\n manualTransactionType.debitAccount = dto.debitAccount;\r\n manualTransactionType.creditAccount = dto.creditAccount;\r\n return manualTransactionType;\r\n }\r\n}\r\n\r\nexport class ManualTransactionGasAccountMapping {\r\n transactionType: string;\r\n gasAccountType: string;\r\n accountType: string;\r\n pipelineCode: string;\r\n\r\n public static create(dto: IManualTransactionGasAccountResponse): ManualTransactionGasAccountMapping {\r\n const manualTransactionGasAccountMapping = new ManualTransactionGasAccountMapping();\r\n manualTransactionGasAccountMapping.transactionType = dto.transactionType;\r\n manualTransactionGasAccountMapping.gasAccountType = dto.gasAccountType;\r\n manualTransactionGasAccountMapping.accountType = dto.accountType;\r\n manualTransactionGasAccountMapping.pipelineCode = dto.pipelineCode;\r\n return manualTransactionGasAccountMapping;\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport class ManualTransactionService {\r\n constructor(private flowingGasResourceService: FlowinggasResourceService) { }\r\n\r\n public queryManualTransactionTypes(): Observable {\r\n return this.flowingGasResourceService.get('/transactions/manual/definitions', true)\r\n .pipe(\r\n map(dtos => _.map(dtos, dto => ManualTransactionType.create(dto)))\r\n );\r\n }\r\n\r\n public queryGasAccountMappings(): Observable {\r\n return this.flowingGasResourceService.get('/transactions/manual/gasAccountMappings', true)\r\n .pipe(\r\n map(dtos => _.map(dtos, dto => ManualTransactionGasAccountMapping.create(dto)))\r\n );\r\n }\r\n\r\n public queryOlpOwners(): Observable {\r\n return this.flowingGasResourceService.get('/transactions/manual/olp/owners', true);\r\n }\r\n\r\n public queryManualTransactions(fromBillingMonth: GasMonth, toBillingMonth: GasMonth, transactionType: string): Observable {\r\n const params = new GCTSHttpParams();\r\n params.setGasMonth(fromBillingMonth, 'startBillingMonth');\r\n params.set('transactionType', transactionType);\r\n params.setGasMonth(toBillingMonth, 'endBillingMonth');\r\n\r\n return this.flowingGasResourceService.get('/transactions/manual', true, params)\r\n .pipe(\r\n map(dtos => _.map(dtos, dto => ManualTransaction.create(dto)))\r\n );\r\n }\r\n\r\n public submitManualTransaction(manualTransaction: ManualTransaction): Observable {\r\n const body = {\r\n billingMonth: manualTransaction.billingMonth.toString(),\r\n affectedGasDay: _.isDate(manualTransaction.affectedGasDay) ? GasDay.from(manualTransaction.affectedGasDay).toString() : manualTransaction.affectedGasDay.toString(),\r\n transactionType: manualTransaction.transactionType,\r\n energy: manualTransaction.energy,\r\n debitAccount: manualTransaction.debitAccount,\r\n creditAccount: manualTransaction.creditAccount,\r\n debitEnterprise: manualTransaction.debitEnterpriseId,\r\n creditEnterprise: manualTransaction.creditEnterpriseId,\r\n debitAccountType: manualTransaction.debitAccountType,\r\n creditAccountType: manualTransaction.creditAccountType,\r\n debitLocation: manualTransaction.debitLocationId,\r\n creditLocation: manualTransaction.creditLocationId,\r\n version: manualTransaction.version\r\n };\r\n\r\n return this.flowingGasResourceService.postWithNoResponseBody('/transactions/manual', body);\r\n }\r\n\r\n public updateManualTransaction(manualTransaction: ManualTransaction): Observable {\r\n const body = {\r\n id: manualTransaction.id,\r\n transactionType: manualTransaction.transactionType,\r\n energy: manualTransaction.energy,\r\n debitAccountType: manualTransaction.debitAccountType,\r\n creditAccountType: manualTransaction.creditAccountType,\r\n billingMonth: manualTransaction.billingMonth.toString(),\r\n version: manualTransaction.version\r\n };\r\n\r\n return this.flowingGasResourceService.putWithNoResponseBody('/transactions/manual', body);\r\n }\r\n\r\n public deleteManualTransaction(manualTransaction: ManualTransaction): Observable {\r\n const params = new GCTSHttpParams();\r\n params.setNumber('id', manualTransaction.id);\r\n params.set('transactionType', manualTransaction.transactionType);\r\n params.setGasMonth(manualTransaction.billingMonth, 'billingMonth');\r\n params.set('debitAccountType', manualTransaction.debitAccountType);\r\n params.set('creditAccountType', manualTransaction.creditAccountType);\r\n\r\n return this.flowingGasResourceService.deleteWithNoResponseBody('/transactions/manual', true, params);\r\n }\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {Observable} from \"rxjs\";\r\nimport {CommondataResourceService} from \"@shared/resources/commondata-resource.service\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {map} from \"rxjs/operators\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {Enterprise, IEnterpriseResponse} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {ProductionSetupUpdateRequest} from \"@model/service-models/production-setup-update-request\";\r\n\r\n@Injectable()\r\nexport class CommonDataPipelinesService {\r\n constructor(private commonDataResourceService: CommondataResourceService) {\r\n }\r\n\r\n getPipelineOwner(gasDay: GasDay): Observable {\r\n const params = new GCTSHttpParams();\r\n params.setGasDay(gasDay, 'gasDay');\r\n\r\n return this.commonDataResourceService.get('/owner', true, params)\r\n .pipe(\r\n map(dto => PipelineOwner.create(dto))\r\n );\r\n }\r\n\r\n updateProductionSetup(effectiveGasMonth: GasMonth, pipelineOwnerEnterpriseId: number){\r\n const productionSetupUpdateRequest: ProductionSetupUpdateRequest = new ProductionSetupUpdateRequest();\r\n productionSetupUpdateRequest.effectiveGasDay = effectiveGasMonth.start().toString();\r\n productionSetupUpdateRequest.pipelineOwnerEnterpriseId = pipelineOwnerEnterpriseId;\r\n\r\n return this.commonDataResourceService.putWithNoResponseBody('/productionSetup', productionSetupUpdateRequest, true);\r\n }\r\n\r\n getPipeline(pipelineCode: string) : Observable{\r\n const params = new GCTSHttpParams();\r\n params.set('pipeline', pipelineCode);\r\n return this.commonDataResourceService.get('/')\r\n .pipe(\r\n map(dto => CommonPipeline.create(dto))\r\n );\r\n }\r\n}\r\n\r\n/*\r\n\"id\":3,\"code\":\"ML\",\"description\":\"Canadian Mainline\",\"name\":null,\"uiAccessibleDate\":null,\"effectiveDate\":null,\r\n \"pipelineSystems\":[{\"id\":10,\"code\":\"ML\"}],\r\n \"earliestSelectableGasDay\":\"2019-08-01\"},\r\n{\"id\":10,\"code\":\"GLC\",\"description\":\"Great Lakes Canada\",\"name\":null,\"uiAccessibleDate\":null,\"effectiveDate\":null,\"pipelineSystems\":[{\"id\":30,\"code\":\"GLC\"}],\"earliestSelectableGasDay\":\"2019-08-01\"}]\r\n*/\r\n\r\nexport interface IPipelineOwnerResponse {\r\n enterprise: IEnterpriseResponse;\r\n}\r\n\r\nexport class PipelineOwner {\r\n enterprise: Enterprise;\r\n\r\n public static create(dto: IPipelineOwnerResponse): PipelineOwner {\r\n const pipelineOwner = new PipelineOwner();\r\n pipelineOwner.enterprise = Enterprise.create(dto.enterprise);\r\n return pipelineOwner;\r\n }\r\n}\r\n\r\n\r\nexport interface ICommonPipelineResponse{\r\n id: number;\r\n code: string;\r\n description: string;\r\n uiAccessibleDate: string;\r\n effectiveDate: string;\r\n earliestSelectableGasDay: string;\r\n primaryContractQuantityType: string;\r\n contractUom: string;\r\n}\r\n\r\nexport class CommonPipeline{\r\n id: number;\r\n code: string;\r\n description: string;\r\n uiAccessibleDate: string;\r\n effectiveDate: string;\r\n earliestSelectableGasDay: string;\r\n primaryContractQuantityType: string;\r\n contractUom: string;\r\n\r\n public static create(dto: ICommonPipelineResponse) : CommonPipeline{\r\n const commonPipeline = new CommonPipeline();\r\n\r\n commonPipeline.id = dto.id;\r\n commonPipeline.code = dto.code;\r\n commonPipeline.description = dto.description;\r\n commonPipeline.uiAccessibleDate = dto.uiAccessibleDate;\r\n commonPipeline.effectiveDate = dto.effectiveDate;\r\n commonPipeline.earliestSelectableGasDay = dto.earliestSelectableGasDay;\r\n commonPipeline.primaryContractQuantityType = dto.primaryContractQuantityType;\r\n commonPipeline.contractUom = dto.contractUom;\r\n\r\n return commonPipeline;\r\n }\r\n\r\n public isContractQuantityTypeVolume() : boolean {\r\n return this.primaryContractQuantityType === 'Volume';\r\n }\r\n}\r\n\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n From Billing Month: {{model.lastSearchParams?.fromBillingMonth}}\r\n To Billing Month: {{model.lastSearchParams?.toBillingMonth}}\r\n Transaction Type: {{model.lastSearchParams?.transactionType | displayName: 'transactionType' : 'transactionType' : model.transactionTypes}}\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.fromBillingMonth}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.transactionType | displayName: 'transactionType' : 'transactionType' : model.transactionTypes}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.toBillingMonth}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n Number of Manual Transactions found: {{model.searchResults.length}}\r\n\r\n
0\" class=\"pull-right\">\r\n Export CSV\r\n
\r\n
\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n
\r\n Affected
Gas Day\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n Debit
Account Type\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n Debit Owner/
Nom Group\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n Credit
Account Type\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n Credit Owner/
Nom Group\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {{ row.value | numberFormat}}\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n","import {Component, ViewChild} from \"@angular/core\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {YesNoCancelModalService} from \"@shared/services/webapp/yes-no-cancel-modal/yes-no-cancel-modal.service\";\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {Enterprise, EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {CommonDataLocation, LocationSearchRequest, LocationService} from \"@shared/services/common-data/location/location.service\";\r\nimport {NominationGroupDto, NominationGroupService, QueryNomGroupsSearchRequest} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {LocationEnrichmentService} from \"@shared/services/enrichment/location-enrichment.service\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {AccountsToUse, ManualTransactionAccount, ManualTransactionsModel, ManualTransactionsSearchParams} from \"app/gcts/flowinggas/manual-transactions/manual-transactions.model\";\r\nimport {ManualTransaction, ManualTransactionGasAccountMapping, ManualTransactionService, ManualTransactionType} from \"@shared/services/flowing-gas/manual-transaction-service/manual-transaction.service\";\r\nimport {forkJoin, Observable} from \"rxjs\";\r\nimport {concatMap, tap} from \"rxjs/operators\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport * as _ from \"lodash\";\r\nimport {NomGroupEnrichmentService} from \"@shared/services/enrichment/nomgroup-enrichment.service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {YesNoModalOptions} from \"@shared/services/webapp/modal-options/yes-no-modal-options\";\r\nimport {SelectedModalOption} from \"@shared/services/webapp/modal-options/selected-modal-option\";\r\nimport {CommonDataPipelinesService, PipelineOwner} from \"@shared/services/common-data/pipelines/common-data-pipelines.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {Location} from \"@shared/interfaces/location\";\r\nimport * as dx from \"devextreme/core/renderer\";\r\nimport {GasAccountType} from \"@model/gas-account-type\";\r\nimport {BusinessRight} from \"@model/business-right\";\r\nimport {IDateDisplayFormat} from \"@shared/interfaces/date-display-format\";\r\nimport {DataGridHelpers} from \"@model/datagrid-helpers\";\r\n\r\n@Component({\r\n selector: 'app-manual-transactions',\r\n templateUrl: './manual-transactions.component.html',\r\n styleUrls: ['./manual-transactions.component.css']\r\n})\r\nexport class ManualTransactionsComponent extends BaseSearchComponent {\r\n\r\n public model: ManualTransactionsModel = new ManualTransactionsModel();\r\n public dateEditorFormat: IDateDisplayFormat;\r\n\r\n @ViewChild(DxDataGridComponent)\r\n dataGrid: DxDataGridComponent;\r\n\r\n constructor(\r\n appService: AppService,\r\n activatedRoute: ActivatedRoute,\r\n router: Router,\r\n protected alertService: AlertService,\r\n private modalService: YesNoCancelModalService,\r\n private commonDataBillingMonthService: CommonDataBillingMonthService,\r\n private commonDataPipelineService: CommonDataPipelinesService,\r\n private commonDataEnterpriseService: EnterpriseService,\r\n private commonDataLocationService: LocationService,\r\n private accountsNomGroupService: NominationGroupService,\r\n private enterpriseEnrichmentService: EnterpriseEnrichmentService,\r\n private locationEnrichmentService: LocationEnrichmentService,\r\n private nominationGroupEnrichmentService: NomGroupEnrichmentService,\r\n private manualTransactionService: ManualTransactionService,\r\n private sessionService: SessionService,\r\n private fileService: FileService\r\n ) {\r\n super('Manual Transactions', appService, activatedRoute, router, alertService);\r\n\r\n this.enterpriseEnrichmentService.setEnrichmentResource(this.commonDataEnterpriseService);\r\n this.locationEnrichmentService.setEnrichmentResource(this.commonDataLocationService);\r\n this.nominationGroupEnrichmentService.setEnrichmentResource(this.accountsNomGroupService);\r\n\r\n this.dateEditorFormat = {\r\n formatter: this.dateEditorFormatter,\r\n parser: this.dateEditorParser\r\n };\r\n\r\n this.setTransactionType = this.setTransactionType.bind(this);\r\n this.setCreditAccountType = this.setCreditAccountType.bind(this);\r\n this.setCreditAccount = this.setCreditAccount.bind(this);\r\n this.setDebitAccountType = this.setDebitAccountType.bind(this);\r\n this.setDebitAccount = this.setDebitAccount.bind(this);\r\n }\r\n\r\n dateEditorFormatter = (date: Date): string => {\r\n const gasDay = GasDay.from(date);\r\n return gasDay.toDisplayFormatAll();\r\n };\r\n\r\n dateEditorParser = (value: string): Date => {\r\n try {\r\n return GasDay.parse(value, true).toDate;\r\n } catch (e) {\r\n return new Date(NaN);\r\n }\r\n };\r\n\r\n public onFromBillingMonthChanged(): void {\r\n if(_.isNil(this.model.searchParams.fromBillingMonth)) return;\r\n\r\n this.model.searchParams.toBillingMonth = this.model.searchParams.fromBillingMonth;\r\n }\r\n\r\n public exportCsvClicked(): void {\r\n const csvExport = _.map(this.model.searchResults, manualTransaction => ({\r\n billingMonth: manualTransaction.billingMonth,\r\n affectedGasDay: manualTransaction.affectedGasDay.toString(),\r\n transactionType: manualTransaction.transactionType,\r\n debitAccountType: manualTransaction.debitAccountType,\r\n debitAccount: manualTransaction.debitAccount,\r\n debitLocation: manualTransaction['debitLocationName'],\r\n creditAccountType: manualTransaction.creditAccountType,\r\n creditAccount: manualTransaction.creditAccount,\r\n creditLocation: manualTransaction['creditLocationName'],\r\n energy: manualTransaction.energy\r\n }));\r\n\r\n const fileName = `Manual_Transactions_From_${this.model.lastSearchParams.fromBillingMonth.toString()}_To_${this.model.lastSearchParams.toBillingMonth.toString()}.csv`;\r\n const headers = ['Billing Month','Affected Gas Day','Transaction Type','Debit Account Type','Debit Account','Debit Location','Credit Account Type','Credit Account','Credit Location','Energy (GJ)'];\r\n const columns = ['billingMonth','affectedGasDay','transactionType','debitAccountType','debitAccount','debitLocation','debitAccountType','debitAccount','debitLocation','energy'];\r\n\r\n this.fileService.downloadCsvFile(fileName, csvExport, headers, columns);\r\n }\r\n\r\n public addClicked(): void {\r\n this.alertService.clearMessages();\r\n this.model.isAdding = true;\r\n this.dataGrid.instance.addRow();\r\n }\r\n\r\n public onInitNewRow(e: any): void {\r\n e.data.isEditing = true;\r\n const manualTransaction = e.data as ManualTransaction;\r\n this.setRowDefaults(manualTransaction);\r\n }\r\n\r\n public isDisabled(cellInfo: any): boolean {\r\n const manualTransaction = cellInfo.data as ManualTransaction;\r\n return this.model.isEditing || this.model.isAdding || !manualTransaction.billingMonth.isEqual(this.model.openBillingMonth.gasMonth);\r\n }\r\n\r\n public isSaveDisabled(): boolean {\r\n return !this.model.isEditingRowValid;\r\n }\r\n\r\n public onCellPrepared(e: any) {\r\n if (e.rowType === 'data') {\r\n const selectBox = dx(e.cellElement).find('.dx-selectbox').data('dxSelectBox');\r\n const numberBox = dx(e.cellElement).find('.dx-numberbox').data('dxNumberBox');\r\n\r\n if((e.column.dataField === 'debitLocationId' || e.column.dataField === 'creditLocationId') && selectBox) {\r\n selectBox.on('selectionChanged', x => {\r\n if (!_.isNil(x.selectedItem)) {\r\n setTimeout(() => this.dataGrid.instance.repaintRows([e.rowIndex]));\r\n }\r\n });\r\n }\r\n if(e.column.dataField === 'energy' && numberBox) {\r\n numberBox.on('keyDown', (x) => {\r\n DataGridHelpers.filterOutNonIntegerKeys(x);\r\n });\r\n }\r\n }\r\n }\r\n\r\n private showHideLocationColumn(e: any, transactionType: string, accountType: string) {\r\n if(_.isNil(transactionType) || _.isNil(accountType)) {\r\n e.editorOptions.visible = false;\r\n }\r\n else if(transactionType === ManualTransactionType.WRITE_OFF &&\r\n (accountType === GasAccountType.PIPELINE_FUEL_VARIANCE.id || accountType === GasAccountType.OWNED_LINE_PACK.id || accountType === GasAccountType.WRITE_OFF.id)) {\r\n e.editorOptions.visible = false;\r\n }\r\n else if(transactionType === ManualTransactionType.INVENTORY_TRANSFER &&\r\n (accountType !== GasAccountType.OPERATOR_MEASUREMENT_VARIANCE.id && accountType !== GasAccountType.TITLE_TRANSFER.id &&\r\n accountType !== GasAccountType.TRANSPORTATION_BY_OTHER.id && accountType !== GasAccountType.TRANSPORTATION_VARIANCE.id )) {\r\n e.editorOptions.visible = false;\r\n }\r\n else if(transactionType === ManualTransactionType.CONSTRUCTION_USE || transactionType === ManualTransactionType.MEASURED_FUEL ||\r\n transactionType === ManualTransactionType.LUF_GAIN || transactionType === ManualTransactionType.LUF_LOSS ||\r\n transactionType === ManualTransactionType.OTHER_LOSSES) {\r\n e.editorOptions.visible = false;\r\n }\r\n else {\r\n e.editorOptions.visible = true;\r\n }\r\n }\r\n\r\n private showHideAccountColumn(e: any, transactionType: string, accountType: string) {\r\n if(_.isNil(transactionType) || _.isNil(accountType)) {\r\n e.editorOptions.visible = false;\r\n }\r\n else if(transactionType === ManualTransactionType.INVENTORY_TRANSFER && accountType === GasAccountType.OPERATOR_MEASUREMENT_VARIANCE.id) {\r\n e.editorOptions.visible = false;\r\n }\r\n else {\r\n e.editorOptions.visible = true;\r\n }\r\n }\r\n\r\n public onRowValidating(e): void {\r\n this.model.isEditingRowValid = (e.brokenRules.length === 0);\r\n }\r\n\r\n public debitAccountRequired = (e): boolean => {\r\n if (!this.model.showDebitAccount) return true;\r\n return !_.isNil(e.value);\r\n };\r\n\r\n public creditAccountRequired = (e): boolean => {\r\n if (!this.model.showCreditAccount) return true;\r\n return !_.isNil(e.value);\r\n };\r\n\r\n public debitLocationRequired = (e): boolean => {\r\n if (!this.model.showDebitLocation) return true;\r\n return !_.isNil(e.value);\r\n };\r\n\r\n public creditLocationRequired = (e): boolean => {\r\n if (!this.model.showCreditLocation) return true;\r\n return !_.isNil(e.value);\r\n };\r\n\r\n public onEditorPrepared(e: any) {\r\n let dxEditorInstance = null;\r\n if (e.parentType === 'dataRow') {\r\n switch (e.dataField) {\r\n case \"energy\":\r\n dxEditorInstance = dx(e.editorElement).dxNumberBox('instance');\r\n break;\r\n case \"debitAccount\":\r\n case \"creditAccount\":\r\n case \"debitLocationId\":\r\n case \"creditLocationId\":\r\n dxEditorInstance = dx(e.editorElement).dxSelectBox('instance');\r\n break;\r\n }\r\n if(dxEditorInstance) {\r\n dxEditorInstance.option('valueChangeEvent', 'keydown keyup');\r\n dxEditorInstance.on('valueChanged', (vce) => {\r\n e.setValue(vce.value);\r\n e.component.getController('validating').validate();\r\n });\r\n }\r\n }\r\n }\r\n\r\n public onEditorPreparing(e: any) {\r\n if (e.parentType !== \"dataRow\") {\r\n return;\r\n }\r\n if (e.dataField === \"debitLocationId\") {\r\n this.showHideLocationColumn(e, e.row.data.transactionType, e.row.data.debitAccountType);\r\n this.model.showDebitLocation = e.editorOptions.visible;\r\n }\r\n if (e.dataField === \"creditLocationId\") {\r\n this.showHideLocationColumn(e, e.row.data.transactionType, e.row.data.creditAccountType);\r\n this.model.showCreditLocation = e.editorOptions.visible;\r\n }\r\n if (e.dataField === \"debitAccount\") {\r\n this.showHideAccountColumn(e, e.row.data.transactionType, e.row.data.debitAccountType);\r\n this.model.showDebitAccount = e.editorOptions.visible;\r\n }\r\n if (e.dataField === \"creditAccount\") {\r\n this.showHideAccountColumn(e, e.row.data.transactionType, e.row.data.creditAccountType);\r\n this.model.showCreditAccount = e.editorOptions.visible;\r\n }\r\n }\r\n\r\n public setDebitAccount(rowData: any, debitAccount: number, oldData: any): void {\r\n if (debitAccount === oldData.debitAccount) return;\r\n\r\n const debitAccountType = rowData.debitAccountType ?? oldData.debitAccountType;\r\n const selected = _.find(this.model.nominationGroups, x => x.id === debitAccount);\r\n\r\n rowData.debitAccount = debitAccount;\r\n\r\n if (debitAccountType === GasAccountType.OPERATOR_MEASUREMENT_VARIANCE.id) {\r\n const transactionType = rowData.transactionType ?? oldData.transactionType;\r\n this.model.debitLocations = (transactionType === ManualTransactionType.INVENTORY_TRANSFER)\r\n ? this.model.omvLocations\r\n : _.filter(this.model.accountingLocations, x => x.operatorEnterpriseCid === selected.ownerEnterpriseId);\r\n }\r\n\r\n // if a nom group wasn't found, this is an enterpriseId\r\n rowData.debitEnterpriseId = (!_.isNil(selected)) ? selected.ownerEnterpriseId : debitAccount;\r\n }\r\n\r\n public setCreditAccount(rowData: any, creditAccount: number, oldData: any): void {\r\n if (creditAccount === oldData.creditAccount) return;\r\n\r\n const creditAccountType = rowData.creditAccountType ?? oldData.creditAccountType;\r\n const selected = _.find(this.model.nominationGroups, x => x.id === creditAccount);\r\n\r\n rowData.creditAccount = creditAccount;\r\n\r\n if (creditAccountType === GasAccountType.OPERATOR_MEASUREMENT_VARIANCE.id) {\r\n const transactionType = rowData.transactionType ?? oldData.transactionType;\r\n this.model.creditLocations = (transactionType === ManualTransactionType.INVENTORY_TRANSFER)\r\n ? this.model.omvLocations\r\n : _.filter(this.model.accountingLocations, x => x.operatorEnterpriseCid === selected.ownerEnterpriseId);\r\n }\r\n\r\n // if a nom group wasn't found, this is an enterpriseId\r\n rowData.creditEnterpriseId = (!_.isNil(selected)) ? selected.ownerEnterpriseId : creditAccount;\r\n }\r\n\r\n public setCreditAccountType(rowData: any, creditAccountType: string, oldData: any): void {\r\n if (creditAccountType === oldData.creditAccountType) return;\r\n\r\n const transactionType = rowData.transactionType ?? oldData.transactionType;\r\n\r\n rowData.creditAccountType = creditAccountType;\r\n rowData.creditAccount = null;\r\n\r\n if(transactionType === ManualTransactionType.WRITE_OFF) {\r\n if(!_.isNil(creditAccountType) && creditAccountType !== GasAccountType.WRITE_OFF.id) {\r\n this.model.debitAccountTypes = this.getAccountTypesFor(transactionType, 'Debit', [GasAccountType.WRITE_OFF.id]);\r\n rowData.debitAccountType = this.model.debitAccountTypes[0].gasAccountType;\r\n this.model.debitAccounts = this.getAccounts(AccountsToUse.USE_PIPELINE_OWNER);\r\n rowData.debitAccount = this.model.debitAccounts[0].id;\r\n rowData.debitEnterpriseId = this.model.pipelineOwner.enterprise.id;\r\n\r\n if(creditAccountType === GasAccountType.OWNED_LINE_PACK.id) {\r\n this.olpHandler(rowData, false, oldData);\r\n return;\r\n }\r\n else if(creditAccountType !== GasAccountType.PIPELINE_FUEL_VARIANCE.id) {\r\n this.model.creditAccounts = this.getAccounts(AccountsToUse.USE_NOMINATION_GROUPS_FROM_GAS_ACCOUNT, creditAccountType);\r\n this.model.creditLocations = this.model.accountingLocations;\r\n return;\r\n }\r\n }\r\n }\r\n\r\n if(transactionType === ManualTransactionType.INVENTORY_TRANSFER) {\r\n if(creditAccountType === GasAccountType.OPERATOR_MEASUREMENT_VARIANCE.id) {\r\n this.model.debitAccountTypes = this.getAccountTypesFor(transactionType, 'Debit', [GasAccountType.OPERATOR_MEASUREMENT_VARIANCE.id, GasAccountType.SYSTEM_LINE_PACK.id]);\r\n this.model.creditLocations = this.model.omvLocations;\r\n }\r\n else if(creditAccountType === GasAccountType.OWNED_LINE_PACK.id) {\r\n this.olpHandler(rowData, false, oldData);\r\n return;\r\n }\r\n else if(creditAccountType === GasAccountType.TITLE_TRANSFER.id || creditAccountType === GasAccountType.TRANSPORTATION_BY_OTHER.id) {\r\n this.model.creditAccounts = this.getAccounts(AccountsToUse.USE_NOMINATION_GROUPS_FROM_GAS_ACCOUNT, creditAccountType);\r\n this.model.creditLocations = this.model.accountingLocations;\r\n return;\r\n }\r\n else if(creditAccountType === GasAccountType.TRANSPORTATION_VARIANCE.id) {\r\n this.model.creditAccounts = this.getAccounts(AccountsToUse.USE_NOMINATION_GROUPS_FROM_GAS_ACCOUNT, creditAccountType);\r\n this.model.creditLocations = this.model.accountingLocations;\r\n this.model.debitAccountTypes = this.getAccountTypesFor(transactionType, 'Debit', [GasAccountType.TITLE_TRANSFER.id, GasAccountType.TRANSPORTATION_VARIANCE.id]);\r\n return;\r\n }\r\n else {\r\n this.model.debitAccountTypes = this.getAccountTypesFor(transactionType, 'Debit');\r\n }\r\n }\r\n\r\n this.model.creditAccounts = this.getAccounts(AccountsToUse.USE_PIPELINE_OWNER);\r\n this.setCreditAccount(rowData, this.model.creditAccounts[0].id, oldData);\r\n }\r\n\r\n public setDebitAccountType(rowData: any, debitAccountType: string, oldData: any): void {\r\n if (debitAccountType === oldData.debitAccountType) return;\r\n\r\n const transactionType = rowData.transactionType ?? oldData.transactionType;\r\n\r\n rowData.debitAccountType = debitAccountType;\r\n rowData.debitAccount = null;\r\n\r\n if(transactionType === ManualTransactionType.WRITE_OFF) {\r\n if(!_.isNil(debitAccountType) && debitAccountType !== GasAccountType.WRITE_OFF.id) {\r\n this.model.creditAccountTypes = this.getAccountTypesFor(transactionType, 'Credit', [GasAccountType.WRITE_OFF.id]);\r\n rowData.creditAccountType = this.model.creditAccountTypes[0].gasAccountType;\r\n this.model.creditAccounts = this.getAccounts(AccountsToUse.USE_PIPELINE_OWNER);\r\n rowData.creditAccount = this.model.creditAccounts[0].id;\r\n rowData.creditEnterpriseId = this.model.pipelineOwner.enterprise.id;\r\n\r\n if(debitAccountType === GasAccountType.OWNED_LINE_PACK.id) {\r\n this.olpHandler(rowData, true, oldData);\r\n return;\r\n }\r\n else if (debitAccountType !== GasAccountType.PIPELINE_FUEL_VARIANCE.id) {\r\n this.model.debitAccounts = this.getAccounts(AccountsToUse.USE_NOMINATION_GROUPS_FROM_GAS_ACCOUNT, debitAccountType);\r\n this.model.debitLocations = this.model.accountingLocations;\r\n return;\r\n }\r\n }\r\n }\r\n\r\n if(transactionType === ManualTransactionType.INVENTORY_TRANSFER) {\r\n if(debitAccountType === GasAccountType.OPERATOR_MEASUREMENT_VARIANCE.id) {\r\n this.model.creditAccountTypes = this.getAccountTypesFor(transactionType, 'Credit', [GasAccountType.OPERATOR_MEASUREMENT_VARIANCE.id, GasAccountType.SYSTEM_LINE_PACK.id]);\r\n this.model.debitLocations = this.model.omvLocations;\r\n }\r\n else if(debitAccountType === GasAccountType.OWNED_LINE_PACK.id) {\r\n this.olpHandler(rowData, true, oldData);\r\n return;\r\n }\r\n else if(debitAccountType === GasAccountType.TITLE_TRANSFER.id || debitAccountType === GasAccountType.TRANSPORTATION_BY_OTHER.id) {\r\n this.model.debitAccounts = this.getAccounts(AccountsToUse.USE_NOMINATION_GROUPS_FROM_GAS_ACCOUNT, debitAccountType);\r\n this.model.debitLocations = this.model.accountingLocations;\r\n return;\r\n }\r\n else if(debitAccountType === GasAccountType.TRANSPORTATION_VARIANCE.id) {\r\n this.model.debitAccounts = this.getAccounts(AccountsToUse.USE_NOMINATION_GROUPS_FROM_GAS_ACCOUNT, debitAccountType);\r\n this.model.debitLocations = this.model.accountingLocations;\r\n this.model.creditAccountTypes = this.getAccountTypesFor(transactionType, 'Credit', [GasAccountType.TITLE_TRANSFER.id, GasAccountType.TRANSPORTATION_VARIANCE.id]);\r\n return;\r\n }\r\n else {\r\n this.model.creditAccountTypes = this.getAccountTypesFor(transactionType, 'Credit');\r\n }\r\n }\r\n\r\n this.model.debitAccounts = this.getAccounts(AccountsToUse.USE_PIPELINE_OWNER);\r\n this.setDebitAccount(rowData, this.model.debitAccounts[0].id, oldData);\r\n }\r\n\r\n private olpHandler(rowData: any, isDebit: boolean, oldData: any): void {\r\n const transactionType = rowData.transactionType ?? oldData.transactionType;\r\n if(isDebit) {\r\n this.model.debitAccounts = this.getAccounts(AccountsToUse.USE_PIPELINE_SYSTEM_ACCOUNT_OWNERS);\r\n if(transactionType === ManualTransactionType.INVENTORY_TRANSFER) {\r\n this.model.creditAccountTypes = this.getAccountTypesFor(transactionType, 'Credit', [GasAccountType.SYSTEM_LINE_PACK.id]);\r\n this.model.creditAccounts = this.getAccounts(AccountsToUse.USE_PIPELINE_OWNER);\r\n }\r\n } else {\r\n this.model.creditAccounts = this.getAccounts(AccountsToUse.USE_PIPELINE_SYSTEM_ACCOUNT_OWNERS);\r\n if(transactionType === ManualTransactionType.INVENTORY_TRANSFER) {\r\n this.model.debitAccountTypes = this.getAccountTypesFor(transactionType, 'Debit', [GasAccountType.SYSTEM_LINE_PACK.id]);\r\n this.model.debitAccounts = this.getAccounts(AccountsToUse.USE_PIPELINE_OWNER);\r\n }\r\n }\r\n if(this.model.debitAccounts.length === 1) {\r\n rowData.debitAccount = this.model.debitAccounts[0].id;\r\n rowData.debitEnterpriseId = this.model.debitAccounts[0].id;\r\n }\r\n if(this.model.debitAccountTypes.length === 1) {\r\n rowData.debitAccountType = this.model.debitAccountTypes[0].gasAccountType;\r\n }\r\n if(this.model.creditAccounts.length === 1) {\r\n rowData.creditAccount = this.model.creditAccounts[0].id;\r\n rowData.creditEnterpriseId = this.model.creditAccounts[0].id;\r\n }\r\n if(this.model.creditAccountTypes.length === 1) {\r\n rowData.creditAccountType = this.model.creditAccountTypes[0].gasAccountType;\r\n }\r\n }\r\n\r\n\r\n public setTransactionType(rowData:any, transactionType: string, oldData:any): void {\r\n this.model.debitAccountTypes = this.getAccountTypesFor(transactionType, 'Debit');\r\n this.model.creditAccountTypes = this.getAccountTypesFor(transactionType, 'Credit');\r\n\r\n rowData.transactionType = transactionType;\r\n let debitAccountType = null;\r\n let creditAccountType = null;\r\n\r\n if (transactionType !== ManualTransactionType.INVENTORY_TRANSFER && transactionType !== ManualTransactionType.WRITE_OFF) {\r\n\r\n if (transactionType !== ManualTransactionType.OTHER_LOSSES) {\r\n debitAccountType = this.model.debitAccountTypes[0].gasAccountType;\r\n }\r\n\r\n creditAccountType = this.model.creditAccountTypes[0].gasAccountType;\r\n\r\n }\r\n\r\n this.setDebitAccountType(rowData, debitAccountType, oldData);\r\n this.setCreditAccountType(rowData, creditAccountType, oldData);\r\n }\r\n\r\n\r\n private getAccountTypesFor(transactionType: string, accountType: string, gasAccountTypes: string[] = null): ManualTransactionGasAccountMapping[] {\r\n if(_.isNil(gasAccountTypes)) {\r\n return _.filter(this.model.gasAccountMappings, gam => gam.transactionType === transactionType && gam.accountType === accountType);\r\n }\r\n return _.filter(this.model.gasAccountMappings, gam => gam.transactionType === transactionType && gasAccountTypes.includes(gam.gasAccountType) && gam.accountType === accountType);\r\n }\r\n\r\n private getAccounts(accountsToUse: AccountsToUse, gasAccountType: string = null): ManualTransactionAccount[] {\r\n if(accountsToUse === AccountsToUse.USE_PIPELINE_OWNER) {\r\n return [ManualTransactionAccount.create(this.model.pipelineOwner.enterprise.id, this.model.pipelineOwner.enterprise.mnemonic)];\r\n }\r\n if(accountsToUse === AccountsToUse.USE_PIPELINE_SYSTEM_ACCOUNT_OWNERS) {\r\n return _.map(this.model.olpOwners, x => ManualTransactionAccount.create(x.id, x.mnemonic));\r\n }\r\n if(accountsToUse === AccountsToUse.USE_NOMINATION_GROUPS_FROM_GAS_ACCOUNT) {\r\n const businessRights = this.getBusinessRightFromGasAccountType(gasAccountType);\r\n const filteredNomGroups = _.filter(this.model.nominationGroups, x => businessRights.includes(x.businessRight.name));\r\n return _.map(filteredNomGroups, ng => ManualTransactionAccount.create(ng.id, ng.mnemonic));\r\n }\r\n }\r\n\r\n private getBusinessRightFromGasAccountType(gasAccountType: string): string[] {\r\n switch(gasAccountType) {\r\n case GasAccountType.OPERATOR_MEASUREMENT_VARIANCE.id:\r\n return [BusinessRight.LdcVariance.name, BusinessRight.PipelineVariance.name];\r\n case GasAccountType.CONFIRMATION_VARIANCE.id:\r\n return [BusinessRight.ConfirmationVariance.name];\r\n case GasAccountType.TITLE_TRANSFER.id:\r\n return [BusinessRight.MultiTitleTransfer.name];\r\n case GasAccountType.TRANSPORTATION_VARIANCE.id:\r\n return [BusinessRight.TransportationVariance.name];\r\n case GasAccountType.SHIPPER_FUEL_VARIANCE.id:\r\n return [BusinessRight.TransportationFuel.name];\r\n case GasAccountType.PARK_AND_LOAN.id:\r\n return [BusinessRight.ParkAndLoan.name];\r\n case GasAccountType.SHORT_NOTICE_BALANCING.id:\r\n return [BusinessRight.ShortNoticeBalancing.name];\r\n case GasAccountType.TRANSPORTATION_BY_OTHER.id:\r\n return [BusinessRight.TboTransportation.name];\r\n default:\r\n return [];\r\n }\r\n }\r\n\r\n public editClicked(cellInfo: any): void {\r\n this.alertService.clearMessages();\r\n this.model.isAdding = false;\r\n this.model.isEditing = true;\r\n cellInfo.data.isEditing = true;\r\n const element = this.dataGrid.instance.getCellElement(cellInfo.rowIndex, cellInfo.columnIndex - 1);\r\n this.dataGrid.instance.focus(element);\r\n cellInfo.component.editRow(cellInfo.rowIndex);\r\n }\r\n\r\n public deleteClicked(cellInfo: any): void {\r\n this.alertService.clearMessages();\r\n\r\n const yesNoModalOptions = new YesNoModalOptions('Delete Manual Transaction', 'You are about to delete this Manual Transaction, are you sure you want to continue?');\r\n this.modalService.show(yesNoModalOptions)\r\n .subscribe((selectedModalOption: SelectedModalOption) => {\r\n if(selectedModalOption === SelectedModalOption.Yes) {\r\n const manualTransaction = cellInfo.data as ManualTransaction;\r\n this.manualTransactionService.deleteManualTransaction(manualTransaction)\r\n .pipe(\r\n tap(() => this.alertService.addSuccessMessage(\"Delete Success:\", \"The transaction was deleted successfully.\")),\r\n concatMap(() => this.performSearch())\r\n )\r\n .subscribe(() => {});\r\n }\r\n });\r\n }\r\n\r\n public cancelClicked(cellInfo: any): void {\r\n this.alertService.clearMessages();\r\n const yesNoModalOptions = new YesNoModalOptions('Discard Changes', 'Unsaved changes will be lost, would you like to continue?');\r\n this.modalService.show(yesNoModalOptions)\r\n .subscribe((selectedModalOption: SelectedModalOption) => {\r\n if(selectedModalOption === SelectedModalOption.Yes) {\r\n this.clearEditMode(cellInfo.data);\r\n this.dataGrid.instance.cancelEditData();\r\n this.performSearch().subscribe(() => {});\r\n }\r\n });\r\n }\r\n\r\n public saveClicked(cellInfo: any): void {\r\n this.alertService.clearMessages();\r\n\r\n this.dataGrid.instance.saveEditData().then(() => {\r\n this.saveManualTransaction(cellInfo);\r\n });\r\n }\r\n\r\n public formatGasDay(obj): string {\r\n if (obj.value !== undefined) {\r\n return GasDay.from(obj.value).toDisplayFormatAll();\r\n }\r\n return '';\r\n }\r\n\r\n public sortTransactionType(manualTransaction: ManualTransaction): string {\r\n return _.isNil(manualTransaction.id) ? '' : manualTransaction['transactionType']; // Keep the new record on top during editing\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n const getOldestBillingMonth$ = this.commonDataBillingMonthService.getOldest()\r\n .pipe(\r\n tap(oldestBillingMonth => this.model.oldestBillingMonth = oldestBillingMonth)\r\n );\r\n\r\n const getOpenBillingMonth$ = this.commonDataBillingMonthService.getOpen()\r\n .pipe(\r\n tap(openBillingMonth => this.model.openBillingMonth = openBillingMonth)\r\n );\r\n\r\n const getPreliminaryBillingMonth$ = this.commonDataBillingMonthService.getNewest()\r\n .pipe(\r\n tap(newestBillingMonth => this.model.newestBillingMonth = newestBillingMonth)\r\n );\r\n\r\n const getTransactionTypes$ = this.queryManualTransactionTypes();\r\n const getGasAccountMappings$ = this.queryGasAccountMappings();\r\n const getOlpOwners$ = this.queryOlpOwners();\r\n const getManualTransactionNomGroups$ = this.queryManualTransactionNomGroups();\r\n const queryAccountingLocations$ = this.queryAccountingLocations();\r\n\r\n return forkJoin([getOldestBillingMonth$, getOpenBillingMonth$, getPreliminaryBillingMonth$, getTransactionTypes$, getGasAccountMappings$, getOlpOwners$, getManualTransactionNomGroups$, queryAccountingLocations$])\r\n .pipe(\r\n tap(() => {\r\n this.model.minBillingMonth = this.model.oldestBillingMonth.gasMonth;\r\n this.model.maxBillingMonth = this.model.openBillingMonth.gasMonth;\r\n })\r\n );\r\n }\r\n\r\n accountTypeCellTemplate = (cellElement: HTMLElement, cellInfo) => {\r\n if (cellInfo.column.caption === \"Debit Account Type\") {\r\n if(!_.isNil(cellInfo.data.debitAccountType)) {\r\n cellElement.innerText = cellInfo.data.debitAccountType;\r\n return;\r\n }\r\n }\r\n if (cellInfo.column.caption === \"Credit Account Type\") {\r\n if(!_.isNil(cellInfo.data.creditAccountType)) {\r\n cellElement.innerText = cellInfo.data.creditAccountType;\r\n return;\r\n }\r\n }\r\n };\r\n\r\n ownerNomGroupCellTemplate = (cellElement: HTMLElement, cellInfo) => {\r\n const data = cellInfo.data as ManualTransaction;\r\n if (cellInfo.column.caption === \"Debit Account\") {\r\n this.setOwnerNomGroupCellText(cellElement, data.debitNomGroupId, data.debitAccountType, data.debitEnterpriseId);\r\n }\r\n if (cellInfo.column.caption === \"Credit Account\") {\r\n this.setOwnerNomGroupCellText(cellElement, data.creditNomGroupId, data.creditAccountType, data.creditEnterpriseId);\r\n }\r\n };\r\n\r\n private setOwnerNomGroupCellText(cellElement: HTMLElement, nomGroupId: number, accountType: string, enterpriseId: number) {\r\n if (!_.isNil(nomGroupId) && accountType !== GasAccountType.OPERATOR_MEASUREMENT_VARIANCE.id) {\r\n const nomGroup = _.find(this.model.nominationGroups, x => x.id === nomGroupId);\r\n if(_.isNil(nomGroup)) return;\r\n cellElement.innerText = nomGroup.mnemonic;\r\n return;\r\n }\r\n if(!_.isNil(enterpriseId)) {\r\n const enterprise = _.find(this.model.olpOwners, x => x.id === enterpriseId);\r\n if(_.isNil(enterprise)) return;\r\n cellElement.innerText = enterprise.mnemonic;\r\n return;\r\n }\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n const paramValidator = ParamValidator.Standard();\r\n\r\n paramValidator.isGasMonth('startBillingMonth');\r\n paramValidator.isGasMonth('endBillingMonth');\r\n paramValidator.isString('transactionType', true);\r\n\r\n return paramValidator.isValid(params);\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams = new ManualTransactionsSearchParams();\r\n this.model.searchParams.fromBillingMonth = this.model.openBillingMonth.gasMonth;\r\n this.model.searchParams.toBillingMonth = this.model.openBillingMonth.gasMonth;\r\n this.model.searchParams.transactionType = null;\r\n this.model.searchResults = null;\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams.fromBillingMonth = typedParams.asGasMonth('startBillingMonth');\r\n this.model.searchParams.toBillingMonth = typedParams.asGasMonth('endBillingMonth');\r\n this.model.searchParams.transactionType = typedParams.asNullableString('transactionType');\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {};\r\n params['startBillingMonth'] = this.model.searchParams.fromBillingMonth;\r\n params['endBillingMonth'] = this.model.searchParams.toBillingMonth;\r\n params['transactionType'] = this.model.searchParams.transactionType;\r\n return params;\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n const getOmvLocations$ = this.queryOmvLocations();\r\n const getPipelineOwner$ = this.getPipelineOwner();\r\n\r\n return forkJoin([getOmvLocations$, getPipelineOwner$]);\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n\r\n const queryManualTransactions$ = this.queryManualTransactions();\r\n\r\n return forkJoin([queryManualTransactions$]);\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n private clearEditMode(rowData: any): void {\r\n rowData.isEditing = false;\r\n rowData.isEditable = false;\r\n this.model.isEditing = false;\r\n this.model.isAdding = false;\r\n }\r\n\r\n private setRowDefaults(manualTransaction: ManualTransaction): void {\r\n manualTransaction.isEditing = true;\r\n manualTransaction.pipeline = this.sessionService.getPipeline().code;\r\n manualTransaction.billingMonth = this.model.openBillingMonth.gasMonth;\r\n manualTransaction.affectedGasDay = this.model.openBillingMonth.gasMonth.start().toString();\r\n this.model.isEditingRowValid = false;\r\n }\r\n\r\n private saveManualTransaction(cellInfo: any): void {\r\n const manualTransaction = cellInfo.row.data as ManualTransaction;\r\n const submitRequest$ = this.model.isAdding ? this.manualTransactionService.submitManualTransaction(manualTransaction) : this.manualTransactionService.updateManualTransaction(manualTransaction);\r\n\r\n submitRequest$\r\n .subscribe(() => {\r\n this.model.isEditing = false;\r\n this.model.isAdding = false;\r\n this.alertService.addSuccessMessage(\"Save Success:\", \"The transaction was saved successfully.\");\r\n this.performSearch().subscribe(() => {});\r\n },\r\n () => {\r\n // Provide users the ability to continue to edit the row on an server side validation error\r\n cellInfo.component.editRow(cellInfo.rowIndex);\r\n }\r\n );\r\n }\r\n\r\n private queryManualTransactions(): Observable {\r\n return this.manualTransactionService.queryManualTransactions(this.model.lastSearchParams.fromBillingMonth, this.model.lastSearchParams.toBillingMonth, this.model.lastSearchParams.transactionType)\r\n .pipe(\r\n concatMap(manualTransactions => this.enterpriseEnrichmentService.enrichArray(manualTransactions, 'debitEnterpriseId', 'debitEnterprise')),\r\n concatMap(manualTransactions => this.enterpriseEnrichmentService.enrichArray(manualTransactions, 'creditEnterpriseId', 'creditEnterprise')),\r\n concatMap(manualTransactions => this.locationEnrichmentService.enrichArray(manualTransactions, 'debitLocationId', 'debitLocation')),\r\n concatMap(manualTransactions => this.locationEnrichmentService.enrichArray(manualTransactions, 'creditLocationId', 'creditLocation')),\r\n concatMap(manualTransactions => this.nominationGroupEnrichmentService.enrichArray(manualTransactions, 'debitNomGroupId', 'debitNomGroup')),\r\n concatMap(manualTransactions => this.nominationGroupEnrichmentService.enrichArray(manualTransactions, 'creditNomGroupId', 'creditNomGroup')),\r\n tap(manualTransactions => {\r\n this.setAccounts(manualTransactions);\r\n this.model.searchResults = _.orderBy(manualTransactions, ['transactionType', 'affectedGasDay'], ['asc', 'desc']);\r\n })\r\n );\r\n }\r\n\r\n private setAccounts(manualTransactions: ManualTransaction[]): void {\r\n const shipperAccountTypes = [GasAccountType.CONFIRMATION_VARIANCE.id, GasAccountType.TITLE_TRANSFER.id, GasAccountType.TRANSPORTATION_VARIANCE.id,\r\n GasAccountType.SHIPPER_FUEL_VARIANCE.id, GasAccountType.PARK_AND_LOAN.id, GasAccountType.TRANSPORTATION_BY_OTHER.id];\r\n if(this.sessionService.getPipeline().code === 'ML') {\r\n shipperAccountTypes.push(GasAccountType.SHORT_NOTICE_BALANCING.id);\r\n }\r\n _.forEach(manualTransactions, x => {\r\n x.debitAccount = _.includes(shipperAccountTypes, x.debitAccountType) ? x['debitNomGroupMnemonic'] : x['debitEnterpriseMnemonic'];\r\n x.creditAccount = _.includes(shipperAccountTypes, x.creditAccountType) ? x['creditNomGroupMnemonic'] : x['creditEnterpriseMnemonic'];\r\n });\r\n }\r\n\r\n private getPipelineOwner(): Observable {\r\n return this.commonDataPipelineService.getPipelineOwner(this.model.openBillingMonth.gasMonth.start())\r\n .pipe(\r\n tap(pipelineOwner => this.model.pipelineOwner = pipelineOwner)\r\n );\r\n }\r\n\r\n private queryManualTransactionNomGroups(): Observable {\r\n const searchParams = new QueryNomGroupsSearchRequest();\r\n searchParams.forManualTransactionsOnly = true;\r\n\r\n return this.accountsNomGroupService.queryNomGroups(searchParams)\r\n .pipe(\r\n tap(nominationGroups => {\r\n this.model.nominationGroups = _.sortBy(nominationGroups, x => x.mnemonic);\r\n })\r\n );\r\n }\r\n\r\n private queryAccountingLocations(): Observable {\r\n return this.commonDataLocationService.queryAccountLocations()\r\n .pipe(\r\n tap(locations => {\r\n this.model.accountingLocations = locations;\r\n this.model.debitLocations = locations;\r\n this.model.creditLocations = locations;\r\n })\r\n );\r\n }\r\n\r\n private queryOmvLocations(): Observable {\r\n const searchParams = new LocationSearchRequest();\r\n searchParams.gasDay = this.model.openBillingMonth.gasMonth.start();\r\n searchParams.hasOmvAccount = true;\r\n\r\n return this.commonDataLocationService.queryLocations(searchParams)\r\n .pipe(\r\n concatMap(locations => this.locationEnrichmentService.enrichArray(locations, 'id')),\r\n tap(locations => {\r\n this.model.omvLocations = _.orderBy(locations, x => x.name);\r\n })\r\n );\r\n }\r\n\r\n private queryOlpOwners(): Observable {\r\n return this.manualTransactionService.queryOlpOwners()\r\n .pipe(\r\n concatMap(enterpriseIds => {\r\n const enterprises = _.map(enterpriseIds, enterpriseId => Enterprise.createWithId(enterpriseId));\r\n return this.enterpriseEnrichmentService.enrichArray(enterprises, 'cid');\r\n }),\r\n tap(enterprises => this.model.olpOwners = _.sortBy(enterprises, x => x.mnemonic))\r\n );\r\n }\r\n\r\n private queryManualTransactionTypes(): Observable {\r\n return this.manualTransactionService.queryManualTransactionTypes()\r\n .pipe(\r\n tap(manualTransactionTypes => this.model.transactionTypes = _.sortBy(manualTransactionTypes, x => x.transactionType))\r\n );\r\n }\r\n\r\n private queryGasAccountMappings(): Observable {\r\n return this.manualTransactionService.queryGasAccountMappings()\r\n .pipe(\r\n tap(gasAccountMappings => {\r\n this.model.gasAccountMappings = _.sortBy(gasAccountMappings, x => x.gasAccountType);\r\n })\r\n );\r\n }\r\n}\r\n","import {GasMonth} from \"@model/gas-month\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport {BaseViewModel} from \"@model/base-view-model\";\r\n\r\nexport class StatisticsCanadaDownloadModel extends BaseViewModel {\r\n public openBillingMonth: BillingMonth;\r\n public minGasMonth: GasMonth;\r\n public maxGasMonth: GasMonth;\r\n public searchParams: StatisticsCanadaDownloadSearchParams = new StatisticsCanadaDownloadSearchParams();\r\n public lastSearchParams: StatisticsCanadaDownloadSearchParams;\r\n public csvLoading : boolean;\r\n public hasSearchResults: boolean;\r\n}\r\n\r\nexport class StatisticsCanadaDownloadSearchParams {\r\n billingGasMonth: GasMonth;\r\n}\r\n\r\n","import {Injectable} from \"@angular/core\";\r\nimport {FlowinggasResourceService} from \"@shared/resources/flowinggas-resource.service\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {Observable} from \"rxjs\";\r\nimport {HttpResponse} from \"@angular/common/http\";\r\n\r\n@Injectable()\r\nexport class StatisticsCanadaDownloadService{\r\n constructor(private flowingGasResource: FlowinggasResourceService) {}\r\n\r\n public getStatisticsCanadaCsv(billingGasMonth: GasMonth) : Observable>\r\n {\r\n const urlSearchParams = new GCTSHttpParams();\r\n urlSearchParams.setGasMonth(billingGasMonth);\r\n\r\n return this.flowingGasResource.getData('/reports/statisticscanada/csv', true,urlSearchParams);\r\n }\r\n}\r\n","\r\n\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Billing Month: {{model.lastSearchParams?.billingGasMonth | gasMonthFormat}}\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n Export to CSV in progress. Please wait...\r\n
\r\n
\r\n\r\n
\r\n
\r\n","import {Component, OnInit} from \"@angular/core\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {tap} from \"rxjs/operators\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport * as _ from \"lodash\";\r\nimport {forkJoin, Observable, of} from \"rxjs\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {StatisticsCanadaDownloadModel,StatisticsCanadaDownloadSearchParams} from \"app/gcts/flowinggas/statistics-canada-download/statistics-canada-download.model\";\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {StatisticsCanadaDownloadService} from \"@shared/services/flowing-gas/statistics-canada-download-service/statistics-canada-download.service\";\r\nimport * as FileSaver from \"file-saver\";\r\n\r\n@Component({\r\n selector: 'app-statistics-canada-download',\r\n templateUrl: './statistics-canada-download.component.html',\r\n styleUrls: ['./statistics-canada-download.component.css']\r\n})\r\n\r\nexport class StatisticsCanadaDownloadComponent extends BaseSearchComponent implements OnInit {\r\n\r\n constructor(protected appService: AppService,\r\n protected activatedRoute: ActivatedRoute,\r\n protected router: Router,\r\n protected alertService: AlertService,\r\n private commonDataBillingMonthService: CommonDataBillingMonthService,\r\n private statisticsCanadaDownloadService : StatisticsCanadaDownloadService\r\n ) {\r\n super('Statistics Canada Download', appService, activatedRoute, router, alertService);\r\n }\r\n\r\n static readonly PARAM_BILLING_MONTH = 'billingMonth';\r\n\r\n public model: StatisticsCanadaDownloadModel = new StatisticsCanadaDownloadModel();\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n const paramValidator = ParamValidator.Standard();\r\n paramValidator.isGasMonth(StatisticsCanadaDownloadComponent.PARAM_BILLING_MONTH);\r\n return paramValidator.isValid(params);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {};\r\n params[StatisticsCanadaDownloadComponent.PARAM_BILLING_MONTH] = this.model.searchParams.billingGasMonth;\r\n return params;\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n const getOldestBillingMonth$ = this.commonDataBillingMonthService.getOldest()\r\n .pipe(\r\n tap(oldestBillingMonth => this.model.minGasMonth = oldestBillingMonth.gasMonth)\r\n );\r\n\r\n const getOpeningBillingMonth$ = this.commonDataBillingMonthService.getOpen()\r\n .pipe(\r\n tap( openBillingMonth => {\r\n this.model.openBillingMonth = openBillingMonth;\r\n this.model.maxGasMonth = openBillingMonth.gasMonth;\r\n } )\r\n );\r\n\r\n return forkJoin([getOldestBillingMonth$ , getOpeningBillingMonth$]);\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n return of({}) ;\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.hasSearchResults = true;\r\n this.model.csvLoading = true;\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n return this.statisticsCanadaDownloadService.getStatisticsCanadaCsv(this.model.searchParams.billingGasMonth)\r\n .pipe(\r\n tap(response => {\r\n const mediaType = response.headers.get('content-type'); // media type should be text/csv\r\n const blob = new Blob([response.body], {type: mediaType});\r\n const filename = response.headers.get('content-disposition').split(';')[1].trim().split('=')[1].replace(/\"/g, '');\r\n FileSaver.saveAs(blob, filename);\r\n }\r\n )\r\n );\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams = new StatisticsCanadaDownloadSearchParams();\r\n this.model.searchParams.billingGasMonth = this.model.openBillingMonth.gasMonth.previous();\r\n this.model.csvLoading = false;\r\n this.model.hasSearchResults = false;\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams = new StatisticsCanadaDownloadSearchParams();\r\n this.model.searchParams.billingGasMonth = typedParams.asGasMonth(StatisticsCanadaDownloadComponent.PARAM_BILLING_MONTH);\r\n }\r\n}\r\n","import {BaseViewModel} from \"@model/base-view-model\";\r\n\r\nexport class OutstandingBalanceExportModel extends BaseViewModel {\r\n public csvLoading : boolean;\r\n public title : string;\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {FlowinggasResourceService} from \"@shared/resources/flowinggas-resource.service\";\r\nimport {Observable} from \"rxjs\";\r\nimport {HttpResponse} from \"@angular/common/http\";\r\n\r\n@Injectable()\r\nexport class OutstandingBalanceExportService{\r\n constructor(private flowingGasResource: FlowinggasResourceService) {}\r\n public getExportCsv() : Observable>\r\n {\r\n return this.flowingGasResource.getData('/outstandingBalanceExport/csv', true, null);\r\n }\r\n}\r\n","\r\n
\r\n {{model.title}}\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Export to CSV in progress. Please wait...\r\n
\r\n
\r\n
\r\n
\r\n","import {Component, OnInit} from \"@angular/core\";\r\nimport {OutstandingBalanceExportService} from \"@shared/services/flowing-gas/outstanding-balance-export-service/outstanding-balance-export.service\";\r\nimport {OutstandingBalanceExportModel} from \"app/gcts/flowinggas/outstanding-balance-export/outstanding-balance-export.model\";\r\nimport {tap} from \"rxjs/operators\";\r\nimport * as FileSaver from \"file-saver\";\r\nimport {Title} from \"@angular/platform-browser\";\r\n\r\n@Component({\r\n selector: 'app-outstanding-balance-export',\r\n templateUrl: './outstanding-balance-export.component.html',\r\n styleUrls: ['./outstanding-balance-export.component.css']\r\n})\r\n\r\nexport class OutstandingBalanceExportComponent implements OnInit {\r\n\r\n constructor(\r\n private titleService:Title,\r\n private outstandingBalanceExportService : OutstandingBalanceExportService\r\n ) {\r\n\r\n }\r\n\r\n public model: OutstandingBalanceExportModel = new OutstandingBalanceExportModel();\r\n\r\n public ngOnInit(): void {\r\n this.model.title = 'Outstanding Balance Export';\r\n this.titleService.setTitle(this.model.title);\r\n }\r\n\r\n public exporttocsvClicked(): void {\r\n this.model.csvLoading = true;\r\n this.outstandingBalanceExportService.getExportCsv()\r\n .pipe(\r\n tap(response => {\r\n const mediaType = response.headers.get('content-type'); // media type should be text/csv\r\n const blob = new Blob([response.body], {type: mediaType});\r\n const filename = response.headers.get('content-disposition').split(';')[1].trim().split('=')[1].replace(/\"/g, '');\r\n FileSaver.saveAs(blob, filename);\r\n }\r\n )\r\n )\r\n .subscribe(() => {});\r\n }\r\n}\r\n\r\n","import {BaseViewModel} from \"@model/base-view-model\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport {Location} from \"@shared/interfaces/location\";\r\nimport {Enterprise} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {GasAccountType2, TransactionExportRowCount, TransactionType2} from \"@shared/services/flowing-gas/flowing-gas-enterprise-service/flowing-gas-enterprise-service\";\r\n\r\nexport class TransactionExportModel extends BaseViewModel {\r\n\r\n public reportTypes: TransactionReportType[];\r\n public includePPA: boolean;\r\n public hasSearchResults: boolean;\r\n public csvLoading : boolean;\r\n public transactionCount : number;\r\n public loadingMessage : string;\r\n public exportCount : TransactionExportRowCount;\r\n\r\n // Collections\r\n public accountTypes: GasAccountType2[];\r\n public transactionTypes: TransactionType2[] ;\r\n public allTransactionTypes : TransactionType2[];\r\n public enterprises : Enterprise[];\r\n public transportationEnterprises: Enterprise[];\r\n public transferEnterprises: Enterprise[];\r\n public locations: Location[];\r\n public serviceCategory : ServiceCategoryType[];\r\n public serviceOption : ServiceOptionType[];\r\n public billableServices : string[];\r\n public billableServices2 : BillableService2[] =[];\r\n\r\n // Billing Month\r\n public oldestBillingMonth: BillingMonth;\r\n public minGasDay: GasDay;\r\n public maxGasDay: GasDay;\r\n public currentGasDay : GasDay;\r\n\r\n // SearchParameters\r\n searchParams : TransactionExportSearchParams = new TransactionExportSearchParams();\r\n lastSearchParams : TransactionExportSearchParams;\r\n\r\n}\r\n\r\nexport class TransactionExportSearchParams{\r\n // For all report types\r\n public reportType : string;\r\n public startGasDay: GasDay;\r\n public endGasDay: GasDay;\r\n public includePPA: boolean = true;\r\n public enterpriseId?: number;\r\n\r\n // For Transportation\r\n public receiptLocationId?: number;\r\n public deliveryLocationId?: number;\r\n public billableServiceIds: string[];\r\n public serviceCategory : string;\r\n public serviceOption : string;\r\n\r\n // For Transfer\r\n locationId?: number;\r\n accountType: string;\r\n transactionTypes: string[];\r\n}\r\n\r\nexport class TransactionReportType {\r\n public static TRANSPORTATION: TransactionReportType = new TransactionReportType(\"Transportation\");\r\n public static TRANSFER: TransactionReportType = new TransactionReportType(\"Transfer\");\r\n public static ALL: TransactionReportType[] = [TransactionReportType.TRANSPORTATION, TransactionReportType.TRANSFER];\r\n\r\n constructor(value: string) {\r\n this._value = value;\r\n }\r\n private readonly _value: string;\r\n\r\n get value(): string {\r\n return this._value;\r\n }\r\n}\r\n\r\nexport class ServiceCategoryType {\r\n public static FIRM: ServiceCategoryType = new ServiceCategoryType(\"Firm\");\r\n public static INTERRUPTIBLE: ServiceCategoryType = new ServiceCategoryType(\"Interruptible\");\r\n public static ALL: ServiceCategoryType[] = [ServiceCategoryType.FIRM, ServiceCategoryType.INTERRUPTIBLE];\r\n\r\n constructor(value: string) {\r\n this._value = value;\r\n }\r\n private readonly _value: string;\r\n\r\n get value(): string {\r\n return this._value;\r\n }\r\n}\r\n\r\nexport class ServiceOptionType {\r\n public static NOOPTION: ServiceOptionType = new ServiceOptionType(\"None\",\"No Option\" );\r\n public static DIVERSION: ServiceOptionType = new ServiceOptionType(\"D\", \"Diversion\");\r\n public static INJECTION: ServiceOptionType = new ServiceOptionType(\"I\",\"Injection\");\r\n public static INJECTIONOVERRUN: ServiceOptionType = new ServiceOptionType(\"I O\",\"Injection Overrun\");\r\n public static WITHDRAWALOVERRUN: ServiceOptionType = new ServiceOptionType(\"O\",\"Withdrawal Overrun\");\r\n public static ALL: ServiceOptionType[] =\r\n [ServiceOptionType.NOOPTION, ServiceOptionType.DIVERSION, ServiceOptionType.INJECTION, ServiceOptionType.INJECTIONOVERRUN, ServiceOptionType.WITHDRAWALOVERRUN];\r\n\r\n constructor(id: string, description: string) {\r\n\r\n this._id = id;\r\n this._description = description;\r\n }\r\n\r\n private readonly _id: string;\r\n private readonly _description: string;\r\n\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n get description(): string {\r\n return this._description;\r\n }\r\n}\r\n\r\nexport class BillableService2{\r\n public id : string;\r\n public name : string;\r\n\r\n constructor(id : string, name: string)\r\n {\r\n this.id = id;\r\n this.name = name;\r\n }\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {ContractsResourceService} from \"@shared/resources/contracts-resource.service\";\r\nimport {Observable} from \"rxjs\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {BillableService} from \"@model/BillableService\";\r\n\r\n@Injectable()\r\nexport class AccountsBillableServicesService {\r\n\r\n constructor(private accountsResource: ContractsResourceService) {\r\n }\r\n\r\n public queryGetAllBillableServices(onlyTransportation?: string): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('onlyTransportation', onlyTransportation);\r\n return this.accountsResource.get('/services', true, params);\r\n }\r\n\r\n public queryGetAllBillableServicesForCategory(category: string, onlyTransportation : string): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('category',category);\r\n params.set('onlyTransportation', onlyTransportation);\r\n return this.accountsResource.get('/services', true, params);\r\n }\r\n\r\n public getOnlyUpdateablePrice(onlyUpdateablePrice: boolean): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('onlyUpdateablePrice', onlyUpdateablePrice ? 'Y' : 'N');\r\n return this.accountsResource.get('/services', true, params);\r\n }\r\n\r\n public updateEffectiveGasDays(effectiveGasDay: GasDay): Observable{\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('gasDay', effectiveGasDay.toString());\r\n return this.accountsResource.putWithNoResponseBody('/effectiveGasDays', null, true, params);\r\n }\r\n\r\n public queryAllByPipeline(): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n\r\n return this.accountsResource.get('/billableService', true, params);\r\n }\r\n}\r\n","\r\n\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n -\r\n +\r\n Filters\r\n\r\n \r\n :\r\n Export By: {{model.lastSearchParams?.reportType}}\r\n Start Gas Day: {{model.lastSearchParams?.startGasDay | gasDayFormat}}\r\n End Gas Day: {{model.lastSearchParams?.endGasDay | gasDayFormat}}\r\n Customer: {{model.lastSearchParams?.enterpriseId | displayName: 'cid' : 'displayValue' : model.enterprises}}\r\n Include PPA: {{model.lastSearchParams?.includePPA | booleanAsYesNo}}\r\n \r\n Receipt Location(s): {{model.lastSearchParams?.receiptLocationId | displayName: 'id' : 'name' : model.locations}}\r\n Delivery Location(s): {{model.lastSearchParams?.deliveryLocationId | displayName: 'id' : 'name' : model.locations}}\r\n
\r\n Service Category: {{model.lastSearchParams?.serviceCategory | displayName: 'value' : 'value' : model.serviceCategory}}\r\n Service: {{model.lastSearchParams?.billableServiceIds | multiDisplayName: 'id' : 'name' : model.billableServices2}}\r\n Service Option: {{model.lastSearchParams?.serviceOption | displayName: 'id' : 'description' : model.serviceOption}}\r\n
\r\n \r\n Location: {{model.lastSearchParams?.locationId | displayName: 'id' : 'name' : model.locations}}\r\n
\r\n Account Type: {{model.lastSearchParams?.accountType | displayName: 'id' : 'description' : model.accountTypes}}\r\n Transaction Type: {{model.lastSearchParams?.transactionTypes | multiDisplayName: 'id' : 'description' : model.transactionTypes}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.reportType}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.startGasDay | gasDayFormat}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.endGasDay | gasDayFormat}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.enterpriseId | displayName: 'cid' : 'displayValue' : model.enterprises}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{!model.lastSearchParams?.includePPA ? \"No\" : \"Yes\"}}\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.locationId | displayName: 'id' : 'name' : model.locations}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.receiptLocationId | displayName: 'id' : 'name' : model.locations}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.deliveryLocationId | displayName: 'id' : 'name' : model.locations}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.accountType | displayName: 'id' : 'description' : model.accountTypes}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{!model.lastSearchParams?.includePPA ? \"No\" : \"Yes\"}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.serviceCategory | displayName: 'value' : 'value' : model.serviceCategory}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.billableServiceIds | multiDisplayName: 'id' : 'name' : model.billableServices2}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.serviceOption | displayName: 'id' : 'description' : model.serviceOption}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.transactionTypes | multiDisplayName: 'id' : 'description' : model.transactionTypes}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n
\r\n
\r\n
\r\n 0\">Found ~{{ this.model.transactionCount | number }} transactions.
\r\n {{ this.model.loadingMessage }}\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n","import {Component, OnInit} from \"@angular/core\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {TransactionExportModel, TransactionExportSearchParams, TransactionReportType, ServiceCategoryType, ServiceOptionType, BillableService2} from \"app/gcts/flowinggas/transaction-export/transaction-export.model\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {forkJoin, Observable, of} from \"rxjs\";\r\nimport {concatMap, tap} from \"rxjs/operators\";\r\nimport * as _ from \"lodash\";\r\nimport * as FileSaver from \"file-saver\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {AccountsBillableServicesService} from \"@shared/services/accounts/billable-service/accounts-billable-services.service\";\r\nimport {Enterprise, EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {CommonDataGasdayService} from \"@shared/services/common-data/common-data-gasday/common-data-gasday.service\";\r\nimport {FlowingGasEnterpriseService, GasAccountType2, TransactionExportRequest, TransactionType2,TransactionExportRowCount} from \"@shared/services/flowing-gas/flowing-gas-enterprise-service/flowing-gas-enterprise-service\";\r\nimport {LocationService} from \"@shared/services/common-data/location/location.service\";\r\nimport {Location} from \"@shared/interfaces/location\";\r\nimport {LocationEnrichmentService} from \"@shared/services/enrichment/location-enrichment.service\";\r\nimport {HttpResponse} from \"@angular/common/http\";\r\nimport {NomGroupEnrichmentService} from \"@shared/services/enrichment/nomgroup-enrichment.service\";\r\nimport {NominationGroupService} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\n\r\n@Component({\r\n selector: 'app-transaction-export',\r\n templateUrl: './transaction-export.component.html',\r\n styleUrls: ['./transaction-export.component.css']\r\n})\r\n\r\nexport class TransactionExportComponent extends BaseSearchComponent implements OnInit {\r\n private static PARAM_REPORT_TYPE: string = 'reportType';\r\n private static PARAM_START_GAS_DAY: string = 'startGasDay';\r\n private static PARAM_END_GAS_DAY: string = 'endGasDay';\r\n private static PARAM_ENTERPRISE_ID: string = 'enterpriseId';\r\n private static PARAM_RECEIPT_LOCATION: string = 'receiptLocationId';\r\n private static PARAM_DELIVERY_LOCATION: string = 'deliveryLocationId';\r\n private static PARAM_SERVICE: string = 'billableServiceIds';\r\n private static PARAM_SERVICE_CATEGORY: string = 'serviceCategory';\r\n private static PARAM_SERVICE_OPTION: string = 'serviceOption';\r\n private static PARAM_INCLUDE_PPA: string = 'includePPA';\r\n private static PARAM_LOCATION: string = 'locationId';\r\n private static PARAM_ACCOUNT_TYPE: string = 'accountType';\r\n private static PARAM_TRANSACTION_TYPE: string = 'transactionTypes';\r\n\r\n constructor(protected appService: AppService,\r\n protected activatedRoute: ActivatedRoute,\r\n protected router: Router,\r\n protected alertService: AlertService,\r\n private sessionService: SessionService,\r\n private commonDataBillingMonthService: CommonDataBillingMonthService,\r\n private commonDataGasDayService: CommonDataGasdayService,\r\n private flowingGasEnterpriseService: FlowingGasEnterpriseService,\r\n private commonDataLocationService: LocationService,\r\n private locationEnrichmentService: LocationEnrichmentService,\r\n private billableServiceService2: AccountsBillableServicesService,\r\n private nominationGroupEnrichmentService: NomGroupEnrichmentService,\r\n private nominationGroupService: NominationGroupService,\r\n private enterpriseService: EnterpriseService,\r\n private enterpriseEnrichmentService: EnterpriseEnrichmentService\r\n ) {\r\n super('Flowing Gas Transaction Export', appService, activatedRoute, router, alertService);\r\n enterpriseEnrichmentService.setEnrichmentResource(enterpriseService);\r\n locationEnrichmentService.setEnrichmentResource(commonDataLocationService);\r\n nominationGroupEnrichmentService.setEnrichmentResource(nominationGroupService);\r\n }\r\n\r\n public model: TransactionExportModel = new TransactionExportModel();\r\n\r\n /* Base Search Component Implementations */\r\n\r\n private initializeEnrichments(): Observable{\r\n return of(null);\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n this.model.reportTypes = TransactionReportType.ALL;\r\n this.model.serviceCategory = ServiceCategoryType.ALL;\r\n this.model.serviceOption = ServiceOptionType.ALL;\r\n\r\n const getOldestBillingMonth$ = this.commonDataBillingMonthService.getOldest()\r\n .pipe(\r\n tap(oldestBillingMonth => this.model.oldestBillingMonth = oldestBillingMonth)\r\n );\r\n\r\n const getServerTimeData$ = this.commonDataGasDayService.getServerTimeData()\r\n .pipe(\r\n tap(serverTimeData => this.model.currentGasDay = serverTimeData.gasDay)\r\n );\r\n\r\n const initializeEnrichmentData$ = this.initializeEnrichments()\r\n .pipe(\r\n concatMap(results => this.nominationGroupEnrichmentService.enrichArray(results, 'nomGroupId', 'nomGroup')),\r\n );\r\n\r\n const queryEnterprises$ = this.queryEnterprises();\r\n const queryTransferEnterprises$ = this.queryTransferEnterprises();\r\n const queryLocations$ = this.queryLocations();\r\n const queryGasAccountTypes$ = this.queryGasAccountTypes();\r\n const queryTransactionTypes$ = this.queryTransactionTypes();\r\n const queryBillableServices$ = this.queryBillableServices();\r\n\r\n return forkJoin([\r\n getOldestBillingMonth$,\r\n getServerTimeData$,\r\n queryEnterprises$, queryTransferEnterprises$, queryLocations$, queryGasAccountTypes$, queryTransactionTypes$\r\n , queryBillableServices$, initializeEnrichmentData$\r\n ])\r\n .pipe(\r\n tap(() => {\r\n this.model.minGasDay = this.model.oldestBillingMonth.firstDayOfMonth;\r\n this.model.maxGasDay = this.model.currentGasDay;\r\n this.model.allTransactionTypes = this.model.transactionTypes;\r\n })\r\n );\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n const paramValidator = ParamValidator.Standard();\r\n paramValidator.isOneOf(TransactionExportComponent.PARAM_REPORT_TYPE, _.map(TransactionReportType.ALL, x => x.value));\r\n paramValidator.isGasDay(TransactionExportComponent.PARAM_START_GAS_DAY);\r\n paramValidator.isGasDay(TransactionExportComponent.PARAM_END_GAS_DAY);\r\n paramValidator.isNumber(TransactionExportComponent.PARAM_ENTERPRISE_ID, true);\r\n paramValidator.isBoolean(TransactionExportComponent.PARAM_INCLUDE_PPA, true);\r\n\r\n if (params[TransactionExportComponent.PARAM_REPORT_TYPE] === TransactionReportType.TRANSPORTATION.value) {\r\n paramValidator.isNumber(TransactionExportComponent.PARAM_DELIVERY_LOCATION, true);\r\n paramValidator.isNumber(TransactionExportComponent.PARAM_RECEIPT_LOCATION, true);\r\n paramValidator.isString(TransactionExportComponent.PARAM_SERVICE, true);\r\n paramValidator.isString(TransactionExportComponent.PARAM_SERVICE_CATEGORY, true);\r\n paramValidator.isString(TransactionExportComponent.PARAM_SERVICE_OPTION, true);\r\n }\r\n if (params[TransactionExportComponent.PARAM_REPORT_TYPE] === TransactionReportType.TRANSFER.value) {\r\n paramValidator.isNumber(TransactionExportComponent.PARAM_LOCATION, true);\r\n paramValidator.isString(TransactionExportComponent.PARAM_TRANSACTION_TYPE, true);\r\n paramValidator.isString(TransactionExportComponent.PARAM_ACCOUNT_TYPE, true);\r\n }\r\n return paramValidator.isValid(params);\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.alertService.clearMessages();\r\n this.model.searchParams = new TransactionExportSearchParams();\r\n this.model.searchParams.startGasDay = GasMonth.fromGasDay(this.model.currentGasDay).start();\r\n this.model.searchParams.endGasDay = this.model.currentGasDay;\r\n this.model.maxGasDay = this.model.currentGasDay;\r\n this.model.lastSearchParams = null;\r\n this.model.hasSearchResults = false;\r\n this.model.csvLoading = false;\r\n\r\n // ensure transaction type list is correctly reset\r\n this.onAccountTypeChanged();\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n return of({});\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {};\r\n params[TransactionExportComponent.PARAM_REPORT_TYPE] = this.model.searchParams.reportType;\r\n params[TransactionExportComponent.PARAM_START_GAS_DAY] = this.model.searchParams.startGasDay;\r\n params[TransactionExportComponent.PARAM_END_GAS_DAY] = this.model.searchParams.endGasDay;\r\n params[TransactionExportComponent.PARAM_ENTERPRISE_ID] = this.model.searchParams.enterpriseId;\r\n params[TransactionExportComponent.PARAM_INCLUDE_PPA] = this.model.searchParams.includePPA;\r\n if (params[TransactionExportComponent.PARAM_REPORT_TYPE] === TransactionReportType.TRANSPORTATION.value) {\r\n params[TransactionExportComponent.PARAM_RECEIPT_LOCATION] = this.model.searchParams.receiptLocationId;\r\n params[TransactionExportComponent.PARAM_DELIVERY_LOCATION] = this.model.searchParams.deliveryLocationId;\r\n params[TransactionExportComponent.PARAM_SERVICE_CATEGORY] = !_.isNil(this.model.searchParams.serviceCategory) ? this.model.searchParams.serviceCategory : '';\r\n if (_.size(this.model.searchParams.billableServiceIds) > 0) {\r\n params[TransactionExportComponent.PARAM_SERVICE] = this.model.searchParams.billableServiceIds;\r\n }\r\n params[TransactionExportComponent.PARAM_SERVICE_OPTION] = !_.isNil(this.model.searchParams.serviceOption) ? this.model.searchParams.serviceOption :'';\r\n } else if (params[TransactionExportComponent.PARAM_REPORT_TYPE] === TransactionReportType.TRANSFER.value) {\r\n params[TransactionExportComponent.PARAM_LOCATION] = this.model.searchParams.locationId;\r\n params[TransactionExportComponent.PARAM_ACCOUNT_TYPE] = !_.isNil(this.model.searchParams.accountType) ? this.model.searchParams.accountType : '';\r\n params[TransactionExportComponent.PARAM_TRANSACTION_TYPE] = !_.isNil(this.model.searchParams.transactionTypes) ? this.model.searchParams.transactionTypes : '';\r\n }\r\n return params;\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.alertService.clearMessages();\r\n this.model.hasSearchResults = true;\r\n this.model.csvLoading = true;\r\n this.model.transactionCount = 0;\r\n this.model.loadingMessage = null;\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n const searchRequest = this.buildSearchRequest();\r\n let queryTransactionCount$: Observable;\r\n let exportDownloadFile$ = null;\r\n\r\n switch (this.model.searchParams.reportType) {\r\n case TransactionReportType.TRANSPORTATION.value:\r\n queryTransactionCount$ = this.queryTransportationCount(searchRequest);\r\n exportDownloadFile$ = this.exportTransportationFile(searchRequest);\r\n break;\r\n\r\n case TransactionReportType.TRANSFER.value:\r\n queryTransactionCount$ = this.queryTransferCount(searchRequest);\r\n exportDownloadFile$ = this.exportTransferFile(searchRequest);\r\n break;\r\n\r\n default:\r\n queryTransactionCount$ = of([]);\r\n }\r\n\r\n return queryTransactionCount$\r\n .pipe(\r\n concatMap((queryTransactionCount) => {\r\n if (!this.model.exportCount.exceedLimit && this.model.exportCount.count > 0) {\r\n this.model.transactionCount = this.model.exportCount.count;\r\n this.model.loadingMessage = this.model.exportCount.message;\r\n return exportDownloadFile$;\r\n } else if (this.model.exportCount.count === 0) {\r\n this.model.transactionCount = 0;\r\n this.model.loadingMessage = (this.model.searchParams.reportType === TransactionReportType.TRANSPORTATION.value)\r\n ? \"No transportation transactions found.\" : \"No transfer transactions found.\";\r\n } else {\r\n this.model.loadingMessage = this.model.exportCount.message;\r\n }\r\n return of({});\r\n }));\r\n }\r\n\r\n private exportTransportationFile(searchRequest: TransactionExportRequest): Observable> {\r\n return this.flowingGasEnterpriseService.queryGetTransportationExportCsv(searchRequest)\r\n .pipe(\r\n tap(response => {\r\n const mediaType = response.headers.get('content-type'); // media type should be text/csv\r\n const blob = new Blob([response.body], {type: mediaType});\r\n const filename = response.headers.get('content-disposition').split(';')[1].trim().split('=')[1].replace(/\"/g, '');\r\n FileSaver.saveAs(blob, filename);\r\n }\r\n )\r\n );\r\n }\r\n\r\n private exportTransferFile(searchRequest: TransactionExportRequest): Observable> {\r\n return this.flowingGasEnterpriseService.queryGetTransferExportCsv(searchRequest)\r\n .pipe(\r\n tap(response => {\r\n const mediaType = response.headers.get('content-type'); // media type should be text/csv\r\n const blob = new Blob([response.body], {type: mediaType});\r\n const filename = response.headers.get('content-disposition').split(';')[1].trim().split('=')[1].replace(/\"/g, '');\r\n FileSaver.saveAs(blob, filename);\r\n }\r\n )\r\n );\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams = new TransactionExportSearchParams();\r\n this.model.searchParams.reportType = typedParams.asString(TransactionExportComponent.PARAM_REPORT_TYPE);\r\n this.model.searchParams.startGasDay = typedParams.asGasDay(TransactionExportComponent.PARAM_START_GAS_DAY);\r\n this.model.searchParams.endGasDay = typedParams.asGasDay(TransactionExportComponent.PARAM_END_GAS_DAY);\r\n this.model.searchParams.enterpriseId = typedParams.asNullableNumber(TransactionExportComponent.PARAM_ENTERPRISE_ID);\r\n this.model.searchParams.includePPA = typedParams.asBoolean(TransactionExportComponent.PARAM_INCLUDE_PPA);\r\n\r\n if (this.model.searchParams.reportType === TransactionReportType.TRANSPORTATION.value) {\r\n this.model.searchParams.deliveryLocationId = typedParams.asNullableNumber(TransactionExportComponent.PARAM_DELIVERY_LOCATION);\r\n this.model.searchParams.receiptLocationId = typedParams.asNullableNumber(TransactionExportComponent.PARAM_RECEIPT_LOCATION);\r\n this.model.searchParams.billableServiceIds = typedParams.asListOfStrings(TransactionExportComponent.PARAM_SERVICE);\r\n this.model.searchParams.serviceCategory = typedParams.asString(TransactionExportComponent.PARAM_SERVICE_CATEGORY);\r\n this.model.searchParams.serviceOption = typedParams.asString(TransactionExportComponent.PARAM_SERVICE_OPTION);\r\n }\r\n\r\n if (this.model.searchParams.reportType === TransactionReportType.TRANSFER.value) {\r\n this.model.searchParams.locationId = typedParams.asNullableNumber(TransactionExportComponent.PARAM_LOCATION);\r\n this.model.searchParams.accountType = typedParams.asString(TransactionExportComponent.PARAM_ACCOUNT_TYPE);\r\n this.model.searchParams.transactionTypes = typedParams.asListOfStrings(TransactionExportComponent.PARAM_TRANSACTION_TYPE);\r\n }\r\n this.model.csvLoading = false;\r\n this.changeAvailableOptionsBasedOnSelectedReportType();\r\n }\r\n\r\n // Service Call Queries\r\n\r\n private queryTransportationCount(searchRequest: TransactionExportRequest): Observable {\r\n return this.flowingGasEnterpriseService.queryGetTransportationExportCsvCount(searchRequest)\r\n .pipe(\r\n tap(transportationCount => this.model.exportCount = transportationCount)\r\n );\r\n }\r\n\r\n private queryTransferCount(searchRequest: TransactionExportRequest): Observable {\r\n return this.flowingGasEnterpriseService.queryGetTransferExportCsvCount(searchRequest)\r\n .pipe(\r\n tap(transferCount => this.model.exportCount = transferCount)\r\n );\r\n }\r\n\r\n private queryEnterprises(): Observable {\r\n return this.flowingGasEnterpriseService.queryTransportationGasAccountOwners()\r\n .pipe(\r\n concatMap(enterpriseIds => this.createAndEnrichEnterpriseIds(enterpriseIds)),\r\n tap(enterprises => this.model.transportationEnterprises = _.sortBy(enterprises, enterprise => enterprise.displayName))\r\n );\r\n }\r\n\r\n private queryTransferEnterprises(): Observable {\r\n return this.flowingGasEnterpriseService.queryAllGasAccountOwners()\r\n .pipe(\r\n concatMap(enterpriseIds => this.createAndEnrichEnterpriseIds(enterpriseIds)),\r\n tap(enterprises => this.model.transferEnterprises = _.sortBy(_.uniqBy(enterprises, 'cid'), enterprise => enterprise.displayName))\r\n );\r\n }\r\n\r\n private queryLocations(): Observable {\r\n return this.commonDataLocationService.queryAccountLocations()\r\n .pipe(\r\n concatMap(locationIds => this.locationEnrichmentService.enrichArray(locationIds, 'id', 'id')),\r\n tap(locations => this.model.locations = locations)\r\n );\r\n }\r\n\r\n private queryGasAccountTypes(): Observable {\r\n return this.flowingGasEnterpriseService.queryTransferGasAccountTypes()\r\n .pipe(\r\n tap(accountTypes => this.model.accountTypes = accountTypes)\r\n );\r\n }\r\n\r\n private queryTransactionTypes(): Observable {\r\n return this.flowingGasEnterpriseService.queryTransactionTypesForAccountType(\"All\")\r\n .pipe(\r\n tap(transactionTypes => this.model.transactionTypes = _.uniqBy(transactionTypes, 'id'))\r\n );\r\n }\r\n\r\n private queryTransactionTypesForAccount(): Observable {\r\n return this.flowingGasEnterpriseService.queryTransactionTypesForAccountType(this.model.searchParams.accountType)\r\n .pipe(\r\n tap(transactionTypes => this.model.transactionTypes = transactionTypes)\r\n );\r\n }\r\n\r\n private queryBillableServices(): Observable {\r\n return this.billableServiceService2.queryGetAllBillableServices(\"Y\")\r\n .pipe(\r\n tap(billableServices => {\r\n this.model.billableServices = billableServices;\r\n this.displayBillableServices();\r\n })\r\n );\r\n }\r\n\r\n private queryBillableServicesForCategory(): Observable {\r\n return this.billableServiceService2.queryGetAllBillableServicesForCategory(this.model.searchParams.serviceCategory, \"Y\")\r\n .pipe(\r\n tap(billableServices => {\r\n this.model.billableServices = billableServices;\r\n this.displayBillableServices();\r\n })\r\n );\r\n }\r\n\r\n public displayBillableServices(): void {\r\n this.model.billableServices2 = [];\r\n _.forEach(this.model.billableServices, x => {\r\n const billableService = new BillableService2(x, x);\r\n this.model.billableServices2.push(billableService);\r\n });\r\n }\r\n\r\n // Private Functions and Event Driven Functions\r\n\r\n private createAndEnrichEnterpriseIds(enterpriseIds: number[]): Observable {\r\n const enterprises = _.map(enterpriseIds, enterpriseId => Enterprise.createWithId(enterpriseId));\r\n return this.enterpriseEnrichmentService.enrichArray(enterprises, 'cid');\r\n }\r\n\r\n private changeAvailableOptionsBasedOnSelectedReportType(): void {\r\n if (this.model.searchParams.reportType === TransactionReportType.TRANSPORTATION.value) {\r\n this.model.enterprises = this.model.transportationEnterprises;\r\n } else if (this.model.searchParams.reportType === TransactionReportType.TRANSFER.value) {\r\n this.model.enterprises = this.model.transferEnterprises;\r\n }\r\n }\r\n\r\n public onReportTypeChanged(): void {\r\n this.alertService.clearMessages();\r\n this.model.searchParams.enterpriseId = null;\r\n this.model.hasSearchResults = false;\r\n this.model.csvLoading = false;\r\n this.changeAvailableOptionsBasedOnSelectedReportType();\r\n }\r\n\r\n public onValueChanged(e : any) : void{\r\n if (e.value === null) {\r\n this.model.hasSearchResults = false;\r\n }\r\n }\r\n\r\n public onAccountTypeChanged() : void{\r\n this.model.searchParams.transactionTypes = null;\r\n if (_.isNil(this.model.searchParams.accountType)) {\r\n this.model.transactionTypes = this.model.allTransactionTypes;\r\n return;\r\n }\r\n\r\n this.queryTransactionTypesForAccount()\r\n .subscribe((queryTransactionTypesForAccount) => {\r\n this.model.transactionTypes = queryTransactionTypesForAccount;\r\n });\r\n }\r\n\r\n public onServiceCategoryChanged() : void{\r\n this.model.searchParams.billableServiceIds = null;\r\n if (_.isNil(this.model.searchParams.serviceCategory)) {\r\n return;\r\n }\r\n\r\n this.queryBillableServicesForCategory()\r\n .subscribe((queryBillableServicesForCategory) => {\r\n this.model.billableServices = queryBillableServicesForCategory;\r\n });\r\n }\r\n\r\n private buildSearchRequest(): TransactionExportRequest {\r\n const request = new TransactionExportRequest();\r\n request.reportType = this.model.searchParams.reportType;\r\n request.startGasDay = this.model.searchParams.startGasDay;\r\n request.endGasDay = this.model.searchParams.endGasDay;\r\n request.enterpriseId = this.model.searchParams.enterpriseId;\r\n request.includePPA = this.model.searchParams.includePPA;\r\n if(this.model.searchParams.reportType === TransactionReportType.TRANSPORTATION.value){\r\n request.receiptLocationId = this.model.searchParams.receiptLocationId;\r\n request.deliveryLocationId = this.model.searchParams.deliveryLocationId;\r\n request.serviceCategory = this.model.searchParams.serviceCategory;\r\n request.billableServiceIds = this.model.searchParams.billableServiceIds;\r\n request.serviceOption = this.model.searchParams.serviceOption;\r\n }\r\n else if(this.model.searchParams.reportType === TransactionReportType.TRANSFER.value){\r\n request.locationId = this.model.searchParams.locationId;\r\n request.accountType = this.model.searchParams.accountType;\r\n request.transactionTypes = this.model.searchParams.transactionTypes;\r\n request.includeThreadedColumns = !this.sessionService.getPipeline().summarizeThreadedNomination;\r\n }\r\n return request;\r\n }\r\n\r\n public onStartGasDayChanged(): void {\r\n if (!this.model.searchParams.startGasDay) return;\r\n const aYearFromStart = (this.model.searchParams.startGasDay).addMonths(12);\r\n if (aYearFromStart > this.model.currentGasDay) {\r\n this.model.maxGasDay = this.model.currentGasDay;\r\n } else {\r\n this.model.maxGasDay = aYearFromStart;\r\n }\r\n this.onStartEndGasDayChange();\r\n }\r\n\r\n public onEndGasDayChanged(): void {\r\n if (!this.model.searchParams.endGasDay) return;\r\n this.onStartEndGasDayChange();\r\n }\r\n\r\n public onStartEndGasDayChange(): void {\r\n this.alertService.clearMessages();\r\n if (this.isRangeOverAYear()){\r\n this.alertService.addWarnMessage(\"Error\", \"The maximum date range is 1 year. Please adjust your dates.\");\r\n }\r\n }\r\n\r\n public isRangeOverAYear(): boolean {\r\n const start = this.model.searchParams.startGasDay;\r\n const end = this.model.searchParams.endGasDay;\r\n const aYearFromStart = start.addMonths(12);\r\n const aYearFromEnd = end.addMonths(-12);\r\n return (!start.isInRangeOf(aYearFromEnd, end) || !end.isInRangeOf(start, aYearFromStart));\r\n }\r\n\r\n}\r\n","import {BaseViewModel} from \"@model/base-view-model\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {StorageTransportationBalanceReportSearchParams} from \"app/gcts/flowinggas/storage-transportation-balance-report/storage-transportation-balance-report.model\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport {StorageTransportationBalance} from \"@shared/services/flowing-gas/storage-transportation-balance/storage-transportation-balance.service\";\r\nimport {BilledBalancingFeesReportRow} from \"@shared/services/flowing-gas/flowing-gas-billed-balancing-fees-report/flowing-gas-billed-balancing-fees-report.service\";\r\nimport {BalancingFeesSummaryReportRow, DataContainer} from \"@shared/services/flowing-gas/flowing-gas-balancing-fees-summary-report-service/flowing-gas-balancing-fees-summary-report.service\";\r\nimport {Enterprise} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {Location} from \"@shared/interfaces/location\";\r\n\r\nexport class BalancingFeesSummaryReportModel extends BaseViewModel {\r\n searchParams: BalancingFeesSummaryReportSearchParams = new BalancingFeesSummaryReportSearchParams();\r\n lastSearchParams: BalancingFeesSummaryReportSearchParams;\r\n enterprises: Enterprise[];\r\n locations: Location[];\r\n // maxGasDayWithinMonth: GasDay;\r\n // used in ui\r\n maxBillingGasMonth: GasMonth;\r\n minReportingGasMonth: GasMonth;\r\n maxReportingGasMonth: GasMonth;\r\n\r\n // used in on reporting month changed or set max billing month\r\n openBillingMonth: BillingMonth;\r\n currentGasDay: GasDay;\r\n preliminaryBillingMonth: BillingMonth;\r\n oldestBillingMonth: BillingMonth;\r\n minBillingGasMonth: GasMonth;\r\n minGasDay: GasDay;\r\n maxGasDay: GasDay;\r\n maxGasDayWithinMonth: GasDay;\r\n timeOfLastSearch: Date;\r\n\r\n hasSearchResults: boolean = false;\r\n public dailySearchResults: DataContainer;\r\n\r\n public clearSearchResults(): void {\r\n this.hasSearchResults = false;\r\n }\r\n\r\n}\r\nexport class BalancingFeesSummaryReportSearchParams {\r\n public reportingMonth: GasMonth;\r\n public billingGasMonth: GasMonth;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {Observable} from \"rxjs\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {map, switchMap, tap} from \"rxjs/operators\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {FlowinggasResourceService} from \"@shared/resources/flowinggas-resource.service\";\r\nimport {HttpResponse} from \"@angular/common/http\";\r\nimport {BilledBalancingFeesReportRequest, BilledBalancingFeesReportRow, IBilledBalancingFeesReportRow} from \"@shared/services/flowing-gas/flowing-gas-billed-balancing-fees-report/flowing-gas-billed-balancing-fees-report.service\";\r\nimport DevExpress from \"devextreme\";\r\nimport * as _ from \"lodash\";\r\n\r\n@Injectable()\r\nexport class FlowingGasBalancingFeesSummaryReportService {\r\n constructor(private flowinggasResource: FlowinggasResourceService) { }\r\n\r\n queryFlowingGasBalancingFeesSummaryReport(searchParams: BalancingFeesSummaryReportRequest): Observable {\r\n return this.flowinggasResource.get('/reports/balancingFees', true, this.buildUrlSearchParams(searchParams))\r\n .pipe(\r\n map(dto => DataContainer.create(dto))\r\n );\r\n }\r\n\r\n private buildUrlSearchParams(searchParams: BalancingFeesSummaryReportRequest, forPdfRequest: boolean = false): GCTSHttpParams {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setGasMonth(searchParams.billingMonth, 'gasMonth');\r\n params.setGasMonth(searchParams.billingMonth,'reportingMonth');\r\n params.set('units', searchParams.units);\r\n return params;\r\n }\r\n}\r\n\r\nexport class BalancingFeesSummaryReportRequest {\r\n billingMonth: GasMonth;\r\n reportingMonth: GasMonth;\r\n units: string = 'GJ';\r\n}\r\n\r\nexport class IDataContainer {\r\n tier1Total:string;\r\n tier2Total:string;\r\n tier3Total:string;\r\n tier4Total:string;\r\n cumulativeTier1Total:string;\r\n cumulativeTier2Total:string;\r\n details:string;\r\n}\r\n\r\nexport class DataContainer {\r\n details:BalancingFeesSummaryReportRow[];\r\n totals:BalancingFeesSummaryReportTotalRow[];\r\n\r\n tier1Total: TierDetail;\r\n tier2Total: TierDetail;\r\n tier3Total: TierDetail;\r\n tier4Total: TierDetail;\r\n cumulativeTier1Total:TierDetail;\r\n cumulativeTier2Total:TierDetail;\r\n public static create(dto:IDataContainer): DataContainer{\r\n const dataContainer = new DataContainer();\r\n // MR probably no longer need the fields below as they are embedded in the totals array which seems to work better with\r\n // dev extreme stuff\r\n dataContainer.tier1Total = this.createTierDetail(dto.tier1Total);\r\n dataContainer.tier2Total = this.createTierDetail(dto.tier2Total);\r\n dataContainer.tier3Total = this.createTierDetail(dto.tier3Total);\r\n dataContainer.tier4Total = this.createTierDetail(dto.tier4Total);\r\n dataContainer.cumulativeTier1Total = this.createTierDetail(dto.cumulativeTier1Total);\r\n dataContainer.cumulativeTier2Total = this.createTierDetail(dto.cumulativeTier2Total);\r\n\r\n dataContainer.totals = [BalancingFeesSummaryReportTotalRow.create(dto)];\r\n dataContainer.details = _.map(dto.details, x => BalancingFeesSummaryReportRow.create(x));\r\n return dataContainer;\r\n }\r\n public static createTierDetail(dto: any): TierDetail {\r\n const tierDetails = new TierDetail();\r\n tierDetails.billedExcess = dto.billedExcess;\r\n tierDetails.estimatedFee = dto.estimatedFee;\r\n return tierDetails;\r\n }\r\n}\r\n\r\nexport class IBalancingFeesSummaryReportRow {\r\n operatorId: string;\r\n locationId: string;\r\n tier1: string;\r\n tier2: string;\r\n tier3: string;\r\n tier4: string;\r\n cumulativeTier1: string;\r\n cumulativeTier2: string;\r\n}\r\n\r\nexport class BalancingFeesSummaryReportRow {\r\n operatorId: number;\r\n operatorMnemonic: string;\r\n locationId: number;\r\n locationName: string;\r\n tier1: TierDetail;\r\n tier2: TierDetail;\r\n tier3: TierDetail;\r\n tier4: TierDetail;\r\n cumulativeTier1: TierDetail;\r\n cumulativeTier2: TierDetail;\r\n\r\n public static create(dto: any): BalancingFeesSummaryReportRow {\r\n const balancingFeesSummaryReportRow = new BalancingFeesSummaryReportRow();\r\n balancingFeesSummaryReportRow.operatorId = dto.operatorId;\r\n balancingFeesSummaryReportRow.locationId = dto.locationId;\r\n balancingFeesSummaryReportRow.tier1 = this.createTierDetail(dto.tier1);\r\n balancingFeesSummaryReportRow.tier2 = this.createTierDetail(dto.tier2);\r\n balancingFeesSummaryReportRow.tier3 = this.createTierDetail(dto.tier3);\r\n balancingFeesSummaryReportRow.tier4 = this.createTierDetail(dto.tier4);\r\n balancingFeesSummaryReportRow.cumulativeTier1 = this.createTierDetail(dto.cumulativeTier1);\r\n balancingFeesSummaryReportRow.cumulativeTier2 = this.createTierDetail(dto.cumulativeTier2);\r\n return balancingFeesSummaryReportRow;\r\n }\r\n\r\n public static createTierDetail(dto: any): TierDetail {\r\n const tierDetails = new TierDetail();\r\n tierDetails.billedExcess = dto.billedExcess;\r\n tierDetails.estimatedFee = dto.estimatedFee;\r\n return tierDetails;\r\n }\r\n}\r\n\r\nexport class BalancingFeesSummaryReportTotalRow {\r\n caption: string;\r\n\r\n tier1Total: TierDetail;\r\n tier2Total: TierDetail;\r\n tier3Total: TierDetail;\r\n tier4Total: TierDetail;\r\n cumulativeTier1Total: TierDetail;\r\n cumulativeTier2Total: TierDetail;\r\n\r\n public static create(dto: any): BalancingFeesSummaryReportTotalRow {\r\n const balancingFeesSummaryReportTotalRow = new BalancingFeesSummaryReportTotalRow();\r\n balancingFeesSummaryReportTotalRow.caption = 'Total';\r\n balancingFeesSummaryReportTotalRow.tier1Total = this.createTierDetail(dto.tier1Total);\r\n balancingFeesSummaryReportTotalRow.tier2Total = this.createTierDetail(dto.tier2Total);\r\n balancingFeesSummaryReportTotalRow.tier3Total = this.createTierDetail(dto.tier3Total);\r\n balancingFeesSummaryReportTotalRow.tier4Total = this.createTierDetail(dto.tier4Total);\r\n balancingFeesSummaryReportTotalRow.cumulativeTier1Total = this.createTierDetail(dto.cumulativeTier1Total);\r\n balancingFeesSummaryReportTotalRow.cumulativeTier2Total = this.createTierDetail(dto.cumulativeTier2Total);\r\n return balancingFeesSummaryReportTotalRow;\r\n }\r\n public static createTierDetail(dto: any): TierDetail {\r\n const tierDetails = new TierDetail();\r\n tierDetails.billedExcess = dto.billedExcess;\r\n tierDetails.estimatedFee = dto.estimatedFee;\r\n return tierDetails;\r\n }\r\n}\r\n\r\nexport class ITierDetail {\r\n billedExcess: string;\r\n estimatedFee: string;\r\n}\r\nexport class TierDetail {\r\n billedExcess: number;\r\n estimatedFee: number;\r\n}\r\n","
\r\n
\r\n Number of Records: {{model.dailySearchResults.details.length}} AS OF {{model.timeOfLastSearch | dateFormat:'YYYY-MMM-DD H:mm:ss'}}\r\n\r\n
0\" class=\"pull-right\">\r\n Export CSV\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n","import {Component, Input, ViewChild} from \"@angular/core\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {BalancingFeesSummaryReportModel} from \"app/gcts/flowinggas/balancing-fees-summary-report/balancing-fees-summary-report.model\";\r\nimport * as _ from \"lodash\";\r\nimport {BalancingFeesSummaryReportRow} from \"@shared/services/flowing-gas/flowing-gas-balancing-fees-summary-report-service/flowing-gas-balancing-fees-summary-report.service\";\r\n\r\n@Component({\r\n selector: 'app-balancing-fees-summary-daily-tab',\r\n templateUrl: './balancing-fees-summary-daily-tab.component.html',\r\n styleUrls: ['./balancing-fees-summary-daily-tab.component.css']\r\n})\r\nexport class BalancingFeesSummaryDailyTabComponent {\r\n\r\n @Input() model: BalancingFeesSummaryReportModel;\r\n @ViewChild(DxDataGridComponent) dataGrid: DxDataGridComponent;\r\n\r\n\r\n constructor(protected fileService: FileService) {\r\n }\r\n\r\n public findEnterpriseMnemonic(valIn: number): string{\r\n return _.find(this.model.enterprises, x => x.id === valIn).mnemonic;\r\n }\r\n enterpriseMnemonicSortValue = (rowData: BalancingFeesSummaryReportRow) => {\r\n // Put Pending values (null start date) on top.\r\n return this.findEnterpriseMnemonic(rowData.operatorId);\r\n };\r\n public findLocationName(valIn: number): string{\r\n return _.find(this.model.locations, x => x.id === valIn).name;\r\n }\r\n\r\n public exportCsvClicked() {\r\n let csvData = [];\r\n\r\n this.model.dailySearchResults.details.forEach(row => {\r\n csvData.push({\r\n operator: this.findEnterpriseMnemonic(row.operatorId),\r\n location: this.findLocationName(row.locationId),\r\n tier1Excess: row.tier1.billedExcess,\r\n tier1Fee: row.tier1.estimatedFee,\r\n tier2Excess: row.tier2.billedExcess,\r\n tier2Fee: row.tier2.estimatedFee,\r\n tier3Excess: row.tier3.billedExcess,\r\n tier3Fee: row.tier3.estimatedFee,\r\n tier4Excess: row.tier4.billedExcess,\r\n tier4Fee: row.tier4.estimatedFee,\r\n });\r\n });\r\n\r\n csvData = _.sortBy(csvData, ['operator', 'location']);\r\n\r\n this.model.dailySearchResults.totals.forEach(row => {\r\n csvData.push({\r\n operator: 'Total',\r\n location: '',\r\n tier1Excess: row.tier1Total.billedExcess,\r\n tier1Fee: row.tier1Total.estimatedFee,\r\n tier2Excess: row.tier2Total.billedExcess,\r\n tier2Fee: row.tier2Total.estimatedFee,\r\n tier3Excess: row.tier3Total.billedExcess,\r\n tier3Fee: row.tier3Total.estimatedFee,\r\n tier4Excess: row.tier4Total.billedExcess,\r\n tier4Fee: row.tier4Total.estimatedFee,\r\n });\r\n });\r\n\r\n\r\n const filename = 'BalancingFeesSummary_Daily' + ' ' + this.model.searchParams.billingGasMonth.toDisplayFormat() + '.csv';\r\n const headers = ['Operator', 'Location', 'Tier1 - Excess', 'Tier1 - Est Fee', 'Tier2 - Excess','Tier2 - Est Fee', 'Tier3 - Excess','Tier3 - Est Fee', 'Tier4 - Excess','Tier4 - Est Fee'];\r\n const columns = ['operator', 'location', 'tier1Excess', 'tier1Fee', 'tier2Excess','tier2Fee', 'tier3Excess','tier3Fee', 'tier4Excess','tier4Fee'];\r\n\r\n this.fileService.downloadCsvFile(filename, csvData, headers, columns);\r\n }\r\n}\r\n","
\r\n
\r\n Number of Records: {{model.dailySearchResults.details.length}} AS OF {{model.timeOfLastSearch | dateFormat:'YYYY-MMM-DD H:mm:ss'}}\r\n\r\n
0\" class=\"pull-right\">\r\n Export CSV\r\n
\r\n
\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n","import {Component, Input, ViewChild} from \"@angular/core\";\r\nimport {BalancingFeesSummaryReportModel} from \"app/gcts/flowinggas/balancing-fees-summary-report/balancing-fees-summary-report.model\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport * as _ from \"lodash\";\r\nimport {JobRun} from \"@model/services/base-job-service\";\r\nimport {BalancingFeesSummaryReportRow} from \"@shared/services/flowing-gas/flowing-gas-balancing-fees-summary-report-service/flowing-gas-balancing-fees-summary-report.service\";\r\n\r\n@Component({\r\n selector: 'app-balancing-fees-summary-cumulative-tab',\r\n templateUrl: './balancing-fees-summary-cumulative-tab.component.html',\r\n styleUrls: ['./balancing-fees-summary-cumulative-tab.component.css']\r\n})\r\nexport class BalancingFeesSummaryCumulativeTabComponent {\r\n\r\n @Input() model: BalancingFeesSummaryReportModel;\r\n @ViewChild(DxDataGridComponent) dataGrid: DxDataGridComponent;\r\n\r\n\r\n constructor(protected fileService: FileService) {\r\n }\r\n\r\n public findEnterpriseMnemonic(valIn: number): string{\r\n return _.find(this.model.enterprises, x => x.id === valIn).mnemonic;\r\n }\r\n enterpriseMnemonicSortValue = (rowData: BalancingFeesSummaryReportRow) => {\r\n // Put Pending values (null start date) on top.\r\n return this.findEnterpriseMnemonic(rowData.operatorId);\r\n };\r\n public findLocationName(valIn: number): string{\r\n return _.find(this.model.locations, x => x.id === valIn).name;\r\n }\r\n\r\n public exportCsvClicked() {\r\n let csvData = [];\r\n\r\n this.model.dailySearchResults.details.forEach(row => {\r\n csvData.push({\r\n operator: this.findEnterpriseMnemonic(row.operatorId),\r\n location: this.findLocationName(row.locationId),\r\n tier1Excess: row.cumulativeTier1.billedExcess,\r\n tier1Fee: row.cumulativeTier1.estimatedFee,\r\n tier2Excess: row.cumulativeTier2.billedExcess,\r\n tier2Fee: row.cumulativeTier2.estimatedFee,\r\n });\r\n });\r\n\r\n csvData = _.sortBy(csvData, ['operator', 'location']);\r\n\r\n this.model.dailySearchResults.totals.forEach(row => {\r\n csvData.push({\r\n operator: 'Total',\r\n location: '',\r\n tier1Excess: row.cumulativeTier1Total.billedExcess,\r\n tier1Fee: row.cumulativeTier1Total.estimatedFee,\r\n tier2Excess: row.cumulativeTier2Total.billedExcess,\r\n tier2Fee: row.cumulativeTier2Total.estimatedFee,\r\n });\r\n });\r\n\r\n\r\n const filename = 'BalancingFeesSummary_Cumulative' + ' ' + this.model.searchParams.billingGasMonth.toDisplayFormat() + '.csv';\r\n const headers = ['Operator', 'Location', 'Tier1 - Excess', 'Tier1 - Est Fee', 'Tier2 - Excess','Tier2 - Est Fee'];\r\n const columns = ['operator', 'location', 'tier1Excess', 'tier1Fee', 'tier2Excess','tier2Fee'];\r\n\r\n this.fileService.downloadCsvFile(filename, csvData, headers, columns);\r\n }\r\n\r\n\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Reporting Month: {{model.lastSearchParams?.reportingMonth }}\r\n Billing Month: {{model.lastSearchParams?.billingGasMonth}}\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.reportingMonth }}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.billingGasMonth}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n","import {Component, ViewChild} from \"@angular/core\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {forkJoin, Observable, of} from \"rxjs\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {LocationService} from \"@shared/services/common-data/location/location.service\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {LocationEnrichmentService} from \"@shared/services/enrichment/location-enrichment.service\";\r\nimport {BalancingFeesSummaryReportModel, BalancingFeesSummaryReportSearchParams} from \"app/gcts/flowinggas/balancing-fees-summary-report/balancing-fees-summary-report.model\";\r\nimport * as _ from \"lodash\";\r\nimport {concatMap, flatMap, map, tap} from \"rxjs/operators\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {CommonDataGasdayService, ServerTimeData} from \"@shared/services/common-data/common-data-gasday/common-data-gasday.service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {\r\n BalancingFeesSummaryReportRequest,\r\n BalancingFeesSummaryReportRow, DataContainer, FlowingGasBalancingFeesSummaryReportService\r\n} from \"@shared/services/flowing-gas/flowing-gas-balancing-fees-summary-report-service/flowing-gas-balancing-fees-summary-report.service\";\r\nimport {DxTabPanelComponent} from \"devextreme-angular\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\n\r\n\r\n@Component({\r\n selector: 'app-balancing-fees-summary-report',\r\n templateUrl: './balancing-fees-summary-report.component.html',\r\n styleUrls: ['./balancing-fees-summary-report.component.css']\r\n})\r\n\r\nexport class BalancingFeesSummaryReportComponent extends BaseSearchComponent {\r\n private static readonly PARAM_BILLING_MONTH: string = 'billingMonth';\r\n private static readonly PARAM_REPORTING_MONTH: string ='reportingMonth';\r\n public model: BalancingFeesSummaryReportModel = new BalancingFeesSummaryReportModel();\r\n\r\n @ViewChild('tabPanel') tabPanel: DxTabPanelComponent;\r\n\r\n balancingFeesSummaryReportTabs = [\r\n {id: 1, title: \"Daily Balancing Fees\", template: \"dailyBalanceTemplate\"},\r\n {id: 2, title: \"Cumulative Balancing Fees\", template: \"cumulativeBalanceTemplate\"}\r\n ];\r\n\r\n constructor(\r\n appService: AppService,\r\n activatedRoute: ActivatedRoute,\r\n router: Router,\r\n protected alertService: AlertService,\r\n protected commonDataGasDayService: CommonDataGasdayService,\r\n protected commonDataBillingMonthService: CommonDataBillingMonthService,\r\n protected sessionService: SessionService,\r\n protected flowingGasBalancingFeesSummaryReportService: FlowingGasBalancingFeesSummaryReportService,\r\n private locationEnrichmentService: LocationEnrichmentService,\r\n private commonDataLocationService: LocationService,\r\n private enterpriseEnrichmentService: EnterpriseEnrichmentService,\r\n private commonDataEnterpriseService: EnterpriseService,\r\n private fileService: FileService\r\n ){\r\n super('Balancing Fees Summary', appService, activatedRoute, router, alertService);\r\n\r\n enterpriseEnrichmentService.setEnrichmentResource(commonDataEnterpriseService);\r\n locationEnrichmentService.setEnrichmentResource(commonDataLocationService);\r\n\r\n this.appService.hideMenu();\r\n }\r\n\r\n public onReportingMonthChanged(): void {\r\n if (_.isNil(this.model.searchParams.reportingMonth)) {\r\n this.model.searchParams.billingGasMonth = undefined;\r\n return;\r\n }\r\n\r\n // MR\r\n if(this.model.searchParams.reportingMonth.isEqual((this.model.preliminaryBillingMonth.gasMonth))){\r\n this.model.searchParams.billingGasMonth = this.model.searchParams.reportingMonth;\r\n this.model.maxBillingGasMonth = this.model.searchParams.reportingMonth;\r\n this.model.minBillingGasMonth = this.model.searchParams.reportingMonth;\r\n return;\r\n }\r\n\r\n // MR\r\n this.model.minBillingGasMonth = this.model.searchParams.reportingMonth;\r\n this.model.maxBillingGasMonth = this.model.openBillingMonth.gasMonth;\r\n this.model.searchParams.billingGasMonth = this.model.searchParams.reportingMonth;\r\n\r\n // this.setMaxBillingMonth();\r\n // if(this.model.searchParams.reportingMonth.isEqual(this.model.openBillingMonth.gasMonth) || this.model.searchParams.reportingMonth.isEqual(this.model.maxReportingGasMonth)) {\r\n // this.model.searchParams.billingGasMonth = this.model.searchParams.reportingMonth;\r\n // return;\r\n // }\r\n // if(this.model.searchParams.billingGasMonth.isEqual(this.model.maxReportingGasMonth)) {\r\n // this.model.searchParams.billingGasMonth = this.model.openBillingMonth.gasMonth;\r\n // return;\r\n // }\r\n // if(this.model.searchParams.billingGasMonth.toDate < this.model.searchParams.reportingMonth.toDate) {\r\n // this.model.searchParams.billingGasMonth = this.model.searchParams.reportingMonth;\r\n // }\r\n }\r\n\r\n public setMaxBillingMonth(): void {\r\n if(this.model.searchParams.reportingMonth.isEqual(this.model.maxReportingGasMonth)) {\r\n this.model.maxBillingGasMonth = this.model.maxReportingGasMonth;\r\n }\r\n else {\r\n this.model.maxBillingGasMonth = this.model.openBillingMonth.gasMonth;\r\n }\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n const paramValidator = ParamValidator.Standard();\r\n paramValidator.isGasMonth(BalancingFeesSummaryReportComponent.PARAM_BILLING_MONTH);\r\n const viewVal = paramValidator.isValid(params);\r\n return viewVal;\r\n // return paramValidator.isValid(params);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {};\r\n params[BalancingFeesSummaryReportComponent.PARAM_REPORTING_MONTH] = this.model.searchParams.reportingMonth;\r\n params[BalancingFeesSummaryReportComponent.PARAM_BILLING_MONTH] = this.model.searchParams.billingGasMonth;\r\n return params;\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n const getOldestBillingMonth$ = this.commonDataBillingMonthService.getOldest()\r\n .pipe(\r\n tap(oldestBillingMonth => this.model.oldestBillingMonth = oldestBillingMonth)\r\n );\r\n\r\n const getOpenBillingMonth$ = this.commonDataBillingMonthService.getOpen()\r\n .pipe(\r\n tap(openBillingMonth => this.model.openBillingMonth = openBillingMonth)\r\n );\r\n\r\n const getPreliminaryBillingMonth$ = this.commonDataBillingMonthService.getPreliminary()\r\n .pipe(\r\n tap(preliminaryBillingMonth => this.model.preliminaryBillingMonth = preliminaryBillingMonth)\r\n );\r\n\r\n const queryDateTime$ = this.commonDataGasDayService.getServerTimeData()\r\n .pipe(\r\n tap(serverTimeData => this.model.currentGasDay = serverTimeData.gasDay)\r\n );\r\n\r\n const queryAllEnteprises$ = this.commonDataEnterpriseService.getAll()\r\n .pipe(\r\n tap(enterprises => this.model.enterprises = enterprises)\r\n );\r\n\r\n const queryAllLocations$ = this.commonDataLocationService.queryAll()\r\n .pipe(\r\n tap(locations => this.model.locations = locations)\r\n );\r\n\r\n return forkJoin([getOldestBillingMonth$, getOpenBillingMonth$, getPreliminaryBillingMonth$, queryDateTime$,queryAllEnteprises$,queryAllLocations$])\r\n .pipe(\r\n tap(() => {\r\n this.model.maxReportingGasMonth = this.model.preliminaryBillingMonth ? this.model.preliminaryBillingMonth.gasMonth : this.model.openBillingMonth.gasMonth;\r\n\r\n this.model.minGasDay = this.model.oldestBillingMonth.firstDayOfMonth;\r\n const yesterday = this.model.currentGasDay.addDays(-1);\r\n this.model.maxGasDay = yesterday.isLessThan(this.model.maxReportingGasMonth.end()) ? yesterday : this.model.maxReportingGasMonth.end();\r\n this.model.maxGasDayWithinMonth = this.model.maxGasDay;\r\n\r\n this.model.minReportingGasMonth = this.model.oldestBillingMonth.gasMonth;\r\n this.model.minBillingGasMonth = this.model.oldestBillingMonth.gasMonth;\r\n this.model.maxBillingGasMonth = this.model.openBillingMonth.gasMonth;\r\n })\r\n );\r\n }\r\n public findEnterpriseMnemonic(valIn: number): string{\r\n return _.find(this.model.enterprises, x => x.id === valIn).mnemonic;\r\n }\r\n public findLocationName(valIn: number): string{\r\n return _.find(this.model.locations, x => x.id === valIn).name;\r\n }\r\n\r\n public setEnterpriseMnemonic(dataContainer: DataContainer){\r\n dataContainer.details.forEach(row=>{\r\n row.operatorMnemonic = this.findEnterpriseMnemonic(row.operatorId);\r\n });\r\n }\r\n public setLocationName(dataContainer: DataContainer){\r\n dataContainer.details.forEach(row=>{\r\n row.locationName = this.findLocationName(row.locationId);\r\n });\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n return of(null);\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n\r\n const getBilledBalancingFeesReportRows$ = this.getBalancingFeesSummaryReportRows();\r\n const queryServerTimeData$ = this.queryServerTimeData();\r\n\r\n return forkJoin([getBilledBalancingFeesReportRows$, queryServerTimeData$]);\r\n }\r\n\r\n public getBalancingFeesSummaryReportRows(): Observable{\r\n return this.flowingGasBalancingFeesSummaryReportService.queryFlowingGasBalancingFeesSummaryReport(this.getSearchParams(this.model.searchParams))\r\n .pipe(\r\n tap(results =>\r\n {\r\n this.model.dailySearchResults = results;\r\n this.setEnterpriseMnemonic(this.model.dailySearchResults);\r\n this.setLocationName(this.model.dailySearchResults);\r\n this.model.hasSearchResults = true;\r\n }\r\n )\r\n );\r\n }\r\n\r\n private queryServerTimeData(): Observable {\r\n return this.commonDataGasDayService.getServerTimeData()\r\n .pipe(\r\n tap(serverTimes => this.model.timeOfLastSearch = serverTimes.serverTime.toDate())\r\n );\r\n }\r\n\r\n private getSearchParams(params: BalancingFeesSummaryReportSearchParams): BalancingFeesSummaryReportRequest{\r\n const searchParams = new BalancingFeesSummaryReportRequest();\r\n searchParams.billingMonth = params.billingGasMonth;\r\n searchParams.reportingMonth = params.reportingMonth;\r\n return searchParams;\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams = new BalancingFeesSummaryReportSearchParams();\r\n this.model.searchParams.reportingMonth = this.model.openBillingMonth.gasMonth;\r\n this.model.minBillingGasMonth = this.model.oldestBillingMonth.gasMonth;\r\n this.model.maxBillingGasMonth = this.model.openBillingMonth.gasMonth;\r\n this.model.searchParams.billingGasMonth = this.model.openBillingMonth.gasMonth;\r\n this.model.clearSearchResults();\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams = new BalancingFeesSummaryReportSearchParams();\r\n this.model.searchParams.reportingMonth = typedParams.asGasMonth('reportingMonth');\r\n this.model.searchParams.billingGasMonth = typedParams.asGasMonth('billingMonth');\r\n }\r\n\r\n\r\n}\r\n","import {BaseViewModel} from \"@model/base-view-model\";\r\nimport {DateTime} from \"@model/date-time\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\n\r\nimport {Enterprise} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {CommonDataLocation} from \"@shared/services/common-data/location/location.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {StorageTransportationBalanceSummary} from \"@shared/services/flowing-gas/storage-transportation-balance/storage-transportation-balance.service\";\r\nimport {BillingProcess} from \"@shared/services/flowing-gas/flowing-gas-allocation-and-balancing-billing-process/flowing-gas-allocation-and-balancing-billing-process.service\";\r\n\r\nexport class StorageTransportationBalanceSummaryModel extends BaseViewModel {\r\n\r\n minGasMonth: GasMonth;\r\n maxGasMonth: GasMonth;\r\n openBillingMonth: GasMonth;\r\n\r\n searchResults: StorageTransportationBalanceSummary[];\r\n searchDateTime: DateTime;\r\n\r\n customers: Enterprise[];\r\n locations: CommonDataLocation[];\r\n\r\n searchParams: StorageTransportationBalanceSummaryParams = new StorageTransportationBalanceSummaryParams();\r\n lastSearchParams: StorageTransportationBalanceSummaryParams;\r\n currentGasDay: GasDay;\r\n lastSearchLocations: CommonDataLocation[];\r\n allocationAndBalancingStatus: BillingProcess;\r\n\r\n clearSearchResults() {\r\n this.searchResults = null;\r\n this.searchDateTime = null;\r\n }\r\n}\r\n\r\nexport class StorageTransportationBalanceSummaryParams {\r\n startBillingMonth: GasMonth;\r\n endBillingMonth: GasMonth;\r\n customerId: number;\r\n locationId: number;\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport {DateTime} from \"@model/date-time\";\r\n\r\n@Pipe({\r\n name: 'dateTimeFormat'\r\n})\r\nexport class DateTimeFormatPipe implements PipeTransform {\r\n\r\n transform(value: DateTime, includeSeconds: boolean = true, use24HourClock: boolean = true): string {\r\n\r\n if (!value) {\r\n return '';\r\n }\r\n\r\n let format = use24HourClock ? 'YYYY-MMM-DD H:mm:ss' : 'YYYY-MMM-DD h:mm:ss a';\r\n if (!includeSeconds)\r\n format = format.replace(':ss', '');\r\n return value.format(format);\r\n }\r\n\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n From: {{model.lastSearchParams?.startBillingMonth}}\r\n To: {{model.lastSearchParams?.endBillingMonth}}\r\n Customer: {{model.lastSearchParams.customerId | displayName: 'cid' : 'displayName' : model.customers}}\r\n Location: {{model.lastSearchParams.locationId | displayName: 'id' : 'name' : model.locations}}\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.allocationAndBalancingStatus?.status === 'Final' ? 'Final' : 'Preliminary'}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.startBillingMonth}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.customerId | displayName: 'id' : 'displayName' : model.customers }}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.endBillingMonth}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.locationId | displayName:'id' : 'name' : model.locations}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n Number of Records: {{model.searchResults.length}}\r\n AS OF {{model.searchDateTime | dateTimeFormat}}\r\n
0\" class=\"pull-right\">\r\n Export CSV\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n
\r\n {{ row.value | gasDayFormat }}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n","import {Component, OnInit} from '@angular/core';\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {CommonDataEnterpriseSearchParams, Enterprise, EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {forkJoin, Observable, of} from \"rxjs\";\r\nimport {concatMap, tap} from \"rxjs/operators\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport * as _ from \"lodash\";\r\nimport {StorageTransportationBalanceSummaryModel, StorageTransportationBalanceSummaryParams} from \"app/gcts/flowinggas/storage-transportation-balance-summary/storage-transportation-balance-summary.model\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {CommonDataGasdayService, ServerTimeData} from \"@shared/services/common-data/common-data-gasday/common-data-gasday.service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {CommonDataLocation, LocationSearchRequest, LocationService} from \"@shared/services/common-data/location/location.service\";\r\nimport {StorageTransportationBalanceService, StorageTransportationBalanceSummary} from \"@shared/services/flowing-gas/storage-transportation-balance/storage-transportation-balance.service\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {LocationEnrichmentService} from \"@shared/services/enrichment/location-enrichment.service\";\r\nimport {NomGroupEnrichmentService} from \"@shared/services/enrichment/nomgroup-enrichment.service\";\r\nimport {NominationGroupService} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport {BillingProcess, FlowingGasAllocationAndBalancingBillingProcessService} from \"@shared/services/flowing-gas/flowing-gas-allocation-and-balancing-billing-process/flowing-gas-allocation-and-balancing-billing-process.service\";\r\n\r\n@Component({\r\n selector: 'app-storage-transportation-balance-summary',\r\n templateUrl: './storage-transportation-balance-summary.component.html',\r\n styleUrls: ['./storage-transportation-balance-summary.component.css']\r\n})\r\nexport class StorageTransportationBalanceSummaryComponent extends BaseSearchComponent implements OnInit {\r\n\r\n model: StorageTransportationBalanceSummaryModel = new StorageTransportationBalanceSummaryModel();\r\n\r\n constructor(protected appService: AppService,\r\n protected router: Router,\r\n protected activatedRoute: ActivatedRoute,\r\n protected alertService: AlertService,\r\n protected commonDataBillingMonthService: CommonDataBillingMonthService,\r\n protected enterpriseService: EnterpriseService,\r\n protected enterpriseEnrichmentService: EnterpriseEnrichmentService,\r\n protected fileService: FileService,\r\n private commonDataGasDayService: CommonDataGasdayService,\r\n private sessionService: SessionService,\r\n private locationService: LocationService,\r\n private storageTransportationBalanceService: StorageTransportationBalanceService,\r\n private locationEnrichmentService: LocationEnrichmentService,\r\n // private nominationGroupEnrichmentService: NomGroupEnrichmentService,\r\n // private nominationGroupService: NominationGroupService,\r\n private flowingGasAllocationAndBalancingBillingProcessService: FlowingGasAllocationAndBalancingBillingProcessService\r\n ) {\r\n super('STS Balance Summary', appService, activatedRoute, router, alertService);\r\n\r\n enterpriseEnrichmentService.setEnrichmentResource(enterpriseService);\r\n locationEnrichmentService.setEnrichmentResource(locationService);\r\n // nominationGroupEnrichmentService.setEnrichmentResource(nominationGroupService);\r\n }\r\n\r\n private paramValidator(): ParamValidator {\r\n return ParamValidator.Standard();\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return this.paramValidator().isValid(params);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {};\r\n params['fromGasMonth'] = this.model.searchParams.startBillingMonth;\r\n params['toGasMonth'] = this.model.searchParams.endBillingMonth;\r\n params['customerId'] = this.model.searchParams.customerId;\r\n params['locationId'] = this.model.searchParams.locationId;\r\n return params;\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n const getOldestBillingMonth$ = this.commonDataBillingMonthService.getOldest()\r\n .pipe(\r\n tap(oldestBillingMonth => this.model.minGasMonth = oldestBillingMonth.gasMonth)\r\n );\r\n\r\n const getOpenBillingMonth$ = this.commonDataBillingMonthService.getOpen()\r\n .pipe(\r\n tap(openBillingMonth => this.model.openBillingMonth = openBillingMonth.gasMonth)\r\n );\r\n\r\n const getPreliminaryBillingMonth$ = this.commonDataBillingMonthService.getPreliminary();\r\n\r\n const time$ = this.commonDataGasDayService.getServerTimeData()\r\n .pipe(\r\n tap((time:ServerTimeData ) => this.model.currentGasDay = time.gasDay),\r\n );\r\n\r\n const initializeEnrichmentData$ = this.initializeEnrichments()\r\n .pipe(\r\n concatMap(results => this.enterpriseEnrichmentService.enrichArray(results, 'nomGroupOwnerEnterpriseId', 'nomGroupOwnerEnterprise')),\r\n concatMap(results => this.locationEnrichmentService.enrichArray(results, 'locationId', 'location')),\r\n );\r\n\r\n const getMaxMonth$ = forkJoin([getOpenBillingMonth$, getPreliminaryBillingMonth$, time$])\r\n .pipe(\r\n tap(([openBillingMonth, preliminaryBillingMonth, time]: [BillingMonth, BillingMonth, ServerTimeData]) => {\r\n // Have to be within the prelim gas month for it to be displayed. Otherwise, there are no opening balances yet.\r\n if (!_.isNil(preliminaryBillingMonth) && time.gasDay.isGreatThanOrEqualTo(preliminaryBillingMonth.firstDayOfMonth)) {\r\n this.model.maxGasMonth = preliminaryBillingMonth.gasMonth;\r\n } else {\r\n this.model.maxGasMonth = openBillingMonth.gasMonth;\r\n }\r\n }));\r\n\r\n return forkJoin([getOldestBillingMonth$, getMaxMonth$,initializeEnrichmentData$]);\r\n }\r\n\r\n private initializeEnrichments(): Observable{\r\n return of(null);\r\n }\r\n\r\n private queryCustomers(): Observable {\r\n const commonDataEnterpriseSearchParams = new CommonDataEnterpriseSearchParams();\r\n commonDataEnterpriseSearchParams.hasStorageBalanceLocation = true;\r\n commonDataEnterpriseSearchParams.pipeline = this.sessionService.getPipeline().code;\r\n commonDataEnterpriseSearchParams.gasDay = this.model.currentGasDay;\r\n\r\n return this.enterpriseService.getAll(commonDataEnterpriseSearchParams).pipe(\r\n tap(results => this.model.customers = results)\r\n );\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n const queryOperatorLocations$ = this.queryCustomerLocations();\r\n const queryCustomers$ = this.queryCustomers();\r\n return forkJoin([queryOperatorLocations$, queryCustomers$]);\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n this.model.lastSearchLocations = _.clone(this.model.locations);\r\n\r\n const time$ = this.commonDataGasDayService.getServerTimeData()\r\n .pipe(\r\n tap((time:ServerTimeData ) => this.model.searchDateTime = time.serverTime)\r\n );\r\n const summaries$ = this.queryMonthlySummaries();\r\n return forkJoin([time$, summaries$, this.getBillingProcessStatus()]);\r\n }\r\n\r\n private queryMonthlySummaries() {\r\n return this.storageTransportationBalanceService.queryMonthlySummary(\r\n this.model.searchParams.startBillingMonth,\r\n this.model.searchParams.endBillingMonth,\r\n this.model.searchParams.customerId,\r\n this.model.searchParams.locationId).pipe(\r\n concatMap(results => this.enterpriseEnrichmentService.enrichArray(results, 'nomGroupOwnerEnterpriseId', 'nomGroupOwnerEnterprise')),\r\n concatMap(results => this.locationEnrichmentService.enrichArray(results, 'locationId', 'location')),\r\n // concatMap(results => this.nominationGroupEnrichmentService.enrichArray(results, 'nomGroupId', 'nomGroup')),\r\n tap(results => {\r\n this.model.searchResults = _.orderBy(results, ['nomGroupOwnerEnterpriseShortName', 'nomGroupMnemonic']);\r\n })\r\n );\r\n }\r\n\r\n\r\n private getBillingProcessStatus(): Observable{\r\n return this.flowingGasAllocationAndBalancingBillingProcessService.get(this.model.searchParams.endBillingMonth)\r\n .pipe(\r\n tap(allocationAndBalancingProcess => this.model.allocationAndBalancingStatus = allocationAndBalancingProcess[0])\r\n );\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams = new StorageTransportationBalanceSummaryParams();\r\n this.model.searchParams.startBillingMonth = this.model.searchParams.endBillingMonth = this.model.openBillingMonth.isGreaterThan(this.model.maxGasMonth)\r\n ? this.model.maxGasMonth\r\n : this.model.openBillingMonth;\r\n this.model.clearSearchResults();\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams.startBillingMonth = typedParams.asGasMonth('fromGasMonth');\r\n this.model.searchParams.endBillingMonth = typedParams.asGasMonth('toGasMonth');\r\n this.model.searchParams.customerId = typedParams.asNullableNumber('customerId');\r\n this.model.searchParams.locationId = typedParams.asNullableNumber('locationId');\r\n }\r\n\r\n exportCsvClicked(): void {\r\n const csvData = [];\r\n _.forEach(this.model.searchResults, (x: StorageTransportationBalanceSummary) => {\r\n csvData.push({\r\n nomGroupOwner: x['nomGroupOwnerEnterpriseShortName'],\r\n nomGroup: x.nomGroupId,\r\n location: x['locationName'],\r\n gasDay: x.gasDay.toDisplayFormatAll(),\r\n openingBalance: x.openingBalance\r\n });\r\n });\r\n\r\n let customer = 'All';\r\n let location = 'All';\r\n if (this.model.lastSearchParams.customerId) {\r\n customer = _.find(this.model.customers, (c: Enterprise) => c.cid === this.model.lastSearchParams.customerId).displayName;\r\n }\r\n if (this.model.lastSearchParams.locationId) {\r\n location = _.find(this.model.lastSearchLocations, (l: CommonDataLocation) => l.id === this.model.lastSearchParams.locationId).name;\r\n }\r\n const filename =\r\n `STS_Balance_Summary_${customer}_${location}_${this.model.lastSearchParams.startBillingMonth.toDisplayFormat()}_${this.model.lastSearchParams.endBillingMonth.toDisplayFormat()}.csv`;\r\n const headers = ['Nom Group Owner', 'Nom Group', 'Location', 'Gas Day', 'Opening Balance'];\r\n const columns = ['nomGroupOwner', 'nomGroup', 'location', 'gasDay', 'openingBalance'];\r\n\r\n this.fileService.downloadCsvFile(filename, csvData, headers, columns);\r\n\r\n }\r\n\r\n onStartBillingMonthChanged() {\r\n this.model.searchParams.endBillingMonth = this.model.searchParams.startBillingMonth;\r\n }\r\n\r\n onCustomerSelectionChanged(): void {\r\n this.model.searchParams.locationId = null;\r\n this.queryCustomerLocations().subscribe(() => {});\r\n }\r\n\r\n private queryCustomerLocations(): Observable {\r\n if (!this.model.searchParams.customerId) {\r\n this.model.searchParams.locationId = null;\r\n return of(null);\r\n }\r\n\r\n const locationSearchRequest = new LocationSearchRequest();\r\n locationSearchRequest.hasStorageBalanceLocation = true;\r\n locationSearchRequest.gasDay = this.model.currentGasDay;\r\n locationSearchRequest.operatorCid = this.model.searchParams.customerId;\r\n return this.locationService.queryLocations(locationSearchRequest).pipe(\r\n tap(results =>\r\n {\r\n this.model.locations = results;\r\n if (this.model.locations?.length === 1) {\r\n this.model.searchParams.locationId = this.model.locations[0].id;\r\n }\r\n else {\r\n\r\n }\r\n })\r\n );\r\n }\r\n}\r\n","export class MeasurementRow {\r\n constructor(\r\n public rowNumber: number,\r\n public stationNumber: string,\r\n public stationType: string,\r\n public gasDay: string,\r\n public energy: string,\r\n public heatValue: string\r\n ) { }\r\n}\r\n","import {BaseCsvUploadViewModel} from \"@model/CsvUtility\";\r\nimport {MeasurementRow} from \"@model/view-helpers/measurement-row\";\r\nimport {BaseUploadResponse} from \"@model/base-upload-response\";\r\n\r\nexport class StageMeasurementsUploadViewModel extends BaseCsvUploadViewModel{\r\n uploadResponse: BaseUploadResponse;\r\n public extractedData: Array;\r\n}\r\n","import {MeasurementRow} from \"@model/view-helpers/measurement-row\";\r\n\r\nexport class StageMeasurementUploadParameters {\r\n constructor(public rows: Array) { }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n Browse...\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n \r\n
{{ model.uploadResponse?.linesInFile }}
\r\n \r\n
{{ model.uploadResponse?.linesSaved }}
\r\n
\r\n
\r\n \r\n
{{ model.uploadResponse?.linesError }}
\r\n \r\n
{{ model.uploadResponse?.linesChanged }}
\r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n","import {Component, OnInit} from \"@angular/core\";\r\nimport {CsvUtility} from \"@model/CsvUtility\";\r\nimport {BaseComponent} from \"@model/base-component\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {Router} from \"@angular/router\";\r\nimport {MeasurementRow} from \"@model/view-helpers/measurement-row\";\r\nimport {StageMeasurementsUploadViewModel} from \"app/gcts/flowinggas/stage-measurement/stage-measurements-upload-view-model\";\r\nimport {StageMeasurementUploadParameters} from \"@model/service-models/stage-measurement-upload-parameters\";\r\nimport {MeasurementService} from \"@shared/services/flowing-gas/measurement-service/measurement.service\";\r\n\r\n\r\n@Component({\r\n selector: 'app-stage-measurements',\r\n templateUrl: './stage-measurements.component.html',\r\n styleUrls: ['./stage-measurements.component.css'],\r\n providers: [CsvUtility]\r\n})\r\nexport class StageMeasurementsComponent extends BaseComponent implements OnInit {\r\n\r\n // csvHeaders must be in the same order as MeasurementRow's constructor parameters.\r\n csvHeaders = ['StnNo', 'StnType', 'GasDay', 'Energy', 'Heat Value'];\r\n\r\n model: StageMeasurementsUploadViewModel;\r\n extractedData: MeasurementRow[];\r\n\r\n constructor(protected appService: AppService,\r\n private csvUtility: CsvUtility,\r\n private alertService: AlertService,\r\n private measurementService: MeasurementService,\r\n private router: Router) {\r\n super(appService);\r\n }\r\n\r\n ngOnInit() {\r\n super.setTitle(\"Stage Measurements\");\r\n this.initModel();\r\n }\r\n\r\n\r\n private initModel(): void {\r\n this.model = new StageMeasurementsUploadViewModel();\r\n this.model.extractedData = new Array();\r\n\r\n this.model.uploadResponse = null;\r\n this.model.error = '';\r\n this.model.fileName = '';\r\n\r\n }\r\n\r\n public isValidFile(): boolean {\r\n return this.model.isValidFile();\r\n }\r\n\r\n hoverOver() {\r\n return this.model.error;\r\n }\r\n\r\n public resetClicked(): void {\r\n this.initModel();\r\n this.alertService.clearMessages();\r\n }\r\n\r\n uploadClicked() {\r\n if (this.model.extractedData === null) return;\r\n\r\n this.alertService.clearMessages();\r\n const parameters = new StageMeasurementUploadParameters(this.model.extractedData);\r\n this.route = this.router.routerState.snapshot.url;\r\n\r\n this.measurementService.uploadStagingMeasurements(parameters).subscribe(\r\n response => {\r\n\r\n this.model.uploadResponse = response;\r\n\r\n if(this.model.uploadResponse !== undefined && this.model.uploadResponse.errors.length > 0 && this.route === this.router.routerState.snapshot.url){\r\n this.alertService.addSuccessMessage('Upload successful', this.model.fileName + ' uploaded with ' + this.model.uploadResponse.errors.length + ' errors.');\r\n }else if(this.route === this.router.routerState.snapshot.url) {\r\n this.alertService.addSuccessMessage('Upload successful', this.model.fileName + ' uploaded.');\r\n }\r\n });\r\n }\r\n\r\n updateClick(e) {\r\n this.extractedData = new Array();\r\n\r\n if (e.target.files.length > 0) {\r\n const reader = new FileReader();\r\n\r\n reader.onload = (event: any) => {\r\n this.extractData(e.target.files[0].name, event.target.result);\r\n };\r\n reader.readAsText(e.target.files[0]);\r\n }\r\n }\r\n\r\n\r\n protected extractData(fileName: string, data: string) {\r\n this.resetClicked();\r\n this.model.fileName = fileName;\r\n this.csvUtility.extractData(data, this.model, this.csvHeaders, this.processRows);\r\n }\r\n\r\n\r\n private processRows = (result: Array>, fields: Array) => {\r\n const colIndices = new Array();\r\n this.csvHeaders.forEach((header) => colIndices.push(this.csvUtility.findColumnHeaderColumn(fields, header)));\r\n\r\n let rowIndex = 0;\r\n this.model.extractedData = new Array();\r\n result.forEach((row: Array) => {\r\n this.model.extractedData.push(new MeasurementRow(\r\n ++rowIndex,\r\n row[colIndices[0]],\r\n row[colIndices[1]],\r\n row[colIndices[2]],\r\n row[colIndices[3]],\r\n row[colIndices[4]]\r\n ));\r\n });\r\n };\r\n\r\n}\r\n","export class FlowDirection {\r\n\r\n public static Receipt: FlowDirection = new FlowDirection('R', 'Receipt');\r\n public static Delivery: FlowDirection = new FlowDirection('D', 'Delivery');\r\n public static Bidirectional: FlowDirection = new FlowDirection('B', 'Bidirectional');\r\n\r\n public static AllDirections: FlowDirection[] = [\r\n FlowDirection.Receipt,\r\n FlowDirection.Delivery,\r\n FlowDirection.Bidirectional,\r\n ];\r\n\r\n public static SingleDirections: FlowDirection[] = [\r\n FlowDirection.Receipt,\r\n FlowDirection.Delivery,\r\n ];\r\n public static ReceiptOnly: FlowDirection[] = [\r\n FlowDirection.Receipt,\r\n ];\r\n public static DeliveryOnly: FlowDirection[] = [\r\n FlowDirection.Delivery,\r\n ];\r\n\r\n value: string;\r\n name: string;\r\n\r\n constructor(value: string, name: string) {\r\n this.value = value;\r\n this.name = name;\r\n }\r\n}\r\n","\r\nexport class PdaMethod {\r\n\r\n public static Whole: PdaMethod = new PdaMethod('Whole', 'Whole');\r\n public static Prorata: PdaMethod = new PdaMethod('Prorata', 'Prorata');\r\n\r\n public static Methods: PdaMethod[] = [\r\n PdaMethod.Whole,\r\n PdaMethod.Prorata,\r\n ];\r\n\r\n value: string;\r\n name: string;\r\n\r\n constructor(value: string, name: string) {\r\n this.value = value;\r\n this.name = name;\r\n }\r\n\r\n}\r\n","import {BaseViewModel} from \"@model/base-view-model\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {FlowDirection} from \"@model/flow-direction\";\r\nimport {PdaMethod} from \"@model/pda-method\";\r\nimport {AccountingLocation} from \"@shared/interfaces/location\";\r\nimport {CommonDataLocation} from \"@shared/services/common-data/location/location.service\";\r\nimport {PdaInstruction, PdaInstructionsQueryRequest} from \"@shared/services/flowing-gas/pda-instructions-service/pda-instructions.service\";\r\nimport {NominationEnterprise} from \"@shared/services/nomination/nomination-enterprise/nomination-enterprise.service\";\r\nimport {NominationGroup, } from \"@shared/services/nomination/nomination-nom-group/nomination-nom-group.service\";\r\nimport {PdaInstructionChangeTracker} from \"app/gcts/flowinggas/pda-instructions/pda-instruction-change-tracker\";\r\nimport * as _ from \"lodash\";\r\n\r\n\r\nexport class PdaInstructionsSearchParams {\r\n gasDay: GasDay;\r\n locationId: number;\r\n showRevisions: boolean = false;\r\n\r\n\r\n public asPdaInstructionsQueryRequest() : PdaInstructionsQueryRequest {\r\n return {\r\n gasDay: this.gasDay,\r\n locationId: this.locationId,\r\n showRevisions: this.showRevisions\r\n } as PdaInstructionsQueryRequest;\r\n }\r\n}\r\n\r\n\r\n\r\nexport class PdaInstructionsModel extends BaseViewModel {\r\n minGasDay: GasDay;\r\n currentGasDay: GasDay;\r\n locations: CommonDataLocation[] = [];\r\n pdaMethods: PdaMethod[] = _.orderBy(PdaMethod.Methods, ['value']);\r\n flowIndicators: FlowDirection[] = _.orderBy(FlowDirection.SingleDirections, ['value']);\r\n\r\n searchParams: PdaInstructionsSearchParams = new PdaInstructionsSearchParams();\r\n lastSearchParams: PdaInstructionsSearchParams = null;\r\n\r\n serviceRequesters: NominationEnterprise[] = [];\r\n nomGroups: NominationGroup[] = [];\r\n accountingLocation: AccountingLocation;\r\n\r\n allInstructions: PdaInstruction[];\r\n searchResults: PdaInstruction[] = null;\r\n\r\n editingDisabled: boolean = true;\r\n\r\n isAdding: boolean = false;\r\n isEditing: boolean = false;\r\n isEditingRowValid: boolean = false;\r\n editRowChangeTracker: PdaInstructionChangeTracker = null;\r\n\r\n\r\n public clearSearchResults() : void {\r\n this.serviceRequesters = null;\r\n this.nomGroups = null;\r\n this.searchResults = null;\r\n this.editingDisabled = true;\r\n this.isAdding = false;\r\n this.isEditing = false;\r\n this.isEditingRowValid = false;\r\n }\r\n\r\n public hasSearchResults() : boolean {\r\n return (this.searchResults !== null);\r\n }\r\n}\r\n","import {PdaInstruction} from \"@shared/services/flowing-gas/pda-instructions-service/pda-instructions.service\";\r\n\r\n\r\nexport class PdaInstructionChangeTracker {\r\n originalValues: PdaInstruction;\r\n\r\n public constructor(data: PdaInstruction) {\r\n this.originalValues = data;\r\n }\r\n\r\n // returns:\r\n // -1 if date1 < date 2\r\n // 0 if date1 = date2\r\n // +1 if date1 > date 2\r\n private static compareDates(date1: Date, date2: Date): number {\r\n return (date1date2) ? +1 : 0;\r\n }\r\n\r\n expiryGasDayHasChanged(currentRow: PdaInstruction) : boolean {\r\n return 0 !== PdaInstructionChangeTracker.compareDates(this.originalValues.expiryGasDay,currentRow.expiryGasDay);\r\n }\r\n\r\n newEffectiveGasDayIsLater(currentRow: PdaInstruction) : boolean {\r\n return 1 === PdaInstructionChangeTracker.compareDates(currentRow.effectiveGasDay, this.originalValues.effectiveGasDay);\r\n }\r\n\r\n pdaMethodHasChanged(currentRow: PdaInstruction) : boolean {\r\n return this.originalValues.pdaMethod !== currentRow.pdaMethod;\r\n }\r\n\r\n hasChanged(currentRow: PdaInstruction) : boolean {\r\n // this is only relevant for edits to existing record\r\n // so only check the fields that can be edited.\r\n return this.pdaMethodHasChanged(currentRow)\r\n || this.expiryGasDayHasChanged(currentRow);\r\n }\r\n}\r\n","import {PdaInstruction} from \"@shared/services/flowing-gas/pda-instructions-service/pda-instructions.service\";\r\nimport {NominationEnterprise} from \"@shared/services/nomination/nomination-enterprise/nomination-enterprise.service\";\r\nimport {NominationGroup} from \"@shared/services/nomination/nomination-nom-group/nomination-nom-group.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\n\r\nexport class PdaInstructionTableRow {\r\n serviceRequester: string;\r\n srContract: string;\r\n upDownContract: string;\r\n counterParty: string;\r\n transactionalFlowIndicator: string;\r\n pdaMethod: string;\r\n effectiveGasDay: string;\r\n expiryGasDay: string;\r\n\r\n public static create(pdaInstruction: PdaInstruction, serviceRequesters: NominationEnterprise[], nomGroups: NominationGroup[]) : PdaInstructionTableRow {\r\n const row = new PdaInstructionTableRow();\r\n row.serviceRequester = serviceRequesters.find((x) => x.id === pdaInstruction.enterpriseId)?.displayValue;\r\n row.srContract = nomGroups.find((x) => x.id === pdaInstruction.nomGroupId)?.mnemonic;\r\n row.upDownContract = pdaInstruction.upDownContract;\r\n row.counterParty = pdaInstruction.counterParty;\r\n row.transactionalFlowIndicator = pdaInstruction.transactionalFlowIndicator;\r\n row.pdaMethod = pdaInstruction.pdaMethod;\r\n row.effectiveGasDay = GasDay.from(pdaInstruction.effectiveGasDay).toDisplayFormat(false);\r\n row.expiryGasDay = GasDay.from(pdaInstruction.expiryGasDay).toDisplayFormat(false);\r\n return row;\r\n }\r\n}\r\n\r\n\r\nexport class ReplacePdaInstructionsModel {\r\n instructionsToBeReplaced: PdaInstructionTableRow[];\r\n locationIsThreaded: boolean;\r\n}\r\n","\r\n
\r\n
You are about to replace the following future-dated instruction(s).
\r\n
Are you sure you want to continue?
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {{getServiceRequester()}}\r\n
\r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n Receipt/Delivery\r\n
\r\n\r\n \r\n\r\n
\r\n
\r\n\r\n","import {Component, ViewChild} from \"@angular/core\";\r\nimport {ModalComponent} from \"@shared/components/modal/modal.component\";\r\nimport {PdaInstructionsComponent} from \"app/gcts/flowinggas/pda-instructions/pda-instructions.component\";\r\nimport {PdaInstructionTableRow, ReplacePdaInstructionsModel} from \"app/gcts/flowinggas/pda-instructions/replace-pda-instructions/replace-pda-instructions-model\";\r\n\r\n\r\n@Component({\r\n selector: 'app-replace-pda-instructions-modal',\r\n templateUrl: './replace-pda-instructions-component.html',\r\n styles: [],\r\n})\r\nexport class ReplacePdaInstructionsComponent {\r\n\r\n @ViewChild(ModalComponent) confirmationModal: ModalComponent;\r\n\r\n callingComponent: PdaInstructionsComponent;\r\n callingComponentSaveData: any;\r\n model: ReplacePdaInstructionsModel = new ReplacePdaInstructionsModel();\r\n\r\n public getServiceRequester() : string {\r\n if (this.model.instructionsToBeReplaced && this.model.instructionsToBeReplaced.length > 0) {\r\n return this.model.instructionsToBeReplaced[0].serviceRequester;\r\n }\r\n return \"\";\r\n }\r\n\r\n public show(callingComponent: PdaInstructionsComponent, dataToSave: any, duplicateRecords: PdaInstructionTableRow[]) : void {\r\n this.callingComponent = callingComponent;\r\n this.callingComponentSaveData = dataToSave;\r\n this.model.instructionsToBeReplaced = duplicateRecords;\r\n this.model.locationIsThreaded = callingComponent.isThreadedLocation();\r\n this.confirmationModal.show();\r\n }\r\n\r\n public yesClicked() : void {\r\n if (this.callingComponent) {\r\n this.callingComponent.performSave(this.callingComponentSaveData);\r\n }\r\n }\r\n}\r\n","import {BaseViewModel} from \"@model/base-view-model\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {CommonDataLocation} from \"@shared/services/common-data/location/location.service\";\r\nimport {PdaInstructionEventHistory, PdaInstructionEventHistoryQueryRequest} from \"@shared/services/flowing-gas/pda-instructions-service/pda-instructions.service\";\r\nimport {NominationLocation} from \"@shared/services/nomination/nomination-location/nomination-location.service\";\r\nimport {AccountingLocation} from \"@shared/interfaces/location\";\r\n\r\nexport class PdaInstructionEventHistorySearchParams {\r\n fromGasDay: GasDay;\r\n toGasDay: GasDay;\r\n locationId: number;\r\n\r\n public asPdaInstructionEventHistoryQueryRequest() : PdaInstructionEventHistoryQueryRequest {\r\n return {\r\n fromGasDay: this.fromGasDay,\r\n toGasDay: this.toGasDay,\r\n locationId: this.locationId\r\n } as PdaInstructionEventHistoryQueryRequest;\r\n }\r\n}\r\n\r\nexport class PdaInstructionEventHistoryModel extends BaseViewModel {\r\n minGasDay: GasDay;\r\n currentGasDay: GasDay;\r\n locations: AccountingLocation[] = [];\r\n\r\n searchParams: PdaInstructionEventHistorySearchParams = new PdaInstructionEventHistorySearchParams();\r\n lastSearchParams: PdaInstructionEventHistorySearchParams = null;\r\n\r\n searchResults: PdaInstructionEventHistory[] = null;\r\n\r\n public clearSearchResults() : void {\r\n this.searchResults = null;\r\n }\r\n\r\n public hasSearchResults() : boolean {\r\n return (this.searchResults !== null);\r\n }\r\n}\r\n","\r\nimport {map} from 'rxjs/operators';\r\nimport * as _ from 'lodash';\r\nimport { Injectable } from '@angular/core';\r\nimport {NominationResourceService} from \"@shared/resources/nominations-resource.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {INominationLocationDto, NominationLocation} from \"../nomination-location/nomination-location.service\";\r\nimport {Observable} from \"rxjs\";\r\nimport {SessionService} from \"../../webapp/session/session.service\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {DateTime} from \"@model/date-time\";\r\n\r\nexport interface IStorageLimitDto {\r\n id: number;\r\n nominationGroupId: number;\r\n limit: number;\r\n fromGasDay: string;\r\n toGasDay: string;\r\n locations: INominationLocationDto[];\r\n locationIds: number[];\r\n injectionOverrun: boolean;\r\n endDateIsEditable: true;\r\n}\r\n\r\nexport class StorageLimit {\r\n public static Null = new StorageLimit();\r\n\r\n id: number;\r\n nominationGroupId: number;\r\n limit: number;\r\n fromGasDay: Date; // TODO - JOE - Shouldn't this be a GasDay?\r\n toGasDay: Date; // TODO - JOE - Shouldn't this be a GasDay?\r\n locations: NominationLocation[] = new Array();\r\n locationIds: number[]; // TODO - JOE - Why do we need IDs, if we have a list of locations?\r\n injectionOverrun: boolean;\r\n endDateIsEditable: true;\r\n\r\n\r\n public static create(dto: IStorageLimitDto): StorageLimit {\r\n if (_.isNil(dto)) {\r\n return StorageLimit.Null;\r\n }\r\n\r\n const storageLimit = new StorageLimit();\r\n storageLimit.id = dto.id;\r\n storageLimit.nominationGroupId = dto.nominationGroupId;\r\n storageLimit.limit = dto.limit;\r\n storageLimit.fromGasDay = !_.isNil(dto.fromGasDay) ? DateTime.parse(dto.fromGasDay).toDate() : null;\r\n storageLimit.toGasDay = !_.isNil(dto.toGasDay) ? DateTime.parse(dto.toGasDay).toDate() : null;\r\n _.map(dto.locations, x => storageLimit.locations.push(NominationLocation.create(x)));\r\n storageLimit.locationIds = dto.locationIds;\r\n storageLimit.injectionOverrun = dto.injectionOverrun;\r\n storageLimit.endDateIsEditable = dto.endDateIsEditable;\r\n\r\n return storageLimit;\r\n }\r\n}\r\n\r\n\r\n@Injectable()\r\nexport class AccountInjectionLimitService {\r\n\r\n constructor(\r\n private nominationResource: NominationResourceService,\r\n private sessionService: SessionService\r\n ) { }\r\n\r\n createStorageLimit(data: StorageLimit): Observable {\r\n const body = {\r\n id: data.id,\r\n nominationGroupId: data.nominationGroupId,\r\n limit: data.limit,\r\n fromGasDay: GasDay.from(data.fromGasDay).toString(),\r\n toGasDay: GasDay.from(data.toGasDay).toString(),\r\n injectionOverrun: !data.injectionOverrun ? 'false' : data.injectionOverrun.toString()\r\n };\r\n\r\n // data is really a row from the dxDataGrid. The method calling this, should not be passing\r\n // the data row down but an actual object.\r\n if (!_.isNil(data.locations)) {\r\n body['locationIds'] = _.map(data.locations, loc => loc.id);\r\n } else {\r\n body['locationIds'] = _.map(data.locationIds, loc => loc['id']);\r\n }\r\n\r\n return this.nominationResource.post('/accountInjectionLimit', body, true).pipe(map(res => {\r\n return this.buildStorageLimit(res);\r\n }));\r\n }\r\n\r\n updateStorageLimit(data: StorageLimit): Observable {\r\n const body = {\r\n id: data.id,\r\n nominationGroupId: data.id,\r\n limit: data.limit,\r\n pipeline: this.sessionService.getPipeline().code,\r\n fromGasDay: GasDay.from(data.fromGasDay).toString(),\r\n toGasDay: GasDay.from(data.toGasDay).toString(),\r\n injectionOverrun: !data.injectionOverrun ? 'false' : data.injectionOverrun.toString(),\r\n locationIds: _.map(data.locations, loc => loc.id)\r\n };\r\n return this.nominationResource.put('/accountInjectionLimit', body, true).pipe(\r\n map(res => {\r\n return this.buildStorageLimit(res);\r\n }\r\n ));\r\n }\r\n\r\n getAccountInjectionLimits(enterpriseId: number, fromGasDay: GasDay, toGasDay: GasDay): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('pipeline', this.sessionService.getPipeline().code);\r\n params.set('fromGasDay', fromGasDay.toString());\r\n params.set('toGasDay', toGasDay.toString());\r\n params.set('enterpriseId', enterpriseId.toString());\r\n\r\n return this.nominationResource.get('/accountInjectionLimit', true, params).pipe(\r\n map(res => {\r\n const returnArr = new Array();\r\n res.forEach(item => {\r\n returnArr.push(this.buildStorageLimit(item));\r\n });\r\n return returnArr;\r\n }));\r\n }\r\n\r\n deleteStorageLimit(id: number): Observable {\r\n return this.nominationResource.deleteWithNoResponseBody('/accountInjectionLimit/' + id, true);\r\n }\r\n\r\n private buildStorageLimit(item: any): StorageLimit {\r\n const storageLimit = new StorageLimit();\r\n\r\n storageLimit.id = item.id;\r\n storageLimit.limit = item.limit;\r\n storageLimit.locations = item.locations;\r\n storageLimit.nominationGroupId = item.nominationGroupId;\r\n storageLimit.toGasDay = GasDay.parse(item.toGasDay).toDate;\r\n storageLimit.fromGasDay = GasDay.parse(item.fromGasDay).toDate;\r\n storageLimit.injectionOverrun = item.injectionOverrun;\r\n\r\n return storageLimit;\r\n }\r\n}\r\n","\r\nimport {map} from 'rxjs/operators';\r\nimport { Injectable } from '@angular/core';\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {INominationLocationDto, NominationLocation} from \"../nomination-location/nomination-location.service\";\r\nimport {Observable} from \"rxjs\";\r\nimport {SessionService} from \"../../webapp/session/session.service\";\r\nimport {NominationResourceService} from \"@shared/resources/nominations-resource.service\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport * as _ from \"lodash\";\r\nimport {DateTime} from \"@model/date-time\";\r\n\r\nexport interface IWithdrawalLimitDto {\r\n id: number;\r\n limit: number;\r\n fromGasDay: string;\r\n toGasDay: string;\r\n receiptLocation: INominationLocationDto;\r\n deliveryLocation: INominationLocationDto;\r\n nominationGroupId: number;\r\n receiptLocationId: number;\r\n deliveryLocationId: number;\r\n}\r\n\r\nexport interface IPath {\r\n isValidPath: boolean;\r\n}\r\n\r\nexport class WithdrawalLimit implements IPath {\r\n id: number;\r\n limit: number;\r\n fromGasDay: Date; // TODO - JOE - Why not GasDay?\r\n toGasDay: Date; // TODO - JOE - Why not GasDay?\r\n receiptLocation: NominationLocation;\r\n deliveryLocation: NominationLocation;\r\n nominationGroupId: number;\r\n receiptLocationId: number;\r\n deliveryLocationId: number;\r\n\r\n public static create(dto: IWithdrawalLimitDto): WithdrawalLimit {\r\n const withdrawalLimit = new WithdrawalLimit();\r\n\r\n withdrawalLimit.id = dto.id;\r\n withdrawalLimit.limit = dto.limit;\r\n withdrawalLimit.fromGasDay = !_.isNil(dto.fromGasDay) ? DateTime.parse(dto.fromGasDay).toDate() : null;\r\n withdrawalLimit.toGasDay = !_.isNil(dto.toGasDay) ? DateTime.parse(dto.toGasDay).toDate() : null;\r\n withdrawalLimit.receiptLocation = !_.isNil(dto.receiptLocation) ? NominationLocation.create(dto.receiptLocation) : null;\r\n withdrawalLimit.deliveryLocation = !_.isNil(dto.deliveryLocation) ? NominationLocation.create(dto.deliveryLocation) : null;\r\n withdrawalLimit.nominationGroupId = dto.nominationGroupId;\r\n withdrawalLimit.receiptLocationId = dto.receiptLocationId;\r\n withdrawalLimit.deliveryLocationId = dto.deliveryLocationId;\r\n\r\n return withdrawalLimit;\r\n }\r\n\r\n public get isValidPath(): boolean {\r\n return this.receiptLocationId !== null && this.deliveryLocationId !== null;\r\n }\r\n}\r\n\r\n\r\n@Injectable()\r\nexport class AccountWithdrawalLimitService {\r\n\r\n constructor(protected sessionService: SessionService,\r\n protected nominationResource: NominationResourceService) { }\r\n\r\n getWithdrawals(enterpriseId, fromGasDay, toGasDay): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n\r\n params.set('pipeline', this.sessionService.getPipeline().code);\r\n params.set('fromGasDay', fromGasDay.toString());\r\n params.set('toGasDay', toGasDay.toString());\r\n params.set('enterpriseId', enterpriseId.toString());\r\n\r\n return this.nominationResource.get('/accountWithdrawalLimit', true, params).pipe(\r\n map(arr => {\r\n const returnArr = new Array();\r\n arr.forEach(item => {\r\n returnArr.push(this.buildWithdrawal(item));\r\n });\r\n return returnArr;\r\n }));\r\n }\r\n\r\n deleteWithdrawal(id): Observable {\r\n return this.nominationResource.deleteWithNoResponseBody('/accountWithdrawalLimit/' + id, true);\r\n }\r\n\r\n createWithdrawal(data: WithdrawalLimit): Observable {\r\n const body = {\r\n id: data.id,\r\n limit: data.limit,\r\n nominationGroupId : data.nominationGroupId,\r\n pipeline: this.sessionService.getPipeline().code,\r\n fromGasDay: GasDay.from(data.fromGasDay).toString(),\r\n toGasDay: GasDay.from(data.toGasDay).toString(),\r\n receiptLocationId: data.receiptLocation.id,\r\n deliveryLocationId: data.deliveryLocation.id\r\n };\r\n return this.nominationResource.post('/accountWithdrawalLimit', body, true).pipe(\r\n map(res => this.buildWithdrawal(res)));\r\n }\r\n\r\n updateWithdrawal(data: WithdrawalLimit): Observable {\r\n const body = {\r\n id: data.id,\r\n limit: data.limit,\r\n nominationGroupId : data.nominationGroupId,\r\n pipeline: this.sessionService.getPipeline().code,\r\n fromGasDay: GasDay.from(data.fromGasDay).toString(),\r\n toGasDay: GasDay.from(data.toGasDay).toString(),\r\n receiptLocationId: data.receiptLocation.id,\r\n deliveryLocationId: data.deliveryLocation.id\r\n };\r\n return this.nominationResource.put('/accountWithdrawalLimit', body, true).pipe(\r\n map(res => this.buildWithdrawal(res)));\r\n }\r\n\r\n private buildWithdrawal(item): WithdrawalLimit {\r\n const withdrawal = new WithdrawalLimit();\r\n\r\n withdrawal.id = item.id;\r\n withdrawal.limit = item.limit;\r\n withdrawal.receiptLocation = new NominationLocation();\r\n withdrawal.receiptLocation.id = item.receiptLocationId;\r\n withdrawal.deliveryLocation = new NominationLocation();\r\n withdrawal.deliveryLocation.id = item.deliveryLocationId;\r\n withdrawal.nominationGroupId = item.nominationGroupId;\r\n withdrawal.toGasDay = GasDay.parse(item.toGasDay).toDate;\r\n withdrawal.fromGasDay = GasDay.parse(item.fromGasDay).toDate;\r\n\r\n return withdrawal;\r\n }\r\n}\r\n","\r\nimport {map} from 'rxjs/operators';\r\nimport * as _ from 'lodash';\r\nimport {Injectable} from '@angular/core';\r\nimport {Observable} from \"rxjs\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {NominationResourceService} from \"@shared/resources/nominations-resource.service\";\r\nimport {\r\n IStorageLimitDto,\r\n StorageLimit\r\n} from \"../account-injection-limit/account-injection-limit.service\";\r\nimport {IPath, IWithdrawalLimitDto, WithdrawalLimit} from \"../withdrawal-service/withdrawal-service.service\";\r\nimport {BusinessRight} from \"@model/business-right\";\r\nimport {IGasDay} from \"@model/gas-day-month.interface\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {BillableServiceOption} from \"@model/billable-service-option\";\r\n\r\nimport {IEnrichmentNomGroup} from \"@shared/services/enrichment/nomgroup-enrichment.service\";\r\nimport {IEnrichmentResource} from \"@shared/services/enrichment/base-enrichment.service\";\r\n\r\nexport interface IAssociatedBillableServiceDto {\r\n billableServiceId: number;\r\n paths: INominationGroupPathDto[];\r\n}\r\n\r\nexport class AssociatedBillableService {\r\n billableServiceId: number;\r\n paths: NominationGroupPath[] = new Array();\r\n\r\n public static create(dto: IAssociatedBillableServiceDto): AssociatedBillableService {\r\n const associatedBillableService = new AssociatedBillableService();\r\n\r\n associatedBillableService.billableServiceId = dto.billableServiceId;\r\n _.map(dto.paths, x => associatedBillableService.paths.push(NominationGroupPath.create(x)));\r\n\r\n return associatedBillableService;\r\n }\r\n}\r\n\r\nexport interface INominationGroupDto {\r\n id: number;\r\n pipelineSystemId: number;\r\n name: string;\r\n mnemonic: string;\r\n businessRight: string;\r\n enterpriseId: number;\r\n billableServiceId?: number;\r\n isZeroTaxRated: boolean;\r\n parentNominationGroupId?: number;\r\n palAgreementType: string;\r\n effectiveGasDay: string;\r\n expiryGasDay: string;\r\n secondaryFuelLocations: ISecondaryFuelLocationDto[];\r\n paths: INominationGroupPathDto[];\r\n associatedBillableServices: IAssociatedBillableServiceDto[];\r\n accountInjectionLimit: IStorageLimitDto;\r\n accountWithdrawalLimits: IWithdrawalLimitDto[];\r\n locations: INominationGroupLocationDto[];\r\n isPrimaryHub: boolean;\r\n isShortNoticeHub: boolean;\r\n isHubBalanced: boolean;\r\n anchorShipperRights?: boolean;\r\n}\r\n\r\nexport class NominationGroup implements IEnrichmentNomGroup {\r\n id: number;\r\n\r\n pipelineSystemId: number;\r\n name: string;\r\n mnemonic: string;\r\n businessRight: string;\r\n enterpriseId: number;\r\n billableServiceId?: number;\r\n isZeroTaxRated: boolean;\r\n parentNominationGroupId?: number;\r\n palAgreementType: string;\r\n effectiveGasDay: GasDay;\r\n expiryGasDay: GasDay;\r\n paths: NominationGroupPath[] = new Array();\r\n secondaryFuelLocations: SecondaryFuelLocation[] = new Array();\r\n associatedBillableServices: AssociatedBillableService[] = new Array();\r\n accountInjectionLimit: StorageLimit = StorageLimit.Null;\r\n accountWithdrawalLimits: WithdrawalLimit[] = new Array();\r\n locations: NominationGroupLocation[] = new Array();\r\n isPrimaryHub: boolean;\r\n isShortNoticeHub: boolean;\r\n isHubBalanced: boolean;\r\n anchorShipperRights?: boolean;\r\n\r\n public static create(dto: INominationGroupDto): NominationGroup {\r\n\r\n const nominationGroup = new NominationGroup();\r\n nominationGroup.initialize(dto);\r\n\r\n return nominationGroup;\r\n }\r\n public get ownerEnterpriseId(): number{\r\n return this.enterpriseId;\r\n }\r\n\r\n public initialize(dto: INominationGroupDto) {\r\n this.id = dto.id;\r\n this.pipelineSystemId = dto.pipelineSystemId;\r\n this.name = dto.name;\r\n this.mnemonic = dto.mnemonic;\r\n this.businessRight = dto.businessRight;\r\n this.enterpriseId = dto.enterpriseId;\r\n this.billableServiceId = dto.billableServiceId;\r\n this.isZeroTaxRated = dto.isZeroTaxRated !== null ? dto.isZeroTaxRated : false;\r\n this.parentNominationGroupId = dto.parentNominationGroupId;\r\n this.palAgreementType = dto.palAgreementType;\r\n this.effectiveGasDay = !_.isNil(dto.effectiveGasDay) ? GasDay.parse(dto.effectiveGasDay) : null;\r\n this.expiryGasDay = !_.isNil(dto.expiryGasDay) ? GasDay.parse(dto.expiryGasDay) : null;\r\n\r\n _.map(dto.secondaryFuelLocations, x => this.secondaryFuelLocations.push(SecondaryFuelLocation.create(x)));\r\n\r\n _.map(dto.paths, x => this.paths.push(NominationGroupPath.create(x)));\r\n _.map(dto.associatedBillableServices, x => this.associatedBillableServices.push(AssociatedBillableService.create(x)));\r\n this.accountInjectionLimit = StorageLimit.create(dto.accountInjectionLimit);\r\n _.map(dto.accountWithdrawalLimits, x => this.accountWithdrawalLimits.push(WithdrawalLimit.create(x)));\r\n _.map(dto.locations, x => this.locations.push(NominationGroupLocation.create(x)));\r\n this.isPrimaryHub = dto.isPrimaryHub;\r\n this.isShortNoticeHub = dto.isShortNoticeHub;\r\n this.isHubBalanced = dto.isHubBalanced;\r\n this.anchorShipperRights = dto.anchorShipperRights;\r\n }\r\n\r\n public get isTransportation(): boolean {\r\n return this.businessRight === BusinessRight.Transportation.name || this.businessRight === BusinessRight.TboTransportation.name;\r\n }\r\n\r\n public isTboTransportationFor(nomGroupId: number): boolean {\r\n return this.businessRight === BusinessRight.TboTransportation.name && this.id === nomGroupId;\r\n }\r\n\r\n public isTransportationFor(targetNomGroupId: number, stsBillableServiceOption: BillableServiceOption): boolean {\r\n if (!this.isTransportation) { return false; }\r\n\r\n if (this.isTboTransportationFor(targetNomGroupId)) { return true; }\r\n\r\n let paths: any;\r\n if (!_.isNil(stsBillableServiceOption) && this.billableServiceId === stsBillableServiceOption.billableServiceId) {\r\n paths = this.accountWithdrawalLimits;\r\n } else {\r\n paths = this.paths;\r\n }\r\n\r\n if (paths == null || paths.length === 0) {\r\n return false;\r\n }\r\n\r\n return _.some(paths, path => path.isValidPath);\r\n }\r\n\r\n public get isTransportationFuel(): boolean {\r\n return this.businessRight === BusinessRight.TransportationFuel.name;\r\n }\r\n\r\n public isTransportationFuelFor(nominationGroups: NominationGroupCollection, billableServiceOptions: BillableServiceOption[]): boolean {\r\n if (!this.isTransportationFuel) { return false; }\r\n\r\n const parentNominationGroup = _.find(nominationGroups, p => p.id === this.parentNominationGroupId);\r\n if (_.isNil(parentNominationGroup)) { return false; }\r\n\r\n // Discard any TransportationFuel records whose parent doesn't support FT I or STS.\r\n // Find the billable service options for this nom group.\r\n const parentBillableServiceOptions = _.filter(billableServiceOptions, y => y.billableServiceId === parentNominationGroup.billableServiceId);\r\n\r\n // Is FT I in the list?\r\n let billableServiceOption = _.find(parentBillableServiceOptions, y => y.billableServiceType === 'FT' && y.hasInjectionOption());\r\n if (billableServiceOption) {\r\n // Need an injection limit for this to be valid.\r\n if (!parentNominationGroup.hasInjectionLimit) {\r\n billableServiceOption = null;\r\n }\r\n }\r\n\r\n if (!billableServiceOption) {\r\n // Is STS in the list?\r\n billableServiceOption = _.find(parentBillableServiceOptions, y => y.billableServiceType === 'STS');\r\n if (billableServiceOption) {\r\n // Need a withdrawal limit for this to be valid.\r\n if (!parentNominationGroup.hasWithdrawalLimit) {\r\n billableServiceOption = null;\r\n }\r\n }\r\n }\r\n return !!billableServiceOption;\r\n }\r\n\r\n public get isTransportationVariance(): boolean {\r\n return this.businessRight === BusinessRight.TransportationVariance.name;\r\n }\r\n\r\n public get isFuelVariance(): boolean {\r\n return this.businessRight === BusinessRight.SystemFuel.name;\r\n }\r\n\r\n public get isConfirmationVariance(): boolean {\r\n return this.businessRight === BusinessRight.ConfirmationVariance.name;\r\n }\r\n\r\n public get isParkAndLoan(): boolean {\r\n return this.businessRight === BusinessRight.ParkAndLoan.name;\r\n }\r\n\r\n public get isMultiTitleTransfer(): boolean {\r\n return this.businessRight === BusinessRight.MultiTitleTransfer.name;\r\n }\r\n\r\n\r\n public get isInventoryTransfer(): boolean {\r\n return this.businessRight === BusinessRight.SystemLinepack.name || this.businessRight === BusinessRight.SystemFuel.name\r\n || this.businessRight === BusinessRight.Purchase.name || this.businessRight === BusinessRight.Sale.name;\r\n }\r\n\r\n public get isTboTransfer(): boolean {\r\n return this.businessRight === BusinessRight.TboTransportation.name ||\r\n this.businessRight === BusinessRight.SboStorage.name ||\r\n this.businessRight === BusinessRight.CustodyTransfer.name ||\r\n this.businessRight === BusinessRight.LdcVariance.name ||\r\n this.businessRight === BusinessRight.PipelineVariance.name;\r\n }\r\n\r\n public get isTboFuel(): boolean {\r\n return this.businessRight === BusinessRight.TboFuel.name;\r\n }\r\n\r\n public get isCustodyTransfer(): boolean {\r\n return this.businessRight === BusinessRight.CustodyTransfer.name;\r\n }\r\n\r\n public get isSystemLinepack(): boolean {\r\n return this.businessRight === BusinessRight.SystemLinepack.name;\r\n }\r\n\r\n public get hasInjectionLimit(): boolean {\r\n // TODO - JOE - Perhaps we can introduce 'Null object pattern' in like we do here, to reduce the # of times we need to check for null.\r\n // return this.accountInjectionLimit && this.accountInjectionLimit.locations && this.accountInjectionLimit.locations.length > 0;\r\n return this.accountInjectionLimit.locations.length > 0;\r\n }\r\n\r\n public get hasWithdrawalLimit(): boolean {\r\n return this.accountWithdrawalLimits && this.accountWithdrawalLimits.length > 0;\r\n }\r\n\r\n public get hasStsWithdrawalLimitPaths(): boolean {\r\n if (!this.accountWithdrawalLimits) { return false; }\r\n\r\n return _.some(this.accountWithdrawalLimits, path => path.isValidPath);\r\n }\r\n\r\n public get billableServiceIds(): number[] {\r\n let result: number[] = [];\r\n if (this.billableServiceId) {\r\n result.push(this.billableServiceId);\r\n }\r\n if (this.associatedBillableServices) {\r\n result = _.union(result, _.map(this.associatedBillableServices, x => x.billableServiceId));\r\n }\r\n return result;\r\n }\r\n\r\n public getPrimaryPath(): NominationGroupPath {\r\n return _.find(this.paths, x => x.isPrimaryPath);\r\n }\r\n}\r\n\r\nexport interface INominationGroupHierarchyDto extends INominationGroupDto {\r\n children: Array;\r\n}\r\n\r\nexport class NominationGroupHierarchy extends NominationGroup {\r\n children: Array;\r\n\r\n public static nomGroupInEffectDuringGivenGasDay(nominationGroup: NominationGroup, gasDay: IGasDay) {\r\n const expiryGasDay = nominationGroup.expiryGasDay;\r\n const effectiveGasDay = nominationGroup.effectiveGasDay;\r\n return expiryGasDay.isGreatThanOrEqualTo(gasDay) && effectiveGasDay.isLessThanOrEqualTo(gasDay);\r\n }\r\n}\r\n\r\nexport class NominationGroupHierarchy2 extends NominationGroup {\r\n public children: Array = new Array();\r\n\r\n public static create(dto: INominationGroupHierarchyDto): NominationGroupHierarchy2 {\r\n const nominationGroupHierarchy = new NominationGroupHierarchy2();\r\n\r\n nominationGroupHierarchy.initialize(dto);\r\n _.map(dto.children, child => nominationGroupHierarchy.children.push(NominationGroup.create(child)));\r\n\r\n return nominationGroupHierarchy;\r\n }\r\n\r\n public isEffectiveFor(gasDay: IGasDay) {\r\n return gasDay.isInRangeOf(this.effectiveGasDay, this.expiryGasDay);\r\n }\r\n}\r\n\r\n\r\nexport class NominationGroupCollection extends Array {\r\n\r\n // Replace the prototype of Array with our custom definitions\r\n public static create(items?: Array): NominationGroupCollection {\r\n const nomGroups = Object.create(NominationGroupCollection.prototype);\r\n _.forEach(items, x => nomGroups.push(x));\r\n return nomGroups;\r\n }\r\n\r\n public transportationFor(nomGroupId: number, stsBillableServiceOption: BillableServiceOption): Array {\r\n return _.filter(this, x => x.isTransportationFor(nomGroupId, stsBillableServiceOption));\r\n }\r\n\r\n public get transportationFuel(): Array {\r\n return _.filter(this, x => x.isTransportationFuel);\r\n }\r\n\r\n public transportationFuelFor(nominationGroups: NominationGroupCollection, billableServiceOptions: BillableServiceOption[]) {\r\n return _.filter(this, x => x.isTransportationFuelFor(nominationGroups, billableServiceOptions));\r\n }\r\n\r\n public get transportationVariance(): Array {\r\n return _.filter(this, x => x.isTransportationVariance);\r\n }\r\n\r\n public get fuelVariance(): Array {\r\n return _.filter(this, x => x.isFuelVariance);\r\n }\r\n\r\n public get confirmationVariance(): Array {\r\n return _.filter(this, x => x.isConfirmationVariance);\r\n }\r\n\r\n public get parkAndLoan(): Array {\r\n return _.filter(this, x => x.isParkAndLoan);\r\n }\r\n\r\n public get multiTitleTransfer(): Array {\r\n return _.filter(this, x => x.isMultiTitleTransfer);\r\n }\r\n\r\n public get loan(): Array {\r\n return _.filter(this, x => x.isParkAndLoan && x.palAgreementType === 'Loan');\r\n }\r\n\r\n public get park(): Array {\r\n return _.filter(this, x => x.isParkAndLoan && x.palAgreementType === 'Park');\r\n }\r\n\r\n public get inventoryTransfer(): Array {\r\n return _.filter(this, x => x.isInventoryTransfer);\r\n }\r\n\r\n public get tboTransfer(): Array {\r\n return _.filter(this, x => x.isTboTransfer);\r\n }\r\n\r\n public get tboFuel(): Array {\r\n return _.filter(this, x => x.isTboFuel);\r\n }\r\n\r\n public get custodyTransfer(): Array {\r\n return _.filter(this, x => x.isCustodyTransfer);\r\n }\r\n\r\n public get systemLinepack(): Array {\r\n return _.filter(this, x => x.isSystemLinepack);\r\n }\r\n\r\n public get billableServiceIds(): number[] {\r\n // TODO - NomRequestRefactoring - This method was moved from the component to this domain class as an initials step. Wrap tests and then refactor accordingly.\r\n\r\n let distinctBillableServiceIds: number[] = [];\r\n\r\n _.forEach(this, nomGroup => {\r\n distinctBillableServiceIds = _.union(distinctBillableServiceIds, nomGroup.billableServiceIds);\r\n });\r\n\r\n return distinctBillableServiceIds;\r\n }\r\n\r\n /**\r\n * If you do not specify an order by function, then it will order by name by default.\r\n *\r\n * USAGE: collection.orderBy((x: NominationGroup): number => x.id);\r\n *\r\n * @param {IOrderByFunction} orderByFunction\r\n * @returns {NominationGroupCollection}\r\n */\r\n public orderBy(orderByFunction?: (nomGroup: NominationGroup) => TReturnType): NominationGroupCollection {\r\n const orderBy = orderByFunction ? orderByFunction : (nominationGroup: NominationGroup) => nominationGroup.mnemonic;\r\n const orderedNominationGroups = _.orderBy(this, orderBy);\r\n return NominationGroupCollection.create(orderedNominationGroups);\r\n }\r\n\r\n public findById(nomGroupId: number): NominationGroup {\r\n return _.find(this, x => x.id === nomGroupId);\r\n }\r\n}\r\n\r\nexport class NominationGroupHierarchyCollection extends Array {\r\n\r\n // Replace the prototype of Array with our custom definitions\r\n public static create(items?: Array): NominationGroupHierarchyCollection {\r\n const nominationGroupHierarchies = Object.create(NominationGroupHierarchyCollection.prototype);\r\n _.forEach(items, x => nominationGroupHierarchies.push(x));\r\n return nominationGroupHierarchies;\r\n }\r\n\r\n public get isSingle(): boolean {\r\n return this.length === 1;\r\n }\r\n\r\n public contains(func: any): boolean {\r\n return _.some(this, func);\r\n }\r\n\r\n public first(): NominationGroupHierarchy2 {\r\n return _.head(this);\r\n }\r\n\r\n public orderBy(): NominationGroupHierarchyCollection {\r\n const orderedNomGroups = _.sortBy(this, [\r\n ng => ng.businessRight === BusinessRight.MultiTitleTransfer.name ? 0 : 1,\r\n ng => ng.mnemonic]);\r\n\r\n return NominationGroupHierarchyCollection.create(orderedNomGroups);\r\n }\r\n\r\n}\r\n\r\nexport interface ISecondaryLocationDto {\r\n nominationType: string;\r\n effectiveGasDay: string;\r\n expiryGasDay: string;\r\n name: string;\r\n id: number;\r\n}\r\n\r\nexport interface ISecondaryFuelLocationDto {\r\n effectiveGasDay: string;\r\n expiryGasDay: string;\r\n name: string;\r\n nominationGroupId: number;\r\n id: number;\r\n}\r\n\r\nexport class SecondaryFuelLocation {\r\n id: number;\r\n nominationGroupId: number;\r\n name: string;\r\n effectiveGasDay: GasDay;\r\n expiryGasDay: GasDay;\r\n\r\n public static create(dto: ISecondaryFuelLocationDto): SecondaryFuelLocation {\r\n const secondaryLocation = new SecondaryFuelLocation();\r\n\r\n secondaryLocation.id = dto.id;\r\n secondaryLocation.nominationGroupId = dto.nominationGroupId;\r\n secondaryLocation.name = dto.name;\r\n secondaryLocation.effectiveGasDay = !_.isNil(dto.effectiveGasDay) ? GasDay.parse(dto.effectiveGasDay) : null;\r\n secondaryLocation.expiryGasDay = !_.isNil(dto.expiryGasDay) ? GasDay.parse(dto.expiryGasDay) : null;\r\n\r\n return secondaryLocation;\r\n }\r\n}\r\n\r\nexport class SecondaryLocation {\r\n id: number;\r\n name: string;\r\n nominationType: string;\r\n effectiveGasDay: GasDay;\r\n expiryGasDay: GasDay;\r\n\r\n\r\n public static create(dto: ISecondaryLocationDto): SecondaryLocation {\r\n const secondaryLocation = new SecondaryLocation();\r\n\r\n secondaryLocation.id = dto.id;\r\n secondaryLocation.name = dto.name;\r\n secondaryLocation.nominationType = dto.nominationType;\r\n secondaryLocation.effectiveGasDay = !_.isNil(dto.effectiveGasDay) ? GasDay.parse(dto.effectiveGasDay) : null;\r\n secondaryLocation.expiryGasDay = !_.isNil(dto.expiryGasDay) ? GasDay.parse(dto.expiryGasDay) : null;\r\n\r\n return secondaryLocation;\r\n }\r\n\r\n public get isReceipt(): boolean {\r\n return this.isNominationType('Receipt');\r\n }\r\n\r\n public get isDelivery(): boolean {\r\n return this.isNominationType('Delivery');\r\n }\r\n\r\n private isNominationType(nominationType: string): boolean {\r\n return this.nominationType === nominationType;\r\n }\r\n}\r\n\r\nexport interface INominationGroupPathDto {\r\n id: number;\r\n nominationGroupId: number;\r\n receiptLocationId: number;\r\n deliveryLocationId: number;\r\n pathType: string;\r\n quantities: INominationGroupPathQuantityDto[];\r\n secondaryLocations: ISecondaryLocationDto[];\r\n}\r\n\r\nexport class NominationGroupPath implements IPath {\r\n id: number;\r\n nominationGroupId: number;\r\n receiptLocationId: number;\r\n deliveryLocationId: number;\r\n pathType: string;\r\n quantities: NominationGroupPathQuantity[] = new Array();\r\n secondaryLocations: SecondaryLocation[] = new Array();\r\n\r\n public static create(dto: INominationGroupPathDto): NominationGroupPath {\r\n const nominationGroupPath = new NominationGroupPath();\r\n\r\n nominationGroupPath.id = dto.id;\r\n nominationGroupPath.nominationGroupId = dto.nominationGroupId;\r\n nominationGroupPath.receiptLocationId = dto.receiptLocationId;\r\n nominationGroupPath.deliveryLocationId = dto.deliveryLocationId;\r\n nominationGroupPath.pathType = dto.pathType;\r\n _.map(dto.quantities, x => nominationGroupPath.quantities.push(NominationGroupPathQuantity.create(x)));\r\n _.map(dto.secondaryLocations, x => nominationGroupPath.secondaryLocations.push(SecondaryLocation.create(x)));\r\n\r\n return nominationGroupPath;\r\n }\r\n\r\n public getSecondaryReceiptLocations(): SecondaryLocation[] {\r\n return _.filter(this.secondaryLocations, x => x.isReceipt);\r\n }\r\n\r\n public get isPrimaryPath(): boolean {\r\n return this.isPathType('Primary');\r\n }\r\n\r\n public get isAlternatePath(): boolean {\r\n return this.isPathType('Alternate');\r\n }\r\n\r\n private isPathType(pathType: string): boolean {\r\n return this.pathType === pathType;\r\n }\r\n\r\n public get isValidPath(): boolean {\r\n return this.receiptLocationId !== null && this.deliveryLocationId !== null;\r\n }\r\n}\r\n\r\nexport interface INominationGroupLocationDto {\r\n id: number;\r\n nominationGroupId: number;\r\n locationId: number;\r\n}\r\n\r\nexport class NominationGroupLocation {\r\n id: number;\r\n nominationGroupId: number;\r\n locationId: number;\r\n\r\n public static create(dto: INominationGroupLocationDto): NominationGroupLocation {\r\n const nominationGroupLocation = new NominationGroupLocation();\r\n\r\n nominationGroupLocation.id = dto.id;\r\n nominationGroupLocation.nominationGroupId = dto.nominationGroupId;\r\n nominationGroupLocation.locationId = dto.locationId;\r\n\r\n return nominationGroupLocation;\r\n }\r\n}\r\n\r\nexport class NominationGroupPathQuantity {\r\n id: number;\r\n nominationGroupPathId: number;\r\n quantityType: string;\r\n quantity: number;\r\n effectiveGasDay: GasDay;\r\n expiryGasDay: GasDay;\r\n\r\n public static create(dto: INominationGroupPathQuantityDto): NominationGroupPathQuantity {\r\n const nominationGroupPathQuantity = new NominationGroupPathQuantity();\r\n\r\n nominationGroupPathQuantity.id = dto.id;\r\n nominationGroupPathQuantity.nominationGroupPathId = dto.nominationGroupPathId;\r\n nominationGroupPathQuantity.quantityType = dto.quantityType;\r\n nominationGroupPathQuantity.quantity = dto.quantity;\r\n nominationGroupPathQuantity.effectiveGasDay = !_.isNil(dto.effectiveGasDay) ? GasDay.parse(dto.effectiveGasDay) : null;\r\n nominationGroupPathQuantity.expiryGasDay = !_.isNil(dto.expiryGasDay) ? GasDay.parse(dto.expiryGasDay) : null;\r\n\r\n return nominationGroupPathQuantity;\r\n }\r\n\r\n}\r\n\r\nexport class NominationGroupGasAccount {\r\n gasAccountId: number;\r\n gasAccountType: string;\r\n enterpriseId: number;\r\n enterpriseMnemonic: string;\r\n enterpriseName: string;\r\n displayValue: string;\r\n\r\n public static create(dto: any): NominationGroupGasAccount {\r\n const nominationGroupGasAccount = new NominationGroupGasAccount();\r\n nominationGroupGasAccount.enterpriseId = +dto.enterpriseId;\r\n nominationGroupGasAccount.gasAccountId = +dto.gasAccountId;\r\n nominationGroupGasAccount.enterpriseMnemonic = dto.enterpriseMnemonic;\r\n nominationGroupGasAccount.enterpriseName = dto.enterpriseName;\r\n nominationGroupGasAccount.gasAccountType = dto.gasAccountType;\r\n nominationGroupGasAccount.displayValue = dto.gasAccountType + ' - ' + dto.enterpriseName + ' (' + dto.enterpriseMnemonic + ')';\r\n return nominationGroupGasAccount;\r\n }\r\n}\r\n\r\nexport interface INominationGroupPathQuantityDto {\r\n id: number;\r\n nominationGroupPathId: number;\r\n quantityType: string;\r\n quantity: number;\r\n effectiveGasDay: string;\r\n expiryGasDay: string;\r\n}\r\n\r\n\r\n@Injectable()\r\nexport class NominationNomGroupService implements IEnrichmentResource {\r\n\r\n constructor(private nominationResource: NominationResourceService) {\r\n }\r\n\r\n get(id: number): Observable {\r\n return this.nominationResource.get(`/nominationgroups/${id}`);\r\n }\r\n\r\n /* Seb - Looks like this isn't being used. Could be a candidate to remove */\r\n queryAll(gasDay?: GasDay, enterpriseId?: number, businessRight?: BusinessRight): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n if (gasDay != null) {\r\n params.set('gasDay', gasDay.toString());\r\n }\r\n if (enterpriseId != null) {\r\n params.set('enterpriseId', enterpriseId.toString());\r\n }\r\n if (businessRight != null) {\r\n params.set('businessRights', businessRight.name);\r\n }\r\n\r\n return this.nominationResource.get('/nominationgroups', true, params);\r\n }\r\n\r\n queryEnterpriseNamesByServiceOption(serviceOptions: string[], enterpriseId: number): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('ServiceOptions', serviceOptions.join());\r\n params.set('Enterpriseid', enterpriseId.toString());\r\n return this.nominationResource.get('/nominationgroups/names/byServiceOption', true, params);\r\n }\r\n\r\n queryNomGroupNames(gasDay?: IGasDay, enterpriseId?: number, businessRight?: BusinessRight): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n if (gasDay != null) {\r\n params.set('gasDay', gasDay.toString());\r\n }\r\n if (enterpriseId != null) {\r\n params.set('enterpriseId', enterpriseId.toString());\r\n }\r\n if (businessRight != null) {\r\n params.set('businessRights', businessRight.name);\r\n }\r\n\r\n return this.nominationResource.get('/nominationgroups/names', true, params);\r\n }\r\n\r\n queryNomGroupDetails(gasDay: IGasDay, enterpriseId: number, businessRight?: BusinessRight, endGasDay?: IGasDay): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('gasDay', gasDay.toString());\r\n\r\n if (enterpriseId != null) {\r\n params.set('enterpriseId', enterpriseId.toString());\r\n }\r\n if (businessRight != null) {\r\n params.set('businessRights', businessRight.name);\r\n }\r\n if (endGasDay != null) {\r\n params.set('endGasDay', endGasDay.toString());\r\n }\r\n\r\n return this.nominationResource.get('/nominationgroups/details', true, params);\r\n }\r\n\r\n queryNomGroupDetails2(gasDay: IGasDay, enterpriseId: number, businessRight?: BusinessRight, endGasDay?: IGasDay): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('gasDay', gasDay.toString());\r\n\r\n // TODO - These null checks are done in the params.set so they can be removed.\r\n // TODO - Make the params typed - e.g. string, gasday, number, boolean.\r\n if (enterpriseId != null) {\r\n params.set('enterpriseId', enterpriseId.toString());\r\n }\r\n if (businessRight != null) {\r\n params.set('businessRights', businessRight.name);\r\n }\r\n if (endGasDay != null) {\r\n params.set('endGasDay', endGasDay.toString());\r\n }\r\n\r\n return this.nominationResource.get('/nominationgroups/details', true, params).pipe(\r\n map(dto => {\r\n const nominationGroupDto = _.map(dto, x => NominationGroup.create(x));\r\n return NominationGroupCollection.create(nominationGroupDto);\r\n }));\r\n }\r\n\r\n queryNomGroupDetailsByBusinessRights(gasDay: IGasDay, businessRights?: BusinessRight[], enterpriseId?: number, endGasDay?: IGasDay): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n if (gasDay != null) { params.set('gasDay', gasDay.toString()); }\r\n if (businessRights != null) { params.set('businessRights', _.map(businessRights, businessRight => businessRight.name).join()); }\r\n if (enterpriseId != null) { params.set('enterpriseId', enterpriseId.toString()); }\r\n if (endGasDay != null) { params.set('endGasDay', endGasDay.toString()); }\r\n\r\n return this.nominationResource.get('/nominationgroups/details', true, params);\r\n }\r\n\r\n queryNomGroupNamesByBusinessRights(gasDay: IGasDay, businessRights?: BusinessRight[], enterpriseId?: number): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n if (gasDay != null) { params.set('gasDay', gasDay.toString()); }\r\n if (businessRights != null) { params.set('businessRights', _.map(businessRights, businessRight => businessRight.name).join()); }\r\n if (enterpriseId != null) { params.set('enterpriseId', enterpriseId.toString()); }\r\n\r\n return this.nominationResource.get('/nominationgroups/names', true, params);\r\n }\r\n\r\n queryNomGroupNamesByBusinessRights2(gasDay: IGasDay, businessRights?: BusinessRight[], enterpriseId?: number): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n if (gasDay != null) { params.set('gasDay', gasDay.toString()); }\r\n if (businessRights != null) { params.set('businessRights', _.map(businessRights, businessRight => businessRight.name).join()); }\r\n if (enterpriseId != null) { params.set('enterpriseId', enterpriseId.toString()); }\r\n\r\n return this.nominationResource.get('/nominationgroups/names', true, params);\r\n\r\n }\r\n\r\n queryNomGroupNamesHierarchy(gasDay: IGasDay, enterpriseId: number, parentBusinessRight: BusinessRight, childBusinessRight: BusinessRight, includeInactive?: boolean): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('gasDay', gasDay.toString());\r\n params.set('enterpriseId', enterpriseId.toString());\r\n params.set('parentBusinessRight', parentBusinessRight.name);\r\n params.set('childBusinessRight', childBusinessRight.name);\r\n if (includeInactive != null) {\r\n params.set('includeInactive', includeInactive.toString());\r\n }\r\n\r\n return this.nominationResource.get('/nominationgroups/names/hierarchy', true, params);\r\n }\r\n\r\n queryAllHubNominationGroupNames(gasDay: IGasDay, enterpriseId?: number, ignoreExternalNomGroupFilter?: boolean, includeInactive?: boolean): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('gasDay', gasDay.toString());\r\n\r\n if (enterpriseId != null) {\r\n params.set('enterpriseId', enterpriseId.toString());\r\n }\r\n\r\n if (ignoreExternalNomGroupFilter != null) {\r\n params.set('ignoreExternalNomGroupFilter', ignoreExternalNomGroupFilter.toString());\r\n }\r\n\r\n if (includeInactive != null) {\r\n params.set('includeInactive', includeInactive.toString());\r\n }\r\n\r\n return this.nominationResource.get('/nominationgroups/names/hubs', true, params).pipe(\r\n map(nomGroupHierarchiesDto => {\r\n const nomGroupHierarchies = _.map(nomGroupHierarchiesDto, x => NominationGroupHierarchy2.create(x));\r\n return NominationGroupHierarchyCollection.create(nomGroupHierarchies);\r\n }));\r\n }\r\n\r\n getApplicableImbalanceTransferAccounts(gasDay: IGasDay): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n if (gasDay != null) { params.set('gasDay', gasDay.toString()); }\r\n params.set('forImbalanceTransfer', 'true');\r\n\r\n return this.nominationResource.get('/nominationgroups/names', true, params);\r\n }\r\n\r\n getApplicableInjectionAccounts(gasDay: IGasDay, enterpriseId?: number): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('gasDay', gasDay.toString());\r\n if (enterpriseId != null) {\r\n params.set('enterpriseId', enterpriseId.toString());\r\n }\r\n params.set('forInjection', 'true');\r\n\r\n return this.nominationResource.get('/nominationgroups', true, params);\r\n }\r\n\r\n getApplicableSTSAccounts(gasDay: IGasDay, enterpriseId?: number): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('gasDay', gasDay.toString());\r\n if (enterpriseId != null) {\r\n params.set('enterpriseId', enterpriseId.toString());\r\n }\r\n params.set('billableServiceCode', 'STS');\r\n\r\n return this.nominationResource.get('/nominationgroups', true, params);\r\n }\r\n\r\n queryNominationGroupGasAccounts(businessRight: string): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('businessRight', businessRight);\r\n\r\n return this.nominationResource.get('/nominationgroups/gasaccounts', true, params)\r\n .pipe(\r\n map(dtos => dtos.map(dto => NominationGroupGasAccount.create(dto)))\r\n );\r\n }\r\n\r\n enrichmentQueryAll(gasDay: GasDay): Observable {\r\n return this.queryNomGroupNames(gasDay);\r\n }\r\n\r\n enrichmentGet(id: number, gasDay: GasDay): Observable {\r\n return this.get(id);\r\n }\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {Observable} from \"rxjs\";\r\nimport {map} from \"rxjs/operators\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {FlowinggasResourceService} from \"@shared/resources/flowinggas-resource.service\";\r\nimport * as _ from \"lodash\";\r\nimport {DateTime} from \"@model/date-time\";\r\n\r\n\r\ninterface IPdaInstructionSearchResponse {\r\n id: number;\r\n locationId: number;\r\n enterpriseId: number;\r\n nomGroupId: number;\r\n upDownContract: string;\r\n counterParty: string;\r\n transactionalFlowIndicator: string;\r\n pdaMethod: string;\r\n isReplaced: boolean;\r\n isDeleted: boolean;\r\n effectiveGasDay: string;\r\n expiryGasDay: string;\r\n}\r\n\r\n\r\nexport class PdaInstruction {\r\n id: number;\r\n locationId: number;\r\n enterpriseId: number;\r\n nomGroupId: number;\r\n upDownContract: string;\r\n counterParty: string;\r\n transactionalFlowIndicator: string;\r\n pdaMethod: string;\r\n isReplaced: boolean;\r\n isDeleted: boolean;\r\n effectiveGasDay: Date;\r\n expiryGasDay: Date;\r\n status: string;\r\n\r\n public static create(response: IPdaInstructionSearchResponse) : PdaInstruction {\r\n const pdaInstructions = new PdaInstruction();\r\n\r\n pdaInstructions.id = response.id;\r\n pdaInstructions.locationId = response.locationId;\r\n pdaInstructions.enterpriseId = response.enterpriseId;\r\n pdaInstructions.nomGroupId = response.nomGroupId;\r\n pdaInstructions.upDownContract = response.upDownContract;\r\n pdaInstructions.counterParty = response.counterParty;\r\n pdaInstructions.transactionalFlowIndicator = response.transactionalFlowIndicator;\r\n pdaInstructions.pdaMethod = response.pdaMethod;\r\n pdaInstructions.isReplaced = response.isReplaced;\r\n pdaInstructions.isDeleted = response.isDeleted;\r\n pdaInstructions.effectiveGasDay = GasDay.parse(response.effectiveGasDay).toDate;\r\n pdaInstructions.expiryGasDay = GasDay.parse(response.expiryGasDay).toDate;\r\n\r\n return pdaInstructions;\r\n }\r\n\r\n public calculateStatus(currentGasDay: GasDay) : void {\r\n if (this.isDeleted) {\r\n this.status = \"Deleted\";\r\n }\r\n else if (this.isReplaced) {\r\n this.status = \"Replaced\";\r\n }\r\n else if (this.isExpired(currentGasDay)) {\r\n this.status = 'Expired';\r\n }\r\n else {\r\n this.status = '';\r\n }\r\n }\r\n\r\n public isFutureDated(currentGasDay: GasDay): boolean {\r\n try {\r\n const effectiveDay = GasDay.from(this.effectiveGasDay);\r\n return currentGasDay.isLessThan(effectiveDay);\r\n } catch (e) {\r\n return false; // invalid date\r\n }\r\n }\r\n\r\n public isExpired(currentGasDay: GasDay): boolean {\r\n try {\r\n const expiryDay = GasDay.from(this.expiryGasDay);\r\n return currentGasDay.isGreaterThan(expiryDay);\r\n } catch (e) {\r\n return true; // invalid date\r\n }\r\n }\r\n}\r\n\r\n\r\nexport class PdaInstructionsQueryRequest {\r\n gasDay: GasDay;\r\n locationId: number;\r\n showRevisions: boolean = false;\r\n}\r\n\r\n\r\nexport class PdaInstructionDto implements IPdaInstructionSearchResponse {\r\n id: number;\r\n locationId: number;\r\n enterpriseId: number;\r\n nomGroupId: number;\r\n upDownContract: string;\r\n counterParty: string;\r\n transactionalFlowIndicator: string;\r\n pdaMethod: string;\r\n isReplaced: boolean;\r\n isDeleted: boolean;\r\n effectiveGasDay: string;\r\n expiryGasDay: string;\r\n\r\n public static create(instructions: PdaInstruction) : PdaInstructionDto {\r\n const dto = new PdaInstructionDto();\r\n dto.id = instructions.id;\r\n dto.locationId = instructions.locationId;\r\n dto.enterpriseId = instructions.enterpriseId;\r\n dto.nomGroupId = instructions.nomGroupId;\r\n dto.upDownContract = instructions.upDownContract;\r\n dto.counterParty = instructions.counterParty;\r\n dto.transactionalFlowIndicator = instructions.transactionalFlowIndicator;\r\n dto.pdaMethod = instructions.pdaMethod;\r\n dto.isReplaced = instructions.isReplaced;\r\n dto.isDeleted = instructions.isDeleted;\r\n dto.effectiveGasDay = GasDay.from( instructions.effectiveGasDay).toString();\r\n dto.expiryGasDay = GasDay.from( instructions.expiryGasDay).toString();\r\n return dto;\r\n }\r\n}\r\n\r\n// event history classes\r\nexport class PdaInstructionEventHistoryQueryRequest {\r\n fromGasDay: GasDay;\r\n toGasDay: GasDay;\r\n locationId: number;\r\n}\r\n\r\ninterface IPdaInstructionEventHistorySearchResponse {\r\n id: number;\r\n locationId: number;\r\n gasDay: string;\r\n eventPerformed: string;\r\n ediFileId: number;\r\n lastModByUserId: string;\r\n lastModDateTime: string;\r\n}\r\n\r\nexport class PdaInstructionEventHistory {\r\n id: number;\r\n locationId: number;\r\n gasDay: GasDay;\r\n eventPerformed: string;\r\n ediFileId: number;\r\n lastModByUserId: string;\r\n lastModDateTime: DateTime;\r\n\r\n public static create(response: IPdaInstructionEventHistorySearchResponse){\r\n const pdaInstructionsEventHistory = new PdaInstructionEventHistory();\r\n pdaInstructionsEventHistory.id = response.id;\r\n pdaInstructionsEventHistory.locationId = response.locationId;\r\n pdaInstructionsEventHistory.gasDay = GasDay.parse(response.gasDay);\r\n pdaInstructionsEventHistory.eventPerformed = response.eventPerformed;\r\n pdaInstructionsEventHistory.ediFileId = response.ediFileId;\r\n pdaInstructionsEventHistory.lastModByUserId = response.lastModByUserId;\r\n pdaInstructionsEventHistory.lastModDateTime = DateTime.parse(response.lastModDateTime);\r\n\r\n return pdaInstructionsEventHistory;\r\n }\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PdaInstructionsService {\r\n\r\n constructor(private flowingGasResource: FlowinggasResourceService) {\r\n }\r\n\r\n public queryPdaInstructions(queryRequest : PdaInstructionsQueryRequest) : Observable {\r\n\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setGasDay(queryRequest.gasDay);\r\n params.setNumber('locationId', queryRequest.locationId);\r\n params.setBoolean('showRevisions',queryRequest.showRevisions);\r\n\r\n return this.flowingGasResource.get('/pdaInstructions', true, params)\r\n .pipe(map(responses => _.map(responses, (response) => PdaInstruction.create(response))));\r\n }\r\n\r\n public CreatePdaInstruction(pdaInstruction: PdaInstruction) : Observable {\r\n return this.flowingGasResource.post('/pdaInstructions', PdaInstructionDto.create(pdaInstruction))\r\n .pipe(map(response => PdaInstruction.create(response)));\r\n }\r\n\r\n public UpdatePdaInstruction(pdaInstruction: PdaInstruction) : Observable {\r\n return this.flowingGasResource.put(`/pdaInstructions/${pdaInstruction.id}`, PdaInstructionDto.create(pdaInstruction))\r\n .pipe(map(response => PdaInstruction.create(response)));\r\n }\r\n\r\n public DeletePdaInstruction(pdaInstructionToDelete: PdaInstruction) : Observable {\r\n return this.flowingGasResource.deleteTyped(`/pdaInstructions/${pdaInstructionToDelete.id}`)\r\n .pipe(map(response => PdaInstruction.create(response)));\r\n }\r\n\r\n // event history\r\n public queryPdaInstructionEventHistories(queryRequest : PdaInstructionEventHistoryQueryRequest) : Observable {\r\n\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setGasDay(queryRequest.fromGasDay, 'fromGasDay');\r\n params.setGasDay(queryRequest.toGasDay, 'toGasDay');\r\n params.setNumber('locationId', queryRequest.locationId);\r\n\r\n return this.flowingGasResource.get('/pdaInstructionEventHistories', true, params)\r\n .pipe(map(responses =>\r\n _.map(responses, (response) => PdaInstructionEventHistory.create(response))));\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Gas Day: {{model.lastSearchParams?.gasDay | gasDayFormat}}\r\n Location: {{model.lastSearchParams?.locationId | displayName: 'id' : 'name' : model.locations}}\r\n Revisions: {{model.lastSearchParams?.showRevisions | booleanAsYesNo}}\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.gasDay | gasDayFormat}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.locationId | displayName: 'id' : 'name' : model.locations}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.showRevisions | booleanAsYesNo}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.locationId | displayName: 'id' : 'operatorDisplayName' : model.locations}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n Number of instructions found: {{model.searchResults?.length}}\r\n\r\n
\r\n \r\n \r\n Add \r\n |\r\n \r\n \r\n \r\n \r\n  View EDI Event History | \r\n \r\n \r\n Export CSV\r\n
\r\n
\r\n\r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n Customer\r\n Service Requester\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n Account\r\n Svc Req Contract\r\n
\r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n Receipt/Delivery\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n
\r\n
\r\n\r\n \r\n\r\n
\r\n
\r\n","import {Component, ViewChild} from \"@angular/core\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {forkJoin, Observable, of} from \"rxjs\";\r\nimport {concatMap, map, tap} from \"rxjs/operators\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport * as dx from \"devextreme/core/renderer\";\r\nimport {BusinessRight} from \"@model/business-right\";\r\nimport {EditableSearchComponent} from \"@model/editable-search-component\";\r\nimport {FlowDirection} from \"@model/flow-direction\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {IGasDay} from \"@model/gas-day-month.interface\";\r\nimport {NominationPipelineGasDay} from \"@model/nomination-pipeline-gas-day\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {IDateDisplayFormat} from \"@shared/interfaces/date-display-format\";\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {CommonDataLocation, LocationSearchRequest, LocationService} from \"@shared/services/common-data/location/location.service\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {NominationSystemService} from \"@shared/services/nomination/nomination-system/nomination-system.service\";\r\nimport {PdaInstruction, PdaInstructionsService} from \"@shared/services/flowing-gas/pda-instructions-service/pda-instructions.service\";\r\nimport {EnterpriseSearchParams, NominationEnterprise, NominationEnterpriseService} from \"@shared/services/nomination/nomination-enterprise/nomination-enterprise.service\";\r\nimport {NominationEnterpriseEnrichmentService} from \"@shared/services/nomination/nomination-enterprise-enrichment/nomination-enterprise-enrichment.service\";\r\nimport {NominationGroup, NominationNomGroupService} from \"@shared/services/nomination/nomination-nom-group/nomination-nom-group.service\";\r\nimport {ModalOptions} from \"@shared/services/webapp/modal-options/modal-options\";\r\nimport {OkModalOptions} from \"@shared/services/webapp/modal-options/ok-modal-options\";\r\nimport {YesNoModalOptions} from \"@shared/services/webapp/modal-options/yes-no-modal-options\";\r\nimport {SelectedModalOption} from \"@shared/services/webapp/modal-options/selected-modal-option\";\r\nimport {YesNoCancelModalService} from \"@shared/services/webapp/yes-no-cancel-modal/yes-no-cancel-modal.service\";\r\nimport {UserService} from \"@shared/services/webapp/user/user-service\";\r\nimport {PdaInstructionsModel, PdaInstructionsSearchParams} from \"app/gcts/flowinggas/pda-instructions/pda-instructions.model\";\r\nimport {PdaInstructionChangeTracker} from \"app/gcts/flowinggas/pda-instructions/pda-instruction-change-tracker\";\r\nimport {ReplacePdaInstructionsComponent} from \"app/gcts/flowinggas/pda-instructions/replace-pda-instructions/replace-pda-instructions-component\";\r\nimport {PdaInstructionTableRow} from \"app/gcts/flowinggas/pda-instructions/replace-pda-instructions/replace-pda-instructions-model\";\r\nimport * as _ from \"lodash\";\r\nimport {PdaInstructionEventHistorySearchParams} from \"app/gcts/flowinggas/pda-instruction-event-history/pda-instruction-event-history.model\";\r\nimport {EdiConfirmationMethod} from \"@model/edi-confirmation-method\";\r\nimport {AllocationMethod} from \"@model/allocation-method\";\r\nimport {User} from \"@model/user\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\n\r\n@Component({\r\n selector: 'app-pda-instructions',\r\n templateUrl: './pda-instructions.component.html',\r\n styleUrls: ['./pda-instructions.component.css']\r\n})\r\nexport class PdaInstructionsComponent extends EditableSearchComponent {\r\n\r\n\r\n model: PdaInstructionsModel = new PdaInstructionsModel();\r\n dateEditorFormat: IDateDisplayFormat;\r\n\r\n @ViewChild('pdaInstructionsSearchResults') dataGrid: DxDataGridComponent;\r\n @ViewChild(ReplacePdaInstructionsComponent) replacePdaInstructionsModal: ReplacePdaInstructionsComponent;\r\n\r\n\r\n constructor(protected appService: AppService,\r\n protected router: Router,\r\n protected activatedRoute: ActivatedRoute,\r\n public alertService: AlertService,\r\n protected commonDataBillingMonthService: CommonDataBillingMonthService,\r\n protected nominationSystemService: NominationSystemService,\r\n protected nominationEnterpriseService: NominationEnterpriseService,\r\n protected nominationEnterpriseEnrichmentService: NominationEnterpriseEnrichmentService,\r\n protected nominationNomGroupService: NominationNomGroupService,\r\n protected fileService: FileService,\r\n private modalService: YesNoCancelModalService,\r\n private locationService: LocationService,\r\n private pdaInstructionsService: PdaInstructionsService,\r\n private userService: UserService,\r\n private sessionService: SessionService\r\n ) {\r\n super('PDA Instructions', appService, activatedRoute, router, alertService);\r\n this.dateEditorFormat = {\r\n formatter: this.dateEditorFormatter,\r\n parser: this.dateEditorParser\r\n };\r\n }\r\n\r\n public dateEditorFormatter(dateValue: Date): string {\r\n if (dateValue) {\r\n return GasDay.from(dateValue).toDisplayFormat(false);\r\n }\r\n return '';\r\n }\r\n\r\n public dateEditorParser(value: string): Date {\r\n try {\r\n return GasDay.parse(value,true).toDate;\r\n } catch (e) {\r\n return null;\r\n }\r\n }\r\n\r\n public editExpiryAfterEffective(event: any): boolean {\r\n try {\r\n const newValue = GasDay.from(event.value);\r\n const effectiveDate = GasDay.from(event.data.effectiveGasDay);\r\n return effectiveDate.isLessThanOrEqualTo(newValue);\r\n } catch (e) {\r\n return false;\r\n }\r\n }\r\n\r\n public isEditingDisabled(data: PdaInstruction) : boolean {\r\n return this.model.isEditing || this.model.isAdding\r\n || data.isReplaced || data.isDeleted\r\n || data.isExpired(this.model.currentGasDay);\r\n }\r\n\r\n public isEditingExpiryAllowed() : boolean {\r\n const allowedRoles = [`${this.sessionService.getPipeline().code}_${User.NominationAnalystRole}`];\r\n const deniedRoles = [`${this.sessionService.getPipeline().code}_${User.ExternalOperatorTransactorRole}`];\r\n const allowed = this.userService.hasRole(allowedRoles);\r\n const denied = this.userService.hasRole(deniedRoles);\r\n\r\n return allowed && !denied && (this.model.isEditing || this.model.isAdding);\r\n }\r\n\r\n public isDeleteDisabled(data: PdaInstruction) : boolean {\r\n return this.model.isEditing || this.model.isAdding\r\n || data.isReplaced || data.isDeleted\r\n || !data.isFutureDated(this.model.currentGasDay);\r\n }\r\n\r\n private isReceiptLocation() {\r\n return this.model.accountingLocation?.isReceipt ?? false;\r\n }\r\n\r\n private isDeliveryLocation() {\r\n return this.model.accountingLocation?.isDelivery ?? false;\r\n }\r\n\r\n public isThreadedLocation() {\r\n return this.model.accountingLocation?.confirmationMethod === \"Threaded\";\r\n }\r\n\r\n public isPdaAndX12Location() {\r\n return this.model.accountingLocation?.allocationMethod === AllocationMethod.PDA.value\r\n && this.model.accountingLocation?.ediConfirmationMethod === EdiConfirmationMethod.X12.value;\r\n }\r\n\r\n private getPdaInstructionsCurrentlyInEffect(instructions: PdaInstruction[]) : PdaInstruction[] {\r\n return instructions.filter((instruction) => instruction.effectiveGasDay <= this.model.lastSearchParams.gasDay.toDate);\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return ParamValidator.Standard().isValid(params);\r\n }\r\n\r\n // special method to use for sorting look-up columns\r\n // taken from https://js.devexpress.com/Documentation/19_2/ApiReference/UI_Widgets/dxDataGrid/Configuration/columns/lookup/#displayExpr\r\n // NOTE: \"this\" is not a pointer to our class in this case!! it actually is a special dx column type.\r\n public calculateSortValueForLookup (data) : string {\r\n const column = this as any;\r\n const value = column.calculateCellValue(data);\r\n return column.lookup.calculateCellValue(value);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {};\r\n params['gasDay'] = this.model.searchParams.gasDay;\r\n params['locationId'] = this.model.searchParams.locationId;\r\n params['includeRevisions'] = this.model.searchParams.showRevisions;\r\n return params;\r\n }\r\n\r\n private getPipelineGasDay() : Observable {\r\n return this.nominationSystemService.pipelineGasDay()\r\n .pipe(\r\n map(\r\n (pipelineGasDay: NominationPipelineGasDay) => {\r\n if (!pipelineGasDay.hasGasDayCycles()) {\r\n this.alertService.addWarnMessage(\"Warning\", \"There are no Gas Day Cycles for the pipeline.\");\r\n return GasDay.today();\r\n }\r\n return pipelineGasDay.actualGasDay;\r\n })\r\n );\r\n }\r\n\r\n private loadPdaLocations(gasDay: GasDay) : Observable {\r\n return this.locationService.queryLocations(LocationSearchRequest.forPDALocations(gasDay))\r\n .pipe(tap(locations => {this.model.locations = _.orderBy(locations, x => x.name);}));\r\n }\r\n\r\n\r\n protected loadInitialResources(): Observable {\r\n const earliestBillingMonth$ = this.commonDataBillingMonthService.getOldest()\r\n .pipe(tap((response)=>{this.model.minGasDay = response.firstDayOfMonth;}));\r\n\r\n const pipelineGasDay$ = this.getPipelineGasDay()\r\n .pipe(concatMap( dateResponse => {\r\n this.model.currentGasDay = dateResponse;\r\n // now that we have a date, cache enterprise details and the locations pick-list\r\n const enterpriseCache$ = this.nominationEnterpriseEnrichmentService.fetch();\r\n const locationGasDay = this.model.minGasDay > this.model.currentGasDay ? this.model.minGasDay : this.model.currentGasDay;\r\n const locations$ = this.loadPdaLocations(locationGasDay);\r\n\r\n return forkJoin([locations$, enterpriseCache$]);\r\n }));\r\n\r\n return forkJoin([earliestBillingMonth$, pipelineGasDay$])\r\n .pipe(\r\n tap(() => {\r\n this.model.currentGasDay = GasDay.max([this.model.minGasDay, this.model.currentGasDay]);\r\n })\r\n );\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n return of(null);\r\n }\r\n\r\n public onGasDayChanged(): void {\r\n // this will be fired even when a null value is returned from the date picker and don't want to reload with a bad date\r\n if (!this.model.searchParams.gasDay) return;\r\n\r\n this.loadPdaLocations(this.model.searchParams.gasDay).subscribe(() => {});\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams = new PdaInstructionsSearchParams();\r\n this.model.searchParams.gasDay = this.model.currentGasDay;\r\n this.model.clearSearchResults();\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams.gasDay = typedParams.asGasDay('gasDay');\r\n this.model.searchParams.locationId = typedParams.asNullableNumber('locationId');\r\n this.model.searchParams.showRevisions = typedParams.asNullableBoolean('includeRevisions');\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n this.model.clearSearchResults();\r\n\r\n // get the current gasDay in case the clock has rolled over to the next gas day since page was rendered. see bug/230418\r\n const gasDay$ = this.getPipelineGasDay()\r\n .pipe(tap(gasDay => {\r\n this.model.currentGasDay = gasDay;\r\n this.model.editingDisabled = (this.model.lastSearchParams.gasDay <= this.model.currentGasDay)\r\n || !this.userService.hasCapabilities(['PdaInstructions-Write']);\r\n }));\r\n\r\n const serviceRequesters$ = this.getEnterprises(this.model.lastSearchParams.gasDay)\r\n .pipe(tap(serviceRequesters => {\r\n this.model.serviceRequesters = _.orderBy(serviceRequesters, x => x.displayValue);\r\n }));\r\n\r\n const queryNomGroups$ = this.getAllHubNomGroups(this.model.lastSearchParams.gasDay)\r\n .pipe(tap(nomGroups => {\r\n this.model.nomGroups = nomGroups;\r\n }));\r\n\r\n const accountingLocation$ = this.locationService.queryAccountLocation(this.model.lastSearchParams.locationId, this.model.lastSearchParams.gasDay)\r\n .pipe(tap(location => {\r\n this.model.accountingLocation = location;\r\n }));\r\n\r\n return forkJoin([gasDay$, serviceRequesters$, queryNomGroups$, accountingLocation$])\r\n .pipe(\r\n concatMap(\r\n () => {\r\n // do the final query after we have drop-down list results to prevent race condition with sorting\r\n return this.pdaInstructionsService.queryPdaInstructions(this.model.lastSearchParams.asPdaInstructionsQueryRequest())\r\n .pipe(tap(\r\n instructions => {\r\n instructions.forEach(x => x.calculateStatus(this.model.currentGasDay));\r\n // stash all (current and future) instructions for duplicate checking as per story specs\r\n this.model.allInstructions = instructions;\r\n // remove future-dated instructions from display as per story specs\r\n this.model.searchResults = this.getPdaInstructionsCurrentlyInEffect(instructions);\r\n }));\r\n })\r\n );\r\n }\r\n\r\n private getAllHubNomGroups(gasDay: GasDay): Observable {\r\n return this.nominationNomGroupService.queryNomGroupNamesByBusinessRights(gasDay,[BusinessRight.CustodyTransfer]);\r\n }\r\n\r\n private getEnterprises(gasDay: IGasDay): Observable {\r\n return this.nominationEnterpriseService\r\n .queryEnterpriseNames({gasDay: gasDay, includeInactive: true, ignoreExternalNomGroupFilter: true, accountBusinessRights: [BusinessRight.CustodyTransfer]} as EnterpriseSearchParams)\r\n .pipe(\r\n concatMap(\r\n response => {return this.nominationEnterpriseEnrichmentService.enrichArray(response, 'id');}),\r\n );\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n public exportCsvClicked() : void {\r\n const csvData = [];\r\n\r\n this.dataGrid.instance.getVisibleRows().forEach((row) => {\r\n const r = row.data as PdaInstruction;\r\n csvData.push({\r\n serviceRequesterName: this.model.serviceRequesters.find(s=>s.id === r.enterpriseId).shortName,\r\n srContractName: this.model.nomGroups.find(n=>n.id === r.nomGroupId).mnemonic,\r\n upDownContract: r.upDownContract,\r\n counterparty: r.counterParty,\r\n transactionalFlowIndicator: r.transactionalFlowIndicator,\r\n pdaMethod: r.pdaMethod,\r\n effectiveGasDayCsvFormat: GasDay.from(r.effectiveGasDay).toCsvFormat(),\r\n expiryGasDayCsvFormat: GasDay.from(r.expiryGasDay).toCsvFormat(),\r\n status: r.status\r\n });\r\n });\r\n\r\n const location = this.model.locations.find(loc => loc.id === this.model.lastSearchParams.locationId);\r\n const filename = this.getTitle() + ' ' + location.name + ' ' + this.model.lastSearchParams.gasDay.toDisplayFormat() + '.csv';\r\n const headers = ['Customer', 'Account', 'Receipt/Delivery', 'PDA Method', 'Effective Gas Day', 'Expiry Gas Day', 'Status'];\r\n const columns = ['serviceRequesterName', 'srContractName', 'transactionalFlowIndicator', 'pdaMethod', 'effectiveGasDayCsvFormat', 'expiryGasDayCsvFormat', 'status'];\r\n\r\n if (this.isThreadedLocation()) {\r\n headers.splice(0,2,'Service Requester','Svc Req Contract', 'Up Dn Contract', 'Up Dn ID');\r\n columns.splice(2,0,'upDownContract', 'counterparty');\r\n }\r\n\r\n this.fileService.downloadCsvFile(filename, csvData, headers, columns);\r\n }\r\n\r\n private clearEditMode(rowData: any): void {\r\n rowData.isEditing = false;\r\n this.model.isAdding = false;\r\n this.model.isEditing = false;\r\n }\r\n\r\n public onEditorPrepared(event: any) {\r\n if (event.parentType === 'dataRow') {\r\n let dxEditorInstance = null;\r\n switch (event.dataField) {\r\n case \"enterpriseId\":\r\n case \"nomGroupId\":\r\n case \"transactionalFlowIndicator\":\r\n case \"pdaMethod\":\r\n dxEditorInstance = dx(event.editorElement).dxSelectBox('instance');\r\n break;\r\n case \"upDownContract\":\r\n case \"counterParty\":\r\n dxEditorInstance = dx(event.editorElement).dxTextBox('instance');\r\n break;\r\n case \"expiryGasDay\":\r\n dxEditorInstance = dx(event.editorElement).dxDateBox('instance');\r\n dxEditorInstance.option('min',this.model.currentGasDay.nextGasDayDate);\r\n if (GasDay.from(event.value).isEqual(GasDay.endOfTime())) {\r\n dxEditorInstance.on('opened', (ev) => {\r\n if (GasDay.from(ev.component.option('value')).isEqual(GasDay.endOfTime())) {\r\n // reset expiry date to currently selected date only after user opens up the editor\r\n ev.component.option('value', this.model.lastSearchParams.gasDay.toDate);\r\n }\r\n });\r\n }\r\n break;\r\n case \"effectiveGasDay\":\r\n case \"status\":\r\n break;\r\n }\r\n if (dxEditorInstance) {\r\n dxEditorInstance.option('valueChangeEvent', 'keydown keyup');\r\n dxEditorInstance.on('valueChanged', (vce) => {\r\n event.setValue(vce.value);\r\n event.component.getController('validating').validate().then((result: boolean) => {\r\n this.model.isEditingRowValid = result;\r\n if (result && this.model.isEditing) {\r\n this.model.isEditingRowValid = this.model.editRowChangeTracker.hasChanged(event.row.data);\r\n }\r\n });\r\n });\r\n }\r\n }\r\n }\r\n\r\n private setAccountValue(event: any, enterpriseId: number): void {\r\n if (enterpriseId) {\r\n const matchingNomGroups: Array = _.filter(this.model.nomGroups,nomGroup => nomGroup.enterpriseId === enterpriseId );\r\n\r\n // If there is only 1 account, set it in the account drop down\r\n if (matchingNomGroups.length === 1) {\r\n setTimeout(() => this.dataGrid.instance.cellValue(event.rowIndex,'nomGroupId', matchingNomGroups[0].id));\r\n return;\r\n }\r\n\r\n const matchingNomGroupsContainsCurrentlySelectedNomGroupId = _.filter(matchingNomGroups, x => x.id === event.row.data.nomGroupId);\r\n // If an account has already been selected, we don't want to reset it or stomp on it\r\n if (matchingNomGroupsContainsCurrentlySelectedNomGroupId.length === 1) {\r\n return;\r\n }\r\n }\r\n // otherwise, blank it out\r\n setTimeout(() => this.dataGrid.instance.cellValue(event.rowIndex,'nomGroupId', null));\r\n }\r\n\r\n private prepareCellEnterpriseId(event: any, selectBox: any) {\r\n selectBox.on('selectionChanged', x => {\r\n if (!_.isNil(x.selectedItem)) {\r\n this.setAccountValue(event, x.selectedItem.id);\r\n }\r\n });\r\n }\r\n\r\n private prepareCellNomGroupId(event: any, selectBox: any) {\r\n selectBox.option({\r\n dataSource: {\r\n store: _.filter(this.model.nomGroups, nomGroup => nomGroup.enterpriseId === event.row.data.enterpriseId)\r\n }\r\n });\r\n }\r\n\r\n private prepareCellTransactionalFlowIndicator(selectBox: any) {\r\n // if location is only receipt or delivery, adjust column selections\r\n if (this.isReceiptLocation() !== this.isDeliveryLocation()) {\r\n selectBox.option({\r\n dataSource: {\r\n store: this.isReceiptLocation() ? FlowDirection.ReceiptOnly : FlowDirection.DeliveryOnly\r\n }\r\n });\r\n }\r\n }\r\n\r\n private prepareCellPdaMethod(event: any, selectBox: any) {\r\n if (this.model.isEditing) {\r\n selectBox.on('selectionChanged', x => {\r\n if (!_.isNil(x.selectedItem)) {\r\n let newEffectiveDate = this.model.lastSearchParams.gasDay.toDate;\r\n if (x.selectedItem.name === this.model.editRowChangeTracker.originalValues.pdaMethod) {\r\n // hmm changed back to original value, so need to restore the effective date\r\n newEffectiveDate =this.model.editRowChangeTracker.originalValues.effectiveGasDay;\r\n }\r\n setTimeout(() => this.dataGrid.instance.cellValue(event.rowIndex,'effectiveGasDay',newEffectiveDate));\r\n }\r\n });\r\n }\r\n }\r\n\r\n\r\n public onCellPrepared(event: any) : void {\r\n if (event.rowType !== 'data') {\r\n return;\r\n }\r\n const cellElement = dx(event.cellElement);\r\n const selectBoxEditorElement = cellElement.find('.dx-selectbox');\r\n const selectBox = selectBoxEditorElement.data('dxSelectBox');\r\n\r\n if (event.column.dataField === 'enterpriseId' && selectBox) {\r\n this.prepareCellEnterpriseId(event, selectBox);\r\n }\r\n\r\n if (event.column.dataField === 'nomGroupId' && selectBox) {\r\n this.prepareCellNomGroupId(event, selectBox);\r\n }\r\n\r\n if (event.column.dataField === 'transactionalFlowIndicator' && selectBox) {\r\n this.prepareCellTransactionalFlowIndicator(selectBox);\r\n }\r\n\r\n if (event.column.dataField === 'pdaMethod' && selectBox) {\r\n this.prepareCellPdaMethod(event, selectBox);\r\n }\r\n }\r\n\r\n public onEditingStart(event: any): void {\r\n this.dataGrid.sorting.mode = 'none';\r\n }\r\n\r\n public onRowUpdated(event: any): void {\r\n this.dataGrid.sorting.mode = 'multiple';\r\n }\r\n\r\n public onRowInserted(event: any): void {\r\n this.dataGrid.sorting.mode = 'multiple';\r\n }\r\n\r\n public onInitNewRow(event: any) : void {\r\n event.data.isEditing = true;\r\n this.dataGrid.sorting.mode = 'none';\r\n\r\n const pdaInstruction = event.data as PdaInstruction;\r\n pdaInstruction.locationId = this.model.lastSearchParams.locationId;\r\n pdaInstruction.effectiveGasDay = this.model.lastSearchParams.gasDay.toDate;\r\n pdaInstruction.expiryGasDay = GasDay.endOfTime().toDate;\r\n pdaInstruction.isReplaced = false;\r\n pdaInstruction.isDeleted = false;\r\n if (this.isReceiptLocation() !== this.isDeliveryLocation()) {\r\n pdaInstruction.transactionalFlowIndicator = this.isReceiptLocation()\r\n ? FlowDirection.Receipt.name\r\n : FlowDirection.Delivery.name;\r\n }\r\n\r\n // Force immediate validation. This is to smooth out a grid bug where sometimes validation is called immediately\r\n // and sometimes it isn't. Obviously, validation shouldn't happen right away, but the users want to see the\r\n // red borders so it's obvious what has to be filled in.\r\n setTimeout(() => this.delayedCellValidateAndFocus(event.rowIndex,'enterpriseId'));\r\n }\r\n\r\n private delayedCellValidateAndFocus(rowIndex: number, columnName: string) {\r\n const gridInstance = this.dataGrid.instance as any; // needed to avoid typescript error on getController\r\n const value = gridInstance.cellValue(rowIndex,columnName);\r\n gridInstance.cellValue(rowIndex,columnName,value);\r\n gridInstance.getController('validating').validate(true);\r\n\r\n setTimeout(() => this.setCellFocus(rowIndex,columnName));\r\n }\r\n\r\n private setCellFocus(rowIndex: number, columnName: string) {\r\n const cellElement = this.dataGrid.instance.getCellElement(rowIndex,columnName);\r\n setTimeout(() => this.dataGrid.instance.editCell(rowIndex, columnName));\r\n setTimeout(() => this.dataGrid.instance.focus(cellElement));\r\n }\r\n\r\n public addPdaInstruction(): void {\r\n this.alertService.clearMessages();\r\n this.model.isAdding = true;\r\n this.model.isEditing = false;\r\n this.model.isEditingRowValid = false;\r\n this.dataGrid.instance.addRow();\r\n }\r\n\r\n public editClicked(cellInfo: any) : void {\r\n this.alertService.clearMessages();\r\n this.model.editRowChangeTracker = new PdaInstructionChangeTracker(cellInfo.row.data as PdaInstruction);\r\n this.model.isEditingRowValid = false;\r\n this.model.isEditing = true;\r\n cellInfo.row.data.isEditing = true;\r\n cellInfo.component.editRow(cellInfo.rowIndex);\r\n }\r\n\r\n public removeClicked(pdaInstruction: PdaInstruction) : void {\r\n this.alertService.clearMessages();\r\n if (this.isDeleteDisabled(pdaInstruction)) {\r\n if (pdaInstruction.isDeleted || pdaInstruction.isReplaced) {\r\n this.alertService.addWarnMessage('Delete Instruction:', 'Could not delete the selected PDA instruction as it has already been deleted.');\r\n } else {\r\n this.alertService.addWarnMessage('Delete Instruction:', 'Can only delete a PDA instruction if the effective data is in the future.');\r\n }\r\n } else {\r\n const yesNoModalOptions = new YesNoModalOptions('Delete PDA Instruction', 'You are about to delete this PDA Instruction, are you sure you want to continue?');\r\n this.modalService.show(yesNoModalOptions)\r\n .subscribe((selectedModalOption: SelectedModalOption) => {\r\n if (selectedModalOption === SelectedModalOption.Yes) {\r\n this.performDelete(pdaInstruction);\r\n }\r\n });\r\n }\r\n }\r\n\r\n public performDelete(pdaInstruction: PdaInstruction) : void {\r\n this.pdaInstructionsService.DeletePdaInstruction(pdaInstruction)\r\n .subscribe(\r\n () => {\r\n this.performSearch().subscribe(() => {\r\n });\r\n this.alertService.addSuccessMessage(\"Delete Successful:\", \"PDA Instruction deleted.\");\r\n },\r\n () => {\r\n this.alertService.addErrorMessage(\"Delete Failed:\", \"Deleting PDA Instruction failed.\");\r\n });\r\n }\r\n\r\n public cancelClicked(cellInfo: any) : void {\r\n this.alertService.clearMessages();\r\n this.clearEditMode(cellInfo);\r\n this.performSearch().subscribe(() => {\r\n });\r\n }\r\n\r\n\r\n public FindDuplicateRecords(newRow: PdaInstruction) : PdaInstruction[] {\r\n let possibleDups = this.model.allInstructions\r\n .filter(\r\n (existing) => existing.id // only check existing records that have Ids\r\n && !existing.isDeleted // ignore deleted and replaced records\r\n && !existing.isReplaced\r\n && existing.enterpriseId === newRow.enterpriseId\r\n && existing.nomGroupId === newRow.nomGroupId\r\n && existing.transactionalFlowIndicator === newRow.transactionalFlowIndicator\r\n && existing.effectiveGasDay <= newRow.expiryGasDay\r\n );\r\n\r\n if (this.isThreadedLocation()) {\r\n possibleDups = possibleDups.filter(\r\n (existing) => existing.upDownContract === newRow.upDownContract\r\n && existing.counterParty === newRow.counterParty\r\n );\r\n }\r\n\r\n if (newRow.id) {\r\n possibleDups = possibleDups.filter(\r\n (existing) => existing.id !== newRow.id\r\n );\r\n }\r\n\r\n return _.orderBy(possibleDups,(x)=>x.effectiveGasDay);\r\n }\r\n\r\n public saveClicked(cellInfo: any) : void {\r\n this.alertService.clearMessages();\r\n const newRecord = cellInfo.row.data as PdaInstruction;\r\n const duplicateRecords = this.FindDuplicateRecords(newRecord);\r\n if (duplicateRecords.length > 0) {\r\n if (this.getPdaInstructionsCurrentlyInEffect(duplicateRecords).length > 0) {\r\n // have duplicates that are currently in effect, so display a warning, but don't save.\r\n this.displayCurrentDuplicateMessage();\r\n return;\r\n }\r\n // otherwise, need to confirm with user if future-dated instructions should be replaced\r\n const displayRows = _.map(duplicateRecords, (x)=>PdaInstructionTableRow.create(x, this.model.serviceRequesters, this.model.nomGroups));\r\n this.replacePdaInstructionsModal.show(this, cellInfo, displayRows);\r\n return;\r\n }\r\n if (this.model.isEditing\r\n && this.model.editRowChangeTracker.pdaMethodHasChanged(newRecord)\r\n && !this.model.editRowChangeTracker.newEffectiveGasDayIsLater(newRecord)) {\r\n // if new effective date is less than or equal to the current effective date, then need to ask\r\n const effectiveGasDay = this.dateEditorFormatter(this.model.editRowChangeTracker.originalValues.effectiveGasDay);\r\n const message = `PDA method will be replaced for ${effectiveGasDay} onwards. Do you want to continue?`;\r\n const yesNoModalOptions = new YesNoModalOptions('Replace PDA Instruction', message);\r\n this.modalService.show(yesNoModalOptions)\r\n .subscribe((selectedModalOption: SelectedModalOption) => {\r\n if (selectedModalOption === SelectedModalOption.Yes) {\r\n this.performSave(cellInfo);\r\n }\r\n });\r\n return;\r\n }\r\n // otherwise, continue on with save\r\n this.performSave(cellInfo);\r\n }\r\n\r\n private displayCurrentDuplicateMessage() {\r\n const message = 'At least one of the Customer/Service Requester, Account/Svc Req K, Up Dn Contract, Up Dn Id or Receipt/Delivery must be different than the existing records.';\r\n const okModalOptions = new OkModalOptions('Duplicate Entry', message);\r\n this.modalService.show(okModalOptions).subscribe(() => {});\r\n }\r\n\r\n public performSave(cellInfo: any) : void {\r\n this.dataGrid.instance.saveEditData()\r\n .then(() => {\r\n const pdaInstruction = cellInfo.row.data as PdaInstruction;\r\n const saveUpdate$ = this.model.isAdding\r\n ? this.pdaInstructionsService.CreatePdaInstruction(pdaInstruction)\r\n : this.pdaInstructionsService.UpdatePdaInstruction(pdaInstruction);\r\n saveUpdate$\r\n .subscribe(\r\n () => {\r\n const status = this.model.isAdding ? \"Save Success:\" : \"Update Success\";\r\n const message = this.model.isAdding ? \"PDA Instruction added.\" : \"PDA Instruction updated.\";\r\n this.clearEditMode(cellInfo);\r\n this.performSearch().subscribe(() => {\r\n });\r\n this.alertService.addSuccessMessage(status, message);\r\n },\r\n () => {\r\n // continue editing - to let the user either cancel or correct the error\r\n cellInfo.component.editRow(cellInfo.rowIndex);\r\n });\r\n });\r\n }\r\n\r\n getDefaultChangesWillBeLostMessageOptions(): ModalOptions {\r\n return YesNoCancelModalService.getDefaultYesNoModalOptions();\r\n }\r\n\r\n hasUnsavedChanges(): boolean {\r\n if (!this.dataGrid) return false;\r\n return this.dataGrid.instance.hasEditData();\r\n }\r\n\r\n navigationCancelled(): void {\r\n }\r\n\r\n public viewEventHistory() {\r\n this.router.navigate(['/app', this.getPipelineCode(), 'pdainstructioneventhistory'], {\r\n queryParams: this.buildEventHistoryQueryParams()\r\n }).then(() => {});\r\n }\r\n\r\n private buildEventHistoryQueryParams() {\r\n const request = new PdaInstructionEventHistorySearchParams();\r\n request.fromGasDay = this.model.lastSearchParams.gasDay;\r\n request.toGasDay = this.model.lastSearchParams.gasDay;\r\n request.locationId = this.model.lastSearchParams.locationId;\r\n\r\n return request;\r\n }\r\n\r\n public showPdaInstructionsTestHarness() : boolean {\r\n return this.appService.showPdaInstructionsTestHarness()\r\n && !this.userService.user.isExternalUser\r\n && this.isPdaAndX12Location();\r\n }\r\n\r\n public testHarnessClicked() : void {\r\n if (this.showPdaInstructionsTestHarness()) {\r\n this.router.navigate(['/app', this.getPipelineCode(), 'ediTestHarness', 'uploadPdaInstructions']).then();\r\n }\r\n }\r\n}\r\n","import {BaseViewModel} from \"@model/base-view-model\";\r\nimport {IdName} from \"@model/id-name\";\r\nimport {DateTime} from \"@model/date-time\";\r\nimport {ActivityMessage} from \"@shared/services/flowing-gas/flowing-gas-activity-message-service/flowing-gas-activity-message.service\";\r\n\r\nexport class FlowingGasMonitorModel extends BaseViewModel {\r\n searchResults: ActivityMessage[];\r\n\r\n searchParams: FlowingGasMonitorSearchParams = new FlowingGasMonitorSearchParams();\r\n lastSearchParams: FlowingGasMonitorSearchParams;\r\n\r\n activities: IdName[];\r\n messageTypes: IdName[];\r\n}\r\n\r\nexport class FlowingGasMonitorSearchParams {\r\n messageDateTime: DateTime;\r\n activity: string;\r\n messageType: string;\r\n // base-search seems to require a parameter to execute the search function, this is a just a hack flag to get it to run as it is legit for this page to search without params\r\n notUsed: string;\r\n}\r\n","import {BaseViewModel} from \"@model/base-view-model\";\r\nimport {InvoiceRecipient} from \"@shared/services/invoicing/invoicing-invoice-package/invoicing-invoice-package.service\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {IActivityMessageSearchResult} from \"@shared/services/invoicing/invoicing-message/invoicing-message.service\";\r\n\r\nexport enum MessageTypeEnum {\r\n Information = \"Information\",\r\n Warning = \"Warning\",\r\n Error = \"Error\"\r\n}\r\n\r\nexport class Activity {\r\n\r\n constructor(id: string, description: string) {\r\n\r\n this._id = id;\r\n this._description = description;\r\n }\r\n\r\n\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n get description(): string {\r\n return this._description;\r\n }\r\n\r\n public get displayName(): string {\r\n return `${this._description} (${this._id})`;\r\n }\r\n private readonly _id: string;\r\n private readonly _description: string;\r\n\r\n public static create(activity: string): Activity {\r\n return new Activity(activity, activity);\r\n }\r\n}\r\n\r\nexport class InvoiceBusinessMessagesModel extends BaseViewModel {\r\n customers: InvoiceRecipient[];\r\n oldestBillingMonth: BillingMonth;\r\n openBillingMonth: BillingMonth;\r\n preliminaryBillingMonth: BillingMonth;\r\n newestBillingMonth: BillingMonth;\r\n\r\n minGasMonth: GasMonth;\r\n maxGasMonth: GasMonth;\r\n\r\n activities: Activity[];\r\n messageTypes: any[] = [{id: MessageTypeEnum.Information}, {id: MessageTypeEnum.Warning}, {id: MessageTypeEnum.Error}];\r\n\r\n searchResults: IActivityMessageSearchResult[];\r\n\r\n searchParams: InvoiceBusinessMessagesSearchParams = new InvoiceBusinessMessagesSearchParams();\r\n lastSearchParams: InvoiceBusinessMessagesSearchParams;\r\n\r\n}\r\n\r\nexport class InvoiceBusinessMessagesSearchParams {\r\n fromBillingMonth: GasMonth;\r\n toBillingMonth: GasMonth;\r\n customerId?: number;\r\n messageType: string;\r\n messageContains: string;\r\n activity: string;\r\n}\r\n","export class IdName {\r\n\r\n id: string;\r\n name: string;\r\n\r\n constructor(id: string, name: string) {\r\n this.id = id;\r\n this.name = name;\r\n }\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {Observable} from \"rxjs\";\r\nimport {FlowinggasResourceService} from \"@shared/resources/flowinggas-resource.service\";\r\nimport {map} from \"rxjs/operators\";\r\nimport * as _ from \"lodash\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {DateTime} from \"@model/date-time\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FlowingGasActivityMessageService {\r\n constructor(private flowingGasResourceService: FlowinggasResourceService) {\r\n }\r\n\r\n getActivities(): Observable{\r\n return this.flowingGasResourceService.get('/messages/activities', true);\r\n }\r\n\r\n getActivityMessages(messageDateTime: DateTime, activity: string, messageType: string) : Observable{\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('messageDateTime', !_.isNil(messageDateTime) ? messageDateTime.toDisplayFormat(true) : null);\r\n params.set('activity', activity);\r\n params.set('messageType', messageType);\r\n\r\n return this.flowingGasResourceService.get('/genericmessages', true, params)\r\n .pipe(\r\n map(dtos => _.map(dtos, dto => ActivityMessage.create(dto)))\r\n );\r\n }\r\n}\r\n\r\nexport interface IActivityMessageResponse {\r\n gasDay: string;\r\n activity: string;\r\n messageType: string;\r\n message: string;\r\n createDateTime: string;\r\n locationId: number;\r\n}\r\n\r\nexport class ActivityMessage{\r\n gasDay: GasDay;\r\n activity: string;\r\n messageType: string;\r\n message: string;\r\n createDateTime: DateTime;\r\n locationId: number;\r\n locationName: string;// populated by enrichment\r\n\r\n public static create(dto: IActivityMessageResponse): ActivityMessage {\r\n const activityMessage = new ActivityMessage();\r\n\r\n activityMessage.gasDay = GasDay.parse(dto.gasDay);\r\n activityMessage.activity = dto.activity;\r\n activityMessage.messageType = dto.messageType;\r\n activityMessage.message = dto.message;\r\n activityMessage.createDateTime = DateTime.parse(dto.createDateTime);\r\n activityMessage.locationId = dto.locationId;\r\n\r\n return activityMessage;\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Message Date Time: {{model.lastSearchParams?.messageDateTime ? model.lastSearchParams?.messageDateTime : \"All\"}}\r\n Activity: {{model.lastSearchParams?.activity ? model.lastSearchParams?.activity : \"All\"}}\r\n Message Type: {{model.lastSearchParams?.messageType ? model.lastSearchParams?.messageType : \"All\"}}\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.messageDateTime ? model.lastSearchParams?.messageDateTime : \"All\"}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.activity ? model.lastSearchParams?.activity : \"All\"}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.messageType ? model.lastSearchParams?.messageType : \"All\"}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n Number of results found: {{model.searchResults.length}}\r\n\r\n
0\" class=\"pull-right\">\r\n Export CSV\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n
\r\n {{ data.value | dateTimeFormat }}\r\n
\r\n \r\n
\r\n {{ data.value | gasDayFormat }}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n","import * as _ from \"lodash\";\r\nimport {Component, ViewChild} from \"@angular/core\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {forkJoin, Observable, of} from \"rxjs\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {concatMap, map, tap} from \"rxjs/operators\";\r\nimport {LocationService} from \"@shared/services/common-data/location/location.service\";\r\nimport {LocationEnrichmentService} from \"@shared/services/enrichment/location-enrichment.service\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {FlowingGasMonitorModel, FlowingGasMonitorSearchParams} from \"app/gcts/flowinggas/flowing-gas-monitor/flowing-gas-monitor.model\";\r\nimport {MessageTypeEnum} from \"app/gcts/invoicing/invoice-business-messages/invoice-business-messages.model\";\r\nimport {FlowingGasActivityMessageService} from \"@shared/services/flowing-gas/flowing-gas-activity-message-service/flowing-gas-activity-message.service\";\r\nimport {IdName} from \"@model/id-name\";\r\nimport {DateTime} from \"@model/date-time\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\n\r\n@Component({\r\n selector: 'app-flowing-gas-monitor',\r\n templateUrl: './flowing-gas-monitor.component.html',\r\n styleUrls: ['./flowing-gas-monitor.component.css']\r\n})\r\n\r\nexport class FlowingGasMonitorComponent extends BaseSearchComponent {\r\n private static PARAM_MESSAGE_DATE_TIME: string = 'messageDateTime';\r\n private static PARAM_ACTIVITY: string = 'activity';\r\n private static PARAM_MESSAGE_TYPE: string = 'messageType';\r\n private static MESSAGE_TYPES: MessageTypeEnum[] = [MessageTypeEnum.Error, MessageTypeEnum.Warning, MessageTypeEnum.Information];\r\n\r\n public model: FlowingGasMonitorModel = new FlowingGasMonitorModel();\r\n\r\n @ViewChild(DxDataGridComponent)\r\n dataGrid: DxDataGridComponent;\r\n\r\n constructor(\r\n appService: AppService,\r\n activatedRoute: ActivatedRoute,\r\n router: Router,\r\n protected alertService: AlertService,\r\n private commonDataLocationService: LocationService,\r\n private locationEnrichmentService: LocationEnrichmentService,\r\n private fileService: FileService,\r\n private flowingGasActivityMessageService: FlowingGasActivityMessageService\r\n ) {\r\n super('Flowing Gas Monitor', appService, activatedRoute, router, alertService);\r\n\r\n this.locationEnrichmentService.setEnrichmentResource(this.commonDataLocationService);\r\n }\r\n\r\n /**\r\n * Public Methods\r\n */\r\n public exportCsvClicked(): void {\r\n const csvExport = _.map(this.model.searchResults, activityMessage => ({\r\n createDateTime: activityMessage.createDateTime,\r\n gasDay: activityMessage.gasDay.toDisplayFormatAll(),\r\n activity: activityMessage.activity,\r\n messageType: activityMessage.messageType,\r\n locationName: activityMessage.locationName,\r\n message: activityMessage.message\r\n }));\r\n\r\n const fileName = `FlowingGasMonitor_${_.isNil(this.model.lastSearchParams.messageDateTime) ? 'All' : this.model.lastSearchParams.messageDateTime.toString()}.csv`;\r\n const headers = ['Message Date Time', 'Gas Day', 'Activity', 'Message Type', 'Location', 'Message'];\r\n const columns = ['createDateTime', 'gasDay', 'activity', 'messageType', 'locationName', 'message'];\r\n\r\n this.fileService.downloadCsvFile(fileName, csvExport, headers, columns);\r\n }\r\n\r\n public onRowPrepared($event: any) {\r\n $event.rowElement.classList.add('gcts-grid-row');\r\n }\r\n\r\n /**\r\n * Protected Methods\r\n */\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams = new FlowingGasMonitorSearchParams();\r\n this.model.searchResults = null;\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n const messageTypes$ = of(FlowingGasMonitorComponent.MESSAGE_TYPES).pipe(\r\n tap(messageTypes => this.model.messageTypes = messageTypes.map(x => { return new IdName(x, x);}))\r\n );\r\n\r\n const activities$ = this.flowingGasActivityMessageService.getActivities().pipe(\r\n tap(activities => this.model.activities = activities.map(x => { return new IdName(x, x);}))\r\n );\r\n\r\n return forkJoin([messageTypes$, activities$]);\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n\r\n const activityMessages$ = this.flowingGasActivityMessageService.getActivityMessages(this.model.searchParams.messageDateTime, this.model.searchParams.activity, this.model.searchParams.messageType)\r\n .pipe(\r\n concatMap(activityMessages => this.locationEnrichmentService.enrichArray(activityMessages, 'locationId', 'location')),\r\n tap(activityMessages => this.model.searchResults = activityMessages)\r\n );\r\n\r\n return forkJoin([activityMessages$]);\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n if (this.dataGrid) {\r\n this.dataGrid.instance.clearSorting();\r\n this.dataGrid.instance.columnOption('createDateTime', {sortOrder: 'desc', sortIndex: 0});\r\n this.dataGrid.instance.columnOption('gasDay', {sortOrder: 'desc', sortIndex: 1});\r\n this.dataGrid.instance.columnOption('locationId', {sortOrder: 'asc', sortIndex: 2});\r\n }\r\n }\r\n\r\n navigationCancelled(): void {\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n const paramValidator = ParamValidator.Standard();\r\n paramValidator.isDateTime(FlowingGasMonitorComponent.PARAM_MESSAGE_DATE_TIME);\r\n paramValidator.isString(FlowingGasMonitorComponent.PARAM_ACTIVITY, true);\r\n const messageTypeStrings = FlowingGasMonitorComponent.MESSAGE_TYPES.map(x => x.toString());\r\n paramValidator.isOneOf(FlowingGasMonitorComponent.PARAM_MESSAGE_TYPE, messageTypeStrings, true);\r\n\r\n return paramValidator.isValid(params);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n // fix datepicker returning a Date instance instead of a DateTime\r\n if (!_.isNil(this.model.searchParams.messageDateTime)){\r\n this.model.searchParams.messageDateTime = DateTime.parse(this.model.searchParams.messageDateTime.toString());\r\n }\r\n this.model.searchParams.notUsed = \"true\";\r\n return this.model.searchParams;\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n return of({});\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n const messageDateTime = typedParams.asNullableString(FlowingGasMonitorComponent.PARAM_MESSAGE_DATE_TIME);\r\n if (!_.isNil(messageDateTime)){\r\n this.model.searchParams.messageDateTime = DateTime.parse(messageDateTime);\r\n }\r\n this.model.searchParams.activity = typedParams.asNullableString(FlowingGasMonitorComponent.PARAM_ACTIVITY);\r\n this.model.searchParams.messageType = typedParams.asNullableString(FlowingGasMonitorComponent.PARAM_MESSAGE_TYPE);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {NominationResourceService} from \"@shared/resources/nominations-resource.service\";\r\nimport {Observable} from \"rxjs\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {HttpResponse} from \"@angular/common/http\";\r\nimport {ConfirmationResponse} from \"app/gcts/nomination/confirmation-response/confirmation-response.model\";\r\nimport {ConfirmationResponseInfo} from \"app/gcts/nomination/confirmation-details/confirmation-details.model\";\r\nimport {\r\n ConfirmationEventHistoryDto,\r\n ConfirmationEventHistorySearchRequest,\r\n ConfirmationHistoryDto,\r\n ConfirmationHistoryRequest, ConfirmationRequest,\r\n SendCrRequest,\r\n ValidateConfirmationCsvRequest\r\n} from \"./confirmation-models\";\r\nimport {IGasDay} from \"@model/gas-day-month.interface\";\r\nimport {\r\n BaseConfirmationDetailsRequest,\r\n ConfirmationDetailsHistoryRequest\r\n} from \"app/shared/services/nomination/confirmation/confirmation-models\";\r\nimport {GasDay} from \"@model/gas-day\";\r\n\r\n@Injectable()\r\nexport class ConfirmationService {\r\n\r\n constructor(private nominationResource: NominationResourceService) {\r\n }\r\n\r\n sendCrConfirmation(req: SendCrRequest): Observable {\r\n const body = {\r\n locations: req.locationIds,\r\n gasDay: req.gasDay.toString(),\r\n gasCycleCode: req.gasCycleCode\r\n };\r\n return this.nominationResource.postWithNoResponseBody('/confirmation/location/sendCr', body);\r\n }\r\n\r\n queryForSentConfirmationRequestPdf(eventHistoryEventId: number): Observable> {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('confirmationEventHistoryId', eventHistoryEventId.toString());\r\n return this.nominationResource.getData('/confirmation/sentCr', true, params);\r\n }\r\n\r\n public queryForEdiFile(ediFileId: number): Observable> {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('ediFileId', ediFileId.toString());\r\n return this.nominationResource.getData('/ediFile', true, params);\r\n }\r\n\r\n public downloadConfirmationRequestPdf(gasDay: IGasDay, gasCycleCode: string, locationIds: number[]): Observable> {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setGasDay(gasDay, 'gasDay');\r\n params.set('gasCycleCode', gasCycleCode);\r\n params.setListOfNumbers('locationIds', locationIds);\r\n\r\n return this.nominationResource.getData('/confirmation/details/pdf', true, params);\r\n }\r\n\r\n queryConfirmationResponse(gasDay: IGasDay, gasCycleCode: string, locationId: number): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('gasDay', gasDay.toString());\r\n params.set('gasCycleCode', gasCycleCode);\r\n params.setNumber('locationId', locationId);\r\n\r\n return this.nominationResource.get('/confirmation/responseData', true, params);\r\n }\r\n\r\n queryConfirmationResponseInfo(gasDay: IGasDay, gasCycleCode: string, locationId: number): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('gasDay', gasDay.toString());\r\n params.set('gasCycleCode', gasCycleCode);\r\n params.setNumber('locationId', locationId);\r\n\r\n return this.nominationResource.get('/confirmation/responseData/info', true, params);\r\n }\r\n\r\n validateCsv(request: ValidateConfirmationCsvRequest): Observable {\r\n return this.nominationResource.post('/confirmation/confirmationrequest/validate', request.createPostBody());\r\n }\r\n\r\n queryConfirmationRequest(req: BaseConfirmationDetailsRequest): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n if (req.id) params.set('id', req.id);\r\n params.set('gasDay', req.gasDay.toString());\r\n if (req.gasCycleCode != null) { params.set('gasCycleCode', req.gasCycleCode); }\r\n params.set('locationId', req.locationId != null ? req.locationId.toString() : '');\r\n\r\n return this.nominationResource.get('/confirmation/confirmationrequest', true, params);\r\n }\r\n\r\n queryConfirmationRequestHistory(req: ConfirmationDetailsHistoryRequest): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('gasDay', req.gasDay.toString());\r\n params.set('gasCycleCode', req.gasCycleCode);\r\n params.set('locationId', req.locationId != null ? req.locationId.toString() : '');\r\n params.set('beforeConfirmationRequestId', req.beforeConfirmationRequestId.toString());\r\n\r\n return this.nominationResource.get('/confirmation/confirmationrequesthistory', true, params);\r\n }\r\n\r\n submitConfirmationRequest(gasDay: IGasDay, gasCycleCode: string, locationId: number, confirmationRequest: ConfirmationRequest): Observable {\r\n const body = {\r\n locationId: locationId,\r\n gasDay: gasDay.toString(),\r\n gasCycleCode: gasCycleCode,\r\n confirmationRequest: confirmationRequest\r\n };\r\n\r\n return this.nominationResource.postWithNoResponseBody('/confirmation/confirmationrequest', body);\r\n }\r\n\r\n queryConfirmationHistory(confirmationHistoryRequest: ConfirmationHistoryRequest): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('fromGasDay', confirmationHistoryRequest.fromGasDay.toString());\r\n params.set('toGasDay', confirmationHistoryRequest.toGasDay.toString());\r\n params.set('locationId', confirmationHistoryRequest.locationId.toString());\r\n\r\n return this.nominationResource.get('/confirmation/confirmationhistory', true, params);\r\n }\r\n\r\n queryConfirmationEventHistory(confirmationEventHistoryRequest: ConfirmationEventHistorySearchRequest): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('gasDay', confirmationEventHistoryRequest.gasDay.toString());\r\n params.set('gasCycleCode', confirmationEventHistoryRequest.gasCycleCode);\r\n params.set('locationId', confirmationEventHistoryRequest.locationId.toString());\r\n\r\n return this.nominationResource.get('/confirmation/confirmationeventhistory', true, params);\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n From Gas Day: {{model.lastSearchParams?.fromGasDay | gasDayFormat}}\r\n To Gas Day: {{model.lastSearchParams?.toGasDay | gasDayFormat}}\r\n Location: {{model.lastSearchParams?.locationId | displayName: 'id' : 'name' : model.locations}}\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.fromGasDay | gasDayFormat}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.toGasDay | gasDayFormat}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.locationId | displayName: 'id' : 'name' : model.locations}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n Number of records found: {{model.searchResults?.length}}\r\n
\r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n
\r\n {{ cellInfo.value | gasDayFormat }}\r\n
\r\n\r\n \r\n \r\n \r\n
\r\n \r\n
{{event.displayValue}}
\r\n
\r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n","import {Component, ViewChild} from \"@angular/core\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {forkJoin, Observable, of} from \"rxjs\";\r\nimport {concatMap, tap} from \"rxjs/operators\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {LocationService} from \"@shared/services/common-data/location/location.service\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {PdaInstructionsService} from \"@shared/services/flowing-gas/pda-instructions-service/pda-instructions.service\";\r\nimport {YesNoCancelModalService} from \"@shared/services/webapp/yes-no-cancel-modal/yes-no-cancel-modal.service\";\r\nimport * as _ from \"lodash\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {PdaInstructionEventHistoryModel, PdaInstructionEventHistorySearchParams} from \"app/gcts/flowinggas/pda-instruction-event-history/pda-instruction-event-history.model\";\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {AccountingLocation} from \"@shared/interfaces/location\";\r\nimport {DateTime} from \"@model/date-time\";\r\nimport * as FileSaver from \"file-saver\";\r\nimport {ConfirmationService} from \"@shared/services/nomination/confirmation/confirmation.service\";\r\nimport {EdiConfirmationMethod} from \"@model/edi-confirmation-method\";\r\nimport {AllocationMethod} from \"@model/allocation-method\";\r\n\r\n@Component({\r\n selector: 'app-pda-instruction-event-history',\r\n templateUrl: './pda-instruction-event-history.component.html',\r\n styleUrls: ['./pda-instruction-event-history.component.css']\r\n})\r\nexport class PdaInstructionEventHistoryComponent extends BaseSearchComponent {\r\n model: PdaInstructionEventHistoryModel = new PdaInstructionEventHistoryModel();\r\n\r\n @ViewChild('pdaInstructionEventHistorySearchResults') dataGrid: DxDataGridComponent;\r\n\r\n constructor(protected appService: AppService,\r\n protected router: Router,\r\n protected activatedRoute: ActivatedRoute,\r\n public alertService: AlertService,\r\n private modalService: YesNoCancelModalService,\r\n private locationService: LocationService,\r\n private pdaInstructionsService: PdaInstructionsService,\r\n protected commonDataBillingMonthService: CommonDataBillingMonthService,\r\n private confirmationService: ConfirmationService) {\r\n super('EDI Event History', appService, activatedRoute, router, alertService);\r\n }\r\n\r\n private paramValidator(): ParamValidator {\r\n return ParamValidator.Standard();\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return this.paramValidator().isValid(params);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {};\r\n params['fromGasDay'] = this.model.searchParams.fromGasDay;\r\n params['toGasDay'] = this.model.searchParams.toGasDay;\r\n params['locationId'] = this.model.searchParams.locationId;\r\n return params;\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n return this.commonDataBillingMonthService.getOldest()\r\n .pipe(tap((response)=>{this.model.minGasDay = response.firstDayOfMonth;}),\r\n concatMap(() => this.loadLocations()));\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n return of(null);\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams = new PdaInstructionEventHistorySearchParams();\r\n this.model.searchParams.fromGasDay = this.model.currentGasDay;\r\n this.model.clearSearchResults();\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams.fromGasDay = typedParams.asGasDay('fromGasDay');\r\n this.model.searchParams.toGasDay = typedParams.asGasDay('toGasDay');\r\n this.model.searchParams.locationId = typedParams.asNullableNumber('locationId');\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n this.model.clearSearchResults();\r\n\r\n return this.pdaInstructionsService.queryPdaInstructionEventHistories(this.model.lastSearchParams.asPdaInstructionEventHistoryQueryRequest())\r\n .pipe(tap(\r\n eventHistories => {\r\n this.model.searchResults = eventHistories;\r\n }));\r\n }\r\n\r\n public isGasDayRangeValid(): boolean {\r\n if (!this.model.searchParams.fromGasDay || !this.model.searchParams.toGasDay) return true;\r\n\r\n return this.model.searchParams.toGasDay >= this.model.searchParams.fromGasDay;\r\n }\r\n\r\n public onFromGasDayChanged() : void {\r\n if (!this.isGasDayRangeValid()) {\r\n this.model.searchParams.toGasDay = this.model.searchParams.fromGasDay;\r\n }\r\n }\r\n\r\n public onToGasDayChanged() : void {\r\n this.loadLocations().subscribe(() => {});\r\n }\r\n\r\n private loadLocations() : Observable {\r\n const gasDay = _.isNil(this.model.searchParams.toGasDay) ? this.model.minGasDay : this.model.searchParams.toGasDay\r\n return this.locationService.queryAccountLocationsGivenGasDay(gasDay)\r\n .pipe(tap(response => {\r\n this.model.locations = _.orderBy(_.filter(response, x => x.allocationMethod === AllocationMethod.PDA.value\r\n && x.ediConfirmationMethod === EdiConfirmationMethod.X12.value), x => x.name);\r\n if (this.model.locations.length === 1) {\r\n this.model.searchParams.locationId = this.model.locations[0].id;\r\n }\r\n }));\r\n }\r\n\r\n public formatDateTime(obj: Date): string {\r\n return new DateTime(obj).toDisplayFormat();\r\n }\r\n\r\n public showEdiFile(ediFileId: number) : void {\r\n this.confirmationService.queryForEdiFile(ediFileId).subscribe((response) => {\r\n const mediaType = response.headers.get('content-type');\r\n const blob = new Blob([response.body], {type: mediaType});\r\n\r\n // from the content disposition, should be second element with =\"{filename}\" surrounding it\r\n const filename = response.headers.get('content-disposition').split(';')[1].trim().split('=')[1].replace(/\"/g, '');\r\n FileSaver.saveAs(blob, filename);\r\n });\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n if (this.dataGrid) {\r\n this.dataGrid.instance.clearSorting();\r\n this.dataGrid.instance.columnOption('lastModDateTime', {sortOrder: 'desc', sortIndex: 0});\r\n this.dataGrid.instance.columnOption('gasDay', {sortOrder: 'desc', sortIndex: 1});\r\n this.dataGrid.instance.columnOption('lastModByUserId', {sortOrder: 'asc', sortIndex: 2});\r\n this.dataGrid.instance.columnOption('eventPerformed', {sortOrder: 'asc', sortIndex: 3});\r\n }\r\n }\r\n}\r\n","export class PdaInstructionEdiRow {\r\n constructor(\r\n public rowNumber: number,\r\n public headerReferenceId: string,\r\n public requesterDuns: string,\r\n public documentReferenceNum: string,\r\n public recipientQualifier: string,\r\n public recipientDuns: string,\r\n public preparerQualifier: string,\r\n public preparerDuns: string,\r\n public issueDate: string,\r\n public statementDateTime: string,\r\n public contactName: string,\r\n public contactPhone: string,\r\n public detailReferenceId: string,\r\n public beginFlowDate: string,\r\n public beginFlowTime: string,\r\n public endDate: string,\r\n public endTime: string,\r\n public flowDirection: string,\r\n public transactionTypeCode: string,\r\n public locationDrn: string,\r\n public locationDrnQualifier: string,\r\n public trackingNumber: string,\r\n public allocationMethod: string,\r\n public downstreamContractNumber: string,\r\n public downstreamPartyQualifier: string,\r\n public downstreamPartyId: string,\r\n public upstreamContractNumber: string,\r\n public upstreamPartyQualifier: string,\r\n public upstreamPartyId: string,\r\n public serviceRequesterContract: string,\r\n public serviceRequesterQualifier: string,\r\n public serviceRequesterId: string)\r\n { }\r\n}\r\n\r\n\r\nexport class UploadPdaInstructionsParameters {\r\n constructor(\r\n public fileRows: Array\r\n ) { }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {Observable} from \"rxjs\";\r\nimport {ConfirmationRequestQuickResponseRow, UploadConfirmationRequestQuickResponseParameters} from \"@model/service-models/edi-test-harness/upload-confirmation-request-quick-response-parameters\";\r\nimport {ConfirmationRequestResponseRow, UploadConfirmationRequestResponseParameters} from \"@model/service-models/edi-test-harness/upload-confirmation-request-response-parameters\";\r\nimport {BaseUploadResponse} from \"@model/base-upload-response\";\r\nimport {NominationResourceService} from \"@shared/resources/nominations-resource.service\";\r\nimport {PdaInstructionEdiRow, UploadPdaInstructionsParameters} from \"@model/service-models/edi-test-harness/upload-pda-instructions-parameters\";\r\n\r\n@Injectable()\r\nexport class EdiTestHarnessService {\r\n\r\n constructor(private nominationsResource: NominationResourceService) { }\r\n\r\n public UploadConfirmationRequestQuickResponse(parameters: UploadConfirmationRequestQuickResponseParameters) : Observable>\r\n {\r\n return this.nominationsResource.post>(\"/ediTestHarness/confirmationRequest/quickResponse\",parameters,true);\r\n }\r\n\r\n public UploadConfirmationRequestResponse(parameters: UploadConfirmationRequestResponseParameters) : Observable>\r\n {\r\n return this.nominationsResource.post>(\"/ediTestHarness/confirmationRequest/response\",parameters,true);\r\n }\r\n\r\n public uploadPdaInstructions(parameters: UploadPdaInstructionsParameters) : Observable>\r\n {\r\n return this.nominationsResource.post>(\"/ediTestHarness/pdaInstructions/request\",parameters,true);\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n Browse...\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n \r\n
{{ model.uploadResponse?.linesInFile }}
\r\n \r\n
{{ model.uploadResponse?.linesSaved }}
\r\n
\r\n
\r\n \r\n
{{ model.uploadResponse?.linesError }}
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport {Router} from \"@angular/router\";\r\nimport {BaseComponent} from \"@model/base-component\";\r\nimport {BaseUploadResponse} from \"@model/base-upload-response\";\r\nimport {BaseCsvUploadViewModel, CsvUtility} from \"@model/CsvUtility\";\r\nimport {PdaInstructionEdiRow, UploadPdaInstructionsParameters} from \"@model/service-models/edi-test-harness/upload-pda-instructions-parameters\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {EdiTestHarnessService} from \"@shared/services/nomination/edi-test-harness/edi-test-harness.service\";\r\n\r\n\r\n\r\nclass UploadEdiPdaInstructionsFileModel extends BaseCsvUploadViewModel {\r\n public uploadResponse : BaseUploadResponse;\r\n public extractedData : PdaInstructionEdiRow[];\r\n}\r\n\r\n\r\n\r\n@Component({\r\n selector: 'app-upload-pda-instructions',\r\n templateUrl: './upload-pda-instructions.component.html',\r\n styleUrls: ['./upload-pda-instructions.component.css'],\r\n providers: [CsvUtility]\r\n})\r\nexport class UploadPdaInstructionsComponent extends BaseComponent implements OnInit {\r\n\r\n // headers required in CSV file.\r\n public csvHeaders = [\r\n 'Header Ref Id',\r\n 'Requester DUNS',\r\n 'Doc Ref Num',\r\n 'Recipient Qualifier',\r\n 'Recipient DUNS',\r\n 'Preparer Qualifier',\r\n 'Preparer DUNS',\r\n 'Issue Date',\r\n 'Statement Date Time',\r\n 'Name',\r\n 'Phone',\r\n 'Detail Ref Id',\r\n 'Begin Flow Date',\r\n 'Begin Flow Time',\r\n 'End Date',\r\n 'End Time',\r\n 'Flow Direction',\r\n 'Trans Type Code',\r\n 'Loc DRN',\r\n 'Loc Qualifier',\r\n 'Trk Id',\r\n 'Alloc Method',\r\n 'Dn Contract',\r\n 'Dn Party Qualifier',\r\n 'Dn Party Id',\r\n 'Up Contract',\r\n 'Up Party Qualifier',\r\n 'Up Party Id',\r\n 'SR Contract',\r\n 'SR Qualifier',\r\n 'SR Id'];\r\n\r\n public model : UploadEdiPdaInstructionsFileModel;\r\n\r\n\r\n constructor(protected appService: AppService,\r\n private csvUtility: CsvUtility,\r\n private alertService: AlertService,\r\n private ediTestHarnessService: EdiTestHarnessService,\r\n private router: Router\r\n ) {\r\n super(appService);\r\n }\r\n\r\n public ngOnInit(): void {\r\n super.setTitle(\"Upload PDA Instructions\");\r\n this.initModel();\r\n }\r\n\r\n\r\n private initModel(): void {\r\n this.model = new UploadEdiPdaInstructionsFileModel();\r\n this.model.extractedData = new Array();\r\n\r\n this.model.uploadResponse = null;\r\n this.model.error = '';\r\n this.model.fileName = '';\r\n }\r\n\r\n public isValidFile(): boolean {\r\n return this.model.isValidFile();\r\n }\r\n\r\n public hoverOver(): string {\r\n return this.model.error;\r\n }\r\n\r\n public resetClicked(): void {\r\n this.initModel();\r\n this.alertService.clearMessages();\r\n }\r\n\r\n public uploadClicked(): void {\r\n if (this.model.extractedData === null) return;\r\n\r\n this.alertService.clearMessages();\r\n const parameters = new UploadPdaInstructionsParameters(this.model.extractedData);\r\n this.route = this.router.routerState.snapshot.url;\r\n\r\n this.ediTestHarnessService.uploadPdaInstructions(parameters).subscribe(\r\n response => {\r\n const hasErrors = response !== undefined && response.errors.length > 0\r\n && this.route === this.router.routerState.snapshot.url;\r\n\r\n this.alertService.addSuccessMessage('Upload successful',\r\n hasErrors\r\n ? `${this.model.fileName} uploaded with ${response.errors.length} errors.`\r\n : `${this.model.fileName} uploaded.`);\r\n\r\n this.model.uploadResponse = response;\r\n });\r\n }\r\n\r\n public updateClick(e): void {\r\n this.model.extractedData = new Array();\r\n\r\n if (e.target.files.length > 0) {\r\n const reader = new FileReader();\r\n\r\n reader.onload = (event: any) => {\r\n this.extractData(e.target.files[0].name, event.target.result);\r\n };\r\n reader.readAsText(e.target.files[0]);\r\n }\r\n }\r\n\r\n\r\n protected extractData(fileName: string, data: string) {\r\n this.resetClicked();\r\n this.model.fileName = fileName;\r\n this.csvUtility.extractData(data, this.model, this.csvHeaders, this.processRows);\r\n }\r\n\r\n\r\n private processRows = (result: Array>, fields: Array) => {\r\n const colIndices = new Array();\r\n this.csvHeaders.forEach((header) => colIndices.push(this.csvUtility.findColumnHeaderColumn(fields, header)));\r\n\r\n let rowIndex = 0;\r\n this.model.extractedData = new Array();\r\n result.forEach((row: Array) => {\r\n this.model.extractedData.push(new PdaInstructionEdiRow(\r\n ++rowIndex,\r\n row[colIndices[0]],\r\n row[colIndices[1]],\r\n row[colIndices[2]],\r\n row[colIndices[3]],\r\n row[colIndices[4]],\r\n row[colIndices[5]],\r\n row[colIndices[6]],\r\n row[colIndices[7]],\r\n row[colIndices[8]],\r\n row[colIndices[9]],\r\n row[colIndices[10]],\r\n row[colIndices[11]],\r\n row[colIndices[12]],\r\n row[colIndices[13]],\r\n row[colIndices[14]],\r\n row[colIndices[15]],\r\n row[colIndices[16]],\r\n row[colIndices[17]],\r\n row[colIndices[18]],\r\n row[colIndices[19]],\r\n row[colIndices[20]],\r\n row[colIndices[21]],\r\n row[colIndices[22]],\r\n row[colIndices[23]],\r\n row[colIndices[24]],\r\n row[colIndices[25]],\r\n row[colIndices[26]],\r\n row[colIndices[27]],\r\n row[colIndices[28]],\r\n row[colIndices[29]],\r\n row[colIndices[30]]\r\n ));\r\n });\r\n };\r\n\r\n}\r\n","import {GasDay} from \"@model/gas-day\";\r\n\r\nexport class LocationImbalanceReportSearchParams {\r\n gasDay: GasDay;\r\n customerEnterpriseId: number;\r\n showDetails: boolean;\r\n locationId: number;\r\n detailTabIndex: number = 0;\r\n}\r\n","import {BaseViewModel} from \"@model/base-view-model\";\r\nimport {Enterprise} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {LocationImbalanceReportSearchParams} from \"app/gcts/flowinggas/location-imbalance-report/location-imbalance-report-search-params\";\r\nimport {LocationImbalanceDetailReportDto, LocationImbalanceReportDto} from \"app/gcts/flowinggas/location-imbalance-report/location-imbalance-report-dto\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {DateTime} from \"@model/date-time\";\r\nimport {NominationLocation} from \"@shared/services/nomination/nomination-location/nomination-location.service\";\r\nimport {GasDayStatus} from \"@shared/services/flowing-gas/flowing-gas-gas-day-status-service/flowing-gas-gas-day-status.service\";\r\nimport {User} from \"@model/user\";\r\nimport {NominationPipeline} from \"@model/nomination-pipeline\";\r\nimport {NppData} from \"@shared/services/flowing-gas/npp-data-service/npp-data.service\";\r\n\r\nexport class LocationImbalanceReportModel extends BaseViewModel\r\n{\r\n /** LOOKUP VALUES */\r\n public enterprises: Enterprise[];\r\n public minGasDay: GasDay;\r\n public maxGasDay: GasDay;\r\n public currentGasDay: GasDay;\r\n public gasDayDisabled: boolean;\r\n\r\n public locations: NominationLocation[];\r\n\r\n /** SEARCH FIELD LIMITERS */\r\n public defaultGasDay: GasDay;\r\n\r\n /** SEARCH PARAMETERS & RESULTS */\r\n public searchParams: LocationImbalanceReportSearchParams = new LocationImbalanceReportSearchParams();\r\n public lastSearchParams: LocationImbalanceReportSearchParams;\r\n\r\n public searchResults: LocationImbalanceReportDto;\r\n public detailSearchResults: LocationImbalanceDetailReportDto;\r\n public gasDayStatus: GasDayStatus;\r\n public nppDatas: NppData[];\r\n public searchResultsAsOf: DateTime;\r\n\r\n public pipeline: NominationPipeline;\r\n public user: User;\r\n\r\n canUserCanSubscribeToEmails(): boolean {\r\n if (this.user.isInternalUser){\r\n if (!this.user.isAssumingIdentity){\r\n return false;\r\n }\r\n\r\n const internalRoles = [\r\n `${this.pipeline.code}_${User.NominationAnalystRole}`,\r\n `${this.pipeline.code}_${User.NominationSpecialistRole}`,\r\n `${this.pipeline.code}_${User.SupportRole}`\r\n ];\r\n return this.user.hasAnyRole(internalRoles);\r\n } else {\r\n const externalRoles = [\r\n `${this.pipeline.code}_${User.NominationsTransactorRole}`,\r\n `${this.pipeline.code}_${User.NominationsViewRole}`\r\n ];\r\n return this.user.hasAnyRole(externalRoles);\r\n }\r\n }\r\n}\r\n","export class GasDayStatusCode {\r\n\r\n public static Preliminary: GasDayStatusCode = new GasDayStatusCode('Preliminary', 'Preliminary');\r\n public static GasDayClosed: GasDayStatusCode = new GasDayStatusCode('GasDayClosed', 'Gas Day Closed');\r\n\r\n public static Types: GasDayStatusCode[] = [\r\n GasDayStatusCode.Preliminary,\r\n GasDayStatusCode.GasDayClosed\r\n ];\r\n\r\n value: string;\r\n name: string;\r\n\r\n public static GetDisplayName(statusValue: string): string{\r\n return this.Types.find(ofo => ofo.value === statusValue)?.name ?? statusValue;\r\n }\r\n\r\n constructor(value: string, name: string) {\r\n this.value = value;\r\n this.name = name;\r\n }\r\n}\r\n","export class OfoState {\r\n\r\n public static CriticalDay: OfoState = new OfoState('CriticalDay', 'Critical Day');\r\n public static NonCriticalDay: OfoState = new OfoState('NonCriticalDay', 'Non Critical Day');\r\n\r\n public static Types: OfoState[] = [\r\n OfoState.CriticalDay,\r\n OfoState.NonCriticalDay\r\n ];\r\n\r\n value: string;\r\n name: string;\r\n\r\n public static GetDisplayName(ofoValue: string): string{\r\n return this.Types.find(ofo => ofo.value === ofoValue)?.name ?? ofoValue;\r\n }\r\n\r\n constructor(value: string, name: string) {\r\n this.value = value;\r\n this.name = name;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {ImbalanceByGasDayDto, ImbalanceByLocationDto, LocationImbalanceAdjustmentDto, LocationImbalanceDetailDto} from \"app/gcts/flowinggas/location-imbalance-report/location-imbalance-report-dto\";\r\nimport * as _ from 'lodash';\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LocationImbalanceReportCsvBuilderService {\r\n\r\n constructor(private fileService: FileService) {}\r\n\r\n public buildImbalanceByLocationCsv(imbalanceByLocationDtos: ImbalanceByLocationDto[], customerShortName: string, gasDay: GasDay) {\r\n\r\n let csvData = _.map(imbalanceByLocationDtos, x => _.extend({}, x, {\r\n location: x.locationName,\r\n openingBalance: x.openingBalance,\r\n variance: x.variance,\r\n closingBalance: x.closingBalance,\r\n accumulatedBalance: x.locationId != null ? \"\" : x.accumulatedBalance ,\r\n authorizedSwingQuantityLower: x.locationId != null ? \"\" : x.authorizedSwingQuantityLower,\r\n authorizedSwingQuantityUpper: x.locationId != null ? \"\" : x.authorizedSwingQuantityUpper\r\n }));\r\n\r\n csvData = _.sortBy(csvData, item => {\r\n return [item.location];\r\n });\r\n\r\n const filename = `LocationImbalance_LocationSummary_${customerShortName}_${gasDay.toDisplayFormat()}.csv`;\r\n\r\n const headers = ['Location', 'Opening Balance (GJ)', 'Variance (GJ)', 'Closing Balance (GJ)', 'Accumulated Balance (GJ)', 'Lower Authorized Swing Quantity (GJ)', 'Upper Authorized Swing Quantity (GJ)'];\r\n\r\n const columns = ['location', 'openingBalance', 'variance', 'closingBalance', 'accumulatedBalance', 'authorizedSwingQuantityLower', 'authorizedSwingQuantityUpper'];\r\n\r\n this.fileService.downloadCsvFile(filename, csvData, headers, columns);\r\n }\r\n\r\n public buildImbalanceByGasDayCsv(imbalanceByGasDayDtos: ImbalanceByGasDayDto[], customerShortName: string, gasDay: GasDay) {\r\n\r\n let csvData = _.map(imbalanceByGasDayDtos, x => _.extend({}, x, {\r\n gasDay: x.gasDay,\r\n openingBalance: x.openingBalance,\r\n in: x.in,\r\n out: x.out,\r\n variance: x.variance,\r\n closingBalance: x.closingBalance,\r\n authorizedSwingQuantityLower: x.authorizedSwingQuantityLower === 0 ? \"\" : x.authorizedSwingQuantityLower,\r\n authorizedSwingQuantityUpper: x.authorizedSwingQuantityUpper === 0 ? \"\" : x.authorizedSwingQuantityUpper,\r\n adjustment: x.adjustment\r\n }));\r\n\r\n csvData = _.orderBy(csvData, 'gasDay', 'desc');\r\n\r\n const filename = `LocationImbalance_GasDaySummary_${customerShortName}_${gasDay.toDisplayFormat()}.csv`;\r\n\r\n const headers = ['Gas Day', 'Opening Balance (GJ)', 'In (GJ)', 'Out (GJ)', 'Variance (GJ)', 'Closing Balance (GJ)', 'Lower Authorized Swing Quantity (GJ)', 'Upper Authorized Swing Quantity (GJ)', 'Adjustment (GJ)'];\r\n\r\n const columns = ['gasDay', 'openingBalance', 'in', 'out', 'variance', 'closingBalance', 'authorizedSwingQuantityLower', 'authorizedSwingQuantityUpper', 'adjustment'];\r\n\r\n this.fileService.downloadCsvFile(filename, csvData, headers, columns);\r\n }\r\n\r\n buildLocationImbalanceDetailCsv(locationImbalanceDetailDtos: LocationImbalanceDetailDto[], customerShortName: any, gasDay: GasDay) {\r\n const csvData = _.map(locationImbalanceDetailDtos, x => _.extend({}, x, {\r\n location: x.locationName,\r\n transactionType: x.transactionType,\r\n nominationGroup: x.nominationGroupMnemonic,\r\n upDownContract: x.upDownContract,\r\n counterParty: x.counterParty,\r\n openingBalance: x.nominationGroupId == null ? x.openingBalance : null,\r\n nominatedInEnergy: x.nominatedInEnergy,\r\n in: x.inEnergy,\r\n nominatedOutEnergy: x.nominatedOutEnergy,\r\n out: x.outEnergy,\r\n variance: x.nominationGroupId == null ? x.variance : null,\r\n closingBalance: x.nominationGroupId == null ? x.closingBalance : null,\r\n locationMeasurement: x.nominationGroupId == null ? x.locationMeasurement : null\r\n }));\r\n\r\n const filename = `LocationImbalance_Detail_${customerShortName}_${gasDay.toDisplayFormat()}.csv`;\r\n\r\n const headers = ['Location', 'Txn Type', 'Account', 'Up Dn Contract', 'Up Dn ID', 'Opening Balance (GJ)', 'In Nom Qty (GJ)', 'In Sched/Alloc Qty (GJ)', 'Out Nom Qty (GJ)', 'Out Sched/Alloc Qty (GJ)', 'Variance (GJ)', 'Closing Balance (GJ)', 'Location Measurement (GJ)'];\r\n\r\n const columns = ['location', 'transactionType', 'nominationGroup', 'upDownContract', 'counterParty', 'openingBalance', 'nominatedInEnergy', 'in', 'nominatedOutEnergy', 'out', 'variance', 'closingBalance', 'locationMeasurement'];\r\n\r\n this.fileService.downloadCsvFile(filename, csvData, headers, columns);\r\n }\r\n\r\n buildLocationImbalanceAdjustmentCsv(locationImbalanceAdjustmentDtos: LocationImbalanceAdjustmentDto[], customerShortName: any, gasDay: GasDay) {\r\n const csvData = _.map(locationImbalanceAdjustmentDtos, x => _.extend({}, x, {\r\n location: x.locationName,\r\n transactionType: x.transactionType,\r\n nominationGroup: x.nominationGroupMnemonic,\r\n upDownContract: x.upDownContract,\r\n counterParty: x.counterParty,\r\n affectedGasDay: x.affectedGasDay,\r\n beforeInEnergy: x.beforeInEnergy,\r\n afterInEnergy: x.afterInEnergy,\r\n beforeOutEnergy: x.beforeOutEnergy,\r\n afterOutEnergy: x.afterOutEnergy,\r\n netChange: x.netChange,\r\n }));\r\n\r\n const filename = `LocationImbalance_Adjustment_${customerShortName}_${gasDay.toDisplayFormat()}.csv`;\r\n\r\n const headers = ['Location', 'Txn Type', 'Account', 'Up Dn Contract', 'Up Dn ID', 'Affected Gas Day', 'In Before Qty (GJ)', 'In After Qty (GJ)', 'Out Before Qty (GJ)', 'Out After Qty (GJ)', 'Net Change (GJ)'];\r\n\r\n const columns = ['location', 'transactionType', 'nominationGroup', 'upDownContract', 'counterParty', 'affectedGasDay', 'beforeInEnergy', 'afterInEnergy', 'beforeOutEnergy', 'afterOutEnergy', 'netChange'];\r\n\r\n this.fileService.downloadCsvFile(filename, csvData, headers, columns);\r\n }\r\n}\r\n","import * as _ from \"lodash\";\r\nimport {GasDay} from \"@model/gas-day\";\r\n\r\nexport class ImbalanceByLocationDto {\r\n public locationId: number;\r\n public openingBalance: number;\r\n public closingBalance: number;\r\n public accumulatedBalance: number;\r\n public variance: number;\r\n public authorizedSwingQuantityLower: number;\r\n public authorizedSwingQuantityUpper: number;\r\n public locationName: string = ''; // populated by enrichment\r\n\r\n public static create(dto: any) : ImbalanceByLocationDto {\r\n const imbalanceByLocationDto = new ImbalanceByLocationDto();\r\n\r\n imbalanceByLocationDto.locationId = dto.locationId;\r\n imbalanceByLocationDto.authorizedSwingQuantityLower = +dto.authorizedSwingQuantityLower;\r\n imbalanceByLocationDto.authorizedSwingQuantityUpper = +dto.authorizedSwingQuantityUpper;\r\n imbalanceByLocationDto.openingBalance = +dto.openingBalance;\r\n imbalanceByLocationDto.closingBalance = +dto.closingBalance;\r\n imbalanceByLocationDto.accumulatedBalance = +dto.accumulatedBalance;\r\n\r\n imbalanceByLocationDto.variance = +dto.variance;\r\n\r\n return imbalanceByLocationDto;\r\n }\r\n}\r\n\r\nexport class ImbalanceByGasDayDto {\r\n public gasDay: GasDay;\r\n public openingBalance: number;\r\n public in: number;\r\n public out: number;\r\n public closingBalance: number;\r\n public accumulatedBalance: number;\r\n public variance: number;\r\n public authorizedSwingQuantityLower: number;\r\n public authorizedSwingQuantityUpper: number;\r\n public adjustment: number;\r\n\r\n public static create(dto: any) : ImbalanceByGasDayDto {\r\n const imbalanceByGasDay = new ImbalanceByGasDayDto();\r\n\r\n imbalanceByGasDay.gasDay = GasDay.parse(dto.gasDay);\r\n imbalanceByGasDay.authorizedSwingQuantityLower = +dto.authorizedSwingQuantityLower;\r\n imbalanceByGasDay.authorizedSwingQuantityUpper = +dto.authorizedSwingQuantityUpper;\r\n imbalanceByGasDay.openingBalance = +dto.openingBalance;\r\n imbalanceByGasDay.in = +dto.in;\r\n imbalanceByGasDay.out = +dto.out;\r\n imbalanceByGasDay.closingBalance = +dto.closingBalance;\r\n imbalanceByGasDay.accumulatedBalance = +dto.accumulatedBalance;\r\n imbalanceByGasDay.variance = +dto.variance;\r\n imbalanceByGasDay.adjustment = dto.adjustment;\r\n\r\n return imbalanceByGasDay;\r\n }\r\n}\r\n\r\nexport class LocationImbalanceReportDto {\r\n\r\n public imbalanceByLocationDtos: ImbalanceByLocationDto[];\r\n public imbalanceByGasDayDtos: ImbalanceByGasDayDto[];\r\n public activeOfoWatchCount: number;\r\n\r\n public static create(dto: any) : LocationImbalanceReportDto {\r\n const locationImbalanceReportDto = new LocationImbalanceReportDto();\r\n locationImbalanceReportDto.imbalanceByLocationDtos = dto.imbalanceByLocationDtos.map(x => ImbalanceByLocationDto.create(x));\r\n locationImbalanceReportDto.imbalanceByGasDayDtos = dto.imbalanceByGasDayDtos.map(x => ImbalanceByGasDayDto.create(x));\r\n locationImbalanceReportDto.activeOfoWatchCount = dto.activeOfoWatchCount ?? 0;\r\n return locationImbalanceReportDto;\r\n }\r\n\r\n public anyImbalanceByLocation(): boolean{\r\n return !_.isEmpty(this.imbalanceByLocationDtos);\r\n }\r\n\r\n public imbalanceByLocationCount(): number{\r\n if(!this.anyImbalanceByLocation()) return 0;\r\n\r\n return this.imbalanceByLocationDtos.length - 1;// -1 to not count summary row\r\n }\r\n\r\n public anyImbalanceByGasDay(): boolean{\r\n return !_.isEmpty(this.imbalanceByGasDayDtos);\r\n }\r\n}\r\n\r\nexport class LocationImbalanceDetailBaseDto {\r\n public locationId: number;\r\n public locationName: string = ''; // populated by enrichment\r\n public transactionType: string;\r\n public nominationGroupId: number;\r\n public nominationGroupMnemonic: string = ''; // populated by enrichment\r\n public upDownContract: string;\r\n public counterParty: string;\r\n\r\n protected static apply(dto: any, instance: LocationImbalanceDetailBaseDto) {\r\n instance.locationId = +dto.locationId;\r\n instance.transactionType = dto.transactionType;\r\n instance.nominationGroupId = dto.nominationGroupId;\r\n instance.upDownContract = dto.upDownContract;\r\n instance.counterParty = dto.counterParty;\r\n }\r\n}\r\n\r\nexport class LocationImbalanceDetailDto extends LocationImbalanceDetailBaseDto {\r\n public openingBalance: number;\r\n public nominatedInEnergy: number;\r\n public inEnergy: number;\r\n public nominatedOutEnergy: number;\r\n public outEnergy: number;\r\n public variance: number;\r\n public closingBalance: number;\r\n public locationMeasurement: number;\r\n\r\n public static create(dto: any) : LocationImbalanceDetailDto {\r\n const locationImbalanceDetailDto = new LocationImbalanceDetailDto();\r\n super.apply(dto, locationImbalanceDetailDto);\r\n locationImbalanceDetailDto.openingBalance = dto.openingBalance;\r\n locationImbalanceDetailDto.nominatedInEnergy = dto.nominatedInEnergy;\r\n locationImbalanceDetailDto.inEnergy = dto.inEnergy;\r\n locationImbalanceDetailDto.nominatedOutEnergy = dto.nominatedOutEnergy;\r\n locationImbalanceDetailDto.outEnergy = dto.outEnergy;\r\n locationImbalanceDetailDto.variance = dto.variance;\r\n locationImbalanceDetailDto.closingBalance = dto.closingBalance;\r\n locationImbalanceDetailDto.locationMeasurement = dto.locationMeasurement;\r\n\r\n return locationImbalanceDetailDto;\r\n }\r\n}\r\n\r\nexport class LocationImbalanceAdjustmentDto extends LocationImbalanceDetailBaseDto{\r\n public affectedGasDay: GasDay;\r\n public beforeInEnergy: number;\r\n public afterInEnergy: number;\r\n public beforeOutEnergy: number;\r\n public afterOutEnergy: number;\r\n public netChange: number;\r\n\r\n public static create(dto: any) : LocationImbalanceAdjustmentDto {\r\n const gasTransactionAdjustmentSummaryDto = new LocationImbalanceAdjustmentDto();\r\n super.apply(dto, gasTransactionAdjustmentSummaryDto);\r\n gasTransactionAdjustmentSummaryDto.affectedGasDay = dto.affectedGasDay == null ? null : GasDay.parse(dto.affectedGasDay);\r\n gasTransactionAdjustmentSummaryDto.beforeInEnergy = dto.beforeInEnergy;\r\n gasTransactionAdjustmentSummaryDto.afterInEnergy = dto.afterInEnergy;\r\n gasTransactionAdjustmentSummaryDto.beforeOutEnergy = dto.beforeOutEnergy;\r\n gasTransactionAdjustmentSummaryDto.afterOutEnergy = dto.afterOutEnergy;\r\n gasTransactionAdjustmentSummaryDto.netChange = dto.netChange;\r\n return gasTransactionAdjustmentSummaryDto;\r\n }\r\n}\r\n\r\nexport class LocationImbalanceDetailReportDto {\r\n public locationImbalanceDetailDtos: LocationImbalanceDetailDto[];\r\n public locationImbalanceAdjustmentDtos: LocationImbalanceAdjustmentDto[];\r\n\r\npublic static create(dto: any) {\r\n const locationImbalanceDetailReportDto = new LocationImbalanceDetailReportDto();\r\n locationImbalanceDetailReportDto.locationImbalanceDetailDtos = dto.locationImbalanceDetailDtos.map(x => LocationImbalanceDetailDto.create(x));\r\n locationImbalanceDetailReportDto.locationImbalanceAdjustmentDtos = dto.locationImbalanceAdjustmentDtos.map(x => LocationImbalanceAdjustmentDto.create(x));\r\n return locationImbalanceDetailReportDto;\r\n }\r\n\r\n public anyDetails(): boolean{\r\n return !_.isEmpty(this.locationImbalanceDetailDtos);\r\n }\r\n\r\n public detailCount(): number{\r\n if(!this.locationImbalanceDetailDtos) return 0;\r\n\r\n return this.locationImbalanceDetailDtos.filter(x => !_.isNil(x.nominationGroupId)).length;\r\n }\r\n\r\n public anyAdjustments(): boolean{\r\n return !_.isEmpty(this.locationImbalanceAdjustmentDtos);\r\n }\r\n\r\n adjustmentCount() {\r\n if(!this.locationImbalanceDetailDtos) return 0;\r\n\r\n return this.locationImbalanceAdjustmentDtos.filter(x => !_.isNil(x.nominationGroupId)).length;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {LocationImbalanceReportSearchParams} from \"app/gcts/flowinggas/location-imbalance-report/location-imbalance-report-search-params\";\r\nimport {\r\n LocationImbalanceDetailReportDto, LocationImbalanceReportDto\r\n} from \"app/gcts/flowinggas/location-imbalance-report/location-imbalance-report-dto\";\r\nimport {FlowinggasResourceService} from \"@shared/resources/flowinggas-resource.service\";\r\nimport { map } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FlowingGasLocationImbalanceService {\r\n\r\n constructor(private flowingGasResourceService: FlowinggasResourceService) { }\r\n\r\n public queryLocationSummary(searchParams: LocationImbalanceReportSearchParams) : Observable {\r\n const params = new GCTSHttpParams();\r\n params.setNumber(\"enterpriseId\", searchParams.customerEnterpriseId);\r\n params.setGasDay(searchParams.gasDay);\r\n\r\n return this.flowingGasResourceService.get('/reports/locationImbalance', true, params)\r\n .pipe(\r\n map(dto => LocationImbalanceReportDto.create(dto))\r\n );\r\n }\r\n\r\n public queryLocationSummaryDetail(searchParams: LocationImbalanceReportSearchParams) : Observable {\r\n const params = new GCTSHttpParams();\r\n params.setNumber(\"enterpriseId\", searchParams.customerEnterpriseId);\r\n params.setGasDay(searchParams.gasDay);\r\n params.setNumber(\"locationId\", searchParams.locationId);\r\n\r\n return this.flowingGasResourceService.get('/reports/locationImbalanceDetail', true, params)\r\n .pipe(\r\n map(dto => LocationImbalanceDetailReportDto.create(dto))\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {FlowinggasResourceService} from \"@shared/resources/flowinggas-resource.service\";\r\nimport { map } from 'rxjs/operators';\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {GasDayRangeDefault} from \"@shared/services/nomination/gas-cycle/gas-cycle.service\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FlowingGasGasDayStatusService {\r\n\r\n constructor(private flowingGasResourceService: FlowinggasResourceService) { }\r\n\r\n public getGasDayRangeDefault() : Observable {\r\n return this.flowingGasResourceService.get('/gasdaystatus/getgasdayrangedefault', true)\r\n .pipe(\r\n map(dto => GasDayRangeDefault.create(dto.start, dto.end, dto.default))\r\n );\r\n }\r\n\r\n public getGasDayStatus(gasDay: GasDay): Observable {\r\n const params = new GCTSHttpParams();\r\n params.setGasDay(gasDay);\r\n\r\n return this.flowingGasResourceService.get('/gasdaystatus', true, params)\r\n .pipe(\r\n map(dto => {\r\n if (dto != null){\r\n return GasDayStatus.create(dto);\r\n }\r\n })\r\n );\r\n }\r\n}\r\n\r\nexport class GasDayStatus\r\n{\r\n id: number;\r\n gasDay: GasDay;\r\n lastTimeMeasurementAllocationRun: Date;\r\n statusCode: string;\r\n\r\n public static create(dto: any) : GasDayStatus{\r\n const gasDayStatus: GasDayStatus = new GasDayStatus();\r\n gasDayStatus.id = dto.id;\r\n gasDayStatus.gasDay = GasDay.parse(dto.gasDay);\r\n gasDayStatus.lastTimeMeasurementAllocationRun = dto.lastTimeMeasurementAllocationRun;\r\n gasDayStatus.statusCode = dto.statusCode;\r\n return gasDayStatus;\r\n }\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {Observable} from \"rxjs\";\r\nimport {map} from \"rxjs/operators\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {FlowinggasResourceService} from \"@shared/resources/flowinggas-resource.service\";\r\nimport * as _ from \"lodash\";\r\nimport {DateTime} from \"@model/date-time\";\r\n\r\n\r\nabstract class NppDataBase {\r\n netPipelinePosition: number;\r\n closingLinepackQuantity: number;\r\n targetLinepackQuantity: number;\r\n linepackAlert: string;\r\n ofoState: string;\r\n lowAsqLimit: number;\r\n highAsqLimit: number;\r\n operationalInformation: string;\r\n isLatest: boolean;\r\n\r\n protected static apply(source: any, target: NppDataBase) {\r\n target.netPipelinePosition = source.netPipelinePosition;\r\n target.closingLinepackQuantity = source.closingLinepackQuantity;\r\n target.targetLinepackQuantity = source.targetLinepackQuantity;\r\n target.linepackAlert = source.linepackAlert;\r\n target.ofoState = source.ofoState;\r\n target.lowAsqLimit = source.lowAsqLimit;\r\n target.highAsqLimit = source.highAsqLimit;\r\n target.operationalInformation = source.operationalInformation;\r\n target.isLatest = source.isLatest;\r\n\r\n return target;\r\n }\r\n}\r\n\r\nexport class NppDataDto extends NppDataBase {\r\n endOfGasDay: string;\r\n issueDateTime: string;\r\n\r\n public static fromNppData(source: NppData) : NppDataDto {\r\n const target = new NppDataDto();\r\n super.apply(source, target);\r\n target.endOfGasDay = GasDay.from(source.endOfGasDay).toString();\r\n target.issueDateTime = source.issueDateTime?.toString();\r\n return target;\r\n }\r\n}\r\n\r\nexport class NppData extends NppDataBase{\r\n endOfGasDay: Date; // needs to be a date in order to work with the datagrid calendar control\r\n issueDateTime: DateTime;\r\n\r\n public static fromDto(source: NppDataDto) : NppData {\r\n const target = new NppData();\r\n super.apply(source, target);\r\n target.endOfGasDay = GasDay.parse(source.endOfGasDay).toDate;\r\n target.issueDateTime = DateTime.parse(source.issueDateTime);\r\n return target;\r\n }\r\n}\r\n\r\nexport class NppDataDefaultsDto {\r\n endOfGasDay: string;\r\n netPipelinePosition: number;\r\n lowAsqLimit: number;\r\n highAsqLimit: number;\r\n endOfGasDayExists: boolean;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NppDataService {\r\n\r\n constructor(private flowingGasResource: FlowinggasResourceService) {\r\n }\r\n\r\n public queryNppData(startGasDay: GasDay, endGasDay: GasDay, showRevisions: boolean) : Observable {\r\n\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setGasDay(startGasDay, 'startGasDay');\r\n params.setGasDay(endGasDay, 'endGasDay');\r\n params.setBoolean('showRevisions', showRevisions);\r\n\r\n return this.flowingGasResource.get('/nppData', true, params)\r\n .pipe(map(responses => _.map(responses, (response) => NppData.fromDto(response))));\r\n }\r\n\r\n public queryNppDataDefaults(gasDay: GasDay) : Observable {\r\n\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setGasDay(gasDay, 'gasDay');\r\n\r\n return this.flowingGasResource.get('/nppDataDefaults', true, params);\r\n }\r\n\r\n public createOrUpdateNppData(nppData: NppData) : Observable {\r\n return this.flowingGasResource.postWithNoResponseBody('/nppData', NppDataDto.fromNppData(nppData));\r\n }\r\n}\r\n","\r\n\r\n\r\n\r\n\r\n\r\n
\r\n\r\n
\r\n
\r\n


\r\n\r\n
\r\n
\r\n {{errorMessage}}\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n
e.g. john_doe@abc.com
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n","import {finalize} from 'rxjs/operators';\r\nimport {Component, Input, OnInit, ViewChild} from '@angular/core';\r\nimport {AlertService} from \"app/shared/services/webapp/alert/alert.service\";\r\nimport {EmailSubscription} from \"@model/email-subscription\";\r\nimport {EmailSubscriptionService, EmailSubscriptionUpdateRequest, IEmailSubscriptionService} from \"../../services/nomination/email-subscription/email-subscription.service\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {NgForm} from \"@angular/forms\";\r\nimport {ModalComponent} from \"../modal/modal.component\";\r\n\r\n@Component({\r\n selector: 'app-email-subscription',\r\n templateUrl: './email-subscription.component.html',\r\n styleUrls: ['./email-subscription.component.css']\r\n})\r\nexport class EmailSubscriptionComponent implements OnInit {\r\n\r\n @Input('buttonText') buttonText: string;\r\n @Input('buttonTextSubscribed') buttonTextSubscribed: string;\r\n @Input('title') title: string;\r\n @Input('titleSubscribed') titleSubscribed: string;\r\n @Input('description') description: string;\r\n @Input('eventType') eventType: string;\r\n @Input('subscriptionMessage') subscriptionMessage: string;\r\n @Input('emailSubscriptionService') emailSubscriptionService: IEmailSubscriptionService;\r\n\r\n @ViewChild(ModalComponent) modal: ModalComponent;\r\n\r\n visible: boolean = false;\r\n model: EmailSubscription;\r\n errorMessage: string;\r\n isCurrentlySubscribed: boolean;\r\n\r\n @ViewChild('form')\r\n private form: NgForm;\r\n\r\n constructor(private appService: AppService, private alertService: AlertService, private nominationEmailSubscriptionService: EmailSubscriptionService) {\r\n this.model = new EmailSubscription();\r\n this.errorMessage = \"\";\r\n }\r\n\r\n private getEmailSubscriptionResource(): IEmailSubscriptionService {\r\n // if email subscription Service doesn't exist, we will default to Nominations\r\n if (!this.emailSubscriptionService) {\r\n return this.nominationEmailSubscriptionService;\r\n }\r\n\r\n return this.emailSubscriptionService;\r\n }\r\n\r\n ngOnInit() {\r\n this.getEmailSubscriptionResource().getSubscriptionForEvent(this.eventType).subscribe(response => {\r\n this.isCurrentlySubscribed = response.subscribe;\r\n });\r\n }\r\n\r\n public onLoad() {\r\n this.getEmailSubscriptionResource().getSubscriptionForEvent(this.eventType).subscribe(response => {\r\n this.modal.show();\r\n this.model.id = response.id;\r\n this.model.email = response.email;\r\n this.model.confirmEmail = response.email;\r\n this.model.subscribe = response.subscribe;\r\n this.isCurrentlySubscribed = response.subscribe;\r\n }, error => {\r\n if (error.json) {\r\n this.errorMessage = error.json();\r\n } else {\r\n this.visible = false;\r\n }\r\n });\r\n }\r\n\r\n public submit() {\r\n this.alertService.clearMessages();\r\n this.errorMessage = '';\r\n\r\n if (this.model.email.toLowerCase() !== this.model.confirmEmail.toLowerCase()){\r\n this.errorMessage = \"The email's don't match.\";\r\n return;\r\n }\r\n this.visible = false;\r\n\r\n const request = this.buildUpdateRequest();\r\n this.getEmailSubscriptionResource().updateSubscription(request).pipe(\r\n finalize(() => {\r\n this.form.reset();\r\n this.modal.hide();\r\n }))\r\n .subscribe(() => {\r\n this.isCurrentlySubscribed = request.subscribe !== 'false';\r\n if (request.subscribe === 'false') this.alertService.addSuccessMessage(\"Success\", `You have been unsubscribed from receiving ${this.subscriptionMessage}`);\r\n else this.alertService.addSuccessMessage(\"Success\", `${request.email} is now subscribed to receive ${this.subscriptionMessage}`);\r\n });\r\n }\r\n\r\n public cancel() {\r\n this.form.reset();\r\n }\r\n\r\n private buildUpdateRequest(): EmailSubscriptionUpdateRequest {\r\n const request = new EmailSubscriptionUpdateRequest();\r\n request.email = this.model.email;\r\n request.eventType = this.eventType;\r\n request.subscribe = this.isCurrentlySubscribed\r\n ? this.model.subscribe.toString()\r\n : true.toString();\r\n return request;\r\n }\r\n\r\n emailChanged() {\r\n this.form.controls['email'].updateValueAndValidity();\r\n this.form.controls['confirmEmail'].updateValueAndValidity();\r\n }\r\n\r\n hasErrors() {\r\n return this.errorMessage !== '';\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n\r\n
To subscribe enter your email address and click submit.\"\r\n eventType=\"OfoEvent\"\r\n subscriptionMessage=\"OFO Notifications\"\r\n *ngIf=\"model.canUserCanSubscribeToEmails()\"\r\n [emailSubscriptionService]=\"emailSubscriptionService\">
\r\n
\r\n
\r\n\r\n
\r\n
\r\n -\r\n +\r\n Filters\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.customerEnterpriseId | displayName: 'id' : 'displayValue' : model.enterprises}}\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.gasDay | gasDayFormat}}\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.locationId | displayName: 'id' : 'name' : model.locations}}\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.showDetails ? 'Detail' : 'Summary'}}\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n {{model.gasDayStatus.statusCode}}\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n {{model.gasDayStatus.lastTimeMeasurementAllocationRun | dateFormat:'YYYY-MMM-DD h:mm:ss A'}}\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n NPP DATA\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Gas DayNPP (GJ)Closing Linepack
Quantity (GJ)
Target Linepack
Quantity (GJ)
Linepack
Alert
OFO StateLow ASQ
Limit (%)
High ASQ
Limit (%)
Operational
Information
Issue Date/Time
{{nppData.endOfGasDay | dateToGasDayFormat: true}}{{nppData.netPipelinePosition | numberFormat:false}}{{nppData.closingLinepackQuantity | numberFormat: false}}{{nppData.targetLinepackQuantity | numberFormat: false}}{{nppData.linepackAlert}}{{nppData.ofoState}}{{nppData.lowAsqLimit}}{{nppData.highAsqLimit}}\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n
{{nppData.operationalInformation}}
\r\n
\r\n \r\n
{{nppData.issueDateTime.toDisplayFormat()}}
\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Number of results found: {{model.searchResults.imbalanceByLocationCount()}}\r\n AS OF {{model.searchResultsAsOf.toDate() | dateFormat:'YYYY-MMM-DD h:mm:ss A'}}\r\n\r\n \r\n Export CSV\r\n \r\n
\r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n
\r\n {{event.text}}\r\n
\r\n\r\n
\r\n \r\n
\r\n Opening
Balance (GJ)\r\n
\r\n \r\n
\r\n Variance
(GJ)\r\n
\r\n \r\n
\r\n Closing
Balance (GJ)\r\n
\r\n \r\n
\r\n Accumulated
Balance (GJ)\r\n
\r\n \r\n
\r\n Authorized
Swing Quantity (GJ)\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n Opening
Balance (GJ)\r\n
\r\n \r\n \r\n \r\n
\r\n Variance
(GJ)\r\n
\r\n \r\n
\r\n Closing
Balance (GJ)\r\n
\r\n \r\n
\r\n Authorized
Swing Quantity (GJ)\r\n
\r\n \r\n
\r\n Adjustment
(GJ)\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n Number of results found: {{model.detailSearchResults.detailCount()}}\r\n AS OF {{model.searchResultsAsOf.toDate() | dateFormat:'YYYY-MMM-DD h:mm:ss A'}}\r\n\r\n \r\n Export CSV\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n Up Dn
Contract\r\n
\r\n \r\n \r\n
\r\n Opening
Balance (GJ)\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n
\r\n Closing
Balance (GJ)\r\n
\r\n \r\n
\r\n Location
Measurement (GJ)\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Number of results found: {{model.detailSearchResults.adjustmentCount()}}\r\n AS OF {{model.searchResultsAsOf.toDate() | dateFormat:'YYYY-MMM-DD h:mm:ss A'}}\r\n\r\n \r\n Export CSV\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n Up Dn
Contract\r\n
\r\n \r\n \r\n
\r\n Affected
Gas Day\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n","import {Component} from '@angular/core';\r\nimport {LocationImbalanceReportModel} from \"app/gcts/flowinggas/location-imbalance-report/location-imbalance-report-model\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {Enterprise, EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {forkJoin, Observable, of } from 'rxjs';\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {UserService} from \"@shared/services/webapp/user/user-service\";\r\nimport {ActivatedRoute, Router} from '@angular/router';\r\nimport {concatMap, tap } from 'rxjs/operators';\r\nimport {AccountsCustomerSearchParams, AccountsEnterpriseService} from \"@shared/services/accounts/accounts-enterprise/accounts-enterprise.service\";\r\nimport {BusinessRight} from \"@model/business-right\";\r\nimport * as _ from 'lodash';\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {LocationImbalanceReportSearchParams} from \"app/gcts/flowinggas/location-imbalance-report/location-imbalance-report-search-params\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {CommonDataGasdayService, ServerTimeData} from \"@shared/services/common-data/common-data-gasday/common-data-gasday.service\";\r\nimport {FlowingGasLocationImbalanceService} from \"@shared/services/flowing-gas/flowing-gas-location-imbalance-service/flowing-gas-location-imbalance.service\";\r\nimport {LocationSearchParams, NominationLocation, NominationLocationService} from \"@shared/services/nomination/nomination-location/nomination-location.service\";\r\nimport {NominationLocationEnrichmentService} from \"@shared/services/nomination/nomination-location-enrichment/nomination-location-enrichment.service\";\r\nimport {LocationImbalanceReportCsvBuilderService} from \"app/gcts/flowinggas/location-imbalance-report/location-imbalance-report-csv-builder.service\";\r\nimport {GasDayRangeDefault} from \"@shared/services/nomination/gas-cycle/gas-cycle.service\";\r\nimport {FlowingGasGasDayStatusService} from \"@shared/services/flowing-gas/flowing-gas-gas-day-status-service/flowing-gas-gas-day-status.service\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {GasDayStatusCode} from \"@shared/enums/gas-day-status-code\";\r\nimport {NppDataService} from \"@shared/services/flowing-gas/npp-data-service/npp-data.service\";\r\nimport {OfoState} from \"@shared/enums/ofo-state\";\r\nimport {CommonDataEmailSubscriptionService} from \"@shared/services/common-data/common-data-email-subscription/common-data-email-subscription.service\";\r\nimport {IEmailSubscriptionService} from \"@shared/services/nomination/email-subscription/email-subscription.service\";\r\nimport {NominationGroupService} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport {NomGroupEnrichmentService} from \"@shared/services/enrichment/nomgroup-enrichment.service\";\r\n\r\n@Component({\r\n selector: 'app-location-imbalance-report',\r\n templateUrl: './location-imbalance-report.component.html',\r\n styleUrls: ['./location-imbalance-report.component.css']\r\n})\r\nexport class LocationImbalanceReportComponent extends BaseSearchComponent {\r\n\r\n constructor(appService: AppService,\r\n activatedRoute: ActivatedRoute,\r\n router: Router,\r\n alertService: AlertService,\r\n private userService: UserService,\r\n private commonDataEnterpriseService: EnterpriseService,\r\n private commonDataGasDayService: CommonDataGasdayService,\r\n private accountsEnterpriseService: AccountsEnterpriseService,\r\n private nominationLocationService: NominationLocationService,\r\n private nomGroupService: NominationGroupService,\r\n private enterpriseEnrichmentService: EnterpriseEnrichmentService,\r\n private nominationLocationEnrichmentService: NominationLocationEnrichmentService,\r\n private nomGroupEnrichmentService: NomGroupEnrichmentService,\r\n private locationImbalanceReportCsvBuilderService: LocationImbalanceReportCsvBuilderService,\r\n private flowingGasLocationImbalanceService: FlowingGasLocationImbalanceService,\r\n private flowingGasGasDayStatusService: FlowingGasGasDayStatusService,\r\n private sessionService: SessionService,\r\n protected commonDataEmailSubscriptionService: CommonDataEmailSubscriptionService,\r\n private nppDataService: NppDataService) {\r\n super('Location Imbalance', appService, activatedRoute, router, alertService);\r\n\r\n enterpriseEnrichmentService.setEnrichmentResource(commonDataEnterpriseService);\r\n nomGroupEnrichmentService.setEnrichmentResource(nomGroupService);\r\n\r\n this.emailSubscriptionService = commonDataEmailSubscriptionService;\r\n\r\n this.appService.hideMenu();\r\n }\r\n\r\n private static PARAM_GAS_DAY: string = 'gasDay';\r\n private static PARAM_ENTERPRISE_ID: string = 'customerEnterpriseId';\r\n private static PARAM_LOCATION_ID: string = 'locationId';\r\n private static PARAM_SHOW_DETAILS: string = 'showDetails';\r\n private static PARAM_DETAIL_TAB_INDEX: string = 'detailTabIndex';\r\n\r\n public model: LocationImbalanceReportModel = new LocationImbalanceReportModel();\r\n\r\n public emailSubscriptionService: IEmailSubscriptionService;\r\n\r\n tabs = [{id: 0, title: \"Detail\", template: \"template1\"},\r\n {id: 1, title: \"Adjustment\", template: \"template2\"}];\r\n\r\n /** Events */\r\n public onCellPrepared(e): void{\r\n if(e.rowType === 'header') return;\r\n\r\n if (e.data.locationId == null){\r\n if(e.column.dataField === \"accumulatedBalance\"){\r\n let backgroundColor: string = \"#008000\"; // green\r\n if (e.data.accumulatedBalance < e.data.authorizedSwingQuantityLower\r\n || e.data.accumulatedBalance > e.data.authorizedSwingQuantityUpper){\r\n const npp = this.model.nppDatas.find((n) => this.model.searchParams.gasDay.isEqual(GasDay.from(n.endOfGasDay)));\r\n backgroundColor = !_.isNil(npp?.netPipelinePosition) && (Math.sign(e.data.accumulatedBalance) === Math.sign(npp.netPipelinePosition)) ? \"red\" : \"yellow\";\r\n }\r\n e.cellElement.style.backgroundColor = backgroundColor;\r\n e.cellElement.style.color = e.cellElement.style.backgroundColor === \"yellow\" ? \"black\" : \"white\";\r\n } else if (e.column.dataField !== \"authorizedSwingQuantity\") {\r\n e.cellElement.style.borderWidth = \"1px 0\";\r\n }\r\n } else if (e.column.dataField === \"accumulatedBalance\" || e.column.dataField === \"authorizedSwingQuantity\"){\r\n e.cellElement.style.border = \"0\";\r\n }\r\n }\r\n\r\n public onDetailCellPrepared(e): void{\r\n if(e.rowType === 'header') return;\r\n if (e.data.nominationGroupId != null) return;\r\n\r\n e.cellElement.style.backgroundColor = '#D9D9D9';\r\n e.cellElement.style.fontWeight = 'bold';\r\n if (e.column.dataField === \"transactionType\"){\r\n e.cellElement.style.textAlign = 'center';\r\n }\r\n }\r\n\r\n public onOpeningBalanceDisplay(rowData): string{\r\n return _.isNil(rowData.locationId) ? '' : rowData.openingBalance.toLocaleString();\r\n }\r\n\r\n public onVarianceDisplay(rowData): string{\r\n return _.isNil(rowData.locationId) ? '' : rowData.variance.toLocaleString();\r\n }\r\n\r\n public onClosingBalanceDisplay(rowData): string{\r\n return _.isNil(rowData.locationId) ? '' : rowData.closingBalance.toLocaleString();\r\n }\r\n\r\n public onAccumulatedBalanceDisplay(rowData): string{\r\n return _.isNil(rowData.locationId) ? rowData.accumulatedBalance.toLocaleString() : '';\r\n }\r\n\r\n public onAsqDisplay(rowData): string{\r\n return _.isNil(rowData.locationId) ? `${rowData.authorizedSwingQuantityLower.toLocaleString()}/+${rowData.authorizedSwingQuantityUpper.toLocaleString()}` : '';\r\n }\r\n\r\n // detail grid events\r\n public onTransactionTypeDisplay(rowData): string {\r\n return _.isNil(rowData.nominationGroupId) ? rowData.locationName : rowData.transactionType;\r\n }\r\n\r\n public onDetailOpeningBalanceDisplay(rowData): string{\r\n return !_.isNil(rowData.nominationGroupId) ? '' : rowData.openingBalance.toLocaleString();\r\n }\r\n\r\n public onDetailVarianceDisplay(rowData): string{\r\n return !_.isNil(rowData.nominationGroupId) ? '' : rowData.variance.toLocaleString();\r\n }\r\n\r\n public onDetailClosingBalanceDisplay(rowData): string{\r\n return !_.isNil(rowData.nominationGroupId) ? '' : rowData.closingBalance.toLocaleString();\r\n }\r\n\r\n public onDetailLocationMeasurementDisplay(rowData): string{\r\n return _.isNil(rowData.nominationGroupId) && !_.isNil(rowData.locationMeasurement) ? rowData.locationMeasurement.toLocaleString() : '';\r\n }\r\n\r\n private getCustomerName() {\r\n const customerShortName = this.model.lastSearchParams.customerEnterpriseId !== null\r\n ? _.find(this.model.enterprises, x => x.id === this.model.lastSearchParams.customerEnterpriseId).displayValue\r\n : \"\";\r\n return customerShortName;\r\n }\r\n\r\n public exportImbalanceByLocationCsvClicked(): void {\r\n const customerShortName = this.getCustomerName();\r\n this.locationImbalanceReportCsvBuilderService.buildImbalanceByLocationCsv(this.model.searchResults.imbalanceByLocationDtos, customerShortName, this.model.lastSearchParams.gasDay);\r\n }\r\n\r\n exportImbalanceByGasDayCsvClicked() {\r\n const customerShortName = this.getCustomerName();\r\n this.locationImbalanceReportCsvBuilderService.buildImbalanceByGasDayCsv(this.model.searchResults.imbalanceByGasDayDtos, customerShortName, this.model.lastSearchParams.gasDay);\r\n }\r\n\r\n exportDetailCsvClicked() {\r\n const customerShortName = this.getCustomerName();\r\n this.locationImbalanceReportCsvBuilderService.buildLocationImbalanceDetailCsv(this.model.detailSearchResults.locationImbalanceDetailDtos, customerShortName, this.model.lastSearchParams.gasDay);\r\n }\r\n\r\n exportAdjustmentCsvClicked() {\r\n const customerShortName = this.getCustomerName();\r\n this.locationImbalanceReportCsvBuilderService.buildLocationImbalanceAdjustmentCsv(this.model.detailSearchResults.locationImbalanceAdjustmentDtos, customerShortName, this.model.lastSearchParams.gasDay);\r\n }\r\n\r\n public loadLocationDetailReport = (event) => {\r\n this.model.searchParams = _.clone(this.model.lastSearchParams);\r\n this.model.searchParams.locationId = event.data.locationId;\r\n this.model.searchParams.showDetails = true;\r\n this.searchClicked();\r\n };\r\n\r\n public loadGasDayDetailReport = (event) => {\r\n this.model.searchParams = _.clone(this.model.lastSearchParams);\r\n this.model.searchParams.gasDay = event.data.gasDay;\r\n this.model.searchParams.showDetails = true;\r\n this.searchClicked();\r\n };\r\n\r\n public loadAdjustmentReport = (event) => {\r\n this.model.searchParams = _.clone(this.model.lastSearchParams);\r\n this.model.searchParams.gasDay = event.data.gasDay;\r\n this.model.searchParams.showDetails = true;\r\n this.model.searchParams.detailTabIndex = 1;\r\n this.searchClicked();\r\n };\r\n\r\n /** Protected Methods */\r\n protected loadInitialResources(): Observable {\r\n this.model.pipeline = this.sessionService.getPipeline();\r\n this.model.user = this.userService.user;\r\n\r\n const queryGasDayValues$ = this.queryGasDayValues();\r\n const getGasDayServerTime$ = this.getGasDayServerTime();\r\n\r\n return forkJoin([\r\n queryGasDayValues$,\r\n getGasDayServerTime$\r\n ]);\r\n }\r\n\r\n /** INHERITED METHODS */\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams = new LocationImbalanceReportSearchParams();\r\n this.model.searchParams.gasDay = this.model.defaultGasDay;\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams.gasDay = typedParams.asGasDay(LocationImbalanceReportComponent.PARAM_GAS_DAY);\r\n this.model.searchParams.customerEnterpriseId = typedParams.asNullableNumber(LocationImbalanceReportComponent.PARAM_ENTERPRISE_ID);\r\n this.model.searchParams.showDetails = typedParams.asBoolean(LocationImbalanceReportComponent.PARAM_SHOW_DETAILS);\r\n this.model.searchParams.locationId = this.model.searchParams.showDetails ? typedParams.asNullableNumber(LocationImbalanceReportComponent.PARAM_LOCATION_ID) : null;\r\n this.model.searchParams.detailTabIndex = this.model.searchParams.detailTabIndex ? typedParams.asNullableNumber(LocationImbalanceReportComponent.PARAM_DETAIL_TAB_INDEX) : 0;\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {};\r\n params[LocationImbalanceReportComponent.PARAM_GAS_DAY] = this.model.searchParams.gasDay;\r\n params[LocationImbalanceReportComponent.PARAM_ENTERPRISE_ID] = this.model.searchParams.customerEnterpriseId;\r\n params[LocationImbalanceReportComponent.PARAM_SHOW_DETAILS] = this.model.searchParams.showDetails;\r\n params[LocationImbalanceReportComponent.PARAM_LOCATION_ID] = this.model.searchParams.showDetails ? this.model.searchParams.locationId : null;\r\n params[LocationImbalanceReportComponent.PARAM_DETAIL_TAB_INDEX] = this.model.searchParams.detailTabIndex ? this.model.searchParams.detailTabIndex : 0;\r\n\r\n return params;\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n const locationNames$ = this.queryLocations();\r\n const queryShipperEnterprises$ = this.queryShipperEnterprises();\r\n\r\n return forkJoin([locationNames$, queryShipperEnterprises$]);\r\n }\r\n\r\n private queryLocations() : Observable {\r\n const gasDay = this.model.defaultGasDay;\r\n const user = this.userService.user;\r\n return this.nominationLocationService.queryLocationNames(new LocationSearchParams(gasDay, true, gasDay, false, _.isNil(user.enterpriseId), false))\r\n .pipe(tap(x => this.model.locations = x));\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.alertService.clearMessages();\r\n this.model.searchResults = null; // Destroy Grid (to refresh data grid, we do not want to preserve any expanded rows)\r\n this.model.detailSearchResults = null;\r\n this.model.searchParams.locationId = this.model.searchParams.showDetails ? this.model.searchParams.locationId : null;\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n\r\n const serviceCalls$: Observable[] = [];\r\n serviceCalls$.push(this.commonDataGasDayService.getServerTimeData()\r\n .pipe(\r\n tap(serverTimeData => this.model.searchResultsAsOf = serverTimeData.serverTime)\r\n ));\r\n\r\n serviceCalls$.push(this.flowingGasGasDayStatusService.getGasDayStatus(this.model.lastSearchParams.gasDay)\r\n .pipe(\r\n tap(results => {\r\n if (_.isNil(results)){\r\n this.alertService.addErrorMessage(\"Record not Found\", `No Gas Day Status record could be found for: ${this.model.lastSearchParams.gasDay}`);\r\n } else {\r\n results.statusCode = GasDayStatusCode.GetDisplayName(results.statusCode); // make enum prettier for user\r\n }\r\n this.model.gasDayStatus = results;\r\n })\r\n ));\r\n\r\n serviceCalls$.push(this.nppDataService.queryNppData(this.model.lastSearchParams.gasDay.previous(), this.model.lastSearchParams.gasDay, false)\r\n .pipe(\r\n tap(results => {\r\n if (_.isEmpty(results)){\r\n this.alertService.addErrorMessage(\"Record not Found\", `No NPP Data record could be found for: ${this.model.lastSearchParams.gasDay}`);\r\n return;\r\n }\r\n results.forEach(x => x.ofoState = OfoState.GetDisplayName(x.ofoState)); // make enum prettier for user);\r\n const sorted = _.reverse(results);\r\n this.model.nppDatas = sorted;\r\n })\r\n ));\r\n\r\n if (this.model.lastSearchParams.showDetails){\r\n serviceCalls$.push(this.flowingGasLocationImbalanceService.queryLocationSummaryDetail(this.buildQueryParams())\r\n .pipe(\r\n concatMap(locationImbalanceDetailReport =>\r\n forkJoin(\r\n this.nominationLocationEnrichmentService.enrichArray(locationImbalanceDetailReport.locationImbalanceDetailDtos, 'locationId', 'location'),\r\n this.nomGroupEnrichmentService.enrichArray(locationImbalanceDetailReport.locationImbalanceDetailDtos, 'nominationGroupId', 'nominationGroup'),\r\n this.nominationLocationEnrichmentService.enrichArray(locationImbalanceDetailReport.locationImbalanceAdjustmentDtos, 'locationId', 'location'),\r\n this.nomGroupEnrichmentService.enrichArray(locationImbalanceDetailReport.locationImbalanceAdjustmentDtos, 'nominationGroupId', 'nominationGroup')\r\n ).pipe(\r\n concatMap(() => {\r\n locationImbalanceDetailReport.locationImbalanceDetailDtos = _.orderBy(locationImbalanceDetailReport.locationImbalanceDetailDtos, ['locationName', 'nominationGroupMnemonic', 'inEnergy', 'transactionType']);\r\n locationImbalanceDetailReport.locationImbalanceAdjustmentDtos = _.orderBy(locationImbalanceDetailReport.locationImbalanceAdjustmentDtos, ['locationName', 'nominationGroupMnemonic', 'inEnergy', 'transactionType']);\r\n\r\n this.model.detailSearchResults = locationImbalanceDetailReport;\r\n\r\n return of (locationImbalanceDetailReport);\r\n })))));\r\n } else {\r\n serviceCalls$.push(this.flowingGasLocationImbalanceService.queryLocationSummary(this.buildQueryParams())\r\n .pipe(\r\n concatMap(locationImbalanceReport =>\r\n this.nominationLocationEnrichmentService.enrichArray(locationImbalanceReport.imbalanceByLocationDtos, 'locationId', 'location')\r\n .pipe(tap(() => {\r\n locationImbalanceReport.imbalanceByLocationDtos = _.orderBy(locationImbalanceReport.imbalanceByLocationDtos, ['locationName']);\r\n this.model.searchResults = locationImbalanceReport;\r\n }\r\n )\r\n )\r\n )\r\n ));\r\n }\r\n\r\n return forkJoin(serviceCalls$);\r\n }\r\n\r\n protected areParamsValid(params): boolean {\r\n const paramValidator = ParamValidator.Standard();\r\n\r\n paramValidator.isNumber(LocationImbalanceReportComponent.PARAM_ENTERPRISE_ID);\r\n paramValidator.isGasDay(LocationImbalanceReportComponent.PARAM_GAS_DAY);\r\n paramValidator.isNumber(LocationImbalanceReportComponent.PARAM_LOCATION_ID, true);\r\n paramValidator.isBoolean(LocationImbalanceReportComponent.PARAM_SHOW_DETAILS, true);\r\n paramValidator.isNumber(LocationImbalanceReportComponent.PARAM_DETAIL_TAB_INDEX);\r\n\r\n return paramValidator.isValid(params);\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n this.model.searchResults = null;\r\n }\r\n\r\n /** PRIVATE METHODS */\r\n\r\n private queryShipperEnterprises(): Observable {\r\n const accountsCustomerSearchParams = AccountsCustomerSearchParams.withNomGroupBusinessRights([BusinessRight.CustodyTransfer], false);\r\n accountsCustomerSearchParams.fromGasDay = this.model.currentGasDay;\r\n accountsCustomerSearchParams.toGasDay = GasDay.endOfTime();\r\n\r\n return this.accountsEnterpriseService.queryCustomers(accountsCustomerSearchParams,true, false)\r\n .pipe(\r\n concatMap(enterpriseIds => this.createAndEnrichEnterpriseIds(enterpriseIds)),\r\n tap(enterprises => {\r\n this.model.enterprises = this.orderEnterpriseByDisplayValue(enterprises);\r\n if (_.isNil(this.model.searchParams.customerEnterpriseId)) {\r\n this.setDefaultCustomer();\r\n }\r\n })\r\n );\r\n }\r\n\r\n private setDefaultCustomer(): void {\r\n if (!_.isUndefined(this.model.enterprises) && !_.isEmpty(this.model.enterprises)) {\r\n const enterpriseId = +this.model.user.enterpriseId;\r\n\r\n if (this.model.enterprises.length === 1) {\r\n this.model.searchParams.customerEnterpriseId = this.model.enterprises[0].cid;\r\n }\r\n else if (!_.isNil(enterpriseId) && _.some(this.model.enterprises, e => e.cid === enterpriseId)) {\r\n this.model.searchParams.customerEnterpriseId = enterpriseId;\r\n }\r\n }\r\n }\r\n\r\n private queryGasDayValues(): Observable {\r\n return this.flowingGasGasDayStatusService.getGasDayRangeDefault()\r\n .pipe(\r\n tap((gasDayRangeDefault) => {\r\n if (gasDayRangeDefault.start.isEqual(GasDay.startOfTime())){\r\n this.model.minGasDay = GasDay.today();\r\n this.model.maxGasDay = GasDay.today();\r\n this.model.defaultGasDay = null;\r\n this.model.gasDayDisabled = true;\r\n } else {\r\n this.model.minGasDay = gasDayRangeDefault.start as GasDay;\r\n this.model.maxGasDay = gasDayRangeDefault.end as GasDay;\r\n this.model.defaultGasDay = gasDayRangeDefault.default as GasDay;\r\n this.model.gasDayDisabled = false;\r\n }\r\n })\r\n );\r\n }\r\n\r\n private getGasDayServerTime(): Observable {\r\n return this.commonDataGasDayService.getServerTimeData()\r\n .pipe(\r\n tap(serverTimeData => {\r\n this.model.currentGasDay = serverTimeData.gasDay;\r\n })\r\n );\r\n }\r\n\r\n private createAndEnrichEnterpriseIds(enterpriseIds: number[]): Observable {\r\n const enterprises = _.map(enterpriseIds, enterpriseId => Enterprise.createWithId(enterpriseId));\r\n return this.enterpriseEnrichmentService.enrichArray(enterprises, 'cid');\r\n }\r\n\r\n private orderEnterpriseByDisplayValue(enterprises: Enterprise[]): Enterprise[] {\r\n return _.sortBy(enterprises, enterprise => enterprise.displayValue);\r\n }\r\n\r\n getOfoMaintenancePageLink(): string {\r\n // Return an empty link if the there are no active watches.\r\n if (this.model.searchResults.activeOfoWatchCount > 0) {\r\n return '/#/app/' + this.sessionService.getPipeline().code + '/ofomaintenance?searchType=GasDayRange&startGasDay=' + this.model.defaultGasDay + '&endGasDay=' + this.model.defaultGasDay + '&customerId=' + this.model.lastSearchParams.customerEnterpriseId;\r\n }\r\n return \"javascript:void(0)\";\r\n }\r\n\r\n // optionally set the height, otherwise grid shows full height when only a few records and doesn't look good.\r\n getGasDayGridHeight(): number {\r\n return _.isNil(this.model.searchResults) || this.model.searchResults.imbalanceByGasDayDtos.length < 15 ? null : 300;\r\n }\r\n\r\n getLinepackAlertBackgroundColor(linepackAlert: string) : string {\r\n switch(linepackAlert){\r\n case 'Low':\r\n return '#008000';\r\n case 'Medium':\r\n return 'yellow';\r\n case 'High':\r\n return 'red';\r\n }\r\n }\r\n\r\n getLinepackAlertColor(linepackAlert: string) : string {\r\n switch(linepackAlert){\r\n case 'Low':\r\n case 'High':\r\n return 'white';\r\n default:\r\n return 'black';\r\n }\r\n }\r\n\r\n resetClicked() {\r\n this.model.gasDayStatus = null;\r\n this.model.nppDatas = null;\r\n super.resetClicked();\r\n }\r\n}\r\n","import {BaseViewModel} from \"@model/base-view-model\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {NppData, NppDataDefaultsDto} from \"@shared/services/flowing-gas/npp-data-service/npp-data.service\";\r\nimport {NominationPipelineGasDay} from \"@model/nomination-pipeline-gas-day\";\r\n\r\nexport class NppDataSearchParams {\r\n startGasDay: GasDay;\r\n endGasDay: GasDay;\r\n showRevisions: boolean = false;\r\n}\r\n\r\nexport class NppDataModel extends BaseViewModel {\r\n minSearchGasDay: GasDay;\r\n minAddGasDayDate: Date;\r\n maxGasDay: GasDay;\r\n maxGasDayDate: Date;\r\n\r\n searchParams: NppDataSearchParams = new NppDataSearchParams();\r\n lastSearchParams: NppDataSearchParams = null;\r\n\r\n showFilterSection: boolean = true;\r\n addButtonDisabled: boolean = true;\r\n\r\n searchResults: NppData[] = null;\r\n searchDateTime: Date;\r\n\r\n isAdding: boolean = false;\r\n isEditing: boolean = false;\r\n isEditingRowValid: boolean = false;\r\n rowAdded: any;\r\n rowAddError: boolean = false;\r\n pipelineGasDay: NominationPipelineGasDay;\r\n linepackAlerts: any;\r\n ofoStates: any;\r\n nnpDataDefaults: NppDataDefaultsDto;\r\n\r\n\r\n clearSearchResults() {\r\n this.searchResults = null;\r\n this.searchDateTime = null;\r\n this.addButtonDisabled = true;\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n -\r\n +\r\n Filters\r\n 0\" style=\"font-weight: normal;\">\r\n :\r\n Start Gas Day: {{model.lastSearchParams?.startGasDay | gasDayFormat}}\r\n End Gas Day: {{model.lastSearchParams?.endGasDay | gasDayFormat}}\r\n Revisions: {{model.lastSearchParams?.showRevisions | booleanAsYesNo}}\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.startGasDay | gasDayFormat}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.endGasDay | gasDayFormat}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.showRevisions | booleanAsYesNo}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n Number of results found: {{model.searchResults.length}}\r\n\r\n
0\" class=\"pull-right\">\r\n Export CSV\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n End of
Gas Day\r\n
\r\n
\r\n {{row.value | dateFormat: 'YYYY-MM-DD'}}\r\n
\r\n\r\n \r\n\r\n \r\n \r\n
\r\n Closing Linepack
Quantity (GJ)\r\n
\r\n\r\n \r\n \r\n \r\n
\r\n Target Linepack
Quantity (GJ)\r\n
\r\n\r\n \r\n \r\n \r\n \r\n
\r\n Linepack
Alert\r\n
\r\n\r\n \r\n \r\n \r\n \r\n
\r\n OFO
State\r\n
\r\n\r\n \r\n \r\n \r\n \r\n
\r\n Low ASQ
Limit (%)\r\n
\r\n\r\n \r\n \r\n \r\n \r\n
\r\n High ASQ
Limit (%)\r\n
\r\n\r\n \r\n \r\n
\r\n {{row.value | dateTimeFormat}}\r\n
\r\n\r\n \r\n \r\n \r\n \r\n
\r\n Operational
Information\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n","import {Component, ViewChild} from '@angular/core';\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {IDateDisplayFormat} from \"@shared/interfaces/date-display-format\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {NominationGroupService} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {Observable, of} from \"rxjs\";\r\nimport {tap} from \"rxjs/operators\";\r\nimport * as _ from \"lodash\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport * as dx from \"devextreme/core/renderer\";\r\nimport {NppDataModel, NppDataSearchParams} from \"app/gcts/flowinggas/view-npp-data/view-npp-data.model\";\r\nimport {NppData, NppDataService} from \"@shared/services/flowing-gas/npp-data-service/npp-data.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {NominationPipelineGasDay} from \"@model/nomination-pipeline-gas-day\";\r\nimport {NominationSystemService} from \"@shared/services/nomination/nomination-system/nomination-system.service\";\r\nimport {YesNoModalOptions} from \"@shared/services/webapp/modal-options/yes-no-modal-options\";\r\nimport {SelectedModalOption} from \"@shared/services/webapp/modal-options/selected-modal-option\";\r\nimport {YesNoCancelModalService} from \"@shared/services/webapp/yes-no-cancel-modal/yes-no-cancel-modal.service\";\r\nimport {OfoState} from \"@shared/enums/ofo-state\";\r\n\r\n@Component({\r\n selector: 'app-view-npp-data',\r\n templateUrl: './view-npp-data.component.html',\r\n styleUrls: ['./view-npp-data.component.css']\r\n})\r\nexport class ViewNppDataComponent extends BaseSearchComponent {\r\n\r\n model: NppDataModel = new NppDataModel();\r\n dateEditorFormat: IDateDisplayFormat;\r\n editors: object = {};\r\n currentRowIndex: number;\r\n\r\n @ViewChild(DxDataGridComponent) dataGrid: DxDataGridComponent;\r\n\r\n constructor(protected appService: AppService,\r\n protected router: Router,\r\n protected activatedRoute: ActivatedRoute,\r\n public alertService: AlertService,\r\n protected nominationGroupService: NominationGroupService,\r\n protected fileService: FileService,\r\n private nppDataService: NppDataService,\r\n private nominationSystemService: NominationSystemService,\r\n private modalService: YesNoCancelModalService) {\r\n super('NPP Data', appService, activatedRoute, router, alertService);\r\n\r\n this.dateEditorFormat = {\r\n formatter: this.dateEditorFormatter,\r\n parser: this.dateEditorParser\r\n };\r\n }\r\n\r\n private paramValidator(): ParamValidator {\r\n return ParamValidator.Standard();\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return this.paramValidator().isValid(params);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {};\r\n params['startGasDay'] = this.model.searchParams.startGasDay;\r\n params['endGasDay'] = this.model.searchParams.endGasDay;\r\n params['showRevisions'] = this.model.searchParams.showRevisions;\r\n return params;\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n this.model.linepackAlerts = ['Low', 'Medium', 'High'];\r\n this.model.ofoStates = OfoState.Types;\r\n\r\n return this.nominationSystemService.pipelineGasDay().pipe(\r\n tap((pipelineGasDay: NominationPipelineGasDay) => {\r\n if (!pipelineGasDay.hasGasDayCycles()) {\r\n this.alertService.addErrorMessage(\"Error\", \"There are no Gas Day Cycles for the pipeline.\");\r\n return;\r\n }\r\n if (pipelineGasDay.latestLaunchedGasDay == null) {\r\n this.alertService.addErrorMessage(\"Error\", \"There are no launched Gas Days for the pipeline.\");\r\n return;\r\n }\r\n this.appService.clearMessages();\r\n this.model.pipelineGasDay = pipelineGasDay;\r\n this.model.minSearchGasDay = pipelineGasDay.earliestSelectableGasDay;\r\n this.model.minAddGasDayDate = GasDay.max([pipelineGasDay.earliestSelectableGasDay, pipelineGasDay.actualGasDay]).toDate; // grid calendar expects a date, not a gasday, and calling toDate in config crashes grid\r\n }));\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n return of(null);\r\n }\r\n\r\n public performSearch(): Observable {\r\n if (this.model.searchParams.startGasDay > this.model.searchParams.endGasDay) {\r\n this.alertService.addWarnMessage(\"Error\", \"The filter Start Gas Day must be before the End Gas Day.\");\r\n return of(null);\r\n }\r\n\r\n this.appService.clearMessages();\r\n this.clearEditMode(null);\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n this.model.searchResults = null;\r\n this.model.addButtonDisabled = false;\r\n\r\n return this.nppDataService.queryNppData(this.model.searchParams.startGasDay, this.model.searchParams.endGasDay, this.model.searchParams.showRevisions).pipe(\r\n tap(results => this.model.searchResults = results)\r\n );\r\n }\r\n\r\n resetClicked(): void {\r\n this.clearEditMode(null);\r\n\r\n super.resetClicked();\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams = new NppDataSearchParams();\r\n const previousGasDay = this.model.pipelineGasDay.actualGasDay.previous();\r\n this.model.searchParams.startGasDay = previousGasDay >= this.model.minSearchGasDay ? previousGasDay : this.model.minSearchGasDay;\r\n this.model.searchParams.endGasDay = this.model.pipelineGasDay.actualGasDay.next();\r\n this.model.clearSearchResults();\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams.startGasDay = typedParams.asGasDay('startGasDay');\r\n this.model.searchParams.endGasDay = typedParams.asGasDay('endGasDay');\r\n this.model.searchParams.showRevisions = typedParams.asNullableBoolean('showRevisions');\r\n }\r\n\r\n public exportCsvClicked() {\r\n const csvData = [];\r\n this.model.searchResults.forEach((r: NppData) => {\r\n csvData.push({\r\n endOfGasDay: GasDay.from(r.endOfGasDay).toString(),\r\n netPipelinePosition: r.netPipelinePosition,\r\n closingLinepackQuantity: r.closingLinepackQuantity,\r\n targetLinepackQuantity: r.targetLinepackQuantity,\r\n linepackAlert: r.linepackAlert,\r\n ofoState: this.getOfoStateDisplayText(r),\r\n lowAsqLimit: r.lowAsqLimit,\r\n highAsqLimit: r.highAsqLimit,\r\n issueDateTime: r.issueDateTime.toDisplayFormat(),\r\n operationalInformation: r.operationalInformation\r\n });\r\n });\r\n\r\n const fileName = `NppData__From_${this.model.searchParams.startGasDay.toDisplayFormat()}_To_${this.model.searchParams.endGasDay.toDisplayFormat()}.csv`;\r\n const headers = ['End of Gas Day', 'NPP (GJ)', 'Closing Linepack Quantity (GJ)', 'Target Linepack Quantity (GJ)', 'Linepack Alert'\r\n , 'OFO State', 'Low ASQ Limit (%)', 'High ASQ Limit (%)', 'Issue Date/Time', 'Operational Information'];\r\n const columns = ['endOfGasDay', 'netPipelinePosition', 'closingLinepackQuantity', 'targetLinepackQuantity', 'linepackAlert', 'ofoState', 'lowAsqLimit', 'highAsqLimit', 'issueDateTime', 'operationalInformation'];\r\n this.fileService.downloadCsvFile(fileName, csvData, headers, columns);\r\n }\r\n\r\n public dateEditorFormatter(date: Date): string {\r\n const gasDay = GasDay.from(date);\r\n return gasDay.toDisplayFormat();\r\n }\r\n\r\n public dateEditorParser(value: string): Date {\r\n try {\r\n return GasDay.parse(value).toDate;\r\n } catch (e) {\r\n return new Date(NaN);\r\n }\r\n }\r\n\r\n public addClicked(): void {\r\n this.dataGrid.instance.clearSorting();\r\n this.alertService.clearMessages();\r\n this.model.isAdding = this.model.addButtonDisabled = true;\r\n this.model.isEditingRowValid = false;\r\n this.dataGrid.instance.addRow();\r\n }\r\n\r\n public editClicked(cellInfo: any): void {\r\n this.alertService.clearMessages();\r\n\r\n // refresh the npp value on edit\r\n const gasDay = GasDay.from(cellInfo.data.endOfGasDay);\r\n this.getNppDataDefaults(gasDay, cellInfo.data);\r\n\r\n this.model.isEditingRowValid = false;\r\n this.model.isEditing = this.model.addButtonDisabled = true;\r\n cellInfo.data.isEditing = true;\r\n cellInfo.component.editRow(cellInfo.rowIndex);\r\n }\r\n\r\n public saveClicked(cellInfo: any): void {\r\n if (this.model.isAdding && !_.isNil(this.model.nnpDataDefaults) && this.model.nnpDataDefaults.endOfGasDayExists) {\r\n const yesNoModalOptions = new YesNoModalOptions('Save Warning', 'NPP Data is already added for the selected gas day. Would you like to continue?', 'Cancel', 'OK');\r\n this.modalService.show(yesNoModalOptions).subscribe((selectedModalOption: SelectedModalOption) => {\r\n if (selectedModalOption === SelectedModalOption.Yes) {\r\n this.saveNppData(cellInfo);\r\n }\r\n });\r\n } else {\r\n this.saveNppData(cellInfo);\r\n }\r\n }\r\n\r\n private saveNppData(cellInfo: any) {\r\n this.alertService.clearMessages();\r\n this.dataGrid.instance.saveEditData().then(() => {\r\n const nppData = cellInfo.row.data as NppData;\r\n this.nppDataService.createOrUpdateNppData(nppData).subscribe(() => {\r\n this.clearEditMode(cellInfo);\r\n this.alertService.addSuccessMessage(\"Save Success:\", 'The NPP Data was saved.');\r\n this.performSearch().subscribe();\r\n }, () => {\r\n if (this.model.isEditing){\r\n this.model.isEditingRowValid = false;\r\n this.model.isEditing = this.model.addButtonDisabled = true;\r\n cellInfo.data.isEditing = true;\r\n cellInfo.component.editRow(cellInfo.rowIndex);\r\n } else {\r\n this.model.searchResults.unshift(this.model.searchResults.pop());\r\n this.model.rowAdded = cellInfo;\r\n this.model.rowAddError = true;\r\n if (this.model.searchResults.length < 2) {\r\n this.dataGrid.instance.repaint();\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n onContentReady() {\r\n if (this.model.rowAddError) {\r\n this.model.rowAddError = false;\r\n this.model.rowAdded.component.editRow(0);\r\n }\r\n }\r\n\r\n public cancelClicked(cellInfo: any): void {\r\n this.alertService.clearMessages();\r\n this.clearEditMode(cellInfo);\r\n this.performSearch().subscribe(() => {\r\n });\r\n }\r\n\r\n public onInitNewRow(event: any): void {\r\n this.dataGrid.sorting.mode = 'none';\r\n\r\n const nppData = new NppData();\r\n nppData.linepackAlert = 'Low';\r\n nppData.ofoState = 'NonCriticalDay';\r\n nppData.lowAsqLimit = 0;\r\n nppData.highAsqLimit = 0;\r\n event.data = nppData;\r\n event.data.isEditing = true;\r\n }\r\n\r\n public onEditorPrepared(event: any) {\r\n if (event.parentType !== 'dataRow') {\r\n return;\r\n }\r\n\r\n this.currentRowIndex = event.row.rowIndex;\r\n let dxEditorInstance = null;\r\n switch (event.dataField) {\r\n case \"linepackAlert\":\r\n case \"ofoState\":\r\n dxEditorInstance = dx(event.editorElement).dxSelectBox('instance');\r\n break;\r\n case \"netPipelinePosition\":\r\n case \"closingLinepackQuantity\":\r\n case \"targetLinepackQuantity\":\r\n case \"lowAsqLimit\":\r\n case \"highAsqLimit\":\r\n dxEditorInstance = dx(event.editorElement).dxNumberBox('instance');\r\n const numberFormat = event.dataField === \"targetLinepackQuantity\" ? '#' : 'fixedPoint'; // # prevents 0's\r\n dxEditorInstance.option('format', numberFormat); // ints only\r\n break;\r\n case \"endOfGasDay\":\r\n dxEditorInstance = dx(event.editorElement).dxDateBox('instance');\r\n break;\r\n case \"operationalInformation\":\r\n dxEditorInstance = dx(event.editorElement).dxTextBox('instance');\r\n break;\r\n }\r\n if (dxEditorInstance) {\r\n dxEditorInstance.option('valueChangeEvent', 'keydown keyup');\r\n dxEditorInstance.on('valueChanged', (vce) => {\r\n event.setValue(vce.value);\r\n event.component.getController('validating').validate().then((result: boolean) => {\r\n this.model.isEditingRowValid = result;\r\n });\r\n\r\n if (event.dataField === \"endOfGasDay\") {\r\n const gasDay = GasDay.from(vce.value);\r\n this.getNppDataDefaults(gasDay, event.row.data);\r\n }\r\n });\r\n\r\n this.editors[event.dataField] = dxEditorInstance;\r\n }\r\n }\r\n\r\n private clearEditMode(rowData: any): void {\r\n if (rowData != null){\r\n rowData.isEditing = false;\r\n }\r\n\r\n this.model.isAdding = false;\r\n this.model.isEditing = false;\r\n this.model.addButtonDisabled = false;\r\n this.model.isEditingRowValid = true;\r\n this.model.nnpDataDefaults = null;\r\n this.currentRowIndex = null;\r\n }\r\n\r\n protected getOfoStateDisplayText(rowData: NppData): string {\r\n return OfoState.GetDisplayName(rowData.ofoState);\r\n }\r\n\r\n private getNppDataDefaults(gasDay: GasDay, nppData: NppData) {\r\n this.nppDataService.queryNppDataDefaults(gasDay).subscribe(defaults => {\r\n this.model.nnpDataDefaults = defaults;\r\n\r\n nppData.netPipelinePosition = defaults.netPipelinePosition;\r\n this.dataGrid.instance.cellValue(this.currentRowIndex, 'netPipelinePosition', defaults.netPipelinePosition);\r\n if (this.model.isAdding) {\r\n this.editors[\"lowAsqLimit\"].option('value', defaults.lowAsqLimit);\r\n this.editors[\"highAsqLimit\"].option('value', defaults.highAsqLimit);\r\n }\r\n });\r\n }\r\n\r\n onEditingStart($event: any) {\r\n this.dataGrid.sorting.mode = 'none';\r\n }\r\n\r\n onRowUpdated($event: any) {\r\n this.dataGrid.sorting.mode = 'multiple';\r\n }\r\n\r\n onRowInserted($event: any) {\r\n this.dataGrid.sorting.mode = 'multiple';\r\n }\r\n\r\n allowRowEdit(data) : boolean {\r\n return !data.isEditing && data.isLatest && data.endOfGasDay >= this.model.minAddGasDayDate;\r\n }\r\n}\r\n","import {BaseViewModel} from \"@model/base-view-model\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {TrendComplianceDataDto} from \"@shared/services/flowing-gas/flowing-gas-trend-compliance-service/flowing-gas-trend-compliance-service\";\r\nimport {DateTime} from \"@model/date-time\";\r\n\r\nexport class TrendComplianceModel extends BaseViewModel {\r\n\r\n public minGasDay: GasDay;\r\n public maxGasDay: GasDay;\r\n public defaultGasDay: GasDay;\r\n\r\n public searchParams: TrendComplianceSearchParams = new TrendComplianceSearchParams();\r\n public lastSearchParams: TrendComplianceSearchParams;\r\n\r\n public searchResults: TrendComplianceDataDto;\r\n public searchDateTime: DateTime;\r\n\r\n public expandAll: boolean = false;\r\n\r\n public hasSearchResults(): boolean {\r\n return !!this.searchResults;\r\n }\r\n\r\n public clearSearchResults(): void {\r\n this.searchResults = null;\r\n this.lastSearchParams = null;\r\n }\r\n}\r\n\r\nexport class TrendComplianceSearchParams {\r\n public gasDay: GasDay;\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {FlowinggasResourceService} from \"@shared/resources/flowinggas-resource.service\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {Observable} from \"rxjs\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {NppDataDto} from \"@shared/services/flowing-gas/npp-data-service/npp-data.service\";\r\nimport {NominationGroupService, SimpleNominationGroup} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport * as _ from \"lodash\";\r\nimport {AccountsCustomerSearchParams, AccountsEnterpriseService} from \"@shared/services/accounts/accounts-enterprise/accounts-enterprise.service\";\r\nimport {BusinessRight} from \"@model/business-right\";\r\nimport {mergeMap} from \"rxjs/operators\";\r\n\r\nexport interface TrendComplianceCustomerDataDto {\r\n enterpriseId: number;\r\n nominationGroupId: number;\r\n accumulatedBalance: number;\r\n authorizedSwingQuantityLow: number;\r\n authorizedSwingQuantityHigh: number;\r\n activeOfoWatchCount: number;\r\n}\r\n\r\nexport interface TrendComplianceDataDto {\r\n queryDateTime: Date;\r\n gasDay: GasDay;\r\n gasDayStatus: string;\r\n nppData: NppDataDto;\r\n customerData: TrendComplianceCustomerDataDto[];\r\n}\r\n\r\n@Injectable()\r\nexport class FlowingGasTrendComplianceService {\r\n\r\n constructor(\r\n private accountsEnterpriseService: AccountsEnterpriseService,\r\n private nominationGroupService: NominationGroupService,\r\n private flowingGasResource: FlowinggasResourceService) {\r\n }\r\n\r\n public getTrendComplianceData(gasDay: GasDay): Observable {\r\n const urlSearchParams = new GCTSHttpParams();\r\n urlSearchParams.setGasDay(gasDay);\r\n\r\n return this.flowingGasResource.get('/reports/trendCompliance', true, urlSearchParams);\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Gas Day: {{model.lastSearchParams?.gasDay | gasDayFormat}}\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.gasDay | gasDayFormat}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{getGasDayStatusCodeDisplayValue()}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.searchResults.nppData.closingLinepackQuantity | number}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.searchResults.nppData.netPipelinePosition | number}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.searchResults.nppData.targetLinepackQuantity | number}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{getOfoStateDisplayValue()}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.searchResults.nppData.linepackAlert}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.searchResults.nppData.lowAsqLimit | number}} /+ {{model.searchResults.nppData.highAsqLimit | number}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.searchResults.nppData.operationalInformation}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n Number of results found: {{model.searchResults?.customerData.length}}\r\n As of: {{ model.searchDateTime | dateTimeFormat }}\r\n
0\" class=\"pull-right\">\r\n Export CSV\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {{row.data.activeOfoWatchCount === 0 ? '' : row.data.activeOfoWatchCount}}\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n","import { Component } from '@angular/core';\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {forkJoin, Observable, of} from \"rxjs\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {TrendComplianceModel, TrendComplianceSearchParams} from \"app/gcts/flowinggas/trend-compliance/trend-compliance.model\";\r\nimport {concatMap, map, tap} from \"rxjs/operators\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {FlowingGasGasDayStatusService} from \"@shared/services/flowing-gas/flowing-gas-gas-day-status-service/flowing-gas-gas-day-status.service\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport * as _ from \"lodash\";\r\nimport {FlowingGasTrendComplianceService, TrendComplianceDataDto} from \"@shared/services/flowing-gas/flowing-gas-trend-compliance-service/flowing-gas-trend-compliance-service\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {DateTime} from \"@model/date-time\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {NominationGroupService} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport {NomGroupEnrichmentService} from \"@shared/services/enrichment/nomgroup-enrichment.service\";\r\nimport {OfoState} from \"@shared/enums/ofo-state\";\r\nimport {GasDayStatusCode} from \"@shared/enums/gas-day-status-code\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\n\r\n@Component({\r\n selector: 'app-trend-compliance',\r\n templateUrl: './trend-compliance.component.html',\r\n styleUrls: ['./trend-compliance.component.css']\r\n})\r\n\r\nexport class TrendComplianceComponent extends BaseSearchComponent {\r\n\r\n constructor(appService: AppService,\r\n activatedRoute: ActivatedRoute,\r\n router: Router,\r\n alertService: AlertService,\r\n private flowingGasGasDayStatusService: FlowingGasGasDayStatusService,\r\n private flowingGasTrendComplianceService: FlowingGasTrendComplianceService,\r\n private enterpriseService: EnterpriseService,\r\n private nominationGroupService: NominationGroupService,\r\n private enterpriseEnrichmentService: EnterpriseEnrichmentService,\r\n private nomGroupEnrichmentService: NomGroupEnrichmentService,\r\n private fileService: FileService,\r\n private sessionService: SessionService) {\r\n super('Trend Compliance', appService, activatedRoute, router, alertService);\r\n\r\n enterpriseEnrichmentService.setEnrichmentResource(enterpriseService);\r\n nomGroupEnrichmentService.setEnrichmentResource(nominationGroupService);\r\n }\r\n\r\n model: TrendComplianceModel = new TrendComplianceModel();\r\n\r\n protected loadInitialResources(): Observable {\r\n return this.flowingGasGasDayStatusService.getGasDayRangeDefault()\r\n .pipe(\r\n tap((gasDayRangeDefault) => {\r\n if (gasDayRangeDefault.start.isEqual(GasDay.startOfTime())){\r\n this.model.minGasDay = GasDay.today();\r\n this.model.maxGasDay = GasDay.today();\r\n this.model.defaultGasDay = this.model.minGasDay;\r\n } else {\r\n this.model.minGasDay = gasDayRangeDefault.start as GasDay;\r\n this.model.maxGasDay = gasDayRangeDefault.end as GasDay;\r\n this.model.defaultGasDay = gasDayRangeDefault.default as GasDay;\r\n }\r\n })\r\n );\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n return of({});\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams = new TrendComplianceSearchParams();\r\n this.model.searchParams.gasDay = this.model.defaultGasDay;\r\n\r\n this.model.clearSearchResults();\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {};\r\n params['gasDay'] = this.model.searchParams.gasDay;\r\n\r\n return params;\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n const paramValidator = ParamValidator.Standard();\r\n return paramValidator.isValid(params);\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams = new TrendComplianceSearchParams();\r\n this.model.searchParams.gasDay = typedParams.asGasDay('gasDay');\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.searchResults = null;\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n\r\n return this.getTrendComplianceData(this.model.searchParams.gasDay)\r\n .pipe(\r\n tap( trendCompliance => {\r\n this.model.searchResults = trendCompliance;\r\n this.model.searchDateTime = new DateTime(trendCompliance.queryDateTime);\r\n })\r\n );\r\n }\r\n\r\n private getTrendComplianceData(gasDay: GasDay): Observable {\r\n return this.flowingGasTrendComplianceService.getTrendComplianceData(gasDay)\r\n .pipe(\r\n concatMap(response => {\r\n return forkJoin( [\r\n this.enterpriseEnrichmentService.enrichArray(response.customerData, 'enterpriseId', 'enterprise'),\r\n this.nomGroupEnrichmentService.enrichArray(response.customerData, 'nominationGroupId', 'nominationGroup')\r\n ]).pipe(map(() => response));\r\n }));\r\n }\r\n\r\n public getOfoMaintenancePageLink(): string {\r\n return '/#/app/' + this.sessionService.getPipeline().code + '/ofomaintenance?searchType=GasDayRange&startGasDay=' + this.model.defaultGasDay + '&endGasDay=' + this.model.defaultGasDay;\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n public onAsqDisplay(rowData): string{\r\n return `${rowData.authorizedSwingQuantityLow.toLocaleString()} /+ ${rowData.authorizedSwingQuantityHigh.toLocaleString()}`;\r\n }\r\n\r\n public onCellPrepared(e): void{\r\n if (e.rowType === 'header') return;\r\n\r\n if (e.column.dataField === \"accumulatedBalance\" && (e.data.accumulatedBalance < e.data.authorizedSwingQuantityLow || e.data.accumulatedBalance > e.data.authorizedSwingQuantityHigh)) {\r\n if (!this.model.searchResults.nppData\r\n || (e.data.accumulatedBalance > 0 && this.model.searchResults.nppData.netPipelinePosition > 0)\r\n || (e.data.accumulatedBalance < 0 && this.model.searchResults.nppData.netPipelinePosition < 0)\r\n ) {\r\n e.cellElement.style.color = \"white\";\r\n e.cellElement.style.backgroundColor = \"red\";\r\n }\r\n else {\r\n e.cellElement.style.backgroundColor = \"yellow\";\r\n }\r\n }\r\n }\r\n\r\n exportCsvClicked() {\r\n const csvData = [];\r\n\r\n const csvOrderedData = _.orderBy(this.model.searchResults.customerData, ['enterpriseShortName'], ['asc']);\r\n\r\n for (const row of csvOrderedData) {\r\n csvData.push({\r\n customer: row['enterpriseShortName'],\r\n accountMnemonic: row['nominationGroupMnemonic'],\r\n accumulatedBalance: row['accumulatedBalance'],\r\n authorizedSwingQuantityLow: row['authorizedSwingQuantityLow'],\r\n authorizedSwingQuantityHigh: row['authorizedSwingQuantityHigh'],\r\n activeOfoWatchCount: row['activeOfoWatchCount']\r\n });\r\n }\r\n\r\n const filename = `TrendCompliance_${this.model.lastSearchParams.gasDay.toDisplayFormat()}.csv`;\r\n\r\n const headers = ['Customer', 'Account', 'Accumulated Balance (GJ)', 'Lower Authorized Swing Quantity (GJ)', 'Upper Authorized Swing Quantity (GJ)', 'Active/Pending OFO Watches'];\r\n\r\n const columns = ['customer', 'accountMnemonic', 'accumulatedBalance', 'authorizedSwingQuantityLow', 'authorizedSwingQuantityHigh', 'activeOfoWatchCount'];\r\n\r\n this.fileService.downloadCsvFile(filename, csvData, headers, columns);\r\n }\r\n\r\n getOfoStateDisplayValue() {\r\n return OfoState.GetDisplayName(this.model.searchResults.nppData.ofoState);\r\n }\r\n\r\n getGasDayStatusCodeDisplayValue() {\r\n return GasDayStatusCode.GetDisplayName(this.model.searchResults.gasDayStatus);\r\n }\r\n}\r\n","export class OfoStatus {\r\n constructor(\r\n public id: string,\r\n public name: string\r\n ) {}\r\n\r\n public static PENDING = new OfoStatus('Pending', 'Pending');\r\n public static ACTIVE = new OfoStatus('Active', 'Active');\r\n public static EXPIRED = new OfoStatus('Expired', 'Expired');\r\n public static CANCELLED = new OfoStatus('Cancelled', 'Cancelled');\r\n\r\n public static ALL = [OfoStatus.PENDING, OfoStatus.ACTIVE, OfoStatus.EXPIRED, OfoStatus.CANCELLED];\r\n\r\n public static isActiveOrPending(status: string) {\r\n return status && (status === OfoStatus.PENDING.id || status === OfoStatus.ACTIVE.id);\r\n }\r\n\r\n public static getPermissibleStatuses(status :string, isAdding: boolean): OfoStatus[] {\r\n let nextStatuses: OfoStatus[];\r\n if (isAdding) {\r\n nextStatuses = [OfoStatus.PENDING, OfoStatus.ACTIVE];\r\n }\r\n else {\r\n switch (status) {\r\n case 'Pending':\r\n nextStatuses = [OfoStatus.PENDING, OfoStatus.ACTIVE, OfoStatus.CANCELLED];\r\n break;\r\n case 'Active':\r\n nextStatuses = [OfoStatus.ACTIVE, OfoStatus.EXPIRED];\r\n break;\r\n default:\r\n nextStatuses = [new OfoStatus(status, status)];\r\n }\r\n }\r\n return nextStatuses;\r\n }\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {BehaviorSubject, Observable, of, Subject} from \"rxjs\";\r\nimport {concatMap, tap} from \"rxjs/operators\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {OfoStatus} from \"@model/ofo-status\";\r\nimport {FlowinggasResourceService} from \"@shared/resources/flowinggas-resource.service\";\r\nimport {FlowingGasTrendComplianceService, TrendComplianceDataDto} from \"@shared/services/flowing-gas/flowing-gas-trend-compliance-service/flowing-gas-trend-compliance-service\";\r\nimport {FlowingGasGasDayStatusService} from \"@shared/services/flowing-gas/flowing-gas-gas-day-status-service/flowing-gas-gas-day-status.service\";\r\nimport {YesNoModalOptions} from \"@shared/services/webapp/modal-options/yes-no-modal-options\";\r\nimport {SelectedModalOption} from \"@shared/services/webapp/modal-options/selected-modal-option\";\r\nimport {YesNoCancelModalService} from \"@shared/services/webapp/yes-no-cancel-modal/yes-no-cancel-modal.service\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport * as moment from \"moment\";\r\nimport * as _ from \"lodash\";\r\n\r\nexport function toJsonNoTimeZone(date: Date | GasDay) : string {\r\n if (_.isNil(date)) return '';\r\n\r\n const tmpDate = (date instanceof GasDay) ? date.toDate : date;\r\n\r\n return moment(tmpDate).format('YYYY-MM-DD[T]HH:mm:ss');\r\n}\r\n\r\nexport class OfoWatchShipperData {\r\n id: number;\r\n shipperEnterpriseId: number;\r\n shipperMnemonic: string;\r\n nominationGroupId: number;\r\n lowAsqLimit: number;\r\n highAsqLimit: number;\r\n accumulatedBalance: number;\r\n createDateTime: Date;\r\n issueDateTime: Date;\r\n expiryDateTime: Date;\r\n complianceByGasDay: Date; // needs to be a Date in order to work with the dxi-column calendar control\r\n expiryStartOfGasDay: Date;\r\n expiryNoticeDateTime: Date;\r\n status: string;\r\n notificationStatus: string;\r\n notificationStatusMessage: string;\r\n expiryNotificationStatus: string;\r\n expiryNotificationStatusMessage: string;\r\n\r\n shipperEnterprise: string; // names from enhancement only used for dialog building\r\n shipperEnterpriseShortName: string;\r\n shipperEnterpriseMnemonic: string;\r\n nominationGroupMnemonic: string;\r\n\r\n ofoWatchReferenceId: string;\r\n\r\n public static reviveDates(shipper: OfoWatchShipperData): void {\r\n shipper.complianceByGasDay = _.isNil(shipper.complianceByGasDay)\r\n ? null\r\n : typeof shipper.complianceByGasDay === 'string'\r\n ? GasDay.parse(shipper.complianceByGasDay).toDate\r\n : shipper.complianceByGasDay;\r\n shipper.issueDateTime = _.isNil(shipper.issueDateTime) ? null : new Date(shipper.issueDateTime);\r\n shipper.expiryDateTime = _.isNil(shipper.expiryDateTime) ? null : new Date(shipper.expiryDateTime);\r\n shipper.expiryNoticeDateTime = _.isNil(shipper.expiryNoticeDateTime) ? null : new Date(shipper.expiryNoticeDateTime);\r\n shipper.expiryStartOfGasDay = _.isNil(shipper.expiryStartOfGasDay) ? null : new Date(shipper.expiryStartOfGasDay);\r\n\r\n }\r\n\r\n public toDto(): any {\r\n return {\r\n shipperEnterpriseId: this.shipperEnterpriseId,\r\n shipperMnemonic: _.isNil(this?.shipperMnemonic) ? this?.shipperEnterpriseMnemonic : this.shipperMnemonic,\r\n nominationGroupId: this.nominationGroupId,\r\n lowAsqLimit: this.lowAsqLimit,\r\n highAsqLimit: this.highAsqLimit,\r\n accumulatedBalance: this.accumulatedBalance,\r\n issueDateTime: toJsonNoTimeZone(this?.issueDateTime),\r\n complianceByGasDay: _.isNil(this?.complianceByGasDay) ? '' : toJsonNoTimeZone(this?.complianceByGasDay),\r\n expiryStartOfGasDay: toJsonNoTimeZone(this?.expiryStartOfGasDay),\r\n expiryDateTime: toJsonNoTimeZone(this?.expiryDateTime),\r\n expiryNoticeDateTime: toJsonNoTimeZone(this?.expiryNoticeDateTime),\r\n status : this.status\r\n };\r\n }\r\n}\r\n\r\nexport class OfoWatchOrderData {\r\n public referenceId: string;\r\n public ofoType: string;\r\n public complianceRequirement: string;\r\n public status: string;\r\n public activationDateTime: Date;\r\n public expiryDateTime: Date;\r\n public createDateTime: Date;\r\n\r\n public static reviveDates(order: OfoWatchOrderData): void {\r\n order.activationDateTime = _.isNil(order.activationDateTime) ? null : new Date(order.activationDateTime);\r\n order.createDateTime = _.isNil(order.createDateTime) ? null : new Date(order.createDateTime);\r\n order.expiryDateTime = _.isNil(order.expiryDateTime) ? null : new Date(order.expiryDateTime);\r\n }\r\n}\r\n\r\nexport class OfoWatchData {\r\n public referenceId: string;\r\n public ofoType: string;\r\n public complianceRequirement: string;\r\n public status: string;\r\n public activationDateTime: Date;\r\n public createDateTime: Date;\r\n public expiryDateTime: Date;\r\n public expiryStartOfGasDay: Date;\r\n public shippers: OfoWatchShipperData[];\r\n public ofoOrders: OfoWatchOrderData[];\r\n\r\n public static reviveDates(watch: OfoWatchData): void {\r\n watch.activationDateTime = _.isNil(watch.activationDateTime) ? null : new Date(watch.activationDateTime);\r\n watch.createDateTime = _.isNil(watch.createDateTime) ? null : new Date(watch.createDateTime);\r\n watch.expiryDateTime = _.isNil(watch.expiryDateTime) ? null : new Date(watch.expiryDateTime);\r\n watch.expiryStartOfGasDay = _.isNil(watch.expiryStartOfGasDay) ? null : new Date(watch.expiryStartOfGasDay);\r\n watch.shippers.forEach(s => OfoWatchShipperData.reviveDates(s));\r\n watch.ofoOrders.forEach(o => OfoWatchOrderData.reviveDates(o));\r\n }\r\n\r\n public toDto(): any {\r\n return {\r\n referenceId: this.referenceId,\r\n ofoType: this.ofoType,\r\n complianceRequirement: this.complianceRequirement,\r\n status: this.status,\r\n activationDateTime: toJsonNoTimeZone(this?.activationDateTime),\r\n createDateTime: toJsonNoTimeZone(this?.createDateTime),\r\n expiryDateTime: toJsonNoTimeZone(this?.expiryDateTime),\r\n expiryStartOfGasDay: toJsonNoTimeZone(this?.expiryStartOfGasDay),\r\n shippers: _.map(this.shippers, s => s.toDto())\r\n };\r\n }\r\n}\r\n\r\nexport interface ShipperStatusInOfoDto {\r\n enterpriseId: number;\r\n enterpriseShortName: string;\r\n referenceId: string;\r\n shipperStatus: string;\r\n}\r\n\r\nexport class OfoShipperSelectionInfo {\r\n public currentGasDay: GasDay;\r\n public minComplianceDate: GasDay;\r\n public trendComplianceData: TrendComplianceDataDto;\r\n public shippersInActiveOrders: ShipperStatusInOfoDto[];\r\n public shippersInActiveWatches: ShipperStatusInOfoDto[];\r\n}\r\n\r\nexport class OfoOrderShipperData {\r\n id: number;\r\n shipperEnterpriseId: number;\r\n shipperMnemonic: string;\r\n nominationGroupId: number;\r\n lowAsqLimit: number;\r\n highAsqLimit: number;\r\n accumulatedBalance: number;\r\n createDateTime: Date;\r\n expiryDateTime: Date;\r\n issueDateTime: Date;\r\n complianceByGasDay: Date; // needs to be a date in order to work with the dxi-column calendar control\r\n expiryStartOfGasDay: Date;\r\n expiryNoticeDateTime: Date;\r\n status: string;\r\n notificationStatus: string;\r\n notificationStatusMessage: string;\r\n expiryNotificationStatus: string;\r\n expiryNotificationStatusMessage: string;\r\n\r\n shipperEnterprise: string; // names from enhancement only used for dialog building\r\n shipperEnterpriseShortName: string;\r\n shipperEnterpriseMnemonic: string;\r\n nominationGroupMnemonic: string;\r\n\r\n ofoWatchReferenceId: string;\r\n\r\n penalties: OfoOrderShipperExcessQuantityData[];\r\n\r\n\r\n public static reviveDates(shipper: OfoOrderShipperData): void {\r\n shipper.complianceByGasDay = _.isNil(shipper.complianceByGasDay)\r\n ? null\r\n : typeof shipper.complianceByGasDay === 'string'\r\n ? GasDay.parse(shipper.complianceByGasDay).toDate\r\n : shipper.complianceByGasDay;\r\n shipper.issueDateTime = _.isNil(shipper.issueDateTime) ? null : new Date(shipper.issueDateTime);\r\n shipper.expiryDateTime = _.isNil(shipper.expiryDateTime) ? null : new Date(shipper.expiryDateTime);\r\n shipper.expiryNoticeDateTime = _.isNil(shipper.expiryNoticeDateTime) ? null : new Date(shipper.expiryNoticeDateTime);\r\n shipper.expiryStartOfGasDay = _.isNil(shipper.expiryStartOfGasDay) ? null : new Date(shipper.expiryStartOfGasDay);\r\n }\r\n\r\n public toDto(): any {\r\n return {\r\n id: this.id,\r\n shipperEnterpriseId: this.shipperEnterpriseId,\r\n shipperMnemonic: _.isNil(this?.shipperMnemonic) ? this?.shipperEnterpriseMnemonic : this.shipperMnemonic,\r\n nominationGroupId: this.nominationGroupId,\r\n lowAsqLimit: this.lowAsqLimit,\r\n highAsqLimit: this.highAsqLimit,\r\n accumulatedBalance: this.accumulatedBalance,\r\n issueDateTime: toJsonNoTimeZone(this?.issueDateTime),\r\n complianceByGasDay: _.isNil(this?.complianceByGasDay) ? '' : toJsonNoTimeZone(this?.complianceByGasDay),\r\n expiryStartOfGasDay: toJsonNoTimeZone(this?.expiryStartOfGasDay),\r\n expiryDateTime: toJsonNoTimeZone(this?.expiryDateTime),\r\n expiryNoticeDateTime: toJsonNoTimeZone(this?.expiryNoticeDateTime),\r\n status: this.status\r\n };\r\n }\r\n}\r\n\r\nexport class OfoOrderData {\r\n public referenceId: string;\r\n public watchReferenceId: string;\r\n public ofoType: string;\r\n public complianceRequirement: string;\r\n public status: string;\r\n public activationDateTime: Date;\r\n public expiryDateTime: Date;\r\n public createDateTime: Date;\r\n public expiryStartOfGasDay: Date;\r\n public shippers: OfoOrderShipperData[];\r\n public shipperExcessQuantities: OfoOrderShipperExcessQuantityData[];\r\n\r\n public static reviveDates(order: OfoOrderData): void {\r\n order.activationDateTime = _.isNil(order.activationDateTime) ? null : new Date(order.activationDateTime);\r\n order.createDateTime = _.isNil(order.createDateTime) ? null : new Date(order.createDateTime);\r\n order.expiryDateTime = _.isNil(order.expiryDateTime) ? null : new Date(order.expiryDateTime);\r\n order.expiryStartOfGasDay = _.isNil(order.expiryStartOfGasDay) ? null : new Date(order.expiryStartOfGasDay);\r\n order.shippers.forEach(s => OfoOrderShipperData.reviveDates(s));\r\n }\r\n\r\n public toDto(): any {\r\n return {\r\n referenceId: this.referenceId,\r\n watchReferenceId: this.watchReferenceId,\r\n ofoType: this.ofoType,\r\n complianceRequirement: this.complianceRequirement,\r\n status: this.status,\r\n activationDateTime: toJsonNoTimeZone(this?.activationDateTime),\r\n expiryDateTime: toJsonNoTimeZone(this?.expiryDateTime),\r\n createDateTime: toJsonNoTimeZone(this?.createDateTime),\r\n expiryStartOfGasDay: toJsonNoTimeZone(this?.expiryStartOfGasDay),\r\n shippers: _.map(this.shippers, s => s.toDto())\r\n };\r\n }\r\n}\r\n\r\nexport class OfoSimpleShipperData {\r\n public shipperEnterpriseId: number;\r\n public shipperMnemonic: string;\r\n public shipperEnterpriseShortName: string;\r\n public nominationGroupId: number;\r\n public nominationGroupMnemonic: string;\r\n public accumulatedBalance: number;\r\n public lowAsqLimit: number;\r\n public highAsqLimit: number;\r\n public status: string;\r\n public complianceByGasDay: Date;\r\n}\r\n\r\nexport class OfoAddShipperInfo {\r\n public referenceId: string;\r\n public availableWatchShippers: OfoWatchShipperData[];\r\n public availableOrderShippers: OfoOrderShipperData[];\r\n}\r\n\r\nexport class OfoOrderShipperExcessQuantityData {\r\n public orderId: number;\r\n public orderReferenceId: string;\r\n public shipperEnterpriseId: number;\r\n public shipperMnemonic: string;\r\n public shipperEnterpriseShortName: string;\r\n public nominationGroupId: number;\r\n public nominationGroupMnemonic: string;\r\n public accumulatedBalance: number;\r\n public lowAsqLimit: number;\r\n public highAsqLimit: number;\r\n public gasDay: GasDay;\r\n public billableExcessQuantity: number;\r\n public notificationStatus: string;\r\n public notificationStatusMessage: string;\r\n public ofoOrderShipperId: number;\r\n}\r\n\r\nexport class OfoQueryResult {\r\n ofoWatches: OfoWatchData[];\r\n ofoOrders: OfoOrderData[];\r\n}\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class OfoMaintenanceService {\r\n\r\n\r\n constructor(protected flowingGasResource: FlowinggasResourceService,\r\n protected flowingGasTrendComplianceService: FlowingGasTrendComplianceService,\r\n private flowingGasGasDayStatusService: FlowingGasGasDayStatusService,\r\n private modalService: YesNoCancelModalService,\r\n private enterpriseService: EnterpriseService,\r\n private enterpriseEnrichmentService: EnterpriseEnrichmentService)\r\n {\r\n enterpriseEnrichmentService.setEnrichmentResource(enterpriseService);\r\n }\r\n\r\n // These allow the communications with the detail components\r\n // and to generally announce updates to subscribers where refresh required\r\n private ofoDetailMinGasDaySource = new BehaviorSubject(GasDay.today());\r\n public ofoDetailMinGasDay$ = this.ofoDetailMinGasDaySource.asObservable();\r\n private ofoUpdateSource = new Subject();\r\n public ofoUpdate$ = this.ofoUpdateSource.asObservable();\r\n\r\n private ofoAddShipperSource = new Subject();\r\n public ofoAddShipperNotice$ = this.ofoAddShipperSource.asObservable();\r\n\r\n public setDetailMinGasDay(day: GasDay) {\r\n this.ofoDetailMinGasDaySource.next(day);\r\n }\r\n\r\n public announceOfoUpdate(info: string) {\r\n this.ofoUpdateSource.next(info);\r\n }\r\n\r\n public announceOfoAddShipper(info: OfoAddShipperInfo) {\r\n this.ofoAddShipperSource.next(info);\r\n }\r\n\r\n public queryOfos(ofoQueryType: string, startGasDay: GasDay, endGasDay: GasDay, enterpriseId: number, referenceId: string ): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('ofoQueryType', ofoQueryType);\r\n params.setOptionalGasDay(startGasDay, 'fromGasDay');\r\n params.setOptionalGasDay(endGasDay, 'toGasDay');\r\n params.setOptionalNumber('ofoCustomerId', enterpriseId);\r\n params.setOptionalString('referenceId', referenceId);\r\n\r\n return this.flowingGasResource.get('/ofo', true, params)\r\n .pipe(\r\n concatMap(response => {\r\n response.ofoWatches.forEach(w => OfoWatchData.reviveDates(w));\r\n response.ofoOrders.forEach(o => OfoOrderData.reviveDates(o));\r\n return of(response);\r\n }));\r\n }\r\n\r\n public queryOfoWatch(referenceId: string): Observable {\r\n return this.flowingGasResource.get('/ofoWatches/' + referenceId, true)\r\n .pipe(\r\n tap(dto => OfoWatchData.reviveDates(dto))\r\n );\r\n }\r\n\r\n public QueryShippersInActiveWatch(enterpriseIds: number[]): Observable {\r\n\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setOptionalListOfNumbers('enterpriseIds', enterpriseIds);\r\n\r\n return this.flowingGasResource.get('/shippersInActiveWatch', true, params);\r\n }\r\n\r\n public QueryShippersInActiveOrder(enterpriseIds: number[]): Observable {\r\n\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setOptionalListOfNumbers('enterpriseIds', enterpriseIds);\r\n\r\n return this.flowingGasResource.get('/shippersInActiveOrder', true, params);\r\n }\r\n\r\n public createOfoWatches(newOfoWatches: OfoWatchData[]): Observable {\r\n const body = {ofoWatches: _.map(newOfoWatches, w => w.toDto())};\r\n return this.flowingGasResource.postWithNoResponseBody('/ofoWatches', body);\r\n }\r\n\r\n public createOfoOrder(newOfoOrder: OfoOrderData): Observable {\r\n const body = { ofoOrder: newOfoOrder.toDto()};\r\n return this.flowingGasResource.postWithNoResponseBody('/ofoOrder', body);\r\n }\r\n\r\n public issueOfoWatch(watchReferenceId: string): Observable {\r\n return this.flowingGasResource.patchWithNoResponseBody(`/ofoWatches/${watchReferenceId}/issueWatch`, {});\r\n }\r\n\r\n public updateSimpleOfoOrder(order: any): Observable {\r\n delete order.shippers;\r\n const body = { ofoOrder: order };\r\n return this.flowingGasResource.putWithNoResponseBody('/simpleOfoOrder', body);\r\n }\r\n\r\n public updateSimpleOfoWatch(watch: any): Observable {\r\n delete watch.shippers;\r\n delete watch.ofoOrders;\r\n const body = { ofoWatch: watch };\r\n return this.flowingGasResource.putWithNoResponseBody('/simpleOfoWatch', body);\r\n }\r\n\r\n public updateOfoWatchShipper(ofoWatchShipper: any): Observable {\r\n const body = {ofoWatchShipper: ofoWatchShipper};\r\n return this.flowingGasResource.putWithNoResponseBody('/ofoWatchShipper', body);\r\n }\r\n\r\n public updateOfoOrderShipper(ofoOrderShipper: any): Observable {\r\n const body = {ofoOrderShipper: ofoOrderShipper};\r\n return this.flowingGasResource.putWithNoResponseBody('/ofoOrderShipper', body);\r\n }\r\n\r\n public addOfoWatchShipper(ofoWatchShipper:any): Observable {\r\n const body = {ofoWatchShipper: ofoWatchShipper};\r\n return this.flowingGasResource.postWithNoResponseBody('/ofoWatchShipper', body);\r\n }\r\n\r\n public addOfoOrderShipper(ofoOrderShipper: any): Observable {\r\n const body = {ofoOrderShipper: ofoOrderShipper};\r\n return this.flowingGasResource.postWithNoResponseBody('/ofoOrderShipper', body);\r\n }\r\n\r\n public checkForImbalance(shipper: OfoOrderShipperData | OfoWatchShipperData, shipperName: string, complianceData: TrendComplianceDataDto) : string {\r\n let imbalanceMsg : string = null;\r\n const npp = complianceData.nppData.netPipelinePosition;\r\n const customerData = complianceData.customerData.find(cd => cd.enterpriseId === shipper.shipperEnterpriseId);\r\n if (!_.isNil(npp) && !_.isNil(customerData)) {\r\n const nonCompliantByAsq : boolean = ((npp <= 0) && customerData.accumulatedBalance < customerData.authorizedSwingQuantityLow\r\n || (npp >= 0) && customerData.accumulatedBalance > customerData.authorizedSwingQuantityHigh);\r\n if (nonCompliantByAsq) {\r\n imbalanceMsg = `Accumulated balance=${customerData.accumulatedBalance}\\noutside limits +${customerData.authorizedSwingQuantityHigh}/${customerData.authorizedSwingQuantityLow} in npp direction\\n\\n`;\r\n }\r\n }\r\n return imbalanceMsg;\r\n }\r\n\r\n public buildConfirmationMessage(shipper: OfoOrderShipperData | OfoWatchShipperData, shipperName: string, actionString: string, complianceData: TrendComplianceDataDto) : string {\r\n if (actionString === 'Cancel') {\r\n actionString = 'be Cancelled';\r\n }\r\n const imbalanceMessage: string = this.checkForImbalance(shipper, shipperName, complianceData);\r\n const closedGasDay = (typeof complianceData.gasDay === \"string\") ? GasDay.parse(complianceData.gasDay) : complianceData.gasDay;\r\n const dataType = shipper.hasOwnProperty(\"penalties\") ? \"Order\" : \"Watch\";\r\n let message = \"\";\r\n if (!_.isNil(imbalanceMessage)) {\r\n message += \"An imbalance exists for the following shipper account\\n\\n\";\r\n message += `${shipperName} : ${shipper.nominationGroupMnemonic}\\n`;\r\n }\r\n message += \" \\n\";\r\n message += `The Shipper in the ${dataType} will ${actionString} effective Start of Gas Day ${closedGasDay.addDays(1).toDisplayFormat()}\\n`;\r\n message += \" \\n\";\r\n message += \"Do you wish to Continue?\\n\";\r\n\r\n return message;\r\n }\r\n\r\n\r\n public queryConfirmationData() : Observable {\r\n // per bugs 285015, 279501, 277789: need to consult the GasDayStatus table to determine\r\n // the most recently closed gas day in order to properly get NPP data.\r\n return this.flowingGasGasDayStatusService.getGasDayRangeDefault()\r\n .pipe(\r\n concatMap((gasDayRangeDefault) => {\r\n // default is set to first preliminary day (will be multiple ones between 8:00am and 9:30am)\r\n const curGasDay = gasDayRangeDefault.start.isEqual(GasDay.startOfTime())\r\n ? GasDay.today()\r\n : gasDayRangeDefault.default as GasDay;\r\n return this.flowingGasTrendComplianceService.getTrendComplianceData(curGasDay.addDays(-1));\r\n })\r\n );\r\n }\r\n\r\n public confirmActiveShippersInActiveWatches(enterpriseIds: number[]): Observable {\r\n return this.QueryShippersInActiveWatch(enterpriseIds)\r\n .pipe(\r\n concatMap(activeWatches => {\r\n const watches = activeWatches.filter(w => w.shipperStatus === OfoStatus.ACTIVE.name);\r\n if (_.isNil(watches) || watches.length === 0) {\r\n return of(true); // no active watches - OK to proceed\r\n } else {\r\n return this.confirmAlreadyActiveShipper(watches);\r\n }\r\n })\r\n );\r\n }\r\n\r\n public confirmAlreadyActiveShipper(activeWatches: ShipperStatusInOfoDto[]): Observable {\r\n return this.enterpriseEnrichmentService\r\n .enrichArray(activeWatches, 'enterpriseId', 'enterprise')\r\n .pipe(\r\n concatMap(enrichedWatches => {\r\n const shippers = enrichedWatches.map(w => `${w.enterpriseShortName} - ${w.referenceId}`).join('\\n');\r\n const message = `The Following Shipper(s) are already active in another active OFO Watch:\\n\\n${shippers}\\n\\nDo you wish to continue?`;\r\n const yesNoModalOptions = new YesNoModalOptions('Active Watches', message, 'No', 'Yes');\r\n\r\n return this.modalService.show(yesNoModalOptions);\r\n }),\r\n concatMap(selectedOption => {\r\n return of(selectedOption === SelectedModalOption.Yes);\r\n })\r\n );\r\n }\r\n}\r\n","import {GasDay} from \"@model/gas-day\";\r\nimport {BaseViewModel} from \"@model/base-view-model\";\r\nimport {OfoStatus} from \"@model/ofo-status\";\r\nimport {OfoOrderData, OfoWatchData, OfoShipperSelectionInfo, OfoSimpleShipperData} from \"@shared/services/flowing-gas/ofo-maintenance-service/ofo-maintenance.service\";\r\nimport {Enterprise} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport * as _ from \"lodash\";\r\n\r\nexport class OfoType {\r\n constructor(\r\n public id: string,\r\n public name: string\r\n ) {}\r\n\r\n\r\n public static OPERATIONAL = new OfoType('Operational', 'Operational');\r\n public static SHIPPER_IMBALANCE = new OfoType('ShipperImbalance', 'Shipper Imbalance');\r\n\r\n public static ALL = [OfoType.OPERATIONAL, OfoType.SHIPPER_IMBALANCE];\r\n}\r\n\r\nexport enum OfoSearchByType {\r\n GasDayRange,\r\n Watch,\r\n Order\r\n}\r\n\r\nexport class OfoComplianceRequirement {\r\n constructor(\r\n public id: string,\r\n public name: string\r\n ) {}\r\n\r\n\r\n public static WITHIN_ASQ = new OfoStatus('WithinAsq', 'Within ASQ');\r\n public static WITHIN_CRITICAL_DAY_ASQ = new OfoStatus('WithinCriticalDayAsq', 'Within Critical Day ASQ');\r\n\r\n public static ALL = [OfoComplianceRequirement.WITHIN_ASQ, OfoComplianceRequirement.WITHIN_CRITICAL_DAY_ASQ];\r\n}\r\n\r\n\r\nexport class OfoSearchParams {\r\n searchByType: string = OfoSearchByType[OfoSearchByType.GasDayRange];\r\n startGasDay? : GasDay;\r\n endGasDay? : GasDay;\r\n enterpriseId?: number;\r\n selectedOfoType: string = OfoType.SHIPPER_IMBALANCE.id;\r\n referenceNumber?: number;\r\n\r\n get isSearchByTypeGasDayRange(): boolean {\r\n return this.searchByType === OfoSearchByType[OfoSearchByType.GasDayRange];\r\n }\r\n get isSearchByTypeWatch(): boolean {\r\n return this.searchByType === OfoSearchByType[OfoSearchByType.Watch];\r\n }\r\n get isSearchByTypeOrder(): boolean {\r\n return this.searchByType === OfoSearchByType[OfoSearchByType.Order];\r\n }\r\n\r\n get isSearchByTypeRefId(): boolean {\r\n return this.searchByType === OfoSearchByType[OfoSearchByType.Watch] ||\r\n this.searchByType === OfoSearchByType[OfoSearchByType.Order];\r\n }\r\n\r\n get referenceId(): string | null {\r\n if (_.isNil(this.referenceNumber)) return null;\r\n\r\n const ofoTypeId = (this.selectedOfoType === OfoType.SHIPPER_IMBALANCE.id) ? 'SI' : 'OP';\r\n\r\n return `OFO${this.searchByType}${ofoTypeId}-${_.padStart(this.referenceNumber.toString(),6,'0')}`;\r\n }\r\n set referenceId(value: string | null) {\r\n this.referenceNumber = null;\r\n\r\n if (_.isNil(value)) return;\r\n if (this.isSearchByTypeGasDayRange) return;\r\n\r\n const refPrefix = value.substr(0, 10);\r\n\r\n if (refPrefix === `OFO${this.searchByType}SI`) {\r\n this.selectedOfoType = OfoType.SHIPPER_IMBALANCE.id;\r\n }\r\n else if (refPrefix === `OFO${this.searchByType}OP`) {\r\n this.selectedOfoType = OfoType.OPERATIONAL.id;\r\n }\r\n else {\r\n return;\r\n }\r\n\r\n this.referenceNumber = parseInt(value.substr(11),10);\r\n }\r\n}\r\n\r\nexport class OfoMaintenanceModel extends BaseViewModel {\r\n public static allCurrentShipperInfo: OfoSimpleShipperData[];\r\n public isExternalUser: boolean = true;\r\n\r\n /** LOOKUP VALUES */\r\n public currentGasDay: GasDay;\r\n public earliestSelectableGasDay: GasDay;\r\n public ofoTypes: OfoType[] = OfoType.ALL;\r\n public ofoComplianceRequirements: OfoComplianceRequirement[] = OfoComplianceRequirement.ALL;\r\n public customerEnterprises: Enterprise[];\r\n\r\n /** search Parameters */\r\n public ofoSearchParams: OfoSearchParams = new OfoSearchParams();\r\n public lastSearchParams: OfoSearchParams;\r\n\r\n /** search results */\r\n public searchResultWatches: OfoWatchData[];\r\n public searchResultOrders: OfoOrderData[];\r\n\r\n /** Display flags */\r\n public showWatchSection: boolean = true;\r\n public showOrderSection: boolean = true;\r\n public shipperSelectionInfo: OfoShipperSelectionInfo = new OfoShipperSelectionInfo();\r\n\r\n public ofoRefIdPrefix: string;\r\n\r\n public refIdPlaceholder: string = \"Input trailing numbers\";\r\n\r\n public numericSuffixTooltipPrompt: string = \"Enter numeric suffix used to build the referenceId\";\r\n\r\n public hasSearchResults() : boolean {\r\n return this.hasWatches() || this.hasOrders();\r\n }\r\n\r\n public clearSearchResults() : void {\r\n this.searchResultWatches = null;\r\n this.searchResultOrders = null;\r\n this.lastSearchParams = null;\r\n }\r\n\r\n public hasWatches() : boolean {\r\n return !_.isNil(this.searchResultWatches);\r\n }\r\n\r\n public hasOrders() : boolean {\r\n return !_.isNil(this.searchResultOrders);\r\n }\r\n\r\n public toggleWatchSection() : void {\r\n this.showWatchSection = !this.showWatchSection;\r\n }\r\n\r\n public toggleOrderSection() : void {\r\n this.showOrderSection = !this.showOrderSection;\r\n }\r\n\r\n}\r\n\r\nexport class GlobalVars {\r\n // This variable is a bit of a hack to pass data into status column SetCellValue handlers that have context limited to row data\r\n // The variable gets set on onEditorPreparing and subsequently used to set expiryStartOfGasDay when the status SetCellValue is called\r\n // but depending on the new status value\r\n public static hiddenExpiryStart: string = \"9999-12-31\";\r\n}\r\n","import * as _ from \"lodash\";\r\n\r\nimport {AlertService} from \"app/shared/services/webapp/alert/alert.service\";\r\nimport {ConfigService} from \"../configuration/configuration.service\";\r\nimport {Router} from \"@angular/router\";\r\nimport {HttpErrorResponse} from \"@angular/common/http\";\r\nimport {Injectable} from \"@angular/core\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\n\r\n/*\r\n * This service handles showing errors to the user.\r\n *\r\n * If the environment is a Dev environment it will show the error to the user as an alert at the top of the page.\r\n * Otherwise it will redirect to the error page.\r\n */\r\n@Injectable()\r\nexport class ErrorService {\r\n private lastErrorReferenceNumberMessage: string;\r\n\r\n public static getNestedError(error: HttpErrorResponse): any {\r\n let nestedError: any;\r\n\r\n if (error.error) {\r\n try {\r\n nestedError = _.isString(error.error)\r\n ? JSON.parse(error.error.replace(\")]}',\", \"\")) // Strip JSONP Vulnerability Stuff, is there a better way to do this?\r\n : error.error;\r\n } catch (e) {\r\n nestedError = 'Unknown server error';\r\n }\r\n }\r\n\r\n return nestedError;\r\n }\r\n\r\n public static buildMessage(nestedError: any): string {\r\n if (nestedError.errors && nestedError.errors.length > 0) {\r\n return nestedError.errors[0].message;\r\n }\r\n\r\n if (nestedError.exceptionMessage) {\r\n return nestedError.exceptionMessage;\r\n }\r\n\r\n return 'A server error occurred that did not provide any details.';\r\n }\r\n\r\n public static getErrorMessageFromErrorResponse(error: HttpErrorResponse): string {\r\n const nestedError = this.getNestedError(error);\r\n return this.buildMessage(nestedError);\r\n }\r\n\r\n public static buildReferenceNumberMessage(error: HttpErrorResponse): string {\r\n return (error.headers && error.headers.get('from')) ?\r\n ' Reference number: ' + error.headers.get('from') :\r\n ' No reference number available.';\r\n }\r\n\r\n constructor(private alertService: AlertService,\r\n private configService: ConfigService,\r\n private router: Router,\r\n private sessionService: SessionService) {\r\n }\r\n\r\n /*\r\n * Call this method when an error occurs and it will take care of showing it to the user.\r\n * Either by showing it as an alert at the top of the page or redirecting to the error page.\r\n */\r\n public processError(error: HttpErrorResponse): Promise {\r\n let nestedError: any;\r\n\r\n if (error.status === 504) { // Gateway Error\r\n return this.router.navigate(['504.html']).then(() => true);\r\n } else if (error.status === 503) {\r\n const pipelineCode = this.sessionService.getPipeline().code;\r\n return this.router.navigate(['/app', pipelineCode, '503'], {skipLocationChange: true}).then(() => true);\r\n } else {\r\n nestedError = ErrorService.getNestedError(error);\r\n }\r\n\r\n const message = ErrorService.buildMessage(nestedError);\r\n const referenceNumberMessage = ErrorService.buildReferenceNumberMessage(error);\r\n this.lastErrorReferenceNumberMessage = referenceNumberMessage;\r\n return this.handleError(nestedError, message, referenceNumberMessage);\r\n }\r\n\r\n /*\r\n * Gets the last error's reference number. This will likely be used by the error-component\r\n * to display information about the last error.\r\n *\r\n * Most services in Angular are singleton scope so we'll always have the last error encountered.\r\n */\r\n public getLastErrorReferenceNumber = (): string => this.lastErrorReferenceNumberMessage;\r\n\r\n private handleError(nestedError: any, message: string, referenceNumberMessage: string): Promise {\r\n if (nestedError.statusCodeNumber === 400) { // Bad request\r\n this.alertService.addWarnMessage('Error', message);\r\n } else if (nestedError.statusCodeNumber === 409) { // Conflict\r\n this.alertService.addInfoMessage('Info:', message);\r\n } else if(nestedError.statusCodeNumber !== 404) { // Not Found is a legitimate response, don't throw an error\r\n // If the environment is configured to redirect to error page, do so.\r\n if (!this.configService.showErrors || nestedError === 'Unknown server error') {\r\n const pipelineCode = this.sessionService.getPipeline().code;\r\n return this.router.navigate(['/app', pipelineCode, 'error'], {skipLocationChange: true}).then(() => true);\r\n }\r\n // For other environments like development, we usually opt to remain on the page and display an alert with the error.\r\n this.alertService.addErrorMessage('Server Error', message + referenceNumberMessage);\r\n }\r\n return Promise.resolve(true);\r\n }\r\n}\r\n","\r\n\r\n
\r\n
\r\n Error:\r\n {{model.errorMessage}}\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
(End of Gas Day {{shipperSelectionInfo.trendComplianceData.nppData.endOfGasDay}})
\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n
\r\n ASQ Limit
(GJ)\r\n
\r\n\r\n
\r\n Accumulated Balance
(GJ)\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n","import {Component, EventEmitter, Input, Output, ViewChild} from '@angular/core';\r\nimport {newArray} from \"@angular/compiler/src/util\";\r\nimport {forkJoin, Observable, of} from \"rxjs\";\r\nimport {concatMap} from \"rxjs/operators\";\r\nimport {OfoStatus} from \"@model/ofo-status\";\r\nimport {ModalComponent} from \"@shared/components/modal/modal.component\";\r\nimport {TrendComplianceCustomerDataDto} from \"@shared/services/flowing-gas/flowing-gas-trend-compliance-service/flowing-gas-trend-compliance-service\";\r\nimport {OfoMaintenanceService, OfoShipperSelectionInfo, OfoWatchData, OfoWatchShipperData} from \"@shared/services/flowing-gas/ofo-maintenance-service/ofo-maintenance.service\";\r\nimport {EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {NomGroupEnrichmentService} from \"@shared/services/enrichment/nomgroup-enrichment.service\";\r\nimport {NominationGroupService} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {ErrorService} from \"@shared/services/webapp/error/error-service\";\r\nimport {YesNoCancelModalService} from \"@shared/services/webapp/yes-no-cancel-modal/yes-no-cancel-modal.service\";\r\nimport {OfoComplianceRequirement, OfoType} from \"app/gcts/flowinggas/ofo-maintenance/ofo-maintenance.model\";\r\nimport * as _ from \"lodash\";\r\n\r\n\r\nexport class OfoWatchShipperGridRow {\r\n public selectedForWatch: boolean;\r\n public enterpriseId: number;\r\n public nominationGroupId: number;\r\n public authorizedSwingQuantityLow: number;\r\n public authorizedSwingQuantityHigh: number;\r\n public accumulatedBalance: number;\r\n // enrichment fields\r\n public nominationGroupMnemonic: string;\r\n public enterpriseShortName: string;\r\n public enterpriseMnemonic: string;\r\n\r\n constructor() {\r\n }\r\n\r\n public static fromComplianceCustomerData(complianceData: TrendComplianceCustomerDataDto, npp: number): OfoWatchShipperGridRow {\r\n const shipper = new OfoWatchShipperGridRow();\r\n shipper.enterpriseId = complianceData.enterpriseId;\r\n shipper.nominationGroupId = complianceData.nominationGroupId;\r\n shipper.authorizedSwingQuantityLow = complianceData.authorizedSwingQuantityLow;\r\n shipper.authorizedSwingQuantityHigh = complianceData.authorizedSwingQuantityHigh;\r\n shipper.accumulatedBalance = complianceData.accumulatedBalance;\r\n // shippers are put into watch if they are out of compliance in the same direction as npp\r\n shipper.selectedForWatch = (npp <= 0) && shipper.accumulatedBalance < shipper.authorizedSwingQuantityLow\r\n || (npp >= 0) && shipper.accumulatedBalance > shipper.authorizedSwingQuantityHigh;\r\n return shipper;\r\n }\r\n}\r\n\r\nexport class NewOfoWatchModel {\r\n public ofoWatch: OfoWatchData = new OfoWatchData();\r\n public ofoWatchShippers: OfoWatchShipperGridRow[] = [];\r\n public selectedShippers: OfoWatchShipperGridRow[] = [];\r\n public complianceByDate: Date;\r\n\r\n public errorMessage: string;\r\n\r\n public ofoTypes: OfoType[] = OfoType.ALL;\r\n public complianceRequirements: OfoComplianceRequirement[] = OfoComplianceRequirement.ALL;\r\n public ofoWatchStatuses: OfoStatus[] = [OfoStatus.ACTIVE, OfoStatus.PENDING];\r\n}\r\n\r\n@Component({\r\n selector: 'app-new-ofo-watch-modal',\r\n templateUrl: './new-ofo-watch-modal.component.html',\r\n styles: []\r\n})\r\nexport class NewOfoWatchModalComponent {\r\n @Input() shipperSelectionInfo: OfoShipperSelectionInfo;\r\n\r\n @Output() ofoWatchCreated: EventEmitter = new EventEmitter();\r\n\r\n @ViewChild(ModalComponent) modal: ModalComponent;\r\n\r\n public model: NewOfoWatchModel = new NewOfoWatchModel();\r\n public modalIsActive: boolean = false;\r\n public dataSubmitted: boolean = false;\r\n\r\n\r\n constructor(\r\n private alertService: AlertService,\r\n private modalService: YesNoCancelModalService,\r\n private nominationGroupService: NominationGroupService,\r\n private enterpriseService: EnterpriseService,\r\n private enterpriseEnrichmentService: EnterpriseEnrichmentService,\r\n private nomGroupEnrichmentService: NomGroupEnrichmentService,\r\n private ofoMaintenanceService: OfoMaintenanceService\r\n ) {\r\n enterpriseEnrichmentService.setEnrichmentResource(enterpriseService);\r\n nomGroupEnrichmentService.setEnrichmentResource(nominationGroupService);\r\n }\r\n\r\n private initModel(isActive: boolean): void {\r\n this.model.errorMessage = \"\";\r\n this.model.ofoWatch = new OfoWatchData();\r\n this.model.ofoWatchShippers = [];\r\n this.model.selectedShippers = [];\r\n this.model.ofoWatch.status = OfoStatus.ACTIVE.id; // create as active by default\r\n this.modalIsActive = isActive;\r\n this.dataSubmitted = false;\r\n }\r\n\r\n\r\n public show(): void {\r\n this.alertService.clearMessages();\r\n this.initModel(true);\r\n this.loadResources()\r\n .subscribe(\r\n () => {\r\n this.modal.show();\r\n this.preselectShippers();\r\n },\r\n error => {\r\n this.alertService.addErrorMessage('Error', error);\r\n }\r\n );\r\n }\r\n\r\n public closeModal(): void {\r\n this.modal.hide();\r\n this.initModel(false);\r\n }\r\n\r\n public isAddSubmitButtonDisabled(): boolean {\r\n return _.isNil(this.model?.selectedShippers) || this.model.selectedShippers.length < 1 || this.dataSubmitted;\r\n }\r\n\r\n public submitClicked(): void {\r\n // guard against double-clicks\r\n if (this.dataSubmitted) return;\r\n\r\n this.dataSubmitted = true;\r\n this.model.errorMessage = \"\";\r\n this.alertService.clearMessages();\r\n\r\n const enterpriseIds = _.map(this.model.selectedShippers, s => s.enterpriseId);\r\n // first need to figure out if any of the selected enterprises are already part of a watch\r\n this.ofoMaintenanceService.QueryShippersInActiveWatch(enterpriseIds)\r\n .pipe(\r\n concatMap(activeWatches => {\r\n const watches = activeWatches.filter(w => w.shipperStatus === OfoStatus.ACTIVE.name);\r\n if (_.isNil(watches) || watches.length === 0) {\r\n return of(true); // no active watches - OK to proceed\r\n } else {\r\n return this.ofoMaintenanceService.confirmAlreadyActiveShipper(watches);\r\n }\r\n })\r\n )\r\n .subscribe(\r\n confirmed => {\r\n if (confirmed) {\r\n this.submitNewOfoWatch();\r\n } else {\r\n this.dataSubmitted = false;\r\n }\r\n },\r\n error => {\r\n this.model.errorMessage = ErrorService.getErrorMessageFromErrorResponse(error);\r\n this.dataSubmitted = false;\r\n }\r\n );\r\n }\r\n\r\n public submitNewOfoWatch(): void {\r\n let ofoWatches: OfoWatchData[] = [];\r\n\r\n if (this.model.ofoWatch.ofoType === OfoType.OPERATIONAL.id) {\r\n ofoWatches = this.submitOperationalWatch();\r\n } else if (this.model.ofoWatch.ofoType === OfoType.SHIPPER_IMBALANCE.id) {\r\n ofoWatches = this.submitShipperImbalanceWatch();\r\n }\r\n\r\n if (ofoWatches.length > 0) {\r\n const successMessage = (ofoWatches.length > 1) ? 'The OFO watches have been created.' : 'The OFO watch has been created';\r\n this.ofoMaintenanceService.createOfoWatches(ofoWatches)\r\n .subscribe(\r\n () => {\r\n this.alertService.addSuccessMessage('Success', successMessage);\r\n this.ofoWatchCreated.emit(true);\r\n this.closeModal();\r\n },\r\n error => {\r\n this.model.errorMessage = ErrorService.getErrorMessageFromErrorResponse(error);\r\n });\r\n }\r\n }\r\n\r\n // for operational, all shippers go in same watch\r\n private submitOperationalWatch(): OfoWatchData[] {\r\n const ofoWatch = _.clone(this.model.ofoWatch);\r\n ofoWatch.referenceId = '';\r\n ofoWatch.shippers = newArray(0);\r\n this.model.selectedShippers.forEach(\r\n shipper => {\r\n ofoWatch.shippers.push(this.buildOfoWatchShipperData(shipper));\r\n }\r\n );\r\n return [ofoWatch];\r\n }\r\n\r\n // For shipper imbalance, create one watch per shipper\r\n private submitShipperImbalanceWatch(): OfoWatchData[] {\r\n const ofoWatches = newArray(0);\r\n this.model.selectedShippers.forEach(\r\n shipper => {\r\n const ofoWatch = _.clone(this.model.ofoWatch);\r\n ofoWatch.referenceId = '';\r\n ofoWatch.shippers = [this.buildOfoWatchShipperData(shipper)];\r\n ofoWatches.push(ofoWatch);\r\n }\r\n );\r\n return ofoWatches;\r\n }\r\n\r\n private buildOfoWatchShipperData(shipper: OfoWatchShipperGridRow): OfoWatchShipperData {\r\n const ofoShipper = new OfoWatchShipperData();\r\n\r\n ofoShipper.shipperEnterpriseId = shipper.enterpriseId;\r\n ofoShipper.shipperMnemonic = shipper.enterpriseMnemonic;\r\n ofoShipper.nominationGroupId = shipper.nominationGroupId;\r\n ofoShipper.lowAsqLimit = shipper.authorizedSwingQuantityLow;\r\n ofoShipper.highAsqLimit = shipper.authorizedSwingQuantityHigh;\r\n ofoShipper.accumulatedBalance = shipper.accumulatedBalance;\r\n ofoShipper.complianceByGasDay = this.model.complianceByDate;\r\n ofoShipper.status = this.model.ofoWatch.status;\r\n\r\n return ofoShipper;\r\n }\r\n\r\n private loadResources(): Observable {\r\n this.model.complianceByDate = this.shipperSelectionInfo.minComplianceDate.toDate;\r\n const npp = this.shipperSelectionInfo.trendComplianceData.nppData.netPipelinePosition;\r\n const customerData = this.shipperSelectionInfo.trendComplianceData.customerData;\r\n this.model.ofoWatchShippers = _.map(customerData, complianceData => OfoWatchShipperGridRow.fromComplianceCustomerData(complianceData, npp));\r\n\r\n return forkJoin([\r\n this.enterpriseEnrichmentService.enrichArray(this.model.ofoWatchShippers, 'enterpriseId', 'enterprise'),\r\n this.nomGroupEnrichmentService.enrichArray(this.model.ofoWatchShippers, 'nominationGroupId', 'nominationGroup')\r\n ]);\r\n }\r\n\r\n // preselect any shipper outside limits in the same direction as NPP\r\n private preselectShippers() {\r\n this.model.selectedShippers = this.model.ofoWatchShippers.filter(c => c.selectedForWatch);\r\n }\r\n\r\n // restrict selected shippers to those with imbalance for Shipper Imbalance OFO type\r\n // need to call this when OFO Type is changed or if the user tries to select any of the rows\r\n // since dx-data-grid does not seem to have a way to dynamically disable row selection\r\n public onSelectionChanged(): void {\r\n if (this.model.ofoWatch.ofoType === OfoType.SHIPPER_IMBALANCE.id) {\r\n this.model.selectedShippers = this.model.selectedShippers.filter(s => s.selectedForWatch);\r\n }\r\n }\r\n\r\n public onAsqDisplay(rowData: OfoWatchShipperGridRow): string{\r\n return `${rowData.authorizedSwingQuantityLow.toLocaleString()} / +${rowData.authorizedSwingQuantityHigh.toLocaleString()}`;\r\n }\r\n\r\n}\r\n","import * as _ from \"lodash\";\r\nimport {OfoWatchData, OfoWatchShipperData, ShipperStatusInOfoDto} from \"@shared/services/flowing-gas/ofo-maintenance-service/ofo-maintenance.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {OfoStatus} from \"@model/ofo-status\";\r\nimport {TrendComplianceCustomerDataDto} from \"@shared/services/flowing-gas/flowing-gas-trend-compliance-service/flowing-gas-trend-compliance-service\";\r\n\r\nexport class OfoOrderShipperGridRow {\r\n public selectedForOrder: boolean;\r\n public enterpriseId: number;\r\n public nominationGroupId: number;\r\n public authorizedSwingQuantityLow: number;\r\n public authorizedSwingQuantityHigh: number;\r\n public accumulatedBalance: number;\r\n public watchComplianceByDate: Date;\r\n public status: string;\r\n // enrichment fields\r\n public nominationGroupMnemonic: string;\r\n public enterpriseShortName: string;\r\n public enterpriseMnemonic: string;\r\n // selection feedback\r\n public unselectableReason: string;\r\n\r\n constructor() {\r\n }\r\n\r\n public static fromOfoWatchShipperData(watchShipper: OfoWatchShipperData, complianceData: TrendComplianceCustomerDataDto[], npp: number, preventedShippers: ShipperStatusInOfoDto[], currentGasDay: GasDay): OfoOrderShipperGridRow {\r\n const shipper = new OfoOrderShipperGridRow();\r\n shipper.enterpriseId = watchShipper.shipperEnterpriseId;\r\n shipper.watchComplianceByDate = watchShipper.complianceByGasDay;\r\n shipper.status = watchShipper.status;\r\n\r\n const shipperComplianceData = complianceData.find(cd => cd.enterpriseId === watchShipper.shipperEnterpriseId);\r\n if (_.isNil(shipperComplianceData)) {\r\n shipper.unselectableReason = \"Compliance data not found\";\r\n shipper.selectedForOrder = false;\r\n return shipper;\r\n }\r\n\r\n shipper.nominationGroupId = shipperComplianceData.nominationGroupId;\r\n shipper.authorizedSwingQuantityLow = shipperComplianceData.authorizedSwingQuantityLow;\r\n shipper.authorizedSwingQuantityHigh = shipperComplianceData.authorizedSwingQuantityHigh;\r\n shipper.accumulatedBalance = shipperComplianceData.accumulatedBalance;\r\n\r\n shipper.unselectableReason = \"\";\r\n shipper.selectedForOrder = true;\r\n\r\n let nonCompliantByAsq = false;\r\n const preventedShipperIndex = preventedShippers.findIndex(ps => ps.enterpriseId === watchShipper.shipperEnterpriseId);\r\n\r\n if ( shipper.status !== OfoStatus.ACTIVE.id) {\r\n shipper.unselectableReason = 'Not active in current watch';\r\n }\r\n else if (preventedShipperIndex !== -1) {\r\n shipper.unselectableReason = `Assoc to ${ preventedShippers[preventedShipperIndex].referenceId }`;\r\n }\r\n else if (_.isNil(npp)) {\r\n shipper.unselectableReason = \"NPP not found\";\r\n }\r\n else if (currentGasDay.toDate <= shipper.watchComplianceByDate) {\r\n shipper.unselectableReason = 'Within compliance-by gas day.';\r\n }\r\n else {\r\n nonCompliantByAsq = ((npp <= 0) && shipper.accumulatedBalance < shipper.authorizedSwingQuantityLow\r\n || (npp >= 0) && shipper.accumulatedBalance > shipper.authorizedSwingQuantityHigh);\r\n if (!nonCompliantByAsq) {\r\n shipper.unselectableReason = `Within ASQ`;\r\n }\r\n }\r\n\r\n if (shipper.unselectableReason) {\r\n shipper.selectedForOrder = false;\r\n }\r\n\r\n return shipper;\r\n }\r\n}\r\n\r\n\r\nexport class NewOfoOrderModel {\r\n\r\n public errorMessage: string;\r\n\r\n public ofoWatch: OfoWatchData = new OfoWatchData();\r\n public complianceByDate: Date;\r\n public ofoWatchShippers: OfoOrderShipperGridRow[] = [];\r\n public selectedShippers: OfoOrderShipperGridRow[] = [];\r\n}\r\n","\r\n\r\n
\r\n\r\n
\r\n Error:\r\n {{model.errorMessage}}\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
(End of Gas Day {{shipperSelectionInfo.trendComplianceData.nppData.endOfGasDay}})
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n
\r\n \r\n {{row.data.enterpriseShortName}}\r\n \r\n \r\n
\r\n {{row.data.unselectableReason}}\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n {{ data.value | dateToGasDayFormat : true }}\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n","import {Component, EventEmitter, Input, Output, ViewChild} from '@angular/core';\r\nimport {ModalComponent} from \"@shared/components/modal/modal.component\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {forkJoin, Observable} from \"rxjs\";\r\nimport {NewOfoOrderModel, OfoOrderShipperGridRow} from \"app/gcts/flowinggas/ofo-maintenance/new-ofo-order-modal/new-ofo-order-modal.model\";\r\nimport {OfoType} from \"app/gcts/flowinggas/ofo-maintenance/ofo-maintenance.model\";\r\nimport {OfoWatchShipperGridRow} from \"app/gcts/flowinggas/ofo-maintenance/new-ofo-watch-modal/new-ofo-watch-modal.component\";\r\nimport {OfoMaintenanceService, OfoOrderData, OfoOrderShipperData, OfoShipperSelectionInfo, OfoWatchData} from \"@shared/services/flowing-gas/ofo-maintenance-service/ofo-maintenance.service\";\r\nimport {concatMap, tap} from \"rxjs/operators\";\r\nimport {NominationSystemService} from \"@shared/services/nomination/nomination-system/nomination-system.service\";\r\nimport * as _ from \"lodash\";\r\nimport {FlowingGasTrendComplianceService} from \"@shared/services/flowing-gas/flowing-gas-trend-compliance-service/flowing-gas-trend-compliance-service\";\r\nimport {EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {NominationGroupService} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport {NomGroupEnrichmentService} from \"@shared/services/enrichment/nomgroup-enrichment.service\";\r\nimport {ErrorService} from \"@shared/services/webapp/error/error-service\";\r\nimport {newArray} from \"@angular/compiler/src/util\";\r\nimport {YesNoCancelModalService} from \"@shared/services/webapp/yes-no-cancel-modal/yes-no-cancel-modal.service\";\r\nimport {OfoStatus} from \"@model/ofo-status\";\r\n\r\n@Component({\r\n selector: 'app-new-ofo-order-modal',\r\n templateUrl: './new-ofo-order-modal.component.html',\r\n styleUrls: ['./new-ofo-order-modal.component.css']\r\n})\r\nexport class NewOfoOrderModalComponent {\r\n @Input() shipperSelectionInfo: OfoShipperSelectionInfo;\r\n\r\n @Output() ofoOrderCreated: EventEmitter = new EventEmitter();\r\n\r\n @ViewChild(ModalComponent) modal: ModalComponent;\r\n\r\n public model: NewOfoOrderModel = new NewOfoOrderModel();\r\n public modalIsActive: boolean = false;\r\n public dataSubmitted = false;\r\n\r\n constructor(\r\n private alertService: AlertService,\r\n private modalService: YesNoCancelModalService,\r\n private nominationSystemService: NominationSystemService,\r\n private flowingGasTrendComplianceService: FlowingGasTrendComplianceService,\r\n private enterpriseService: EnterpriseService,\r\n private enterpriseEnrichmentService: EnterpriseEnrichmentService,\r\n private nominationGroupService: NominationGroupService,\r\n private nomGroupEnrichmentService: NomGroupEnrichmentService,\r\n private ofoMaintenanceService: OfoMaintenanceService\r\n ) {\r\n enterpriseEnrichmentService.setEnrichmentResource(enterpriseService);\r\n nomGroupEnrichmentService.setEnrichmentResource(nominationGroupService);\r\n }\r\n\r\n public show(watchReferenceId: string): void {\r\n this.initModel(true);\r\n this.loadResources(watchReferenceId)\r\n .subscribe(\r\n () => {\r\n this.modal.show();\r\n this.preselectShippers();\r\n },\r\n error => {\r\n this.alertService.addErrorMessage('Error', error);\r\n }\r\n );\r\n }\r\n\r\n public isAddSubmitButtonDisabled() : boolean {\r\n return _.isNil(this.model?.selectedShippers) || this.model.selectedShippers.length < 1 || this.dataSubmitted;\r\n }\r\n\r\n public submitClicked(): void {\r\n // guard against double-clicks\r\n if (this.dataSubmitted) return;\r\n\r\n this.dataSubmitted = true;\r\n this.model.errorMessage = \"\";\r\n this.alertService.clearMessages();\r\n\r\n this.submitNewOfoOrder()\r\n .subscribe(\r\n () => {\r\n this.ofoOrderCreated.emit(true);\r\n this.closeModal();\r\n },\r\n error => {\r\n this.model.errorMessage = ErrorService.getErrorMessageFromErrorResponse(error);\r\n this.dataSubmitted = false;\r\n });\r\n }\r\n\r\n public closeModal(): void {\r\n this.modal.hide();\r\n this.initModel(false);\r\n }\r\n\r\n public submitNewOfoOrder(): Observable {\r\n const order = this.createShipperImbalanceOrder();\r\n return this.ofoMaintenanceService.createOfoOrder(order);\r\n }\r\n\r\n private createShipperImbalanceOrder(): OfoOrderData {\r\n const orderData = new OfoOrderData();\r\n\r\n orderData.referenceId = '';\r\n orderData.watchReferenceId = this.model.ofoWatch.referenceId;\r\n orderData.ofoType = this.model.ofoWatch.ofoType;\r\n orderData.complianceRequirement = this.model.ofoWatch.complianceRequirement;\r\n orderData.status = 'Active';\r\n\r\n orderData.shippers = newArray(0);\r\n\r\n this.model.selectedShippers.forEach(\r\n shipper => {\r\n const shipperData = new OfoOrderShipperData();\r\n shipperData.shipperEnterpriseId = shipper.enterpriseId;\r\n shipperData.shipperMnemonic = shipper.enterpriseMnemonic;\r\n shipperData.nominationGroupId = shipper.nominationGroupId;\r\n shipperData.accumulatedBalance = shipper.accumulatedBalance;\r\n shipperData.lowAsqLimit = shipper.authorizedSwingQuantityLow;\r\n shipperData.highAsqLimit = shipper.authorizedSwingQuantityHigh;\r\n shipperData.complianceByGasDay = this.model.complianceByDate;\r\n shipperData.status = shipper.status;\r\n\r\n orderData.shippers.push(shipperData);\r\n }\r\n );\r\n\r\n return orderData;\r\n }\r\n\r\n\r\n // restrict selected shippers to those with imbalance for Shipper Imbalance OFO type\r\n // need to call this when OFO Type is changed or if the user tries to select any of the rows\r\n // since dx-data-grid does not seem to have a way to dynamically disable row selection\r\n public onSelectionChanged(): void {\r\n if (this.model.ofoWatch.ofoType === OfoType.SHIPPER_IMBALANCE.id) {\r\n // effectively disables selection checkbox by rebuilding original selection\r\n this.model.selectedShippers = [...this.model.ofoWatchShippers];\r\n }\r\n else if (this.model.ofoWatch.ofoType === OfoType.OPERATIONAL.id) {\r\n // shippers compliant or associated to other orders are unselectable\r\n this.model.selectedShippers = this.model.selectedShippers.filter(s=>s.unselectableReason === \"\");\r\n }\r\n }\r\n\r\n public onAsqDisplay(rowData: OfoWatchShipperGridRow): string{\r\n return `${rowData.authorizedSwingQuantityLow.toLocaleString()} / +${rowData.authorizedSwingQuantityHigh.toLocaleString()}`;\r\n }\r\n\r\n private initModel(isActive: boolean): void {\r\n this.model.errorMessage = \"\";\r\n this.model.ofoWatch = new OfoWatchData();\r\n this.model.ofoWatchShippers = [];\r\n this.model.selectedShippers = [];\r\n this.modalIsActive = isActive;\r\n this.dataSubmitted = false;\r\n }\r\n\r\n private loadResources(watchReferenceId: string) : Observable {\r\n return this.ofoMaintenanceService.queryOfoWatch(watchReferenceId)\r\n .pipe(\r\n tap(ofoWatch => {\r\n this.model.ofoWatch = ofoWatch;\r\n\r\n const npp = this.shipperSelectionInfo.trendComplianceData.nppData.netPipelinePosition ?? 0;\r\n const customerData = this.shipperSelectionInfo.trendComplianceData.customerData;\r\n const preventedShippers = this.shipperSelectionInfo.shippersInActiveOrders;\r\n this.model.complianceByDate = this.shipperSelectionInfo.minComplianceDate.toDate;\r\n const activeWatchShippers = this.model.ofoWatch.shippers.filter(s => s.status === OfoStatus.ACTIVE.id);\r\n this.model.ofoWatchShippers = _.map(activeWatchShippers, shipper => OfoOrderShipperGridRow.fromOfoWatchShipperData(shipper, customerData, npp, preventedShippers, this.shipperSelectionInfo.currentGasDay));\r\n }),\r\n concatMap(() => {\r\n return forkJoin([\r\n this.enterpriseEnrichmentService.enrichArray(this.model.ofoWatchShippers, 'enterpriseId', 'enterprise'),\r\n this.nomGroupEnrichmentService.enrichArray(this.model.ofoWatchShippers, 'nominationGroupId', 'nominationGroup')\r\n ]);\r\n })\r\n );\r\n }\r\n\r\n // preselect any shipper outside limits in the same direction as NPP\r\n private preselectShippers() {\r\n this.model.selectedShippers = this.model.ofoWatchShippers.filter(c => c.selectedForOrder);\r\n }\r\n}\r\n","import {Input, OnDestroy, OnInit, ViewChild} from \"@angular/core\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {catchError, concatMap, take} from \"rxjs/operators\";\r\nimport {Observable, of, Subscription} from \"rxjs\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {DateTime} from \"@model/date-time\";\r\nimport {OfoStatus} from \"@model/ofo-status\";\r\nimport {YesNoModalOptions} from \"@shared/services/webapp/modal-options/yes-no-modal-options\";\r\nimport {SelectedModalOption} from \"@shared/services/webapp/modal-options/selected-modal-option\";\r\nimport {IDateDisplayFormat} from \"@shared/interfaces/date-display-format\";\r\nimport {OfoAddShipperInfo, OfoMaintenanceService, OfoOrderShipperData, OfoWatchShipperData} from \"@shared/services/flowing-gas/ofo-maintenance-service/ofo-maintenance.service\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {YesNoCancelModalService} from \"@shared/services/webapp/yes-no-cancel-modal/yes-no-cancel-modal.service\";\r\nimport {FlowinggasResourceService} from \"@shared/resources/flowinggas-resource.service\";\r\nimport {GlobalVars, OfoMaintenanceModel} from \"app/gcts/flowinggas/ofo-maintenance/ofo-maintenance.model\";\r\nimport * as _ from \"lodash\";\r\n\r\ntype updateFunctionType = (any) => Observable;\r\n\r\nexport abstract class OfoShippersBaseComponent implements OnDestroy, OnInit {\r\n\r\n @ViewChild(DxDataGridComponent) dataGrid: DxDataGridComponent;\r\n @Input() statuses: OfoStatus[] = OfoStatus.ALL;\r\n minGasDay: Date;\r\n $minDaySubscription: Subscription;\r\n\r\n $addShipperSubscription: Subscription;\r\n availableShipperInfo: OfoAddShipperInfo;\r\n\r\n public dateEditorFormat: IDateDisplayFormat;\r\n\r\n isEditing: boolean = false;\r\n statusOnInitialEdit = null;\r\n complianceByDayOnInitialEdit = null;\r\n allowComplianceByDateChange = false;\r\n\r\n isAdding: boolean = false;\r\n availableShipperAccounts: string[] = null;\r\n extraShippers: any[] = null;\r\n\r\n expireFromParentMsg = \"Must expire last shipper from parent\";\r\n cancelFromParentMsg = \"Must cancel last shipper from parent\";\r\n\r\n // abstracts service call to backend\r\n protected updateFunction : updateFunctionType;\r\n protected addFunction : updateFunctionType;\r\n\r\n protected constructor(\r\n protected ofoMaintenanceService: OfoMaintenanceService,\r\n protected alertService: AlertService,\r\n protected modalService: YesNoCancelModalService,\r\n // The flowingGasResource isn't used directly, but needs to be injected here in order to resolve the updateFunction callback\r\n protected flowingGasResource: FlowinggasResourceService)\r\n {\r\n this.dateEditorFormat = {\r\n formatter: this.dateEditorFormatter,\r\n parser: this.dateEditorParser\r\n };\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.$minDaySubscription =\r\n this.ofoMaintenanceService.ofoDetailMinGasDay$.subscribe(day => {\r\n this.minGasDay = day.toDate;\r\n });\r\n\r\n this.$addShipperSubscription =\r\n this.ofoMaintenanceService.ofoAddShipperNotice$.subscribe((available: OfoAddShipperInfo) => {\r\n this.addShipper(available);\r\n });\r\n }\r\n\r\n protected addShipper(addShipperInfo: OfoAddShipperInfo): void {\r\n // implement in derived class\r\n }\r\n\r\n protected commonAddShipper(addShipperInfo: any, refId: string, availableShippers: any[]) {\r\n if (addShipperInfo.referenceId === refId) {\r\n this.alertService.clearMessages();\r\n this.isAdding = true;\r\n this.extraShippers = availableShippers;\r\n this.dataGrid.instance.addRow();\r\n this.availableShipperAccounts = availableShippers.map(s => s.nominationGroupMnemonic);\r\n }\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n if (!_.isNil(this.$minDaySubscription)) {\r\n this.$minDaySubscription.unsubscribe();\r\n }\r\n\r\n if (!_.isNil(this.$addShipperSubscription)) {\r\n this.$addShipperSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n public dateEditorFormatter(dateValue: Date): string {\r\n const gasDay = GasDay.from(dateValue);\r\n return gasDay.toDisplayFormat();\r\n }\r\n\r\n public dateEditorParser(value: string): Date {\r\n try {\r\n return GasDay.parse(value).toDate;\r\n } catch (e) {\r\n return new Date(NaN);\r\n }\r\n }\r\n\r\n // TODO: Refactor to Common\r\n public formatDateTime(obj: Date): string {\r\n return new DateTime(obj).toDisplayFormat();\r\n }\r\n\r\n // TODO: Refactor to Common\r\n public asqLimitDisplayValue(rowData: OfoWatchShipperData): string {\r\n return `${rowData.lowAsqLimit.toLocaleString()} / +${rowData.highAsqLimit.toLocaleString()}`;\r\n }\r\n\r\n public getNotificationStatusCellClass(data: OfoOrderShipperData) {\r\n if (_.isNil(data.notificationStatus)) return '';\r\n\r\n return (data.notificationStatus === 'Failed')\r\n ? 'notificationStatusFailed'\r\n : (data.notificationStatus === 'Sent')\r\n ? 'notificationStatusSent'\r\n : '';\r\n }\r\n\r\n public getExpiryNotificationStatusCellClass(data: OfoOrderShipperData) {\r\n if (_.isNil(data.expiryNotificationStatus)) return '';\r\n\r\n return (data.expiryNotificationStatus === 'Failed')\r\n ? 'notificationStatusFailed'\r\n : (data.expiryNotificationStatus === 'Sent')\r\n ? 'notificationStatusSent'\r\n : '';\r\n }\r\n\r\n\r\n public onEditorPreparing(cellInfo: any) {\r\n if (this.statusOnInitialEdit === null) {\r\n this.statusOnInitialEdit = cellInfo.row.data.status;\r\n if (this.statusOnInitialEdit === OfoStatus.PENDING.name)\r\n {\r\n this.allowComplianceByDateChange = true;\r\n }\r\n }\r\n\r\n if (this.complianceByDayOnInitialEdit === null) {\r\n this.complianceByDayOnInitialEdit = cellInfo.row.data.complianceByGasDay;\r\n }\r\n\r\n if (cellInfo.parentType === \"dataRow\" && cellInfo.dataField === 'status') {\r\n // set permissible destination statuses based on current status\r\n cellInfo.editorOptions.dataSource = OfoStatus.getPermissibleStatuses(this.statusOnInitialEdit, this.isAdding);\r\n GlobalVars.hiddenExpiryStart = this.minGasDay.toJSON();\r\n }\r\n if (cellInfo.parentType === \"dataRow\" && cellInfo.dataField === \"complianceByGasDay\")\r\n {\r\n cellInfo.editorOptions.disabled =\r\n (this.statusOnInitialEdit !== OfoStatus.PENDING.name) ||\r\n (cellInfo.row.data.status === OfoStatus.CANCELLED.name);\r\n }\r\n\r\n if (this.isAdding && cellInfo.parentType === \"dataRow\" && cellInfo.dataField === \"shipperEnterpriseShortName\") {\r\n // set other fields based on shipper selection\r\n const newChoice = _.filter(this.extraShippers, (s) => s.shipperEnterpriseShortName === cellInfo.row.data.shipperEnterpriseShortName);\r\n if (!_.isEmpty(newChoice)) {\r\n cellInfo.row.data.nominationGroupMnemonic = newChoice[0].nominationGroupMnemonic;\r\n cellInfo.row.data.accumulatedBalance = newChoice[0].accumulatedBalance;\r\n cellInfo.row.data.lowAsqLimit = newChoice[0].lowAsqLimit;\r\n cellInfo.row.data.highAsqLimit = newChoice[0].highAsqLimit;\r\n }\r\n }\r\n }\r\n\r\n public onSetShipperAccountValue(rowData: any, value: any): void {\r\n const shipperInfo = _.filter(OfoMaintenanceModel.allCurrentShipperInfo, s => s.nominationGroupMnemonic === value);\r\n if (!_.isEmpty(shipperInfo)) {\r\n const info = shipperInfo[0];\r\n rowData.shipperEnterpriseShortName = info.shipperEnterpriseShortName;\r\n rowData.shipperEnterpriseId = info.shipperEnterpriseId;\r\n rowData.shipperMnemonic = info.shipperMnemonic;\r\n rowData.nominationGroupId = info.nominationGroupId;\r\n rowData.nominationGroupMnemonic = info.nominationGroupMnemonic;\r\n rowData.accumulatedBalance = info.accumulatedBalance;\r\n rowData.lowAsqLimit = info.lowAsqLimit;\r\n rowData.highAsqLimit = info.highAsqLimit;\r\n rowData.status = OfoStatus.PENDING.name;\r\n rowData.complianceByGasDay = info.complianceByGasDay;\r\n }\r\n }\r\n\r\n public abstract getNumShippersWithStatus(statuses: OfoStatus[]): number;\r\n\r\n public getNumShippersMatchingStatus(shippers: any[], statuses: OfoStatus[], ): number{\r\n const statusNames: string[] = statuses.map(s=> s.name);\r\n const activeShippers = _.filter(shippers, (s) => statusNames.includes(s.status));\r\n return activeShippers.length;\r\n }\r\n\r\n // To provide button tooltips for Save and Edit:\r\n // Override specific row edit button title binding based on ofo/shipper status\r\n // HTML button ids are unique combination of master ofo refId + shipper grid rowIndex\r\n public editDisabled(cellInfo): boolean {\r\n if (this.isEditing || this.isAdding) {\r\n return true;\r\n }\r\n const status = cellInfo.row.data.status;\r\n const lastActiveShipper = this.getNumShippersWithStatus([OfoStatus.ACTIVE]) === 1;\r\n const editBtnId = `edit-button-${cellInfo.component.element().attributes[\"master-ref-id\"].value}-${cellInfo.row.rowIndex}`;\r\n const editBtn = document.getElementById(editBtnId);\r\n if (status === OfoStatus.ACTIVE.name) {\r\n if (!_.isNil(editBtn)) {\r\n if (lastActiveShipper) {\r\n editBtn.setAttribute(\"title\", this.expireFromParentMsg);\r\n }\r\n else {\r\n editBtn.setAttribute(\"title\", \"Edit Shipper\");\r\n }\r\n return lastActiveShipper;\r\n }\r\n }\r\n return status !== OfoStatus.PENDING.name;\r\n }\r\n\r\n public saveDisabled(cellInfo): boolean {\r\n const noShipperSelectedOnAdd = this.isAdding ? _.isNil(cellInfo.row.data.shipperEnterpriseId) : false;\r\n\r\n const status = cellInfo.row.data.status;\r\n const complianceByDay = cellInfo.row.data.complianceByGasDay;\r\n const disabledByNoChange = status === this.statusOnInitialEdit && complianceByDay === this.complianceByDayOnInitialEdit;\r\n\r\n const cannotExpireLastActive =\r\n this.statusOnInitialEdit === OfoStatus.ACTIVE.name &&\r\n status === OfoStatus.EXPIRED.name &&\r\n this.getNumShippersWithStatus([OfoStatus.ACTIVE]) === 1;\r\n\r\n const cannotCancelLastActiveOrPending =\r\n this.statusOnInitialEdit === OfoStatus.PENDING.name &&\r\n status === OfoStatus.CANCELLED.name &&\r\n this.getNumShippersWithStatus([OfoStatus.ACTIVE, OfoStatus.PENDING]) === 1;\r\n\r\n const saveBtnId = `save-button-${cellInfo.component.element().attributes[\"master-ref-id\"].value}-${cellInfo.row.rowIndex}`;\r\n const saveBtn = document.getElementById(saveBtnId);\r\n\r\n if (noShipperSelectedOnAdd) {\r\n saveBtn.setAttribute(\"title\", \"Shipper required\");\r\n }\r\n else if (disabledByNoChange) {\r\n saveBtn.setAttribute(\"title\", \"No change yet\");\r\n }\r\n else if (cannotExpireLastActive) {\r\n saveBtn.setAttribute(\"title\", this.expireFromParentMsg);\r\n }\r\n else if (cannotCancelLastActiveOrPending ) {\r\n saveBtn.setAttribute(\"title\", this.cancelFromParentMsg);\r\n }\r\n else {\r\n saveBtn.setAttribute(\"title\", \"Save\");\r\n }\r\n return noShipperSelectedOnAdd || disabledByNoChange || cannotExpireLastActive || cannotCancelLastActiveOrPending;\r\n }\r\n\r\n public editClicked(cellInfo): void {\r\n if (this.isEditing) return;\r\n\r\n this.alertService.clearMessages();\r\n\r\n this.isEditing = true;\r\n cellInfo.row.isEditing = true;\r\n\r\n cellInfo.component.editRow(cellInfo.row.rowIndex);\r\n }\r\n\r\n protected clearEditMode(cellInfo: any): void {\r\n cellInfo.row.isEditing = false;\r\n this.isEditing = false;\r\n this.isAdding = false;\r\n this.statusOnInitialEdit = null;\r\n this.complianceByDayOnInitialEdit = null;\r\n this.allowComplianceByDateChange = false;\r\n }\r\n\r\n public cancelClicked(cellInfo): void {\r\n cellInfo.row.data.expiryStartOfGasDay = null;\r\n cellInfo.component.cancelEditData();\r\n this.clearEditMode(cellInfo);\r\n }\r\n\r\n public saveClicked(cellInfo: any): void {\r\n cellInfo.component.saveEditData().then(() => {\r\n const shipperData = cellInfo.row.data;\r\n const status = shipperData.status;\r\n\r\n if (this.isAdding) {\r\n switch (status) {\r\n case \"Pending\":\r\n this.doAdd(shipperData, cellInfo, \"Pending\");\r\n return;\r\n\r\n case \"Active\":\r\n this.doAdd(shipperData, cellInfo, \"Active\");\r\n break;\r\n }\r\n }\r\n switch (status) {\r\n case \"Pending\":\r\n this.doUpdate(shipperData, cellInfo, \"Pending\");\r\n return;\r\n\r\n case \"Active\":\r\n this.doUpdate(shipperData, cellInfo, \"Active\");\r\n break;\r\n\r\n case \"Expired\":\r\n this.doUpdateWithConfirmation(shipperData, cellInfo, \"Expire\");\r\n break;\r\n\r\n case \"Cancelled\":\r\n this.doUpdateWithConfirmation(shipperData, cellInfo, \"Cancel\");\r\n break;\r\n }\r\n });\r\n }\r\n\r\n protected doAddShipperWithUserFeedback(shipperData, cellInfo, targetStateName, shipperName, account, refId)\r\n {\r\n // Implement in the derived classes\r\n }\r\n\r\n public doAdd(shipperData: OfoOrderShipperData | OfoWatchShipperData, cellInfo, targetStateName)\r\n {\r\n const refId = cellInfo.component.element().attributes[\"master-ref-id\"].value;\r\n const account = cellInfo.data.nominationGroupMnemonic;\r\n const shipperName = cellInfo.row.data.shipperEnterpriseShortName;\r\n\r\n // do add with final checks with dialogs to inform user if shipper cannot be added\r\n this.doAddShipperWithUserFeedback(shipperData, cellInfo, targetStateName, shipperName, account, refId);\r\n }\r\n\r\n public doUpdate(shipperData: OfoOrderShipperData | OfoWatchShipperData, cellInfo, targetStateName)\r\n {\r\n const refId = cellInfo.component.element().attributes[\"master-ref-id\"].value;\r\n const account = cellInfo.data.nominationGroupMnemonic;\r\n const shipperName = cellInfo.row.data.shipperEnterpriseShortName;\r\n this.updateFunction(shipperData)\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n ,take(1) // unsubscribe after first execution of subscriber\r\n )\r\n .subscribe(() => {\r\n this.clearEditMode(cellInfo);\r\n this.ofoMaintenanceService.announceOfoUpdate(`successful ${targetStateName} update for ${shipperName}: ${account} in ${refId}`);\r\n },\r\n () => {\r\n this.cancelClicked(cellInfo);\r\n this.ofoMaintenanceService.announceOfoUpdate(`failed ${targetStateName} update for ${shipperName}: ${account} in ${refId}`);\r\n });\r\n }\r\n\r\n public doUpdateWithConfirmation(shipperData: OfoOrderShipperData | OfoWatchShipperData, cellInfo, targetStateName)\r\n {\r\n const shipperName = cellInfo.row.data.shipperEnterpriseShortName;\r\n const refId = cellInfo.component.element().attributes[\"master-ref-id\"].value;\r\n const account = cellInfo.data.nominationGroupMnemonic;\r\n this.ofoMaintenanceService.queryConfirmationData()\r\n .pipe(concatMap((tcd) => {\r\n const message = this.ofoMaintenanceService.buildConfirmationMessage(shipperData, shipperName, targetStateName, tcd);\r\n const yesNoModalOptions = new YesNoModalOptions(`${targetStateName} Shipper in ${refId}`, message, 'No', 'Yes');\r\n\r\n return this.modalService.show(yesNoModalOptions)\r\n .pipe(\r\n concatMap(selectedOption => {\r\n if (selectedOption === SelectedModalOption.Yes) {\r\n return this.updateFunction(shipperData);\r\n } else {\r\n return of(false);\r\n }\r\n })\r\n );\r\n }))\r\n .pipe(catchError(err => {\r\n return of(err);\r\n })\r\n ,take(1))\r\n .subscribe(() => {\r\n this.clearEditMode(cellInfo);\r\n this.ofoMaintenanceService.announceOfoUpdate(`successful ${targetStateName} update for ${shipperName}: ${account} in ${refId}`);\r\n },\r\n () => {\r\n this.clearEditMode(cellInfo);\r\n this.ofoMaintenanceService.announceOfoUpdate(`failed ${targetStateName} update for ${shipperName}: ${account} in ${refId}`);\r\n });\r\n }\r\n\r\n public disableEmptyTooltip(message: any) {\r\n return _.isNil(message);\r\n }\r\n\r\n public onInitNewRow(event: any): void {\r\n this.dataGrid.sorting.mode = 'none';\r\n // pre-fill event.data with dummy values.\r\n // dxo-lookup placeholder prompts user to select shipper account\r\n // row gets filled by onSetShipperAccountValue callback\r\n event.data.shipperEnterpriseId = null;\r\n event.data.shipperEnterpriseShortName = null;\r\n event.data.nominationGroupId = null;\r\n event.data.nominationGroupMnemonic = null;\r\n event.data.accumulatedBalance = 0;\r\n event.data.lowAsqLimit = 0;\r\n event.data.highAsqLimit = 0;\r\n event.data.status = OfoStatus.PENDING.name;\r\n event.data.complianceByGasDay = this.minGasDay;\r\n event.data.isEditing = true;\r\n this.isAdding = true;\r\n }\r\n}\r\n","\r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n
\r\n {{row.value | dateFormat: 'YYYY-MMM-DD'}}\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n
\r\n {{row.data.expiryStartOfGasDay | dateFormat: 'YYYY-MMM-DD'}}\r\n
\r\n
\r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n
\r\n {{row.data?.notificationStatus}}\r\n \r\n
\r\n {{row.data.notificationStatusMessage}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n {{row.data?.expiryNotificationStatus}}\r\n \r\n
\r\n {{row.data.expiryNotificationStatusMessage}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Created Date/TimeExpired Date/Time
{{row.data.createDateTime | date:'y-MMM-d HH:mm:ss' }}{{row.data.expiryDateTime | date:'y-MMM-d HH:mm:ss' }}
\r\n
\r\n \r\n
\r\n\r\n
\r\n","import {Component, Input} from '@angular/core';\r\nimport {OfoStatus} from \"@model/ofo-status\";\r\nimport {OfoWatchData, OfoMaintenanceService, OfoAddShipperInfo} from \"@shared/services/flowing-gas/ofo-maintenance-service/ofo-maintenance.service\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {YesNoCancelModalService} from \"@shared/services/webapp/yes-no-cancel-modal/yes-no-cancel-modal.service\";\r\nimport {FlowinggasResourceService} from \"@shared/resources/flowinggas-resource.service\";\r\nimport {OfoShippersBaseComponent} from \"app/gcts/flowinggas/ofo-maintenance/shared/ofo-shippers-base.component\";\r\nimport {catchError, concatMap, take} from \"rxjs/operators\";\r\nimport {of, throwError} from \"rxjs\";\r\n\r\n@Component({\r\n selector: 'app-ofo-watch-shippers',\r\n templateUrl: './ofo-watch-shippers.component.html',\r\n styleUrls: ['./ofo-watch-shippers.component.css']\r\n})\r\nexport class OfoWatchShippersComponent extends OfoShippersBaseComponent {\r\n @Input() ofoWatch: OfoWatchData = new OfoWatchData();\r\n @Input() enableEditing: boolean = false;\r\n\r\n constructor(\r\n ofoMaintenanceService: OfoMaintenanceService,\r\n alertService: AlertService,\r\n modalService: YesNoCancelModalService,\r\n flowingGasResource: FlowinggasResourceService,\r\n ) {\r\n super(ofoMaintenanceService, alertService, modalService, flowingGasResource);\r\n this.updateFunction = this.ofoMaintenanceService.updateOfoWatchShipper;\r\n this.addFunction = this.ofoMaintenanceService.addOfoWatchShipper;\r\n }\r\n\r\n public getNumShippersWithStatus(statuses: OfoStatus[]): number {\r\n return super.getNumShippersMatchingStatus(this.ofoWatch.shippers, statuses);\r\n }\r\n\r\n protected addShipper(addShipperInfo: OfoAddShipperInfo): void {\r\n this.commonAddShipper(addShipperInfo, this.ofoWatch.referenceId, addShipperInfo.availableWatchShippers);\r\n }\r\n\r\n protected doAddShipperWithUserFeedback(shipperData, cellInfo, targetStateName, shipperName, account, refId) {\r\n const enterpriseIds: number[] = [shipperData.shipperEnterpriseId];\r\n shipperData.ofoWatchReferenceId = refId;\r\n this.ofoMaintenanceService.confirmActiveShippersInActiveWatches(enterpriseIds)\r\n .pipe(\r\n concatMap(confirmed => {\r\n if (confirmed) {\r\n return this.addFunction(shipperData)\r\n .pipe(\r\n catchError(err => {\r\n return throwError(err);\r\n })\r\n );\r\n } else {\r\n return of(false);\r\n }\r\n }),\r\n catchError(err => {\r\n return of(err);\r\n })\r\n , take(1) // unsubscribe after first execution of subscriber\r\n )\r\n .subscribe(() => {\r\n this.clearEditMode(cellInfo);\r\n this.ofoMaintenanceService.announceOfoUpdate(`successful ${targetStateName} add for ${shipperName}: ${account} in ${refId}`);\r\n },\r\n () => {\r\n this.clearEditMode(cellInfo);\r\n this.ofoMaintenanceService.announceOfoUpdate(`failed ${targetStateName} add for ${shipperName}: ${account} in ${refId}`);\r\n });\r\n }\r\n\r\n}\r\n"," 0\"\r\n >\r\n\r\n \r\n
\r\n {{row.data.gasDay | dateFormat: 'YYYY-MMM-DD'}}\r\n
\r\n
\r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n
\r\n {{row.data?.notificationStatus}}\r\n \r\n
\r\n {{row.data.notificationStatusMessage}}\r\n
\r\n
\r\n
\r\n
\r\n \r\n","import {Component, Input} from '@angular/core';\r\nimport {OfoMaintenanceService, OfoOrderShipperData, OfoOrderShipperExcessQuantityData, OfoWatchShipperData} from \"@shared/services/flowing-gas/ofo-maintenance-service/ofo-maintenance.service\";\r\nimport {DateTime} from \"@model/date-time\";\r\nimport * as _ from \"lodash\";\r\n\r\n@Component({\r\n selector: 'app-ofo-penalty',\r\n templateUrl: './ofo-penalty.component.html',\r\n styleUrls: ['./ofo-penalty.component.css']\r\n})\r\nexport class OfoPenaltyComponent {\r\n\r\n @Input() ofoOrderShipper : OfoOrderShipperData;\r\n\r\n constructor(\r\n ofoMaintenanceService: OfoMaintenanceService\r\n ) { }\r\n\r\n public formatDateTime(obj: Date): string {\r\n return new DateTime(obj).toDisplayFormat();\r\n }\r\n\r\n public asqLimitDisplayValue(rowData: OfoOrderShipperExcessQuantityData): string {\r\n return `${rowData.lowAsqLimit.toLocaleString()} / +${rowData.highAsqLimit.toLocaleString()}`;\r\n }\r\n\r\n public getNotificationStatusCellClass(rowData) {\r\n if (_.isNil(rowData.notificationStatus)) return '';\r\n\r\n return (rowData.notificationStatus === 'Failed')\r\n ? 'notificationStatusFailed'\r\n : (rowData.notificationStatus === 'Sent')\r\n ? 'notificationStatusSent'\r\n : '';\r\n }\r\n\r\n public disableEmptyTooltip(message: any) {\r\n return _.isNil(message);\r\n }\r\n\r\n}\r\n","\r\n\r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n
\r\n {{row.value | dateFormat: 'YYYY-MMM-DD'}}\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n
\r\n {{row.data.expiryStartOfGasDay | dateFormat: 'YYYY-MMM-DD'}}\r\n
\r\n
\r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n
\r\n {{row.data?.notificationStatus}}\r\n \r\n
\r\n {{row.data.notificationStatusMessage}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n {{row.data?.expiryNotificationStatus}}\r\n \r\n
\r\n {{row.data.expiryNotificationStatusMessage}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Created Date/TimeExpired Date/Time
{{row.data.createDateTime | date:'y-MMM-d HH:mm:ss' }}{{row.data.expiryDateTime | date:'y-MMM-d HH:mm:ss' }}
\r\n
\r\n \r\n
\r\n\r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n","import {Component, Input} from '@angular/core';\r\nimport {OfoStatus} from \"@model/ofo-status\";\r\nimport {DataGridHooks} from \"@shared/devexpress/datagrid-hooks\";\r\nimport {OfoAddShipperInfo, OfoMaintenanceService, OfoOrderData} from \"@shared/services/flowing-gas/ofo-maintenance-service/ofo-maintenance.service\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {YesNoCancelModalService} from \"@shared/services/webapp/yes-no-cancel-modal/yes-no-cancel-modal.service\";\r\nimport {FlowinggasResourceService} from \"@shared/resources/flowinggas-resource.service\";\r\nimport {OfoShippersBaseComponent} from \"app/gcts/flowinggas/ofo-maintenance/shared/ofo-shippers-base.component\";\r\nimport * as _ from \"lodash\";\r\nimport {catchError, concatMap, take} from \"rxjs/operators\";\r\nimport {Observable, of, throwError} from \"rxjs\";\r\nimport {OkModalOptions} from \"@shared/services/webapp/modal-options/ok-modal-options\";\r\nimport {SelectedModalOption} from \"@shared/services/webapp/modal-options/selected-modal-option\";\r\n\r\n@Component({\r\n selector: 'app-ofo-order-shippers',\r\n templateUrl: './ofo-order-shippers.component.html',\r\n styleUrls: ['./ofo-order-shippers.component.css']\r\n})\r\nexport class OfoOrderShippersComponent extends OfoShippersBaseComponent {\r\n @Input() ofoOrder: OfoOrderData = new OfoOrderData();\r\n @Input() enableEditing: boolean = false;\r\n\r\n constructor(\r\n ofoMaintenanceService: OfoMaintenanceService,\r\n alertService: AlertService,\r\n modalService: YesNoCancelModalService,\r\n flowingGasResource: FlowinggasResourceService,\r\n ) {\r\n super(ofoMaintenanceService, alertService, modalService, flowingGasResource);\r\n this.updateFunction = this.ofoMaintenanceService.updateOfoOrderShipper;\r\n this.addFunction = this.ofoMaintenanceService.addOfoOrderShipper;\r\n }\r\n\r\n public getNumShippersWithStatus(statuses: OfoStatus[]): number {\r\n return super.getNumShippersMatchingStatus(this.ofoOrder.shippers, statuses);\r\n }\r\n\r\n public onCellPrepared($event): void {\r\n DataGridHooks.hideExpandIcon($event, (rowData) => {\r\n return !(\"penalties\" in rowData) || (rowData[\"penalties\"]?.length === 0);\r\n });\r\n }\r\n\r\n protected addShipper(addShipperInfo: OfoAddShipperInfo): void {\r\n this.commonAddShipper(addShipperInfo, this.ofoOrder.referenceId, addShipperInfo.availableOrderShippers);\r\n }\r\n\r\n private checkIfActiveInAnotherOrderWithFeedback(shipperData: any): Observable {\r\n return this.ofoMaintenanceService.QueryShippersInActiveOrder([]).pipe(\r\n concatMap(s => {\r\n const activeInAnotherOrder = _.find(s,\r\n ss => ss.enterpriseId === shipperData.shipperEnterpriseId &&\r\n ss.shipperStatus === OfoStatus.ACTIVE.name);\r\n if (!_.isNil(activeInAnotherOrder)) {\r\n const message = `Shipper ${shipperData.shipperMnemonic} is already active in order ${activeInAnotherOrder?.referenceId}`;\r\n const okModalOptions = new OkModalOptions(\"Add Order Shipper\", message);\r\n return this.modalService.show(okModalOptions);\r\n }\r\n return of(true); // not active\r\n })\r\n );\r\n }\r\n\r\n private checkIfImbalanceExistsWithFeedback(shipperData: any): Observable {\r\n return this.ofoMaintenanceService.queryConfirmationData().pipe(\r\n concatMap(tcd => {\r\n if (!_.isNil(tcd)) {\r\n const imbalanceMessage: string = this.ofoMaintenanceService.checkForImbalance(shipperData, shipperData.shipperEnterpriseMnemonic, tcd);\r\n if (_.isNil(imbalanceMessage)) {\r\n const message = `Shipper ${shipperData.shipperMnemonic} is within compliance and cannot be added`;\r\n const okModalOptions = new OkModalOptions(\"Add Order Shipper\", message);\r\n return this.modalService.show(okModalOptions);\r\n }\r\n return of(true); // non-compliance still exists\r\n }\r\n return of(false); // no tcd avaialable\r\n })\r\n );\r\n }\r\n\r\n protected doAddShipperWithUserFeedback(shipperData, cellInfo, targetStateName, shipperName, account, refId) {\r\n return this.checkIfActiveInAnotherOrderWithFeedback(shipperData).pipe(\r\n concatMap(notActive => {\r\n if (notActive === true) {\r\n return this.checkIfImbalanceExistsWithFeedback(shipperData);\r\n }\r\n return of(false);\r\n }),\r\n concatMap(nonComplianceExists => {\r\n if (nonComplianceExists === true) {\r\n shipperData.ofoOrderReferenceId = refId;\r\n return this.addFunction(shipperData)\r\n .pipe(\r\n catchError(err => {\r\n return throwError(err);\r\n })\r\n );\r\n }\r\n return of(false);\r\n }),\r\n catchError(err => {\r\n return of(err);\r\n }),\r\n take(1) // unsubscribe after first execution of subscriber\r\n )\r\n .subscribe((saved) => {\r\n this.clearEditMode(cellInfo);\r\n if (saved === false) {\r\n this.ofoMaintenanceService.announceOfoUpdate(`prevented ${targetStateName} add for ${shipperName}: ${account} in ${refId}`);\r\n }\r\n this.ofoMaintenanceService.announceOfoUpdate(`successful ${targetStateName} add for ${shipperName}: ${account} in ${refId}`);\r\n },\r\n () => {\r\n this.clearEditMode(cellInfo);\r\n this.ofoMaintenanceService.announceOfoUpdate(`failed ${targetStateName} add for ${shipperName}: ${account} in ${refId}`);\r\n });\r\n }\r\n\r\n\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n\r\n \r\n
\r\n Validation Error: \r\n Gas Day range must be less than a year.\r\n
\r\n\r\n \r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Search By: {{model.lastSearchParams?.searchByType}}\r\n \r\n Start Gas Day: {{model.lastSearchParams?.startGasDay | gasDayFormat}}\r\n End Gas Day: {{model.lastSearchParams?.endGasDay | gasDayFormat}}\r\n Customer: {{model.lastSearchParams?.enterpriseId | displayName: 'cid' : 'displayValue' : model.customerEnterprises}}\r\n \r\n \r\n Reference Id: {{model.lastSearchParams?.referenceId}}\r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n Gas Day Range\r\n \r\n \r\n Watch\r\n \r\n \r\n Order\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
Hint: for {{model.ofoRefIdPrefix}}-000125, Input 125
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.searchByType}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.referenceId}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.startGasDay | gasDayFormat}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.endGasDay | gasDayFormat}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.enterpriseId | displayName: 'cid' : 'displayValue' : model.customerEnterprises}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n -\r\n +\r\n Watches\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Number of watches found: {{model.searchResultWatches?.length}}\r\n\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n Accumulated
Balance (GJ)\r\n
\r\n
\r\n\r\n \r\n
\r\n Initial
Compliance By
(End of Gas Day)\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n
\r\n Current
Status\r\n
\r\n
\r\n\r\n \r\n \r\n\r\n \r\n
\r\n Expired Effective
(Start of Gas Day)\r\n
\r\n
\r\n {{row.data.expiryStartOfGasDay | dateFormat: 'YYYY-MMM-DD'}}\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n
\r\n Compliance
Requirement\r\n
\r\n
\r\n\r\n \r\n
\r\n Issue
Notification
Status\r\n
\r\n
\r\n\r\n \r\n
\r\n Expiry
Notification
Status\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Created Date/TimeExpired Date/Time
{{row.data.createDateTime | date:'y-MMM-d HH:mm:ss' }}{{row.data.expiryDateTime | date:'y-MMM-d HH:mm:ss'}}
\r\n
\r\n \r\n
\r\n\r\n \r\n\r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n\r\n
\r\n -\r\n +\r\n Orders\r\n
\r\n
\r\n
\r\n
\r\n Number of orders found: {{model.searchResultOrders?.length}}\r\n\r\n
\r\n \r\n
\r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n\r\n \r\n
\r\n Watch
Reference ID\r\n
\r\n
\r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n
\r\n Accumulated
Balance (GJ)\r\n
\r\n
\r\n\r\n \r\n
\r\n Initial
Compliance By
(End of Gas Day)\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n
\r\n Current
Status\r\n
\r\n
\r\n\r\n \r\n \r\n\r\n \r\n
\r\n Expired Effective
(Start of Gas Day)\r\n
\r\n
\r\n {{row.data.expiryStartOfGasDay | dateFormat: 'YYYY-MMM-DD'}}\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n Compliance
Requirement\r\n
\r\n\r\n \r\n
\r\n Issue
Notification
Status\r\n
\r\n
\r\n\r\n \r\n
\r\n Expiry
Notification
Status\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Created Date/TimeExpired Date/Time
{{row.data.createDateTime | date:'y-MMM-d HH:mm:ss' }}{{row.data.expiryDateTime | date:'y-MMM-d HH:mm:ss'}}
\r\n
\r\n \r\n
\r\n\r\n \r\n\r\n
\r\n \r\n\r\n
\r\n\r\n \r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n","import {Component, OnInit, ViewChild} from '@angular/core';\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {forkJoin, Observable, of, throwError} from \"rxjs\";\r\nimport {catchError, concatMap, mergeMap, take, tap} from \"rxjs/operators\";\r\nimport {EditableSearchComponent} from \"@model/editable-search-component\";\r\nimport {DateTime} from \"@model/date-time\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {OfoStatus} from \"@model/ofo-status\";\r\nimport {IDateDisplayFormat} from \"@shared/interfaces/date-display-format\";\r\nimport {Enterprise, EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {OfoMaintenanceService, OfoOrderData, OfoQueryResult, OfoWatchData, ShipperStatusInOfoDto} from \"@shared/services/flowing-gas/ofo-maintenance-service/ofo-maintenance.service\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {ModalOptions} from \"@shared/services/webapp/modal-options/modal-options\";\r\nimport {YesNoModalOptions} from \"@shared/services/webapp/modal-options/yes-no-modal-options\";\r\nimport {SelectedModalOption} from \"@shared/services/webapp/modal-options/selected-modal-option\";\r\nimport {YesNoCancelModalService} from \"@shared/services/webapp/yes-no-cancel-modal/yes-no-cancel-modal.service\";\r\nimport {GlobalVars, OfoMaintenanceModel, OfoSearchByType, OfoSearchParams, OfoType} from \"app/gcts/flowinggas/ofo-maintenance/ofo-maintenance.model\";\r\nimport {NewOfoWatchModalComponent} from \"app/gcts/flowinggas/ofo-maintenance/new-ofo-watch-modal/new-ofo-watch-modal.component\";\r\nimport {NewOfoOrderModalComponent} from \"app/gcts/flowinggas/ofo-maintenance/new-ofo-order-modal/new-ofo-order-modal.component\";\r\nimport {NominationSystemService} from \"@shared/services/nomination/nomination-system/nomination-system.service\";\r\nimport {FlowingGasGasDayStatusService} from \"@shared/services/flowing-gas/flowing-gas-gas-day-status-service/flowing-gas-gas-day-status.service\";\r\nimport {FlowingGasTrendComplianceService, TrendComplianceDataDto} from \"@shared/services/flowing-gas/flowing-gas-trend-compliance-service/flowing-gas-trend-compliance-service\";\r\nimport {OfoOrderShipperGridRow} from \"app/gcts/flowinggas/ofo-maintenance/new-ofo-order-modal/new-ofo-order-modal.model\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {ExpandCollapseComponent} from \"@shared/components/expand-collapse/expand-collapse.component\";\r\nimport {FlowinggasResourceService} from \"@shared/resources/flowinggas-resource.service\";\r\nimport {NominationGroupService} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport {NomGroupEnrichmentService} from \"@shared/services/enrichment/nomgroup-enrichment.service\";\r\nimport {AccountsCustomerSearchParams, AccountsEnterpriseService} from \"@shared/services/accounts/accounts-enterprise/accounts-enterprise.service\";\r\nimport {BusinessRight} from \"@model/business-right\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport * as _ from \"lodash\";\r\nimport * as moment from 'moment';\r\nimport DevExpress from \"devextreme\";\r\nimport {UserService} from \"@shared/services/webapp/user/user-service\";\r\n\r\ntype updateFunctionType = (any) => Observable;\r\n\r\n@Component({\r\n selector: 'app-ofo-maintenance',\r\n templateUrl: './ofo-maintenance.component.html',\r\n styleUrls: ['./ofo-maintenance.component.css']\r\n})\r\nexport class OfoMaintenanceComponent extends EditableSearchComponent implements OnInit {\r\n private static PARAM_SEARCH_TYPE: string = 'searchType';\r\n private static PARAM_START_GAS_DAY: string = 'startGasDay';\r\n private static PARAM_END_GAS_DAY: string = 'endGasDay';\r\n private static PARAM_CUSTOMER_ID: string = 'customerId';\r\n private static PARAM_OFO_TYPE: string = 'ofoType';\r\n private static PARAM_REFERENCE_ID: string = 'referenceId';\r\n\r\n public orderStatuses: OfoStatus[] = OfoStatus.ALL;\r\n public watchStatuses: OfoStatus[] = OfoStatus.ALL;\r\n\r\n\r\n @ViewChild('ofoWatchSearchResults') ofoWatchesDataGrid: DxDataGridComponent;\r\n @ViewChild('ofoOrderSearchResults') ofoOrdersDataGrid: DxDataGridComponent;\r\n @ViewChild('ofoWatchesGridExpander') ofoWatchesGridExpander: ExpandCollapseComponent;\r\n @ViewChild('ofoOrdersGridExpander') ofoOrdersGridExpander: ExpandCollapseComponent;\r\n @ViewChild(NewOfoWatchModalComponent) newOfoWatchModal: NewOfoWatchModalComponent;\r\n @ViewChild(NewOfoOrderModalComponent) newOfoOrderModal: NewOfoOrderModalComponent;\r\n\r\n public model: OfoMaintenanceModel = new OfoMaintenanceModel();\r\n public dateEditorFormat: IDateDisplayFormat;\r\n\r\n private expandResultsAfterSearch: boolean = false;\r\n\r\n isEditingOrder: boolean = false;\r\n statusOnInitialOrderEdit = null;\r\n\r\n enableEditing: boolean = false;\r\n isEditingWatch: boolean = false;\r\n statusOnInitialWatchEdit: string = null;\r\n extraShippersForWatchByRef = {};\r\n extraShippersForOrderByRef = {};\r\n allCurrentShipperInfo: any[];\r\n\r\n // abstracts service call to backend\r\n // more useful after upcoming component split refactoring\r\n protected updateFunction: updateFunctionType;\r\n\r\n private csvFileHeaders = [\r\n 'Reference ID',\r\n 'Account',\r\n 'ASQ Limit (GJ)',\r\n 'Accumulated Balance (GJ)',\r\n 'Initial Compliance By (End of Gas Day)',\r\n 'Current Status',\r\n 'Shipper Status',\r\n 'Issue Date/Time',\r\n 'Expired Effective (Start of Gas Day)',\r\n 'OFO Type',\r\n 'Compliance Requirement',\r\n 'Issue Notification Status',\r\n 'Expiry Notification Status',\r\n 'Created Date/Time',\r\n 'Expired Date/Time'\r\n ];\r\n private csvFileColumns = [\r\n 'referenceId',\r\n 'nominationGroupMnemonic',\r\n 'asqLimitDisplayValue',\r\n 'accumulatedBalance',\r\n 'complianceByGasDayCsv',\r\n 'ofoStatus',\r\n 'status',\r\n 'issueDateTimeCsv',\r\n 'expiryStartOfGasDayCsv',\r\n 'ofoType',\r\n 'complianceRequirement',\r\n 'notificationStatus',\r\n 'expiryNotificationStatus',\r\n 'createDateTimeCsv',\r\n 'expiryDateTimeCsv'\r\n ];\r\n\r\n constructor(public alertService: AlertService,\r\n protected appService: AppService,\r\n protected router: Router,\r\n protected activatedRoute: ActivatedRoute,\r\n protected ofoMaintenanceService: OfoMaintenanceService,\r\n protected flowingGasResource: FlowinggasResourceService,\r\n private userService: UserService,\r\n private flowingGasGasDayStatusService: FlowingGasGasDayStatusService,\r\n private nominationSystemService: NominationSystemService,\r\n private flowingGasTrendComplianceService: FlowingGasTrendComplianceService,\r\n private accountsEnterpriseService: AccountsEnterpriseService,\r\n private enterpriseService: EnterpriseService,\r\n private enterpriseEnrichmentService: EnterpriseEnrichmentService,\r\n private nominationGroupService: NominationGroupService,\r\n private nomGroupEnrichmentService: NomGroupEnrichmentService,\r\n private modalService: YesNoCancelModalService,\r\n private fileService: FileService) {\r\n super('Operational Flow Orders', appService, activatedRoute, router, alertService);\r\n enterpriseEnrichmentService.setEnrichmentResource(enterpriseService);\r\n nomGroupEnrichmentService.setEnrichmentResource(nominationGroupService);\r\n this.dateEditorFormat = {\r\n formatter: this.dateEditorFormatter,\r\n parser: this.dateEditorParser\r\n };\r\n }\r\n\r\n\r\n private static saveDisabledCommon(cellInfo, statusOnInitialEdit, saveBtnId): boolean {\r\n const status = cellInfo.row.data.status;\r\n const disabledByNoChange = status === statusOnInitialEdit;\r\n\r\n const saveBtn = document.getElementById(saveBtnId);\r\n\r\n if (disabledByNoChange) {\r\n saveBtn.setAttribute(\"title\", \"No change yet\");\r\n } else {\r\n saveBtn.setAttribute(\"title\", \"Save\");\r\n }\r\n return disabledByNoChange;\r\n }\r\n\r\n public ngOnInit(): void {\r\n super.ngOnInit();\r\n\r\n this.subscribeToOfoUpdates();\r\n\r\n // normally we would just put *appSecureItem directives in the html, however this was causing a strange problem with angular\r\n // when a row in the master dxgrid was finished editing (watches or orders), the call to dxgrid.SaveEditData or dxgrid.CancelEditData\r\n // was causing the grid to be refreshed, which was causing the detail grid to be disposed and reconstructed.\r\n // This in turn causes the *appSecureItems in the detail grid to be recreated and re-evaluates the users capabilities.\r\n // Most of the time this was fine, however, if the JWT had expired, it needed to go out to the server to reauthenticate.\r\n // The authentication worked fine, but after that point, the angular change detection stopped working on the page\r\n // which meant that on the next edit, the save button was never enabled after edits being made.\r\n // evaluating the users capability once when the page is created and then passing a flag down to the detail grids fixes the issue.\r\n this.enableEditing = this.userService.hasCapabilities(['OfoMaintenance-Write']);\r\n }\r\n\r\n public subscribeToOfoUpdates(): void {\r\n // projecting performSearch after a component announces an update via service keeps all data in sync\r\n // base component will unsubscribe tracked subscriptions\r\n this.trackSubscription(\r\n this.ofoMaintenanceService.ofoUpdate$.pipe(\r\n mergeMap(_detailUpdateMsg => {\r\n return this.performSearchWithoutParamUpdate();\r\n }),\r\n catchError(error => {\r\n // should not happen, but just in case, eat the error to prevent unsubscribing\r\n console.log(error);\r\n return of();\r\n }))\r\n .subscribe(() => {\r\n })\r\n );\r\n }\r\n\r\n public dateEditorFormatter(dateTime: Date): string {\r\n if (_.isNil(dateTime)) {\r\n return '';\r\n }\r\n return GasDay.from(dateTime).toDisplayDateTimeFormat();\r\n }\r\n\r\n public gasDayCsvFormatter(dateTime: Date): string {\r\n if (_.isNil(dateTime)) {\r\n return '';\r\n }\r\n return GasDay.from(dateTime).toCsvFormat();\r\n }\r\n\r\n public dateEditorParser(value: string): Date {\r\n try {\r\n return GasDay.parse(value).toDate;\r\n } catch (e) {\r\n return new Date(NaN);\r\n }\r\n }\r\n\r\n public formatDateTime(obj: Date): string {\r\n return _.isNil(obj) ? '' : new DateTime(obj).toDisplayFormat();\r\n }\r\n\r\n public csvFormatDateTime(obj: Date): string {\r\n return _.isNil(obj) ? '' : new DateTime(obj).toCsvFormat();\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.ofoSearchParams = new OfoSearchParams();\r\n this.model.ofoSearchParams.searchByType = OfoSearchByType[OfoSearchByType.GasDayRange];\r\n this.model.ofoSearchParams.startGasDay = this.model.currentGasDay;\r\n this.model.ofoSearchParams.endGasDay = this.model.currentGasDay;\r\n if (this.model.customerEnterprises?.length === 1) {\r\n this.model.ofoSearchParams.enterpriseId = this.model.customerEnterprises[0].id;\r\n }\r\n else if (this.model.isExternalUser && this.model.customerEnterprises?.length > 1) {\r\n const index = this.model.customerEnterprises?.findIndex(r => r.id === Number(this.userService.user.enterpriseId));\r\n if (index !== -1) {\r\n this.model.ofoSearchParams.enterpriseId = this.model.customerEnterprises[index].id;\r\n }\r\n }\r\n this.model.clearSearchResults();\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {};\r\n params[OfoMaintenanceComponent.PARAM_SEARCH_TYPE] = this.model.ofoSearchParams.searchByType;\r\n if (this.model.ofoSearchParams.isSearchByTypeGasDayRange) {\r\n params[OfoMaintenanceComponent.PARAM_START_GAS_DAY] = this.model.ofoSearchParams.startGasDay;\r\n params[OfoMaintenanceComponent.PARAM_END_GAS_DAY] = this.model.ofoSearchParams.endGasDay;\r\n params[OfoMaintenanceComponent.PARAM_CUSTOMER_ID] = this.model.ofoSearchParams.enterpriseId;\r\n }\r\n else if (this.model.ofoSearchParams.isSearchByTypeRefId) {\r\n params[OfoMaintenanceComponent.PARAM_OFO_TYPE] = this.model.ofoSearchParams.selectedOfoType;\r\n params[OfoMaintenanceComponent.PARAM_REFERENCE_ID] = this.model.ofoSearchParams.referenceId;\r\n }\r\n\r\n return params;\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.ofoSearchParams.searchByType = typedParams.asString(OfoMaintenanceComponent.PARAM_SEARCH_TYPE);\r\n this.model.ofoSearchParams.startGasDay = this.model.currentGasDay;\r\n this.model.ofoSearchParams.endGasDay = this.model.currentGasDay;\r\n if (this.model.ofoSearchParams.isSearchByTypeGasDayRange) {\r\n this.model.ofoSearchParams.startGasDay = typedParams.asNullableGasDay(OfoMaintenanceComponent.PARAM_START_GAS_DAY);\r\n this.model.ofoSearchParams.endGasDay = typedParams.asNullableGasDay(OfoMaintenanceComponent.PARAM_END_GAS_DAY);\r\n this.model.ofoSearchParams.enterpriseId = typedParams.asNullableNumber(OfoMaintenanceComponent.PARAM_CUSTOMER_ID);\r\n }\r\n else if (this.model.ofoSearchParams.isSearchByTypeRefId) {\r\n this.model.ofoSearchParams.selectedOfoType = typedParams.asNullableString(OfoMaintenanceComponent.PARAM_OFO_TYPE);\r\n this.model.ofoSearchParams.referenceId = typedParams.asNullableString(OfoMaintenanceComponent.PARAM_REFERENCE_ID);\r\n this.onOfoTypeChanged(null);\r\n }\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n const paramValidator = ParamValidator.Standard();\r\n\r\n paramValidator.isOneOf(OfoMaintenanceComponent.PARAM_SEARCH_TYPE,\r\n [OfoSearchByType[OfoSearchByType.GasDayRange], OfoSearchByType[OfoSearchByType.Watch], OfoSearchByType[OfoSearchByType.Order]]);\r\n\r\n if (!paramValidator.isValid(params)) return false;\r\n\r\n const ofoSearchType = params[OfoMaintenanceComponent.PARAM_SEARCH_TYPE];\r\n\r\n if (ofoSearchType === OfoSearchByType[OfoSearchByType.GasDayRange]) {\r\n paramValidator.isGasDay(OfoMaintenanceComponent.PARAM_START_GAS_DAY);\r\n paramValidator.isGasDay(OfoMaintenanceComponent.PARAM_END_GAS_DAY);\r\n paramValidator.isNumber(OfoMaintenanceComponent.PARAM_CUSTOMER_ID, true);\r\n }\r\n if (ofoSearchType === OfoSearchByType[OfoSearchByType.Watch]\r\n || ofoSearchType === OfoSearchByType[OfoSearchByType.Order]) {\r\n paramValidator.isOneOf(OfoMaintenanceComponent.PARAM_OFO_TYPE, _.map(OfoType.ALL, t => t.id));\r\n paramValidator.isString(OfoMaintenanceComponent.PARAM_REFERENCE_ID);\r\n }\r\n\r\n return paramValidator.isValid(params);\r\n }\r\n\r\n public isGasDayRangeAYearOrMore(): boolean {\r\n if (!this.model.ofoSearchParams.isSearchByTypeGasDayRange\r\n || _.isNil(this.model.ofoSearchParams.startGasDay)\r\n || _.isNil(this.model.ofoSearchParams.endGasDay))\r\n {\r\n return false;\r\n }\r\n return this.model.ofoSearchParams.startGasDay.addMonths(12) <= this.model.ofoSearchParams.endGasDay;\r\n }\r\n\r\n public onStartGasDayChanged(): void {\r\n if (this.model.ofoSearchParams.isSearchByTypeGasDayRange) {\r\n if (_.isNil(this.model.ofoSearchParams.endGasDay)\r\n || this.model.ofoSearchParams.startGasDay > this.model.ofoSearchParams.endGasDay) {\r\n this.model.ofoSearchParams.endGasDay = this.model.ofoSearchParams.startGasDay;\r\n }\r\n }\r\n }\r\n\r\n\r\n\r\n protected loadInitialResources(): Observable {\r\n this.model.isExternalUser = this.userService.user.isExternalUser;\r\n return this.nominationSystemService.pipelineGasDay()\r\n .pipe(\r\n concatMap((pipelineGasDay) => {\r\n this.model.currentGasDay = pipelineGasDay.actualGasDay;\r\n this.model.earliestSelectableGasDay = pipelineGasDay.earliestSelectableGasDay;\r\n return this.queryCustomerEnterprises();\r\n })\r\n );\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n return of(null);\r\n }\r\n\r\n public searchClicked() {\r\n this.expandResultsAfterSearch = true; // automatically expand results when user clicks search\r\n super.searchClicked();\r\n }\r\n\r\n protected performSearchWithoutParamUpdate(): Observable {\r\n // if we are doing a search, we are no longer editing - set these false just to make sure\r\n this.isEditingOrder = false;\r\n this.isEditingWatch = false;\r\n // and then do the actual query\r\n if (this.model.isExternalUser) {\r\n return this.queryOfos();\r\n } else {\r\n return forkJoin([\r\n this.queryTrendCompliance(),\r\n this.queryShippersInActiveOrder(),\r\n this.queryShippersInActiveWatch(),\r\n this.queryOfos()\r\n ]);\r\n }\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.ofoSearchParams);\r\n return this.performSearchWithoutParamUpdate();\r\n }\r\n\r\n protected searchCompleted(): void {\r\n if (this.expandResultsAfterSearch) {\r\n if (this.ofoWatchesGridExpander && this.model.showWatchSection) {\r\n this.ofoWatchesGridExpander.toggle(true);\r\n }\r\n if (this.ofoOrdersGridExpander && this.model.showOrderSection) {\r\n this.ofoOrdersGridExpander.toggle(true);\r\n }\r\n this.expandResultsAfterSearch = false;\r\n }\r\n }\r\n\r\n navigationCancelled(): void {\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n getDefaultChangesWillBeLostMessageOptions(): ModalOptions {\r\n return undefined;\r\n }\r\n\r\n hasUnsavedChanges(): boolean {\r\n return false;\r\n }\r\n\r\n public addOfoWatch(): void {\r\n this.newOfoWatchModal.show();\r\n }\r\n\r\n public createOfoOrderAllowed(cellInfo) : boolean {\r\n if (_.isNil(this.model.shipperSelectionInfo.trendComplianceData)) return false;\r\n const watchStatus = cellInfo.row.data.status;\r\n const hasOrders = cellInfo.row.data.ofoOrders && (cellInfo.row.data.ofoOrders.filter(o => OfoStatus.isActiveOrPending(o.status)).length > 0);\r\n const preventedShippers = this.model.shipperSelectionInfo.shippersInActiveOrders;\r\n const customerData = this.model.shipperSelectionInfo.trendComplianceData.customerData;\r\n const npp = this.model.shipperSelectionInfo.trendComplianceData.nppData?.netPipelinePosition;\r\n if (_.isEmpty(customerData) || _.isNil(npp)) {\r\n return false;\r\n }\r\n const currentGasDay = this.model.shipperSelectionInfo.currentGasDay;\r\n const activeShippers = cellInfo.row.data.shippers.filter(s => s.status === OfoStatus.ACTIVE.id);\r\n const ofoWatchShippers = _.map(activeShippers, shipper => OfoOrderShipperGridRow.fromOfoWatchShipperData(shipper, customerData, npp, preventedShippers, currentGasDay));\r\n const hasSelectableShipper = !_.isNil(_.find(ofoWatchShippers, s => s.selectedForOrder === true));\r\n return watchStatus === OfoStatus.ACTIVE.id && !hasOrders && hasSelectableShipper;\r\n }\r\n\r\n public canCreateOfoWatch() : boolean {\r\n return !_.isNil(this.model.shipperSelectionInfo.trendComplianceData?.nppData?.netPipelinePosition);\r\n }\r\n\r\n public ofoWatchTooltipText() {\r\n return this.canCreateOfoWatch() ? \"\" : \"No Net Pipeline Position data exists before the current gas day\";\r\n }\r\n\r\n public createOfoOrder(cellInfo): void {\r\n this.newOfoOrderModal.show(cellInfo.row.data.referenceId);\r\n }\r\n\r\n public watchSaveClicked(cellInfo): void {\r\n cellInfo.component.saveEditData().then(() => {\r\n this.updateFunction = this.ofoMaintenanceService.updateSimpleOfoWatch;\r\n const ofoWatch = cellInfo.row.data;\r\n const status = ofoWatch.status;\r\n switch (status) {\r\n case \"Pending\":\r\n this.clearWatchEditMode(cellInfo);\r\n return;\r\n\r\n case \"Active\":\r\n this.saveActiveWatch(ofoWatch, cellInfo);\r\n break;\r\n\r\n case \"Expired\":\r\n this.doOfoUpdateWithConfirmation(ofoWatch, cellInfo, \"Expire\");\r\n break;\r\n\r\n case \"Cancelled\":\r\n this.doOfoUpdateWithConfirmation(ofoWatch, cellInfo, \"Cancel\");\r\n break;\r\n\r\n default:\r\n this.alertService.addWarnMessage(\"Warning\", `unknown status $(status}`);\r\n }\r\n });\r\n }\r\n\r\n public buildOfoConfirmationMessage(ofo: OfoOrderData | OfoWatchData, actionString: string, complianceData: TrendComplianceDataDto): string {\r\n if (actionString === 'Cancel') {\r\n actionString = 'be Cancelled';\r\n }\r\n let message: string = \"\";\r\n const imbalanceInfo = {};\r\n ofo.shippers\r\n .filter(s => OfoStatus.isActiveOrPending(s.status))\r\n .forEach(s => {\r\n const imbalance = this.ofoMaintenanceService.checkForImbalance(s, s.shipperEnterprise, complianceData);\r\n if (!_.isNil(imbalance)) {\r\n imbalanceInfo[s.shipperEnterpriseShortName] = imbalance;\r\n }\r\n });\r\n\r\n if (!_.isEmpty(imbalanceInfo)) {\r\n message += \"An imbalance exists for the following shippers\\n\\n\";\r\n for (const key in imbalanceInfo) {\r\n if (imbalanceInfo.hasOwnProperty(key)) {\r\n message += `${key}\\n`;\r\n }\r\n }\r\n }\r\n message += \" \\n\";\r\n message += `Effective Start of Gas Day ${this.model.shipperSelectionInfo.currentGasDay.toDisplayFormat()}\\n`;\r\n if (ofo.hasOwnProperty('ofoOrders')) {\r\n if (actionString === 'Expire') {\r\n message += `The Watch and associated Order (if any) will ${actionString}\\n`;\r\n } else {\r\n message += `The Watch and all Shippers in the Watch will ${actionString}\\n`;\r\n }\r\n } else {\r\n message += `The Order and all Shippers in the Order will ${actionString}\\n`;\r\n }\r\n message += \" \\n\";\r\n message += \"Do you wish to Continue?\\n\";\r\n\r\n return message;\r\n }\r\n\r\n public doOfoUpdateWithConfirmation(ofoData: OfoOrderData | OfoWatchData, cellInfo, targetStateName) {\r\n const refId = cellInfo.row.data.referenceId;\r\n this.ofoMaintenanceService.queryConfirmationData()\r\n .pipe(concatMap((tcd) => {\r\n const message = this.buildOfoConfirmationMessage(ofoData, targetStateName, tcd);\r\n const yesNoModalOptions = new YesNoModalOptions(`${targetStateName} ${refId}`, message, 'No', 'Yes');\r\n\r\n return this.modalService.show(yesNoModalOptions)\r\n .pipe(\r\n concatMap(selectedOption => {\r\n if (selectedOption === SelectedModalOption.Yes) {\r\n return this.updateFunction(ofoData);\r\n } else {\r\n return of(false);\r\n }\r\n })\r\n );\r\n }))\r\n .pipe(catchError(err => {\r\n return of(err);\r\n })\r\n , take(1))\r\n .subscribe(() => {\r\n if (ofoData.hasOwnProperty('ofoOrders')) {\r\n this.clearWatchEditMode(cellInfo);\r\n } else {\r\n this.clearOrderEditMode(cellInfo);\r\n }\r\n this.ofoMaintenanceService.announceOfoUpdate(`successful ${targetStateName} update for ${refId}`);\r\n },\r\n () => {\r\n if (ofoData.hasOwnProperty('ofoOrders')) {\r\n this.clearWatchEditMode(cellInfo);\r\n } else {\r\n this.clearOrderEditMode(cellInfo);\r\n }\r\n this.ofoMaintenanceService.announceOfoUpdate(`failed ${targetStateName} update for ${refId}`);\r\n });\r\n\r\n }\r\n\r\n\r\n private saveActiveWatch(ofoWatch, cellInfo): void {\r\n const message = `The watch ${ofoWatch.referenceId} will be issued.\\n\\nDo you wish to continue?`;\r\n const yesNoModalOptions = new YesNoModalOptions('Issue Watch', message, 'No', 'Yes');\r\n\r\n this.modalService.show(yesNoModalOptions)\r\n .pipe(\r\n concatMap(selectedOption => {\r\n if (selectedOption === SelectedModalOption.Yes) {\r\n return this.issueOfoWatch(ofoWatch);\r\n } else {\r\n return of(false);\r\n }\r\n })\r\n )\r\n .subscribe(() => {\r\n this.clearWatchEditMode(cellInfo);\r\n this.ofoMaintenanceService.announceOfoUpdate(`active watch saved = ${ofoWatch.referenceId}`);\r\n },\r\n () => {\r\n this.editWatchCancelClicked(cellInfo);\r\n this.ofoMaintenanceService.announceOfoUpdate(`cancel active watch save = ${ofoWatch.referenceId}`);\r\n }\r\n );\r\n }\r\n\r\n private issueOfoWatch(ofoWatch: OfoWatchData): Observable {\r\n const enterpriseIds = _.map(ofoWatch.shippers, s => s.shipperEnterpriseId);\r\n return this.ofoMaintenanceService.confirmActiveShippersInActiveWatches(enterpriseIds)\r\n .pipe(\r\n concatMap(confirmed => {\r\n if (confirmed) {\r\n return this.ofoMaintenanceService.updateSimpleOfoWatch(ofoWatch)\r\n .pipe(\r\n catchError(err => {\r\n return throwError(err);\r\n })\r\n );\r\n } else {\r\n return of(false);\r\n }\r\n })\r\n );\r\n }\r\n\r\n public onWatchEditorPreparing(cellInfo: any): void {\r\n this.statusOnInitialWatchEdit = this.commonEditorPreparing(cellInfo, this.statusOnInitialWatchEdit);\r\n }\r\n\r\n private commonEditorPreparing(cellInfo, initialEditStatus): string {\r\n if (initialEditStatus === null) {\r\n initialEditStatus = cellInfo.row.data.status;\r\n }\r\n if (cellInfo.parentType === \"dataRow\" && cellInfo.dataField === \"status\") {\r\n cellInfo.editorOptions.dataSource = OfoStatus.getPermissibleStatuses(initialEditStatus, false);\r\n GlobalVars.hiddenExpiryStart = this.model.shipperSelectionInfo.currentGasDay.toDate.toJSON();\r\n }\r\n\r\n return initialEditStatus;\r\n }\r\n\r\n public editOfoWatchAllowed(cellInfo): boolean {\r\n return (OfoStatus.isActiveOrPending(cellInfo.row.data.status));\r\n }\r\n\r\n public editOfoWatch(cellInfo): void {\r\n if (this.isEditingWatch) return;\r\n\r\n this.isEditingWatch = true;\r\n this.alertService.clearMessages();\r\n\r\n cellInfo.row.isEditing = true;\r\n cellInfo.component.editRow(cellInfo.row.rowIndex);\r\n }\r\n\r\n public editWatchCancelClicked(cellInfo): void {\r\n cellInfo.row.data.expiryStartOfGasDay = null;\r\n cellInfo.component.cancelEditData();\r\n this.clearWatchEditMode(cellInfo);\r\n }\r\n\r\n private clearWatchEditMode(cellInfo: any): void {\r\n if (cellInfo.row != null) {\r\n cellInfo.row.isEditing = false;\r\n }\r\n this.isEditingWatch = false;\r\n this.statusOnInitialWatchEdit = null;\r\n }\r\n\r\n public onOrderEditorPreparing(cellInfo: any) {\r\n this.statusOnInitialOrderEdit = this.commonEditorPreparing(cellInfo, this.statusOnInitialOrderEdit);\r\n }\r\n\r\n public editOfoOrderAllowed(cellInfo): boolean {\r\n const status = cellInfo.row.data.status;\r\n const editBtnId = `order-edit-button-${cellInfo.row.data.referenceId}`;\r\n const editBtn = document.getElementById(editBtnId);\r\n if (!_.isNil(editBtn)) {\r\n if (status === OfoStatus.ACTIVE.name) {\r\n editBtn.setAttribute(\"title\", \"Expire order from watch level\");\r\n } else {\r\n editBtn.setAttribute(\"title\", \"Edit Order\");\r\n }\r\n }\r\n return (status === OfoStatus.PENDING.name);\r\n }\r\n\r\n\r\n public saveOfoOrderDisabled(cellInfo): boolean {\r\n return OfoMaintenanceComponent.saveDisabledCommon(cellInfo, this.statusOnInitialOrderEdit, `order-save-button-${cellInfo.row.data.referenceId}`);\r\n }\r\n\r\n public saveOfoWatchDisabled(cellInfo): boolean {\r\n return OfoMaintenanceComponent.saveDisabledCommon(cellInfo, this.statusOnInitialWatchEdit, `watch-save-button-${cellInfo.row.data.referenceId}`);\r\n }\r\n\r\n public editOfoOrder(cellInfo): void {\r\n if (this.isEditingOrder) return;\r\n\r\n this.isEditingOrder = true;\r\n this.alertService.clearMessages();\r\n\r\n cellInfo.row.isEditing = true;\r\n cellInfo.component.editRow(cellInfo.row.rowIndex);\r\n }\r\n\r\n public editOrderCancelClicked(cellInfo): void {\r\n cellInfo.component.cancelEditData();\r\n\r\n this.clearOrderEditMode(cellInfo);\r\n }\r\n\r\n private clearOrderEditMode(cellInfo: any): void {\r\n if (cellInfo.row != null) {\r\n cellInfo.row.isEditing = false;\r\n }\r\n\r\n this.isEditingOrder = false;\r\n this.statusOnInitialOrderEdit = null;\r\n }\r\n\r\n public orderSaveClicked(cellInfo): void {\r\n cellInfo.component.saveEditData().then(() => {\r\n this.updateFunction = this.ofoMaintenanceService.updateSimpleOfoOrder;\r\n const ofoOrder = cellInfo.row.data;\r\n const status = ofoOrder.status;\r\n switch (status) {\r\n case \"Pending\":\r\n this.clearOrderEditMode(cellInfo);\r\n return;\r\n\r\n case \"Active\":\r\n this.saveActiveOrder(ofoOrder, cellInfo);\r\n break;\r\n\r\n case \"Cancelled\":\r\n this.doOfoUpdateWithConfirmation(ofoOrder, cellInfo, \"Cancel\");\r\n break;\r\n\r\n default:\r\n // Expire not allowed at order level\r\n this.alertService.addWarnMessage(\"Warning\", `illegal status change to $(status}`);\r\n }\r\n });\r\n }\r\n\r\n private saveActiveOrder(ofoOrder: OfoOrderData, cellInfo: any): void {\r\n this.ofoMaintenanceService.updateSimpleOfoOrder(ofoOrder)\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n )\r\n .subscribe(() => {\r\n this.clearOrderEditMode(cellInfo);\r\n this.ofoMaintenanceService.announceOfoUpdate(`order saved = ${ofoOrder.referenceId}`);\r\n }, () => {\r\n this.editOrderCancelClicked(cellInfo);\r\n this.ofoMaintenanceService.announceOfoUpdate(`cancelled order save = ${ofoOrder.referenceId}`);\r\n });\r\n }\r\n\r\n private queryCustomerEnterprises(): Observable {\r\n const accountsCustomerSearchParams = AccountsCustomerSearchParams.withNomGroupBusinessRights([BusinessRight.CustodyTransfer], false);\r\n accountsCustomerSearchParams.fromGasDay = this.model.currentGasDay;\r\n accountsCustomerSearchParams.toGasDay = GasDay.endOfTime();\r\n if (this.model.isExternalUser) {\r\n accountsCustomerSearchParams.toGasDay = this.model.currentGasDay; // external customer list with agency relationships based on current day\r\n }\r\n\r\n return this.accountsEnterpriseService.queryCustomers(accountsCustomerSearchParams, true, false)\r\n .pipe(\r\n concatMap(enterpriseIds => this.createAndEnrichEnterpriseIds(enterpriseIds)),\r\n tap(enterprises => {\r\n this.model.customerEnterprises = _.sortBy(enterprises, enterprise => enterprise.displayValue);\r\n if (this.model.ofoSearchParams && this.model.customerEnterprises?.length === 1) {\r\n this.model.ofoSearchParams.enterpriseId = this.model.customerEnterprises[0].id;\r\n }\r\n })\r\n );\r\n }\r\n\r\n private createAndEnrichEnterpriseIds(enterpriseIds: number[]): Observable {\r\n const enterprises = _.map(enterpriseIds, enterpriseId => Enterprise.createWithId(enterpriseId));\r\n return this.enterpriseEnrichmentService.enrichArray(enterprises, 'cid');\r\n }\r\n\r\n private queryOfos(): Observable {\r\n return this.ofoMaintenanceService\r\n .queryOfos(\r\n this.model.lastSearchParams.searchByType,\r\n this.model.lastSearchParams.startGasDay,\r\n this.model.lastSearchParams.endGasDay,\r\n this.model.lastSearchParams.enterpriseId,\r\n this.model.lastSearchParams.referenceId\r\n ).pipe(\r\n tap(response => {\r\n const enrichmentResults = new Array>();\r\n this.model.searchResultWatches = _.orderBy(response.ofoWatches, ['createDateTime'], ['desc']);\r\n this.model.searchResultWatches\r\n .forEach(watch => {\r\n enrichmentResults.push(this.enterpriseEnrichmentService.enrichArray(watch.shippers, 'shipperEnterpriseId', 'shipperEnterprise'));\r\n enrichmentResults.push(this.nomGroupEnrichmentService.enrichArray(watch.shippers, 'nominationGroupId', 'nominationGroup'));\r\n });\r\n this.model.searchResultOrders = _.orderBy(response.ofoOrders, ['createDateTime'], ['desc']);\r\n this.model.searchResultOrders\r\n .forEach(order => {\r\n enrichmentResults.push(this.enterpriseEnrichmentService.enrichArray(order.shippers, 'shipperEnterpriseId', 'shipperEnterprise'));\r\n enrichmentResults.push(this.nomGroupEnrichmentService.enrichArray(order.shippers, 'nominationGroupId', 'nominationGroup'));\r\n order.shippers.forEach(s => {\r\n s.penalties = order.shipperExcessQuantities.filter(xs => xs.ofoOrderShipperId === s.id);\r\n });\r\n });\r\n forkJoin(enrichmentResults).toPromise().then(()=>{});\r\n })\r\n );\r\n }\r\n\r\n public queryTrendCompliance() : Observable {\r\n // per bugs 285015, 279501, 277789: need to consult the GasDayStatus table to determine\r\n // the most recently closed gas day in order to properly get NPP data.\r\n return this.flowingGasGasDayStatusService.getGasDayRangeDefault()\r\n .pipe(\r\n tap(gasDayRangeDefault => {\r\n // default is set to first preliminary day (will be multiple ones between 8:00am and 9:30am)\r\n const curGasDay = gasDayRangeDefault.start.isEqual(GasDay.startOfTime())\r\n ? GasDay.today()\r\n : gasDayRangeDefault.default as GasDay;\r\n this.model.shipperSelectionInfo.currentGasDay = curGasDay;\r\n this.model.shipperSelectionInfo.minComplianceDate = curGasDay;\r\n this.ofoMaintenanceService.setDetailMinGasDay(curGasDay);\r\n }),\r\n concatMap(() => {\r\n return this.flowingGasTrendComplianceService.getTrendComplianceData(this.model.shipperSelectionInfo.currentGasDay.addDays(-1));\r\n }),\r\n tap(trendCompliance => {\r\n this.model.shipperSelectionInfo.trendComplianceData = trendCompliance;\r\n // enrich all the trend compliance data so it's ready to build available shippers rows on 'add shipper' actions\r\n this.enterpriseEnrichmentService.enrichArray(this.model.shipperSelectionInfo.trendComplianceData.customerData, 'enterpriseId', 'shipperEnterprise')\r\n .toPromise().then(() => {\r\n });\r\n this.nomGroupEnrichmentService.enrichArray(this.model.shipperSelectionInfo.trendComplianceData.customerData, 'nominationGroupId', 'nominationGroup')\r\n .toPromise().then(() => {\r\n });\r\n })\r\n );\r\n }\r\n\r\n public queryShippersInActiveOrder(): Observable{\r\n return this.ofoMaintenanceService.QueryShippersInActiveOrder([])\r\n .pipe(\r\n tap(shipperStatusesInOrders => {\r\n this.model.shipperSelectionInfo.shippersInActiveOrders = shipperStatusesInOrders;\r\n })\r\n );\r\n }\r\n\r\n public queryShippersInActiveWatch(): Observable{\r\n return this.ofoMaintenanceService.QueryShippersInActiveWatch([])\r\n .pipe(\r\n tap(shipperStatusesInWatches => {\r\n this.model.shipperSelectionInfo.shippersInActiveWatches = shipperStatusesInWatches;\r\n })\r\n );\r\n }\r\n\r\n public onOfoWatchCreated(success: boolean): void {\r\n if (success) {\r\n this.ofoMaintenanceService.announceOfoUpdate(`ofoWatch created`);\r\n }\r\n }\r\n\r\n public onOfoOrderCreated(success: boolean): void {\r\n if (success) {\r\n this.ofoMaintenanceService.announceOfoUpdate(`ofoOrder created`);\r\n }\r\n }\r\n\r\n public toggleExpandAll(expandAll: boolean, dataGrid: DxDataGridComponent): void {\r\n if (expandAll) {\r\n dataGrid.instance.expandAll(-1);\r\n } else {\r\n dataGrid.instance.collapseAll(-1);\r\n }\r\n }\r\n\r\n private addShipperAllowedCommonChecks(cellInfo): boolean {\r\n if (!_.isNil(this.model.lastSearchParams.enterpriseId)) return false;\r\n\r\n if (_.isNil(this.model.shipperSelectionInfo.trendComplianceData)) return false;\r\n\r\n if (cellInfo.row.data.ofoType === OfoType.SHIPPER_IMBALANCE.id) return false;\r\n\r\n if (!OfoStatus.isActiveOrPending(cellInfo.row.data.status)) return false;\r\n\r\n return true;\r\n }\r\n\r\n public addWatchShipperAllowed(cellInfo): boolean {\r\n if (!this.addShipperAllowedCommonChecks(cellInfo)) return false;\r\n\r\n const refId = cellInfo.row.data.referenceId;\r\n // get a full list of shipperIds in non-terminal status for the watch. Don't use watch search results as they may be filtered\r\n const currentShippers: ShipperStatusInOfoDto[] = _.filter(this.model.shipperSelectionInfo.shippersInActiveWatches, w => w.referenceId === refId);\r\n if (_.isNil(currentShippers) || currentShippers.length<1) {\r\n return false;\r\n }\r\n\r\n const statusNames = [OfoStatus.PENDING.name, OfoStatus.ACTIVE.name];\r\n const activeShippersIds = _.filter(currentShippers, (s) => statusNames.includes(s.shipperStatus)).map(s => s.enterpriseId);\r\n this.populateAllCurrentShipperInfo();\r\n\r\n const extraShippers = _.filter(OfoMaintenanceModel.allCurrentShipperInfo, ps => !activeShippersIds.includes(ps.shipperEnterpriseId));\r\n if (extraShippers.length > 0) {\r\n this.extraShippersForWatchByRef[refId] = extraShippers;\r\n }\r\n return extraShippers.length > 0;\r\n }\r\n\r\n private populateAllCurrentShipperInfo(){\r\n const enrichedCustomerData: any = this.model.shipperSelectionInfo.trendComplianceData.customerData;\r\n OfoMaintenanceModel.allCurrentShipperInfo = enrichedCustomerData.map((c) => {\r\n return {\r\n shipperEnterpriseId: c.enterpriseId,\r\n shipperMnemonic: c.shipperEnterpriseMnemonic,\r\n shipperEnterpriseShortName: c.shipperEnterpriseShortName,\r\n nominationGroupId: c.nominationGroupId,\r\n nominationGroupMnemonic: c.nominationGroupMnemonic,\r\n accumulatedBalance: c.accumulatedBalance,\r\n lowAsqLimit: c.authorizedSwingQuantityLow,\r\n highAsqLimit: c.authorizedSwingQuantityHigh,\r\n status: OfoStatus.PENDING.name,\r\n complianceByGasDay: this.model.shipperSelectionInfo.minComplianceDate.toDate // needs to be Date for DataPicker in GridCell to work properly\r\n };\r\n });\r\n }\r\n\r\n public addWatchShipper(cellInfo) {\r\n const refId = cellInfo.row.data.referenceId;\r\n if (refId in this.extraShippersForWatchByRef) {\r\n const availableShipperInfo = {\r\n referenceId: refId,\r\n watchReferenceId: refId,\r\n availableWatchShippers: this.extraShippersForWatchByRef[refId],\r\n availableOrderShippers: null};\r\n this.ofoMaintenanceService.announceOfoAddShipper(availableShipperInfo);\r\n }\r\n }\r\n\r\n public addOrderShipperAllowed(cellInfo): boolean\r\n {\r\n if (!this.addShipperAllowedCommonChecks(cellInfo)) return false;\r\n\r\n const watchRefId = cellInfo.row.data.watchReferenceId;\r\n const watch: OfoWatchData = _.filter(this.model.searchResultWatches, w => w.referenceId === watchRefId)[0];\r\n if (_.isNil(watch?.shippers) || watch.shippers.length<1) {\r\n return false;\r\n }\r\n\r\n const activeWatchShippersIds: number[] =\r\n _.filter(watch.shippers, (s) => s.status === OfoStatus.ACTIVE.name && s.complianceByGasDay < this.model.currentGasDay.toDate)\r\n .map(s => s.shipperEnterpriseId);\r\n\r\n const orderRefId = cellInfo.row.data.referenceId;\r\n const order = _.filter(this.model.searchResultOrders, (o) => o.referenceId === orderRefId)[0];\r\n\r\n const currentOrderShipperIds: number[] =\r\n _.filter(order.shippers, s => OfoStatus.isActiveOrPending(s.status) && _.isNil(s.expiryStartOfGasDay))\r\n .map(s=>s.shipperEnterpriseId);\r\n const availableOrderShipperIds = _.filter(activeWatchShippersIds, sid => !currentOrderShipperIds.includes(sid));\r\n\r\n if (availableOrderShipperIds.length === 0) return false;\r\n\r\n this.populateAllCurrentShipperInfo();\r\n\r\n const extraShippers = _.filter(OfoMaintenanceModel.allCurrentShipperInfo, ps => availableOrderShipperIds.includes(ps.shipperEnterpriseId));\r\n if (extraShippers.length > 0) {\r\n this.extraShippersForOrderByRef[orderRefId] = extraShippers;\r\n }\r\n return extraShippers.length > 0;\r\n }\r\n\r\n public addOrderShipper(cellInfo): void\r\n {\r\n const refId = cellInfo.row.data.referenceId;\r\n if (refId in this.extraShippersForOrderByRef) {\r\n const watchRefId = cellInfo.row.data.watchReferenceId;\r\n const availableShipperInfo = {\r\n referenceId: refId,\r\n watchReferenceId: watchRefId,\r\n availableWatchShippers: this.extraShippersForWatchByRef[refId],\r\n availableOrderShippers: this.extraShippersForOrderByRef[refId]};\r\n this.ofoMaintenanceService.announceOfoAddShipper(availableShipperInfo);\r\n }\r\n }\r\n\r\n public onOfoTypeChanged(_$event: any): void {\r\n if (this.model.ofoSearchParams.selectedOfoType === OfoType.SHIPPER_IMBALANCE.id) {\r\n this.model.ofoRefIdPrefix = `OFO${this.model.ofoSearchParams.searchByType}SI`;\r\n } else {\r\n this.model.ofoRefIdPrefix = `OFO${this.model.ofoSearchParams.searchByType}OP`;\r\n }\r\n }\r\n\r\n private pruneCsvConfigForExternalUser(config: string[], pruneHeaders: boolean): string[] {\r\n const headersToPrune = ['Issue Notification Status', 'Expiry Notification Status'];\r\n const columnsToPrune = ['notificationStatus', 'expiryNotificationStatus'];\r\n if (pruneHeaders) {\r\n return config.filter(h => !headersToPrune.includes(h));\r\n }\r\n else { // otherwise, prune cols\r\n return config.filter(c => !columnsToPrune.includes(c));\r\n }\r\n }\r\n\r\n public exportOfoWatchCsv() : void {\r\n const filename = 'OFO_Watches_' + moment(Date.now()).format(\"YYYY-MM-DD-HHmmss\") + '.csv';\r\n let headers = this.csvFileHeaders;\r\n let columns = this.csvFileColumns;\r\n if (this.model.isExternalUser) {\r\n headers = this.pruneCsvConfigForExternalUser(headers, true);\r\n columns = this.pruneCsvConfigForExternalUser(columns, false);\r\n }\r\n const csvData = this.exportGridAsCsv(this.ofoWatchesDataGrid.instance);\r\n this.fileService.downloadCsvFile(filename, csvData, headers, columns);\r\n }\r\n\r\n public exportOfoOrderCsv() : void {\r\n const filename = 'OFO_Orders_' + moment(Date.now()).format(\"YYYY-MM-DD-HHmmss\") + '.csv';\r\n let headers = ['Reference ID', 'Watch Reference ID'].concat(this.csvFileHeaders.slice(1));\r\n let columns = ['referenceId', 'watchReferenceId'].concat(this.csvFileColumns.slice(1));\r\n if (this.model.isExternalUser) {\r\n headers = this.pruneCsvConfigForExternalUser(headers, true);\r\n columns = this.pruneCsvConfigForExternalUser(columns, false);\r\n }\r\n const csvData = this.exportGridAsCsv(this.ofoOrdersDataGrid.instance);\r\n this.fileService.downloadCsvFile(filename, csvData, headers, columns);\r\n }\r\n\r\n private exportGridAsCsv(grid: DevExpress.ui.dxDataGrid): any[] {\r\n const csvData = [];\r\n if (_.isNil(grid)) return csvData;\r\n\r\n const rows = grid.getVisibleRows();\r\n rows.forEach(row => {\r\n if (row.rowType === 'data') {\r\n const ofo = row.data as OfoOrderData;\r\n const shippers = _.map(\r\n ofo.shippers,\r\n s => _.extend({}, s, {\r\n referenceId: ofo.referenceId,\r\n watchReferenceId: ofo.watchReferenceId,\r\n ofoStatus: ofo.status,\r\n ofoType: ofo.ofoType,\r\n complianceRequirement: ofo.complianceRequirement,\r\n asqLimitDisplayValue: `=\"${s.lowAsqLimit.toLocaleString()} / +${s.highAsqLimit.toLocaleString()}\"`, // force excel to treat as text and not formula\r\n complianceByGasDayCsv: this.gasDayCsvFormatter(s.complianceByGasDay),\r\n issueDateTimeCsv: this.csvFormatDateTime(s.issueDateTime),\r\n expiryStartOfGasDayCsv: this.gasDayCsvFormatter(s.expiryStartOfGasDay),\r\n createDateTimeCsv: this.csvFormatDateTime(s.createDateTime),\r\n expiryDateTimeCsv: this.csvFormatDateTime(s.expiryDateTime)\r\n }));\r\n _.sortBy(shippers, ['nominationGroupMnemonic', 'issueDateTime'], ['asc', 'desc'])\r\n .forEach(shipper => csvData.push(shipper));\r\n }\r\n });\r\n\r\n return csvData;\r\n }\r\n\r\n}\r\n","import {BaseViewModel} from \"@model/base-view-model\";\r\nimport {NominationPipeline} from \"@model/nomination-pipeline\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {OfoPenaltyData} from \"@shared/services/flowing-gas/ofo-penalty-report-service/ofo-penalty-report.service\";\r\nimport {ManualAdjustmentExportDto} from \"@model/dto/manual-adjustment-export-dto\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {Enterprise} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\n\r\nexport class OfoPenaltyReportModel extends BaseViewModel {\r\n pipelines: NominationPipeline[];\r\n\r\n minBillingMonth: GasMonth;\r\n maxBillingMonth: GasMonth;\r\n\r\n oldestBillingMonth: BillingMonth;\r\n openBillingMonth: BillingMonth;\r\n preliminaryBillingMonth: BillingMonth;\r\n\r\n actualGasDay: GasDay;\r\n\r\n customers: Enterprise[];\r\n\r\n searchParams: OfoPenaltyReportSearchParams = new OfoPenaltyReportSearchParams();\r\n lastSearchParams: OfoPenaltyReportSearchParams;\r\n\r\n searchResults: OfoPenaltyData[];\r\n penaltyExportResults: ManualAdjustmentExportDto[];\r\n timeOfLastSearch: Date;\r\n\r\n userIsInternal: boolean;\r\n userHasExportChargesCapability: boolean;\r\n billingProcessFinal: boolean;\r\n\r\n public hasSearchResults(): boolean {\r\n return !!this.searchResults;\r\n }\r\n\r\n public isCustomerSelected(): boolean {\r\n return (!!this.searchParams.enterpriseId);\r\n }\r\n\r\n public clearSearchResults(): void {\r\n this.searchResults = null;\r\n }\r\n}\r\n\r\nexport class OfoPenaltyReportSearchParams {\r\n billingMonth: GasMonth;\r\n enterpriseId: number;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from \"rxjs\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {map} from \"rxjs/operators\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {FlowinggasResourceService} from \"@shared/resources/flowinggas-resource.service\";\r\nimport {ManualAdjustmentExportDto} from \"@model/dto/manual-adjustment-export-dto\";\r\nimport * as _ from \"lodash\";\r\n\r\n@Injectable()\r\nexport class OfoPenaltyReportService {\r\n constructor(\r\n protected flowingGasResource: FlowinggasResourceService) { }\r\n\r\n public queryOfoPenaltyReport(searchParams: OfoPenaltyReportRequest): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setNumber('enterpriseId', searchParams.enterpriseId);\r\n params.setGasMonth(searchParams.effectiveBillingMonth, 'effectiveBillingMonth');\r\n\r\n return this.flowingGasResource.get('/ofoPenalties', true, params)\r\n .pipe(\r\n map((dtos: OfoPenaltyData[]) => {\r\n dtos.forEach(dto => {\r\n // All other fields come over implicitly, except gasDay that needs fixup\r\n // @ts-ignore - overkill to create separate string based dto interface class for one field\r\n dto.gasDay = GasDay.parse(dto.gasDay);\r\n });\r\n return dtos;\r\n })\r\n );\r\n }\r\n\r\n public queryOfoPenaltyOverrides(request: OfoPenaltyOverridesRequest): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setNumber('enterpriseId', request.enterpriseId);\r\n params.setGasMonth(request.affectedBillingMonth, 'affectedBillingMonth');\r\n params.setGasMonth(request.effectiveBillingMonth, 'effectiveBillingMonth');\r\n\r\n return this.flowingGasResource.get('/ofoPenaltyOverrides', true, params)\r\n .pipe(\r\n map((dtos: OfoPenaltyOverrideData[]) => {\r\n dtos.forEach(dto => {\r\n // All other fields come over implicitly, except gasDay/Month that needs fixup\r\n // @ts-ignore\r\n dto.gasDay = GasDay.parse(dto.gasDay);\r\n // @ts-ignore\r\n dto.effectiveBillingMonth = GasMonth.parse(dto.effectiveBillingMonth);\r\n // @ts-ignore\r\n dto.expiryGasMonth = GasMonth.parse(dto.expiryGasMonth);\r\n });\r\n return dtos;\r\n })\r\n );\r\n }\r\n\r\n public postOfoPenaltyOverrides(billingMonth: GasMonth, overrides: OfoPenaltyOverrideData[] ): Observable {\r\n const penaltyOverrides = _.map(overrides, o => {\r\n const update = new OfoPenaltyOverrideUpdateDto();\r\n update.id = o.id;\r\n update.orderReferenceId = o.orderReferenceId;\r\n update.billableExcessQuantity = o.billableExcessQuantity;\r\n update.overrideComment = o.overrideComment;\r\n update.gasDay = o.gasDay.toString();\r\n update.shipperEnterpriseId = o.shipperEnterpriseId;\r\n update.shipperMnemonic = o.shipperMnemonic;\r\n return update;\r\n });\r\n\r\n const body = {\r\n BillingMonth: billingMonth.toString(),\r\n OfoPenaltyOverrides: penaltyOverrides\r\n };\r\n\r\n return this.flowingGasResource.postWithNoResponseBody('/ofoPenaltyOverrides', body);\r\n }\r\n\r\n public exportOfoPenalty(searchParams: OfoPenaltyExportRequest): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setGasMonth(searchParams.effectiveBillingMonth, 'effectiveBillingMonth');\r\n\r\n return this.flowingGasResource.get('/ofoPenaltyExport', true, params)\r\n .pipe(\r\n map((dtos: ManualAdjustmentExportDto[]) => {\r\n return dtos;\r\n })\r\n );\r\n }\r\n}\r\n\r\nexport class OfoPenaltyReportRequest {\r\n pipelineSystem: string;\r\n enterpriseId: number;\r\n effectiveBillingMonth: GasMonth;\r\n}\r\n\r\nexport class OfoPenaltyOverridesRequest {\r\n affectedBillingMonth: GasMonth;\r\n effectiveBillingMonth: GasMonth;\r\n enterpriseId: number;\r\n}\r\n\r\n\r\nexport class OfoPenaltyExportRequest {\r\n effectiveBillingMonth: GasMonth;\r\n}\r\n\r\nexport class OfoPenaltyOverrideUpdateDto {\r\n constructor() {}\r\n id: number;\r\n orderReferenceId: string;\r\n shipperEnterpriseId: number;\r\n shipperMnemonic: string;\r\n gasDay: string;\r\n billableExcessQuantity: number;\r\n overrideComment: string;\r\n}\r\n\r\nexport class OfoPenaltyBase {\r\n id: number;\r\n ofoOrderId: number;\r\n orderReferenceId: string;\r\n adjustmentType: string;\r\n nominationGroupId: number;\r\n gasDay: GasDay;\r\n lowAsqLimit: number;\r\n highAsqLimit: number;\r\n accumulatedBalance: number;\r\n billableExcessQuantity: number;\r\n calculatedExcessQuantity: number;\r\n effectiveBillingMonth: GasMonth;\r\n expiryGasMonth: GasMonth;\r\n netPipelinePosition: number | null;\r\n shipperEnterpriseId: number;\r\n shipperMnemonic: string;\r\n}\r\n\r\nexport class OfoPenaltyData extends OfoPenaltyBase {\r\n averagePrice: number | null;\r\n threeByAveragePrice: number | null;\r\n charge: number | null;\r\n issueDateTime: string | null;\r\n notificationStatus: string;\r\n notificationStatusMessage: string;\r\n}\r\n\r\nexport class OfoPenaltyOverrideData extends OfoPenaltyBase {\r\n latestCalculatedExcess: number;\r\n overrideComment: string;\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Customer: {{model.lastSearchParams?.enterpriseId | displayName: 'cid' : 'displayName' : model.customers}}\r\n Billing Month: {{model.lastSearchParams?.billingMonth | gasMonthFormat}}\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.enterpriseId | displayName: 'id' : 'displayName' : model.customers}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.billingMonth | gasMonthFormat}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n\r\n
\r\n Number of records found: {{model.searchResults.length}}\r\n AS OF {{model.timeOfLastSearch | dateFormat:'YYYY-MMM-DD H:mm:ss A'}}\r\n
0\" class=\"pull-right\">\r\n Export CSV\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n Penalty
Adjustment Type\r\n
\r\n
\r\n\r\n \r\n
\r\n Penalty Gas
Day\r\n
\r\n
\r\n {{row.data.gasDay.toString() | dateFormat: 'YYYY-MMM-DD'}}\r\n
\r\n
\r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n
\r\n Accumulated
Balance (GJ)\r\n
\r\n
\r\n\r\n \r\n
\r\n Original Calculated
Excess (GJ)\r\n
\r\n
\r\n\r\n \r\n
\r\n Billable
Excess (GJ)\r\n
\r\n
\r\n\r\n \r\n
\r\n 30 Day AVG
AB NIT Price ($CDN)\r\n
\r\n
\r\n\r\n \r\n
\r\n 3X30 Day AVG
AB NIT Price ($CDN)\r\n
\r\n
\r\n\r\n \r\n \r\n\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n","import {Component} from \"@angular/core\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {forkJoin, Observable, of} from \"rxjs\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {Enterprise, EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {UserService} from \"@shared/services/webapp/user/user-service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {CommonDataGasdayService, ServerTimeData} from \"@shared/services/common-data/common-data-gasday/common-data-gasday.service\";\r\nimport {NominationPipelineService} from \"@shared/services/nomination/nomination-pipeline/nomination-pipeline.service\";\r\nimport * as _ from \"lodash\";\r\nimport {OfoPenaltyReportModel, OfoPenaltyReportSearchParams} from \"app/gcts/flowinggas/ofo-maintenance/ofo-penalty-report/ofo-penalty-report.model\";\r\nimport {concatMap, tap} from \"rxjs/operators\";\r\nimport {\r\n OfoPenaltyReportRequest,\r\n OfoPenaltyData,\r\n OfoPenaltyReportService\r\n} from \"@shared/services/flowing-gas/ofo-penalty-report-service/ofo-penalty-report.service\";\r\nimport {ManualAdjustmentExportDto} from \"@model/dto/manual-adjustment-export-dto\";\r\nimport {NominationPipeline} from \"@model/nomination-pipeline\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {OfoWatchShipperData} from \"@shared/services/flowing-gas/ofo-maintenance-service/ofo-maintenance.service\";\r\nimport {BusinessRight} from \"@model/business-right\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {NominationSystemService} from \"@shared/services/nomination/nomination-system/nomination-system.service\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {AccountsCustomerSearchParams, AccountsEnterpriseService} from \"@shared/services/accounts/accounts-enterprise/accounts-enterprise.service\";\r\nimport {BillingProcessStatus} from \"@model/billing-process-status\";\r\nimport {\r\n BillingProcess,\r\n FlowingGasAllocationAndBalancingBillingProcessService\r\n} from \"@shared/services/flowing-gas/flowing-gas-allocation-and-balancing-billing-process/flowing-gas-allocation-and-balancing-billing-process.service\";\r\nimport {CapabilitiesService} from \"@shared/services/webapp/capabilities/capabilities.service\";\r\n\r\n@Component({\r\n selector: 'app-ofo-penalty-report',\r\n templateUrl: './ofo-penalty-report.component.html',\r\n styleUrls: ['./ofo-penalty-report.component.css']\r\n})\r\nexport class OfoPenaltyReportComponent extends BaseSearchComponent {\r\n private static readonly PARAM_BILLING_MONTH: string = 'billingMonth';\r\n private static readonly PARAM_ENTERPRISE_ID: string = 'enterpriseId';\r\n\r\n public model: OfoPenaltyReportModel = new OfoPenaltyReportModel();\r\n\r\n constructor(protected appService: AppService,\r\n activatedRoute: ActivatedRoute,\r\n router: Router,\r\n protected alertService: AlertService,\r\n private commonDataBillingMonthService: CommonDataBillingMonthService,\r\n private enterpriseEnrichmentService: EnterpriseEnrichmentService,\r\n private commonDataEnterpriseService: EnterpriseService,\r\n private fileService: FileService,\r\n protected userService: UserService,\r\n private sessionService: SessionService,\r\n private capabilitiesService: CapabilitiesService,\r\n private commonDataGasDayService: CommonDataGasdayService,\r\n private nominationPipelineService: NominationPipelineService,\r\n private nominationSystemService: NominationSystemService,\r\n private accountsEnterpriseService: AccountsEnterpriseService,\r\n private ofoPenaltyReportService: OfoPenaltyReportService,\r\n private flowingGasAllocationAndBalancingBillingProcessService: FlowingGasAllocationAndBalancingBillingProcessService,\r\n ) {\r\n super('OFO Penalties', appService, activatedRoute, router, alertService);\r\n enterpriseEnrichmentService.setEnrichmentResource(commonDataEnterpriseService);\r\n\r\n this.appService.hideMenu();\r\n }\r\n\r\n public isSearchEnabled(): boolean {\r\n return !_.isNil(this.model.searchParams.enterpriseId);\r\n }\r\n\r\n public isExportChargesEnabled(): boolean {\r\n return (this.model.billingProcessFinal && this.model.searchParams.billingMonth.isEqual(this.model.openBillingMonth.gasMonth));\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n const paramValidator = ParamValidator.Standard();\r\n\r\n paramValidator.isGasMonth(OfoPenaltyReportComponent.PARAM_BILLING_MONTH);\r\n paramValidator.isNumber(OfoPenaltyReportComponent.PARAM_ENTERPRISE_ID);\r\n\r\n return paramValidator.isValid(params);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {};\r\n params[OfoPenaltyReportComponent.PARAM_BILLING_MONTH] = this.model.searchParams.billingMonth;\r\n params[OfoPenaltyReportComponent.PARAM_ENTERPRISE_ID] = this.model.searchParams.enterpriseId;\r\n return params;\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n this.model.userHasExportChargesCapability = this.capabilitiesService.hasCapabilities(['OfoPenaltyReport-Export-Read'], this.userService.user, this.sessionService.getPipeline().code);\r\n\r\n const queryPipelineService$ = this.queryPipelines();\r\n\r\n const gasDayRequest$ = this.nominationSystemService.pipelineGasDay()\r\n .pipe(\r\n tap(gasDay => this.model.actualGasDay = gasDay.actualGasDay)\r\n );\r\n\r\n const queryOldestBillingMonth$ = this.commonDataBillingMonthService.getOldest()\r\n .pipe(\r\n tap(oldestBillingMonth => this.model.oldestBillingMonth = oldestBillingMonth)\r\n );\r\n\r\n const queryOpenBillingMonth$ = this.commonDataBillingMonthService.getOpen()\r\n .pipe(\r\n tap(openBillingMonth => this.model.openBillingMonth = openBillingMonth)\r\n );\r\n\r\n const queryPreliminaryBillingMonth$ = this.commonDataBillingMonthService.getPreliminary()\r\n .pipe(\r\n tap(preliminary => this.model.preliminaryBillingMonth = preliminary)\r\n );\r\n\r\n this.model.userIsInternal = !this.userService.user.isExternalUser;\r\n return forkJoin([queryPipelineService$, gasDayRequest$, queryOldestBillingMonth$, queryOpenBillingMonth$, queryPreliminaryBillingMonth$])\r\n .pipe(\r\n tap(() => {\r\n this.model.maxBillingMonth = this.model.preliminaryBillingMonth\r\n ? this.model.preliminaryBillingMonth.gasMonth\r\n : this.model.openBillingMonth.gasMonth;\r\n this.model.minBillingMonth = this.model.oldestBillingMonth.gasMonth;\r\n })\r\n );\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n return of(null);\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams = new OfoPenaltyReportSearchParams();\r\n this.model.clearSearchResults();\r\n this.updateCustomerSelection();\r\n const pipeline: NominationPipeline = _.find(this.model.pipelines, x => x.code === (this.sessionService.getPipeline().code));\r\n const day: GasDay = GasDay.parse(pipeline.earliestSelectableGasDay);\r\n this.model.minBillingMonth = new GasMonth(day.year, day.month);\r\n this.model.searchParams.billingMonth = this.model.openBillingMonth.gasMonth;\r\n this.getSelectedMonthBillingStatus();\r\n }\r\n\r\n protected updateCustomerSelection() {\r\n const recipients = this.model.customers;\r\n if (recipients?.length === 1) {\r\n this.model.searchParams.enterpriseId = recipients[0].id;\r\n }\r\n else if (!this.model.userIsInternal && recipients?.length > 1) {\r\n const index = recipients.findIndex(r => r.id === Number(this.userService.user.enterpriseId));\r\n if (index !== -1) {\r\n this.model.searchParams.enterpriseId = recipients[index].id;\r\n }\r\n }\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams = new OfoPenaltyReportSearchParams();\r\n this.model.searchParams.billingMonth = typedParams.asGasMonth(OfoPenaltyReportComponent.PARAM_BILLING_MONTH);\r\n this.model.searchParams.enterpriseId = typedParams.asNumber(OfoPenaltyReportComponent.PARAM_ENTERPRISE_ID);\r\n }\r\n\r\n private getSearchParams(params: OfoPenaltyReportSearchParams): OfoPenaltyReportRequest {\r\n const searchParams = new OfoPenaltyReportRequest();\r\n searchParams.pipelineSystem = _.find(this.model.pipelines, x => x.code === this.sessionService.getPipeline().code).pipelineSystems[0].code;\r\n searchParams.effectiveBillingMonth = params.billingMonth;\r\n searchParams.enterpriseId = params.enterpriseId;\r\n\r\n return searchParams;\r\n }\r\n\r\n public onCustomerChanged(_$event): void {\r\n this.alertService.clearMessages();\r\n }\r\n\r\n public onGasMonthChanged(): void{\r\n this.alertService.clearMessages();\r\n\r\n this.getSelectedMonthBillingStatus();\r\n\r\n // customer list depends on invoice agent relationships in place at end of selected billing month\r\n // so load customer list here rather than in loadResources\r\n // but waits till billingMonth is defined before making the first service call\r\n if (!_.isNil(this.model.searchParams.billingMonth)) {\r\n this.getEnterprises(this.model.searchParams.billingMonth.end()).subscribe(() => {\r\n this.updateCustomerSelection();\r\n });\r\n }\r\n }\r\n\r\n protected getSelectedMonthBillingStatus(): void {\r\n this.model.billingProcessFinal = false;\r\n if (this.model.userHasExportChargesCapability && !_.isNil(this.model.searchParams?.billingMonth)) {\r\n this.flowingGasAllocationAndBalancingBillingProcessService.get(this.model.searchParams?.billingMonth).pipe(\r\n tap(billingProcesses => {\r\n this.model.billingProcessFinal = !_.isNil(billingProcesses) && billingProcesses.length > 0 && billingProcesses[0].status === BillingProcessStatus[BillingProcessStatus.Final];\r\n })\r\n ).subscribe(() => {});\r\n }\r\n }\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n\r\n const getOfoPenaltyData$ = this.getOfoPenaltyData();\r\n const queryServerTimeData$ = this.queryServerTimeData();\r\n\r\n return forkJoin([getOfoPenaltyData$, queryServerTimeData$]);\r\n }\r\n\r\n private getOfoPenaltyData(): Observable {\r\n return this.ofoPenaltyReportService.queryOfoPenaltyReport(this.getSearchParams(this.model.searchParams))\r\n .pipe(\r\n tap(rows => this.model.searchResults = rows)\r\n );\r\n }\r\n\r\n private getOfoPenaltyExport(gasMonth: GasMonth): Observable {\r\n return this.ofoPenaltyReportService.exportOfoPenalty({effectiveBillingMonth: gasMonth})\r\n .pipe(\r\n tap(rows => this.model.penaltyExportResults = rows)\r\n );\r\n }\r\n\r\n private queryServerTimeData(): Observable {\r\n return this.commonDataGasDayService.getServerTimeData()\r\n .pipe(\r\n tap(serverTimes => this.model.timeOfLastSearch = serverTimes.serverTime.toDate())\r\n );\r\n }\r\n\r\n private queryPipelines(): Observable {\r\n return this.nominationPipelineService.get()\r\n .pipe(\r\n tap(pipelines => this.model.pipelines = pipelines)\r\n );\r\n }\r\n\r\n private getEnterprises(asOfGasDay: GasDay): Observable {\r\n const accountsCustomerSearchParams = AccountsCustomerSearchParams.withNomGroupBusinessRights([BusinessRight.CustodyTransfer], false);\r\n // external customer list with agency relationships on this date\r\n accountsCustomerSearchParams.fromGasDay = asOfGasDay;\r\n accountsCustomerSearchParams.toGasDay = asOfGasDay;\r\n\r\n return this.accountsEnterpriseService.queryCustomers(accountsCustomerSearchParams, true, true)\r\n .pipe(\r\n concatMap(enterpriseIds => this.createAndEnrichEnterpriseIds(enterpriseIds)),\r\n tap(enterprises => this.model.customers = _.sortBy(enterprises, x => x.displayName))\r\n );\r\n }\r\n\r\n private createAndEnrichEnterpriseIds(enterpriseIds: number[]): Observable {\r\n const enterprises = _.map(enterpriseIds, enterpriseId => Enterprise.createWithId(enterpriseId));\r\n return this.enterpriseEnrichmentService.enrichArray(enterprises, 'cid');\r\n }\r\n\r\n public asqLimitDisplayValue(rowData: OfoWatchShipperData): string {\r\n return `${rowData.lowAsqLimit.toLocaleString()} / +${rowData.highAsqLimit.toLocaleString()}`;\r\n }\r\n\r\n public exportCsvClicked() {\r\n const csvData = [];\r\n\r\n this.model.searchResults.forEach(row => {\r\n csvData.push({\r\n orderReferenceId: row.orderReferenceId,\r\n adjustmentType: row.adjustmentType,\r\n gasDay: row.gasDay.toCsvFormat(),\r\n netPipelinePosition: row.netPipelinePosition,\r\n lowAsqLimit: row.lowAsqLimit,\r\n highAsqLimit: row.highAsqLimit,\r\n accumulatedBalance: row.accumulatedBalance,\r\n calculatedExcessQuantity: row.calculatedExcessQuantity,\r\n billableExcessQuantity: row.billableExcessQuantity,\r\n averagePrice: row.averagePrice ? row.averagePrice.toFixed(5) : null,\r\n threeByAveragePrice: row.threeByAveragePrice ? row.threeByAveragePrice.toFixed(5) : null,\r\n charge: row.charge ? row.charge.toFixed(2) : null\r\n });\r\n });\r\n\r\n const shipperDisplayName = this.model.customers.find(r => r.id === this.model.searchParams.enterpriseId)?.displayValue ?? \"\";\r\n const filename = this.getTitle() + '_' + shipperDisplayName + '_' + this.model.searchParams.billingMonth.toDisplayFormat(true) + '.csv';\r\n const headers = ['Order Reference Id',\t'Penalty Adjustment Type',\t'Penalty Gas Day',\t'NPP (GJ)',\t'Low ASQ Limit (GJ)',\t'High ASQ Limit (GJ)',\t'Accumulated Balance (GJ)',\r\n 'Original Calculated Excess (GJ)',\t'Billable Excess (GJ)',\t'30 Day AVG AB NIT Price ($CDN)',\t'3X30 Day AVG AB NIT Price ($CDN)', 'Fee ($CDN)'];\r\n const columns = ['orderReferenceId', 'adjustmentType', 'gasDay','netPipelinePosition', 'lowAsqLimit', 'highAsqLimit', 'accumulatedBalance', 'calculatedExcessQuantity',\r\n 'billableExcessQuantity','averagePrice','threeByAveragePrice', 'charge'];\r\n this.fileService.downloadCsvFile(filename, csvData, headers, columns);\r\n this.alertService.addInfoMessage(\"Export\", `${filename} exported`);\r\n }\r\n\r\n public exportChargesClicked() {\r\n const gasMonth = this.model.searchParams.billingMonth;\r\n this.getOfoPenaltyExport(gasMonth).subscribe(() => {\r\n const penaltyExportCsv = [];\r\n this.model.penaltyExportResults.forEach(row => {\r\n penaltyExportCsv.push({\r\n billingMonth: row.billingMonth,\r\n affectedMonth: row.affectedMonth,\r\n nomGroup: row.nominationGroup,\r\n adjType: row.adjustmentType,\r\n receipt: row.receiptLocation,\r\n delivery: row.deliveryLocation,\r\n qtyType: row.quantityType,\r\n quantity: row.quantity,\r\n taxPct: row.taxPct,\r\n tollCdn: row.tollCdn,\r\n tollChange: row.totalChange,\r\n additionalComments: row.additionalComments\r\n });\r\n });\r\n\r\n const filename = 'OFO Penalty Charges_' + gasMonth.toDisplayFormat(true) + '.csv';\r\n const headers = ['Billing Month',\t'Affected Month',\t'Nom Group',\t'Adj Type',\t'Receipt',\t'Delivery',\t'Qty Type',\r\n 'Quantity (GJ)', 'Tax (%)', 'Toll Cdn ($)', 'Total Chg ($)', 'Additional Comments'];\r\n const columns = ['billingMonth', 'affectedMonth', 'nomGroup','adjType', 'receipt', 'delivery', 'qtyType',\r\n 'quantity', 'taxPct', 'tollCdn','tollChange','additionalComments'];\r\n\r\n this.fileService.downloadCsvFile(filename, penaltyExportCsv, headers, columns);\r\n this.alertService.addInfoMessage(\"Export\", `${filename} exported`);\r\n });\r\n }\r\n\r\n public onContentReady(_$event): void {\r\n // this is a hack to get the total summary row at the top of the grid rather than default footer location\r\n document.querySelector('.dx-datagrid-rowsview').before(document.querySelector('.dx-datagrid-total-footer'));\r\n }\r\n}\r\n","import {BaseViewModel} from \"@model/base-view-model\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport * as _ from \"lodash\";\r\nimport {OfoPenaltyOverrideData} from \"@shared/services/flowing-gas/ofo-penalty-report-service/ofo-penalty-report.service\";\r\nimport {NominationPipeline} from \"@model/nomination-pipeline\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {Enterprise} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\n\r\nexport class OfoPenaltyOverrideModel extends BaseViewModel {\r\n pipelines: NominationPipeline[];\r\n\r\n isInEditMode: boolean = false;\r\n hasUnsavedChanges: boolean = false;\r\n\r\n invoiceFinal: boolean = false;\r\n allocationBalancingComplete: boolean = false;\r\n\r\n oldestBillingMonth: BillingMonth;\r\n openBillingMonth: BillingMonth;\r\n\r\n actualGasDay: GasDay;\r\n\r\n customers: Enterprise[];\r\n\r\n searchParams: OfoPenaltyOverrideSearchParams = new OfoPenaltyOverrideSearchParams();\r\n lastSearchParams: OfoPenaltyOverrideSearchParams;\r\n\r\n searchResults: OfoPenaltyOverrideData[];\r\n timeOfLastSearch: Date;\r\n\r\n public hasSearchResults(): boolean {\r\n return !!this.searchResults;\r\n }\r\n\r\n public clearSearchResults(): void {\r\n this.searchResults = null;\r\n }\r\n}\r\n\r\nexport class OfoPenaltyOverrideSearchParams {\r\n affectedBillingMonth: GasMonth;\r\n billingMonth: GasMonth;\r\n enterpriseId: number;\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Affected Month: {{model.lastSearchParams?.affectedBillingMonth | gasMonthFormat }}\r\n Billing Month: {{model.lastSearchParams?.billingMonth | gasMonthFormat }}\r\n Customer: {{model.lastSearchParams?.enterpriseId | displayName: 'cid' : 'name' : model.customers}}\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.affectedBillingMonth | gasMonthFormat}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.billingMonth | gasMonthFormat}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.enterpriseId | displayName: 'id' : 'displayName' : model.customers}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n Number of records found: {{model.searchResults.length}}\r\n AS OF {{model.timeOfLastSearch | dateFormat:'YYYY-MMM-DD H:mm:ss A'}}\r\n
0\" class=\"pull-right\">\r\n Export CSV\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n Penalty Gas
Day\r\n
\r\n
\r\n {{row.data.gasDay.toString() | dateFormat: 'YYYY-MMM-DD'}}\r\n
\r\n
\r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n
\r\n Accumulated
Balance (GJ)\r\n
\r\n
\r\n\r\n \r\n
\r\n Original Calculated
Excess (GJ)\r\n
\r\n
\r\n\r\n \r\n
\r\n Latest Calculated
Excess (GJ)\r\n
\r\n
\r\n\r\n \r\n
\r\n Billable
Excess (GJ)\r\n
\r\n \r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n","import {Component, ViewChild} from \"@angular/core\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {forkJoin, Observable, of} from \"rxjs\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {OfoPenaltyOverrideModel, OfoPenaltyOverrideSearchParams} from \"app/gcts/flowinggas/ofo-maintenance/ofo-penalty-override/ofo-penalty-override.model\";\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {NominationPipelineService} from \"@shared/services/nomination/nomination-pipeline/nomination-pipeline.service\";\r\nimport {NominationSystemService} from \"@shared/services/nomination/nomination-system/nomination-system.service\";\r\nimport {OfoPenaltyOverrideData, OfoPenaltyOverridesRequest, OfoPenaltyReportService} from \"@shared/services/flowing-gas/ofo-penalty-report-service/ofo-penalty-report.service\";\r\nimport {concatMap, tap, delay} from \"rxjs/operators\";\r\nimport {BusinessRight} from \"@model/business-right\";\r\nimport {NominationPipeline} from \"@model/nomination-pipeline\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport * as _ from \"lodash\";\r\nimport {OfoWatchShipperData} from \"@shared/services/flowing-gas/ofo-maintenance-service/ofo-maintenance.service\";\r\nimport {\r\n InvoicingInvoiceBillingProcessService\r\n} from \"@shared/services/invoicing/invoicing-invoice-billing-process/invoicing-invoice-billing-process.service\";\r\nimport {\r\n BillingProcess,\r\n FlowingGasAllocationAndBalancingBillingProcessService\r\n} from \"@shared/services/flowing-gas/flowing-gas-allocation-and-balancing-billing-process/flowing-gas-allocation-and-balancing-billing-process.service\";\r\nimport { DxDataGridComponent } from \"devextreme-angular/ui/data-grid\";\r\nimport {YesNoModalOptions} from \"@shared/services/webapp/modal-options/yes-no-modal-options\";\r\nimport {SelectedModalOption} from \"@shared/services/webapp/modal-options/selected-modal-option\";\r\nimport {YesNoCancelModalService} from \"@shared/services/webapp/yes-no-cancel-modal/yes-no-cancel-modal.service\";\r\nimport {Enterprise, EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {AccountsCustomerSearchParams, AccountsEnterpriseService} from \"@shared/services/accounts/accounts-enterprise/accounts-enterprise.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {CommonDataGasdayService, ServerTimeData} from \"@shared/services/common-data/common-data-gasday/common-data-gasday.service\";\r\n\r\n@Component({\r\n selector: 'app-ofo-penalty-override',\r\n templateUrl: './ofo-penalty-override.component.html',\r\n styleUrls: ['./ofo-penalty-override.component.css']\r\n})\r\nexport class OfoPenaltyOverrideComponent extends BaseSearchComponent {\r\n private static EDITABLE_FIELDS: string[] = ['billableExcessQuantity', 'overrideComment'];\r\n\r\n private static PARAM_AFFECTED_BILLING_MONTH: string = 'affectedBillingMonth';\r\n private static PARAM_BILLING_MONTH: string = 'effectiveBillingMonth';\r\n private static PARAM_ENTERPRISE_ID: string = 'enterpriseId';\r\n\r\n @ViewChild(DxDataGridComponent)\r\n public dataGrid: DxDataGridComponent;\r\n\r\n model: OfoPenaltyOverrideModel = new OfoPenaltyOverrideModel();\r\n\r\n constructor(protected appService: AppService,\r\n protected activatedRoute: ActivatedRoute,\r\n protected router: Router,\r\n protected alertService: AlertService,\r\n private modalService: YesNoCancelModalService,\r\n private commonDataBillingMonthService: CommonDataBillingMonthService,\r\n private enterpriseEnrichmentService: EnterpriseEnrichmentService,\r\n private commonDataEnterpriseService: EnterpriseService,\r\n private nominationPipelineService: NominationPipelineService,\r\n private nominationSystemService: NominationSystemService,\r\n private accountsEnterpriseService: AccountsEnterpriseService,\r\n private ofoPenaltyReportService: OfoPenaltyReportService,\r\n private invoicingInvoiceBillingProcessService: InvoicingInvoiceBillingProcessService,\r\n private flowingGasAllocationAndBalancingBillingProcessService: FlowingGasAllocationAndBalancingBillingProcessService,\r\n private fileService: FileService,\r\n private commonDataGasDayService: CommonDataGasdayService,\r\n ){\r\n super('Override OFO Billable Excess', appService, activatedRoute, router, alertService);\r\n enterpriseEnrichmentService.setEnrichmentResource(commonDataEnterpriseService);\r\n\r\n this.appService.hideMenu();\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n const paramValidator = ParamValidator.Standard();\r\n\r\n paramValidator.isGasMonth(OfoPenaltyOverrideComponent.PARAM_AFFECTED_BILLING_MONTH);\r\n paramValidator.isGasMonth(OfoPenaltyOverrideComponent.PARAM_BILLING_MONTH);\r\n paramValidator.isNumber(OfoPenaltyOverrideComponent.PARAM_ENTERPRISE_ID);\r\n\r\n return paramValidator.isValid(params);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {};\r\n\r\n params[OfoPenaltyOverrideComponent.PARAM_AFFECTED_BILLING_MONTH] = this.model.searchParams.affectedBillingMonth;\r\n params[OfoPenaltyOverrideComponent.PARAM_BILLING_MONTH] = this.model.searchParams.billingMonth;\r\n params[OfoPenaltyOverrideComponent.PARAM_ENTERPRISE_ID] = this.model.searchParams.enterpriseId;\r\n\r\n return params;\r\n }\r\n\r\n\r\n public editClicked(): void {\r\n this.model.isInEditMode = true;\r\n }\r\n\r\n public saveClicked(): void {\r\n // Delay the save to ensure the grid change event completes and that data changes will be captured in model.searchResults.\r\n of([]).pipe(\r\n delay(250),\r\n concatMap(() => this.ofoPenaltyReportService.postOfoPenaltyOverrides(this.model.lastSearchParams.billingMonth, this.model.searchResults))\r\n ).subscribe(() => this.resetPage());\r\n }\r\n\r\n public cancelClicked(): void {\r\n this.alertService.clearMessages();\r\n const yesNoModalOptions = new YesNoModalOptions('Discard Changes', 'Unsaved changes will be lost, would you like to continue?');\r\n this.modalService.show(yesNoModalOptions)\r\n .subscribe((selectedModalOption: SelectedModalOption) => {\r\n if(selectedModalOption === SelectedModalOption.Yes) {\r\n this.resetPage();\r\n }\r\n });\r\n }\r\n\r\n public affectedBillingMonthChanged(): void {\r\n this.alertService.clearMessages();\r\n }\r\n\r\n public billingMonthChanged(): void {\r\n this.alertService.clearMessages();\r\n }\r\n\r\n public onEditorPrepared($event: any) {\r\n if(!this.model.isInEditMode || !_.some(OfoPenaltyOverrideComponent.EDITABLE_FIELDS, field => field === $event.dataField))\r\n {\r\n $event.editorElement.allowEditing = false;\r\n return;\r\n }\r\n\r\n $event.editorElement.allowEditing = true;\r\n $event.editorElement.oninput = () => this.model.hasUnsavedChanges = true;\r\n }\r\n\r\n private resetPage(): void {\r\n this.model.isInEditMode = false;\r\n this.model.hasUnsavedChanges = false;\r\n\r\n this.performSearch().subscribe(() => {}); // Reload Data\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n const getPipelines$ = this.nominationPipelineService.get()\r\n .pipe(\r\n tap(pipelines => this.model.pipelines = pipelines)\r\n );\r\n\r\n const getEnterprises$ = this.queryEnterprises();\r\n\r\n const getOldestBillingMonth$ = this.commonDataBillingMonthService.getOldest()\r\n .pipe(\r\n tap(oldestBillingMonth => this.model.oldestBillingMonth = oldestBillingMonth)\r\n );\r\n\r\n const getOpenBillingMonth$ = this.commonDataBillingMonthService.getOpen()\r\n .pipe(\r\n tap(openBillingMonth => this.model.openBillingMonth = openBillingMonth)\r\n );\r\n\r\n return forkJoin([getPipelines$, getEnterprises$, getOldestBillingMonth$, getOpenBillingMonth$]);\r\n }\r\n\r\n private queryEnterprises(): Observable {\r\n const accountsCustomerSearchParams = AccountsCustomerSearchParams.withNomGroupBusinessRights(BusinessRight.SHIPPER_BUSINESS_RIGHTS, false);\r\n accountsCustomerSearchParams.fromGasDay = GasDay.today();\r\n accountsCustomerSearchParams.toGasDay = GasDay.today();\r\n return this.accountsEnterpriseService.queryCustomers(accountsCustomerSearchParams)\r\n .pipe(\r\n concatMap(enterpriseIds => this.createAndEnrichEnterpriseIds(enterpriseIds)),\r\n tap(enterprises => this.model.customers = _.sortBy(enterprises, x => x.displayName))\r\n );\r\n }\r\n\r\n private createAndEnrichEnterpriseIds(enterpriseIds: number[]): Observable {\r\n const enterprises = _.map(enterpriseIds, enterpriseId => Enterprise.createWithId(enterpriseId));\r\n return this.enterpriseEnrichmentService.enrichArray(enterprises, 'cid');\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n return of(null);\r\n }\r\n\r\n private buildRequest(params: OfoPenaltyOverrideSearchParams): OfoPenaltyOverridesRequest {\r\n const request = new OfoPenaltyOverridesRequest();\r\n request.affectedBillingMonth = params.affectedBillingMonth;\r\n request.effectiveBillingMonth = params.billingMonth;\r\n request.enterpriseId = params.enterpriseId;\r\n\r\n return request;\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n const requestParams = this.buildRequest(this.model.searchParams);\r\n\r\n const getInvoiceStatus$ = this.invoicingInvoiceBillingProcessService.get(this.model.searchParams.billingMonth)\r\n .pipe(\r\n tap(status => {\r\n this.model.invoiceFinal = status.status === 'Final';\r\n })\r\n );\r\n\r\n const getAllocationBalancingStatus$ = this.flowingGasAllocationAndBalancingBillingProcessService.get(this.model.searchParams.billingMonth)\r\n .pipe(\r\n tap(billingProcess => {\r\n this.model.allocationBalancingComplete = billingProcess[0].status === 'Final';\r\n })\r\n );\r\n\r\n const getPenaltyOverrides$ = this.ofoPenaltyReportService.queryOfoPenaltyOverrides(requestParams)\r\n .pipe(\r\n tap((overrides: OfoPenaltyOverrideData[]) => this.model.searchResults = overrides),\r\n );\r\n\r\n const getServerTime$ = this.commonDataGasDayService.getServerTimeData()\r\n .pipe(\r\n tap(serverTimes => this.model.timeOfLastSearch = serverTimes.serverTime.toDate())\r\n );\r\n\r\n return forkJoin([getPenaltyOverrides$, getInvoiceStatus$, getAllocationBalancingStatus$, getServerTime$]);\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.clearSearchResults();\r\n\r\n this.model.searchParams = new OfoPenaltyOverrideSearchParams();\r\n this.model.searchParams.affectedBillingMonth = this.model.openBillingMonth.gasMonth;\r\n this.model.searchParams.billingMonth = this.model.openBillingMonth.gasMonth;\r\n\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams.affectedBillingMonth = typedParams.asGasMonth(OfoPenaltyOverrideComponent.PARAM_AFFECTED_BILLING_MONTH);\r\n this.model.searchParams.billingMonth = typedParams.asGasMonth(OfoPenaltyOverrideComponent.PARAM_BILLING_MONTH);\r\n this.model.searchParams.enterpriseId = typedParams.asNumber(OfoPenaltyOverrideComponent.PARAM_ENTERPRISE_ID);\r\n }\r\n\r\n public asqLimitDisplayValue(rowData: OfoWatchShipperData): string {\r\n return `${rowData.lowAsqLimit.toLocaleString()} / +${rowData.highAsqLimit.toLocaleString()}`;\r\n }\r\n\r\n public exportCsvClicked() {\r\n const rawCsvData = [];\r\n\r\n this.model.searchResults.forEach(row => {\r\n rawCsvData.push({\r\n orderReferenceId: row.orderReferenceId,\r\n shipperMnemonic: row.shipperMnemonic,\r\n gasDay: row.gasDay.toCsvFormat(),\r\n netPipelinePosition: row.netPipelinePosition,\r\n lowAsqLimit: row.lowAsqLimit,\r\n highAsqLimit: row.highAsqLimit,\r\n accumulatedBalance: row.accumulatedBalance,\r\n calculatedExcessQuantity: row.calculatedExcessQuantity,\r\n latestCalculatedExcess: row.latestCalculatedExcess,\r\n billableExcessQuantity: row.billableExcessQuantity,\r\n overrideComment: row.overrideComment\r\n });\r\n });\r\n const csvData = _.orderBy(rawCsvData, ['gasDay'], ['desc']);\r\n\r\n const shipperDisplayName = this.model.customers.find(r => r.id === this.model.searchParams.enterpriseId)?.displayValue ?? \"\";\r\n const filename = 'OFO Penalties Override_' + shipperDisplayName + '_' + this.model.searchParams.billingMonth.toDisplayFormat(true) + '.csv';\r\n const headers = ['Order Reference Id',\t'Shipper Mnemonic', 'Penalty Gas Day',\t'NPP (GJ)',\t'Low ASQ Limit (GJ)',\t'High ASQ Limit (GJ)',\t'Accumulated Balance (GJ)',\r\n 'Original Calculated Excess (GJ)',\t'Latest Calculated Excess (GJ)', 'Billable Excess (GJ)',\t'Override Comment'];\r\n const columns = ['orderReferenceId', 'shipperMnemonic', 'gasDay','netPipelinePosition', 'lowAsqLimit', 'highAsqLimit', 'accumulatedBalance', 'calculatedExcessQuantity',\r\n 'latestCalculatedExcess', 'billableExcessQuantity','overrideComment'];\r\n this.fileService.downloadCsvFile(filename, csvData, headers, columns);\r\n this.alertService.addInfoMessage(\"Export\", `${filename} exported`);\r\n }\r\n}\r\n","import * as _ from \"lodash\";\r\n\r\nexport class OfoCreditReportType {\r\n public static SUMMARY: OfoCreditReportType = new OfoCreditReportType(\"Summary\");\r\n public static DETAILS_BY_SHIPPER: OfoCreditReportType = new OfoCreditReportType(\"Details By Shipper\");\r\n public static DETAILS_BY_ORDER: OfoCreditReportType = new OfoCreditReportType(\"Details By Order\");\r\n\r\n public static ALL: OfoCreditReportType[] = [OfoCreditReportType.SUMMARY, OfoCreditReportType.DETAILS_BY_SHIPPER, OfoCreditReportType.DETAILS_BY_ORDER];\r\n\r\n\r\n\r\n constructor(value: string) {\r\n this._value = value;\r\n }\r\n\r\n private readonly _value: string;\r\n\r\n get value(): string {\r\n return this._value;\r\n }\r\n\r\n public static find(value: string): OfoCreditReportType {\r\n return _.find(this.ALL, x => x.value.toLowerCase() === value.toLowerCase());\r\n }\r\n}\r\n\r\nexport class BillingYear {\r\n constructor(\r\n public id: number,\r\n public name: string\r\n ) {}\r\n}\r\n","import {BaseViewModel} from \"@model/base-view-model\";\r\nimport {NominationPipeline} from \"@model/nomination-pipeline\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {Enterprise} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {BillingYear, OfoCreditReportType} from \"app/gcts/flowinggas/ofo-credit-report/ofo-credit-report-type\";\r\nimport * as _ from \"lodash\";\r\n\r\nexport class OfoCreditReportSearchParams {\r\n public reportType : string;\r\n\r\n // Summary report parameters\r\n public billingYear: number;\r\n public startGasDay: GasDay;\r\n public endGasDay: GasDay;\r\n public ofoReferenceId: number;\r\n\r\n // Detail By Shipper report parameters\r\n public enterpriseId: number;\r\n\r\n\r\n public invalidParameters(): boolean {\r\n if (_.isNil(this.billingYear)) return true; // always required\r\n\r\n if (this.reportType === OfoCreditReportType.SUMMARY.value) {\r\n return this.invalidCreditSummaryParameters();\r\n }\r\n\r\n if (this.reportType === OfoCreditReportType.DETAILS_BY_SHIPPER.value) {\r\n return this.invalidCreditDetailsByShipperParameters();\r\n }\r\n\r\n if (this.reportType === OfoCreditReportType.DETAILS_BY_ORDER.value) {\r\n return this.invalidCreditDetailsByOrderParameters();\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private invalidCreditSummaryParameters() : boolean {\r\n if (!_.isNil(this.ofoReferenceId)) {\r\n // can't specify ofo ref num and date range\r\n return !_.isNil(this.startGasDay) || !_.isNil(this.endGasDay);\r\n } else if (!_.isNil(this.startGasDay)) {\r\n // if specify dates, ensure proper range\r\n return _.isNil(this.endGasDay) || this.endGasDay.isLessThan(this.startGasDay)\r\n || this.startGasDay.year !== this.billingYear || this.endGasDay.year !== this.billingYear;\r\n } else {\r\n // if no start date, end date must also be blank\r\n return !_.isNil(this.endGasDay);\r\n }\r\n }\r\n\r\n private invalidCreditDetailsByOrderParameters(): boolean {\r\n return _.isNil(this.ofoReferenceId);\r\n }\r\n\r\n private invalidCreditDetailsByShipperParameters(): boolean {\r\n return false;\r\n }\r\n\r\n public isSummaryType() : boolean {\r\n return this.reportType === OfoCreditReportType.SUMMARY.value;\r\n }\r\n\r\n public isDetailsByShipperType() : boolean {\r\n return this.reportType === OfoCreditReportType.DETAILS_BY_SHIPPER.value;\r\n }\r\n\r\n public isDetailsByOrderType() : boolean {\r\n return this.reportType === OfoCreditReportType.DETAILS_BY_ORDER.value;\r\n }\r\n}\r\n\r\n\r\nexport class OfoCreditReportModel extends BaseViewModel {\r\n pipelines: NominationPipeline[];\r\n\r\n public billingYears: BillingYear[];\r\n public currentYear: number;\r\n public earliestBillingYear: number;\r\n public openBillingMonth: GasMonth;\r\n public openBillingMonthAllocBalancingFinal: boolean;\r\n\r\n public reportTypes: OfoCreditReportType[];\r\n\r\n public canViewCreditReportByOrder: boolean;\r\n\r\n public minGasDay: GasDay;\r\n public maxGasDay: GasDay;\r\n public defaultGasDay: GasDay;\r\n\r\n public customers: Enterprise[];\r\n public appliedBillingMonth: GasMonth = null;\r\n\r\n public searchParams: OfoCreditReportSearchParams;\r\n public lastSearchParams: OfoCreditReportSearchParams;\r\n\r\n constructor() {\r\n super();\r\n this.reportTypes = OfoCreditReportType.ALL;\r\n this.searchParams = new OfoCreditReportSearchParams();\r\n }\r\n\r\n hasSearchResults() {\r\n return _.isNil(this.lastSearchParams);\r\n }\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {Observable} from \"rxjs\";\r\nimport {tap} from \"rxjs/operators\";\r\nimport {FlowinggasResourceService} from \"@shared/resources/flowinggas-resource.service\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {ManualAdjustmentExportDto} from \"@model/dto/manual-adjustment-export-dto\";\r\nimport * as _ from \"lodash\";\r\n\r\n@Injectable()\r\nexport class OfoCreditReportService {\r\n constructor(\r\n protected flowingGasResource: FlowinggasResourceService) { }\r\n\r\n public queryOfoCreditDetailExport(request: OfoCreditDetailsExportRequest): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setNumber('billingYear', request.billingYear);\r\n params.setOptionalNumber('enterpriseId', request.enterpriseId);\r\n\r\n return this.flowingGasResource.get('/ofoCreditDetailsExport', true, params)\r\n .pipe(\r\n tap(response => response.forEach(dto => SimpleOfoCreditDetailExportDto.reviveDates(dto)) )\r\n );\r\n }\r\n\r\n public queryOfoCreditSummaries(request: OfoCreditSummaryRequest): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setNumber('billingYear', request.billingYear);\r\n params.setOptionalNumber('ofoOrderReferenceNumber', request.ofoOrderReferenceNumber);\r\n params.setOptionalGasDay(request.fromGasDay,'fromGasDay');\r\n params.setOptionalGasDay(request.toGasDay,'toGasDay');\r\n\r\n return this.flowingGasResource.get('/ofoCreditSummaries', true, params)\r\n .pipe(\r\n tap(response => response.forEach(dto => SimpleOfoCreditSummaryDto.reviveDates(dto)) )\r\n );\r\n }\r\n\r\n public queryOfoCreditManualAdjustments(billingYear: number): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setNumber('billingYear', billingYear);\r\n\r\n return this.flowingGasResource.get('/ofoCreditChargeExport', true, params);\r\n }\r\n\r\n public update(request: OfoCreditSummaryUpdateRequest): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setBoolean('clearInvoiceBillingMonth', request.clearInvoiceBillingMonth);\r\n params.set('openBillingMonth', request.openBillingMonth );\r\n return this.flowingGasResource.patchWithNoResponseBody('/ofoCreditSummaries', {},true, params);\r\n }\r\n\r\n public queryOfoCreditSummary(billingYear: number, ofoOrderReferenceNumber: number): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setNumber('billingYear', billingYear);\r\n params.setNumber('ofoOrderReferenceNumber', ofoOrderReferenceNumber);\r\n\r\n return this.flowingGasResource.get('/ofoCreditDetail', true, params)\r\n .pipe(\r\n tap(response => SimpleOfoCreditSummaryDto.reviveDates(response))\r\n );\r\n }\r\n\r\n public updateOfoCreditSummary(billingYear: number, ofoCreditSummaryId: number, ofoExpenseAmount: number): Observable {\r\n const body = {\r\n billingYear: billingYear,\r\n ofoExpenseAmount: ofoExpenseAmount\r\n };\r\n return this.flowingGasResource.patchWithNoResponseBody(`/ofoCreditSummary/${ofoCreditSummaryId}`, body,true);\r\n }\r\n}\r\n\r\nexport class BaseSimpleOfoCreditDto {\r\n billingYear: number;\r\n ofoOrderReferenceId: string;\r\n initialComplianceGasDay: GasDay;\r\n expiredEffectiveStartOfGasDay: GasDay;\r\n adjustmentType: string;\r\n\r\n public static reviveDates(dto: BaseSimpleOfoCreditDto): void {\r\n if (_.isNil(dto)) return;\r\n dto.initialComplianceGasDay = _.isNil(dto.initialComplianceGasDay)\r\n ? null\r\n : typeof dto.initialComplianceGasDay === 'string'\r\n ? GasDay.parse(dto.initialComplianceGasDay)\r\n : dto.initialComplianceGasDay;\r\n dto.expiredEffectiveStartOfGasDay = _.isNil(dto.expiredEffectiveStartOfGasDay)\r\n ? null\r\n : typeof dto.expiredEffectiveStartOfGasDay === 'string'\r\n ? GasDay.parse(dto.expiredEffectiveStartOfGasDay)\r\n : dto.expiredEffectiveStartOfGasDay;\r\n }\r\n}\r\n\r\nexport class SimpleOfoCreditDetailExportDto extends BaseSimpleOfoCreditDto {\r\n enterpriseId: number;\r\n enterpriseName: string;\r\n enterpriseMnemonic: string;\r\n creditAmount: number;\r\n}\r\n\r\nexport class OfoCreditDetailsExportRequest {\r\n billingYear: number;\r\n enterpriseId: number;\r\n}\r\n\r\nexport class OfoCreditSummaryRequest {\r\n billingYear: number;\r\n fromGasDay: GasDay;\r\n toGasDay: GasDay;\r\n ofoOrderReferenceNumber : number | null;\r\n}\r\n\r\nexport class OfoCreditSummaryUpdateRequest {\r\n clearInvoiceBillingMonth: boolean;\r\n openBillingMonth: string;\r\n}\r\n\r\nexport class SimpleOfoCreditSummaryDto extends BaseSimpleOfoCreditDto {\r\n invoicedBillingMonth: string;\r\n totalPenalties: number | null;\r\n ofoExpense: number | null;\r\n totalCredit: number | null;\r\n calculationStatus: string;\r\n}\r\n\r\nexport class OfoCreditSummaryPenalty {\r\n enterpriseId: number;\r\n enterpriseMnemonic: string;\r\n gasDay: string;\r\n charge: number;\r\n}\r\n\r\nexport class OfoCreditSummaryDetail {\r\n enterpriseId: number;\r\n nomGroupMnemonic: string;\r\n eligibleOperationalQuantity: number;\r\n creditAmount: number;\r\n}\r\n\r\nexport class OfoCreditSummaryDto extends SimpleOfoCreditSummaryDto {\r\n id: number;\r\n penalties: OfoCreditSummaryPenalty[];\r\n creditDetails: OfoCreditSummaryDetail[];\r\n}\r\n","\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
{{lastSearchParams?.reportType}}
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
{{invoicedBillingMonth}}
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
{{lastSearchParams?.billingYear}}
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
{{lastSearchParams?.ofoReferenceId}}
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
{{lastSearchParams?.startGasDay}}
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
{{lastSearchParams?.endGasDay}}
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n
\r\n Number of Credit Summaries found: {{searchResults?.length}}\r\n\r\n
0\" class=\"pull-right\">\r\n Export CSV\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n {{ cellInfo.value | gasDayFormat }}\r\n
\r\n
\r\n \r\n {{row.data.ofoOrderReferenceId}}\r\n \r\n {{row.data.ofoOrderReferenceId}}\r\n
\r\n \r\n
\r\n
\r\n","import {Component, Input, ViewChild} from \"@angular/core\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {Observable, of} from \"rxjs\";\r\nimport {tap} from \"rxjs/operators\";\r\nimport {BaseComponent} from \"@model/base-component\";\r\nimport {OfoCreditReportService, OfoCreditSummaryRequest, SimpleOfoCreditSummaryDto} from \"@shared/services/flowing-gas/ofo-credit-report-service/ofo-credit-report.service\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {OfoCreditReportSearchParams} from \"app/gcts/flowinggas/ofo-credit-report/ofo-credit-report.model\";\r\nimport * as _ from \"lodash\";\r\n\r\n@Component({\r\n selector: 'app-ofo-credit-summary',\r\n templateUrl: './ofo-credit-summary.component.html',\r\n styleUrls: []\r\n})\r\nexport class OfoCreditSummaryComponent extends BaseComponent {\r\n\r\n @Input() showFilterSection: boolean;\r\n @Input() canViewCreditReportByOrder: boolean;\r\n public lastSearchParams: OfoCreditReportSearchParams = null;\r\n public searchResults: SimpleOfoCreditSummaryDto[] = null;\r\n public invoicedBillingMonth: string = \"\";\r\n\r\n @ViewChild(DxDataGridComponent)\r\n dataGrid: DxDataGridComponent;\r\n\r\n constructor(\r\n protected appService: AppService,\r\n private ofoCreditReportService: OfoCreditReportService,\r\n private fileService: FileService,\r\n private sessionService: SessionService\r\n ) {\r\n super(appService);\r\n this.sortOfoReferenceNumber= this.sortOfoReferenceNumber.bind(this);\r\n }\r\n\r\n\r\n public getOfoDetailByOrderPageLink(data: SimpleOfoCreditSummaryDto): string {\r\n // Return an empty link if it can't parse order reference id string.\r\n if (this.canViewCreditReportByOrder && !_.isNil(data?.ofoOrderReferenceId)) {\r\n const refId = this.getOfoReferenceNumber(data?.ofoOrderReferenceId);\r\n if (refId.length > 0) {\r\n return `/#/app/${this.sessionService.getPipeline().code}/reports/ofocreditreport?reportType=Details By Order&billingYear=${data.billingYear}&ofoOrderReferenceId=${refId}`;\r\n }\r\n }\r\n return \"javascript:void(0)\";\r\n }\r\n\r\n public performReset() : void {\r\n this.invoicedBillingMonth = \"\";\r\n this.lastSearchParams = null;\r\n this.searchResults = null;\r\n }\r\n\r\n public performSearch(searchParams: OfoCreditReportSearchParams): Observable {\r\n\r\n if (!searchParams.isSummaryType()) {\r\n this.performReset();\r\n return of(this.searchResults);\r\n }\r\n\r\n this.invoicedBillingMonth = \"\";\r\n this.lastSearchParams = _.clone(searchParams);\r\n const request = new OfoCreditSummaryRequest();\r\n request.billingYear = searchParams.billingYear;\r\n request.ofoOrderReferenceNumber = searchParams.ofoReferenceId;\r\n request.fromGasDay = searchParams.startGasDay;\r\n request.toGasDay = searchParams.endGasDay;\r\n return this.ofoCreditReportService.queryOfoCreditSummaries(request)\r\n .pipe(\r\n tap(results => {\r\n this.searchResults = results;\r\n if (!_.isNil(results) && results.length > 0) {\r\n this.invoicedBillingMonth = results[0].invoicedBillingMonth;\r\n }\r\n })\r\n );\r\n }\r\n\r\n public sortOfoReferenceNumber(row: any): string {\r\n const ofoOrderReferenceId = _.isNil(row?.ofoOrderReferenceId) ? '' : row.ofoOrderReferenceId;\r\n return this.getOfoReferenceNumber(ofoOrderReferenceId);\r\n }\r\n\r\n private getOfoReferenceNumber(ofoOrderReferenceId: string): string {\r\n const parts = _.isNil(ofoOrderReferenceId) ? [] : ofoOrderReferenceId.split('-');\r\n return parts.length > 1 ? parts[1] : '';\r\n }\r\n\r\n public exportCsvClicked() : void {\r\n const csvExport = _.map(this.searchResults, creditSummary => ({\r\n billingYear: creditSummary.billingYear,\r\n invoicedBillingMonth: creditSummary.invoicedBillingMonth,\r\n ofoOrderReferenceId: creditSummary.ofoOrderReferenceId,\r\n initialComplianceGasDayCsv: creditSummary.initialComplianceGasDay.toCsvFormat(),\r\n expiredEffectiveStartOfGasDaySort: creditSummary.expiredEffectiveStartOfGasDay.toString(),\r\n expiredEffectiveStartOfGasDayCsv: creditSummary.expiredEffectiveStartOfGasDay.toCsvFormat(),\r\n adjustmentType: creditSummary.adjustmentType,\r\n totalPenalties: creditSummary.totalPenalties,\r\n ofoExpense: creditSummary.ofoExpense,\r\n totalCredit: creditSummary.totalCredit,\r\n calculationStatus: creditSummary.calculationStatus,\r\n }));\r\n\r\n csvExport.sort((a, b) => {\r\n // descending\r\n const expiryDay = b.expiredEffectiveStartOfGasDaySort.localeCompare(a.expiredEffectiveStartOfGasDaySort);\r\n if (expiryDay !== 0) return expiryDay;\r\n const orderId = this.getOfoReferenceNumber(b.ofoOrderReferenceId).localeCompare(this.getOfoReferenceNumber(a.ofoOrderReferenceId));\r\n if (orderId !== 0) return orderId;\r\n return a.adjustmentType.localeCompare(b.adjustmentType);\r\n });\r\n\r\n const fileName = `OFO_Credit_Summary_${this.lastSearchParams.billingYear.toString()}.csv`;\r\n const headers = ['Billing Year','Invoiced Billing Month','OFO Order Reference Id','Initial Compliance Gas Day','Expired Effective Start of Gas Day','Adjustment Type','Total Penalties ($CDN)','OFO Expense ($CDN)','Total Credit ($CDN)','Calculation Status'];\r\n const columns = ['billingYear','invoicedBillingMonth','ofoOrderReferenceId','initialComplianceGasDayCsv','expiredEffectiveStartOfGasDayCsv','adjustmentType','totalPenalties','ofoExpense','totalCredit','calculationStatus'];\r\n\r\n this.fileService.downloadCsvFile(fileName, csvExport, headers, columns);\r\n }\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {InvoicingResourceService} from \"@shared/resources/invoicing-resource.service\";\r\nimport {Observable} from \"rxjs\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport * as _ from \"lodash\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {tap} from \"rxjs/operators\";\r\n\r\nexport class OfoCreditAppliedBillingMonthDto {\r\n id: number;\r\n creditYear: string;\r\n appliedBillingMonth: GasMonth;\r\n\r\n public static reviveMonth(dto: OfoCreditAppliedBillingMonthDto): void {\r\n dto.appliedBillingMonth = _.isNil(dto.appliedBillingMonth)\r\n ? null\r\n : typeof dto.appliedBillingMonth === 'string'\r\n ? GasMonth.parse(dto.appliedBillingMonth)\r\n : dto.appliedBillingMonth;\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport class InvoicingOfoCreditService {\r\n\r\n constructor(private invoicingResource: InvoicingResourceService) { }\r\n\r\n get(openBillingMonth: GasMonth): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('openBillingMonth', openBillingMonth.toDisplayFormat());\r\n\r\n return this.invoicingResource.get('/ofoCreditAppliedBillingMonth', true, params)\r\n .pipe(\r\n tap (response => {\r\n if (!_.isNil(response)) {\r\n OfoCreditAppliedBillingMonthDto.reviveMonth(response);\r\n }\r\n })\r\n );\r\n }\r\n\r\n getAppliedBillingMonthForCreditYear(creditYear :number): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setNumber('creditYear', creditYear);\r\n\r\n return this.invoicingResource.get('/ofoCreditAppliedBillingMonth', true, params)\r\n .pipe(\r\n tap (response => {\r\n if (!_.isNil(response)) {\r\n OfoCreditAppliedBillingMonthDto.reviveMonth(response);\r\n }\r\n })\r\n );\r\n }\r\n\r\n postAppliedBillingMonth(openBillingMonth: GasMonth): Observable {\r\n const body = {\r\n OpenBillingMonth: openBillingMonth.toDisplayFormat()\r\n };\r\n\r\n return this.invoicingResource.postWithNoResponseBody('/ofoCreditAppliedBillingMonth', body);\r\n }\r\n\r\n deleteAppliedBillingMonth(openBillingMonth: GasMonth, id: number): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setNumber('id', id);\r\n params.set('openBillingMonth', openBillingMonth.toDisplayFormat());\r\n return this.invoicingResource.deleteWithNoResponseBody('/ofoCreditAppliedBillingMonth', true, params);\r\n }\r\n\r\n}\r\n","\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{lastSearchParams?.reportType}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{appliedBillingMonth}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{lastSearchParams?.billingYear}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{this.creditDetailExportForCustomerName}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n Found ~{{ this.creditDetailsToExport?.length | number }} credit details.
\r\n {{ this.exportingCreditDetailsMessage }}\r\n
\r\n
\r\n
\r\n","import {Component, Input, ViewChild} from \"@angular/core\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {forkJoin, Observable, of} from \"rxjs\";\r\nimport {concatMap, tap} from \"rxjs/operators\";\r\nimport {BaseComponent} from \"@model/base-component\";\r\nimport {OfoCreditDetailsExportRequest, OfoCreditReportService, SimpleOfoCreditDetailExportDto} from \"@shared/services/flowing-gas/ofo-credit-report-service/ofo-credit-report.service\";\r\nimport {Enterprise} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {InvoicingOfoCreditService} from \"@shared/services/invoicing/invoicing-ofo-credits/invoicing-ofo-credits.service\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {OfoCreditReportSearchParams} from \"app/gcts/flowinggas/ofo-credit-report/ofo-credit-report.model\";\r\nimport * as _ from \"lodash\";\r\n\r\n@Component({\r\n selector: 'app-ofo-credit-details-by-shipper',\r\n templateUrl: './ofo-credit-details-by-shipper.component.html',\r\n styleUrls: []\r\n})\r\nexport class OfoCreditDetailsByShipperComponent extends BaseComponent {\r\n\r\n @Input() showFilterSection: boolean;\r\n\r\n public lastSearchParams: OfoCreditReportSearchParams = null;\r\n\r\n public creditDetailsToExport: SimpleOfoCreditDetailExportDto[] = null;\r\n public hasCreditDetailExports = false;\r\n public exportingCreditDetailsMessage: string = null;\r\n public creditDetailExportForCustomerName: string = \"All\";\r\n public appliedBillingMonth: string;\r\n\r\n @ViewChild(DxDataGridComponent)\r\n dataGrid: DxDataGridComponent;\r\n\r\n constructor(\r\n protected appService: AppService,\r\n private ofoCreditReportService: OfoCreditReportService,\r\n private fileService: FileService,\r\n private invoicingOfoCreditService: InvoicingOfoCreditService\r\n ) {\r\n super(appService);\r\n }\r\n\r\n public performReset() : void {\r\n this.lastSearchParams = null;\r\n this.creditDetailsToExport = [];\r\n this.exportingCreditDetailsMessage = null;\r\n this.hasCreditDetailExports = false;\r\n }\r\n\r\n public performSearch(searchParams: OfoCreditReportSearchParams, customers: Enterprise[]): Observable {\r\n this.performReset();\r\n if (!searchParams.isDetailsByShipperType()) {\r\n return of(null);\r\n }\r\n\r\n this.lastSearchParams = _.clone(searchParams);\r\n this.creditDetailExportForCustomerName =\r\n (_.isNil(this.lastSearchParams.enterpriseId))\r\n ? \"All\" : customers.find(c => c.id === this.lastSearchParams.enterpriseId).shortName;\r\n\r\n const request = new OfoCreditDetailsExportRequest();\r\n request.billingYear = this.lastSearchParams.billingYear;\r\n request.enterpriseId = this.lastSearchParams.enterpriseId;\r\n\r\n const export$ = this.ofoCreditReportService\r\n .queryOfoCreditDetailExport(request)\r\n .pipe(\r\n tap((creditDetails) => {\r\n this.creditDetailsToExport = creditDetails;\r\n this.hasCreditDetailExports = true;\r\n this.exportingCreditDetailsMessage = \"Exporting your OFO credit details\";\r\n this.exportCreditDetailByShipperToCsv(creditDetails, customers);\r\n }),\r\n concatMap(() => {\r\n return of(true);\r\n })\r\n );\r\n\r\n // also update the applied billing month that is displayed in the off-chance someone has updated it\r\n const getAppliedBillingMonth$ = this.getAppliedBillingMonth(this.lastSearchParams.billingYear);\r\n\r\n return forkJoin([export$, getAppliedBillingMonth$]);\r\n }\r\n\r\n private exportCreditDetailByShipperToCsv(dataToExport: SimpleOfoCreditDetailExportDto[], customers: Enterprise[]) {\r\n const csvData = [];\r\n dataToExport.forEach(row => {\r\n csvData.push({\r\n enterpriseName: row.enterpriseName,\r\n enterpriseMnemonic: row.enterpriseMnemonic,\r\n ofoOrderReferenceId: row.ofoOrderReferenceId,\r\n initialComplianceGasDay: row.initialComplianceGasDay.toCsvFormat(),\r\n expiredEffectiveStartOfGasDay: row.expiredEffectiveStartOfGasDay.toCsvFormat(),\r\n adjustmentType: row.adjustmentType,\r\n creditAmount: row.creditAmount.toFixed(2)\r\n });\r\n\r\n });\r\n\r\n let selectedCustomer = \"\";\r\n if (!_.isNil(this.lastSearchParams.enterpriseId)) {\r\n const customerName = customers.find(c => c.id === this.lastSearchParams.enterpriseId);\r\n if (!_.isNil(customerName)) {\r\n selectedCustomer = `_${customerName.shortName}`;\r\n }\r\n }\r\n\r\n const fileName = `OFO Credit Details by Shipper_${this.lastSearchParams.billingYear}${selectedCustomer}.csv`;\r\n const headers = ['Customer Name', 'Customer Mnemonic', 'OFO Order Reference Id', 'Initial Compliance Gas Day', 'Expired Effective Start of Gas Day', 'Adjustment Type', 'Credit (CDN $)'];\r\n const columns = ['enterpriseName', 'enterpriseMnemonic', 'ofoOrderReferenceId', 'initialComplianceGasDay', 'expiredEffectiveStartOfGasDay', 'adjustmentType', 'creditAmount'];\r\n this.fileService.downloadCsvFile(fileName, csvData, headers, columns);\r\n }\r\n\r\n private getAppliedBillingMonth(year: number) {\r\n return this.invoicingOfoCreditService.getAppliedBillingMonthForCreditYear(year)\r\n .pipe(\r\n tap(month => {\r\n this.appliedBillingMonth = (!_.isNil(month)) ? month?.appliedBillingMonth.toDisplayFormat() : null;\r\n })\r\n );\r\n }\r\n}\r\n","\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
{{lastSearchParams?.reportType}}
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
{{invoicedBillingMonth}}
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
{{lastSearchParams?.billingYear}}
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
{{lastSearchParams?.ofoReferenceId}}
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n {{ cellInfo.value | gasDayFormat }}\r\n
\r\n \r\n
\r\n\r\n
\r\n -\r\n +\r\n Penalties\r\n
\r\n
\r\n
\r\n
\r\n Number of Penalties: {{orderPenalties?.length}}\r\n
\r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n
\r\n {{ cellInfo.value | gasDayFormat }}\r\n
\r\n \r\n\r\n
\r\n
\r\n\r\n
\r\n -\r\n +\r\n Credits\r\n
\r\n
\r\n
\r\n
\r\n Number of Credits: {{orderCredits?.length}}\r\n
\r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n","import * as dx from \"devextreme/core/renderer\";\r\nimport {Component, Input, ViewChild} from \"@angular/core\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {forkJoin, Observable, of} from \"rxjs\";\r\nimport {concatMap, tap} from \"rxjs/operators\";\r\nimport {BaseComponent} from \"@model/base-component\";\r\nimport { GasMonth } from \"@model/gas-month\";\r\nimport { BillingMonth } from \"@model/billing-month\";\r\nimport {\r\n OfoCreditReportService, OfoCreditSummaryDetail,\r\n OfoCreditSummaryDto,\r\n OfoCreditSummaryPenalty\r\n} from \"@shared/services/flowing-gas/ofo-credit-report-service/ofo-credit-report.service\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {OfoCreditReportSearchParams} from \"app/gcts/flowinggas/ofo-credit-report/ofo-credit-report.model\";\r\nimport * as _ from \"lodash\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {CapabilitiesService} from \"@shared/services/webapp/capabilities/capabilities.service\";\r\nimport {UserService} from \"@shared/services/webapp/user/user-service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {InvoicingOfoCreditService, OfoCreditAppliedBillingMonthDto} from \"@shared/services/invoicing/invoicing-ofo-credits/invoicing-ofo-credits.service\";\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\n\r\n@Component({\r\n selector: 'app-ofo-credit-details-by-order',\r\n templateUrl: './ofo-credit-details-by-order.component.html',\r\n styleUrls: ['./ofo-credit-details-by-order.component.css']\r\n})\r\n\r\nexport class OfoCreditDetailsByOrderComponent extends BaseComponent {\r\n\r\n @Input() showFilterSection: boolean;\r\n public lastSearchParams: OfoCreditReportSearchParams = null;\r\n public searchResults: OfoCreditSummaryDto[] = null;\r\n public orderPenalties: OfoCreditSummaryPenalty[] = null;\r\n public orderCredits: OfoCreditSummaryDetail[] = null;\r\n public orderPenaltiesTmp: OfoCreditSummaryPenalty[] = null;\r\n public orderCreditsTmp: OfoCreditSummaryDetail[] = null;\r\n public invoicedBillingMonth: string = \"\";\r\n public userHasEditCapability: boolean = false;\r\n\r\n public appliedBillingMonth: GasMonth;\r\n public openBillingMonth: GasMonth;\r\n public isBillingYearOpen: boolean = false;\r\n\r\n public showPenaltiesSection: boolean = true;\r\n public showCreditsSection: boolean = true;\r\n\r\n public isEditing: boolean = false;\r\n public hasValidationErrors: boolean = false;\r\n\r\n @ViewChild(DxDataGridComponent)\r\n dataGrid: DxDataGridComponent;\r\n\r\n constructor(\r\n protected appService: AppService,\r\n private alertService: AlertService,\r\n private ofoCreditReportService: OfoCreditReportService,\r\n private enterpriseEnrichmentService: EnterpriseEnrichmentService,\r\n private commonDataEnterpriseService: EnterpriseService,\r\n private commonDataBillingMonthService: CommonDataBillingMonthService,\r\n private invoicingOfoCreditService: InvoicingOfoCreditService,\r\n private capabilitiesService: CapabilitiesService,\r\n private userService: UserService,\r\n private sessionService: SessionService,\r\n ) {\r\n super(appService);\r\n\r\n enterpriseEnrichmentService.setEnrichmentResource(commonDataEnterpriseService);\r\n }\r\n\r\n public togglePenaltiesSection() {\r\n this.showPenaltiesSection = !this.showPenaltiesSection;\r\n }\r\n\r\n public toggleCreditsSection() {\r\n this.showCreditsSection = !this.showCreditsSection;\r\n }\r\n\r\n public performReset() : void {\r\n this.invoicedBillingMonth = \"\";\r\n this.lastSearchParams = null;\r\n this.searchResults = null;\r\n this.orderPenalties = null;\r\n this.orderCredits = null;\r\n }\r\n\r\n public canEdit(): boolean {\r\n return this.userHasEditCapability && this.isBillingYearOpen;\r\n }\r\n\r\n public getEditButtonToolTip(): string {\r\n return this.userHasEditCapability\r\n ? this.isBillingYearOpen ? \"Edit Expense\" : \"Selected billing year is already invoiced\"\r\n : \"Not authorized to Edit\";\r\n }\r\n\r\n public editExpenseClicked(cellInfo: any): void {\r\n this.isEditing = true;\r\n this.hasValidationErrors = false;\r\n cellInfo.component.editRow(cellInfo.rowIndex);\r\n }\r\n\r\n public cancelEditClicked(cellInfo: any): void {\r\n this.clearEditMode(cellInfo.data);\r\n }\r\n\r\n public saveClicked(cellInfo: any): void {\r\n if (!this.hasValidationErrors) {\r\n const creditSummary = cellInfo.row.data as OfoCreditSummaryDto;\r\n this.alertService.clearMessages();\r\n this.dataGrid.instance.saveEditData().then(() => {\r\n this.ofoCreditReportService\r\n .updateOfoCreditSummary(this.lastSearchParams.billingYear, creditSummary.id, creditSummary.ofoExpense)\r\n .pipe(\r\n concatMap(() => {\r\n this.isEditing = false;\r\n return this.performSearch(this.lastSearchParams);\r\n })\r\n )\r\n .subscribe(\r\n () => {},\r\n error => {cellInfo.component.editRow(cellInfo.rowIndex);}\r\n );\r\n });\r\n }\r\n }\r\n\r\n public onRowValidating($event: any): void {\r\n if ($event.brokenRules.length > 0) {\r\n this.hasValidationErrors = true;\r\n return;\r\n }\r\n\r\n this.hasValidationErrors = false;\r\n }\r\n\r\n private clearEditMode(rowData: any): void {\r\n rowData.isEditing = false;\r\n this.isEditing = false;\r\n this.hasValidationErrors = false;\r\n this.performSearch(this.lastSearchParams).subscribe(() => {\r\n });\r\n }\r\n\r\n onEditorPrepared($event: any) {\r\n if ($event.parentType === 'dataRow') {\r\n let dxEditorInstance = null;\r\n switch ($event.dataField) {\r\n case \"ofoExpense\":\r\n dxEditorInstance = dx($event.editorElement).dxNumberBox('instance');\r\n break;\r\n }\r\n if (dxEditorInstance) {\r\n dxEditorInstance.option('valueChangeEvent', 'keydown keyup');\r\n dxEditorInstance.on('valueChanged', (vce) => {\r\n $event.setValue(vce.value);\r\n $event.component.getController('validating').validate();\r\n });\r\n }\r\n }\r\n }\r\n\r\n public performSearch(searchParams: OfoCreditReportSearchParams): Observable {\r\n\r\n if (!searchParams.isDetailsByOrderType()) {\r\n this.performReset();\r\n return of(this.searchResults);\r\n }\r\n\r\n this.userHasEditCapability = this.capabilitiesService.hasCapabilities([\"OfoCreditDetailByOrderReport-Write\"], this.userService.user, this.sessionService.getPipeline().code);\r\n\r\n this.invoicedBillingMonth = \"\";\r\n this.isBillingYearOpen = false;\r\n this.lastSearchParams = _.clone(searchParams);\r\n\r\n const queryAppliedBillingMonth$ = this.getAppliedBillingMonth();\r\n const queryOpenBillingMonth$ = this.getOpenBillingMonth();\r\n const queryOfoCreditSummary$ = this.ofoCreditReportService.queryOfoCreditSummary(searchParams.billingYear, searchParams.ofoReferenceId)\r\n .pipe(\r\n tap(result => {\r\n this.searchResults = [];\r\n this.orderPenaltiesTmp = [];\r\n this.orderCreditsTmp = [];\r\n if (!_.isNil(result)) {\r\n this.searchResults.push(result);\r\n result.penalties.forEach((p) => this.orderPenaltiesTmp.push(p));\r\n result.creditDetails.forEach((c) => this.orderCreditsTmp.push(c));\r\n this.invoicedBillingMonth = result.invoicedBillingMonth;\r\n }\r\n }),\r\n concatMap(() => {\r\n return forkJoin([\r\n this.enterpriseEnrichmentService.enrichArray(this.orderPenaltiesTmp, 'enterpriseId', 'enterprise'),\r\n this.enterpriseEnrichmentService.enrichArray(this.orderCreditsTmp, 'enterpriseId', 'enterprise')\r\n ]);\r\n }),\r\n tap(() => {\r\n // Assign after enrichment completes so that initial grid sorting works\r\n this.orderPenalties = this.orderPenaltiesTmp;\r\n this.orderCredits = this.orderCreditsTmp;\r\n })\r\n );\r\n\r\n return forkJoin([queryAppliedBillingMonth$, queryOpenBillingMonth$, queryOfoCreditSummary$])\r\n .pipe(\r\n tap( () => {\r\n this.isBillingYearOpen = (_.isNil(this.appliedBillingMonth) || this.appliedBillingMonth.isEqual(this.openBillingMonth));\r\n })\r\n );\r\n }\r\n\r\n private getAppliedBillingMonth(): Observable {\r\n return this.invoicingOfoCreditService.getAppliedBillingMonthForCreditYear(this.lastSearchParams.billingYear)\r\n .pipe(\r\n tap(month => {\r\n this.appliedBillingMonth = (!_.isNil(month)) ? month.appliedBillingMonth : null;\r\n })\r\n );\r\n }\r\n\r\n private getOpenBillingMonth(): Observable {\r\n return this.commonDataBillingMonthService.getOpen()\r\n .pipe(\r\n tap(openBillingMonth => this.openBillingMonth = openBillingMonth.gasMonth)\r\n );\r\n }\r\n\r\n}\r\n","import {Directive, Input} from \"@angular/core\";\r\nimport {AbstractControl, NG_VALIDATORS, ValidationErrors, Validator} from \"@angular/forms\";\r\nimport * as _ from \"lodash\";\r\n\r\n@Directive({\r\n selector: '[appNumberMinValue]',\r\n providers: [{provide: NG_VALIDATORS, useExisting: NumberMinValueValidatorDirective, multi: true}]\r\n})\r\nexport class NumberMinValueValidatorDirective implements Validator {\r\n @Input('appNumberMinValue') minValue: number = undefined;\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n if (_.isNil(control.value) || _.isNil(this.minValue)) return null;\r\n return (control.value < this.minValue) ? {minValue: {value: control.value, minValue: this.minValue}} : null;\r\n }\r\n}\r\n","import {Directive, Input} from \"@angular/core\";\r\nimport {AbstractControl, NG_VALIDATORS, ValidationErrors, Validator} from \"@angular/forms\";\r\nimport * as _ from \"lodash\";\r\n\r\n@Directive({\r\n selector: '[appNumberMaxValue]',\r\n providers: [{provide: NG_VALIDATORS, useExisting: NumberMaxValueValidatorDirective, multi: true}]\r\n})\r\nexport class NumberMaxValueValidatorDirective implements Validator {\r\n @Input('appNumberMaxValue') maxValue: number = undefined;\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n if (_.isNil(control.value) || _.isNil(this.maxValue)) return null;\r\n return (control.value > this.maxValue) ? {maxValue: {value: control.value, maxValue: this.maxValue}} : null;\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Report Type: {{model.lastSearchParams?.reportType}}\r\n Billing Year: {{model.lastSearchParams?.billingYear}}\r\n \r\n Start Gas Day: {{model.lastSearchParams?.startGasDay | gasDayFormat}}\r\n End Gas Day: {{model.lastSearchParams?.endGasDay | gasDayFormat}}\r\n Order Reference: {{model.lastSearchParams?.ofoReferenceId}}\r\n \r\n \r\n Customer: {{model.lastSearchParams?.enterpriseId}}\r\n \r\n \r\n Order Reference: {{model.lastSearchParams?.ofoReferenceId}}\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
Hint: for OFOOrderSI-000125, Input 125
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
Hint: for OFOOrderSI-000125, Input 125
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n
\r\n
\r\n","import {Component, ViewChild} from \"@angular/core\";\r\nimport {forkJoin, Observable, of} from \"rxjs\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {CapabilitiesService} from \"@shared/services/webapp/capabilities/capabilities.service\";\r\nimport {UserService} from \"@shared/services/webapp/user/user-service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {OfoCreditReportModel, OfoCreditReportSearchParams} from \"app/gcts/flowinggas/ofo-credit-report/ofo-credit-report.model\";\r\nimport {BillingYear, OfoCreditReportType} from \"app/gcts/flowinggas/ofo-credit-report/ofo-credit-report-type\";\r\nimport * as _ from \"lodash\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {Enterprise, EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {AccountsCustomerSearchParams, AccountsEnterpriseService} from \"@shared/services/accounts/accounts-enterprise/accounts-enterprise.service\";\r\nimport {BusinessRight} from \"@model/business-right\";\r\nimport {concatMap, tap} from \"rxjs/operators\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport {BillingProcessStatus} from \"@model/billing-process-status\";\r\nimport {NominationPipeline} from \"@model/nomination-pipeline\";\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {CommonDataGasdayService} from \"@shared/services/common-data/common-data-gasday/common-data-gasday.service\";\r\nimport {NominationPipelineService} from \"@shared/services/nomination/nomination-pipeline/nomination-pipeline.service\";\r\nimport {NominationSystemService} from \"@shared/services/nomination/nomination-system/nomination-system.service\";\r\nimport {OfoCreditReportService} from \"@shared/services/flowing-gas/ofo-credit-report-service/ofo-credit-report.service\";\r\nimport {OfoCreditSummaryComponent} from \"app/gcts/flowinggas/ofo-credit-report/ofo-credit-summary/ofo-credit-summary.component\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {BillingProcess, FlowingGasAllocationAndBalancingBillingProcessService} from \"@shared/services/flowing-gas/flowing-gas-allocation-and-balancing-billing-process/flowing-gas-allocation-and-balancing-billing-process.service\";\r\nimport {OfoCreditDetailsByShipperComponent} from \"app/gcts/flowinggas/ofo-credit-report/ofo-credit-details-by-shipper/ofo-credit-details-by-shipper.component\";\r\nimport {InvoicingOfoCreditService} from \"@shared/services/invoicing/invoicing-ofo-credits/invoicing-ofo-credits.service\";\r\nimport {OfoCreditDetailsByOrderComponent} from \"app/gcts/flowinggas/ofo-credit-report/ofo-credit-details-by-order/ofo-credit-details-by-order.component\";\r\n\r\n@Component({\r\n selector: 'app-ofo-credit-report',\r\n templateUrl: './ofo-credit-report.component.html',\r\n styleUrls: ['./ofo-credit-report.component.css']\r\n})\r\nexport class OfoCreditReportComponent extends BaseSearchComponent {\r\n\r\n private static PARAM_REPORT_TYPE: string = 'reportType';\r\n private static PARAM_START_GAS_DAY: string = 'startGasDay';\r\n private static PARAM_END_GAS_DAY: string = 'endGasDay';\r\n private static PARAM_BILLING_YEAR: string = 'billingYear';\r\n private static PARAM_OFO_REFERENCE_ID: string = 'ofoOrderReferenceId';\r\n private static PARAM_ENTERPRISE_ID: string = 'customerId';\r\n\r\n private creditChargesExportHeaders = ['Billing Month', 'Affected Month', 'Nom Group', 'Adj Type', 'Receipt', 'Delivery', 'Qty Type', 'Quantity (GJ)', 'Tax (%)', 'Toll Cdn ($)', 'Total Chg ($)', 'Additional Comments'];\r\n private creditChargesExportColumns = ['billingMonth', 'affectedMonth', 'nominationGroup', 'adjustmentType', 'receiptLocation', 'deliveryLocation', 'quantityType', 'quantity', 'taxPct', 'tollCdn', 'totalChange', 'additionalComment'];\r\n\r\n public model: OfoCreditReportModel = new OfoCreditReportModel();\r\n\r\n @ViewChild(OfoCreditSummaryComponent) creditSummaries: OfoCreditSummaryComponent;\r\n @ViewChild(OfoCreditDetailsByShipperComponent) creditDetailsByShipper: OfoCreditDetailsByShipperComponent;\r\n @ViewChild(OfoCreditDetailsByOrderComponent) creditDetailsByOrder: OfoCreditDetailsByOrderComponent;\r\n\r\n constructor(protected appService: AppService,\r\n protected activatedRoute: ActivatedRoute,\r\n protected router: Router,\r\n protected alertService: AlertService,\r\n private capabilitiesService: CapabilitiesService,\r\n private userService: UserService,\r\n private sessionService: SessionService,\r\n private accountsEnterpriseService: AccountsEnterpriseService,\r\n private enterpriseEnrichmentService: EnterpriseEnrichmentService,\r\n private commonDataBillingMonthService: CommonDataBillingMonthService,\r\n private commonDataGasDayService: CommonDataGasdayService,\r\n private nominationPipelineService: NominationPipelineService,\r\n private nominationSystemService: NominationSystemService,\r\n private commonDataEnterpriseService: EnterpriseService,\r\n private ofoCreditReportService: OfoCreditReportService,\r\n private flowingGasAllocationAndBalancingBillingProcessService: FlowingGasAllocationAndBalancingBillingProcessService,\r\n private fileService: FileService,\r\n private invoicingOfoCreditService: InvoicingOfoCreditService\r\n ) {\r\n super('OFO Credit', appService, activatedRoute, router, alertService);\r\n enterpriseEnrichmentService.setEnrichmentResource(commonDataEnterpriseService);\r\n\r\n this.appService.hideMenu();\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n const paramValidator = ParamValidator.Standard();\r\n\r\n paramValidator.isOneOf(OfoCreditReportComponent.PARAM_REPORT_TYPE, _.map(OfoCreditReportType.ALL, x => x.value));\r\n\r\n if (!paramValidator.isValid(params)) return false;\r\n\r\n paramValidator.isNumber(OfoCreditReportComponent.PARAM_BILLING_YEAR);\r\n\r\n if(params[OfoCreditReportComponent.PARAM_REPORT_TYPE] === OfoCreditReportType.SUMMARY.value) {\r\n paramValidator.isNumber(OfoCreditReportComponent.PARAM_OFO_REFERENCE_ID, true);\r\n paramValidator.isGasDay(OfoCreditReportComponent.PARAM_START_GAS_DAY, true);\r\n paramValidator.isGasDay(OfoCreditReportComponent.PARAM_END_GAS_DAY, true);\r\n }\r\n\r\n if(params[OfoCreditReportComponent.PARAM_REPORT_TYPE] === OfoCreditReportType.DETAILS_BY_SHIPPER.value) {\r\n paramValidator.isNumber(OfoCreditReportComponent.PARAM_ENTERPRISE_ID, true);\r\n }\r\n\r\n return paramValidator.isValid(params);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {};\r\n params[OfoCreditReportComponent.PARAM_REPORT_TYPE] = this.model.searchParams.reportType;\r\n params[OfoCreditReportComponent.PARAM_BILLING_YEAR] = this.model.searchParams.billingYear;\r\n params[OfoCreditReportComponent.PARAM_OFO_REFERENCE_ID] = this.model.searchParams.ofoReferenceId;\r\n params[OfoCreditReportComponent.PARAM_START_GAS_DAY] = this.model.searchParams.startGasDay;\r\n params[OfoCreditReportComponent.PARAM_END_GAS_DAY] = this.model.searchParams.endGasDay;\r\n params[OfoCreditReportComponent.PARAM_ENTERPRISE_ID] = this.model.searchParams.enterpriseId;\r\n return params;\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams = new OfoCreditReportSearchParams();\r\n this.model.searchParams.reportType = OfoCreditReportType.SUMMARY.value;\r\n this.model.searchParams.billingYear = this.getDefaultBillingYear();\r\n this.model.lastSearchParams = null;\r\n this.creditSummaries.performReset();\r\n this.creditDetailsByShipper.performReset();\r\n this.creditDetailsByOrder.performReset();\r\n this.setMinMaxGasDay();\r\n }\r\n\r\n private getDefaultBillingYear() {\r\n if (this.model.currentYear === this.model.earliestBillingYear) {\r\n return this.model.currentYear;\r\n }\r\n return (_.isNil(this.model.appliedBillingMonth) || this.model.appliedBillingMonth.isEqual(this.model.openBillingMonth)) ? this.model.currentYear -1 : this.model.currentYear;\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams.reportType = typedParams.asString(OfoCreditReportComponent.PARAM_REPORT_TYPE);\r\n this.model.searchParams.billingYear = typedParams.asNumber(OfoCreditReportComponent.PARAM_BILLING_YEAR);\r\n this.model.searchParams.ofoReferenceId = typedParams.asNullableNumber(OfoCreditReportComponent.PARAM_OFO_REFERENCE_ID);\r\n this.model.searchParams.startGasDay = typedParams.asNullableGasDay(OfoCreditReportComponent.PARAM_START_GAS_DAY);\r\n this.model.searchParams.endGasDay = typedParams.asNullableGasDay(OfoCreditReportComponent.PARAM_END_GAS_DAY);\r\n this.model.searchParams.enterpriseId = typedParams.asNullableNumber(OfoCreditReportComponent.PARAM_ENTERPRISE_ID);\r\n this.setMinMaxGasDay();\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n this.model.reportTypes = [];\r\n if (this.capabilitiesService.hasCapabilities([\"OfoCreditSummaryReport-Read\"], this.userService.user, this.sessionService.getPipeline().code)) {\r\n this.model.reportTypes.push(OfoCreditReportType.SUMMARY);\r\n }\r\n if (this.capabilitiesService.hasCapabilities([\"OfoCreditDetailReport-Read\"], this.userService.user, this.sessionService.getPipeline().code)) {\r\n this.model.reportTypes.push(OfoCreditReportType.DETAILS_BY_SHIPPER);\r\n }\r\n this.model.canViewCreditReportByOrder = this.capabilitiesService.hasCapabilities([\"OfoCreditDetailByOrderReport-Read\"], this.userService.user, this.sessionService.getPipeline().code);\r\n if (this.model.canViewCreditReportByOrder) {\r\n this.model.reportTypes.push(OfoCreditReportType.DETAILS_BY_ORDER);\r\n }\r\n\r\n const queryPipelineService$ = this.queryPipelines();\r\n\r\n const gasDayRequest$ = this.nominationSystemService.pipelineGasDay()\r\n .pipe(\r\n tap(gasDay => this.model.currentYear = gasDay.actualGasDay.year)\r\n );\r\n\r\n const queryOldestBillingMonth$ = this.commonDataBillingMonthService.getOldest()\r\n .pipe(\r\n tap(oldestBillingMonth => this.model.earliestBillingYear = oldestBillingMonth.gasMonth.year)\r\n );\r\n\r\n const queryOpenBillingMonth$ = this.commonDataBillingMonthService.getOpen()\r\n .pipe(\r\n tap(openBillingMonth => this.model.openBillingMonth = openBillingMonth.gasMonth),\r\n // Also pull in allocation and balancing status for open billing month\r\n concatMap(() => this.flowingGasAllocationAndBalancingBillingProcessService.get(this.model.openBillingMonth)),\r\n tap(billingProcesses => this.setBillingProcessStatus(billingProcesses))\r\n );\r\n\r\n return forkJoin([queryPipelineService$, gasDayRequest$, queryOldestBillingMonth$, queryOpenBillingMonth$])\r\n .pipe(\r\n concatMap(() => this.getAppliedBillingMonth()\r\n .pipe(\r\n tap(() => this.setupBillingYears())\r\n )\r\n )\r\n );\r\n }\r\n\r\n private setBillingProcessStatus(billingProcesses: BillingProcess[]) {\r\n let status = '';\r\n if (billingProcesses && billingProcesses.length>0) {\r\n status = billingProcesses[0].status;\r\n }\r\n this.model.openBillingMonthAllocBalancingFinal = status === BillingProcessStatus[BillingProcessStatus.Final];\r\n }\r\n\r\n private setupBillingYears(): void {\r\n this.model.billingYears = [];\r\n const start = this.model.earliestBillingYear;\r\n const end = this.model.currentYear;\r\n for(let year = start; year <= end; year++) {\r\n this.model.billingYears.push(new BillingYear(year, year.toString()));\r\n }\r\n this.model.searchParams.billingYear = this.getDefaultBillingYear();\r\n }\r\n\r\n\r\n private queryPipelines(): Observable {\r\n return this.nominationPipelineService.get()\r\n .pipe(\r\n tap(pipelines => this.model.pipelines = pipelines)\r\n );\r\n }\r\n\r\n private getEnterprises(fromGasDay: GasDay, toGasDay: GasDay): Observable {\r\n const accountsCustomerSearchParams = AccountsCustomerSearchParams.withNomGroupBusinessRights([BusinessRight.CustodyTransfer], false);\r\n accountsCustomerSearchParams.fromGasDay = fromGasDay;\r\n accountsCustomerSearchParams.toGasDay = toGasDay;\r\n return this.accountsEnterpriseService.queryCustomers(accountsCustomerSearchParams)\r\n .pipe(\r\n concatMap(enterpriseIds => this.createAndEnrichEnterpriseIds(enterpriseIds)),\r\n tap(enterprises => this.model.customers = _.sortBy(enterprises, x => x.displayName))\r\n );\r\n }\r\n\r\n private createAndEnrichEnterpriseIds(enterpriseIds: number[]): Observable {\r\n const enterprises = _.map(enterpriseIds, enterpriseId => Enterprise.createWithId(enterpriseId));\r\n return this.enterpriseEnrichmentService.enrichArray(enterprises, 'cid');\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n return of(null);\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n\r\n const searchJobs = [\r\n this.creditSummaries.performSearch(this.model.lastSearchParams),\r\n this.creditDetailsByShipper.performSearch(this.model.lastSearchParams, this.model.customers),\r\n this.creditDetailsByOrder.performSearch(this.model.lastSearchParams)\r\n ];\r\n\r\n return forkJoin(searchJobs).pipe(\r\n concatMap((result) => {\r\n if (this.model.lastSearchParams.isDetailsByShipperType()) {\r\n return this.getAppliedBillingMonth();\r\n }\r\n return of(result);\r\n })\r\n );\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n public onOfoOrderReferenceChange(_$event: any): void {\r\n // When OfoOrderReference changes, clear search range dates\r\n this.model.searchParams.startGasDay = null;\r\n this.model.searchParams.endGasDay = null;\r\n }\r\n\r\n public onGasDayRangeChange(_$event: any): void {\r\n // When either end of the search range dates change, clear OfoOrderReference\r\n this.model.searchParams.ofoReferenceId = null;\r\n }\r\n\r\n public onBillingYearChanged(_$event): void {\r\n this.alertService.clearMessages();\r\n this.setMinMaxGasDay();\r\n this.updateCustomers();\r\n }\r\n\r\n public setMinMaxGasDay(): void {\r\n this.model.minGasDay = new GasDay(this.model.searchParams.billingYear, 1, 1);\r\n this.model.maxGasDay = new GasDay(this.model.searchParams.billingYear, 12, 31);\r\n }\r\n\r\n public onCustomerChanged(_$event): void {\r\n this.alertService.clearMessages();\r\n }\r\n\r\n public onReportTypeChanged(_$event): void {\r\n this.creditSummaries.performReset();\r\n this.creditDetailsByShipper.performReset();\r\n this.creditDetailsByOrder.performReset();\r\n this.model.lastSearchParams = null;\r\n this.updateCustomers();\r\n }\r\n\r\n private updateCustomers():void {\r\n if (this.model.searchParams.reportType === OfoCreditReportType.DETAILS_BY_SHIPPER.value) {\r\n this.getEnterprises(this.model.minGasDay, this.model.maxGasDay).subscribe(() => {});\r\n }\r\n }\r\n\r\n private getAppliedBillingMonth() {\r\n // always apply credits to invoices in the next year\r\n return this.invoicingOfoCreditService.getAppliedBillingMonthForCreditYear(this.model.openBillingMonth.year-1)\r\n .pipe(\r\n tap(month => {\r\n this.model.appliedBillingMonth = (!_.isNil(month)) ? month.appliedBillingMonth : null;\r\n })\r\n );\r\n }\r\n\r\n public enableExportChargesButton(): boolean {\r\n return this.model.searchParams.isDetailsByShipperType()\r\n && _.isNil(this.model.searchParams.enterpriseId) // only export charge for \"All\" customers\r\n && this.model.openBillingMonthAllocBalancingFinal\r\n && this.model.searchParams.billingYear === this.model.openBillingMonth.year - 1 // must be the year prior to the open month\r\n && (_.isNil(this.model.appliedBillingMonth) || this.model.appliedBillingMonth.isEqual(this.model.openBillingMonth))\r\n ;\r\n }\r\n\r\n public exportChargesClicked(): void {\r\n this.ofoCreditReportService.queryOfoCreditManualAdjustments(this.model.searchParams.billingYear)\r\n .subscribe(\r\n result => {\r\n const fileName = `OFO Credit Charges_${this.model.searchParams.billingYear}.csv`;\r\n this.fileService.downloadCsvFile(fileName, result, this.creditChargesExportHeaders, this.creditChargesExportColumns);\r\n this.alertService.addInfoMessage(\"Export\", `${fileName} exported`);\r\n }\r\n // HTTP intercept handles errors\r\n );\r\n }\r\n}\r\n","import {BaseViewModel} from \"@model/base-view-model\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {NppAdjustmentExportItem} from \"@shared/services/flowing-gas/npp-adjustment-export-service/npp-adjustment-export.service\";\r\n\r\nexport class NppAdjustmentExportModel extends BaseViewModel\r\n{\r\n public searchResults: NppAdjustmentExportItem[];\r\n public hasSearchResults: boolean;\r\n public csvLoading : boolean;\r\n public ofoPenaltyCount : number;\r\n public loadingMessage : string;\r\n\r\n // Billing Month\r\n public openBillingMonth: GasMonth;\r\n\r\n // gas day status limits\r\n public minGasDay: GasDay;\r\n public maxGasDay: GasDay;\r\n\r\n public searchParams: NppAdjustmentExportSearchParams = new NppAdjustmentExportSearchParams();\r\n public lastSearchParams: NppAdjustmentExportSearchParams;\r\n}\r\n\r\nexport class NppAdjustmentExportSearchParams\r\n{\r\n public startGasDay: GasDay;\r\n public endGasDay: GasDay;\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {Observable} from \"rxjs\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {FlowinggasResourceService} from \"@shared/resources/flowinggas-resource.service\";\r\n\r\n\r\nexport class NppAdjustmentExportItem\r\n{\r\n public gasDay: string;\r\n public originalNpp: number;\r\n public adjustedNpp: number;\r\n public shipperName: string;\r\n public shipperMnemonic: string;\r\n public orderReferenceId: string;\r\n public billableExcess: number;\r\n}\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NppAdjustmentExportService {\r\n constructor(protected flowingGasResource: FlowinggasResourceService) {\r\n }\r\n\r\n public queryNppAdjustmentExportData(startGasDay: GasDay, endGasDay: GasDay): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setGasDay(startGasDay, 'fromGasDay');\r\n params.setGasDay(endGasDay, 'toGasDay');\r\n\r\n return this.flowingGasResource.get('/nppAdjustmentExport', true, params);\r\n }\r\n}\r\n","\r\n\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n -\r\n +\r\n Filters\r\n\r\n \r\n :\r\n Start Gas Day: {{model.lastSearchParams?.startGasDay | gasDayFormat}}\r\n End Gas Day: {{model.lastSearchParams?.endGasDay | gasDayFormat}}\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.startGasDay | gasDayFormat}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.endGasDay | gasDayFormat}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n \r\n\r\n
\r\n
\r\n
\r\n 0\">Found ~{{ this.model.ofoPenaltyCount | number }} affected OFO penalties.
\r\n {{ this.model.loadingMessage }}\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n","import {Component} from \"@angular/core\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {forkJoin, Observable, of} from \"rxjs\";\r\nimport {concatMap, tap} from \"rxjs/operators\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {FlowingGasGasDayStatusService} from \"@shared/services/flowing-gas/flowing-gas-gas-day-status-service/flowing-gas-gas-day-status.service\";\r\nimport {NppAdjustmentExportItem, NppAdjustmentExportService} from \"@shared/services/flowing-gas/npp-adjustment-export-service/npp-adjustment-export.service\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {NppAdjustmentExportModel, NppAdjustmentExportSearchParams} from \"app/gcts/flowinggas/npp-adjustment-export/npp-adjustment-export.model\";\r\nimport * as _ from \"lodash\";\r\nimport {EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\n\r\n@Component({\r\n selector: \"app-npp-adjustment-export\",\r\n templateUrl: \"./npp-adjustment-export.component.html\",\r\n styles: []\r\n})\r\nexport class NppAdjustmentExportComponent extends BaseSearchComponent\r\n{\r\n private static PARAM_START_GAS_DAY: string = 'startGasDay';\r\n private static PARAM_END_GAS_DAY: string = 'endGasDay';\r\n private static CSV_FILE_HEADERS = ['Gas Day', 'Original NPP', 'Recalculated NPP', 'Shipper Name', 'Shipper Mnemonic', 'OFO Order Reference Id', 'Billable Excess'];\r\n private static CSV_FILE_COLUMNS = ['gasDay', 'originalNpp', 'adjustedNpp', 'shipperShortName', 'shipperMnemonic', 'orderReferenceId', 'billableExcess'];\r\n\r\n\r\n public model: NppAdjustmentExportModel = new NppAdjustmentExportModel();\r\n\r\n constructor(protected appService: AppService,\r\n protected activatedRoute: ActivatedRoute,\r\n protected router: Router,\r\n protected alertService: AlertService,\r\n private commonDataBillingMonthService: CommonDataBillingMonthService,\r\n private flowingGasGasDayStatusService: FlowingGasGasDayStatusService,\r\n private enterpriseService: EnterpriseService,\r\n private enterpriseEnrichmentService: EnterpriseEnrichmentService,\r\n private nppAdjustmentExportService: NppAdjustmentExportService,\r\n private fileService: FileService)\r\n {\r\n super('NPP Adjustment Export', appService, activatedRoute, router, alertService);\r\n enterpriseEnrichmentService.setEnrichmentResource(enterpriseService);\r\n }\r\n\r\n\r\n //#region \"manage parameters\"\r\n protected areParamsValid(params: Params): boolean {\r\n const paramValidator = ParamValidator.Standard();\r\n\r\n paramValidator.isGasDay(NppAdjustmentExportComponent.PARAM_START_GAS_DAY);\r\n paramValidator.isGasDay(NppAdjustmentExportComponent.PARAM_END_GAS_DAY);\r\n\r\n return paramValidator.isValid(params);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {};\r\n params[NppAdjustmentExportComponent.PARAM_START_GAS_DAY] = this.model.searchParams.startGasDay;\r\n params[NppAdjustmentExportComponent.PARAM_END_GAS_DAY] = this.model.searchParams.endGasDay;\r\n\r\n return params;\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams.startGasDay = this.model.openBillingMonth.start();\r\n this.model.searchParams.endGasDay = this.model.maxGasDay;\r\n this.model.lastSearchParams = null;\r\n this.model.hasSearchResults = false;\r\n this.model.csvLoading = false;\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams = new NppAdjustmentExportSearchParams();\r\n this.model.searchParams.startGasDay = typedParams.asGasDay(NppAdjustmentExportComponent.PARAM_START_GAS_DAY);\r\n this.model.searchParams.endGasDay = typedParams.asGasDay(NppAdjustmentExportComponent.PARAM_END_GAS_DAY);\r\n this.model.lastSearchParams = null;\r\n this.model.hasSearchResults = false;\r\n this.model.csvLoading = false;\r\n }\r\n //#endregion \"manage parameters\"\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n\r\n const getOpenBillingMonth$ = this.commonDataBillingMonthService.getOpen()\r\n .pipe(\r\n tap(openBillingMonth => this.model.openBillingMonth = openBillingMonth.gasMonth)\r\n );\r\n\r\n const getGasDayStatusRange$ = this.flowingGasGasDayStatusService.getGasDayRangeDefault()\r\n .pipe(\r\n tap(gasDayRange => {\r\n this.model.minGasDay = gasDayRange.start as GasDay;\r\n // default is the earliest preliminary day, we want the day before that\r\n this.model.maxGasDay = (gasDayRange.default as GasDay).previous();\r\n // quick sanity check\r\n if (this.model.maxGasDay < this.model.minGasDay) {\r\n this.model.maxGasDay = this.model.minGasDay;\r\n }\r\n })\r\n );\r\n\r\n return forkJoin([getOpenBillingMonth$, getGasDayStatusRange$]);\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n return of(null);\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n this.model.csvLoading = true;\r\n this.model.searchResults = null;\r\n this.model.hasSearchResults = false;\r\n this.model.ofoPenaltyCount = 0;\r\n this.model.loadingMessage = null;\r\n\r\n return this.nppAdjustmentExportService.queryNppAdjustmentExportData(this.model.lastSearchParams.startGasDay, this.model.lastSearchParams.endGasDay)\r\n .pipe(\r\n concatMap((exportItems) => this.enterpriseEnrichmentService.enrichArray(exportItems, 'shipperEnterpriseId', 'shipper')),\r\n tap((exportItems) => {\r\n this.model.hasSearchResults = true;\r\n this.model.searchResults = exportItems;\r\n this.model.ofoPenaltyCount = exportItems?.length;\r\n this.model.loadingMessage = \"Exporting OFO penalties affected by NPP adjustments\";\r\n this.saveNppAdjustmentExportItemsToCsv(exportItems);\r\n }));\r\n }\r\n\r\n private saveNppAdjustmentExportItemsToCsv(exportItems: NppAdjustmentExportItem[]) {\r\n exportItems.forEach(item =>\r\n item.gasDay = _.isNil(item.gasDay) ? null : GasDay.parse(item.gasDay).toCsvFormat()\r\n );\r\n\r\n const fileName = `NPP Adjustment Export_${this.model.lastSearchParams.startGasDay}_${this.model.lastSearchParams.endGasDay}.csv`;\r\n this.fileService.downloadCsvFile(\r\n fileName,\r\n _.orderBy(exportItems, ['gasDay', 'shipperShortName']),\r\n NppAdjustmentExportComponent.CSV_FILE_HEADERS,\r\n NppAdjustmentExportComponent.CSV_FILE_COLUMNS);\r\n }\r\n}\r\n","import {Route} from \"@angular/router\";\r\n\r\nimport {AuthorizationService} from \"@shared/services/webapp/authorization/authorization.service\";\r\n\r\nimport {PriorDayPendingActivitiesComponent} from \"./prior-day-pending-activities/prior-day-pending-activities.component\";\r\nimport {UniformHourlyFlowReportComponent} from \"app/gcts/flowinggas/uniform-hourly-flow-report/uniform-hourly-flow-report.component\";\r\nimport {AccountSummaryByLocationDailyReportComponent} from \"app/gcts/flowinggas/account-summary-by-location-daily-report/account-summary-by-location-daily-report.component\";\r\nimport {VolumeEnergyCompositionComponent} from \"app/gcts/flowinggas/volume-energy-composition/volume-energy-composition.component\";\r\nimport {TransportationAccountDetailComponent} from \"app/gcts/flowinggas/transportation-account-detail/transportation-account-detail.component\";\r\nimport {OverrideMakeupNominationsComponent} from \"app/gcts/flowinggas/override-makeup-nominations/override-makeup-nominations.component\";\r\nimport {ItPenaltiesComponent} from \"app/gcts/flowinggas/it-penalities/it-penalties.component\";\r\nimport {AccountSummaryByLocationMonthlyReportComponent} from \"app/gcts/flowinggas/account-summary-by-location-monthly-report/account-summary-by-location-monthly-report.component\";\r\nimport {ViewMeasurementComponent} from \"app/gcts/flowinggas/view-measurement/view-measurement.component\";\r\nimport {OperatorBalanceReportComponent} from \"app/gcts/flowinggas/operator-balance-report/operator-balance-report.component\";\r\nimport {PendingPriorPeriodAdjustmentComponent} from \"app/gcts/flowinggas/pending-prior-period-adjustment/pending-prior-period-adjustment.component\";\r\nimport {SystemBalanceComponent} from \"app/gcts/flowinggas/system-balance/system-balance.component\";\r\nimport {StorageTransportationBalanceReportComponent} from \"app/gcts/flowinggas/storage-transportation-balance-report/storage-transportation-balance-report.component\";\r\nimport {UnsavedChangesService} from \"@shared/services/webapp/unsaved-changes/unsaved-changes.service\";\r\nimport {ManualTransactionsComponent} from \"app/gcts/flowinggas/manual-transactions/manual-transactions.component\";\r\nimport {StatisticsCanadaDownloadComponent} from \"app/gcts/flowinggas/statistics-canada-download/statistics-canada-download.component\";\r\nimport {OutstandingBalanceExportComponent} from \"app/gcts/flowinggas/outstanding-balance-export/outstanding-balance-export.component\";\r\nimport {TransactionExportComponent} from \"app/gcts/flowinggas/transaction-export/transaction-export.component\";\r\nimport {BalancingFeesSummaryReportComponent} from \"app/gcts/flowinggas/balancing-fees-summary-report/balancing-fees-summary-report.component\";\r\nimport {StorageTransportationBalanceSummaryComponent} from \"app/gcts/flowinggas/storage-transportation-balance-summary/storage-transportation-balance-summary.component\";\r\nimport {StageMeasurementsComponent} from \"app/gcts/flowinggas/stage-measurement/stage-measurements.component\";\r\nimport {PdaInstructionsComponent} from \"app/gcts/flowinggas/pda-instructions/pda-instructions.component\";\r\nimport {FlowingGasMonitorComponent} from \"app/gcts/flowinggas/flowing-gas-monitor/flowing-gas-monitor.component\";\r\nimport {PdaInstructionEventHistoryComponent} from \"app/gcts/flowinggas/pda-instruction-event-history/pda-instruction-event-history.component\";\r\nimport {UploadPdaInstructionsComponent} from \"app/gcts/flowinggas/edi-test-harness/upload-pda-instructions/upload-pda-instructions.component\";\r\nimport {LocationImbalanceReportComponent} from \"app/gcts/flowinggas/location-imbalance-report/location-imbalance-report.component\";\r\nimport {ViewNppDataComponent} from \"app/gcts/flowinggas/view-npp-data/view-npp-data.component\";\r\nimport {TrendComplianceComponent} from \"app/gcts/flowinggas/trend-compliance/trend-compliance.component\";\r\nimport {OfoMaintenanceComponent} from \"app/gcts/flowinggas/ofo-maintenance/ofo-maintenance.component\";\r\nimport {OfoPenaltyReportComponent} from \"app/gcts/flowinggas/ofo-maintenance/ofo-penalty-report/ofo-penalty-report.component\";\r\nimport {OfoPenaltyOverrideComponent} from \"app/gcts/flowinggas/ofo-maintenance/ofo-penalty-override/ofo-penalty-override.component\";\r\nimport {OfoCreditReportComponent} from \"app/gcts/flowinggas/ofo-credit-report/ofo-credit-report.component\";\r\nimport {NppAdjustmentExportComponent} from \"app/gcts/flowinggas/npp-adjustment-export/npp-adjustment-export.component\";\r\n\r\nexport const FlowingGasRoutes: Route[] = [\r\n {\r\n path: 'priordaypendingactivities',\r\n component: PriorDayPendingActivitiesComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['PriorDayPendingActivities-Read']}\r\n },\r\n {\r\n path: 'makeupnominations',\r\n component: OverrideMakeupNominationsComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['MakeupNominations-Read']}\r\n },\r\n {\r\n path: 'reports/accountsummary',\r\n component: AccountSummaryByLocationDailyReportComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['AccountSummaryByLocationDaily-Read']}\r\n },\r\n {\r\n path: 'reports/volumeenergycomposition',\r\n component: VolumeEnergyCompositionComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['VolumeEnergyComposition-Read']}\r\n },\r\n {\r\n path: 'reports/transportationaccountdetail',\r\n component: TransportationAccountDetailComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['TransportationAccountDetail-Read']}\r\n },\r\n {\r\n path: 'reports/uniformHourlyFlow',\r\n component: UniformHourlyFlowReportComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['UniformHourlyFlow-Read']}\r\n },\r\n {\r\n path: 'itpenalties',\r\n component: ItPenaltiesComponent,\r\n canActivate: [AuthorizationService],\r\n canDeactivate: [UnsavedChangesService],\r\n data: {capabilities: ['ITPenalties-Read']}\r\n },\r\n {\r\n path: 'reports/accountsummary-monthly',\r\n component: AccountSummaryByLocationMonthlyReportComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['AccountSummaryByLocationMonthly-Read']}\r\n },\r\n {\r\n path: 'viewmeasurement',\r\n component: ViewMeasurementComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['ViewMeasurement-Read']}\r\n },\r\n {\r\n path: 'stagemeasurements',\r\n component: StageMeasurementsComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['StageMeasurements-Write']}\r\n },\r\n {\r\n path: 'reports/operatorbalancereport',\r\n component: OperatorBalanceReportComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['OperatorBalanceReport-Read']}\r\n },\r\n {\r\n path: 'pdainstructions',\r\n component: PdaInstructionsComponent,\r\n canActivate: [AuthorizationService],\r\n canDeactivate: [UnsavedChangesService],\r\n runGuardsAndResolvers: 'always',\r\n data: {capabilities: ['PdaInstructions-Read', 'PdaInstructions-Write']}\r\n },\r\n {\r\n path: 'pdainstructioneventhistory',\r\n component: PdaInstructionEventHistoryComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['PdaInstructions-EventHistory-Read']}\r\n },\r\n {\r\n path: 'ediTestHarness/uploadPdaInstructions',\r\n component: UploadPdaInstructionsComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['PdaInstructions-Write']}\r\n },\r\n {\r\n path: 'pendingpriorperiodadjustment',\r\n component: PendingPriorPeriodAdjustmentComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['PendingPriorPeriodAdjustment-Read']}\r\n },\r\n {\r\n path: 'systembalance',\r\n component: SystemBalanceComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['SystemBalance-Read']}\r\n },\r\n {\r\n path: 'reports/storagetransportationbalance',\r\n component: StorageTransportationBalanceReportComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['StorageTransportationBalance-Read']}\r\n },\r\n {\r\n path: 'manualtransactions',\r\n component: ManualTransactionsComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['ManualTransactions-Read']}\r\n },\r\n {\r\n path: 'statisticscanadadownload',\r\n component: StatisticsCanadaDownloadComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['StatisticsCanadaDownload-Read']}\r\n },\r\n {\r\n path: 'outstandingbalanceexport',\r\n component: OutstandingBalanceExportComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['OutstandingBalanceExport-Read']}\r\n },\r\n {\r\n path: 'transactionexport',\r\n component: TransactionExportComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['TransactionExport-Read']}\r\n },\r\n {\r\n path: 'reports/balancingFeesReport',\r\n component: BalancingFeesSummaryReportComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['BalancingFeesSummaryReport-Read']}\r\n },\r\n {\r\n path: 'reports/stsbalancesummary',\r\n component: StorageTransportationBalanceSummaryComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['StsBalanceSummary-Read']}\r\n },\r\n {\r\n path: 'flowinggasmonitor',\r\n component: FlowingGasMonitorComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['FlowingGasActivityMessage-Read']}\r\n },\r\n {\r\n path: 'reports/locationimbalancereport',\r\n component: LocationImbalanceReportComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['LocationImbalanceReport-Read']}\r\n },\r\n {\r\n path: 'viewnppdata',\r\n component: ViewNppDataComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['NppData-Read']}\r\n },\r\n {\r\n path: 'reports/nppadjustmentexport',\r\n component: NppAdjustmentExportComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['NppAdjustmentExport-Read']}\r\n },\r\n {\r\n path: 'trendcompliance',\r\n component: TrendComplianceComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['TrendComplianceReport-Read']}\r\n },\r\n {\r\n path: 'ofomaintenance',\r\n component: OfoMaintenanceComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['OfoMaintenance-Read', 'OfoMaintenance-Write']}\r\n },\r\n {\r\n path: 'ofopenaltyreport',\r\n component: OfoPenaltyReportComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['OfoPenaltyReport-Internal-Read', 'OfoPenaltyReport-External-Read']}\r\n },\r\n {\r\n path: 'ofopenaltyoverride',\r\n component: OfoPenaltyOverrideComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['OfoPenaltyOverride-Write']}\r\n },\r\n {\r\n path: 'reports/ofocreditreport',\r\n component: OfoCreditReportComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['OfoCreditSummaryReport-Read', 'OfoCreditDetailReport-Read', 'OfoCreditExportCharges-Read', 'OfoCreditDetailByOrderReport-Read']}\r\n }\r\n];\r\n","import {BillingMonth} from \"@model/billing-month\";\r\nimport {InvoiceBillingProcess, InvoiceProcessStatus} from \"@shared/services/invoicing/invoicing-invoice-billing-process/invoicing-invoice-billing-process.service\";\r\nimport {AccountingProcessStatus} from \"@shared/services/invoicing/invoice-accounting-status/invoice-accounting-status.service\";\r\nimport {OfoCreditAppliedBillingMonthDto} from \"@shared/services/invoicing/invoicing-ofo-credits/invoicing-ofo-credits.service\";\r\n\r\nexport class InvoiceMonitorModel {\r\n pipelineCode: string;\r\n hasWriteCapability: boolean;\r\n\r\n isCgl: boolean;\r\n openBillingMonthLaterThanFirstYear: boolean = true;\r\n ofoCreditAppliedBillingMonth: OfoCreditAppliedBillingMonthDto;\r\n ofoCreditAppliedThisMonth: boolean;\r\n ofoCreditAppliedInOtherMonth: boolean;\r\n ofoCreditAppliedInOtherMonthMsg: string = \"\";\r\n\r\n showApplyOfoCredits: boolean = false;\r\n showAppliedOfoCredits: boolean = false;\r\n\r\n oldestBillingYear: number;\r\n openBillingMonth: BillingMonth;\r\n invoiceBillingProcess: InvoiceBillingProcess;\r\n invoiceProcessStatus: InvoiceProcessStatus;\r\n accountingProcessStatus: AccountingProcessStatus;\r\n\r\n loadCompleted: boolean = false;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {Observable} from \"rxjs\";\r\nimport {InvoicingResourceService} from \"app/shared/resources/invoicing-resource.service\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\n\r\nexport class AccountingProcessStatus {\r\n status: string;\r\n}\r\n\r\n@Injectable()\r\nexport class InvoiceAccountingStatusService {\r\n\r\n constructor(private invoicingResource: InvoicingResourceService) { }\r\n\r\n get(gasMonth: GasMonth): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('gasMonth', gasMonth.toDisplayFormat());\r\n\r\n return this.invoicingResource.get('/accountingStatus', true, params);\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
   {{model.openBillingMonth?.gasMonth | gasMonthFormat}}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n {{model.invoiceBillingProcess?.isManualChargesComplete === true ? 'Complete' : 'Incomplete'}}\r\n \r\n \r\n {{model.invoiceBillingProcess?.isManualChargesComplete === true ? 'Complete' : 'Incomplete'}}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n Not Required\r\n
\r\n
\r\n {{model.ofoCreditAppliedInOtherMonthMsg}}\r\n
\r\n
\r\n Apply\r\n \r\n
\r\n
\r\n Applied\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n {{model.invoiceProcessStatus?.generateChargesStatus}}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n {{model.invoiceProcessStatus?.publishStatus}}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n {{model.invoiceBillingProcess?.isInvoicePrintingComplete === true ? 'Complete' : 'Incomplete'}}\r\n \r\n\r\n \r\n {{model.invoiceBillingProcess?.isInvoicePrintingComplete === true ? 'Complete' : 'Incomplete'}}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.invoiceBillingProcess?.status}}\r\n
\r\n
\r\n \r\n {{!model.invoiceBillingProcess || model.invoiceBillingProcess?.status === 'UnFinal' ? 'UnFinalized' : 'Finalized'}}\r\n \r\n\r\n \r\n {{!model.invoiceBillingProcess || model.invoiceBillingProcess?.status === 'UnFinal' ? 'UnFinalized' : 'Finalized'}}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n {{model.accountingProcessStatus?.status}}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n {{model.openBillingMonth?.status?.name}}\r\n \r\n\r\n \r\n {{model.openBillingMonth?.status?.name}}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n","import * as _ from 'lodash';\r\nimport {Component} from '@angular/core';\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {forkJoin, Observable, of} from \"rxjs\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {concatMap, tap} from \"rxjs/operators\";\r\nimport {InvoiceMonitorModel} from \"app/gcts/invoicing/invoice-monitor/invoice-monitor.model\";\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {InvoiceBillingProcessRequest, InvoicingInvoiceBillingProcessService} from \"@shared/services/invoicing/invoicing-invoice-billing-process/invoicing-invoice-billing-process.service\";\r\nimport {InvoiceAccountingStatusService} from \"@shared/services/invoicing/invoice-accounting-status/invoice-accounting-status.service\";\r\nimport {YesNoModalOptions} from \"@shared/services/webapp/modal-options/yes-no-modal-options\";\r\nimport {YesNoCancelModalService} from \"@shared/services/webapp/yes-no-cancel-modal/yes-no-cancel-modal.service\";\r\nimport {SelectedModalOption} from \"@shared/services/webapp/modal-options/selected-modal-option\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {JobService} from \"@shared/services/job-scheduling/jobs/job.service\";\r\nimport {CapabilitiesService} from \"@shared/services/webapp/capabilities/capabilities.service\";\r\nimport {UserService} from \"@shared/services/webapp/user/user-service\";\r\nimport {PipelineSettingMapService} from \"@shared/services/nomination/pipeline-settings-map/pipeline-setting-map.service\";\r\nimport {InvoicingOfoCreditService, OfoCreditAppliedBillingMonthDto} from \"@shared/services/invoicing/invoicing-ofo-credits/invoicing-ofo-credits.service\";\r\nimport {OfoCreditReportService, OfoCreditSummaryUpdateRequest} from \"@shared/services/flowing-gas/ofo-credit-report-service/ofo-credit-report.service\";\r\n\r\n@Component({\r\n selector: 'app-invoice-monitor',\r\n templateUrl: './invoice-monitor.component.html',\r\n styleUrls: ['./invoice-monitor.component.css']\r\n})\r\nexport class InvoiceMonitorComponent extends BaseSearchComponent {\r\n model: InvoiceMonitorModel = new InvoiceMonitorModel();\r\n\r\n\r\n constructor(\r\n appService: AppService,\r\n activatedRoute: ActivatedRoute,\r\n router: Router,\r\n protected alertService: AlertService,\r\n protected sessionService: SessionService,\r\n protected userService: UserService,\r\n protected capabilitiesService: CapabilitiesService,\r\n protected commonDataBillingMonthService: CommonDataBillingMonthService,\r\n protected invoicingInvoiceBillingProcessService: InvoicingInvoiceBillingProcessService,\r\n protected invoiceAccountingStatusService: InvoiceAccountingStatusService,\r\n protected jobService: JobService,\r\n protected yesNoCancelModalService: YesNoCancelModalService,\r\n protected pipelineSettingMapService: PipelineSettingMapService,\r\n protected invoicingOfoCreditService: InvoicingOfoCreditService,\r\n protected ofoCreditReportService: OfoCreditReportService) {\r\n super('Invoice Monitor', appService, activatedRoute, router, alertService);\r\n\r\n this.model.pipelineCode = sessionService.getPipeline().code;\r\n this.model.hasWriteCapability = this.capabilitiesService.hasCapabilities(['InvoiceMonitor-Write'], this.userService.user, this.sessionService.getPipeline().code);\r\n this.model.isCgl = this.pipelineSettingMapService.isCgl(this.sessionService.getPipeline().code);\r\n }\r\n\r\n public manualAdjustmentClicked(): void {\r\n this.alertService.clearMessages();\r\n\r\n const convertedStatus = this.model.invoiceBillingProcess?.isManualChargesComplete !== true;\r\n const invoiceBillingProcessRequest = new InvoiceBillingProcessRequest();\r\n invoiceBillingProcessRequest.gasMonth = this.model.openBillingMonth.gasMonth.toString();\r\n invoiceBillingProcessRequest.manualChargesComplete = convertedStatus.toString();\r\n invoiceBillingProcessRequest.version = (_.isNil(this.model.invoiceBillingProcess?.version) ? 1 : this.model.invoiceBillingProcess?.version).toString();\r\n\r\n this.updateBillingProcessStatus(invoiceBillingProcessRequest);\r\n }\r\n\r\n public printInvoicesClicked(): void {\r\n this.alertService.clearMessages();\r\n\r\n const convertedStatus = this.model.invoiceBillingProcess?.isInvoicePrintingComplete !== true;\r\n const invoiceBillingProcessRequest = new InvoiceBillingProcessRequest();\r\n invoiceBillingProcessRequest.gasMonth = this.model.openBillingMonth.gasMonth.toString();\r\n invoiceBillingProcessRequest.invoicePrintingComplete = convertedStatus.toString();\r\n invoiceBillingProcessRequest.version = (_.isNil(this.model.invoiceBillingProcess?.version) ? 1 : this.model.invoiceBillingProcess?.version).toString();\r\n\r\n this.updateBillingProcessStatus(invoiceBillingProcessRequest);\r\n }\r\n\r\n public finalizeInvoicePeriodClicked(): void {\r\n this.alertService.clearMessages();\r\n\r\n const convertedStatus = this.model.invoiceBillingProcess?.status === 'Final' ? 'UnFinal' : 'Final';\r\n const invoiceBillingProcessRequest = new InvoiceBillingProcessRequest();\r\n invoiceBillingProcessRequest.gasMonth = this.model.openBillingMonth.gasMonth.toString();\r\n invoiceBillingProcessRequest.status = convertedStatus;\r\n invoiceBillingProcessRequest.version = (_.isNil(this.model.invoiceBillingProcess?.version) ? 1 : this.model.invoiceBillingProcess?.version).toString();\r\n\r\n this.updateBillingProcessStatus(invoiceBillingProcessRequest);\r\n }\r\n\r\n public closeBillingMonthClicked(): void {\r\n this.alertService.clearMessages();\r\n\r\n const yesNoModalOptions = new YesNoModalOptions('Close Billing Month', 'Are you sure you want to close the billing month?', 'Cancel', 'Close Billing Month');\r\n\r\n this.yesNoCancelModalService.show(yesNoModalOptions)\r\n .subscribe((selectedModalOption: SelectedModalOption) => {\r\n if(selectedModalOption === SelectedModalOption.Yes) {\r\n this.commonDataBillingMonthService.close(this.model.openBillingMonth)\r\n .pipe(\r\n concatMap(() => this.loadSearchResources())\r\n )\r\n .subscribe(() => {});\r\n }\r\n });\r\n }\r\n\r\n public syncDataClicked(): void {\r\n this.alertService.clearMessages();\r\n\r\n this.jobService.submitJob('Contracts', 'SyncDataJob')\r\n .subscribe(() => {\r\n this.alertService.addSuccessMessage('Submit Successful', 'Sync Data request submitted. For job status information, please see View Job History.');\r\n });\r\n }\r\n\r\n public priorDayAdjustmentClicked(): void {\r\n this.alertService.clearMessages();\r\n\r\n this.jobService.submitJob('AfterFlow', 'ProcessPriorDayAdjustmentsJob')\r\n .subscribe(() => {\r\n this.alertService.addSuccessMessage('Submit Successful', 'Prior Day Adjustments Without Syncs request submitted. For job status information, please see View Job History.');\r\n });\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n return of({}); // Do Nothing\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return false; // Always Return False\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n // Do Nothing\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n // Do Nothing\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n return this.commonDataBillingMonthService.getOpen()\r\n .pipe(\r\n tap(openBillingMonth => this.model.openBillingMonth = openBillingMonth),\r\n concatMap(() => {\r\n const getOldestBillingMonth$ = this.commonDataBillingMonthService.getOldest()\r\n .pipe(tap(oldestBillingMonth => {\r\n this.model.oldestBillingYear = oldestBillingMonth.gasMonth.year;\r\n this.model.openBillingMonthLaterThanFirstYear = this.model.openBillingMonth.gasMonth.year !== this.model.oldestBillingYear;\r\n }));\r\n\r\n const getInvoiceBillingProcess$ = this.invoicingInvoiceBillingProcessService.get(this.model.openBillingMonth.gasMonth)\r\n .pipe(\r\n tap(invoiceBillingProcess => this.model.invoiceBillingProcess = invoiceBillingProcess)\r\n );\r\n\r\n const getInvoiceProcessStatus$ = this.invoicingInvoiceBillingProcessService.getInvoiceProcessStatus(this.model.openBillingMonth.gasMonth)\r\n .pipe(\r\n tap(invoiceProcessStatus => this.model.invoiceProcessStatus = invoiceProcessStatus)\r\n );\r\n\r\n const getInvoiceAccountingStatus$ = this.invoiceAccountingStatusService.get(this.model.openBillingMonth.gasMonth)\r\n .pipe(\r\n tap(accountingProcessStatus => this.model.accountingProcessStatus = accountingProcessStatus)\r\n );\r\n\r\n // Only get OfoCreditAppliedBillingMonth for CGL.\r\n if (this.pipelineSettingMapService.isCgl(this.model.pipelineCode)) {\r\n const getOfoCreditAppliedBillingMonth$ = this.invoicingOfoCreditService.get(this.model.openBillingMonth.gasMonth)\r\n .pipe(\r\n tap((appliedBillingMonth: OfoCreditAppliedBillingMonthDto) => {\r\n this.model.ofoCreditAppliedBillingMonth = appliedBillingMonth;\r\n this.model.ofoCreditAppliedThisMonth = false;\r\n if (!_.isNil(appliedBillingMonth)) {\r\n this.model.ofoCreditAppliedInOtherMonthMsg = \"\";\r\n this.model.ofoCreditAppliedInOtherMonth = false;\r\n\r\n if (!this.model.openBillingMonth.gasMonth.isEqual(appliedBillingMonth.appliedBillingMonth)) {\r\n this.model.ofoCreditAppliedInOtherMonth = true;\r\n this.model.ofoCreditAppliedInOtherMonthMsg = `Applied ${appliedBillingMonth.appliedBillingMonth}`;\r\n }\r\n else {\r\n this.model.ofoCreditAppliedThisMonth = true;\r\n }\r\n }\r\n this.model.showApplyOfoCredits = this.model.openBillingMonthLaterThanFirstYear &&\r\n !this.model.ofoCreditAppliedThisMonth &&\r\n !this.model.ofoCreditAppliedInOtherMonth;\r\n\r\n this.model.showAppliedOfoCredits = this.model.openBillingMonthLaterThanFirstYear &&\r\n this.model.ofoCreditAppliedThisMonth;\r\n })\r\n );\r\n\r\n return forkJoin([getOldestBillingMonth$, getInvoiceBillingProcess$, getInvoiceProcessStatus$, getInvoiceAccountingStatus$, getOfoCreditAppliedBillingMonth$])\r\n .pipe(\r\n tap(() => this.model.loadCompleted = true) // Prevent's Flickering of States when first loading the component\r\n );\r\n }\r\n\r\n return forkJoin([getOldestBillingMonth$, getInvoiceBillingProcess$, getInvoiceProcessStatus$, getInvoiceAccountingStatus$])\r\n .pipe(\r\n tap(() => this.model.loadCompleted = true) // Prevent's Flickering of States when first loading the component\r\n );\r\n })\r\n );\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n // Do Nothing\r\n }\r\n\r\n protected performSearch(): Observable {\r\n return of({}); // Do Nothing\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n private updateBillingProcessStatus(invoiceBillingProcessRequest: InvoiceBillingProcessRequest): void {\r\n this.invoicingInvoiceBillingProcessService.update(invoiceBillingProcessRequest)\r\n .pipe(\r\n concatMap(() => this.loadSearchResources())\r\n )\r\n .subscribe(() => {});\r\n }\r\n\r\n protected ofoCreditApplyClicked(): void {\r\n this.alertService.clearMessages();\r\n if (!this.model.invoiceBillingProcess?.isManualChargesComplete) {\r\n this.alertService.addErrorMessage(\"Error\", \"Cannot apply OFO Credit until Manual Adjustments complete\");\r\n return;\r\n }\r\n const addAppliedBillingMonth$ = this.invoicingOfoCreditService.postAppliedBillingMonth(this.model.openBillingMonth.gasMonth);\r\n\r\n forkJoin([addAppliedBillingMonth$, this.applyInvoiceBillingMonthUpdate$(false)])\r\n .pipe(\r\n concatMap(() => this.loadSearchResources())\r\n )\r\n .subscribe(() => {});\r\n }\r\n\r\n protected ofoCreditApplyResetClicked(): void {\r\n this.alertService.clearMessages();\r\n const deleteAppliedBillingMonth$ = this.invoicingOfoCreditService.deleteAppliedBillingMonth(this.model.ofoCreditAppliedBillingMonth.appliedBillingMonth, this.model.ofoCreditAppliedBillingMonth.id)\r\n\r\n forkJoin([deleteAppliedBillingMonth$, this.applyInvoiceBillingMonthUpdate$(true)])\r\n .pipe(\r\n concatMap(() => this.loadSearchResources())\r\n )\r\n .subscribe(() => {});\r\n }\r\n\r\n protected applyInvoiceBillingMonthUpdate$(clear: boolean) : Observable {\r\n const updateRequest : OfoCreditSummaryUpdateRequest = {\r\n clearInvoiceBillingMonth : clear,\r\n openBillingMonth : this.model.openBillingMonth.gasMonth.toDisplayFormat()\r\n };\r\n return this.ofoCreditReportService.update(updateRequest);\r\n }\r\n}\r\n","import {BaseViewModel} from \"@model/base-view-model\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {Enterprise} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {RunReportAsType} from \"@shared/classes/run-report-as-type\";\r\nimport {SimpleNominationGroup} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport {PalsBillingDetailReportRow} from \"@shared/services/invoicing/pals-billing-detail-report/pals-billing-detail-report.service\";\r\nimport {InvoiceGroup} from \"@shared/services/contracts/invoice-group/invoice-group.service\";\r\nimport {InvoiceBillingProcess} from \"@shared/services/invoicing/invoicing-invoice-billing-process/invoicing-invoice-billing-process.service\";\r\nimport {NominationPipeline} from \"@model/nomination-pipeline\";\r\n\r\nexport class PalsBillingDetailReportModel extends BaseViewModel {\r\n pipelines: NominationPipeline[];\r\n\r\n openBillingMonth: GasMonth;\r\n minBillingMonth: GasMonth;\r\n maxBillingMonth: GasMonth;\r\n\r\n invoiceBillingProcess: InvoiceBillingProcess;\r\n invoiceRecipients: Enterprise[];\r\n runReportAsTypes: RunReportAsType[] = RunReportAsType.ALL;\r\n invoiceGroups: InvoiceGroup[];\r\n simpleNominationGroups: SimpleNominationGroup[] = [];\r\n filteredNominationGroups: SimpleNominationGroup[] = [];\r\n\r\n searchParams: PalsBillingDetailReportSearchParams = new PalsBillingDetailReportSearchParams();\r\n lastSearchParams: PalsBillingDetailReportSearchParams;\r\n\r\n searchResults: PalsBillingDetailReportRow[];\r\n timeOfLastSearch: Date;\r\n\r\n userIsInternal: boolean;\r\n\r\n // MR this is normally done when Nomination Agent is selected\r\n invoiceGroupDisabled: boolean = false;\r\n\r\n // MR garbage parameters that have been injected to prevent unexpected behaviour\r\n priorBillingMonth: GasMonth;\r\n\r\n\r\n public hasSearchResults(): boolean {\r\n return !!this.searchResults;\r\n }\r\n\r\n public isCustomerSelected(): boolean {\r\n return (!!this.searchParams.enterpriseId);\r\n }\r\n\r\n public clearSearchResults(): void {\r\n this.searchResults = null;\r\n }\r\n}\r\n\r\nexport class PalsBillingDetailReportSearchParams {\r\n billingMonth: GasMonth;\r\n enterpriseId?: number;\r\n\r\n runReportAsType: string = RunReportAsType.NOM_GROUP_OWNER.id;\r\n invoiceGroup?: number;\r\n nominationGroupIds: number[];\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {Observable} from \"rxjs\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {HttpResponse} from \"@angular/common/http\";\r\nimport {map} from \"rxjs/operators\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {ContractsResourceService} from \"@shared/resources/contracts-resource.service\";\r\nimport {RunReportAsType} from \"@model/run-report-as-type\";\r\n\r\n@Injectable()\r\nexport class PalsBillingDetailReportService {\r\n constructor(private accountsResource: ContractsResourceService) { }\r\n\r\n queryPalsBillingDetailReportPdf(searchParams: PalsBillingDetailReportRequest): Observable> {\r\n return this.accountsResource.getData('/palsBillingDetailReport/pdf', true, this.buildUrlSearchParams(searchParams, true));\r\n }\r\n\r\n queryPalsBillingDetailReport(searchParams: PalsBillingDetailReportRequest): Observable {\r\n return this.accountsResource.get('/palsBillingDetailReport', true, this.buildUrlSearchParams(searchParams))\r\n .pipe(\r\n map(dtos => dtos.map(dto => PalsBillingDetailReportRow.create(dto)))\r\n );\r\n }\r\n\r\n private buildUrlSearchParams(searchParams: PalsBillingDetailReportRequest, forPdfRequest: boolean = false): GCTSHttpParams {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('pipelineSystem',searchParams.pipelineSystem);\r\n params.setGasMonth(searchParams.gasMonth, 'gasMonth');\r\n params.setOptionalListOfNumbers('nominationGroupIds', searchParams.nominationGroupIds);\r\n\r\n if(!forPdfRequest) {\r\n params.set('runReportAs', searchParams.runReportAs.id);\r\n } else {\r\n params.setOptionalNumber('customerId', searchParams.customerId);\r\n params.setOptionalNumber('invoiceGroupId', searchParams.invoiceGroupId);\r\n params.set('runReportAs', searchParams.runReportAs.value); // PDF uses display value\r\n params.setBoolean('download', true);\r\n }\r\n\r\n return params;\r\n }\r\n}\r\n\r\nexport class PalsBillingDetailReportRequest {\r\n pipelineSystem: string;\r\n gasMonth: GasMonth;\r\n customerId?: number;\r\n invoiceGroupId?: number\r\n runReportAs: RunReportAsType;\r\n nominationGroupIds: number[];\r\n}\r\n\r\nexport class IPalsBillingDetailReportRow {\r\n invoiceGroupId: string;\r\n nomGroupId: string;\r\n nominationGroupMnemonic: string;\r\n nominationGroupOwnerId: string;\r\n nominationGroupOwnerEnterpriseMnemonic: string;\r\n locationId: string;\r\n locationName: string;\r\n contractNumber: string;\r\n transactionType: string;\r\n toll: string;\r\n quantity: string;\r\n contractStart: string;\r\n contractEnd: string;\r\n}\r\n\r\nexport class PalsBillingDetailReportRow {\r\n invoiceGroupId: number;\r\n nomGroupId: number;\r\n nominationGroupMnemonic: string;\r\n nominationGroupOwnerId: number;\r\n nominationGroupOwnerEnterpriseMnemonic: string;\r\n locationId: number;\r\n locationName: string;\r\n contractNumber: number;\r\n transactionType: string;\r\n toll: number;\r\n quantity: number;\r\n contractStart: GasDay;\r\n contractEnd: GasDay;\r\n\r\n public static create(dto: any): PalsBillingDetailReportRow {\r\n const palsBillingDetailReportRow = new PalsBillingDetailReportRow();\r\n palsBillingDetailReportRow.invoiceGroupId = dto.invoiceGroupId;\r\n palsBillingDetailReportRow.nomGroupId = dto.nomGroupId;\r\n palsBillingDetailReportRow.locationId = dto.locationId;\r\n palsBillingDetailReportRow.contractNumber = dto.contractNumber;\r\n palsBillingDetailReportRow.transactionType = dto.transactionType;\r\n palsBillingDetailReportRow.toll = dto.toll;\r\n palsBillingDetailReportRow.quantity = dto.quantity;\r\n palsBillingDetailReportRow.contractStart = GasDay.parse(dto.contractStart);\r\n palsBillingDetailReportRow.contractEnd = GasDay.parse(dto.contractEnd);\r\n\r\n return palsBillingDetailReportRow;\r\n }\r\n\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {InvoicingResourceService} from \"app/shared/resources/invoicing-resource.service\";\r\nimport {Observable} from \"rxjs\";\r\nimport * as _ from \"lodash\";\r\nimport {map, tap} from \"rxjs/operators\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {Enterprise, IEnterpriseResponse} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {AccountsCustomerSearchParams} from \"@shared/services/accounts/accounts-enterprise/accounts-enterprise.service\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class InvoiceRecipientService {\r\n\r\n constructor(private invoicingResource: InvoicingResourceService) {\r\n }\r\n\r\n public queryInvoiceRecipientsForBillingMonthRange(startBillingMonth: GasMonth, endBillingMonth: GasMonth): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n if(!_.isNil(startBillingMonth)) {\r\n params.set('startBillingMonth', startBillingMonth.toDisplayFormat());\r\n }\r\n if(!_.isNil(endBillingMonth)) {\r\n params.set('endBillingMonth', endBillingMonth.toDisplayFormat());\r\n }\r\n\r\n return this.invoicingResource.get('/invoicePackages/invoiceRecipients', true, params);\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'numberOrAllFormat'\r\n})\r\nexport class NumberOrAllFormatPipe implements PipeTransform {\r\n transform(value: number, showBlankIfValueIsZero: boolean = false, useLocalFormat: boolean = true): string {\r\n\r\n if ((value === undefined || value === null)) {\r\n return \"All\";\r\n }\r\n if ((value === undefined || value === null) || (showBlankIfValueIsZero && value === 0)) {\r\n return \"\";\r\n }\r\n\r\n if (useLocalFormat) {\r\n return value.toLocaleString('en');\r\n } else {\r\n return value.toString();\r\n }\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n\r\n\r\n
\r\n \r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Billing Month: {{model.lastSearchParams?.billingMonth | gasMonthFormat}}\r\n Customer: {{model.lastSearchParams?.enterpriseId | displayName: 'cid' : 'displayName' : model.invoiceRecipients}}\r\n Run Report As: {{model.lastSearchParams?.runReportAsType | displayName: 'id' : 'value' : model.runReportAsTypes}}\r\n Invoice Group: {{model.lastSearchParams?.invoiceGroup | numberOrAllFormat: false: false }}\r\n Nom Group: {{model.lastSearchParams?.nominationGroupIds | displayName: 'id' : 'mnemonic' : model.simpleNominationGroups}}\r\n \r\n
\r\n\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.billingMonth | gasMonthFormat}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.invoiceBillingProcess?.status === 'Final' ? 'Final' : 'Preliminary'}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.enterpriseId | displayName: 'cid' : 'displayName' : model.invoiceRecipients}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.runReportAsType | displayName: 'id' : 'value' : model.runReportAsTypes}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.invoiceGroup | numberOrAllFormat: false: false }}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.nominationGroupIds | displayName: 'id' : 'mnemonic' : model.simpleNominationGroups}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n\r\n\r\n
\r\n
\r\n\r\n
\r\n Number of records found: {{model.searchResults.length}}\r\n AS OF {{model.timeOfLastSearch | dateFormat:'YYYY-MMM-DD H:mm:ss A'}}\r\n
0\" class=\"pull-right\">\r\n Export CSV\r\n \r\n | Export PDF\r\n \r\n
\r\n
\r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {{ data.value | gasDayFormat }}\r\n
\r\n \r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\r\n
\r\n","import {Component} from \"@angular/core\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {forkJoin, Observable, of} from \"rxjs\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {PalsBillingDetailReportModel, PalsBillingDetailReportSearchParams} from \"app/gcts/invoicing/pals-billing-detail-report/pals-billing-detail-report.model\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport {concatMap, tap} from \"rxjs/operators\";\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {InvoiceRecipientService} from \"@shared/services/invoicing/invoice-recipient/invoice-recipient.service\";\r\nimport {Enterprise, EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport * as _ from \"lodash\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {InvoiceGroup, InvoiceGroupService} from \"@shared/services/contracts/invoice-group/invoice-group.service\";\r\nimport {NominationGroupService, QuerySimpleNomGroupsSearchParams, SimpleNominationGroup} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport {RunReportAsType} from \"@model/run-report-as-type\";\r\nimport {BusinessRight} from \"@model/business-right\";\r\nimport {PalsBillingDetailReportRequest, PalsBillingDetailReportRow, PalsBillingDetailReportService} from \"@shared/services/invoicing/pals-billing-detail-report/pals-billing-detail-report.service\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {LocationEnrichmentService} from \"@shared/services/enrichment/location-enrichment.service\";\r\nimport {LocationService} from \"@shared/services/common-data/location/location.service\";\r\nimport {NomGroupEnrichmentService} from \"@shared/services/enrichment/nomgroup-enrichment.service\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {UserService} from \"@shared/services/webapp/user/user-service\";\r\nimport {CommonDataGasdayService, ServerTimeData} from \"@shared/services/common-data/common-data-gasday/common-data-gasday.service\";\r\nimport {InvoiceBillingProcess, InvoicingInvoiceBillingProcessService} from \"@shared/services/invoicing/invoicing-invoice-billing-process/invoicing-invoice-billing-process.service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {NominationPipelineService} from \"@shared/services/nomination/nomination-pipeline/nomination-pipeline.service\";\r\nimport {NominationPipeline} from \"@model/nomination-pipeline\";\r\n\r\n@Component({\r\n selector: 'app-pals-billing-detail-report',\r\n templateUrl: './pals-billing-detail-report.component.html',\r\n styleUrls: ['./pals-billing-detail-report.component.css']\r\n})\r\nexport class PalsBillingDetailReportComponent extends BaseSearchComponent {\r\n private static readonly PARAM_BILLING_MONTH: string = 'billingMonth';\r\n private static readonly PARAM_ENTERPRISE_ID: string = 'enterpriseId';\r\n private static readonly PARAM_RUN_REPORT_AS_TYPE: string = 'runReportAsType';\r\n private static readonly PARAM_INVOICE_GROUP: string = 'invoiceGroup';\r\n private static readonly PARAM_NOMINATION_GROUP_IDS: string = 'nominationGroupIds';\r\n\r\n\r\n public model: PalsBillingDetailReportModel = new PalsBillingDetailReportModel();\r\n\r\n constructor(protected appService: AppService,\r\n activatedRoute: ActivatedRoute,\r\n router: Router,\r\n protected alertService: AlertService,\r\n private commonDataBillingMonthService: CommonDataBillingMonthService,\r\n private enterpriseEnrichmentService: EnterpriseEnrichmentService,\r\n private commonDataEnterpriseService: EnterpriseService,\r\n private invoiceRecipientService: InvoiceRecipientService,\r\n private nominationGroupService: NominationGroupService,\r\n private fileService: FileService,\r\n protected userService: UserService,\r\n private sessionService: SessionService,\r\n private commonDataGasDayService: CommonDataGasdayService,\r\n private invoiceBillingProcessService: InvoicingInvoiceBillingProcessService,\r\n private palsBillingDetailReportService: PalsBillingDetailReportService,\r\n private locationEnrichmentService: LocationEnrichmentService,\r\n private commonDataLocationService: LocationService,\r\n private nominationGroupEnrichmentService: NomGroupEnrichmentService,\r\n private nominationPipelineService: NominationPipelineService\r\n ) {\r\n super('PALS Billing Detail Report', appService, activatedRoute, router, alertService);\r\n enterpriseEnrichmentService.setEnrichmentResource(commonDataEnterpriseService);\r\n locationEnrichmentService.setEnrichmentResource(commonDataLocationService);\r\n nominationGroupEnrichmentService.setEnrichmentResource(nominationGroupService);\r\n\r\n this.appService.hideMenu();\r\n }\r\n\r\n /**\r\n * Public Methods\r\n */\r\n\r\n public isSearchEnabled(): boolean{\r\n if (!_.isNil(this.model.searchParams.enterpriseId) && (this.model.filteredNominationGroups.length >0)) {\r\n return true;\r\n }\r\n if (_.isNil(this.model.searchParams.enterpriseId) && this.model.userIsInternal){\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n public isCustomerSelected(): boolean {\r\n return !this.model.searchParams.enterpriseId;\r\n }\r\n public isInvoiceGroupDisabled(): boolean {\r\n return !this.model.searchParams.enterpriseId || this.model.invoiceGroupDisabled;\r\n }\r\n\r\n public onGasMonthChanged(): void{\r\n this.alertService.clearMessages();\r\n\r\n // MR it appears this is called on search ... no clue why\r\n // gonna add a prior billing month that gets set at the bottom of the method\r\n // and checked at the top to bypass the search params being set back to default on search..\r\n if(_.isNil(this.model.priorBillingMonth) || this.model.priorBillingMonth.toCidDisplayFormat() !== this.model.searchParams.billingMonth.toCidDisplayFormat()){\r\n\r\n }else{\r\n return;\r\n }\r\n const temporarilyStoreGasMonth = this.model.searchParams.billingMonth;\r\n this.setDefaultSearchParams();\r\n this.model.searchParams.billingMonth = temporarilyStoreGasMonth;\r\n this.getBillingProcessStatus().subscribe();\r\n this.model.priorBillingMonth = this.model.searchParams.billingMonth;\r\n if(this.userService.user.isExternalUser){\r\n this.queryEnterprises().subscribe();\r\n this.model.searchParams.enterpriseId = this.model.invoiceRecipients[0].cid; // MR should not be required\r\n this.onCustomerChanged();\r\n }\r\n }\r\n\r\n public onCustomerChanged(): void {\r\n this.alertService.clearMessages();\r\n\r\n // If no enterprise is selected, then default run report type back to nom group owner\r\n if(!this.model.searchParams.enterpriseId) {\r\n this.model.searchParams.runReportAsType = RunReportAsType.NOM_GROUP_OWNER.id;\r\n }\r\n\r\n this.model.searchParams.nominationGroupIds=[];\r\n this.model.searchParams.invoiceGroup=null;\r\n if(_.isNil(this.model.searchParams.enterpriseId)) {\r\n }else{\r\n this.querySimpleNomGroups().subscribe();\r\n }\r\n }\r\n\r\n public onRunAsReportChanged(): void{\r\n this.alertService.clearMessages();\r\n\r\n this.model.invoiceGroupDisabled=(this.model.searchParams.runReportAsType===RunReportAsType.NOMINATION_AGENT.id);\r\n this.applyRunReportAsFilterToNomGroups();\r\n }\r\n\r\n public onInvoiceGroupChanged(): void {\r\n this.alertService.clearMessages();\r\n\r\n this.model.searchParams.nominationGroupIds=[];\r\n if(this.model.isCustomerSelected()) {\r\n this.model.simpleNominationGroups=[];\r\n this.querySimpleNomGroups().subscribe();\r\n }\r\n }\r\n\r\n public exportCsvClicked() {\r\n const csvData = [];\r\n\r\n this.model.searchResults.forEach(row => {\r\n csvData.push({\r\n invoiceGroupId: row.invoiceGroupId,\r\n nominationGroupMnemonic: row.nominationGroupMnemonic,\r\n nominationGroupOwnerEnterpriseMnemonic: row.nominationGroupOwnerEnterpriseMnemonic,\r\n locationName: row.locationName,\r\n contractNumber: row.contractNumber,\r\n transactionType: row.transactionType,\r\n toll: row.toll.toFixed(5),\r\n quantity: row.quantity,\r\n contractStart: row.contractStart.toDisplayFormat(),\r\n contractEnd: row.contractEnd.toDisplayFormat()\r\n });\r\n });\r\n\r\n const filename = this.getTitle() + ' ' + this.model.searchParams.billingMonth.toDisplayFormat() + '.csv';\r\n const headers = ['Invoice Group',\t'Nomination Group',\t'Nomination Group Owner',\t'Location',\t'Contract Number',\t'Contract Type',\t'Toll',\t'Quantity (GJ)',\t'Contract Start Gas Day',\t'Contract End Gas Day'];\r\n const columns = ['invoiceGroupId', 'nominationGroupMnemonic','nominationGroupOwnerEnterpriseMnemonic', 'locationName', 'contractNumber', 'transactionType', 'toll','quantity','contractStart','contractEnd'];\r\n this.fileService.downloadCsvFile(filename, csvData, headers, columns);\r\n }\r\n\r\n public exportPdfClicked(): void {\r\n this.alertService.clearMessages();\r\n\r\n this.palsBillingDetailReportService\r\n .queryPalsBillingDetailReportPdf(this.getSearchParams(this.model.lastSearchParams))\r\n .subscribe(data => this.savePdfFile(data));\r\n }\r\n\r\n /**\r\n * Protected Methods\r\n */\r\n\r\n protected loadInitialResources(): Observable {\r\n const queryPipelineService$ = this.queryPipelines();\r\n const queryOpenBillingMonth$ = this.queryOpenBillingMonth();\r\n const queryOldestBillingMonth$ = this.queryOldestBillingMonth();\r\n\r\n this.model.userIsInternal = !this.userService.user.isExternalUser;\r\n if(this.userService.user.isExternalUser){\r\n this.model.searchParams.enterpriseId = Number(this.userService.user.enterpriseId);\r\n }\r\n\r\n return forkJoin([queryPipelineService$, queryOpenBillingMonth$, queryOldestBillingMonth$]);\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n const paramValidator = ParamValidator.Standard();\r\n\r\n paramValidator.isGasMonth(PalsBillingDetailReportComponent.PARAM_BILLING_MONTH);\r\n paramValidator.isNumber(PalsBillingDetailReportComponent.PARAM_ENTERPRISE_ID, true);\r\n paramValidator.isOneOf(PalsBillingDetailReportComponent.PARAM_RUN_REPORT_AS_TYPE, _.map(RunReportAsType.ALL, x => x.id), true);\r\n paramValidator.isNumber(PalsBillingDetailReportComponent.PARAM_INVOICE_GROUP, true);\r\n\r\n return paramValidator.isValid(params);\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams = new PalsBillingDetailReportSearchParams();\r\n this.model.clearSearchResults();\r\n this.model.searchParams.billingMonth = this.model.maxBillingMonth;\r\n }\r\n\r\n protected resetCompleted(): void {\r\n this.model.lastSearchParams = null;\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams = new PalsBillingDetailReportSearchParams();\r\n this.model.searchParams.billingMonth = typedParams.asGasMonth(PalsBillingDetailReportComponent.PARAM_BILLING_MONTH);\r\n this.model.searchParams.enterpriseId = typedParams.asNullableNumber(PalsBillingDetailReportComponent.PARAM_ENTERPRISE_ID);\r\n this.model.searchParams.runReportAsType = typedParams.asString(PalsBillingDetailReportComponent.PARAM_RUN_REPORT_AS_TYPE);\r\n this.model.searchParams.invoiceGroup = typedParams.asNullableNumber(PalsBillingDetailReportComponent.PARAM_INVOICE_GROUP);\r\n this.model.searchParams.nominationGroupIds = typedParams.asListOfNumbers(PalsBillingDetailReportComponent.PARAM_NOMINATION_GROUP_IDS);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {};\r\n params[PalsBillingDetailReportComponent.PARAM_BILLING_MONTH] = this.model.searchParams.billingMonth;\r\n params[PalsBillingDetailReportComponent.PARAM_ENTERPRISE_ID] = this.model.searchParams.enterpriseId;\r\n params[PalsBillingDetailReportComponent.PARAM_RUN_REPORT_AS_TYPE] = this.model.searchParams.runReportAsType;\r\n params[PalsBillingDetailReportComponent.PARAM_INVOICE_GROUP] = this.model.searchParams.invoiceGroup;\r\n params[PalsBillingDetailReportComponent.PARAM_NOMINATION_GROUP_IDS] = this.model.searchParams.nominationGroupIds;\r\n return params;\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n const queryBillingProcessStatus$ = this.getBillingProcessStatus();\r\n const queryEnterprises$ = this.queryEnterprises();\r\n\r\n return forkJoin([queryBillingProcessStatus$, queryEnterprises$])\r\n .pipe(\r\n tap(() => this.adjustFormIfUserIsAnExternalUser())\r\n );\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n\r\n const getPALsBillingDetailRows$ = this.getPALsBillingDetailRows();\r\n const queryServerTimeData$ = this.queryServerTimeData();\r\n\r\n return forkJoin([getPALsBillingDetailRows$, queryServerTimeData$]);\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n /**\r\n * Private Methods\r\n */\r\n\r\n private queryServerTimeData(): Observable {\r\n return this.commonDataGasDayService.getServerTimeData()\r\n .pipe(\r\n tap(serverTimes => this.model.timeOfLastSearch = serverTimes.serverTime.toDate())\r\n );\r\n }\r\n\r\n private getBillingProcessStatus(): Observable{\r\n return this.invoiceBillingProcessService.get(this.model.searchParams.billingMonth)\r\n .pipe(\r\n tap(invoiceBillingProcess => this.model.invoiceBillingProcess = invoiceBillingProcess)\r\n );\r\n }\r\n\r\n private queryPipelines(): Observable {\r\n return this.nominationPipelineService.get()\r\n .pipe(\r\n tap(pipelines => this.model.pipelines = pipelines)\r\n );\r\n }\r\n\r\n private queryOpenBillingMonth(): Observable {\r\n return this.commonDataBillingMonthService.getOpen()\r\n .pipe(\r\n tap(billingMonth => this.model.maxBillingMonth = billingMonth.gasMonth)\r\n );\r\n }\r\n\r\n private queryOldestBillingMonth(): Observable {\r\n return this.commonDataBillingMonthService.getOldest()\r\n .pipe(\r\n tap(billingMonth => this.model.minBillingMonth = billingMonth.gasMonth)\r\n );\r\n }\r\n\r\n private queryEnterprises(): Observable {\r\n // MR changed this to just get the customers for the selected billing month, don't see the point in getting customers for min - max months also\r\n const queryInvoiceRecipients$ = !this.userService.user.isExternalUser\r\n ? this.invoiceRecipientService.queryInvoiceRecipientsForBillingMonthRange(this.model.searchParams.billingMonth, this.model.searchParams.billingMonth)\r\n : of([Number(this.userService.user.enterpriseId)]);\r\n\r\n return queryInvoiceRecipients$\r\n .pipe(\r\n concatMap(enterpriseIds => this.createAndEnrichEnterpriseIds(enterpriseIds)),\r\n tap(enterprises => this.model.invoiceRecipients = _.sortBy(enterprises, enterprise => enterprise.displayValue))\r\n );\r\n }\r\n\r\n public querySimpleNomGroups(): Observable{\r\n const requestParams : QuerySimpleNomGroupsSearchParams = new QuerySimpleNomGroupsSearchParams(\r\n this.model.searchParams.billingMonth,\r\n this.model.searchParams.enterpriseId,\r\n RunReportAsType.find(this.model.searchParams.runReportAsType),\r\n [BusinessRight.ParkAndLoan]\r\n );\r\n\r\n return this.nominationGroupService.querySimpleNomGroups(requestParams)\r\n .pipe(\r\n tap( nomgroups => {\r\n this.alertService.clearMessages();\r\n\r\n this.model.simpleNominationGroups = nomgroups;\r\n this.deriveInvoiceGroupsFromNomGroups(nomgroups);\r\n this.applyRunReportAsFilterToNomGroups();\r\n\r\n if (this.model.isCustomerSelected() && _.isEmpty(this.model.simpleNominationGroups) && !_.isEmpty(this.model.invoiceRecipients)) {\r\n const enterprise = _.find(this.model.invoiceRecipients, x => x.cid === this.model.searchParams.enterpriseId);\r\n const runReportAsType = RunReportAsType.find(this.model.searchParams.runReportAsType);\r\n\r\n const message = `Nomination Groups of type PAL were not found for '${enterprise.displayValue}' as a '${runReportAsType.value}' for '${this.model.searchParams.billingMonth.toDisplayFormat()}'`;\r\n this.alertService.addWarnMessage(\"Warning\", message);\r\n }\r\n })\r\n );\r\n }\r\n\r\n private deriveInvoiceGroupsFromNomGroups(nomGroups: SimpleNominationGroup[]): void {\r\n this.model.invoiceGroups = _.uniqBy(_.map(nomGroups, x => {\r\n const invoiceGroup = new InvoiceGroup();\r\n invoiceGroup.id = x.invoiceGroupId;\r\n return invoiceGroup;\r\n }), ig => ig.id);\r\n\r\n if (this.model.invoiceGroups.length === 1) {\r\n this.model.searchParams.invoiceGroup = this.model.invoiceGroups[0].id;\r\n }\r\n }\r\n\r\n private applyRunReportAsFilterToNomGroups(): void {\r\n if (this.model.searchParams.runReportAsType === RunReportAsType.INVOICE_RECIPIENT.id) {\r\n if (_.isNil(this.model.searchParams.invoiceGroup)) {\r\n this.model.filteredNominationGroups = this.model.simpleNominationGroups;\r\n } else {\r\n this.model.filteredNominationGroups = _.filter(this.model.simpleNominationGroups, {invoiceGroupId: this.model.searchParams.invoiceGroup});\r\n }\r\n } else if (this.model.searchParams.runReportAsType === RunReportAsType.NOM_GROUP_OWNER.id) {\r\n this.model.filteredNominationGroups = _.filter(this.model.simpleNominationGroups, {nominationOwnerEnterpriseId: this.model.searchParams.enterpriseId});\r\n } else if (this.model.searchParams.runReportAsType === RunReportAsType.NOMINATION_AGENT.id) {\r\n this.model.filteredNominationGroups = _.filter(this.model.simpleNominationGroups, {nominationAgentEnterpriseId: this.model.searchParams.enterpriseId});\r\n }\r\n if (this.model.filteredNominationGroups.length === 1) {\r\n this.model.searchParams.nominationGroupIds = [this.model.filteredNominationGroups[0].id];\r\n }\r\n }\r\n\r\n private createAndEnrichEnterpriseIds(enterpriseIds: number[]): Observable {\r\n const enterprises = _.map(enterpriseIds, enterpriseId => Enterprise.createWithId(enterpriseId));\r\n return this.enterpriseEnrichmentService.enrichArray(enterprises, 'cid');\r\n }\r\n\r\n private getSearchParams(params: PalsBillingDetailReportSearchParams): PalsBillingDetailReportRequest{\r\n const searchParams = new PalsBillingDetailReportRequest();\r\n\r\n searchParams.pipelineSystem = _.find(this.model.pipelines, x => x.code === this.sessionService.getPipeline().code).pipelineSystems[0].code;\r\n searchParams.gasMonth = params.billingMonth;\r\n searchParams.runReportAs = RunReportAsType.find(params.runReportAsType);\r\n searchParams.customerId = params.enterpriseId;\r\n searchParams.invoiceGroupId = params.invoiceGroup;\r\n\r\n if(!_.isNil(params.enterpriseId)) {\r\n if(_.isNil(params.nominationGroupIds) || _.isEmpty(params.nominationGroupIds)) {\r\n searchParams.nominationGroupIds = this.model.filteredNominationGroups.map(x => x.id);\r\n } else {\r\n searchParams.nominationGroupIds = params.nominationGroupIds;\r\n }\r\n }\r\n\r\n return searchParams;\r\n }\r\n\r\n public getPALsBillingDetailRows(): Observable{\r\n return this.palsBillingDetailReportService.queryPalsBillingDetailReport(this.getSearchParams(this.model.searchParams))\r\n .pipe(\r\n concatMap( results => this.locationEnrichmentService.enrichArray(results, 'locationId', 'location')),\r\n concatMap( results => this.nominationGroupEnrichmentService.enrichArray(results, 'nomGroupId','nominationGroup')),\r\n concatMap( results => this.enterpriseEnrichmentService.enrichArray(results, 'nominationGroupOwnerEnterpriseId','nominationGroupOwnerEnterprise')),\r\n tap(results => this.model.searchResults = results)\r\n );\r\n }\r\n\r\n private adjustFormIfUserIsAnExternalUser(): void {\r\n if(!this.model.userIsInternal) {\r\n this.model.searchParams.enterpriseId = +this.userService.user.enterpriseId;\r\n\r\n this.querySimpleNomGroups().subscribe(() => {});\r\n }\r\n }\r\n}\r\n","import {BaseViewModel} from \"@model/base-view-model\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {RunReportAsType} from \"@model/run-report-as-type\";\r\n\r\nimport {InvoiceRecipient} from \"@shared/services/invoicing/invoicing-invoice-package/invoicing-invoice-package.service\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport {NominationPipelineGasDay} from \"@model/nomination-pipeline-gas-day\";\r\nimport {InvoiceGroup} from \"@shared/services/contracts/invoice-group/invoice-group.service\";\r\nimport {SimpleNominationGroup} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\n\r\nimport {BilledBalancingFeesReportRow} from \"@shared/services/flowing-gas/flowing-gas-billed-balancing-fees-report/flowing-gas-billed-balancing-fees-report.service\";\r\nimport {BillingProcess} from \"@shared/services/flowing-gas/flowing-gas-allocation-and-balancing-billing-process/flowing-gas-allocation-and-balancing-billing-process.service\";\r\nimport {NominationPipeline} from \"@model/nomination-pipeline\";\r\n\r\nexport class BilledBalancingFeesReportModel extends BaseViewModel{\r\n public searchParams: BilledBalancingFeesDetailSearchParams = new BilledBalancingFeesDetailSearchParams();\r\n public lastSearchParams: BilledBalancingFeesDetailSearchParams;\r\n public invoiceGroups: InvoiceGroup[];\r\n public nominationGroups: SimpleNominationGroup[];\r\n public filteredNominationGroups: SimpleNominationGroup[] = [];\r\n\r\n pipelines: NominationPipeline[];\r\n pipelineGasDay: NominationPipelineGasDay;\r\n oldestBillingMonth: BillingMonth;\r\n openBillingMonth: BillingMonth;\r\n preliminaryBillingMonth: BillingMonth;\r\n allocationAndBalancingStatus: BillingProcess;\r\n\r\n minReportingGasMonth: GasMonth;\r\n maxReportingGasMonth: GasMonth;\r\n maxBillingGasMonth: GasMonth;\r\n\r\n userIsInternal: boolean;\r\n public runReportAsTypes: RunReportAsType[] = RunReportAsType.ALL;\r\n public customers: InvoiceRecipient[];\r\n timeOfLastSearch: Date;\r\n // MR this is normally done when Nomination Agent is selected\r\n invoiceGroupDisabled: boolean = false;\r\n\r\n public _searchResults: BilledBalancingFeesReportRow[];\r\n/* private _transportationSearchResults: TransportationTADDetail[];\r\n public get transportationSearchResults(): TransportationTADDetail[] {\r\n return this._transportationSearchResults;\r\n }\r\n public set transportationSearchResults(transportationTADDetails: TransportationTADDetail[]) {\r\n this._transportationSearchResults = transportationTADDetails;\r\n }\r\n*/\r\n public clearSearchResults(): void {\r\n this._searchResults = null;\r\n }\r\n\r\n public hasSearchResults(): boolean {\r\n return !!this._searchResults;\r\n }\r\n public isCustomerSelected(): boolean {\r\n return (!!this.searchParams.customerId);\r\n }\r\n}\r\n\r\n\r\nexport class BilledBalancingFeesDetailSearchParams {\r\n public reportingMonth: GasMonth;\r\n public customerId: number;\r\n public billingMonth: GasMonth;\r\n public runReportAs: string = RunReportAsType.NOM_GROUP_OWNER.id;\r\n public invoiceGroupId: number;\r\n public nominationGroupIds: number[];\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {ContractsResourceService} from \"@shared/resources/contracts-resource.service\";\r\nimport {FlowinggasResourceService} from \"@shared/resources/flowinggas-resource.service\";\r\nimport {Observable} from \"rxjs\";\r\nimport {map} from \"rxjs/operators\";\r\nimport {IPalsBillingDetailReportRow, PalsBillingDetailReportRequest, PalsBillingDetailReportRow} from \"@shared/services/invoicing/pals-billing-detail-report/pals-billing-detail-report.service\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {RunReportAsType} from \"@model/run-report-as-type\";\r\nimport {HttpResponse} from \"@angular/common/http\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport * as _ from \"lodash\";\r\nimport {ContractAlternatePath} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\n\r\n\r\n@Injectable()\r\nexport class FlowingGasBilledBalancingFeesReportService {\r\n constructor(private flowinggasResource: FlowinggasResourceService) {\r\n }\r\n\r\n queryFlowingGasBilledBalancingFeesReportPdf(searchParams: BilledBalancingFeesReportRequest): Observable> {\r\n return this.flowinggasResource.getData('/billedBalancingFeesReport/pdf', true, this.buildUrlSearchParams(searchParams, true));\r\n }\r\n\r\n queryFlowingGasBilledBalancingFeesReport(searchParams: BilledBalancingFeesReportRequest): Observable {\r\n return this.flowinggasResource.get('/billedBalancingFeesReport', true, this.buildUrlSearchParams(searchParams))\r\n .pipe(\r\n map(dtos => dtos.map(dto => BilledBalancingFeesReportRow.create(dto)))\r\n );\r\n }\r\n\r\n private buildUrlSearchParams(searchParams: BilledBalancingFeesReportRequest, forPdfRequest: boolean = false): GCTSHttpParams {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('pipelineSystem',searchParams.pipelineSystem);\r\n params.setGasMonth(searchParams.gasMonth, 'gasMonth');\r\n params.setOptionalListOfNumbers('nominationGroupIds', searchParams.nominationGroupIds);\r\n params.setGasMonth(searchParams.reportingMonth, 'reportingMonth');\r\n\r\n if(!forPdfRequest) {\r\n params.set('runReportAs', searchParams.runReportAs.id);\r\n } else {\r\n params.setOptionalNumber('customerId', searchParams.customerId);\r\n params.setOptionalNumber('invoiceGroupId', searchParams.invoiceGroupId);\r\n params.set('runReportAs', searchParams.runReportAs.value); // PDF uses display value\r\n params.setBoolean('download', true);\r\n }\r\n\r\n return params;\r\n }\r\n}\r\n\r\nexport class BilledBalancingFeesReportRequest {\r\n pipelineSystem: string;\r\n gasMonth: GasMonth;\r\n customerId?: number;\r\n reportingMonth: GasMonth;\r\n runReportAs: RunReportAsType;\r\n invoiceGroupId?: number;\r\n nominationGroupIds: number[];\r\n}\r\n\r\nexport class IBilledBalancingFeesReportRow {\r\n invoiceGroupId: string;\r\n nomGroupId: string;\r\n location: string;\r\n dailyTier1: string;\r\n dailyTier2: string;\r\n dailyTier3: string;\r\n dailyTier4: string;\r\n cumulativeTier1: string;\r\n cumulativeTier2: string;\r\n tolerances: string;\r\n dailyPercentages: string;\r\n cumulativePercentages: string;\r\n tierTotal: string;\r\n billedExcessDetails: IBilledExcessDetailsRow[];\r\n}\r\n\r\nexport class BilledBalancingFeesReportRow {\r\n invoiceGroupId: number;\r\n nomGroupId: number;\r\n nominationGroupMnemonic: string;\r\n location: number;\r\n locationName: string;\r\n dailyTier1: number;\r\n dailyTier2: number;\r\n dailyTier3: number;\r\n dailyTier4: number;\r\n cumulativeTier1: number;\r\n cumulativeTier2: number;\r\n // tolerances: string;\r\n // dailyPercentages: string;\r\n // cumulativePercentages: string;\r\n tierTotal: string;\r\n billedExcessDetails: BilledExcessDetailsRow[];\r\n\r\n // NominationGroupPALOperational\r\n\r\n public static create(dto: any): BilledBalancingFeesReportRow {\r\n const billedBalancingFeesReportRow = new BilledBalancingFeesReportRow();\r\n billedBalancingFeesReportRow.invoiceGroupId = dto.invoiceGroupId;\r\n billedBalancingFeesReportRow.nomGroupId = dto.nomGroupId;\r\n billedBalancingFeesReportRow.location = dto.location;\r\n billedBalancingFeesReportRow.dailyTier1 = dto.dailyTier1;\r\n billedBalancingFeesReportRow.dailyTier2 = dto.dailyTier2;\r\n billedBalancingFeesReportRow.dailyTier3 = dto.dailyTier3;\r\n billedBalancingFeesReportRow.dailyTier4 = dto.dailyTier4;\r\n billedBalancingFeesReportRow.cumulativeTier1 = dto.cumulativeTier1;\r\n billedBalancingFeesReportRow.cumulativeTier2 = dto.cumulativeTier2;\r\n billedBalancingFeesReportRow.tierTotal =dto.tierTotal;\r\n if (dto.billedExcessDetails && dto.billedExcessDetails instanceof Array) {\r\n billedBalancingFeesReportRow.billedExcessDetails = _.map(dto.billedExcessDetails, iBilledExcessDetailsRow => BilledExcessDetailsRow.create(iBilledExcessDetailsRow));\r\n }\r\n return billedBalancingFeesReportRow;\r\n }\r\n}\r\n\r\nexport class BilledExcessDetailsRow{\r\n gasDay: GasDay;\r\n tier1: DailyTierFee;\r\n tier2: DailyTierFee;\r\n tier3: DailyTierFee;\r\n tier4: DailyTierFee;\r\n cumulativeTier1: DailyTierFee;\r\n cumulativeTier2: DailyTierFee;\r\n total: number;\r\n\r\n public static create(dto: any): BilledExcessDetailsRow {\r\n const billedExcessDetailsRow = new BilledExcessDetailsRow();\r\n billedExcessDetailsRow.gasDay = GasDay.parse(dto.gasDay);\r\n billedExcessDetailsRow.total = dto.total;\r\n billedExcessDetailsRow.tier1 = this.createTier(dto.tier1);\r\n billedExcessDetailsRow.tier2 = this.createTier(dto.tier2);\r\n billedExcessDetailsRow.tier3 = this.createTier(dto.tier3);\r\n billedExcessDetailsRow.tier4 = this.createTier(dto.tier4);\r\n billedExcessDetailsRow.cumulativeTier1 = this.createTier(dto.cumulativeTier1);\r\n billedExcessDetailsRow.cumulativeTier2 = this.createTier(dto.cumulativeTier2);\r\n return billedExcessDetailsRow;\r\n }\r\n public static createTier(dto: any): DailyTierFee {\r\n const dailyTierFee = new DailyTierFee();\r\n dailyTierFee.billedExcess = dto.billedExcess;\r\n dailyTierFee.calculatedExcess = dto.calculatedExcess;\r\n dailyTierFee.estimatedFee = dto.estimatedFee;\r\n dailyTierFee.gasDay = GasDay.parse(dto.gasDay);\r\n dailyTierFee.locationId = dto.locationId;\r\n dailyTierFee.tierType = dto.tierType;\r\n dailyTierFee.tolerance = dto.tolerance;\r\n dailyTierFee.variance = dto.variance;\r\n return dailyTierFee;\r\n }\r\n}\r\n\r\nexport class IBilledExcessDetailsRow{\r\n gasDay: string;\r\n tier1: IDailyTierFee;\r\n tier2: IDailyTierFee;\r\n tier3: IDailyTierFee;\r\n tier4: IDailyTierFee;\r\n cumulativeTier1: IDailyTierFee;\r\n cumulativeTier2: IDailyTierFee;\r\n total: number;\r\n}\r\n\r\nexport class IDailyTierFee{\r\n variance: string;\r\n tolerance: string;\r\n calculatedExcess: string;\r\n tierType: string;\r\n locationId: string;\r\n gasDay: string;\r\n billedExcess: string;\r\n estimatedFee: string;\r\n}\r\nexport class DailyTierFee{\r\n variance: number;\r\n tolerance: number;\r\n calculatedExcess: number;\r\n tierType: string;\r\n locationId: string;\r\n gasDay: GasDay;\r\n billedExcess: number;\r\n estimatedFee: number;\r\n\r\n // public static create(dto: any): DailyTierFee {\r\n // const billedExcessDetailsRow = new BilledExcessDetailsRow();\r\n // billedExcessDetailsRow.gasDay = GasDay.parse(dto.gasDay);\r\n // billedExcessDetailsRow.total = dto.total;\r\n // return billedExcessDetailsRow;\r\n // }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Reporting Month: {{model.lastSearchParams?.reportingMonth | gasMonthFormat}}\r\n Status: {{model.allocationAndBalancingStatus?.status === 'Final' ? 'Final' : 'Preliminary'}}\r\n Billing Month: {{model.lastSearchParams?.billingMonth | gasMonthFormat}}\r\n Customer: {{model.lastSearchParams?.customerId | displayName: 'id' : 'displayName' : model.customers}}\r\n Run Report As: {{model.lastSearchParams?.runReportAs | displayName: 'id' : 'value' : model.runReportAsTypes}}\r\n Invoice Group: {{model.lastSearchParams?.invoiceGroupId | numberOrAllFormat: false: false }}\r\n Nom Group: {{model.lastSearchParams?.nominationGroupIds | displayName: 'id' : 'mnemonic' : model.nominationGroups}}\r\n \r\n
\r\n\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.searchParams?.customerId | displayName: 'id' : 'displayName' : model.customers}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.reportingMonth | gasMonthFormat}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.allocationAndBalancingStatus?.status === 'Final' ? 'Final' : 'Preliminary'}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.billingMonth | gasMonthFormat}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.customerId | displayName: 'id' : 'displayName' : model.customers}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.invoiceGroupId | numberOrAllFormat: false: false }}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.runReportAs | displayName: 'id' : 'value' : model.runReportAsTypes}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n  \r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.nominationGroupIds | displayName: 'id' : 'mnemonic' : model.nominationGroups}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n\r\n\r\n
\r\n
\r\n
\r\n Number of records found: {{model._searchResults.length}}\r\n AS OF {{model.timeOfLastSearch | dateFormat:'YYYY-MMM-DD H:mm:ss A'}}\r\n
0\" class=\"pull-right\">\r\n Export CSV\r\n \r\n | Export PDF\r\n \r\n
\r\n
\r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n Daily LBD2
Billed Excess
(GJ)\r\n
\r\n \r\n
\r\n Daily LBD4
Billed Excess
(GJ)\r\n
\r\n \r\n
\r\n Daily LBD8
Billed Excess
(GJ)\r\n
\r\n\r\n \r\n
\r\n Daily LBD10
Billed Excess
(GJ)\r\n
\r\n \r\n
\r\n Cumulative
LBC4 Billed
Excess (GJ)\r\n
\r\n \r\n
\r\n Cumulative
LBC6 Billed
Excess (GJ)\r\n
\r\n \r\n\r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {{ row.data.gasDay | gasDayFormat }}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n","import {Component} from \"@angular/core\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {Enterprise, EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {InvoiceGroup} from \"@shared/services/contracts/invoice-group/invoice-group.service\";\r\nimport {NominationGroupService, QuerySimpleNomGroupsSearchParams, SimpleNominationGroup} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {UserService} from \"@shared/services/webapp/user/user-service\";\r\nimport {CommonDataGasdayService, ServerTimeData} from \"@shared/services/common-data/common-data-gasday/common-data-gasday.service\";\r\nimport {LocationEnrichmentService} from \"@shared/services/enrichment/location-enrichment.service\";\r\nimport {LocationService} from \"@shared/services/common-data/location/location.service\";\r\nimport {NomGroupEnrichmentService} from \"@shared/services/enrichment/nomgroup-enrichment.service\";\r\nimport {forkJoin, Observable, of} from \"rxjs\";\r\nimport {BilledBalancingFeesDetailSearchParams, BilledBalancingFeesReportModel} from \"app/gcts/invoicing/billed-balancing-fees-report/billed-balancing-fees-report.model\";\r\nimport * as _ from \"lodash\";\r\nimport {concatMap, tap} from \"rxjs/operators\";\r\nimport {NominationPipelineGasDay} from \"@model/nomination-pipeline-gas-day\";\r\nimport {NominationSystemService} from \"@shared/services/nomination/nomination-system/nomination-system.service\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {InvoiceRecipient, InvoicingInvoicePackageService} from \"@shared/services/invoicing/invoicing-invoice-package/invoicing-invoice-package.service\";\r\nimport {RunReportAsType} from \"@model/run-report-as-type\";\r\nimport {BilledBalancingFeesReportRequest, BilledBalancingFeesReportRow, FlowingGasBilledBalancingFeesReportService} from \"@shared/services/flowing-gas/flowing-gas-billed-balancing-fees-report/flowing-gas-billed-balancing-fees-report.service\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {BusinessRight} from \"@model/business-right\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {BillingProcess, FlowingGasAllocationAndBalancingBillingProcessService} from \"@shared/services/flowing-gas/flowing-gas-allocation-and-balancing-billing-process/flowing-gas-allocation-and-balancing-billing-process.service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {NominationPipelineService} from \"@shared/services/nomination/nomination-pipeline/nomination-pipeline.service\";\r\nimport {NominationPipeline} from \"@model/nomination-pipeline\";\r\n\r\n@Component({\r\n selector: 'app-billed-balancing-fees-report',\r\n templateUrl: './billed-balancing-fees-report.component.html',\r\n styleUrls: ['./billed-balancing-fees-report.component.css']\r\n})\r\nexport class BilledBalancingFeesReportComponent extends BaseSearchComponent {\r\n private static readonly PARAM_NOMINATION_GROUP_IDS: string = 'nominationGroupIds';\r\n private static readonly PARAM_BILLING_MONTH: string = 'billingMonth';\r\n private static readonly PARAM_REPORTING_MONTH: string ='reportingMonth';\r\n private static readonly PARAM_CUSTOMER_ID: string = 'customerId';\r\n private static readonly PARAM_RUN_REPORT_AS: string = 'runReportAs';\r\n private static readonly PARAM_INVOICE_GROUP_ID: string = 'invoiceGroup';\r\n\r\n public model: BilledBalancingFeesReportModel = new BilledBalancingFeesReportModel();\r\n\r\n constructor(protected appService: AppService,\r\n activatedRoute: ActivatedRoute,\r\n router: Router,\r\n protected alertService: AlertService,\r\n protected sessionService: SessionService,\r\n protected commonDataBillingMonthService: CommonDataBillingMonthService,\r\n protected userService: UserService,\r\n protected nominationSystemService: NominationSystemService,\r\n private nominationGroupService: NominationGroupService,\r\n protected invoicePackageService: InvoicingInvoicePackageService,\r\n protected enterpriseEnrichmentService: EnterpriseEnrichmentService,\r\n protected enterpriseService: EnterpriseService,\r\n private fileService: FileService,\r\n private commonDataGasDayService: CommonDataGasdayService,\r\n private flowingGasBilledBalancingFeesReportService: FlowingGasBilledBalancingFeesReportService,\r\n private locationEnrichmentService: LocationEnrichmentService,\r\n private commonDataLocationService: LocationService,\r\n private nominationGroupEnrichmentService: NomGroupEnrichmentService,\r\n private flowingGasAllocationAndBalancingBillingProcessService :FlowingGasAllocationAndBalancingBillingProcessService,\r\n private nominationPipelineService: NominationPipelineService) {\r\n super('Billed Balancing Fees Report', appService, activatedRoute, router, alertService);\r\n enterpriseEnrichmentService.setEnrichmentResource(enterpriseService);\r\n locationEnrichmentService.setEnrichmentResource(commonDataLocationService);\r\n nominationGroupEnrichmentService.setEnrichmentResource(nominationGroupService);\r\n this.appService.hideMenu();\r\n }\r\n\r\n public onReportingMonthChanged(): void {\r\n if (_.isNil(this.model.searchParams.reportingMonth)) {\r\n this.model.searchParams.billingMonth = undefined;\r\n return;\r\n }\r\n\r\n this.setMaxBillingMonth();\r\n if(this.model.searchParams.reportingMonth.isEqual(this.model.openBillingMonth.gasMonth) || this.model.searchParams.reportingMonth.isEqual(this.model.maxReportingGasMonth)) {\r\n this.model.searchParams.billingMonth = this.model.searchParams.reportingMonth;\r\n return;\r\n }\r\n if(this.model.searchParams.billingMonth.isEqual(this.model.maxReportingGasMonth)) {\r\n this.model.searchParams.billingMonth = this.model.openBillingMonth.gasMonth;\r\n return;\r\n }\r\n if(this.model.searchParams.billingMonth.toDate < this.model.searchParams.reportingMonth.toDate) {\r\n this.model.searchParams.billingMonth = this.model.searchParams.reportingMonth;\r\n }\r\n }\r\n\r\n public onBillingMonthChanged():void{\r\n if(_.isNil(this.model.searchParams.billingMonth)){\r\n return;\r\n }\r\n this.getBillingProcessStatus().subscribe();\r\n }\r\n\r\n public setMaxBillingMonth(): void {\r\n if(this.model.searchParams.reportingMonth.isEqual(this.model.maxReportingGasMonth)) {\r\n this.model.maxBillingGasMonth = this.model.maxReportingGasMonth;\r\n }\r\n else {\r\n this.model.maxBillingGasMonth = this.model.openBillingMonth.gasMonth;\r\n }\r\n }\r\n\r\n public onCustomerChanged():void{\r\n this.alertService.clearMessages();\r\n this.model.searchParams.nominationGroupIds=[];\r\n this.model.searchParams.invoiceGroupId=null;\r\n if(_.isNil(this.model.searchParams.customerId)) {\r\n }else{\r\n this.querySimpleNomGroups().subscribe();\r\n }\r\n }\r\n\r\n public onInvoiceGroupChanged(): void {\r\n this.alertService.clearMessages();\r\n\r\n this.model.searchParams.nominationGroupIds=[];\r\n if(this.model.isCustomerSelected()) {\r\n this.model.nominationGroups=[];\r\n this.querySimpleNomGroups().subscribe();\r\n }\r\n }\r\n\r\n public onRunReportAsChanged():void{\r\n this.alertService.clearMessages();\r\n\r\n this.model.invoiceGroupDisabled = this.model.searchParams.runReportAs === RunReportAsType.NOMINATION_AGENT.id;\r\n this.model.searchParams.invoiceGroupId = null;\r\n this.model.searchParams.nominationGroupIds = null;\r\n\r\n this.querySimpleNomGroups().subscribe(() => {});\r\n }\r\n\r\n public onlyOneCustomerInList():boolean{\r\n if(_.isNil(this.model.customers)){\r\n return false;\r\n }else if(this.model.customers.length===1){\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n const paramValidator = ParamValidator.Standard();\r\n\r\n paramValidator.isGasMonth(BilledBalancingFeesReportComponent.PARAM_BILLING_MONTH);\r\n paramValidator.isNumber(BilledBalancingFeesReportComponent.PARAM_CUSTOMER_ID, true);\r\n paramValidator.isOneOf(BilledBalancingFeesReportComponent.PARAM_RUN_REPORT_AS, _.map(RunReportAsType.ALL, x => x.id), true);\r\n paramValidator.isNumber(BilledBalancingFeesReportComponent.PARAM_INVOICE_GROUP_ID, true);\r\n // TODO 2 missing\r\n return paramValidator.isValid(params);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {};\r\n params[BilledBalancingFeesReportComponent.PARAM_BILLING_MONTH] = this.model.searchParams.billingMonth;\r\n params[BilledBalancingFeesReportComponent.PARAM_CUSTOMER_ID] = this.model.searchParams.customerId;\r\n params[BilledBalancingFeesReportComponent.PARAM_RUN_REPORT_AS] = this.model.searchParams.runReportAs;\r\n params[BilledBalancingFeesReportComponent.PARAM_INVOICE_GROUP_ID] = this.model.searchParams.invoiceGroupId;\r\n params[BilledBalancingFeesReportComponent.PARAM_NOMINATION_GROUP_IDS] = this.model.searchParams.nominationGroupIds;\r\n params[BilledBalancingFeesReportComponent.PARAM_REPORTING_MONTH] = this.model.searchParams.reportingMonth;\r\n return params;\r\n }\r\n\r\n private getBillingProcessStatus(): Observable{\r\n return this.flowingGasAllocationAndBalancingBillingProcessService.get(this.model.searchParams.billingMonth)\r\n .pipe(\r\n tap(allocationAndBalancingProcess => this.model.allocationAndBalancingStatus = allocationAndBalancingProcess[0])\r\n );\r\n }\r\n\r\n public querySimpleNomGroups(): Observable{\r\n const requestParams : QuerySimpleNomGroupsSearchParams = new QuerySimpleNomGroupsSearchParams(\r\n this.model.searchParams.billingMonth,\r\n this.model.searchParams.customerId,\r\n RunReportAsType.find(this.model.searchParams.runReportAs),\r\n [BusinessRight.LdcVariance]\r\n );\r\n\r\n return this.nominationGroupService.querySimpleNomGroups(requestParams)\r\n .pipe(\r\n tap( nomgroups => {\r\n this.alertService.clearMessages();\r\n\r\n this.model.nominationGroups = nomgroups;\r\n this.deriveInvoiceGroupsFromNomGroups(nomgroups);\r\n this.applyRunReportAsFilterToNomGroups();\r\n this.checkEnterpriseNomGroupsAndDisplayMessageIfEnterpriseHasNoLdcNomGroups();\r\n })\r\n );\r\n }\r\n\r\n private applyRunReportAsFilterToNomGroups(): void {\r\n if (this.model.searchParams.runReportAs === RunReportAsType.INVOICE_RECIPIENT.id) {\r\n if (_.isNil(this.model.searchParams.invoiceGroupId)) {\r\n this.model.filteredNominationGroups = this.model.nominationGroups;\r\n } else {\r\n this.model.filteredNominationGroups = _.filter(this.model.nominationGroups, {invoiceGroupId: this.model.searchParams.invoiceGroupId});\r\n }\r\n } else if (this.model.searchParams.runReportAs === RunReportAsType.NOM_GROUP_OWNER.id) {\r\n this.model.filteredNominationGroups = _.filter(this.model.nominationGroups, {nominationOwnerEnterpriseId: this.model.searchParams.customerId});\r\n } else if (this.model.searchParams.runReportAs === RunReportAsType.NOMINATION_AGENT.id) {\r\n this.model.filteredNominationGroups = _.filter(this.model.nominationGroups, {nominationAgentEnterpriseId: this.model.searchParams.customerId});\r\n }\r\n if (this.model.filteredNominationGroups.length === 1) {\r\n this.model.searchParams.nominationGroupIds = [this.model.filteredNominationGroups[0].id];\r\n }\r\n }\r\n\r\n private deriveInvoiceGroupsFromNomGroups(nomGroups: SimpleNominationGroup[]): void {\r\n this.model.invoiceGroups = _.uniqBy(_.map(nomGroups, x => {\r\n const invoiceGroup = new InvoiceGroup();\r\n invoiceGroup.id = x.invoiceGroupId;\r\n return invoiceGroup;\r\n }), ig => ig.id);\r\n\r\n if (this.model.invoiceGroups.length === 1) {\r\n this.model.searchParams.invoiceGroupId = this.model.invoiceGroups[0].id;\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n protected loadInitialResources(): Observable {\r\n this.appService.hideMenu();\r\n\r\n const getOldestBillingMonth$ = this.commonDataBillingMonthService.getOldest()\r\n .pipe(\r\n tap(oldestBillingMonth => this.model.oldestBillingMonth = oldestBillingMonth)\r\n );\r\n\r\n const getOpenBillingMonth$ = this.commonDataBillingMonthService.getOpen()\r\n .pipe(\r\n tap(openBillingMonth => this.model.openBillingMonth = openBillingMonth)\r\n );\r\n\r\n const getPreliminaryBillingMonth$ = this.commonDataBillingMonthService.getPreliminary()\r\n .pipe(\r\n tap(preliminaryBillingMonth => this.model.preliminaryBillingMonth = preliminaryBillingMonth)\r\n );\r\n\r\n const queryPipelineService$ = this.queryPipelines();\r\n\r\n const nominationPipelineGasDay$ = this.getPipelineGasDay();\r\n\r\n this.model.userIsInternal = !this.userService.user.isExternalUser;\r\n\r\n return forkJoin([getOldestBillingMonth$, getOpenBillingMonth$, getPreliminaryBillingMonth$, nominationPipelineGasDay$, queryPipelineService$])\r\n .pipe(\r\n tap(() => {\r\n this.model.minReportingGasMonth = this.model.oldestBillingMonth.gasMonth;\r\n this.model.maxReportingGasMonth = this.model.preliminaryBillingMonth ? this.model.preliminaryBillingMonth.gasMonth : this.model.openBillingMonth.gasMonth;\r\n this.model.maxBillingGasMonth = this.model.maxReportingGasMonth;\r\n\r\n this.model.searchParams.reportingMonth = this.model.openBillingMonth.gasMonth;\r\n this.model.searchParams.billingMonth = this.model.openBillingMonth.gasMonth;\r\n })\r\n );\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n const customers$ = this.queryCustomers(this.model.searchParams.billingMonth, this.model.searchParams.billingMonth);\r\n const billingProcessStatus$ = this.getBillingProcessStatus();\r\n\r\n return forkJoin([customers$, billingProcessStatus$]);\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n\r\n const getBilledBalancingFeesReportRows$ = this.getBilledBalancingFeesReportRows();\r\n const queryServerTimeData$ = this.queryServerTimeData();\r\n\r\n return forkJoin([getBilledBalancingFeesReportRows$, queryServerTimeData$]);\r\n }\r\n\r\n public getBilledBalancingFeesReportRows(): Observable{\r\n return this.flowingGasBilledBalancingFeesReportService.queryFlowingGasBilledBalancingFeesReport(this.getSearchParams(this.model.searchParams))\r\n .pipe(\r\n concatMap( results => this.locationEnrichmentService.enrichArray(results, 'location', 'location')),\r\n concatMap( results => this.nominationGroupEnrichmentService.enrichArray(results, 'nomGroupId','nominationGroup')),\r\n concatMap( results => this.enterpriseEnrichmentService.enrichArray(results, 'nominationGroupOwnerEnterpriseId','nominationGroupOwnerEnterprise')),\r\n // tap(results => {this.model._searchResults = results;\r\n tap(results =>\r\n // this.model._searchResults = _.filter(results, r=> tierTotalIsNotZero(r.TierTotal));\r\n this.model._searchResults = _.filter(results, r=> Number(r.tierTotal)!==0)\r\n )\r\n );\r\n }\r\n\r\n public toggleExpandAll(expandAll: boolean, dataGrid: DxDataGridComponent): void {\r\n if(expandAll) {\r\n dataGrid.instance.expandAll(-1);\r\n } else {\r\n dataGrid.instance.collapseAll(-1);\r\n }\r\n }\r\n\r\n\r\nprivate getSearchParams(params: BilledBalancingFeesDetailSearchParams): BilledBalancingFeesReportRequest{\r\n const searchParams = new BilledBalancingFeesReportRequest();\r\n\r\n searchParams.pipelineSystem = _.find(this.model.pipelines, x => x.code === this.sessionService.getPipeline().code).pipelineSystems[0].code;\r\n searchParams.gasMonth = params.billingMonth;\r\n searchParams.runReportAs = RunReportAsType.find(params.runReportAs);\r\n searchParams.customerId = params.customerId;\r\n searchParams.invoiceGroupId = params.invoiceGroupId;\r\n searchParams.reportingMonth = params.reportingMonth;\r\n\r\n if(!_.isNil(params.customerId)) {\r\n if(_.isNil(params.nominationGroupIds) || _.isEmpty(params.nominationGroupIds)) {\r\n searchParams.nominationGroupIds = this.model.filteredNominationGroups.map(x => x.id);\r\n } else {\r\n searchParams.nominationGroupIds = params.nominationGroupIds;\r\n }\r\n }\r\n\r\n return searchParams;\r\n}\r\n\r\n private queryServerTimeData(): Observable {\r\n return this.commonDataGasDayService.getServerTimeData()\r\n .pipe(\r\n tap(serverTimes => this.model.timeOfLastSearch = serverTimes.serverTime.toDate())\r\n );\r\n }\r\n\r\n private queryPipelines(): Observable {\r\n return this.nominationPipelineService.get()\r\n .pipe(\r\n tap(pipelines => this.model.pipelines = pipelines)\r\n );\r\n}\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n private setDefaultCustomer(): void {\r\n this.model.searchParams.customerId = !this.model.userIsInternal ? Number(this.userService.user.enterpriseId) : null;\r\n }\r\n\r\n protected resetCompleted(): void {\r\n this.model.lastSearchParams = null;\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams = new BilledBalancingFeesDetailSearchParams();\r\n this.model.searchParams.runReportAs = RunReportAsType.NOM_GROUP_OWNER.id;\r\n this.model.searchParams.reportingMonth = this.model.openBillingMonth.gasMonth;\r\n this.model.searchParams.billingMonth = this.model.openBillingMonth.gasMonth;\r\n this.setDefaultCustomer();\r\n if(!_.isNil(this.model.searchParams.customerId)) {\r\n this.queryCustomers(this.model.searchParams.billingMonth,this.model.searchParams.billingMonth);\r\n this.onCustomerChanged();\r\n }\r\n this.model.searchParams.invoiceGroupId = null;\r\n this.model.searchParams.nominationGroupIds = null;\r\n this.model.clearSearchResults();\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams = new BilledBalancingFeesDetailSearchParams();\r\n\r\n this.model.searchParams.reportingMonth = typedParams.asGasMonth(BilledBalancingFeesReportComponent.PARAM_REPORTING_MONTH);\r\n this.model.searchParams.customerId = typedParams.asNumber(BilledBalancingFeesReportComponent.PARAM_CUSTOMER_ID);\r\n this.model.searchParams.billingMonth = typedParams.asGasMonth(BilledBalancingFeesReportComponent.PARAM_BILLING_MONTH);\r\n this.model.searchParams.runReportAs = typedParams.asString(BilledBalancingFeesReportComponent.PARAM_RUN_REPORT_AS);\r\n if(!_.isNil(this.model.searchParams.customerId)) {\r\n this.onCustomerChanged();\r\n }\r\n this.model.searchParams.invoiceGroupId = typedParams.asNullableNumber(BilledBalancingFeesReportComponent.PARAM_INVOICE_GROUP_ID);\r\n this.model.searchParams.nominationGroupIds = typedParams.asListOfNumbers(BilledBalancingFeesReportComponent.PARAM_NOMINATION_GROUP_IDS);\r\n }\r\n\r\n\r\n private getPipelineGasDay(): Observable {\r\n return this.nominationSystemService.pipelineGasDay().pipe(\r\n tap((pipelineGasDay) => {\r\n this.model.pipelineGasDay = pipelineGasDay;\r\n })\r\n );\r\n }\r\n\r\n private queryCustomers(startGasMonth: GasMonth, endGasMonth: GasMonth): Observable {\r\n const queryInvoiceRecipients$ = !this.userService.user.isExternalUser\r\n ? this.invoicePackageService.queryInvoiceRecipients(startGasMonth, endGasMonth)\r\n : of([ InvoiceRecipient.create(Number(this.userService.user.enterpriseId))]);\r\n\r\n return queryInvoiceRecipients$\r\n .pipe(\r\n concatMap(invoiceRecipients => this.enterpriseEnrichmentService.enrichArray(invoiceRecipients, 'id')),\r\n tap(invoiceRecipients => {\r\n this.model.customers = _.orderBy(invoiceRecipients, x => x['displayName']);\r\n })\r\n );\r\n }\r\n\r\n formatGasDay(obj: any): string {\r\n return GasDay.parse(obj.value).toDisplayFormat();\r\n }\r\n\r\n public exportCsvClicked() {\r\n const csvData = [];\r\n\r\n const orderedBilledExcessSearchResults = _.orderBy(this.model._searchResults, x => x['locationName']);\r\n _.forEach(orderedBilledExcessSearchResults, searchResult => {\r\n _.forEach(searchResult.billedExcessDetails, daily => {\r\n csvData.push({\r\n locationName: searchResult.locationName,\r\n invoiceGroupId: searchResult.invoiceGroupId,\r\n nominationGroupMnemonic: searchResult.nominationGroupMnemonic,\r\n gasDay: daily.gasDay,\r\n tier1: daily.tier1.calculatedExcess,\r\n tier2: daily.tier2.calculatedExcess,\r\n tier3: daily.tier3.calculatedExcess,\r\n tier4: daily.tier4.calculatedExcess,\r\n cumulativeTier1: daily.cumulativeTier1.calculatedExcess,\r\n cumulativeTier2: daily.cumulativeTier2.calculatedExcess,\r\n total: daily.total\r\n });\r\n });\r\n });\r\n\r\n const filename = this.getTitle() + ' ' + this.getMnemonicGivenCustomerId(this.model.searchParams.customerId) + ' ' + this.model.searchParams.billingMonth.toDisplayFormat() + '.csv';\r\n const headers = ['Location',\t'Invoice Group',\t'Nom Group',\t'Gas Day',\t'Daily LBD2 Billed Excess (GJ)',\t'Daily LBD4 Billed Excess (GJ)',\t'Daily LBD8 Billed Excess (GJ)',\t'Daily LBD10 Billed Excess (GJ)',\t'Cumulative LBC4 Billed Excess (GJ)',\t'Cumulative LBC6 Billed Excess (GJ)',\t'Total (GJ)'];\r\n const columns = ['locationName', 'invoiceGroupId', 'nominationGroupMnemonic', 'gasDay', 'tier1', 'tier2', 'tier3', 'tier4', 'cumulativeTier1', 'cumulativeTier2', 'total'];\r\n\r\n this.fileService.downloadCsvFile(filename, csvData, headers, columns);\r\n }\r\n\r\n private getMnemonicGivenCustomerId(customerId: number): string{\r\n const anEnterprise = Enterprise.createWithId(customerId);\r\n return anEnterprise.mnemonic;\r\n }\r\n\r\n public exportPdfClicked(): void {\r\n this.alertService.clearMessages();\r\n this.flowingGasBilledBalancingFeesReportService\r\n .queryFlowingGasBilledBalancingFeesReportPdf(this.getSearchParams(this.model.lastSearchParams))\r\n .subscribe(data => this.savePdfFile(data));\r\n }\r\n\r\n private checkEnterpriseNomGroupsAndDisplayMessageIfEnterpriseHasNoLdcNomGroups(): void {\r\n if (this.model.searchParams.customerId && _.isEmpty(this.model.nominationGroups)) {\r\n this.alertService.clearMessages();\r\n const enterprise = Enterprise.createWithId(this.model.searchParams.customerId);\r\n this.enterpriseEnrichmentService.enrich(enterprise, 'cid')\r\n .subscribe(() => {\r\n const runReportAsType = RunReportAsType.find(this.model.searchParams.runReportAs);\r\n const message = `Nomination Groups of type LDC were not found for '${enterprise['displayName']}' as a '${runReportAsType.value}' for '${this.model.searchParams.billingMonth.toDisplayFormat()}'`;\r\n this.alertService.addWarnMessage(\"Warning\", message);\r\n });\r\n }\r\n }\r\n}\r\n","import {GasMonth} from \"@model/gas-month\";\r\nimport {BaseViewModel} from \"@model/base-view-model\";\r\nimport {Enterprise} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport {InvoicePackage, InvoiceRecipient, LastInvoiceRecipientInvoiceBillingMonth} from \"@shared/services/invoicing/invoicing-invoice-package/invoicing-invoice-package.service\";\r\n\r\nexport class ViewInvoiceSearchParams {\r\n startBillingMonth: GasMonth;\r\n endBillingMonth: GasMonth;\r\n customerId? : number;\r\n arNumber?: string;\r\n viewRevisionHistory?: boolean = false;\r\n searchByType: string;\r\n}\r\n\r\nexport class ViewInvoiceModel extends BaseViewModel {\r\n isExternalUser: boolean = true;\r\n\r\n customers: InvoiceRecipient[];\r\n arNumbers: Enterprise[];\r\n oldestBillingMonth: BillingMonth;\r\n openBillingMonth: BillingMonth;\r\n preliminaryBillingMonth: BillingMonth;\r\n newestBillingMonth: BillingMonth;\r\n lastInvoiceRecipientInvoiceBillingMonth: LastInvoiceRecipientInvoiceBillingMonth;\r\n\r\n viewRevisionHistory: boolean;\r\n minGasMonth: GasMonth;\r\n maxGasMonth: GasMonth;\r\n searchResults: InvoicePackage[];\r\n typeResults: string;\r\n\r\n expandAll: boolean;\r\n hasExpandedAll: boolean;\r\n\r\n searchParams: ViewInvoiceSearchParams = new ViewInvoiceSearchParams();\r\n lastSearchParams: ViewInvoiceSearchParams;\r\n\r\n public clearSearchResults(): void {\r\n this.searchResults = null;\r\n }\r\n}\r\n\r\n","import * as _ from \"lodash\";\r\nimport {isNullOrUndefined} from \"util\";\r\n\r\nimport {DateTime} from \"@model/date-time\";\r\n\r\nimport {BillableServiceOption} from \"@model/billable-service-option\";\r\nimport {GasDay} from \"@model/gas-day\";\r\n\r\nexport class SortingService {\r\n\r\n // Number sorting\r\n private static readonly MaxNumber: number = 1000000000; // Maximum number to use as a baseline for numeric sorting\r\n\r\n // Date Sorting\r\n private static readonly MinDate: DateTime = DateTime.min();\r\n private static readonly MaxDate: DateTime = DateTime.max();\r\n\r\n // String sorting\r\n private static readonly Space: string = ' '; // Lowest ascii string sort character (for new records)\r\n private static readonly Exclamation: string = '!'; // Second lowest ascii string sort character (for null/empty values)\r\n // ...\r\n private static readonly z: string = 'z'; // Highest alphabet ascii string character\r\n\r\n\r\n constructor() {\r\n }\r\n\r\n public getBillableServiceSortValue(columnName: string, columnValue: number, billableServiceOptions: BillableServiceOption[], rowData: any, dataGrid: any): string {\r\n if (isNullOrUndefined(columnValue)) {\r\n return this.getSortStringValue(columnName, null, rowData, dataGrid);\r\n } else {\r\n const billableServiceOption = _.find(billableServiceOptions, x => x.id === columnValue);\r\n return this.getSortStringValue(columnName, billableServiceOption['displayValue'], rowData, dataGrid);\r\n }\r\n }\r\n\r\n public getNomGroupSortValue(gasDay: GasDay, columnName: string, columnValue: number, columnDisplayValue: string, rowData: any, dataGrid: any): string {\r\n if (isNullOrUndefined(columnValue)) {\r\n return this.getSortStringValue(columnName, null, rowData, dataGrid);\r\n } else {\r\n return this.getSortStringValue(columnName, columnDisplayValue, rowData, dataGrid);\r\n }\r\n }\r\n\r\n public getLocationSortValue(columnName: string, columnValue: number, columnDisplayValue: string, rowData: any, dataGrid: any): string {\r\n if (isNullOrUndefined(columnValue)) {\r\n return this.getSortStringValue(columnName, null, rowData, dataGrid);\r\n } else {\r\n return this.getSortStringValue(columnName, columnDisplayValue, rowData, dataGrid);\r\n }\r\n }\r\n\r\n public getCounterPartySortValue(columnName: string, columnValue: number, columnDisplayValue: string, rowData: any, dataGrid: any): string {\r\n if (isNullOrUndefined(columnValue)) {\r\n return this.getSortStringValue(columnName, null, rowData, dataGrid);\r\n } else {\r\n return this.getSortStringValue(columnName, columnDisplayValue, rowData, dataGrid);\r\n }\r\n }\r\n\r\n public getBlankOnBottomSortValue(columnName: string, columnValue: string, rowData: any, dataGrid: any): string {\r\n if (isNullOrUndefined(columnValue)) {\r\n return SortingService.z.repeat(4); // 'zzzz'\r\n }\r\n return columnValue;\r\n }\r\n\r\n /**\r\n * For new records, the key id is -1, -2, -3, etc for each new row.\r\n * The most recent new record should show above all new rows and existing rows:\r\n * When asc:\r\n * 1st new row: -1 + 1000 with padding = 999\r\n * 2nd new row: -2 + 1000 with padding = 998\r\n * --> end result is that 998 is on top, followed by 999\r\n * ( and yes, this means that if you add >= 1000 rows, it will not sort properly ascending )\r\n *\r\n * When desc:\r\n * 1st new row: abs(-1) + padding = z0001\r\n * 2nd new row: abs(-2) + padding = z0002\r\n * --> end result is that z0002 is on top, followed by z0001\r\n **/\r\n public getSortStringValue(columnName: string, columnValue: string, rowData: any, dataGrid: any): string {\r\n if (this.isNewRecord(rowData)) {\r\n const sortOrder = dataGrid.columnOption(columnName, 'sortOrder');\r\n\r\n // Force new records to always to be on top (based on ASCII characters)\r\n return sortOrder === 'asc' ?\r\n _.padStart((rowData.key + 1000).toString(), 4, SortingService.Space) :\r\n _.padStart(Math.abs(rowData.key).toString(), 4, SortingService.z);\r\n }\r\n\r\n return isNullOrUndefined(columnValue) ? SortingService.Exclamation : columnValue;\r\n }\r\n\r\n /**\r\n * For new records, the key id is -1, -2, -3, etc for each new row.\r\n * The most recent new record should show above all new rows and existing rows:\r\n * When asc:\r\n * 1st new row: -1\r\n * 2nd new row: -2\r\n * --> end result is that -2 on top, followed by -1\r\n * ( and yes, this assumes that numeric cells don't contain negative values )\r\n *\r\n * When desc:\r\n * 1st new row: 1000000000 + abs(1) = 1000000001\r\n * 2nd new row: 1000000000 + abs(2) = 1000000002\r\n * --> end result is that 1000000002 is on top, followed by 1000000001\r\n **/\r\n public getSortNumberValue(columnName: string, columnValue: number, rowData: any, dataGrid: any): number {\r\n if (this.isNewRecord(rowData)) {\r\n const sortOrder = dataGrid.columnOption(columnName, 'sortOrder');\r\n return sortOrder === 'asc' ?\r\n rowData.key :\r\n SortingService.MaxNumber + Math.abs(rowData.key);\r\n }\r\n return isNullOrUndefined(columnValue) ? 0 : columnValue;\r\n }\r\n\r\n public getSortBooleanValue(columnName: string, columnValue: boolean, rowData: any, dataGrid: any): string {\r\n const stringValue = columnValue ? 'Y' : 'N';\r\n return this.getSortStringValue(columnName, stringValue, rowData, dataGrid);\r\n }\r\n\r\n /**\r\n * For new records, the key id is -1, -2, -3, etc for each new row.\r\n * The most recent new record should show above all new rows and existing rows:\r\n * When asc:\r\n * 1st new row: MinDate + -1 = Sun Dec 31 1899 23:59:59\r\n * 2nd new row: MinDate + -2 = Sun Dec 31 1899 23:59:58\r\n * --> end result is that Sun Dec 31 1899 23:59:58 on top, followed by Sun Dec 31 1899 23:59:59\r\n *\r\n * When desc:\r\n * 1st new row: MaxDate + abs(-1) = Fri Dec 31 9999 00:00:01\r\n * 2nd new row: MaxDate + abs(-2) = Fri Dec 31 9999 00:00:02\r\n * --> end result is that Fri Dec 31 9999 00:00:02 is on top, followed by Fri Dec 31 9999 00:00:01\r\n **/\r\n public getSortDateValue(columnName: string, columnValue: Date, rowData: any, dataGrid: any): Date {\r\n if (this.isNewRecord(rowData)) {\r\n const sortOrder = dataGrid.columnOption(columnName, 'sortOrder');\r\n return sortOrder === 'asc' ?\r\n SortingService.MinDate.addSeconds(rowData.key).toDate() :\r\n SortingService.MaxDate.addSeconds(Math.abs(rowData.key)).toDate();\r\n }\r\n return columnValue;\r\n }\r\n\r\n private isNewRecord(rowData): boolean {\r\n return rowData.key < 0;\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'negativeParenthesisTwoDecimals'\r\n})\r\nexport class NegativeParenthesisTwoDecimalsPipe implements PipeTransform {\r\n transform(value: number): string {\r\n if (value === undefined || value === null) {\r\n return \"\";\r\n }\r\n\r\n if (value < 0 ) {\r\n return `(${this.getDisplayValue(Math.abs(value))})`;\r\n } else {\r\n return this.getDisplayValue(value);\r\n }\r\n }\r\n\r\n private getDisplayValue(value: number): string {\r\n return value.toLocaleString('en', {minimumFractionDigits: 2, maximumFractionDigits: 2});\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n \r\n\r\n \r\n To subscribe enter your email address and click submit.\"\r\n eventType=\"PublishInvoiceNotification\"\r\n subscriptionMessage=\"automatic email notification when your monthly invoice is available.\"\r\n [emailSubscriptionService]=\"emailSubscriptionService\">\r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n From: {{model.lastSearchParams?.startBillingMonth}}\r\n To: {{model.lastSearchParams?.endBillingMonth}}\r\n Customer: {{model.lastSearchParams.customerId | displayName: 'id' : 'displayName' : model.customers}}\r\n Ar Number: {{model.lastSearchParams.arNumber}}\r\n View Revisions: {{model.lastSearchParams.viewRevisionHistory | booleanAsYesNo}}\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n CUSTOMER:\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
{{model.searchParams?.customerId | displayName: 'id' : 'displayName' : model.customers : ''}}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n AR NUMBER:\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.startBillingMonth}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.customerId | displayName: 'id' : 'displayName' : model.customers }}\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.arNumber | whenEmptyUse : 'All'}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.endBillingMonth}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.viewRevisionHistory | booleanAsYesNo}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n Number of Invoice Packages found: {{model.searchResults.length}}\r\n
0\" class=\"pull-right\">\r\n Legend: \r\n Download PDF \r\n Download PDF with Reports \r\n Download CSV \r\n
\r\n
\r\n {{model.typeResults}}\r\n
0\" class=\"pull-right\">\r\n Export Summary CSV\r\n | \r\n Export Details CSV\r\n
\r\n\r\n
\r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n
\r\n {{ row.value }}\r\n
\r\n
\r\n {{ row.value }}\r\n
\r\n
\r\n \r\n
\r\n \r\n  \r\n \r\n \r\n  \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n {{ row.value | negativeParenthesisTwoDecimals }}\r\n
\r\n \r\n \r\n \r\n
\r\n {{ row.data['revision'] !== 0 ? row.value : ' ' }}\r\n
\r\n\r\n
\r\n \r\n\r\n \r\n \r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n {{row.value}} \r\n  \r\n \r\n \r\n
\r\n \r\n
\r\n {{ row.value | negativeParenthesisTwoDecimals }}\r\n
\r\n \r\n \r\n
\r\n {{ row.data['revision'] !== 0 ? row.value : ' ' }}\r\n
\r\n
\r\n \r\n \r\n
\r\n {{ getInvoiceNumber(row) }}\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n {{ row.value | negativeParenthesisTwoDecimals }}\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n","import {Component, OnInit, ViewChild} from '@angular/core';\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {forkJoin, Observable, of} from \"rxjs\";\r\nimport {UserService} from \"@shared/services/webapp/user/user-service\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {ViewInvoiceModel, ViewInvoiceSearchParams} from \"app/gcts/invoicing/view-invoice/invoice-package-model\";\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {concatMap, tap} from \"rxjs/operators\";\r\nimport * as _ from \"lodash\";\r\nimport {Enterprise, EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {InvoiceDetail, InvoicePackage, InvoiceRecipient, InvoiceSummary, InvoicingInvoicePackageService} from \"@shared/services/invoicing/invoicing-invoice-package/invoicing-invoice-package.service\";\r\nimport {DataGridHelpers} from \"@model/datagrid-helpers\";\r\nimport {DataGridColumnFormatHelper} from \"@shared/helpers/data-grid-column-format-helper\";\r\nimport {NominationGroupService} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport {NomGroupEnrichmentService} from \"@shared/services/enrichment/nomgroup-enrichment.service\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {CommonDataEmailSubscriptionService} from \"@shared/services/common-data/common-data-email-subscription/common-data-email-subscription.service\";\r\nimport {IEmailSubscriptionService} from \"@shared/services/nomination/email-subscription/email-subscription.service\";\r\nimport {SortingService} from \"app/gcts/nomination/nomination-requests/sorting-service/sorting.service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {\r\n PipelineSettingMapService\r\n} from \"@shared/services/nomination/pipeline-settings-map/pipeline-setting-map.service\";\r\n\r\n@Component({\r\n selector: 'app-view-invoice',\r\n templateUrl: './view-invoice.component.html',\r\n styleUrls: ['./view-invoice.component.css']\r\n})\r\nexport class ViewInvoiceComponent extends BaseSearchComponent implements OnInit {\r\n model: ViewInvoiceModel = new ViewInvoiceModel();\r\n\r\n emailSubscriptionService: IEmailSubscriptionService;\r\n @ViewChild(DxDataGridComponent) dataGrid: DxDataGridComponent;\r\n private sortingService: SortingService;\r\n\r\n constructor(protected appService: AppService,\r\n protected sessionService: SessionService,\r\n protected router: Router,\r\n protected activatedRoute: ActivatedRoute,\r\n protected alertService: AlertService,\r\n protected userService: UserService,\r\n protected commonDataBillingMonthService: CommonDataBillingMonthService,\r\n protected invoicingInvoicePackageService: InvoicingInvoicePackageService,\r\n protected enterpriseService: EnterpriseService,\r\n protected enterpriseEnrichmentService: EnterpriseEnrichmentService,\r\n protected nominationGroupService: NominationGroupService,\r\n protected nominationGroupEnrichmentService: NomGroupEnrichmentService,\r\n protected commonDataEmailSubscriptionService: CommonDataEmailSubscriptionService,\r\n protected fileService: FileService\r\n ) {\r\n super('View Invoices', appService, activatedRoute, router, alertService);\r\n\r\n enterpriseEnrichmentService.setEnrichmentResource(enterpriseService);\r\n nominationGroupEnrichmentService.setEnrichmentResource(nominationGroupService);\r\n\r\n this.emailSubscriptionService = commonDataEmailSubscriptionService;\r\n this.sortingService = new SortingService();\r\n }\r\n\r\n public radioOnChange(): void {\r\n this.model.searchParams.customerId = null;\r\n this.model.searchParams.arNumber = null;\r\n }\r\n\r\n public getInvoiceNumber(e: any): string {\r\n return e.component.element().attributes[\"data-master\"].value;\r\n }\r\n\r\n public invoicePackageOnRowExpanding($event): void {\r\n $event.component.getDataSource().store().byKey($event.key).then((row) => {\r\n this.queryInvoicesForRecipient(row).subscribe(invoicesForRecipient => row['invoicesForRecipient'] = invoicesForRecipient);\r\n });\r\n }\r\n\r\n public toggleExpandAll(expandAll: boolean, dataGrid: DxDataGridComponent): void {\r\n this.model.expandAll = expandAll;\r\n\r\n if(expandAll) {\r\n const invoicePackages = this.queryInvoicesForRecipientForAll();\r\n _.forEach(invoicePackages, x => dataGrid.instance.expandRow(x));\r\n } else {\r\n dataGrid.instance.collapseAll(-1);\r\n }\r\n }\r\n\r\n public toggleInvoiceRecipientExpandAll(expandAll: boolean, dataGrid: DxDataGridComponent): void {\r\n if(expandAll) {\r\n dataGrid.instance.expandAll(-1);\r\n } else {\r\n dataGrid.instance.collapseAll(-1);\r\n }\r\n }\r\n\r\n public showPdfWithReportLegend(): boolean {\r\n return this.sessionService.getPipeline().code !== PipelineSettingMapService.CGL_CODE;\r\n }\r\n\r\n private queryInvoicesForRecipientForAll(): InvoicePackage[] {\r\n const invoicePackages = [];\r\n const invoiceSummaryCalls: Observable[] = [];\r\n for (const invoicePackage of this.model.searchResults) {\r\n if(invoicePackage.hasPdf) {\r\n invoicePackages.push(invoicePackage);\r\n if(!this.model.hasExpandedAll) {\r\n invoiceSummaryCalls.push(this.queryInvoicesForRecipient(invoicePackage).pipe(\r\n tap(invoiceSummary => invoicePackage['invoicesForRecipient'] = invoiceSummary)\r\n ));\r\n }\r\n }\r\n }\r\n forkJoin(invoiceSummaryCalls).subscribe(() => {\r\n this.model.hasExpandedAll = true;\r\n });\r\n return invoicePackages;\r\n }\r\n\r\n private queryInvoicesForRecipient(invoicePackage: InvoicePackage): Observable {\r\n return this.invoicingInvoicePackageService.queryInvoiceSummary(invoicePackage.billingMonth, invoicePackage.invoiceRecipientId, invoicePackage.revision)\r\n .pipe(\r\n concatMap(invoicesForPackage => this.enterpriseEnrichmentService.enrichArray(invoicesForPackage, 'customerId', 'customer')),\r\n concatMap(invoicesForPackage => this.enrichDetailNominationGroups(invoicesForPackage)),\r\n );\r\n }\r\n\r\n private enrichDetailNominationGroups(invoiceSummaries: InvoiceSummary[]): Observable {\r\n if(_.isEmpty(invoiceSummaries)) return of([]); // bug/175600 - Empty Invoices Summaries cause the forkJoin to not work properly. (https://github.com/ReactiveX/rxjs/issues/2816)\r\n\r\n const enrichmentCalls: Observable[] = [];\r\n\r\n for (const invoiceSummary of invoiceSummaries) {\r\n enrichmentCalls.push(this.nominationGroupEnrichmentService.enrichArray(invoiceSummary.invoiceDetails, 'nominationGroup', 'nomGroup'));\r\n }\r\n\r\n return forkJoin(enrichmentCalls)\r\n .pipe(\r\n concatMap(() => of(invoiceSummaries))\r\n );\r\n }\r\n\r\n public invoicePackageOnCellPrepared($event): void {\r\n if (!DataGridHelpers.isDataRow($event.rowType)) {\r\n return;\r\n }\r\n\r\n DataGridHelpers.whenColumnCommandIsExpand($event, () => {\r\n if (!$event.data.hasPdf) {\r\n DataGridColumnFormatHelper.hideExpandIcon($event);\r\n }\r\n });\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return this.paramValidator().isValid(params);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {};\r\n params['startBillingMonth'] = this.model.searchParams.startBillingMonth;\r\n params['endBillingMonth'] = this.model.searchParams.endBillingMonth;\r\n params['arNumber'] = this.model.searchParams.arNumber;\r\n params['customer'] = this.model.searchParams.customerId;\r\n if(this.model.searchParams.viewRevisionHistory) {\r\n params['viewRevisionHistory'] = this.model.searchParams.viewRevisionHistory;\r\n }\r\n return params;\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n const getOldestBillingMonth$ = this.commonDataBillingMonthService.getOldest()\r\n .pipe(\r\n tap(oldestBillingMonth => this.model.oldestBillingMonth = oldestBillingMonth)\r\n );\r\n\r\n const getOpenBillingMonth$ = this.commonDataBillingMonthService.getOpen()\r\n .pipe(\r\n tap(openBillingMonth => this.model.openBillingMonth = openBillingMonth)\r\n );\r\n\r\n const getPreliminaryBillingMonth$ = this.commonDataBillingMonthService.getPreliminary()\r\n .pipe(\r\n tap(preliminaryBillingMonth => this.model.preliminaryBillingMonth = preliminaryBillingMonth)\r\n );\r\n\r\n const getNewestBillingMonth$ = this.commonDataBillingMonthService.getNewest()\r\n .pipe(\r\n tap(newestBillingMonth => this.model.newestBillingMonth = newestBillingMonth)\r\n );\r\n\r\n const getEnterprises$ = this.queryEnterprises();\r\n\r\n const serviceRequests$: any[] = [getOldestBillingMonth$, getOpenBillingMonth$, getPreliminaryBillingMonth$, getNewestBillingMonth$, getEnterprises$];\r\n\r\n if(this.userService.user.isExternalUser) {\r\n const getLastInvoiceRecipientInvoiceBillingMonth$ = this.invoicingInvoicePackageService.getLastInvoiceRecipientInvoiceBillingMonth(this.userService.user.enterpriseId)\r\n .pipe(\r\n tap(lastInvoiceRecipientInvoiceBillingMonth => this.model.lastInvoiceRecipientInvoiceBillingMonth = lastInvoiceRecipientInvoiceBillingMonth)\r\n );\r\n\r\n serviceRequests$.push(getLastInvoiceRecipientInvoiceBillingMonth$);\r\n }\r\n\r\n return forkJoin(serviceRequests$)\r\n .pipe(\r\n tap(() => {\r\n this.model.minGasMonth = this.model.oldestBillingMonth.gasMonth;\r\n this.model.maxGasMonth = this.model.preliminaryBillingMonth ? this.model.preliminaryBillingMonth.gasMonth : this.model.openBillingMonth.gasMonth;\r\n\r\n // For external users, the gas month should be the one where they have invoices generated\r\n if(this.userService.user.isExternalUser && !_.isNil(this.model.lastInvoiceRecipientInvoiceBillingMonth)) {\r\n this.model.maxGasMonth = !_.isNil(this.model.lastInvoiceRecipientInvoiceBillingMonth.invoiceRecipientLastInvoiceBillingMonth)\r\n ? this.model.lastInvoiceRecipientInvoiceBillingMonth.invoiceRecipientLastInvoiceBillingMonth\r\n : this.model.maxGasMonth;\r\n\r\n this.model.searchParams.startBillingMonth = this.model.searchParams.endBillingMonth = this.model.maxGasMonth;\r\n }\r\n })\r\n );\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n const queryInvoiceRecipients$ = this.queryInvoiceRecipients();\r\n\r\n return forkJoin([queryInvoiceRecipients$]);\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n this.model.searchResults = null; // Reset Data Grid\r\n this.model.expandAll = false;\r\n this.model.hasExpandedAll = false;\r\n const queryInvoicePackages$ = this.queryInvoicePackages();\r\n\r\n return forkJoin([queryInvoicePackages$]);\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams = new ViewInvoiceSearchParams();\r\n this.model.searchParams.startBillingMonth = this.model.searchParams.endBillingMonth = this.model.openBillingMonth.gasMonth.isGreaterThan(this.model.maxGasMonth)\r\n ? this.model.maxGasMonth\r\n : this.model.openBillingMonth.gasMonth;\r\n this.model.searchParams.searchByType = 'Customer';\r\n this.model.expandAll = false;\r\n this.model.hasExpandedAll = false;\r\n this.model.clearSearchResults();\r\n\r\n this.actionsForExternalUser();\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams = new ViewInvoiceSearchParams();\r\n this.model.searchParams.startBillingMonth = typedParams.asGasMonth('startBillingMonth');\r\n this.model.searchParams.endBillingMonth = typedParams.asGasMonth('endBillingMonth');\r\n this.model.searchParams.customerId = typedParams.asNullableNumber('customer');\r\n this.model.searchParams.arNumber = typedParams.asNullableString('arNumber');\r\n this.model.searchParams.viewRevisionHistory = typedParams.asBoolean('viewRevisionHistory');\r\n this.model.searchParams.searchByType = !_.isNil(this.model.searchParams.arNumber) ? 'ArNumber' : 'Customer';\r\n\r\n this.actionsForExternalUser();\r\n }\r\n\r\n downloadAll(): void {\r\n this.invoicingInvoicePackageService\r\n .getAllInvoicePackages(this.model.lastSearchParams.startBillingMonth)\r\n .subscribe(zip => this.saveZipFile(zip));\r\n }\r\n\r\n onStartBillingMonthChanged() {\r\n this.model.searchParams.endBillingMonth = this.model.searchParams.startBillingMonth;\r\n }\r\n\r\n exportSummaryCsv(): void {\r\n const csvData = [];\r\n _.forEach(this.model.searchResults, x => {\r\n csvData.push({\r\n billingMonth: x.billingMonth,\r\n invoiceRecipient: x['invoiceRecipientShortName'],\r\n total: x.total\r\n });\r\n });\r\n\r\n const filename = 'Invoice-Summary.csv';\r\n const headers = ['Billing Month', 'Invoice Recipient', 'Total ($CDN)'];\r\n const columns = ['billingMonth', 'invoiceRecipient', 'total'];\r\n\r\n this.fileService.downloadCsvFile(filename, csvData, headers, columns);\r\n }\r\n\r\n exportDetailsCsv(): void {\r\n const csvData = [];\r\n this.getDetailsForExport(this.model.searchResults).subscribe(() => {\r\n _.forEach(this.model.searchResults, x => {\r\n _.forEach(x['invoicesForRecipient'], is => {\r\n _.forEach(is.invoiceDetails, id => {\r\n csvData.push({\r\n billingMonth: x.billingMonth,\r\n invoiceRecipient: x['invoiceRecipientShortName'],\r\n customerName: is['customerShortName'],\r\n invoiceNumber: is.invoiceNumber,\r\n invoiceGroup: id.invoiceGroup > 0 ? id.invoiceGroup : 'Customer Manual Adjustment',\r\n nominationGroup: id.nomGroupMnemonic,\r\n detailTotal: id.total\r\n });\r\n });\r\n });\r\n });\r\n\r\n const filename = 'Invoice-Details.csv';\r\n const headers = ['Billing Month', 'Invoice Recipient', 'Customer Name', 'Invoice Number', 'Invoice Group', 'Nomination Group', 'Invoice Detail Total ($CDN)'];\r\n const columns = ['billingMonth', 'invoiceRecipient', 'customerName', 'invoiceNumber', 'invoiceGroup', 'nominationGroup', 'detailTotal'];\r\n\r\n this.fileService.downloadCsvFile(filename, csvData, headers, columns);\r\n });\r\n }\r\n\r\n private getDetailsForExport(invoicePackages: InvoicePackage[]): Observable {\r\n const detailCsvCalls: Observable[] = [];\r\n\r\n for (const invoicePackage of invoicePackages) {\r\n detailCsvCalls.push(this.queryInvoicesForRecipient(invoicePackage).pipe(\r\n tap(invoiceSummaries => invoicePackage['invoicesForRecipient'] = invoiceSummaries)\r\n ));\r\n }\r\n\r\n return forkJoin(detailCsvCalls)\r\n .pipe(\r\n concatMap(() => of(invoicePackages))\r\n );\r\n }\r\n\r\n public viewInvoicePackagePdfClicked(rowData: any): void {\r\n const invoicePackage = rowData as InvoicePackage;\r\n\r\n this.invoicingInvoicePackageService\r\n .getInvoicePackagePdf(invoicePackage.billingMonth, invoicePackage.invoiceRecipientId, invoicePackage.revision)\r\n .subscribe(pdf => this.openNewTabForPdf(pdf));\r\n }\r\n\r\n public downloadInvoicePackagePdfClicked(rowData: any): void {\r\n const invoicePackage = rowData as InvoicePackage;\r\n\r\n this.invoicingInvoicePackageService\r\n .getInvoicePackagePdf(invoicePackage.billingMonth, invoicePackage.invoiceRecipientId, invoicePackage.revision)\r\n .subscribe(pdf => this.savePdfFile(pdf));\r\n }\r\n\r\n public downloadInvoicePackagePdfWithReportsClicked(rowData: any): void {\r\n const invoicePackage = rowData as InvoicePackage;\r\n\r\n this.invoicingInvoicePackageService\r\n .getInvoicePackagePdf(invoicePackage.billingMonth, invoicePackage.invoiceRecipientId, invoicePackage.revision, true)\r\n .subscribe(pdf => this.savePdfFile(pdf));\r\n }\r\n\r\n public downloadInvoicePackageChargesCsvClicked(rowData: any): void {\r\n const invoicePackage = rowData as InvoicePackage;\r\n\r\n this.invoicingInvoicePackageService\r\n .getInvoicePackageChargesCsv(invoicePackage.billingMonth, invoicePackage.invoiceRecipientId)\r\n .subscribe(csv => this.saveCsvFile(csv));\r\n }\r\n\r\n public viewInvoicePdfClicked(rowData: any, bookmark?: string): void {\r\n const invoiceSummary = rowData as InvoiceSummary;\r\n\r\n this.invoicingInvoicePackageService\r\n .getInvoicePdf(invoiceSummary.invoiceNumber, invoiceSummary.revision)\r\n .subscribe(pdf => this.openNewTabForPdf(pdf, bookmark));\r\n }\r\n\r\n public downloadInvoicePdfClicked(rowData: any): void {\r\n const invoiceSummary = rowData as InvoiceSummary;\r\n\r\n this.invoicingInvoicePackageService\r\n .getInvoicePdf(invoiceSummary.invoiceNumber, invoiceSummary.revision)\r\n .subscribe(pdf => this.savePdfFile(pdf));\r\n }\r\n\r\n public downloadInvoiceCsvClicked(invoicePackage: InvoicePackage, rowData: any): void {\r\n const invoiceSummary = rowData as InvoiceSummary;\r\n\r\n this.invoicingInvoicePackageService\r\n .getInvoicePackageChargesCsv(invoicePackage.billingMonth, invoicePackage.invoiceRecipientId, invoiceSummary.customerId)\r\n .subscribe(csv => this.saveCsvFile(csv));\r\n }\r\n\r\n private queryInvoicePackages(): Observable {\r\n return this.invoicingInvoicePackageService.queryInvoicePackages(\r\n this.model.lastSearchParams.startBillingMonth,\r\n this.model.lastSearchParams.endBillingMonth,\r\n this.model.lastSearchParams.arNumber,\r\n this.model.lastSearchParams.viewRevisionHistory,\r\n this.model.lastSearchParams.customerId\r\n )\r\n .pipe(\r\n concatMap(invoicePackages => this.enterpriseEnrichmentService.enrichArray(invoicePackages, 'invoiceRecipientId', 'invoiceRecipient')),\r\n tap(invoicePackages => {\r\n this.model.searchResults = _.orderBy(invoicePackages, x => x['invoiceRecipientShortName']);\r\n this.model.typeResults = this.getNumberOfRecordsOfEachType(invoicePackages);\r\n })\r\n );\r\n }\r\n\r\n private getNumberOfRecordsOfEachType(invoicePackages: InvoicePackage[]): string {\r\n const statusGroups = _.groupBy(invoicePackages, 'status');\r\n const types = _.map(statusGroups, (groupItems, groupKey) => {\r\n return groupKey + ': ' + groupItems.length;\r\n });\r\n types.sort();\r\n return types.join(', ');\r\n }\r\n\r\n private queryInvoiceRecipients(): Observable {\r\n return this.invoicingInvoicePackageService.queryInvoiceRecipients(this.model.oldestBillingMonth.gasMonth, this.model.newestBillingMonth.gasMonth)\r\n .pipe(\r\n concatMap(invoiceRecipients => this.enterpriseEnrichmentService.enrichArray(invoiceRecipients, 'id')),\r\n tap(invoiceRecipients => {\r\n this.model.customers = _.orderBy(invoiceRecipients, x => x.shortName);\r\n this.model.arNumbers = _.uniqBy(_.orderBy(_.intersectionWith(this.model.arNumbers, invoiceRecipients, (enterprise, invoiceRecipient) => {\r\n return enterprise.cid === invoiceRecipient.id && !_.isNil(enterprise.sapNumber);\r\n }), x => x.sapNumber), x => x.sapNumber);\r\n })\r\n );\r\n }\r\n\r\n private queryEnterprises(): Observable {\r\n return this.enterpriseService.getAll()\r\n .pipe(\r\n tap(enterprises => {\r\n this.model.arNumbers = enterprises;\r\n })\r\n );\r\n }\r\n\r\n private paramValidator(): ParamValidator {\r\n return ParamValidator.Standard();\r\n }\r\n\r\n calculateInvoiceGroupSortValue = (rowData: InvoiceDetail) => {\r\n return rowData.invoiceGroup > 0 ? rowData.invoiceGroup.toString() : 'Customer Manual Adjustment';\r\n };\r\n\r\n customSortingFunction = (rowData: InvoicePackage) => {\r\n return this.sortingService.getSortDateValue('billingMonth', rowData.billingMonth.toDate, rowData, this.dataGrid.instance);\r\n };\r\n\r\n private actionsForExternalUser(): void {\r\n this.model.isExternalUser = this.userService.user.isExternalUser;\r\n if(this.model.isExternalUser) {\r\n this.model.searchParams.customerId = this.userService.user.enterpriseId;\r\n }\r\n }\r\n}\r\n","import * as _ from \"lodash\";\r\nimport {BaseViewModel} from \"@model/base-view-model\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport {CommonDataLocation} from \"@shared/services/common-data/location/location.service\";\r\nimport {CumulativeLbaExcessQuantitySummary, DailyLbaExcessQuantitySummary, LbaExcessComment, LbaExcessQuantity} from \"@shared/services/flowing-gas/lba-excess-quantity/lba-excess-quantity.service\";\r\n\r\nexport class OverrideLbaExcessQuantityModel extends BaseViewModel {\r\n isInEditMode: boolean = false;\r\n hasUnsavedChanges: boolean = false;\r\n selectedTabIndex: number = 0;\r\n\r\n oldestBillingMonth: BillingMonth;\r\n openBillingMonth: BillingMonth;\r\n\r\n locations: CommonDataLocation[];\r\n\r\n searchParams: OverrideLbaExcessQuantitySearchParams = new OverrideLbaExcessQuantitySearchParams();\r\n lastSearchParams: OverrideLbaExcessQuantitySearchParams;\r\n\r\n dailyVarianceResults: DailyLbaExcessQuantitySummary[];\r\n cumulativeVarianceResults: CumulativeLbaExcessQuantitySummary[];\r\n commentsResults: LbaExcessComment[];\r\n\r\n saveComment: string;\r\n\r\n public hasSearchResults(): boolean {\r\n return !_.isNil(this.dailyVarianceResults) && !_.isNil(this.cumulativeVarianceResults) && !_.isNil(this.commentsResults);\r\n }\r\n\r\n public clearSearchResults(): void {\r\n this.dailyVarianceResults = this.cumulativeVarianceResults = this.commentsResults = null;\r\n }\r\n\r\n public dailyTier1OverrideSum(): number {\r\n return this.sumTier(_.map(this.dailyVarianceResults, x => x.tier1));\r\n }\r\n\r\n public dailyTier2OverrideSum(): number {\r\n return this.sumTier(_.map(this.dailyVarianceResults, x => x.tier2));\r\n }\r\n\r\n public dailyTier3OverrideSum(): number {\r\n return this.sumTier(_.map(this.dailyVarianceResults, x => x.tier3));\r\n }\r\n\r\n public dailyTier4OverrideSum(): number {\r\n return this.sumTier(_.map(this.dailyVarianceResults, x => x.tier4));\r\n }\r\n\r\n public cumulativeTier1OverrideSum(): number {\r\n return this.sumTier(_.map(this.cumulativeVarianceResults, x => x.tier1));\r\n }\r\n\r\n public cumulativeTier2OverrideSum(): number {\r\n return this.sumTier(_.map(this.cumulativeVarianceResults, x => x.tier2));\r\n }\r\n\r\n private sumTier(tierValues: LbaExcessQuantity[]): number {\r\n let total: number = 0;\r\n\r\n _.forEach(tierValues, tierValue => {\r\n total += !_.isNil(tierValue.override)\r\n ? +tierValue.override\r\n : tierValue.excessQuantity;\r\n });\r\n\r\n return total;\r\n }\r\n\r\n public getAllDailyLbaExcessQuantities(): LbaExcessQuantity[] {\r\n const lbaExcessQuantities: LbaExcessQuantity[] = [];\r\n\r\n _.forEach(this.dailyVarianceResults, dailyVariance => {\r\n lbaExcessQuantities.push(dailyVariance.tier1);\r\n lbaExcessQuantities.push(dailyVariance.tier2);\r\n lbaExcessQuantities.push(dailyVariance.tier3);\r\n lbaExcessQuantities.push(dailyVariance.tier4);\r\n });\r\n\r\n return lbaExcessQuantities;\r\n }\r\n\r\n public getAllCumulativeLbaExcessQuantities(): LbaExcessQuantity[] {\r\n const lbaExcessQuantities: LbaExcessQuantity[] = [];\r\n\r\n _.forEach(this.cumulativeVarianceResults, dailyVariance => {\r\n lbaExcessQuantities.push(dailyVariance.tier1);\r\n lbaExcessQuantities.push(dailyVariance.tier2);\r\n });\r\n\r\n return lbaExcessQuantities;\r\n }\r\n}\r\n\r\nexport class OverrideLbaExcessQuantitySearchParams {\r\n affectedBillingMonth: GasMonth;\r\n billingMonth: GasMonth;\r\n locationId: number;\r\n}\r\n","
\r\n
\r\n
0\" class=\"pull-right\">\r\n Export CSV\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n TOTAL\r\n
\r\n \r\n
\r\n {{ data.value | gasDayFormat }}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n","import * as _ from \"lodash\";\r\nimport {Component, Input, ViewChild} from \"@angular/core\";\r\nimport {OverrideLbaExcessQuantityModel} from \"app/gcts/invoicing/override-lba-excess-quantity/override-lba-excess-quantity.model\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\n\r\n@Component({\r\n selector: 'app-daily-lba-excess-quantity-tab',\r\n templateUrl: './daily-lba-excess-quantity-tab.component.html',\r\n styleUrls: ['./daily-lba-excess-quantity-tab.component.css']\r\n})\r\nexport class DailyLbaExcessQuantityTabComponent {\r\n private static EDITABLE_FIELDS: string[] = ['tier1.override', 'tier2.override', 'tier3.override', 'tier4.override'];\r\n\r\n @Input() model: OverrideLbaExcessQuantityModel;\r\n @ViewChild(DxDataGridComponent) dataGridComponent: DxDataGridComponent;\r\n\r\n constructor(private fileService: FileService) {\r\n }\r\n\r\n public onEditorPrepared($event: any): void {\r\n if(!_.some(DailyLbaExcessQuantityTabComponent.EDITABLE_FIELDS, field => field === $event.dataField)) return;\r\n\r\n $event.editorElement.oninput = () => this.model.hasUnsavedChanges = true;\r\n }\r\n\r\n public dailyTier1OverrideSumAsString = (): string => {\r\n return this.model.dailyTier1OverrideSum().toLocaleString();\r\n };\r\n\r\n public dailyTier2OverrideSumAsString = (): string => {\r\n return this.model.dailyTier2OverrideSum().toLocaleString();\r\n };\r\n\r\n public dailyTier3OverrideSumAsString = (): string => {\r\n return this.model.dailyTier3OverrideSum().toLocaleString();\r\n };\r\n\r\n public dailyTier4OverrideSumAsString = (): string => {\r\n return this.model.dailyTier4OverrideSum().toLocaleString();\r\n };\r\n\r\n public exportCsvClicked(): void {\r\n const csvExport = _.map(this.model.dailyVarianceResults, dailyLbaExcessQuantity => ({\r\n gasDay: dailyLbaExcessQuantity.gasDay.toCsvFormat(),\r\n tier1Quantity: dailyLbaExcessQuantity.tier1.excessQuantity,\r\n tier1Override: dailyLbaExcessQuantity.tier1.override,\r\n tier2Quantity: dailyLbaExcessQuantity.tier2.excessQuantity,\r\n tier2Override: dailyLbaExcessQuantity.tier2.override,\r\n tier3Quantity: dailyLbaExcessQuantity.tier3.excessQuantity,\r\n tier3Override: dailyLbaExcessQuantity.tier3.override,\r\n tier4Quantity: dailyLbaExcessQuantity.tier4.excessQuantity,\r\n tier4Override: dailyLbaExcessQuantity.tier4.override\r\n }));\r\n\r\n const locationName = _.find(this.model.locations, location => location.id === this.model.lastSearchParams.locationId).name;\r\n const fileName = `LBAExcessQuantity_Daily_${locationName}_BillingMonth${this.model.lastSearchParams.billingMonth.toString()}_AffectedMonth${this.model.lastSearchParams.affectedBillingMonth.toString()}.csv`;\r\n const headers = ['Gas Day', 'LBD2 Quantity', 'LBD2 Override', 'LBD4 Quantity', 'LBD4 Override', 'LBD8 Quantity', 'LBD8 Override', 'LBD10 Quantity', 'LBD10 Override'];\r\n const columns = ['gasDay', 'tier1Quantity', 'tier1Override', 'tier2Quantity', 'tier2Override', 'tier3Quantity', 'tier3Override', 'tier4Quantity', 'tier4Override'];\r\n\r\n this.fileService.downloadCsvFile(fileName, csvExport, headers, columns);\r\n }\r\n\r\n public cancelEditMode(): void {\r\n if(!this.dataGridComponent) return;\r\n\r\n this.dataGridComponent.instance.cancelEditData();\r\n }\r\n}\r\n","
\r\n
\r\n
0\" class=\"pull-right\">\r\n Export CSV\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n TOTAL\r\n
\r\n \r\n
\r\n {{ data.value | gasDayFormat }}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n","import {Component, Input} from \"@angular/core\";\r\nimport {OverrideLbaExcessQuantityModel} from \"app/gcts/invoicing/override-lba-excess-quantity/override-lba-excess-quantity.model\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport * as _ from \"lodash\";\r\n\r\n@Component({\r\n selector: 'app-cumulative-lba-excess-quantity-tab',\r\n templateUrl: './cumulative-lba-excess-quantity-tab.component.html',\r\n styleUrls: ['./cumulative-lba-excess-quantity-tab.component.css']\r\n})\r\nexport class CumulativeLbaExcessQuantityTabComponent {\r\n private static EDITABLE_FIELDS: string[] = ['tier1.override', 'tier2.override'];\r\n\r\n @Input() model: OverrideLbaExcessQuantityModel;\r\n\r\n constructor(private fileService: FileService) {\r\n }\r\n\r\n public onEditorPrepared($event: any): void {\r\n if(!_.some(CumulativeLbaExcessQuantityTabComponent.EDITABLE_FIELDS, field => field === $event.dataField)) return;\r\n\r\n $event.editorElement.oninput = () => this.model.hasUnsavedChanges = true;\r\n }\r\n\r\n public cumulativeTier1OverrideSumAsString = (): string => {\r\n return this.model.cumulativeTier1OverrideSum().toLocaleString();\r\n };\r\n\r\n public cumulativeTier2OverrideSumAsString = (): string => {\r\n return this.model.cumulativeTier2OverrideSum().toLocaleString();\r\n };\r\n\r\n public exportCsvClicked(): void {\r\n const csvExport = _.map(this.model.cumulativeVarianceResults, cumulativeLbaExcessQuantity => ({\r\n gasDay: cumulativeLbaExcessQuantity.gasDay.toCsvFormat(),\r\n tier1Quantity: cumulativeLbaExcessQuantity.tier1.excessQuantity,\r\n tier1Override: cumulativeLbaExcessQuantity.tier1.override,\r\n tier2Quantity: cumulativeLbaExcessQuantity.tier2.excessQuantity,\r\n tier2Override: cumulativeLbaExcessQuantity.tier2.override\r\n }));\r\n\r\n const locationName = _.find(this.model.locations, location => location.id === this.model.lastSearchParams.locationId).name;\r\n const fileName = `LBAExcessQuantity_Cumulative_${locationName}_BillingMonth${this.model.lastSearchParams.billingMonth.toString()}_AffectedMonth${this.model.lastSearchParams.affectedBillingMonth.toString()}.csv`;\r\n const headers = ['Gas Day', 'LBC4 Quantity', 'LBC4 Override', 'LBC6 Quantity', 'LBC6 Override'];\r\n const columns = ['gasDay', 'tier1Quantity', 'tier1Override', 'tier2Quantity', 'tier2Override'];\r\n\r\n this.fileService.downloadCsvFile(fileName, csvExport, headers, columns);\r\n }\r\n}\r\n","import * as _ from \"lodash\";\r\nimport {Injectable} from \"@angular/core\";\r\nimport {FlowinggasResourceService} from \"@shared/resources/flowinggas-resource.service\";\r\nimport {DateTime} from \"@model/date-time\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {Observable} from \"rxjs\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {map} from \"rxjs/operators\";\r\n\r\n@Injectable()\r\nexport class LbaExcessQuantityService {\r\n constructor(private flowingGasResource: FlowinggasResourceService) {\r\n }\r\n\r\n public queryDailyLbaExcessQuantities(affectedGasMonth: GasMonth, billingMonth: GasMonth, locationId: number): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setGasMonth(affectedGasMonth, 'affectedGasMonth');\r\n params.setGasMonth(billingMonth, 'gasMonth');\r\n params.setNumber('locationId', locationId);\r\n\r\n return this.flowingGasResource.get('/dailylbaexcessquantity', true, params)\r\n .pipe(\r\n map(dtos => _.map(dtos, dto => DailyLbaExcessQuantitySummary.create(dto)))\r\n );\r\n }\r\n\r\n public queryCumulativeLbaExcessQuantities(affectedGasMonth: GasMonth, billingMonth: GasMonth, locationId: number): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setGasMonth(affectedGasMonth, 'affectedGasMonth');\r\n params.setGasMonth(billingMonth, 'gasMonth');\r\n params.setNumber('locationId', locationId);\r\n\r\n return this.flowingGasResource.get('/cumulativelbaexcessquantity', true, params)\r\n .pipe(\r\n map(dtos => _.map(dtos, dto => CumulativeLbaExcessQuantitySummary.create(dto)))\r\n );\r\n }\r\n\r\n public queryLbaExcessComments(affectedGasMonth: GasMonth, billingMonth: GasMonth, locationId: number): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setGasMonth(affectedGasMonth, 'affectedGasMonth');\r\n params.setGasMonth(billingMonth, 'gasMonth');\r\n params.setNumber('locationId', locationId);\r\n\r\n return this.flowingGasResource.get('/lbaexcesscomments', true, params)\r\n .pipe(\r\n map(dtos => _.map(dtos, dto => LbaExcessComment.create(dto)))\r\n );\r\n }\r\n\r\n public postLbaExcessQuantities(billingMonth: GasMonth, locationId: number, saveComment: string, lbaExcessQuantities: LbaExcessQuantity[]): Observable {\r\n const body = {\r\n billingMonth: billingMonth.toString(),\r\n locationId: locationId,\r\n comment: saveComment,\r\n rawExcessOverrides: lbaExcessQuantities\r\n };\r\n\r\n return this.flowingGasResource.postWithNoResponseBody('/job/lbaexcessquantity', body);\r\n }\r\n}\r\n\r\nexport interface ILbaExcessQuantitySummaryResponse {\r\n locationId: number;\r\n gasDay: string;\r\n}\r\n\r\nexport interface IDailyLbaExcessQuantitySummaryResponse extends ILbaExcessQuantitySummaryResponse {\r\n tier1: ILbaExcessQuantityResponse;\r\n tier2: ILbaExcessQuantityResponse;\r\n tier3: ILbaExcessQuantityResponse;\r\n tier4: ILbaExcessQuantityResponse;\r\n}\r\n\r\nexport interface ICumulativeLbaExcessQuantitySummaryResponse extends ILbaExcessQuantitySummaryResponse {\r\n tier1: ILbaExcessQuantityResponse;\r\n tier2: ILbaExcessQuantityResponse;\r\n}\r\n\r\nexport interface ILbaExcessQuantityResponse {\r\n id: number;\r\n override: string;\r\n excessQuantity: number;\r\n version: number;\r\n}\r\n\r\nexport abstract class BaseLbaExcessQuantitySummary {\r\n locationId: number;\r\n gasDay: GasDay;\r\n}\r\n\r\nexport class DailyLbaExcessQuantitySummary extends BaseLbaExcessQuantitySummary {\r\n tier1: LbaExcessQuantity;\r\n tier2: LbaExcessQuantity;\r\n tier3: LbaExcessQuantity;\r\n tier4: LbaExcessQuantity;\r\n\r\n public static create(dto: IDailyLbaExcessQuantitySummaryResponse): DailyLbaExcessQuantitySummary {\r\n const dailyLbaExcessQuantitySummary = new DailyLbaExcessQuantitySummary();\r\n\r\n dailyLbaExcessQuantitySummary.locationId = dto.locationId;\r\n dailyLbaExcessQuantitySummary.gasDay = GasDay.parse(dto.gasDay);\r\n dailyLbaExcessQuantitySummary.tier1 = LbaExcessQuantity.create(dto.tier1);\r\n dailyLbaExcessQuantitySummary.tier2 = LbaExcessQuantity.create(dto.tier2);\r\n dailyLbaExcessQuantitySummary.tier3 = LbaExcessQuantity.create(dto.tier3);\r\n dailyLbaExcessQuantitySummary.tier4 = LbaExcessQuantity.create(dto.tier4);\r\n\r\n return dailyLbaExcessQuantitySummary;\r\n }\r\n}\r\n\r\nexport class CumulativeLbaExcessQuantitySummary extends BaseLbaExcessQuantitySummary {\r\n tier1: LbaExcessQuantity;\r\n tier2: LbaExcessQuantity;\r\n\r\n public static create(dto: ICumulativeLbaExcessQuantitySummaryResponse): CumulativeLbaExcessQuantitySummary {\r\n const cumulativeLbaExcessQuantitySummary = new CumulativeLbaExcessQuantitySummary();\r\n\r\n cumulativeLbaExcessQuantitySummary.locationId = dto.locationId;\r\n cumulativeLbaExcessQuantitySummary.gasDay = GasDay.parse(dto.gasDay);\r\n cumulativeLbaExcessQuantitySummary.tier1 = LbaExcessQuantity.create(dto.tier1);\r\n cumulativeLbaExcessQuantitySummary.tier2 = LbaExcessQuantity.create(dto.tier2);\r\n\r\n return cumulativeLbaExcessQuantitySummary;\r\n }\r\n}\r\n\r\nexport interface ILbaExcessCommentResponse {\r\n locationId: number;\r\n userId: string;\r\n timeStamp: string;\r\n comment: string;\r\n}\r\n\r\nexport class LbaExcessComment {\r\n locationId: number;\r\n userId: string;\r\n timeStamp: DateTime;\r\n comment: string;\r\n\r\n constructor(locationId: number, userId: string, timeStamp: DateTime, comment: string) {\r\n this.locationId = locationId;\r\n this.userId = userId;\r\n this.timeStamp = timeStamp;\r\n this.comment = comment;\r\n }\r\n\r\n public static create(dto: ILbaExcessCommentResponse): LbaExcessComment {\r\n return new LbaExcessComment(dto.locationId, dto.userId, DateTime.parse(dto.timeStamp), dto.comment);\r\n }\r\n}\r\n\r\nexport class LbaExcessQuantity {\r\n id: number;\r\n override?: number;\r\n excessQuantity: number;\r\n version: number;\r\n\r\n constructor(id: number, override: number = null, excessQuantity: number, version: number) {\r\n this.id = id;\r\n this.override = override;\r\n this.excessQuantity = excessQuantity;\r\n this.version = version;\r\n }\r\n\r\n public static create(dto: ILbaExcessQuantityResponse): LbaExcessQuantity {\r\n const overrideValue = !_.isNil(dto.override) && dto.override !== '' ? +dto.override : null;\r\n return new LbaExcessQuantity(dto.id, overrideValue, dto.excessQuantity, dto.version);\r\n }\r\n}\r\n","
\r\n
\r\n  \r\n
\r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n
\r\n {{cellInfo.value.toDate() | dateFormat:'YYYY-MMM-DD hh:mm A'}}\r\n
\r\n \r\n \r\n \r\n
\r\n","import {Component, Input} from \"@angular/core\";\r\nimport {OverrideLbaExcessQuantityModel} from \"app/gcts/invoicing/override-lba-excess-quantity/override-lba-excess-quantity.model\";\r\n\r\n@Component({\r\n selector: 'app-lba-excess-comments-tab',\r\n templateUrl: './lba-excess-comments-tab.component.html',\r\n styleUrls: ['./lba-excess-comments-tab.component.css']\r\n})\r\nexport class LbaExcessCommentsTabComponent {\r\n @Input() model: OverrideLbaExcessQuantityModel;\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
You are about to save all {{ this.model.selectedTabIndex === 0 ? 'Daily' : 'Cumulative' }} Variance changes. Comment is optional.
\r\n\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Affected Month: {{model.lastSearchParams?.affectedBillingMonth}}\r\n Billing Month: {{model.lastSearchParams?.billingMonth}}\r\n Location: {{model.lastSearchParams?.locationId | displayName: 'id' : 'name' : model.locations}}\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.affectedBillingMonth}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.locationId | displayName: 'id' : 'name' : model.locations}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.billingMonth}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.locationId | displayName: 'id' : 'operatorDisplayName' : model.locations}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n","import * as _ from \"lodash\";\r\nimport {Component, ViewChild} from \"@angular/core\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {forkJoin, Observable, of} from \"rxjs\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {OverrideLbaExcessQuantityModel, OverrideLbaExcessQuantitySearchParams} from \"app/gcts/invoicing/override-lba-excess-quantity/override-lba-excess-quantity.model\";\r\nimport {tap} from \"rxjs/operators\";\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {CommonDataLocation, LocationSearchRequest, LocationService} from \"@shared/services/common-data/location/location.service\";\r\nimport {LbaExcessQuantityService} from \"@shared/services/flowing-gas/lba-excess-quantity/lba-excess-quantity.service\";\r\nimport {DailyLbaExcessQuantityTabComponent} from \"app/gcts/invoicing/override-lba-excess-quantity/daily-lba-excess-quantity-tab/daily-lba-excess-quantity-tab.component\";\r\nimport {CumulativeLbaExcessQuantityTabComponent} from \"app/gcts/invoicing/override-lba-excess-quantity/cumulative-lba-excess-quantity-tab/cumulative-lba-excess-quantity-tab.component\";\r\nimport {YesNoCancelModalService} from \"@shared/services/webapp/yes-no-cancel-modal/yes-no-cancel-modal.service\";\r\nimport {YesNoModalOptions} from \"@shared/services/webapp/modal-options/yes-no-modal-options\";\r\nimport {SelectedModalOption} from \"@shared/services/webapp/modal-options/selected-modal-option\";\r\nimport {ModalComponent} from \"@shared/components/modal/modal.component\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\n\r\n@Component({\r\n selector: 'app-override-lba-excess-quantity',\r\n templateUrl: './override-lba-excess-quantity.component.html',\r\n styleUrls: ['./override-lba-excess-quantity.component.css']\r\n})\r\nexport class OverrideLbaExcessQuantityComponent extends BaseSearchComponent {\r\n private static PARAM_AFFECTED_BILLING_MONTH: string = 'affectedBillingMonth';\r\n private static PARAM_BILLING_MONTH: string = 'billingMonth';\r\n private static PARAM_LOCATION_ID: string = 'locationId';\r\n\r\n @ViewChild(ModalComponent) saveModal: ModalComponent;\r\n @ViewChild(DailyLbaExcessQuantityTabComponent) dailyLbaExcessQuantityTabComponent: DailyLbaExcessQuantityTabComponent;\r\n @ViewChild(CumulativeLbaExcessQuantityTabComponent) cumulativeLbaExcessQuantityTabComponent: CumulativeLbaExcessQuantityTabComponent;\r\n\r\n model: OverrideLbaExcessQuantityModel = new OverrideLbaExcessQuantityModel();\r\n\r\n tabs = [\r\n {index: 0, title: 'Daily Variance', template: \"dailyVarianceTemplate\", disabled: false},\r\n {index: 1, title: 'Cumulative Variance', template: \"cumulativeVarianceTemplate\", disabled: false},\r\n {index: 2, title: 'Comments', template: \"commentsTemplate\", disabled: false}\r\n ];\r\n\r\n constructor(appService: AppService,\r\n activatedRoute: ActivatedRoute,\r\n router: Router,\r\n alertService: AlertService,\r\n private commonDataBillingMonthService: CommonDataBillingMonthService,\r\n private commonDataLocationService: LocationService,\r\n private lbaExcessQuantityService: LbaExcessQuantityService,\r\n private modalService: YesNoCancelModalService) {\r\n super('Override LBA Excess Quantity', appService, activatedRoute, router, alertService);\r\n }\r\n\r\n /**\r\n * Public Methods\r\n */\r\n\r\n public modalSaveClicked(): void {\r\n const lbaExcessQuantities = this.isDailyTabSelected()\r\n ? this.model.getAllDailyLbaExcessQuantities()\r\n : this.model.getAllCumulativeLbaExcessQuantities();\r\n\r\n this.lbaExcessQuantityService.postLbaExcessQuantities(this.model.lastSearchParams.billingMonth, this.model.lastSearchParams.locationId, this.model.saveComment, lbaExcessQuantities)\r\n .subscribe(() => this.resetPage());\r\n }\r\n\r\n public editClicked(): void {\r\n this.model.isInEditMode = true;\r\n\r\n this.disableTabs();\r\n }\r\n\r\n public saveClicked(): void {\r\n this.saveModal.show();\r\n }\r\n\r\n public cancelClicked(): void {\r\n const yesNoModalOptions = new YesNoModalOptions('Discard Changes', 'Unsaved changes will be lost, would you like to continue?', 'No', 'Yes');\r\n\r\n const cancel$ = this.model.hasUnsavedChanges\r\n ? this.modalService.show(yesNoModalOptions)\r\n : of(SelectedModalOption.Yes);\r\n\r\n cancel$.subscribe(selectedModalOption => {\r\n if(selectedModalOption === SelectedModalOption.Yes) {\r\n if(this.isDailyTabSelected()) {\r\n this.dailyLbaExcessQuantityTabComponent.cancelEditMode();\r\n } else if(this.isCumulativeTabSelected()) {\r\n // this.cumulativeLbaExcessQuantityTabComponent.editMode();\r\n }\r\n\r\n this.resetPage();\r\n }\r\n });\r\n }\r\n\r\n public affectedBillingMonthChanged(): void {\r\n if(_.isNil(this.model.searchParams.affectedBillingMonth)) return;\r\n\r\n this.model.searchParams.billingMonth = this.model.openBillingMonth.gasMonth; // bug/14805 - Always reset the \"Billing Month\" to the open billing month when affected billing month changes\r\n\r\n // Adjust Gas Months Accordingly\r\n if(this.model.searchParams.billingMonth.isLessThan(this.model.searchParams.affectedBillingMonth)) {\r\n this.model.searchParams.billingMonth = this.model.searchParams.affectedBillingMonth;\r\n } else if (this.model.searchParams.billingMonth.isGreaterThan(this.model.openBillingMonth.gasMonth)) {\r\n this.model.searchParams.billingMonth = this.model.openBillingMonth.gasMonth;\r\n }\r\n\r\n this.queryLbaLocations().subscribe(() => {});\r\n }\r\n\r\n /**\r\n * Protected Methods\r\n */\r\n\r\n protected loadInitialResources(): Observable {\r\n const getOldestBillingMonth$ = this.commonDataBillingMonthService.getOldest()\r\n .pipe(\r\n tap(oldestBillingMonth => this.model.oldestBillingMonth = oldestBillingMonth)\r\n );\r\n\r\n const getOpenBillingMonth$ = this.commonDataBillingMonthService.getOpen()\r\n .pipe(\r\n tap(openBillingMonth => this.model.openBillingMonth = openBillingMonth)\r\n );\r\n\r\n return forkJoin([getOldestBillingMonth$, getOpenBillingMonth$]);\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n const paramValidator = ParamValidator.Standard();\r\n\r\n paramValidator.isGasMonth(OverrideLbaExcessQuantityComponent.PARAM_AFFECTED_BILLING_MONTH);\r\n paramValidator.isGasMonth(OverrideLbaExcessQuantityComponent.PARAM_BILLING_MONTH);\r\n paramValidator.isNumber(OverrideLbaExcessQuantityComponent.PARAM_LOCATION_ID);\r\n\r\n return paramValidator.isValid(params);\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.clearSearchResults();\r\n\r\n this.model.searchParams = new OverrideLbaExcessQuantitySearchParams();\r\n this.model.searchParams.affectedBillingMonth = this.model.openBillingMonth.gasMonth;\r\n this.model.searchParams.billingMonth = this.model.openBillingMonth.gasMonth;\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams.affectedBillingMonth = typedParams.asGasMonth(OverrideLbaExcessQuantityComponent.PARAM_AFFECTED_BILLING_MONTH);\r\n this.model.searchParams.billingMonth = typedParams.asGasMonth(OverrideLbaExcessQuantityComponent.PARAM_BILLING_MONTH);\r\n this.model.searchParams.locationId = typedParams.asNumber(OverrideLbaExcessQuantityComponent.PARAM_LOCATION_ID);\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n return this.queryLbaLocations();\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {};\r\n\r\n params[OverrideLbaExcessQuantityComponent.PARAM_AFFECTED_BILLING_MONTH] = this.model.searchParams.affectedBillingMonth;\r\n params[OverrideLbaExcessQuantityComponent.PARAM_BILLING_MONTH] = this.model.searchParams.billingMonth;\r\n params[OverrideLbaExcessQuantityComponent.PARAM_LOCATION_ID] = this.model.searchParams.locationId;\r\n\r\n return params;\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n\r\n const queryDailyLbaExcessQuantities$ = this.lbaExcessQuantityService.queryDailyLbaExcessQuantities(this.model.searchParams.affectedBillingMonth, this.model.searchParams.affectedBillingMonth, this.model.searchParams.locationId)\r\n .pipe(\r\n tap(dailyLbaExcessQuantities => {\r\n this.model.dailyVarianceResults = dailyLbaExcessQuantities;\r\n this.tabs[0].title = `Daily Variance (${dailyLbaExcessQuantities.length})`;\r\n })\r\n );\r\n\r\n const queryCumulativeLbaExcessQuantities$ = this.lbaExcessQuantityService.queryCumulativeLbaExcessQuantities(this.model.searchParams.affectedBillingMonth, this.model.searchParams.affectedBillingMonth, this.model.searchParams.locationId)\r\n .pipe(\r\n tap(cumulativeLbaExcessQuantities => {\r\n this.model.cumulativeVarianceResults = cumulativeLbaExcessQuantities;\r\n this.tabs[1].title = `Cumulative Variance (${cumulativeLbaExcessQuantities.length})`;\r\n })\r\n );\r\n\r\n const queryLbaExcessComments$ = this.lbaExcessQuantityService.queryLbaExcessComments(this.model.searchParams.affectedBillingMonth, this.model.searchParams.affectedBillingMonth, this.model.searchParams.locationId)\r\n .pipe(\r\n tap(lbaExcessComments => {\r\n this.model.commentsResults = lbaExcessComments;\r\n this.tabs[2].title = `Comments (${lbaExcessComments.length})`;\r\n })\r\n );\r\n\r\n return forkJoin([queryDailyLbaExcessQuantities$, queryCumulativeLbaExcessQuantities$, queryLbaExcessComments$]);\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n /**\r\n * Private Methods\r\n */\r\n\r\n private queryLbaLocations(): Observable {\r\n return this.commonDataLocationService.queryLocations(LocationSearchRequest.forLBALocations(this.model.searchParams.affectedBillingMonth.end()))\r\n .pipe(\r\n tap(locations => this.model.locations = _.sortBy(locations, loc => loc.name))\r\n );\r\n }\r\n\r\n private isDailyTabSelected(): boolean {\r\n return this.dailyLbaExcessQuantityTabComponent && this.model.selectedTabIndex === 0;\r\n }\r\n\r\n private isCumulativeTabSelected(): boolean {\r\n return this.cumulativeLbaExcessQuantityTabComponent && this.model.selectedTabIndex === 1;\r\n }\r\n\r\n private disableTabs(): void {\r\n for(const tab of this.tabs) {\r\n tab.disabled = this.model.selectedTabIndex !== tab.index;\r\n }\r\n }\r\n\r\n private enableTabs(): void {\r\n for(const tab of this.tabs) {\r\n tab.disabled = false;\r\n }\r\n }\r\n\r\n /**\r\n * We need to reset the page so that the tabs, data grids, and model states after a save or a cancel from edit mode.\r\n */\r\n private resetPage(): void {\r\n this.model.isInEditMode = false;\r\n this.model.hasUnsavedChanges = false;\r\n this.model.saveComment = null;\r\n\r\n this.enableTabs();\r\n\r\n this.performSearch().subscribe(() => {}); // Reload Data\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {InvoicingResourceService} from \"@shared/resources/invoicing-resource.service\";\r\nimport {Observable} from \"rxjs\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class InvoicingMessageService {\r\n\r\n constructor(private invoicingResource: InvoicingResourceService) {\r\n }\r\n\r\n public queryAllActivities(): Observable {\r\n return this.invoicingResource.get('/messages/activities');\r\n }\r\n\r\n public queryMessages(fromGasMonth: GasMonth, toGasMonth: GasMonth, customerId?: number, activity?: string, messageType?: string, messageContains?: string): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setGasMonth(fromGasMonth, 'fromBillingMonth');\r\n params.setGasMonth(toGasMonth, 'toBillingMonth');\r\n params.setOptionalNumber('customerId', customerId);\r\n params.setOptionalString('activity', activity);\r\n params.setOptionalString('messageType', messageType);\r\n params.setOptionalString('messageContains', messageContains);\r\n\r\n return this.invoicingResource.get('/messages', true, params);\r\n }\r\n}\r\n\r\nexport interface IActivityMessageSearchResult {\r\n activity: string;\r\n billingMonth: string;\r\n customerEnterpriseId: number;\r\n invoiceRecipientEnterpriseId: number;\r\n message: string;\r\n messageType: string;\r\n pipelineCode: string;\r\n timeStamp: string;\r\n}\r\n\r\n\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport * as _ from 'lodash';\r\n\r\n@Pipe({\r\n name: 'filter'\r\n})\r\nexport class FilterPipe implements PipeTransform {\r\n\r\n transform(list: any[], filter: any): any[] {\r\n return _.filter(list, filter);\r\n }\r\n\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n From: {{model.lastSearchParams?.fromBillingMonth}}\r\n To: {{model.lastSearchParams?.toBillingMonth}}\r\n Customer: {{model.lastSearchParams?.customerId | displayName: 'id' : 'displayName' : model.customers}}\r\n
\r\n Message Type: {{model.lastSearchParams.messageType }}\r\n Activity: {{model.lastSearchParams.activity }}\r\n
\r\n Message Contains: {{model.lastSearchParams.messageContains }}\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.fromBillingMonth}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.customerId | displayName: 'id' : 'name' : model.customers | whenEmptyUse : 'All'}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.toBillingMonth}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.messageType | whenEmptyUse: 'All'}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.activity | whenEmptyUse: 'All'}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.messageContains | whenEmptyUse: ''}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n Number of Messages found: {{model.searchResults.length}}\r\n
\r\n Information: {{(model.searchResults | filter : {messageType: 'Information'}).length }}, \r\n Warning: {{(model.searchResults | filter : {messageType: 'Warning'}).length }}, \r\n Error: {{(model.searchResults | filter : {messageType: 'Error'}).length }}\r\n\r\n
0\" class=\"pull-right\">\r\n Export CSV\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n
\r\n {{ row.value | dateFormat : 'YYYY-MMM-DD hh:mm:ss a' }}\r\n
\r\n
\r\n \r\n \r\n
\r\n {{ row.value | displayName: 'id' : 'mnemonic' : model.customers : ''}}\r\n
\r\n
\r\n \r\n
\r\n {{ row.value | displayName: 'id' : 'mnemonic' : model.customers : ''}}\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {forkJoin, Observable} from \"rxjs\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {concatMap, tap} from \"rxjs/operators\";\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {InvoiceRecipient, InvoicingInvoicePackageService} from \"@shared/services/invoicing/invoicing-invoice-package/invoicing-invoice-package.service\";\r\nimport {EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {IActivityMessageSearchResult, InvoicingMessageService} from \"@shared/services/invoicing/invoicing-message/invoicing-message.service\";\r\nimport * as _ from \"lodash\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {Activity, InvoiceBusinessMessagesModel, InvoiceBusinessMessagesSearchParams, MessageTypeEnum} from \"app/gcts/invoicing/invoice-business-messages/invoice-business-messages.model\";\r\nimport * as moment from \"moment\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\n\r\n@Component({\r\n selector: 'app-invoice-business-messages',\r\n templateUrl: './invoice-business-messages.component.html',\r\n styleUrls: ['./invoice-business-messages.component.css']\r\n})\r\nexport class InvoiceBusinessMessagesComponent extends BaseSearchComponent implements OnInit {\r\n private static PARAM_FROM_BILLING_MONTH: string = 'fromBillingMonth';\r\n private static PARAM_TO_BILLING_MONTH: string = 'toBillingMonth';\r\n private static PARAM_CUSTOMER_ENTERPRISE_ID: string = 'customerId';\r\n private static PARAM_MESSAGE_TYPE: string = 'messageType';\r\n private static PARAM_ACTIVITY: string = 'activity';\r\n private static PARAM_MESSAGE_CONTAINS: string = 'messageContains';\r\n\r\n\r\n model: InvoiceBusinessMessagesModel = new InvoiceBusinessMessagesModel();\r\n\r\n constructor(protected appService: AppService,\r\n protected router: Router,\r\n protected activatedRoute: ActivatedRoute,\r\n protected alertService: AlertService,\r\n protected commonDataBillingMonthService: CommonDataBillingMonthService,\r\n protected enterpriseService: EnterpriseService,\r\n private invoicingMessageService: InvoicingMessageService,\r\n private invoicingInvoicePackageService: InvoicingInvoicePackageService,\r\n private enterpriseEnrichmentService: EnterpriseEnrichmentService,\r\n private commonDataEnterpriseService: EnterpriseService,\r\n private fileService: FileService) {\r\n super('Invoice Business Messages', appService, activatedRoute, router, alertService);\r\n\r\n this.enterpriseEnrichmentService.setEnrichmentResource(this.commonDataEnterpriseService);\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n const paramValidator = ParamValidator.Standard();\r\n\r\n paramValidator.isGasMonth(InvoiceBusinessMessagesComponent.PARAM_FROM_BILLING_MONTH);\r\n paramValidator.isGasMonth(InvoiceBusinessMessagesComponent.PARAM_TO_BILLING_MONTH);\r\n paramValidator.isNumber(InvoiceBusinessMessagesComponent.PARAM_CUSTOMER_ENTERPRISE_ID, true);\r\n paramValidator.isString(InvoiceBusinessMessagesComponent.PARAM_MESSAGE_TYPE, true);\r\n paramValidator.isString(InvoiceBusinessMessagesComponent.PARAM_ACTIVITY, true);\r\n paramValidator.isString(InvoiceBusinessMessagesComponent.PARAM_MESSAGE_CONTAINS, true);\r\n\r\n return paramValidator.isValid(params);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {};\r\n params[InvoiceBusinessMessagesComponent.PARAM_FROM_BILLING_MONTH] = this.model.searchParams.fromBillingMonth;\r\n params[InvoiceBusinessMessagesComponent.PARAM_TO_BILLING_MONTH] = this.model.searchParams.toBillingMonth;\r\n params[InvoiceBusinessMessagesComponent.PARAM_CUSTOMER_ENTERPRISE_ID] = this.model.searchParams.customerId;\r\n params[InvoiceBusinessMessagesComponent.PARAM_MESSAGE_TYPE] = this.model.searchParams.messageType;\r\n params[InvoiceBusinessMessagesComponent.PARAM_ACTIVITY] = this.model.searchParams.activity;\r\n params[InvoiceBusinessMessagesComponent.PARAM_MESSAGE_CONTAINS] = this.model.searchParams.messageContains;\r\n return params;\r\n\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n const getOldestBillingMonth$ = this.commonDataBillingMonthService.getOldest()\r\n .pipe(\r\n tap(oldestBillingMonth => this.model.oldestBillingMonth = oldestBillingMonth)\r\n );\r\n\r\n const getOpenBillingMonth$ = this.commonDataBillingMonthService.getOpen()\r\n .pipe(\r\n tap(openBillingMonth => this.model.openBillingMonth = openBillingMonth)\r\n );\r\n\r\n const getPreliminaryBillingMonth$ = this.commonDataBillingMonthService.getPreliminary()\r\n .pipe(\r\n tap(preliminaryBillingMonth => this.model.preliminaryBillingMonth = preliminaryBillingMonth)\r\n );\r\n\r\n const getNewestBillingMonth$ = this.commonDataBillingMonthService.getNewest()\r\n .pipe(\r\n tap(newestBillingMonth => this.model.newestBillingMonth = newestBillingMonth)\r\n );\r\n\r\n const getActivities$ = this.queryActivities();\r\n\r\n return forkJoin([getOldestBillingMonth$, getOpenBillingMonth$, getPreliminaryBillingMonth$, getNewestBillingMonth$, getActivities$])\r\n .pipe(\r\n tap(() => {\r\n this.model.minGasMonth = this.model.oldestBillingMonth.gasMonth;\r\n this.model.maxGasMonth = this.model.preliminaryBillingMonth ? this.model.preliminaryBillingMonth.gasMonth : this.model.openBillingMonth.gasMonth;\r\n })\r\n );\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n const getEnterprises$ = this.queryEnterprises();\r\n return forkJoin([getEnterprises$]);\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n\r\n const searchParams = this.model.searchParams;\r\n return this.invoicingMessageService.queryMessages(\r\n searchParams.fromBillingMonth,\r\n searchParams.toBillingMonth,\r\n searchParams.customerId,\r\n searchParams.activity,\r\n searchParams.messageType,\r\n searchParams.messageContains)\r\n .pipe(\r\n tap(results => this.model.searchResults = results)\r\n );\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams = new InvoiceBusinessMessagesSearchParams();\r\n this.model.searchParams.fromBillingMonth = this.model.openBillingMonth.gasMonth;\r\n this.model.searchParams.toBillingMonth = this.model.openBillingMonth.gasMonth;\r\n this.model.searchResults = null;\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams.fromBillingMonth = typedParams.asGasMonth(InvoiceBusinessMessagesComponent.PARAM_FROM_BILLING_MONTH);\r\n this.model.searchParams.toBillingMonth = typedParams.asGasMonth(InvoiceBusinessMessagesComponent.PARAM_TO_BILLING_MONTH);\r\n this.model.searchParams.customerId = typedParams.asNullableNumber(InvoiceBusinessMessagesComponent.PARAM_CUSTOMER_ENTERPRISE_ID);\r\n this.model.searchParams.messageType = typedParams.asNullableString(InvoiceBusinessMessagesComponent.PARAM_MESSAGE_TYPE);\r\n this.model.searchParams.activity = typedParams.asNullableString(InvoiceBusinessMessagesComponent.PARAM_ACTIVITY);\r\n this.model.searchParams.messageContains = typedParams.asNullableString(InvoiceBusinessMessagesComponent.PARAM_MESSAGE_CONTAINS);\r\n }\r\n\r\n private queryEnterprises(): Observable {\r\n return this.invoicingInvoicePackageService.queryInvoiceRecipients(this.model.oldestBillingMonth.gasMonth, this.model.newestBillingMonth.gasMonth)\r\n .pipe(\r\n concatMap(invoiceRecipients => this.enterpriseEnrichmentService.enrichArray(invoiceRecipients, 'id')),\r\n tap(invoiceRecipients => this.model.customers = _.orderBy(invoiceRecipients, x => x.shortName))\r\n );\r\n }\r\n\r\n private queryActivities(): Observable {\r\n return this.invoicingMessageService.queryAllActivities()\r\n .pipe(\r\n tap(activities => this.model.activities = _.map(activities, a => Activity.create(a)))\r\n );\r\n }\r\n\r\n onStartBillingMonthChanged(): void {\r\n this.model.searchParams.toBillingMonth = this.model.searchParams.fromBillingMonth;\r\n }\r\n\r\n exportCsv(): void {\r\n const enterpriseMnemonicMap = new Map();\r\n _.forEach(this.model.customers, (c: InvoiceRecipient) => enterpriseMnemonicMap.set(c.id, c.mnemonic));\r\n\r\n const csvExport = _.map(this.model.searchResults, (message: IActivityMessageSearchResult) => ({\r\n billingMonth: message.billingMonth,\r\n dateTime: moment(message.timeStamp).format('YYYY-MMM-DD hh:mm:ss a'),\r\n messageType: message.messageType,\r\n invoiceRecipient: message.invoiceRecipientEnterpriseId ? enterpriseMnemonicMap.get(message.invoiceRecipientEnterpriseId) : '',\r\n customer: message.customerEnterpriseId ? enterpriseMnemonicMap.get(message.customerEnterpriseId) : '',\r\n message: message.message,\r\n activity: message.activity\r\n }));\r\n\r\n const fileName = 'BusinessInvoiceMessages.csv';\r\n const headers = ['Billing Month', 'Date / Time', 'Message Type', 'Invoice Recipient', 'Customer', 'Message', 'Activity'];\r\n const columns = ['billingMonth', 'dateTime', 'messageType', 'invoiceRecipient', 'customer', 'message', 'activity'];\r\n\r\n this.fileService.downloadCsvFile(fileName, csvExport, headers, columns);\r\n\r\n }\r\n\r\n onCellPrepared($event: any): void {\r\n if ($event.rowType === 'data' && $event.column.dataField === 'messageType') {\r\n if ($event.value === MessageTypeEnum.Information) {\r\n $event.cellElement.classList.add('info');\r\n }\r\n if ($event.value === MessageTypeEnum.Warning) {\r\n $event.cellElement.classList.add('warn');\r\n }\r\n if ($event.value === MessageTypeEnum.Error) {\r\n $event.cellElement.classList.add('error');\r\n }\r\n }\r\n }\r\n\r\n sortCustomer = (data: IActivityMessageSearchResult) => {\r\n if (_.isNil(data.customerEnterpriseId)) {\r\n return '';\r\n }\r\n\r\n const ir: InvoiceRecipient = _.find(this.model.customers, (c: InvoiceRecipient) => c.id === data.customerEnterpriseId);\r\n return ir?.mnemonic;\r\n };\r\n\r\n sortInvoiceRecipient = (data: IActivityMessageSearchResult) => {\r\n if (_.isNil(data.invoiceRecipientEnterpriseId)) {\r\n return '';\r\n }\r\n const ir: InvoiceRecipient = _.find(this.model.customers, (c: InvoiceRecipient) => c.id === data.invoiceRecipientEnterpriseId);\r\n return ir?.mnemonic;\r\n };\r\n}\r\n","import {BillingMonth} from \"@model/billing-month\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {BaseViewModel} from \"@model/base-view-model\";\r\nimport {InvoicePackage, InvoiceRecipient} from \"@shared/services/invoicing/invoicing-invoice-package/invoicing-invoice-package.service\";\r\nimport * as _ from \"lodash\";\r\nimport {Enterprise} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\n\r\nexport class GenerateChargesModel extends BaseViewModel {\r\n public selectAll: boolean;\r\n\r\n public openBillingMonth: BillingMonth;\r\n public statusGroups: GenerateStatus[];\r\n public invoicePackageStatuses: string[];\r\n public enterprises: Enterprise[];\r\n public invoiceRecipients: InvoiceRecipient[];\r\n\r\n public searchParams: GenerateChargesSearchParams = new GenerateChargesSearchParams();\r\n public lastSearchParams: GenerateChargesSearchParams;\r\n\r\n public searchResults: InvoicePackage[];\r\n public searchResultsSummaryText: string;\r\n}\r\n\r\nexport class GenerateChargesSearchParams {\r\n public billingGasMonth: GasMonth;\r\n public status?: string;\r\n public enterpriseId?: number;\r\n}\r\n\r\nexport class GenerateStatus {\r\n public static INVOICE_PACKAGE_STATUS_COMPLETE_WITH_WARNINGS = 'Complete With Warnings';\r\n public static INVOICE_PACKAGE_STATUS_COMPLETE_WITH_ERRORS = 'Complete With Errors';\r\n public static INVOICE_PACKAGE_STATUS_COMPLETE = 'Complete';\r\n public static INVOICE_PACKAGE_STATUS_GENERATION_REQUIRED = 'Generation Required';\r\n public static INVOICE_PACKAGE_STATUS_PUBLISHED = 'Published';\r\n public static INVOICE_PACKAGE_STATUS_SUBMITTED = 'Submitted';\r\n public static INVOICE_PACKAGE_STATUS_FAILED = 'Failed';\r\n\r\n public static FINISHED_STATUS: GenerateStatus = new GenerateStatus('Finished', ['Complete', 'Complete With Warnings', 'Published']);\r\n\r\n public static isPublishableStatus(status: string) {\r\n return status.toUpperCase() === 'COMPLETE' || status.toUpperCase() === 'COMPLETE WITH WARNINGS';\r\n }\r\n\r\n private readonly _value: string;\r\n private readonly _invoicePackageStatuses: string[];\r\n \r\n constructor(value: string, invoicePackageStatuses: string[]) {\r\n this._value = value;\r\n this._invoicePackageStatuses = invoicePackageStatuses;\r\n }\r\n\r\n public get value(): string {\r\n return this._value;\r\n }\r\n\r\n public get invoicePackageStatuses(): string[] {\r\n return this._invoicePackageStatuses;\r\n }\r\n\r\n // Unfinished needs to be done this way because the original code queries the backend for all statuses\r\n // And then removes the finished status groups to get the unfinished statuses\r\n public static UNFINISHED_STATUS(allStatuses: string[]) : GenerateStatus {\r\n const unfinishedInvoicePackageStatuses = _.difference(allStatuses, this.FINISHED_STATUS._invoicePackageStatuses);\r\n return new GenerateStatus('Unfinished', unfinishedInvoicePackageStatuses);\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Status: {{model.lastSearchParams?.status | displayName: 'value' : 'value' : model.statusGroups }}\r\n Customer: {{model.lastSearchParams?.enterpriseId | displayName: 'id' : 'displayName' : model.invoiceRecipients}}\r\n Billing Month: {{model.lastSearchParams?.billingGasMonth}}\r\n \r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.searchParams.billingGasMonth | gasMonthFormat}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.status | displayName: 'value' : 'value' : model.statusGroups }}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.enterpriseId | displayName: 'id' : 'displayName' : model.invoiceRecipients}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.billingGasMonth}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
Number of results found: {{ model.searchResults.length }}
\r\n
{{model.searchResultsSummaryText}}
\r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n {{cellInfo.data['invoiceRecipientId'] | displayName: 'id' : 'sapNumber' : model.enterprises : ''}}\r\n
\r\n \r\n
\r\n \r\n
\r\n {{cellInfo.value}}\r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n
\r\n {{cellInfo.data['ownerEnterpriseId'] | displayName: 'id' : 'sapNumber' : model.enterprises : ''}}\r\n
\r\n \r\n \r\n\r\n \r\n
\r\n\r\n \r\n
\r\n\r\n
\r\n
\r\n","import {Component, ViewChild} from \"@angular/core\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {forkJoin, Observable, of} from \"rxjs\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {GenerateChargesModel, GenerateChargesSearchParams} from \"app/gcts/invoicing/generate-charges/generate-charges.model\";\r\nimport {concatMap, tap} from \"rxjs/operators\";\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport {EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport * as _ from \"lodash\";\r\nimport {UpdateInvoicePackageRequest, InvoicePackage, InvoiceRecipient, InvoicingInvoicePackageService} from \"@shared/services/invoicing/invoicing-invoice-package/invoicing-invoice-package.service\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {GenerateStatus} from './generate-charges.model';\r\nimport {NominationGroupDto, NominationGroupService, QueryNomGroupsSearchRequest} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\n\r\n@Component({\r\n selector: 'app-generate-charges',\r\n templateUrl: './generate-charges.component.html',\r\n styleUrls: ['./generate-charges.component.css']\r\n})\r\n\r\nexport class GenerateChargesComponent extends BaseSearchComponent{\r\n private static PARAM_BILLING_MONTH: string = 'billingMonth';\r\n private static PARAM_CUSTOMER_ENTERPRISE_ID: string = 'enterpriseId';\r\n private static PARAM_STATUS: string = 'status';\r\n\r\n @ViewChild('generateChargesDataGrid')\r\n public generateChargesDataGrid: DxDataGridComponent;\r\n\r\n public model: GenerateChargesModel = new GenerateChargesModel();\r\n\r\n constructor(protected appService: AppService,\r\n protected activatedRoute: ActivatedRoute,\r\n protected router: Router,\r\n protected alertService: AlertService,\r\n private commonDataBillingMonthService: CommonDataBillingMonthService,\r\n private invoicingInvoicePackageService: InvoicingInvoicePackageService,\r\n private enterpriseEnrichmentService: EnterpriseEnrichmentService,\r\n private commonDataEnterpriseService: EnterpriseService,\r\n private nominationGroupService: NominationGroupService)\r\n {\r\n super('Generate Charges', appService, activatedRoute, router, alertService);\r\n\r\n this.enterpriseEnrichmentService.setEnrichmentResource(this.commonDataEnterpriseService);\r\n }\r\n\r\n /**\r\n * Public Methods\r\n */\r\n\r\n public hasSelectedInvoicePackage(): boolean {\r\n return _.some(this.model.searchResults, x => x['isSelected'] === true);\r\n }\r\n\r\n public submitClicked(): void {\r\n this.alertService.clearMessages();\r\n\r\n const selectedInvoicePackages = _.filter(this.model.searchResults, x => x['isSelected'] === true);\r\n const generateInvoicePackageRequests = _.map(selectedInvoicePackages, (x: InvoicePackage) => new UpdateInvoicePackageRequest(x.pipelineCode, x.billingMonth, x.invoiceRecipientId));\r\n\r\n this.invoicingInvoicePackageService.updateInvoicePackages(generateInvoicePackageRequests)\r\n .pipe(\r\n concatMap(() => this.performSearch())\r\n )\r\n .subscribe(() => {\r\n this.alertService.addSuccessMessage('Submit Successful', `${generateInvoicePackageRequests.length} invoice recipients submitted for charge generation.`);\r\n if(this.model.selectAll){\r\n this.model.selectAll=false; // Kaushik wants the select all toggled off after submit\r\n }\r\n });\r\n\r\n }\r\n\r\n public toggleExpandAll(expandAll: boolean, dataGrid: DxDataGridComponent): void {\r\n // Pre-load Nom Group Data\r\n const queryNomGroups$ = [];\r\n for(const invoicePackage of this.model.searchResults) {\r\n queryNomGroups$.push(this.queryNomGroups(invoicePackage));\r\n }\r\n\r\n forkJoin(queryNomGroups$).subscribe(() => {\r\n if(expandAll) {\r\n dataGrid.instance.expandAll(-1);\r\n } else {\r\n dataGrid.instance.collapseAll(-1);\r\n }\r\n });\r\n }\r\n\r\n public selectAllClicked(): void {\r\n this.model.selectAll = !this.model.selectAll;\r\n\r\n // Row is not selectable if it is Submitted or Published\r\n for(const invoicePackage of this.model.searchResults) {\r\n invoicePackage['isSelected'] =\r\n invoicePackage.status === GenerateStatus.INVOICE_PACKAGE_STATUS_SUBMITTED || invoicePackage.status === GenerateStatus.INVOICE_PACKAGE_STATUS_PUBLISHED\r\n ? false\r\n : this.model.selectAll;\r\n }\r\n }\r\n\r\n public unselectAll(): void {\r\n this.model.selectAll = false;\r\n }\r\n\r\n // Generation Required -> Submitted -> Complete\r\n public statusSortValue = (invoicePackage: InvoicePackage) => {\r\n if(invoicePackage.status === GenerateStatus.INVOICE_PACKAGE_STATUS_GENERATION_REQUIRED) return 0;\r\n if(invoicePackage.status === GenerateStatus.INVOICE_PACKAGE_STATUS_SUBMITTED) return 1;\r\n if(invoicePackage.status === GenerateStatus.INVOICE_PACKAGE_STATUS_COMPLETE_WITH_WARNINGS) return 2;\r\n if(invoicePackage.status === GenerateStatus.INVOICE_PACKAGE_STATUS_COMPLETE) return 3;\r\n if(invoicePackage.status === GenerateStatus.INVOICE_PACKAGE_STATUS_PUBLISHED) return 4;\r\n return -1;\r\n };\r\n\r\n public generateChargesOnRowExpanding($event): void {\r\n $event.component.getDataSource().store().byKey($event.key).then((row) => {\r\n this.queryNomGroups(row).subscribe(() => {});\r\n });\r\n }\r\n\r\n public statusClicked(cellInfoEvent: any): void {\r\n this.router.navigate(['/app', this.getPipelineCode(), 'invoicebusinessmessages'], {queryParams: {\r\n activity: 'Generate Charges',\r\n customerId: cellInfoEvent.data.invoiceRecipientId,\r\n fromBillingMonth: this.model.lastSearchParams.billingGasMonth,\r\n toBillingMonth: this.model.lastSearchParams.billingGasMonth\r\n }})\r\n .then(() => {});\r\n }\r\n\r\n /**\r\n * Protected Methods\r\n */\r\n\r\n protected loadInitialResources(): Observable {\r\n const getOpenBillingMonth$ = this.commonDataBillingMonthService.getOpen()\r\n .pipe(\r\n tap(openBillingMonth => this.model.openBillingMonth = openBillingMonth)\r\n );\r\n\r\n const queryAllStatuses$ = this.invoicingInvoicePackageService.queryAllStatuses()\r\n .pipe(\r\n tap(statuses => {\r\n this.model.invoicePackageStatuses = statuses;\r\n this.model.statusGroups = [GenerateStatus.FINISHED_STATUS, GenerateStatus.UNFINISHED_STATUS(statuses)];\r\n })\r\n );\r\n\r\n const queryAllEnteprises$ = this.commonDataEnterpriseService.getAll()\r\n .pipe(\r\n tap(enterprises => this.model.enterprises = enterprises)\r\n );\r\n\r\n return forkJoin([getOpenBillingMonth$, queryAllStatuses$, queryAllEnteprises$]);\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n const paramValidator = ParamValidator.Standard();\r\n\r\n paramValidator.isGasMonth(GenerateChargesComponent.PARAM_BILLING_MONTH);\r\n paramValidator.isNumber(GenerateChargesComponent.PARAM_CUSTOMER_ENTERPRISE_ID, true);\r\n paramValidator.isString(GenerateChargesComponent.PARAM_STATUS, true);\r\n\r\n return paramValidator.isValid(params);\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams = new GenerateChargesSearchParams();\r\n this.model.searchParams.billingGasMonth = this.model.openBillingMonth.gasMonth;\r\n this.model.searchResults = null;\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams.billingGasMonth = typedParams.asGasMonth(GenerateChargesComponent.PARAM_BILLING_MONTH);\r\n this.model.searchParams.enterpriseId = typedParams.asNullableNumber(GenerateChargesComponent.PARAM_CUSTOMER_ENTERPRISE_ID);\r\n this.model.searchParams.status = typedParams.asNullableString(GenerateChargesComponent.PARAM_STATUS);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {};\r\n\r\n params[GenerateChargesComponent.PARAM_BILLING_MONTH] = this.model.searchParams.billingGasMonth.toString();\r\n params[GenerateChargesComponent.PARAM_CUSTOMER_ENTERPRISE_ID] = this.model.searchParams.enterpriseId;\r\n params[GenerateChargesComponent.PARAM_STATUS] = this.model.searchParams.status;\r\n\r\n return params;\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n return this.invoicingInvoicePackageService.queryInvoiceRecipients(this.model.openBillingMonth.gasMonth, this.model.openBillingMonth.gasMonth)\r\n .pipe(\r\n concatMap(invoiceRecipients => this.enterpriseEnrichmentService.enrichArray(invoiceRecipients, 'id')),\r\n tap(invoiceRecipients => this.model.invoiceRecipients = _.orderBy(invoiceRecipients, [x => x['displayName'].toLowerCase()]))\r\n );\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n\r\n const invoicePackageStatuses = _.isNil(this.model.searchParams.status)\r\n ? []\r\n : this.model.searchParams.status === GenerateStatus.FINISHED_STATUS.value\r\n ? GenerateStatus.FINISHED_STATUS.invoicePackageStatuses\r\n : GenerateStatus.UNFINISHED_STATUS(this.model.invoicePackageStatuses).invoicePackageStatuses;\r\n\r\n return this.invoicingInvoicePackageService.queryInvoicePackagesWithStatuses(this.model.searchParams.billingGasMonth, this.model.searchParams.enterpriseId, invoicePackageStatuses)\r\n .pipe(\r\n concatMap(invoicePackages => this.enterpriseEnrichmentService.enrichArray(invoicePackages, 'invoiceRecipientId', 'invoiceRecipient')),\r\n tap(invoicePackages => {\r\n this.model.searchResults = _.orderBy(invoicePackages, x => x['invoiceRecipientShortName']);\r\n this.model.searchResultsSummaryText = this.buildSearchResultsSummaryText(this.model.searchResults);\r\n })\r\n );\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n /**\r\n * Private Methods\r\n */\r\n\r\n private buildSearchResultsSummaryText(invoicePackages: InvoicePackage[]): string {\r\n if(_.isEmpty(invoicePackages)) return null;\r\n\r\n const invoicePackagesCompleteWithWarnings = _.filter(invoicePackages, x => x.status === GenerateStatus.INVOICE_PACKAGE_STATUS_COMPLETE_WITH_WARNINGS);\r\n const invoicePackagesCompleteWithErrors = _.filter(invoicePackages, x => x.status === GenerateStatus.INVOICE_PACKAGE_STATUS_COMPLETE_WITH_ERRORS);\r\n const invoicePackagesComplete = _.filter(invoicePackages, x => x.status === GenerateStatus.INVOICE_PACKAGE_STATUS_COMPLETE);\r\n const invoicePackagesGenerationRequired = _.filter(invoicePackages, x => x.status === GenerateStatus.INVOICE_PACKAGE_STATUS_GENERATION_REQUIRED);\r\n const invoicePackagesPublished = _.filter(invoicePackages, x => x.status === GenerateStatus.INVOICE_PACKAGE_STATUS_PUBLISHED);\r\n const invoicePackagesSubmitted = _.filter(invoicePackages, x => x.status === GenerateStatus.INVOICE_PACKAGE_STATUS_SUBMITTED);\r\n const invoicePackagesFailed = _.filter(invoicePackages, x => x.status === GenerateStatus.INVOICE_PACKAGE_STATUS_FAILED);\r\n\r\n const completeWithWarningText = _.isEmpty(invoicePackagesCompleteWithWarnings) ? '' : `${GenerateStatus.INVOICE_PACKAGE_STATUS_COMPLETE_WITH_WARNINGS}: ${invoicePackagesCompleteWithWarnings.length}`;\r\n const completeWithErrorsText = _.isEmpty(invoicePackagesCompleteWithErrors) ? '' : `${GenerateStatus.INVOICE_PACKAGE_STATUS_COMPLETE_WITH_ERRORS}: ${invoicePackagesCompleteWithErrors.length}`;\r\n const completeText = _.isEmpty(invoicePackagesComplete) ? '' : `${GenerateStatus.INVOICE_PACKAGE_STATUS_COMPLETE}: ${invoicePackagesComplete.length}`;\r\n const generationRequiredText = _.isEmpty(invoicePackagesGenerationRequired) ? '' : `${GenerateStatus.INVOICE_PACKAGE_STATUS_GENERATION_REQUIRED}: ${invoicePackagesGenerationRequired.length}`;\r\n const publishedText = _.isEmpty(invoicePackagesPublished) ? '' : `${GenerateStatus.INVOICE_PACKAGE_STATUS_PUBLISHED}: ${invoicePackagesPublished.length}`;\r\n const submittedText = _.isEmpty(invoicePackagesSubmitted) ? '' : `${GenerateStatus.INVOICE_PACKAGE_STATUS_SUBMITTED}: ${invoicePackagesSubmitted.length}`;\r\n const failedText = _.isEmpty(invoicePackagesFailed) ? '' : `${GenerateStatus.INVOICE_PACKAGE_STATUS_FAILED}: ${invoicePackagesFailed.length}`;\r\n\r\n const commaTextAfterCompleteWithWarnings = !_.isEmpty(invoicePackagesCompleteWithWarnings) && !_.isEmpty(invoicePackagesCompleteWithErrors) ? ', ' : '';\r\n const commaTextAfterCompleteWithErrors = !_.isEmpty(invoicePackagesComplete) && (!_.isEmpty(invoicePackagesCompleteWithWarnings) || !_.isEmpty(invoicePackagesCompleteWithErrors)) ? ', ' : '';\r\n const commaTextAfterComplete = !_.isEmpty(invoicePackagesGenerationRequired) && (!_.isEmpty(invoicePackagesCompleteWithWarnings) || !_.isEmpty(invoicePackagesCompleteWithErrors) || !_.isEmpty(invoicePackagesComplete)) ? ', ' : '';\r\n const commaTextAfterGenerationRequired = !_.isEmpty(invoicePackagesPublished) && (!_.isEmpty(invoicePackagesCompleteWithWarnings) || !_.isEmpty(invoicePackagesCompleteWithErrors) || !_.isEmpty(invoicePackagesComplete) || !_.isEmpty(invoicePackagesGenerationRequired)) ? ', ' : '';\r\n const commaTextAfterPublishedRequired = !_.isEmpty(invoicePackagesSubmitted) && (!_.isEmpty(invoicePackagesCompleteWithWarnings) || !_.isEmpty(invoicePackagesCompleteWithErrors) || !_.isEmpty(invoicePackagesComplete) || !_.isEmpty(invoicePackagesGenerationRequired) || !_.isEmpty(invoicePackagesPublished)) ? ', ' : '';\r\n const commaTextAfterSubmittedRequired = !_.isEmpty(invoicePackagesFailed) && (!_.isEmpty(invoicePackagesCompleteWithWarnings) || !_.isEmpty(invoicePackagesCompleteWithErrors) || !_.isEmpty(invoicePackagesComplete) || !_.isEmpty(invoicePackagesGenerationRequired) || !_.isEmpty(invoicePackagesPublished) || !_.isEmpty(invoicePackagesSubmitted)) ? ', ' : '';\r\n\r\n return `${completeWithWarningText}${commaTextAfterCompleteWithWarnings}${completeWithErrorsText}${commaTextAfterCompleteWithErrors}${completeText}${commaTextAfterComplete}${generationRequiredText}${commaTextAfterGenerationRequired}${publishedText}${commaTextAfterPublishedRequired}${submittedText}${commaTextAfterSubmittedRequired}${failedText}`;\r\n }\r\n\r\n private queryNomGroups(invoicePackage: InvoicePackage): Observable {\r\n if(invoicePackage['invoicePackageNomGroups']) return of(invoicePackage['invoicePackageNomGroups']); // Do Not Reload Data\r\n\r\n const enterpriseId = invoicePackage.invoiceRecipientId;\r\n const queryNomGroupsSearchRequest = QueryNomGroupsSearchRequest.searchByInvoiceRecipient(enterpriseId, this.model.searchParams.billingGasMonth);\r\n\r\n return this.nominationGroupService.queryNomGroups(queryNomGroupsSearchRequest)\r\n .pipe(\r\n concatMap(nomGroupDtos => this.enterpriseEnrichmentService.enrichArray(nomGroupDtos, 'ownerEnterpriseId', 'ownerEnterprise')),\r\n tap(nomGroupDtos => invoicePackage['invoicePackageNomGroups'] = nomGroupDtos)\r\n );\r\n }\r\n}\r\n","import {BaseViewModel} from \"@model/base-view-model\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport {InvoicePackage, InvoiceRecipient} from \"@shared/services/invoicing/invoicing-invoice-package/invoicing-invoice-package.service\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport * as _ from \"lodash\";\r\nimport {Enterprise} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {BillingProcess} from \"@shared/services/flowing-gas/flowing-gas-allocation-and-balancing-billing-process/flowing-gas-allocation-and-balancing-billing-process.service\";\r\n\r\nexport class PrintInvoicesModel extends BaseViewModel {\r\n public openBillingMonth: BillingMonth;\r\n public invoiceRecipients: InvoiceRecipient[];\r\n public enterprises: Enterprise[];\r\n public statuses: PrintInvoicesStatus[] = PrintInvoicesStatus.ALL;\r\n\r\n public isPrintEnabled: boolean = false;\r\n public selectAll: boolean = false;\r\n\r\n public searchParams: PrintInvoicesSearchParams = new PrintInvoicesSearchParams();\r\n public lastSearchParams: PrintInvoicesSearchParams;\r\n\r\n private _searchResults: InvoicePackage[];\r\n public searchResultsSummaryText: string;\r\n\r\n get searchResults(): InvoicePackage[] {\r\n return this._searchResults;\r\n }\r\n\r\n set searchResults(invoicePackages: InvoicePackage[]) {\r\n this._searchResults = invoicePackages;\r\n }\r\n}\r\n\r\nexport class PrintInvoicesSearchParams {\r\n public billingGasMonth: GasMonth;\r\n public enterpriseId?: number;\r\n public status?: string;\r\n}\r\n\r\nexport class PrintInvoicesStatus {\r\n\r\n public static PRINTED: PrintInvoicesStatus = new PrintInvoicesStatus('Printed', 'Printed', true);\r\n public static PRINTING_REQUIRED: PrintInvoicesStatus = new PrintInvoicesStatus('PrintingRequired', 'Printing Required', false);\r\n\r\n public static ALL: PrintInvoicesStatus[] = [PrintInvoicesStatus.PRINTED, PrintInvoicesStatus.PRINTING_REQUIRED];\r\n\r\n private readonly _value: string;\r\n private readonly _description: string;\r\n private readonly _isPrinted: boolean;\r\n\r\n constructor(value: string, description: string, isPrinted: boolean) {\r\n this._value = value;\r\n this._description = description;\r\n this._isPrinted = isPrinted;\r\n }\r\n\r\n public get value(): string {\r\n return this._value;\r\n }\r\n\r\n public get description(): string {\r\n return this._description;\r\n }\r\n\r\n public get isPrinted(): boolean {\r\n return this._isPrinted;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'numberLessThanFormat'\r\n})\r\nexport class NumberLessThanFormatPipe implements PipeTransform {\r\n\r\n transform(value: number, threshold: number, showBlankIfValueIsZero: boolean = false, useLocalFormat: boolean = true): any {\r\n\r\n if ((value === undefined || value === null) || (showBlankIfValueIsZero && value === 0)) {\r\n return \"\";\r\n }\r\n\r\n if (value < threshold) {\r\n return `<${threshold}`;\r\n }\r\n\r\n if (useLocalFormat) {\r\n return value.toLocaleString('en');\r\n } else {\r\n return value.toString();\r\n }\r\n\r\n }\r\n\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Status: {{model.lastSearchParams?.status | displayName: 'value' : 'description' : model.statuses }}\r\n Customer: {{model.lastSearchParams?.enterpriseId | displayName: 'id' : 'displayName' : model.invoiceRecipients}}\r\n Billing Month: {{model.lastSearchParams?.billingGasMonth}}\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.searchParams.billingGasMonth | gasMonthFormat}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.status | displayName: 'value' : 'description' : model.statuses}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.enterpriseId | displayName: 'id' : 'displayName' : model.invoiceRecipients}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.billingGasMonth}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
Number of Invoice Recipients found: {{ model.searchResults.length }}
\r\n
{{model.searchResultsSummaryText}}
\r\n
\r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n\r\n\r\n
\r\n {{cellInfo.data['revision'] | numberLessThanFormat : 0 : true}}\r\n
\r\n\r\n \r\n \r\n
\r\n
\r\n Printed\r\n
\r\n
\r\n Printing Required\r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n
\r\n {{cellInfo.data['revision'] | numberLessThanFormat : 0 : true}}\r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n","import {Component} from \"@angular/core\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {forkJoin, Observable, of} from \"rxjs\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {PrintInvoicesModel, PrintInvoicesSearchParams, PrintInvoicesStatus} from \"app/gcts/invoicing/print-invoice/print-invoices.model\";\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {concatMap, switchMap, tap} from \"rxjs/operators\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport {IInvoiceSummaryResponse, InvoicePackage, InvoiceRecipient, InvoicingInvoicePackageService, UpdateInvoicePackageRequest} from \"@shared/services/invoicing/invoicing-invoice-package/invoicing-invoice-package.service\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport * as _ from \"lodash\";\r\nimport {DataGridHelpers} from \"@model/datagrid-helpers\";\r\nimport {DataGridColumnFormatHelper} from \"@shared/helpers/data-grid-column-format-helper\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {GenerateStatus} from \"app/gcts/invoicing/generate-charges/generate-charges.model\";\r\nimport {BillingProcess, FlowingGasAllocationAndBalancingBillingProcessService} from \"@shared/services/flowing-gas/flowing-gas-allocation-and-balancing-billing-process/flowing-gas-allocation-and-balancing-billing-process.service\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\n\r\n@Component({\r\n selector: 'app-print-invoices',\r\n templateUrl: './print-invoices.component.html',\r\n styleUrls: ['./print-invoices.component.css']\r\n})\r\n\r\nexport class PrintInvoicesComponent extends BaseSearchComponent{\r\n private static PARAM_CUSTOMER_ID: string = 'customer';\r\n private static PARAM_STATUS: string = 'statusGroup';\r\n private static PARAM_BILLING_GAS_MONTH: string = 'billingMonth';\r\n\r\n public model: PrintInvoicesModel = new PrintInvoicesModel();\r\n\r\n constructor(protected appService: AppService,\r\n protected activatedRoute: ActivatedRoute,\r\n protected router: Router,\r\n protected alertService: AlertService,\r\n private commonDataBillingMonthService: CommonDataBillingMonthService,\r\n private invoicingInvoicePackageService: InvoicingInvoicePackageService,\r\n private enterpriseEnrichmentService: EnterpriseEnrichmentService,\r\n private commonDataEnterpriseService: EnterpriseService,\r\n private flowingGasAllocationAndBalancingBillingProcessService: FlowingGasAllocationAndBalancingBillingProcessService) {\r\n\r\n super('Print Invoices', appService, activatedRoute, router, alertService);\r\n this.enterpriseEnrichmentService.setEnrichmentResource(this.commonDataEnterpriseService);\r\n }\r\n\r\n /**\r\n * Public Methods\r\n */\r\n\r\n public toggleExpandAll(expandAll: boolean, dataGrid: DxDataGridComponent): void {\r\n if (!expandAll) {\r\n dataGrid.instance.collapseAll(-1);\r\n return;\r\n }\r\n const queryInvoices$ = [];\r\n\r\n const expandableInvoicePackages = _.filter(this.model.searchResults, (ip: InvoicePackage) => ip.hasRevisions);\r\n for (const invoicePackage of expandableInvoicePackages) {\r\n const $observable = this.queryInvoices(invoicePackage)\r\n .pipe(tap(() => {\r\n if (expandAll) {\r\n dataGrid.instance.expandRow(invoicePackage);\r\n }\r\n }));\r\n queryInvoices$.push($observable);\r\n }\r\n\r\n forkJoin(queryInvoices$).subscribe();\r\n }\r\n\r\n public expandInvoicePackage($event): void {\r\n $event.component.getDataSource().store().byKey($event.key).then((row) => {\r\n this.queryInvoices(row).subscribe(() => {});\r\n });\r\n }\r\n\r\n public onCellPrepared($event: any): void {\r\n DataGridHelpers.whenColumnCommandIsExpand($event, () => {\r\n if (!$event.key?.hasRevisions) {\r\n DataGridColumnFormatHelper.hideExpandIcon($event);\r\n }\r\n });\r\n }\r\n\r\n public selectAllClicked(): void {\r\n this.model.selectAll = !this.model.selectAll;\r\n\r\n for(const invoicePackage of this.model.searchResults) {\r\n invoicePackage['isSelected'] = this.canPrint(invoicePackage.status)\r\n ? this.model.selectAll\r\n : false;\r\n }\r\n }\r\n\r\n public unselectAll(): void {\r\n this.model.selectAll = false;\r\n }\r\n\r\n public canPrint(status: string): boolean {\r\n return this.model.isPrintEnabled &&\r\n _.some(GenerateStatus.FINISHED_STATUS.invoicePackageStatuses, (s: string) => s.toUpperCase() === status.toUpperCase());\r\n }\r\n\r\n public hasSelectedInvoicePackage(): boolean {\r\n return _.some(this.model.searchResults, x => x['isSelected'] === true);\r\n }\r\n\r\n public printClicked(): void {\r\n this.alertService.clearMessages();\r\n\r\n const invoicePackagesToPrint = _.filter(this.model.searchResults, x => x['isSelected'] === true);\r\n const updateInvoicePackageRequests = _.map(invoicePackagesToPrint, (x: InvoicePackage) => new UpdateInvoicePackageRequest(x.pipelineCode, x.billingMonth, x.invoiceRecipientId, null, true));\r\n\r\n const updateInvoicePackages$ = this.invoicingInvoicePackageService.updateInvoicePackages(updateInvoicePackageRequests);\r\n\r\n const getMergedPackagesPdf$ = this.invoicingInvoicePackageService\r\n .getMergedPackagesPdf(this.model.searchParams.billingGasMonth, _.map(invoicePackagesToPrint, (x:InvoicePackage) => x.invoiceRecipientId))\r\n .pipe(\r\n tap(pdf => {\r\n // this.savePdfFile(pdf);\r\n this.openNewTabForPdf(pdf);\r\n this.unselectAll();\r\n })\r\n );\r\n\r\n forkJoin([updateInvoicePackages$, getMergedPackagesPdf$])\r\n .pipe(\r\n concatMap(() => this.performSearch())\r\n )\r\n .subscribe(() => {\r\n // this.alertService.addSuccessMessage('Submit Successful', `${updateInvoicePackageRequests.length} invoice packages submitted for printing.`);\r\n });\r\n }\r\n\r\n /**\r\n * Protected Methods\r\n */\r\n\r\n protected loadInitialResources(): Observable {\r\n const getOpenBillingMonth$ = this.commonDataBillingMonthService.getOpen()\r\n .pipe(\r\n tap(openBillingMonth => this.model.openBillingMonth = openBillingMonth),\r\n switchMap( (openBillingMonth: BillingMonth) => this.flowingGasAllocationAndBalancingBillingProcessService.get(openBillingMonth.gasMonth)),\r\n tap( processes => {\r\n this.model.isPrintEnabled = _.every(processes, (p: BillingProcess) => p.status === 'Final');\r\n })\r\n );\r\n\r\n const queryAllEnterprises$ = this.commonDataEnterpriseService.getAll()\r\n .pipe(\r\n tap(enterprises => this.model.enterprises = enterprises)\r\n );\r\n\r\n return forkJoin([getOpenBillingMonth$, queryAllEnterprises$]);\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n const paramValidator = ParamValidator.Standard();\r\n\r\n paramValidator.isNumber(PrintInvoicesComponent.PARAM_CUSTOMER_ID, true);\r\n paramValidator.isString(PrintInvoicesComponent.PARAM_STATUS, true);\r\n paramValidator.isGasMonth(PrintInvoicesComponent.PARAM_BILLING_GAS_MONTH);\r\n\r\n return paramValidator.isValid(params);\r\n }\r\n\r\n public calculateRevision(data) {\r\n return isNaN(data.revision)?0:data.revision;\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams = new PrintInvoicesSearchParams();\r\n this.model.searchParams.billingGasMonth = this.model.openBillingMonth.gasMonth;\r\n this.model.selectAll = false;\r\n this.model.searchResults = null;\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams.enterpriseId = typedParams.asNullableNumber(PrintInvoicesComponent.PARAM_CUSTOMER_ID);\r\n this.model.searchParams.status = typedParams.asNullableString(PrintInvoicesComponent.PARAM_STATUS);\r\n this.model.searchParams.billingGasMonth = typedParams.asGasMonth(PrintInvoicesComponent.PARAM_BILLING_GAS_MONTH);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {};\r\n\r\n params[PrintInvoicesComponent.PARAM_CUSTOMER_ID] = this.model.searchParams.enterpriseId;\r\n params[PrintInvoicesComponent.PARAM_STATUS] = this.model.searchParams.status;\r\n params[PrintInvoicesComponent.PARAM_BILLING_GAS_MONTH] = this.model.searchParams.billingGasMonth;\r\n\r\n return params;\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n return this.invoicingInvoicePackageService.queryInvoiceRecipients(this.model.openBillingMonth.gasMonth, this.model.openBillingMonth.gasMonth)\r\n .pipe(\r\n concatMap(invoiceRecipients => this.enterpriseEnrichmentService.enrichArray(invoiceRecipients, 'id')),\r\n tap(invoiceRecipients => this.model.invoiceRecipients = _.orderBy(invoiceRecipients, [x => x['displayName'].toLowerCase()]))\r\n );\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n\r\n const isPrinted = _.isNull(this.model.searchParams.status)\r\n ? null\r\n : this.model.searchParams.status === PrintInvoicesStatus.PRINTED.value\r\n ? PrintInvoicesStatus.PRINTED.isPrinted\r\n : PrintInvoicesStatus.PRINTING_REQUIRED.isPrinted;\r\n\r\n return this.invoicingInvoicePackageService.queryInvoicePackageWithPrintStatus(this.model.searchParams.billingGasMonth, this.model.searchParams.enterpriseId, isPrinted)\r\n .pipe(\r\n concatMap(invoicePackages => this.enterpriseEnrichmentService.enrichArray(invoicePackages, 'invoiceRecipientId', 'invoiceRecipient')),\r\n tap(invoicePackages => {\r\n this.model.searchResults = _.orderBy(invoicePackages, x => x['invoiceRecipientShortName']);\r\n this.model.searchResultsSummaryText = this.buildSearchResultsSummaryText(this.model.searchResults);\r\n this.unselectAll();\r\n })\r\n );\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n protected searchCompleted(): void {\r\n this.alertService.clearMessages();\r\n if (!this.model.isPrintEnabled) {\r\n this.alertService.addInfoMessage('Info:', 'Allocations and Balancing process is not Final, cannot print.');\r\n }\r\n }\r\n\r\n /**\r\n * Private Methods\r\n */\r\n private queryInvoices(invoicePackage: InvoicePackage): Observable {\r\n if (invoicePackage['invoicePackageInvoices']) return of(invoicePackage['invoicePackageInvoices']); // Do Not Reload\r\n\r\n return this.invoicingInvoicePackageService.queryInvoicesForPackage(invoicePackage.billingMonth, invoicePackage.invoiceRecipientId, invoicePackage.revision)\r\n .pipe(\r\n concatMap(invoices => this.enterpriseEnrichmentService.enrichArray(invoices, 'customerId', 'customer')),\r\n tap(invoices => invoicePackage['invoicePackageInvoices'] = invoices)\r\n );\r\n }\r\n\r\n private buildSearchResultsSummaryText(invoicePackages: InvoicePackage[]): string {\r\n if(_.isEmpty(invoicePackages)) return null;\r\n\r\n const invoicePackagesPrinted = _.filter(invoicePackages, x => x.isPrinted);\r\n const invoicePackagesPrintRequired = _.filter(invoicePackages, x => !x.isPrinted);\r\n\r\n const printedText = _.isEmpty(invoicePackagesPrinted) ? '' : `${PrintInvoicesStatus.PRINTED.description}: ${invoicePackagesPrinted.length}`;\r\n const printRequiredText = _.isEmpty(invoicePackagesPrintRequired) ? '' : `${PrintInvoicesStatus.PRINTING_REQUIRED.description}: ${invoicePackagesPrintRequired.length}`;\r\n\r\n const commaText = !_.isEmpty(invoicePackagesPrinted) && !_.isEmpty(invoicePackagesPrintRequired) ? ', ' : '';\r\n\r\n return `${printedText}${commaText}${printRequiredText}`;\r\n }\r\n\r\n}\r\n","import * as _ from \"lodash\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport {InvoicePackage, InvoiceRecipient} from \"@shared/services/invoicing/invoicing-invoice-package/invoicing-invoice-package.service\";\r\nimport {Enterprise} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {GenerateStatus} from \"app/gcts/invoicing/generate-charges/generate-charges.model\";\r\nimport {BaseViewModel} from \"@model/base-view-model\";\r\nimport {BillingProcess} from \"@shared/services/flowing-gas/flowing-gas-allocation-and-balancing-billing-process/flowing-gas-allocation-and-balancing-billing-process.service\";\r\n\r\nexport class PublishInvoicesModel extends BaseViewModel {\r\n public selectAll: boolean;\r\n\r\n public statusGroups: GenerateStatus[];\r\n public openBillingMonth: BillingMonth;\r\n public invoicePackageStatuses: string[];\r\n\r\n public enterprises: Enterprise[];\r\n public invoiceRecipients: InvoiceRecipient[];\r\n\r\n public billingProcesses: BillingProcess[];\r\n private _searchResults: InvoicePackage[];\r\n private _statusCounts;\r\n isPublishEnabled: boolean;\r\n\r\n get searchResults(): InvoicePackage[] {\r\n return this._searchResults;\r\n }\r\n\r\n set searchResults(invoicePackages: InvoicePackage[]) {\r\n this._searchResults = invoicePackages;\r\n this._statusCounts =\r\n _.chain(this._searchResults)\r\n .countBy((ip: InvoicePackage) => ip.status)\r\n .map((value, key) => ({key: key, count: value}))\r\n .orderBy(o => o.count, ['asc'])\r\n .map(item => `${item.key}: ${item.count}`)\r\n .join(\", \")\r\n .value();\r\n\r\n }\r\n\r\n get statusCounts() {\r\n return this._statusCounts;\r\n }\r\n\r\n public searchParams: PublishInvoicesSearchParams = new PublishInvoicesSearchParams();\r\n public lastSearchParams: PublishInvoicesSearchParams;\r\n\r\n}\r\n\r\nexport class PublishInvoicesSearchParams {\r\n public billingGasMonth: GasMonth;\r\n public statusGroup?: string;\r\n public enterpriseId?: number;\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Status: {{model.lastSearchParams?.statusGroup | displayName: 'value' : 'value' : model.statusGroups }}\r\n Customer: {{model.lastSearchParams?.enterpriseId | displayName: 'id' : 'displayName' : model.invoiceRecipients}}\r\n Billing Month: {{model.lastSearchParams?.billingGasMonth}}\r\n \r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.searchParams.billingGasMonth | gasMonthFormat}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.statusGroup | displayName: 'value' : 'value' : model.statusGroups }}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.enterpriseId | displayName: 'id' : 'displayName' : model.invoiceRecipients}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.billingGasMonth}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
Number of results found: {{ model.searchResults.length }}
\r\n
{{model.statusCounts}}
\r\n
\r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n {{cellInfo.data['revision'] | numberLessThanFormat : 0 : true}}\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n
\r\n {{cellInfo.data['revision'] | numberLessThanFormat : 0 : true}}\r\n
\r\n \r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n","import { Component} from '@angular/core';\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {UpdateInvoicePackageRequest, IInvoiceSummaryResponse, InvoicePackage, InvoiceRecipient, InvoicingInvoicePackageService} from \"@shared/services/invoicing/invoicing-invoice-package/invoicing-invoice-package.service\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {NominationGroupService} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport * as _ from \"lodash\";\r\nimport {concatMap, switchMap, tap} from \"rxjs/operators\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {forkJoin, Observable, of} from \"rxjs\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {PublishInvoicesModel, PublishInvoicesSearchParams} from \"app/gcts/invoicing/publish-invoices/publish-invoices-model\";\r\nimport {GenerateStatus} from \"app/gcts/invoicing/generate-charges/generate-charges.model\";\r\nimport {BillingProcess, FlowingGasAllocationAndBalancingBillingProcessService} from \"@shared/services/flowing-gas/flowing-gas-allocation-and-balancing-billing-process/flowing-gas-allocation-and-balancing-billing-process.service\";\r\nimport {DataGridHelpers} from \"@model/datagrid-helpers\";\r\nimport {DataGridColumnFormatHelper} from \"@shared/helpers/data-grid-column-format-helper\";\r\n\r\n\r\n\r\n@Component({\r\n selector: 'app-publish-invoices',\r\n templateUrl: './publish-invoices.component.html',\r\n styleUrls: ['./publish-invoices.component.css']\r\n})\r\nexport class PublishInvoicesComponent extends BaseSearchComponent {\r\n\r\n private static readonly PARAM_BILLING_MONTH: string = 'billingMonth';\r\n private static readonly PARAM_CUSTOMER_ENTERPRISE_ID: string = 'enterpriseId';\r\n private static readonly PARAM_STATUS_GROUP: string = 'statusGroup';\r\n\r\n private static readonly PUBLISHED_STATUS: string = 'Published';\r\n\r\n public model: PublishInvoicesModel = new PublishInvoicesModel();\r\n\r\n\r\n constructor(protected appService: AppService,\r\n protected activatedRoute: ActivatedRoute,\r\n protected router: Router,\r\n protected alertService: AlertService,\r\n private commonDataBillingMonthService: CommonDataBillingMonthService,\r\n private invoicingInvoicePackageService: InvoicingInvoicePackageService,\r\n private enterpriseEnrichmentService: EnterpriseEnrichmentService,\r\n private commonDataEnterpriseService: EnterpriseService,\r\n private nominationGroupService: NominationGroupService,\r\n private flowingGasAllocationAndBalancingBillingProcessService: FlowingGasAllocationAndBalancingBillingProcessService)\r\n {\r\n super('Publish Invoices', appService, activatedRoute, router, alertService);\r\n\r\n this.enterpriseEnrichmentService.setEnrichmentResource(this.commonDataEnterpriseService);\r\n }\r\n\r\n /**\r\n * Public Methods\r\n */\r\n\r\n public hasSelectedInvoicePackage(): boolean {\r\n return _.some(this.model.searchResults, x => x['isSelected'] === true);\r\n }\r\n\r\n public publishClicked(): void {\r\n this.alertService.clearMessages();\r\n\r\n const publishInvoicePackageRequests = _.chain(this.model.searchResults)\r\n .filter((ip: InvoicePackage) => ip['isSelected'] === true && ip.status !== PublishInvoicesComponent.PUBLISHED_STATUS)\r\n .map((ip: InvoicePackage) => new UpdateInvoicePackageRequest(ip.pipelineCode, ip.billingMonth, ip.invoiceRecipientId, PublishInvoicesComponent.PUBLISHED_STATUS))\r\n .value();\r\n\r\n this.invoicingInvoicePackageService.updateInvoicePackages(publishInvoicePackageRequests)\r\n .pipe(\r\n concatMap(() => this.performSearch())\r\n )\r\n .subscribe(() => {\r\n this.alertService.addSuccessMessage('Submit Successful', `${publishInvoicePackageRequests.length} invoice packages submitted for publishing.`);\r\n this.model.selectAll = false;\r\n });\r\n }\r\n\r\n public toggleExpandAll(expandAll: boolean, dataGrid: DxDataGridComponent): void {\r\n if (!expandAll) {\r\n dataGrid.instance.collapseAll(-1);\r\n return;\r\n }\r\n const queryInvoices$ = [];\r\n\r\n const expandableInvoicePackages = _.filter(this.model.searchResults, (ip: InvoicePackage) => ip.hasRevisions);\r\n for (const invoicePackage of expandableInvoicePackages) {\r\n const $observable = this.queryInvoices(invoicePackage)\r\n .pipe(tap(() => {\r\n if (expandAll) {\r\n dataGrid.instance.expandRow(invoicePackage);\r\n }\r\n }));\r\n queryInvoices$.push($observable);\r\n }\r\n\r\n forkJoin(queryInvoices$).subscribe();\r\n }\r\n\r\n public selectAllClicked(): void {\r\n this.model.selectAll = !this.model.selectAll;\r\n\r\n for(const invoicePackage of this.model.searchResults) {\r\n if(GenerateStatus.isPublishableStatus(invoicePackage['status'])) {\r\n invoicePackage['isSelected'] = this.model.selectAll;\r\n }\r\n }\r\n }\r\n\r\n public calculateRevision(data) {\r\n return isNaN(data.revision)?0:data.revision;\r\n }\r\n\r\n\r\n\r\n public unselectAll(): void {\r\n this.model.selectAll = false;\r\n }\r\n\r\n public expandInvoicePackage($event): void {\r\n $event.component.getDataSource().store().byKey($event.key).then((row) => {\r\n this.queryInvoices(row).subscribe(() => {});\r\n });\r\n }\r\n\r\n protected searchCompleted(): void {\r\n this.alertService.clearMessages();\r\n if (!this.model.isPublishEnabled) {\r\n this.alertService.addInfoMessage('Info:', 'Allocations and Balancing process is not Final, cannot publish.');\r\n }\r\n }\r\n\r\n /**\r\n * Protected Methods\r\n */\r\n\r\n protected loadInitialResources(): Observable {\r\n\r\n const getOpenBillingMonth$ = this.commonDataBillingMonthService.getOpen()\r\n .pipe(\r\n tap(openBillingMonth => this.model.openBillingMonth = openBillingMonth),\r\n switchMap((openBillingMonth: BillingMonth) => this.flowingGasAllocationAndBalancingBillingProcessService.get(openBillingMonth.gasMonth)),\r\n tap(processes => {\r\n this.model.billingProcesses = processes;\r\n this.model.isPublishEnabled = _.every(processes, (p: BillingProcess) => p.status === 'Final');\r\n })\r\n );\r\n\r\n const queryAllStatuses$ = this.invoicingInvoicePackageService.queryAllStatuses()\r\n .pipe(\r\n tap(statuses => {\r\n this.model.invoicePackageStatuses = statuses;\r\n this.model.statusGroups = [\r\n new GenerateStatus(PublishInvoicesComponent.PUBLISHED_STATUS, _.filter(statuses, s => s === PublishInvoicesComponent.PUBLISHED_STATUS)),\r\n new GenerateStatus('Unpublished', _.filter(statuses, s => s !== PublishInvoicesComponent.PUBLISHED_STATUS))\r\n ];\r\n })\r\n );\r\n\r\n const queryAllEnterprises$ = this.commonDataEnterpriseService.getAll()\r\n .pipe(\r\n tap(enterprises => this.model.enterprises = enterprises)\r\n );\r\n\r\n return forkJoin([getOpenBillingMonth$, queryAllStatuses$, queryAllEnterprises$]);\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n const paramValidator = ParamValidator.Standard();\r\n\r\n paramValidator.isGasMonth(PublishInvoicesComponent.PARAM_BILLING_MONTH);\r\n paramValidator.isNumber(PublishInvoicesComponent.PARAM_CUSTOMER_ENTERPRISE_ID, true);\r\n paramValidator.isString(PublishInvoicesComponent.PARAM_STATUS_GROUP, true);\r\n\r\n return paramValidator.isValid(params);\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams = new PublishInvoicesSearchParams();\r\n this.model.searchParams.billingGasMonth = this.model.openBillingMonth.gasMonth;\r\n this.model.searchResults = null;\r\n this.model.selectAll = false;\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams.billingGasMonth = typedParams.asGasMonth(PublishInvoicesComponent.PARAM_BILLING_MONTH);\r\n this.model.searchParams.enterpriseId = typedParams.asNullableNumber(PublishInvoicesComponent.PARAM_CUSTOMER_ENTERPRISE_ID);\r\n this.model.searchParams.statusGroup = typedParams.asNullableString(PublishInvoicesComponent.PARAM_STATUS_GROUP);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {};\r\n\r\n params[PublishInvoicesComponent.PARAM_BILLING_MONTH] = this.model.searchParams.billingGasMonth.toString();\r\n params[PublishInvoicesComponent.PARAM_CUSTOMER_ENTERPRISE_ID] = this.model.searchParams.enterpriseId;\r\n params[PublishInvoicesComponent.PARAM_STATUS_GROUP] = this.model.searchParams.statusGroup;\r\n\r\n return params;\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n return this.invoicingInvoicePackageService.queryInvoiceRecipients(this.model.openBillingMonth.gasMonth, this.model.openBillingMonth.gasMonth)\r\n .pipe(\r\n concatMap(invoiceRecipients => this.enterpriseEnrichmentService.enrichArray(invoiceRecipients, 'id')),\r\n tap(invoiceRecipients => this.model.invoiceRecipients = _.orderBy(invoiceRecipients, [x => x['displayName'].toLowerCase()]))\r\n );\r\n }\r\n\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n\r\n const invoicePackageStatuses = _.isNil(this.model.searchParams.statusGroup)\r\n ? []\r\n : this.model.searchParams.statusGroup === 'Published'\r\n ? _.find(this.model.statusGroups, (g: GenerateStatus) => g.value === PublishInvoicesComponent.PUBLISHED_STATUS).invoicePackageStatuses\r\n : _.find(this.model.statusGroups, (g: GenerateStatus) => g.value !== PublishInvoicesComponent.PUBLISHED_STATUS).invoicePackageStatuses;\r\n\r\n return this.invoicingInvoicePackageService.queryInvoicePackagesWithStatuses(this.model.searchParams.billingGasMonth, this.model.searchParams.enterpriseId, invoicePackageStatuses)\r\n .pipe(\r\n concatMap(invoicePackages => this.enterpriseEnrichmentService.enrichArray(invoicePackages, 'invoiceRecipientId', 'invoiceRecipient')),\r\n tap(invoicePackages => {\r\n this.model.searchResults = _.orderBy(invoicePackages, x => x['invoiceRecipientShortName']);\r\n })\r\n );\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n /**\r\n * Private Methods\r\n */\r\n\r\n\r\n private queryInvoices(invoicePackage: InvoicePackage): Observable {\r\n if (invoicePackage['invoicePackageInvoices']) return of(invoicePackage['invoicePackageInvoices']); // Do Not Reload\r\n\r\n return this.invoicingInvoicePackageService.queryInvoicesForPackage(invoicePackage.billingMonth, invoicePackage.invoiceRecipientId, invoicePackage.revision)\r\n .pipe(\r\n concatMap(invoices => this.enterpriseEnrichmentService.enrichArray(invoices, 'customerId', 'customer')),\r\n tap(invoices => invoicePackage['invoicePackageInvoices'] = invoices)\r\n );\r\n }\r\n\r\n canPublish(status: string) {\r\n return this.model.isPublishEnabled && GenerateStatus.isPublishableStatus(status);\r\n }\r\n\r\n onCellPrepared($event: any): void {\r\n DataGridHelpers.whenColumnCommandIsExpand($event, () => {\r\n if (!$event.key?.hasRevisions) {\r\n DataGridColumnFormatHelper.hideExpandIcon($event);\r\n }\r\n });\r\n }\r\n}\r\n","import * as _ from \"lodash\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {BaseViewModel} from \"@model/base-view-model\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport {AccountingDocument} from \"@shared/services/invoicing/accounts-receivable/accounts-receivable.service\";\r\nimport {InvoiceBillingProcess} from \"@shared/services/invoicing/invoicing-invoice-billing-process/invoicing-invoice-billing-process.service\";\r\n\r\nexport class AccountsReceivableModel extends BaseViewModel {\r\n oldestBillingMonth: BillingMonth;\r\n openBillingMonth: BillingMonth;\r\n invoiceBillingProcess: InvoiceBillingProcess;\r\n\r\n searchParams: AccountsReceivableSearchParams = new AccountsReceivableSearchParams();\r\n lastSearchParams: AccountsReceivableSearchParams;\r\n\r\n searchResults: AccountingDocument[];\r\n\r\n statTotal: string = '0';\r\n statSummaries: string[] = [];\r\n\r\n isRecreateDocumentsButtonEnabled: boolean = false;\r\n isPassDocumentsButtonEnabled: boolean = false;\r\n isSubmitButtonEnabled: boolean = false;\r\n}\r\n\r\nexport class AccountsReceivableSearchParams {\r\n billingMonth: GasMonth;\r\n\r\n public get postBillingMonth(): GasMonth {\r\n if(_.isNil(this.billingMonth)) return null;\r\n\r\n return this.billingMonth.addMonth(1);\r\n }\r\n}\r\n","import * as _ from \"lodash\";\r\nimport {Injectable} from \"@angular/core\";\r\nimport {InvoicingResourceService} from \"@shared/resources/invoicing-resource.service\";\r\nimport {Observable, of, throwError} from \"rxjs\";\r\nimport {catchError, map} from \"rxjs/operators\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {HttpResponse} from \"@angular/common/http\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AccountsReceivableService {\r\n\r\n constructor(private invoicingResource: InvoicingResourceService) {\r\n }\r\n\r\n public queryAccountingDocuments(billingMonth: GasMonth): Observable {\r\n const params = new GCTSHttpParams();\r\n params.setGasMonth(billingMonth, 'gasMonth');\r\n\r\n return this.invoicingResource.get('/accounting/documents', true, params)\r\n .pipe(\r\n map(dtos => dtos.map(dto => AccountingDocument.create(dto)))\r\n );\r\n }\r\n\r\n public refreshAccountingBatchStatus(billingMonth: GasMonth): Observable {\r\n const params = new GCTSHttpParams();\r\n params.setGasMonth(billingMonth, 'gasMonth');\r\n\r\n return this.invoicingResource.put('/accounting/batch', {}, true, params)\r\n .pipe(\r\n map(dto => AccountingBatch.create(dto))\r\n );\r\n }\r\n\r\n public getAccountingDocumentsCsv(billingMonth: GasMonth): Observable> {\r\n const params = new GCTSHttpParams();\r\n params.setGasMonth(billingMonth, 'gasMonth');\r\n\r\n return this.invoicingResource.getData('/accounting/documents/csv',true, params);\r\n }\r\n\r\n public getAccountDocumentsWinshuttle(billingMonth: GasMonth): Observable> {\r\n const params = new GCTSHttpParams();\r\n params.setGasMonth(billingMonth, 'gasMonth');\r\n\r\n return this.invoicingResource.getData('/accounting/documents/winshuttle/txt',true, params);\r\n }\r\n\r\n public passDocuments(billingMonth: GasMonth): Observable {\r\n const body = {\r\n gasMonth: billingMonth.toString(),\r\n status: 'Passed'\r\n };\r\n\r\n return this.invoicingResource.patchWithNoResponseBody('/accounting/batch', body);\r\n }\r\n\r\n public batchDocuments(): Observable {\r\n return this.invoicingResource.postWithNoResponseBody('/accounting/batch', {});\r\n }\r\n}\r\n\r\nexport interface IAccountingBatchResponse {\r\n loadId?: number;\r\n status: string;\r\n}\r\n\r\nexport class AccountingBatch {\r\n constructor(public loadId: number, public status: string) {\r\n this.loadId = loadId;\r\n this.status = status;\r\n }\r\n\r\n public static create(dto: IAccountingBatchResponse): AccountingBatch {\r\n return new AccountingBatch(dto.loadId, dto.status);\r\n }\r\n}\r\n\r\nexport interface IAccountingDocumentResponse {\r\n customerId: number;\r\n arNumber: string;\r\n postPeriod: number;\r\n postYear: number;\r\n invoiceNumber: number;\r\n amount: number;\r\n hasErrors: boolean;\r\n hasWarnings: boolean;\r\n status: string;\r\n hasManualStatus: boolean;\r\n loadId?: number;\r\n documentNumber?: number;\r\n\r\n lines: IAccountingDocumentLineResponse[];\r\n messages: IAccountingMessageResponse[];\r\n}\r\n\r\nexport interface IAccountingDocumentLineResponse {\r\n generalLedgerAccount: string;\r\n description: string;\r\n profitCenter: string;\r\n costCenter: string;\r\n orderNumber: string;\r\n amount: number;\r\n hasErrors: boolean;\r\n hasWarnings: boolean;\r\n\r\n messages: IAccountingMessageResponse[];\r\n}\r\n\r\nexport interface IAccountingMessageResponse {\r\n messageType: string;\r\n message: string;\r\n}\r\n\r\nexport class AccountingDocument {\r\n customerId: number;\r\n arNumber: string;\r\n postPeriod: number;\r\n postYear: number;\r\n invoiceNumber: number;\r\n amount: number;\r\n hasErrors: boolean;\r\n hasWarnings: boolean;\r\n status: string;\r\n hasManualStatus: boolean;\r\n loadId?: number;\r\n documentNumber?: number;\r\n\r\n lines: AccountingDocumentLine[];\r\n messages: AccountingMessage[];\r\n\r\n public static create(dto: IAccountingDocumentResponse): AccountingDocument {\r\n const accountingDocument = new AccountingDocument();\r\n\r\n accountingDocument.customerId = dto.customerId;\r\n accountingDocument.arNumber = dto.arNumber;\r\n accountingDocument.postPeriod = dto.postPeriod;\r\n accountingDocument.postYear = dto.postYear;\r\n accountingDocument.invoiceNumber = dto.invoiceNumber;\r\n accountingDocument.amount = dto.amount;\r\n accountingDocument.hasErrors = dto.hasErrors;\r\n accountingDocument.hasWarnings = dto.hasWarnings;\r\n accountingDocument.status = dto.status;\r\n accountingDocument.hasManualStatus = dto.hasManualStatus;\r\n accountingDocument.loadId = dto.loadId;\r\n accountingDocument.documentNumber = dto.documentNumber;\r\n\r\n if(!_.isNil(dto.lines)) {\r\n accountingDocument.lines = _.map(dto.lines, x => AccountingDocumentLine.create(x));\r\n }\r\n\r\n if(!_.isNil(dto.messages)) {\r\n accountingDocument.messages = _.map(dto.messages, x => AccountingMessage.create(x));\r\n }\r\n\r\n return accountingDocument;\r\n }\r\n}\r\n\r\nexport class AccountingDocumentLine {\r\n generalLedgerAccount: string;\r\n description: string;\r\n profitCenter: string;\r\n costCenter: string;\r\n orderNumber: string;\r\n amount: number;\r\n hasErrors: boolean;\r\n hasWarnings: boolean;\r\n\r\n messages: IAccountingMessageResponse[];\r\n\r\n public static create(dto: AccountingDocumentLine): AccountingDocumentLine {\r\n const accountingDocumentLine = new AccountingDocumentLine();\r\n\r\n accountingDocumentLine.generalLedgerAccount = dto.generalLedgerAccount;\r\n accountingDocumentLine.description = dto.description;\r\n accountingDocumentLine.profitCenter = dto.profitCenter;\r\n accountingDocumentLine.costCenter = dto.costCenter;\r\n accountingDocumentLine.orderNumber = dto.orderNumber;\r\n accountingDocumentLine.amount = dto.amount;\r\n accountingDocumentLine.hasErrors = dto.hasErrors;\r\n accountingDocumentLine.hasWarnings = dto.hasWarnings;\r\n\r\n if(!_.isNil(dto.messages)) {\r\n accountingDocumentLine.messages = _.map(dto.messages, x => AccountingMessage.create(x));\r\n }\r\n\r\n return accountingDocumentLine;\r\n }\r\n}\r\n\r\nexport class AccountingMessage {\r\n constructor(public messageType: string, public message: string) {\r\n }\r\n\r\n public static create(dto: IAccountingMessageResponse): AccountingMessage {\r\n return new AccountingMessage(dto.messageType, dto.message);\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Billing Month: {{model.lastSearchParams?.billingMonth | gasMonthFormat}}\r\n Post Year: {{model.lastSearchParams?.postBillingMonth?.year}}\r\n Post Period: {{model.lastSearchParams?.postBillingMonth?.month}}\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.billingMonth | gasMonthFormat }}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.postBillingMonth?.year}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.postBillingMonth?.month}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
Total Documents for month: {{ model.statTotal }}
\r\n
{{statSummary}}
\r\n
\r\n
0\" class=\"pull-right\">\r\n Export CSV |\r\n Export Winshuttle\r\n
\r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
{{cellInfo.data['hasManualStatus'] ? cellInfo.value + ' (Manually)' : cellInfo.value}}
\r\n
\r\n\r\n
\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n
{{message.message}}
\r\n
\r\n
\r\n \r\n\r\n
0\">\r\n
\r\n\r\n \r\n
{{message.message}}
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n","import {Component, ViewChild} from \"@angular/core\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {forkJoin, Observable, of, throwError} from \"rxjs\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {AccountsReceivableModel, AccountsReceivableSearchParams} from \"app/gcts/invoicing/accounts-receivable/accounts-receivable.model\";\r\nimport {catchError, concatMap, tap} from \"rxjs/operators\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {AccountingDocument, AccountsReceivableService} from \"@shared/services/invoicing/accounts-receivable/accounts-receivable.service\";\r\nimport * as _ from \"lodash\";\r\nimport {InvoicingInvoiceBillingProcessService} from \"@shared/services/invoicing/invoicing-invoice-billing-process/invoicing-invoice-billing-process.service\";\r\nimport {EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {DataGridHooks} from \"@shared/devexpress/datagrid-hooks\";\r\nimport {JobService} from \"@shared/services/job-scheduling/jobs/job.service\";\r\nimport {YesNoCancelModalService} from \"@shared/services/webapp/yes-no-cancel-modal/yes-no-cancel-modal.service\";\r\nimport {YesNoModalOptions} from \"@shared/services/webapp/modal-options/yes-no-modal-options\";\r\nimport {SelectedModalOption} from \"@shared/services/webapp/modal-options/selected-modal-option\";\r\n\r\n@Component({\r\n selector: 'app-accounts-receivable',\r\n templateUrl: './accounts-receivable.component.html',\r\n styleUrls: ['./accounts-receivable.component.css']\r\n})\r\nexport class AccountsReceivableComponent extends BaseSearchComponent {\r\n private static PARAM_BILLING_MONTH: string = 'billingMonth';\r\n\r\n private static STATUS_LOOK_UP = {\r\n 'Pending with Errors': { sortOrder: 0, color: 'alert-danger' },\r\n 'Pending with Warnings': { sortOrder: 1, color: 'alert-warning' },\r\n 'Pending': { sortOrder: 2, color: '' },\r\n 'In Progress': { sortOrder: 3, color: 'alert-info' },\r\n 'Failed': { sortOrder: 4, color: 'alert-danger' },\r\n 'Passed': { sortOrder: 5, color: 'alert-success' }\r\n };\r\n\r\n model: AccountsReceivableModel = new AccountsReceivableModel();\r\n @ViewChild(DxDataGridComponent) accountingReceivableDataGrid: DxDataGridComponent;\r\n\r\n constructor(\r\n protected appService: AppService,\r\n activatedRoute: ActivatedRoute,\r\n router: Router,\r\n protected alertService: AlertService,\r\n protected commonDataBillingMonthService: CommonDataBillingMonthService,\r\n protected invoicingInvoiceBillingProcessService: InvoicingInvoiceBillingProcessService,\r\n protected invoicingAccountsReceivableService: AccountsReceivableService,\r\n protected commonDataEnterpriseService: EnterpriseService,\r\n protected enterpriseEnrichmentService: EnterpriseEnrichmentService,\r\n protected jobSchedulingJobService: JobService,\r\n protected modalService: YesNoCancelModalService) {\r\n super('Accounts Receivable', appService, activatedRoute, router, alertService);\r\n\r\n this.enterpriseEnrichmentService.setEnrichmentResource(this.commonDataEnterpriseService);\r\n }\r\n\r\n public recreateDocumentsClicked(): void {\r\n this.appService.clearMessages();\r\n\r\n this.jobSchedulingJobService\r\n .submitJob('AfterFlow', 'CreateAccountingDocumentsStep')\r\n .subscribe(() => this.alertService.addSuccessMessage('Success:', 'Create Accounting Documents job submitted.'));\r\n }\r\n\r\n public passDocumentsClicked(): void {\r\n this.appService.clearMessages();\r\n\r\n const yesNoModalOptions = new YesNoModalOptions('Pass Documents?', 'Are you sure you want to bypass the normal business process and manually set all Pending or In Progress documents to Passed?', 'Cancel', 'Manually Pass Documents');\r\n this.modalService.show(yesNoModalOptions)\r\n .subscribe((selectedModalOption: SelectedModalOption) => {\r\n if(selectedModalOption === SelectedModalOption.Yes) {\r\n this.invoicingAccountsReceivableService.passDocuments(this.model.lastSearchParams.billingMonth)\r\n .pipe(\r\n concatMap(() => this.loadSearchResources()), // Refresh Batch Status\r\n concatMap(() => this.performSearch())\r\n )\r\n .subscribe(() => {\r\n this.alertService.addSuccessMessage('Success:', 'Pending or In Progress documents were manually set to Passed.');\r\n });\r\n }\r\n });\r\n }\r\n\r\n public submitClicked(): void {\r\n this.appService.clearMessages();\r\n\r\n this.invoicingAccountsReceivableService.batchDocuments()\r\n .pipe(\r\n concatMap(() => this.loadSearchResources()), // Refresh Batch Status\r\n concatMap(() => this.performSearch()),\r\n catchError(error => {\r\n if(error.status === 503) {\r\n this.alertService.addErrorMessage('Error:', 'Could not get batch status from SAP, please try again later.');\r\n }\r\n\r\n return throwError(error);\r\n })\r\n )\r\n .subscribe(() => {});\r\n }\r\n\r\n public exportCsvClicked(): void {\r\n this.invoicingAccountsReceivableService.getAccountingDocumentsCsv(this.model.lastSearchParams.billingMonth)\r\n .subscribe(data => this.saveCsvFile(data));\r\n }\r\n\r\n public exportWinshuttleClicked(): void {\r\n this.invoicingAccountsReceivableService.getAccountDocumentsWinshuttle(this.model.lastSearchParams.billingMonth)\r\n .subscribe(data => this.saveTxtFile(data));\r\n }\r\n\r\n public toggleExpandAll(expandAll: boolean, dataGrid: DxDataGridComponent): void {\r\n if(expandAll) {\r\n dataGrid.instance.expandAll(-1);\r\n } else {\r\n dataGrid.instance.collapseAll(-1);\r\n }\r\n\r\n // prevent browser from scrolling down while it is performing expand/collapse feature\r\n setTimeout(() => window.scrollTo( { top: 0, left: 0, behavior: 'smooth' } ));\r\n }\r\n\r\n public calculateStatusSortValue = (accountingDocument: AccountingDocument) => {\r\n const status = this.calculateStatusForSortAndColoring(accountingDocument);\r\n return AccountsReceivableComponent.STATUS_LOOK_UP[status]?.sortOrder;\r\n };\r\n\r\n public getDocumentStatusColor(accountingDocument: AccountingDocument) {\r\n const status = this.calculateStatusForSortAndColoring(accountingDocument);\r\n return AccountsReceivableComponent.STATUS_LOOK_UP[status]?.color;\r\n }\r\n\r\n public isWarning(messageType: string): boolean {\r\n return messageType === 'ValidationWarning';\r\n }\r\n\r\n public isError(messageType: string): boolean {\r\n return messageType === 'ResponseError' || messageType === 'ValidationError';\r\n }\r\n\r\n public accountingDocumentLinesDataGridOnRowPrepared(row: any): void {\r\n if(row.rowType === 'data') {\r\n if(row.data['hasWarnings']) {\r\n row.rowElement.classList.add('accounting-document-line-warning');\r\n }\r\n\r\n if(row.data['hasErrors']) {\r\n row.rowElement.classList.add('accounting-document-line-error');\r\n }\r\n }\r\n }\r\n\r\n public accountingDocumentLinesDataGridOnCellPrepared($event): void {\r\n DataGridHooks.hideExpandIcon($event, (rowData) => rowData['hasErrors'] === false && rowData['hasWarnings'] === false);\r\n }\r\n\r\n public accountReceivableLinesHasErrorOrWarnings(accountingDocument: AccountingDocument): boolean {\r\n return _.some(accountingDocument.lines, x => x.hasErrors || x.hasWarnings);\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n const getOldestBillingMonth$ = this.commonDataBillingMonthService.getOldest()\r\n .pipe(\r\n tap(oldestBillingMonth => this.model.oldestBillingMonth = oldestBillingMonth)\r\n );\r\n\r\n const getOpenBillingMonth$ = this.commonDataBillingMonthService.getOpen()\r\n .pipe(\r\n tap(openBillingMonth => this.model.openBillingMonth = openBillingMonth)\r\n );\r\n\r\n return forkJoin([getOldestBillingMonth$, getOpenBillingMonth$]);\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n const paramValidator = ParamValidator.Standard();\r\n\r\n paramValidator.isGasMonth(AccountsReceivableComponent.PARAM_BILLING_MONTH);\r\n\r\n return paramValidator.isValid(params);\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams = new AccountsReceivableSearchParams();\r\n this.model.searchResults = null;\r\n this.model.searchParams.billingMonth = this.model.openBillingMonth.gasMonth;\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams.billingMonth = typedParams.asGasMonth(AccountsReceivableComponent.PARAM_BILLING_MONTH);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n return {\r\n billingMonth: this.model.searchParams.billingMonth.toString()\r\n };\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n // Always Reset Properties\r\n this.model.isRecreateDocumentsButtonEnabled = this.model.isPassDocumentsButtonEnabled = this.model.isSubmitButtonEnabled = false;\r\n this.model.searchResults = null;\r\n\r\n return this.invoicingAccountsReceivableService.refreshAccountingBatchStatus(this.model.searchParams.billingMonth)\r\n .pipe(\r\n tap(accountingBatch => {\r\n // If batch.status is null, we don't want to display message, because there was no in progress batch to check on\r\n if (accountingBatch.status === 'Passed') {\r\n this.alertService.addSuccessMessage(`${accountingBatch.status}:`, `Batch with Load Id ${accountingBatch.loadId} has passed.`);\r\n } else if (accountingBatch.status === 'Failed') {\r\n this.alertService.addErrorMessage(`${accountingBatch.status}:`, `Batch with Load Id ${accountingBatch.loadId} has failed.`);\r\n } else if (accountingBatch.status === 'In Progress') {\r\n this.alertService.addInfoMessage(`${accountingBatch.status}:`, `Batch with Load Id ${accountingBatch.loadId} is in progress.`);\r\n }\r\n })\r\n );\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.searchResults = null;\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n\r\n const getInvoiceBillingProcess$ = this.invoicingInvoiceBillingProcessService.get(this.model.searchParams.billingMonth)\r\n .pipe(\r\n tap(invoiceBillingProcess => this.model.invoiceBillingProcess = invoiceBillingProcess)\r\n );\r\n\r\n const queryAccountingDocuments$ = this.invoicingAccountsReceivableService.queryAccountingDocuments(this.model.searchParams.billingMonth)\r\n .pipe(\r\n concatMap(accountingDocuments => this.enterpriseEnrichmentService.enrichArray(accountingDocuments, 'customerId', 'customer')),\r\n tap(accountingDocuments => {\r\n this.model.searchResults = accountingDocuments;\r\n this.calculateReportStatistics(accountingDocuments);\r\n this.updateButtonStatuses(accountingDocuments);\r\n })\r\n );\r\n\r\n return forkJoin([getInvoiceBillingProcess$, queryAccountingDocuments$]);\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n if (this.accountingReceivableDataGrid) {\r\n this.accountingReceivableDataGrid.instance.clearSorting();\r\n this.accountingReceivableDataGrid.instance.columnOption('Load Id', {sortOrder: 'desc', sortIndex: 0});\r\n this.accountingReceivableDataGrid.instance.columnOption('Customer', {sortOrder: 'asc', sortIndex: 2});\r\n this.accountingReceivableDataGrid.instance.columnOption('Invoice Number', {sortOrder: 'asc', sortIndex: 3});\r\n this.accountingReceivableDataGrid.instance.columnOption('Status', {sortOrder: 'asc', sortIndex: 1});\r\n }\r\n }\r\n\r\n private calculateReportStatistics(accountingDocuments: AccountingDocument[]): void {\r\n if(_.isEmpty(accountingDocuments)) {\r\n this.model.statTotal = '0';\r\n this.model.statSummaries = [];\r\n return;\r\n }\r\n\r\n const numberOfPassedDocuments = _.filter(accountingDocuments, x => x.status === 'Passed').length; // Count passed from all batches\r\n const batchGroups = _.groupBy(accountingDocuments, x => x.loadId);\r\n const orderedLoadIds = _.uniq(_.map(accountingDocuments, x => x.loadId)).sort().reverse(); // Latest batch first\r\n const firstLoadId = _.last(orderedLoadIds);\r\n const numberOfDocumentsInFirstBatch = batchGroups[firstLoadId].length;\r\n\r\n this.model.statTotal = `${numberOfPassedDocuments}/${numberOfDocumentsInFirstBatch} Passed`;\r\n this.model.statSummaries = _.map(orderedLoadIds, loadId => {\r\n const batchDocuments = batchGroups[loadId];\r\n const prefix = (_.isNil(loadId )) ? '' : `Load Id ${loadId} - Posted: ${batchDocuments.length}, `;\r\n const statusGroups = _.groupBy(batchDocuments, x => x.status);\r\n const statusCounts = _.map(statusGroups, (groupItems, groupKey) => {\r\n return groupKey + ': ' + groupItems.length;\r\n });\r\n\r\n return prefix + statusCounts.sort().join(', ');\r\n });\r\n }\r\n\r\n private updateButtonStatuses(accountingDocuments: AccountingDocument[]): void {\r\n this.model.isRecreateDocumentsButtonEnabled = this.isRecreateDocumentsButtonEnabled(accountingDocuments);\r\n this.model.isPassDocumentsButtonEnabled = this.isPassDocumentsButtonEnabled(accountingDocuments);\r\n this.model.isSubmitButtonEnabled = this.isSubmitButtonEnabled(accountingDocuments);\r\n }\r\n\r\n private isRecreateDocumentsButtonEnabled(accountingDocuments: AccountingDocument[]): boolean {\r\n if (!this.model.lastSearchParams.billingMonth.isEqual(this.model.openBillingMonth.gasMonth) ||\r\n this.model.openBillingMonth.isMigrated ||\r\n this.model.invoiceBillingProcess.status !== 'Final') {\r\n return false;\r\n }\r\n\r\n if(_.isEmpty(accountingDocuments)) return true;\r\n if(_.some(accountingDocuments, x => x.status === 'In Progress'|| x.status === 'Pending')) return true;\r\n\r\n const batchGroups = _.groupBy(accountingDocuments, x => x.loadId);\r\n const orderedLoadIds = _.uniq(_.map(accountingDocuments, x => x.loadId)).sort().reverse(); // Latest batch first\r\n const latestLoadId = _.first(orderedLoadIds);\r\n const latestDocuments = batchGroups[latestLoadId];\r\n return _.some(latestDocuments, x => x.status === 'Failed');\r\n }\r\n\r\n private isPassDocumentsButtonEnabled(accountingDocuments: AccountingDocument[]): boolean {\r\n if(!this.model.lastSearchParams.billingMonth.isEqual(this.model.openBillingMonth.gasMonth)) return false;\r\n return _.some(accountingDocuments, x => x.status === 'In Progress'|| x.status === 'Pending');\r\n }\r\n\r\n private isSubmitButtonEnabled(accountingDocuments: AccountingDocument[]): boolean {\r\n if(!this.model.lastSearchParams.billingMonth.isEqual(this.model.openBillingMonth.gasMonth)) return false;\r\n\r\n const pendingDocuments = _.filter(accountingDocuments, x => x.status === 'Pending');\r\n return !_.isEmpty(pendingDocuments) && _.every(pendingDocuments, x => x.hasErrors === false);\r\n }\r\n\r\n private calculateStatusForSortAndColoring(accountingDocument: AccountingDocument) {\r\n if(accountingDocument.status === 'Pending') {\r\n if(accountingDocument.hasErrors) {\r\n return 'Pending with Errors';\r\n } else if(accountingDocument.hasWarnings) {\r\n return 'Pending with Warnings';\r\n }\r\n }\r\n\r\n return accountingDocument.status;\r\n }\r\n}\r\n","import {BaseViewModel} from \"@model/base-view-model\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {InvoiceRecipient} from \"@shared/services/invoicing/invoicing-invoice-package/invoicing-invoice-package.service\";\r\nimport {Enterprise} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport {CustomerManualCharge, ForceMajeureCredit, ManualChargeDefinition, NominationGroupManualCharge} from \"@shared/services/invoicing/invoicing-manual-charge/invoicing-manual-change.service\";\r\nimport {AccountsInvoiceRecipient} from \"@shared/services/contracts/invoice-recipient/invoice-recipient.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {SimpleNominationGroup} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport {Option} from \"@angular/cli/models/interface\";\r\nimport {ProvinceTax} from \"@shared/services/invoicing/invoicing-tax-rate/invoicing-tax-rate.service\";\r\nimport {AccountingLocation, Location} from \"@shared/interfaces/location\";\r\n\r\nexport class ManualChargePopupModel {\r\n id: number;\r\n billingMonth: GasMonth;\r\n affectedGasMonth: GasMonth;\r\n customerId: number;\r\n customerDisplayName: string;\r\n invoiceRecipientEnterpriseId: number;\r\n invoiceRecipientDisplayName: string;\r\n adjustmentType: string;\r\n newAdjustmentTypeName: string;\r\n totalCharge: number;\r\n description: string;\r\n additionalDescription: string;\r\n serviceClass: string;\r\n companyCode: string;\r\n position: string;\r\n invoiceSequence: number;\r\n profitCenter: string;\r\n costCenter: string;\r\n orderNumber: string;\r\n generalLedgerAccount: string;\r\n version: number;\r\n\r\n isAdding: boolean;\r\n isEditing: boolean;\r\n errorMessage: string;\r\n\r\n}\r\n\r\nexport class CustomerPopupModel extends ManualChargePopupModel {\r\n invoiceNumber: number;\r\n interestRate: number;\r\n unpaidAmount: number;\r\n outstandingFromGasDay: GasDay;\r\n outstandingToGasDay: GasDay;\r\n numberOfDaysInterestCharged: number;\r\n interestAmountPerDay: number;\r\n\r\n positionTypesForPopup: OptionType[] = [new OptionType('After Tax Line'), new OptionType('After Total Line')];\r\n}\r\n\r\nexport class NomGroupPopupModel extends ManualChargePopupModel {\r\n nomGroupId: number;\r\n nomGroupMnemonic: string;\r\n receiptLocationId: number;\r\n deliveryLocationId: number;\r\n tollCharge: string;\r\n taxRate: string;\r\n quantityType: string;\r\n quantity: number;\r\n\r\n positionTypesForPopup: OptionType[] = [new OptionType('Non-Transportation'), new OptionType('Transportation')];\r\n serviceClasses: OptionType[] = [new OptionType('EDGA'), new OptionType('EOC'), new OptionType('Other'), new OptionType('Park And Loan (PALS)'),\r\n new OptionType('FT'), new OptionType('OFO')];\r\n quantityTypes: OptionType[] = [new OptionType('Commodity'), new OptionType('Demand')];\r\n}\r\n\r\nexport class ViewManualAdjustmentModel extends BaseViewModel {\r\n customers: InvoiceRecipient[];\r\n arNumbers: Enterprise[];\r\n adjustmentTypes: ManualChargeDefinition[];\r\n adjustmentTypesForCustomerPopup: ManualChargeDefinition[];\r\n adjustmentTypesForNomGroupPopup: ManualChargeDefinition[];\r\n invoiceRecipientsForSelectedCustomer: AccountsInvoiceRecipient[];\r\n nominationGroupsForSelectedCustomer: SimpleNominationGroup[];\r\n provincialTaxRates: ProvinceTax[];\r\n taxRates: OptionType[];\r\n locationsForPopup: AccountingLocation[];\r\n isManualChargesComplete: boolean;\r\n isAccountingProcessComplete: boolean;\r\n\r\n oldestBillingMonth: BillingMonth;\r\n openBillingMonth: BillingMonth;\r\n preliminaryBillingMonth: BillingMonth;\r\n newestBillingMonth: BillingMonth;\r\n\r\n minGasMonth: GasMonth;\r\n maxGasMonth: GasMonth;\r\n customerSearchResults: CustomerManualCharge[];\r\n nominationGroupSearchResults: NominationGroupManualCharge[];\r\n forceMajeureSearchResults: ForceMajeureCredit[];\r\n\r\n searchParams: ViewManualAdjustmentSearchParams = new ViewManualAdjustmentSearchParams();\r\n lastSearchParams: ViewManualAdjustmentSearchParams;\r\n\r\n public hasSearchResults(): boolean {\r\n return !!this.customerSearchResults || !!this.nominationGroupSearchResults || !!this.forceMajeureSearchResults;\r\n }\r\n\r\n public clearSearchResults(): void {\r\n this.customerSearchResults = null;\r\n this.nominationGroupSearchResults = null;\r\n this.forceMajeureSearchResults = null;\r\n }\r\n}\r\n\r\nexport class ViewManualAdjustmentSearchParams {\r\n startBillingMonth: GasMonth;\r\n endBillingMonth: GasMonth;\r\n customerId? : number;\r\n arNumber?: string;\r\n adjustmentType: string;\r\n searchByType: string;\r\n}\r\n\r\nexport class OptionType {\r\n id: string;\r\n display: string;\r\n\r\n constructor(value: string) {\r\n this.id = value;\r\n this.display = value;\r\n }\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {InvoicingResourceService} from \"@shared/resources/invoicing-resource.service\";\r\nimport {Observable} from \"rxjs\";\r\nimport {map} from \"rxjs/operators\";\r\nimport * as _ from \"lodash\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {CustomerInterestRow, CustomerRow, ForceMajeureRowData, NominationGroupRow} from \"app/gcts/invoicing/load-manual-adjustment/load-manual-adjustment.model\";\r\n\r\nexport interface IManualChargeDefinitionResponse {\r\n manualChargeType: string;\r\n adjustmentType: string;\r\n description: string;\r\n companyCode: string;\r\n profitCenter: string;\r\n costCenter: string;\r\n generalLedgerAccount: string;\r\n orderNumber: string;\r\n invoiceSequence: number;\r\n positionOnInvoice: string;\r\n serviceClass: string;\r\n}\r\n\r\nexport class ManualChargeDefinition {\r\n manualChargeType: string;\r\n adjustmentType: string;\r\n description: string;\r\n companyCode: string;\r\n profitCenter: string;\r\n costCenter: string;\r\n generalLedgerAccount: string;\r\n orderNumber: string;\r\n positionOnInvoice: string;\r\n invoiceSequence: number;\r\n serviceClass: string;\r\n\r\n public static create(dto: IManualChargeDefinitionResponse) {\r\n const manualChargeDefinition = new ManualChargeDefinition();\r\n manualChargeDefinition.manualChargeType = dto.manualChargeType;\r\n manualChargeDefinition.adjustmentType = dto.adjustmentType;\r\n manualChargeDefinition.description = dto.description;\r\n manualChargeDefinition.companyCode = dto.companyCode;\r\n manualChargeDefinition.profitCenter = dto.profitCenter;\r\n manualChargeDefinition.costCenter = dto.costCenter;\r\n manualChargeDefinition.generalLedgerAccount = dto.generalLedgerAccount;\r\n manualChargeDefinition.orderNumber = dto.orderNumber;\r\n manualChargeDefinition.positionOnInvoice = dto.positionOnInvoice;\r\n manualChargeDefinition.invoiceSequence = dto.invoiceSequence;\r\n manualChargeDefinition.serviceClass = dto.serviceClass;\r\n return manualChargeDefinition;\r\n }\r\n}\r\n\r\nexport interface IBaseManualChargeResponse {\r\n id: number;\r\n billingMonth: string;\r\n affectedBillingMonth: string;\r\n invoiceRecipientEnterpriseId: number;\r\n customerEnterpriseId: number;\r\n adjustmentType: string;\r\n description: string;\r\n additionalDescription: string;\r\n positionOnInvoice: string;\r\n totalCharge: number;\r\n companyCode: string;\r\n profitCenter: string;\r\n costCenter: string;\r\n generalLedgerAccount: string;\r\n orderNumber: string;\r\n invoiceSequence: number;\r\n version: number;\r\n pipelineCode: string;\r\n}\r\n\r\nexport interface IForceMajeureCreditResponse {\r\n billingMonth: string;\r\n nomGroupId: string;\r\n invoiceRecipientEnterpriseId: number;\r\n customerEnterpriseId: number;\r\n receiptLocationId: number;\r\n deliveryLocationId: number;\r\n gasDay: string;\r\n quantity: number;\r\n contractPrice: number;\r\n taxExempt: boolean;\r\n pipelineCode: string;\r\n}\r\n\r\nexport interface ICustomerManualChargeResponse extends IBaseManualChargeResponse {\r\n invoiceNumber: number;\r\n interestRate: number;\r\n unpaidAmount: number;\r\n outstandingFromGasDay: string;\r\n outstandingToGasDay: string;\r\n numberOfDaysInterestCharged: number;\r\n interestAmountPerDay: number;\r\n}\r\n\r\nexport interface INominationGroupManualChargeResponse extends IBaseManualChargeResponse {\r\n nominationGroupId: number;\r\n invoiceGroupId: number;\r\n receiptLocationId: number;\r\n receiptLocationName: string;\r\n deliveryLocationId: number;\r\n deliveryLocationName: string;\r\n quantityType: string;\r\n taxRate: string;\r\n quantity: number;\r\n toll: number;\r\n serviceClass: string;\r\n}\r\n\r\nexport class BaseManualCharge {\r\n id: number;\r\n billingMonth: GasMonth;\r\n affectedBillingMonth: GasMonth;\r\n invoiceRecipientEnterpriseId: number;\r\n customerEnterpriseId: number;\r\n adjustmentType: string;\r\n description: string;\r\n additionalDescription: string;\r\n positionOnInvoice: string;\r\n totalCharge: number;\r\n companyCode: string;\r\n profitCenter: string;\r\n costCenter: string;\r\n generalLedgerAccount: string;\r\n orderNumber: string;\r\n invoiceSequence: number;\r\n version: number;\r\n pipelineCode: string;\r\n\r\n protected baseInitialize(dto: IBaseManualChargeResponse) {\r\n this.id = +dto.id;\r\n this.billingMonth = GasMonth.parse(dto.billingMonth);\r\n this.affectedBillingMonth = GasMonth.parse(dto.affectedBillingMonth);\r\n this.invoiceRecipientEnterpriseId = +dto.invoiceRecipientEnterpriseId;\r\n this.customerEnterpriseId = +dto.customerEnterpriseId;\r\n this.adjustmentType = dto.adjustmentType;\r\n this.description = dto.description;\r\n this.additionalDescription = dto.additionalDescription;\r\n this.positionOnInvoice = dto.positionOnInvoice;\r\n this.totalCharge = +dto.totalCharge;\r\n this.companyCode = dto.companyCode;\r\n this.profitCenter = dto.profitCenter;\r\n this.costCenter = dto.costCenter;\r\n this.generalLedgerAccount = dto.generalLedgerAccount;\r\n this.orderNumber = dto.orderNumber;\r\n this.invoiceSequence = dto.invoiceSequence;\r\n this.version = +dto.version;\r\n this.pipelineCode = dto.pipelineCode;\r\n }\r\n}\r\n\r\nexport class CustomerManualCharge extends BaseManualCharge {\r\n invoiceNumber: number;\r\n interestRate: number;\r\n unpaidAmount: number;\r\n outstandingFromGasDay: string;\r\n outstandingToGasDay: string;\r\n numberOfDaysInterestCharged: number;\r\n interestAmountPerDay: number;\r\n\r\n public static create(dto: ICustomerManualChargeResponse) {\r\n const customerManualCharge = new CustomerManualCharge();\r\n customerManualCharge.invoiceNumber = !_.isNil(dto.invoiceNumber) ? +dto.invoiceNumber : null;\r\n customerManualCharge.interestRate = !_.isNil(dto.interestRate) ? +dto.interestRate : null;\r\n customerManualCharge.unpaidAmount = !_.isNil(dto.unpaidAmount) ? +dto.unpaidAmount : null;\r\n customerManualCharge.outstandingFromGasDay = dto.outstandingFromGasDay;\r\n customerManualCharge.outstandingToGasDay = dto.outstandingToGasDay;\r\n customerManualCharge.numberOfDaysInterestCharged = !_.isNil(dto.numberOfDaysInterestCharged) ? +dto.numberOfDaysInterestCharged : null;\r\n customerManualCharge.interestAmountPerDay = !_.isNil(dto.interestAmountPerDay) ? +dto.interestAmountPerDay : null;\r\n customerManualCharge.baseInitialize(dto);\r\n return customerManualCharge;\r\n }\r\n}\r\n\r\nexport class NominationGroupManualCharge extends BaseManualCharge {\r\n nominationGroupId: number;\r\n invoiceGroupId: number;\r\n receiptLocationId: number;\r\n receiptLocationName: string;\r\n deliveryLocationId: number;\r\n deliveryLocationName: string;\r\n quantityType: string;\r\n taxRate: string;\r\n quantity: number;\r\n toll: number;\r\n serviceClass: string;\r\n\r\n public static create(dto: INominationGroupManualChargeResponse) {\r\n const nominationGroupManualCharge = new NominationGroupManualCharge();\r\n nominationGroupManualCharge.nominationGroupId = +dto.nominationGroupId;\r\n nominationGroupManualCharge.invoiceGroupId = +dto.invoiceGroupId;\r\n nominationGroupManualCharge.receiptLocationId = !_.isNil(dto.receiptLocationId) ? +dto.receiptLocationId : null;\r\n nominationGroupManualCharge.receiptLocationName = dto.receiptLocationName;\r\n nominationGroupManualCharge.deliveryLocationId = !_.isNil(dto.deliveryLocationId) ? +dto.deliveryLocationId : null;\r\n nominationGroupManualCharge.deliveryLocationName = dto.deliveryLocationName;\r\n nominationGroupManualCharge.quantityType = dto.quantityType;\r\n nominationGroupManualCharge.taxRate = dto.taxRate;\r\n nominationGroupManualCharge.quantity = !_.isNil(dto.quantity) ? +dto.quantity : null;\r\n nominationGroupManualCharge.toll = !_.isNil(dto.toll) ? +dto.toll : null;\r\n nominationGroupManualCharge.serviceClass = dto.serviceClass;\r\n nominationGroupManualCharge.baseInitialize(dto);\r\n return nominationGroupManualCharge;\r\n }\r\n}\r\n\r\nexport class ForceMajeureCredit {\r\n billingMonth: GasMonth;\r\n nomGroupId: number;\r\n invoiceRecipientEnterpriseId: number;\r\n customerEnterpriseId: number;\r\n receiptLocationId: number;\r\n deliveryLocationId: number;\r\n gasDay: GasDay;\r\n quantity: number;\r\n contractPrice: number;\r\n taxExempt: boolean;\r\n pipelineCode: string;\r\n\r\n public static create(dto: IForceMajeureCreditResponse) {\r\n const forceMajeureCredit = new ForceMajeureCredit();\r\n forceMajeureCredit.billingMonth = GasMonth.parse(dto.billingMonth);\r\n forceMajeureCredit.nomGroupId = +dto.nomGroupId;\r\n forceMajeureCredit.invoiceRecipientEnterpriseId = +dto.invoiceRecipientEnterpriseId;\r\n forceMajeureCredit.customerEnterpriseId = +dto.customerEnterpriseId;\r\n forceMajeureCredit.receiptLocationId = !_.isNil(dto.receiptLocationId) ? +dto.receiptLocationId : null;\r\n forceMajeureCredit.deliveryLocationId = +dto.deliveryLocationId;\r\n forceMajeureCredit.gasDay = GasDay.parse(dto.gasDay);\r\n forceMajeureCredit.quantity = +dto.quantity;\r\n forceMajeureCredit.contractPrice = !_.isNil(dto.contractPrice) ? +dto.contractPrice : null;\r\n forceMajeureCredit.taxExempt = dto.taxExempt;\r\n forceMajeureCredit.pipelineCode = dto.pipelineCode;\r\n return forceMajeureCredit;\r\n }\r\n}\r\n\r\nexport class ManualChargeSearchRequest {\r\n startBillingMonth: GasMonth;\r\n endBillingMonth: GasMonth;\r\n adjustmentType: string;\r\n enterpriseId: number;\r\n arNumber: string;\r\n}\r\n\r\nexport class ManualChargeRequest {\r\n id: string;\r\n billingMonth: string;\r\n affectedBillingMonth: string;\r\n newAdjustmentType: string;\r\n adjustmentType: string;\r\n totalCharge: string;\r\n additionalDescription: string;\r\n serviceClass: string;\r\n version: string;\r\n description: string;\r\n positionOnInvoice: string;\r\n companyCode: string;\r\n profitCenter: string;\r\n costCenter: string;\r\n orderNumber: string;\r\n invoiceSequence: number;\r\n generalLedgerAccount: string;\r\n}\r\n\r\nexport class CustomerManualChargeRequest extends ManualChargeRequest {\r\n invoiceRecipientEnterpriseId: string;\r\n invoiceRecipientMnemonic: string;\r\n customerEnterpriseId: string;\r\n customerMnemonic: string;\r\n invoiceNumber: string;\r\n interestRate: string;\r\n unpaidAmount: string;\r\n outstandingFromGasDay: string;\r\n outstandingToGasDay: string;\r\n numberOfDaysInterestCharged: string;\r\n interestAmountPerDay: string;\r\n}\r\n\r\nexport class NominationGroupManualChargeRequest extends ManualChargeRequest {\r\n nominationGroupMnemonic: string;\r\n receiptLocationId: string;\r\n receiptLocationName: string;\r\n deliveryLocationId: string;\r\n deliveryLocationName: string;\r\n quantityType: string;\r\n quantity: string;\r\n toll: string;\r\n taxRate: string;\r\n}\r\n\r\n// Generic interface for all the errors. Not all fields will be filled out by the backend dto.\r\nexport interface ILoadManualChargeErrorResponse {\r\n lineNumber: number;\r\n errorMessage: string;\r\n\r\n billingMonth: string;\r\n affectedBillingMonth: string;\r\n invoiceRecipientMnemonic: string;\r\n customerMnemonic: string;\r\n nominationGroupMnemonic: string;\r\n adjustmentType: string;\r\n receiptLocationName: string;\r\n deliveryLocationName: string;\r\n gasDay: string;\r\n quantityType: string;\r\n quantity: string;\r\n contractPrice: string;\r\n taxExempt: string;\r\n taxRate: string;\r\n toll: string;\r\n totalCharge: string;\r\n additionalDescription: string;\r\n invoiceNumber: string;\r\n interestRate: string;\r\n unpaidAmount: string;\r\n outstandingFromGasDay: string;\r\n outstandingToGasDay: string;\r\n numberOfDaysInterestCharged: string;\r\n interestAmountPerDay: string;\r\n}\r\n\r\n@Injectable()\r\nexport class InvoicingManualChangeService {\r\n\r\n constructor(private invoicingResource: InvoicingResourceService) { }\r\n\r\n public queryManualChargeDefinitions(): Observable{\r\n return this.invoicingResource.get('/charges/manual/definitions', true)\r\n .pipe(\r\n map(dtos => _.map(dtos, dto => ManualChargeDefinition.create(dto)))\r\n );\r\n }\r\n\r\n public queryCustomerManualCharges(request: ManualChargeSearchRequest): Observable{\r\n return this.invoicingResource.get('/charges/manual/customer', true, this.buildParams(request))\r\n .pipe(\r\n map(dtos => _.map(dtos, dto => CustomerManualCharge.create(dto)))\r\n );\r\n }\r\n\r\n public queryNominationGroupManualCharges(request: ManualChargeSearchRequest): Observable{\r\n return this.invoicingResource.get('/charges/manual/nomGroup', true, this.buildParams(request))\r\n .pipe(\r\n map(dtos => _.map(dtos, dto => NominationGroupManualCharge.create(dto)))\r\n );\r\n }\r\n\r\n public queryForceMajeureCredits(request: ManualChargeSearchRequest): Observable{\r\n return this.invoicingResource.get('/charges/forceMajeure', true, this.buildParams(request))\r\n .pipe(\r\n map(dtos => _.map(dtos, dto => ForceMajeureCredit.create(dto)))\r\n );\r\n }\r\n\r\n public deleteCustomerManualCharge(id: number): Observable{\r\n return this.invoicingResource.deleteWithNoResponseBody('/charges/manual/customer/' + id, true);\r\n }\r\n\r\n public deleteNomGroupManualCharge(id: number): Observable{\r\n return this.invoicingResource.deleteWithNoResponseBody('/charges/manual/nomGroup/' + id, true);\r\n }\r\n\r\n public saveCustomerManualCharge(request: CustomerManualChargeRequest): Observable {\r\n return this.invoicingResource.postWithNoResponseBody('/charges/manual/customer', request);\r\n }\r\n\r\n public updateCustomerManualCharge(request: CustomerManualChargeRequest): Observable {\r\n return this.invoicingResource.putWithNoResponseBody(`/charges/manual/customer/${request.id}`, request);\r\n }\r\n\r\n public saveNomGroupManualCharge(request: NominationGroupManualChargeRequest): Observable {\r\n return this.invoicingResource.postWithNoResponseBody('/charges/manual/nomGroup', request);\r\n }\r\n\r\n public updateNomGroupManualCharge(request: NominationGroupManualChargeRequest): Observable {\r\n return this.invoicingResource.putWithNoResponseBody(`/charges/manual/nomGroup/${request.id}`, request);\r\n }\r\n\r\n public uploadCustomerManualCharges(extractedCustomerData: CustomerRow[] | CustomerInterestRow[]): Observable {\r\n // Returning the raw data. We don't put into a domain object because we want to display raw data.\r\n return this.invoicingResource.post('/charges/manual/customer/load', extractedCustomerData);\r\n }\r\n\r\n public uploadNominationGroupManualCharges(nominationGroupData: NominationGroupRow[]): Observable {\r\n return this.invoicingResource.post('/charges/manual/nomGroup/load', nominationGroupData);\r\n }\r\n\r\n public uploadForceMajeureManualCharges(forceMajeureData: ForceMajeureRowData[]): Observable {\r\n return this.invoicingResource.post('/charges/forceMajeure/load', forceMajeureData);\r\n }\r\n\r\n private buildParams(request: ManualChargeSearchRequest): GCTSHttpParams {\r\n const params = new GCTSHttpParams();\r\n params.setGasMonth(request.startBillingMonth, 'startBillingMonth');\r\n params.setGasMonth(request.endBillingMonth, 'endBillingMonth');\r\n params.setOptionalString('adjustmentType', request.adjustmentType);\r\n params.setOptionalNumber('enterpriseId', request.enterpriseId);\r\n params.setOptionalString('arNumber', request.arNumber);\r\n return params;\r\n }\r\n}\r\n","\r\n
\r\n
\r\n Error: {{customerPopupModel.errorMessage}}\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n","import {Component, EventEmitter, Input, OnInit, Output, ViewChild} from \"@angular/core\";\r\nimport {CustomerPopupModel, ViewManualAdjustmentModel} from \"app/gcts/invoicing/view-manual-adjustment/view-manual-adjustment.model\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {CustomerManualChargeRequest, InvoicingManualChangeService} from \"@shared/services/invoicing/invoicing-manual-charge/invoicing-manual-change.service\";\r\nimport {ModalComponent} from \"@shared/components/modal/modal.component\";\r\nimport * as _ from \"lodash\";\r\nimport {ErrorService} from \"@shared/services/webapp/error/error-service\";\r\nimport {YesNoModalOptions} from \"@shared/services/webapp/modal-options/yes-no-modal-options\";\r\nimport {SelectedModalOption} from \"@shared/services/webapp/modal-options/selected-modal-option\";\r\nimport {YesNoCancelModalService} from \"@shared/services/webapp/yes-no-cancel-modal/yes-no-cancel-modal.service\";\r\n\r\n@Component({\r\n selector: 'app-manual-adjustment-customer-popup',\r\n templateUrl: './manual-adjustment-customer-popup.component.html',\r\n styleUrls: ['./manual-adjustment-customer-popup.component.css']\r\n})\r\n\r\nexport class ManualAdjustmentCustomerPopupComponent implements OnInit {\r\n @Input() model: ViewManualAdjustmentModel;\r\n customerPopupModel: CustomerPopupModel = null;\r\n\r\n @ViewChild(ModalComponent) modal: ModalComponent;\r\n @Output() okEvent = new EventEmitter();\r\n\r\n constructor(protected alertService: AlertService,\r\n protected modalService: YesNoCancelModalService,\r\n protected manualChargeService: InvoicingManualChangeService) {\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n public getTitle(): string {\r\n return !_.isNil(this.customerPopupModel) && this.customerPopupModel.isAdding ? 'Add New Manual Adjustment' : 'Edit Manual Adjustment';\r\n }\r\n\r\n public onAdjustmentTypeChanged(): void {\r\n const selectedAdjustmentType = _.find(this.model.adjustmentTypesForCustomerPopup, x => x.adjustmentType === this.customerPopupModel.adjustmentType);\r\n if(selectedAdjustmentType) {\r\n\r\n this.customerPopupModel.newAdjustmentTypeName = selectedAdjustmentType.adjustmentType === '* New' ? undefined : selectedAdjustmentType.adjustmentType;\r\n this.customerPopupModel.description = selectedAdjustmentType.description;\r\n this.customerPopupModel.companyCode = selectedAdjustmentType.companyCode;\r\n this.customerPopupModel.profitCenter = selectedAdjustmentType.profitCenter;\r\n this.customerPopupModel.costCenter = selectedAdjustmentType.costCenter;\r\n this.customerPopupModel.generalLedgerAccount = selectedAdjustmentType.generalLedgerAccount;\r\n this.customerPopupModel.orderNumber = selectedAdjustmentType.orderNumber;\r\n this.customerPopupModel.position = selectedAdjustmentType.positionOnInvoice;\r\n this.customerPopupModel.invoiceSequence = selectedAdjustmentType.invoiceSequence;\r\n this.customerPopupModel.serviceClass = selectedAdjustmentType.serviceClass;\r\n }\r\n\r\n this.customerPopupModel.invoiceNumber = null;\r\n this.customerPopupModel.interestRate = null;\r\n this.customerPopupModel.unpaidAmount = null;\r\n this.customerPopupModel.outstandingFromGasDay = null;\r\n this.customerPopupModel.outstandingToGasDay = null;\r\n this.customerPopupModel.numberOfDaysInterestCharged = null;\r\n this.customerPopupModel.interestAmountPerDay = null;\r\n }\r\n\r\n public isNewAdjustmentType(): boolean {\r\n return !_.isNil(this.customerPopupModel) && this.customerPopupModel.adjustmentType === '* New';\r\n }\r\n\r\n public isInterestOnLatePayment(): boolean {\r\n return !_.isNil(this.customerPopupModel) && this.customerPopupModel.adjustmentType === 'Interest';\r\n }\r\n\r\n public isAddSubmitButtonDisabled(): boolean {\r\n if(!this.customerPopupModel) return true;\r\n\r\n let shouldDisable = !this.customerPopupModel.invoiceRecipientEnterpriseId || !this.customerPopupModel.adjustmentType || !this.customerPopupModel.totalCharge;\r\n\r\n if (this.isInterestOnLatePayment()) {\r\n shouldDisable = shouldDisable || !this.customerPopupModel.interestRate || !this.customerPopupModel.unpaidAmount || !this.customerPopupModel.outstandingFromGasDay\r\n || !this.customerPopupModel.outstandingToGasDay || !this.customerPopupModel.numberOfDaysInterestCharged || !this.customerPopupModel.interestAmountPerDay;\r\n }\r\n if(this.isNewAdjustmentType()) {\r\n shouldDisable = shouldDisable || !this.customerPopupModel.newAdjustmentTypeName || !this.customerPopupModel.description || !this.customerPopupModel.position;\r\n }\r\n return shouldDisable;\r\n }\r\n\r\n public submitManualCharge(): void {\r\n let serviceCall$ = null;\r\n if(this.customerPopupModel.isAdding) {\r\n serviceCall$ = this.manualChargeService.saveCustomerManualCharge(this.buildManualChargeBody());\r\n } else {\r\n serviceCall$ = this.manualChargeService.updateCustomerManualCharge(this.buildManualChargeBody());\r\n }\r\n\r\n serviceCall$.subscribe(() => {\r\n this.okEvent.emit();\r\n this.modal.hide();\r\n }, error => {\r\n this.alertService.clearMessages();\r\n this.customerPopupModel.errorMessage = ErrorService.getErrorMessageFromErrorResponse(error);\r\n });\r\n }\r\n public cancelManualCharge(): void {\r\n this.alertService.clearMessages();\r\n const yesNoModalOptions = new YesNoModalOptions('Discard Changes', 'Unsaved changes will be lost, would you like to continue?', 'No', 'Yes');\r\n this.modalService.show(yesNoModalOptions).subscribe((selectedModalOption: SelectedModalOption) =>\r\n {\r\n if (selectedModalOption === SelectedModalOption.Yes){\r\n this.modal.hide();\r\n }\r\n if (selectedModalOption === SelectedModalOption.No){\r\n this.modal.show();\r\n }\r\n }\r\n );\r\n }\r\n\r\n private buildManualChargeBody(): CustomerManualChargeRequest {\r\n const manualChargeBody = new CustomerManualChargeRequest();\r\n\r\n manualChargeBody.adjustmentType = this.customerPopupModel.newAdjustmentTypeName;\r\n manualChargeBody.newAdjustmentType = this.isNewAdjustmentType().toString();\r\n manualChargeBody.id = !_.isNil(this.customerPopupModel.id) ? this.customerPopupModel.id.toString() : null;\r\n manualChargeBody.billingMonth = this.customerPopupModel.billingMonth.toDisplayFormat();\r\n manualChargeBody.affectedBillingMonth = this.customerPopupModel.affectedGasMonth.toDisplayFormat();\r\n manualChargeBody.totalCharge = this.customerPopupModel.totalCharge.toString();\r\n manualChargeBody.additionalDescription = this.customerPopupModel.additionalDescription;\r\n manualChargeBody.serviceClass = this.customerPopupModel.serviceClass;\r\n manualChargeBody.version = this.customerPopupModel.version.toString();\r\n manualChargeBody.description = this.customerPopupModel.description;\r\n manualChargeBody.positionOnInvoice = this.customerPopupModel.position;\r\n manualChargeBody.invoiceSequence = this.customerPopupModel.invoiceSequence;\r\n manualChargeBody.companyCode = this.customerPopupModel.companyCode;\r\n manualChargeBody.profitCenter = this.customerPopupModel.profitCenter;\r\n manualChargeBody.costCenter = this.customerPopupModel.costCenter;\r\n manualChargeBody.orderNumber = this.customerPopupModel.orderNumber;\r\n manualChargeBody.generalLedgerAccount = this.customerPopupModel.generalLedgerAccount;\r\n manualChargeBody.invoiceRecipientEnterpriseId = this.customerPopupModel.invoiceRecipientEnterpriseId.toString();\r\n manualChargeBody.invoiceRecipientMnemonic = this.customerPopupModel['invoiceRecipientMnemonic'];\r\n manualChargeBody.customerEnterpriseId = this.customerPopupModel.customerId.toString();\r\n manualChargeBody.invoiceNumber = !_.isNil(this.customerPopupModel.invoiceNumber) ? this.customerPopupModel.invoiceNumber.toString() : null;\r\n manualChargeBody.interestRate = !_.isNil(this.customerPopupModel.interestRate) ? this.customerPopupModel.interestRate.toString() : null;\r\n manualChargeBody.unpaidAmount = !_.isNil(this.customerPopupModel.unpaidAmount) ? this.customerPopupModel.unpaidAmount.toString() : null;\r\n manualChargeBody.outstandingFromGasDay = !_.isNil(this.customerPopupModel.outstandingFromGasDay) ? this.customerPopupModel.outstandingFromGasDay.toString() : null;\r\n manualChargeBody.outstandingToGasDay = !_.isNil(this.customerPopupModel.outstandingToGasDay) ? this.customerPopupModel.outstandingToGasDay.toString() : null;\r\n manualChargeBody.numberOfDaysInterestCharged = !_.isNil(this.customerPopupModel.numberOfDaysInterestCharged) ? this.customerPopupModel.numberOfDaysInterestCharged.toString() : null;\r\n manualChargeBody.interestAmountPerDay = !_.isNil(this.customerPopupModel.interestAmountPerDay) ? this.customerPopupModel.interestAmountPerDay.toString() : null;\r\n return manualChargeBody;\r\n }\r\n\r\n public show(customerPopupModel: CustomerPopupModel): void {\r\n this.customerPopupModel = customerPopupModel;\r\n this.modal.show();\r\n }\r\n}\r\n","import {Component, OnInit, Output, Input, EventEmitter, ViewChild, ChangeDetectorRef} from '@angular/core';\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport * as _ from \"lodash\";\r\nimport {ControlValueAccessor, Validator} from \"@angular/forms\";\r\n\r\n@Component({\r\n selector: 'app-numeric-only-input',\r\n templateUrl: './numeric-only-input.component.html',\r\n styleUrls: ['./numeric-only-input.component.css']\r\n})\r\n\r\nexport class NumericOnlyInputComponent implements OnInit {\r\n @ViewChild('input') input;\r\n\r\n @Input() value: any = null;\r\n @Input('min') min: number;\r\n @Input('max') max: number = 9999999999;\r\n\r\n @Input('disabled') disabled: boolean = false;\r\n @Input('id') id: string;\r\n @Input('name') name: string;\r\n @Input('width') width: string = '160px';\r\n\r\n\r\n @Output() valueChange = new EventEmitter();\r\n\r\n ngOnInit() { }\r\n\r\n change(value: any): void {\r\n this.value = value;\r\n this.valueChange.emit(this.value);\r\n }\r\n\r\n\r\n\r\n}\r\n","= 48 && event.charCode <= 57\"\r\n>\r\n","\r\n
\r\n
\r\n Error: {{nominationGroupPopupModel.errorMessage}}\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n","import {Component, EventEmitter, Input, OnInit, Output, ViewChild} from \"@angular/core\";\r\nimport {NomGroupPopupModel, ViewManualAdjustmentModel} from \"app/gcts/invoicing/view-manual-adjustment/view-manual-adjustment.model\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {CustomerManualCharge, InvoicingManualChangeService, NominationGroupManualChargeRequest} from \"@shared/services/invoicing/invoicing-manual-charge/invoicing-manual-change.service\";\r\nimport {ModalComponent} from \"@shared/components/modal/modal.component\";\r\nimport * as _ from \"lodash\";\r\nimport {ErrorService} from \"@shared/services/webapp/error/error-service\";\r\nimport {YesNoCancelModalService} from \"@shared/services/webapp/yes-no-cancel-modal/yes-no-cancel-modal.service\";\r\nimport {YesNoModalOptions} from \"@shared/services/webapp/modal-options/yes-no-modal-options\";\r\nimport {SelectedModalOption} from \"@shared/services/webapp/modal-options/selected-modal-option\";\r\n\r\n@Component({\r\n selector: 'app-manual-adjustment-nomination-group-popup',\r\n templateUrl: './manual-adjustment-nomination-group-popup.component.html',\r\n styleUrls: ['./manual-adjustment-nomination-group-popup.component.css']\r\n})\r\n\r\nexport class ManualAdjustmentNominationGroupPopupComponent implements OnInit {\r\n @Input() model: ViewManualAdjustmentModel;\r\n nominationGroupPopupModel: NomGroupPopupModel = null;\r\n\r\n @ViewChild(ModalComponent) modal: ModalComponent;\r\n @Output() okEvent = new EventEmitter();\r\n\r\n constructor(protected alertService: AlertService,\r\n protected manualChargeService: InvoicingManualChangeService,\r\n private modalService: YesNoCancelModalService) {\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n public getTitle(): string {\r\n return !_.isNil(this.nominationGroupPopupModel) && this.nominationGroupPopupModel.isAdding ? 'Add New Manual Adjustment' : 'Edit Manual Adjustment';\r\n }\r\n\r\n public onAdjustmentTypeChanged(): void {\r\n const selectedAdjustmentType = _.find(this.model.adjustmentTypesForNomGroupPopup, x => x.adjustmentType === this.nominationGroupPopupModel.adjustmentType);\r\n if(selectedAdjustmentType) {\r\n this.nominationGroupPopupModel.newAdjustmentTypeName = selectedAdjustmentType.adjustmentType === '* New' ? undefined : selectedAdjustmentType.adjustmentType;\r\n this.nominationGroupPopupModel.description = selectedAdjustmentType.description;\r\n this.nominationGroupPopupModel.companyCode = selectedAdjustmentType.companyCode;\r\n this.nominationGroupPopupModel.profitCenter = selectedAdjustmentType.profitCenter;\r\n this.nominationGroupPopupModel.costCenter = selectedAdjustmentType.costCenter;\r\n this.nominationGroupPopupModel.generalLedgerAccount = selectedAdjustmentType.generalLedgerAccount;\r\n this.nominationGroupPopupModel.orderNumber = selectedAdjustmentType.orderNumber;\r\n this.nominationGroupPopupModel.position = selectedAdjustmentType.positionOnInvoice;\r\n this.nominationGroupPopupModel.invoiceSequence = selectedAdjustmentType.invoiceSequence;\r\n this.nominationGroupPopupModel.serviceClass = selectedAdjustmentType.serviceClass;\r\n }\r\n }\r\n\r\n public onNomGroupChanged(): void {\r\n if(_.isNil(this.nominationGroupPopupModel.nomGroupId)) {\r\n this.nominationGroupPopupModel.invoiceRecipientEnterpriseId = null;\r\n } else {\r\n const nomGroup = _.find(this.model.nominationGroupsForSelectedCustomer, x => x.id === this.nominationGroupPopupModel.nomGroupId);\r\n if(_.isNil(nomGroup)) return;\r\n this.nominationGroupPopupModel.invoiceRecipientEnterpriseId = nomGroup.invoiceRecipientEnterpriseId;\r\n }\r\n }\r\n\r\n public onDeliveryLocationChanged(): void {\r\n if(_.isNil(this.nominationGroupPopupModel.deliveryLocationId)) return;\r\n const yesNoModalOptions = new YesNoModalOptions('Generate Tax(%) value?', 'Are you sure you want to generate the tax rates based on delivery location?');\r\n this.modalService.show(yesNoModalOptions).subscribe((selectedModalOption: SelectedModalOption) => {\r\n if (selectedModalOption === SelectedModalOption.Yes) {\r\n const deliveryLocation = _.find(this.model.locationsForPopup, x => x.id === this.nominationGroupPopupModel.deliveryLocationId);\r\n if(deliveryLocation) {\r\n const taxRate = _.find(this.model.provincialTaxRates, x => x.provinceCode === deliveryLocation.provinceCode);\r\n this.nominationGroupPopupModel.taxRate = (taxRate.taxRate * 100).toString();\r\n } else {\r\n this.nominationGroupPopupModel.taxRate = 'NA';\r\n }\r\n }\r\n });\r\n }\r\n\r\n public calculateTotalCharge(): void {\r\n if(this.nominationGroupPopupModel.tollCharge && this.nominationGroupPopupModel.quantity) {\r\n const value = +this.nominationGroupPopupModel.tollCharge * this.nominationGroupPopupModel.quantity;\r\n if(value) {\r\n this.nominationGroupPopupModel.totalCharge = Math.round((value + Number.EPSILON) * 100) / 100 ; // Math.round(value);\r\n }\r\n }\r\n }\r\n\r\n public isNewAdjustmentType(): boolean {\r\n return !_.isNil(this.nominationGroupPopupModel) && this.nominationGroupPopupModel.adjustmentType === '* New';\r\n }\r\n\r\n public isAddSubmitButtonDisabled(): boolean {\r\n if(!this.nominationGroupPopupModel) return true;\r\n\r\n let shouldDisable = !this.nominationGroupPopupModel.nomGroupId || !this.nominationGroupPopupModel.adjustmentType || !this.nominationGroupPopupModel.totalCharge || !this.nominationGroupPopupModel.taxRate;\r\n\r\n if(this.isNewAdjustmentType()) {\r\n shouldDisable = shouldDisable || !this.nominationGroupPopupModel.newAdjustmentTypeName || !this.nominationGroupPopupModel.description\r\n || !this.nominationGroupPopupModel.position || !this.nominationGroupPopupModel.serviceClass;\r\n }\r\n return shouldDisable;\r\n }\r\n\r\n public submitManualCharge(): void {\r\n let serviceCall$ = null;\r\n if(this.nominationGroupPopupModel.isAdding) {\r\n serviceCall$ = this.manualChargeService.saveNomGroupManualCharge(this.buildManualChargeBody());\r\n } else {\r\n serviceCall$ = this.manualChargeService.updateNomGroupManualCharge(this.buildManualChargeBody());\r\n }\r\n\r\n serviceCall$.subscribe(() => {\r\n this.okEvent.emit();\r\n this.modal.hide();\r\n }, error => {\r\n this.alertService.clearMessages();\r\n this.nominationGroupPopupModel.errorMessage = ErrorService.getErrorMessageFromErrorResponse(error);\r\n });\r\n }\r\n public cancelManualCharge(): void {\r\n this.alertService.clearMessages();\r\n const yesNoModalOptions = new YesNoModalOptions('Discard Changes', 'Unsaved changes will be lost, would you like to continue?', 'No', 'Yes');\r\n this.modalService.show(yesNoModalOptions).subscribe((selectedModalOption: SelectedModalOption) =>\r\n {\r\n if (selectedModalOption === SelectedModalOption.Yes){\r\n this.modal.hide();\r\n }\r\n if (selectedModalOption === SelectedModalOption.No){\r\n this.modal.show();\r\n }\r\n }\r\n );\r\n }\r\n\r\n private buildManualChargeBody(): NominationGroupManualChargeRequest {\r\n const manualChargeBody = new NominationGroupManualChargeRequest();\r\n\r\n manualChargeBody.adjustmentType = this.nominationGroupPopupModel.newAdjustmentTypeName;\r\n manualChargeBody.newAdjustmentType = this.isNewAdjustmentType().toString();\r\n manualChargeBody.id = !_.isNil(this.nominationGroupPopupModel.id) ? this.nominationGroupPopupModel.id.toString() : null;\r\n manualChargeBody.billingMonth = this.nominationGroupPopupModel.billingMonth.toDisplayFormat();\r\n manualChargeBody.affectedBillingMonth = this.nominationGroupPopupModel.affectedGasMonth.toDisplayFormat();\r\n manualChargeBody.totalCharge = this.nominationGroupPopupModel.totalCharge.toString();\r\n manualChargeBody.additionalDescription = this.nominationGroupPopupModel.additionalDescription;\r\n manualChargeBody.version = this.nominationGroupPopupModel.version.toString();\r\n manualChargeBody.description = this.nominationGroupPopupModel.description;\r\n manualChargeBody.positionOnInvoice = this.nominationGroupPopupModel.position;\r\n manualChargeBody.invoiceSequence = this.nominationGroupPopupModel.invoiceSequence;\r\n manualChargeBody.companyCode = this.nominationGroupPopupModel.companyCode;\r\n manualChargeBody.profitCenter = this.nominationGroupPopupModel.profitCenter;\r\n manualChargeBody.costCenter = this.nominationGroupPopupModel.costCenter;\r\n manualChargeBody.orderNumber = this.nominationGroupPopupModel.orderNumber;\r\n manualChargeBody.generalLedgerAccount = this.nominationGroupPopupModel.generalLedgerAccount;\r\n manualChargeBody.nominationGroupMnemonic = _.find(this.model.nominationGroupsForSelectedCustomer, x => x.id === this.nominationGroupPopupModel.nomGroupId).mnemonic;\r\n manualChargeBody.receiptLocationId = !_.isNil(this.nominationGroupPopupModel.receiptLocationId) ? this.nominationGroupPopupModel.receiptLocationId.toString() : null;\r\n manualChargeBody.deliveryLocationId = !_.isNil(this.nominationGroupPopupModel.deliveryLocationId) ? this.nominationGroupPopupModel.deliveryLocationId.toString() : null;\r\n manualChargeBody.quantityType = this.nominationGroupPopupModel.quantityType;\r\n manualChargeBody.quantity = !_.isNil(this.nominationGroupPopupModel.quantity) ? this.nominationGroupPopupModel.quantity.toString() : null;\r\n manualChargeBody.toll = this.nominationGroupPopupModel.tollCharge;\r\n manualChargeBody.taxRate = this.nominationGroupPopupModel.taxRate;\r\n manualChargeBody.serviceClass = this.nominationGroupPopupModel.serviceClass;\r\n return manualChargeBody;\r\n }\r\n\r\n public show(nomGroupPopupModel: NomGroupPopupModel): void {\r\n this.nominationGroupPopupModel = nomGroupPopupModel;\r\n this.modal.show();\r\n }\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {ContractsResourceService} from \"@shared/resources/contracts-resource.service\";\r\nimport {Observable} from \"rxjs\";\r\nimport * as _ from \"lodash\";\r\nimport {map} from \"rxjs/operators\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class InvoiceRecipientService {\r\n\r\n constructor(private contractsResource: ContractsResourceService) {\r\n }\r\n\r\n public queryInvoiceRecipientsForCustomer(gasMonth: GasMonth, enterpriseId: number): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setGasMonth(gasMonth);\r\n params.setNumber('customer', enterpriseId);\r\n params.setBoolean('findAll', true);\r\n\r\n return this.contractsResource.get('/invoiceRecipients', true, params)\r\n .pipe(\r\n map(invoiceRecipients => _.map(invoiceRecipients, invoiceRecipient => AccountsInvoiceRecipient.create(invoiceRecipient)))\r\n );\r\n }\r\n}\r\n\r\nexport class AccountsInvoiceRecipient implements IInvoiceRecipient {\r\n public enterpriseCid: number;\r\n\r\n public static create(dto: IInvoiceRecipient) {\r\n const invoiceRecipient = new AccountsInvoiceRecipient();\r\n\r\n invoiceRecipient.enterpriseCid = +dto.enterpriseCid;\r\n\r\n return invoiceRecipient;\r\n }\r\n}\r\n\r\nexport interface IInvoiceRecipient {\r\n enterpriseCid: number;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {Observable} from \"rxjs\";\r\nimport {InvoicingResourceService} from \"app/shared/resources/invoicing-resource.service\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {map} from \"rxjs/operators\";\r\nimport * as _ from \"lodash\";\r\nimport {GasDay} from \"@model/gas-day\";\r\n\r\nexport interface IProvinceTaxResponse {\r\n province: string;\r\n taxCode: string;\r\n taxRate: number;\r\n effectiveGasDay: string;\r\n expiryGasDay: string;\r\n}\r\n\r\nexport class ProvinceTax {\r\n provinceCode: string;\r\n taxCode: string;\r\n taxRate: number;\r\n effectiveGasDay: GasDay;\r\n expiryGasDay: GasDay;\r\n\r\n public static create(dto: IProvinceTaxResponse): ProvinceTax {\r\n const provinceTax = new ProvinceTax();\r\n provinceTax.provinceCode = dto.province;\r\n provinceTax.taxCode = dto.taxCode;\r\n provinceTax.taxRate = dto.taxRate;\r\n provinceTax.effectiveGasDay = GasDay.parse(dto.effectiveGasDay);\r\n provinceTax.expiryGasDay = GasDay.parse(dto.expiryGasDay);\r\n return provinceTax;\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport class InvoicingTaxRateService {\r\n\r\n constructor(private invoicingResource: InvoicingResourceService) { }\r\n\r\n get(gasDay: GasDay = null): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setOptionalGasDay(gasDay);\r\n\r\n return this.invoicingResource.get('/taxRates', false, params)\r\n .pipe(\r\n map(dtos => _.map(dtos, dto => ProvinceTax.create(dto)))\r\n );\r\n }\r\n}\r\n","\r\n\r\n
\r\n
\r\n Number of Customer Manual Charges found: {{model.customerSearchResults.length}}\r\n
0\" class=\"pull-right\">\r\n Export CSV\r\n
\r\n
\r\n \r\n\r\n \r\n \r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {{ row.value | negativeParenthesisTwoDecimals }}\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{detail.data.adjustmentType}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{detail.data.description}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{detail.data.additionalDescription}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{detail.data.invoiceNumber}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{detail.data.interestRate}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{detail.data.unpaidAmount | numberFormat}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{detail.data.outstandingFromGasDay | gasDayFormat}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{detail.data.outstandingToGasDay | gasDayFormat}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{detail.data.numberOfDaysInterestCharged}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{detail.data.interestAmountPerDay}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{detail.data.companyCode}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{detail.data.positionOnInvoice}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{detail.data.profitCenter}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{detail.data.costCenter}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{detail.data.orderNumber}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{detail.data.generalLedgerAccount}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n","import {Component, EventEmitter, Input, Output, ViewChild} from \"@angular/core\";\r\nimport {CustomerPopupModel, ManualChargePopupModel, ViewManualAdjustmentModel} from \"app/gcts/invoicing/view-manual-adjustment/view-manual-adjustment.model\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport * as _ from \"lodash\";\r\nimport {YesNoModalOptions} from \"@shared/services/webapp/modal-options/yes-no-modal-options\";\r\nimport {SelectedModalOption} from \"@shared/services/webapp/modal-options/selected-modal-option\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {YesNoCancelModalService} from \"@shared/services/webapp/yes-no-cancel-modal/yes-no-cancel-modal.service\";\r\nimport {CustomerManualCharge, InvoicingManualChangeService} from \"@shared/services/invoicing/invoicing-manual-charge/invoicing-manual-change.service\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {ModalComponent} from \"@shared/components/modal/modal.component\";\r\nimport {tap} from \"rxjs/operators\";\r\nimport {ManualAdjustmentCustomerPopupComponent} from \"app/gcts/invoicing/view-manual-adjustment/manual-adjustment-customer-popup/manual-adjustment-customer-popup.component\";\r\nimport {EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\n\r\n@Component({\r\n selector: 'app-view-manual-adjustment-customer',\r\n templateUrl: './view-manual-adjustment-customer.component.html',\r\n styleUrls: ['./view-manual-adjustment-customer.component.css']\r\n})\r\n\r\nexport class ViewManualAdjustmentCustomerComponent {\r\n @Input() model: ViewManualAdjustmentModel;\r\n\r\n @ViewChild(ManualAdjustmentCustomerPopupComponent) manualAdjustmentCustomerPopupModal: ManualAdjustmentCustomerPopupComponent;\r\n @Output() okEvent = new EventEmitter();\r\n @Output() deleteEvent = new EventEmitter();\r\n\r\n constructor(protected alertService: AlertService,\r\n protected modalService: YesNoCancelModalService,\r\n protected fileService: FileService,\r\n protected sessionService: SessionService,\r\n protected manualChargeService: InvoicingManualChangeService,\r\n protected enterpriseService: EnterpriseService,\r\n protected enterpriseEnrichmentService: EnterpriseEnrichmentService) {\r\n\r\n enterpriseEnrichmentService.setEnrichmentResource(enterpriseService);\r\n\r\n }\r\n\r\n public exportCsvClicked(): void {\r\n const csvData = [];\r\n\r\n this.model.customerSearchResults.forEach(charge => {\r\n csvData.push({\r\n billingMonth: charge.billingMonth.toString(),\r\n affectedMonth: charge.affectedBillingMonth.toString(),\r\n customer: charge['customerDisplayName'],\r\n invoiceRecipient: charge['invoiceRecipientDisplayName'],\r\n adjustmentType: charge.adjustmentType,\r\n totalCharge: charge.totalCharge,\r\n description: charge.description,\r\n position: charge.positionOnInvoice,\r\n companyCode: charge.companyCode,\r\n profitCenter: charge.profitCenter,\r\n costCenter: charge.costCenter,\r\n generalLedgerAccount: charge.generalLedgerAccount,\r\n orderNumber: charge.orderNumber,\r\n additionalDescription: charge.additionalDescription,\r\n invoiceNumber: charge.invoiceNumber,\r\n interestRate: charge.interestRate,\r\n unpaidAmount: charge.unpaidAmount,\r\n outstandingFrom: charge.outstandingFromGasDay,\r\n outstandingTo: charge.outstandingToGasDay,\r\n numberOfDays: charge.numberOfDaysInterestCharged,\r\n interestPerDay: charge.interestAmountPerDay\r\n });\r\n });\r\n\r\n\r\n const filename = 'Customer_ManualCharge_' + this.sessionService.getPipeline().code + '_'+\r\n this.model.lastSearchParams.startBillingMonth.toDisplayFormat() + ' to ' + this.model.lastSearchParams.endBillingMonth.toDisplayFormat() + '.csv';\r\n const headers = ['Billing Month', 'Affected Month', 'Customer', 'Invoice Recipient', 'Adjustment Type', 'Total Charge ($)', 'Description', 'Position', 'Company Code', 'Profit Center',\r\n 'Cost Center', 'General Ledger Account', 'Order Number', 'Additional Description', 'Invoice Number', 'Interest Rate', 'Unpaid Amount ($)', 'Outstanding From', 'Outstanding To',\r\n 'Number Of Days', 'Interest Per Day ($)'];\r\n const columns = ['billingMonth', 'affectedMonth', 'customer', 'invoiceRecipient', 'adjustmentType', 'totalCharge', 'description', 'position', 'companyCode', 'profitCenter',\r\n 'costCenter', 'generalLedgerAccount', 'orderNumber', 'additionalDescription', 'invoiceNumber', 'interestRate', 'unpaidAmount', 'outstandingFrom', 'outstandingTo',\r\n 'numberOfDays', 'interestPerDay'];\r\n\r\n this.fileService.downloadCsvFile(filename, csvData, headers, columns);\r\n }\r\n\r\n okCustomerPopupEvent(): void {\r\n this.okEvent.emit();\r\n }\r\n\r\n public isInterestOnLatePayment(detail: any): boolean {\r\n const manualAdjustment = detail.data as CustomerManualCharge;\r\n return manualAdjustment.adjustmentType === 'Interest';\r\n }\r\n\r\n public toggleExpandAll(expandAll: boolean, dataGrid: DxDataGridComponent): void {\r\n if(expandAll) {\r\n dataGrid.instance.expandAll(-1);\r\n } else {\r\n dataGrid.instance.collapseAll(-1);\r\n }\r\n }\r\n\r\n public editClicked(data: any) {\r\n const popupModel = new CustomerPopupModel();\r\n const manualAdjustment = data as CustomerManualCharge;\r\n this.setPopupModelProperties(popupModel, manualAdjustment);\r\n this.manualAdjustmentCustomerPopupModal.show(popupModel);\r\n }\r\n\r\n public isEditDisabled(data: any): boolean {\r\n const manualAdjustment = data as CustomerManualCharge;\r\n return this.model.isAccountingProcessComplete || !this.model.openBillingMonth.gasMonth.isEqual(manualAdjustment.billingMonth);\r\n }\r\n\r\n public isDeleteDisabled(data: any): boolean {\r\n const manualAdjustment = data as CustomerManualCharge;\r\n return this.model.isManualChargesComplete || !this.model.openBillingMonth.gasMonth.isEqual(manualAdjustment.billingMonth);\r\n }\r\n\r\n private setPopupModelProperties(popupModel: CustomerPopupModel, manualAdjustment: CustomerManualCharge) {\r\n popupModel.isEditing = true;\r\n popupModel.id = manualAdjustment.id;\r\n popupModel.billingMonth = manualAdjustment.billingMonth;\r\n popupModel.affectedGasMonth = manualAdjustment.affectedBillingMonth;\r\n popupModel.customerId = manualAdjustment.customerEnterpriseId;\r\n this.enterpriseEnrichmentService.enrich(popupModel, 'customerId', 'customer').subscribe(x => {});\r\n popupModel.invoiceRecipientEnterpriseId = manualAdjustment.invoiceRecipientEnterpriseId;\r\n popupModel.totalCharge = manualAdjustment.totalCharge;\r\n popupModel.adjustmentType = manualAdjustment.adjustmentType;\r\n popupModel.newAdjustmentTypeName = manualAdjustment.adjustmentType;\r\n popupModel.description = manualAdjustment.description;\r\n popupModel.additionalDescription = manualAdjustment.additionalDescription;\r\n popupModel.companyCode = manualAdjustment.companyCode;\r\n popupModel.position = manualAdjustment.positionOnInvoice;\r\n popupModel.invoiceSequence = manualAdjustment.invoiceSequence;\r\n popupModel.profitCenter = manualAdjustment.profitCenter;\r\n popupModel.costCenter = manualAdjustment.costCenter;\r\n popupModel.orderNumber = manualAdjustment.orderNumber;\r\n popupModel.generalLedgerAccount = manualAdjustment.generalLedgerAccount;\r\n popupModel.version = manualAdjustment.version;\r\n popupModel.invoiceNumber = manualAdjustment.invoiceNumber;\r\n popupModel.interestRate = manualAdjustment.interestRate;\r\n popupModel.unpaidAmount = manualAdjustment.unpaidAmount;\r\n popupModel.outstandingFromGasDay = manualAdjustment.outstandingFromGasDay !== '' ? GasDay.parse(manualAdjustment.outstandingFromGasDay) : null;\r\n popupModel.outstandingToGasDay = manualAdjustment.outstandingToGasDay !== '' ? GasDay.parse(manualAdjustment.outstandingToGasDay) : null;\r\n popupModel.numberOfDaysInterestCharged = manualAdjustment.numberOfDaysInterestCharged;\r\n popupModel.interestAmountPerDay = manualAdjustment.interestAmountPerDay;\r\n }\r\n\r\n public deleteClicked(data: any) {\r\n this.alertService.clearMessages();\r\n const yesNoModalOptions = new YesNoModalOptions('Delete Confirmation', 'You are about to delete the selected item, would you like to continue?');\r\n this.modalService.show(yesNoModalOptions).subscribe((selectedModalOption: SelectedModalOption) => {\r\n if (selectedModalOption === SelectedModalOption.Yes) {\r\n const manualCharge = data as CustomerManualCharge;\r\n this.deleteCustomerManualCharge(manualCharge);\r\n }\r\n });\r\n }\r\n\r\n private deleteCustomerManualCharge(manualCharge: CustomerManualCharge): void {\r\n this.manualChargeService.deleteCustomerManualCharge(manualCharge.id).subscribe(\r\n () => {\r\n this.alertService.addSuccessMessage(\"Delete Success\", 'The manual adjustment was deleted successfully.');\r\n _.remove(this.model.customerSearchResults, manualCharge);\r\n this.deleteEvent.emit();\r\n });\r\n }\r\n}\r\n","\r\n\r\n
\r\n
\r\n Number of Nom Group Manual Charges found: {{model.nominationGroupSearchResults.length}}\r\n
0\" class=\"pull-right\">\r\n Export CSV\r\n
\r\n
\r\n \r\n\r\n \r\n \r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {{ row.value | negativeParenthesisTwoDecimals }}\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{detail.data.adjustmentType}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{detail.data.description}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{detail.data.additionalDescription}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{detail.data.serviceClass}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{detail.data.positionOnInvoice}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{detail.data.receiptLocationName}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{detail.data.deliveryLocationName}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{detail.data.toll}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{detail.data.taxRate}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{detail.data.quantityType}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{detail.data.quantity}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{detail.data.companyCode}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{detail.data.costCenter}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{detail.data.profitCenter}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{detail.data.generalLedgerAccount}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{detail.data.orderNumber}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{detail.data.invoiceSequence}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n","import {Component, EventEmitter, Input, Output, ViewChild} from \"@angular/core\";\r\nimport {CustomerPopupModel, NomGroupPopupModel, ViewManualAdjustmentModel} from \"app/gcts/invoicing/view-manual-adjustment/view-manual-adjustment.model\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {YesNoModalOptions} from \"@shared/services/webapp/modal-options/yes-no-modal-options\";\r\nimport {SelectedModalOption} from \"@shared/services/webapp/modal-options/selected-modal-option\";\r\nimport {CustomerManualCharge, InvoicingManualChangeService, NominationGroupManualCharge} from \"@shared/services/invoicing/invoicing-manual-charge/invoicing-manual-change.service\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {YesNoCancelModalService} from \"@shared/services/webapp/yes-no-cancel-modal/yes-no-cancel-modal.service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport * as _ from \"lodash\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {ManualAdjustmentCustomerPopupComponent} from \"app/gcts/invoicing/view-manual-adjustment/manual-adjustment-customer-popup/manual-adjustment-customer-popup.component\";\r\nimport {ManualAdjustmentNominationGroupPopupComponent} from \"app/gcts/invoicing/view-manual-adjustment/manual-adjustment-nomination-group-popup/manual-adjustment-nomination-group-popup.component\";\r\nimport {EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\n\r\n@Component({\r\n selector: 'app-view-manual-adjustment-nomination-group',\r\n templateUrl: './view-manual-adjustment-nomination-group.component.html',\r\n styleUrls: ['./view-manual-adjustment-nomination-group.component.css']\r\n})\r\n\r\nexport class ViewManualAdjustmentNominationGroupComponent {\r\n @Input() model: ViewManualAdjustmentModel;\r\n\r\n @ViewChild(ManualAdjustmentNominationGroupPopupComponent) manualAdjustmentNominationGroupPopupModal: ManualAdjustmentNominationGroupPopupComponent;\r\n @Output() okEvent = new EventEmitter();\r\n @Output() deleteEvent = new EventEmitter();\r\n\r\n constructor(protected alertService: AlertService,\r\n protected modalService: YesNoCancelModalService,\r\n protected fileService: FileService,\r\n protected sessionService: SessionService,\r\n protected manualChargeService: InvoicingManualChangeService,\r\n protected enterpriseService: EnterpriseService,\r\n protected enterpriseEnrichmentService: EnterpriseEnrichmentService) {\r\n enterpriseEnrichmentService.setEnrichmentResource(enterpriseService);\r\n }\r\n\r\n public exportCsvClicked(): void {\r\n const csvData = [];\r\n\r\n this.model.nominationGroupSearchResults.forEach(charge => {\r\n csvData.push({\r\n billingMonth: charge.billingMonth.toString(),\r\n affectedMonth: charge.affectedBillingMonth.toString(),\r\n nomGroup: charge['nomGroupMnemonic'],\r\n customer: charge['customerDisplayName'],\r\n invoiceRecipient: charge['invoiceRecipientDisplayName'],\r\n adjustmentType: charge.adjustmentType,\r\n totalCharge: charge.totalCharge,\r\n description: charge.description,\r\n position: charge.positionOnInvoice,\r\n quantityType: charge.quantityType,\r\n quantity: charge.quantity,\r\n toll: charge.toll,\r\n taxRate: charge.taxRate,\r\n receiptLocation: charge['receiptLocationName'],\r\n deliveryLocation: charge['deliveryLocationName'],\r\n serviceClass: charge.serviceClass,\r\n companyCode: charge.companyCode,\r\n profitCenter: charge.profitCenter,\r\n costCenter: charge.costCenter,\r\n generalLedgerAccount: charge.generalLedgerAccount,\r\n orderNumber: charge.orderNumber,\r\n additionalDescription: charge.additionalDescription,\r\n invoiceSequence: charge.invoiceSequence\r\n });\r\n });\r\n\r\n\r\n const filename = 'NomGroup_ManualCharge_' + this.sessionService.getPipeline().code + '_'+\r\n this.model.lastSearchParams.startBillingMonth.toDisplayFormat() + ' to ' + this.model.lastSearchParams.endBillingMonth.toDisplayFormat() + '.csv';\r\n const headers = ['Billing Month', 'Affected Month', 'Nom Group', 'Customer', 'Invoice Recipient', 'Adjustment Type', 'Total Charge ($)', 'Description', 'Position', 'Quantity Type', 'Quantity',\r\n 'Toll', 'Tax (%)', 'Receipt Location', 'Delivery Location', 'Service Class', 'Company Code', 'Profit Center', 'Cost Center', 'General Ledger Account', 'Order Number', 'Additional Description', 'Invoice Sequence'];\r\n const columns = ['billingMonth', 'affectedMonth', 'nomGroup', 'customer', 'invoiceRecipient', 'adjustmentType', 'totalCharge', 'description', 'position', 'quantityType', 'quantity',\r\n 'toll', 'taxRate', 'receiptLocation', 'deliveryLocation', 'serviceClass', 'companyCode', 'profitCenter', 'costCenter', 'generalLedgerAccount', 'orderNumber', 'additionalDescription','invoiceSequence'];\r\n\r\n this.fileService.downloadCsvFile(filename, csvData, headers, columns);\r\n }\r\n\r\n public toggleExpandAll(expandAll: boolean, dataGrid: DxDataGridComponent): void {\r\n if(expandAll) {\r\n dataGrid.instance.expandAll(-1);\r\n } else {\r\n dataGrid.instance.collapseAll(-1);\r\n }\r\n }\r\n\r\n public editClicked(data: any) {\r\n const popupModel = new NomGroupPopupModel();\r\n const manualAdjustment = data as NominationGroupManualCharge;\r\n this.setPopupModelProperties(popupModel, manualAdjustment);\r\n this.manualAdjustmentNominationGroupPopupModal.show(popupModel);\r\n }\r\n\r\n public isEditDisabled(data: any): boolean {\r\n const manualAdjustment = data as CustomerManualCharge;\r\n return this.model.isAccountingProcessComplete || !this.model.openBillingMonth.gasMonth.isEqual(manualAdjustment.billingMonth);\r\n }\r\n\r\n public isDeleteDisabled(data: any): boolean {\r\n const manualAdjustment = data as CustomerManualCharge;\r\n return this.model.isManualChargesComplete || !this.model.openBillingMonth.gasMonth.isEqual(manualAdjustment.billingMonth);\r\n }\r\n\r\n private setPopupModelProperties(popupModel: NomGroupPopupModel, manualAdjustment: NominationGroupManualCharge) {\r\n popupModel.isEditing = true;\r\n popupModel.id = manualAdjustment.id;\r\n popupModel.billingMonth = manualAdjustment.billingMonth;\r\n popupModel.affectedGasMonth = manualAdjustment.affectedBillingMonth;\r\n popupModel.customerId = manualAdjustment.customerEnterpriseId;\r\n this.enterpriseEnrichmentService.enrich(popupModel, 'customerId', 'customer').subscribe(x => {});\r\n popupModel.invoiceRecipientEnterpriseId = manualAdjustment.invoiceRecipientEnterpriseId;\r\n popupModel.totalCharge = manualAdjustment.totalCharge;\r\n popupModel.adjustmentType = manualAdjustment.adjustmentType;\r\n popupModel.newAdjustmentTypeName = manualAdjustment.adjustmentType;\r\n popupModel.description = manualAdjustment.description;\r\n popupModel.additionalDescription = manualAdjustment.additionalDescription;\r\n popupModel.companyCode = manualAdjustment.companyCode;\r\n popupModel.position = manualAdjustment.positionOnInvoice;\r\n popupModel.invoiceSequence = manualAdjustment.invoiceSequence;\r\n popupModel.profitCenter = manualAdjustment.profitCenter;\r\n popupModel.costCenter = manualAdjustment.costCenter;\r\n popupModel.orderNumber = manualAdjustment.orderNumber;\r\n popupModel.taxRate = manualAdjustment.taxRate;\r\n popupModel.generalLedgerAccount = manualAdjustment.generalLedgerAccount;\r\n popupModel.version = manualAdjustment.version;\r\n popupModel.nomGroupId = manualAdjustment.nominationGroupId;\r\n popupModel.receiptLocationId = manualAdjustment.receiptLocationId;\r\n popupModel.deliveryLocationId = manualAdjustment.deliveryLocationId;\r\n popupModel.quantityType = manualAdjustment.quantityType;\r\n popupModel.quantity = manualAdjustment.quantity;\r\n popupModel.tollCharge = !_.isNil(manualAdjustment.toll) ? manualAdjustment.toll.toString() : null;\r\n popupModel.serviceClass = manualAdjustment.serviceClass.toString();\r\n }\r\n\r\n public deleteClicked(data: any) {\r\n this.alertService.clearMessages();\r\n const yesNoModalOptions = new YesNoModalOptions('Delete Confirmation', 'You are about to delete the selected item, would you like to continue?');\r\n this.modalService.show(yesNoModalOptions).subscribe((selectedModalOption: SelectedModalOption) => {\r\n if (selectedModalOption === SelectedModalOption.Yes) {\r\n const manualCharge = data as NominationGroupManualCharge;\r\n this.deleteNomGroupManualCharge(manualCharge);\r\n }\r\n });\r\n }\r\n\r\n okNomGroupPopupEvent(): void {\r\n this.okEvent.emit();\r\n }\r\n\r\n private deleteNomGroupManualCharge(manualCharge: NominationGroupManualCharge): void {\r\n this.manualChargeService.deleteNomGroupManualCharge(manualCharge.id).subscribe(\r\n () => {\r\n this.alertService.addSuccessMessage(\"Delete Success\", 'The manual adjustment was deleted successfully.');\r\n _.remove(this.model.nominationGroupSearchResults, manualCharge);\r\n this.deleteEvent.emit();\r\n });\r\n }\r\n}\r\n","
\r\n
\r\n Number of Force Majeure Credits found: {{model.forceMajeureSearchResults.length}}\r\n
0\" class=\"pull-right\">\r\n Export CSV\r\n
\r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {{ row.data['receiptLocationName'] !== null ? (row.data['receiptLocationName'] + ' to ' + row.data['deliveryLocationName']) : row.data['deliveryLocationName'] }}\r\n
\r\n \r\n
\r\n {{ row.value | gasDayFormat }}\r\n
\r\n \r\n \r\n \r\n
\r\n {{ row.value | booleanAsYesNo }}\r\n
\r\n \r\n
\r\n","import {Component, Input} from \"@angular/core\";\r\nimport {ViewManualAdjustmentModel} from \"app/gcts/invoicing/view-manual-adjustment/view-manual-adjustment.model\";\r\nimport {BooleanAsYesNoPipe} from \"@shared/pipes/boolean-as-yes-no/boolean-as-yes-no.pipe\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\n\r\n@Component({\r\n selector: 'app-view-manual-adjustment-force-majeure',\r\n templateUrl: './view-manual-adjustment-force-majeure.component.html',\r\n styleUrls: ['./view-manual-adjustment-force-majeure.component.css']\r\n})\r\n\r\nexport class ViewManualAdjustmentForceMajeureComponent {\r\n @Input() model: ViewManualAdjustmentModel;\r\n\r\n constructor(protected fileService: FileService,\r\n protected sessionService: SessionService) {\r\n }\r\n\r\n public exportCsvClicked(): void {\r\n const csvData = [];\r\n\r\n this.model.forceMajeureSearchResults.forEach(charge => {\r\n csvData.push({\r\n billingMonth: charge.billingMonth.toDisplayFormat(),\r\n nomGroup: charge['nomGroupMnemonic'],\r\n customer: charge['customerDisplayName'],\r\n invoiceRecipient: charge['invoiceRecipientDisplayName'],\r\n path: charge['receiptLocationName'] + ' to ' + charge['deliveryLocationName'],\r\n gasDay: charge.gasDay.toDisplayFormat(),\r\n quantity: charge.quantity,\r\n contractPrice: charge.contractPrice,\r\n taxZeroRated: new BooleanAsYesNoPipe().transform(charge.taxExempt)\r\n });\r\n });\r\n\r\n\r\n const filename = 'ForceMajeure_ManualCharge_' + this.sessionService.getPipeline().code + '_'+\r\n this.model.lastSearchParams.startBillingMonth.toDisplayFormat() + ' to ' + this.model.lastSearchParams.endBillingMonth.toDisplayFormat() + '.csv';\r\n const headers = ['Billing Month', 'Nom Group', 'Customer', 'Invoice Recipient', 'Path/Location', 'Gas Day', 'Quantity', 'Contract Price', 'Tax Zero Rated'];\r\n const columns = ['billingMonth', 'nomGroup', 'customer', 'invoiceRecipient', 'path', 'gasDay', 'quantity', 'contractPrice', 'taxZeroRated'];\r\n\r\n this.fileService.downloadCsvFile(filename, csvData, headers, columns);\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n From: {{model.lastSearchParams?.startBillingMonth}}\r\n To: {{model.lastSearchParams?.endBillingMonth}}\r\n Customer: {{model.lastSearchParams.customerId | displayName: 'id' : 'displayName' : model.customers}}\r\n AR Number: {{model.lastSearchParams.arNumber}}\r\n Adjustment Type: {{model.lastSearchParams.adjustmentType | displayName: 'adjustmentType' : 'adjustmentType' : model.adjustmentTypes}}\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n CUSTOMER:\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
{{currentUser.enterpriseDisplayName}})
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n AR NUMBER:\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.startBillingMonth}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.customerId | displayName: 'id' : 'displayName' : model.customers | whenEmptyUse : 'All'}}\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.arNumber | whenEmptyUse : 'All'}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.endBillingMonth}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.adjustmentType | displayName: 'adjustmentType' : 'adjustmentType' : model.adjustmentTypes}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n","import {Component, OnInit, ViewChild} from \"@angular/core\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {User} from \"@model/user\";\r\nimport {DxTabPanelComponent} from \"devextreme-angular\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {UserService} from \"@shared/services/webapp/user/user-service\";\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {Enterprise, EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {NominationGroupService, SimpleNominationGroup} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport {NomGroupEnrichmentService} from \"@shared/services/enrichment/nomgroup-enrichment.service\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {CustomerPopupModel, ManualChargePopupModel, NomGroupPopupModel, OptionType, ViewManualAdjustmentModel, ViewManualAdjustmentSearchParams} from \"app/gcts/invoicing/view-manual-adjustment/view-manual-adjustment.model\";\r\nimport {forkJoin, Observable, of} from \"rxjs\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {concatMap, tap} from \"rxjs/operators\";\r\nimport {InvoiceRecipient, InvoicingInvoicePackageService} from \"@shared/services/invoicing/invoicing-invoice-package/invoicing-invoice-package.service\";\r\nimport * as _ from \"lodash\";\r\nimport {CustomerManualCharge, ForceMajeureCredit, InvoicingManualChangeService, ManualChargeDefinition, ManualChargeSearchRequest, NominationGroupManualCharge} from \"@shared/services/invoicing/invoicing-manual-charge/invoicing-manual-change.service\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {LocationService} from \"@shared/services/common-data/location/location.service\";\r\nimport {LocationEnrichmentService} from \"@shared/services/enrichment/location-enrichment.service\";\r\nimport {AccountsInvoiceRecipient, InvoiceRecipientService} from \"@shared/services/contracts/invoice-recipient/invoice-recipient.service\";\r\nimport {ManualAdjustmentCustomerPopupComponent} from \"app/gcts/invoicing/view-manual-adjustment/manual-adjustment-customer-popup/manual-adjustment-customer-popup.component\";\r\nimport {InvoicingTaxRateService, ProvinceTax} from \"@shared/services/invoicing/invoicing-tax-rate/invoicing-tax-rate.service\";\r\nimport {AccountingLocation, Location} from \"@shared/interfaces/location\";\r\nimport {ManualAdjustmentNominationGroupPopupComponent} from \"app/gcts/invoicing/view-manual-adjustment/manual-adjustment-nomination-group-popup/manual-adjustment-nomination-group-popup.component\";\r\nimport {InvoiceBillingProcess, InvoicingInvoiceBillingProcessService} from \"@shared/services/invoicing/invoicing-invoice-billing-process/invoicing-invoice-billing-process.service\";\r\nimport {AccountingProcessStatus, InvoiceAccountingStatusService} from \"@shared/services/invoicing/invoice-accounting-status/invoice-accounting-status.service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {PipelineSettingMapService} from \"@shared/services/nomination/pipeline-settings-map/pipeline-setting-map.service\";\r\n\r\n@Component({\r\n selector: 'app-view-manual-adjustment',\r\n templateUrl: './view-manual-adjustment.component.html',\r\n styleUrls: ['./view-manual-adjustment.component.css']\r\n})\r\nexport class ViewManualAdjustmentComponent extends BaseSearchComponent implements OnInit {\r\n currentUser: User;\r\n model: ViewManualAdjustmentModel = new ViewManualAdjustmentModel();\r\n @ViewChild('tabPanel') tabPanel: DxTabPanelComponent;\r\n @ViewChild(ManualAdjustmentCustomerPopupComponent) manualAdjustmentCustomerPopupModal: ManualAdjustmentCustomerPopupComponent;\r\n @ViewChild(ManualAdjustmentNominationGroupPopupComponent) manualAdjustmentNominationGroupPopupModal: ManualAdjustmentNominationGroupPopupComponent;\r\n\r\n forceMajeureApplies: boolean = true;\r\n tabs = [{id: 0, title: \"Customer\", template: \"template1\"},\r\n {id: 1, title: \"Nom Group\", template: \"template2\"},\r\n {id: 2, title: \"Force Majeure\", template: \"template3\"}];\r\n\r\n constructor(protected appService: AppService,\r\n protected router: Router,\r\n protected activatedRoute: ActivatedRoute,\r\n protected alertService: AlertService,\r\n private userService: UserService,\r\n private sessionService: SessionService,\r\n private pipelineSettingsMapService: PipelineSettingMapService,\r\n protected commonDataBillingMonthService: CommonDataBillingMonthService,\r\n protected enterpriseService: EnterpriseService,\r\n protected enterpriseEnrichmentService: EnterpriseEnrichmentService,\r\n protected nominationGroupService: NominationGroupService,\r\n protected nominationGroupEnrichmentService: NomGroupEnrichmentService,\r\n protected locationService: LocationService,\r\n protected locationEnrichmentService: LocationEnrichmentService,\r\n protected invoicingInvoicePackageService: InvoicingInvoicePackageService,\r\n protected invoicingManualChargeService: InvoicingManualChangeService,\r\n protected fileService: FileService,\r\n protected invoiceRecipientService: InvoiceRecipientService,\r\n protected invoicingTaxRateService: InvoicingTaxRateService,\r\n protected invoiceBillingProcessService: InvoicingInvoiceBillingProcessService,\r\n protected invoiceAccountingStatusService: InvoiceAccountingStatusService\r\n ) {\r\n super('View Manual Adjustment', appService, activatedRoute, router, alertService);\r\n\r\n enterpriseEnrichmentService.setEnrichmentResource(enterpriseService);\r\n nominationGroupEnrichmentService.setEnrichmentResource(nominationGroupService);\r\n locationEnrichmentService.setEnrichmentResource(locationService);\r\n\r\n this.currentUser = userService.user;\r\n\r\n if (this.pipelineSettingsMapService.isCgl(this.sessionService.getPipeline().code)) {\r\n this.forceMajeureApplies = false;\r\n this.tabs = [{id: 0, title: \"Customer\", template: \"template1\"},\r\n {id: 1, title: \"Nom Group\", template: \"template2\"}];\r\n }\r\n }\r\n\r\n public addClicked(): void {\r\n if(!this.tabPanel) return;\r\n\r\n if(this.tabPanel.selectedIndex === 0) { // Customer\r\n const popupModel = new CustomerPopupModel();\r\n this.setPopupModelProperties(popupModel);\r\n this.manualAdjustmentCustomerPopupModal.show(popupModel);\r\n } else if(this.tabPanel.selectedIndex === 1) { // Nom Group\r\n const popupModel = new NomGroupPopupModel();\r\n this.setPopupModelProperties(popupModel);\r\n if(this.model.nominationGroupsForSelectedCustomer.length === 1) {\r\n popupModel.nomGroupId = this.model.nominationGroupsForSelectedCustomer[0].id;\r\n }\r\n this.manualAdjustmentNominationGroupPopupModal.show(popupModel);\r\n }\r\n }\r\n\r\n okCustomerPopupEvent(): void {\r\n this.queryManualChargeDefinitions().subscribe(() => {});\r\n\r\n this.performSearch().pipe(\r\n tap(() => {\r\n this.alertService.clearMessages();\r\n this.alertService.addSuccessMessage('Success', 'The manual adjustment was saved successfully.');\r\n })\r\n ).subscribe(() => {});\r\n }\r\n\r\n okNominationGroupPopupEvent(): void {\r\n this.queryManualChargeDefinitions().subscribe(() => {});\r\n\r\n this.performSearch().pipe(\r\n tap(() => {\r\n this.alertService.clearMessages();\r\n this.alertService.addSuccessMessage('Success', 'The manual adjustment was saved successfully.');\r\n })\r\n ).subscribe(() => {\r\n if(!_.isNil(this.tabPanel)) {\r\n this.tabPanel.selectedIndex = 1;\r\n }\r\n });\r\n }\r\n\r\n deleteCustomerPopupEvent(): void {\r\n this.tabs[0].title = `Customer (${this.model.customerSearchResults.length})`;\r\n }\r\n\r\n deleteNominationGroupPopupEvent(): void {\r\n this.tabs[1].title = `Nom Group (${this.model.nominationGroupSearchResults.length})`;\r\n }\r\n\r\n private setPopupModelProperties(popupModel: ManualChargePopupModel) {\r\n popupModel.isAdding = true;\r\n popupModel.customerId = this.model.lastSearchParams.customerId;\r\n this.enterpriseEnrichmentService.enrich(popupModel, 'customerId', 'customer').subscribe(x => {});\r\n popupModel.billingMonth = this.model.openBillingMonth.gasMonth;\r\n popupModel.affectedGasMonth = this.model.openBillingMonth.gasMonth;\r\n if(this.model.invoiceRecipientsForSelectedCustomer.length === 1) {\r\n popupModel.invoiceRecipientEnterpriseId = this.model.invoiceRecipientsForSelectedCustomer[0].enterpriseCid;\r\n }\r\n popupModel.id = null;\r\n popupModel.version = 0;\r\n }\r\n\r\n public onStartBillingMonthChanged(): void {\r\n this.model.searchParams.endBillingMonth = this.model.searchParams.startBillingMonth;\r\n }\r\n\r\n public radioOnChange(): void {\r\n this.model.searchParams.customerId = null;\r\n this.model.searchParams.arNumber = null;\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return this.paramValidator().isValid(params);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {};\r\n params['startBillingMonth'] = this.model.searchParams.startBillingMonth;\r\n params['endBillingMonth'] = this.model.searchParams.endBillingMonth;\r\n if(!_.isNil(this.model.searchParams.arNumber)) {\r\n params['arNumber'] = this.model.searchParams.arNumber;\r\n }\r\n if(!_.isNil(this.model.searchParams.customerId)) {\r\n params['customer'] = this.model.searchParams.customerId;\r\n }\r\n if(this.model.searchParams.adjustmentType) {\r\n params['adjustmentType'] = this.model.searchParams.adjustmentType;\r\n }\r\n return params;\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n const getOldestBillingMonth$ = this.commonDataBillingMonthService.getOldest()\r\n .pipe(\r\n tap(oldestBillingMonth => this.model.oldestBillingMonth = oldestBillingMonth)\r\n );\r\n\r\n const getOpenBillingMonth$ = this.commonDataBillingMonthService.getOpen()\r\n .pipe(\r\n tap(openBillingMonth => this.model.openBillingMonth = openBillingMonth)\r\n );\r\n\r\n const getPreliminaryBillingMonth$ = this.commonDataBillingMonthService.getPreliminary()\r\n .pipe(\r\n tap(preliminaryBillingMonth => this.model.preliminaryBillingMonth = preliminaryBillingMonth)\r\n );\r\n\r\n const getNewestBillingMonth$ = this.commonDataBillingMonthService.getNewest()\r\n .pipe(\r\n tap(newestBillingMonth => this.model.newestBillingMonth = newestBillingMonth)\r\n );\r\n\r\n const getEnterprises$ = this.queryEnterprises();\r\n const getManualChargeDefinitions$ = this.queryManualChargeDefinitions();\r\n\r\n return forkJoin([getOldestBillingMonth$, getOpenBillingMonth$, getPreliminaryBillingMonth$, getNewestBillingMonth$, getEnterprises$, getManualChargeDefinitions$])\r\n .pipe(\r\n tap(() => {\r\n this.model.minGasMonth = this.model.oldestBillingMonth.gasMonth;\r\n this.model.maxGasMonth = this.model.openBillingMonth.gasMonth;\r\n })\r\n );\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n const queryInvoiceRecipients$ = this.queryInvoiceRecipients();\r\n const queryTaxRates$ = this.queryTaxRates();\r\n const queryAccountLocations$ = this.queryAccountLocations();\r\n const queryInvoiceBillingProcess$ = this.queryInvoiceBillingProcess();\r\n const queryAccountingStatus$ = this.queryAccountingStatus();\r\n\r\n return forkJoin([queryInvoiceRecipients$, queryTaxRates$, queryAccountLocations$, queryInvoiceBillingProcess$, queryAccountingStatus$]);\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n\r\n const request = new ManualChargeSearchRequest();\r\n request.startBillingMonth = this.model.lastSearchParams.startBillingMonth;\r\n request.endBillingMonth = this.model.lastSearchParams.endBillingMonth;\r\n request.adjustmentType = this.model.lastSearchParams.adjustmentType;\r\n request.enterpriseId = this.model.lastSearchParams.customerId;\r\n request.arNumber = this.model.lastSearchParams.arNumber;\r\n\r\n const queryCustomerManualCharges$ = this.queryCustomerManualCharges(request);\r\n const queryNominationGroupManualCharges$ = this.queryNominationGroupManualCharges(request);\r\n const queryForceMajeureCredits$ = this.queryForceMajeureCredits(request);\r\n const queryAccountInvoiceRecipients$ = this.queryInvoiceRecipientsForSelectedCustomer();\r\n const queryNominationGroups$ = this.querySimpleNominationGroups();\r\n\r\n return forkJoin([queryCustomerManualCharges$, queryNominationGroupManualCharges$, queryForceMajeureCredits$, queryAccountInvoiceRecipients$, queryNominationGroups$]);\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams = new ViewManualAdjustmentSearchParams();\r\n this.model.searchParams.startBillingMonth = this.model.openBillingMonth.gasMonth;\r\n this.model.searchParams.endBillingMonth = this.model.openBillingMonth.gasMonth;\r\n this.model.searchParams.adjustmentType = null;\r\n this.model.searchParams.customerId = null;\r\n this.model.searchParams.arNumber = null;\r\n this.model.searchParams.searchByType = 'Customer';\r\n this.model.clearSearchResults();\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams = new ViewManualAdjustmentSearchParams();\r\n this.model.searchParams.startBillingMonth = typedParams.asGasMonth('startBillingMonth');\r\n this.model.searchParams.endBillingMonth = typedParams.asGasMonth('endBillingMonth');\r\n this.model.searchParams.customerId = typedParams.asNullableNumber('customer');\r\n this.model.searchParams.arNumber = typedParams.asNullableString('arNumber');\r\n this.model.searchParams.adjustmentType = typedParams.asNullableString('adjustmentType');\r\n this.model.searchParams.searchByType = !_.isNil(this.model.searchParams.arNumber) ? 'ArNumber' : 'Customer';\r\n }\r\n\r\n private paramValidator(): ParamValidator {\r\n return ParamValidator.Standard();\r\n }\r\n\r\n private queryTaxRates(): Observable {\r\n return this.invoicingTaxRateService.get()\r\n .pipe(\r\n tap(provinceTaxes => {\r\n this.model.provincialTaxRates = provinceTaxes;\r\n this.model.taxRates = _.map(_.orderBy(_.uniqBy(provinceTaxes, x => x.taxRate), x => x.taxRate), x => new OptionType((x.taxRate * 100).toString()));\r\n this.model.taxRates.unshift(new OptionType('EX'));\r\n this.model.taxRates.unshift(new OptionType('NA'));\r\n })\r\n );\r\n }\r\n\r\n private queryAccountLocations(): Observable {\r\n return this.locationService.queryAccountLocations()\r\n .pipe(\r\n tap(locations => {\r\n this.model.locationsForPopup = locations;\r\n })\r\n );\r\n }\r\n\r\n private queryInvoiceBillingProcess(): Observable {\r\n return this.invoiceBillingProcessService.get(this.model.openBillingMonth.gasMonth)\r\n .pipe(\r\n tap(invoiceBillingProcess => {\r\n this.model.isManualChargesComplete = invoiceBillingProcess.isManualChargesComplete;\r\n })\r\n );\r\n }\r\n\r\n private queryAccountingStatus(): Observable {\r\n return this.invoiceAccountingStatusService.get(this.model.openBillingMonth.gasMonth)\r\n .pipe(\r\n tap(accountingProcessStatus => {\r\n this.model.isAccountingProcessComplete = accountingProcessStatus.status === 'Complete';\r\n })\r\n );\r\n }\r\n\r\n private querySimpleNominationGroups(): Observable {\r\n return this.nominationGroupService.querySimpleNomGroupsForAllBusinessRights(this.model.openBillingMonth.gasMonth, this.model.lastSearchParams.customerId)\r\n .pipe(\r\n tap(nominationGroups => {\r\n this.model.nominationGroupsForSelectedCustomer = nominationGroups;\r\n })\r\n );\r\n }\r\n\r\n private queryInvoiceRecipients(): Observable {\r\n return this.invoicingInvoicePackageService.queryInvoiceRecipients(this.model.oldestBillingMonth.gasMonth, this.model.newestBillingMonth.gasMonth)\r\n .pipe(\r\n concatMap(invoiceRecipients => this.enterpriseEnrichmentService.enrichArray(invoiceRecipients, 'id')),\r\n tap(invoiceRecipients => {\r\n this.model.customers = _.orderBy(invoiceRecipients, x => x.shortName);\r\n this.model.arNumbers = _.orderBy(_.intersectionWith(this.model.arNumbers, invoiceRecipients, (enterprise, invoiceRecipient) => {\r\n return enterprise.cid === invoiceRecipient.id && !_.isNil(enterprise.sapNumber);\r\n }), x => x.sapNumber);\r\n })\r\n );\r\n }\r\n\r\n private queryEnterprises(): Observable {\r\n return this.enterpriseService.getAll()\r\n .pipe(\r\n tap(enterprises => {\r\n this.model.arNumbers = enterprises;\r\n })\r\n );\r\n }\r\n\r\n private queryInvoiceRecipientsForSelectedCustomer(): Observable {\r\n if(_.isNil(this.model.lastSearchParams.customerId)) return of(null);\r\n\r\n return this.invoiceRecipientService.queryInvoiceRecipientsForCustomer(this.model.openBillingMonth.gasMonth, this.model.lastSearchParams.customerId)\r\n .pipe(\r\n concatMap(invoiceRecipients => this.enterpriseEnrichmentService.enrichArray(invoiceRecipients, 'enterpriseCid', 'invoiceRecipient')),\r\n tap(invoiceRecipients => {\r\n this.model.invoiceRecipientsForSelectedCustomer = invoiceRecipients;\r\n })\r\n );\r\n }\r\n\r\n private queryManualChargeDefinitions(): Observable {\r\n return this.invoicingManualChargeService.queryManualChargeDefinitions()\r\n .pipe(\r\n tap(manualChargeDefinitions => {\r\n this.model.adjustmentTypes = _.orderBy(manualChargeDefinitions, x => x.adjustmentType);\r\n this.model.adjustmentTypesForCustomerPopup = _.filter(this.model.adjustmentTypes, x => x.manualChargeType === 'Customer');\r\n this.model.adjustmentTypesForNomGroupPopup = _.filter(this.model.adjustmentTypes, x => x.manualChargeType === 'Nom Group');\r\n const manualChargeDefinition = new ManualChargeDefinition();\r\n manualChargeDefinition.adjustmentType = '* New';\r\n this.model.adjustmentTypesForCustomerPopup.unshift(manualChargeDefinition);\r\n this.model.adjustmentTypesForNomGroupPopup.unshift(manualChargeDefinition);\r\n })\r\n );\r\n }\r\n\r\n private queryCustomerManualCharges(request: ManualChargeSearchRequest): Observable {\r\n return this.invoicingManualChargeService.queryCustomerManualCharges(request)\r\n .pipe(\r\n concatMap(customerManualCharges => this.enterpriseEnrichmentService.enrichArray(customerManualCharges, 'invoiceRecipientEnterpriseId', 'invoiceRecipient')),\r\n concatMap(customerManualCharges => this.enterpriseEnrichmentService.enrichArray(customerManualCharges, 'customerEnterpriseId', 'customer')),\r\n tap(customerManualCharges => {\r\n this.model.customerSearchResults = _.orderBy(customerManualCharges, x => x['customerDisplayName']);\r\n this.tabs[0].title = `Customer (${customerManualCharges.length})`;\r\n })\r\n );\r\n }\r\n\r\n private queryNominationGroupManualCharges(request: ManualChargeSearchRequest): Observable {\r\n return this.invoicingManualChargeService.queryNominationGroupManualCharges(request)\r\n .pipe(\r\n concatMap(nomGroupManualCharges => this.enterpriseEnrichmentService.enrichArray(nomGroupManualCharges, 'invoiceRecipientEnterpriseId', 'invoiceRecipient')),\r\n concatMap(nomGroupManualCharges => this.enterpriseEnrichmentService.enrichArray(nomGroupManualCharges, 'customerEnterpriseId', 'customer')),\r\n concatMap(nomGroupManualCharges => this.nominationGroupEnrichmentService.enrichArray(nomGroupManualCharges, 'nominationGroupId', 'nomGroup')),\r\n concatMap(nomGroupManualCharges => this.locationEnrichmentService.enrichArray(nomGroupManualCharges, 'receiptLocationId', 'receiptLocation')),\r\n concatMap(nomGroupManualCharges => this.locationEnrichmentService.enrichArray(nomGroupManualCharges, 'deliveryLocationId', 'deliveryLocation')),\r\n tap(nominationGroupManualCharges => {\r\n this.model.nominationGroupSearchResults = nominationGroupManualCharges;\r\n this.tabs[1].title = `Nom Group (${nominationGroupManualCharges.length})`;\r\n })\r\n );\r\n }\r\n\r\n private queryForceMajeureCredits(request: ManualChargeSearchRequest): Observable {\r\n if (this.forceMajeureApplies === false) {\r\n return of([]);\r\n }\r\n\r\n return this.invoicingManualChargeService.queryForceMajeureCredits(request)\r\n .pipe(\r\n concatMap(forceMajeureCredits => this.enterpriseEnrichmentService.enrichArray(forceMajeureCredits, 'invoiceRecipientEnterpriseId', 'invoiceRecipient')),\r\n concatMap(forceMajeureCredits => this.enterpriseEnrichmentService.enrichArray(forceMajeureCredits, 'customerEnterpriseId', 'customer')),\r\n concatMap(forceMajeureCredits => this.nominationGroupEnrichmentService.enrichArray(forceMajeureCredits, 'nomGroupId', 'nomGroup')),\r\n concatMap(forceMajeureCredits => this.locationEnrichmentService.enrichArray(forceMajeureCredits, 'receiptLocationId', 'receiptLocation')),\r\n concatMap(forceMajeureCredits => this.locationEnrichmentService.enrichArray(forceMajeureCredits, 'deliveryLocationId', 'deliveryLocation')),\r\n tap(forceMajeureCredits => {\r\n this.model.forceMajeureSearchResults = forceMajeureCredits;\r\n this.tabs[2].title = `Force Majeure (${forceMajeureCredits.length})`;\r\n })\r\n );\r\n }\r\n}\r\n","import {GasMonth} from \"@model/gas-month\";\r\nimport {BaseViewModel} from \"@model/base-view-model\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport {ILoadManualChargeErrorResponse} from \"@shared/services/invoicing/invoicing-manual-charge/invoicing-manual-change.service\";\r\n\r\nexport class LoadManualAdjustmentModel extends BaseViewModel {\r\n searchParams: LoadManualAdjustmentParams = new LoadManualAdjustmentParams();\r\n openBillingMonth: BillingMonth;\r\n lastSearchParams: LoadManualAdjustmentParams;\r\n manualAdjustmentTypes: ChargeType[] = ChargeType.ALL;\r\n responseResults: ILoadManualChargeErrorResponse[];\r\n error: string;\r\n isValid: boolean;\r\n\r\n extractedCustomerData: CustomerRow[] = [];\r\n extractedCustomerInterestData: CustomerInterestRow[] = [];\r\n extractedNominationGroupData: NominationGroupRow[] = [];\r\n extractedForceMajeureData: ForceMajeureRowData[] = [];\r\n\r\n clearCsvData(): void {\r\n this.extractedCustomerData = [];\r\n this.extractedCustomerInterestData = [];\r\n this.extractedNominationGroupData = [];\r\n this.extractedForceMajeureData = [];\r\n this.error = null;\r\n }\r\n}\r\n\r\nexport class LoadManualAdjustmentParams {\r\n manualAdjustmentType: string;\r\n billingMonth: GasMonth;\r\n fileName: string;\r\n}\r\n\r\nexport class CustomerRow {\r\n\r\n constructor(billingMonth: string, affectedBillingMonth: string, invoiceRecipientMnemonic: string, customerMnemonic: string, adjustmentType: string, totalCharge: string, additionalDescription: string) {\r\n this.billingMonth = billingMonth;\r\n this.affectedBillingMonth = affectedBillingMonth;\r\n this.invoiceRecipientMnemonic = invoiceRecipientMnemonic;\r\n this.customerMnemonic = customerMnemonic;\r\n this.adjustmentType = adjustmentType;\r\n this.totalCharge = totalCharge;\r\n this.additionalDescription = additionalDescription;\r\n }\r\n\r\n billingMonth: string;\r\n affectedBillingMonth: string;\r\n invoiceRecipientMnemonic: string;\r\n customerMnemonic: string;\r\n adjustmentType: string;\r\n totalCharge: string;\r\n additionalDescription: string;\r\n}\r\n\r\nexport class CustomerInterestRow {\r\n\r\n constructor(billingMonth: string, invoiceRecipientMnemonic: string, customerMnemonic: string, adjustmentType: string, affectedBillingMonth: string, invoiceNumber: string, interestRate: string, unpaidAmount: string, outstandingFromGasDay: string, outstandingToGasDay: string, numberOfDaysInterestCharged: string, interestAmountPerDay: string, totalCharge: string) {\r\n this.billingMonth = billingMonth;\r\n this.affectedBillingMonth = affectedBillingMonth;\r\n this.invoiceRecipientMnemonic = invoiceRecipientMnemonic;\r\n this.customerMnemonic = customerMnemonic;\r\n this.adjustmentType = adjustmentType;\r\n this.invoiceNumber = invoiceNumber;\r\n this.interestRate = interestRate;\r\n this.unpaidAmount = unpaidAmount;\r\n this.outstandingFromGasDay = outstandingFromGasDay;\r\n this.outstandingToGasDay = outstandingToGasDay;\r\n this.numberOfDaysInterestCharged = numberOfDaysInterestCharged;\r\n this.interestAmountPerDay = interestAmountPerDay;\r\n this.totalCharge = totalCharge;\r\n }\r\n\r\n billingMonth: string;\r\n affectedBillingMonth: string;\r\n invoiceRecipientMnemonic: string;\r\n customerMnemonic: string;\r\n adjustmentType: string;\r\n invoiceNumber: string;\r\n interestRate: string;\r\n unpaidAmount: string;\r\n outstandingFromGasDay: string;\r\n outstandingToGasDay: string;\r\n numberOfDaysInterestCharged: string;\r\n interestAmountPerDay: string;\r\n totalCharge: string;\r\n}\r\n\r\nexport class NominationGroupRow {\r\n\r\n constructor(billingMonth: string, affectedBillingMonth: string, nominationGroupMnemonic: string, adjustmentType: string, receiptLocationName: string, deliveryLocationName: string, quantityType: string, quantity: string, taxRate: string, toll: string, totalCharge: string, additionalDescription: string) {\r\n this.billingMonth = billingMonth;\r\n this.affectedBillingMonth = affectedBillingMonth;\r\n this.nominationGroupMnemonic = nominationGroupMnemonic;\r\n this.adjustmentType = adjustmentType;\r\n this.receiptLocationName = receiptLocationName;\r\n this.deliveryLocationName = deliveryLocationName;\r\n this.quantityType = quantityType;\r\n this.quantity = quantity;\r\n this.taxRate = taxRate;\r\n this.toll = toll;\r\n this.totalCharge = totalCharge;\r\n this.additionalDescription = additionalDescription;\r\n }\r\n\r\n billingMonth: string;\r\n affectedBillingMonth: string;\r\n nominationGroupMnemonic: string;\r\n adjustmentType: string;\r\n receiptLocationName: string;\r\n deliveryLocationName: string;\r\n quantityType: string;\r\n quantity: string;\r\n taxRate: string;\r\n toll: string;\r\n totalCharge: string;\r\n additionalDescription: string;\r\n}\r\n\r\nexport class ForceMajeureRowData {\r\n\r\n constructor(billingMonth: string, nominationGroupMnemonic: string, receiptLocationName: string, deliveryLocationName: string, gasDay: string, quantity: string, contractPrice: string, taxExempt: string) {\r\n this.billingMonth = billingMonth;\r\n this.nominationGroupMnemonic = nominationGroupMnemonic;\r\n this.receiptLocationName = receiptLocationName;\r\n this.deliveryLocationName = deliveryLocationName;\r\n this.gasDay = gasDay;\r\n this.quantity = quantity;\r\n this.contractPrice = contractPrice;\r\n this.taxExempt = taxExempt;\r\n }\r\n\r\n billingMonth: string;\r\n nominationGroupMnemonic: string;\r\n receiptLocationName: string;\r\n deliveryLocationName: string;\r\n gasDay: string;\r\n quantity: string;\r\n contractPrice: string;\r\n taxExempt: string;\r\n}\r\n\r\nexport class CustomerManualChargeRequestErrorRow extends CustomerRow {\r\n lineNumber: number;\r\n errorMessage: string;\r\n}\r\n\r\n// These have to match the file headers exactly. There is validation that happens. Could change the csv upload class to be a little more loose about this.\r\nexport class ChargeType {\r\n public static CUSTOMER\r\n = new ChargeType('Customer',\r\n ['Billing Month', 'Affected Month', 'Inv. Rec.', 'Cust', 'Adj Type',\r\n 'Total Chg ($)', 'Additional Comments']);\r\n public static CUSTOMER_INTEREST\r\n = new ChargeType('Customer Interest',\r\n ['Billing Month', 'Inv. Rec.', 'Cust', 'Adj Type', 'Affected Month',\r\n 'Invoice #', 'Interest Rate (%)', 'Unpaid Amount', 'Outstanding From', 'Outstanding To',\r\n '# of Days', 'Interest Per Day', 'Total Chg ($)']);\r\n\r\n public static NOMINATION_GROUP\r\n = new ChargeType('Nomination Group',\r\n ['Billing Month', 'Affected Month', 'Nom Group', 'Adj Type', 'Receipt',\r\n 'Delivery', 'Qty Type', 'Quantity (GJ)', 'Tax (%)', 'Toll Cdn ($)',\r\n 'Total Chg ($)', 'Additional Comments']);\r\n\r\n public static FORCE_MAJEURE\r\n = new ChargeType('Force Majeure',\r\n ['Billing Month', 'Nom Group', 'Receipt', 'Delivery', 'Gas Day',\r\n 'Quantity (GJ)', 'Price', 'Tax Exempt']);\r\n\r\n public static ALL: ChargeType[] = [ChargeType.CUSTOMER, ChargeType.CUSTOMER_INTEREST, ChargeType.NOMINATION_GROUP, ChargeType.FORCE_MAJEURE];\r\n public static CGL_ALL: ChargeType[] = [ChargeType.CUSTOMER, ChargeType.CUSTOMER_INTEREST, ChargeType.NOMINATION_GROUP];\r\n\r\n name: string;\r\n csvColumns: string[];\r\n\r\n constructor(name: string, csvColumns: string[]) {\r\n this.name = name;\r\n this.csvColumns = csvColumns;\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Manual Adjustment Type: {{model.lastSearchParams?.manualAdjustmentType}}\r\n CSV Data File: {{model.lastSearchParams?.fileName}}\r\n Billing Month: {{model.lastSearchParams?.billingMonth}}\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
0\">\r\n
\r\n \r\n
\r\n \r\n Browse...\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.searchParams.billingMonth | gasMonthFormat}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.manualAdjustmentType}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.fileName}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
0\" class=\"tc-results-table pl-0\">\r\n
\r\n
\r\n Number of Error Messages: {{model.responseResults.length}}\r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n \r\n\r\n \r\n
\r\n Line
Number\r\n
\r\n \r\n
\r\n Billing
Month\r\n
\r\n\r\n \r\n
\r\n Affected
Month\r\n
\r\n\r\n \r\n
\r\n Invoice
Recipient
Mnemonic\r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n
\r\n Receipt
Location\r\n
\r\n\r\n \r\n
\r\n Delivery
Location\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {{data.value}}\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n","import {Component, OnInit} from \"@angular/core\";\r\nimport {BaseComponent} from \"@model/base-component\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {ChargeType, CustomerInterestRow, CustomerRow, ForceMajeureRowData, LoadManualAdjustmentModel, NominationGroupRow} from \"app/gcts/invoicing/load-manual-adjustment/load-manual-adjustment.model\";\r\nimport {Observable} from \"rxjs\";\r\nimport {tap} from \"rxjs/operators\";\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport {CsvUtility} from \"@model/CsvUtility\";\r\nimport {InvoicingManualChangeService} from \"@shared/services/invoicing/invoicing-manual-charge/invoicing-manual-change.service\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport * as _ from \"lodash\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {PipelineSettingMapService} from \"@shared/services/nomination/pipeline-settings-map/pipeline-setting-map.service\";\r\n\r\n@Component({\r\n selector: 'app-load-manual-adjustment',\r\n templateUrl: './load-manual-adjustment.component.html',\r\n styleUrls: ['./load-manual-adjustment.component.css'],\r\n providers: [CsvUtility]\r\n})\r\nexport class LoadManualAdjustmentComponent extends BaseComponent implements OnInit {\r\n model: LoadManualAdjustmentModel = new LoadManualAdjustmentModel();\r\n isCgl: boolean;\r\n\r\n constructor(protected appService: AppService,\r\n protected alertService: AlertService,\r\n protected commonDataBillingMonthService: CommonDataBillingMonthService,\r\n protected invoicingManualChargeService: InvoicingManualChangeService,\r\n protected csvUtility: CsvUtility,\r\n private sessionService: SessionService,\r\n private pipelineSettingsMapService: PipelineSettingMapService) {\r\n super(appService);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.isCgl = this.pipelineSettingsMapService.isCgl(this.sessionService.getPipeline().code);\r\n this.appService.hideMenu();\r\n super.setTitle('Load Manual Adjustment');\r\n this.performOnInit();\r\n this.resetClicked();\r\n }\r\n\r\n private uploadCustomerData(): void {\r\n if (this.model.lastSearchParams.manualAdjustmentType === ChargeType.CUSTOMER.name || this.model.lastSearchParams.manualAdjustmentType === ChargeType.CUSTOMER_INTEREST.name) {\r\n const data =\r\n this.model.extractedCustomerData.length > 0 ?\r\n this.model.extractedCustomerData :\r\n this.model.extractedCustomerInterestData.length > 0 ?\r\n this.model.extractedCustomerInterestData : [];\r\n\r\n this.invoicingManualChargeService.uploadCustomerManualCharges(data)\r\n .pipe(\r\n tap(results => {\r\n this.model.responseResults = results;\r\n this.model.searchParams.fileName = '';\r\n if (this.model.responseResults.length === 0) {\r\n this.alertService.addSuccessMessage('Upload Successful', `${data.length} new Manual Adjustments were created.`);\r\n } else {\r\n this.alertService.addErrorMessage('Upload Failed', `${this.model.responseResults.length} line(s) in the selected CSV file were invalid.`);\r\n }\r\n })\r\n ).subscribe();\r\n }\r\n }\r\n\r\n private uploadNominationGroupData(): void {\r\n if(this.model.lastSearchParams.manualAdjustmentType === ChargeType.NOMINATION_GROUP.name && this.model.extractedNominationGroupData?.length > 0) {\r\n this.invoicingManualChargeService.uploadNominationGroupManualCharges(this.model.extractedNominationGroupData)\r\n .pipe(\r\n tap(results => {\r\n this.model.responseResults = results;\r\n this.model.searchParams.fileName = '';\r\n if (this.model.responseResults.length === 0) {\r\n this.alertService.addSuccessMessage('Upload Successful', `${this.model.extractedNominationGroupData.length} new Manual Adjustments were created.`);\r\n } else {\r\n this.alertService.addErrorMessage('Upload Failed', `${this.model.responseResults.length} line(s) in the selected CSV file were invalid.`);\r\n }\r\n })\r\n ).subscribe();\r\n\r\n }\r\n }\r\n\r\n private uploadForceMajeureData(): void {\r\n if (this.isCgl) return; // not applicable for CGL\r\n if(this.model.lastSearchParams.manualAdjustmentType === ChargeType.FORCE_MAJEURE.name && this.model.extractedForceMajeureData?.length > 0) {\r\n this.invoicingManualChargeService.uploadForceMajeureManualCharges(this.model.extractedForceMajeureData)\r\n .pipe(\r\n tap(results => {\r\n this.model.responseResults = results;\r\n this.model.searchParams.fileName = '';\r\n if (this.model.responseResults.length === 0) {\r\n this.alertService.addSuccessMessage('Upload Successful', `${this.model.extractedForceMajeureData.length} new Force Majeure Credits were created.`);\r\n } else {\r\n this.alertService.addErrorMessage('Upload Failed', `${this.model.responseResults.length} line(s) in the selected CSV file were invalid.`);\r\n }\r\n })\r\n ).subscribe();\r\n }\r\n }\r\n\r\n public uploadClicked(): void {\r\n this.alertService.clearMessages();\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n // We will upload one of the three data types. Each checks if it's data exists, and uploads it.\r\n this.uploadCustomerData();\r\n this.uploadNominationGroupData();\r\n this.uploadForceMajeureData();\r\n }\r\n\r\n public browseClicked(e: any): void {\r\n if (e.target.files.length > 0) {\r\n this.model.searchParams.fileName = e.target.files[0].name;\r\n\r\n const reader = new FileReader();\r\n\r\n reader.onload = (event: any) => {\r\n this.alertService.clearMessages();\r\n this.extractData(event.target.result);\r\n };\r\n\r\n reader.readAsText(e.target.files[0]);\r\n }\r\n }\r\n\r\n public resetClicked(): void {\r\n if (this.isCgl) {\r\n this.model.manualAdjustmentTypes = ChargeType.CGL_ALL;\r\n }\r\n this.model.lastSearchParams = null;\r\n this.model.searchParams.manualAdjustmentType = ChargeType.CUSTOMER.name;\r\n this.model.searchParams.fileName = null;\r\n\r\n this.model.clearCsvData();\r\n this.model.responseResults = [];\r\n this.alertService.clearMessages();\r\n }\r\n\r\n public isCustomer(): boolean {\r\n return this.model.lastSearchParams.manualAdjustmentType === ChargeType.CUSTOMER.name;\r\n }\r\n\r\n public isCustomerInterest(): boolean {\r\n return this.model.lastSearchParams.manualAdjustmentType === ChargeType.CUSTOMER_INTEREST.name;\r\n }\r\n\r\n public isOneOfCustomerTypes(): boolean {\r\n return this.isCustomer() || this.isCustomerInterest();\r\n }\r\n\r\n public isNominationGroup(): boolean {\r\n return this.model.lastSearchParams.manualAdjustmentType === ChargeType.NOMINATION_GROUP.name;\r\n }\r\n\r\n public isForceMajeure(): boolean {\r\n return this.model.lastSearchParams.manualAdjustmentType === ChargeType.FORCE_MAJEURE.name;\r\n }\r\n\r\n private performOnInit(): void {\r\n this.queryOpenBillingMonth().subscribe(() => {});\r\n }\r\n\r\n private queryOpenBillingMonth(): Observable {\r\n return this.commonDataBillingMonthService.getOpen()\r\n .pipe(\r\n tap(openBillingMonth => {\r\n this.model.openBillingMonth = openBillingMonth;\r\n this.model.searchParams.billingMonth = openBillingMonth.gasMonth;\r\n })\r\n );\r\n }\r\n\r\n private extractData(data: string): void {\r\n this.model.error = null;\r\n this.model.isValid = false;\r\n this.model.clearCsvData();\r\n\r\n if(this.model.searchParams.manualAdjustmentType === ChargeType.CUSTOMER.name) {\r\n this.extractCustomerData(data);\r\n } else if(this.model.searchParams.manualAdjustmentType === ChargeType.CUSTOMER_INTEREST.name) {\r\n this.extractCustomerInterestData(data);\r\n } else if(this.model.searchParams.manualAdjustmentType === ChargeType.NOMINATION_GROUP.name) {\r\n this.extractNominationGroupData(data);\r\n } else if(this.model.searchParams.manualAdjustmentType === ChargeType.FORCE_MAJEURE.name) {\r\n this.extractForceMajeureData(data);\r\n }\r\n\r\n if (this.model.error?.length > 0) {\r\n this.alertService.addErrorMessage('Error:', this.model.error);\r\n }\r\n }\r\n\r\n private extractCustomerData(data: string): void {\r\n const headers = ChargeType.CUSTOMER.csvColumns;\r\n // the csvUtility requires that the headers for the csv properly or it will think it errored out\r\n this.csvUtility.extractData(data, this.model, headers, (results, fields) => {\r\n for (const line of results) {\r\n const row = new CustomerRow(\r\n line[this.csvUtility.findColumnHeaderColumn(fields, headers[0])],\r\n line[this.csvUtility.findColumnHeaderColumn(fields, headers[1])],\r\n line[this.csvUtility.findColumnHeaderColumn(fields, headers[2])],\r\n line[this.csvUtility.findColumnHeaderColumn(fields, headers[3])],\r\n line[this.csvUtility.findColumnHeaderColumn(fields, headers[4])],\r\n line[this.csvUtility.findColumnHeaderColumn(fields, headers[5])],\r\n line[this.csvUtility.findColumnHeaderColumn(fields, headers[6])]\r\n );\r\n this.model.extractedCustomerData.push(row);\r\n }\r\n }, false, true);\r\n }\r\n\r\n private extractCustomerInterestData(data: string): void {\r\n const headers = ChargeType.CUSTOMER_INTEREST.csvColumns;\r\n // the csvUtility requires that the headers for the csv properly or it will think it errored out\r\n this.csvUtility.extractData(data, this.model, headers, (results, fields) => {\r\n for (const line of results) {\r\n const row = new CustomerInterestRow(\r\n line[this.csvUtility.findColumnHeaderColumn(fields, headers[0])],\r\n line[this.csvUtility.findColumnHeaderColumn(fields, headers[1])],\r\n line[this.csvUtility.findColumnHeaderColumn(fields, headers[2])],\r\n line[this.csvUtility.findColumnHeaderColumn(fields, headers[3])],\r\n line[this.csvUtility.findColumnHeaderColumn(fields, headers[4])],\r\n line[this.csvUtility.findColumnHeaderColumn(fields, headers[5])],\r\n line[this.csvUtility.findColumnHeaderColumn(fields, headers[6])],\r\n line[this.csvUtility.findColumnHeaderColumn(fields, headers[7])],\r\n line[this.csvUtility.findColumnHeaderColumn(fields, headers[8])],\r\n line[this.csvUtility.findColumnHeaderColumn(fields, headers[9])],\r\n line[this.csvUtility.findColumnHeaderColumn(fields, headers[10])],\r\n line[this.csvUtility.findColumnHeaderColumn(fields, headers[11])],\r\n line[this.csvUtility.findColumnHeaderColumn(fields, headers[12])]);\r\n this.model.extractedCustomerInterestData.push(row);\r\n }\r\n }, false, true);\r\n\r\n }\r\n\r\n private extractNominationGroupData(data: string): void {\r\n const headers = ChargeType.NOMINATION_GROUP.csvColumns;\r\n // the csvUtility requires that the headers for the csv properly or it will think it errored out\r\n this.csvUtility.extractData(data, this.model, headers, (results, fields) => {\r\n for (const line of results) {\r\n const row = new NominationGroupRow(\r\n line[this.csvUtility.findColumnHeaderColumn(fields, headers[0])],\r\n line[this.csvUtility.findColumnHeaderColumn(fields, headers[1])],\r\n line[this.csvUtility.findColumnHeaderColumn(fields, headers[2])],\r\n line[this.csvUtility.findColumnHeaderColumn(fields, headers[3])],\r\n line[this.csvUtility.findColumnHeaderColumn(fields, headers[4])],\r\n line[this.csvUtility.findColumnHeaderColumn(fields, headers[5])],\r\n line[this.csvUtility.findColumnHeaderColumn(fields, headers[6])],\r\n line[this.csvUtility.findColumnHeaderColumn(fields, headers[7])],\r\n line[this.csvUtility.findColumnHeaderColumn(fields, headers[8])],\r\n line[this.csvUtility.findColumnHeaderColumn(fields, headers[9])],\r\n line[this.csvUtility.findColumnHeaderColumn(fields, headers[10])],\r\n line[this.csvUtility.findColumnHeaderColumn(fields, headers[11])]\r\n );\r\n this.model.extractedNominationGroupData.push(row);\r\n }\r\n }, false, true);\r\n }\r\n\r\n private extractForceMajeureData(data: string): void {\r\n const headers = ChargeType.FORCE_MAJEURE.csvColumns;\r\n // the csvUtility requires that the headers for the csv properly or it will think it errored out\r\n this.csvUtility.extractData(data, this.model, headers, (results, fields) => {\r\n for (const line of results) {\r\n const row = new ForceMajeureRowData(\r\n line[this.csvUtility.findColumnHeaderColumn(fields, headers[0])],\r\n line[this.csvUtility.findColumnHeaderColumn(fields, headers[1])],\r\n line[this.csvUtility.findColumnHeaderColumn(fields, headers[2])],\r\n line[this.csvUtility.findColumnHeaderColumn(fields, headers[3])],\r\n line[this.csvUtility.findColumnHeaderColumn(fields, headers[4])],\r\n line[this.csvUtility.findColumnHeaderColumn(fields, headers[5])],\r\n line[this.csvUtility.findColumnHeaderColumn(fields, headers[6])],\r\n line[this.csvUtility.findColumnHeaderColumn(fields, headers[7])]\r\n );\r\n this.model.extractedForceMajeureData.push(row);\r\n }\r\n }, false, true);\r\n }\r\n\r\n onAdjustmentTypeChanges(): void {\r\n this.model.searchParams.fileName = null;\r\n this.model.clearCsvData();\r\n }\r\n}\r\n","import {BaseViewModel} from \"@model/base-view-model\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport {DailyDiscretionaryRevenueLine} from \"@shared/services/invoicing/daily-discretionary-revenue/daily-discretionary-revenue.service\";\r\nimport {DateTime} from \"@model/date-time\";\r\nimport {GasDay} from \"@model/gas-day\";\r\n\r\nexport class DailyDiscretionaryRevenueReportModel extends BaseViewModel {\r\n\r\n openBillingMonth: BillingMonth;\r\n preliminaryBillingMonth: BillingMonth;\r\n\r\n minGasMonth: GasMonth;\r\n maxGasMonth: GasMonth;\r\n\r\n searchResults: DailyDiscretionaryRevenueLine[] = [];\r\n\r\n searchParams: DailyDiscretionaryRevenueReportSearchParams = new DailyDiscretionaryRevenueReportSearchParams();\r\n lastSearchParams: DailyDiscretionaryRevenueReportSearchParams;\r\n billingMonthStatus: string;\r\n searchTime: DateTime;\r\n currentGasDay: GasDay;\r\n\r\n clearSearchResults() {\r\n this.searchResults = [];\r\n this.searchTime = undefined;\r\n this.billingMonthStatus = undefined;\r\n this.lastSearchParams = undefined;\r\n }\r\n}\r\n\r\nexport class DailyDiscretionaryRevenueReportSearchParams {\r\n billingMonth: GasMonth;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {InvoicingResourceService} from \"@shared/resources/invoicing-resource.service\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {Observable} from \"rxjs\";\r\nimport {map} from \"rxjs/operators\";\r\nimport * as _ from \"lodash\";\r\nimport {HttpResponse} from \"@angular/common/http\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DailyDiscretionaryRevenueService {\r\n\r\n constructor(private invoicingResource: InvoicingResourceService) { }\r\n\r\n public queryDailyDiscretionaryRevenue(billingMonth: GasMonth): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setGasMonth(billingMonth);\r\n return this.invoicingResource.get('/invoices/dailyDiscretionaryRevenue', true, params)\r\n .pipe(\r\n map(response => DailyDiscretionaryRevenueLine.create(response))\r\n );\r\n }\r\n\r\n public queryDailyDiscretionaryRevenueCsv(gasMonth: GasMonth, isDetail: boolean): Observable> {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setGasMonth(gasMonth);\r\n params.setBoolean('detail', isDetail);\r\n params.setBoolean('download', true);\r\n return this.invoicingResource.getData('/invoices/dailyDiscretionaryRevenue/csv', true, params);\r\n }\r\n}\r\n\r\ninterface IDailyDiscretionaryRevenueResponse {\r\n pressureQuantity: number;\r\n pressureRevenue: number;\r\n rateRiderRevenue: number;\r\n quantity: number;\r\n revenue: number;\r\n service: string;\r\n totalRevenue: number;\r\n groups: IDailyDiscretionaryRevenueGroup[];\r\n}\r\n\r\ninterface IDailyDiscretionaryRevenueGroup {\r\n pressureQuantity: number;\r\n pressureRevenue: number;\r\n rateRiderRevenue: number;\r\n quantity: number;\r\n revenue: number;\r\n service: string;\r\n rows: IDailyDiscretionaryRevenueRow[];\r\n}\r\n\r\ninterface IDailyDiscretionaryRevenueRow {\r\n pressureQuantity: number;\r\n pressureRevenue: number;\r\n rateRiderRevenue: number;\r\n quantity: number;\r\n revenue: number;\r\n service: string;\r\n totalRevenue: number;\r\n}\r\n\r\n\r\nexport class DailyDiscretionaryRevenueLine {\r\n serviceGroupSorting: number;\r\n serviceGroup: string;\r\n serviceType: string;\r\n discretionaryQty: number;\r\n pressureQty: number;\r\n discretionaryRevenue: number;\r\n pressureRevenue: number;\r\n rateRiderRevenue: number;\r\n totalRevenue: number;\r\n\r\n\r\n constructor(serviceGroup: string, serviceType: string, discretionaryQty: number, pressureQty: number, discretionaryRevenue: number, pressureRevenue: number, rateRiderRevenue: number, totalRevenue: number, sortingIndex:number) {\r\n this.serviceGroup = serviceGroup;\r\n this.serviceType = serviceType;\r\n this.discretionaryQty = discretionaryQty;\r\n this.pressureQty = pressureQty;\r\n this.discretionaryRevenue = discretionaryRevenue;\r\n this.pressureRevenue = pressureRevenue;\r\n this.rateRiderRevenue = rateRiderRevenue;\r\n this.totalRevenue = totalRevenue;\r\n this.serviceGroupSorting = sortingIndex;\r\n }\r\n\r\n static create(dto: IDailyDiscretionaryRevenueResponse): DailyDiscretionaryRevenueLine[] {\r\n const result: DailyDiscretionaryRevenueLine[] = [];\r\n // used to sort in the UI. should probably be in the component instead, but hard to do there.\r\n let sortIndex: number =0;\r\n for(const group of dto.groups) {\r\n sortIndex++;\r\n if (group.rows.length === 0) {\r\n result.push(\r\n new DailyDiscretionaryRevenueLine(group.service, _.trim(_.replace(group.service, 'Total', '')), 0, 0, 0, 0, 0, 0,sortIndex));\r\n }\r\n for(const row of group.rows) {\r\n result.push(\r\n new DailyDiscretionaryRevenueLine(group.service, row.service, row.quantity, row.pressureQuantity, row.revenue, row.pressureRevenue, row.rateRiderRevenue, row.totalRevenue, sortIndex));\r\n }\r\n }\r\n return result;\r\n }\r\n}\r\n","\r\n
\r\n {{ getTitle() }}\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n -\r\n +\r\n Filters\r\n 0\" style=\"font-weight: normal;\">\r\n :\r\n Billing Month: {{model.lastSearchParams?.billingMonth}}\r\n Status: {{model.billingMonthStatus}}\r\n \r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
0\">\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.billingMonth | gasMonthFormat }}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.billingMonthStatus}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n As of: {{ model.searchTime | dateTimeFormat }}\r\n
0\" class=\"pull-right\">\r\n Export Summary CSV\r\n | \r\n Export Detail CSV\r\n
\r\n\r\n
\r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n
\r\n
\r\n {{setGroupText(group)}}\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n * Pressure (GJ - MTD) is included in the Discretionary (GJ - MTD) column
\r\n ** Total Revenue ($) is Discretionary Revenue ($) + Pressure Revenue ($)
\r\n Diversions includes: FT, FT-NR, FT-SN
\r\n Other includes: Park, Loan, Storage Injection Overrun, Storage Withdrawal Overrun, Storage Transportation Fee, Union Dawn Surcharge\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n","import {Component, OnInit} from '@angular/core';\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {UserService} from \"@shared/services/webapp/user/user-service\";\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {NominationGroupService} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport {NomGroupEnrichmentService} from \"@shared/services/enrichment/nomgroup-enrichment.service\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {forkJoin, Observable, of} from \"rxjs\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {DailyDiscretionaryRevenueReportModel, DailyDiscretionaryRevenueReportSearchParams} from \"app/gcts/invoicing/daily-discretionary-revenue-report/daily-discretionary-revenue-report-model\";\r\nimport {tap} from \"rxjs/operators\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport * as _ from \"lodash\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {DailyDiscretionaryRevenueService} from \"@shared/services/invoicing/daily-discretionary-revenue/daily-discretionary-revenue.service\";\r\nimport {InvoicingInvoiceBillingProcessService} from \"@shared/services/invoicing/invoicing-invoice-billing-process/invoicing-invoice-billing-process.service\";\r\nimport {CommonDataGasdayService, ServerTimeData} from \"@shared/services/common-data/common-data-gasday/common-data-gasday.service\";\r\nimport {HttpResponse} from \"@angular/common/http\";\r\nimport * as FileSaver from \"file-saver\";\r\nimport {IEmailSubscriptionService} from \"@shared/services/nomination/email-subscription/email-subscription.service\";\r\nimport {CommonDataEmailSubscriptionService} from \"@shared/services/common-data/common-data-email-subscription/common-data-email-subscription.service\";\r\n\r\n@Component({\r\n selector: 'app-daily-discretionary-revenue-report',\r\n templateUrl: './daily-discretionary-revenue-report.component.html',\r\n styleUrls: ['./daily-discretionary-revenue-report.component.css']\r\n})\r\nexport class DailyDiscretionaryRevenueReportComponent extends BaseSearchComponent implements OnInit {\r\n\r\n model: DailyDiscretionaryRevenueReportModel = new DailyDiscretionaryRevenueReportModel();\r\n emailSubscriptionService: IEmailSubscriptionService;\r\n\r\n constructor(protected appService: AppService,\r\n protected router: Router,\r\n protected activatedRoute: ActivatedRoute,\r\n protected alertService: AlertService,\r\n protected userService: UserService,\r\n protected commonDataBillingMonthService: CommonDataBillingMonthService,\r\n protected enterpriseService: EnterpriseService,\r\n protected enterpriseEnrichmentService: EnterpriseEnrichmentService,\r\n protected nominationGroupService: NominationGroupService,\r\n protected nominationGroupEnrichmentService: NomGroupEnrichmentService,\r\n protected fileService: FileService,\r\n protected dailyDiscretionaryRevenueService: DailyDiscretionaryRevenueService,\r\n protected invoicingInvoiceBillingProcessService: InvoicingInvoiceBillingProcessService,\r\n private commonDataGasDayService: CommonDataGasdayService,\r\n private commonDataEmailSubscriptionService: CommonDataEmailSubscriptionService\r\n\r\n ) {\r\n super('Daily Discretionary Revenue', appService, activatedRoute, router, alertService);\r\n this.emailSubscriptionService = commonDataEmailSubscriptionService;\r\n }\r\n\r\n private paramValidator(): ParamValidator {\r\n return ParamValidator.Standard();\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return this.paramValidator().isValid(params);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {};\r\n params['billingMonth'] = this.model.searchParams.billingMonth;\r\n return params;\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n\r\n const time$ = this.commonDataGasDayService.getServerTimeData()\r\n .pipe(\r\n tap((time:ServerTimeData ) => this.model.currentGasDay = time.gasDay)\r\n );\r\n\r\n const getOldestBillingMonth$ = this.commonDataBillingMonthService.getOldest()\r\n .pipe(\r\n tap(oldestBillingMonth => this.model.minGasMonth = oldestBillingMonth.gasMonth)\r\n );\r\n\r\n const getOpenBillingMonth$ = this.commonDataBillingMonthService.getOpen()\r\n .pipe(\r\n tap(openBillingMonth => this.model.openBillingMonth = openBillingMonth)\r\n );\r\n\r\n const getPreliminaryBillingMonth$ = this.commonDataBillingMonthService.getPreliminary()\r\n .pipe(\r\n tap(prelimaryBillingMonth => this.model.preliminaryBillingMonth = prelimaryBillingMonth)\r\n );\r\n\r\n const getMaxMonth$ = forkJoin([getOpenBillingMonth$, getPreliminaryBillingMonth$])\r\n .pipe(\r\n tap(([openBillingMonth, preliminaryBillingMonth]: [BillingMonth, BillingMonth]) => {\r\n if (!_.isNil(preliminaryBillingMonth)) {\r\n this.model.maxGasMonth = preliminaryBillingMonth.gasMonth;\r\n } else {\r\n this.model.maxGasMonth = openBillingMonth.gasMonth;\r\n }\r\n }));\r\n\r\n return forkJoin([getOldestBillingMonth$, getMaxMonth$, time$]);\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n return of(null);\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n const rows$ = this.dailyDiscretionaryRevenueService.queryDailyDiscretionaryRevenue(this.model.searchParams.billingMonth)\r\n .pipe(\r\n tap(results => {\r\n this.model.searchResults = results;\r\n })\r\n );\r\n\r\n const billingMonthStatus$ = this.invoicingInvoiceBillingProcessService.get(this.model.searchParams.billingMonth)\r\n .pipe(\r\n tap(status => this.model.billingMonthStatus = status.status === 'Final' ? 'Final' : 'Preliminary')\r\n );\r\n\r\n const time$ = this.commonDataGasDayService.getServerTimeData()\r\n .pipe(\r\n tap((time:ServerTimeData ) => this.model.searchTime = time.serverTime)\r\n );\r\n return forkJoin([rows$, billingMonthStatus$, time$]);\r\n }\r\n\r\n exportCsv(includeDetails: boolean): void {\r\n this.dailyDiscretionaryRevenueService.queryDailyDiscretionaryRevenueCsv(this.model.lastSearchParams.billingMonth, includeDetails)\r\n .pipe(\r\n tap((httpResponse: HttpResponse) => {\r\n const blob = new Blob([httpResponse.body], {type: 'text/csv'});\r\n\r\n // from the content disposition, should be second element with =\"{filename}\" surrounding it\r\n const filename = httpResponse.headers.get('content-disposition').split(';')[1].trim().split('=')[1].replace(/\"/g, '');\r\n FileSaver.saveAs(blob, filename);\r\n })\r\n )\r\n .subscribe(() => {});\r\n }\r\n\r\n formatCurrency(cellInfo): any {\r\n if (_.isNil(cellInfo?.value)) return;\r\n const value: number = cellInfo.value as number;\r\n if (_.isNil(value)) return;\r\n return value.toLocaleString('en', {minimumFractionDigits: 2, maximumFractionDigits: 2});\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams = new DailyDiscretionaryRevenueReportSearchParams();\r\n this.model.searchParams.billingMonth =\r\n !_.isNil(this.model.preliminaryBillingMonth) && this.model.currentGasDay.isGreatThanOrEqualTo(this.model.preliminaryBillingMonth.firstDayOfMonth) ?\r\n this.model.preliminaryBillingMonth.gasMonth :\r\n this.model.openBillingMonth.gasMonth;\r\n this.model.clearSearchResults();\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams = new DailyDiscretionaryRevenueReportSearchParams();\r\n this.model.searchParams.billingMonth = typedParams.asGasMonth('billingMonth');\r\n }\r\n\r\n setGroupText(group: any): string {\r\n if (group.data.items?.length > 0)\r\n return group.data.items[0].serviceGroup;\r\n return '';\r\n }\r\n}\r\n","import {BaseViewModel} from \"@model/base-view-model\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport * as _ from \"lodash\";\r\nimport {ManualChargeDefinition} from \"@shared/services/invoicing/invoicing-manual-charge/invoicing-manual-change.service\";\r\nimport {CustomerForCharge, InvoiceGroupForCharge, InvoiceRecipientForCharge} from \"@shared/services/invoicing/invoicing-charges/invoicing-charges.service\";\r\nimport {AccountingLocation} from \"@shared/interfaces/location\";\r\n\r\nexport class DemandCommodityDetailsReportModel extends BaseViewModel {\r\n public oldestBillingMonth: BillingMonth;\r\n public openBillingMonth: BillingMonth;\r\n public preliminaryBillingMonth: BillingMonth;\r\n\r\n public minFromGasMonth: GasMonth;\r\n public minToGasMonth: GasMonth;\r\n public maxGasMonth: GasMonth;\r\n\r\n public manualChargeDefinitions: ManualChargeDefinition[];\r\n\r\n public ppaChargeTypes: IsPpaChargeType[] = IsPpaChargeType.ALL;\r\n public quantityTypes: DemandCommodityQuantityType[] = DemandCommodityQuantityType.ALL;\r\n public transactionTypes: DemandCommodityTransactionType[] = DemandCommodityTransactionType.ALL;\r\n public chargeClasses: ChargeClass[] = ChargeClass.ALL;\r\n public chargeTypes: DemandCommodityChargeType[] = [];\r\n public customers: CustomerForCharge[];\r\n public invoiceRecipients: InvoiceRecipientForCharge[];\r\n public invoiceGroups: InvoiceGroupForCharge[];\r\n public receiptLocations: AccountingLocation[];\r\n public deliveryLocations: AccountingLocation[];\r\n public exportTypes: IsExportType[] = IsExportType.ALL;\r\n\r\n public selectAll: boolean = false;\r\n public columnOptions: ColumnOptions[];\r\n\r\n public searchParams: DemandCommodityDetailsReportSearchParams = new DemandCommodityDetailsReportSearchParams();\r\n public lastSearchParams: DemandCommodityDetailsReportSearchParams;\r\n}\r\n\r\nexport class DemandCommodityDetailsReportSearchParams {\r\n public fromGasMonth: GasMonth;\r\n public toGasMonth: GasMonth;\r\n\r\n public isPpa?: boolean;\r\n public quantityType?: string;\r\n public transactionTypes?: string[];\r\n public chargeClasses?: string[];\r\n public chargeTypes?: string[];\r\n public customerIds?: number[];\r\n public invoiceRecipientIds?: number[];\r\n public invoiceGroupIds?: number[];\r\n public receiptLocationIds?: number[];\r\n public deliveryLocationIds?: number[];\r\n public isExport?: boolean;\r\n public isShiftsOnly: boolean;\r\n}\r\n\r\n\r\n\r\n/**\r\n * Custom classes used only by this report's filter drop downs\r\n */\r\n\r\nexport class IsExportType {\r\n public static DOMESTIC = new IsExportType(false, 'Domestic');\r\n public static EXPORT = new IsExportType(true, 'Export');\r\n public static ALL = [IsExportType.DOMESTIC, IsExportType.EXPORT];\r\n\r\n public id: boolean;\r\n public display: string;\r\n\r\n constructor(id: boolean, display: string) {\r\n this.id = id;\r\n this.display = display;\r\n }\r\n}\r\n\r\nexport class IsPpaChargeType {\r\n public static PPA = new IsPpaChargeType(true, 'PPA');\r\n public static CURRENT_MONTH = new IsPpaChargeType(false, 'Current Month');\r\n public static ALL = [IsPpaChargeType.CURRENT_MONTH, IsPpaChargeType.PPA];\r\n\r\n public id: boolean;\r\n public display: string;\r\n\r\n constructor(id: boolean, display: string) {\r\n this.id = id;\r\n this.display = display;\r\n }\r\n}\r\n\r\nexport class DemandCommodityQuantityType {\r\n public static DEMAND = new DemandCommodityQuantityType('Demand');\r\n public static QUANTITY = new DemandCommodityQuantityType('Commodity');\r\n public static ALL = [DemandCommodityQuantityType.QUANTITY, DemandCommodityQuantityType.DEMAND];\r\n\r\n public value: string;\r\n\r\n constructor(value: string) {\r\n this.value = value;\r\n }\r\n}\r\n\r\nexport class DemandCommodityTransactionType {\r\n public static TRANSPORTATION = new DemandCommodityTransactionType('Transportation', 'Transportation');\r\n public static NON_TRANSPORTATION = new DemandCommodityTransactionType('Non-Transportation', 'Non-Transportation');\r\n public static ADMIN = new DemandCommodityTransactionType('', 'Administration and Taxes');\r\n public static ALL = [DemandCommodityTransactionType.TRANSPORTATION, DemandCommodityTransactionType.NON_TRANSPORTATION, DemandCommodityTransactionType.ADMIN];\r\n\r\n public id: string;\r\n public name: string;\r\n\r\n constructor(id: string, display: string) {\r\n this.id = id;\r\n this.name = display;\r\n }\r\n}\r\n\r\nexport class ChargeClass {\r\n public static TRANSPORTATION = 'Transportation';\r\n public static NON_TRANSPORTATION = 'Non-Transportation';\r\n\r\n public static FIRM = new ChargeClass('Firm', [ChargeClass.TRANSPORTATION]);\r\n public static DISCRETIONARY = new ChargeClass('Discretionary', [ChargeClass.TRANSPORTATION, ChargeClass.NON_TRANSPORTATION]);\r\n public static PRESSURE = new ChargeClass('Pressure', [ChargeClass.NON_TRANSPORTATION]);\r\n public static SURCHARGE = new ChargeClass('Surcharge', [ChargeClass.NON_TRANSPORTATION]);\r\n public static TAXES = new ChargeClass('Taxes', ['']);\r\n public static MANUAL_ADJUSTMENTS = new ChargeClass('Manual Adjustments', [ChargeClass.TRANSPORTATION, ChargeClass.NON_TRANSPORTATION]);\r\n public static ADMIN = new ChargeClass('Administration', ['']);\r\n public static ALL: ChargeClass[] = [ChargeClass.ADMIN, ChargeClass.DISCRETIONARY, ChargeClass.FIRM, ChargeClass.MANUAL_ADJUSTMENTS, ChargeClass.PRESSURE, ChargeClass.SURCHARGE, ChargeClass.TAXES];\r\n\r\n public static DISCRETIONARY_TRANSPORT = new ChargeClass('Discretionary', [ChargeClass.TRANSPORTATION]);\r\n public static DISCRETIONARY_NON_TRANSPORT = new ChargeClass('Discretionary', [ChargeClass.NON_TRANSPORTATION]);\r\n\r\n public static MANUAL_ADJUSTMENTS_TRANSPORT = new ChargeClass('Manual Adjustments', [ChargeClass.TRANSPORTATION]);\r\n public static MANUAL_ADJUSTMENTS_NON_TRANSPORT = new ChargeClass('Manual Adjustments', [ChargeClass.NON_TRANSPORTATION]);\r\n\r\n private readonly _display: string;\r\n private readonly _transactionTypes: string[];\r\n\r\n constructor(display: string, transactionTypes: string[]) {\r\n this._display = display;\r\n this._transactionTypes = transactionTypes;\r\n }\r\n\r\n public get display(): string {\r\n return this._display;\r\n }\r\n\r\n public get transactionTypes(): string[] {\r\n return this._transactionTypes;\r\n }\r\n\r\n // Meant for use by DemandCommodityChargeType as at that point, there expects to be only one transaction type\r\n public get transactionType(): string {\r\n return this._transactionTypes[0];\r\n }\r\n\r\n public containsTransactionType(transactionType: string): boolean {\r\n return _.includes(this._transactionTypes, transactionType);\r\n }\r\n}\r\n\r\nexport class DemandCommodityChargeType {\r\n\r\n public static LTFP = new DemandCommodityChargeType('LTFP', 'LTFP', ['ML'], [ChargeClass.FIRM, ChargeClass.PRESSURE]);\r\n public static MDS = new DemandCommodityChargeType('MDS', 'MDS', ['ML'], [ChargeClass.FIRM, ChargeClass.PRESSURE]);\r\n public static EMB = new DemandCommodityChargeType('EMB','EMB', ['ML'], [ChargeClass.FIRM]);\r\n public static FT = new DemandCommodityChargeType('FT', 'FT', ['ML', 'GLC'], [ChargeClass.FIRM, ChargeClass.PRESSURE]);\r\n public static FT_I = new DemandCommodityChargeType('FT I','FT I', ['ML'], [ChargeClass.FIRM]);\r\n public static FT_NR = new DemandCommodityChargeType('FT-NR','FT-NR', ['ML'], [ChargeClass.FIRM, ChargeClass.PRESSURE]);\r\n public static FT_NR_D = new DemandCommodityChargeType('FT-NR D','FT-NR D', ['ML'], [ChargeClass.DISCRETIONARY_TRANSPORT, ChargeClass.PRESSURE]);\r\n public static FT_NR_I = new DemandCommodityChargeType('FT-NR I','FT-NR I', ['ML'], [ChargeClass.FIRM]);\r\n public static FT_SN = new DemandCommodityChargeType('FT-SN','FT-SN', ['ML'], [ChargeClass.FIRM, ChargeClass.PRESSURE]);\r\n public static SNB = new DemandCommodityChargeType('SNB','SNB', ['ML'], [ChargeClass.FIRM]);\r\n public static STS = new DemandCommodityChargeType('STS','STS', ['ML'], [ChargeClass.FIRM]);\r\n public static FT_D = new DemandCommodityChargeType('FT D','FT D', ['ML', 'GLC'], [ChargeClass.DISCRETIONARY_TRANSPORT, ChargeClass.PRESSURE]);\r\n public static FT_I_O = new DemandCommodityChargeType('FT I O','FT I O', ['ML'], [ChargeClass.DISCRETIONARY_TRANSPORT]);\r\n public static FT_SN_D = new DemandCommodityChargeType('FT-SN D','FT-SN D', ['ML'], [ChargeClass.DISCRETIONARY_TRANSPORT, ChargeClass.PRESSURE]);\r\n public static IT = new DemandCommodityChargeType('IT','IT', ['ML', 'GLC'], [ChargeClass.DISCRETIONARY_TRANSPORT, ChargeClass.PRESSURE]);\r\n public static IT_PENALTY = new DemandCommodityChargeType('IT Penalty','IT Penalty', ['ML'], [ChargeClass.DISCRETIONARY_TRANSPORT, ChargeClass.PRESSURE]);\r\n public static STFT = new DemandCommodityChargeType('STFT','STFT', ['ML'], [ChargeClass.DISCRETIONARY_TRANSPORT, ChargeClass.PRESSURE]);\r\n public static ST_SN = new DemandCommodityChargeType('ST-SN','ST-SN', ['ML'], [ChargeClass.DISCRETIONARY_TRANSPORT]);\r\n public static STS_O = new DemandCommodityChargeType('STS O','STS O', ['ML'], [ChargeClass.DISCRETIONARY_TRANSPORT, ChargeClass.PRESSURE]);\r\n public static LBA = new DemandCommodityChargeType('LBA','LBA', ['ML'], [ChargeClass.DISCRETIONARY_NON_TRANSPORT]);\r\n public static PARK = new DemandCommodityChargeType('Park','Park', ['ML','GLC'], [ChargeClass.DISCRETIONARY_NON_TRANSPORT]);\r\n public static LOAN = new DemandCommodityChargeType('Loan','Loan', ['ML','GLC'], [ChargeClass.DISCRETIONARY_NON_TRANSPORT]);\r\n public static STORAGE_FEES = new DemandCommodityChargeType('Storage Fees','Storage Fees', ['ML'], [ChargeClass.DISCRETIONARY_NON_TRANSPORT]);\r\n public static ABANDONMENT_CHARGE = new DemandCommodityChargeType('Abandonment Charge','Abandonment Charge', ['ML'], [ChargeClass.SURCHARGE]);\r\n public static DIFFERENTIAL_SURCHARGE = new DemandCommodityChargeType('Differential Surcharge','Differential Surcharge', ['ML'], [ChargeClass.SURCHARGE]);\r\n public static UNION_DAWN_SURCHARGE = new DemandCommodityChargeType('Union Dawn Surcharge','Union Dawn Surcharge', ['ML'], [ChargeClass.SURCHARGE]);\r\n private static ALL_CHARGETYPES: DemandCommodityChargeType[] = [DemandCommodityChargeType.LTFP, DemandCommodityChargeType.MDS, DemandCommodityChargeType.EMB, DemandCommodityChargeType.FT, DemandCommodityChargeType.FT_I,\r\n DemandCommodityChargeType.FT_NR, DemandCommodityChargeType.FT_NR_D, DemandCommodityChargeType.FT_NR_I, DemandCommodityChargeType.FT_SN, DemandCommodityChargeType.SNB, DemandCommodityChargeType.STS, DemandCommodityChargeType.FT_D,\r\n DemandCommodityChargeType.FT_I_O, DemandCommodityChargeType.FT_SN_D, DemandCommodityChargeType.IT, DemandCommodityChargeType.IT_PENALTY, DemandCommodityChargeType.STFT, DemandCommodityChargeType.ST_SN,\r\n DemandCommodityChargeType.STS_O, DemandCommodityChargeType.LBA, DemandCommodityChargeType.PARK, DemandCommodityChargeType.LOAN, DemandCommodityChargeType.STORAGE_FEES,\r\n DemandCommodityChargeType.ABANDONMENT_CHARGE, DemandCommodityChargeType.DIFFERENTIAL_SURCHARGE, DemandCommodityChargeType.UNION_DAWN_SURCHARGE];\r\n\r\n public id: string;\r\n public value: string;\r\n public pipelines: string[];\r\n public combinations: ChargeClass[];\r\n\r\n constructor(value: string, id: string, pipelines: string[], combinations: ChargeClass[]) {\r\n this.value = value;\r\n this.id = id;\r\n this.pipelines = pipelines;\r\n this.combinations = combinations;\r\n }\r\n\r\n public static ALL_BY_PIPELINE(pipeline: string) : DemandCommodityChargeType[] {\r\n return _.filter(this.ALL_CHARGETYPES, c => _.includes(c.pipelines, pipeline));\r\n }\r\n\r\n}\r\n\r\n\r\n/**\r\n * Custom class used only by this report's column options\r\n */\r\nexport class ColumnOptions {\r\n public id: string;\r\n public selected: boolean;\r\n public columnName: string;\r\n\r\n constructor(id: string, selected: boolean, columnName: string) {\r\n this.id = id;\r\n this.selected = selected;\r\n this.columnName = columnName;\r\n }\r\n\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {InvoicingResourceService} from \"@shared/resources/invoicing-resource.service\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {Observable} from \"rxjs\";\r\nimport {map} from \"rxjs/operators\";\r\nimport * as _ from \"lodash\";\r\nimport {ColumnOptions} from \"app/gcts/invoicing/demand-commodity-details-report/demand-commodity-details-report.model\";\r\nimport {HttpResponse} from \"@angular/common/http\";\r\n\r\nexport class CustomerForCharge {\r\n id: number;\r\n\r\n public static create(id: number): CustomerForCharge {\r\n const customer: CustomerForCharge = new CustomerForCharge();\r\n customer.id = id;\r\n\r\n return customer;\r\n }\r\n}\r\n\r\nexport class InvoiceRecipientForCharge {\r\n id: number;\r\n\r\n public static create(id: number): InvoiceRecipientForCharge {\r\n const invoiceRecipientForCharge: InvoiceRecipientForCharge = new InvoiceRecipientForCharge();\r\n invoiceRecipientForCharge.id = id;\r\n\r\n return invoiceRecipientForCharge;\r\n }\r\n}\r\n\r\nexport class InvoiceGroupForCharge {\r\n id: number;\r\n\r\n public static create(id: number): InvoiceGroupForCharge {\r\n const invoiceGroup: InvoiceGroupForCharge = new InvoiceGroupForCharge();\r\n invoiceGroup.id = id;\r\n\r\n return invoiceGroup;\r\n }\r\n}\r\n\r\nexport class QueryInvoiceGroupRequest {\r\n fromGasMonth: GasMonth;\r\n toGasMonth: GasMonth;\r\n customerIds: number[];\r\n invoiceRecipientIds: number[];\r\n\r\n constructor(fromGasMonth: GasMonth, toGasMonth: GasMonth, customerIds: number[], invoiceRecipientIds: number[]) {\r\n this.fromGasMonth = fromGasMonth;\r\n this.toGasMonth = toGasMonth;\r\n this.customerIds = customerIds;\r\n this.invoiceRecipientIds = invoiceRecipientIds;\r\n }\r\n}\r\n\r\nexport class ExportDemandAndCommodityCsvRequest {\r\n\r\n public columnOptions: ColumnOptions[];\r\n\r\n public chargeClasses?: string[];\r\n public chargeTypes?: string[];\r\n public customerIds?: number[];\r\n public deliveryLocationIds?: number[];\r\n public invoiceGroups?: number[];\r\n public invoiceRecipientIds?: number[];\r\n public isExport?: boolean;\r\n public quantityType?: string;\r\n public receiptLocationIds?: number[];\r\n public transportationTypes?: string[];\r\n\r\n public fromBillingGasMonth: GasMonth;\r\n public isPpa?: boolean;\r\n public isShiftsOnly: boolean;\r\n public toBillingGasMonth: GasMonth;\r\n}\r\n\r\n@Injectable()\r\nexport class InvoicingChargesService {\r\n\r\n constructor(private invoicingResource: InvoicingResourceService) { }\r\n\r\n public getCustomersForCharges(fromGasMonth: GasMonth, toGasMonth: GasMonth): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setGasMonth(fromGasMonth,'fromBillingMonth');\r\n params.setGasMonth(toGasMonth,'toBillingMonth');\r\n\r\n return this.invoicingResource.get('/charges/customers', true, params)\r\n .pipe(\r\n map(ids => _.map(ids, id => CustomerForCharge.create(id)))\r\n );\r\n }\r\n\r\n public getInvoiceRecipientsForCharges(fromGasMonth: GasMonth, toGasMonth: GasMonth): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setGasMonth(fromGasMonth,'fromBillingMonth');\r\n params.setGasMonth(toGasMonth,'toBillingMonth');\r\n\r\n return this.invoicingResource.get('/charges/invoicerecipients', true, params)\r\n .pipe(\r\n map(ids => _.map(ids, id => InvoiceRecipientForCharge.create(id)))\r\n );\r\n }\r\n\r\n public getInvoiceGroups(request: QueryInvoiceGroupRequest): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setGasMonth(request.fromGasMonth,'fromBillingMonth');\r\n params.setGasMonth(request.toGasMonth,'toBillingMonth');\r\n params.setOptionalListOfNumbers('customerIds', request.customerIds);\r\n params.setOptionalListOfNumbers('invoiceRecipientIds', request.invoiceRecipientIds);\r\n\r\n return this.invoicingResource.get('/charges/invoicegroups', true, params)\r\n .pipe(\r\n map(ids => _.map(ids, id => InvoiceGroupForCharge.create(id)))\r\n );\r\n }\r\n\r\n public exportDemandCommodityCsvFile(request: ExportDemandAndCommodityCsvRequest): Observable {\r\n\r\n const fields = request.columnOptions.reduce((options, option) => ({ ...options, [option.id]: option.selected}), {});\r\n\r\n const filters = {\r\n chargeClass: _.isNil(request.chargeClasses)? [] : request.chargeClasses,\r\n chargeType: _.isNil(request.chargeTypes)? [] : request.chargeTypes,\r\n customerId: _.isNil(request.customerIds)? [] : request.customerIds,\r\n deliveryLocationId: _.isNil(request.deliveryLocationIds)? [] : request.deliveryLocationIds,\r\n invoiceGroup: _.isNil(request.invoiceGroups)? [] : request.invoiceGroups,\r\n invoiceRecipientId: _.isNil(request.invoiceRecipientIds)? [] : request.invoiceRecipientIds,\r\n isExport: request.isExport,\r\n quantityType: request.quantityType,\r\n receiptLocationId: _.isNil(request.receiptLocationIds)? [] : request.receiptLocationIds,\r\n shiftsOnly: request.isShiftsOnly,\r\n transportationType: _.isNil(request.transportationTypes)? [] : request.transportationTypes\r\n };\r\n\r\n const body = {\r\n fields: fields,\r\n filters: filters,\r\n fromBillingMonth: request.fromBillingGasMonth.toString(),\r\n isPpa: request.isPpa,\r\n shiftsOnly: false,\r\n toBillingMonth: request.toBillingGasMonth.toString(),\r\n };\r\n\r\n return this.invoicingResource.post('/classofservicereport/details', body);\r\n }\r\n\r\n\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Filters
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n Columns
\r\n \r\n {{ option.columnName }}
\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n","import {Component} from \"@angular/core\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {forkJoin, Observable, of} from \"rxjs\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {ChargeClass, ColumnOptions, DemandCommodityChargeType, DemandCommodityDetailsReportModel, DemandCommodityDetailsReportSearchParams} from \"app/gcts/invoicing/demand-commodity-details-report/demand-commodity-details-report.model\";\r\nimport {concatMap, tap} from \"rxjs/operators\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport * as _ from \"lodash\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {InvoicingManualChangeService, ManualChargeDefinition} from \"@shared/services/invoicing/invoicing-manual-charge/invoicing-manual-change.service\";\r\nimport {CustomerForCharge, ExportDemandAndCommodityCsvRequest, InvoiceGroupForCharge, InvoiceRecipientForCharge, InvoicingChargesService, QueryInvoiceGroupRequest} from \"@shared/services/invoicing/invoicing-charges/invoicing-charges.service\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {AccountingLocation} from \"@shared/interfaces/location\";\r\nimport {LocationService} from \"@shared/services/common-data/location/location.service\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\n\r\n@Component({\r\n selector: 'app-demand-commodity-details-report',\r\n templateUrl: './demand-commodity-details-report.component.html',\r\n styleUrls: ['./demand-commodity-details-report.component.css']\r\n})\r\n\r\nexport class DemandCommodityDetailsReportComponent extends BaseSearchComponent{\r\n private readonly pipeline = this.sessionService.getPipeline().code;\r\n public model: DemandCommodityDetailsReportModel = new DemandCommodityDetailsReportModel();\r\n\r\n constructor(protected appService: AppService,\r\n protected activatedRoute: ActivatedRoute,\r\n protected router: Router,\r\n protected alertService: AlertService,\r\n private commonDataBillingMonthService: CommonDataBillingMonthService,\r\n private sessionService: SessionService,\r\n private invoicingManualChangeService: InvoicingManualChangeService,\r\n private invoicingChargesService: InvoicingChargesService,\r\n private enterpriseEnrichmentService: EnterpriseEnrichmentService,\r\n private commonDataEnterpriseService: EnterpriseService,\r\n private locationService: LocationService,\r\n private fileService: FileService) {\r\n super('Demand and Commodity Details', appService, activatedRoute, router, alertService);\r\n\r\n enterpriseEnrichmentService.setEnrichmentResource(commonDataEnterpriseService);\r\n }\r\n\r\n /**\r\n * Public\r\n */\r\n\r\n // Filters both Charge Class and Charge Type drop-downs by selected transaction types\r\n public onTransactionTypeChanged(): void {\r\n this.model.chargeClasses = this.filterChargeClasses();\r\n this.model.chargeTypes = this.filterChargeTypes(this.model.searchParams.transactionTypes, []);\r\n // reset selected charge classes and charge types upon transaction type change\r\n this.model.searchParams.chargeClasses = [];\r\n this.model.searchParams.chargeTypes = [];\r\n }\r\n\r\n public onChargedClassChanged(): void {\r\n const selectedTransactionTypes = _.isNil(this.model.searchParams.transactionTypes) ? [] : this.model.searchParams.transactionTypes;\r\n this.model.chargeTypes = this.filterChargeTypes(selectedTransactionTypes, this.model.searchParams.chargeClasses);\r\n // reset selected charge types upon charged class change\r\n this.model.searchParams.chargeTypes = [];\r\n }\r\n\r\n public onFromGasMonthChanged(): void {\r\n if (_.isNil(this.model.searchParams.fromGasMonth) || _.isNil(this.model.searchParams.toGasMonth)) {\r\n this.model.searchParams.toGasMonth = undefined;\r\n return;\r\n }\r\n\r\n if (!this.model.searchParams.toGasMonth.isEqual(this.model.searchParams.fromGasMonth)) {\r\n this.model.searchParams.toGasMonth = this.model.searchParams.fromGasMonth;\r\n }\r\n\r\n this.model.minToGasMonth = this.model.searchParams.fromGasMonth;\r\n this.onFromToGasMonthChanged();\r\n }\r\n\r\n public onToGasMonthChanged(): void {\r\n this.onFromToGasMonthChanged();\r\n }\r\n\r\n public onCustomersChanged(): void {\r\n const invoiceGroupRequest = new QueryInvoiceGroupRequest(\r\n this.model.searchParams.fromGasMonth, this.model.searchParams.toGasMonth, this.model.searchParams.customerIds, this.model.searchParams.invoiceRecipientIds);\r\n this.queryInvoiceGroups(invoiceGroupRequest)\r\n .subscribe(() => {});\r\n }\r\n\r\n public selectAllClicked(): void {\r\n this.model.selectAll = !this.model.selectAll;\r\n\r\n for(const option of this.model.columnOptions) {\r\n option.selected = this.model.selectAll;\r\n }\r\n }\r\n\r\n public unselectAll(): void {\r\n this.model.selectAll = false;\r\n }\r\n\r\n public exportClicked(): void {\r\n this.alertService.clearMessages();\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n\r\n const request = this.buildExportDemandAndCommodityCsvRequest();\r\n\r\n this.invoicingChargesService.exportDemandCommodityCsvFile(request)\r\n .subscribe(results => {\r\n // Need to strip out the keys when passing array to fileService's parseArrayToCsv\r\n const values = [];\r\n results.forEach( r => {\r\n const rowValue = Object.keys(r).map(key => r[key]);\r\n values.push(rowValue);\r\n });\r\n\r\n this.fileService.parseArrayToCsv(\r\n `Demand and Commodity Details ${request.fromBillingGasMonth.toString()} to ${request.toBillingGasMonth.toString()}.csv`, values);\r\n });\r\n }\r\n\r\n\r\n /**\r\n * Protected\r\n */\r\n protected loadInitialResources(): Observable {\r\n const getOldestBillingMonth$ = this.commonDataBillingMonthService.getOldest()\r\n .pipe(\r\n tap(oldestBillingMonth => this.model.oldestBillingMonth = oldestBillingMonth)\r\n );\r\n\r\n const getOpenBillingMonth$ = this.commonDataBillingMonthService.getOpen()\r\n .pipe(\r\n tap(openBillingMonth => this.model.openBillingMonth = openBillingMonth)\r\n );\r\n\r\n const getPreliminaryBillingMonth$ = this.commonDataBillingMonthService.getPreliminary()\r\n .pipe(\r\n tap(preliminaryBillingMonth => this.model.preliminaryBillingMonth = preliminaryBillingMonth)\r\n );\r\n\r\n const queryManualAdjustment$ = this.invoicingManualChangeService.queryManualChargeDefinitions()\r\n .pipe(\r\n tap(manualCharges => this.model.manualChargeDefinitions = manualCharges)\r\n );\r\n\r\n return forkJoin([getOldestBillingMonth$, getOpenBillingMonth$, getPreliminaryBillingMonth$, queryManualAdjustment$])\r\n .pipe(\r\n tap(() => {\r\n this.model.minFromGasMonth = this.model.oldestBillingMonth.gasMonth;\r\n this.model.minToGasMonth = this.model.openBillingMonth.gasMonth;\r\n this.model.maxGasMonth = this.model.preliminaryBillingMonth\r\n ? this.model.preliminaryBillingMonth.gasMonth\r\n : this.model.openBillingMonth.gasMonth;\r\n })\r\n );\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return false;\r\n }\r\n\r\n // All taken care of by onChanged\r\n protected loadSearchResources(): Observable {\r\n return of({});\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams = new DemandCommodityDetailsReportSearchParams();\r\n this.model.searchParams.fromGasMonth = this.model.openBillingMonth.gasMonth;\r\n this.model.searchParams.toGasMonth = this.model.openBillingMonth.gasMonth;\r\n this.model.searchParams.isPpa = null;\r\n\r\n this.model.searchParams.quantityType = null;\r\n this.model.searchParams.transactionTypes = null;\r\n\r\n this.model.searchParams.chargeClasses = null;\r\n this.model.chargeClasses = ChargeClass.ALL;\r\n\r\n this.model.searchParams.chargeTypes = null;\r\n this.model.chargeTypes = this.getAllChargeTypes();\r\n\r\n this.model.searchParams.customerIds = null;\r\n this.model.searchParams.invoiceRecipientIds = null;\r\n this.model.searchParams.invoiceGroupIds = null;\r\n this.model.searchParams.receiptLocationIds = null;\r\n this.model.searchParams.deliveryLocationIds = null;\r\n this.model.searchParams.isExport = null;\r\n this.model.searchParams.isShiftsOnly = false;\r\n\r\n this.model.columnOptions = this.getAllColumnOptions();\r\n this.model.selectAll = false;\r\n\r\n this.model.lastSearchParams = null;\r\n }\r\n\r\n protected performSearch(): Observable {\r\n return of({});\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n }\r\n\r\n\r\n /**\r\n * Private methods\r\n *\r\n */\r\n private onFromToGasMonthChanged(): void {\r\n this.alertService.clearMessages();\r\n\r\n const queryAccountLocations$ = this.queryAccountLocations();\r\n\r\n if (_.isNil(this.model.searchParams.fromGasMonth) || _.isNil(this.model.searchParams.toGasMonth)) {\r\n forkJoin([queryAccountLocations$])\r\n .subscribe(() => {\r\n });\r\n return;\r\n }\r\n\r\n const getCustomerForCharges$ = this.getCustomerForCharges(this.model.searchParams.fromGasMonth, this.model.searchParams.toGasMonth);\r\n const queryInvoiceRecipients$ = this.queryInvoiceRecipients(this.model.searchParams.fromGasMonth, this.model.searchParams.toGasMonth);\r\n\r\n const invoiceGroupRequest = new QueryInvoiceGroupRequest(this.model.searchParams.fromGasMonth, this.model.searchParams.toGasMonth, null, null);\r\n const queryInvoiceGroups$ = this.queryInvoiceGroups(invoiceGroupRequest);\r\n\r\n forkJoin([getCustomerForCharges$, queryInvoiceRecipients$, queryInvoiceGroups$, queryAccountLocations$])\r\n .subscribe(() => {\r\n });\r\n }\r\n\r\n private getCustomerForCharges(fromGasMonth: GasMonth, toGasMonth: GasMonth): Observable {\r\n this.alertService.clearMessages();\r\n\r\n return this.invoicingChargesService.getCustomersForCharges(fromGasMonth, toGasMonth)\r\n .pipe(\r\n concatMap(customers => this.enterpriseEnrichmentService.enrichArray(customers, 'id')),\r\n tap(customers => this.model.customers = _.sortBy(customers, c => c['displayName']))\r\n );\r\n }\r\n\r\n private queryInvoiceRecipients(fromGasMonth: GasMonth, toGasMonth: GasMonth): Observable {\r\n this.alertService.clearMessages();\r\n\r\n return this.invoicingChargesService.getInvoiceRecipientsForCharges(fromGasMonth, toGasMonth)\r\n .pipe(\r\n concatMap(customers => this.enterpriseEnrichmentService.enrichArray(customers, 'id')),\r\n tap(customers => this.model.invoiceRecipients = _.sortBy(customers, c => c['displayName']))\r\n );\r\n }\r\n\r\n private queryInvoiceGroups(request: QueryInvoiceGroupRequest): Observable {\r\n this.alertService.clearMessages();\r\n\r\n return this.invoicingChargesService.getInvoiceGroups(request)\r\n .pipe(\r\n tap(invoiceGroups => {\r\n if (_.isEmpty(invoiceGroups)) {\r\n this.alertService.clearMessages();\r\n this.alertService.addWarnMessage(\"Warning\",\"There are no Invoice Groups for the filters provided. Please adjust your filters.\");\r\n }\r\n this.model.invoiceGroups = _.sortBy(invoiceGroups, ig => ig.id);\r\n })\r\n );\r\n }\r\n\r\n private queryAccountLocations(): Observable {\r\n return this.locationService.queryAccountLocations().pipe(\r\n tap(locations =>{\r\n this.model.receiptLocations = this.model.deliveryLocations = locations;\r\n })\r\n );\r\n }\r\n\r\n private getAllChargeTypes(): DemandCommodityChargeType[] {\r\n const manualChargeTypes = this.convertManualChargeDefToChargeTypes(this.model.manualChargeDefinitions);\r\n const chargesByPipeline = DemandCommodityChargeType.ALL_BY_PIPELINE(this.pipeline);\r\n return _.sortBy(_.concat(manualChargeTypes, chargesByPipeline), c => c.value);\r\n }\r\n\r\n private convertManualChargeDefToChargeTypes(manualChargeDefinitions: ManualChargeDefinition[]): DemandCommodityChargeType[] {\r\n const manualChargeTypes: DemandCommodityChargeType[] = [];\r\n\r\n _.each(manualChargeDefinitions, m => {\r\n if (m.manualChargeType === 'Nom Group') {\r\n if (m.positionOnInvoice === ChargeClass.NON_TRANSPORTATION) {\r\n manualChargeTypes.push(\r\n new DemandCommodityChargeType(m.adjustmentType, m.description, ['ML', 'GLC'], [ChargeClass.MANUAL_ADJUSTMENTS_NON_TRANSPORT]));\r\n }\r\n else if (m.positionOnInvoice === ChargeClass.TRANSPORTATION) {\r\n manualChargeTypes.push(\r\n new DemandCommodityChargeType(m.adjustmentType, m.description, ['ML', 'GLC'], [ChargeClass.MANUAL_ADJUSTMENTS_TRANSPORT]));\r\n }\r\n } else if (m.manualChargeType === 'Customer') {\r\n manualChargeTypes.push(\r\n new DemandCommodityChargeType(m.adjustmentType, m.description, ['ML', 'GLC'], [ChargeClass.ADMIN]));\r\n }\r\n });\r\n\r\n return manualChargeTypes;\r\n }\r\n\r\n private filterChargeClasses(): ChargeClass[] {\r\n const allChargeClasses = ChargeClass.ALL;\r\n\r\n if (_.isEmpty(this.model.searchParams.transactionTypes)) {\r\n return allChargeClasses;\r\n }\r\n\r\n let newChargeClasses: ChargeClass[] = [];\r\n this.model.searchParams.transactionTypes.forEach(t => {\r\n const filteredClasses = _.filter(allChargeClasses, c => c.transactionTypes.includes(t));\r\n newChargeClasses = _.concat(newChargeClasses, filteredClasses);\r\n });\r\n\r\n return _.sortBy(_.uniqBy(newChargeClasses, n => n.display), x => x.display);\r\n }\r\n\r\n private filterChargeTypes(transactionTypes: string[], classCharges: string[]): DemandCommodityChargeType[] {\r\n const allChargeTypes = this.getAllChargeTypes();\r\n\r\n if (_.isEmpty(transactionTypes) && _.isEmpty(classCharges)) {return allChargeTypes;} // maybe don't need\r\n\r\n // Filter on selected transaction types\r\n let newChargeTypes: DemandCommodityChargeType[] = [];\r\n\r\n if (_.isNil(transactionTypes) || _.isEmpty(transactionTypes)) {\r\n // passing down all charge types so it can be used for filtering on class charges\r\n newChargeTypes = allChargeTypes;\r\n } else {\r\n transactionTypes.forEach(t => {\r\n const filteredChargeTypes = _.filter(allChargeTypes, ct => this.chargeTypeContainsTransactionType(ct, t) );\r\n newChargeTypes = _.concat(newChargeTypes, filteredChargeTypes);\r\n });\r\n }\r\n\r\n if (_.isNil(classCharges) || _.isEmpty(classCharges)) {return _.sortBy( _.uniqBy(newChargeTypes,n => n.value), x => x.value);}\r\n\r\n // Filter on selected class charges\r\n const filteredChargeTypesByTxnType = _.uniqBy(newChargeTypes, n => n.value);\r\n\r\n newChargeTypes = [];\r\n classCharges.forEach( c => {\r\n const filteredChargeTypes = _.filter(filteredChargeTypesByTxnType, ct => this.chargeTypeContainsChargeClassAndTransactionType(ct, c, transactionTypes));\r\n newChargeTypes = _.concat(newChargeTypes, filteredChargeTypes);\r\n });\r\n\r\n return _.sortBy( _.uniqBy(newChargeTypes,n => n.value), x => x.value);\r\n }\r\n\r\n private chargeTypeContainsChargeClassAndTransactionType(chargeType: DemandCommodityChargeType, chargeClass: string, transactionTypes: string[]): boolean {\r\n const chargeClasses = chargeType.combinations;\r\n const result = _.some(chargeClasses, cc => cc.display === chargeClass && (_.isEmpty(transactionTypes) || _.includes(transactionTypes, cc.transactionType)) );\r\n return result;\r\n }\r\n\r\n private chargeTypeContainsTransactionType(chargeType: DemandCommodityChargeType, transactionType: string): boolean {\r\n const chargeClasses = chargeType.combinations;\r\n return _.some(chargeClasses, c => c.containsTransactionType(transactionType));\r\n }\r\n\r\n private buildExportDemandAndCommodityCsvRequest() : ExportDemandAndCommodityCsvRequest {\r\n const request = new ExportDemandAndCommodityCsvRequest();\r\n request.columnOptions = this.model.columnOptions;\r\n request.chargeClasses = this.model.searchParams.chargeClasses;\r\n\r\n request.customerIds = this.model.searchParams.customerIds;\r\n request.deliveryLocationIds = this.model.searchParams.deliveryLocationIds;\r\n request.invoiceGroups = this.model.searchParams.invoiceGroupIds;\r\n request.invoiceRecipientIds = this.model.searchParams.invoiceRecipientIds;\r\n request.isExport = this.model.searchParams.isExport;\r\n request.quantityType = this.model.searchParams.quantityType;\r\n request.receiptLocationIds = this.model.searchParams.receiptLocationIds;\r\n request.transportationTypes = this.model.searchParams.transactionTypes;\r\n request.fromBillingGasMonth = this.model.searchParams.fromGasMonth;\r\n request.toBillingGasMonth = this.model.searchParams.toGasMonth;\r\n request.isPpa = this.model.searchParams.isPpa;\r\n request.isShiftsOnly = this.model.searchParams.isShiftsOnly;\r\n\r\n // Need to rebuild the list of charge types to 'id' because the multi-select doesn't support non-unique values\r\n // 'value', which is unique, has to be used for the multi-select instead\r\n const allChargeTypes = this.getAllChargeTypes();\r\n const results: string[] = [];\r\n\r\n _.forEach(this.model.searchParams.chargeTypes, ct => {\r\n const result = _.find(allChargeTypes, ['value', ct]);\r\n results.push(result.id);\r\n });\r\n request.chargeTypes = results;\r\n\r\n return request;\r\n }\r\n\r\n private getAllColumnOptions() {\r\n const BILLING_MONTH = new ColumnOptions('BillingMonth', true, 'Billing Month');\r\n const AFFECTED_BILLING_MONTH = new ColumnOptions('AffectedBillingMonth', true, 'Affected Billing Month');\r\n const INVOICE_GROUP = new ColumnOptions('InvoiceGroup', true, 'Invoice Group');\r\n const NOM_GROUP = new ColumnOptions('NomGroup', true, 'Nom Group');\r\n const CUSTOMER_MNEMONIC = new ColumnOptions('CustomerMnemonic', true, 'Customer Mnemonic');\r\n const CUSTOMER_LEGAL_NAME = new ColumnOptions('CustomerLegalName', true, 'Customer Name');\r\n const INVOICE_RECIPIENT_MNEMONIC = new ColumnOptions('InvoiceRecipientMnemonic', false, 'Invoice Recipient Mnemonic');\r\n const INVOICE_RECIPIENT_LEGAL_NAME = new ColumnOptions('InvoiceRecipientLegalName', false, 'Invoice Recipient Name');\r\n const QUANTITY_TYPE = new ColumnOptions('QuantityType', true, 'Quantity Type');\r\n const TRANSPORTATION_TYPE = new ColumnOptions('TransportationType', true, 'Transaction Type');\r\n const CHARGE_CLASS = new ColumnOptions('ChargeClass', true, 'Charge Class');\r\n const CHARGE_TYPE = new ColumnOptions('ChargeType', true, 'Charge Type');\r\n const PRIMARY_RECEIPT_LOCATION = new ColumnOptions('PrimaryReceiptLocation', true, 'Primary Receipt Location');\r\n const PRIMARY_DELIVERY_LOCATION = new ColumnOptions('PrimaryDeliveryLocation', true, 'Primary Delivery Location');\r\n const PRIMARY_PROVINCE = new ColumnOptions('PrimaryProvince', true, 'Primary Province');\r\n const PRIMARY_IS_EXPORT = new ColumnOptions('PrimaryIsExport', true, 'Primary Is Export');\r\n const NOMINATED_RECEIPT_LOCATION = new ColumnOptions('NominatedReceiptLocation', true, 'Nominated Receipt Location');\r\n const NOMINATED_DELIVERY_LOCATION = new ColumnOptions('NominatedDeliveryLocation', true, 'Nominated Delivery Location');\r\n const NOMINATED_PROVINCE = new ColumnOptions('NominatedProvince', true, 'Nominated Province');\r\n const NOMINATED_IS_EXPORT = new ColumnOptions('NominatedIsExport', true, 'Nominated Is Export');\r\n const ALTERNATE_RECEIPT_LOCATION = new ColumnOptions('AlternateReceiptLocation', true, 'Alternate Receipt Location');\r\n const ALTERNATE_DELIVERY_LOCATION = new ColumnOptions('AlternateDeliveryLocation', true, 'Alternate Delivery Location');\r\n const ZERO_TAX_RATED = new ColumnOptions('ZeroTaxRated', true, 'Zero Tax Rated');\r\n const QUANTITY = new ColumnOptions('Quantity', true, 'Quantity');\r\n const TOLL = new ColumnOptions('Toll', true, 'Toll');\r\n const AMOUNT = new ColumnOptions('Amount', true, 'Amount');\r\n const START_GAS_DAY = new ColumnOptions('StartGasDay', true, 'Start Gas Day');\r\n const END_GAS_DAY = new ColumnOptions('EndGasDay', true, 'End Gas Day');\r\n const NUMBER_OF_DAYS = new ColumnOptions('NumberOfDays', true, 'Number Of Days');\r\n const ASSIGNMENT_NOM_GROUP = new ColumnOptions('AssignmentNomGroup', true, 'Assignment Nom Group');\r\n const TAX_RATE = new ColumnOptions('TaxRate', false, 'Tax Rate');\r\n const TAX_QUANTITY = new ColumnOptions('TaxQuantity', false, 'Tax Quantity');\r\n const TOTAL_CHARGE = new ColumnOptions('TotalCharge', false, 'Total Charge');\r\n return [BILLING_MONTH, AFFECTED_BILLING_MONTH, INVOICE_GROUP, NOM_GROUP, CUSTOMER_MNEMONIC, CUSTOMER_LEGAL_NAME, INVOICE_RECIPIENT_MNEMONIC, INVOICE_RECIPIENT_LEGAL_NAME, QUANTITY_TYPE, TRANSPORTATION_TYPE,\r\n CHARGE_CLASS, CHARGE_TYPE, PRIMARY_RECEIPT_LOCATION, PRIMARY_DELIVERY_LOCATION, PRIMARY_PROVINCE, PRIMARY_IS_EXPORT,\r\n NOMINATED_RECEIPT_LOCATION, NOMINATED_DELIVERY_LOCATION, NOMINATED_PROVINCE, NOMINATED_IS_EXPORT, ALTERNATE_RECEIPT_LOCATION,\r\n ALTERNATE_DELIVERY_LOCATION, ZERO_TAX_RATED, QUANTITY, TOLL, AMOUNT, START_GAS_DAY, END_GAS_DAY,\r\n NUMBER_OF_DAYS, ASSIGNMENT_NOM_GROUP, TAX_RATE, TAX_QUANTITY, TOTAL_CHARGE];\r\n }\r\n}\r\n","import {BaseViewModel} from \"@model/base-view-model\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {ClassOfService, ClassOfServiceDetail} from \"@shared/services/invoicing/invoicing-class-of-service-report/invoicing-class-of-service-report.service\";\r\nimport * as _ from 'lodash';\r\n\r\n\r\n\r\nexport class ClassOfServiceReportModel extends BaseViewModel {\r\n oldestBillingMonth: BillingMonth;\r\n openBillingMonth: BillingMonth;\r\n preliminaryBillingMonth: BillingMonth;\r\n newestBillingMonth: BillingMonth;\r\n endBillingMonthMinMonth: GasMonth;\r\n\r\n public expandAll: boolean = false;\r\n\r\n searchParams: ClassOfServiceReportSearchParams = new ClassOfServiceReportSearchParams();\r\n lastSearchParams: ClassOfServiceReportSearchParams;\r\n timeOfLastSearch:Date;\r\n\r\n searchResults: ClassOfService[];\r\n transportationSearchResults: ClassOfService;\r\n nonTransportationSearchResults: ClassOfService;\r\n totalRevenueSearchResults: ClassOfService;\r\n taxSearchResults: ClassOfService;\r\n administrationSearchResults: ClassOfService;\r\n searchDetails: ClassOfServiceDetail[];\r\n searchResultCount: number;\r\n searchPerformed: boolean = false;\r\n\r\n charges: Charge[];\r\n\r\n public clearSearchResults(): void {\r\n this.searchResults = null;\r\n this.searchPerformed = false;\r\n }\r\n}\r\n\r\nexport class ClassOfServiceReportSearchParams {\r\n startBillingMonth: GasMonth;\r\n endBillingMonth: GasMonth;\r\n endBillingMonthStatus: string;\r\n chargeId: number;\r\n\r\n public getChargeName():string{\r\n if(_.isNil(this.chargeId)){\r\n return 'All';\r\n }else if(this.chargeId===0){\r\n return 'Current Month';\r\n }\r\n return 'PPA';\r\n }\r\n}\r\n\r\nexport class Charge{\r\n id: number;\r\n name: string;\r\n constructor(id: number, name: string) {\r\n this.id = id;\r\n this.name = name;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {Observable, of} from \"rxjs\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {map, tap} from \"rxjs/operators\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport * as _ from \"lodash\";\r\nimport {InvoicingResourceService} from \"@shared/resources/invoicing-resource.service\";\r\n\r\n@Injectable()\r\nexport class InvoicingClassOfServiceReportService {\r\n constructor(private invoicingResource: InvoicingResourceService) { }\r\n\r\n queryInvoicingClassOfServiceReport(searchParams: InvoicingClassOfServiceReportRequest): Observable {\r\n return this.invoicingResource.get('/classofservicereport', true, this.buildUrlSearchParams(searchParams))\r\n .pipe(\r\n map(dtos => dtos.map(dto => ClassOfService.create(dto)))\r\n );\r\n }\r\n\r\n queryInvoicingClassOfServiceReportDetail(searchParams: InvoicingClassOfServiceReportRequest): Observable {\r\n return this.invoicingResource.post('/classofservicereport/details',this.buildUrlPostParams(searchParams), true)\r\n .pipe(\r\n map(dtos => dtos.map(dto => ClassOfServiceDetail.createDetail(dto)))\r\n );\r\n }\r\n\r\n private buildUrlSearchParams(searchParams: InvoicingClassOfServiceReportRequest): GCTSHttpParams {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setGasMonth(searchParams.fromBillingMonth, 'fromBillingMonth');\r\n params.setGasMonth(searchParams.toBillingMonth, 'toBillingMonth');\r\n if(_.isNil(searchParams.isPpa)) {\r\n }else{\r\n params.setBoolean('isPpa', searchParams.isPpa);\r\n }\r\n return params;\r\n }\r\n\r\n private buildUrlPostParams(searchParams: InvoicingClassOfServiceReportRequest): PostParams {\r\n const params: PostParams = new PostParams();\r\n params.fromBillingMonth = searchParams.fromBillingMonth.toDisplayFormat();\r\n params.toBillingMonth = searchParams.toBillingMonth.toDisplayFormat();\r\n if(_.isNil(searchParams.isPpa)) {\r\n params.isPPa=null;\r\n }else if(searchParams.isPpa){\r\n params.isPPa = \"true\";\r\n }else{\r\n params.isPPa=\"false\";\r\n }\r\n return params;\r\n }\r\n}\r\n\r\nexport class PostParams{\r\n fromBillingMonth: string;\r\n toBillingMonth: string;\r\n isPPa: string;\r\n}\r\n\r\nexport class IClassOfServiceDetail{\r\n billingMonth: string;\r\n affectedBillingMonth: string;\r\n invoiceGroup: string;\r\n nomGroup: string;\r\n customerMnemonic: string;\r\n customerLegalName: string;\r\n quantityType: string;\r\n transportationType: string;\r\n chargeClass: string;\r\n chargeType: string;\r\n primaryReceiptLocation: string;\r\n primaryDeliveryLocation: string;\r\n primaryProvince: string;\r\n primaryIsExport: string;\r\n nominatedReceiptLocation: string;\r\n nominatedDeliveryLocation: string;\r\n nominatedProvince: string;\r\n nominatedIsExport: string;\r\n alternateReceiptLocation: string;\r\n alternateDeliveryLocation: string;\r\n zeroTaxRated: string;\r\n quantity: string;\r\n toll: string;\r\n amount: string;\r\n startGasDay: string;\r\n endGasDay: string;\r\n assignmentNomGroup: string;\r\n}\r\n\r\nexport class ClassOfServiceDetail{\r\n billingMonth: GasDay;\r\n affectedBillingMonth: GasDay;\r\n invoiceGroup: number;\r\n nomGroup: string;\r\n customerMnemonic: string;\r\n\r\n customerLegalName: string;\r\n quantityType: string;\r\n transportationType: string;\r\n chargeClass: string;\r\n chargeType: string;\r\n\r\n primaryReceiptLocation: string;\r\n primaryDeliveryLocation: string;\r\n primaryProvince: string;\r\n primaryIsExport: string;\r\n nominatedReceiptLocation: string;\r\n\r\n nominatedDeliveryLocation: string;\r\n nominatedProvince: string;\r\n nominatedIsExport: string;\r\n alternateReceiptLocation: string;\r\n alternateDeliveryLocation: string;\r\n\r\n zeroTaxRated: string;\r\n quantity: number;\r\n toll: number;\r\n amount: number;\r\n startGasDay: GasDay;\r\n\r\n endGasDay: GasDay;\r\n assignmentNomGroup: string;\r\n public static createDetail(dto: any): ClassOfServiceDetail {\r\n\r\n if (GasDay.tryParse(dto.billingMonth, false)){\r\n const classOfServiceDetail = new ClassOfServiceDetail();\r\n classOfServiceDetail.billingMonth = GasDay.parse(dto.billingMonth);\r\n if (GasDay.tryParse(dto.affectedBillingMonth, false)) {\r\n classOfServiceDetail.affectedBillingMonth = GasDay.parse(dto.affectedBillingMonth);\r\n }\r\n classOfServiceDetail.invoiceGroup = dto.invoiceGroup;\r\n classOfServiceDetail.nomGroup = dto.nomGroup;\r\n classOfServiceDetail.customerMnemonic = dto.customerMnemonic;\r\n\r\n classOfServiceDetail.customerLegalName = dto.customerLegalName;\r\n classOfServiceDetail.quantityType = dto.quantityType;\r\n classOfServiceDetail.transportationType = dto.transportationType;\r\n classOfServiceDetail.chargeClass = dto.chargeClass;\r\n classOfServiceDetail.chargeType = dto.chargeType;\r\n\r\n classOfServiceDetail.primaryReceiptLocation = dto.primaryReceiptLocation;\r\n classOfServiceDetail.primaryDeliveryLocation = dto.primaryDeliveryLocation;\r\n classOfServiceDetail.primaryProvince = dto.primaryProvince;\r\n classOfServiceDetail.primaryIsExport = dto.primaryIsExport;\r\n classOfServiceDetail.nominatedReceiptLocation = dto.nominatedReceiptLocation;\r\n\r\n classOfServiceDetail.nominatedDeliveryLocation = dto.nominatedDeliveryLocation;\r\n classOfServiceDetail.nominatedProvince = dto.nominatedProvince;\r\n classOfServiceDetail.nominatedIsExport = dto.nominatedIsExport;\r\n classOfServiceDetail.alternateReceiptLocation = dto.alternateReceiptLocation;\r\n classOfServiceDetail.alternateDeliveryLocation = dto.alternateDeliveryLocation;\r\n\r\n classOfServiceDetail.zeroTaxRated = dto.zeroTaxRated;\r\n classOfServiceDetail.quantity = dto.quantity;\r\n classOfServiceDetail.toll = dto.toll;\r\n classOfServiceDetail.amount = dto.amount;\r\n if(GasDay.tryParse(dto.startGasDay)) {\r\n classOfServiceDetail.startGasDay = GasDay.parse(dto.startGasDay);\r\n }\r\n if(GasDay.tryParse(dto.endGasDay)) {\r\n classOfServiceDetail.endGasDay = GasDay.parse(dto.endGasDay);\r\n }\r\n classOfServiceDetail.assignmentNomGroup = dto.assignmentNomGroup;\r\n return classOfServiceDetail;\r\n }\r\n return;\r\n }\r\n}\r\n\r\nexport class InvoicingClassOfServiceReportRequest {\r\n fromBillingMonth: GasMonth;\r\n toBillingMonth: GasMonth;\r\n isPpa?: boolean;\r\n constructor(fromBillingMonth:GasMonth,toBillingMonth:GasMonth,isPpa?:boolean) {\r\n this.isPpa = isPpa;\r\n this.fromBillingMonth=fromBillingMonth;\r\n this.toBillingMonth=toBillingMonth;\r\n }\r\n}\r\n\r\nexport class IClassOfService{\r\n name: string;\r\n categories: string;\r\n totalDemand: string;\r\n totalCommodity: string;\r\n totalAmount: string;\r\n}\r\n\r\nexport class ClassOfService{\r\n name: string;\r\n categories: Category[];\r\n totalDemandQuantity: number;\r\n totalCommodityQuantity: number;\r\n totalAmount: number;\r\n\r\n public static create(dto: any): ClassOfService {\r\n const classOfService = new ClassOfService();\r\n classOfService.name = dto.name;\r\n // classOfService.categories = dto.categories;\r\n classOfService.totalDemandQuantity = dto.totalDemandQuantity;\r\n classOfService.totalCommodityQuantity = dto.totalCommodityQuantity;\r\n classOfService.totalAmount = dto.totalAmount;\r\n classOfService.categories = _.map(dto.categories, x => Category.createCategory(x));\r\n return classOfService;\r\n }\r\n}\r\n\r\nexport class Category{\r\n name: string;\r\n rows: Row[];\r\n totalDemandQuantity: number;\r\n totalCommodityQuantity: number;\r\n totalAmount: number;\r\n public static createCategory(dto: any): Category {\r\n const category = new Category();\r\n category.name = dto.name;\r\n category.rows = dto.rows;\r\n category.totalDemandQuantity = dto.totalDemandQuantity;\r\n category.totalCommodityQuantity = dto.totalCommodityQuantity;\r\n category.totalAmount = dto.totalAmount;\r\n category.rows = _.map(dto.rows, x => Row.createRow(x));\r\n return category;\r\n }\r\n}\r\n\r\nexport class Row{\r\n amount: number;\r\n commodityQuantity: number;\r\n demandQuantity: number;\r\n name: string;\r\n public static createRow(dto:any):Row{\r\n const row = new Row();\r\n row.name= dto.name;\r\n row.amount = dto.amount;\r\n row.commodityQuantity = dto.commodityQuantity;\r\n row.demandQuantity = dto.demandQuantity;\r\n\r\n return row;\r\n }\r\n}\r\n\r\n\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Start Billing Month: {{model.lastSearchParams?.startBillingMonth | gasMonthFormat}}\r\n End Billing Month: {{model.lastSearchParams?.startBillingMonth | gasMonthFormat}}\r\n Charges: {{model.lastSearchParams.getChargeName()}}\r\n \r\n
\r\n\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.startBillingMonth}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{this.model.lastSearchParams.endBillingMonthStatus | titlecase}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.endBillingMonth}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{this.model.lastSearchParams.getChargeName()}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\r\n
\r\n
\r\n As of: {{model.timeOfLastSearch | dateFormat:'YYYY-MMM-DD H:mm:ss'}}\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 0\">\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n 0\">\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n 0\">\r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n 0\">\r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
Class Of ServiceDemand (GJ)Commodity (GJ)Amount ($)
{{model.transportationSearchResults.name}}
{{ category.name }}
{{ row.name }}{{ row.demandQuantity | number }}{{ row.commodityQuantity | number }}{{ row.amount | number:\"1.2-2\" }}
Total {{ category.name }}{{ category.totalDemandQuantity | number }}{{ category.totalCommodityQuantity | number }}{{ category.totalAmount | number: \"1.2-2\" }}
Total {{model.transportationSearchResults.name}} {{model.transportationSearchResults.totalDemandQuantity | number }}{{model.transportationSearchResults.totalCommodityQuantity | number }}{{model.transportationSearchResults.totalAmount | number: \"1.2-2\" }}
{{model.nonTransportationSearchResults.name}}
{{ category.name }}
{{ row.name }}{{ row.demandQuantity | number }}{{ row.commodityQuantity | number }}{{ row.amount | number: \"1.2-2\" }}
Total {{ category.name }}{{ category.totalDemandQuantity | number }}{{ category.totalCommodityQuantity | number }}{{ category.totalAmount | number: \"1.2-2\" }}
Total {{model.nonTransportationSearchResults.name}} {{model.nonTransportationSearchResults.totalDemandQuantity | number }}{{model.nonTransportationSearchResults.totalCommodityQuantity | number }}{{model.nonTransportationSearchResults.totalAmount | number: \"1.2-2\" }}
Total {{model.totalRevenueSearchResults.name}} {{model.totalRevenueSearchResults.totalDemandQuantity | number }}{{model.totalRevenueSearchResults.totalCommodityQuantity | number }}{{model.totalRevenueSearchResults.totalAmount | number: \"1.2-2\" }}
{{model.taxSearchResults.name}}
{{ row.name }}{{ row.demandQuantity | number }}{{ row.commodityQuantity | number }}{{ row.amount | number: \"1.2-2\" }}
Total {{model.taxSearchResults.name}} {{model.taxSearchResults.totalDemandQuantity | number }}{{model.taxSearchResults.totalCommodityQuantity | number }}{{model.taxSearchResults.totalAmount | number: \"1.2-2\" }}
{{model.administrationSearchResults.name}}
{{ row.name }}{{ row.demandQuantity | number }}{{ row.commodityQuantity | number }}{{ row.amount | number: \"1.2-2\" }}
Total {{model.administrationSearchResults.name}} {{model.administrationSearchResults.totalDemandQuantity | number }}{{model.administrationSearchResults.totalCommodityQuantity | number }}{{model.administrationSearchResults.totalAmount | number: \"1.2-2\" }}
\r\n
\r\n
\r\n\r\n\r\n\r\n
\r\n
\r\n","import {Component} from \"@angular/core\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport * as _ from 'lodash';\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {forkJoin, Observable, of} from \"rxjs\";\r\nimport {Charge, ClassOfServiceReportModel} from \"app/gcts/invoicing/class-of-service-report/class-of-service-report.model\";\r\nimport {tap} from \"rxjs/operators\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {ClassOfService, ClassOfServiceDetail, InvoicingClassOfServiceReportRequest, InvoicingClassOfServiceReportService} from \"@shared/services/invoicing/invoicing-class-of-service-report/invoicing-class-of-service-report.service\";\r\nimport {CommonDataGasdayService, ServerTimeData} from \"@shared/services/common-data/common-data-gasday/common-data-gasday.service\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {InvoicingInvoiceBillingProcessService} from \"@shared/services/invoicing/invoicing-invoice-billing-process/invoicing-invoice-billing-process.service\";\r\n\r\n\r\n@Component({\r\n selector: 'app-class-of-service-report',\r\n templateUrl: './class-of-service-report.component.html',\r\n styleUrls: ['./class-of-service-report.component.css']\r\n})\r\nexport class ClassOfServiceReportComponent extends BaseSearchComponent {\r\n\r\n model: ClassOfServiceReportModel = new ClassOfServiceReportModel();\r\n\r\n constructor(\r\n protected appService: AppService,\r\n activatedRoute: ActivatedRoute,\r\n router: Router,\r\n protected alertService: AlertService,\r\n protected commonDataBillingMonthService: CommonDataBillingMonthService,\r\n protected invoicingClassOfServiceReportService: InvoicingClassOfServiceReportService,\r\n protected commonDataGasDayService: CommonDataGasdayService,\r\n protected fileService: FileService,\r\n protected invoicingInvoiceBillingProcessService: InvoicingInvoiceBillingProcessService,\r\n ) {\r\n super('Class of Service Report', appService, activatedRoute, router, alertService);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {};\r\n params['startBillingMonth'] = this.model.searchParams.startBillingMonth;\r\n params['endBillingMonth'] = this.model.searchParams.endBillingMonth;\r\n return params;\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return this.paramValidator().isValid(params);\r\n }\r\n\r\n public onStartBillingMonthChanged() : void{\r\n if(!_.isNil(this.model.searchParams.startBillingMonth) && this.model.searchParams.startBillingMonth.isGreaterThan(this.model.searchParams.endBillingMonth)){\r\n this.model.searchParams.endBillingMonth = this.model.searchParams.startBillingMonth;\r\n }\r\n this.model.searchParams.endBillingMonth = this.model.searchParams.startBillingMonth;\r\n this.model.endBillingMonthMinMonth = this.model.searchParams.startBillingMonth;\r\n\r\n }\r\n\r\n public setEndBillingMonthStatus() : Observable{\r\n return this.invoicingInvoiceBillingProcessService.get(this.model.searchParams.endBillingMonth)\r\n .pipe(\r\n tap(endBillingMonth => {\r\n if(endBillingMonth.status==='Final') {\r\n this.model.searchParams.endBillingMonthStatus = endBillingMonth.status;\r\n }else{\r\n this.model.searchParams.endBillingMonthStatus = 'Preliminary';\r\n }\r\n })\r\n );\r\n // return this.commonDataBillingMonthService.get(this.model.searchParams.endBillingMonth)\r\n // .pipe(\r\n // tap(endBillingMonth => this.model.searchParams.endBillingMonthStatus = endBillingMonth.status.value)\r\n // );\r\n }\r\n\r\n public setNewestBillingMonth():void{\r\n if(_.isNil(this.model.preliminaryBillingMonth)){\r\n this.model.newestBillingMonth= this.model.openBillingMonth;\r\n }else{\r\n this.model.newestBillingMonth= this.model.preliminaryBillingMonth;\r\n }\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n this.model.charges = [new Charge(0,\"Current Month\"),new Charge(1,\"PPA\")];\r\n\r\n const getOldestBillingMonth$ = this.commonDataBillingMonthService.getOldest()\r\n .pipe(\r\n tap(oldestBillingMonth => this.model.oldestBillingMonth = oldestBillingMonth)\r\n );\r\n\r\n const getOpenBillingMonth$ = this.commonDataBillingMonthService.getOpen()\r\n .pipe(\r\n tap(openBillingMonth => {\r\n this.model.openBillingMonth = openBillingMonth;\r\n this.model.searchParams.startBillingMonth = openBillingMonth.gasMonth;\r\n this.model.searchParams.endBillingMonth = openBillingMonth.gasMonth;\r\n this.setNewestBillingMonth();\r\n })\r\n );\r\n\r\n const getPreliminaryBillingMonth$ = this.commonDataBillingMonthService.getPreliminary()\r\n .pipe(\r\n tap(preliminaryBillingMonth => {\r\n this.model.preliminaryBillingMonth = preliminaryBillingMonth;\r\n this.setNewestBillingMonth();\r\n })\r\n );\r\n return forkJoin([getOldestBillingMonth$, getOpenBillingMonth$, getPreliminaryBillingMonth$]);\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n // const s = this.model.charges;\r\n // return of(null);\r\n return this.setEndBillingMonthStatus();\r\n }\r\n\r\n private queryServerTimeData(): Observable {\r\n return this.commonDataGasDayService.getServerTimeData()\r\n .pipe(\r\n tap(serverTimes => this.model.timeOfLastSearch = serverTimes.serverTime.toDate())\r\n );\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n this.model.searchPerformed = true;\r\n this.model.searchResults = null; // Reset Data Grid\r\n const queryClassOfServiceReport$ = this.queryClassOfServiceReport();\r\n const queryServerTimeData$ = this.queryServerTimeData();\r\n\r\n return forkJoin([queryClassOfServiceReport$,queryServerTimeData$]);\r\n\r\n }\r\n\r\n private queryClassOfServiceReport(): Observable {\r\n let isPpa = null;\r\n if(this.model.searchParams.chargeId===1)\r\n isPpa=true;\r\n if(this.model.searchParams.chargeId===0)\r\n isPpa=false;\r\n return this.invoicingClassOfServiceReportService.queryInvoicingClassOfServiceReport(\r\n new InvoicingClassOfServiceReportRequest(\r\n this.model.lastSearchParams.startBillingMonth,\r\n this.model.lastSearchParams.endBillingMonth,isPpa)\r\n )\r\n .pipe(\r\n tap(classesOfService => {\r\n this.model.searchResultCount =0;\r\n this.model.searchResults = classesOfService;\r\n this.model.transportationSearchResults = _.find(classesOfService, x => x.name === 'Transportation Services');\r\n this.model.nonTransportationSearchResults = _.find(classesOfService, x => x.name === 'Non-Transportation Services');\r\n this.model.totalRevenueSearchResults = _.find(classesOfService, x => x.name === 'Revenue');\r\n this.model.taxSearchResults = _.find(classesOfService, x => x.name === 'Taxes');\r\n this.model.administrationSearchResults = _.find(classesOfService, x => x.name === 'Administration Items');\r\n\r\n // _.forEach(this.model.searchResults, searchResult => {\r\n // _.forEach(searchResult.categories, category => {\r\n // _.forEach(category.rows, row => {\r\n // this.model.searchResultCount = this.model.searchResultCount +1;\r\n // });\r\n // });\r\n // });\r\n // if(this.model.searchResultCount===0){\r\n // this.model.searchResults=null;\r\n // }\r\n })\r\n );\r\n }\r\n\r\n private queryClassOfServiceDetailReport(): Observable {\r\n let isPpa = null;\r\n if(this.model.searchParams.chargeId===1)\r\n isPpa=true;\r\n if(this.model.searchParams.chargeId===0)\r\n isPpa=false;\r\n return this.invoicingClassOfServiceReportService.queryInvoicingClassOfServiceReportDetail(\r\n new InvoicingClassOfServiceReportRequest(\r\n this.model.lastSearchParams.startBillingMonth,\r\n this.model.lastSearchParams.endBillingMonth,isPpa)\r\n )\r\n .pipe(\r\n tap(classesOfServiceDetail => {\r\n this.model.searchDetails = classesOfServiceDetail;\r\n this.generateAndExportDetailReport();\r\n })\r\n );\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n // this.model.searchParams = new ClassOfServiceReportSearchParams();\r\n this.model.searchParams.startBillingMonth = this.model.openBillingMonth.gasMonth;\r\n this.model.searchParams.endBillingMonth = this.model.openBillingMonth.gasMonth;\r\n this.model.searchParams.chargeId = null;\r\n this.model.clearSearchResults();\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n // this.model.searchParams = new ClassOfServiceReportSearchParams();\r\n // this.model.searchParams.startBillingMonth = typedParams.asGasMonth('startBillingMonth');\r\n // this.model.searchParams.endBillingMonth = typedParams.asGasMonth('endBillingMonth');\r\n // this.model.searchParams.chargeId = typedParams.asNumber('chargeId');\r\n }\r\n\r\n private paramValidator(): ParamValidator {\r\n return ParamValidator.Standard();\r\n }\r\n\r\n public exportCsvSummaryClicked():void{\r\n const headers = ['Category', 'Sub Category', 'Class Of Service', 'Demand(GJ)', 'Commodity(GJ)', 'Amount($)'];\r\n const columns = ['category', 'subcategory', 'classOfService', 'demand', 'commodity', 'amount'];\r\n\r\n const data = [];\r\n _.forEach(this.model.searchResults, searchResult => {\r\n _.forEach(searchResult.categories, category => {\r\n _.forEach(category.rows, row => {\r\n data.push({\r\n category: searchResult.name,\r\n subcategory: category.name,\r\n classOfService: row.name,\r\n demand: row.demandQuantity,\r\n commodity: row.commodityQuantity,\r\n amount: row.amount\r\n });\r\n });\r\n if(category.name===\"\"){\r\n // do nothing we only need one total for Taxes and Administration\r\n }else {\r\n data.push({\r\n category: searchResult.name,\r\n subcategory: category.name,\r\n classOfService: 'Total ' + category.name,\r\n demand: category.totalDemandQuantity,\r\n commodity: category.totalCommodityQuantity,\r\n amount: category.totalAmount\r\n });\r\n }\r\n });\r\n data.push({\r\n category: searchResult.name,\r\n subcategory: '',\r\n classOfService: 'Total ' + searchResult.name,\r\n demand: searchResult.totalDemandQuantity,\r\n commodity: searchResult.totalCommodityQuantity,\r\n amount: searchResult.totalAmount\r\n });\r\n });\r\n this.exportCsv(headers, columns, data, \"Summary\");\r\n }\r\n\r\n protected exportCsv(headers: string[], columns: string[], data: any[], exportType : string) {\r\n const filename = 'Class of Service ' + exportType + '_' + this.model.lastSearchParams.startBillingMonth + ' to ' + this.model.lastSearchParams.endBillingMonth + '.csv';\r\n this.fileService.downloadCsvFile(filename, data, headers, columns);\r\n }\r\n public exportCsvDetailClicked():void{\r\n this.queryClassOfServiceDetailReport().subscribe();\r\n }\r\n public generateAndExportDetailReport():void{\r\n const headers = ['Billing Month',\t'Affected Billing Month',\t'Invoice Group','Nom Group', 'Customer Mnemonic',\t'Customer Legal Name', 'Quantity Type', 'Transportation Type', 'Charge Class', 'Charge Type', 'Primary Receipt Location', 'Primary Delivery Location', 'Primary Province', 'Primary Is Export', 'Nominated Receipt Location', 'Nominated Delivery Location', 'Nominated Province', 'Nominated Is Export', 'Alternate Receipt Location', 'Alternate Delivery Location', 'Zero Tax Rated', 'Quantity', 'Toll', 'Amount', 'Start Gas Day', 'End Gas Day', 'Assignment Nom Group'];\r\n const columns = ['billingMonth' , 'affectedBillingMonth' , 'invoiceGroup' , 'nomGroup', 'customerMnemonic' , 'customerLegalName' , 'quantityType' , 'transportationType' , 'chargeClass' , 'chargeType' , 'primaryReceiptLocation' , 'primaryDeliveryLocation' , 'primaryProvince' , 'primaryIsExport' , 'nominatedReceiptLocation' , 'nominatedDeliveryLocation' , 'nominatedProvince' , 'nominatedIsExport' , 'alternateReceiptLocation' , 'alternateDeliveryLocation' , 'zeroTaxRated' , 'quantity', 'toll', 'amount', 'startGasDay' , 'endGasDay' , 'assignmentNomGroup'];\r\n this.model.searchDetails = _.filter(this.model.searchDetails, x => !_.isNil(x));\r\n this.exportCsv(headers, columns, this.model.searchDetails, \"Detail\");\r\n }\r\n}\r\n","import {BaseViewModel} from \"@model/base-view-model\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {DateTime} from \"@model/date-time\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport {ExpectedPaymentRow} from \"@shared/services/invoicing/expected-payment/expected-payment.service\";\r\n\r\nexport class ExpectedPaymentModel extends BaseViewModel {\r\n\r\n searchResults: ExpectedPaymentRow[] = [];\r\n searchParams: ExpectedPaymentSearchParams = new ExpectedPaymentSearchParams();\r\n lastSearchParams: ExpectedPaymentSearchParams;\r\n billingMonthStatus: string;\r\n searchTime: DateTime;\r\n dueDate: DateTime;\r\n\r\n openBillingMonth: BillingMonth;\r\n preliminaryBillingMonth: BillingMonth;\r\n minGasMonth: GasMonth;\r\n maxGasMonth: GasMonth;\r\n\r\n clearSearchResults() {\r\n this.searchResults = [];\r\n this.searchTime = undefined;\r\n this.billingMonthStatus = undefined;\r\n this.lastSearchParams = undefined;\r\n this.dueDate = undefined;\r\n }\r\n}\r\n\r\nexport class ExpectedPaymentSearchParams {\r\n billingMonth: GasMonth;\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {InvoicingResourceService} from \"@shared/resources/invoicing-resource.service\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {Observable} from \"rxjs\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {concatMap, map} from \"rxjs/operators\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ExpectedPaymentService {\r\n\r\n constructor(private invoicingResource: InvoicingResourceService,\r\n private enterpriseEnrichmentService: EnterpriseEnrichmentService,\r\n private enterpriseService: EnterpriseService) {\r\n this.enterpriseEnrichmentService.setEnrichmentResource(this.enterpriseService);\r\n }\r\n\r\n public query(billingMonth: GasMonth): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setGasMonth(billingMonth, 'billingMonth');\r\n return this.invoicingResource.get('/invoicePackages', true, params)\r\n .pipe(\r\n concatMap(invoicePackages => this.enterpriseEnrichmentService.enrichArray(invoicePackages, 'invoiceRecipientId', 'invoiceRecipient')),\r\n map(invoicePackages => ExpectedPaymentRow.create(invoicePackages)));\r\n }\r\n}\r\n\r\ninterface IExpectedPaymentResponse {\r\n invoiceRecipientArNumber: string;\r\n invoiceRecipientId: number;\r\n invoiceRecipientDisplayName: string;\r\n invoiceRecipientShortName: string;\r\n invoiceRecipientMnemonic: string;\r\n manualChargesPreTaxTotal: number;\r\n taxTotal: number;\r\n nonManualChargesPreTaxTotal: number;\r\n total: number;\r\n}\r\n\r\nexport class ExpectedPaymentRow {\r\n arNumber: string;\r\n invoiceRecipient: string;\r\n invoiceRecipientShortName: string;\r\n mnemonic: string;\r\n manualCharges: number;\r\n taxAmount: number;\r\n amountBeforeTax: number;\r\n invoiceTotal: number;\r\n\r\n static create(response: IExpectedPaymentResponse[]): ExpectedPaymentRow[] {\r\n const result: ExpectedPaymentRow[] = [];\r\n for (const item of response) {\r\n const row = new ExpectedPaymentRow();\r\n row.arNumber = item.invoiceRecipientArNumber;\r\n row.invoiceRecipient = item.invoiceRecipientDisplayName;\r\n row.invoiceRecipientShortName = item.invoiceRecipientShortName;\r\n row.mnemonic = item.invoiceRecipientMnemonic;\r\n row.manualCharges = item.manualChargesPreTaxTotal;\r\n row.taxAmount = item.taxTotal;\r\n row.amountBeforeTax = item.nonManualChargesPreTaxTotal;\r\n row.invoiceTotal = item.total;\r\n result.push(row);\r\n }\r\n return result;\r\n }\r\n}\r\n","\r\n
\r\n {{ getTitle() }}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n -\r\n +\r\n Filters\r\n 0\" style=\"font-weight: normal;\">\r\n :\r\n Billing Month: {{model.lastSearchParams?.billingMonth}}\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
0\">\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.billingMonth | gasMonthFormat }}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.billingMonthStatus}}\r\n
\r\n \r\n
\r\n {{model.dueDate.toDateString()}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n Number of Records: {{model.searchResults.length}}\r\n As of: {{ model.searchTime | dateTimeFormat }}\r\n
0\" class=\"pull-right\">\r\n Export CSV\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {forkJoin, Observable, of} from \"rxjs\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {ExpectedPaymentModel, ExpectedPaymentSearchParams} from \"app/gcts/invoicing/expected-payment/expected-payment-model\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport * as _ from \"lodash\";\r\nimport {tap} from \"rxjs/operators\";\r\nimport {CommonDataGasdayService, ServerTimeData} from \"@shared/services/common-data/common-data-gasday/common-data-gasday.service\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {InvoicingInvoiceBillingProcessService} from \"@shared/services/invoicing/invoicing-invoice-billing-process/invoicing-invoice-billing-process.service\";\r\nimport {ExpectedPaymentRow, ExpectedPaymentService} from \"@shared/services/invoicing/expected-payment/expected-payment.service\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\n\r\n@Component({\r\n selector: 'app-expected-payment',\r\n templateUrl: './expected-payment.component.html',\r\n styleUrls: ['./expected-payment.component.css']\r\n})\r\nexport class ExpectedPaymentComponent extends BaseSearchComponent implements OnInit {\r\n\r\n model: ExpectedPaymentModel = new ExpectedPaymentModel();\r\n\r\n constructor(protected appService: AppService,\r\n protected router: Router,\r\n protected activatedRoute: ActivatedRoute,\r\n protected alertService: AlertService,\r\n private commonDataBillingMonthService: CommonDataBillingMonthService,\r\n private commonDataGasDayService: CommonDataGasdayService,\r\n private expectedPaymentService: ExpectedPaymentService,\r\n private invoicingInvoiceBillingProcessService: InvoicingInvoiceBillingProcessService,\r\n private fileService: FileService) {\r\n super('Expected Payment Report', appService, activatedRoute, router, alertService);\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return ParamValidator.Standard().isValid(params);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {};\r\n params['billingMonth'] = this.model.searchParams.billingMonth;\r\n return params;\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n const getOldestBillingMonth$ = this.commonDataBillingMonthService.getOldest()\r\n .pipe(tap(oldestBillingMonth => this.model.minGasMonth = oldestBillingMonth.gasMonth));\r\n const getOpenBillingMonth$ = this.commonDataBillingMonthService.getOpen()\r\n .pipe(tap(openBillingMonth => this.model.openBillingMonth = openBillingMonth));\r\n const getPreliminaryBillingMonth$ = this.commonDataBillingMonthService.getPreliminary()\r\n .pipe(tap(preliminaryBillingMonth => this.model.preliminaryBillingMonth = preliminaryBillingMonth));\r\n const getMaxMonth$ = forkJoin([getOpenBillingMonth$, getPreliminaryBillingMonth$])\r\n .pipe(tap(([openBillingMonth, preliminaryBillingMonth]: [BillingMonth, BillingMonth]) => {\r\n if (!_.isNil(preliminaryBillingMonth)) {\r\n this.model.maxGasMonth = preliminaryBillingMonth.gasMonth;\r\n } else {\r\n this.model.maxGasMonth = openBillingMonth.gasMonth;\r\n }\r\n }));\r\n return forkJoin([getOldestBillingMonth$, getMaxMonth$]);\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n return of(null);\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n const rows$ = this.expectedPaymentService.query(this.model.searchParams.billingMonth)\r\n .pipe(tap(results => this.model.searchResults = results));\r\n const billingMonthStatus$ = this.invoicingInvoiceBillingProcessService.get(this.model.searchParams.billingMonth)\r\n .pipe(tap(status => this.model.billingMonthStatus = status.status === 'Final' ? 'Final' : 'Preliminary'));\r\n const time$ = this.commonDataGasDayService.getServerTimeData()\r\n .pipe(tap((time:ServerTimeData) => this.model.searchTime = time.serverTime));\r\n const dueDate$ = this.commonDataBillingMonthService.get(this.model.searchParams.billingMonth)\r\n .pipe(tap(month => this.model.dueDate = month.invoicePaymentDateTime));\r\n return forkJoin([rows$, billingMonthStatus$, time$, dueDate$]);\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams = new ExpectedPaymentSearchParams();\r\n this.model.searchParams.billingMonth = this.model.openBillingMonth.gasMonth;\r\n this.model.clearSearchResults();\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams = new ExpectedPaymentSearchParams();\r\n this.model.searchParams.billingMonth = typedParams.asGasMonth('billingMonth');\r\n }\r\n\r\n onContentReady(): void {\r\n document.querySelector('.dx-datagrid-rowsview').before(document.querySelector('.dx-datagrid-total-footer'));\r\n }\r\n\r\n total(): string {return \"TOTAL\"}\r\n\r\n exportCsv(): void {\r\n const csvData = [];\r\n this.model.searchResults.forEach((r: ExpectedPaymentRow) => {\r\n csvData.push({\r\n dueDate: this.model.dueDate.toDateString(),\r\n arNumber: r.arNumber,\r\n recipientName: r.invoiceRecipientShortName,\r\n mnemonic: r.mnemonic,\r\n manualCharges: r.manualCharges,\r\n taxAmount: r.taxAmount,\r\n beforeTax: r.amountBeforeTax,\r\n total: r.invoiceTotal\r\n });\r\n });\r\n csvData.sort((a, b) => a.recipientName.localeCompare(b.recipientName));\r\n const fileName = `Expected Payment Report - ${this.model.searchParams.billingMonth.toDisplayFormat()}.csv`;\r\n const headers = ['Due Date','AR Number','Invoice Recipient Name','Invoice Recipient Mnemonic','Manual Charges ($CDN)'\r\n ,'Tax Amount ($CDN)','Amount Before Tax ($CDN)','Invoice Total ($CDN)'];\r\n const columns = ['dueDate','arNumber','recipientName','mnemonic','manualCharges','taxAmount','beforeTax','total'];\r\n this.fileService.downloadCsvFile(fileName, csvData, headers, columns);\r\n }\r\n}\r\n","import {BaseViewModel} from \"@model/base-view-model\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {SimpleNominationGroup} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport {CustomerInvoiceParametersRow} from \"@shared/services/invoicing/invoicing-customer-invoice-parameters/invoicing-customer-invoice-parameters.service\";\r\nimport {InvoiceContactsRow} from \"@shared/services/common-data/common-data-invoice-contacts/common-data-invoice-contacts.service\";\r\nimport {Enterprise} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\n\r\n\r\nexport class CustomerInvoiceParametersModel extends BaseViewModel {\r\n searchParams: CustomerInvoiceParametersSearchParams = new CustomerInvoiceParametersSearchParams();\r\n lastSearchParams: CustomerInvoiceParametersSearchParams;\r\n oldestBillingMonth: BillingMonth;\r\n openBillingMonth: BillingMonth;\r\n preliminaryBillingMonth: BillingMonth;\r\n newestBillingMonth: BillingMonth;\r\n endBillingMonthMinMonth: GasMonth;\r\n simpleNominationGroups: SimpleNominationGroup[];\r\n searchResults: CustomerInvoiceParametersRow[];\r\n invoiceContactsSearchResults: InvoiceContactsRow;\r\n customers: Enterprise[];\r\n searchPerformed: boolean = false;\r\n timeOfLastSearch: Date;\r\n saved: boolean = false;\r\n customerParametersButtonEnabled: boolean = false;\r\n}\r\n\r\n\r\n\r\nexport class CustomerInvoiceParametersSearchParams {\r\n billingMonth: GasMonth;\r\n customerId: number;\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {Observable} from \"rxjs\";\r\nimport {map} from \"rxjs/operators\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {InvoicingResourceService} from \"@shared/resources/invoicing-resource.service\";\r\nimport {InvoiceBillingProcessRequest} from \"@shared/services/invoicing/invoicing-invoice-billing-process/invoicing-invoice-billing-process.service\";\r\nimport {EditCustomerParametersModel} from \"app/gcts/invoicing/customer-invoice-parameters/edit-customer-parameters/edit-customer-parameters.model\";\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class InvoicingCustomerInvoiceParametersService {\r\n constructor(private invoicingResource: InvoicingResourceService) {\r\n }\r\n\r\n queryCustomerInvoiceParameters(searchParams: CustomerInvoiceParametersRequest): Observable {\r\n return this.invoicingResource.get('/enterprises/' + searchParams.customerId + \"/invoiceparameters\", true, this.buildUrlSearchParams(searchParams))\r\n .pipe(\r\n map(dtos => dtos.map(dto => CustomerInvoiceParametersRow.create(dto)))\r\n );\r\n }\r\n\r\n updateCustomerInvoiceParameters(editCustomerParametersModel: EditCustomerParametersModel): Observable {\r\n const body = this.buildBody(editCustomerParametersModel);\r\n return this.invoicingResource.put('/enterprises/' + editCustomerParametersModel.customerId + '/invoiceparameters',body);\r\n }\r\n\r\n insertCustomerInvoiceParameters(editCustomerParametersModel: EditCustomerParametersModel): Observable {\r\n const body = this.buildBody(editCustomerParametersModel);\r\n return this.invoicingResource.post('/enterprises/' + editCustomerParametersModel.customerId + '/invoiceparameters',body);\r\n }\r\n\r\n private buildBody(editCustomerParametersModel: EditCustomerParametersModel) {\r\n const body = {\r\n effectiveGasMonth: editCustomerParametersModel.openBillingMonth.gasMonth.toDisplayFormat(),\r\n id: editCustomerParametersModel.customerId,\r\n isPrintable: editCustomerParametersModel.saveRequest.isPrintable,\r\n isSSSSigned: editCustomerParametersModel.saveRequest.isSSSSigned,\r\n isTaxExempt: editCustomerParametersModel.saveRequest.isTaxExempt,\r\n pipelineCode: editCustomerParametersModel.invoiceBillingProcess.pipelineName,\r\n version: editCustomerParametersModel.invoiceBillingProcess.version\r\n };\r\n return body;\r\n }\r\n\r\n private buildUrlSearchParams(searchParams: CustomerInvoiceParametersRequest): GCTSHttpParams {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n return params;\r\n }\r\n}\r\n\r\nexport class CustomerInvoiceParametersRequest {\r\n customerId: number;\r\n}\r\n\r\nexport class ICustomerInvoiceParametersRow {\r\n enterpriseId: string;\r\n pipelineName: string;\r\n isTaxExempt: string;\r\n isPrintable: string;\r\n isSSSSigned: string;\r\n effectiveBillingMonth: string;\r\n expiryBillingMonth: string;\r\n version: string;\r\n}\r\n\r\nexport class CustomerInvoiceParametersRow {\r\n enterpriseId: number;\r\n pipelineName: string;\r\n isTaxExempt: boolean;\r\n isPrintable: boolean;\r\n isSSSSigned: boolean;\r\n effectiveBillingMonth: GasMonth;\r\n expiryBillingMonth: GasMonth;\r\n version: number;\r\n\r\n public static create(dto: any): CustomerInvoiceParametersRow {\r\n const customerInvoiceParametersRow = new CustomerInvoiceParametersRow();\r\n customerInvoiceParametersRow.enterpriseId = dto.enterpriseId;\r\n customerInvoiceParametersRow.pipelineName = dto.pipelineName;\r\n customerInvoiceParametersRow.isTaxExempt = dto.isTaxExempt;\r\n customerInvoiceParametersRow.isPrintable = dto.isPrintable;\r\n customerInvoiceParametersRow.isSSSSigned = dto.isSSSSigned;\r\n customerInvoiceParametersRow.effectiveBillingMonth = GasMonth.parse(dto.effectiveBillingMonth);\r\n customerInvoiceParametersRow.expiryBillingMonth = GasMonth.parse(dto.expiryBillingMonth);\r\n customerInvoiceParametersRow.version = dto.version;\r\n\r\n return customerInvoiceParametersRow;\r\n }\r\n\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {Observable} from \"rxjs\";\r\nimport {map} from \"rxjs/operators\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {CommondataResourceService} from \"@shared/resources/commondata-resource.service\";\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CommonDataInvoiceContactsService {\r\n constructor(private commonDataResource: CommondataResourceService) {\r\n }\r\n\r\n queryInvoiceContacts(searchParams: InvoiceContactsRequest): Observable {\r\n return this.commonDataResource.get('/enterprises/' + searchParams.customerId + \"/invoicecontacts\", true, this.buildUrlSearchParams(searchParams))\r\n .pipe(\r\n map(dtos => dtos.map(dto => InvoiceContactsRow.create(dto)))\r\n );\r\n }\r\n\r\n private buildUrlSearchParams(searchParams: InvoiceContactsRequest): GCTSHttpParams {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n return params;\r\n }\r\n}\r\n\r\nexport class InvoiceContactsRequest {\r\n customerId: number;\r\n}\r\n\r\nexport class IInvoiceContactsRow {\r\n pipelineCode: string;\r\n pipelineName: string;\r\n enterpriseId: string;\r\n departmentName: string;\r\n salutation: string;\r\n firstName: string;\r\n lastName: string;\r\n initial: string;\r\n\r\n positionTitle: string;\r\n titleExtension: string;\r\n address1: string;\r\n address2: string;\r\n address3: string;\r\n city: string;\r\n provinceCode: string;\r\n countryName: string;\r\n postalZipCode: string;\r\n effectiveDate: string;\r\n}\r\n\r\nexport class InvoiceContactsRow {\r\n pipelineCode: string;\r\n pipelineName: string;\r\n enterpriseId: number;\r\n departmentName: string;\r\n salutation: boolean;\r\n firstName: string;\r\n lastName: string;\r\n initial: string;\r\n\r\n positionTitle: string;\r\n titleExtension: string;\r\n address1: string;\r\n address2: string;\r\n address3: string;\r\n city: string;\r\n provinceCode: string;\r\n countryName: string;\r\n postalZipCode: string;\r\n effectiveDate: GasDay;\r\n\r\n public static create(dto: any): InvoiceContactsRow {\r\n const invoiceContactsRowRow = new InvoiceContactsRow();\r\n invoiceContactsRowRow.pipelineCode = dto.pipelineCode;\r\n invoiceContactsRowRow.pipelineName = dto.pipelineName;\r\n invoiceContactsRowRow.enterpriseId = dto.enterpriseId;\r\n invoiceContactsRowRow.departmentName = dto.departmentName;\r\n invoiceContactsRowRow.salutation = dto.salutation;\r\n invoiceContactsRowRow.firstName = dto.firstName;\r\n invoiceContactsRowRow.lastName = dto.lastName;\r\n invoiceContactsRowRow.initial = dto.initial;\r\n\r\n invoiceContactsRowRow.positionTitle = dto.positionTitle;\r\n invoiceContactsRowRow.titleExtension = dto.titleExtension;\r\n invoiceContactsRowRow.address1 = dto.address1;\r\n invoiceContactsRowRow.address2 = dto.address2;\r\n invoiceContactsRowRow.address3 = dto.address3;\r\n invoiceContactsRowRow.city = dto.city;\r\n invoiceContactsRowRow.provinceCode = dto.provinceCode;\r\n invoiceContactsRowRow.countryName = dto.countryName;\r\n invoiceContactsRowRow.postalZipCode = dto.postalZipCode;\r\n invoiceContactsRowRow.effectiveDate = GasDay.parse(dto.effectiveDate);\r\n\r\n return invoiceContactsRowRow;\r\n }\r\n\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Customer: {{model.lastSearchParams?.customerId | displayName: 'id' : 'displayValue' : model.customers}}\r\n Month: {{model.lastSearchParams?.billingMonth | gasMonthFormat}}\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{this.model.lastSearchParams?.customerId | displayName: 'id' : 'displayValue' : model.customers}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.billingMonth}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{this.model.lastSearchParams?.customerId | displayName: 'id' : 'sapNumber' : model.customers}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{this.model.invoiceContactsSearchResults.firstName + ' ' + this.model.invoiceContactsSearchResults.lastName}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{this.model.invoiceContactsSearchResults.address1 + ' ' + this.model.invoiceContactsSearchResults.address2}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{this.model.invoiceContactsSearchResults.city + ', ' + this.model.invoiceContactsSearchResults.provinceCode + ', ' + this.model.invoiceContactsSearchResults.countryName + ', ' + this.model.invoiceContactsSearchResults.postalZipCode }}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n Number of records found: {{model.searchResults.length}}\r\n AS OF {{model.timeOfLastSearch | dateFormat:'YYYY-MMM-DD H:mm:ss'}}\r\n
\r\n\r\n\r\n\r\n\r\n\r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n {{ row.data.isTaxExempt | booleanAsYesNo }}\r\n
\r\n \r\n
\r\n {{ row.data.isPrintable | booleanAsYesNo }}\r\n
\r\n \r\n
\r\n {{ row.data.isSSSSigned | booleanAsYesNo }}\r\n
\r\n \r\n\r\n\r\n\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n
\r\n
\r\n","import {Component} from \"@angular/core\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {CommonDataGasdayService, ServerTimeData} from \"@shared/services/common-data/common-data-gasday/common-data-gasday.service\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {InvoicingInvoiceBillingProcessService} from \"@shared/services/invoicing/invoicing-invoice-billing-process/invoicing-invoice-billing-process.service\";\r\nimport {forkJoin, Observable} from \"rxjs\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {Enterprise, EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {concatMap, tap} from \"rxjs/operators\";\r\nimport * as _ from \"lodash\";\r\nimport {CustomerInvoiceParametersModel, CustomerInvoiceParametersSearchParams} from \"app/gcts/invoicing/customer-invoice-parameters/customer-invoice-parameters.model\";\r\nimport {NominationGroupService, SimpleNominationGroup} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport {InvoicingCustomerInvoiceParametersService, CustomerInvoiceParametersRequest, CustomerInvoiceParametersRow} from \"@shared/services/invoicing/invoicing-customer-invoice-parameters/invoicing-customer-invoice-parameters.service\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {InvoiceContactsRequest, CommonDataInvoiceContactsService} from \"@shared/services/common-data/common-data-invoice-contacts/common-data-invoice-contacts.service\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\n\r\n\r\n\r\n@Component({\r\n selector: 'app-customer-invoice-parameters',\r\n templateUrl: './customer-invoice-parameters.component.html',\r\n styleUrls: ['./customer-invoice-parameters.component.css']\r\n})\r\nexport class CustomerInvoiceParametersComponent extends BaseSearchComponent {\r\n private static readonly PARAM_BILLING_MONTH: string = 'billingMonth';\r\n private static readonly PARAM_CUSTOMER_ID: string = 'customerId';\r\n model: CustomerInvoiceParametersModel = new CustomerInvoiceParametersModel();\r\n\r\n\r\n constructor(\r\n protected appService: AppService,\r\n activatedRoute: ActivatedRoute,\r\n router: Router,\r\n protected alertService: AlertService,\r\n protected commonDataBillingMonthService: CommonDataBillingMonthService,\r\n protected commonDataGasDayService: CommonDataGasdayService,\r\n protected fileService: FileService,\r\n protected invoicingInvoiceBillingProcessService: InvoicingInvoiceBillingProcessService,\r\n protected enterpriseEnrichmentService: EnterpriseEnrichmentService,\r\n protected enterpriseService: EnterpriseService,\r\n protected nominationGroupService: NominationGroupService,\r\n protected accountsCustomerInvoiceParametersService: InvoicingCustomerInvoiceParametersService,\r\n protected commonDataInvoiceContactsService: CommonDataInvoiceContactsService,\r\n ) {\r\n super('Customer Invoice Parameters', appService, activatedRoute, router, alertService);\r\n enterpriseEnrichmentService.setEnrichmentResource(enterpriseService);\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n const paramValidator = ParamValidator.Standard();\r\n paramValidator.isGasMonth(CustomerInvoiceParametersComponent.PARAM_BILLING_MONTH);\r\n paramValidator.isNumber(CustomerInvoiceParametersComponent.PARAM_CUSTOMER_ID);\r\n return paramValidator.isValid(params);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {};\r\n params['billingMonth'] = this.model.searchParams.billingMonth;\r\n params['customerId'] = this.model.searchParams.customerId;\r\n return params;\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n const myEnterpriseId = this.activatedRoute.snapshot.queryParams['enterpriseCid'];\r\n const myGasMonth = this.activatedRoute.snapshot.queryParams['gasMonth'];\r\n const mySaved = this.activatedRoute.snapshot.queryParams['saved'];\r\n if(!_.isNil(myEnterpriseId)) {\r\n // tslint:disable-next-line:radix\r\n this.model.searchParams.customerId = parseInt(myEnterpriseId);\r\n }\r\n if(!_.isNil(myGasMonth)) {\r\n this.model.searchParams.billingMonth = GasMonth.parse(myGasMonth);\r\n }\r\n if (!_.isNil(mySaved) && \"true\"===mySaved) {\r\n this.model.saved = true;\r\n }else{\r\n this.model.saved=false;\r\n }\r\n\r\n const getOldestBillingMonth$ = this.commonDataBillingMonthService.getOldest()\r\n .pipe(\r\n tap(oldestBillingMonth => this.model.oldestBillingMonth = oldestBillingMonth)\r\n );\r\n\r\n const getOpenBillingMonth$ = this.commonDataBillingMonthService.getOpen()\r\n .pipe(\r\n tap(openBillingMonth => {\r\n this.model.openBillingMonth = openBillingMonth;\r\n this.model.searchParams.billingMonth = openBillingMonth.gasMonth;\r\n this.setNewestBillingMonth();\r\n })\r\n );\r\n\r\n const getEnterprises$ = this.queryEnterprises();\r\n\r\n const getPreliminaryBillingMonth$ = this.commonDataBillingMonthService.getPreliminary()\r\n .pipe(\r\n tap(preliminaryBillingMonth => {\r\n this.model.preliminaryBillingMonth = preliminaryBillingMonth;\r\n this.setNewestBillingMonth();\r\n })\r\n );\r\n return forkJoin([getOldestBillingMonth$, getOpenBillingMonth$, getPreliminaryBillingMonth$,getEnterprises$]);\r\n }\r\n\r\n public setNewestBillingMonth():void{\r\n if(_.isNil(this.model.preliminaryBillingMonth)){\r\n this.model.newestBillingMonth= this.model.openBillingMonth;\r\n }else{\r\n this.model.newestBillingMonth= this.model.preliminaryBillingMonth;\r\n }\r\n }\r\n\r\n private queryEnterprises(): Observable {\r\n return this.enterpriseService.getAll()\r\n .pipe(\r\n tap(enterprises => {\r\n this.model.customers = enterprises;\r\n })\r\n );\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n if(!_.isNil(this.model.searchParams.customerId) && !_.isNil(this.model.searchParams.billingMonth)){\r\n this.performSearch().subscribe();\r\n }\r\n\r\n return this.nominationGroupService.querySimpleNomGroupsForAllBusinessRightsVariant2(this.model.oldestBillingMonth.firstDayOfMonth,this.model.newestBillingMonth.lastDayOfMonth)\r\n .pipe(\r\n concatMap(accounts => this.enterpriseEnrichmentService.enrichArray(accounts, 'invoiceRecipientEnterpriseId', 'invoiceRecipientEnterprise')),\r\n tap(simpleNominationGroups => {\r\n let invoiceRecipientEnterprises = new Array();\r\n // @ts-ignore\r\n invoiceRecipientEnterprises = _.sortBy(_.uniqBy(simpleNominationGroups, x => x.invoiceRecipientEnterpriseId),x=> x.invoiceRecipientEnterpriseDisplayName);\r\n this.model.simpleNominationGroups = invoiceRecipientEnterprises;\r\n })\r\n );\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.alertService.clearMessages();\r\n this.model.customerParametersButtonEnabled=true;\r\n\r\n if(this.model.saved===true){\r\n this.alertService.addSuccessMessage(\"Success\", \"The customer invoice parameters have been sucessfully saved.\");\r\n this.model.saved=false;\r\n }\r\n\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n const customerInvoiceParametersRequest = new CustomerInvoiceParametersRequest();\r\n const invoiceContactsRequest = new InvoiceContactsRequest();\r\n customerInvoiceParametersRequest.customerId = this.model.lastSearchParams.customerId;\r\n invoiceContactsRequest.customerId = this.model.lastSearchParams.customerId;\r\n const queryInvoiceContacts$ = this.commonDataInvoiceContactsService.queryInvoiceContacts(invoiceContactsRequest)\r\n .pipe(\r\n tap(invoiceContacts => {\r\n if(!_.isNil(invoiceContacts) && invoiceContacts.length>0)\r\n this.model.invoiceContactsSearchResults = invoiceContacts[0];\r\n })\r\n );\r\n\r\n const queryCustomerInvoiceParameters$ = this.accountsCustomerInvoiceParametersService.queryCustomerInvoiceParameters(customerInvoiceParametersRequest)\r\n .pipe(\r\n tap(customerInvoiceParameters => {\r\n this.model.searchResults = customerInvoiceParameters;\r\n this.removeEndOfTimeExpiryDate(this.model.searchResults);\r\n if(!this.model.lastSearchParams.billingMonth.isEqual(this.model.openBillingMonth.gasMonth)){\r\n this.alertService.addInfoMessage(\"Info\",\"Editing Customer Parameters is only allowed for the open billing month. \" + this.model.lastSearchParams.billingMonth.toDisplayFormat() + \" is not the open billing month.\");\r\n this.model.customerParametersButtonEnabled=false;\r\n }\r\n })\r\n );\r\n\r\n const queryServerTime$ = this.queryServerTimeData();\r\n\r\n return forkJoin([queryInvoiceContacts$, queryCustomerInvoiceParameters$,queryServerTime$]);\r\n }\r\n\r\n private queryServerTimeData(): Observable {\r\n return this.commonDataGasDayService.getServerTimeData()\r\n .pipe(\r\n tap(serverTimes => this.model.timeOfLastSearch = serverTimes.serverTime.toDate())\r\n );\r\n }\r\n\r\n private removeEndOfTimeExpiryDate(customerInvoiceParametersRows: CustomerInvoiceParametersRow[]):void{\r\n _.forEach(customerInvoiceParametersRows,customerInvoiceParametersRow=> {\r\n if(GasMonth.isEndOfTime(customerInvoiceParametersRow.expiryBillingMonth.toDate)){\r\n customerInvoiceParametersRow.expiryBillingMonth=null;\r\n }\r\n });\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams.billingMonth = this.model.openBillingMonth.gasMonth;\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams = new CustomerInvoiceParametersSearchParams();\r\n this.model.searchParams.billingMonth = typedParams.asGasMonth(CustomerInvoiceParametersComponent.PARAM_BILLING_MONTH);\r\n this.model.searchParams.customerId = typedParams.asNumber(CustomerInvoiceParametersComponent.PARAM_CUSTOMER_ID);\r\n }\r\n\r\n public customerParametersClicked() {\r\n this.alertService.clearMessages();\r\n this.goToEditCustomerParametersPage();\r\n }\r\n\r\n private goToEditCustomerParametersPage(): void {\r\n const queryParams = {\r\n enterpriseId: this.model.lastSearchParams.customerId,\r\n };\r\n const url = ['/app', this.getPipelineCode(), 'customerparameters', this.model.lastSearchParams.customerId, 'invoiceparameter'];\r\n this.router.navigate(url);\r\n }\r\n\r\n public resetHasBeenClicked(isSaved: boolean): void {\r\n // MR need to re-navigate also to remove the parameters from the url also\r\n const url = ['/app', this.getPipelineCode(), 'customerparameters'];\r\n this.router.navigate(url);\r\n this.clearSearchResults();\r\n this.alertService.clearMessages();\r\n }\r\n public clearSearchResults():void{\r\n this.model.searchParams.customerId = null;\r\n this.model.searchParams.billingMonth = null;\r\n this.model.searchResults = null;\r\n this.model.invoiceContactsSearchResults = null;\r\n }\r\n}\r\n","export class YesAndNo {\r\n\r\n id: boolean;\r\n name: string;\r\n abbr: string;\r\n\r\n constructor(id: boolean, name: string, abbr: string) {\r\n this.id = id;\r\n this.name = name;\r\n this.abbr = abbr;\r\n }\r\n\r\n public static All(): YesAndNo[] {\r\n return [\r\n new YesAndNo(false, 'No', 'N'),\r\n new YesAndNo(true, 'Yes', 'Y')\r\n ];\r\n }\r\n\r\n}\r\n","import {BaseViewModel} from \"@model/base-view-model\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport {CustomerInvoiceParametersRow} from \"@shared/services/invoicing/invoicing-customer-invoice-parameters/invoicing-customer-invoice-parameters.service\";\r\nimport {Enterprise} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {InvoiceBillingProcess} from \"@shared/services/invoicing/invoicing-invoice-billing-process/invoicing-invoice-billing-process.service\";\r\nimport {YesAndNo} from \"@model/yes-no\";\r\nimport * as _ from \"lodash\";\r\n\r\nexport class EditCustomerParametersModel extends BaseViewModel {\r\n openBillingMonth: BillingMonth;\r\n customerId: number;\r\n customer: Enterprise;\r\n invoiceBillingProcess: InvoiceBillingProcess;\r\n customerInvoiceParametersRow: CustomerInvoiceParametersRow;\r\n saveRequest: SaveRequest = new SaveRequest();\r\n yesAndNo: YesAndNo[] = YesAndNo.All();\r\n zeroTaxRatedDisabled: boolean = false;\r\n\r\n hasChanged():boolean{\r\n if(_.isNil(this.saveRequest)){\r\n return false;\r\n }\r\n if((this.saveRequest.isTaxExempt===this.customerInvoiceParametersRow?.isTaxExempt)\r\n && (this.saveRequest.isPrintable===this.customerInvoiceParametersRow?.isPrintable)\r\n && (this.saveRequest.isSSSSigned===this.customerInvoiceParametersRow?.isSSSSigned)){\r\n return false;\r\n }\r\n return true;\r\n }\r\n}\r\n\r\nexport class SaveRequest{\r\n isTaxExempt: boolean = false;\r\n isPrintable: boolean = false;\r\n isSSSSigned: boolean = false;\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{this.model.customer.shortName +' (' + this.model.customer.mnemonic + ')'}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.openBillingMonth.gasMonth}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n","import {Route} from \"@angular/router\";\r\nimport {InvoiceMonitorComponent} from \"./invoice-monitor/invoice-monitor.component\";\r\nimport {AuthorizationService} from \"@shared/services/webapp/authorization/authorization.service\";\r\nimport {PalsBillingDetailReportComponent} from \"./pals-billing-detail-report/pals-billing-detail-report.component\";\r\nimport {BilledBalancingFeesReportComponent} from \"app/gcts/invoicing/billed-balancing-fees-report/billed-balancing-fees-report.component\";\r\nimport {ViewInvoiceComponent} from \"app/gcts/invoicing/view-invoice/view-invoice.component\";\r\nimport {OverrideLbaExcessQuantityComponent} from \"app/gcts/invoicing/override-lba-excess-quantity/override-lba-excess-quantity.component\";\r\nimport {InvoiceBusinessMessagesComponent} from \"app/gcts/invoicing/invoice-business-messages/invoice-business-messages.component\";\r\nimport {GenerateChargesComponent} from \"app/gcts/invoicing/generate-charges/generate-charges.component\";\r\nimport {PrintInvoicesComponent} from \"app/gcts/invoicing/print-invoice/print-invoices.component\";\r\nimport {PublishInvoicesComponent} from \"app/gcts/invoicing/publish-invoices/publish-invoices.component\";\r\nimport {AccountsReceivableComponent} from \"app/gcts/invoicing/accounts-receivable/accounts-receivable.component\";\r\nimport {ViewManualAdjustmentComponent} from \"app/gcts/invoicing/view-manual-adjustment/view-manual-adjustment.component\";\r\nimport {LoadManualAdjustmentComponent} from \"app/gcts/invoicing/load-manual-adjustment/load-manual-adjustment.component\";\r\nimport {DailyDiscretionaryRevenueReportComponent} from \"app/gcts/invoicing/daily-discretionary-revenue-report/daily-discretionary-revenue-report.component\";\r\nimport {DemandCommodityDetailsReportComponent} from \"app/gcts/invoicing/demand-commodity-details-report/demand-commodity-details-report.component\";\r\nimport {ClassOfServiceReportComponent} from \"app/gcts/invoicing/class-of-service-report/class-of-service-report.component\";\r\nimport {ExpectedPaymentComponent} from \"app/gcts/invoicing/expected-payment/expected-payment.component\";\r\nimport {CustomerInvoiceParametersComponent} from \"app/gcts/invoicing/customer-invoice-parameters/customer-invoice-parameters.component\";\r\nimport {EditCustomerParametersComponent} from \"app/gcts/invoicing/customer-invoice-parameters/edit-customer-parameters/edit-customer-parameters.component\";\r\n\r\nexport const InvoicingRoutes: Route[] = [\r\n {\r\n path: 'invoicemonitor',\r\n component: InvoiceMonitorComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['InvoiceMonitor-Read']}\r\n },\r\n {\r\n path: 'palsbillingdetailreport',\r\n component: PalsBillingDetailReportComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['PalsBillingDetailReport-Read']}\r\n },\r\n {\r\n path: 'billedbalancingfeesreport',\r\n component: BilledBalancingFeesReportComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['BilledBalancingFeesReport-Read']}\r\n },\r\n {\r\n path: 'viewinvoices',\r\n component: ViewInvoiceComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['ViewInvoices-Read']}\r\n },\r\n {\r\n path: 'lbaexcessquantity',\r\n component: OverrideLbaExcessQuantityComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['LbaExcessQuantity-Read']}\r\n },\r\n {\r\n path: 'invoicebusinessmessages',\r\n component: InvoiceBusinessMessagesComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['InvoiceBusinessMessages-Read']}\r\n },\r\n {\r\n path: 'generatecharges',\r\n component: GenerateChargesComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['GenerateCharges-Read']}\r\n },\r\n {\r\n path: 'printinvoices',\r\n component: PrintInvoicesComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['PrintInvoices-Read']}\r\n },\r\n {\r\n path: 'publishinvoices',\r\n component: PublishInvoicesComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['PublishInvoices-Read']}\r\n },\r\n {\r\n path: 'accountsreceivable',\r\n component: AccountsReceivableComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['AccountsReceivable-Read']}\r\n },\r\n {\r\n path: 'manualadjustment/view',\r\n component: ViewManualAdjustmentComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['ViewManualAdjustment-Read']}\r\n },\r\n {\r\n path: 'manualadjustment/load',\r\n component: LoadManualAdjustmentComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['LoadManualAdjustment-Write']}\r\n },\r\n {\r\n path: 'reports/dailydiscretionaryrevenue',\r\n component: DailyDiscretionaryRevenueReportComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['DailyDiscretionaryRevenue-Read']}\r\n },\r\n {\r\n path: 'reports/demandandcommoditydetails',\r\n component: DemandCommodityDetailsReportComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['ClassOfServiceReport-Read']}\r\n },\r\n {\r\n path: 'reports/classofservicereport',\r\n component: ClassOfServiceReportComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['ClassOfServiceReport-Read']}\r\n },\r\n {\r\n path: 'reports/expectedpaymentreport',\r\n component: ExpectedPaymentComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['ExpectedPaymentReport-Read']}\r\n },\r\n {\r\n path: 'customerparameters',\r\n component: CustomerInvoiceParametersComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['CustomerInvoiceParameters-Read']}\r\n },\r\n {\r\n path: 'customerparameters/:customerId/invoiceparameter',\r\n component: EditCustomerParametersComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['CustomerInvoiceParameters-Write']}\r\n }\r\n];\r\n","import {Component} from \"@angular/core\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {CommonDataGasdayService} from \"@shared/services/common-data/common-data-gasday/common-data-gasday.service\";\r\nimport {InvoicingInvoiceBillingProcessService} from \"@shared/services/invoicing/invoicing-invoice-billing-process/invoicing-invoice-billing-process.service\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {Enterprise, EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {NominationGroupService} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport {CustomerInvoiceParametersRequest, InvoicingCustomerInvoiceParametersService} from \"@shared/services/invoicing/invoicing-customer-invoice-parameters/invoicing-customer-invoice-parameters.service\";\r\nimport {forkJoin, Observable} from \"rxjs\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {EditCustomerParametersModel} from \"app/gcts/invoicing/customer-invoice-parameters/edit-customer-parameters/edit-customer-parameters.model\";\r\nimport {tap} from \"rxjs/operators\";\r\nimport * as _ from \"lodash\";\r\nimport {YesNoCancelModalService} from \"@shared/services/webapp/yes-no-cancel-modal/yes-no-cancel-modal.service\";\r\nimport {YesNoModalOptions} from \"@shared/services/webapp/modal-options/yes-no-modal-options\";\r\nimport {SelectedModalOption} from \"@shared/services/webapp/modal-options/selected-modal-option\";\r\nimport {CustomerManualCharge} from \"@shared/services/invoicing/invoicing-manual-charge/invoicing-manual-change.service\";\r\nimport {DailyConsumptionDetail} from \"@shared/services/flowing-gas/transportation-account-detail/transportation-account-detail.service\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\n\r\n\r\n@Component({\r\n selector: 'app-edit-customer-parameters',\r\n templateUrl: './edit-customer-parameters.component.html',\r\n styleUrls: ['./edit-customer-parameters.component.css']\r\n})\r\nexport class EditCustomerParametersComponent extends BaseSearchComponent {\r\n model: EditCustomerParametersModel = new EditCustomerParametersModel();\r\n\r\n constructor(\r\n protected appService: AppService,\r\n activatedRoute: ActivatedRoute,\r\n router: Router,\r\n protected alertService: AlertService,\r\n protected commonDataBillingMonthService: CommonDataBillingMonthService,\r\n protected commonDataGasDayService: CommonDataGasdayService,\r\n protected invoicingInvoiceBillingProcessService: InvoicingInvoiceBillingProcessService,\r\n protected enterpriseEnrichmentService: EnterpriseEnrichmentService,\r\n protected enterpriseService: EnterpriseService,\r\n protected nominationGroupService: NominationGroupService,\r\n protected accountsCustomerInvoiceParametersService: InvoicingCustomerInvoiceParametersService,\r\n protected modalService: YesNoCancelModalService,\r\n ) {\r\n super('Edit Customer Parameters', appService, activatedRoute, router, alertService);\r\n enterpriseEnrichmentService.setEnrichmentResource(enterpriseService);\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return false;\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n // this.activatedRoute.params.subscribe((data)=>{\r\n // this.model.customerId = data.customerId;\r\n // });\r\n this.model.customerId = this.activatedRoute.snapshot.params['customerId'];\r\n\r\n const getOpenBillingMonth$ = this.commonDataBillingMonthService.getOpen()\r\n .pipe(\r\n tap(openBillingMonth => {\r\n this.model.openBillingMonth = openBillingMonth;\r\n })\r\n );\r\n\r\n const getEnterprise$ = this.queryEnterprise();\r\n\r\n\r\n return forkJoin([ getOpenBillingMonth$, getEnterprise$]);\r\n }\r\n\r\n public addTaxZeroRatedAlert():void{\r\n this.alertService.clearMessages();\r\n let message = \"\";\r\n if(this.model.invoiceBillingProcess.isFinal){\r\n message= \"The open billing month's invoice process status is Final. You cannot edit the tax zero rated parameter.\";\r\n this.model.zeroTaxRatedDisabled = true;\r\n }else{\r\n message = \"Editing the Tax Zero Rated parameter will cause charges for the current open billing month '\" + this.model.openBillingMonth.gasMonth.toDisplayFormat() +\r\n \"' and preliminary billing month '\" + this.model.openBillingMonth.gasMonth.addMonth(1).toDisplayFormat() + \"' to be reset for \" + this.model.customer.shortName + \" (\" + this.model.customer.mnemonic + \").\";\r\n }\r\n\r\n this.alertService.addWarnMessage(\"Warning\",message);\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n const customerInvoiceParametersRequest = new CustomerInvoiceParametersRequest();\r\n customerInvoiceParametersRequest.customerId = this.model.customerId;\r\n\r\n const queryCustomerInvoiceParameters$ = this.accountsCustomerInvoiceParametersService.queryCustomerInvoiceParameters(customerInvoiceParametersRequest)\r\n .pipe(\r\n tap(customerInvoiceParameters => {\r\n // MR there should always be one of these\r\n const customerInvoiceParametersRow = _.find(customerInvoiceParameters, x => GasMonth.isEndOfTime(x.expiryBillingMonth.toDate));\r\n\r\n if(_.isNil(customerInvoiceParametersRow)){\r\n }else {\r\n // what we are looking for is the max version in open billing month.\r\n this.model.customerInvoiceParametersRow = customerInvoiceParametersRow;\r\n this.model.saveRequest.isTaxExempt = customerInvoiceParametersRow.isTaxExempt;\r\n this.model.saveRequest.isPrintable = customerInvoiceParametersRow.isPrintable;\r\n this.model.saveRequest.isSSSSigned = customerInvoiceParametersRow.isSSSSigned;\r\n }\r\n })\r\n );\r\n // InvoiceBillingProcess\r\n const queryInvoicingInvoiceBillingProcessService$ = this.invoicingInvoiceBillingProcessService.get(this.model.openBillingMonth.gasMonth)\r\n .pipe(\r\n tap(invoiceBillingProcess => {\r\n this.model.invoiceBillingProcess = invoiceBillingProcess;\r\n this.addTaxZeroRatedAlert();\r\n })\r\n );\r\n\r\n return forkJoin([queryCustomerInvoiceParameters$,queryInvoicingInvoiceBillingProcessService$]);\r\n }\r\n\r\n private queryEnterprise(): Observable {\r\n return this.enterpriseService.get(this.model.customerId)\r\n .pipe(\r\n tap(enterprise => {\r\n this.model.customer = enterprise;\r\n })\r\n );\r\n }\r\n\r\n protected performSearch(): Observable {\r\n return undefined;\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n }\r\n public saveClicked():void{\r\n let saveOrUpdateInvoiceParametersService$ = null;\r\n if(this.model.openBillingMonth.gasMonth.isEqual(this.model.customerInvoiceParametersRow?.effectiveBillingMonth)) {\r\n saveOrUpdateInvoiceParametersService$ = this.accountsCustomerInvoiceParametersService.updateCustomerInvoiceParameters(this.model);\r\n }else{\r\n saveOrUpdateInvoiceParametersService$ = this.accountsCustomerInvoiceParametersService.insertCustomerInvoiceParameters(this.model);\r\n }\r\n saveOrUpdateInvoiceParametersService$.subscribe(\r\n () => {this.goToCustomerInvoiceParametersPage(true);}\r\n );\r\n }\r\n\r\n private goToCustomerInvoiceParametersPage(isSaved: boolean): void {\r\n const queryParams = {\r\n enterpriseCid: this.model.customerId,\r\n gasMonth: this.model.openBillingMonth.gasMonth.toDisplayFormat(),\r\n saved: isSaved\r\n };\r\n const url = ['/app', this.getPipelineCode(), 'customerparameters'];\r\n this.router.navigate(url, {queryParams}).then(() => {});\r\n }\r\n\r\n public cancelClicked() {\r\n this.alertService.clearMessages();\r\n if (this.model.hasChanged()) {\r\n const yesNoModalOptions = new YesNoModalOptions('Discard Changes', 'Unsaved Changes will be lost, would you like to continue?');\r\n this.modalService.show(yesNoModalOptions).subscribe((selectedModalOption: SelectedModalOption) => {\r\n if (selectedModalOption === SelectedModalOption.Yes) {\r\n this.goToCustomerInvoiceParametersPage(false);\r\n }\r\n });\r\n }else{\r\n this.goToCustomerInvoiceParametersPage(false);\r\n }\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {FlowinggasResourceService} from \"@shared/resources/flowinggas-resource.service\";\r\nimport {Observable} from \"rxjs\";\r\n\r\nexport class DetailMeasurementRequest\r\n{\r\n constructor(public stationNumber: string, public stationType: string, public gasDay: string, public energy: string, ){}\r\n}\r\n\r\n@Injectable()\r\nexport class FlowingGasTestService {\r\n\r\n constructor(private flowinggasResource: FlowinggasResourceService) { }\r\n\r\n postCurrentMeasurementGasDay(currentMeasurementGasDayData: Array): Observable {\r\n return this.flowinggasResource.postWithNoResponseBody('/detailmeasurements', currentMeasurementGasDayData);\r\n }\r\n\r\n postPriorMeasurementGasDay(priorMeasurementGasDayData: Array): Observable {\r\n return this.flowinggasResource.postWithNoResponseBody('/priorDayMeasurements', priorMeasurementGasDayData);\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nexport class CapacityAllocationType{\r\n constructor(value: string) {\r\n this.value = value;\r\n }\r\n value: string;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CapacityAllocationTypeService{\r\n public static MCA: CapacityAllocationType = new CapacityAllocationType(\"MCA\");\r\n public static Manual: CapacityAllocationType = new CapacityAllocationType(\"Manual\");\r\n public static CGL: CapacityAllocationType = new CapacityAllocationType(\"CGL\");\r\n\r\n public CapacityAllocationTypes(){\r\n let types = new Array();\r\n\r\n types.push(CapacityAllocationTypeService.MCA);\r\n types.push(CapacityAllocationTypeService.Manual);\r\n types.push(CapacityAllocationTypeService.CGL);\r\n\r\n return types;\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n
\r\n
\r\n

\r\n Configure System Date\r\n

\r\n
\r\n
\r\n \r\n \r\n \r\n\r\n
\r\n
\r\n {{ model.currentSystemDate.originalDateTime | dateFormat:'YYYY-MMM-DD H:mm:ss' }}\r\n \r\n
\r\n
\r\n {{ model.frozenDateTime.originalDateTime | dateFormat:'YYYY-MMM-DD H:mm:ss' }}\r\n
\r\n
\r\n {{ model.frozenCCTDateTimeAsDate | dateFormat:'YYYY-MMM-DD H:mm:ss' }}\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n {{ model.localTestSettingsPath }}\r\n
\r\n
\r\n
\r\n
\r\n\r\n

Please ensure ALL jobs have run to completion prior to loading any .csv data.

\r\n\r\n
\r\n
\r\n

\r\n Current Day Measurements\r\n

\r\n\r\n
\r\n
\r\n .csv file must contain data for the same GasDay\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n Browse...\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n

\r\n Prior Day Measurements\r\n

\r\n\r\n
\r\n
\r\n .csv file must contain data for any GasDay earlier than the 'Today'\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n Browse...\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n

\r\n Configure Measurement Data Source\r\n

\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n","import {forkJoin, Observable} from 'rxjs';\r\nimport {finalize} from \"rxjs/operators\";\r\nimport {Component, OnInit} from '@angular/core';\r\nimport {BaseComponent} from \"@model/base-component\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {TestPageService, SystemClock, LocalTestSettings} from \"@shared/services/webapp/test-page/test-page.service\";\r\nimport {DateTime} from \"@model/date-time\";\r\nimport {AlertService} from \"app/shared/services/webapp/alert/alert.service\";\r\nimport {NominationSystemService} from \"@shared/services/nomination/nomination-system/nomination-system.service\";\r\nimport {NominationPipelineService} from \"@shared/services/nomination/nomination-pipeline/nomination-pipeline.service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {BaseCsvUploadViewModel, CsvUtility} from \"@model/CsvUtility\";\r\nimport {DetailMeasurementRequest, FlowingGasTestService} from \"@shared/services/flowing-gas/flowing-gas-test/flowing-gas-test.service\";\r\nimport * as _ from \"lodash\";\r\nimport * as moment from 'moment';\r\nimport {JobService} from \"@shared/services/job-scheduling/jobs/job.service\";\r\nimport {NominationPipeline} from \"@model/nomination-pipeline\";\r\nimport {FlowingGasPipelineSystemSettingService, PipelineSystemSettingDto} from \"@shared/services/flowing-gas/flowing-gas-pipeline-system-setting-service/flowing-gas-pipeline-system-setting-service\";\r\nimport {CapacityAllocationType, CapacityAllocationTypeService} from \"@shared/classes/models/capacity-allocation-type\";\r\n\r\nclass TestPageViewModel {\r\n currentSystemDate: DateTime;\r\n frozenDateTime: DateTime;\r\n frozenDateToSet: GasDay;\r\n frozenTimeToSet: DateTime;\r\n frozenCCTDateTime: GasDay;\r\n systemDateIsFrozen: boolean;\r\n isSentToMCAForCapacityAllocation: string;\r\n\r\n minGasDay: GasDay;\r\n currentMeasurementGasDay: GasDay;\r\n currentMeasurementGasDayFile: BaseCsvUploadViewModel;\r\n priorMeasurementGasDayFile: BaseCsvUploadViewModel;\r\n\r\n useMeasurementStagingTable: boolean;\r\n\r\n localTestSettingsPath: string;\r\n\r\n get frozenCCTDateTimeAsDate(): Date {\r\n return this.frozenCCTDateTime.toDate;\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'app-test-page',\r\n templateUrl: './test-page.component.html',\r\n styleUrls: ['./test-page.component.css'],\r\n providers: [CsvUtility]\r\n})\r\nexport class TestPageComponent extends BaseComponent implements OnInit {\r\n model: TestPageViewModel;\r\n isLoadingResources: boolean;\r\n currentMeasurementGasDayExtractedData: Array;\r\n priorMeasurementGasDayExtractedData: Array;\r\n capacityAllocations: Array\r\n\r\n readonly FullDateTimeFormatNoSeconds = \"YYYY-MMM-DD hh:mm a\";\r\n readonly MilitaryFormat = \"YYYY-MMM-DD H:mm:ss\";\r\n\r\n constructor(public appService: AppService,\r\n protected alertService: AlertService,\r\n private csvUtility: CsvUtility,\r\n private flowingGasTestService: FlowingGasTestService,\r\n private jobService: JobService,\r\n private testPageService: TestPageService,\r\n private nominationSystemService: NominationSystemService,\r\n private nominationPipelineService: NominationPipelineService,\r\n private sessionService: SessionService,\r\n private flowingGasPipelineSystemSettingService: FlowingGasPipelineSystemSettingService,\r\n private capacityAllocationTypeService: CapacityAllocationTypeService) {\r\n super(appService);\r\n }\r\n\r\n ngOnInit() {\r\n super.setTitle(\"Test Page\");\r\n\r\n this.isLoadingResources = true;\r\n\r\n const currentDate = new Date();\r\n const cctDate = new Date();\r\n cctDate.setMinutes(cctDate.getMinutes() + 60); // add an hour for cct time\r\n\r\n this.model = {\r\n systemDateIsFrozen: false,\r\n currentSystemDate: new DateTime(currentDate),\r\n frozenDateTime: new DateTime(currentDate),\r\n frozenDateToSet: GasDay.today(),\r\n frozenTimeToSet: new DateTime(currentDate),\r\n frozenCCTDateTime: GasDay.parse(cctDate.toString()),\r\n minGasDay: GasDay.today(),\r\n currentMeasurementGasDay: GasDay.today(),\r\n currentMeasurementGasDayFile: new BaseCsvUploadViewModel(),\r\n priorMeasurementGasDayFile: new BaseCsvUploadViewModel()\r\n } as TestPageViewModel;\r\n\r\n this.loadResources();\r\n }\r\n\r\n configureSystemDateTime() {\r\n this.configureClock();\r\n }\r\n\r\n systemDateIsFrozenChanged() {\r\n this.model.systemDateIsFrozen = !this.model.systemDateIsFrozen;\r\n this.configureClock();\r\n }\r\n\r\n loadResources() {\r\n this.nominationSystemService.pipelineGasDay().subscribe(nominationPipelineGasDay => {\r\n this.model.minGasDay = nominationPipelineGasDay.minGasDayForCycleStatus;\r\n this.capacityAllocations = this.capacityAllocationTypeService.CapacityAllocationTypes();\r\n const serviceCalls: Observable[] = [\r\n this.testPageService.get(), // 0\r\n this.nominationPipelineService.getOne(nominationPipelineGasDay.earliestSelectableGasDay), // 1\r\n this.flowingGasPipelineSystemSettingService.getSettings(), // 2\r\n this.testPageService.getLocalTestSettings() // 3\r\n ];\r\n\r\n forkJoin(serviceCalls)\r\n .pipe(\r\n finalize(() => {\r\n this.isLoadingResources = false;\r\n })\r\n )\r\n .subscribe(response => {\r\n this.setViewModelSystemDate(response[0]);\r\n\r\n this.model.isSentToMCAForCapacityAllocation = (response[1] as NominationPipeline).isSentToMCAForCapacityAllocation;\r\n this.model.useMeasurementStagingTable = (response[2].measurementDataSource === MeasurementDataSource[MeasurementDataSource.StagingTable]);\r\n\r\n this.model.localTestSettingsPath = (response[3] as LocalTestSettings).path;\r\n });\r\n });\r\n }\r\n\r\n private configureClock(): void {\r\n const dateFormatted: Date = this.model.frozenDateToSet.toDate;\r\n dateFormatted.setHours(this.model.frozenTimeToSet.toDate().getHours());\r\n dateFormatted.setMinutes(this.model.frozenTimeToSet.toDate().getMinutes());\r\n const newDateTime = new DateTime(dateFormatted);\r\n\r\n this.testPageService.set(this.model.systemDateIsFrozen, newDateTime.format(this.FullDateTimeFormatNoSeconds)).subscribe(response => {\r\n this.setViewModelSystemDate(response);\r\n this.setMenuFrozenClock(this.model.systemDateIsFrozen, newDateTime.toDate());\r\n this.alertService.clearMessages();\r\n if (this.appService.getIsFrozen()) {\r\n this.alertService.addSuccessMessage('Success: ', \"Frozen time now set to : \" + newDateTime.format(this.MilitaryFormat));\r\n } else {\r\n this.alertService.addSuccessMessage('Success: ', \"Frozen time has been disabled\");\r\n }\r\n });\r\n }\r\n\r\n private setViewModelSystemDate(response: SystemClock): void {\r\n const currentDate = new Date();\r\n this.model.systemDateIsFrozen = response.isFrozen;\r\n this.model.currentSystemDate = new DateTime(currentDate);\r\n\r\n const frozenDateTime = response.isFrozen ? response.frozenDateTime : currentDate;\r\n this.model.frozenDateTime = new DateTime(frozenDateTime);\r\n this.model.frozenDateToSet = GasDay.parse(frozenDateTime.toString());\r\n this.model.frozenTimeToSet = new DateTime(frozenDateTime);\r\n this.model.currentMeasurementGasDay = GasDay.parse(frozenDateTime.toString());\r\n\r\n this.nominationSystemService.applicationServerTimes().subscribe(response2 => {\r\n const cctDate = new Date(response2.centralClockTime);\r\n const clockDate = new Date(response2.clockTime);\r\n const diff = cctDate.valueOf() - clockDate.valueOf();\r\n this.model.frozenCCTDateTime = GasDay.parse(new DateTime(new Date(this.model.frozenDateTime.toDate().valueOf() + diff)).toString());\r\n });\r\n }\r\n\r\n private setMenuFrozenClock(isFrozenFlag: boolean, frozenDateTime: Date) {\r\n this.appService.setIsFrozen(isFrozenFlag);\r\n this.appService.setFrozenTime(frozenDateTime);\r\n }\r\n\r\n public refreshSystemTime(): void {\r\n const currentDate = new Date();\r\n this.model.currentSystemDate = new DateTime(currentDate);\r\n }\r\n\r\n public onViewChanged(e: any): void {\r\n if (this.isLoadingResources) return; // wait until resources have finished loading\r\n\r\n this.nominationPipelineService.updateIsSentToMCAForCapacityAllocation(this.sessionService.getPipeline().code, this.model.isSentToMCAForCapacityAllocation)\r\n .subscribe(() => {\r\n });\r\n }\r\n\r\n public isValidFile(model: BaseCsvUploadViewModel): boolean {\r\n return (model && model.isValidFile());\r\n }\r\n\r\n public fileHasErrors(model: BaseCsvUploadViewModel): boolean {\r\n return (model.fileName && !model.isValid);\r\n }\r\n\r\n public currentMeasurementGasDayUpdateClick(e) {\r\n if (e.target.files.length === 0) {\r\n return;\r\n }\r\n\r\n this.model.currentMeasurementGasDayFile.fileName = e.target.files[0].name;\r\n const reader = new FileReader();\r\n reader.onload = (event: any) => {\r\n this.alertService.clearMessages();\r\n this.currentMeasurementGasDayExtractedData = [];\r\n this.extractMeasurementGasDayData(event.target.result, this.model.currentMeasurementGasDayFile, this.currentMeasurementGasDayExtractedData);\r\n\r\n if (!this.model.currentMeasurementGasDayFile.isValid) {\r\n return;\r\n }\r\n\r\n const gasDayAsFileDate: string = `${this.model.currentMeasurementGasDay.month}/${this.model.currentMeasurementGasDay.day}/${this.model.currentMeasurementGasDay.year}`;\r\n if (!_.every(this.currentMeasurementGasDayExtractedData, ['gasDay', gasDayAsFileDate])) {\r\n this.model.currentMeasurementGasDayFile.isValid = false;\r\n this.model.currentMeasurementGasDayFile.error = 'The file contains gas days that do not match the selected GasDay or are of an invalid format. Use m/d/yyyy.';\r\n }\r\n };\r\n reader.readAsText(e.target.files[0]);\r\n }\r\n\r\n currentMeasurementGasDayUploadClicked() {\r\n this.flowingGasTestService.postCurrentMeasurementGasDay(this.currentMeasurementGasDayExtractedData).subscribe(() => {\r\n this.alertService.addSuccessMessage('Success', 'Current Day Measurements Uploaded. Kicking off Summarize Current Day Measurement job.');\r\n this.jobService.submitJob('AfterFlow', 'SummarizeMeasurementStep').subscribe(x => {\r\n this.model.currentMeasurementGasDayFile = new BaseCsvUploadViewModel();\r\n this.currentMeasurementGasDayExtractedData = null;\r\n this.alertService.addSuccessMessage('Success', 'The summarize measurement job has been submitted.');\r\n });\r\n });\r\n }\r\n\r\n public priorMeasurementGasDayUpdateClick(e) {\r\n if (e.target.files.length === 0) {\r\n return;\r\n }\r\n\r\n this.model.priorMeasurementGasDayFile.fileName = e.target.files[0].name;\r\n const reader = new FileReader();\r\n reader.onload = (event: any) => {\r\n this.alertService.clearMessages();\r\n this.priorMeasurementGasDayExtractedData = [];\r\n this.extractMeasurementGasDayData(event.target.result, this.model.priorMeasurementGasDayFile, this.priorMeasurementGasDayExtractedData);\r\n\r\n if (!this.model.priorMeasurementGasDayFile.isValid) {\r\n return;\r\n }\r\n\r\n const gasDayMoment = moment(this.priorMeasurementGasDayExtractedData[0].gasDay, 'M/D/YYYY');\r\n if (!gasDayMoment.isValid()) {\r\n this.model.priorMeasurementGasDayFile.error = 'The file contains gas days that are of an invalid format. Use m/d/yyyy.';\r\n this.model.priorMeasurementGasDayFile.isValid = false;\r\n return;\r\n }\r\n\r\n const gasDay: GasDay = GasDay.from(gasDayMoment.toDate());\r\n const gasDayAsFileDate: string = `${gasDay.month}/${gasDay.day}/${gasDay.year}`;\r\n if (!_.every(this.priorMeasurementGasDayExtractedData, ['gasDay', gasDayAsFileDate])) {\r\n this.model.priorMeasurementGasDayFile.error = 'The file contains records with different gas days.';\r\n this.model.priorMeasurementGasDayFile.isValid = false;\r\n }\r\n\r\n if (gasDay.isGreatThanOrEqualTo(GasDay.today())) {\r\n this.model.priorMeasurementGasDayFile.error = 'The file contains gas days that are not earlier than today.';\r\n this.model.priorMeasurementGasDayFile.isValid = false;\r\n return;\r\n }\r\n };\r\n reader.readAsText(e.target.files[0]);\r\n }\r\n\r\n priorMeasurementGasDayUploadClicked() {\r\n this.flowingGasTestService.postPriorMeasurementGasDay(this.priorMeasurementGasDayExtractedData).subscribe(() => {\r\n this.alertService.addSuccessMessage('Success', 'Uploaded Prior Day Measurements. Kicking off Summarize Prior Day Measurement job.');\r\n\r\n this.jobService.submitJob('AfterFlow', 'SummarizeMeasurementForIpasStep').subscribe(i => {\r\n this.model.priorMeasurementGasDayFile = new BaseCsvUploadViewModel();\r\n this.priorMeasurementGasDayExtractedData = null;\r\n this.alertService.addSuccessMessage('Success', 'The Summarize Measurement For IPAs job has been submitted.');\r\n\r\n this.jobService.submitJob('AfterFlow', 'SummarizeMeasurementForPpasStep').subscribe(p => {\r\n this.alertService.addSuccessMessage('Success', 'The Summarize Measurement For PPAs job has been submitted.');\r\n });\r\n });\r\n });\r\n }\r\n\r\n protected extractMeasurementGasDayData(data: string, model: BaseCsvUploadViewModel, measurementGasDayExtractedData: DetailMeasurementRequest[]) {\r\n const headers = ['StnNo', 'StnType', 'GasDay', 'Energy'];\r\n\r\n model.error = '';\r\n model.isValid = false;\r\n\r\n this.csvUtility.extractData(data, model, headers, (result, fields) => {\r\n for (let i = 0; i < result.length; i++) {\r\n measurementGasDayExtractedData.push(new DetailMeasurementRequest(\r\n result[i][this.csvUtility.findColumnHeaderColumn(fields, headers[0])],\r\n result[i][this.csvUtility.findColumnHeaderColumn(fields, headers[1])],\r\n result[i][this.csvUtility.findColumnHeaderColumn(fields, headers[2])],\r\n result[i][this.csvUtility.findColumnHeaderColumn(fields, headers[3])]));\r\n }\r\n }, true, true);\r\n }\r\n\r\n public onMeasurementDataSourceChanged(e: any) : void {\r\n if (this.isLoadingResources) return; // wait until resources have finished loading\r\n if (this.model.useMeasurementStagingTable === e) return; // did it really change?\r\n\r\n this.alertService.clearMessages();\r\n this.model.useMeasurementStagingTable = e;\r\n\r\n const pipelineSystemSettingDto: PipelineSystemSettingDto = new PipelineSystemSettingDto();\r\n let msg = \"\";\r\n if (this.model.useMeasurementStagingTable) {\r\n pipelineSystemSettingDto.measurementDataSource = MeasurementDataSource[MeasurementDataSource.StagingTable];\r\n msg = 'The measurement data source has been set to the staging table.';\r\n } else {\r\n pipelineSystemSettingDto.measurementDataSource = MeasurementDataSource[MeasurementDataSource.GmsSoap];\r\n msg = 'The measurement data source has been set to the GMS Service.';\r\n }\r\n this.flowingGasPipelineSystemSettingService.saveSettings(pipelineSystemSettingDto).subscribe(result => {\r\n this.alertService.addSuccessMessage('Success', msg);\r\n }\r\n );\r\n }\r\n\r\n}\r\n\r\nexport enum MeasurementDataSource\r\n{\r\n GmsSoap,\r\n StagingTable\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {Observable} from \"rxjs\";\r\n\r\nimport {CommondataResourceService} from \"@shared/resources/commondata-resource.service\";\r\nimport {HttpResponse} from \"@angular/common/http\";\r\n\r\nexport interface PageContent {\r\n id: number;\r\n pageName: string;\r\n name: string;\r\n state: string;\r\n content: string;\r\n version: number;\r\n}\r\n\r\nexport interface PdfContent {\r\n content: string;\r\n fileName: string;\r\n contentType: string;\r\n}\r\n\r\n@Injectable()\r\nexport class HomeService {\r\n\r\n constructor(private commondataResource: CommondataResourceService) {\r\n }\r\n\r\n getCurrent(): Observable {\r\n return this.commondataResource.get('/home');\r\n }\r\n\r\n update(pipelineCode: string, request: PageContent): Observable {\r\n const body = {\r\n id: request.id,\r\n name: request.pageName,\r\n state: request.state,\r\n content: request.content,\r\n version: request.version,\r\n pipeline: pipelineCode\r\n };\r\n\r\n return this.commondataResource.put('/home', body);\r\n }\r\n\r\n resetToDefault(pipelineCode: string, id: number, version: number): Observable {\r\n const body = {id: id, version: version, pipeline: pipelineCode};\r\n\r\n return this.commondataResource.put('/home/reset', body);\r\n }\r\n\r\n getPdf(fileName: string): Observable> {\r\n return this.commondataResource.getData(`/home/fileDownloadLinks/${fileName}/pdf`,true);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport {DomSanitizer} from \"@angular/platform-browser\";\r\n\r\n@Pipe({\r\n name: 'safeHtml'\r\n})\r\nexport class SafeHtmlPipe implements PipeTransform {\r\n constructor(private sanitized: DomSanitizer) {}\r\n transform(value: string): any {\r\n return this.sanitized.bypassSecurityTrustHtml(value);\r\n }\r\n\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n\r\n To subscribe enter your email address and click submit.\"\r\n eventType=\"OperationalEvent\"\r\n subscriptionMessage=\"Operational Notifications\"\r\n *ngIf=\"canUserSubscribeToEmails()\"\r\n [emailSubscriptionService]=\"emailSubscriptionService\">\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n","import {Component, OnDestroy, OnInit} from '@angular/core';\r\nimport {BaseComponent} from \"@model/base-component\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {HomeService, PageContent} from \"@shared/services/common-data/home/home.service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {Subscription} from \"rxjs\";\r\nimport {UserService} from \"@shared/services/webapp/user/user-service\";\r\nimport {User} from \"@model/user\";\r\nimport {CommonDataEmailSubscriptionService} from \"@shared/services/common-data/common-data-email-subscription/common-data-email-subscription.service\";\r\nimport {IEmailSubscriptionService} from \"@shared/services/nomination/email-subscription/email-subscription.service\";\r\nimport {NominationPipeline} from \"@model/nomination-pipeline\";\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\nclass HomeViewModel {\r\n content: string = '';\r\n username: string = '';\r\n user: User;\r\n pipeline: NominationPipeline;\r\n}\r\n\r\n@Component({\r\n selector: 'app-home',\r\n templateUrl: './home.component.html',\r\n styleUrls: ['./home.component.css']\r\n})\r\nexport class HomeComponent extends BaseComponent implements OnInit, OnDestroy {\r\n model: HomeViewModel = new HomeViewModel();\r\n pipelineChange$: Subscription = null;\r\n public emailSubscriptionService: IEmailSubscriptionService;\r\n\r\n constructor(protected appService: AppService,\r\n protected commonDataEmailSubscriptionService: CommonDataEmailSubscriptionService,\r\n private homeService: HomeService,\r\n private userService: UserService,\r\n private sessionService: SessionService,private http: HttpClient) {\r\n super(appService);\r\n\r\n this.emailSubscriptionService = commonDataEmailSubscriptionService;\r\n }\r\n\r\n ngOnInit() {\r\n super.setTitle(\"Home\");\r\n this.pipelineChange$ =\r\n this.sessionService.pipelineChangeEvent\r\n .subscribe(() => {\r\n this.getHomePage();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.pipelineChange$) {\r\n this.pipelineChange$.unsubscribe();\r\n this.pipelineChange$ = null;\r\n }\r\n }\r\n\r\n getHomePage() {\r\n this.homeService.getCurrent()\r\n .subscribe(response => {\r\n this.setHomePage(response);\r\n });\r\n }\r\n\r\n setHomePage(pageContent: PageContent) {\r\n this.model.user = this.userService.user;\r\n this.model.username = this.model.user.username.split('\\\\')[1];\r\n this.model.content = this.parseHtml(pageContent);\r\n this.model.pipeline = this.sessionService.getPipeline();\r\n }\r\n\r\n canUserSubscribeToEmails(): boolean {\r\n if (this.model.pipeline?.code !== 'CGL') {\r\n return false;\r\n }\r\n if (this.model.user.isInternalUser){\r\n const internalRoles = [\r\n `${this.model.pipeline.code}_${User.NominationAnalystRole}`\r\n ];\r\n return this.model.user.hasAnyRole(internalRoles);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n canUserViewCGLFiles(): boolean {\r\n if (this.model.pipeline?.code !== 'CGL') {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n downloadFile(fileAddress: string, fileName: string) {\r\n const link = document.createElement(\"a\");\r\n link.download = fileName;\r\n link.href = fileAddress;\r\n link.click();\r\n }\r\n\r\n downloadPdf(fileName: string) {\r\n this.homeService.getPdf(fileName).subscribe(pdf => this.savePdfFile(pdf));\r\n }\r\n\r\n\r\n // Parses angular variables in {{variable}} format into their actual values\r\n // Taken from https://stackoverflow.com/questions/45234240/how-to-render-angular-variables-using-innerhtml-angular2\r\n private parseHtml(pageContent: PageContent) {\r\n return pageContent.content.replace(/{{([^}}]+)?}}/g, ($1, $2) => {\r\n return $2.split('.').reduce((p, c) => p ? p[c] : this.model.username, this);\r\n });\r\n }\r\n}\r\n","import { Component, OnDestroy, AfterViewInit, EventEmitter, Input, Output } from '@angular/core';\r\ndeclare var tinymce: any;\r\n\r\n@Component({\r\n selector: 'app-tiny-mce',\r\n templateUrl: './content-editor.component.html'\r\n})\r\nexport class ContentEditorComponent implements AfterViewInit, OnDestroy {\r\n @Input() elementId: String;\r\n @Input() text: String;\r\n @Output() onEditorKeyup = new EventEmitter();\r\n\r\n editor;\r\n\r\n ngAfterViewInit() {\r\n tinymce.init({\r\n selector: '#' + this.elementId,\r\n plugins: ['code', 'link', 'paste', 'table', 'lists', 'textcolor'],\r\n toolbar1: 'insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image',\r\n toolbar2: 'print preview media | forecolor backcolor emoticons',\r\n skin: false,\r\n setup: editor => {\r\n this.editor = editor;\r\n editor.on('keyup', () => {\r\n const content = editor.getContent();\r\n this.onEditorKeyup.emit(content);\r\n });\r\n editor.on('dirty', () => {\r\n const content = editor.getContent();\r\n this.onEditorKeyup.emit(content);\r\n });\r\n },\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n tinymce.remove(this.editor);\r\n }\r\n\r\n // Used to update TinyMCE content after it has been initialized\r\n setContent(content): void {\r\n tinymce.get(this.elementId).setContent(content);\r\n }\r\n}\r\n","\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\r\n","import {Route} from \"@angular/router\";\r\nimport {HomeComponent} from \"./home.component\";\r\nimport {EditHomeComponent} from \"./edit-home/edit-home.component\";\r\nimport {AuthorizationService} from \"@shared/services/webapp/authorization/authorization.service\";\r\n\r\nexport const HomeRoutes: Route[] = [\r\n {\r\n path: 'home/edit',\r\n component: EditHomeComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['Home-Write']},\r\n },\r\n {\r\n path: 'home/forceLoginForm',\r\n component: HomeComponent,\r\n canActivate: [AuthorizationService],\r\n data: {forceLoginForm: true}\r\n },\r\n {\r\n path: 'home',\r\n component: HomeComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['Home-Read']}\r\n }\r\n];\r\n","import { Component, OnInit, ViewChild } from '@angular/core';\r\nimport {BaseComponent} from '@model/base-component';\r\nimport {AppService} from '@shared/services/webapp/app/app.service';\r\nimport {HomeService, PageContent} from '@shared/services/common-data/home/home.service';\r\nimport {AlertService} from \"app/shared/services/webapp/alert/alert.service\";\r\nimport {Router} from '@angular/router';\r\nimport {DateFormatPipe} from '@shared/pipes/date-format/date-format.pipe';\r\nimport {ContentEditorComponent} from '@shared/components/content-editor/content-editor.component';\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {ModalComponent} from \"@shared/components/modal/modal.component\";\r\n\r\nclass EditHomeModel {\r\n pageText: string;\r\n pageHasBeenModified: boolean;\r\n loadingEditorContent: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'app-edit-home',\r\n templateUrl: './edit-home.component.html',\r\n styleUrls: ['./edit-home.component.css']\r\n})\r\nexport class EditHomeComponent extends BaseComponent implements OnInit {\r\n model: EditHomeModel;\r\n\r\n private pipelineCode: string;\r\n private pageContent: PageContent;\r\n\r\n @ViewChild(ContentEditorComponent)\r\n contentEditorComponent: ContentEditorComponent;\r\n\r\n @ViewChild(ModalComponent) modal: ModalComponent;\r\n\r\n constructor(protected appService: AppService, protected homeService: HomeService, protected sessionService: SessionService,\r\n protected alertService: AlertService, private router: Router) {\r\n super(appService);\r\n }\r\n\r\n ngOnInit() {\r\n super.setTitle('Edit Home');\r\n\r\n this.model = {\r\n loadingEditorContent: true\r\n };\r\n\r\n this.pipelineCode = this.sessionService.getPipeline().code;\r\n this.refreshEditorContent();\r\n }\r\n\r\n saveClick(): void {\r\n this.alertService.clearMessages();\r\n this.pageContent.content = this.model.pageText;\r\n this.homeService.update(this.pipelineCode, this.pageContent).subscribe(() => {\r\n // TODO: Get DateFormatPipe injection working\r\n const formattedDate = new DateFormatPipe().transform(new Date(), 'YYYY-MMM-DD H:mm:ss');\r\n this.alertService.addSuccessMessage('Success', `Home page content updated at ${formattedDate}` );\r\n this.refreshEditorContent();\r\n });\r\n }\r\n\r\n refreshEditorContent(): void {\r\n this.homeService.getCurrent().subscribe(response => {\r\n this.pageContent = response;\r\n this.model.pageText = response.content;\r\n this.model.loadingEditorContent = false;\r\n if (this.contentEditorComponent) {\r\n this.contentEditorComponent.setContent(this.model.pageText);\r\n }\r\n });\r\n }\r\n\r\n resetToDefaultClick(): void {\r\n this.alertService.clearMessages();\r\n const result = window.confirm('Reset home page content to default?');\r\n if (!result) { return; }\r\n this.homeService.resetToDefault(this.pipelineCode, this.pageContent.id, this.pageContent.version).subscribe(() => {\r\n const formattedDate = new DateFormatPipe().transform(new Date(), 'YYYY-MMM-DD H:mm:ss');\r\n this.alertService.addSuccessMessage('Success', `Home page content has been reset to the default settings at ${formattedDate}` );\r\n this.refreshEditorContent();\r\n });\r\n }\r\n\r\n previewClick(): void {\r\n this.modal.show();\r\n }\r\n\r\n cancelClick(): void {\r\n this.router.navigate(['/app', this.getPipelineCode(), 'home']).then(() => {});\r\n }\r\n\r\n tryToEnableSaveButton(content: string): void {\r\n if (this.model.pageHasBeenModified || content === this.model.pageText) { return; }\r\n this.model.pageHasBeenModified = true;\r\n }\r\n\r\n keyupHandlerFunction(content: string): void {\r\n this.tryToEnableSaveButton(content);\r\n this.model.pageText = content;\r\n this.contentEditorComponent.editor.setDirty();\r\n }\r\n}\r\n","import {IGasDay} from \"@model/gas-day-month.interface\";\r\nimport {NominationEvent} from \"@model/nomination-event\";\r\n\r\nexport class AutoBalanceEvent {\r\n guid: string;\r\n event: string;\r\n eventType: NominationEvent;\r\n createDateTime: Date;\r\n}\r\n\r\nexport class AutoBalanceEventsRequest {\r\n gasDay: IGasDay;\r\n gasCycleCode: string;\r\n\r\n constructor(gasDay: IGasDay, gasCycleCode?: string) {\r\n this.gasDay = gasDay;\r\n this.gasCycleCode = gasCycleCode;\r\n }\r\n}\r\n","import {AutoBalanceEvent} from \"@shared/services/nomination/auto-balance-log/auto-balance-events.model\";\r\nimport {GasCycle} from \"@model/gas-cycle\";\r\nimport {GasDayCycle} from \"@model/gas-day-cycle\";\r\nimport {IGasDay} from \"@model/gas-day-month.interface\";\r\nimport {BaseViewModel} from \"@model/base-view-model\";\r\nimport {NominationPipelineGasDay} from \"@model/nomination-pipeline-gas-day\";\r\nimport {GasDayCycleStatusCollection} from \"@model/gas-day-cycle-status-collection\";\r\nimport {GasCycleLogic} from \"app/shared/classes/gas-cycle.logic\";\r\n\r\nexport class AutoBalanceEventsModel extends BaseViewModel {\r\n pipelineGasDay: NominationPipelineGasDay;\r\n gasDayCycleStatuses: GasDayCycleStatusCollection = GasDayCycleStatusCollection.create();\r\n latestGasDayCycle: GasDayCycle;\r\n gasCycles: GasCycle[] = [];\r\n\r\n searchParams: AutoBalanceEventsSearchParams = new AutoBalanceEventsSearchParams();\r\n lastSearchParams: AutoBalanceEventsSearchParams;\r\n searchResults: AutoBalanceEvent[];\r\n\r\n public get gasCycleCodeFromSearchParams(): string {\r\n return GasCycleLogic.buildGasCycleCodeForRequest(this.gasDayCycleStatuses, this.searchParams.gasCycleCode, false, true);\r\n }\r\n}\r\n\r\nexport class AutoBalanceEventsSearchParams {\r\n gasDay: IGasDay;\r\n gasCycleCode: string = GasCycle.TimelyCycleCode;\r\n gasDayIsValid = true;\r\n}\r\n","import * as _ from \"lodash\";\r\n\r\nexport class NominationEvent {\r\n\r\n public static NominationRequested: NominationEvent = new NominationEvent('NominationRequested', 'Nomination Requested' , 'Nom Request');\r\n public static CapacityAllocation: NominationEvent = new NominationEvent('CapacityAllocation', 'Capacity Allocation', 'Cap Alloc');\r\n public static AutoBalanceHub: NominationEvent = new NominationEvent('AutoBalanceHub', 'Auto Balance Hub', 'AB Hub');\r\n public static AutoBalanceCapacityAllocation: NominationEvent = new NominationEvent('AutoBalanceCapacityAllocation', 'Auto Balance Capacity Allocation', 'AB Cap Alloc');\r\n public static OperatorQuantityEntered: NominationEvent = new NominationEvent('OperatorQuantityEntered', 'Operator Quantity Entered', 'Operator Quantity Enterered');\r\n public static ValidateStandingNom: NominationEvent = new NominationEvent('ValidateStandingNom', 'Validate Standing Nomination', 'Validate Standing Nomination');\r\n public static ValidateITBidFloor: NominationEvent = new NominationEvent('ValidateITBidFloor', 'Validate IT Bid Floor', 'Validate IT Bid Floor');\r\n public static ValidateFirmInjection: NominationEvent = new NominationEvent('ValidateFirmInjection', 'Validate Firm Injection', 'Validate Firm Injection');\r\n public static ValidateStorageWithdrawal: NominationEvent = new NominationEvent('ValidateStorageWithdrawal', 'Validate Storage Transporation', 'Validate Storage Transportation');\r\n public static ValidateFuelRatio: NominationEvent = new NominationEvent('ValidateFuelRatio', 'Validate Fuel Ratio', 'Validate Fuel Ratio');\r\n public static ConfirmationReceived: NominationEvent = new NominationEvent('ConfirmationReceived', 'Confirmation Received', 'Conf. Received');\r\n public static ScheduledQuantityAdjustment: NominationEvent = new NominationEvent('SQAdjustment', 'SQ Adjustment', 'SQ Adjustment');\r\n public static ImbalanceTransfer: NominationEvent = new NominationEvent('ImbalanceTransfer', 'Imbalance Transfer', 'Imb Transfer');\r\n public static Null: NominationEvent = new NominationEvent('UnknownEvent', '- Unknown Event -', 'Unknown Event');\r\n\r\n public static AutoBalanceLocationPrefix: NominationEvent = new NominationEvent('AutoBalanceLocation', 'Auto Balance Location -', 'AB');\r\n\r\n public static All: NominationEvent[] = [\r\n NominationEvent.NominationRequested,\r\n NominationEvent.CapacityAllocation,\r\n NominationEvent.AutoBalanceHub,\r\n NominationEvent.AutoBalanceCapacityAllocation,\r\n NominationEvent.OperatorQuantityEntered,\r\n NominationEvent.ValidateStandingNom,\r\n NominationEvent.ValidateITBidFloor,\r\n NominationEvent.ValidateFirmInjection,\r\n NominationEvent.ValidateStorageWithdrawal,\r\n NominationEvent.ValidateFuelRatio,\r\n NominationEvent.ConfirmationReceived,\r\n NominationEvent.ScheduledQuantityAdjustment,\r\n NominationEvent.ImbalanceTransfer\r\n ];\r\n\r\n value: string;\r\n name: string;\r\n abbreviatedName: string;\r\n\r\n public static find(event: string): NominationEvent {\r\n if (_.isNil(event)) {\r\n return NominationEvent.Null;\r\n }\r\n\r\n const match = NominationEvent.All.find(x => x.value === event || x.name === event);\r\n if (!_.isNil(match)) {\r\n return match;\r\n }\r\n\r\n if (event.startsWith(NominationEvent.AutoBalanceLocationPrefix.value) ||\r\n event.startsWith(NominationEvent.AutoBalanceLocationPrefix.name)) {\r\n const replacementValue = event.startsWith(NominationEvent.AutoBalanceLocationPrefix.value)\r\n ? NominationEvent.AutoBalanceLocationPrefix.value\r\n : NominationEvent.AutoBalanceLocationPrefix.name;\r\n\r\n const location = event.replace(replacementValue, '');\r\n return NominationEvent.CreateAutoBalanceLocationNominationEvent(location);\r\n }\r\n\r\n return NominationEvent.Null;\r\n }\r\n\r\n public static CreateAutoBalanceLocationNominationEvent(location: string): NominationEvent {\r\n return new NominationEvent(\r\n `${NominationEvent.AutoBalanceLocationPrefix.value}${location}`,\r\n `${NominationEvent.AutoBalanceLocationPrefix.name}${location}`,\r\n `${NominationEvent.AutoBalanceLocationPrefix.abbreviatedName} - ${location}`);\r\n }\r\n\r\n constructor(value: string, name: string, abbreviatedName: string) {\r\n this.value = value;\r\n this.name = name;\r\n this.abbreviatedName = abbreviatedName;\r\n }\r\n}\r\n\r\n","import {Injectable} from '@angular/core';\r\nimport {Observable} from \"rxjs\";\r\n\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {SessionService} from \"../../webapp/session/session.service\";\r\nimport {NominationGroup, NominationNomGroupService} from \"../nomination-nom-group/nomination-nom-group.service\";\r\nimport {NominationEnrichmentService} from \"../nomination-enrichment/nomination-enrichment.service\";\r\nimport {NominationSystemService} from \"../nomination-system/nomination-system.service\";\r\n\r\n\r\nexport class EnrichmentNominationNomGroup {\r\n mnemonic: string;\r\n\r\n constructor(mnemonic: string) {\r\n this.mnemonic = mnemonic;\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport class NominationNomGroupEnrichmentService extends NominationEnrichmentService {\r\n\r\n constructor(\r\n sessionService: SessionService,\r\n private service: NominationNomGroupService,\r\n protected nominationSystemService: NominationSystemService) {\r\n super(sessionService, nominationSystemService);\r\n }\r\n\r\n getAll(gasDay: GasDay): Observable {\r\n return this.service.queryNomGroupNames(gasDay);\r\n }\r\n\r\n get(id: number): Observable {\r\n return this.service.get(id);\r\n }\r\n\r\n addMapEntry(object: NominationGroup) {\r\n this.map[object.id] = new EnrichmentNominationNomGroup(object.mnemonic);\r\n }\r\n\r\n createEnrichmentObject(object: EnrichmentNominationNomGroup) {\r\n return new EnrichmentNominationNomGroup(object.mnemonic);\r\n }\r\n\r\n enrichObject(object: T, cachedEnrichmentObj: EnrichmentNominationNomGroup, enrichedPropertyPrefix: string ) {\r\n object[enrichedPropertyPrefix + (enrichedPropertyPrefix ? 'Mnemonic' : 'mnemonic')] = cachedEnrichmentObj.mnemonic;\r\n }\r\n\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","\r\nimport {of, forkJoin, Observable} from 'rxjs';\r\n\r\nimport {map, concatMap, tap} from 'rxjs/operators';\r\nimport {Injectable} from '@angular/core';\r\nimport {NominationResourceService} from \"@shared/resources/nominations-resource.service\";\r\nimport {AutoBalanceHubLog} from \"./auto-balance-details.model\";\r\nimport {NominationEnterpriseEnrichmentService} from \"../nomination-enterprise-enrichment/nomination-enterprise-enrichment.service\";\r\nimport {NominationLocationEnrichmentService} from \"../nomination-location-enrichment/nomination-location-enrichment.service\";\r\nimport {NominationNomGroupEnrichmentService} from \"../nomination-nom-group-enrichment/nomination-nom-group-enrichment.service\";\r\nimport {GasDayCycle, IGasDayCycleDto} from \"@model/gas-day-cycle\";\r\nimport {AutoBalanceEvent, AutoBalanceEventsRequest} from \"./auto-balance-events.model\";\r\nimport * as _ from \"lodash\";\r\nimport {NominationEvent} from \"@model/nomination-event\";\r\nimport {GCTSHttpParams} from \"app/shared/classes/gcts-http-params\";\r\n\r\n@Injectable()\r\nexport class AutoBalanceLogService {\r\n\r\n constructor(\r\n private nominationResource: NominationResourceService,\r\n private nominationEnterpriseEnrichmentService: NominationEnterpriseEnrichmentService,\r\n private nominationLocationEnrichmentService: NominationLocationEnrichmentService,\r\n private nominationNomGroupEnrichmentService: NominationNomGroupEnrichmentService) {\r\n }\r\n\r\n getEvents(requestParams: AutoBalanceEventsRequest): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n if (requestParams.gasDay != null) {\r\n params.set('gasDay', requestParams.gasDay.toString());\r\n }\r\n if (requestParams.gasCycleCode != null) {\r\n params.set('gasCycleCode', requestParams.gasCycleCode.toString());\r\n }\r\n\r\n return this.nominationResource.get('/autobalance/logs/events', true, params).pipe(\r\n map(events => {\r\n events.forEach(item => {\r\n item.eventType = NominationEvent.find(item.event);\r\n });\r\n return events;\r\n }));\r\n }\r\n\r\n getLatestGasDayCycle(): Observable {\r\n return this.nominationResource.get('/autobalance/logs/latest', true).pipe(\r\n map(gasDayCycleDto => GasDayCycle.create(gasDayCycleDto)));\r\n }\r\n\r\n getLogs(eventGuid: string, nominationGroupId: number): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('guid', eventGuid);\r\n params.setNumber('nominationGroupId', nominationGroupId);\r\n\r\n return this.nominationResource.get('/autobalance/logs', true, params).pipe(\r\n tap(logs => {\r\n logs.forEach(item => {\r\n item.eventType = NominationEvent.find(item.event);\r\n });\r\n }),\r\n concatMap(autoBalanceHubLogs => {\r\n const transactionLogs = _.flatMap(autoBalanceHubLogs, log => log.transactionLogs);\r\n\r\n return forkJoin([\r\n this.nominationEnterpriseEnrichmentService.enrichArray(autoBalanceHubLogs, 'enterpriseId', 'enterprise'),\r\n this.nominationLocationEnrichmentService.enrichArray(autoBalanceHubLogs, 'locationId', 'location'),\r\n this.nominationNomGroupEnrichmentService.enrichArray(autoBalanceHubLogs, 'nominationGroupId', 'nominationGroup'),\r\n this.nominationLocationEnrichmentService.enrichArray(transactionLogs, 'locationId', 'location'),\r\n this.nominationNomGroupEnrichmentService.enrichArray(transactionLogs, 'nominationGroupId', 'nominationGroup')\r\n ]).pipe(concatMap(() => of(autoBalanceHubLogs)));\r\n }), );\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Gas Day: {{model.lastSearchParams?.gasDay | gasDayFormat}}\r\n Cycle (CCT): {{model.lastSearchParams?.gasCycleCode | displayName: 'code' : 'displayValue' : model.gasCycles : 'EOD' }}\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
{{model.lastSearchParams?.gasDay | gasDayFormat}}
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
{{model.lastSearchParams?.gasCycleCode | displayName: 'code' : 'displayValue' : model.gasCycles}}
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n Number of results found: {{model.searchResults.length}}\r\n\r\n
\r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n
\r\n {{event.text}}\r\n
\r\n\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import {forkJoin, Observable} from 'rxjs';\r\n\r\nimport {tap} from 'rxjs/operators';\r\nimport * as _ from \"lodash\";\r\nimport {Component, ViewChild} from '@angular/core';\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {NominationSystemService} from \"@shared/services/nomination/nomination-system/nomination-system.service\";\r\nimport {GasCycleService} from \"@shared/services/nomination/gas-cycle/gas-cycle.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {GasCycle} from \"@model/gas-cycle\";\r\nimport {AutoBalanceLogService} from \"@shared/services/nomination/auto-balance-log/auto-balance-log.service\";\r\nimport {AutoBalanceEventsRequest} from \"@shared/services/nomination/auto-balance-log/auto-balance-events.model\";\r\nimport {AutoBalanceEventsModel, AutoBalanceEventsSearchParams} from \"./auto-balance-events.model\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {DateTime} from \"@model/date-time\";\r\nimport {NominationPipelineGasDay} from \"@model/nomination-pipeline-gas-day\";\r\nimport {GasDayCycle} from \"@model/gas-day-cycle\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {AlertService} from \"app/shared/services/webapp/alert/alert.service\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {GasCycleLogic} from \"@model/gas-cycle.logic\";\r\n\r\n@Component({\r\n selector: 'app-auto-balance-events',\r\n templateUrl: './auto-balance-events.component.html',\r\n styleUrls: ['./auto-balance-events.component.css'],\r\n providers: []\r\n})\r\n\r\nexport class AutoBalanceEventsComponent extends BaseSearchComponent {\r\n static GasDayParam: string = 'gasDay';\r\n static GasDayCodeParam: string = 'gasCycleCode';\r\n\r\n model: AutoBalanceEventsModel = new AutoBalanceEventsModel();\r\n @ViewChild(DxDataGridComponent) autoBalanceEventsDataGrid: DxDataGridComponent;\r\n\r\n constructor(protected appService: AppService,\r\n protected activatedRoute: ActivatedRoute,\r\n protected router: Router,\r\n protected alertService: AlertService,\r\n private nominationSystemService: NominationSystemService,\r\n private gasCycleService: GasCycleService,\r\n private autoBalanceEventService: AutoBalanceLogService) {\r\n super('Auto Balancing Events', appService, activatedRoute, router, alertService);\r\n }\r\n\r\n /**\r\n * Public Methods\r\n */\r\n\r\n onGasDayChanged = (): void => {\r\n // this will be fired even when a null value is returned from the date picker and don't want to reload with a bad date\r\n if (!this.model.searchParams.gasDay) return;\r\n\r\n // This will force the GasCycle to get set to the default for the GasDay.\r\n this.model.searchParams.gasCycleCode = null;\r\n\r\n this.loadSearchResources().subscribe(() => {});\r\n };\r\n\r\n public formatDateTime = (obj): string => {\r\n return new DateTime(obj).toDisplayFormat();\r\n };\r\n\r\n public gasCyclePlaceholder(): string {\r\n return GasCycleLogic.placeholder(this.model.gasDayCycleStatuses);\r\n }\r\n\r\n public isGasCycleRequired(): boolean {\r\n return GasCycleLogic.isRequired(this.model.gasDayCycleStatuses);\r\n }\r\n\r\n /**\r\n * Protected Methods\r\n */\r\n\r\n protected loadInitialResources(): Observable {\r\n const serviceCalls: Array = [\r\n this.nominationSystemService.pipelineGasDay(), // 0\r\n this.autoBalanceEventService.getLatestGasDayCycle() // 1\r\n ];\r\n\r\n return forkJoin(serviceCalls).pipe(tap(responses => {\r\n this.model.pipelineGasDay = responses[0];\r\n this.model.latestGasDayCycle = responses[1];\r\n }));\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return this.gasDayCycleParamValidator().isValid(params);\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams = new AutoBalanceEventsSearchParams();\r\n this.model.searchResults = null;\r\n\r\n const gasDay = this.model.latestGasDayCycle !== GasDayCycle.Null ? this.model.latestGasDayCycle.gasDay : this.model.pipelineGasDay.tomorrowsCalendarAllowableGasDay;\r\n const gasCycleCode = this.model.latestGasDayCycle !== GasDayCycle.Null ? this.model.latestGasDayCycle.gasCycleCode : GasCycle.TimelyCycleCode;\r\n this.setGasDayAndGasCycleCode(gasDay as GasDay, gasCycleCode);\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.setGasDayAndGasCycleCode(typedParams.asGasDay(AutoBalanceEventsComponent.GasDayParam), typedParams.asNullableString(AutoBalanceEventsComponent.GasDayCodeParam));\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n\r\n const gasDay = this.model.searchParams.gasDay;\r\n return this.gasCycleService.queryGasDayCycleStatusesFor(gasDay).pipe(tap(responses => {\r\n const gasDayCycleStatuses = responses;\r\n\r\n this.model.gasDayCycleStatuses = gasDayCycleStatuses;\r\n this.model.gasCycles = gasDayCycleStatuses.nonStsGasCycles();\r\n\r\n if (!this.model.searchParams.gasCycleCode) {\r\n this.model.searchParams.gasCycleCode = this.defaultNaesbGasCycleCode();\r\n }\r\n\r\n this.verifyForValidSelectedParameters();\r\n }));\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = { ...this.model.searchParams };\r\n\r\n const gasCycleCode = GasCycleLogic.buildGasCycleCodeForRequest(this.model.gasDayCycleStatuses, this.model.searchParams.gasCycleCode, false, true);\r\n const autoBalanceEventsRequest = new AutoBalanceEventsRequest(this.model.searchParams.gasDay, gasCycleCode);\r\n\r\n return this.autoBalanceEventService.getEvents(autoBalanceEventsRequest).pipe(tap(results => {\r\n this.model.searchResults = _.orderBy(results, ['createDateTime'], ['asc']);\r\n }));\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n return new AutoBalanceEventsRequest(this.model.searchParams.gasDay, this.model.searchParams.gasCycleCode);\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n if (this.autoBalanceEventsDataGrid) {\r\n this.autoBalanceEventsDataGrid.instance.clearSorting();\r\n this.autoBalanceEventsDataGrid.instance.columnOption('Time Stamp', {sortOrder: 'desc', sortIndex: 0});\r\n }\r\n }\r\n\r\n /**\r\n * Private Methods\r\n */\r\n\r\n private setGasDayAndGasCycleCode(gasDay: GasDay, gasCycleCode: string): void {\r\n this.model.searchParams.gasDay = gasDay;\r\n this.model.searchParams.gasCycleCode = gasCycleCode;\r\n }\r\n\r\n private verifyForValidSelectedParameters(): void {\r\n // Reset Gas Cycle, if the current selected gas cycle does not exist in the new Gas Cycles\r\n GasCycleLogic.verifySelectedGasCycleCode(this.model.gasDayCycleStatuses, this.model.gasCycles, this.model.searchParams.gasCycleCode);\r\n }\r\n\r\n private gasDayCycleParamValidator(): ParamValidator {\r\n const gasDayCycleQueryParams = ParamValidator.Standard();\r\n\r\n gasDayCycleQueryParams.isGasDay(AutoBalanceEventsComponent.GasDayParam);\r\n gasDayCycleQueryParams.isString(AutoBalanceEventsComponent.GasDayCodeParam, true); // Optional for EOD\r\n\r\n return gasDayCycleQueryParams;\r\n }\r\n\r\n private defaultNaesbGasCycleCode(): string {\r\n return GasCycleLogic.defaultGasCycleCode(this.model.gasDayCycleStatuses, this.model.gasDayCycleStatuses.defaultEarliestNonScheduled().gasCycle);\r\n }\r\n}\r\n","\r\nimport {map, tap} from 'rxjs/operators';\r\nimport * as _ from 'lodash';\r\nimport { Injectable } from '@angular/core';\r\nimport {Observable} from \"rxjs\";\r\nimport {NominationResourceService} from \"@shared/resources/nominations-resource.service\";\r\nimport {GasDayCycle} from \"@model/gas-day-cycle\";\r\nimport {IGasDay} from \"@model/gas-day-month.interface\";\r\nimport {HttpResponse} from \"@angular/common/http\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {GasDay} from \"app/shared/classes/gas-day\";\r\n\r\n@Injectable()\r\nexport class TitleTransferReportService {\r\n\r\n constructor(\r\n private nominationResource: NominationResourceService\r\n ) { }\r\n\r\n public queryTitleTransferReports(titleTransferReportRequest: TitleTransferReportRequest): Observable {\r\n const params = this.buildParameters(titleTransferReportRequest);\r\n\r\n return this.nominationResource.get('/reports/titletransfer', true, params).pipe(\r\n tap(arr => {\r\n // Create proper GasDayCycle objects because that will give us a bindable date property (gasDayDate).\r\n arr.forEach(item => {\r\n item.startGasDayCycle = item.startGasDayCycle != null ? new GasDayCycle(item.startGasDayCycle) : null;\r\n item.endGasDayCycle = item.endGasDayCycle != null ? new GasDayCycle(item.endGasDayCycle) : null;\r\n item.counterPartyStartGasDayCycle = item.counterPartyStartGasDayCycle != null ? new GasDayCycle(item.counterPartyStartGasDayCycle) : null;\r\n item.counterPartyEndGasDayCycle = item.counterPartyEndGasDayCycle != null ? new GasDayCycle(item.counterPartyEndGasDayCycle) : null;\r\n });\r\n }));\r\n }\r\n\r\n public queryTitleTransferReportPdf(titleTransferReportRequest: TitleTransferReportRequest): Observable> {\r\n const params = this.buildParameters(titleTransferReportRequest);\r\n\r\n return this.nominationResource.getData('/reports/titletransfer/pdf', true, params);\r\n }\r\n\r\n public matchUpTitleTransferRequests(gasDay: GasDay, gasCycleCode: string, titleTransferIds: number[]): Observable {\r\n\r\n const body = {\r\n titleTransferIdsToMatch: titleTransferIds,\r\n gasDay: gasDay.toString(),\r\n gasCycleCode: gasCycleCode\r\n };\r\n return this.nominationResource.post('/titletransfer/match', body, true ).pipe(map(res => res));\r\n }\r\n\r\n private buildParameters(titleTransferReportRequest: TitleTransferReportRequest): GCTSHttpParams {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n if (!_.isNil(titleTransferReportRequest.gasDay)) { params.set('gasDay', titleTransferReportRequest.gasDay.toString()); }\r\n if (!_.isNil(titleTransferReportRequest.enterpriseId)) { params.set('enterpriseId', titleTransferReportRequest.enterpriseId.toString()); }\r\n if (!_.isNil(titleTransferReportRequest.locationId)) { params.set('locationId', titleTransferReportRequest.locationId.toString()); }\r\n if (!_.isNil(titleTransferReportRequest.nomGroupId)) { params.set('nomGroupId', titleTransferReportRequest.nomGroupId.toString()); }\r\n if (!_.isNil(titleTransferReportRequest.gasCycleCode)) { params.set('gasCycleCode', titleTransferReportRequest.gasCycleCode.toString()); }\r\n if (!_.isNil(titleTransferReportRequest.mismatchedOnly)) { params.set('mismatchedOnly', titleTransferReportRequest.mismatchedOnly.toString()); }\r\n if (!_.isNil(titleTransferReportRequest.fromGasDay)) { params.set('fromGasDay', titleTransferReportRequest.fromGasDay.toString()); }\r\n if (!_.isNil(titleTransferReportRequest.toGasDay)) { params.set('toGasDay', titleTransferReportRequest.toGasDay.toString()); }\r\n\r\n return params;\r\n }\r\n}\r\n\r\nexport class TitleTransferReportRequest {\r\n gasDay: IGasDay;\r\n enterpriseId: number;\r\n locationId: number;\r\n nomGroupId: number;\r\n gasCycleCode: string;\r\n mismatchedOnly: boolean;\r\n fromGasDay: IGasDay;\r\n toGasDay: IGasDay;\r\n}\r\n\r\nexport class TitleTransferReportDto {\r\n nomRequestId: number;\r\n gasDay: IGasDay;\r\n startGasDayCycle: GasDayCycle;\r\n endGasDayCycle: GasDayCycle;\r\n // Enum\r\n status: string;\r\n locationId: number;\r\n debitNomGroupId: number;\r\n creditNomGroupId: number;\r\n // Enum\r\n transactionType: string;\r\n packageId: string;\r\n quantity: number;\r\n submittedByUserFullName: string;\r\n counterPartyStartGasDayCycle: GasDayCycle;\r\n counterPartyEndGasDayCycle: GasDayCycle;\r\n counterPartyPackageId: string;\r\n counterPartyQuantity?: number;\r\n counterPartySubmittedByUserFullName: string;\r\n counterPartyNomRequestId?: number;\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n \r\n\r\n To subscribe enter your email address and click submit.\"\r\n eventType=\"MismatchedTitleTransfer\"\r\n subscriptionMessage=\"Mismatched Title Transfer Notifications\"\r\n *ngIf=\"!model.userIsInternal\">\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n - Filters\r\n + Filters\r\n \r\n :\r\n Gas Day: {{model.lastSearchParams?.gasDay | gasDayFormat}}\r\n Cycle: {{model.lastSearchParams?.gasCycleCode | displayName: 'code' : 'displayValue' : model.gasCycles : 'EOD' }}\r\n Customer: {{model.lastSearchParams?.enterpriseId | displayName: 'id' : 'displayValue' : model.enterprises}}\r\n Account: {{model.lastSearchParams?.nomGroupId | displayName: 'id' : 'mnemonic' : model.nomGroups}}\r\n Location: {{model.lastSearchParams?.locationId | displayName: 'id' : 'name' : model.locations}}\r\n Mismatched Only: {{model.lastSearchParams?.mismatchedOnly ? 'Yes' : 'No'}}\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.gasDay | gasDayFormat}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.gasCycleCode | displayName: 'code' : 'displayValue' : model.gasCycles : 'EOD'}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.enterpriseId | displayName: 'id' : 'displayValue' : model.enterprises}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.nomGroupId | displayName: 'id' : 'mnemonic' : model.nomGroups}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.locationId | displayName: 'id' : 'name' : model.locations}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.mismatchedOnly ? 'Yes' : 'No'}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n NOTE: When using the “Match” button, your Title Transfer transaction will be defaulted to rank 90. The rank can be changed on the Nomination page.\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n\r\n\r\n","\r\nimport {forkJoin, of, Observable} from 'rxjs';\r\n\r\nimport {tap, concatMap} from 'rxjs/operators';\r\nimport * as _ from 'lodash';\r\nimport {ChangeDetectorRef, Component} from '@angular/core';\r\nimport {AppService} from \"app/shared/services/webapp/app/app.service\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {AlertService} from \"app/shared/services/webapp/alert/alert.service\";\r\nimport {NominationSystemService} from \"app/shared/services/nomination/nomination-system/nomination-system.service\";\r\nimport {ParamValidator} from \"app/shared/classes/validators/param-validator\";\r\nimport {\r\n EnterpriseSearchParams,\r\n NominationEnterprise,\r\n NominationEnterpriseService\r\n} from \"app/shared/services/nomination/nomination-enterprise/nomination-enterprise.service\";\r\nimport {\r\n LocationSearchParams,\r\n NominationLocation,\r\n NominationLocationService\r\n} from \"app/shared/services/nomination/nomination-location/nomination-location.service\";\r\nimport {GasCycleService} from \"app/shared/services/nomination/gas-cycle/gas-cycle.service\";\r\nimport {NominationEnterpriseEnrichmentService} from \"app/shared/services/nomination/nomination-enterprise-enrichment/nomination-enterprise-enrichment.service\";\r\nimport {NominationLocationEnrichmentService} from \"app/shared/services/nomination/nomination-location-enrichment/nomination-location-enrichment.service\";\r\nimport {NominationNomGroupEnrichmentService} from \"app/shared/services/nomination/nomination-nom-group-enrichment/nomination-nom-group-enrichment.service\";\r\nimport {\r\n TitleTransferReportDto,\r\n TitleTransferReportRequest,\r\n TitleTransferReportService\r\n} from \"app/shared/services/nomination/title-transfer-report/title-transfer-report.service\";\r\nimport {\r\n NominationGroupHierarchy,\r\n NominationNomGroupService\r\n} from \"app/shared/services/nomination/nomination-nom-group/nomination-nom-group.service\";\r\nimport {BusinessRight} from \"app/shared/classes/business-right\";\r\nimport {UserService} from \"app/shared/services/webapp/user/user-service\";\r\nimport * as FileSaver from 'file-saver';\r\nimport {EditableSearchComponent} from \"app/shared/classes/editable-search-component\";\r\nimport {NominationPipelineGasDay} from \"app/shared/classes/nomination-pipeline-gas-day\";\r\nimport {BaseViewModel} from \"app/shared/classes/base-view-model\";\r\nimport {GasCycle} from \"app/shared/classes/gas-cycle\";\r\nimport {GasDayCycleStatusCollection} from \"app/shared/classes/gas-day-cycle-status-collection\";\r\nimport {IGasDay} from \"app/shared/classes/gas-day-month.interface\";\r\nimport {TypedParams} from \"app/shared/classes/typed-params\";\r\nimport {GasCycleLogic} from \"app/shared/classes/gas-cycle.logic\";\r\nimport {GasDay} from \"app/shared/classes/gas-day\";\r\nimport {ModalOptions} from \"@shared/services/webapp/modal-options/modal-options\";\r\nimport {YesNoCancelModalService} from \"@shared/services/webapp/yes-no-cancel-modal/yes-no-cancel-modal.service\";\r\n\r\n@Component({\r\n selector: 'app-title-transfer-report',\r\n templateUrl: './title-transfer-report.component.html',\r\n styleUrls: ['./title-transfer-report.component.css']\r\n})\r\nexport class TitleTransferReportComponent extends EditableSearchComponent {\r\n model: TitleTransferReportModel = new TitleTransferReportModel();\r\n /**\r\n * Public Methods\r\n */\r\n\r\n constructor(public appService: AppService,\r\n public alertService: AlertService,\r\n public activatedRoute: ActivatedRoute,\r\n public router: Router,\r\n public nominationSystemService: NominationSystemService,\r\n public nominationEnterpriseService: NominationEnterpriseService,\r\n public nominationLocationService: NominationLocationService,\r\n public gasCycleService: GasCycleService,\r\n public nominationEnterpriseEnrichmentService: NominationEnterpriseEnrichmentService,\r\n public nominationLocationEnrichmentService: NominationLocationEnrichmentService,\r\n public nominationNomGroupEnrichmentService: NominationNomGroupEnrichmentService,\r\n public titleTransferReportService: TitleTransferReportService,\r\n public nominationNomGroupService: NominationNomGroupService,\r\n public cdr: ChangeDetectorRef,\r\n private userService: UserService) {\r\n super('Title Transfer Report', appService, activatedRoute, router, alertService);\r\n }\r\n\r\n public onGasDayChanged(): void {\r\n // this will be fired even when a null value is returned from the date picker and don't want to reload with a bad date\r\n if (!this.model.searchParams.gasDay) return;\r\n\r\n // This will force the GasCycle to get set to the default for the GasDay.\r\n this.model.searchParams.gasCycleCode = null;\r\n\r\n this.loadSearchResources().subscribe(() => {});\r\n }\r\n\r\n // public onFromGasDayChanged(e): void {\r\n // // this will be fired even when a null value is returned from the date picker and don't want to reload with a bad date\r\n // if (!this.model.searchParams.fromGasDay || !this.model.searchParams.toGasDay) return;\r\n\r\n // this.model.searchParams.gasDay = this.model.searchParams.fromGasDay; // Ensure Gas Day is same as From Gas Day\r\n\r\n // this.gasDayChanged(this.model.searchParams.fromGasDay, this.model.searchParams.toGasDay);\r\n // }\r\n\r\n public onCustomerChanged(): void {\r\n this.loadNomGroups(true).subscribe(() => {});\r\n }\r\n\r\n private loadNomGroups(isOnChange: boolean): Observable {\r\n if (!this.model.searchParams.enterpriseId) return of(null);\r\n\r\n return this.nominationNomGroupService\r\n .queryNomGroupNamesHierarchy(this.model.searchParams.gasDay, this.model.searchParams.enterpriseId, BusinessRight.MultiTitleTransfer, BusinessRight.CustodyTransfer, true).pipe(\r\n tap(nomGroups => {\r\n this.model.nomGroups = nomGroups;\r\n // when the customer changes the form's nomGroupId needs to be reset, when\r\n // navigating to a url with a selected nomGroupId it does not\r\n if (isOnChange) {\r\n this.model.searchParams.nomGroupId = nomGroups.length === 1\r\n ? _.head(nomGroups).id\r\n : null;\r\n } else {\r\n // url data integrity check, does the nomGroupId belong to the enterpriseId\r\n if (!_.find(this.model.nomGroups, (x) => {return x.id === this.model.searchParams.nomGroupId; })) {\r\n this.model.searchParams.nomGroupId = null;\r\n }\r\n }\r\n }));\r\n }\r\n\r\n public pdfReportClicked() {\r\n this.titleTransferReportService.queryTitleTransferReportPdf(this.buildPdfQueryParams()).subscribe((response) => {\r\n const mediaType = response.headers.get('content-type');\r\n const blob = new Blob([response.body], {type: mediaType});\r\n\r\n // from the content disposition, should be second element with =\"{filename}\" surrounding it\r\n const filename = response.headers.get('content-disposition').split(';')[1].trim().split('=')[1].replace(/\"/g, '');\r\n FileSaver.saveAs(blob, filename);\r\n });\r\n }\r\n\r\n public gasCyclePlaceholder(): string {\r\n return GasCycleLogic.placeholder(this.model.gasDayCycleStatuses);\r\n }\r\n\r\n public isGasCycleRequired(): boolean {\r\n return GasCycleLogic.isRequired(this.model.gasDayCycleStatuses);\r\n }\r\n\r\n public matchClicked(): void {\r\n const selectedMismatchedIds: number[] = new Array();\r\n _.filter(this.model.selectedBuys, x => x.status === 'Mismatched')\r\n .forEach(item => {\r\n selectedMismatchedIds.push(item.counterPartyNomRequestId);\r\n });\r\n\r\n _.filter(this.model.selectedSells, x => x.status === 'Mismatched')\r\n .forEach(item => {\r\n selectedMismatchedIds.push(item.counterPartyNomRequestId);\r\n });\r\n\r\n this.titleTransferReportService.matchUpTitleTransferRequests(this.model.lastSearchParams.gasDay, this.model.lastSearchParams.gasCycleCode, selectedMismatchedIds).subscribe(\r\n invalidRequests => {\r\n if (invalidRequests > 0) {\r\n this.alertService.addErrorMessage('Error', invalidRequests + ' request(s) failed to process due to closed gas cycle.');\r\n }\r\n this.model.selectedBuys = [];\r\n this.model.selectedSells = [];\r\n return this.performSearch().subscribe(() => {});\r\n });\r\n }\r\n\r\n public matchButtonDisabled(): boolean {\r\n if (!(this.model.hasSelectedBuys || this.model.hasSelectedSells)) return true;\r\n\r\n const selectedGasDayCycleStatus = _.find(this.model.gasDayCycleStatuses, x => x.gasCycle.code === this.model.lastSearchParams.gasCycleCode);\r\n\r\n return selectedGasDayCycleStatus.isClosedForNomination;\r\n }\r\n\r\n /**\r\n * Protected Methods\r\n */\r\n\r\n protected loadInitialResources(): Observable {\r\n this.appService.hideMenu();\r\n this.appService.clearMessages();\r\n\r\n this.model.userIsInternal = !this.userService.user.isExternalUser;\r\n\r\n const serviceCalls: Array = [\r\n this.nominationSystemService.pipelineGasDay(), // 0\r\n this.nominationEnterpriseEnrichmentService.fetch(), // 1\r\n this.nominationLocationEnrichmentService.fetch(), // 2\r\n this.nominationNomGroupEnrichmentService.fetch() // 3\r\n ];\r\n\r\n\r\n return forkJoin(serviceCalls).pipe(tap(responses => {\r\n const pipelineGasDay = responses[0];\r\n\r\n this.model.pipelineGasDay = pipelineGasDay;\r\n this.model.minGasDay = pipelineGasDay.earliestSelectableGasDay;\r\n\r\n this.model.gasDay = pipelineGasDay.actualGasDay.isGreaterThan(pipelineGasDay.earliestSelectableGasDay) ?\r\n pipelineGasDay.actualGasDay :\r\n pipelineGasDay.earliestSelectableGasDay;\r\n this.model.minGasDay = pipelineGasDay.minGasDayForCycleStatus.isLessThan(this.model.gasDay) ?\r\n pipelineGasDay.minGasDayForCycleStatus :\r\n this.model.gasDay;\r\n this.model.maxGasDay = pipelineGasDay.maxGasDayForCycleStatus.isGreaterThan(this.model.gasDay) ?\r\n pipelineGasDay.maxGasDayForCycleStatus :\r\n this.model.gasDay;\r\n this.model.actualGasDay = pipelineGasDay.actualGasDay;\r\n }));\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return this.gasDayCycleParamValidator().isValid(params);\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams = new TitleTransferReportSearchParameters();\r\n this.model.searchParams.gasDay = this.model.pipelineGasDay.openGasDayCycleStatus.gasDay;\r\n this.setDefaultCustomerForExternalUsers();\r\n }\r\n\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams.gasDay = typedParams.asGasDay('gasDay');\r\n this.setCommonSearchParamsFromRoute(typedParams);\r\n this.model.searchParams.gasCycleCode = typedParams.asNullableString('gasCycleCode');\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n\r\n const gasDay = this.model.searchParams.gasDay;\r\n\r\n const serviceCalls: Array = [\r\n this.gasCycleService.queryGasDayCycleStatusesFor(gasDay), // 0\r\n this.loadEnterprises(gasDay), // 1\r\n this.nominationLocationService.queryLocationNames(new LocationSearchParams(gasDay, true, gasDay, false)), // 2\r\n this.loadNomGroups(false) // 3\r\n ];\r\n\r\n return forkJoin(serviceCalls).pipe(tap(responses => {\r\n const gasDayCycleStatuses = responses[0];\r\n this.model.gasDayCycleStatuses = gasDayCycleStatuses;\r\n this.model.gasCycles = gasDayCycleStatuses.nonStsGasCycles();\r\n this.model.launchedGasCycles = gasDayCycleStatuses.defaultNonStsGasDayCycleStatusesForNomination().gasCycles();\r\n\r\n if (_.isNil(this.model.searchParams.gasCycleCode)) {\r\n this.model.searchParams.gasCycleCode = this.defaultNaesbGasCycleCode();\r\n }\r\n\r\n this.model.enterprises = responses[1];\r\n this.model.locations = _.orderBy(responses[2], x => x.name);\r\n\r\n this.verifyForValidSelectedParameters();\r\n }));\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n\r\n return this.loadTitleTransferReports().pipe(tap(results => {\r\n this.model.buyTransfers = _.filter(results, x => x.transactionType === 'Buy');\r\n this.model.sellTransfers = _.filter(results, x => x.transactionType === 'Sell');\r\n }));\r\n }\r\n\r\n protected buildQueryParams(isForQueryParams: boolean = true): any {\r\n return this.buildRequest(this.model.searchParams, isForQueryParams);\r\n }\r\n\r\n protected buildPdfQueryParams(): any {\r\n return this.buildRequest(this.model.lastSearchParams, false);\r\n }\r\n\r\n private buildRequest(searchParams: TitleTransferReportSearchParameters, isForQueryParams: boolean = false): any {\r\n const request = new TitleTransferReportRequest();\r\n request.gasDay = searchParams.gasDay;\r\n request.enterpriseId = searchParams.enterpriseId;\r\n request.locationId = searchParams.locationId;\r\n request.nomGroupId = searchParams.nomGroupId;\r\n request.mismatchedOnly = searchParams.mismatchedOnly;\r\n\r\n if (!isForQueryParams) {\r\n request.gasCycleCode = GasCycleLogic.buildGasCycleCodeForRequest(this.model.gasDayCycleStatuses, searchParams.gasCycleCode);\r\n } else {\r\n request.gasCycleCode = searchParams.gasCycleCode;\r\n }\r\n\r\n return request;\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n // Do Nothing\r\n }\r\n\r\n protected resetCompleted(): void {\r\n this.model.buyTransfers = null;\r\n this.model.sellTransfers = null;\r\n }\r\n\r\n /**\r\n * Private Methods\r\n */\r\n\r\n\r\n private setDefaultCustomerForExternalUsers(): void {\r\n const user = this.userService.user;\r\n if (!_.isNil(user.enterpriseId)) {\r\n this.model.searchParams.enterpriseId = +user.enterpriseId;\r\n this.onCustomerChanged(); // Manually invoke Customer Changed Event\r\n }\r\n }\r\n\r\n private verifyForValidSelectedParameters(): void {\r\n // Reset Gas Cycle, if the current selected gas cycle does not exist in the new Gas Cycles\r\n if (!_.isNil(this.model.searchParams.gasCycleCode)) {\r\n if (!_.some(this.model.gasCycles, gasCycle => gasCycle.code === this.model.searchParams.gasCycleCode)) {\r\n this.model.searchParams.gasCycleCode = GasCycle.TimelyCycleCode;\r\n }\r\n } else {\r\n if (!this.model.gasDayCycleStatuses.allCyclesScheduled()) {\r\n this.model.searchParams.gasCycleCode = GasCycle.TimelyCycleCode;\r\n }\r\n }\r\n\r\n // De-select enterprise, if the current selected enterprise does not exist in the new Enterprises\r\n if (!_.some(this.model.enterprises, enterprise => enterprise.id === this.model.searchParams.enterpriseId)) {\r\n this.model.searchParams.enterpriseId = null;\r\n }\r\n\r\n // De-select location, if the current selected location does not exist in the new Locations\r\n if (!_.some(this.model.locations, location => location.id === this.model.searchParams.locationId)) {\r\n this.model.searchParams.locationId = null;\r\n }\r\n }\r\n\r\n private gasDayCycleParamValidator(): ParamValidator {\r\n const gasDayCycleQueryParams = ParamValidator.Standard();\r\n\r\n gasDayCycleQueryParams.isGasDay('gasDay');\r\n gasDayCycleQueryParams.isString('gasCycleCode', true); // Optional for EOD\r\n\r\n return gasDayCycleQueryParams;\r\n }\r\n\r\n private setCommonSearchParamsFromRoute(typedParams: TypedParams): void {\r\n this.model.searchParams.enterpriseId = typedParams.asNullableNumber('enterpriseId');\r\n this.model.searchParams.locationId = typedParams.asNullableNumber('locationId');\r\n this.model.searchParams.nomGroupId = typedParams.asNullableNumber('nomGroupId');\r\n this.model.searchParams.mismatchedOnly = typedParams.asBoolean('mismatchedOnly');\r\n this.model.searchParams.fullView = typedParams.asBoolean('fullView');\r\n }\r\n\r\n private loadEnterprises(gasDay: IGasDay): Observable {\r\n const enterpriseSearchParams = new EnterpriseSearchParams();\r\n enterpriseSearchParams.gasDay = gasDay;\r\n enterpriseSearchParams.accountBusinessRights = [BusinessRight.MultiTitleTransfer];\r\n enterpriseSearchParams.includeInactive = true;\r\n\r\n return this.nominationEnterpriseService.queryAllByPipeline(enterpriseSearchParams).pipe(concatMap(enterprises => {\r\n return this.nominationEnterpriseEnrichmentService.enrichArray(enterprises, 'id').pipe(concatMap(enrichedEnterprises => {\r\n return of(_.orderBy(enrichedEnterprises, x => x.displayValue));\r\n }));\r\n }));\r\n }\r\n\r\n private loadTitleTransferReports(): Observable {\r\n return this.titleTransferReportService.queryTitleTransferReports(this.buildQueryParams(false)).pipe(\r\n concatMap(response => {\r\n return forkJoin([\r\n this.nominationLocationEnrichmentService.enrichArray(response, 'locationId', 'location'),\r\n this.nominationNomGroupEnrichmentService.enrichArray(response, 'creditNomGroupId', 'creditNomGroup'),\r\n this.nominationNomGroupEnrichmentService.enrichArray(response, 'debitNomGroupId', 'debitNomGroup')\r\n ]).pipe(concatMap(() => of(response)));\r\n }));\r\n }\r\n\r\n private defaultNaesbGasCycleCode(): string {\r\n return GasCycleLogic.defaultGasCycleCode(this.model.gasDayCycleStatuses, this.model.gasDayCycleStatuses.defaultNaesbEarliestNomWindowOpen().gasCycle);\r\n }\r\n\r\n getDefaultChangesWillBeLostMessageOptions(): ModalOptions {\r\n return YesNoCancelModalService.getDefaultYesNoModalOptions();\r\n }\r\n\r\n public hasUnsavedChanges(): boolean {\r\n return this.model.hasSelectedBuys || this.model.hasSelectedSells;\r\n }\r\n\r\n public navigationCancelled(): void {\r\n this.model.searchParams = _.clone(this.model.lastSearchParams);\r\n this.loadSearchResources().subscribe(() => {});\r\n }\r\n}\r\n\r\n/**\r\n * Models\r\n */\r\n\r\nexport class TitleTransferReportModel extends BaseViewModel {\r\n pipelineGasDay: NominationPipelineGasDay;\r\n gasDay: GasDay;\r\n minGasDay: GasDay;\r\n maxGasDay: GasDay;\r\n actualGasDay: GasDay;\r\n gasDayCycleStatuses: GasDayCycleStatusCollection = GasDayCycleStatusCollection.create();\r\n gasCycles: GasCycle[] = [];\r\n launchedGasCycles: GasCycle[] = [];\r\n enterprises: NominationEnterprise[] = [];\r\n locations: NominationLocation[] = [];\r\n nomGroups: NominationGroupHierarchy[] = [];\r\n selectedBuys: TitleTransferReportDto[] = [];\r\n selectedSells: TitleTransferReportDto[] = [];\r\n\r\n searchParams: TitleTransferReportSearchParameters = new TitleTransferReportSearchParameters();\r\n lastSearchParams: TitleTransferReportSearchParameters;\r\n buyTransfers: TitleTransferReportDto[];\r\n sellTransfers: TitleTransferReportDto[];\r\n hasSelectedBuys: boolean;\r\n hasSelectedSells: boolean;\r\n\r\n userIsInternal: boolean = false;\r\n\r\n hasSearchResults() {\r\n return this.buyTransfers && this.sellTransfers;\r\n }\r\n}\r\n\r\nexport class TitleTransferReportSearchParameters {\r\n gasCycleCode?: string;\r\n locationId?: number;\r\n fullView: boolean;\r\n nomGroupId?: number;\r\n mismatchedOnly: boolean;\r\n enterpriseId: number;\r\n gasDay: GasDay;\r\n}\r\n","
\r\n
\r\n \r\n {{ showHubBalances ? '-' : '+' }} Balance\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n {{data.data.locationName}}\r\n
\r\n
\r\n \r\n
\r\n {{data.data.in | number}}\r\n
\r\n
\r\n \r\n
\r\n {{data.data.out | number}}\r\n
\r\n
\r\n \r\n
\r\n {{data.data.variance | number}}\r\n
\r\n
\r\n \r\n
\r\n {{data.data.passed}}\r\n
\r\n
\r\n \r\n
\r\n {{data.data.saved}}\r\n
\r\n
\r\n \r\n
\r\n {{data.data.failed}}\r\n
\r\n
\r\n \r\n
\r\n
\r\n {{row.data.mismatched}}\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n {{data.data.pending}}\r\n
\r\n
\r\n \r\n\r\n
\r\n","import {Component, EventEmitter, Input, OnInit, Output, ViewChild} from '@angular/core';\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport * as _ from 'lodash';\r\nimport {HubBalanceData} from \"@shared/services/nomination/nomination-request/nomination-request.service\";\r\nimport {INominationRequestsModel} from '@shared/services/nomination/nomination-request/nomination-request.interface';\r\nimport {Router} from \"@angular/router\";\r\nimport {TitleTransferReportSearchParameters} from \"../../title-transfer-report/title-transfer-report.component\";\r\nimport {NominationLocationEnrichmentService} from \"@shared/services/nomination/nomination-location-enrichment/nomination-location-enrichment.service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {PipelineSettingMapService} from \"@shared/services/nomination/pipeline-settings-map/pipeline-setting-map.service\";\r\n\r\n\r\n@Component({\r\n selector: 'app-hub-balance',\r\n templateUrl: './hub-balance.component.html',\r\n styleUrls: ['./hub-balance.component.css']\r\n})\r\n\r\nexport class HubBalanceComponent implements OnInit {\r\n\r\n @Input() data: INominationRequestsModel;\r\n @Input() lockedToShowAll: boolean;\r\n @Input('height') height: number;\r\n @Input('width') width: number;\r\n @Output() onLocationChange: EventEmitter = new EventEmitter();\r\n\r\n @ViewChild(DxDataGridComponent)\r\n public dataGrid: DxDataGridComponent;\r\n public canDisableSubmitButton = false;\r\n\r\n showHubBalances = true;\r\n public hubBalances: HubBalanceData[] = null;\r\n\r\n constructor(private nominationLocationEnrichmentService: NominationLocationEnrichmentService,\r\n private router: Router,\r\n private sessionService: SessionService,\r\n private pipelineSettingMapService: PipelineSettingMapService) { }\r\n\r\n ngOnInit() {\r\n this.setUpBalanceData();\r\n }\r\n\r\n getPipelineCode(): string {\r\n return this.sessionService.getPipeline().code;\r\n }\r\n\r\n showMismatched(): boolean {\r\n return !this.pipelineSettingMapService.isCgl(this.getPipelineCode());\r\n }\r\n\r\n setUpBalanceData() {\r\n // This assumes that the credit and debit nomination requests are already enriched with locationName.\r\n const creditLocations = this.data.originalReceiptHubNominationRequests\r\n .map(function(receipt) {\r\n return {locationId: receipt.creditLocationId, locationName: receipt['creditLocationName']};\r\n });\r\n\r\n const debitLocations = this.data.originalDeliveryHubNominationRequests\r\n .map(function(delivery) {\r\n return {locationId: delivery.debitLocationId, locationName: delivery['debitLocationName']};\r\n });\r\n\r\n const locations = _.unionWith(creditLocations, debitLocations, _.isEqual);\r\n\r\n const hubBalances = [];\r\n locations.forEach(location => {\r\n const inTransactions = this.data.originalReceiptHubNominationRequests.filter(x => x.creditLocationId === location.locationId && x.statusCode !== 'Failed');\r\n const outTransactions = this.data.originalDeliveryHubNominationRequests.filter(x => x.debitLocationId === location.locationId && x.statusCode !== 'Failed');\r\n const hubBalance = new HubBalanceData();\r\n hubBalance.locationId = location.locationId;\r\n hubBalance.locationName = location.locationName;\r\n hubBalance.in = inTransactions.length === 0 ? 0 : inTransactions.map(t => t.energy).reduce((sum, current) => sum + current);\r\n hubBalance.out = outTransactions.length === 0 ? 0 : outTransactions.map(t => t.energy).reduce((sum, current) => sum + current);\r\n hubBalance.variance = hubBalance.in - hubBalance.out;\r\n\r\n const statusTransactions = this.data.originalReceiptHubNominationRequests.filter(x => x.creditLocationId === location.locationId).concat(this.data.originalDeliveryHubNominationRequests.filter(x => x.debitLocationId === location.locationId));\r\n\r\n hubBalance.passed = statusTransactions.filter(x => x.statusCode === 'Passed').length;\r\n hubBalance.saved = statusTransactions.filter(x => x.statusCode === 'Saved').length;\r\n hubBalance.failed = statusTransactions.filter(x => x.statusCode === 'Failed').length;\r\n hubBalance.pending = statusTransactions.filter(x => x.statusCode === 'Pending').length;\r\n hubBalance.mismatched = statusTransactions.filter(x => x.statusCode === 'Mismatched').length;\r\n\r\n if (this.lockedToShowAll || this.data.showAllLocations || (!this.data.showAllLocations && (hubBalance.variance !== 0 || hubBalance.saved > 0 || hubBalance.mismatched !== 0))) {\r\n hubBalances.push(hubBalance);\r\n }\r\n });\r\n\r\n this.hubBalances = hubBalances;\r\n }\r\n\r\n onInitialized(e) {\r\n e.component.getController(\"keyboardNavigation\")._isCellValid = function() {\r\n return false;\r\n };\r\n }\r\n\r\n onContentReady() {\r\n if (this.data.balanceHubSelectedRowKeys.length > 0) {\r\n const locationIds = _.map(this.data.balanceHubSelectedRowKeys, x => x.locationId);\r\n const selectedLocations = this.hubBalances.filter(x => _.includes(locationIds, x.locationId) );\r\n this.dataGrid.instance.selectRows(selectedLocations, true);\r\n }\r\n }\r\n\r\n onCellPrepared(e) {\r\n if (e.rowType === 'data') {\r\n if (e.column.dataField === 'locationName') {\r\n if (e.data.saved > 0 || e.data.variance !== 0 || e.data.mismatched !== 0) {\r\n e.cellElement.style.backgroundColor = \"yellow\";\r\n }\r\n }\r\n }\r\n }\r\n\r\n toggleHubBalancesClicked = () => {\r\n this.showHubBalances = !this.showHubBalances;\r\n };\r\n\r\n toggleLocations = () => {\r\n this.setUpBalanceData();\r\n };\r\n\r\n locationChanged(): void {\r\n this.onLocationChange.emit(this.data.balanceHubSelectedRowKeys);\r\n }\r\n\r\n varianceSort(rowData) {\r\n return Math.abs(rowData.variance);\r\n }\r\n\r\n buildTitleTransferReportQueryParams(enterpriseId, gasDay, gasCycleCode, locationId, accountId): TitleTransferReportSearchParameters {\r\n const reportParameters = new TitleTransferReportSearchParameters();\r\n\r\n reportParameters.enterpriseId = enterpriseId;\r\n reportParameters.gasDay = gasDay;\r\n reportParameters.gasCycleCode = gasCycleCode;\r\n reportParameters.locationId = locationId;\r\n reportParameters.nomGroupId = accountId;\r\n reportParameters.mismatchedOnly = true;\r\n reportParameters.fullView = true;\r\n\r\n return reportParameters;\r\n }\r\n\r\n public clearSelected(): void {\r\n this.showHubBalances = false;\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\nimport {HubComponentBase} from \"./hub-component.interface\";\r\nimport { ViewChild, Directive } from \"@angular/core\";\r\n\r\n@Directive()\r\nexport class BaseNominationRequestView {\r\n private static readonly TransportHubIndex: number = 0;\r\n private static readonly ReceiptHubIndex: number = 1;\r\n private static readonly DeliveryHubIndex: number = 2;\r\n\r\n @ViewChild('TransportHubComponent') transportHubComponent: HubComponentBase;\r\n @ViewChild('ReceiptHubComponent') receiptHubComponent: HubComponentBase;\r\n @ViewChild('DeliveryHubComponent') deliveryHubComponent: HubComponentBase;\r\n @ViewChild('EnergyImbalanceComponent') energyImbalanceComponent: HubComponentBase;\r\n\r\n // Logic assumes that the order of the components are Transportation, Receipt, Delivery\r\n public components: Array = [null, null, null];\r\n // Map to efficiently determine if a component has been added to the components array\r\n public componentsMap: Map = new Map();\r\n\r\n hasEditData(): boolean {\r\n return (!_.isNil(this.transportHubComponent) && this.transportHubComponent.dataGrid.instance && this.transportHubComponent.dataGrid.instance.hasEditData()) ||\r\n (!_.isNil(this.receiptHubComponent) && this.receiptHubComponent.dataGrid.instance && this.receiptHubComponent.dataGrid.instance.hasEditData()) ||\r\n (!_.isNil(this.deliveryHubComponent) && this.deliveryHubComponent.dataGrid.instance && this.deliveryHubComponent.dataGrid.instance.hasEditData()) ||\r\n (!_.isNil(this.energyImbalanceComponent) && this.energyImbalanceComponent.dataGrid.instance && this.energyImbalanceComponent.dataGrid.instance.hasEditData());\r\n }\r\n\r\n public getComponents(): Array {\r\n if (this.componentsMap.size < 3) {\r\n this.addToComponentsIfDefined(BaseNominationRequestView.TransportHubIndex, this.transportHubComponent);\r\n this.addToComponentsIfDefined(BaseNominationRequestView.ReceiptHubIndex, this.receiptHubComponent);\r\n this.addToComponentsIfDefined(BaseNominationRequestView.DeliveryHubIndex, this.deliveryHubComponent);\r\n // Note: Energy Imbalance will be revisited in Phase 2 release - See Bug 99819\r\n }\r\n return this.components;\r\n }\r\n\r\n public addToComponentsIfDefined(tabIndex: number, hubComponent: HubComponentBase): void {\r\n if (!this.componentsMap.has(tabIndex) && hubComponent) {\r\n // add to map for quick look up\r\n this.componentsMap.set(tabIndex, hubComponent);\r\n // put component into designed index of the array\r\n this.components.splice(tabIndex, 1, hubComponent);\r\n }\r\n }\r\n}\r\n","
\r\n
\r\n -\r\n +\r\n Transportation\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n\r\n
\r\n
\r\n -\r\n +\r\n Customer Hub Receipt\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n\r\n
\r\n
\r\n -\r\n +\r\n Customer Hub Delivery\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n","import {forkJoin, from, Observable} from 'rxjs';\r\nimport * as _ from 'lodash';\r\nimport {\r\n AfterViewInit, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\r\nimport {\r\n INominationRequestsModel,\r\n IUndoRecord\r\n} from '@shared/services/nomination/nomination-request/nomination-request.interface';\r\nimport {UndoRowArgs} from \"../common-hub.service\";\r\nimport {BaseNominationRequestView} from \"../base-view\";\r\nimport {HubComponentBase} from \"../hub-component.interface\";\r\n\r\n@Component({\r\n selector: 'app-nomination-requests-page-view',\r\n templateUrl: './nomination-requests-page-view.component.html',\r\n styleUrls: ['../common-hub.service.css', './nomination-requests-page-view.component.css']\r\n})\r\nexport class NominationRequestsPageViewComponent extends BaseNominationRequestView implements OnInit, AfterViewInit {\r\n\r\n @Input() data: INominationRequestsModel;\r\n @Input() transportUndos: Array;\r\n @Input() receiptUndos: Array;\r\n @Input() deliveryUndos: Array;\r\n @Input() energyImbalanceUndos: Array;\r\n @Output() undoRow: EventEmitter = new EventEmitter();\r\n @Output() selectionChanged: EventEmitter = new EventEmitter();\r\n\r\n components: Array = [];\r\n\r\n showTransportationNomRequests = true;\r\n showReceiptHubNomRequests = true;\r\n showDeliveryHubNomRequests = true;\r\n showEnergyImbalanceInstructions = true;\r\n\r\n constructor(public cdr: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.cdr.detectChanges(); // https://stackoverflow.com/questions/34364880/expression-has-changed-after-it-was-checked\r\n }\r\n\r\n toggleTransportationNomRequestClicked() {\r\n this.showTransportationNomRequests = !this.showTransportationNomRequests;\r\n }\r\n\r\n toggleShowReceiptHubNomRequestClicked() {\r\n this.showReceiptHubNomRequests = !this.showReceiptHubNomRequests;\r\n }\r\n\r\n toggleShowDeliveryHubNomRequestClicked() {\r\n this.showDeliveryHubNomRequests = !this.showDeliveryHubNomRequests;\r\n }\r\n\r\n toggleShowEnergyImbalanceInstructionsClicked() {\r\n this.showEnergyImbalanceInstructions = !this.showEnergyImbalanceInstructions;\r\n }\r\n\r\n tryToSaveEditingData(): Observable {\r\n const observable = Observable.create(observer => {\r\n let hasEditData = false;\r\n for (let n = 0; n < this.getComponents().length; n++) {\r\n if (!!this.getComponents()[n]) {\r\n hasEditData = hasEditData || this.getComponents()[n].dataGrid.instance.hasEditData();\r\n }\r\n }\r\n\r\n if (!hasEditData) {\r\n observer.next(true);\r\n observer.complete();\r\n } else {\r\n const saveEditObservables: Observable[] = [];\r\n\r\n _.forEach(this.getComponents(), component => {\r\n if (!!component) {\r\n saveEditObservables.push(from(component.dataGrid.instance.saveEditData()));\r\n }\r\n });\r\n\r\n forkJoin(saveEditObservables).subscribe(() => {\r\n // If saveEditData() fails (i.e. the row being edited fails validation), it does\r\n // not seem to indicate failure in any way. We can call hasEditData() again to\r\n // find out.\r\n hasEditData = false;\r\n for (let n = 0; n < this.getComponents().length; n++) {\r\n if (!!this.getComponents()[n]) {\r\n hasEditData = hasEditData || this.getComponents()[n].dataGrid.instance.hasEditData();\r\n }\r\n }\r\n observer.next(!hasEditData);\r\n observer.complete();\r\n });\r\n }\r\n });\r\n return observable;\r\n }\r\n\r\n // TODO: This should be able to go away. Dennis is on it! Sept-6-2017.\r\n refreshGrids() {\r\n _.forEach(this.getComponents(), component => {\r\n if (!!component) {\r\n component.dataGrid.instance.refresh();\r\n }\r\n });\r\n }\r\n\r\n applyFilters() {\r\n _.forEach(this.getComponents(), component => {\r\n if (!!component) {\r\n component.filter();\r\n }\r\n });\r\n }\r\n\r\n clearFilters() {\r\n _.forEach(this.getComponents(), component => {\r\n if (!!component) {\r\n if (component.dataGrid.instance.getDataSource()) {\r\n component.dataGrid.instance.clearFilter();\r\n }\r\n }\r\n });\r\n }\r\n\r\n selectSavedRequests(/*transportResults, recResults, delResults, energyImbalanceResults*/) {\r\n for (let n = 0; n < this.getComponents().length; n++) {\r\n if (!!this.getComponents()[n]) {\r\n this.getComponents()[n].selectSavedRequests(arguments[n]);\r\n }\r\n }\r\n }\r\n\r\n deselectNewDuplicateKeyRequests(/*transportResults, recResults, delResults, energyImbalanceResults*/) {\r\n for (let n = 0; n < this.getComponents().length; n++) {\r\n if (!!this.getComponents()[n]) {\r\n this.getComponents()[n].deselectNewDuplicateKeyRequests(arguments[n]);\r\n }\r\n }\r\n }\r\n\r\n deselectExpiredKeyRequests(/*transportResults, recResults, delResults, energyImbalanceResults*/) {\r\n for (let n = 0; n < this.getComponents().length; n++) {\r\n if (!!this.getComponents()[n]) {\r\n this.getComponents()[n].deselectExpiredKeyRequests(arguments[n]);\r\n }\r\n }\r\n }\r\n\r\n clearGridEdits() {\r\n _.forEach(this.getComponents(), component => {\r\n if (!!component) {\r\n component.clearGridEdits();\r\n }\r\n });\r\n }\r\n\r\n removeIncompleteRows() {\r\n _.forEach(this.getComponents(), component => {\r\n if (!!component) {\r\n component.removeIncompleteRows();\r\n }\r\n });\r\n }\r\n\r\n isDisabled(): boolean {\r\n for (let n = 0; n < this.getComponents().length; n++) {\r\n if (!!this.getComponents()[n] && this.getComponents()[n].canDisableSubmitButton && this.getComponents()[n].isDisabled()) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n isDeleteDisabled(): boolean {\r\n for (let n = 0; n < this.getComponents().length; n++) {\r\n if (!!this.getComponents()[n] && this.getComponents()[n].isDeleteDisabled()) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n isViewOnly(): boolean {\r\n for (let n = 0; n < this.getComponents().length; n++) {\r\n if (!!this.getComponents()[n] && this.getComponents()[n].isViewOnly()) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n onUndoRow = (e: UndoRowArgs): void => {\r\n this.undoRow.emit(e);\r\n };\r\n\r\n onSelectionChanged = (e): void => {\r\n this.selectionChanged.emit(e);\r\n }\r\n}\r\n","
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n","import {forkJoin, from, Observable} from 'rxjs';\r\nimport * as _ from 'lodash';\r\nimport {\r\n AfterViewInit, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {\r\n INominationRequestsModel,\r\n IUndoRecord\r\n} from '@shared/services/nomination/nomination-request/nomination-request.interface';\r\nimport {HubBalanceComponent} from \"../hub-balance/hub-balance.component\";\r\nimport {UndoRowArgs} from \"../common-hub.service\";\r\nimport {DxTabPanelComponent} from \"devextreme-angular\";\r\nimport {BaseNominationRequestView} from \"../base-view\";\r\n\r\n@Component({\r\n selector: 'app-nomination-requests-tab-view',\r\n templateUrl: './nomination-requests-tab-view.component.html',\r\n styleUrls: ['../common-hub.service.css', './nomination-requests-tab-view.component.css']\r\n})\r\nexport class NominationRequestsTabViewComponent extends BaseNominationRequestView implements OnInit, AfterViewInit {\r\n @Input() data: INominationRequestsModel;\r\n @Input() transportUndos: Array;\r\n @Input() receiptUndos: Array;\r\n @Input() deliveryUndos: Array;\r\n @Input() energyImbalanceUndos: Array;\r\n @Output() undoRow: EventEmitter = new EventEmitter();\r\n @Output() selectionChanged: EventEmitter = new EventEmitter();\r\n\r\n @ViewChild('BalanceHubComponent') balanceHubComponent: HubBalanceComponent;\r\n @ViewChild('tabPanel') tabPanel: DxTabPanelComponent;\r\n\r\n _tabs: Array = [];\r\n _showTabs = {};\r\n get tabs(): Array {\r\n // Recreate the tabs array if there are any to hide that are currently marked to be shown\r\n let buildTabs = false;\r\n for (const x in this._showTabs) {\r\n if (this._showTabs.hasOwnProperty(x)) {\r\n const idx = this.data.hideChildren.indexOf(x);\r\n if (this._showTabs[x] && idx >= 0) {\r\n this._showTabs[x] = false;\r\n buildTabs = true;\r\n } else if (!this._showTabs[x] && idx < 0) {\r\n this._showTabs[x] = true;\r\n buildTabs = true;\r\n }\r\n }\r\n }\r\n if (buildTabs) {\r\n this._tabs = _.filter(this.availableTabs, x => this._showTabs[x['title']]);\r\n }\r\n return this._tabs;\r\n }\r\n\r\n\r\n availableTabs = [];\r\n\r\n constructor(public cdr: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.availableTabs =\r\n [\r\n {id: 0, title: this.data.children.Child_Transport, template: \"template1\"},\r\n {id: 1, title: this.data.children.Child_Hub_Receipts, template: \"template2\"},\r\n {id: 2, title: this.data.children.Child_Hub_Deliveries, template: \"template3\"},\r\n {id: 3, title: this.data.children.Child_Balance, template: \"template4\"}\r\n // todo: revisit in phase 2 release - comment out for now re: bug 99819\r\n // {id: 4, title: this.data.children.Child_Energy_Imbalance, template: \"template5\"}\r\n ];\r\n this._tabs = _.clone(this.availableTabs);\r\n _.every(this.availableTabs, x => this._showTabs[x['title']] = true);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.cdr.detectChanges(); // https://stackoverflow.com/questions/34364880/expression-has-changed-after-it-was-checked\r\n }\r\n\r\n tryToSaveEditingData(): Observable {\r\n const observable = Observable.create(observer => {\r\n let hasEditData = false;\r\n for (let n = 0; n < this.getComponents().length; n++) {\r\n if (!!this.getComponents()[n]) {\r\n hasEditData = hasEditData || this.getComponents()[n].dataGrid.instance.hasEditData();\r\n }\r\n }\r\n\r\n if (!hasEditData) {\r\n observer.next(true);\r\n observer.complete();\r\n } else {\r\n const saveEditObservables: Observable[] = [];\r\n\r\n _.forEach(this.getComponents(), component => {\r\n if (!!component) {\r\n saveEditObservables.push(from(component.dataGrid.instance.saveEditData()));\r\n }\r\n });\r\n\r\n forkJoin(saveEditObservables).subscribe(() => {\r\n // If saveEditData() fails (i.e. the row being edited fails validation), it does\r\n // not seem to indicate failure in any way. We can call hasEditData() again to\r\n // find out.\r\n hasEditData = false;\r\n for (let n = 0; n < this.getComponents().length; n++) {\r\n if (!!this.getComponents()[n]) {\r\n hasEditData = hasEditData || this.getComponents()[n].dataGrid.instance.hasEditData();\r\n }\r\n }\r\n observer.next(!hasEditData);\r\n observer.complete();\r\n });\r\n }\r\n });\r\n return observable;\r\n }\r\n\r\n // TODO: This should be able to go away. Dennis is on it! Sept-6-2017.\r\n refreshGrids() {\r\n _.forEach(this.getComponents(), component => {\r\n if (!!component) {\r\n component.dataGrid.instance.refresh();\r\n }\r\n });\r\n }\r\n\r\n applyFilters() {\r\n _.forEach(this.getComponents(), component => {\r\n if (!!component) {\r\n component.filter();\r\n }\r\n });\r\n }\r\n\r\n clearFilters() {\r\n _.forEach(this.getComponents(), component => {\r\n if (!!component) {\r\n if (!!component.dataGrid.instance.getDataSource()) {\r\n component.dataGrid.instance.clearFilter();\r\n }\r\n }\r\n });\r\n }\r\n\r\n selectSavedRequests(/*transportResults, recResults, delResults, energyImbalanceResults*/) {\r\n for (let n = 0; n < this.getComponents().length; n++) {\r\n if (!!this.getComponents()[n]) {\r\n this.getComponents()[n].selectSavedRequests(arguments[n]);\r\n }\r\n }\r\n }\r\n\r\n deselectNewDuplicateKeyRequests(/*transportResults, recResults, delResults, energyImbalanceResults*/) {\r\n for (let n = 0; n < this.getComponents().length; n++) {\r\n if (!!this.getComponents()[n]) {\r\n this.getComponents()[n].deselectNewDuplicateKeyRequests(arguments[n]);\r\n }\r\n }\r\n }\r\n\r\n deselectExpiredKeyRequests(/*transportResults, recResults, delResults, energyImbalanceResults*/) {\r\n for (let n = 0; n < this.getComponents().length; n++) {\r\n if (!!this.getComponents()[n]) {\r\n this.getComponents()[n].deselectExpiredKeyRequests(arguments[n]);\r\n }\r\n }\r\n }\r\n\r\n clearGridEdits() {\r\n _.forEach(this.getComponents(), component => {\r\n if (!!component) {\r\n component.clearGridEdits();\r\n }\r\n });\r\n }\r\n\r\n removeIncompleteRows() {\r\n _.forEach(this.getComponents(), component => {\r\n if (!!component) {\r\n component.removeIncompleteRows();\r\n }\r\n });\r\n }\r\n\r\n isDisabled(): boolean {\r\n for (let n = 0; n < this.getComponents().length; n++) {\r\n if (!!this.getComponents()[n] && this.getComponents()[n].canDisableSubmitButton && this.getComponents()[n].isDisabled()) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n isDeleteDisabled(): boolean {\r\n for (let n = 0; n < this.getComponents().length; n++) {\r\n if (!!this.getComponents()[n] && this.getComponents()[n].isDeleteDisabled()) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n isViewOnly(): boolean {\r\n for (let n = 0; n < this.getComponents().length; n++) {\r\n if (!!this.getComponents()[n] && this.getComponents()[n].isViewOnly()) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n onUndoRow = (e: UndoRowArgs): void => {\r\n this.undoRow.emit(e);\r\n };\r\n\r\n onSelectionChanged = (e): void => {\r\n this.selectionChanged.emit(e);\r\n };\r\n\r\n focusFirstTab(): void {\r\n if (_.isNil(this.tabPanel) || _.isNil(this.tabPanel.instance)) { return; }\r\n this.tabPanel.instance.option(\"selectedIndex\", 0);\r\n }\r\n\r\n}\r\n","import {GasDay} from '@model/gas-day';\r\nimport {GasDayCycle} from '@model/gas-day-cycle';\r\nimport {SimpleGasDayCycleStatus} from \"@model/simple-gas-day-cycle-status\";\r\nimport {\r\n NominationEnterprise\r\n} from '../nomination-enterprise/nomination-enterprise.service';\r\nimport {GasCycle} from '@model/gas-cycle';\r\nimport {NominationLocation} from '../nomination-location/nomination-location.service';\r\nimport {\r\n NominationGroup, NominationGroupCollection, NominationGroupHierarchy2, NominationGroupHierarchyCollection,\r\n} from '../nomination-nom-group/nomination-nom-group.service';\r\nimport {YesAndNo} from '@model/yes-no';\r\nimport DataSource from \"devextreme/data/data_source\";\r\nimport {SecondaryLocation} from \"../secondary-locations/secondary-locations.service\";\r\nimport {BillableServiceOption, BillableServiceOptionCollection} from \"@model/billable-service-option\";\r\nimport {NominationRequestFields} from \"app/gcts/nomination/nomination-requests/nomination-requests.model\";\r\nimport {GasDayCycleStatusCollection} from \"@model/gas-day-cycle-status-collection\";\r\nimport {DateTime} from \"@model/date-time\";\r\nimport {CounterPartyTitleTransferMismatch} from \"app/gcts/nomination/nomination-requests/title-transfer-mismatches/title-transfer-mismatches.model\";\r\nimport {NominationTransactionType} from \"@model/nomination-transaction-type\";\r\n\r\nexport interface IUndoRecord {\r\n key: number;\r\n data: any;\r\n}\r\n\r\nexport interface ICopyNominationsModel {\r\n gasCycles: GasCycle[];\r\n maxGasDayForCycleStatus: GasDay;\r\n\r\n beginGasDayMinGasDay: GasDay;\r\n beginGasDayMaxGasDay: GasDay;\r\n endGasDayNextGasDayMinGasDay: GasDay;\r\n endGasDayNextGasDayMaxGasDay: GasDay;\r\n\r\n beginGasCycleCode: string;\r\n beginGasDay: GasDay;\r\n endGasDayNextGasDay: GasDay;\r\n gasDayCycleStatuses: GasDayCycleStatusCollection;\r\n\r\n accountExpiredMessage: string;\r\n hasExpiredAccount: boolean;\r\n allRequestsExpired: boolean;\r\n\r\n isValid(): boolean;\r\n setBeginGasDay(gasDay: GasDay, maxGasDay: GasDay): void;\r\n setEndGasDayNextGasDay(gasDay: GasDay): void;\r\n updateCopyModalProperties(defaultEndGasDay: boolean, data: INominationRequestsModel): void;\r\n\r\n onBeginGasCycleChanged(e: any): void;\r\n onEndGasDayNextGasDayChanged(): void;\r\n}\r\n\r\nexport interface INominationRequestsSearchParams {\r\n customerId: number;\r\n nomGroupId: number;\r\n gasDay: GasDay;\r\n gasDayIsValid: boolean;\r\n gasCycleCode?: string;\r\n getNomGroups();\r\n isEqual(otherObj: INominationRequestsSearchParams);\r\n}\r\n\r\nexport interface INominationRequest {\r\n id: number;\r\n enterpriseId: number;\r\n statusCode: string;\r\n statusMessage: string;\r\n transactionType: string;\r\n creditNominationGroupId: number;\r\n debitNominationGroupId: number;\r\n debitGasAccountId: number;\r\n creditGasAccountId: number;\r\n packageId: string;\r\n\r\n creditLocationId: number;\r\n deliveryRank: number;\r\n\r\n transportationRank: number;\r\n debitLocationId: number;\r\n receiptRank: number;\r\n\r\n energy: number;\r\n possibleNominationGroups: NominationGroup[];\r\n\r\n startGasDayCycle: GasDayCycle;\r\n endGasDayCycle: GasDayCycle;\r\n\r\n // new fields\r\n startGasDayCycleCode: string;\r\n startGasDayDate: Date;\r\n endGasDayEndDate: Date;\r\n // new fields\r\n\r\n canBeDeleted: boolean;\r\n\r\n isPendingChanged: boolean;\r\n\r\n submittedByUserFullName: string;\r\n submittedByUserEnterpriseId: number;\r\n issueDateTime: DateTime;\r\n}\r\n\r\nexport interface ITransportationNominationRequest extends INominationRequest {\r\n nominationGroupId: number;\r\n serviceTypeId: number;\r\n billableServiceOptionId: number;\r\n bidPrice: number;\r\n zeroTaxRated: boolean;\r\n fuelNominationRequest: IFuelNominationRequest;\r\n epsq: number;\r\n}\r\n\r\nexport interface ITransportationNominationRequestQueryResult {\r\n queryDateTime: Date;\r\n requests: ITransportationNominationRequest[];\r\n}\r\n\r\nexport interface ITransferNominationRequestQueryResult {\r\n queryDateTime: Date;\r\n requests: INominationRequest[];\r\n}\r\n\r\nexport interface IFuelNominationRequest {\r\n id: number;\r\n locationId: number;\r\n fuel: number;\r\n name: string;\r\n possibleLocations: SecondaryLocation[];\r\n}\r\n\r\nexport interface IEnergyImbalanceInstruction {\r\n enterpriseId: number;\r\n status: string; // Complete, Incomplete\r\n transactionType: string;\r\n locationId: number;\r\n nominationGroupId: number;\r\n packQuantity?: number;\r\n draftQuantity?: number;\r\n upDownContract: string;\r\n counterParty: string;\r\n packageId: string;\r\n rank?: number;\r\n startGasDay: string;\r\n endGasDay: string;\r\n gasCycleId: number;\r\n packOrDraft: string;\r\n}\r\n\r\nexport interface IEnergyImbalanceInstructionQueryResult {\r\n queryDateTime: Date;\r\n requests: IEnergyImbalanceInstruction[];\r\n}\r\n\r\nexport interface INominationRequestsModel {\r\n children: any;\r\n nomRequestFields: NominationRequestFields;\r\n minGasDay: GasDay;\r\n maxGasDay: GasDay;\r\n openGasDayCycleStatus: SimpleGasDayCycleStatus;\r\n timelyOpenGasDayCycleStatus: SimpleGasDayCycleStatus;\r\n gasDay: GasDay;\r\n customers: NominationEnterprise[];\r\n customerHubNomGroups: NominationGroupHierarchyCollection;\r\n hubNomGroups: NominationGroupHierarchy2[];\r\n allNomGroups: NominationGroup[];\r\n transportationFuelNomGroups: NominationGroup[];\r\n transportationVarianceNomGroups: NominationGroup[];\r\n confirmationVarianceNomGroups: NominationGroup[];\r\n loanNomGroups: NominationGroup[];\r\n parkNomGroups: NominationGroup[];\r\n inventoryTransferNomGroups: NominationGroup[];\r\n tboTransferNomGroups: NominationGroup[];\r\n tboFuelNomGroups: NominationGroup[];\r\n selectedGasCycle: GasCycle;\r\n gasCycles: GasCycle[];\r\n titleTransferMismatches: CounterPartyTitleTransferMismatch[];\r\n\r\n gasDayCycleStatuses: SimpleGasDayCycleStatus[];\r\n lastGasDayCycleStatuses: SimpleGasDayCycleStatus[];\r\n launchedGasCycles: GasCycle[]; // launched cycles shown in the filter for searching\r\n\r\n locations: NominationLocation[];\r\n locations2: NominationLocation[];\r\n nomGroups: NominationGroup[];\r\n nomGroups2: NominationGroupCollection;\r\n validTransportNomGroups: NominationGroup[];\r\n tboConfirmationNomGroups: NominationGroup[];\r\n billableServiceOptions: BillableServiceOption[];\r\n billableServiceOptions2: BillableServiceOptionCollection;\r\n billableServiceLookupList: LookupItem[];\r\n billableServiceNominationGroupMap: Map>;\r\n filteredBillableServiceOptions: BillableServiceOption[];\r\n receiptHubTransactionTypes: NominationTransactionType[];\r\n deliveryHubTransactionTypes: NominationTransactionType[];\r\n yesAndNo: YesAndNo[];\r\n copyModel: ICopyNominationsModel;\r\n pageView: boolean;\r\n searchParams: INominationRequestsSearchParams;\r\n lastSearchParams: INominationRequestsSearchParams;\r\n newRowAdded: boolean;\r\n selectedNomGroup: NominationGroup;\r\n\r\n // Always uses the original delivery and receipt nomination requests to calculate hub balancing\r\n originalReceiptHubNominationRequests: INominationRequest[];\r\n originalDeliveryHubNominationRequests: INominationRequest[];\r\n\r\n queryDateTime: Date;\r\n transportationNominationRequests: ITransportationNominationRequest[];\r\n receiptHubNominationRequests: INominationRequest[];\r\n deliveryHubNominationRequests: INominationRequest[];\r\n\r\n energyImbalanceInstructions: IEnergyImbalanceInstruction[];\r\n energyDataSource: DataSource;\r\n energyImbalanceUndos: Array;\r\n energyImbalanceSelections: Array;\r\n\r\n // A key-based map of transportation nomination records to the cloned records in the receipt and delivery hubs.\r\n // The record may be split into separate transport and fuel records in the delivery hub.\r\n transportNominationClones: Array<{ receipt: ITransportationNominationRequest, delivery: ITransportationNominationRequest, fuel: INominationRequest }>;\r\n // A key-based map of cloned transportation nomination records in the receipt hub to the originals in the transport hub.\r\n receiptTransportNominationOriginals: Array;\r\n // A key-based map of cloned transportation nomination records in the delivery hub to the originals in the transport hub.\r\n deliveryTransportNominationOriginals: Array;\r\n\r\n transportDataSource: DataSource;\r\n receiptDataSource: DataSource;\r\n deliveryDataSource: DataSource;\r\n\r\n transportUndos: Array;\r\n receiptUndos: Array;\r\n deliveryUndos: Array;\r\n\r\n transportSelections: Array;\r\n receiptSelections: Array;\r\n deliverySelections: Array;\r\n\r\n showAllLocations: boolean;\r\n transportFilter: any[];\r\n receiptFilter: any[];\r\n deliveryFilter: any[];\r\n energyFilter: any[];\r\n\r\n balanceHubSelectedRowKeys: any[];\r\n deliveryHubSelectedRowKeys: any[];\r\n receiptHubSelectedRowKeys: any[];\r\n transportHubSelectedRowKeys: any[];\r\n energyImbalanceSelectedRowKeys: any[];\r\n\r\n addRowTransactionType: string;\r\n nominationDeadlinePassed: boolean;\r\n disableNomReqEntries: boolean;\r\n\r\n debugging: boolean;\r\n\r\n hideChildren: string[];\r\n\r\n isReadOnlyMode: boolean;\r\n isOneDayAdjustmentCapable: boolean;\r\n isFullAdjustmentCapable: boolean;\r\n\r\n columnWidths: any;\r\n columnEditorPopupWidths: Map;\r\n\r\n anyNominationsSelected(): boolean;\r\n}\r\n\r\nexport class LookupItem {\r\n public id: I;\r\n public displayValue: D;\r\n\r\n constructor(id: I, displayValue: D) {\r\n this.id = id;\r\n this.displayValue = displayValue;\r\n }\r\n}\r\n","import * as _ from \"lodash\";\r\nimport {NominationGroup, NominationGroupCollection} from \"../services/nomination/nomination-nom-group/nomination-nom-group.service\";\r\nimport {GasCycle} from \"./gas-cycle\";\r\nimport {LookupItem} from \"../services/nomination/nomination-request/nomination-request.interface\";\r\n\r\n\r\nexport interface IBillableServiceOptionDto {\r\n id: number;\r\n billableServiceId: number;\r\n billableServiceType: string;\r\n isStsNominatable: boolean;\r\n code: string;\r\n isBiddable: boolean;\r\n useBillableServicePaths: boolean;\r\n allowFuelAtAlternateLocation: boolean;\r\n\r\n}\r\n\r\nexport class BillableServiceOptionCollection extends Array {\r\n\r\n // Replace the prototype of Array with our custom definitions\r\n public static create(items?: Array): BillableServiceOptionCollection {\r\n const billableServiceOption = Object.create(BillableServiceOptionCollection.prototype);\r\n _.forEach(items, x => billableServiceOption.push(x));\r\n return billableServiceOption;\r\n }\r\n\r\n public filterBasedOnNomGroups(nominationGroupCollection: NominationGroupCollection): BillableServiceOption[] {\r\n // TODO - NomRequestRefactoring - This method was moved from the component to this domain class as an initials step. Wrap tests and then refactor accordingly.\r\n return _.filter(this, billableServiceOption => billableServiceOption.isAssociatedToOneOfTheNomGroups(nominationGroupCollection));\r\n }\r\n\r\n public createMap(nominationGroupCollection: NominationGroupCollection, gasCycleCode: string): Map> {\r\n\r\n const map: Map> = new Map>();\r\n\r\n const distinctBillableServiceIds = nominationGroupCollection.billableServiceIds;\r\n\r\n _.forEach(this, (billableServiceOption) => {\r\n // If it's even one of the billable service option ids to look at\r\n if (_.includes(distinctBillableServiceIds, billableServiceOption.billableServiceId)) {\r\n\r\n const nominationGroupsForOption = new Array();\r\n _.forEach(nominationGroupCollection, (nomGroup) => {\r\n\r\n if (billableServiceOption.isAssociatedToNomGroup(nomGroup, gasCycleCode)) {\r\n nominationGroupsForOption.push(nomGroup);\r\n }\r\n });\r\n\r\n if (_.some(nominationGroupsForOption)) {\r\n map.set(billableServiceOption, nominationGroupsForOption);\r\n }\r\n }\r\n });\r\n\r\n return map;\r\n }\r\n\r\n public toLookupList(): LookupItem[] {\r\n return _.map(this, x => new LookupItem(x.id, x.displayValue));\r\n }\r\n}\r\n\r\nexport class BillableServiceOption {\r\n id: number;\r\n billableServiceId: number;\r\n billableServiceType: string;\r\n code: string;\r\n isStsNominatable: boolean;\r\n isBiddable: boolean;\r\n useBillableServicePaths: boolean;\r\n allowFuelAtAlternateLocation: boolean;\r\n\r\n\r\n public static create(dto: IBillableServiceOptionDto): BillableServiceOption {\r\n const billableServiceOption = new BillableServiceOption();\r\n\r\n billableServiceOption.id = dto.id;\r\n billableServiceOption.code = dto.code;\r\n billableServiceOption.isStsNominatable = dto.isStsNominatable;\r\n billableServiceOption.billableServiceId = dto.billableServiceId;\r\n billableServiceOption.billableServiceType = dto.billableServiceType;\r\n billableServiceOption.isBiddable = dto.isBiddable;\r\n billableServiceOption.useBillableServicePaths = dto.useBillableServicePaths;\r\n billableServiceOption.allowFuelAtAlternateLocation = dto.allowFuelAtAlternateLocation;\r\n\r\n return billableServiceOption;\r\n }\r\n\r\n public get displayValue(): string {\r\n return this.code == null || this.code.trim() === '' ? this.billableServiceType : `${this.billableServiceType} ${this.code}`;\r\n }\r\n\r\n public is(typeCodeValue: string): boolean {\r\n return this.displayValue === typeCodeValue;\r\n }\r\n\r\n hasDivertOption(): boolean {\r\n if (!this.code) { return false; }\r\n return this.code.toLowerCase() === \"d\";\r\n }\r\n\r\n isExcessCapacity(): boolean {\r\n if (!this.code) { return false; }\r\n return this.code.toLowerCase() === \"e\";\r\n }\r\n\r\n hasInjectionOption(): boolean {\r\n if (!this.code) { return false; }\r\n return this.code.toLowerCase() === \"i\";\r\n }\r\n\r\n hasInjectionOverrunOption(): boolean {\r\n if (!this.code) { return false; }\r\n switch (this.code.toLowerCase()) {\r\n case \"i o\":\r\n case \"io\":\r\n case \"o i\":\r\n case \"oi\":\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n public isAssociatedToNomGroup(nominationGroup: NominationGroup, gasCycleCode: string): boolean {\r\n\r\n if (!_.includes(nominationGroup.billableServiceIds, this.billableServiceId)) {\r\n return false;\r\n }\r\n\r\n // Check if billable service is applicable to this cycle\r\n if (!this.isForCycle(gasCycleCode)) {\r\n return false;\r\n }\r\n\r\n // On the STS Cycle, the nomination group must have an injection limit\r\n if (GasCycle.isStsCycle(gasCycleCode)) {\r\n if ((this.billableServiceType === 'FT') || (this.billableServiceType === 'FT-NR')) {\r\n if (!nominationGroup.hasInjectionLimit) {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n // If the billable service option is injectible, the nom group must have an injection limit to appear in this list.\r\n if ((this.hasInjectionOption() || this.hasInjectionOverrunOption()) && (!nominationGroup.accountInjectionLimit || nominationGroup.accountInjectionLimit.locations.length === 0)) {\r\n return false;\r\n }\r\n // If the billable service option allows overruns, the nom group's injection limit must allow overruns.\r\n if (this.hasInjectionOverrunOption() && (!nominationGroup.accountInjectionLimit || !nominationGroup.accountInjectionLimit.injectionOverrun)) {\r\n return false;\r\n }\r\n\r\n // excess capacity billable service option requires the nomGroup to have anchorShipperRights === true\r\n if (this.billableServiceType === 'FT' && this.isExcessCapacity() && (_.isNil(nominationGroup.anchorShipperRights) || nominationGroup.anchorShipperRights === false)){\r\n return false;\r\n }\r\n\r\n // If the billable service is STS, the nom group must have a withdrawal limit to appear in this list.\r\n return !(this.billableServiceType === 'STS' && (!nominationGroup.accountWithdrawalLimits || nominationGroup.accountWithdrawalLimits.length === 0));\r\n\r\n\r\n }\r\n\r\n public isAssociatedToOneOfTheNomGroups(nominationGroupCollection: NominationGroupCollection): boolean {\r\n // TODO - NomRequestRefactoring - This method was moved from the component to this domain class as an initials step. Wrap tests and then refactor accordingly.\r\n\r\n const distinctBillableServiceIds = nominationGroupCollection.billableServiceIds;\r\n\r\n if (_.includes(distinctBillableServiceIds, this.billableServiceId) || this.id === 0) { // <-- Why zero?\r\n let nomGroup: NominationGroup = null;\r\n\r\n if (this.hasInjectionOption() || this.hasInjectionOverrunOption()) {\r\n // We only include a billable service with an injection option if at least one nom group has\r\n // a defined account injection limit.\r\n nomGroup = _.find(nominationGroupCollection, x => x.billableServiceId === this.billableServiceId && x.accountInjectionLimit != null);\r\n if (!nomGroup) {\r\n return false;\r\n }\r\n }\r\n\r\n if (this.hasInjectionOverrunOption()) {\r\n // In addition for overrun options, the account injection limit has to permit overruns.\r\n if (!nomGroup.accountInjectionLimit.injectionOverrun) {\r\n return false;\r\n }\r\n }\r\n\r\n if (this.billableServiceType === 'STS') {\r\n // We only include STS if at least one nom group has a defined account withdrawal limit.\r\n nomGroup = _.find(nominationGroupCollection, x => x.billableServiceId === this.billableServiceId && x.accountWithdrawalLimits != null && x.accountWithdrawalLimits.length > 0);\r\n if (!nomGroup) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n\r\n }\r\n\r\n public isForCycle(gasCycleCode: string): boolean {\r\n if (!GasCycle.isStsCycle(gasCycleCode)) { return true; }\r\n\r\n return this.isStsNominatable;\r\n }\r\n\r\n}\r\n","\r\nimport {map} from 'rxjs/operators';\r\nimport * as _ from 'lodash';\r\nimport { Injectable } from '@angular/core';\r\nimport {NominationResourceService} from \"@shared/resources/nominations-resource.service\";\r\nimport {Observable} from \"rxjs\";\r\nimport {BillableServiceOption, BillableServiceOptionCollection, IBillableServiceOptionDto} from \"@model/billable-service-option\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\n\r\nexport class BillableServiceOptionRequest {\r\n gasDay: GasDay;\r\n endGasDay: GasDay;\r\n nominationGroupId: number;\r\n\r\n constructor(gasDay: GasDay, nominationGroupId: number, endGasDay?: GasDay) {\r\n this.gasDay = gasDay;\r\n this.nominationGroupId = nominationGroupId;\r\n this.endGasDay = endGasDay;\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport class BillableServiceOptionService {\r\n\r\n constructor(private nominationResource: NominationResourceService) {}\r\n\r\n queryAll(searchParams: BillableServiceOptionRequest): Observable {\r\n return this.nominationResource.get('/billableserviceoptions', true, this.buildUrlSearchParams(searchParams)).pipe(\r\n map(gasDayCycleStatusesDto => {\r\n const gasDayCycleStatuses = _.map(gasDayCycleStatusesDto, x => BillableServiceOption.create(x));\r\n return BillableServiceOptionCollection.create(gasDayCycleStatuses);\r\n }));\r\n }\r\n\r\n private buildUrlSearchParams(searchParams: BillableServiceOptionRequest): GCTSHttpParams {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('gasDay', searchParams.gasDay.toString());\r\n params.set('nominationGroupId', searchParams.nominationGroupId.toString());\r\n\r\n if (!_.isNil(searchParams.endGasDay)) {\r\n params.set('endGasDay', searchParams.endGasDay.toString());\r\n }\r\n\r\n return params;\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\nimport {\r\n ICopyNominationsModel, IEnergyImbalanceInstruction, INominationRequest, INominationRequestsModel,\r\n INominationRequestsSearchParams, ITransportationNominationRequest,\r\n IUndoRecord, LookupItem\r\n} from \"@shared/services/nomination/nomination-request/nomination-request.interface\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {GasCycle} from \"@model/gas-cycle\";\r\nimport {NominationSystemService} from \"@shared/services/nomination/nomination-system/nomination-system.service\";\r\nimport {GasCycleService} from \"@shared/services/nomination/gas-cycle/gas-cycle.service\";\r\nimport {NominationRequestsComponent} from \"./nomination-requests.component\";\r\nimport {GasDayCycle} from \"@model/gas-day-cycle\";\r\nimport {\r\n NominationRequest,\r\n} from \"@shared/services/nomination/nomination-request/nomination-request.service\";\r\nimport DataSource from \"devextreme/data/data_source\";\r\nimport {\r\n NominationGroup, NominationGroupHierarchyCollection,\r\n NominationGroupHierarchy2, NominationGroupCollection\r\n} from \"@shared/services/nomination/nomination-nom-group/nomination-nom-group.service\";\r\nimport {YesAndNo} from \"@model/yes-no\";\r\nimport {BillableServiceOption, BillableServiceOptionCollection} from \"@model/billable-service-option\";\r\nimport {NominationLocation, NominationLocationCollection } from \"@shared/services/nomination/nomination-location/nomination-location.service\";\r\nimport {GasDayCycleStatusCollection} from \"@model/gas-day-cycle-status-collection\";\r\nimport {NominationEnterprise} from \"@shared/services/nomination/nomination-enterprise/nomination-enterprise.service\";\r\nimport {SimpleGasDayCycleStatus} from \"@model/simple-gas-day-cycle-status\";\r\nimport {CounterPartyTitleTransferMismatch} from \"app/gcts/nomination/nomination-requests/title-transfer-mismatches/title-transfer-mismatches.model\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {NominationTransactionType} from \"@model/nomination-transaction-type\";\r\nimport {ImbalanceTradeLocationBalance, ImbalanceTradeLocationBalances} from \"@model/models/imbalance-trade-location-balance\";\r\n\r\nexport const HubStatuses = {\r\n incomplete: 'Incomplete',\r\n saved: 'Saved',\r\n failed: 'Failed',\r\n passed: 'Passed',\r\n new: 'New',\r\n mismatched: 'Mismatched',\r\n revised: 'Revised',\r\n pending: 'Pending',\r\n complete: 'Complete'\r\n};\r\n\r\n/**\r\n * NominationRequestFields is instance based because the UI cannot reference static properties on a class.\r\n */\r\nexport class NominationRequestFields {\r\n statusCode: string = 'statusCode';\r\n billableServiceOptionId: string = 'billableServiceOptionId';\r\n nominationGroupId: string = 'nominationGroupId';\r\n transportationRank: string = 'transportationRank';\r\n debitLocationId: string = 'debitLocationId';\r\n receiptRank: string = 'receiptRank';\r\n creditLocationId: string = 'creditLocationId';\r\n deliveryRank: string = 'deliveryRank';\r\n energy: string = 'energy';\r\n packageId: string = 'packageId';\r\n bidPrice: string = 'bidPrice';\r\n fuelNominationRequestLocationId: string = 'fuelNominationRequest.locationId';\r\n fuelNominationRequestFuel: string = 'fuelNominationRequest.fuel';\r\n zeroTaxRated: string = 'zeroTaxRated';\r\n\r\n // Gas Day Cycle properties to simplify gas day date & code - Transport, Receipt, Delivery.\r\n // Note that Energy Imbalance has not been updated to use these fields.\r\n startGasDayCycleCode: string = 'startGasDayCycleCode';\r\n startGasDayDate: string = 'startGasDayDate';\r\n endGasDayEndDate: string = 'endGasDayEndDate';\r\n epsq: string = 'epsq';\r\n\r\n transactionType: string = 'transactionType';\r\n debitLocationName: string = 'debitLocationName';\r\n creditLocationName: string = 'creditLocationName';\r\n upDownContract: string = 'upDownContract';\r\n counterParty: string = 'counterParty';\r\n\r\n info: string = 'info';\r\n}\r\n\r\nexport class NominationRequestsModel implements INominationRequestsModel {\r\n public static rankFieldMaxLength: number = 3;\r\n children: any = {\r\n Child_Transport: 'Transport',\r\n Child_Hub_Receipts: 'Hub Rec',\r\n Child_Hub_Deliveries: 'Hub Del',\r\n Child_Balance: 'Balance',\r\n Child_Energy_Imbalance: 'Energy Imbalance Instructions'\r\n };\r\n\r\n nomRequestFields: NominationRequestFields = new NominationRequestFields();\r\n minGasDay: GasDay = null;\r\n maxGasDay: GasDay = null;\r\n openGasDayCycleStatus: SimpleGasDayCycleStatus = null;\r\n gasDay: GasDay = null;\r\n customers: NominationEnterprise[] = [];\r\n customerHubNomGroups: NominationGroupHierarchyCollection = NominationGroupHierarchyCollection.create(); // TODO - JOE is it okay to initialize to [] ?\r\n hubNomGroups: NominationGroupHierarchy2[] = [];\r\n allNomGroups: NominationGroup[] = [];\r\n selectedGasCycle: GasCycle;\r\n gasCycles: GasCycle[] = [];\r\n titleTransferMismatches: CounterPartyTitleTransferMismatch[] = [];\r\n imbalanceTradeLocationBalances: ImbalanceTradeLocationBalances = null;\r\n childCTNomGroup: NominationGroup = null;\r\n\r\n gasDayCycleStatuses: GasDayCycleStatusCollection = null;\r\n lastGasDayCycleStatuses: GasDayCycleStatusCollection = null;\r\n todaysAllowableGasDay: GasDay = null;\r\n tomorrowsAllowableGasDay: GasDay = null;\r\n timelyOpenGasDayCycleStatus: SimpleGasDayCycleStatus = null;\r\n launchedGasCycles: GasCycle[] = [];\r\n locations: NominationLocation[] = [];\r\n locations2: NominationLocationCollection = NominationLocationCollection.create();\r\n nomGroups: NominationGroup[] = [];\r\n nomGroups2: NominationGroupCollection = NominationGroupCollection.create();\r\n transportationFuelNomGroups: NominationGroup[] = [];\r\n transportationVarianceNomGroups: NominationGroup[] = [];\r\n confirmationVarianceNomGroups: NominationGroup[] = [];\r\n loanNomGroups: NominationGroup[] = [];\r\n parkNomGroups: NominationGroup[] = [];\r\n inventoryTransferNomGroups: NominationGroup[] = [];\r\n tboTransferNomGroups: NominationGroup[] = [];\r\n tboFuelNomGroups: NominationGroup[] = [];\r\n validTransportNomGroups: NominationGroup[] = [];\r\n tboConfirmationNomGroups: NominationGroup[] = [];\r\n validAccounts = [];\r\n billableServiceOptions: BillableServiceOption[] = [];\r\n billableServiceOptions2: BillableServiceOptionCollection = BillableServiceOptionCollection.create();\r\n billableServiceLookupList: LookupItem[];\r\n billableServiceNominationGroupMap: Map> = new Map>();\r\n\r\n filteredBillableServiceOptions: BillableServiceOption[];\r\n receiptHubTransactionTypes: NominationTransactionType[];\r\n deliveryHubTransactionTypes: NominationTransactionType[];\r\n yesAndNo: YesAndNo[] = [];\r\n copyModel: ICopyNominationsModel = new CopyNominationsModel();\r\n pageView: boolean = false;\r\n hideZeroes: boolean = true;\r\n searchParams: INominationRequestsSearchParams = null;\r\n lastSearchParams: INominationRequestsSearchParams = null;\r\n newRowAdded: boolean = false;\r\n selectedNomGroup: NominationGroup;\r\n loadOperatorLocationsOnly: boolean = false;\r\n\r\n // Always uses the original delivery and receipt nomination requests to calculate hub balancing\r\n originalReceiptHubNominationRequests: INominationRequest[];\r\n originalDeliveryHubNominationRequests: INominationRequest[];\r\n\r\n queryDateTime: Date;\r\n\r\n transportationNominationRequests: ITransportationNominationRequest[] = null;\r\n transportDataSource: DataSource = null;\r\n transportUndos: Array = [];\r\n transportSelections: Array = []; // Selected transport records by key.\r\n\r\n receiptHubNominationRequests: INominationRequest[] = null;\r\n receiptDataSource: DataSource = null;\r\n receiptUndos: Array = [];\r\n receiptSelections: Array = [];\r\n\r\n deliveryHubNominationRequests: INominationRequest[] = null;\r\n deliveryDataSource: DataSource = null;\r\n deliveryUndos: Array = [];\r\n deliverySelections: Array = [];\r\n\r\n energyImbalanceInstructions: IEnergyImbalanceInstruction[] = null;\r\n energyDataSource: DataSource = null;\r\n energyImbalanceUndos: Array = [];\r\n energyImbalanceSelections: Array = [];\r\n\r\n // A key-based map of transportation nomination records to the cloned records in the receipt and delivery hubs.\r\n // The record may be split into separate transport and fuel records in the delivery hub.\r\n transportNominationClones: Array<{ receipt: ITransportationNominationRequest, delivery: ITransportationNominationRequest, fuel: INominationRequest }>;\r\n // A key-based map of cloned transportation nomination records in the receipt hub to the originals in the transport hub.\r\n receiptTransportNominationOriginals: Array;\r\n // A key-based map of cloned transportation nomination records in the delivery hub to the originals in the transport hub.\r\n deliveryTransportNominationOriginals: Array;\r\n\r\n showAllLocations = false;\r\n transportFilter = [];\r\n receiptFilter = [];\r\n deliveryFilter = [];\r\n energyFilter = [];\r\n\r\n balanceHubSelectedRowKeys = [];\r\n deliveryHubSelectedRowKeys = [];\r\n receiptHubSelectedRowKeys = [];\r\n transportHubSelectedRowKeys = [];\r\n energyImbalanceSelectedRowKeys = [];\r\n\r\n addRowTransactionType: string;\r\n\r\n nominationDeadlinePassed: boolean; // Property only used by energy-imbalance\r\n\r\n canEnableEditMode: boolean = false;\r\n disableNomReqEntries: boolean = false;\r\n\r\n reasonPopupTransferReason: string;\r\n\r\n hideChildren: string[];\r\n isReadOnlyMode: boolean;\r\n isOneDayAdjustmentCapable: boolean;\r\n isFullAdjustmentCapable: boolean;\r\n debugging = true;\r\n userIsInternal: boolean = false;\r\n\r\n columnWidths: any;\r\n columnEditorPopupWidths: Map;\r\n nominationTransactionTypes: NominationTransactionType[];\r\n locationBalancesRequireRefresh: boolean;\r\n\r\n constructor(private nominationRequestsComponent: NominationRequestsComponent, private gasCycleService: GasCycleService,\r\n private nominationSystemService: NominationSystemService) {\r\n this.searchParams = new NominationRequestsSearchParams(nominationRequestsComponent, gasCycleService, nominationSystemService);\r\n this.columnWidths = {};\r\n this.columnEditorPopupWidths = new Map();\r\n }\r\n\r\n anyNominationsSelected(): boolean {\r\n // Strange TypeScript compilation bug meaning that you cant remove this const result =\r\n const result =\r\n ((this.deliveryHubSelectedRowKeys != null && this.deliveryHubSelectedRowKeys.length > 0) ||\r\n (this.receiptHubSelectedRowKeys != null && this.receiptHubSelectedRowKeys.length > 0) ||\r\n (this.transportHubSelectedRowKeys != null && this.transportHubSelectedRowKeys.length > 0) ||\r\n (this.energyImbalanceSelectedRowKeys != null && this.energyImbalanceSelectedRowKeys.length > 0));\r\n return result;\r\n }\r\n\r\n public anyDeletableNomSelected(): boolean {\r\n return this.anyRows((x: NominationRequest) => x.canBeDeleted);\r\n }\r\n\r\n public anyPendingStsRows(): boolean {\r\n return this.anyRows((x: NominationRequest) => GasCycle.isStsCycle(x.startGasDayCycleCode) && x.statusCode === HubStatuses.pending);\r\n }\r\n\r\n public anyNewOrRevisedRows(): boolean {\r\n // -1 indicates a newly inserted row without an assigned Id\r\n return _.includes(this.getSelectedIds(), -1)\r\n || this.anyRows((x: NominationRequest) =>\r\n (x.statusCode === HubStatuses.new || x.statusCode === HubStatuses.revised || x.isPendingChanged === true));\r\n }\r\n\r\n public anyFailedRows(): boolean {\r\n return this.anyRows((x: NominationRequest) => (x.statusCode === HubStatuses.failed));\r\n }\r\n\r\n public anySavedRows(): boolean {\r\n return this.anyRows((x: NominationRequest) => (x.statusCode === HubStatuses.saved || x.statusCode === HubStatuses.mismatched));\r\n }\r\n\r\n public anySavedRowsThatAreNotSelected(): boolean {\r\n return this.anyRows((x: NominationRequest) =>\r\n (x.statusCode === HubStatuses.saved || x.statusCode === HubStatuses.mismatched), false);\r\n }\r\n\r\n anyNonNewRows(): boolean {\r\n return this.anyRows((x: NominationRequest) =>\r\n (x.statusCode === HubStatuses.failed || x.statusCode === HubStatuses.passed || x.statusCode === HubStatuses.saved || x.statusCode === HubStatuses.mismatched));\r\n }\r\n\r\n private anyRowsIn(predicate: any, array: Array, ids: Array, checkThatRowHasBeenClicked: boolean = true) {\r\n const filteredRows = _.filter(array, predicate);\r\n\r\n if (checkThatRowHasBeenClicked) {\r\n const selectedSavedOrFailedRecords = _.intersection(ids, filteredRows.map(x => (x as any).key));\r\n return selectedSavedOrFailedRecords.length > 0;\r\n }\r\n\r\n return filteredRows.length > 0;\r\n }\r\n\r\n private anyRows(predicate: any, checkThatRowHasBeenClicked: boolean = true) {\r\n return this.anyRowsIn(predicate, this.transportationNominationRequests, this.transportHubSelectedRowKeys, checkThatRowHasBeenClicked)\r\n || this.anyRowsIn(predicate, this.receiptHubNominationRequests, this.receiptHubSelectedRowKeys, checkThatRowHasBeenClicked)\r\n || this.anyRowsIn(predicate, this.deliveryHubNominationRequests, this.deliveryHubSelectedRowKeys, checkThatRowHasBeenClicked);\r\n }\r\n\r\n private getSelectedIds(): Array {\r\n return _.union(this.deliveryHubSelectedRowKeys, this.receiptHubSelectedRowKeys, this.transportHubSelectedRowKeys, this.energyImbalanceSelectedRowKeys);\r\n }\r\n}\r\n\r\nexport class UndoRecord implements IUndoRecord {\r\n constructor(public key: number, public data: any) {\r\n }\r\n}\r\n\r\nexport class CopyNominationsModel implements ICopyNominationsModel {\r\n gasCycles: GasCycle[];\r\n maxGasDayForCycleStatus: GasDay;\r\n\r\n beginGasDayMinGasDay: GasDay;\r\n beginGasDayMaxGasDay: GasDay;\r\n endGasDayNextGasDayMinGasDay: GasDay;\r\n endGasDayNextGasDayMaxGasDay: GasDay;\r\n\r\n beginGasCycleCode: string = GasCycle.TimelyCycleCode;\r\n beginGasDay: GasDay;\r\n endGasDayNextGasDay: GasDay;\r\n\r\n accountExpiredMessage: string;\r\n hasExpiredAccount: boolean;\r\n allRequestsExpired: boolean;\r\n\r\n gasDayCycleStatuses: GasDayCycleStatusCollection;\r\n\r\n public isValid(): boolean {\r\n return !!this.beginGasCycleCode &&\r\n !!this.beginGasDay &&\r\n !!this.endGasDayNextGasDay;\r\n }\r\n\r\n public setBeginGasDay(gasDay: GasDay, maxGasDay: GasDay): void {\r\n this.beginGasDay = gasDay;\r\n this.beginGasDayMaxGasDay = maxGasDay;\r\n this.endGasDayNextGasDayMinGasDay = this.beginGasDay.next() as GasDay;\r\n\r\n\r\n }\r\n\r\n public setEndGasDayNextGasDay(gasDay: GasDay): void {\r\n this.endGasDayNextGasDay = gasDay;\r\n this.beginGasDayMaxGasDay = this.endGasDayNextGasDay.previous() as GasDay;\r\n }\r\n\r\n public updateCopyModalProperties(defaultEndGasDay: boolean, data: INominationRequestsModel) {\r\n const selectedGasCycle = _.find(this.gasCycles, x => x.code === this.beginGasCycleCode);\r\n const beginGasDayCycle = GasDayCycle.for(this.beginGasDay, selectedGasCycle);\r\n\r\n this.endGasDayNextGasDayMaxGasDay = this.beginGasCycleCode === GasCycle.TimelyCycleCode\r\n ? GasDay.from(\r\n _.min(\r\n [\r\n this.maxGasDayForCycleStatus.next().toDate,\r\n GasMonth.fromGasDay(this.beginGasDay).end().next().toDate\r\n ]))\r\n : this.beginGasDay.next() as GasDay;\r\n\r\n if (defaultEndGasDay) {\r\n // Do not use the setEndGasDayNextGasDay method, or else users will be locked to a single day for intraday\r\n const isAdjustment = data.timelyOpenGasDayCycleStatus.gasDay > beginGasDayCycle.gasDay;\r\n this.endGasDayNextGasDay = beginGasDayCycle.defaultEndGasDayCycle(isAdjustment).gasDay.next() as GasDay;\r\n }\r\n }\r\n\r\n public onBeginGasCycleChanged(e: any): void {\r\n if (!this.beginGasCycleCode) return;\r\n\r\n this.updateCopyModalProperties(false, e.data);\r\n }\r\n\r\n public onEndGasDayNextGasDayChanged(): void {\r\n if (!this.endGasDayNextGasDay) return;\r\n\r\n this.setEndGasDayNextGasDay(this.endGasDayNextGasDay);\r\n }\r\n}\r\n\r\nexport class NominationRequestsSearchParams implements INominationRequestsSearchParams {\r\n private _customerId: number;\r\n private _gasDay: GasDay;\r\n private _gasCycleCode: string = GasCycle.TimelyCycleCode;\r\n\r\n get customerId(): number {\r\n return this._customerId;\r\n }\r\n\r\n set customerId(value: number) {\r\n if (this._customerId !== value) {\r\n this._customerId = value;\r\n }\r\n }\r\n\r\n get gasDay(): GasDay {\r\n return this._gasDay;\r\n }\r\n\r\n set gasDay(gasDay: GasDay) {\r\n if (_.isNil(this._gasDay) || !this._gasDay.isEqual(gasDay)) {\r\n this._gasDay = gasDay;\r\n }\r\n }\r\n\r\n get gasCycleCode(): string {\r\n return this._gasCycleCode;\r\n }\r\n\r\n set gasCycleCode(value: string) {\r\n if (this._gasCycleCode !== value) {\r\n this._gasCycleCode = value;\r\n }\r\n }\r\n\r\n nomGroupId: number;\r\n gasDayIsValid = true;\r\n\r\n constructor(private nominationRequestsComponent: NominationRequestsComponent, private gasCycleService: GasCycleService,\r\n private nominationSystemService: NominationSystemService, customerId?: number, nomGroupId?: number, gasDay?: GasDay, gasCycleCode?: string) {\r\n this.nomGroupId = nomGroupId;\r\n this.gasCycleCode = gasCycleCode;\r\n\r\n if (!_.isNil(customerId)) {\r\n // Assume this comes from params, so don't requery hubNomGroups if it's not null.\r\n if (nominationRequestsComponent.model.customerHubNomGroups && nominationRequestsComponent.model.customerHubNomGroups.length > 0) {\r\n this._customerId = customerId;\r\n this._gasDay = gasDay;\r\n } else {\r\n this.customerId = customerId;\r\n this.gasDay = gasDay;\r\n }\r\n }\r\n }\r\n\r\n getNomGroups() {\r\n if (this.customerId != null && this.gasDay != null) {\r\n let hubNomGroups = _.filter(this.nominationRequestsComponent.model.hubNomGroups,\r\n group => group.enterpriseId === this.customerId && group.isEffectiveFor(this.gasDay));\r\n hubNomGroups = _.sortBy(hubNomGroups, x => x.mnemonic);\r\n // this.nominationRequestsComponent.model.customerHubNomGroups = hubNomGroups;\r\n this.nominationRequestsComponent.model.customerHubNomGroups = NominationGroupHierarchyCollection.create(hubNomGroups);\r\n if (_.isNil(hubNomGroups.find(x => x.id === this.nominationRequestsComponent.model.searchParams.nomGroupId))) {\r\n if (hubNomGroups.length === 1) {\r\n this.nominationRequestsComponent.model.searchParams.nomGroupId = hubNomGroups[0].id;\r\n this.nominationRequestsComponent.accountChanged();\r\n } else {\r\n this.nominationRequestsComponent.model.searchParams.nomGroupId = null;\r\n }\r\n this.nominationRequestsComponent.model.searchParams.nomGroupId = (hubNomGroups.length === 1) ? hubNomGroups[0].id : null;\r\n }\r\n } else {\r\n // this.nominationRequestsComponent.model.customerHubNomGroups = [];\r\n this.nominationRequestsComponent.model.customerHubNomGroups = NominationGroupHierarchyCollection.create();\r\n this.nominationRequestsComponent.model.searchParams.nomGroupId = null;\r\n }\r\n }\r\n\r\n isEqual(otherObj: INominationRequestsSearchParams) {\r\n return this.customerId === otherObj.customerId && this.nomGroupId === otherObj.nomGroupId && this.gasDay.isEqual(otherObj.gasDay) && this.gasCycleCode === otherObj.gasCycleCode;\r\n }\r\n\r\n private nomGroupInEffectDuringGivenGasDay(nomGroup, gasDay: GasDay) {\r\n const expiryGasDay = GasDay.from(nomGroup.expiryGasDay);\r\n const effectiveGasDay = GasDay.from(nomGroup.effectiveGasDay);\r\n return expiryGasDay.isGreatThanOrEqualTo(gasDay) && effectiveGasDay.isLessThanOrEqualTo(gasDay);\r\n }\r\n}\r\n","import * as _ from \"lodash\";\r\nimport {TitleTransferReportDto} from \"@shared/services/nomination/title-transfer-report/title-transfer-report.service\";\r\n\r\nexport class CounterPartyTitleTransferMismatch {\r\n public locationId: number;\r\n public locationName: string;\r\n public numberOfMismatchedBuys: number;\r\n public numberOfMismatchedSells: number;\r\n\r\n constructor(locationId: number, locationName: string, numberOfMismatchedBuys: number, numberOfMismatchedSells: number) {\r\n this.locationId = locationId;\r\n this.locationName = locationName;\r\n this.numberOfMismatchedBuys = numberOfMismatchedBuys;\r\n this.numberOfMismatchedSells = numberOfMismatchedSells;\r\n }\r\n\r\n public static create(titleTransferReportDtos: TitleTransferReportDto[], nomGroupId: number): CounterPartyTitleTransferMismatch[] {\r\n const groupByLocations = _.groupBy(titleTransferReportDtos, dto => dto.locationId);\r\n\r\n const dtos: CounterPartyTitleTransferMismatch[] = [];\r\n\r\n for (const locationId of Object.keys(groupByLocations)) {\r\n const mismatchedCounterPartyTitleTransfers = groupByLocations[locationId];\r\n\r\n // When displaying Counter Party Mismatch, we will reverse the buy/sell. For example, if BPCG has a mismatched Buy to ECNG, when viewing\r\n // the nomination request page for ECNG, it should show a value for the Sell column. This is modelled similar to how the Title Transfer Report\r\n // is displayed.\r\n const locationName = _.head(mismatchedCounterPartyTitleTransfers)['locationName'];\r\n const numberOfBuys = _.filter(mismatchedCounterPartyTitleTransfers, dto => dto.creditNomGroupId === nomGroupId).length;\r\n const numberOfSells = _.filter(mismatchedCounterPartyTitleTransfers, dto => dto.debitNomGroupId === nomGroupId).length;\r\n\r\n dtos.push(new CounterPartyTitleTransferMismatch(+locationId, locationName, numberOfBuys, numberOfSells));\r\n }\r\n\r\n return dtos;\r\n }\r\n\r\n /**\r\n * Filter Title Transfer Reports for only Counter Party Mismatches and gas cycle.\r\n */\r\n public static filter(titleTransferReportDtos: TitleTransferReportDto[], gasCycleCode: string): TitleTransferReportDto[] {\r\n return _.filter(titleTransferReportDtos,\r\n dto =>\r\n _.isNil(dto.nomRequestId) &&\r\n !_.isNil(dto.counterPartyStartGasDayCycle) &&\r\n dto.counterPartyStartGasDayCycle.gasCycleCode === gasCycleCode);\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { Observable, of } from \"rxjs\";\r\nimport {NominationGroup} from \"@shared/services/nomination/nomination-nom-group/nomination-nom-group.service\";\r\nimport {NominationResourceService} from \"@shared/resources/nominations-resource.service\";\r\nimport { IGasDay } from \"@model/gas-day-month.interface\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {ImbalanceTradeRequest} from \"@model/models/imbalance-trade-request\";\r\nimport {IImbalanceTradeRequestQueryResult} from \"app/gcts/nomination/imbalance-trade-requests/imbalance-trade-component.interface\";\r\nimport {DateTime} from \"@model/date-time\";\r\nimport {map, tap} from \"rxjs/operators\";\r\nimport * as _ from \"lodash\";\r\nimport {Account} from \"@model/models/account\";\r\nimport {ImbalanceTradeLocationBalance, ImbalanceTradeLocationBalances} from \"@model/models/imbalance-trade-location-balance\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ImbalanceTradeRequestsService {\r\n\r\n constructor(private nominationResource: NominationResourceService) {\r\n }\r\n\r\n public queryNominationGroupsForImbalanceTrade(gasDay: GasDay, customerId: number) : Observable{\r\n return this.nominationResource.get('/nominationgroups/names/imbalancetrade', true, this.buildUrlSearchParams(gasDay, customerId));\r\n }\r\n\r\n private buildUrlSearchParams(gasDay: IGasDay, customerId: number): GCTSHttpParams {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n\r\n if (gasDay != null) { params.set('gasDay', gasDay.toString()); }\r\n if (customerId != null) { params.set('enterpriseId', customerId.toString()); }\r\n\r\n return params;\r\n }\r\n\r\n public queryImbalanceTradeRequests(customerId: number, nomGroupId: number, gasDay: GasDay, requestType: string, mismatchedOnly: boolean): Observable {\r\n\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('enterpriseId', customerId.toString());\r\n params.set('nominationGroupId', nomGroupId.toString());\r\n params.set('gasDay', gasDay.toString());\r\n params.set('transactionType', `ImbalanceTrade${requestType}`.toString());\r\n params.set('mismatchedOnly', mismatchedOnly.toString());\r\n\r\n return this.nominationResource.get('/imbalancetraderequests/', true, params).pipe(\r\n tap(result => {\r\n result.queryDateTime = new Date(result.queryDateTime);\r\n\r\n if(result.requests) {\r\n result.requests.forEach(item => {\r\n item.issueDateTime = DateTime.parse(item.issueDateTime.toString());\r\n });\r\n }\r\n }));\r\n }\r\n\r\n public queryImbalanceTradeLocationBalances(customerId: number, nomGroupId: number, gasDay: GasDay): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('enterpriseId', customerId.toString());\r\n params.set('nominationGroupId', nomGroupId.toString());\r\n params.set('gasDay', gasDay.toString());\r\n\r\n return this.nominationResource.get('/imbalanceTradeLocationBalances/', true, params);\r\n }\r\n\r\n public queryCounterPartyImbalanceTrade(gasDay: GasDay, customerId: number) : Observable{\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('enterpriseId', customerId.toString());\r\n params.set('gasDay', gasDay.toString());\r\n\r\n return this.nominationResource.get('/nominationgroups/names/imbalancetradecounterparty', true, params);\r\n }\r\n\r\n public saveImbalanceTradeRequest(customerId: number, hubNomGroupId: number, gasDay: GasDay, queryDateTime: Date, request: ImbalanceTradeRequest): Observable {\r\n const body = {\r\n enterpriseId: customerId,\r\n gasDay: gasDay.toString(),\r\n queryDateTime: queryDateTime,\r\n imbalanceTradeRequest: request\r\n };\r\n return this.nominationResource.postWithNoResponseBody('/imbalancetraderequests/save', body);\r\n }\r\n\r\n\r\n public deleteImbalanceTradeRequests(gasDay: GasDay, queryDateTime: Date, request: ImbalanceTradeRequest): Observable {\r\n const body = {\r\n gasDay: gasDay.toString(),\r\n queryDateTime: queryDateTime,\r\n requestToDelete: request.id,\r\n };\r\n\r\n return this.nominationResource.postWithNoResponseBody('/imbalancetraderequests/delete', body);\r\n }\r\n\r\n public matchImbalanceTradeRequests(customerId: number, hubNomGroupId: number, gasDay: GasDay, queryDateTime: Date, selectedRequests: Array) {\r\n const body = {\r\n enterpriseId: customerId,\r\n gasDay: gasDay.toString(),\r\n queryDateTime: queryDateTime,\r\n requestsToMatch: selectedRequests\r\n };\r\n\r\n return this.nominationResource.postWithNoResponseBody('/imbalancetraderequests/match', body);\r\n }\r\n}\r\n\r\nexport class ImbalanceTradeRequestQueryResult implements IImbalanceTradeRequestQueryResult {\r\n queryDateTime: Date;\r\n requests: ImbalanceTradeRequest[];\r\n}\r\n\r\n\r\n\r\n\r\n","import {GasCycle} from \"@model/gas-cycle\";\r\n\r\nexport class NominationTransactionType {\r\n id: number;\r\n code: string;\r\n description: string;\r\n ediNumber: string;\r\n isReceipt: boolean;\r\n isDelivery: boolean;\r\n isLinePack: boolean;\r\n isTbo: boolean;\r\n isTransport: boolean;\r\n isConfirmable: boolean;\r\n isStsNominatable: boolean;\r\n isNominationType: boolean;\r\n\r\n public static create(dto: NominationTransactionType){\r\n const nominationTransactionType = new NominationTransactionType();\r\n nominationTransactionType.id = dto.id;\r\n nominationTransactionType.code = dto.code;\r\n nominationTransactionType.description = dto.description;\r\n nominationTransactionType.ediNumber = dto.ediNumber;\r\n nominationTransactionType.isReceipt = dto.isReceipt;\r\n nominationTransactionType.isDelivery = dto.isDelivery;\r\n nominationTransactionType.isLinePack = dto.isLinePack;\r\n nominationTransactionType.isTbo = dto.isTbo;\r\n nominationTransactionType.isTransport = dto.isTransport;\r\n nominationTransactionType.isConfirmable = dto.isConfirmable;\r\n nominationTransactionType.isStsNominatable = dto.isStsNominatable;\r\n nominationTransactionType.isNominationType = dto.isNominationType;\r\n return nominationTransactionType;\r\n }\r\n\r\n public isForCycle(gasCycleCode: string): boolean {\r\n if (!GasCycle.isStsCycle(gasCycleCode)) return true;\r\n\r\n return this.isStsNominatable;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {NominationResourceService} from \"@shared/resources/nominations-resource.service\";\r\nimport {Observable} from \"rxjs\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {NominationTransactionType} from \"@model/nomination-transaction-type\";\r\nimport {map} from \"rxjs/operators\";\r\nimport * as _ from \"lodash\";\r\n\r\n@Injectable()\r\nexport class NominationTransactionTypeService {\r\n\r\n constructor(private nominationResource: NominationResourceService) {}\r\n\r\n queryAllNominationTypes(gasDay: GasDay): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('gasDay', gasDay.toString());\r\n\r\n return this.nominationResource.get('/nominationtransactiontypes', true, params).pipe(\r\n map(responseArray => {\r\n return _.map(responseArray, response => NominationTransactionType.create(response));\r\n }));\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n \r\n \r\n\r\n To subscribe enter your email address and click submit.\"\r\n eventType=\"NominationFailedOrAmended\"\r\n subscriptionMessage=\"Failed Nomination Notifications\"\r\n *ngIf=\"!model.userIsInternal\">\r\n\r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n Customer or Account is inactive for the selected dates. Copy not permitted.\r\n
\r\n
\r\n {{model.copyModel.accountExpiredMessage}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n\r\n
\r\n
\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Customer: {{model.lastSearchParams?.customerId | displayName: 'id' : 'displayValue' : model.customers}}\r\n Account: {{model.lastSearchParams?.nomGroupId | displayName: 'id' : 'mnemonic' : model.hubNomGroups}}\r\n Gas Day: {{model.lastSearchParams?.gasDay | gasDayFormat}}\r\n Cycle (CCT): {{model.lastSearchParams?.gasCycleCode | displayName: 'code' : 'displayValue' : model.gasCycles : 'EOD' }}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
{{model.lastSearchParams?.gasDay | gasDayFormat}}
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
{{model.lastSearchParams?.gasCycleCode | displayName: 'code' : 'displayValue' : model.gasCycles}}
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
{{model.lastSearchParams?.customerId | displayName: 'id' : 'displayValue' : model.customers}}
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
{{model.lastSearchParams?.nomGroupId | displayName: 'id' : 'mnemonic' :\r\n model.hubNomGroups}}
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
0\">\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
0\">\r\n \r\n \r\n
\r\n
0\">\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
0\">\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n

\r\n \r\n
\r\n
\r\n \r\n
\r\n\r\n \r\n \r\n \r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n\r\n\r\n","import * as _ from 'lodash';\r\nimport {AfterViewInit, ChangeDetectorRef, Component, OnInit, ViewChild} from '@angular/core';\r\nimport {AppService} from '@shared/services/webapp/app/app.service';\r\nimport {GasCycle} from '@model/gas-cycle';\r\nimport {ActivatedRoute, Params, Router} from '@angular/router';\r\nimport {GasDay} from '@model/gas-day';\r\nimport {GasDayCycleStatusCollection} from \"@model/gas-day-cycle-status-collection\";\r\nimport {NominationGroup, NominationGroupCollection, NominationGroupHierarchyCollection, NominationNomGroupService} from '@shared/services/nomination/nomination-nom-group/nomination-nom-group.service';\r\nimport {NominationSystemService} from '@shared/services/nomination/nomination-system/nomination-system.service';\r\nimport {ParamValidator} from '@model/validators/param-validator';\r\nimport {GasCycleService} from '@shared/services/nomination/gas-cycle/gas-cycle.service';\r\nimport {EnterpriseSearchParams, NominationEnterprise, NominationEnterpriseService} from '@shared/services/nomination/nomination-enterprise/nomination-enterprise.service';\r\nimport {\r\n CustodyTransferNominationRequest,\r\n EnergyImbalanceInstructionQueryResult,\r\n NominationRequest,\r\n NominationRequestService,\r\n TransactionTypes,\r\n TransferNominationRequestQueryResult,\r\n TransportationNominationRequest,\r\n TransportationNominationRequestQueryResult\r\n} from '@shared/services/nomination/nomination-request/nomination-request.service';\r\nimport {LocationSearchParams, NominationLocation, NominationLocationCollection, NominationLocationService} from '@shared/services/nomination/nomination-location/nomination-location.service';\r\nimport {YesAndNo} from '@model/yes-no';\r\nimport {AlertService} from \"app/shared/services/webapp/alert/alert.service\";\r\nimport {HubBalanceComponent} from \"./hub-balance/hub-balance.component\";\r\nimport {NominationPipelineGasDay} from \"@model/nomination-pipeline-gas-day\";\r\nimport ArrayStore from \"devextreme/data/array_store\";\r\nimport DataSource from \"devextreme/data/data_source\";\r\nimport {NominationRequestsPageViewComponent} from \"./nomination-requests-page-view/nomination-requests-page-view.component\";\r\nimport {NominationRequestsTabViewComponent} from \"./nomination-requests-tab-view/nomination-requests-tab-view.component\";\r\nimport {NominationEnterpriseEnrichmentService} from \"@shared/services/nomination/nomination-enterprise-enrichment/nomination-enterprise-enrichment.service\";\r\nimport {NominationLocationEnrichmentService} from \"@shared/services/nomination/nomination-location-enrichment/nomination-location-enrichment.service\";\r\nimport {NominationNomGroupEnrichmentService} from \"@shared/services/nomination/nomination-nom-group-enrichment/nomination-nom-group-enrichment.service\";\r\nimport {YesNoCancelModalService} from \"@shared/services/webapp/yes-no-cancel-modal/yes-no-cancel-modal.service\";\r\nimport {UndoRowArgs} from \"./common-hub.service\";\r\nimport {IEnergyImbalanceInstruction, INominationRequest, ITransportationNominationRequest, IUndoRecord} from '@shared/services/nomination/nomination-request/nomination-request.interface';\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {BillableServiceOption, BillableServiceOptionCollection} from \"@model/billable-service-option\";\r\nimport {BillableServiceOptionRequest, BillableServiceOptionService} from \"@shared/services/nomination/billable-service-option/billable-service-option.service\";\r\nimport {BusinessRight} from \"@model/business-right\";\r\nimport {UserService} from \"@shared/services/webapp/user/user-service\";\r\nimport * as FileSaver from 'file-saver';\r\nimport {CapabilitiesService} from \"@shared/services/webapp/capabilities/capabilities.service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {IGasDay} from \"app/shared/classes/gas-day-month.interface\";\r\nimport {ModalComponent} from \"@shared/components/modal/modal.component\";\r\nimport {ModalOptions} from \"@shared/services/webapp/modal-options/modal-options\";\r\nimport {CopyNominationsModel, HubStatuses, NominationRequestsModel, NominationRequestsSearchParams, UndoRecord} from \"./nomination-requests.model\";\r\nimport {HttpResponse} from \"@angular/common/http\";\r\nimport {EditableSearchComponent} from \"@model/editable-search-component\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {GasCycleLogic} from \"@model/gas-cycle.logic\";\r\nimport {GasDaySearchResourceTracker} from \"@model/gas-day-search-resource-tracker\";\r\nimport {SimpleGasDayCycleStatus} from \"@model/simple-gas-day-cycle-status\";\r\nimport {GasDayCycle} from \"@model/gas-day-cycle\";\r\nimport {User} from \"@model/user\";\r\nimport {YesNoModalOptions} from \"@shared/services/webapp/modal-options/yes-no-modal-options\";\r\nimport {SelectedModalOption} from \"@shared/services/webapp/modal-options/selected-modal-option\";\r\nimport {TitleTransferReportDto, TitleTransferReportRequest, TitleTransferReportService} from \"@shared/services/nomination/title-transfer-report/title-transfer-report.service\";\r\nimport {concatMap, tap} from \"rxjs/operators\";\r\nimport {CounterPartyTitleTransferMismatch} from \"app/gcts/nomination/nomination-requests/title-transfer-mismatches/title-transfer-mismatches.model\";\r\nimport {EMPTY, forkJoin, Observable, of, iif} from \"rxjs\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {NominationTransactionTypeService} from \"@shared/services/nomination/nomination-transaction-type/nomination-transaction-type.service\";\r\nimport {NominationTransactionType} from \"@model/nomination-transaction-type\";\r\nimport {ImbalanceTradeLocationBalance, ImbalanceTradeLocationBalances} from \"@model/models/imbalance-trade-location-balance\";\r\nimport {ImbalanceTradeRequestsService} from \"app/gcts/nomination/imbalance-trade-requests/imbalance-trade-requests-service\";\r\nimport {PipelineSettingMapService} from \"@shared/services/nomination/pipeline-settings-map/pipeline-setting-map.service\";\r\nimport {ImbalanceTradeLocationBalancesComponent} from \"app/gcts/nomination/imbalance-trade-requests/imbalance-trade-location-balances/imbalance-trade-location-balances.component\";\r\n\r\n@Component({\r\n selector: 'app-nomination-requests',\r\n templateUrl: './nomination-requests.component.html',\r\n styleUrls: ['./nomination-requests.component.css']\r\n})\r\n\r\n/**\r\n * Business Rules\r\n * ----------------\r\n *\r\n *\r\n * UnTested\r\n * - Default selected customer\r\n *\r\n * Known issues\r\n * - Receipt/Delivery Hub - Buy/Sell, the account seems to go away - I probably introduced this. :(\r\n * - Navigate to the page via a permalink for a future gas day (no intraday cycles). Then go back to April 1st, you don't see the intraday cycles.\r\n * - Filter out customers that have no hub nom groups (this code is commented out right now, maybe it can switch to the backend)\r\n * - Add an incomplete, change the customer, click search\r\n *\r\n */\r\n\r\nexport class NominationRequestsComponent extends EditableSearchComponent implements AfterViewInit, OnInit {\r\n\r\n hidePage = true;\r\n showFilters = true;\r\n model: NominationRequestsModel = null;\r\n recordsBeingProcessed: boolean = false;\r\n\r\n @ViewChild(NominationRequestsPageViewComponent) nominationRequestPageView: NominationRequestsPageViewComponent;\r\n @ViewChild(NominationRequestsTabViewComponent) nominationRequestTabView: NominationRequestsTabViewComponent;\r\n @ViewChild(HubBalanceComponent) hubBalanceComponent: HubBalanceComponent;\r\n @ViewChild('gasDay') gasDay;\r\n @ViewChild('copyModal') copyModal: ModalComponent;\r\n\r\n private gasDayTracker: GasDaySearchResourceTracker = new GasDaySearchResourceTracker();\r\n\r\n /**\r\n * Public Methods\r\n */\r\n constructor(public appService: AppService,\r\n public alertService: AlertService,\r\n public activatedRoute: ActivatedRoute,\r\n public router: Router,\r\n public nominationSystemService: NominationSystemService,\r\n public nominationEnterpriseEnrichmentService: NominationEnterpriseEnrichmentService,\r\n public nominationLocationEnrichmentService: NominationLocationEnrichmentService,\r\n public nominationNomGroupEnrichmentService: NominationNomGroupEnrichmentService,\r\n public nominationEnterpriseService: NominationEnterpriseService,\r\n public nominationLocationService: NominationLocationService,\r\n public nominationNomGroupService: NominationNomGroupService,\r\n public gasCycleService: GasCycleService,\r\n public nominationRequestService: NominationRequestService,\r\n public billableServiceOptionService: BillableServiceOptionService,\r\n public imbalanceTradeRequestsService: ImbalanceTradeRequestsService,\r\n public cdr: ChangeDetectorRef,\r\n private userService: UserService,\r\n private capabilitiesService: CapabilitiesService,\r\n private sessionService: SessionService,\r\n private modalService: YesNoCancelModalService,\r\n private titleTransferReportService: TitleTransferReportService,\r\n private nominationTransactionTypeService: NominationTransactionTypeService,\r\n private pipelineSettingMapService: PipelineSettingMapService) {\r\n\r\n super('Nomination Request', appService, activatedRoute, router, alertService);\r\n this.model = new NominationRequestsModel(this, gasCycleService, nominationSystemService);\r\n }\r\n\r\n // static as this is used by transport-hub.component.\r\n static createUndoRecord = (key: number, record: NominationRequest, undos: IUndoRecord[]) => {\r\n if (key > 0) { // Ignore new records.\r\n // Copy the data to the undos collection if it isn't already there.\r\n if (!undos.some(item => item.key === key)) {\r\n // We can't use dataStore.byKey() as it's async so the value would\r\n // be updated by the time we get the record.\r\n const dst = _.cloneDeep(record);\r\n undos.push(new UndoRecord(key, dst));\r\n }\r\n }\r\n };\r\n\r\n public toggleEditMode(): void {\r\n this.model.disableNomReqEntries = !this.model.disableNomReqEntries;\r\n }\r\n\r\n public onGasDayChanged(): void {\r\n // this will be fired even when a null value is returned from the date picker and don't want to reload with a bad date\r\n if (!this.model.searchParams.gasDay) return;\r\n\r\n // This forces it to be correctly defaulted in loadResources().\r\n this.model.searchParams.gasCycleCode = null;\r\n\r\n this.loadSearchResources().subscribe(() => {});\r\n }\r\n\r\n onAccountChanged(): void {\r\n this.accountChanged();\r\n }\r\n\r\n public onCustomerChanged(): void {\r\n // Clear the selected NomGroupId, and let everything work itself out.\r\n this.model.searchParams.nomGroupId = null;\r\n this.loadNomGroupsForCustomer().subscribe(() => {});\r\n }\r\n\r\n public hasUnsavedChanges(): boolean {\r\n const unsavedStatuses = ['New', 'Incomplete'];\r\n const hasEditData = this.getView().hasEditData();\r\n const newOrIncompleteInTransportNomRequests = _.some(this.model.transportationNominationRequests, x => _.includes(unsavedStatuses, x.statusCode));\r\n const newOrIncompleteReceiptHubNominationRequests = _.some(this.model.receiptHubNominationRequests, x => _.includes(unsavedStatuses, x.statusCode));\r\n const newOrIncompleteDeliveryHubNominationRequests = _.some(this.model.deliveryHubNominationRequests, x => _.includes(unsavedStatuses, x.statusCode));\r\n const updatedEnergyImbalanceInstructions = _.some(this.model.energyImbalanceSelectedRowKeys);\r\n const hasUndos = this.model.transportUndos.length > 0 || this.model.deliveryUndos.length > 0 || this.model.receiptUndos.length > 0;\r\n\r\n return newOrIncompleteInTransportNomRequests || newOrIncompleteReceiptHubNominationRequests || newOrIncompleteDeliveryHubNominationRequests || hasEditData || updatedEnergyImbalanceInstructions || hasUndos;\r\n }\r\n\r\n public navigationCancelled(): void {\r\n this.model.searchParams = _.clone(this.model.lastSearchParams);\r\n\r\n // gasDayChanged resets the gasCycleCode so we need it back\r\n this.loadSearchResources().subscribe(() => this.model.searchParams.gasCycleCode = this.model.lastSearchParams.gasCycleCode);\r\n }\r\n\r\n // todo-minor: this is basically a copy of save... should pull out commonality (if it ends up being common)\r\n public gasCyclePlaceholder(): string {\r\n // TODO - JOE - On this component, we seem to require these guard clauses in case the GasDayCycle is not yet set.\r\n // Interestingly enough, this is not required on any other component. Would like to understand why and remove.\r\n if (_.isNil(this.model.gasDayCycleStatuses)) return null;\r\n\r\n return GasCycleLogic.placeholder(this.model.gasDayCycleStatuses);\r\n }\r\n\r\n public isGasCycleRequired(): boolean {\r\n if (_.isNil(this.model.gasDayCycleStatuses)) return true;\r\n\r\n return GasCycleLogic.isRequired(this.model.gasDayCycleStatuses);\r\n }\r\n\r\n private enrichRequestsWithGasDayCycleObjects(requests: T[]): T[] {\r\n let result = _.map(requests, x => _.extend({}, x, {startGasDayCycle: { gasDay: GasDay.from(x.startGasDayDate).toString(), gasCycleCode: x.startGasDayCycleCode }}));\r\n // At this point, we need to rewind the endGasDayEndDate back one.\r\n result = _.map(result, x => _.extend({}, x, {endGasDayCycle: { gasDay: GasDay.from(x.endGasDayEndDate).previous().toString(), gasCycleCode: x.startGasDayCycleCode }}));\r\n return result;\r\n }\r\n\r\n private clearIssueDateTime(requests: T[]): T[] {\r\n return _.map(requests, request => { request.issueDateTime = null; return request; });\r\n }\r\n\r\n /**\r\n * Protected Methods\r\n */\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams.gasDay = this.model.tomorrowsAllowableGasDay;\r\n this.model.searchParams.gasCycleCode = null;\r\n\r\n this.model.searchParams.customerId = null;\r\n this.model.searchParams.nomGroupId = null;\r\n this.model.nomGroups = [];\r\n this.model.customerHubNomGroups = NominationGroupHierarchyCollection.create();\r\n this.model.transportationNominationRequests = null;\r\n this.model.deliveryHubNominationRequests = null;\r\n this.model.receiptHubNominationRequests = null;\r\n this.model.energyImbalanceInstructions = null;\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return this.paramValidator().isValid(params);\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams = new NominationRequestsSearchParams(\r\n this, this.gasCycleService, // TODO - NomRequestRefactoring - Why do we pass this in?\r\n this.nominationSystemService, // TODO - NomRequestRefactoring - Why do we pass this in?\r\n typedParams.asNullableNumber('customerId'),\r\n typedParams.asNullableNumber('nomGroupId'),\r\n typedParams.asGasDay('gasDay'),\r\n typedParams.asNullableString('gasCycleCode')\r\n );\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n const serviceCalls: Observable[] = [\r\n this.nominationSystemService.pipelineGasDay(), // 0\r\n\r\n // Doing these 3 requests at once with the Observable set to .share() means they\r\n // all get ran at the same time turning 3 queries into 1 query.\r\n this.nominationEnterpriseEnrichmentService.fetch(),\r\n this.nominationLocationEnrichmentService.fetch(),\r\n this.nominationNomGroupEnrichmentService.fetch()\r\n ];\r\n this.model.userIsInternal = !this.userService.user.isExternalUser;\r\n\r\n return forkJoin(serviceCalls).pipe(tap(response => {\r\n const pipelineGasDay = response[0];\r\n\r\n this.canSetUpGasDayCycles(pipelineGasDay); // TODO - Call existing setup to bootstrap gas day, re-visit.\r\n\r\n this.appService.hideMenu();\r\n this.appService.clearMessages();\r\n }));\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n\r\n const gasDayFromSearchParams = this.model.searchParams.gasDay;\r\n\r\n if (this.gasDayTracker.previouslyLoadedForSameGasDay(gasDayFromSearchParams)) {\r\n\r\n // TODO: Figure out why removing this causes the typed search filter to stay in the customer drop down.\r\n this.model.customers = _.orderBy(this.model.customers, x => x.displayValue);\r\n\r\n this.postLoadSearchResources();\r\n return of(null);\r\n }\r\n\r\n const serviceCalls: Observable[] = [\r\n this.getEnterprises(gasDayFromSearchParams), // 0\r\n this.gasCycleService.queryGasDayCycleStatusesFor(gasDayFromSearchParams), // 1\r\n this.loadNomGroupsForCustomer(), // 2\r\n this.nominationTransactionTypeService.queryAllNominationTypes(gasDayFromSearchParams) // 3\r\n ];\r\n\r\n return forkJoin(serviceCalls).pipe(tap(response => {\r\n this.model.yesAndNo = YesAndNo.All();\r\n\r\n this.model.customers = _.orderBy(response[0] as NominationEnterprise[], x => x.displayValue);\r\n this.updateGasCycleStatuses(response[1] as GasDayCycleStatusCollection);\r\n this.updateNominationTransactionTypes(response[3]);\r\n this.postLoadSearchResources();\r\n\r\n this.gasDayTracker.markLastLoadedGasDay(this.model.searchParams.gasDay);\r\n }));\r\n }\r\n\r\n private postLoadSearchResources() {\r\n const currentSelectedCustomer = _.find(this.model.customers, (x) => {\r\n return this.model.searchParams.customerId === x.id;\r\n });\r\n if (currentSelectedCustomer === undefined) {\r\n this.model.searchParams.customerId = null;\r\n }\r\n\r\n // External Access\r\n if (!this.model.userIsInternal) {\r\n const hasValidCustomerSelected = _.some(this.model.customers, x => x.id === this.model.searchParams.customerId);\r\n\r\n if (!this.model.searchParams.customerId || !hasValidCustomerSelected) {\r\n this.model.searchParams.customerId = Number(this.userService.user.enterpriseId);\r\n\r\n this.onCustomerChanged();\r\n }\r\n }\r\n\r\n if (!this.model.searchParams.gasCycleCode) {\r\n this.model.searchParams.gasCycleCode = this.defaultGasCycleCode();\r\n }\r\n\r\n this.verifyForValidSelectedParameters();\r\n }\r\n\r\n protected performSearch(unsavedTransportNomRequests: TransportationNominationRequest[] = [],\r\n unsavedDeliveryNomRequests: NominationRequest[] = [],\r\n unsavedReceiptNomRequests: NominationRequest[] = [],\r\n isAfterSaveOrSubmit: boolean = false): Observable {\r\n\r\n this.recordsBeingProcessed = false;\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n this.model.lastGasDayCycleStatuses = _.clone(this.model.gasDayCycleStatuses);\r\n\r\n const gasCycleCode = GasCycleLogic.buildGasCycleCodeForRequest(this.model.gasDayCycleStatuses, this.model.lastSearchParams.gasCycleCode);\r\n // TODO - NomRequestRefactoring - Moved into here from the this.search() functionality. Re-visit to ensure correctness.\r\n this.selectFirstTabWhenCustomerHasChanged();\r\n this.getView().removeIncompleteRows();\r\n\r\n let serviceCalls: Observable[] = [\r\n this.getTransportationRequests(this.model.lastSearchParams.customerId, this.model.lastSearchParams.nomGroupId, this.model.lastSearchParams.gasDay, gasCycleCode), // 0\r\n this.getTransferRequests(this.model.lastSearchParams.customerId, this.model.lastSearchParams.nomGroupId, this.model.lastSearchParams.gasDay, gasCycleCode, 'Receipt'), // 1\r\n this.getTransferRequests(this.model.lastSearchParams.customerId, this.model.lastSearchParams.nomGroupId, this.model.lastSearchParams.gasDay, gasCycleCode, 'Delivery'), // 2\r\n this.nominationSystemService.applicationServerTimes(), // 3\r\n this.gasCycleService.queryGasDayCycleStatusesFor(this.model.lastSearchParams.gasDay) // 4\r\n ];\r\n\r\n if (!isAfterSaveOrSubmit) {\r\n const supportingDataServiceCalls: Observable[] = [\r\n this.getTboConfirmationNomGroups(this.model.lastSearchParams.gasDay), // 5\r\n this.getAllHubNomGroups(this.model.lastSearchParams.gasDay, true), // 6\r\n this.nominationNomGroupService.queryNomGroupDetails2(this.model.lastSearchParams.gasDay, this.model.lastSearchParams.customerId, null, GasDay.maxGasDay()), // 7\r\n this.billableServiceOptionService.queryAll(new BillableServiceOptionRequest(this.model.lastSearchParams.gasDay, this.model.lastSearchParams.nomGroupId, GasDay.maxGasDay())), // 8\r\n this.getNominationLocations(this.model.lastSearchParams.gasDay), // 9\r\n ];\r\n serviceCalls = serviceCalls.concat(supportingDataServiceCalls);\r\n }\r\n\r\n return forkJoin(serviceCalls).pipe(tap(response => {\r\n\r\n // loadTransportInformation must be called before loadReceipt and loadDelivery\r\n // so the maps can be built properly.\r\n\r\n this.model.queryDateTime = new Date(Math.min(response[0].queryDateTime.valueOf(), response[1].queryDateTime.valueOf(), response[2].queryDateTime.valueOf())); // , response[3].queryDateTime.valueOf()));\r\n this.loadTransportInformation(response[0], unsavedTransportNomRequests);\r\n this.loadReceiptHubInformation(response[0], response[1], unsavedReceiptNomRequests);\r\n this.loadDeliveryInformation(response[0], response [2], unsavedDeliveryNomRequests);\r\n\r\n const serverTimes = response[3];\r\n const gasDayCycleStatuses = response[4];\r\n const gasDayCycleStatus = gasDayCycleStatuses.find(x => x.gasCycle.code === gasCycleCode);\r\n this.updateGasCycleStatuses(gasDayCycleStatuses as GasDayCycleStatusCollection);\r\n this.model.selectedGasCycle = gasDayCycleStatus.gasCycle;\r\n\r\n // this is incorrect because an user can force a nom window open, but not changing this property because this is used\r\n // by the energy imbalance page and it's been commented out\r\n this.model.nominationDeadlinePassed = new Date(serverTimes.centralClockTime).valueOf() > gasDayCycleStatus.nominationDeadline.valueOf();\r\n\r\n this.setupEditMode(gasDayCycleStatus);\r\n\r\n if (!isAfterSaveOrSubmit) {\r\n this.model.tboConfirmationNomGroups = _.sortBy(response[5] as NominationGroup[], x => x.mnemonic);\r\n\r\n this.model.hubNomGroups = (response[6] as NominationGroupHierarchyCollection);\r\n\r\n this.model.nomGroups = _.orderBy(response[7] as NominationGroup[], x => x.mnemonic);\r\n this.model.nomGroups2 = (response[7] as NominationGroupCollection).orderBy();\r\n this.model.selectedNomGroup = _.find(this.model.nomGroups, x => x.id === this.model.lastSearchParams.nomGroupId);\r\n\r\n this.model.billableServiceOptions = (response[8] as BillableServiceOption[]);\r\n this.model.billableServiceLookupList = (response[8] as BillableServiceOptionCollection).toLookupList(); // Need to convert to an array for binding.\r\n this.model.billableServiceOptions2 = (response[8] as BillableServiceOptionCollection);\r\n\r\n this.model.locations = _.orderBy(response[9] as NominationLocation[], x => x.name);\r\n this.model.locations2 = (response[9] as NominationLocationCollection).orderBy();\r\n }\r\n\r\n this.organizeNomGroups();\r\n this.resetFilteredNomGroups();\r\n this.resetFilteredTypesOfService();\r\n\r\n // TODO - NomRequestRefactoring - Instead of looking through all hubNomGroups, just looking at the ones for the customer.\r\n // Instead, let's just use the customerHubNomGroups for the customer...makes sense?\r\n const hubNomGroup = this.model.hubNomGroups.find(x => x.id === this.model.searchParams.nomGroupId);\r\n switch (hubNomGroup.businessRight) {\r\n case BusinessRight.LdcVariance.name:\r\n this.model.hideChildren = [this.model.children.Child_Transport, this.model.children.Child_Balance, this.model.children.Child_Energy_Imbalance];\r\n this.model.columnWidths.transactionType = '120px';\r\n break;\r\n case BusinessRight.TboTransportation.name:\r\n this.model.hideChildren = [this.model.children.Child_Energy_Imbalance];\r\n this.model.columnWidths.transactionType = '180px';\r\n break;\r\n default:\r\n this.model.hideChildren = [];\r\n this.model.columnWidths.transactionType = '120px';\r\n break;\r\n }\r\n\r\n if (!!this.hubBalanceComponent) {\r\n this.hubBalanceComponent.setUpBalanceData();\r\n }\r\n if (!!this.nominationRequestTabView && !! this.nominationRequestTabView.balanceHubComponent) {\r\n this.nominationRequestTabView.balanceHubComponent.setUpBalanceData();\r\n }\r\n\r\n\r\n this.model.isReadOnlyMode = !this.capabilitiesService.hasCapabilities(['NominationRequests-Write'], this.userService.user, this.getPipelineCode());\r\n\r\n this.model.isOneDayAdjustmentCapable = this.capabilitiesService.hasCapabilities(['NominationRequests-OneDay-Adjustment'], this.userService.user, this.getPipelineCode());\r\n this.model.isFullAdjustmentCapable = this.capabilitiesService.hasCapabilities(['NominationRequests-Full-Adjustment'], this.userService.user, this.getPipelineCode());\r\n\r\n this.model.childCTNomGroup = this.model.nomGroups.find(x => x.parentNominationGroupId === this.model.lastSearchParams.nomGroupId && x.isCustodyTransfer);\r\n this.model.imbalanceTradeLocationBalances = null;\r\n this.model.titleTransferMismatches = [];\r\n // this.cdr.detectChanges();\r\n }),\r\n concatMap(x => iif( // choose one of these dependent streams after all the main service forkJoin calls complete\r\n () => this.pipelineSettingMapService.isCgl(this.getPipelineCode()),\r\n this.getImbalanceTradeLocationBalances(this.model.lastSearchParams.customerId, this.model.childCTNomGroup.id, this.model.lastSearchParams.gasDay, isAfterSaveOrSubmit),\r\n this.queryTitleTransferMismatches()\r\n )));\r\n }\r\n\r\n private setupEditMode(gasDayCycleStatus: SimpleGasDayCycleStatus): void {\r\n this.model.disableNomReqEntries = gasDayCycleStatus.isClosedForNomination;\r\n this.model.canEnableEditMode = this.canEnableEditMode(gasDayCycleStatus);\r\n }\r\n\r\n private canEnableEditMode(gasDayCycleStatus: SimpleGasDayCycleStatus): boolean {\r\n if (!gasDayCycleStatus.isClosedForNomination) return false;\r\n if (this.userService.hasRoleWithoutPipeline([User.NominationSpecialistRole])) return true;\r\n\r\n return this.userService.hasRoleWithoutPipeline([User.NominationAdministratorRole, User.NominationAnalystRole]) &&\r\n this.isYesterdayOrTodayOrFutureGasDay();\r\n }\r\n\r\n /**\r\n * Nomination Administrator and Nomination Analyst can only enable edit mode if they are trying to enter nomination requests\r\n * for yesterday's, today's, or a future gas day.\r\n */\r\n private isYesterdayOrTodayOrFutureGasDay(): boolean {\r\n return this.model.todaysAllowableGasDay.previous().isEqual(this.model.lastSearchParams.gasDay) ||\r\n this.model.todaysAllowableGasDay.isLessThanOrEqualTo(this.model.lastSearchParams.gasDay);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {\r\n customerId: this.model.searchParams.customerId,\r\n nomGroupId: this.model.searchParams.nomGroupId,\r\n gasDay: this.model.searchParams.gasDay,\r\n gasCycleCode: this.model.searchParams.gasCycleCode\r\n };\r\n\r\n return params;\r\n }\r\n\r\n public searchClicked(): void {\r\n if (!_.isNil(this.model.lastSearchParams) && this.model.lastSearchParams.nomGroupId !== this.model.searchParams.nomGroupId) {\r\n this.getView().clearFilters();\r\n this.model.hideZeroes = true;\r\n }\r\n\r\n // Reset the selected Locations in the Hubs grid.\r\n // TODO: We could be smart about doing this if the current params are the same as the previous ones.\r\n this.model.balanceHubSelectedRowKeys = [];\r\n super.searchClicked();\r\n }\r\n\r\n public resetClicked(): void {\r\n this.model.hideZeroes = true;\r\n this.model.transportDataSource = null;\r\n this.model.receiptDataSource = null;\r\n this.model.deliveryDataSource = null;\r\n this.gasDayTracker.reset();\r\n super.resetClicked();\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n protected resetCompleted(): void {\r\n this.resetUndoRecords(this.model.transportUndos);\r\n this.resetUndoRecords(this.model.receiptUndos);\r\n this.resetUndoRecords(this.model.deliveryUndos);\r\n }\r\n\r\n /**\r\n * Private methods\r\n */\r\n\r\n\r\n private loadNomGroupsForCustomer(): Observable {\r\n if (!this.model.searchParams.customerId) {\r\n // Customer may be explicitly cleared by the user, in that case reset customer selected nomGroup selection\r\n this.model.searchParams.nomGroupId = null;\r\n this.model.customerHubNomGroups = NominationGroupHierarchyCollection.create();\r\n return of(null);\r\n }\r\n\r\n return this.getAllHubNomGroups(this.model.searchParams.gasDay, false, this.model.searchParams.customerId).pipe(\r\n tap(nomGroups => {\r\n this.model.customerHubNomGroups = (nomGroups as NominationGroupHierarchyCollection).orderBy();\r\n\r\n if (this.model.customerHubNomGroups.isSingle) {\r\n // No matter what is or isn't selected, just use the first one if there is only one Nom Group (Account)\r\n this.model.searchParams.nomGroupId = this.model.customerHubNomGroups.first().id;\r\n this.accountChanged();\r\n } else if (_.isNil(this.model.searchParams.nomGroupId) && this.model.customerHubNomGroups.contains(x => x.isPrimaryHub)) {\r\n this.model.searchParams.nomGroupId = this.model.customerHubNomGroups.find(x => x.isPrimaryHub).id;\r\n } else if (!this.model.customerHubNomGroups.contains(x => x.id === this.model.searchParams.nomGroupId)) {\r\n this.model.searchParams.nomGroupId = null;\r\n }\r\n }));\r\n }\r\n\r\n private getAllHubNomGroups(gasDay: IGasDay, ignoreExternalNomGroupFilter?: boolean, customerId?: number): Observable {\r\n return this.nominationNomGroupService.queryAllHubNominationGroupNames(gasDay, customerId, ignoreExternalNomGroupFilter, true).pipe(\r\n concatMap(response => {\r\n const children = _.flatMap(response, nomGroup => nomGroup.children);\r\n return forkJoin([\r\n this.nominationEnterpriseEnrichmentService.enrichArray(response, 'enterpriseId', 'enterprise'),\r\n this.nominationEnterpriseEnrichmentService.enrichArray(children, 'enterpriseId', 'enterprise')\r\n ]).pipe(concatMap(() => of(response)));\r\n }));\r\n }\r\n\r\n private resetUndoRecords(undoRecords: IUndoRecord[]): void {\r\n undoRecords.splice(0, undoRecords.length);\r\n }\r\n\r\n private resetSelections(selections: Array): void {\r\n selections.splice(0, selections.length);\r\n }\r\n\r\n private paramValidator(): ParamValidator {\r\n const queryParams = ParamValidator.Standard();\r\n queryParams.isGasDay('gasDay');\r\n queryParams.isString('gasCycleCode', true);\r\n queryParams.isNumber('customerId');\r\n queryParams.isNumber('nomGroupId');\r\n return queryParams;\r\n }\r\n\r\n public accountChanged(): void {\r\n\r\n // TODO - NomRequestRefactoring - I believe that we don't need to reload the resources here until they search.\r\n // The 'loadOperatorLocationOnly' will result in the locations being filtered out, by businessRight...which will be triggered upon Search.\r\n\r\n if (_.isNil(this.model.searchParams.nomGroupId)) {\r\n return;\r\n }\r\n\r\n const customerHubNomGroup = this.model.customerHubNomGroups.find(x => x.id === this.model.searchParams.nomGroupId);\r\n this.model.loadOperatorLocationsOnly = customerHubNomGroup.businessRight === 'LdcVariance';\r\n }\r\n\r\n public resetFilteredNomGroups() {\r\n\r\n this.model.allNomGroups = [];\r\n _.forEach(this.model.hubNomGroups, nomGroup => {\r\n this.model.allNomGroups.push(nomGroup);\r\n _.forEach(nomGroup.children, child => {\r\n this.model.allNomGroups.push(child);\r\n });\r\n });\r\n\r\n this.model.allNomGroups = _.concat(\r\n this.model.allNomGroups,\r\n this.model.validTransportNomGroups,\r\n this.model.transportationFuelNomGroups,\r\n this.model.transportationVarianceNomGroups,\r\n this.model.confirmationVarianceNomGroups,\r\n this.model.loanNomGroups,\r\n this.model.parkNomGroups,\r\n this.model.inventoryTransferNomGroups,\r\n this.model.tboTransferNomGroups,\r\n this.model.tboFuelNomGroups,\r\n this.model.tboConfirmationNomGroups\r\n );\r\n }\r\n\r\n public organizeNomGroups(): void {\r\n const modelNomGroups = this.model.nomGroups2;\r\n const stsBillableService = _.find(this.model.billableServiceOptions, x => x.billableServiceType === 'STS');\r\n this.model.validTransportNomGroups = modelNomGroups.transportationFor(this.model.selectedNomGroup.id, stsBillableService);\r\n this.model.transportationFuelNomGroups = modelNomGroups.transportationFuelFor(modelNomGroups, this.model.billableServiceOptions);\r\n this.model.transportationVarianceNomGroups = modelNomGroups.transportationVariance;\r\n this.model.confirmationVarianceNomGroups = modelNomGroups.confirmationVariance;\r\n this.model.loanNomGroups = modelNomGroups.loan;\r\n this.model.parkNomGroups = modelNomGroups.park;\r\n this.model.inventoryTransferNomGroups = modelNomGroups.inventoryTransfer;\r\n this.model.tboTransferNomGroups = modelNomGroups.tboTransfer;\r\n this.model.tboFuelNomGroups = modelNomGroups.tboFuel;\r\n }\r\n\r\n public resetFilteredTypesOfService(): void {\r\n // Filter down all Billable Service options to only those that exist in the returned Nom Groups\r\n const validTransportNoms = NominationGroupCollection.create(this.model.validTransportNomGroups);\r\n this.model.billableServiceNominationGroupMap = this.model.billableServiceOptions2.createMap(validTransportNoms, this.model.searchParams.gasCycleCode);\r\n this.model.filteredBillableServiceOptions = Array.from(this.model.billableServiceNominationGroupMap.keys());\r\n }\r\n\r\n private saveNominationRequests(): Observable {\r\n this.appService.clearMessages();\r\n\r\n const deselectedCount = this.deselectNewDuplicateKeyRequests();\r\n if (deselectedCount > 0) {\r\n this.recordsBeingProcessed = false;\r\n this.alertService.addErrorMessage('Error', 'Duplicate nominations are not allowed.');\r\n return of(false);\r\n }\r\n\r\n const o = new Observable(observer => {\r\n if (console) { console.log('Saving @ ' + new Date().valueOf()); }\r\n this.getView().tryToSaveEditingData().subscribe(success => {\r\n if (console) { console.log('Finished save editing data @ ' + new Date().valueOf()); }\r\n if (!success) {\r\n this.recordsBeingProcessed = false;\r\n this.alertService.addErrorMessage('Error', 'One or more requests are in an invalid state and must be corrected.');\r\n return;\r\n }\r\n\r\n let receiptRequests = this.getSelectedReceiptRequestsNotPassed();\r\n let deliveryRequests = this.getSelectedDeliveryRequestsNotPassed();\r\n let transportRequests = this.getSelectedTransportRequestsNotPassed();\r\n\r\n // 'Enrich' the transportation requests with their real gas day cycle objects for saving.\r\n // Will ask DevExtreme if we can bind the grid to non-plain-objects, but our typed objects so that we can have methods/getters/setters.\r\n // _.map(transportRequests, x => _.extend({}, x, {startGasDayCycle: { firstName: 'Arthur', lastName: 'Tam'}}));\r\n transportRequests = this.enrichRequestsWithGasDayCycleObjects(transportRequests);\r\n receiptRequests = this.enrichRequestsWithGasDayCycleObjects(receiptRequests);\r\n deliveryRequests = this.enrichRequestsWithGasDayCycleObjects(deliveryRequests);\r\n\r\n // Clear out the createDateTime as we never pass these on submit...\r\n transportRequests = this.clearIssueDateTime(transportRequests);\r\n receiptRequests = this.clearIssueDateTime(receiptRequests);\r\n deliveryRequests = this.clearIssueDateTime(deliveryRequests);\r\n\r\n const unsavedNewReceiptSystemRequests = this.getUnsavedNewRequests(this.model.receiptHubNominationRequests, receiptRequests).filter(y => this.isReceiptTransaction(y.transactionType));\r\n const unsavedNewDeliverySystemRequests = this.getUnsavedNewRequests(this.model.deliveryHubNominationRequests, deliveryRequests).filter(y => this.isDeliveryTransaction(y.transactionType));\r\n const unsavedNewTransportSystemRequests = this.getUnsavedNewRequests(this.model.transportationNominationRequests, transportRequests) as TransportationNominationRequest[];\r\n\r\n if (console) { console.log('Calling server @ ' + new Date().valueOf()); }\r\n this.nominationRequestService.saveNominationRequests(\r\n this.model.lastSearchParams.customerId,\r\n this.model.lastSearchParams.nomGroupId,\r\n this.model.lastSearchParams.gasDay,\r\n this.model.lastSearchParams.gasCycleCode,\r\n this.model.queryDateTime,\r\n transportRequests,\r\n receiptRequests,\r\n deliveryRequests\r\n )\r\n .subscribe(() => {\r\n\r\n if (console) { console.log('Back from server at @ ' + new Date().valueOf()); }\r\n\r\n // this.loadResources(this.model.lastSearchParams.gasDay, true, unsavedNewTransportSystemRequests, unsavedNewDeliverySystemRequests, unsavedNewReceiptSystemRequests);\r\n return this.performSearch(unsavedNewTransportSystemRequests, unsavedNewDeliverySystemRequests, unsavedNewReceiptSystemRequests, true)\r\n .subscribe(() => {\r\n this.recordsBeingProcessed = false;\r\n\r\n // TODO - NomRequestRefactoring - Revisit these observers\r\n observer.next(true);\r\n observer.complete();\r\n\r\n });\r\n\r\n\r\n }, () => { this.recordsBeingProcessed = false; observer.next(false); observer.complete(); } );\r\n }, () => { this.recordsBeingProcessed = false; observer.next(false); observer.complete(); } );\r\n });\r\n return o;\r\n }\r\n\r\n deleteClicked(): void {\r\n if (!this.recordsBeingProcessed) {\r\n this.recordsBeingProcessed = true;\r\n this.deleteNominationRequests();\r\n }\r\n }\r\n\r\n private deleteNominationRequests() {\r\n this.appService.clearMessages();\r\n this.getView().tryToSaveEditingData().subscribe(success => {\r\n if (!success) {\r\n this.recordsBeingProcessed = false;\r\n this.alertService.addErrorMessage('Error', 'One or more requests are in an invalid state and must be corrected.');\r\n return;\r\n }\r\n\r\n const receiptRequests = this.getSelectedReceiptRequestsNotPassed();\r\n const deliveryRequests = this.getSelectedDeliveryRequestsNotPassed();\r\n const transportRequests = this.getSelectedTransportRequestsNotPassed();\r\n\r\n const unsavedNewReceiptSystemRequests = this.getUnsavedNewRequests(this.model.receiptHubNominationRequests, receiptRequests).filter(y => this.isReceiptTransaction(y.transactionType));\r\n const unsavedNewDeliverySystemRequests = this.getUnsavedNewRequests(this.model.deliveryHubNominationRequests, deliveryRequests).filter(y => this.isDeliveryTransaction(y.transactionType));\r\n const unsavedNewTransportSystemRequests = this.getUnsavedNewRequests(this.model.transportationNominationRequests, transportRequests) as TransportationNominationRequest[];\r\n\r\n this.nominationRequestService.deleteNominationRequests(\r\n this.model.lastSearchParams.customerId,\r\n this.model.lastSearchParams.nomGroupId,\r\n this.model.lastSearchParams.gasDay,\r\n this.model.lastSearchParams.gasCycleCode,\r\n this.model.queryDateTime,\r\n transportRequests,\r\n receiptRequests,\r\n deliveryRequests\r\n ).subscribe(() => {\r\n\r\n return this.performSearch(unsavedNewTransportSystemRequests, unsavedNewDeliverySystemRequests, unsavedNewReceiptSystemRequests)\r\n .subscribe(() => {\r\n this.recordsBeingProcessed = false;\r\n });\r\n\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Copy Functionality\r\n */\r\n copyClicked(): void {\r\n // Reset Copy Model and initialize properties to default values\r\n this.model.copyModel = new CopyNominationsModel();\r\n this.model.copyModel.setBeginGasDay(_.minBy([this.model.lastSearchParams.gasDay.next() as GasDay, this.model.maxGasDay], x => x.toDate), this.model.maxGasDay);\r\n this.model.copyModel.beginGasDayMinGasDay = this.model.isFullAdjustmentCapable ? this.model.minGasDay :\r\n this.model.isOneDayAdjustmentCapable ? this.model.openGasDayCycleStatus.gasDay.addDays(-1) as GasDay : this.model.openGasDayCycleStatus.gasDay;\r\n this.model.copyModel.maxGasDayForCycleStatus = this.model.maxGasDay;\r\n\r\n this.loadResourcesForCopyModal(true).subscribe(() => {\r\n this.isAccountExpired();\r\n this.copyModal.show();\r\n });\r\n }\r\n\r\n public onCopyBeingGasDayChanged(): void {\r\n if (!this.model.copyModel.beginGasDay) return;\r\n\r\n this.model.copyModel.setBeginGasDay(this.model.copyModel.beginGasDay, this.model.maxGasDay);\r\n\r\n this.loadResourcesForCopyModal(true).subscribe(() => {\r\n this.isAccountExpired();\r\n });\r\n }\r\n\r\n public copySelectedNominations(): void {\r\n if (!this.recordsBeingProcessed) {\r\n this.recordsBeingProcessed = true;\r\n\r\n this.copySelectedNominationRequests(\r\n this.model.copyModel.beginGasDay,\r\n this.model.copyModel.endGasDayNextGasDay.previous() as GasDay, // Requirement: On the Modal, it needs to display the End of the Gas Day but we want to store the Start of the Gas Day for the record\r\n this.model.copyModel.beginGasCycleCode);\r\n }\r\n }\r\n\r\n protected loadResourcesForCopyModal(defaultEndGasDay: boolean): Observable {\r\n return this.gasCycleService.queryGasDayCycleStatusesFor(this.model.copyModel.beginGasDay).pipe(concatMap(gasDayCycleStatuses => {\r\n const newBeginGasCycleCode = gasDayCycleStatuses.defaultEarliestNomWindowOpen().gasCycle.code;\r\n const changeEndGasDay = defaultEndGasDay || this.model.copyModel.beginGasCycleCode !== newBeginGasCycleCode;\r\n\r\n this.model.copyModel.gasCycles = gasDayCycleStatuses.defaultGasDayCycleStatusesForNomination().gasCycles();\r\n this.model.copyModel.beginGasCycleCode = newBeginGasCycleCode;\r\n this.model.copyModel.gasDayCycleStatuses = gasDayCycleStatuses;\r\n this.model.copyModel.updateCopyModalProperties(changeEndGasDay, this.model);\r\n\r\n return of(null);\r\n }));\r\n }\r\n\r\n private copySelectedNominationRequests(beginGasDay: GasDay, endGasDay: GasDay, gasDayCycle: string) {\r\n this.appService.clearMessages();\r\n\r\n this.getView().tryToSaveEditingData().subscribe(success => {\r\n if (!success) {\r\n this.recordsBeingProcessed = false;\r\n this.alertService.addErrorMessage('Error', 'One or more requests are in an invalid state and must be corrected.');\r\n return;\r\n }\r\n\r\n if (this.model.copyModel.hasExpiredAccount) {\r\n const expiredReceiptRequests = this.getExpiredSelectedReceiptTransactions(this.getSelectedReceiptRequests());\r\n const expiredDeliveryRequests = this.getExpiredSelectedDeliveryTransactions(this.getSelectedDeliveryRequests());\r\n const expiredTransportRequests = this.getExpiredSelectedTransportTransactions(this.getSelectedTransportRequests());\r\n (this.getView() as any).deselectExpiredKeyRequests(expiredTransportRequests, expiredReceiptRequests, expiredDeliveryRequests);\r\n }\r\n let receiptRequests = (_.map(this.getSelectedReceiptRequests(), req => this.updateReqStartAndEndGasDayCycle(_.clone(req), beginGasDay, endGasDay, gasDayCycle))) as CustodyTransferNominationRequest[];\r\n let deliveryRequests = _.map(this.getSelectedDeliveryRequests(), req => this.updateReqStartAndEndGasDayCycle(_.clone(req), beginGasDay, endGasDay, gasDayCycle)) as CustodyTransferNominationRequest[];\r\n let transportRequests = _.map(this.getSelectedTransportRequests(), req => this.updateReqStartAndEndGasDayCycle(_.clone(req), beginGasDay, endGasDay, gasDayCycle)) as TransportationNominationRequest[];\r\n\r\n // Clear out the createDateTime as we never pass these on submit/save...\r\n transportRequests = this.clearIssueDateTime(transportRequests);\r\n receiptRequests = this.clearIssueDateTime(receiptRequests);\r\n deliveryRequests = this.clearIssueDateTime(deliveryRequests);\r\n\r\n this.updateGasCycleStatuses(this.model.copyModel.gasDayCycleStatuses);\r\n\r\n this.model.searchParams.gasCycleCode = this.defaultGasCycleCode();\r\n this.nominationRequestService.saveNominationRequests(\r\n this.model.lastSearchParams.customerId,\r\n this.model.lastSearchParams.nomGroupId,\r\n this.model.lastSearchParams.gasDay,\r\n GasCycleLogic.buildGasCycleCodeForRequest(this.model.gasDayCycleStatuses, this.model.lastSearchParams.gasCycleCode),\r\n this.model.queryDateTime,\r\n transportRequests,\r\n receiptRequests,\r\n deliveryRequests\r\n ).subscribe(() => {\r\n this.router.navigate([], {\r\n queryParams: {\r\n customerId: this.model.lastSearchParams.customerId,\r\n nomGroupId: this.model.lastSearchParams.nomGroupId,\r\n gasDay: beginGasDay,\r\n gasCycleCode: gasDayCycle,\r\n }\r\n }).then(navigationSuccessful => {\r\n if (!navigationSuccessful) {\r\n // Manually Perform Search (use existing search params because the gas day and gas cycle should be the same)\r\n this.performSearch().subscribe(() => {});\r\n }\r\n });\r\n\r\n this.recordsBeingProcessed = false;\r\n });\r\n });\r\n }\r\n\r\n private updateGasCycleStatuses(gasDayCycleStatusesToCopy: GasDayCycleStatusCollection): void {\r\n this.model.gasDayCycleStatuses = gasDayCycleStatusesToCopy;\r\n this.model.gasCycles = this.model.gasDayCycleStatuses.gasCycles();\r\n this.model.launchedGasCycles = this.model.gasDayCycleStatuses.defaultGasDayCycleStatusesForNomination().gasCycles();\r\n }\r\n\r\n private updateReqStartAndEndGasDayCycle(req: any, beginGasDay: GasDay, endGasDay: GasDay, gasCycle: string): NominationRequest {\r\n req.id = null;\r\n req.statusCode = \"New\";\r\n\r\n // Override Start Gas Day Cycle and End Gas Day Cycle because the backend does not take a GasDay\r\n // Not a great way of doing it, but what other alternatives are there?\r\n req.startGasDayCycle = { gasDay: beginGasDay.toString(), gasCycleCode: gasCycle };\r\n req.endGasDayCycle = { gasDay: endGasDay.toString(), gasCycleCode: gasCycle };\r\n\r\n return req;\r\n }\r\n\r\n ngAfterViewInit() {\r\n // TODO: Figure out how to get notified by child component when it has finished rendering\r\n// setTimeout(() => this.gasDay.focus(), 2000);\r\n }\r\n\r\n protected setModelParams(params: Params): GasDay {\r\n const gasDay = GasDay.parse(params['gasDay']);\r\n const customerId: number = +params['customerId'];\r\n const nomGroupId: number = +params['nomGroupId'];\r\n const gasCycleCode: string = params['gasCycleCode'];\r\n\r\n this.model.searchParams = new NominationRequestsSearchParams(this, this.gasCycleService, this.nominationSystemService, customerId, nomGroupId, gasDay, gasCycleCode);\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n return gasDay;\r\n }\r\n\r\n private canSetUpGasDayCycles(pipelineGasDay: NominationPipelineGasDay): boolean {\r\n if (!pipelineGasDay.hasGasDayCycles()) {\r\n this.alertService.addWarnMessage('Warning', 'Nomination Requests Page is unavailable.');\r\n return false;\r\n }\r\n this.hidePage = false;\r\n this.setPipelineGasDayProperties(pipelineGasDay);\r\n return true;\r\n }\r\n\r\n private setPipelineGasDayProperties(pipelineGasDay: NominationPipelineGasDay) {\r\n this.model.minGasDay = pipelineGasDay.minGasDayForCycleStatus;\r\n this.model.maxGasDay = pipelineGasDay.maxGasDayForCycleStatus;\r\n this.model.openGasDayCycleStatus = pipelineGasDay.openGasDayCycleStatus;\r\n this.model.todaysAllowableGasDay = pipelineGasDay.allowableGasDay;\r\n this.model.tomorrowsAllowableGasDay = pipelineGasDay.tomorrowsCalendarAllowableGasDay;\r\n this.model.timelyOpenGasDayCycleStatus = pipelineGasDay.timelyOpenGasDayCycleStatus;\r\n }\r\n\r\n downloadClicked() {\r\n this.download();\r\n }\r\n\r\n uploadClicked() {\r\n this.router.navigate(['/app', this.getPipelineCode(), 'uploadnominationrequests']).then(() => {});\r\n }\r\n\r\n private saveChanges = (): Observable => {\r\n if (!this.recordsBeingProcessed) {\r\n this.recordsBeingProcessed = true;\r\n return this.saveNominationRequests();\r\n } else {\r\n return of(true);\r\n }\r\n };\r\n\r\n\r\n private download = () => {\r\n const gasCycleCode = GasCycleLogic.buildGasCycleCodeForRequest(this.model.gasDayCycleStatuses, this.model.lastSearchParams.gasCycleCode);\r\n this.nominationRequestService.downloadNominations(this.model.lastSearchParams.customerId, this.model.lastSearchParams.nomGroupId, this.model.lastSearchParams.gasDay, gasCycleCode)\r\n .subscribe(data => this.downloadFile(data));\r\n };\r\n\r\n downloadFile(httpResponse: HttpResponse) {\r\n const blob = new Blob([httpResponse.body], {type: 'text/csv'});\r\n\r\n // from the content disposition, should be second element with =\"{filename}\" surrounding it\r\n const filename = httpResponse.headers.get('content-disposition').split(';')[1].trim().split('=')[1].replace(/\"/g, '');\r\n FileSaver.saveAs(blob, filename);\r\n }\r\n\r\n private selectFirstTabWhenCustomerHasChanged(): void {\r\n if (this.model.lastSearchParams.customerId === this.model.searchParams.customerId) { return; }\r\n\r\n if (!!this.nominationRequestTabView) {\r\n this.nominationRequestTabView.focusFirstTab();\r\n }\r\n }\r\n\r\n onViewChanged(): void {\r\n if (!!this.nominationRequestPageView) {\r\n this.nominationRequestPageView.refreshGrids();\r\n }\r\n if (!!this.nominationRequestTabView) {\r\n this.nominationRequestTabView.refreshGrids();\r\n }\r\n }\r\n\r\n isSaveEnabled(): boolean {\r\n return !this.recordsBeingProcessed &&\r\n !this.isDisabled() &&\r\n !this.isViewOnly() &&\r\n !this.model.anyPendingStsRows() &&\r\n (this.model.anyNewOrRevisedRows() || this.model.anyFailedRows() || this.model.anySavedRows());\r\n }\r\n\r\n isSubmitEnabled(): boolean {\r\n return !this.recordsBeingProcessed &&\r\n !this.isDisabled() &&\r\n !this.isViewOnly() &&\r\n (this.model.anySavedRowsThatAreNotSelected() || this.anyRevisedSelectedEnergyImbalance() || this.model.anyNewOrRevisedRows() || this.model.anyFailedRows());\r\n }\r\n\r\n anyRevisedSelectedEnergyImbalance(): boolean {\r\n\r\n // todo: revisit in phase 2 release - always return false for now re: bug 99819\r\n return false;\r\n // const selectedInstructions = this.getSelectedEnergyImbalanceInstructions();\r\n // return selectedInstructions.length > 0;\r\n }\r\n\r\n saveClicked = () => this.saveChanges().subscribe(() => {\r\n this.model.newRowAdded = false;\r\n });\r\n\r\n getUnsavedNewRequests(requests: NominationRequest[], exclusions: NominationRequest[]) {\r\n const unsavedNewRequests = requests\r\n .filter(req => req.statusCode === \"New\")\r\n .filter(req => !_.some(exclusions, id => id['key'] === req['key'])); // This used to be a full object compare, verify if this breaks anything.\r\n\r\n return unsavedNewRequests;\r\n }\r\n\r\n isReceiptTransaction(tt: string): boolean {\r\n switch (tt) {\r\n case TransactionTypes.onSystem:\r\n case TransactionTypes.makeupOnSystem:\r\n case TransactionTypes.buy:\r\n case TransactionTypes.fuelDraft:\r\n case TransactionTypes.tvarDraft:\r\n case TransactionTypes.cvDraft:\r\n case TransactionTypes.loan:\r\n case TransactionTypes.parkWithdrawal:\r\n case TransactionTypes.linepackSale:\r\n case TransactionTypes.tboOffSystem:\r\n case TransactionTypes.tboTransfer:\r\n case TransactionTypes.tboFuelPayback:\r\n case TransactionTypes.sboWithdrawal:\r\n case TransactionTypes.tboReceiptConfirmation:\r\n case TransactionTypes.tboLinepackPurchase:\r\n case TransactionTypes.paybackDraft:\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n isDeliveryTransaction(tt: string): boolean {\r\n switch (tt) {\r\n case TransactionTypes.offSystem:\r\n case TransactionTypes.makeupOffSystem:\r\n case TransactionTypes.sell:\r\n case TransactionTypes.fuelPack:\r\n case TransactionTypes.tvarPack:\r\n case TransactionTypes.cvPack:\r\n case TransactionTypes.park:\r\n case TransactionTypes.loanPayback:\r\n case TransactionTypes.linepackPurchase:\r\n case TransactionTypes.tboOnSystem:\r\n case TransactionTypes.tboTransfer:\r\n case TransactionTypes.tboFuel:\r\n case TransactionTypes.sboInjection:\r\n case TransactionTypes.tboDeliveryConfirmation:\r\n case TransactionTypes.tboLinepackSale:\r\n case TransactionTypes.paybackPack:\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n private get datagridIsProcessingData(): boolean {\r\n return this.getView().hasEditData();\r\n }\r\n\r\n submitClicked = () => {\r\n if (this.datagridIsProcessingData) {\r\n retry(this.submitClicked, 100);\r\n return;\r\n }\r\n\r\n this.verifySubmitNominationRequest().subscribe(() => {\r\n if (!this.recordsBeingProcessed) {\r\n this.recordsBeingProcessed = true;\r\n this.submitNominationRequests();\r\n }\r\n });\r\n };\r\n\r\n private verifySubmitNominationRequest(): Observable {\r\n return this.gasCycleService\r\n .getGasCycleStatus(this.model.lastSearchParams.gasDay, this.model.lastSearchParams.gasCycleCode).pipe(\r\n concatMap(gasDayCycleStatus => {\r\n if ( !gasDayCycleStatus.isClosedForNomination) {\r\n return of({});\r\n } else if (this.model.isFullAdjustmentCapable || this.model.isOneDayAdjustmentCapable) {\r\n const message = 'Nomination Request is for a closed nomination window and will be treated as an IPA. Are you sure?';\r\n const yesNoModalOptions = new YesNoModalOptions('Submit Nomination Request IPA', message, 'Cancel', 'OK');\r\n\r\n return this.modalService.show(yesNoModalOptions).pipe(concatMap(selectedModalOption => {\r\n return selectedModalOption === SelectedModalOption.Yes ? of({}) : EMPTY; // Observable.empty to not execute subscribe\r\n }));\r\n } else {\r\n return of({});\r\n }\r\n }));\r\n }\r\n\r\n public submitNominationRequests() {\r\n this.appService.clearMessages();\r\n\r\n this.selectSavedRequests();\r\n const deselectedCount = this.deselectNewDuplicateKeyRequests();\r\n if (deselectedCount > 0) {\r\n this.recordsBeingProcessed = false;\r\n this.alertService.addErrorMessage('Error', 'Duplicate nominations are not allowed.');\r\n return;\r\n }\r\n\r\n this.getView().tryToSaveEditingData().subscribe(success => {\r\n if (!success) {\r\n this.recordsBeingProcessed = false;\r\n this.alertService.addErrorMessage('Error', 'One or more requests are in an invalid state and must be corrected.');\r\n return;\r\n }\r\n\r\n let receiptRequests = this.getSelectedReceiptRequestsNotPassed();\r\n let deliveryRequests = this.getSelectedDeliveryRequestsNotPassed();\r\n let transportRequests = this.getSelectedTransportRequestsNotPassed();\r\n\r\n // todo: revisit in phase 2 release - comment out for now re: bug 99819\r\n // const energyImbalanceInstructions = this.getSelectedEnergyImbalanceInstructions();\r\n\r\n // 'Enrich' the requests with their real gas day cycle objects for saving.\r\n // Will ask DevExtreme if we can bind the grid to non-plain-objects, but our typed objects so that we can have methods/getters/setters.\r\n // _.map(transportRequests, x => _.extend({}, x, {startGasDayCycle: { firstName: 'Arthur', lastName: 'Tam'}}));\r\n transportRequests = this.enrichRequestsWithGasDayCycleObjects(transportRequests);\r\n receiptRequests = this.enrichRequestsWithGasDayCycleObjects(receiptRequests);\r\n deliveryRequests = this.enrichRequestsWithGasDayCycleObjects(deliveryRequests);\r\n\r\n // Clear out the createDateTime as we never pass these on submit...\r\n transportRequests = this.clearIssueDateTime(transportRequests);\r\n receiptRequests = this.clearIssueDateTime(receiptRequests);\r\n deliveryRequests = this.clearIssueDateTime(deliveryRequests);\r\n\r\n const unsavedNewReceiptSystemRequests = this.getUnsavedNewRequests(this.model.receiptHubNominationRequests, receiptRequests).filter(y => this.isReceiptTransaction(y.transactionType));\r\n const unsavedNewDeliverySystemRequests = this.getUnsavedNewRequests(this.model.deliveryHubNominationRequests, deliveryRequests).filter(y => this.isDeliveryTransaction(y.transactionType));\r\n const unsavedNewTransportSystemRequests = this.getUnsavedNewRequests(this.model.transportationNominationRequests, transportRequests) as TransportationNominationRequest[];\r\n\r\n // if the user messed with the search params after search but before submit, then we need to reset them back to the last search params\r\n if (this.model.searchParams.gasDay !== this.model.lastSearchParams.gasDay) {\r\n this.model.searchParams.gasDay = this.model.lastSearchParams.gasDay;\r\n this.loadSearchResources().subscribe(() => {});\r\n }\r\n if (this.model.searchParams.customerId !== this.model.lastSearchParams.customerId) {\r\n this.model.searchParams.customerId = this.model.lastSearchParams.customerId;\r\n this.loadNomGroupsForCustomer().subscribe(() => {});\r\n }\r\n this.model.searchParams = _.clone(this.model.lastSearchParams);\r\n\r\n this.nominationRequestService.submitNominationRequests(\r\n this.model.lastSearchParams.customerId,\r\n this.model.lastSearchParams.nomGroupId,\r\n this.model.lastSearchParams.gasDay,\r\n this.model.lastSearchParams.gasCycleCode,\r\n this.model.queryDateTime,\r\n transportRequests,\r\n receiptRequests,\r\n deliveryRequests,\r\n [], // energyImbalanceInstructions commenting for now re: bug 99819,\r\n ).subscribe(() => {\r\n return this.performSearch(unsavedNewTransportSystemRequests, unsavedNewDeliverySystemRequests, unsavedNewReceiptSystemRequests, true)\r\n .subscribe(() => {\r\n\r\n this.model.transportHubSelectedRowKeys = [];\r\n this.model.deliveryHubSelectedRowKeys = [];\r\n this.model.receiptHubSelectedRowKeys = [];\r\n this.model.energyImbalanceSelectedRowKeys = [];\r\n\r\n this.recordsBeingProcessed = false;\r\n });\r\n });\r\n });\r\n }\r\n\r\n getSelectedReceiptRequests(): CustodyTransferNominationRequest[] {\r\n const results = (this.model.receiptHubNominationRequests\r\n .filter(req => this.isReceiptTransaction(req.transactionType))\r\n .filter(req => _.some(this.model.receiptHubSelectedRowKeys, id => id === req['key']))) as CustodyTransferNominationRequest[];\r\n return results;\r\n }\r\n\r\n getSelectedReceiptRequestsNotPassed(): CustodyTransferNominationRequest[] {\r\n return _.filter(this.getSelectedReceiptRequests(), req => req.statusCode !== \"Passed\");\r\n }\r\n\r\n getSelectedDeliveryRequests(): CustodyTransferNominationRequest[] {\r\n const results = (this.model.deliveryHubNominationRequests\r\n .filter(req => this.isDeliveryTransaction(req.transactionType))\r\n .filter(req => _.some(this.model.deliveryHubSelectedRowKeys, id => id === req['key']))) as CustodyTransferNominationRequest[];\r\n\r\n return results;\r\n }\r\n\r\n getSelectedDeliveryRequestsNotPassed(): CustodyTransferNominationRequest[] {\r\n return _.filter(this.getSelectedDeliveryRequests(), req => req.statusCode !== \"Passed\");\r\n }\r\n\r\n getSelectedTransportRequests(): TransportationNominationRequest[] {\r\n const results = this.model.transportationNominationRequests\r\n .filter(req => _.some(this.model.transportHubSelectedRowKeys, id => id === req['key']));\r\n\r\n return results;\r\n }\r\n\r\n getSelectedTransportRequestsNotPassed(): TransportationNominationRequest[] {\r\n return _.filter(this.getSelectedTransportRequests(), req => req.statusCode !== \"Passed\");\r\n }\r\n\r\n getSelectedEnergyImbalanceInstructions(): IEnergyImbalanceInstruction[] {\r\n const results = this.model.energyImbalanceInstructions\r\n .filter(req => _.some(this.model.energyImbalanceSelectedRowKeys, id => id === req['key'] && req['status'] === HubStatuses.revised));\r\n\r\n return results;\r\n }\r\n\r\n toggleFilterSectionClicked() {\r\n this.showFilters = !this.showFilters;\r\n }\r\n\r\n onHideZeroesChanged(): void {\r\n this.applyFilters();\r\n }\r\n\r\n // fired when a location is toggled in the Hub Balance grid.\r\n onLocationChanged() {\r\n this.applyFilters();\r\n }\r\n\r\n private applyFilters(): void {\r\n this.model.transportFilter = [];\r\n this.model.receiptFilter = [];\r\n this.model.deliveryFilter = [];\r\n this.model.energyFilter = [];\r\n\r\n if (this.model.hideZeroes) {\r\n this.model.transportFilter.push([[\"statusCode\", \"notcontains\", 'Passed'], \"or\", [\"energy\", \">\", '0']]);\r\n this.model.receiptFilter.push([[\"statusCode\", \"notcontains\", 'Passed'], \"or\", [\"energy\", \">\", '0']]);\r\n this.model.deliveryFilter.push([[\"statusCode\", \"notcontains\", 'Passed'], \"or\", [\"energy\", \">\", '0']]);\r\n } else {\r\n this.model.transportFilter.push([\"energy\", \">=\", '0']);\r\n this.model.receiptFilter.push([\"energy\", \">=\", '0']);\r\n this.model.deliveryFilter.push([\"energy\", \">=\", '0']);\r\n }\r\n\r\n if (this.model.balanceHubSelectedRowKeys.length) {\r\n this.model.transportFilter.push(\"and\");\r\n this.model.receiptFilter.push(\"and\");\r\n this.model.deliveryFilter.push(\"and\");\r\n }\r\n\r\n if (this.model.balanceHubSelectedRowKeys.length) {\r\n const selectedLocationTransportFilter = [];\r\n const selectedLocationReceiptFilter = [];\r\n const selectedLocationDeliveryFilter = [];\r\n\r\n selectedLocationTransportFilter.push([\"statusCode\", \"=\", 'New']);\r\n selectedLocationReceiptFilter.push([\"statusCode\", \"=\", 'New']);\r\n selectedLocationDeliveryFilter.push([\"statusCode\", \"=\", 'New']);\r\n\r\n this.model.balanceHubSelectedRowKeys.forEach(hubLocation => {\r\n\r\n selectedLocationTransportFilter.push(\"or\");\r\n selectedLocationReceiptFilter.push('or');\r\n selectedLocationDeliveryFilter.push('or');\r\n\r\n const id = hubLocation.locationId;\r\n\r\n selectedLocationTransportFilter.push([[\"debitLocationId\", \"=\", id], \"or\", [\"creditLocationId\", \"=\", id]]);\r\n selectedLocationReceiptFilter.push([\"creditLocationId\", \"=\", id]);\r\n selectedLocationDeliveryFilter.push([\"debitLocationId\", \"=\", id]);\r\n this.model.energyFilter.push(['locationId', '=', id]);\r\n });\r\n\r\n this.model.transportFilter.push(selectedLocationTransportFilter);\r\n this.model.receiptFilter.push(selectedLocationReceiptFilter);\r\n this.model.deliveryFilter.push(selectedLocationDeliveryFilter);\r\n }\r\n\r\n // Sometimes the view is null, putting check in place so that the page continues to operate\r\n const view = this.getView();\r\n if (view) {\r\n view.applyFilters();\r\n }\r\n }\r\n\r\n\r\n private getTransportationRequests(customerId: number, nomGroupId: number, gasDay: GasDay, gasCycleCode: string): Observable {\r\n return this.nominationRequestService.queryTransportationRequests(customerId, nomGroupId, gasDay, gasCycleCode).pipe(\r\n concatMap(response => {\r\n const fuelNoms =\r\n _.map(\r\n _.filter(response.requests, request => !_.isNil(request.fuelNominationRequest)), transportNom => transportNom.fuelNominationRequest);\r\n\r\n return forkJoin(\r\n [\r\n this.nominationLocationEnrichmentService.enrichArray(fuelNoms, 'locationId'),\r\n this.nominationLocationEnrichmentService.enrichArray(response.requests, 'creditLocationId', 'creditLocation'),\r\n this.nominationLocationEnrichmentService.enrichArray(response.requests, 'debitLocationId', 'debitLocation'),\r\n this.nominationEnterpriseEnrichmentService.enrichArray(response.requests, 'submittedByUserEnterpriseId', 'submittedByUserEnterpriseId'),\r\n this.nominationNomGroupEnrichmentService.enrichArray(response.requests, 'nominationGroupId', 'nominationGroup'),\r\n this.nominationNomGroupEnrichmentService.enrichArray(response.requests, 'nominationGroupId', 'nominationGroup')\r\n ]).pipe(concatMap(() => of(response)));\r\n }));\r\n }\r\n\r\n\r\n private getTransferRequests(customerId: number, nomGroupId: number, gasDay: GasDay, gasCycleCode: string, hubType: string): Observable {\r\n return this.nominationRequestService.queryTransferRequests(customerId, nomGroupId, gasDay, gasCycleCode, hubType).pipe(\r\n concatMap(response => {\r\n return forkJoin(\r\n [\r\n this.nominationLocationEnrichmentService.enrichArray(response.requests, 'creditLocationId', 'creditLocation'),\r\n this.nominationLocationEnrichmentService.enrichArray(response.requests, 'debitLocationId', 'debitLocation'),\r\n this.nominationEnterpriseEnrichmentService.enrichArray(response.requests, 'submittedByUserEnterpriseId', 'submittedByUserEnterpriseId'),\r\n this.nominationNomGroupEnrichmentService.enrichArray(response.requests, 'nominationGroupId', 'nominationGroup')\r\n ]).pipe(concatMap(() => of(response)));\r\n }));\r\n }\r\n\r\n private getEnergyImbalanceInstructions(customerId: number, gasDay: GasDay, gasCycleCode: string, gasCycles: GasCycle[]): Observable {\r\n\r\n // todo: revisit in phase 2 release - returning empty result for now re: bug 99819\r\n return of(new EnergyImbalanceInstructionQueryResult());\r\n\r\n // return this.nominationRequestService.queryEnergyImbalanceInstructions(customerId, gasDay, gasCycleCode, gasCycles)\r\n // .concatMap(response => {\r\n // return this.nominationLocationEnrichmentService.enrichArray(response.requests, 'locationId', 'location')\r\n // .concatMap(() => {\r\n // return this.nominationNomGroupEnrichmentService.enrichArray(response.requests, 'nominationGroupId', 'nominationGroup');\r\n // })\r\n // .map(x => response);\r\n // });\r\n }\r\n\r\n\r\n /**\r\n * When an user has an enterprise id, and our list of customer contains their enterprise id, we want to automatically select it\r\n */\r\n private getEnterprises(gasDay: IGasDay): Observable {\r\n return this.nominationEnterpriseService.queryAllByPipeline({gasDay: gasDay, includeInactive: true, accountBusinessRights: [BusinessRight.MultiTitleTransfer, BusinessRight.LdcVariance, BusinessRight.TboTransportation] } as EnterpriseSearchParams).pipe(\r\n concatMap(response => {\r\n return this.nominationEnterpriseEnrichmentService.enrichArray(response, 'id');\r\n }));\r\n }\r\n\r\n private getNominationLocations(gasDay: IGasDay): Observable {\r\n return this.nominationLocationService.queryAllDetails2(new LocationSearchParams(gasDay, true, GasDay.maxGasDay(), this.model.loadOperatorLocationsOnly, true)).pipe(\r\n concatMap(response => {\r\n return this.nominationLocationEnrichmentService.enrichArray(response, 'id');\r\n }));\r\n }\r\n\r\n\r\n // These are the nom requests that are used with TboReceiptConfirmation/TboDeliveryConfirmation.\r\n private getTboConfirmationNomGroups(gasDay: GasDay): Observable {\r\n return this.nominationNomGroupService.queryNomGroupDetailsByBusinessRights(gasDay, [BusinessRight.PipelineVariance, BusinessRight.LdcVariance]);\r\n }\r\n\r\n loadTransportInformation(transportNomRequestResponse: TransportationNominationRequestQueryResult, seedTransNoms: TransportationNominationRequest[]) {\r\n this.model.transportNominationClones = [];\r\n if (transportNomRequestResponse) {\r\n this.model.transportationNominationRequests = (transportNomRequestResponse.requests as TransportationNominationRequest[]).concat(seedTransNoms);\r\n this.resetUndoRecords(this.model.transportUndos);\r\n this.resetSelections(this.model.transportSelections);\r\n\r\n let key = 1;\r\n this.model.transportationNominationRequests.forEach((req) => {\r\n if (req.id) {\r\n req['key'] = key++;\r\n this.model.transportNominationClones[req['key']] = {receipt: null, delivery: null, fuel: null};\r\n }\r\n });\r\n\r\n this.model.transportDataSource = this.createDataSource(this.model.transportationNominationRequests, this.model.transportUndos);\r\n this.model.transportDataSource.store().on('updated', (recordKey: number, values: ITransportationNominationRequest) => {\r\n if (recordKey > 0) { // Ignore new records.\r\n // Keep the records in the three hubs in sync.\r\n const clones = this.model.transportNominationClones[recordKey];\r\n const receiptUpdateObj: any = { };\r\n const deliveryUpdateObj: any = { };\r\n const fuelUpdateObj: any = { };\r\n let dt: Date;\r\n for (const prop of Object.keys(values)) {\r\n switch (prop) {\r\n case 'key':\r\n // This happens with an undo.\r\n break;\r\n case 'nominationGroupId':\r\n if (clones.receipt && clones.receipt.nominationGroupId !== values.nominationGroupId) {\r\n receiptUpdateObj.nominationGroupId = values.nominationGroupId;\r\n receiptUpdateObj.creditNominationGroupId = values.nominationGroupId;\r\n receiptUpdateObj.debitNominationGroupId = values.nominationGroupId;\r\n }\r\n if (clones.delivery && clones.delivery.nominationGroupId !== values.nominationGroupId) {\r\n deliveryUpdateObj.nominationGroupId = values.nominationGroupId;\r\n deliveryUpdateObj.creditNominationGroupId = values.nominationGroupId;\r\n deliveryUpdateObj.debitNominationGroupId = values.nominationGroupId;\r\n }\r\n if (clones.fuel && clones.fuel['nominationGroupId'] !== values.nominationGroupId) {\r\n fuelUpdateObj.nominationGroupId = values.nominationGroupId;\r\n fuelUpdateObj.creditNominationGroupId = values.nominationGroupId;\r\n fuelUpdateObj.debitNominationGroupId = values.nominationGroupId;\r\n }\r\n break;\r\n case 'energy':\r\n if (clones.receipt && clones.receipt.energy !== values.energy) {\r\n receiptUpdateObj.energy = values.energy;\r\n }\r\n if (clones.fuel) {\r\n if (clones.delivery && clones.delivery.energy !== values.energy) {\r\n deliveryUpdateObj.energy = values.energy;\r\n }\r\n } else {\r\n // This value is updated in the fuelNominationRequest section below.\r\n }\r\n break;\r\n case 'fuelNominationRequest':\r\n if (values[prop]) {\r\n for (const prop2 of Object.keys(values[prop])) {\r\n switch (prop2) {\r\n case 'locationId':\r\n if (clones.receipt && clones.receipt.fuelNominationRequest.locationId !== values.fuelNominationRequest.locationId) {\r\n receiptUpdateObj.fuelNominationRequest = _.cloneDeep(values.fuelNominationRequest);\r\n }\r\n if (clones.delivery && clones.delivery.fuelNominationRequest.locationId !== values.fuelNominationRequest.locationId) {\r\n deliveryUpdateObj.fuelNominationRequest = _.cloneDeep(values.fuelNominationRequest);\r\n }\r\n if (clones.fuel && clones.fuel.debitLocationId !== values.fuelNominationRequest.locationId) {\r\n fuelUpdateObj.debitLocationId = values.fuelNominationRequest.locationId;\r\n fuelUpdateObj.fuelNominationRequest = _.cloneDeep(values.fuelNominationRequest);\r\n }\r\n break;\r\n case 'fuel':\r\n if (clones.receipt && clones.receipt.fuelNominationRequest.fuel !== values.fuelNominationRequest.fuel) {\r\n receiptUpdateObj.fuelNominationRequest = _.cloneDeep(values.fuelNominationRequest);\r\n }\r\n if (clones.delivery && clones.delivery.fuelNominationRequest.fuel !== values.fuelNominationRequest.fuel) {\r\n deliveryUpdateObj.fuelNominationRequest = _.cloneDeep(values.fuelNominationRequest);\r\n }\r\n if (clones.fuel) {\r\n if (clones.fuel.energy !== values.fuelNominationRequest.fuel) {\r\n fuelUpdateObj.energy = values.fuelNominationRequest.fuel;\r\n fuelUpdateObj.fuelNominationRequest = _.cloneDeep(values.fuelNominationRequest);\r\n }\r\n } else {\r\n if (Object.keys(values).length === 1) {\r\n // Modified by the user.\r\n if (clones.delivery && clones.delivery.energy !== clones.receipt.energy + values.fuelNominationRequest.fuel) {\r\n deliveryUpdateObj.energy = clones.receipt.energy + values.fuelNominationRequest.fuel;\r\n }\r\n } else {\r\n // Modified by an undo.\r\n if (clones.delivery && clones.delivery.energy !== values.energy + values.fuelNominationRequest.fuel) {\r\n deliveryUpdateObj.energy = values.energy + values.fuelNominationRequest.fuel;\r\n }\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n break;\r\n case 'startGasDayCycle':\r\n // Clone the startGasDayCycle before processing changes to gasDayDate and gasCycleCode because we want to clone the object and then apply\r\n // possibly both changes to the clone.\r\n const cloneReceiptStartGasDayCycle = clones.receipt ? _.cloneDeep(clones.receipt.startGasDayCycle) : null;\r\n const cloneDeliveryStartGasDayCycle = clones.delivery ? _.cloneDeep(clones.delivery.startGasDayCycle) : null;\r\n const cloneFuelStartGasDayCycle = clones.fuel ? _.cloneDeep(clones.fuel.startGasDayCycle) : null;\r\n\r\n if (values.startGasDayCycle.gasDayDate) {\r\n dt = values.startGasDayCycle.gasDayDate;\r\n if (cloneReceiptStartGasDayCycle && cloneReceiptStartGasDayCycle.gasDayDate.valueOf() !== dt.valueOf()) {\r\n cloneReceiptStartGasDayCycle.gasDayDate = dt;\r\n }\r\n if (cloneDeliveryStartGasDayCycle && cloneDeliveryStartGasDayCycle.valueOf() !== dt.valueOf()) {\r\n cloneDeliveryStartGasDayCycle.gasDayDate = dt;\r\n }\r\n if (cloneFuelStartGasDayCycle && cloneFuelStartGasDayCycle.valueOf() !== dt.valueOf()) {\r\n cloneFuelStartGasDayCycle.gasDayDate = dt;\r\n }\r\n }\r\n\r\n if (values.startGasDayCycle.gasCycleCode) {\r\n const gasCycleCode = values.startGasDayCycle.gasCycleCode;\r\n if (cloneReceiptStartGasDayCycle && cloneReceiptStartGasDayCycle.gasCycleCode !== gasCycleCode) {\r\n cloneReceiptStartGasDayCycle.gasCycleCode = gasCycleCode;\r\n }\r\n if (cloneDeliveryStartGasDayCycle && cloneDeliveryStartGasDayCycle.gasCycleCode !== gasCycleCode) {\r\n cloneDeliveryStartGasDayCycle.gasCycleCode = gasCycleCode;\r\n }\r\n if (cloneFuelStartGasDayCycle && cloneFuelStartGasDayCycle.gasCycleCode !== gasCycleCode) {\r\n cloneFuelStartGasDayCycle.gasCycleCode = gasCycleCode;\r\n }\r\n }\r\n break;\r\n case 'endGasDayCycle':\r\n if (values.endGasDayCycle.gasDayDate === undefined) {\r\n // This came from the user entering a date.\r\n dt = values.endGasDayCycle.nextGasDayDate;\r\n dt = GasDay.from(dt).previous().toDate;\r\n } else {\r\n // This came from an undo or other manipulation in code.\r\n dt = values.endGasDayCycle.gasDayDate;\r\n }\r\n if (clones.receipt && clones.receipt.endGasDayCycle.gasDayDate.valueOf() !== dt.valueOf()) {\r\n receiptUpdateObj.endGasDayCycle = _.cloneDeep(clones.receipt.endGasDayCycle);\r\n receiptUpdateObj.endGasDayCycle.gasDayDate = dt;\r\n }\r\n if (clones.delivery && clones.delivery.endGasDayCycle.gasDayDate.valueOf() !== dt.valueOf()) {\r\n deliveryUpdateObj.endGasDayCycle = _.cloneDeep(clones.delivery.endGasDayCycle);\r\n deliveryUpdateObj.endGasDayCycle.gasDayDate = dt;\r\n }\r\n if (clones.fuel && clones.fuel.endGasDayCycle.gasDayDate.valueOf() !== dt.valueOf()) {\r\n fuelUpdateObj.endGasDayCycle = _.cloneDeep(clones.fuel.endGasDayCycle);\r\n fuelUpdateObj.endGasDayCycle.gasDayDate = dt;\r\n }\r\n break;\r\n default:\r\n if (clones.receipt && clones.receipt[prop] !== values[prop]) {\r\n receiptUpdateObj[prop] = values[prop];\r\n }\r\n if (clones.delivery && clones.delivery[prop] !== values[prop]) {\r\n deliveryUpdateObj[prop] = values[prop];\r\n }\r\n if (clones.fuel && clones.fuel[prop] !== values[prop]) {\r\n switch (prop) {\r\n case 'debitLocationId':\r\n break;\r\n default:\r\n fuelUpdateObj[prop] = values[prop];\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n if (clones.receipt && Object.keys(receiptUpdateObj).length > 0) {\r\n this.model.receiptDataSource.store().update(clones.receipt['key'], receiptUpdateObj);\r\n }\r\n if (clones.delivery && Object.keys(deliveryUpdateObj).length > 0) {\r\n this.model.deliveryDataSource.store().update(clones.delivery['key'], deliveryUpdateObj);\r\n }\r\n if (clones.fuel && Object.keys(fuelUpdateObj).length > 0) {\r\n this.model.deliveryDataSource.store().update(clones.fuel['key'], fuelUpdateObj);\r\n }\r\n }\r\n });\r\n\r\n this.clearGridEdits();\r\n }\r\n }\r\n\r\n loadDeliveryInformation(transportNomRequestResponse: TransportationNominationRequestQueryResult, deliveryNomRequestResponse: TransferNominationRequestQueryResult, seedNoms: NominationRequest[] ) {\r\n this.model.deliveryTransportNominationOriginals = [];\r\n let key = 1;\r\n if (transportNomRequestResponse || deliveryNomRequestResponse) {\r\n const offSystemRequests = deliveryNomRequestResponse.requests as CustodyTransferNominationRequest[];\r\n const transportRequests = transportNomRequestResponse.requests as TransportationNominationRequest[];\r\n const modifiedTransportRequests = [] as NominationRequest[];\r\n this.resetUndoRecords(this.model.deliveryUndos);\r\n this.resetSelections(this.model.deliverySelections);\r\n\r\n transportRequests.forEach(req => {\r\n const modTrans: TransportationNominationRequest = _.cloneDeep(req);\r\n modTrans['key'] = key++;\r\n if (modTrans.transactionType === TransactionTypes.tboTransport || modTrans.transactionType === TransactionTypes.tboImbalanceTransfer) {\r\n // TBOs are asset accounts, so reverse the debit and credit locations for display purposes.\r\n this.reverseLocations(modTrans);\r\n }\r\n modifiedTransportRequests.push(modTrans);\r\n this.model.deliveryTransportNominationOriginals[modTrans['key']] = req;\r\n\r\n if (req.fuelNominationRequest) {\r\n if (req.debitLocationId === req.fuelNominationRequest.locationId) {\r\n modTrans.energy += req.fuelNominationRequest.fuel;\r\n } else {\r\n const modFuelReq: any = _.cloneDeep(req); // Maybe this should be its own proper request type and not hijack transport?\r\n modFuelReq['key'] = key++;\r\n modFuelReq.energy = req.fuelNominationRequest.fuel;\r\n modFuelReq.debitLocationId = req.fuelNominationRequest.locationId;\r\n modFuelReq.debitLocationName = req.fuelNominationRequest.name;\r\n modifiedTransportRequests.push(modFuelReq as NominationRequest);\r\n this.model.deliveryTransportNominationOriginals[modFuelReq['key']] = req;\r\n this.model.transportNominationClones[req['key']].fuel = modFuelReq;\r\n }\r\n }\r\n this.model.transportNominationClones[req['key']].delivery = modTrans;\r\n });\r\n\r\n if (offSystemRequests) {\r\n offSystemRequests.forEach(req => req['key'] = key++);\r\n }\r\n\r\n // Only assign a key if this record is not new (i.e. has a nomination id)\r\n _.filter(seedNoms, x => x.id).forEach(req => { req['key'] = key++; });\r\n\r\n this.model.deliveryHubNominationRequests = modifiedTransportRequests.concat(offSystemRequests).concat(seedNoms);\r\n\r\n\r\n\r\n this.model.deliveryDataSource = this.createDataSource(this.model.deliveryHubNominationRequests, this.model.deliveryUndos);\r\n const store = this.model.deliveryDataSource.store();\r\n store.on('updated', (recordKey: number, values: ITransportationNominationRequest) => {\r\n if (recordKey > 0) { // Ignore new records.\r\n store.byKey(recordKey).then((record) => {\r\n if (record.transactionType === TransactionTypes.transport || record.transactionType === TransactionTypes.tboTransport) {\r\n // The user can only update the rank. Any other updates are pushed down\r\n // from the original transport record. Therefore, we only need to push\r\n // the rank, statusCode (New), and id (null) up to the original record.\r\n const original = this.model.deliveryTransportNominationOriginals[recordKey];\r\n const updateObj: any = { };\r\n if (values.receiptRank !== undefined && original.receiptRank !== values.receiptRank) {\r\n updateObj.receiptRank = values.receiptRank;\r\n }\r\n if (values.statusCode !== undefined && original.statusCode !== values.statusCode) {\r\n updateObj.statusCode = values.statusCode;\r\n }\r\n if (values.id !== undefined && original.id !== values.id) {\r\n updateObj.id = values.id;\r\n }\r\n if (values.startGasDayCycle !== undefined && original.startGasDayCycle !== values.startGasDayCycle) {\r\n updateObj.startGasDayCycle = values.startGasDayCycle;\r\n }\r\n\r\n if (values.startGasDayCycleCode !== undefined && original.startGasDayCycleCode !== values.startGasDayCycleCode) {\r\n updateObj.startGasDayCycleCode = values.startGasDayCycleCode;\r\n }\r\n\r\n if (values.startGasDayDate !== undefined && original.startGasDayDate !== values.startGasDayDate) {\r\n updateObj.startGasDayDate = values.startGasDayDate;\r\n }\r\n\r\n if (values.endGasDayEndDate !== undefined && original.endGasDayEndDate !== values.endGasDayEndDate) {\r\n updateObj.endGasDayEndDate = values.endGasDayEndDate;\r\n }\r\n\r\n if (Object.keys(updateObj).length > 0) {\r\n this.model.transportDataSource.store().update(original['key'], updateObj);\r\n this.model.receiptDataSource.store().update(original['key'], updateObj);\r\n }\r\n }\r\n });\r\n }\r\n });\r\n\r\n this.clearGridEdits();\r\n\r\n this.model.deliveryHubNominationRequests.forEach((req) => {\r\n if (req.transactionType !== TransactionTypes.transport && req.transactionType !== TransactionTypes.tboTransport && req.transactionType !== TransactionTypes.tboImbalanceTransfer) {\r\n req['creditLocationName'] = '';\r\n }\r\n });\r\n\r\n this.model.originalDeliveryHubNominationRequests = _.cloneDeep(this.model.deliveryHubNominationRequests); // Copy Original Delivery Nomination Requests for Hub Balancing\r\n }\r\n }\r\n\r\n loadReceiptHubInformation(transportNomRequestResponse: TransportationNominationRequestQueryResult, receiptNomRequestResponse: TransferNominationRequestQueryResult, seedNoms: NominationRequest[]) {\r\n let key = 1;\r\n this.model.receiptTransportNominationOriginals = [];\r\n if (transportNomRequestResponse || receiptNomRequestResponse) {\r\n const receiptRequests = receiptNomRequestResponse.requests as CustodyTransferNominationRequest[];\r\n // Copy the transportNomRequestResponse records so any edits to them don't affect the receipt hub.\r\n const transportRequests = [] as NominationRequest[];\r\n transportNomRequestResponse.requests.forEach(req => {\r\n const modTrans = _.cloneDeep(req);\r\n modTrans['key'] = key++;\r\n if (modTrans.transactionType === TransactionTypes.tboTransport || modTrans.transactionType === TransactionTypes.tboImbalanceTransfer) {\r\n // TBOs are asset accounts, so reverse the debit and credit locations for display purposes.\r\n this.reverseLocations(modTrans);\r\n }\r\n transportRequests.push(modTrans);\r\n this.model.receiptTransportNominationOriginals[modTrans['key']] = req;\r\n this.model.transportNominationClones[req['key']].receipt = modTrans;\r\n });\r\n receiptRequests.forEach(req => req['key'] = key++);\r\n // Only assign a key if this record is not new (i.e. has a nomination id)\r\n _.filter(seedNoms, x => x.id).forEach(req => { req['key'] = key++; });\r\n\r\n this.model.receiptHubNominationRequests = (transportRequests.concat(receiptRequests).concat(seedNoms) as TransportationNominationRequest[]);\r\n this.resetUndoRecords(this.model.receiptUndos);\r\n this.resetSelections(this.model.receiptSelections);\r\n\r\n this.model.receiptDataSource = this.createDataSource(this.model.receiptHubNominationRequests, this.model.receiptUndos);\r\n const dataStore = this.model.receiptDataSource.store();\r\n dataStore.on('updated', (recordKey: number, values: ITransportationNominationRequest) => {\r\n if (recordKey > 0) { // Ignore new records.\r\n dataStore.byKey(recordKey).then((record) => {\r\n if (record.transactionType === TransactionTypes.transport || record.transactionType === TransactionTypes.tboTransport) {\r\n // The user can only update the rank. Any other updates are pushed down\r\n // from the original transport record. Therefore, we only need to push\r\n // the rank, statusCode (New), and id (null) up to the original record.\r\n const original = this.model.receiptTransportNominationOriginals[recordKey];\r\n const updateObj: any = { };\r\n if (values.deliveryRank !== undefined && original.deliveryRank !== values.deliveryRank) {\r\n updateObj.deliveryRank = values.deliveryRank;\r\n }\r\n if (values.statusCode !== undefined && original.statusCode !== values.statusCode) {\r\n updateObj.statusCode = values.statusCode;\r\n }\r\n if (values.id !== undefined && original.id !== values.id) {\r\n updateObj.id = values.id;\r\n }\r\n if (values.startGasDayCycle !== undefined && original.startGasDayCycle !== values.startGasDayCycle) {\r\n updateObj.startGasDayCycle = values.startGasDayCycle;\r\n }\r\n\r\n if (values.startGasDayCycleCode !== undefined && original.startGasDayCycleCode !== values.startGasDayCycleCode) {\r\n updateObj.startGasDayCycleCode = values.startGasDayCycleCode;\r\n }\r\n\r\n if (values.startGasDayDate !== undefined && original.startGasDayDate !== values.startGasDayDate) {\r\n updateObj.startGasDayDate = values.startGasDayDate;\r\n }\r\n\r\n if (values.endGasDayEndDate !== undefined && original.endGasDayEndDate !== values.endGasDayEndDate) {\r\n updateObj.endGasDayEndDate = values.endGasDayEndDate;\r\n }\r\n\r\n if (Object.keys(updateObj).length > 0) {\r\n this.model.transportDataSource.store().update(original['key'], updateObj);\r\n this.model.deliveryDataSource.store().update(original['key'], updateObj);\r\n }\r\n\r\n }\r\n });\r\n }\r\n });\r\n\r\n this.clearGridEdits();\r\n\r\n this.model.receiptHubNominationRequests.forEach((req) => {\r\n if (req.transactionType !== TransactionTypes.transport && req.transactionType !== TransactionTypes.tboTransport && req.transactionType !== TransactionTypes.tboImbalanceTransfer) {\r\n req['debitLocationName'] = '';\r\n }\r\n });\r\n\r\n this.model.originalReceiptHubNominationRequests = _.cloneDeep(this.model.receiptHubNominationRequests); // Copy Original Receipt Nomination Requests for Hub Balancing\r\n }\r\n }\r\n\r\n reverseLocations(trans: any) {\r\n const locationId = trans.debitLocationId;\r\n const locationName = trans.debitLocationName;\r\n trans.debitLocationId = trans.creditLocationId;\r\n trans.debitLocationName = trans.creditLocationName;\r\n trans.creditLocationId = locationId;\r\n trans.creditLocationName = locationName;\r\n }\r\n\r\n loadEnergyImbalanceInformation(energyImbalanceInstructionResponse: EnergyImbalanceInstructionQueryResult) {\r\n const requests = energyImbalanceInstructionResponse.requests;\r\n\r\n _.forEach(requests, request => {\r\n if (request.status === \"FailedForDuplicateRank\") {\r\n request.statusMessage = `Ranks must be unique across all transactions for Location, Account and Pack or Draft Quantity.`;\r\n }\r\n\r\n\r\n\r\n });\r\n\r\n this.model.energyImbalanceInstructions = requests;\r\n\r\n let key = 1;\r\n this.model.energyImbalanceUndos.splice(0, this.model.energyImbalanceUndos.length);\r\n this.model.energyImbalanceSelections.splice(0, this.model.energyImbalanceSelections.length);\r\n _.forEach(energyImbalanceInstructionResponse.requests, req => req['key'] = key++);\r\n\r\n this.model.energyDataSource = this.createDataSource(this.model.energyImbalanceInstructions, this.model.energyImbalanceUndos);\r\n }\r\n\r\n private updateSavedStartAndEndGasDayCycles(savedTransactions: NominationRequest[], undoRecords: Array) {\r\n const selectedGasCycle = _.find(this.model.gasCycles, x => x.code === this.model.lastSearchParams.gasCycleCode);\r\n const beginGasDayCycle = GasDayCycle.for(this.model.lastSearchParams.gasDay, selectedGasCycle);\r\n const isAdjustment = !_.isNil(this.model.timelyOpenGasDayCycleStatus) && this.model.timelyOpenGasDayCycleStatus.gasDay > beginGasDayCycle.gasDay;\r\n const endGasDay = beginGasDayCycle.gasCycleCode === GasCycle.TimelyCycleCode && !isAdjustment\r\n ? GasMonth.fromGasDay(this.model.lastSearchParams.gasDay).end()\r\n : this.model.lastSearchParams.gasDay;\r\n\r\n const endGasDayCycle = GasDayCycle.for(endGasDay as GasDay, selectedGasCycle);\r\n\r\n _.forEach(savedTransactions, transactions => {\r\n const undoRecord = _.find(undoRecords, item => item.data.key === transactions['key']);\r\n if (_.isNil(undoRecord)) {\r\n transactions.startGasDayCycle = beginGasDayCycle;\r\n transactions.startGasDayCycleCode = beginGasDayCycle.gasCycleCode;\r\n transactions.startGasDayDate = beginGasDayCycle.gasDayDate;\r\n transactions.endGasDayCycle = endGasDayCycle;\r\n if (beginGasDayCycle.gasCycleCode !== GasCycle.TimelyCycleCode || isAdjustment) {\r\n transactions.endGasDayEndDate = endGasDayCycle.nextGasDayDate;\r\n }\r\n }\r\n });\r\n }\r\n\r\n selectSavedRequests() {\r\n const transportSavedTransactions = this.model.transportationNominationRequests.filter(req => req.statusCode === 'Saved');\r\n const receiptSavedTransactions = this.model.receiptHubNominationRequests.filter(req => req.statusCode === 'Saved' || req.statusCode === 'Mismatched');\r\n const deliverySavedTransactions = this.model.deliveryHubNominationRequests.filter(req => req.statusCode === 'Saved' || req.statusCode === 'Mismatched');\r\n\r\n this.updateSavedStartAndEndGasDayCycles(transportSavedTransactions, this.model.transportUndos);\r\n this.updateSavedStartAndEndGasDayCycles(receiptSavedTransactions, this.model.receiptUndos);\r\n this.updateSavedStartAndEndGasDayCycles(deliverySavedTransactions, this.model.deliveryUndos);\r\n\r\n const transportResults = _(transportSavedTransactions).map('key').value();\r\n const recResults = _(receiptSavedTransactions).map('key').value();\r\n const delResults = _(deliverySavedTransactions).map('key').value();\r\n\r\n (this.getView() as any).selectSavedRequests(transportResults, recResults, delResults);\r\n }\r\n\r\n deselectNewDuplicateKeyRequests() {\r\n\r\n const transportResults = this.checkDuplicateNoms(this.getSelectedTransportRequestsNotPassed(), true);\r\n const recResults = this.checkDuplicateNoms(this.getSelectedReceiptRequestsNotPassed(), false);\r\n const delResults = this.checkDuplicateNoms(this.getSelectedDeliveryRequestsNotPassed(), false);\r\n\r\n (this.getView() as any).deselectNewDuplicateKeyRequests(transportResults, recResults, delResults);\r\n\r\n return (transportResults.length + recResults.length + delResults.length);\r\n }\r\n\r\n checkDuplicateNoms(requestCollection, forTransport) {\r\n const listOfDups = [];\r\n const hasDup = [];\r\n\r\n for ( let i = 0; i < requestCollection.length; i++) {\r\n if (_.includes(hasDup, i)) {\r\n continue;\r\n }\r\n let dupFound = false;\r\n const toCheck = requestCollection[i];\r\n for ( let n = i + 1; n < requestCollection.length; n++) {\r\n if (_.includes(hasDup, n)) {\r\n continue;\r\n }\r\n const toCompare = requestCollection[n];\r\n if ( this.compareBusinessKey(toCheck, toCompare, forTransport) ) {\r\n listOfDups.push(toCompare);\r\n dupFound = true;\r\n hasDup.push(n);\r\n }\r\n }\r\n if ( dupFound ) {\r\n listOfDups.push(toCheck);\r\n hasDup.push(i);\r\n }\r\n }\r\n\r\n return _(listOfDups).map('key').value();\r\n }\r\n\r\n compareBusinessKey(toCheck, toCompare, forTransport) {\r\n const packageIdsAreEqual = toCheck.packageId ?\r\n toCheck.packageId === toCompare.packageId :\r\n !toCompare.packageId;\r\n\r\n return forTransport ?\r\n (toCheck.billableServiceOptionId === toCompare.billableServiceOptionId &&\r\n toCheck.nominationGroupId === toCompare.nominationGroupId &&\r\n toCheck.debitNominationGroupId === toCompare.debitNominationGroupId &&\r\n toCheck.debitLocationId === toCompare.debitLocationId &&\r\n toCheck.creditLocationId === toCompare.creditLocationId &&\r\n packageIdsAreEqual &&\r\n toCheck.bidPrice === toCompare.bidPrice &&\r\n toCheck.zeroTaxRated === toCompare.zeroTaxRated &&\r\n toCheck.startGasDayDate.valueOf() === toCompare.startGasDayDate.valueOf() &&\r\n toCheck.startGasDayCycleCode === toCompare.startGasDayCycleCode &&\r\n toCheck.endGasDayEndDate.valueOf() === toCompare.endGasDayEndDate.valueOf()\r\n )\r\n : (toCheck.enterpriseId === toCompare.enterpriseId &&\r\n toCheck.debitNominationGroupId === toCompare.debitNominationGroupId &&\r\n toCheck.debitLocationId === toCompare.debitLocationId &&\r\n toCheck.creditNominationGroupId === toCompare.creditNominationGroupId &&\r\n toCheck.creditLocationId === toCompare.creditLocationId &&\r\n toCheck.transactionType === toCompare.transactionType &&\r\n packageIdsAreEqual &&\r\n toCheck.upDownContract === toCompare.upDownContract &&\r\n toCheck.counterParty === toCompare.counterParty &&\r\n toCheck.startGasDayDate.valueOf() === toCompare.startGasDayDate.valueOf() &&\r\n toCheck.startGasDayCycleCode === toCompare.startGasDayCycleCode &&\r\n toCheck.endGasDayEndDate.valueOf() === toCompare.endGasDayEndDate.valueOf());\r\n }\r\n\r\n clearGridEdits() {\r\n this.getView().clearGridEdits();\r\n }\r\n\r\n getView(): NominationRequestsPageViewComponent | NominationRequestsTabViewComponent {\r\n return this.model.pageView ? this.nominationRequestPageView : this.nominationRequestTabView;\r\n }\r\n\r\n isDisabled(): boolean {\r\n const check =\r\n (!!this.nominationRequestPageView && this.nominationRequestPageView.isDisabled()) ||\r\n (!!this.nominationRequestTabView && this.nominationRequestTabView.isDisabled());\r\n\r\n // this.cdr.detectChanges();\r\n\r\n return check;\r\n }\r\n\r\n isDeleteDisabled(): boolean {\r\n const check =\r\n (!!this.nominationRequestPageView && this.nominationRequestPageView.isDeleteDisabled()) ||\r\n (!!this.nominationRequestTabView && this.nominationRequestTabView.isDeleteDisabled());\r\n\r\n // this.cdr.detectChanges();\r\n\r\n return check;\r\n }\r\n\r\n isViewOnly(): boolean {\r\n const check =\r\n (!!this.nominationRequestPageView && this.nominationRequestPageView.isViewOnly()) ||\r\n (!!this.nominationRequestTabView && this.nominationRequestTabView.isViewOnly());\r\n\r\n\r\n return check;\r\n }\r\n\r\n isCustomerOrNomGroupExpired(): boolean {\r\n if (_.isNil(this.model.selectedNomGroup) || _.isNil(this.model.lastSearchParams) || _.isNil(this.model.lastSearchParams.customerId)\r\n || _.isNil(this.model.copyModel) || _.isNil(this.model.copyModel.endGasDayNextGasDay)) {\r\n return false;\r\n }\r\n let isExpired = this.model.selectedNomGroup.expiryGasDay < this.model.copyModel.endGasDayNextGasDay.previous();\r\n\r\n if (!isExpired) {\r\n const customer = _.find(this.model.customers, x => x.id === this.model.lastSearchParams.customerId);\r\n isExpired = customer.stateExpiryGasDay < this.model.copyModel.endGasDayNextGasDay.previous();\r\n }\r\n\r\n return isExpired;\r\n }\r\n\r\n isAccountExpired(): void {\r\n if (_.isNil(this.model.transportationNominationRequests) || _.isNil(this.model.receiptHubNominationRequests)\r\n || _.isNil(this.model.deliveryHubNominationRequests)) {\r\n return;\r\n }\r\n\r\n const receiptRequests = this.getSelectedReceiptRequests();\r\n const deliveryRequests = this.getSelectedDeliveryRequests();\r\n const transportRequests = this.getSelectedTransportRequests();\r\n\r\n const numToCopy = receiptRequests.length + deliveryRequests.length + transportRequests.length;\r\n\r\n const expiredReceiptRequests = this.getExpiredSelectedReceiptTransactions(receiptRequests);\r\n const expiredDeliveryRequests = this.getExpiredSelectedDeliveryTransactions(deliveryRequests);\r\n const expiredTransportRequests = this.getExpiredSelectedTransportTransactions(transportRequests);\r\n const numExpiredAccounts = expiredTransportRequests.length + expiredDeliveryRequests.length + expiredReceiptRequests.length;\r\n\r\n if (numExpiredAccounts > 0) {\r\n this.model.copyModel.accountExpiredMessage = numExpiredAccounts + ' of ' + numToCopy + ' nominations could not be copied due to expired Accounts on the Begin Date.';\r\n this.model.copyModel.hasExpiredAccount = true;\r\n this.model.copyModel.allRequestsExpired = numExpiredAccounts === numToCopy;\r\n } else {\r\n this.model.copyModel.hasExpiredAccount = false;\r\n this.model.copyModel.allRequestsExpired = false;\r\n }\r\n }\r\n\r\n getExpiredSelectedTransportTransactions(transportRequests): TransportationNominationRequest[] {\r\n const transportListOfExpired = [];\r\n transportRequests.forEach(x => {\r\n const nomGroup = _.find(this.model.allNomGroups, ng => ng.id === x.nominationGroupId);\r\n if (nomGroup.expiryGasDay < this.model.copyModel.beginGasDay || nomGroup.effectiveGasDay > this.model.copyModel.beginGasDay) {\r\n transportListOfExpired.push(x);\r\n }\r\n });\r\n\r\n return _(transportListOfExpired).map('key').value();\r\n }\r\n\r\n getExpiredSelectedDeliveryTransactions(deliveryRequests): CustodyTransferNominationRequest[] {\r\n const deliveryListOfExpired = [];\r\n deliveryRequests.forEach(x => {\r\n const nomGroup = _.find(this.model.allNomGroups, ng => ng.id === x.creditNominationGroupId);\r\n if (nomGroup.expiryGasDay < this.model.copyModel.beginGasDay || nomGroup.effectiveGasDay > this.model.copyModel.beginGasDay) {\r\n deliveryListOfExpired.push(x);\r\n }\r\n });\r\n\r\n return _(deliveryListOfExpired).map('key').value();\r\n }\r\n\r\n getExpiredSelectedReceiptTransactions(receiptRequests): CustodyTransferNominationRequest[] {\r\n const receiptListOfExpired = [];\r\n receiptRequests.forEach(x => {\r\n const nomGroup = _.find(this.model.allNomGroups, ng => ng.id === x.debitNominationGroupId);\r\n if (nomGroup.expiryGasDay < this.model.copyModel.beginGasDay || nomGroup.effectiveGasDay > this.model.copyModel.beginGasDay) {\r\n receiptListOfExpired.push(x);\r\n }\r\n });\r\n\r\n return _(receiptListOfExpired).map('key').value();\r\n }\r\n\r\n // move this to a more common place?\r\n locationIsNonThreaded = (locationId: number): boolean => {\r\n const location = _.find(this.model.locations, loc => loc.id === locationId);\r\n\r\n return !location || location.accountingLocationParameters.confirmationMethod === 'Non-Threaded';\r\n };\r\n\r\n private doesCurrentNomGroupHaveLdcVariance = (): boolean => {\r\n return !_.isNil(this.model.selectedNomGroup) && this.model.selectedNomGroup.businessRight === BusinessRight.LdcVariance.name;\r\n };\r\n\r\n createDataSource(data: any[], undos: IUndoRecord[]): DataSource {\r\n const dataStore = new ArrayStore({\r\n data: data,\r\n key: 'key'\r\n });\r\n\r\n dataStore.on('updating', (key: number, values: INominationRequest) => {\r\n const record = _.find(data, r => r['key'] === key);\r\n NominationRequestsComponent.createUndoRecord(key, record, undos);\r\n });\r\n\r\n const dataSource = new DataSource({\r\n requireTotalCount: true,\r\n store: dataStore,\r\n onLoadingChanged: (isLoading) => {\r\n if (!isLoading) {\r\n this.applyFilters();\r\n }\r\n }\r\n });\r\n\r\n return dataSource;\r\n }\r\n\r\n onUndoRow = (e: UndoRowArgs): void => {\r\n // If this is a receipt or delivery or energy imbalance record then proceed normally.\r\n // If this is a transport record then if the undo request came from the\r\n // receipt or delivery hub, process it in the transport hub (the transport\r\n // undo record has enough information to correctly restore all of the\r\n // cloned records).\r\n let undoObj = _.find(e.undos, item => item.key === e.key);\r\n let isTransportationNomination: boolean = false;\r\n\r\n if (undoObj) {\r\n let dataSource: DataSource;\r\n const status = (undoObj.data as IEnergyImbalanceInstruction).status;\r\n if (status) {\r\n dataSource = this.model.energyDataSource;\r\n } else {\r\n const transactionType = (undoObj.data as INominationRequest).transactionType;\r\n if (this.isReceiptTransaction(transactionType)) {\r\n dataSource = this.model.receiptDataSource;\r\n } else if (this.isDeliveryTransaction(transactionType)) {\r\n dataSource = this.model.deliveryDataSource;\r\n } else if (transactionType === TransactionTypes.transport || transactionType === TransactionTypes.tboTransport) {\r\n isTransportationNomination = true;\r\n if (e.undos !== this.model.transportUndos) {\r\n // Find the matching record in the transport hub.\r\n if (e.undos === this.model.receiptUndos) {\r\n e.key = this.model.receiptTransportNominationOriginals[e.key]['key'];\r\n } else {\r\n e.key = this.model.deliveryTransportNominationOriginals[e.key]['key'];\r\n }\r\n e.undos = this.model.transportUndos;\r\n }\r\n dataSource = this.model.transportDataSource;\r\n undoObj = _.find(e.undos, item => item.key === e.key);\r\n }\r\n }\r\n\r\n // Copy the undo record back over the data record.\r\n const store = dataSource.store();\r\n store.update(e.key, _.cloneDeep(undoObj.data));\r\n const undoIndex = e.undos.indexOf(undoObj, 0);\r\n e.undos.splice(undoIndex, 1);\r\n\r\n // If this is transportation nomination, we need to also clear the same entry in the receipt and delivery hubs\r\n if (isTransportationNomination) {\r\n const receiptUndo = _.find(this.model.receiptUndos, item => item.data.key === e.key);\r\n this.model.receiptUndos.splice(this.model.receiptUndos.indexOf(receiptUndo, 0), 1);\r\n\r\n const deliveryUndo = _.find(this.model.deliveryUndos, item => item.data.key === e.key);\r\n this.model.deliveryUndos.splice(this.model.deliveryUndos.indexOf(deliveryUndo, 0), 1);\r\n }\r\n }\r\n };\r\n\r\n onSelectionChanged = (e): void => {\r\n const dataGrid: DxDataGridComponent = e.component.instance();\r\n // Transport, delivery, or receipt?\r\n let transportHub = null, deliveryHub = null, receiptHub = null;\r\n let key: number, idx: number;\r\n if (this.model.pageView) {\r\n transportHub = this.nominationRequestPageView.transportHubComponent;\r\n receiptHub = this.nominationRequestPageView.receiptHubComponent;\r\n deliveryHub = this.nominationRequestPageView.deliveryHubComponent;\r\n } else {\r\n transportHub = this.nominationRequestTabView.transportHubComponent;\r\n receiptHub = this.nominationRequestTabView.receiptHubComponent;\r\n deliveryHub = this.nominationRequestTabView.deliveryHubComponent;\r\n }\r\n if (transportHub && transportHub.dataGrid.instance == dataGrid) { // Don't use ===\r\n const receiptToAdd: Array = [];\r\n const receiptToRemove: Array = [];\r\n const deliveryToAdd: Array = [];\r\n const deliveryToRemove: Array = [];\r\n // Transport. Manipulate the receipt and delivery arrays.\r\n for (let n = 0; n < e.currentSelectedRowKeys.length; n++) {\r\n const clones = this.model.transportNominationClones[e.currentSelectedRowKeys[n]];\r\n if (clones) {\r\n if (clones.receipt) {\r\n key = clones.receipt['key'];\r\n if (this.model.receiptSelections.indexOf(key) < 0) {\r\n receiptToAdd.push(key);\r\n this.model.receiptSelections.push(key);\r\n }\r\n }\r\n if (clones.delivery) {\r\n key = clones.delivery['key'];\r\n if (this.model.deliverySelections.indexOf(key) < 0) {\r\n deliveryToAdd.push(key);\r\n this.model.deliverySelections.push(key);\r\n }\r\n }\r\n if (clones.fuel) {\r\n key = clones.fuel['key'];\r\n if (this.model.deliverySelections.indexOf(key) < 0) {\r\n deliveryToAdd.push(key);\r\n this.model.deliverySelections.push(key);\r\n }\r\n }\r\n }\r\n }\r\n for (let n = 0; n < e.currentDeselectedRowKeys.length; n++) {\r\n const clones = this.model.transportNominationClones[e.currentDeselectedRowKeys[n]];\r\n if (clones) {\r\n if (clones.receipt) {\r\n key = clones.receipt['key'];\r\n idx = this.model.receiptSelections.indexOf(key);\r\n if (idx >= 0) {\r\n receiptToRemove.push(key);\r\n this.model.receiptSelections.splice(idx, 1);\r\n }\r\n }\r\n if (clones.delivery) {\r\n key = clones.delivery['key'];\r\n idx = this.model.deliverySelections.indexOf(key);\r\n if (idx >= 0) {\r\n deliveryToRemove.push(key);\r\n this.model.deliverySelections.splice(idx, 1);\r\n }\r\n }\r\n if (clones.fuel) {\r\n key = clones.fuel['key'];\r\n idx = this.model.deliverySelections.indexOf(key);\r\n if (idx >= 0) {\r\n deliveryToRemove.push(key);\r\n this.model.deliverySelections.splice(idx, 1);\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Update the receipt and delivery components.\r\n if (receiptHub) {\r\n receiptHub.updateSelectedRows(receiptToAdd, receiptToRemove);\r\n }\r\n if (deliveryHub) {\r\n deliveryHub.updateSelectedRows(deliveryToAdd, deliveryToRemove);\r\n }\r\n\r\n } else if (receiptHub && receiptHub.dataGrid.instance == dataGrid) { // Don't use ===\r\n const transportToAdd: Array = [];\r\n const transportToRemove: Array = [];\r\n // Receipt. Manipulate the transport array.\r\n for (let n = 0; n < e.currentSelectedRowKeys.length; n++) {\r\n const original = this.model.receiptTransportNominationOriginals[e.currentSelectedRowKeys[n]];\r\n if (original) {\r\n key = original['key'];\r\n if (this.model.transportSelections.indexOf(key) < 0) {\r\n transportToAdd.push(key);\r\n this.model.transportSelections.push(key);\r\n }\r\n }\r\n }\r\n for (let n = 0; n < e.currentDeselectedRowKeys.length; n++) {\r\n const original = this.model.receiptTransportNominationOriginals[e.currentDeselectedRowKeys[n]];\r\n if (original) {\r\n key = original['key'];\r\n idx = this.model.transportSelections.indexOf(key);\r\n if (idx >= 0) {\r\n transportToRemove.push(key);\r\n this.model.transportSelections.splice(idx, 1);\r\n }\r\n }\r\n }\r\n\r\n // Update the transport component.\r\n if (transportHub) {\r\n transportHub.updateSelectedRows(transportToAdd, transportToRemove);\r\n }\r\n\r\n } else if (deliveryHub && deliveryHub.dataGrid.instance == dataGrid) {\r\n const transportToAdd: Array = [];\r\n const transportToRemove: Array = [];\r\n // Delivery. Manipulate the transport array.\r\n for (let n = 0; n < e.currentSelectedRowKeys.length; n++) {\r\n const original = this.model.deliveryTransportNominationOriginals[e.currentSelectedRowKeys[n]];\r\n if (original) {\r\n key = original['key'];\r\n if (this.model.transportSelections.indexOf(key) < 0) {\r\n transportToAdd.push(key);\r\n this.model.transportSelections.push(key);\r\n }\r\n }\r\n }\r\n for (let n = 0; n < e.currentDeselectedRowKeys.length; n++) {\r\n const original = this.model.deliveryTransportNominationOriginals[e.currentDeselectedRowKeys[n]];\r\n if (original) {\r\n key = original['key'];\r\n idx = this.model.transportSelections.indexOf(key);\r\n if (idx >= 0) {\r\n transportToRemove.push(key);\r\n this.model.transportSelections.splice(idx, 1);\r\n }\r\n }\r\n }\r\n\r\n // Update the transport component.\r\n if (transportHub) {\r\n transportHub.updateSelectedRows(transportToAdd, transportToRemove);\r\n }\r\n }\r\n };\r\n\r\n isDownloadDisabled = (): boolean => {\r\n if (this.model.lastSearchParams) {\r\n if (_.isNil(this.model.lastSearchParams.customerId)) {\r\n return true;\r\n }\r\n return this.customerIsPipelineLegalSignorOrEnterprise(this.model.lastSearchParams.customerId);\r\n }\r\n return true;\r\n };\r\n\r\n getDefaultChangesWillBeLostMessageOptions(): ModalOptions {\r\n return YesNoCancelModalService.getDefaultYesNoModalOptions();\r\n }\r\n\r\n private defaultGasCycleCode(): string {\r\n if (_.isNil(this.model.gasDayCycleStatuses)) return GasCycle.TimelyCycleCode;\r\n\r\n return GasCycleLogic.defaultGasCycleCode(this.model.gasDayCycleStatuses, this.model.gasDayCycleStatuses.defaultEarliestNomWindowOpen(true)?.gasCycle);\r\n }\r\n\r\n private verifyForValidSelectedParameters(): void {\r\n // Reset Gas Cycle, if the current selected gas cycle does not exist in the new Gas Cycles\r\n this.model.searchParams.gasCycleCode = GasCycleLogic.verifySelectedGasCycleCode(this.model.gasDayCycleStatuses, this.model.gasCycles, this.model.searchParams.gasCycleCode);\r\n }\r\n\r\n private customerIsPipelineLegalSignorOrEnterprise(customerId: number) {\r\n return customerId === this.sessionService.getPipeline().legalSignorEnterpriseCid; // TBO\r\n }\r\n\r\n private queryTitleTransferMismatches(): Observable {\r\n // Bug 139026 - query title transfer mismatches only if the user is a nominations transactor or nominations analyst role\r\n // otherwise the user will retrieve an unauthorized error\r\n const nominationRoles = [\r\n `${this.getPipelineCode()}_${User.NominationsTransactorRole}`,\r\n `${this.getPipelineCode()}_${User.NominationAnalystRole}`\r\n ];\r\n if (!this.userService.hasRole(nominationRoles)) return of([]);\r\n\r\n const gasCycleCode = GasCycleLogic.buildGasCycleCodeForRequest(this.model.gasDayCycleStatuses, this.model.lastSearchParams.gasCycleCode);\r\n\r\n const titleTransferReportRequest = new TitleTransferReportRequest();\r\n titleTransferReportRequest.gasDay = this.model.searchParams.gasDay;\r\n titleTransferReportRequest.gasCycleCode = gasCycleCode;\r\n titleTransferReportRequest.enterpriseId = this.model.searchParams.customerId;\r\n titleTransferReportRequest.nomGroupId = this.model.searchParams.nomGroupId;\r\n titleTransferReportRequest.mismatchedOnly = true;\r\n\r\n return this.titleTransferReportService.queryTitleTransferReports(titleTransferReportRequest)\r\n .pipe(\r\n concatMap(dtos =>\r\n this.nominationLocationEnrichmentService.enrichArray(dtos, 'locationId', 'location')),\r\n tap(dtos => {\r\n const reportDtosFilteredByCounterPartyAndGasDay = CounterPartyTitleTransferMismatch.filter(dtos, this.model.searchParams.gasCycleCode);\r\n const counterPartyTitleTransferMismatches = CounterPartyTitleTransferMismatch.create(reportDtosFilteredByCounterPartyAndGasDay, this.model.searchParams.nomGroupId);\r\n this.model.titleTransferMismatches = counterPartyTitleTransferMismatches;\r\n })\r\n );\r\n }\r\n\r\n private getImbalanceTradeLocationBalances(customerId: number, nomGroupId: number, gasDay: GasDay, isAfterSaveOrSubmit: boolean): Observable {\r\n return this.imbalanceTradeRequestsService.queryImbalanceTradeLocationBalances(customerId, nomGroupId, gasDay)\r\n .pipe(\r\n tap(balances => {\r\n this.model.imbalanceTradeLocationBalances = balances;\r\n this.model.locationBalancesRequireRefresh = isAfterSaveOrSubmit;\r\n })\r\n );\r\n }\r\n\r\n\r\n private updateNominationTransactionTypes(nominationTransactionTypes: NominationTransactionType[]) {\r\n this.model.nominationTransactionTypes = nominationTransactionTypes;\r\n this.model.receiptHubTransactionTypes = _.filter(this.model.nominationTransactionTypes, (ntt) => {\r\n return ntt.isReceipt;\r\n });\r\n this.model.deliveryHubTransactionTypes = _.filter(this.model.nominationTransactionTypes, (ntt) => {\r\n return ntt.isDelivery;\r\n });\r\n // Adding the Transport types so that they are visible in the Hub Rec and Hub Del tab grids\r\n const transport = this.model.nominationTransactionTypes.find(t => t.code.includes('Transport'));\r\n this.model.receiptHubTransactionTypes.push(transport);\r\n this.model.deliveryHubTransactionTypes.push(transport);\r\n }\r\n}\r\n\r\nconst retry = (func, delay) => setTimeout(func, delay);\r\n","import {GasDayCycleStatus} from \"@model/gas-day-cycle-status\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {BaseViewModel} from \"@model/base-view-model\";\r\nimport {NominationPipelineGasDay} from \"@model/nomination-pipeline-gas-day\";\r\nimport {GasDayRangeParams} from \"@model/gas-day-range-params\";\r\n\r\nexport class GasDayMonitorModel extends BaseViewModel {\r\n pipelineGasDay: NominationPipelineGasDay;\r\n minGasDay: GasDay;\r\n maxGasDay: GasDay;\r\n\r\n searchParams: GasDayMonitorSearchParams = new GasDayMonitorSearchParams();\r\n lastSearchParams: GasDayMonitorSearchParams;\r\n gasDayCycleStatuses: Array;\r\n\r\n hasPendingActivities: boolean = false;\r\n}\r\n\r\nexport class AutoBalanceCustodyCheck {\r\n hasFailedRequests: boolean;\r\n}\r\n\r\nexport class GasDayMonitorSearchParams extends GasDayRangeParams\r\n{\r\n public includeNominationExceptions: boolean = true;\r\n public includePendingNominations: boolean = true;\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {Observable} from \"rxjs\";\r\n\r\nimport {NominationResourceService} from \"@shared/resources/nominations-resource.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\n\r\n@Injectable()\r\nexport class NominationWindowService {\r\n\r\n constructor(private nominationResource: NominationResourceService) {\r\n }\r\n\r\n public resetNominationWindow(status: string, gasDay: GasDay, gasCycleCode: string ): Observable {\r\n const body = {\r\n status: status,\r\n gasDay: gasDay.toString(),\r\n gasCycleCode: gasCycleCode\r\n };\r\n\r\n return this.nominationResource.postWithNoResponseBody('/nominationWindow/reset', body);\r\n }\r\n}\r\n","import {Component, EventEmitter, Output, ViewChild} from '@angular/core';\r\nimport {ModalComponent} from \"app/shared/components/modal/modal.component\";\r\nimport {NominationWindowService} from \"app/shared/services/nomination/nomination-window/nomination-window.service\";\r\nimport {GasDay} from \"app/shared/classes/gas-day\";\r\nimport {GasDayCycleStatus} from \"app/shared/classes/gas-day-cycle-status\";\r\nimport {SimpleGasDayCycleStatus} from \"app/shared/classes/simple-gas-day-cycle-status\";\r\n\r\nclass ResetStatus {\r\n id: string;\r\n name: string;\r\n\r\n constructor(id: string, name: string) {\r\n this.id = id;\r\n this.name = name;\r\n }\r\n}\r\n\r\nclass ResetCycleModel {\r\n title: string;\r\n status: string;\r\n statuses: ResetStatus[] = [{ id: \"NomWindowClosed\", name: \"Nomination Window Closed\"}];\r\n}\r\n\r\n@Component({\r\n selector: 'app-reset-cycle-dialog',\r\n templateUrl: './reset-cycle-dialog.component.html',\r\n styleUrls: ['./reset-cycle-dialog.component.css']\r\n})\r\nexport class ResetCycleDialogComponent {\r\n model: ResetCycleModel = new ResetCycleModel();\r\n\r\n gasDay: GasDay;\r\n gasCycleCode: string;\r\n\r\n @Output() okEvent = new EventEmitter();\r\n\r\n @ViewChild(ModalComponent) modal: ModalComponent;\r\n\r\n constructor(private nominationWindowService: NominationWindowService) {\r\n }\r\n\r\n onOk = (): void => {\r\n this.nominationWindowService.resetNominationWindow(this.model.status, this.gasDay, this.gasCycleCode).subscribe(() => {\r\n this.okEvent.emit();\r\n });\r\n };\r\n\r\n show(gasDayCycleStatus: GasDayCycleStatus): void {\r\n this.gasDay = gasDayCycleStatus.gasDay;\r\n this.gasCycleCode = gasDayCycleStatus.gasCycle.code;\r\n\r\n this.model.title = `Reset ${this.gasDay.toDisplayFormat()} ${this.gasCycleCode} Cycle`;\r\n this.model.statuses = this.getAvailableResetStatuses(gasDayCycleStatus);\r\n\r\n this.modal.show();\r\n }\r\n\r\n private getAvailableResetStatuses(gasDayCycleStatus: GasDayCycleStatus): ResetStatus[] {\r\n const resetStatuses: ResetStatus[] = [];\r\n\r\n resetStatuses.push(new ResetStatus('NomWindowClosed', SimpleGasDayCycleStatus.NomWindowClosedStatus)); // Always available\r\n\r\n if (gasDayCycleStatus.status === SimpleGasDayCycleStatus.Preliminary) {\r\n resetStatuses.push(new ResetStatus('Preliminary', 'Capacity Allocation Complete'));\r\n }\r\n\r\n return resetStatuses;\r\n }\r\n}\r\n","\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n","\r\nimport {map} from 'rxjs/operators';\r\nimport { Injectable } from '@angular/core';\r\nimport {NominationResourceService} from \"@shared/resources/nominations-resource.service\";\r\nimport {Observable} from \"rxjs\";\r\nimport {IGasDay} from \"@model/gas-day-month.interface\";\r\nimport {AutoBalanceLocationRequest} from \"./auto-balance-models\";\r\nimport {GCTSHttpParams} from \"app/shared/classes/gcts-http-params\";\r\nimport {AutoBalanceCustodyCheck} from \"app/gcts/nomination/gasday-monitor/gasday-monitor.model\";\r\n\r\n@Injectable()\r\nexport class AutoBalanceService {\r\n\r\n constructor(private nominationResource: NominationResourceService) {\r\n }\r\n\r\n autoBalanceCustodyCheck(gasDay: IGasDay, gasCycleCode: string): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('gasDay', gasDay.toString());\r\n params.set('gasCycleCode', gasCycleCode);\r\n\r\n return this.nominationResource.get('/autobalance/custodyCheck', true, params);\r\n }\r\n\r\n autoBalanceHub(gasDay: IGasDay, gasCycleCode: string): Observable {\r\n const body = {\r\n gasDay: gasDay.toString(),\r\n gasCycleCode: gasCycleCode\r\n };\r\n\r\n return this.nominationResource.postWithNoResponseBody('/autobalance/hub', body);\r\n }\r\n\r\n autoBalanceLocation(request: AutoBalanceLocationRequest): Observable {\r\n const body = {\r\n gasDay: request.gasDay.toString(),\r\n gasCycleCode: request.gasCycleCode,\r\n locationId: request.locationId\r\n };\r\n\r\n return this.nominationResource.postWithNoResponseBody('/autobalance/location', body);\r\n }\r\n\r\n autoBalanceAllLocations(gasDay: IGasDay, gasCycleCode: string): Observable {\r\n const body = {\r\n gasDay: gasDay.toString(),\r\n gasCycleCode: gasCycleCode\r\n };\r\n return this.nominationResource.postWithNoResponseBody('/autobalance/all', body);\r\n }\r\n\r\n autoBalanceCapacityAllocation(gasDay: IGasDay, gasCycleCode: string): Observable {\r\n const body = {\r\n gasDay: gasDay.toString(),\r\n gasCycleCode: gasCycleCode\r\n };\r\n\r\n return this.nominationResource.postWithNoResponseBody('/autobalance/capacityallocation', body).pipe(map(res => res));\r\n }\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {Observable} from \"rxjs\";\r\nimport {NominationResourceService} from \"@shared/resources/nominations-resource.service\";\r\nimport {IGasDay} from \"@model/gas-day-month.interface\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\n\r\n\r\n@Injectable()\r\nexport class PriorDayActivityService {\r\n\r\n constructor(private nominationResource: NominationResourceService) {\r\n }\r\n\r\n hasPendingActivities(gasDay: IGasDay): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('gasDay', gasDay.toString());\r\n\r\n return this.nominationResource.get('/activities/hasPending', true, params);\r\n }\r\n\r\n processActivities(): Observable {\r\n return this.nominationResource.postWithNoResponseBody('/activities', null, true);\r\n }\r\n}\r\n","import {Directive, Input, OnDestroy, OnInit, TemplateRef, ViewContainerRef} from \"@angular/core\";\r\nimport {Subscription} from \"rxjs\";\r\nimport {UserService} from \"../../services/webapp/user/user-service\";\r\nimport {CapabilitiesService} from \"../../services/webapp/capabilities/capabilities.service\";\r\nimport {SessionService} from \"../../services/webapp/session/session.service\";\r\nimport {User} from \"@model/user\";\r\nimport * as _ from \"lodash\";\r\n\r\n@Directive({\r\n selector: '[appInsecureItem]' // the opposite effect, show to show an insecure alternative\r\n})\r\nexport class InsecureItemDirective implements OnInit, OnDestroy {\r\n @Input('appInsecureItem') capabilities: string[];\r\n\r\n currentUserChangedSubscription: Subscription;\r\n\r\n constructor(private templateRef: TemplateRef,\r\n private viewContainer: ViewContainerRef,\r\n private userService: UserService,\r\n private capabilityService: CapabilitiesService,\r\n private sessionService: SessionService) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.currentUserChangedSubscription = this.userService.currentUserChangedEvent\r\n .subscribe(user => this.performSecurityCheck(user));\r\n this.sessionService.pipelineChangeEvent.subscribe(() => this.onPipelineChanged());\r\n\r\n // need to get the user as this items starts loading before we think it would.\r\n this.performSecurityCheck(this.userService.user);\r\n }\r\n\r\n ngOnDestroy() {\r\n if (!_.isNil(this.currentUserChangedSubscription)) {\r\n this.currentUserChangedSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n private onPipelineChanged() {\r\n this.userService.getUser().subscribe(user => {\r\n this.performSecurityCheck(user);\r\n });\r\n }\r\n\r\n private performSecurityCheck(user: User) {\r\n this.viewContainer.clear();\r\n // The _.isNil is really here for the Modal as it may not have capabilites set\r\n // and if no capabilities are set, it should be accessible\r\n const hasCapabilities = _.isNil(this.capabilities) ? true :\r\n this.capabilityService.hasCapabilities(this.capabilities, user, this.sessionService.getPipeline().code);\r\n if (!hasCapabilities) {\r\n this.viewContainer.createEmbeddedView(this.templateRef);\r\n }\r\n }\r\n}\r\n","\r\n\r\n
\r\n {{getTitle()}}\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n\r\n\r\n
\r\n
\r\n Validation Error\r\n From Gas Day cannot be later than To Gas Day.\r\n
\r\n\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n From Gas Day: {{model.lastSearchParams?.fromGasDay | gasDayFormat}}\r\n To Gas Day: {{model.lastSearchParams?.toGasDay | gasDayFormat}}\r\n Nomination Exceptions: {{model.lastSearchParams?.includeNominationExceptions | booleanAsYesNo}}\r\n Pending Nominations: {{model.lastSearchParams?.includePendingNominations | booleanAsYesNo}}\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{ model.lastSearchParams.fromGasDay | gasDayFormat }}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{ model.lastSearchParams.toGasDay | gasDayFormat }}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{ model.lastSearchParams.includeNominationExceptions | booleanAsYesNo }}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{ model.lastSearchParams.includePendingNominations | booleanAsYesNo }}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n Number of Gas Day Cycles found: {{model.gasDayCycleStatuses.length}}\r\n\r\n \r\n 0\">Export CSV\r\n \r\n
\r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n
\r\n {{event.data.gasCycle.name}} ({{event.data.gasCycle.gasFlowEffectiveTime}})\r\n
\r\n
\r\n {{!!event.data.isLaunched ? 'Yes' : 'No'}}\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {{event.displayValue}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n","import {forkJoin, of, Observable} from 'rxjs';\r\n\r\nimport {tap, concatMap} from 'rxjs/operators';\r\nimport {Component, OnInit, Renderer2, ViewChild} from '@angular/core';\r\nimport {AppService} from '@shared/services/webapp/app/app.service';\r\nimport {GasDay} from '@model/gas-day';\r\nimport {\r\n GasCycleService, GasDayCycleLocationExceptionCount,\r\n GasDayCycleStatusRequest,\r\n} from '@shared/services/nomination/gas-cycle/gas-cycle.service';\r\nimport {ParamValidator} from '@model/validators/param-validator';\r\nimport * as _ from 'lodash';\r\nimport {ActivatedRoute, Params, Router} from '@angular/router';\r\nimport {FileService} from '@shared/services/webapp/file-service/file.service';\r\nimport {NominationSystemService} from '@shared/services/nomination/nomination-system/nomination-system.service';\r\nimport {GasDayCycleStatus} from \"@model/gas-day-cycle-status\";\r\nimport {AutoBalanceService} from \"@shared/services/nomination/auto-balance/auto-balance.service\";\r\nimport {\r\n YesNoCancelModalService\r\n} from \"@shared/services/webapp/yes-no-cancel-modal/yes-no-cancel-modal.service\";\r\nimport {GasDayMonitorModel} from \"./gasday-monitor.model\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {AlertService} from \"app/shared/services/webapp/alert/alert.service\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {YesNoModalOptions} from \"@shared/services/webapp/modal-options/yes-no-modal-options\";\r\nimport {SelectedModalOption} from \"@shared/services/webapp/modal-options/selected-modal-option\";\r\nimport {ResetCycleDialogComponent} from \"./reset-cycle-dialog.component\";\r\nimport {AutoBalanceCustodyCheck} from \"app/gcts/nomination/gasday-monitor/gasday-monitor.model\";\r\nimport {JobService} from \"app/shared/services/job-scheduling/jobs/job.service\";\r\nimport {GctsProcess} from \"app/shared/classes/gcts-process\";\r\nimport {PriorDayActivityService} from \"app/shared/services/nomination/prior-day-activity/prior-day-activity.service\";\r\nimport {PipelineSettingMapService} from \"@shared/services/nomination/pipeline-settings-map/pipeline-setting-map.service\";\r\nimport {\r\n ExceptionCount,\r\n NominationRequestService\r\n} from \"@shared/services/nomination/nomination-request/nomination-request.service\";\r\nimport {map} from \"rxjs/operators\";\r\nimport {GasCycle} from \"@model/gas-cycle\";\r\n\r\n@Component({\r\n selector: 'app-gasday-monitor',\r\n templateUrl: './gasday-monitor.component.html',\r\n styleUrls: ['./gasday-monitor.component.css']\r\n})\r\n\r\nexport class GasDayMonitorComponent extends BaseSearchComponent implements OnInit {\r\n // tslint:disable:variable-name\r\n static FromGasDayParam: string = 'fromGasDay';\r\n static ToGasDayParam: string = 'toGasDay';\r\n static IncludeNominationExceptions: string = 'includeNominationExceptions';\r\n static IncludePendingNominations: string = 'includePendingNominations';\r\n // tslint:enable:variable-name\r\n\r\n model: GasDayMonitorModel = new GasDayMonitorModel();\r\n canHavePendingNominations: boolean = false;\r\n canSyncData: boolean = false;\r\n @ViewChild(DxDataGridComponent) gasDayCycleStatusesDataGrid: DxDataGridComponent;\r\n @ViewChild(ResetCycleDialogComponent) resetCycleModal: ResetCycleDialogComponent;\r\n\r\n\r\n constructor(protected appService: AppService,\r\n protected activatedRoute: ActivatedRoute,\r\n protected router: Router,\r\n protected alertService: AlertService,\r\n private gasCycleService: GasCycleService,\r\n private nominationRequestService: NominationRequestService,\r\n private fileService: FileService,\r\n private nominationSystemService: NominationSystemService,\r\n private autoBalanceService: AutoBalanceService,\r\n private modalService: YesNoCancelModalService,\r\n private pipelineSettingsMapService: PipelineSettingMapService,\r\n private priorDayActivityService: PriorDayActivityService,\r\n private renderer: Renderer2,\r\n private jobService: JobService) {\r\n super('Gas Day Monitor', appService, activatedRoute, router, alertService);\r\n }\r\n\r\n\r\n public ngOnInit(): void {\r\n this.canSyncData = this.pipelineSettingsMapService.getPipelineSetting().canSyncData;\r\n this.canHavePendingNominations = this.pipelineSettingsMapService.getPipelineSetting().canHavePendingNominations;\r\n\r\n super.ngOnInit();\r\n }\r\n\r\n /**\r\n * Public Methods\r\n */\r\n\r\n public isValidDates = (): boolean => {\r\n if (this.model.searchParams.toGasDay == null || this.model.searchParams.fromGasDay == null) { return true; }\r\n\r\n return this.model.searchParams.toGasDay >= this.model.searchParams.fromGasDay;\r\n };\r\n\r\n hasPendingActivities = (): boolean => {\r\n return this.model.hasPendingActivities;\r\n };\r\n\r\n public exportCsvClicked(): void {\r\n const searchResults = _.map(this.model.gasDayCycleStatuses, x => _.extend({}, x, {\r\n gasDay: x.gasDay.toCsvFormat(),\r\n cycle: x.gasCycle.displayValue,\r\n status: x.status,\r\n capacityAllocationExceptions: x.capacityAllocationExceptions,\r\n locationExceptions: x.locationExceptions}));\r\n\r\n const filename = this.getTitle() + ' ' + this.model.lastSearchParams.fromGasDay.toDisplayFormat() + ' to ' + this.model.lastSearchParams.toGasDay.toDisplayFormat() + '.csv';\r\n const headers = ['Gas Day', 'Cycle', 'Status', 'Capacity Allocation Exceptions', 'Location Exceptions'];\r\n const columns = ['gasDay', 'cycle', 'status', 'capacityAllocationExceptions', 'locationExceptions'];\r\n\r\n this.fileService.downloadCsvFile(filename, searchResults, headers, columns);\r\n }\r\n\r\n public statusClicked(event): void {\r\n this.custodyCheckForFailed(event).subscribe(result => {\r\n const confirmResultTrue = () => {this.submitHubBalancing(event); };\r\n const gasDayCycleStatus = event.data;\r\n let message = this.appendDateAndCycleToMessage('Would you like to initiate Hub Balancing for', gasDayCycleStatus);\r\n if (result.hasFailedRequests) {\r\n message = `Warning: TCPL On or Off system failed processing on GLC. \\n\\n` + message;\r\n }\r\n const yesNoModalOptions = new YesNoModalOptions('Hub Balancing', message, 'Cancel', 'OK');\r\n this.modalService.show(yesNoModalOptions).subscribe((selectedModalOption: SelectedModalOption) => {\r\n if (selectedModalOption === SelectedModalOption.Yes) {\r\n confirmResultTrue();\r\n }\r\n });\r\n });\r\n }\r\n\r\n public openNomWindow(event): void {\r\n const gasDayCycleStatus = event.data;\r\n const message = this.appendDateAndCycleToMessage('Would you like to keep the Nom Window Open for', gasDayCycleStatus);\r\n const yesNoModalOptions = new YesNoModalOptions('Open Nom Window', message, 'Cancel', 'OK');\r\n this.modalService.show(yesNoModalOptions).subscribe((selectedModalOption: SelectedModalOption) => {\r\n if (selectedModalOption === SelectedModalOption.Yes) {\r\n const gasDay = gasDayCycleStatus.gasDay;\r\n const gasCycleCode = gasDayCycleStatus.gasCycle.code;\r\n\r\n this.gasCycleService.openGasCycleStatus(gasDay, gasCycleCode).pipe(concatMap(() => this.performSearch())).subscribe(() => {\r\n });\r\n }\r\n });\r\n }\r\n\r\n public closeNomWindow(event): void {\r\n const gasDayCycleStatus = event.data;\r\n const message = this.appendDateAndCycleToMessage('Would you like to close the Nom Window for', gasDayCycleStatus);\r\n const yesNoModalOptions = new YesNoModalOptions('Close Nom Window', message, 'Cancel', 'OK');\r\n this.modalService.show(yesNoModalOptions).subscribe((selectedModalOption: SelectedModalOption) => {\r\n if (selectedModalOption === SelectedModalOption.Yes) {\r\n const gasDay = gasDayCycleStatus.gasDay;\r\n const gasCycleCode = gasDayCycleStatus.gasCycle.code;\r\n\r\n this.gasCycleService.closeGasCycleStatus(gasDay, gasCycleCode).pipe(concatMap(() => this.performSearch())).subscribe(() => {\r\n });\r\n }\r\n });\r\n }\r\n\r\n public scheduleGasDayClicked(event): void {\r\n const confirmResultTrue = () => {this.scheduleGasDayCycle(event); };\r\n const gasDayCycleStatus = event.data;\r\n const message = this.appendDateAndCycleToMessage('Would you like to Schedule the', gasDayCycleStatus);\r\n const yesNoModalOptions = new YesNoModalOptions('Scheduling', message, 'Cancel', 'OK');\r\n this.modalService.show(yesNoModalOptions).subscribe((selectedModalOption: SelectedModalOption) => {\r\n if (selectedModalOption === SelectedModalOption.Yes) {\r\n confirmResultTrue();\r\n }\r\n });\r\n }\r\n\r\n public unscheduleGasDayClicked(event): void {\r\n const confirmResultTrue = () => {this.unscheduleGasDay(event); };\r\n const gasDayCycleStatus = event.data;\r\n const message = this.appendDateAndCycleToMessage('Would you like to Unschedule the', gasDayCycleStatus);\r\n const yesNoModalOptions = new YesNoModalOptions('Unscheduling', message, 'Cancel', 'OK');\r\n this.modalService.show(yesNoModalOptions).subscribe((selectedModalOption: SelectedModalOption) => {\r\n if (selectedModalOption === SelectedModalOption.Yes) {\r\n confirmResultTrue();\r\n }\r\n });\r\n }\r\n\r\n public formatGasDay(cellInfo: any): string {\r\n const gasDayDate = cellInfo.value;\r\n return GasDay.from(gasDayDate).toDisplayFormat();\r\n }\r\n\r\n public resetNomWindowClicked(event): void {\r\n const gasDayCycleStatus = event.data;\r\n\r\n this.resetCycleModal.show(gasDayCycleStatus);\r\n }\r\n\r\n public okResetEvent(): void {\r\n this.performSearch().subscribe(() => {});\r\n }\r\n /**\r\n * Protected Methods\r\n */\r\n\r\n protected loadInitialResources(): Observable {\r\n return this.nominationSystemService.pipelineGasDay().pipe(tap((pipelineGasDay) => {\r\n this.model.pipelineGasDay = pipelineGasDay;\r\n this.model.minGasDay = pipelineGasDay.minGasDayForCycleStatus;\r\n this.model.maxGasDay = pipelineGasDay.maxGasDayForCycleStatus;\r\n }));\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return this.gasDayRangeParamValidator().isValid(params);\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.setSearchParamsGasDayRange(this.model.pipelineGasDay.allowableGasDay.previous(), this.model.pipelineGasDay.allowableGasDay.next());\r\n this.model.searchParams.includeNominationExceptions = true;\r\n this.model.searchParams.includePendingNominations = this.canHavePendingNominations;\r\n }\r\n\r\n protected resetCompleted(): void {\r\n // This clears the grid.\r\n this.model.gasDayCycleStatuses = null;\r\n }\r\n\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n const fromGasDay = typedParams.asGasDay(GasDayMonitorComponent.FromGasDayParam);\r\n const toGasDay = typedParams.asGasDay(GasDayMonitorComponent.ToGasDayParam);\r\n this.setSearchParamsGasDayRange(fromGasDay, toGasDay);\r\n\r\n this.model.searchParams.includeNominationExceptions = typedParams.asNullableBoolean(GasDayMonitorComponent.IncludeNominationExceptions) ?? true;\r\n if (this.canHavePendingNominations) {\r\n this.model.searchParams.includePendingNominations = typedParams.asNullableBoolean(GasDayMonitorComponent.IncludePendingNominations) ?? true;\r\n } else {\r\n this.model.searchParams.includePendingNominations = false;\r\n }\r\n }\r\n\r\n protected canCycleHavePendingNominations(gasCycleCode: string): boolean{\r\n return GasCycle.isStsCycle(gasCycleCode);\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n return of(null); // No Page Resources\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n\r\n // Create an Observable to get Nomination Exceptions by GasDay. Helps with performance.\r\n const nominationExceptions$: Observable[] = [];\r\n const pendingStsNominations$: Observable[] = [];\r\n\r\n let gasDay = this.model.searchParams.fromGasDay;\r\n while (gasDay <= this.model.searchParams.toGasDay) {\r\n nominationExceptions$.push(this.model.searchParams.includeNominationExceptions\r\n ? this.nominationRequestService.queryNominationExceptionCounts(gasDay, gasDay)\r\n : of([]));\r\n pendingStsNominations$.push(\r\n this.canHavePendingNominations && this.model.searchParams.includePendingNominations\r\n ? this.nominationRequestService.queryPendingStsNominationCounts(gasDay, gasDay)\r\n : of([]));\r\n gasDay = gasDay.next();\r\n }\r\n\r\n const serviceCalls: Observable[] = [\r\n this.gasCycleService.queryAllGasCycleStatuses(this.model.searchParams),\r\n this.priorDayActivityService.hasPendingActivities(this.model.searchParams.fromGasDay),\r\n forkJoin(nominationExceptions$).pipe(map(res => [].concat(...res))),\r\n this.gasCycleService.getLocationGasCycleStatusExceptionCounts(this.model.searchParams.fromGasDay, this.model.searchParams.toGasDay),\r\n this.gasCycleService.getTransactionCountsAwaitingCapacityAllocation(this.model.searchParams.fromGasDay, this.model.searchParams.toGasDay),\r\n forkJoin(pendingStsNominations$).pipe(map(res => [].concat(...res)))\r\n ];\r\n\r\n return forkJoin(serviceCalls).pipe(\r\n tap(\r\n ([gasDayCycleStatuses, hasPendingActivities, nominationExceptionCount, locationExceptionCount, awaitingCapacityAllocationCount, pendingStsNominationCount]:\r\n [GasDayCycleStatus[], boolean, ExceptionCount[], GasDayCycleLocationExceptionCount[], ExceptionCount[], ExceptionCount[]]) => {\r\n\r\n this.model.hasPendingActivities = hasPendingActivities;\r\n\r\n _.forEach(gasDayCycleStatuses, status => {\r\n // populate nomination Exceptions\r\n if (this.model.lastSearchParams.includeNominationExceptions) {\r\n const matchingNomException = _.find(nominationExceptionCount, nomException =>\r\n status.gasDay.isEqual(nomException.gasDayCycle.gasDay) && status.gasCycle.code === nomException.gasDayCycle.gasCycleCode\r\n );\r\n if (matchingNomException !== undefined) {\r\n status.nominationExceptions = matchingNomException.count;\r\n }\r\n }\r\n\r\n // populate location Exceptions\r\n const matchingLocationException = _.find(locationExceptionCount, locationException =>\r\n status.gasDay.isEqual(locationException.gasDayCycle.gasDay) && status.gasCycle.code === locationException.gasDayCycle.gasCycleCode\r\n );\r\n if (matchingLocationException !== undefined) {\r\n status.locationExceptions = matchingLocationException.count;\r\n status.locationExceptionsHaveRedVariance = matchingLocationException.hasRedVariance;\r\n }\r\n\r\n // populate awaiting capacity allocation counts\r\n const matchingAwaitingCapacityAllocationCount = _.find(awaitingCapacityAllocationCount, awaitingCapacityAllocation =>\r\n status.gasDay.isEqual(awaitingCapacityAllocation.gasDayCycle.gasDay) && status.gasCycle.code === awaitingCapacityAllocation.gasDayCycle.gasCycleCode\r\n );\r\n if (matchingAwaitingCapacityAllocationCount !== undefined) {\r\n status.capacityAllocationExceptions = matchingAwaitingCapacityAllocationCount.count;\r\n }\r\n\r\n // populate pending STS Nomination counts - there may not be any for a cycle.\r\n if (this.model.lastSearchParams.includePendingNominations) {\r\n const matchingPendingStsNomsCount = _.find(pendingStsNominationCount, pending =>\r\n status.gasDay.isEqual(pending.gasDayCycle.gasDay) && status.gasCycle.code === pending.gasDayCycle.gasCycleCode\r\n );\r\n if (matchingPendingStsNomsCount !== undefined) {\r\n status.pendingNominations = matchingPendingStsNomsCount.count;\r\n }\r\n }\r\n\r\n });\r\n\r\n this.model.gasDayCycleStatuses = gasDayCycleStatuses;\r\n\r\n }));\r\n }\r\n\r\n protected buildQueryParams(): GasDayCycleStatusRequest {\r\n const queryParams: any = {};\r\n queryParams[GasDayMonitorComponent.ToGasDayParam] = this.model.searchParams.toGasDay;\r\n queryParams[GasDayMonitorComponent.FromGasDayParam] = this.model.searchParams.fromGasDay;\r\n queryParams[GasDayMonitorComponent.IncludeNominationExceptions] = this.model.searchParams.includeNominationExceptions;\r\n if (this.canHavePendingNominations) {\r\n queryParams[GasDayMonitorComponent.IncludePendingNominations] = this.model.searchParams.includePendingNominations;\r\n }\r\n return queryParams;\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n if (this.gasDayCycleStatusesDataGrid) {\r\n this.gasDayCycleStatusesDataGrid.instance.clearSorting();\r\n this.gasDayCycleStatusesDataGrid.instance.columnOption('Gas Day', {sortOrder: 'asc', sortIndex: 0});\r\n this.gasDayCycleStatusesDataGrid.instance.columnOption('Cycle', {sortOrder: 'asc', sortIndex: 1});\r\n }\r\n }\r\n\r\n syncDataClicked(): void {\r\n this.jobService.submitJob(GctsProcess.Contracts.name, 'SyncDataJob')\r\n .subscribe(() => {\r\n const message = 'The job Sync Data has been successfully submitted.';\r\n this.alertService.addSuccessMessage('Submit Successful', message);\r\n });\r\n }\r\n\r\n updateBalancesClicked(): void {\r\n this.priorDayActivityService.processActivities()\r\n .subscribe(() => {\r\n this.model.hasPendingActivities = false;\r\n const message = 'The job Process Account Balance Activities has been successfully submitted.';\r\n this.alertService.addSuccessMessage('Submit Successful', message);\r\n });\r\n }\r\n\r\n /**\r\n * Private Methods\r\n */\r\n private appendDateAndCycleToMessage(message: string, gasDayCycleStatus: GasDayCycleStatus): string {\r\n return `${message} ${gasDayCycleStatus.gasDay.toTextDisplayFormat()} ${gasDayCycleStatus.gasCycle.name} cycle?`;\r\n }\r\n\r\n private setSearchParamsGasDayRange(fromGasDay: GasDay, toGasDay: GasDay) {\r\n const isValidFromGasDay = fromGasDay >= this.model.minGasDay;\r\n const isValidToGasDay = isValidFromGasDay &&\r\n toGasDay <= this.model.maxGasDay &&\r\n fromGasDay <= toGasDay;\r\n const isValidGasDayRange = isValidFromGasDay && isValidToGasDay;\r\n\r\n this.model.searchParams.fromGasDay = isValidGasDayRange ? fromGasDay : this.model.minGasDay;\r\n this.model.searchParams.toGasDay = isValidGasDayRange ? toGasDay : this.model.minGasDay.next();\r\n // to prevent the search params setFromGasDay method setting the toGasDay beyond max gas day\r\n this.model.searchParams.maxGasDay = this.model.maxGasDay;\r\n }\r\n\r\n private gasDayRangeParamValidator(): ParamValidator {\r\n const queryParams = ParamValidator.Standard();\r\n\r\n queryParams.isGasDay(GasDayMonitorComponent.FromGasDayParam);\r\n queryParams.isGasDay(GasDayMonitorComponent.ToGasDayParam);\r\n queryParams.isBoolean(GasDayMonitorComponent.IncludeNominationExceptions);\r\n if (this.canHavePendingNominations) {\r\n queryParams.isBoolean(GasDayMonitorComponent.IncludePendingNominations);\r\n }\r\n return queryParams;\r\n }\r\n\r\n private custodyCheckForFailed(event): Observable {\r\n const gasDayCycleStatus = event.data;\r\n const gasDay = gasDayCycleStatus.gasDay;\r\n const gasCycleCode = gasDayCycleStatus.gasCycle.code;\r\n\r\n return this.autoBalanceService.autoBalanceCustodyCheck(gasDay, gasCycleCode);\r\n }\r\n\r\n private submitHubBalancing(event): void {\r\n const gasDayCycleStatus = event.data;\r\n const gasDay = gasDayCycleStatus.gasDay;\r\n const gasCycleCode = gasDayCycleStatus.gasCycle.code;\r\n\r\n this.autoBalanceService.autoBalanceHub(gasDay, gasCycleCode).pipe(concatMap(() => this.performSearch())).subscribe(() => {});\r\n }\r\n\r\n private scheduleGasDayCycle(event): void {\r\n const gasDayCycleStatus = event.data;\r\n const gasDay = gasDayCycleStatus.gasDay;\r\n const gasCycleCode = gasDayCycleStatus.gasCycle.code;\r\n\r\n this.gasCycleService.scheduleGasDay(gasDay, gasCycleCode).pipe(concatMap(() => this.performSearch())).subscribe(() => {});\r\n }\r\n\r\n private unscheduleGasDay(event): void {\r\n const gasDayCycleStatus = event.data;\r\n const gasDay = gasDayCycleStatus.gasDay;\r\n const gasCycleCode = gasDayCycleStatus.gasCycle.code;\r\n\r\n this.gasCycleService.unscheduleGasDay(gasDay, gasCycleCode).pipe(concatMap(() => this.performSearch())).subscribe(() => {});\r\n }\r\n\r\n /**\r\n * DxDataGrid Methods\r\n */\r\n\r\n onCellPrepared = (e) => {\r\n if (e.rowType === 'data') {\r\n if (e.column.dataField === 'locationExceptions') {\r\n const data = e.data as GasDayCycleStatus;\r\n if (data.locationExceptionsHaveRedVariance) {\r\n this.renderer.addClass(e.cellElement, 'red');\r\n }\r\n }\r\n }\r\n };\r\n}\r\n","import {EventEmitter} from \"@angular/core\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {IUndoRecord} from \"../services/nomination/nomination-request/nomination-request.interface\";\r\nimport {GasDay} from \"@shared/classes/gas-day\";\r\n\r\nexport interface CustomDataGridBehaviour {\r\n onEditorPreparing(e: any, dataGrid: DxDataGridComponent, isCellEditable: (row, dataField: string) => boolean);\r\n onKeyDown(e: any, dataGrid: DxDataGridComponent);\r\n}\r\n\r\nexport class UndoRowArgs {\r\n constructor(public key: number, public undos: Array) {\r\n }\r\n}\r\n\r\nexport class BaseDatagridHandler implements CustomDataGridBehaviour {\r\n public static TabMode = {\r\n Horizontal: 0,\r\n Vertical: 1\r\n };\r\n private static processingKey = false;\r\n protected currentRowKey: number;\r\n protected undos: Array;\r\n\r\n // Previous and next control control which controls receive focus when the\r\n // user tabs out of the grid. They can be any object that has a focus() method.\r\n //\r\n // blurCallback is called when focus is set to previousControl or nextControl;\r\n // i.e. when the grid loses focus.\r\n constructor(protected undoRow: EventEmitter,\r\n private previousControl = null,\r\n private nextControl = null,\r\n private tabMode: number = BaseDatagridHandler.TabMode.Horizontal,\r\n private blurCallback: (control) => void = null) {\r\n }\r\n\r\n public onEditorPreparing(args: any, dataGrid: DxDataGridComponent, isCellEditable: (row, dataField: string) => boolean = null) {\r\n // Attach change event to key up - See https://www.devexpress.com/Support/Center/Question/Details/T568443/dxdatagrid-how-to-navigate-to-the-next-row-on-enter-and-keep-cell-changes\r\n if (args.parentType === 'dataRow') {\r\n // The following line originally included the \"input\" event, but with the\r\n // most recent Devextreme updated it's causing the text box to lose focus\r\n // after each keypress.\r\n args.editorOptions.valueChangeEvent = 'change blur';\r\n\r\n args.editorOptions.onKeyDown = (event) => this.onEditorKeyDown(args, event, dataGrid, isCellEditable);\r\n }\r\n }\r\n\r\n onEditorKeyDown = (args, e, dataGrid, isCellEditable: (row, dataField: string) => boolean = null) => {\r\n if (e.component.NAME === \"dxSelectBox\") {\r\n return;\r\n }\r\n const key = e.event.key;\r\n if (key === \"ArrowUp\" || key === \"Up\" || key === \"ArrowDown\" || key === \"Down\" || key === \"Tab\" || key === \"Enter\") {\r\n this.breakEvent(e); // nobody else can handle these keys\r\n\r\n /*\r\n * datagrid does not check for changes until focus is lost\r\n * this causes some issues for us in special cases\r\n * we need to manually save changes to the datagrid\r\n */\r\n args.dataType === \"date\" ? this.updateDateCellValue(args, e) : this.updateDefaultCellValue(args, e);\r\n dataGrid.instance.saveEditData().then(() => {\r\n // need to set timeout so datagrid updates finish before we continue to process key press\r\n setTimeout(() => {\r\n if (!BaseDatagridHandler.processingKey) { // we only handle one at a time\r\n BaseDatagridHandler.processingKey = true;\r\n try {\r\n const focusedCellPosition = this.getCurrentCell(dataGrid);\r\n\r\n switch (key) {\r\n // case \"Enter\":\r\n case \"ArrowDown\":\r\n case \"Down\":\r\n const rowCount = Array.isArray(dataGrid.dataSource) ? dataGrid.dataSource.length : dataGrid.dataSource.totalCount();\r\n this.moveDown(focusedCellPosition.rowIndex, focusedCellPosition.columnIndex, dataGrid, isCellEditable);\r\n break;\r\n case \"ArrowUp\":\r\n case \"Up\":\r\n this.moveUp(focusedCellPosition.rowIndex, focusedCellPosition.columnIndex, dataGrid, isCellEditable);\r\n break;\r\n case \"Tab\":\r\n if (!e.event.shiftKey) {\r\n this.moveTab(focusedCellPosition.rowIndex, focusedCellPosition.columnIndex, dataGrid, isCellEditable);\r\n } else {\r\n this.moveShiftTab(focusedCellPosition.rowIndex, focusedCellPosition.columnIndex, dataGrid, isCellEditable);\r\n }\r\n break;\r\n case \"Enter\":\r\n this.moveDown(focusedCellPosition.rowIndex, focusedCellPosition.columnIndex, dataGrid, isCellEditable);\r\n break;\r\n }\r\n } finally {\r\n BaseDatagridHandler.processingKey = false;\r\n }\r\n }\r\n });\r\n });\r\n }\r\n };\r\n\r\n private updateDateCellValue(args, e) {\r\n const oldGasDay = GasDay.from(args.row.data[args.dataField]);\r\n const newGasDay = GasDay.from(e.event.target.value);\r\n\r\n if (!oldGasDay.isEqual(newGasDay)) {\r\n args.setValue(e.event.target.value);\r\n }\r\n }\r\n\r\n private updateDefaultCellValue(args, e) {\r\n if (!(e.event.target.value == args.value)) { // use double-equals to compare string with integer\r\n args.setValue(e.event.target.value);\r\n }\r\n }\r\n\r\n public onKeyDown(e: any, dataGrid: DxDataGridComponent, isCellEditable: (row, dataField: string) => boolean = null) {\r\n if (!BaseDatagridHandler.processingKey) {\r\n BaseDatagridHandler.processingKey = true;\r\n try {\r\n // Process the keystroke, and then see if the row has changed.\r\n const previousRowIndex = this.getPreviousRowIndex(dataGrid);\r\n const focusedCellPosition = this.getCurrentCell(dataGrid);\r\n const key = e.event.key;\r\n\r\n switch (key) {\r\n case \"F2\":\r\n // Put the cell in edit mode.\r\n window.setTimeout(() => {\r\n dataGrid.instance.editCell(focusedCellPosition.rowIndex, focusedCellPosition.columnIndex);\r\n });\r\n window.setTimeout(() => {\r\n if (focusedCellPosition.rowIndex !== previousRowIndex) {\r\n this.currentRowKey = dataGrid.instance.getKeyByRowIndex(focusedCellPosition.rowIndex);\r\n dataGrid.instance.repaintRows([previousRowIndex, focusedCellPosition.rowIndex]);\r\n }\r\n });\r\n break;\r\n case \"Escape\":\r\n if (!this.dataGridIsInEditMode(e)) {\r\n return;\r\n }\r\n this.breakEvent(e);\r\n break;\r\n case \"Tab\": // if we got here then there is no editor intercepting the key, so not in edit mode.. put us in edit mode\r\n if (!e.event.shiftKey) {\r\n this.moveTab(focusedCellPosition.rowIndex, focusedCellPosition.columnIndex, dataGrid, isCellEditable);\r\n } else {\r\n this.moveShiftTab(focusedCellPosition.rowIndex, focusedCellPosition.columnIndex, dataGrid, isCellEditable);\r\n }\r\n this.breakEvent(e);\r\n break;\r\n }\r\n\r\n } finally {\r\n BaseDatagridHandler.processingKey = false;\r\n\r\n }\r\n }\r\n }\r\n\r\n moveUp = (rowIndex, columnIndex, dataGrid, isCellEditable: (row, dataField: string) => boolean = null ) => {\r\n const nextRow = rowIndex - 1;\r\n if (nextRow < 0) {\r\n return;\r\n }\r\n\r\n if (isCellEditable === null) {\r\n this.focusOnCell(nextRow, columnIndex, dataGrid);\r\n }\r\n const element = dataGrid.instance.getCellElement(nextRow, columnIndex);\r\n if (!!element) {\r\n const couldEdit = this.couldEdit(dataGrid, element, nextRow, isCellEditable);\r\n if (couldEdit) {\r\n this.focusOnCell(nextRow, columnIndex, dataGrid);\r\n return;\r\n }\r\n }\r\n this.moveUp(nextRow, columnIndex, dataGrid, isCellEditable);\r\n };\r\n\r\n moveShiftTab = (rowIndex, columnIndex, dataGrid, isCellEditable: (row, dataField: string) => boolean = null ) => {\r\n if (this.tabMode === BaseDatagridHandler.TabMode.Horizontal) {\r\n return this.moveShiftTabHorizontal(rowIndex, columnIndex, dataGrid, isCellEditable);\r\n } else {\r\n return this.moveShiftTabVertical(rowIndex, columnIndex, dataGrid, isCellEditable);\r\n }\r\n };\r\n\r\n moveShiftTabHorizontal = (rowIndex, columnIndex, dataGrid, isCellEditable: (row, dataField: string) => boolean = null ) => {\r\n let nextRow = rowIndex;\r\n let nextCol = columnIndex - 1;\r\n if (nextCol < 0) {\r\n nextRow = rowIndex - 1;\r\n if ( nextRow < 0) {\r\n if (this.previousControl) {\r\n if (dataGrid.instance.hasEditData()) {\r\n dataGrid.instance.saveEditData();\r\n }\r\n try {\r\n this.previousControl.focus();\r\n if (this.blurCallback) {\r\n this.blurCallback(this.previousControl);\r\n }\r\n } catch (e) {\r\n }\r\n }\r\n return;\r\n }\r\n nextCol = dataGrid.instance.getVisibleColumns().length;\r\n this.moveShiftTab(nextRow, nextCol, dataGrid, isCellEditable);\r\n return;\r\n }\r\n\r\n if (isCellEditable == null) {\r\n this.focusOnCell(nextRow, nextCol, dataGrid);\r\n }\r\n const element = dataGrid.instance.getCellElement(nextRow, nextCol);\r\n if (!!element) {\r\n const couldEdit = this.couldEdit(dataGrid, element, nextRow, isCellEditable);\r\n if (couldEdit) {\r\n this.focusOnCell(nextRow, nextCol, dataGrid);\r\n return;\r\n }\r\n }\r\n this.moveShiftTab(nextRow, nextCol, dataGrid, isCellEditable);\r\n\r\n };\r\n\r\n moveShiftTabVertical = (rowIndex, columnIndex, dataGrid, isCellEditable: (row, dataField: string) => boolean = null ) => {\r\n let nextRow = rowIndex - 1;\r\n let nextCol = columnIndex;\r\n if (nextRow < 0) {\r\n nextCol = columnIndex - 1;\r\n if ( nextCol < 0) {\r\n if (this.previousControl) {\r\n if (dataGrid.instance.hasEditData()) {\r\n dataGrid.instance.saveEditData();\r\n }\r\n try {\r\n this.previousControl.focus();\r\n if (this.blurCallback) {\r\n this.blurCallback(this.previousControl);\r\n }\r\n } catch (e) {\r\n }\r\n }\r\n return;\r\n }\r\n nextRow = this.getNumberOfRows(dataGrid);\r\n this.moveShiftTab(nextRow, nextCol, dataGrid, isCellEditable);\r\n return;\r\n }\r\n\r\n if (isCellEditable == null) {\r\n this.focusOnCell(nextRow, nextCol, dataGrid);\r\n }\r\n const element = dataGrid.instance.getCellElement(nextRow, nextCol);\r\n if (!!element) {\r\n const couldEdit = this.couldEdit(dataGrid, element, nextRow, isCellEditable);\r\n if (couldEdit) {\r\n this.focusOnCell(nextRow, nextCol, dataGrid);\r\n return;\r\n }\r\n }\r\n this.moveShiftTab(nextRow, nextCol, dataGrid, isCellEditable);\r\n\r\n };\r\n\r\n moveTab = (rowIndex, columnIndex, dataGrid, isCellEditable: (row, dataField: string) => boolean = null) => {\r\n if (this.tabMode === BaseDatagridHandler.TabMode.Horizontal) {\r\n return this.moveTabHorizontal(rowIndex, columnIndex, dataGrid, isCellEditable);\r\n } else {\r\n return this.moveTabVertical(rowIndex, columnIndex, dataGrid, isCellEditable);\r\n }\r\n };\r\n\r\n moveTabHorizontal = (rowIndex, columnIndex, dataGrid, isCellEditable: (row, dataField: string) => boolean = null) => {\r\n let nextRow = rowIndex;\r\n let nextCol = columnIndex + 1;\r\n\r\n\r\n if (nextCol > dataGrid.instance.getVisibleColumns().length) {\r\n const rowCount = this.getNumberOfRows(dataGrid);\r\n nextRow = rowIndex + 1;\r\n if (nextRow >= rowCount) {\r\n // bug/132937 - instead of moving to another control on the page, move back to the next editable cell column on the grid\r\n // so that validation for the cell is preserved.\r\n this.moveTab(0, 0, dataGrid, isCellEditable);\r\n return;\r\n }\r\n nextCol = -1; // before the element 0\r\n this.moveTab(nextRow, nextCol, dataGrid, isCellEditable);\r\n return;\r\n }\r\n\r\n if (isCellEditable == null) {\r\n this.focusOnCell(nextRow, nextCol, dataGrid);\r\n }\r\n const element = dataGrid.instance.getCellElement(nextRow, nextCol);\r\n if (!!element) {\r\n const couldEdit = this.couldEdit(dataGrid, element, nextRow, isCellEditable);\r\n if (couldEdit) {\r\n this.focusOnCell(nextRow, nextCol, dataGrid);\r\n return;\r\n }\r\n }\r\n this.moveTab(nextRow, nextCol, dataGrid, isCellEditable);\r\n };\r\n\r\n moveTabVertical = (rowIndex, columnIndex, dataGrid, isCellEditable: (row, dataField: string) => boolean = null) => {\r\n let nextRow = rowIndex + 1;\r\n let nextCol = columnIndex;\r\n\r\n if (nextRow > this.getNumberOfRows(dataGrid)) {\r\n const colCount = dataGrid.instance.getVisibleColumns().length;\r\n nextCol = columnIndex + 1;\r\n if (nextCol >= colCount) {\r\n // bug/132937 - instead of moving to another control on the page, move back to the next editable cell column on the grid\r\n // so that validation for the cell is preserved.\r\n this.moveTab(0, 0, dataGrid, isCellEditable);\r\n return;\r\n }\r\n nextRow = -1; // before the element 0\r\n this.moveTab(nextRow, nextCol, dataGrid, isCellEditable);\r\n return;\r\n }\r\n\r\n if (isCellEditable == null) {\r\n this.focusOnCell(nextRow, nextCol, dataGrid);\r\n }\r\n const element = dataGrid.instance.getCellElement(nextRow, nextCol);\r\n if (!!element) {\r\n const couldEdit = this.couldEdit(dataGrid, element, nextRow, isCellEditable);\r\n if (couldEdit) {\r\n this.focusOnCell(nextRow, nextCol, dataGrid);\r\n return;\r\n }\r\n }\r\n this.moveTab(nextRow, nextCol, dataGrid, isCellEditable);\r\n };\r\n\r\n moveDown = (rowIndex, columnIndex, dataGrid, isCellEditable: (row, dataField: string) => boolean = null ) => {\r\n const rowCount = this.getNumberOfRows(dataGrid);\r\n const nextRow = rowIndex + 1;\r\n if ( nextRow >= rowCount) {\r\n return;\r\n }\r\n\r\n if (isCellEditable === null) {\r\n this.focusOnCell(nextRow, columnIndex, dataGrid);\r\n }\r\n const element = dataGrid.instance.getCellElement(nextRow, columnIndex);\r\n if (!!element) {\r\n const couldEdit = this.couldEdit(dataGrid, element, nextRow, isCellEditable);\r\n if (couldEdit) {\r\n this.focusOnCell(nextRow, columnIndex, dataGrid);\r\n return;\r\n }\r\n }\r\n this.moveDown(nextRow, columnIndex, dataGrid, isCellEditable);\r\n };\r\n\r\n private getNumberOfRows(dataGrid) {\r\n // note: this assumes infinite/normal scrolling. This will break if we ever try to do virtual scrolling.\r\n return dataGrid.instance.getVisibleRows().length;\r\n }\r\n\r\n private couldEdit(dataGrid, element: any, nextRow: number, isCellEditable: (row, dataField: string) => boolean) {\r\n const dataField = dataGrid.instance.getVisibleColumns()[element.cellIndex].dataField;\r\n const row = dataGrid.instance.getVisibleRows()[nextRow];\r\n\r\n const columnAllowsEditing = !!dataGrid.instance.columnOption(dataField) && dataGrid.instance.columnOption(dataField).allowEditing;\r\n const cellEditableFunctionAllowsEditing = !!(isCellEditable(row, dataField));\r\n return cellEditableFunctionAllowsEditing && columnAllowsEditing;\r\n }\r\n\r\n protected focusOnCell = (rowIndex: number, columnIndex: number, dataGrid: DxDataGridComponent) => {\r\n const element = dataGrid.instance.getCellElement(rowIndex, columnIndex);\r\n dataGrid.instance.focus(element);\r\n dataGrid.instance.editCell(rowIndex, columnIndex);\r\n // editing alone doesn't always correctly set the focused cell location... so doing edit and focus\r\n };\r\n\r\n breakEvent(e) {\r\n e.event.preventDefault();\r\n e.event.stopPropagation();\r\n }\r\n\r\n protected getPreviousRowIndex(dataGrid: DxDataGridComponent) {\r\n return dataGrid.instance.getRowIndexByKey(this.currentRowKey);\r\n }\r\n\r\n\r\n\r\n onCellClick = (e, dataGrid: DxDataGridComponent) => {\r\n // We capture cell click so we can track the current position. We need this for two reasons.\r\n // 1) It lets us assign attributes in cellTemplate() that we can use for styling the grid.\r\n // 2) It lets us track when the row has changed. There is a bug in the grid such that if you\r\n // are in edit mode and then leave it (Esc), when you switch to another row the original row\r\n // does not get cellTemplate() events, so the styling fails. By catching when the row\r\n // changes, we can manually repaint the old row.\r\n\r\n const previousRowIndex = this.getPreviousRowIndex(dataGrid);\r\n const rowWasChanged = previousRowIndex !== e.rowIndex;\r\n if (rowWasChanged) {\r\n if (e.rowType === 'data') {\r\n this.currentRowKey = e.key;\r\n } else {\r\n this.currentRowKey = -999999;\r\n }\r\n }\r\n\r\n if (rowWasChanged && previousRowIndex >= 0) {\r\n dataGrid.instance.repaintRows([previousRowIndex]);\r\n }\r\n };\r\n\r\n protected getCurrentCell = (dataGrid: DxDataGridComponent): any => {\r\n const currentCell = (dataGrid.instance as any)._controllers.keyboardNavigation._focusedCellPosition;\r\n if (currentCell.rowIndex == null) { // this happens if we aren't yet in edit mode... in which case let's just jump to the top right\r\n currentCell.rowIndex = 0;\r\n currentCell.columnIndex = -1;\r\n }\r\n return currentCell;\r\n };\r\n\r\n protected dataGridIsInEditMode(e: any): boolean {\r\n const currentRowIndex = e.component.getController(\"keyboardNavigation\")._editingController._editRowIndex;\r\n return currentRowIndex !== -1;\r\n }\r\n\r\n\r\n}\r\n","
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n","import * as _ from 'lodash';\r\nimport {Component, EventEmitter, Input, OnInit, Output, ViewChild} from '@angular/core';\r\nimport {TransportationSummaryModel} from \"../transportation-summary-model\";\r\nimport {DxTabPanelComponent} from \"devextreme-angular\";\r\nimport {TransportationSummaryGrid} from \"../transportation-summary-grid\";\r\n\r\n@Component({\r\n selector: 'app-transportation-summary-tab-view',\r\n templateUrl: './transportation-summary-tab-view.component.html',\r\n styleUrls: ['./transportation-summary-tab-view.component.css']\r\n})\r\nexport class TransportationSummaryTabViewComponent implements OnInit {\r\n public static Tab_Transportation: string = \"Transportation\";\r\n public static Tab_NonTransportation: string = \"Non Transportation\";\r\n\r\n @Input() data: TransportationSummaryModel;\r\n @Output() onDataChanged = new EventEmitter();\r\n @ViewChild(DxTabPanelComponent) tabPanel: DxTabPanelComponent;\r\n @ViewChild('TransportationDataGrid') transportationDatGrid: TransportationSummaryGrid;\r\n @ViewChild('NonTransportationDataGrid') nonTransportationDatGrid: TransportationSummaryGrid;\r\n\r\n tabs: Array;\r\n\r\n readonly availableTabs = [\r\n {id: 0, title: TransportationSummaryTabViewComponent.Tab_Transportation, template: \"template1\", getCurrentGrid: this.getTransportationDataGrid},\r\n {id: 1, title: TransportationSummaryTabViewComponent.Tab_NonTransportation, template: \"template2\", getCurrentGrid: this.getNonTransportationDataGrid}\r\n ];\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n this.tabs = _.clone(this.availableTabs);\r\n }\r\n\r\n resetSortOrder = () => this.executeActionOnAllTabs(this.resetSortOrderAction);\r\n resetSortOrderAction = (grid: TransportationSummaryGrid) => grid.resetSortOrder();\r\n\r\n copy = () => this.executeActionOnCurrentTab(this.copyAction);\r\n copyAction = (grid: TransportationSummaryGrid) => grid.copy();\r\n\r\n saveEditData = () => this.executeActionOnAllTabs(this.saveEditDataAction);\r\n saveEditDataAction = (grid: TransportationSummaryGrid) => grid.saveEditData();\r\n\r\n private executeActionOnCurrentTab(action: any) {\r\n const currentGridReference = this.tabPanel.selectedItem.getCurrentGrid;\r\n if (!_.isNil(currentGridReference)) {\r\n const currentGrid = currentGridReference(this);\r\n action(currentGrid);\r\n }\r\n }\r\n\r\n private executeActionOnAllTabs(action: any) {\r\n // Stamp the current context, so that this doesn't change into something else in the forEach\r\n _.forEach(this.availableTabs, tab => {\r\n const gridReference = tab.getCurrentGrid(this);\r\n // ViewChild will not be present if the tab has not been clicked on yet, so\r\n // value may be null\r\n if (!_.isNil(gridReference)) {\r\n action(gridReference);\r\n }\r\n });\r\n }\r\n\r\n // public tryToSaveEditingData(): void {\r\n // this.getNonTransportationDataGrid().instance.saveEditData()\r\n // }\r\n public getTransportationDataGrid(invoker) {\r\n return invoker.transportationDatGrid;\r\n }\r\n\r\n public getNonTransportationDataGrid(invoker) {\r\n return invoker.nonTransportationDatGrid;\r\n }\r\n\r\n public getCurrentTabTitle(): string {\r\n return this.tabPanel.selectedItem.title;\r\n }\r\n\r\n public onTabDataChanged(): void {\r\n this.onDataChanged.emit();\r\n }\r\n}\r\n","import {NominationEnterprise} from \"@shared/services/nomination/nomination-enterprise/nomination-enterprise.service\";\r\nimport {GasCycle} from \"@model/gas-cycle\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {GasDayCycleStatusCollection} from \"@model/gas-day-cycle-status-collection\";\r\nimport {\r\n TransferTransactionSummaryDto,\r\n TransportationTransactionSummaryDto\r\n} from \"app/shared/services/nomination/nomination-transaction/nomination-transaction.models\";\r\nimport {NominationPipeline} from \"@model/nomination-pipeline\";\r\nimport {User} from \"@model/user\";\r\n\r\nexport class TransportationStatus {\r\n static All: TransportationStatus = new TransportationStatus('all', 'All');\r\n static AwaitingCapacityAllocation: TransportationStatus = new TransportationStatus('awaitingcapacityallocation', 'Awt Cap Alloc');\r\n static SentMca: TransportationStatus = new TransportationStatus('sentmca', 'Sent to MCA');\r\n static CapacityAllocated: TransportationStatus = new TransportationStatus('capacityallocated', 'Cap Allocated');\r\n\r\n static Statuses: TransportationStatus[] = [\r\n TransportationStatus.AwaitingCapacityAllocation,\r\n TransportationStatus.SentMca,\r\n TransportationStatus.CapacityAllocated\r\n ];\r\n\r\n value: string;\r\n name: string;\r\n\r\n constructor(value: string, name: string) {\r\n this.value = value;\r\n this.name = name;\r\n }\r\n}\r\n\r\nexport class TransportationSummarySearchParams {\r\n gasDay: GasDay;\r\n gasCycleCode?: string;\r\n status: string = TransportationStatus.All.value;\r\n customerId: string;\r\n enterpriseId?: number;\r\n numberOfRowsAffected: number;\r\n expandAll: boolean;\r\n varianceOnly: boolean = false;\r\n}\r\n\r\nexport class TransportationSummaryModel {\r\n gasDayCycleStatuses: GasDayCycleStatusCollection = GasDayCycleStatusCollection.create();\r\n gasCycles: GasCycle[] = [];\r\n customers: NominationEnterprise[] = [];\r\n statuses: TransportationStatus[] = [];\r\n minGasDay: GasDay = null;\r\n maxGasDay: GasDay = null;\r\n searchParams: TransportationSummarySearchParams = new TransportationSummarySearchParams();\r\n lastSearchParams: TransportationSummarySearchParams = null;\r\n\r\n transportationSearchResults: TransportationTransactionSummaryDto[] = null;\r\n nonTransportationSearchResults: TransferTransactionSummaryDto[] = null;\r\n // cleanResultsForComparison: TransportationTransactionSummaryDto[] = null;\r\n // cleanNonTransportationResultsForComparison: TransferTransactionSummaryDto[] = null;\r\n unAuthorizedCount: number;\r\n\r\n searchResultsCount: number = 0;\r\n nonTransportationResultsCount: number = 0;\r\n modelDirty: boolean;\r\n showFilterSection: boolean = true;\r\n\r\n totalNomQty: number = 0;\r\n totalTcplQty: number = 0;\r\n\r\n gasDayCycleStatus: string;\r\n copyButtonDisabled: boolean = true;\r\n autoBalanceButtonDisabled: boolean = true;\r\n submitButtonDisabled: boolean = true;\r\n editModeDisabled: boolean = true;\r\n hasValidationErrors: boolean;\r\n isSentToMCAForCapacityAllocation: string;\r\n queryDateTime: Date;\r\n lastAuthorizedBy: string;\r\n lastModifiedDate: Date;\r\n searchHasBeenPerformed: boolean;\r\n haveAllAuthorizedValuesBeenFilledIn: boolean;\r\n isReadOnlyMode: boolean;\r\n gasDay: GasDay;\r\n // TODO: shouldn't we default to false. Secure by default rather than by exception.\r\n userIsInternal: boolean = true;\r\n launchedGasCycles: GasCycle[] = [];\r\n forceEditMode: boolean = false;\r\n lastLoadedGasDay: GasDay = null;\r\n pipeline: NominationPipeline;\r\n user: User;\r\n isEditModeAvailable: boolean;\r\n}\r\n","import * as _ from 'lodash';\r\nimport {TransportationStatus} from \"./transportation-summary-model\";\r\nimport {AuthorizableQuantity} from \"app/shared/services/nomination/nomination-transaction/nomination-transaction.models\";\r\n\r\nexport class AuthorizableQuantityTask {\r\n static copyNominatedQuantityToAuthorizedQuantity(authorizableQuantities: AuthorizableQuantity[]): void {\r\n _.forEach(authorizableQuantities, x =>\r\n x.authorizedQuantity = _.isNil(x.previousGasCycleAuthorizedQuantity) ? x.nominatedQuantity : x.previousGasCycleAuthorizedQuantity);\r\n }\r\n\r\n static checkAllAuthQuantitiesHaveBeenProvided(authorizableQuantities: AuthorizableQuantity[]): boolean {\r\n if (!this.hasAuthorizableQuantities(authorizableQuantities)) return true;\r\n return _.every(authorizableQuantities, x => {\r\n return _.isNumber(x.authorizedQuantity);\r\n });\r\n }\r\n\r\n static checkAllAreAuthorized(authorizableQuantities: AuthorizableQuantity[]): boolean {\r\n if (_.isNil(authorizableQuantities) || _.isEmpty(authorizableQuantities)) return true;\r\n return _.every(authorizableQuantities, x => x.status === TransportationStatus.CapacityAllocated.name);\r\n }\r\n\r\n static hasAuthorizableQuantities(authorizableQuantities: AuthorizableQuantity[]): boolean {\r\n return !((_.isNil(authorizableQuantities) || _.isEmpty(authorizableQuantities)));\r\n }\r\n\r\n static isAuthorizedValueValidComparedToEpsq(authorizedQuantity: number, scheduledEpsq: number): boolean {\r\n return (_.isNil(authorizedQuantity) || _.isNil(scheduledEpsq)) ? true : authorizedQuantity >= scheduledEpsq;\r\n }\r\n\r\n static setNominatedVersusAuthorizedQuantity(authorizableQuantity: AuthorizableQuantity): void {\r\n authorizableQuantity.nominatedVersusAuthorizedQuantity =\r\n authorizableQuantity.authorizedQuantity === null || authorizableQuantity.authorizedQuantity - authorizableQuantity.nominatedQuantity === 0 ?\r\n null :\r\n authorizableQuantity.nominatedVersusAuthorizedQuantity = authorizableQuantity.authorizedQuantity - authorizableQuantity.nominatedQuantity;\r\n }\r\n\r\n static hasVariance(authorizableQuantity: AuthorizableQuantity): boolean {\r\n return authorizableQuantity.nominatedVersusAuthorizedQuantity !== null && authorizableQuantity.nominatedVersusAuthorizedQuantity !== 0;\r\n }\r\n\r\n}\r\n","import {GasDay} from \"app/shared/classes/gas-day\";\r\n\r\nexport class TransportatonSummaryRequest {\r\n gasDay: GasDay;\r\n gasCycleCode: string;\r\n status: string;\r\n enterpriseId?: number;\r\n numberOfRecordsUpdated?: number;\r\n expandAll?: boolean;\r\n}\r\n\r\nexport class TransportationSummary {\r\n details: TransportationTransactionSummaryDto[];\r\n gasDayCycleStatus: string;\r\n\r\n lastModByUserId: string;\r\n lastModDateTime: string;\r\n queryDateTime: Date;\r\n}\r\n\r\n\r\nexport class TransportationTransactionSummaryDto implements AuthorizableQuantity {\r\n transactionId: number;\r\n dailyFuelTransactionId: number;\r\n customerMnemonic: string;\r\n customerAccountMnemonic: string;\r\n cycleCode: string;\r\n scheduledCycleCode: string;\r\n typeOfService: string;\r\n nominationGroup: number;\r\n receiptLocationId: number;\r\n deliveryLocationId: number;\r\n transportRank: number;\r\n bidPrice: number;\r\n zeroTaxRated: boolean;\r\n nominatedQuantity: number;\r\n authorizedQuantity: number | null;\r\n nominatedVersusAuthorizedQuantity: number | null;\r\n scheduledQuantity: number;\r\n fuelLocation: string;\r\n nominatedFuelQuantity: number;\r\n authorizedFuelQuantity: number;\r\n scheduledFuelQuantity: number;\r\n reasonCode: string;\r\n status: string;\r\n packageId: string;\r\n nominationId: number;\r\n fuelNominationId: number;\r\n fullTypeOfService: string;\r\n previousGasCycleAuthorizedQuantity: number;\r\n scheduledEpsq: number;\r\n serviceOption: string;\r\n lastModByUserId: string;\r\n lastModDateTime: string;\r\n\r\n authorizedByUserId: string;\r\n authorizedDateTime: string;\r\n}\r\n\r\nexport interface AuthorizableQuantity {\r\n previousGasCycleAuthorizedQuantity: number;\r\n authorizedQuantity: number | null;\r\n nominatedQuantity: number;\r\n nominatedVersusAuthorizedQuantity: number | null;\r\n status: string;\r\n scheduledEpsq: number;\r\n authorizedByUserId: string;\r\n authorizedDateTime: string;\r\n}\r\n\r\nexport class TransferSummary {\r\n details: TransferTransactionSummaryDto[];\r\n gasDayCycleStatus: string;\r\n\r\n lastModByUserId: string;\r\n lastModDateTime: string;\r\n queryDateTime: Date;\r\n}\r\n\r\n\r\nexport class TransferTransactionSummaryDto implements AuthorizableQuantity {\r\n transactionId: number;\r\n fromAccountMnemonic: string;\r\n cycleCode: string;\r\n scheduledCycleCode: string;\r\n transactionType: string;\r\n toAccountMnemonic: string;\r\n locationId: number;\r\n packageId: string;\r\n upDownContract: string;\r\n counterParty: string;\r\n nominatedQuantity: number;\r\n authorizedQuantity: number;\r\n nominatedVersusAuthorizedQuantity: number | null;\r\n scheduledQuantity: number;\r\n reasonCode: string;\r\n status: string;\r\n previousGasCycleAuthorizedQuantity: number;\r\n scheduledEpsq: number;\r\n lastModByUserId: string;\r\n lastModDateTime: string;\r\n\r\n authorizedByUserId: string;\r\n authorizedDateTime: string;\r\n}\r\n\r\nexport class AuthorizeDailyTransferTransactionsRequest {\r\n pipeline: string;\r\n gasCycleCode: string;\r\n gasDay: string;\r\n queryDateTime: Date;\r\n data: AuthorizeDailyTransferTransactionsData[];\r\n}\r\n\r\nexport class AuthorizeDailyTransferTransactionsData {\r\n dailyTransactionId: number;\r\n authorizedQuantity: number;\r\n\r\n constructor(dailyTransactionId: number, authorizedQuantity: number) {\r\n this.dailyTransactionId = dailyTransactionId;\r\n this.authorizedQuantity = authorizedQuantity;\r\n }\r\n}\r\n\r\nexport class AuthorizeDailyTransportationTransactionsRequest {\r\n pipeline: string;\r\n gasCycleCode: string;\r\n gasDay: string;\r\n queryDateTime: Date;\r\n data: AuthorizeDailyTransportationTransactionsData[];\r\n}\r\n\r\nexport class AuthorizeDailyTransportationTransactionsData {\r\n dailyTransactionId: number;\r\n authorizedQuantity: number;\r\n deliveryLocationId: number;\r\n receiptLocationId: number;\r\n billableServiceCode: string;\r\n\r\n constructor(dailyTransactionId: number, authorizedQuantity: number, deliveryLocationId: number, receiptLocationId: number, billableServiceCode: string) {\r\n this.dailyTransactionId = dailyTransactionId;\r\n this.authorizedQuantity = authorizedQuantity;\r\n this.deliveryLocationId = deliveryLocationId;\r\n this.receiptLocationId = receiptLocationId;\r\n this.billableServiceCode = billableServiceCode;\r\n }\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {NominationResourceService} from \"@shared/resources/nominations-resource.service\";\r\nimport {Observable} from \"rxjs\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {\r\n AuthorizeDailyTransferTransactionsRequest,\r\n AuthorizeDailyTransportationTransactionsRequest,\r\n TransferSummary,\r\n TransportationSummary,\r\n TransportatonSummaryRequest\r\n} from \"app/shared/services/nomination/nomination-transaction/nomination-transaction.models\";\r\nimport {HttpResponse} from \"@angular/common/http\";\r\nimport {BfpDailyTransportationSummaryDto, BfpDailyTransportationSummaryRequest} from \"app/gcts/nomination/bfp-daily-transportation-summary/bfp-daily-transportation-summary.component\";\r\n\r\n\r\n@Injectable()\r\nexport class NominationTransactionService {\r\n\r\n constructor(private nominationResource: NominationResourceService) {\r\n }\r\n\r\n /**\r\n * Public methods\r\n */\r\n public queryCountOfNotCapacityAllocatedTransactions(searchParams: GCTSHttpParams): Observable {\r\n return this.nominationResource.get('/transactions/notCapacityAllocated/count', true, searchParams);\r\n }\r\n\r\n public queryTransportationSummaries(searchParams: TransportatonSummaryRequest): Observable {\r\n const params = this.setUrlSearchParamsForTransportationOrTransferSummary(searchParams);\r\n return this.nominationResource.get('/transportationsummary/transportation', true, params);\r\n }\r\n\r\n public queryTransferSummary(searchParams: TransportatonSummaryRequest): Observable {\r\n const params = this.setUrlSearchParamsForTransportationOrTransferSummary(searchParams);\r\n return this.nominationResource.get('/transportationsummary/transfer', true, params);\r\n }\r\n\r\n public queryTransportationSummaryReportPdf(searchParams: GCTSHttpParams): Observable> {\r\n // const params = this.setUrlSearchParamsForTransportationOrTransferSummary(searchParams);\r\n return this.nominationResource.getData('/transportationsummary/pdf', true, searchParams);\r\n }\r\n\r\n public queryBfpTransportationSummary(searchParams: BfpDailyTransportationSummaryRequest): Observable {\r\n const params = this.setUrlSearchParamsForBfpTransportationSummary(searchParams);\r\n return this.nominationResource.get('/transportationsummary/bfp', true, params);\r\n }\r\n\r\n public authorizeDailyTransportationTransactions(authorizeDailyTransportationTransactionsRequest: AuthorizeDailyTransportationTransactionsRequest): Observable {\r\n return this.nominationResource.post('/transportationsummary/authorizedailytransportationtransactions', authorizeDailyTransportationTransactionsRequest);\r\n }\r\n\r\n public authorizeDailyTransferTransactions(authorizeDailyTransferTransactionsRequest: AuthorizeDailyTransferTransactionsRequest ): Observable {\r\n return this.nominationResource.post('/transportationsummary/authorizedailytransfertransactions', authorizeDailyTransferTransactionsRequest);\r\n }\r\n\r\n /**\r\n * Private methods\r\n */\r\n private setUrlSearchParamsForTransportationOrTransferSummary(searchParams: TransportatonSummaryRequest): GCTSHttpParams {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n if (searchParams.gasDay != null) {\r\n params.set('gasDay', searchParams.gasDay.toString());\r\n }\r\n if (searchParams.gasCycleCode != null) {\r\n params.set('gasCycleCode', searchParams.gasCycleCode);\r\n }\r\n if (searchParams.status != null) {\r\n params.set('status', searchParams.status);\r\n }\r\n if (searchParams.enterpriseId != null) {\r\n params.set('enterpriseId', searchParams.enterpriseId.toString());\r\n }\r\n return params;\r\n }\r\n\r\n private setUrlSearchParamsForBfpTransportationSummary(searchParams: BfpDailyTransportationSummaryRequest): GCTSHttpParams {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n if (searchParams.fromGasDay != null) {\r\n params.set('fromGasDay', searchParams.fromGasDay.toString());\r\n }\r\n if (searchParams.toGasDay != null) {\r\n params.set('toGasDay', searchParams.toGasDay.toString());\r\n }\r\n if (searchParams.locationIds != null && searchParams.locationIds.length !== 0) {\r\n params.set('locationIds', searchParams.locationIds.toString());\r\n }\r\n if (searchParams.varianceOnly != null) {\r\n params.set('varianceOnly', searchParams.varianceOnly.toString());\r\n }\r\n\r\n return params;\r\n }\r\n\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Gas Day: {{model.lastSearchParams?.gasDay | gasDayFormat}}\r\n Cycle (CCT): {{model.lastSearchParams?.gasCycleCode | displayName: 'code' : 'displayValue' : model.gasCycles : 'EOD' }}\r\n Status: {{model.lastSearchParams?.status | displayName: 'value' : 'name' : model.statuses}}\r\n Customer: {{model.lastSearchParams?.customerId | displayName: 'id' : 'displayValue' : model.customers}}\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.gasDay | gasDayFormat}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.gasCycleCode | displayName: 'code' : 'displayValue' : model.gasCycles : 'EOD' }}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.enterpriseId | displayName: 'id' : 'displayValue' : model.customers }}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
{{model.lastSearchParams.varianceOnly ? 'Yes' : 'No'}}
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.gasDayCycleStatus}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
{{model.lastAuthorizedBy}}
\r\n
\r\n \r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.status | displayName: 'value' : 'name' : model.statuses }}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
{{model.lastAuthorizedBy}}
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n\r\n\r\n\r\n","import * as moment from 'moment';\r\nimport * as _ from 'lodash';\r\nimport {AppService} from 'app/shared/services/webapp/app/app.service';\r\nimport {GasCycleService} from 'app/shared/services/nomination/gas-cycle/gas-cycle.service';\r\nimport {GasDay} from 'app/shared/classes/gas-day';\r\nimport {ActivatedRoute, Params, Router} from '@angular/router';\r\nimport {AfterViewInit, Component, ViewChild} from '@angular/core';\r\nimport {NominationSystemService} from 'app/shared/services/nomination/nomination-system/nomination-system.service';\r\nimport {ParamValidator} from 'app/shared/classes/validators/param-validator';\r\nimport {\r\n NominationEnterpriseService, EnterpriseSearchParams,\r\n NominationEnterprise\r\n} from \"app/shared/services/nomination/nomination-enterprise/nomination-enterprise.service\";\r\nimport {NominationEnterpriseEnrichmentService} from 'app/shared/services/nomination/nomination-enterprise-enrichment/nomination-enterprise-enrichment.service';\r\nimport {NominationLocationEnrichmentService} from \"app/shared/services/nomination/nomination-location-enrichment/nomination-location-enrichment.service\";\r\nimport {NominationNomGroupEnrichmentService } from \"app/shared/services/nomination/nomination-nom-group-enrichment/nomination-nom-group-enrichment.service\";\r\nimport {AlertService} from \"app/shared/services/webapp/alert/alert.service\";\r\nimport {AutoBalanceService} from \"app/shared/services/nomination/auto-balance/auto-balance.service\";\r\nimport {forkJoin, Observable, of, Subscription} from \"rxjs\";\r\nimport {YesNoCancelModalService} from \"app/shared/services/webapp/yes-no-cancel-modal/yes-no-cancel-modal.service\";\r\nimport {BaseDatagridHandler} from \"app/shared/classes/base-datagrid-handlers\";\r\nimport {\r\n NominationPipelineService\r\n} from \"app/shared/services/nomination/nomination-pipeline/nomination-pipeline.service\";\r\nimport {GuardAgainstUnsavedChanges} from \"app/shared/services/webapp/unsaved-changes/unsaved-changes.service\";\r\nimport {TransportationSummaryTabViewComponent} from \"./transportation-summary-tab-view/transportation-summary-tab-view.component\";\r\nimport {TransportationStatus, TransportationSummaryModel} from \"./transportation-summary-model\";\r\nimport {AuthorizableQuantityTask} from \"./authorizable-quantity-task\";\r\nimport {CapabilitiesService} from \"app/shared/services/webapp/capabilities/capabilities.service\";\r\nimport {SessionService} from \"app/shared/services/webapp/session/session.service\";\r\nimport {UserService} from \"app/shared/services/webapp/user/user-service\";\r\nimport {EditableSearchComponent} from \"app/shared/classes/editable-search-component\";\r\nimport {BusinessRight} from \"app/shared/classes/business-right\";\r\nimport {GasDayCycleStatusCollection} from \"app/shared/classes/gas-day-cycle-status-collection\";\r\nimport {IGasDay} from \"app/shared/classes/gas-day-month.interface\";\r\nimport {SimpleGasDayCycleStatus} from \"app/shared/classes/simple-gas-day-cycle-status\";\r\nimport {NominationPipelineGasDay} from \"app/shared/classes/nomination-pipeline-gas-day\";\r\nimport {DateTime} from \"app/shared/classes/date-time\";\r\nimport {TypedParams} from \"app/shared/classes/typed-params\";\r\nimport {YesNoModalOptions} from \"app/shared/services/webapp/modal-options/yes-no-modal-options\";\r\nimport {SelectedModalOption} from \"app/shared/services/webapp/modal-options/selected-modal-option\";\r\nimport {ModalOptions} from \"app/shared/services/webapp/modal-options/modal-options\";\r\nimport {GasCycleLogic} from \"app/shared/classes/gas-cycle.logic\";\r\nimport * as FileSaver from \"file-saver\";\r\nimport {NominationRequestService} from \"app/shared/services/nomination/nomination-request/nomination-request.service\";\r\nimport {NominationTransactionService} from \"app/shared/services/nomination/nomination-transaction/nomination-transaction.service\";\r\nimport {GCTSHttpParams} from \"app/shared/classes/gcts-http-params\";\r\nimport {\r\n TransportationSummary,\r\n TransportatonSummaryRequest,\r\n TransferSummary,\r\n AuthorizableQuantity,\r\n TransportationTransactionSummaryDto,\r\n TransferTransactionSummaryDto,\r\n AuthorizeDailyTransportationTransactionsRequest,\r\n AuthorizeDailyTransferTransactionsRequest,\r\n AuthorizeDailyTransportationTransactionsData, AuthorizeDailyTransferTransactionsData\r\n} from \"app/shared/services/nomination/nomination-transaction/nomination-transaction.models\";\r\nimport {GasDaySearchResourceTracker} from \"@model/gas-day-search-resource-tracker\";\r\nimport {tap, mergeMap, finalize, concatMap} from \"rxjs/operators\";\r\nimport {NominationPipeline} from \"@model/nomination-pipeline\";\r\nimport {\r\n CapacityAllocationTypeService\r\n} from \"@shared/classes/models/capacity-allocation-type\";\r\nimport {PipelineSettingMapService} from \"@shared/services/nomination/pipeline-settings-map/pipeline-setting-map.service\";\r\nimport {User} from \"@model/user\";\r\n\r\n@Component({\r\n selector: 'app-transportation-summary',\r\n templateUrl: './transportation-summary.component.html',\r\n styleUrls: ['./transportation-summary.component.css']\r\n})\r\nexport class TransportationSummaryComponent extends EditableSearchComponent implements AfterViewInit, GuardAgainstUnsavedChanges {\r\n private baseDatagridHandler: BaseDatagridHandler;\r\n private submitting = false;\r\n private typedParamsSet = false;\r\n\r\n private gasDayTracker: GasDaySearchResourceTracker = new GasDaySearchResourceTracker();\r\n\r\n model: TransportationSummaryModel = new TransportationSummaryModel();\r\n\r\n @ViewChild('gasDay') gasDay;\r\n @ViewChild(TransportationSummaryTabViewComponent) tabs: TransportationSummaryTabViewComponent;\r\n\r\n constructor(protected appService: AppService,\r\n protected router: Router,\r\n protected activatedRoute: ActivatedRoute,\r\n protected alertService: AlertService,\r\n protected modalService: YesNoCancelModalService,\r\n private nominationSystemService: NominationSystemService,\r\n private gasCycleService: GasCycleService,\r\n private nominationEnterpriseService: NominationEnterpriseService,\r\n private nominationRequestService: NominationRequestService,\r\n private nominationTransactionService: NominationTransactionService,\r\n private nominationLocationEnrichmentService: NominationLocationEnrichmentService,\r\n private nominationEnterpriseEnrichmentService: NominationEnterpriseEnrichmentService,\r\n private nominationNomGroupEnrichmentService: NominationNomGroupEnrichmentService,\r\n private autoBalanceService: AutoBalanceService,\r\n private nominationPipelineService: NominationPipelineService,\r\n private userService: UserService,\r\n private capabilitiesService: CapabilitiesService,\r\n private sessionService: SessionService) {\r\n super('Transportation Summary', appService, activatedRoute, router, alertService);\r\n\r\n this.baseDatagridHandler = new BaseDatagridHandler(null);\r\n }\r\n\r\n ngAfterViewInit() {\r\n // TODO: Figure out how to get notified by child component when it has finished rendering\r\n// setTimeout(() => this.gasDay.focus(), 2000);\r\n }\r\n\r\n /* Protected Methods */\r\n protected loadInitialResources(): Observable {\r\n this.model.pipeline = this.sessionService.getPipeline();\r\n this.model.user = this.userService.user;\r\n\r\n const serviceCalls: Observable[] = [\r\n this.nominationSystemService.pipelineGasDay(), // 0\r\n\r\n // Doing these 3 requests at once with the Observable set to .share() means they\r\n // all get ran at the same time turning 3 queries into 1 query.\r\n this.nominationEnterpriseEnrichmentService.fetch(),\r\n this.nominationLocationEnrichmentService.fetch(),\r\n this.nominationNomGroupEnrichmentService.fetch()\r\n ];\r\n\r\n return forkJoin(serviceCalls).pipe(\r\n tap(([pipelineGasDay]: [NominationPipelineGasDay]) => {\r\n\r\n if (!pipelineGasDay.hasGasDayCycles()) {\r\n this.alertService.addWarnMessage(\"Warning\", \"There are no Gas Day Cycles for the pipeline.\");\r\n return;\r\n }\r\n\r\n this.appService.hideMenu();\r\n this.appService.clearMessages();\r\n\r\n this.model.gasDay = pipelineGasDay.allowableGasDay;\r\n this.model.minGasDay = pipelineGasDay.minGasDayForCycleStatus;\r\n this.model.maxGasDay = pipelineGasDay.maxGasDayForCycleStatus;\r\n this.model.userIsInternal = !this.userService.user.isExternalUser;\r\n }));\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return this.gasDayCycleParamValidator().isValid(params);\r\n }\r\n\r\n\r\n protected resetCompleted(): void {\r\n /* Reset any search results if they existed */\r\n this.model.transportationSearchResults = undefined;\r\n this.model.nonTransportationSearchResults = undefined;\r\n this.model.searchHasBeenPerformed = false;\r\n this.model.modelDirty = false;\r\n this.model.hasValidationErrors = false;\r\n this.model.copyButtonDisabled = this.isCopyButtonDisabled();\r\n this.model.autoBalanceButtonDisabled = this.isAutoBalanceButtonDisabled();\r\n this.typedParamsSet = false;\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams.gasDay = this.model.gasDay;\r\n this.model.searchParams.gasCycleCode = null;\r\n this.model.searchParams.status = undefined;\r\n\r\n this.model.searchParams.enterpriseId = undefined;\r\n this.model.searchParams.varianceOnly = null;\r\n }\r\n\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams.expandAll = typedParams.asBoolean('expandAll');\r\n this.model.searchParams.gasDay = typedParams.asGasDay('gasDay');\r\n this.model.searchParams.gasCycleCode = typedParams.asNullableString('gasCycleCode');\r\n this.model.searchParams.status = typedParams.asNullableString('status');\r\n this.model.searchParams.enterpriseId = typedParams.asNullableNumber('enterpriseId');\r\n this.model.searchParams.varianceOnly = typedParams.asNullableBoolean('varianceOnly');\r\n if (this.model.searchParams.varianceOnly === false) { this.model.searchParams.varianceOnly = null; }\r\n\r\n this.typedParamsSet = true;\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n\r\n if (this.gasDayTracker.previouslyLoadedForSameGasDay(this.model.searchParams.gasDay)) {\r\n // Set GasDay dependent fields to defaults.\r\n if (!this.model.searchParams.gasCycleCode) {\r\n this.model.searchParams.gasCycleCode = this.defaultGasCycleCode();\r\n }\r\n // This causes any filters to be removed.\r\n this.model.customers = _.orderBy(this.model.customers, x => x['displayValue']);\r\n return of(null);\r\n }\r\n\r\n const serviceCalls: Observable[] = [\r\n this.gasCycleService.queryGasDayCycleStatusesFor(this.model.searchParams.gasDay), // 0\r\n this.getEnterprises(this.model.searchParams.gasDay), // 1\r\n this.nominationPipelineService.getOne(this.model.searchParams.gasDay), // 2\r\n ];\r\n\r\n return forkJoin(serviceCalls).pipe(\r\n tap(([gasDayCycleStatuses, enterprises, pipeline]: [GasDayCycleStatusCollection, NominationEnterprise[], NominationPipeline]) => {\r\n this.model.statuses = TransportationStatus.Statuses;\r\n\r\n // 0 - Gas Day Cycle Statuses\r\n this.model.gasDayCycleStatuses = gasDayCycleStatuses;\r\n this.model.gasCycles = gasDayCycleStatuses.gasCycles();\r\n this.model.launchedGasCycles = gasDayCycleStatuses.defaultGasDayCycleStatuses().gasCycles();\r\n\r\n if (!this.model.searchParams.gasCycleCode) {\r\n this.model.searchParams.gasCycleCode = this.defaultGasCycleCode();\r\n }\r\n\r\n // 1 - Enterprises\r\n this.model.customers = enterprises;\r\n this.model.customers = _.orderBy(this.model.customers, x => x['displayValue']);\r\n\r\n // 2 - Nomination Pipeline -\r\n // Sets visibility of Copy, Submit, Cancel buttons and Authorized Quantity column\r\n this.model.isSentToMCAForCapacityAllocation = pipeline.isSentToMCAForCapacityAllocation;\r\n\r\n // External Access\r\n if (!this.model.userIsInternal) {\r\n this.model.searchParams.enterpriseId = Number(this.userService.user.enterpriseId);\r\n }\r\n\r\n this.model.isReadOnlyMode = this.isReadOnlyMode();\r\n\r\n this.gasDayTracker.markLastLoadedGasDay(this.model.searchParams.gasDay);\r\n\r\n this.setIsEditModeAvailable();\r\n }));\r\n }\r\n\r\n protected buildPdfQueryParams() {\r\n const gasCycleCode = GasCycleLogic.buildGasCycleCodeForRequest(this.model.gasDayCycleStatuses, this.model.searchParams.gasCycleCode);\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setGasDay(this.model.searchParams.gasDay);\r\n params.set('gasCycleCode', gasCycleCode);\r\n params.set('gasCycleDisplayCode', gasCycleCode !== this.model.searchParams.gasCycleCode ? \"EOD\" : null);\r\n params.set('status', this.model.searchParams.status);\r\n params.setNumber('enterpriseId', this.model.searchParams.enterpriseId);\r\n params.setBoolean('varianceOnly', this.model.searchParams.varianceOnly);\r\n return params;\r\n }\r\n\r\n protected buildQueryParams() {\r\n return {\r\n gasDay: this.model.searchParams.gasDay,\r\n gasCycleCode: this.model.searchParams.gasCycleCode,\r\n status: this.model.searchParams.status,\r\n enterpriseId: this.model.searchParams.enterpriseId,\r\n numberOfRowsAffected: this.model.searchParams.numberOfRowsAffected,\r\n varianceOnly: this.model.searchParams.varianceOnly === true ? true : null\r\n };\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n /***\r\n * Public Methods\r\n */\r\n\r\n toggleFilterSectionClicked(): void {\r\n this.model.showFilterSection = !this.model.showFilterSection;\r\n }\r\n\r\n public gasCyclePlaceholder(): string {\r\n return GasCycleLogic.placeholder(this.model.gasDayCycleStatuses);\r\n }\r\n\r\n public isGasCycleRequired(): boolean {\r\n return GasCycleLogic.isRequired(this.model.gasDayCycleStatuses);\r\n }\r\n\r\n /***\r\n * Private Methods\r\n */\r\n\r\n private gasDayCycleParamValidator(): ParamValidator {\r\n const gasDayCycleParamValidator = ParamValidator.Standard();\r\n\r\n gasDayCycleParamValidator.isGasDay('gasDay');\r\n gasDayCycleParamValidator.isString('gasCycleCode', true); // Optional for EOD case\r\n\r\n return gasDayCycleParamValidator;\r\n }\r\n\r\n private getEnterprises(gasDay: IGasDay): Observable {\r\n return this.nominationEnterpriseService.queryAllByPipeline({gasDay: gasDay, includeInactive: true, accountBusinessRights: [BusinessRight.MultiTitleTransfer, BusinessRight.LdcVariance]} as EnterpriseSearchParams)\r\n .pipe(\r\n concatMap(response => {\r\n return this.nominationEnterpriseEnrichmentService.enrichArray(response, 'id');\r\n }));\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n\r\n if (this.model.searchParams.numberOfRowsAffected) {\r\n this.alertService.addSuccessMessage('Success', `${this.model.searchParams.numberOfRowsAffected} record(s) updated.`);\r\n this.model.searchParams.numberOfRowsAffected = undefined;\r\n }\r\n\r\n this.model.searchHasBeenPerformed = true;\r\n const searchRequest = this.buildSearchRequest();\r\n\r\n const transportationSummary$ =\r\n this.queryTransportationSummaries(searchRequest).pipe(\r\n tap(transportationSummary => this.processTransportationSummary(transportationSummary))\r\n );\r\n const nonTransportationSummary$ = this.queryNonTransportationSummaries(searchRequest).pipe(\r\n tap(nonTransportationSummary => this.processNonTransportationSummary(nonTransportationSummary))\r\n );\r\n const gasCycleStatus$ = this.gasCycleService.getGasCycleStatus(this.model.searchParams.gasDay,\r\n GasCycleLogic.buildGasCycleCodeForRequest(this.model.gasDayCycleStatuses, this.model.searchParams.gasCycleCode)).pipe(\r\n tap(gasDayCycleStatus => this.gasDayCycleStatusReturned(gasDayCycleStatus))\r\n );\r\n\r\n const unAuthorizedCount$ =\r\n this.queryCountOfNotCapacityAllocatedTransactions().pipe(\r\n tap(count => {\r\n this.model.unAuthorizedCount = count;\r\n }));\r\n\r\n return forkJoin(transportationSummary$, nonTransportationSummary$, gasCycleStatus$, unAuthorizedCount$).pipe(\r\n tap(() => {\r\n this.setAuthorizedUserAndDate();\r\n this.model.autoBalanceButtonDisabled = this.isAutoBalanceButtonDisabled();\r\n this.model.editModeDisabled = this.isHubNotBalanced();\r\n this.model.isReadOnlyMode = this.isReadOnlyMode();\r\n this.model.copyButtonDisabled = this.isCopyButtonDisabled();\r\n this.model.totalNomQty = _.sumBy(this.model.transportationSearchResults, t => t.nominatedQuantity)\r\n + _.sumBy(this.model.nonTransportationSearchResults, t => t.nominatedQuantity);\r\n this.model.totalTcplQty = _.sumBy(this.model.transportationSearchResults, t => t.scheduledQuantity)\r\n + _.sumBy(this.model.nonTransportationSearchResults, t => t.scheduledQuantity);\r\n })\r\n );\r\n }\r\n\r\n private queryCountOfNotCapacityAllocatedTransactions(): Observable {\r\n const gasCycleCode = GasCycleLogic.buildGasCycleCodeForRequest(this.model.gasDayCycleStatuses, this.model.searchParams.gasCycleCode);\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setGasDay(this.model.searchParams.gasDay);\r\n params.set('gasCycleCode', gasCycleCode);\r\n\r\n return this.nominationTransactionService.queryCountOfNotCapacityAllocatedTransactions(params);\r\n }\r\n\r\n private queryTransportationSummaries(searchRequest: TransportatonSummaryRequest): Observable {\r\n return this.nominationTransactionService.queryTransportationSummaries(searchRequest).pipe(\r\n concatMap(transportationSummaries =>\r\n forkJoin(\r\n [\r\n this.nominationEnterpriseEnrichmentService.enrichArray(transportationSummaries.details, 'customerId', 'customer'),\r\n this.nominationLocationEnrichmentService.enrichArray(transportationSummaries.details, 'deliveryLocationId', 'deliveryLocation'),\r\n this.nominationLocationEnrichmentService.enrichArray(transportationSummaries.details, 'receiptLocationId', 'receiptLocation'),\r\n this.nominationNomGroupEnrichmentService.enrichArray(transportationSummaries.details, 'customerAccountId', 'customerAccount'),\r\n this.nominationLocationEnrichmentService.enrichArray(transportationSummaries.details, 'fuelLocationId', 'fuelLocation')\r\n ]).pipe(concatMap(() => of(transportationSummaries))\r\n )));\r\n }\r\n\r\n private queryNonTransportationSummaries(searchRequest: TransportatonSummaryRequest): Observable {\r\n return this.nominationTransactionService.queryTransferSummary(searchRequest).pipe(\r\n concatMap(nonTransportationSummaries =>\r\n forkJoin([\r\n this.nominationNomGroupEnrichmentService.enrichArray(nonTransportationSummaries.details, 'fromAccountId', 'fromAccount'),\r\n this.nominationNomGroupEnrichmentService.enrichArray(nonTransportationSummaries.details, 'toAccountId', 'toAccount'),\r\n this.nominationLocationEnrichmentService.enrichArray(nonTransportationSummaries.details, 'locationId', 'location')\r\n ]).pipe(concatMap(() => of(nonTransportationSummaries))\r\n )));\r\n }\r\n\r\n private setAuthorizedUserAndDate(): void {\r\n const newestAuthTransaction =\r\n _(this.model.nonTransportationSearchResults as AuthorizableQuantity[])\r\n .concat(this.model.transportationSearchResults as AuthorizableQuantity[])\r\n // which one should we use. Feels like a catch all right now.\r\n .filter(t => !_.isNil(t.authorizedByUserId) && !_.isNil(t.authorizedDateTime) &&\r\n (t.status === TransportationStatus.CapacityAllocated.value || t.status === TransportationStatus.CapacityAllocated.name))\r\n .map(t => new AuthorizationInfo(t.authorizedDateTime, t.authorizedByUserId))\r\n .orderBy(t => t.authorizedDate, 'desc')\r\n .head();\r\n\r\n\r\n\r\n this.model.lastAuthorizedBy = _.isNil(newestAuthTransaction) ?\r\n '' :\r\n this.formatUserAndGasDay(newestAuthTransaction.authorizedBy, newestAuthTransaction.authorizedDate);\r\n }\r\n\r\n private gasDayCycleStatusReturned(simpleGasDayCycleStatus: SimpleGasDayCycleStatus) {\r\n this.model.gasDayCycleStatus = !_.isNil(simpleGasDayCycleStatus) ? simpleGasDayCycleStatus.status : null;\r\n\r\n this.model.forceEditMode = simpleGasDayCycleStatus.forceTransportationSummaryEditMode;\r\n this.model.autoBalanceButtonDisabled = this.isAutoBalanceButtonDisabled();\r\n this.model.editModeDisabled = this.isHubNotBalanced();\r\n this.model.isReadOnlyMode = this.isReadOnlyMode();\r\n this.model.copyButtonDisabled = this.isCopyButtonDisabled();\r\n }\r\n\r\n private refreshGasDayCycleStatus(): void {\r\n this.gasCycleService.getGasCycleStatus(this.model.searchParams.gasDay, this.model.searchParams.gasCycleCode)\r\n .subscribe(simpleGasDayCycleStatus => this.gasDayCycleStatusReturned(simpleGasDayCycleStatus));\r\n }\r\n\r\n private formatUserAndGasDay = (userId: string, date: Date): string => userId + ', ' + GasDay.from(date).toDisplayFormat() + ' ' + moment(date).format('HH:mm:ss');\r\n\r\n private processTransportationSummary(transportationSummary: TransportationSummary): void {\r\n const results = transportationSummary.details;\r\n\r\n const gridResults: TransportationTransactionSummaryDto[] = [];\r\n\r\n _.forEach(results, (dto: TransportationTransactionSummaryDto) => {\r\n // Build Type of Service, with its Service Option\r\n dto.fullTypeOfService = dto.serviceOption ?\r\n `${dto.typeOfService} ${dto.serviceOption}`\r\n : dto.typeOfService;\r\n // Set Nom versus Authorized if there is an Authorized Quantity.\r\n AuthorizableQuantityTask.setNominatedVersusAuthorizedQuantity(dto);\r\n\r\n if (this.model.lastSearchParams.varianceOnly) {\r\n if (AuthorizableQuantityTask.hasVariance(dto)) {\r\n gridResults.push(dto);\r\n }\r\n } else {\r\n gridResults.push(dto);\r\n }\r\n });\r\n\r\n this.model.queryDateTime = transportationSummary.queryDateTime;\r\n this.model.transportationSearchResults = gridResults;\r\n this.model.searchResultsCount = this.model.transportationSearchResults.length;\r\n this.model.modelDirty = false;\r\n }\r\n\r\n private processNonTransportationSummary(transferSummary: TransferSummary): void {\r\n const results = _.isNil(transferSummary.details) ? [] : transferSummary.details;\r\n\r\n const gridResults: TransferTransactionSummaryDto[] = [];\r\n\r\n _.forEach(results, (dto: TransferTransactionSummaryDto) => {\r\n // Set Nom versus Authorized if there is an Authorized Quantity.\r\n AuthorizableQuantityTask.setNominatedVersusAuthorizedQuantity(dto);\r\n\r\n if (this.model.lastSearchParams.varianceOnly) {\r\n if (AuthorizableQuantityTask.hasVariance(dto)) {\r\n gridResults.push(dto);\r\n }\r\n } else {\r\n gridResults.push(dto);\r\n }\r\n\r\n });\r\n\r\n this.model.queryDateTime = transferSummary.queryDateTime;\r\n this.model.nonTransportationSearchResults = gridResults;\r\n this.model.nonTransportationResultsCount = this.model.nonTransportationSearchResults.length;\r\n this.model.modelDirty = false;\r\n }\r\n\r\n isSubmitButtonDisabled(): boolean {\r\n return this.isHubNotBalanced() ||\r\n this.model.hasValidationErrors ||\r\n !this.model.modelDirty ||\r\n (this.model.modelDirty && !this.model.haveAllAuthorizedValuesBeenFilledIn) ||\r\n (!this.model.modelDirty && this.hasNoQuantitiesToAuthorize());\r\n }\r\n\r\n private isAutoBalanceButtonDisabled(): boolean {\r\n return (this.model.lastSearchParams != null && this.model.lastSearchParams.enterpriseId !== null) ||\r\n this.isHubNotBalanced() ||\r\n this.model.unAuthorizedCount > 0;\r\n }\r\n\r\n private hasNoQuantitiesToAuthorize(): boolean {\r\n return this.model.unAuthorizedCount === 0;\r\n }\r\n\r\n private hasCapacityAllocatedQuantities(): boolean {\r\n return _.some(this.model.transportationSearchResults, x => x.status === 'Cap Allocated');\r\n }\r\n\r\n private buildSearchRequest(numberOfRowsAffected?: number, expandAll?: boolean): TransportatonSummaryRequest {\r\n const request = new TransportatonSummaryRequest();\r\n\r\n request.status = this.model.searchParams.status;\r\n request.gasDay = this.model.searchParams.gasDay;\r\n request.gasCycleCode = GasCycleLogic.buildGasCycleCodeForRequest(this.model.gasDayCycleStatuses, this.model.searchParams.gasCycleCode);\r\n request.enterpriseId = this.model.searchParams.enterpriseId;\r\n\r\n if (numberOfRowsAffected) {\r\n request.numberOfRecordsUpdated = numberOfRowsAffected;\r\n }\r\n\r\n if (expandAll) {\r\n request.expandAll = expandAll;\r\n }\r\n\r\n return request;\r\n }\r\n\r\n private defaultGasCycleCode(): string {\r\n if (this.typedParamsSet && !_.isNil(this.model.searchParams.gasCycleCode)\r\n && _.includes(this.model.launchedGasCycles.map(x => x.code), this.model.searchParams.gasCycleCode)) {\r\n this.typedParamsSet = false;\r\n return this.model.searchParams.gasCycleCode;\r\n }\r\n\r\n return GasCycleLogic.defaultGasCycleCode(this.model.gasDayCycleStatuses,\r\n this.model.gasDayCycleStatuses.defaultEarliestNonScheduled(true)?.gasCycle);\r\n }\r\n\r\n autoBalanceClicked(): void {\r\n if (this.hasUnsavedChanges()) {\r\n const yesNoModalOptions = new YesNoModalOptions('Discard Warning', 'Unsaved changes will be lost, would you like to continue?');\r\n this.modalService.show(yesNoModalOptions).subscribe((selectedModalOption: SelectedModalOption) => {\r\n if (selectedModalOption === SelectedModalOption.Yes) {\r\n this.applyAction();\r\n }\r\n });\r\n } else {\r\n this.applyAction();\r\n }\r\n }\r\n\r\n private applyAction() {\r\n this.appService.clearMessages();\r\n const gasDay = this.model.lastSearchParams.gasDay;\r\n this.autoBalanceService.autoBalanceCapacityAllocation(gasDay, this.model.lastSearchParams.gasCycleCode).subscribe(\r\n () => {\r\n // Do nothing with the result\r\n this.refreshGasDayCycleStatus();\r\n }, () => {\r\n this.model.autoBalanceButtonDisabled = true;\r\n });\r\n }\r\n\r\n public isReadOnlyMode(): boolean {\r\n if (this.model.isSentToMCAForCapacityAllocation === CapacityAllocationTypeService.Manual.value){\r\n return !(this.userHasWriteAccess() && this.hubIsBalanced());\r\n }\r\n\r\n if (this.model.isSentToMCAForCapacityAllocation === CapacityAllocationTypeService.MCA.value\r\n || this.model.isSentToMCAForCapacityAllocation === CapacityAllocationTypeService.CGL.value){\r\n return !(this.userHasWriteAccess() && this.hubIsBalanced() && this.model.forceEditMode);\r\n }\r\n\r\n return true;\r\n }\r\n userHasWriteAccess(): boolean {\r\n return this.capabilitiesService.hasCapabilities(['TransportationSummary-Write'], this.userService.user, this.sessionService.getPipeline().code);\r\n }\r\n\r\n updateTransportationSummaryEditMode(): Subscription {\r\n return this.gasCycleService\r\n .forceTransportationSummaryEditMode(this.model.lastSearchParams.gasDay, this.model.lastSearchParams.gasCycleCode, this.model.forceEditMode)\r\n .subscribe();\r\n }\r\n\r\n editModeToggled(): void {\r\n this.updateTransportationSummaryEditMode();\r\n this.model.isReadOnlyMode = this.isReadOnlyMode();\r\n this.model.copyButtonDisabled = this.isCopyButtonDisabled();\r\n }\r\n\r\n isCopyButtonDisabled(): boolean {\r\n return this.isHubNotBalanced() ||\r\n this.hasNoQuantitiesToAuthorize() ||\r\n this.hasCapacityAllocatedQuantities() ||\r\n this.model.isReadOnlyMode;\r\n }\r\n\r\n submitClicked(): void {\r\n if (this.submitting) { // Guard against dbl-click.\r\n return;\r\n }\r\n this.submitting = true;\r\n\r\n // Remove the messages if the router hasn't navigated\r\n this.appService.clearMessages();\r\n this.submitData();\r\n }\r\n\r\n private submitData(): void {\r\n this.gasCycleService.getGasCycleStatus(this.model.lastSearchParams.gasDay, this.model.lastSearchParams.gasCycleCode).pipe(\r\n mergeMap(response => response.forceTransportationSummaryEditMode === this.model.forceEditMode ?\r\n this.authorizeTransactions() : this.dataConflict()),\r\n finalize(() => this.submitting = false))\r\n .subscribe();\r\n }\r\n\r\n private dataConflict(): Observable {\r\n this.alertService.addInfoMessage(\"Info\", \"Edit mode has been turned off, changes were not saved.\");\r\n return this.performSearch();\r\n }\r\n\r\n private authorizeTransactions(): Observable {\r\n const transportationDetails = this.model.transportationSearchResults;\r\n this.tabs.saveEditData();\r\n let uniqueTransportation = new Array();\r\n if (transportationDetails && transportationDetails.length !== 0) {\r\n uniqueTransportation = _.uniqBy(transportationDetails, x => x.transactionId);\r\n }\r\n\r\n const nonTransportationDetails = this.model.nonTransportationSearchResults;\r\n let uniqueNonTransportation = new Array();\r\n if (nonTransportationDetails && nonTransportationDetails.length !== 0) {\r\n uniqueNonTransportation = _.uniqBy(nonTransportationDetails, x => x.transactionId);\r\n }\r\n\r\n let numRecordsUpdated = 0;\r\n\r\n return this.nominationTransactionService.authorizeDailyTransportationTransactions(this.buildRequest(uniqueTransportation)).pipe(\r\n tap(result => numRecordsUpdated += result),\r\n concatMap(() => this.nominationTransactionService.authorizeDailyTransferTransactions(this.buildTransferRequest(uniqueNonTransportation))),\r\n tap(result => numRecordsUpdated += result),\r\n tap(() => this.showAuthorizedViewIfRecordsWereUpdated(numRecordsUpdated)));\r\n }\r\n\r\n private showAuthorizedViewIfRecordsWereUpdated(numberOfRecordsUpdated: number): void {\r\n if (numberOfRecordsUpdated === 0) {\r\n this.alertService.addInfoMessage('Info', `No records were updated.`);\r\n return;\r\n }\r\n\r\n // Update the UI to show the latest results\r\n this.showAuthorizedView(numberOfRecordsUpdated);\r\n }\r\n\r\n private buildRequest(uniqueTransactions: TransportationTransactionSummaryDto[]): AuthorizeDailyTransportationTransactionsRequest {\r\n const dataToSubmit = uniqueTransactions.map(x => new AuthorizeDailyTransportationTransactionsData(x.transactionId, x.authorizedQuantity, x.deliveryLocationId, x.receiptLocationId, this.model.searchParams.gasCycleCode));\r\n const request = new AuthorizeDailyTransportationTransactionsRequest();\r\n request.pipeline = this.sessionService.getPipeline().code;\r\n request.gasCycleCode = this.model.searchParams.gasCycleCode;\r\n request.gasDay = this.model.searchParams.gasDay.toString();\r\n request.queryDateTime = this.model.queryDateTime;\r\n request.data = dataToSubmit;\r\n return request;\r\n }\r\n\r\n buildTransferRequest(uniqueTransactions: TransferTransactionSummaryDto[]): AuthorizeDailyTransferTransactionsRequest {\r\n const dataToSubmit = uniqueTransactions.map(x => new AuthorizeDailyTransferTransactionsData(x.transactionId, x.authorizedQuantity));\r\n const request = new AuthorizeDailyTransferTransactionsRequest();\r\n request.pipeline = this.sessionService.getPipeline().code;\r\n request.gasCycleCode = this.model.searchParams.gasCycleCode;\r\n request.gasDay = this.model.searchParams.gasDay.toString();\r\n request.queryDateTime = this.model.queryDateTime;\r\n request.data = dataToSubmit;\r\n return request;\r\n }\r\n\r\n private showAuthorizedView(numberOfRecordsUpdated): void {\r\n // We've saved changes, so now let's reset the model state\r\n // We need to do this so that perform search won't get hung up on the \"are changes made\" guard clause.\r\n this.resetModelState();\r\n\r\n // change back to All\r\n this.model.searchParams.status = null;\r\n this.model.searchParams.numberOfRowsAffected = numberOfRecordsUpdated;\r\n\r\n this.searchClicked();\r\n }\r\n\r\n private modelDataChanged(): void {\r\n this.model.modelDirty = true;\r\n }\r\n\r\n private isHubNotBalanced(): boolean {\r\n return !!this.model && this.model.gasDayCycleStatus !== 'Hubs Balanced';\r\n }\r\n\r\n private hubIsBalanced(): boolean {\r\n return !this.isHubNotBalanced();\r\n }\r\n\r\n copyClicked(): void {\r\n // Seb - Tabs need to control the copy action rather than just doing it at the model level\r\n // because there are is a big performance impact regarding the data grid and bulk updates\r\n if (!this.hasUnsavedChanges()) {\r\n this.copyAction();\r\n } else {\r\n const modalOptions = YesNoCancelModalService.getDefaultYesNoModalOptions();\r\n this.modalService.show(modalOptions).subscribe((selectedModalOption: SelectedModalOption) => {\r\n if (selectedModalOption === SelectedModalOption.Yes) {\r\n this.copyAction();\r\n }\r\n });\r\n }\r\n }\r\n\r\n private copyAction(): void {\r\n this.tabs.copy();\r\n this.modelDataChanged();\r\n }\r\n\r\n get showAuthorizedBy(): boolean {\r\n return this.model.isSentToMCAForCapacityAllocation !== CapacityAllocationTypeService.MCA.value &&\r\n !_.isNil(this.model.lastAuthorizedBy);\r\n }\r\n\r\n hasUnsavedChanges(): boolean {\r\n return this.model.modelDirty || this.model.hasValidationErrors;\r\n }\r\n\r\n navigationCancelled(): void {\r\n }\r\n\r\n resetModelState(): void {\r\n this.model.modelDirty = false;\r\n this.model.hasValidationErrors = false;\r\n }\r\n\r\n getDefaultChangesWillBeLostMessageOptions(): ModalOptions {\r\n return YesNoCancelModalService.getDefaultYesNoModalOptions();\r\n }\r\n\r\n onDataChanged(): void {\r\n this.model.modelDirty = true;\r\n this.model.haveAllAuthorizedValuesBeenFilledIn = AuthorizableQuantityTask.checkAllAuthQuantitiesHaveBeenProvided(this.model.transportationSearchResults) &&\r\n AuthorizableQuantityTask.checkAllAuthQuantitiesHaveBeenProvided(this.model.nonTransportationSearchResults);\r\n }\r\n\r\n onGasDayChanged(): void {\r\n // this will be fired even when a null value is returned from the date picker and don't want to reload with a bad date\r\n if (!this.model.searchParams.gasDay) { return; }\r\n\r\n // This will force the GasCycle to get set to the default for the GasDay.\r\n this.model.searchParams.gasCycleCode = null;\r\n this.loadSearchResources().subscribe(() => {});\r\n }\r\n\r\n public pdfReportClicked() {\r\n this.nominationTransactionService.queryTransportationSummaryReportPdf(this.buildPdfQueryParams()).subscribe((response) => {\r\n const mediaType = response.headers.get('content-type');\r\n const blob = new Blob([response.body], {type: mediaType});\r\n\r\n // from the content disposition, should be second element with =\"{filename}\" surrounding it\r\n const filename = response.headers.get('content-disposition').split(';')[1].trim().split('=')[1].replace(/\"/g, '');\r\n FileSaver.saveAs(blob, filename);\r\n });\r\n }\r\n\r\n setIsEditModeAvailable() {\r\n const validRoles = [\r\n `${this.model.pipeline.code}_${User.NominationAdministratorRole}`,\r\n `${this.model.pipeline.code}_${User.NominationAnalystRole}`\r\n ];\r\n\r\n this.model.isEditModeAvailable = (\r\n this.model.isSentToMCAForCapacityAllocation === CapacityAllocationTypeService.MCA.value\r\n || this.model.isSentToMCAForCapacityAllocation === CapacityAllocationTypeService.CGL.value\r\n ) && this.model.user.hasAnyRole(validRoles);\r\n }\r\n\r\n isEditModeVisible() : boolean {\r\n return this.model.isEditModeAvailable && this.model.searchHasBeenPerformed;\r\n }\r\n\r\n isAuthorizedByVisibleExternal() : boolean {\r\n return this.model.isSentToMCAForCapacityAllocation !== CapacityAllocationTypeService.MCA.value && !this.model.userIsInternal;\r\n }\r\n\r\n isAuthorizedByVisibleInternal() : boolean {\r\n return this.model.isSentToMCAForCapacityAllocation !== CapacityAllocationTypeService.MCA.value && this.model.userIsInternal;\r\n }\r\n}\r\n\r\nclass AuthorizationInfo {\r\n public authorizedDate: Date;\r\n public authorizedBy: string;\r\n\r\n constructor(authorizedDateTime: string, authorizedBy: string) {\r\n this.authorizedBy = authorizedBy;\r\n this.authorizedDate = DateTime.parse(authorizedDateTime).toDate();\r\n }\r\n}\r\n","export class ConfirmationStatus {\r\n public static Exceptions: ConfirmationStatus = new ConfirmationStatus('exceptions', 'Exceptions');\r\n public static NotStarted: ConfirmationStatus = new ConfirmationStatus('NotStarted', 'Not Started');\r\n public static AwaitingConfirmation: ConfirmationStatus = new ConfirmationStatus('AwaitingConfirmation', 'Awaiting Confirmation');\r\n public static SendCR: ConfirmationStatus = new ConfirmationStatus('SendCR', 'Send CR');\r\n public static ConfirmationReceived: ConfirmationStatus = new ConfirmationStatus('ConfirmationReceived', 'Confirmation Received');\r\n public static Confirmed: ConfirmationStatus = new ConfirmationStatus('Confirmed', 'Confirmed');\r\n public static AutoBalancing: ConfirmationStatus = new ConfirmationStatus('AutoBalancing', 'Auto Balancing');\r\n public static Balanced: ConfirmationStatus = new ConfirmationStatus('Balanced', 'Balanced');\r\n\r\n public static Statuses: ConfirmationStatus[] = [\r\n ConfirmationStatus.Exceptions,\r\n ConfirmationStatus.NotStarted,\r\n ConfirmationStatus.SendCR,\r\n ConfirmationStatus.AwaitingConfirmation,\r\n ConfirmationStatus.ConfirmationReceived,\r\n ConfirmationStatus.AutoBalancing,\r\n ConfirmationStatus.Balanced,\r\n ConfirmationStatus.Confirmed\r\n ];\r\n\r\n constructor(public value: string, public name: string) {\r\n }\r\n}\r\n\r\n","import {IGasDay, IGasMonth} from \"@model/gas-day-month.interface\";\r\nimport {ConfirmationDetailCsvRow} from \"app/gcts/nomination/confirmation-details/confirmation-details.model\";\r\nimport {GasDayCycle} from \"app/shared/classes/gas-day-cycle\";\r\nimport {GasDay} from \"app/shared/classes/gas-day\";\r\n\r\nexport abstract class ConfirmationRequestFactory {\r\n\r\n public static CreateSendCrRequest(locationIds: string[], gasDay: IGasDay, gasCycleCode: string): SendCrRequest {\r\n const req = new SendCrRequest();\r\n req.locationIds = locationIds;\r\n req.gasDay = gasDay;\r\n req.gasCycleCode = gasCycleCode;\r\n return req;\r\n }\r\n\r\n public static CreateBaseConfirmationRequest(gasDay: IGasDay, gasCycleCode: string, locationId: number, id: string = \"\"): BaseConfirmationDetailsRequest {\r\n const req = new BaseConfirmationDetailsRequest();\r\n if (id !== \"\") req.id = id;\r\n req.gasDay = gasDay;\r\n req.gasCycleCode = gasCycleCode;\r\n req.locationId = locationId;\r\n return req;\r\n }\r\n\r\n public static CreateConfirmationHistoryRequest(gasDay: IGasDay, gasCycleCode: string, locationId: number, beforeConfirmationRequestId: number): ConfirmationDetailsHistoryRequest {\r\n const req = new ConfirmationDetailsHistoryRequest();\r\n req.gasDay = gasDay;\r\n req.gasCycleCode = gasCycleCode;\r\n req.locationId = locationId;\r\n req.beforeConfirmationRequestId = beforeConfirmationRequestId;\r\n return req;\r\n }\r\n\r\n public static CreateValidateConfirmationCsvRequest(gasDay: IGasDay, gasCycleCode: string, locationId: number,\r\n rows: ConfirmationDetailCsvRow[]): ValidateConfirmationCsvRequest {\r\n const req = new ValidateConfirmationCsvRequest();\r\n req.gasDay = gasDay;\r\n req.gasCycleCode = gasCycleCode;\r\n req.locationId = locationId;\r\n req.confirmationDetailCsvRows = rows;\r\n return req;\r\n }\r\n\r\n}\r\n\r\nexport class BaseConfirmationDetailsRequest {\r\n id: string;\r\n gasDay: IGasDay;\r\n gasCycleCode: string;\r\n locationId: number;\r\n}\r\n\r\nexport class SendCrRequest extends BaseConfirmationDetailsRequest {\r\n locationIds: string[];\r\n}\r\n\r\nexport class ConfirmationDetailsHistoryRequest extends BaseConfirmationDetailsRequest {\r\n beforeConfirmationRequestId: number;\r\n}\r\n\r\nexport class ValidateConfirmationCsvRequest extends BaseConfirmationDetailsRequest {\r\n confirmationDetailCsvRows: ConfirmationDetailCsvRow[];\r\n\r\n public createPostBody(): any {\r\n return {\r\n gasDay: this.gasDay.toString(),\r\n gasCycleCode: this.gasCycleCode,\r\n locationId: this.locationId,\r\n confirmationDetailCsvRows: this.confirmationDetailCsvRows\r\n };\r\n }\r\n}\r\n\r\nexport class ConfirmationEventHistorySearchRequest {\r\n gasDay: IGasDay;\r\n gasCycleCode: string;\r\n locationId: number;\r\n}\r\n\r\nexport class CustodyTransferReportRequest {\r\n gasMonth: IGasMonth;\r\n locationIds: number[];\r\n reportType: string;\r\n}\r\n\r\n\r\nexport class DailyConfirmationTransaction {\r\n\r\n id: number;\r\n pipelineSystemId: number;\r\n enterpriseId: number;\r\n status: string;\r\n transactionType: string;\r\n debitGasAccountId: number;\r\n debitLocationId: number;\r\n debitNominationGroupId: number;\r\n creditGasAccountId: number;\r\n creditLocationId: number;\r\n creditNominationGroupId: number;\r\n nominatedEnergy: number;\r\n nominatedEnergyDth: number;\r\n confirmedEnergy?: number;\r\n scheduledFlowRate: number;\r\n scheduledEnergy: number;\r\n scheduledEnergyDth: number;\r\n packageId: string;\r\n gasDay: string;\r\n gasCycleCode: string;\r\n reductionReasonCode: string;\r\n event: string;\r\n rank: number;\r\n upDownContract: string;\r\n counterParty: string;\r\n nominationGroupId: number;\r\n confirmedEnergyDth?: number; // Not Part of Object returned from Server\r\n}\r\n\r\nexport class ConfirmationRequestDetail {\r\n id: number;\r\n flowDirection: string;\r\n serviceRequestorEnterpriseId: number;\r\n nominationGroupId: number;\r\n upDownContract: string;\r\n counterParty: string;\r\n packageId: string;\r\n flowRate: number;\r\n confirmedEnergyGj: number;\r\n confirmedEnergyDth: number;\r\n}\r\n\r\nexport class Tuple {\r\n item1: DailyConfirmationTransaction;\r\n item2: ConfirmationRequestDetail;\r\n}\r\n\r\nexport class ConfirmationRequest {\r\n id: number;\r\n pipelineId: number;\r\n locationIsStandingRequestUsed: boolean;\r\n locationGasDayCycleStatusId: number;\r\n locationId: number;\r\n enterpriseId: number;\r\n effectiveGasCycleId: number;\r\n effectiveGasDay: string;\r\n lastModByUserId: string;\r\n lastModDateTime: string;\r\n confirmationTransactions: Tuple[];\r\n csvUploadErrors: ConfirmationRequestCsvUploadErrors[];\r\n}\r\n\r\nexport class ConfirmationRequestCsvUploadErrors {\r\n row: ConfirmationDetailCsvRow;\r\n rowNumber: number;\r\n error: string;\r\n}\r\n\r\nexport class ConfirmationHistoryDto {\r\n id: number;\r\n gasCycle: string;\r\n gasCycleCode: string;\r\n gasDay: string;\r\n cycleStatus: string;\r\n createDateTime: string;\r\n createByUserId: string;\r\n}\r\n\r\nexport class ConfirmationEventHistoryDto {\r\n id: number;\r\n pipelineId: number;\r\n locationId: number;\r\n gasDayCycle: GasDayCycle;\r\n eventPerformed: string;\r\n createByUserId: string;\r\n createDateTime: string;\r\n lastModByUserId: string;\r\n lastModDateTime: string;\r\n showLink: boolean;\r\n ediFileSent: boolean;\r\n}\r\n\r\nexport class ConfirmationHistoryRequest {\r\n fromGasDay: GasDay;\r\n toGasDay: GasDay;\r\n locationId: number;\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Gas Day: {{model.lastSearchParams?.gasDay | gasDayFormat}}\r\n Operator: {{model.lastSearchParams?.enterpriseId | displayName: 'id' : 'displayValue' : model.operators}}\r\n Cycle (CCT): {{model.lastSearchParams?.gasCycleCode | displayName: 'code' : 'displayValue' : model.gasCycles : 'EOD' }}\r\n Status: {{model.lastSearchParams?.status | displayName: 'value' : 'name' : model.statuses}}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.gasDay | gasDayFormat}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.gasCycleCode | displayName: 'code' : 'displayValue' : model.gasCycles : 'EOD' }}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.gasDayCycleStatus?.status}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.enterpriseId | displayName: 'id' : 'displayValue' : model.operators }}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.status | displayName: 'value' : 'name' : model.statuses }}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n Number of Confirmations found: {{model.searchResults.length}}\r\n
\r\n \r\n\r\n \r\n \r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n\r\n","import {forkJoin, Observable, of} from 'rxjs';\r\nimport {concatMap, tap} from 'rxjs/operators';\r\nimport * as dx from \"devextreme/core/renderer\";\r\nimport {Component, Renderer2, ViewChild} from '@angular/core';\r\nimport * as _ from 'lodash';\r\nimport {AppService} from '@shared/services/webapp/app/app.service';\r\nimport {GasCycleService, LocationGasDayCycleStatusDto, LocationGasDayCycleStatusRequest} from '@shared/services/nomination/gas-cycle/gas-cycle.service';\r\nimport {GasCycle} from '@model/gas-cycle';\r\nimport {ActivatedRoute, Params, Router} from '@angular/router';\r\nimport {EnterpriseSearchParams, NominationEnterprise, NominationEnterpriseService} from \"@shared/services/nomination/nomination-enterprise/nomination-enterprise.service\";\r\nimport {NominationEnterpriseEnrichmentService} from '@shared/services/nomination/nomination-enterprise-enrichment/nomination-enterprise-enrichment.service';\r\nimport {NominationLocationEnrichmentService} from '@shared/services/nomination/nomination-location-enrichment/nomination-location-enrichment.service';\r\nimport {NominationSystemService} from '@shared/services/nomination/nomination-system/nomination-system.service';\r\nimport {ParamValidator} from '@model/validators/param-validator';\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {ConfirmationService} from \"@shared/services/nomination/confirmation/confirmation.service\";\r\nimport {UserService} from \"@shared/services/webapp/user/user-service\";\r\nimport {IGasDay} from \"@model/gas-day-month.interface\";\r\nimport {SimpleGasDayCycleStatus} from \"@model/simple-gas-day-cycle-status\";\r\nimport {GasDayCycleStatusCollection} from \"@model/gas-day-cycle-status-collection\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {BaseViewModel} from \"@model/base-view-model\";\r\nimport {NominationPipelineGasDay} from \"@model/nomination-pipeline-gas-day\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {ConfirmationStatus} from \"@model/confirmation-status\";\r\nimport {ConfirmationRequestFactory} from \"@shared/services/nomination/confirmation/confirmation-models\";\r\nimport {GasCycleLogic} from \"@model/gas-cycle.logic\";\r\nimport {AlertService} from \"app/shared/services/webapp/alert/alert.service\";\r\nimport {GasDaySearchResourceTracker} from \"@model/gas-day-search-resource-tracker\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {AutoBalanceService} from \"@shared/services/nomination/auto-balance/auto-balance.service\";\r\n\r\nexport class ConfirmationMonitorSearchParams {\r\n gasDay: IGasDay;\r\n gasDayIsValid = true;\r\n gasCycleCode: string;\r\n status: string = ConfirmationStatus.Exceptions.value;\r\n enterpriseId?: number;\r\n}\r\n\r\nexport class LocationGasDayCycleStatus extends LocationGasDayCycleStatusDto {\r\n locationName: string;\r\n operatorMnemonic: string;\r\n operatorShortName: string;\r\n statusName: string;\r\n operatorName: string;\r\n}\r\n\r\nexport class ConfirmationMonitorModel extends BaseViewModel {\r\n pipelineGasDay: NominationPipelineGasDay;\r\n gasDayCycleStatuses: GasDayCycleStatusCollection = GasDayCycleStatusCollection.create();\r\n gasCycles: GasCycle[] = [];\r\n launchedGasCycles: GasCycle[] = [];\r\n operators: NominationEnterprise[] = [];\r\n statuses: ConfirmationStatus[] = [];\r\n\r\n minGasDay: GasDay = null;\r\n maxGasDay: GasDay = null;\r\n\r\n searchParams = new ConfirmationMonitorSearchParams();\r\n lastSearchParams: ConfirmationMonitorSearchParams = null;\r\n searchResults: LocationGasDayCycleStatus[] = null;\r\n searchResultsCount?: number;\r\n\r\n gasDayCycleStatus: SimpleGasDayCycleStatus;\r\n cycleAutoBalanceDisabled: boolean;\r\n\r\n selectAll: boolean = false;\r\n}\r\n\r\n@Component({\r\n selector: 'app-confirmation-monitor',\r\n templateUrl: './confirmation-monitor.component.html',\r\n styleUrls: ['./confirmation-monitor.component.css']\r\n})\r\nexport class ConfirmationMonitorComponent extends BaseSearchComponent {\r\n defaultGasDay: GasDay;\r\n model = new ConfirmationMonitorModel();\r\n private gasDayTracker: GasDaySearchResourceTracker = new GasDaySearchResourceTracker();\r\n\r\n @ViewChild(DxDataGridComponent) confirmationMonitorDataGrid: DxDataGridComponent;\r\n\r\n constructor(protected appService: AppService,\r\n protected router: Router,\r\n protected activatedRoute: ActivatedRoute,\r\n protected nominationSystemService: NominationSystemService,\r\n protected gasCycleService: GasCycleService,\r\n protected nominationEnterpriseService: NominationEnterpriseService,\r\n protected nominationLocationEnrichmentService: NominationLocationEnrichmentService,\r\n protected nominationEnterpriseEnrichmentService: NominationEnterpriseEnrichmentService,\r\n protected confirmationService: ConfirmationService,\r\n protected alertService: AlertService,\r\n protected userService: UserService,\r\n protected renderer: Renderer2,\r\n protected sessionService: SessionService,\r\n protected autoBalanceService: AutoBalanceService) {\r\n super('Confirmation Monitor', appService, activatedRoute, router, alertService);\r\n }\r\n\r\n public onGasDayChanged = (): void => {\r\n // this will be fired even when a null value is returned from the date picker and don't want to reload with a bad date\r\n if (!this.model.searchParams.gasDay) return;\r\n // This will force the GasCycle to get set to the default for the GasDay.\r\n this.model.searchParams.gasCycleCode = null;\r\n\r\n this.loadSearchResources().subscribe(() => {});\r\n };\r\n\r\n public sendCrClicked(): void {\r\n const locations = _.map(_.filter(this.model.searchResults, x => x['isSelected'] === true ), x => x.locationId); // don't add 'edi===Y' rows\r\n const gasDay = this.model.lastSearchParams.gasDay;\r\n const request = ConfirmationRequestFactory.CreateSendCrRequest(locations, gasDay, this.model.lastSearchParams.gasCycleCode);\r\n this.confirmationService.sendCrConfirmation(request).subscribe(() => {\r\n this.searchClicked();\r\n this.alertService.addSuccessMessage(\"Success\", \"Confirmations sent\" );\r\n });\r\n }\r\n\r\n public pdfClicked(): void {\r\n const gasDay = this.model.lastSearchParams.gasDay;\r\n\r\n const gasCycleCode =\r\n !!this.model.lastSearchParams.gasCycleCode ?\r\n GasCycleLogic.buildGasCycleCodeForRequest(this.model.gasDayCycleStatuses, this.model.lastSearchParams.gasCycleCode) :\r\n GasCycle.EODCode;\r\n\r\n const locationIds = _.map(_.filter(this.model.searchResults, x => x['isSelected'] === true ), x => +x.locationId); // don't add 'edi===Y' rows\r\n\r\n this.confirmationService\r\n .downloadConfirmationRequestPdf(gasDay, gasCycleCode, locationIds)\r\n .subscribe(response => {\r\n this.searchClicked();\r\n this.savePdfFile(response);\r\n });\r\n }\r\n\r\n public onCellPrepared = (e) => {\r\n if (e.rowType === 'data') {\r\n if (e.column.dataField === 'varianceCount') {\r\n const data = e.data as LocationGasDayCycleStatus;\r\n if (data.varianceCountHasRedVariance) {\r\n this.renderer.addClass(e.cellElement, 'red');\r\n }\r\n } else if (e.column.command === 'select') {\r\n if (e.data.edi !== '') {\r\n const cellElement = dx(e.cellElement);\r\n cellElement.find('.dx-select-checkbox').css(\"display\", \"none\");\r\n }\r\n }\r\n }\r\n };\r\n\r\n public locationClicked(event): void {\r\n this.router.navigate(['/app', this.getPipelineCode(), 'confirmationdetails'], {queryParams: {\r\n gasDay: this.model.lastSearchParams.gasDay,\r\n gasCycleCode: this.model.lastSearchParams.gasCycleCode,\r\n enterpriseId: this.model.lastSearchParams.enterpriseId,\r\n locationId: event.data.locationId\r\n }}).then(() => {});\r\n }\r\n\r\n public isPdfButtonDisabled(): boolean {\r\n return !this.model.searchResults || !this.hasSelectedRows();\r\n }\r\n\r\n public isSendCrButtonDisabled(): boolean {\r\n return !this.model.searchResults ||\r\n (!_.isNil(this.model.gasDayCycleStatus) && this.model.gasDayCycleStatus.status === SimpleGasDayCycleStatus.ScheduledStatus) ||\r\n !this.hasSelectedRows();\r\n }\r\n\r\n public gasCyclePlaceholder(): string {\r\n return GasCycleLogic.placeholder(this.model.gasDayCycleStatuses);\r\n }\r\n\r\n public isGasCycleRequired(): boolean {\r\n return GasCycleLogic.isRequired(this.model.gasDayCycleStatuses);\r\n }\r\n\r\n public canSelect(edi: string): boolean {\r\n return edi !== 'Y'; // don't add 'edi===Y' rows, can't select if the location is edi\r\n }\r\n\r\n public unselectAll(): void {\r\n this.model.selectAll = false;\r\n }\r\n\r\n public selectAllClicked(): void {\r\n this.model.selectAll = !this.model.selectAll;\r\n\r\n for(const locationGasDayCycleStatus of this.model.searchResults) {\r\n locationGasDayCycleStatus['isSelected'] = this.canSelect(locationGasDayCycleStatus.edi)\r\n ? this.model.selectAll\r\n : false;\r\n }\r\n }\r\n\r\n public hasSelectedRows(): boolean {\r\n return _.some(this.model.searchResults, x => x['isSelected'] === true);\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n this.appService.hideMenu();\r\n this.appService.clearMessages();\r\n\r\n const serviceCalls = [\r\n this.nominationSystemService.pipelineGasDay()\r\n ];\r\n\r\n return forkJoin(serviceCalls).pipe(tap(responses => {\r\n const pipelineGasDay = responses[0];\r\n\r\n if (!pipelineGasDay.hasGasDayCycles()) {\r\n this.alertService.addWarnMessage(\"Warning\", \"There are no Gas Day Cycles for the pipeline.\");\r\n return;\r\n }\r\n\r\n this.model.pipelineGasDay = pipelineGasDay;\r\n this.defaultGasDay = pipelineGasDay.actualGasDay.isGreaterThan(pipelineGasDay.earliestSelectableGasDay) ?\r\n pipelineGasDay.actualGasDay :\r\n pipelineGasDay.earliestSelectableGasDay;\r\n this.model.minGasDay = pipelineGasDay.minGasDayForCycleStatus.isLessThan(this.defaultGasDay) ?\r\n pipelineGasDay.minGasDayForCycleStatus :\r\n this.defaultGasDay;\r\n this.model.maxGasDay = pipelineGasDay.maxGasDayForCycleStatus.isGreaterThan(this.defaultGasDay) ?\r\n pipelineGasDay.maxGasDayForCycleStatus :\r\n this.defaultGasDay;\r\n }));\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return this.gasDayCycleParamValidator().isValid(params);\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams = new ConfirmationMonitorSearchParams();\r\n this.model.searchResults = undefined;\r\n this.model.searchParams.gasDay = this.defaultGasDay;\r\n }\r\n\r\n protected setSearchParams(params: TypedParams): void {\r\n const gasDay = params.asGasDay('gasDay');\r\n const gasCycle = params.asNullableString('gasCycleCode');\r\n this.model.searchParams.gasDay = gasDay;\r\n this.model.searchParams.gasCycleCode = gasCycle;\r\n\r\n this.setCommonSearchParamsFromRoute(params);\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n if (this.gasDayTracker.previouslyLoadedForSameGasDay(this.model.searchParams.gasDay)) {\r\n // Set GasDay dependent fields to defaults.\r\n if (!this.model.searchParams.gasCycleCode) {\r\n this.model.searchParams.gasCycleCode = this.defaultGasCycleCode();\r\n }\r\n\r\n // TODO: Figure out why removing this causes the typed search filter to stay in the customer drop down.\r\n this.model.operators = _.orderBy(this.model.operators, x => x.displayValue);\r\n this.postLoadSearchResources();\r\n return of(null);\r\n }\r\n\r\n const gasDay = this.model.searchParams.gasDay;\r\n\r\n const serviceCalls: Observable[] = [\r\n this.gasCycleService.queryGasDayCycleStatusesFor(gasDay), // 0\r\n this.nominationEnterpriseService.queryLocationOperatorsByPipeline({\r\n gasDay: gasDay, gasAccountType: null, serviceType: null, isLocationOperator: null, includeInactive: false, accountBusinessRights: null, ignoreExternalNomGroupFilter: null})\r\n ];\r\n\r\n return forkJoin(serviceCalls).pipe(tap(responses => {\r\n this.model.statuses = ConfirmationStatus.Statuses;\r\n\r\n // 0 - Gas Day Cycle Status\r\n const gasDayCycleStatuses = responses[0];\r\n this.model.gasDayCycleStatuses = gasDayCycleStatuses;\r\n this.model.gasCycles = gasDayCycleStatuses.gasCycles();\r\n this.model.launchedGasCycles = gasDayCycleStatuses.defaultGasDayCycleStatuses().gasCycles();\r\n\r\n // Only set this if there isn't a value - it gets cleared when a user changes the GasDay\r\n if (!this.model.searchParams.gasCycleCode) {\r\n this.model.searchParams.gasCycleCode = this.defaultGasCycleCode();\r\n }\r\n\r\n // 1 - Enterprise\r\n this.model.operators = responses[1];\r\n this.postLoadSearchResources();\r\n\r\n this.gasDayTracker.markLastLoadedGasDay(this.model.searchParams.gasDay);\r\n this.verifyForValidSelectedParameters();\r\n }));\r\n }\r\n\r\n private postLoadSearchResources() {\r\n if (this.model.operators.length === 0) {\r\n this.alertService.clearMessages();\r\n\r\n if (!this.userService.user.isInternalUser || this.userService.user.isAssumingIdentity) {\r\n this.alertService.addWarnMessage('Warning', `Operators where not found for ${this.userService.user.assumedEnterpriseDisplayName} for Gas Day ${this.model.searchParams.gasDay.toDisplayFormat()}`);\r\n }\r\n }\r\n\r\n if (this.model.operators.length === 1) {\r\n this.model.searchParams.enterpriseId = this.model.operators[0].id;\r\n }\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n const searchRequest = this.buildQueryParams();\r\n let searchResults: LocationGasDayCycleStatus[] = [];\r\n\r\n const cycleAutoBalanceDisabled$ = this.gasCycleService.shouldDisableAutoBalanceLocation(this.model.searchParams.gasDay,\r\n GasCycleLogic.buildGasCycleCodeForRequest(this.model.gasDayCycleStatuses, this.model.searchParams.gasCycleCode))\r\n .pipe(tap(value => this.model.cycleAutoBalanceDisabled = value));\r\n\r\n const serviceCalls: Observable[] = [\r\n this.getAllLocationGasCycleStatuses(searchRequest),\r\n this.gasCycleService.getGasCycleStatus(this.model.searchParams.gasDay, GasCycleLogic.buildGasCycleCodeForRequest(this.model.gasDayCycleStatuses, this.model.searchParams.gasCycleCode)),\r\n cycleAutoBalanceDisabled$\r\n ];\r\n\r\n return forkJoin(serviceCalls).pipe(tap(response => {\r\n searchResults = response[0] as Array;\r\n searchResults.forEach(item => {\r\n item.operatorName = item.operatorShortName + ' (' + item.operatorMnemonic + ')';\r\n item.statusName = ConfirmationStatus[item.status].name;\r\n });\r\n this.model.searchResults = searchResults;\r\n this.model.searchResultsCount = searchResults.length;\r\n this.model.gasDayCycleStatus = response[1];\r\n }));\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const request = new LocationGasDayCycleStatusRequest();\r\n\r\n request.gasDay = this.model.searchParams.gasDay;\r\n request.gasCycleCode = this.model.searchParams.gasCycleCode;\r\n request.enterpriseId = this.model.searchParams.enterpriseId;\r\n switch (this.model.searchParams.status) {\r\n // no status selected\r\n case '':\r\n case undefined:\r\n case null:\r\n request.exceptionsOnly = false;\r\n request.status = null;\r\n break;\r\n case ConfirmationStatus.Exceptions.value:\r\n request.exceptionsOnly = true;\r\n request.status = null;\r\n break;\r\n default:\r\n request.exceptionsOnly = false;\r\n request.status = this.model.searchParams.status;\r\n break;\r\n }\r\n\r\n return request;\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n if (this.confirmationMonitorDataGrid) {\r\n this.confirmationMonitorDataGrid.instance.clearSorting();\r\n this.confirmationMonitorDataGrid.instance.columnOption('locationName', {sortOrder: 'asc', sortIndex: 0});\r\n this.confirmationMonitorDataGrid.instance.columnOption('operatorName', {sortOrder: 'asc', sortIndex: 1});\r\n this.confirmationMonitorDataGrid.instance.clearSelection();\r\n }\r\n }\r\n\r\n private gasDayCycleParamValidator(): ParamValidator {\r\n const gasDayCycleParamValidator = ParamValidator.Standard();\r\n\r\n gasDayCycleParamValidator.isGasDay('gasDay');\r\n gasDayCycleParamValidator.isString('gasCycleCode', true); // Optional for EOD\r\n\r\n return gasDayCycleParamValidator;\r\n }\r\n\r\n private getAllLocationGasCycleStatuses(searchParams: LocationGasDayCycleStatusRequest): Observable {\r\n return this.gasCycleService.queryAllLocationGasCycleStatuses(searchParams).pipe(\r\n concatMap(response => {\r\n return forkJoin([\r\n this.nominationEnterpriseEnrichmentService.enrichArray(response, 'operatorId', 'operator'),\r\n this.nominationLocationEnrichmentService.enrichArray(response, 'locationId', 'location')\r\n ]).pipe(concatMap(() => of(response)));\r\n }));\r\n }\r\n\r\n private setCommonSearchParamsFromRoute(params: TypedParams): void {\r\n if (params) {\r\n const enterpriseId = params.asNullableNumber('enterpriseId');\r\n if (!isNaN(enterpriseId)) {\r\n this.model.searchParams.enterpriseId = enterpriseId;\r\n }\r\n if (params.asBoolean('exceptionsOnly')) {\r\n this.model.searchParams.status = ConfirmationStatus.Exceptions.value;\r\n } else if (!params.getParams['status']) {\r\n this.model.searchParams.status = '';\r\n } else {\r\n this.model.searchParams.status = _.find(ConfirmationStatus.Statuses, x => x.value === params.getParams['status']).value;\r\n }\r\n }\r\n }\r\n\r\n private defaultGasCycleCode(): string {\r\n return GasCycleLogic.defaultGasCycleCode(this.model.gasDayCycleStatuses, this.model.gasDayCycleStatuses.defaultEarliestNonScheduled()?.gasCycle);\r\n }\r\n\r\n private verifyForValidSelectedParameters(): void {\r\n // Reset Gas Cycle, if the current selected gas cycle does not exist in the new Gas Cycles\r\n this.model.searchParams.gasCycleCode = GasCycleLogic.verifySelectedGasCycleCode(this.model.gasDayCycleStatuses, this.model.gasCycles, this.model.searchParams.gasCycleCode);\r\n }\r\n\r\n isAutoBalanceDisabled(): boolean {\r\n if (!this.model.searchResults || !this.model.gasDayCycleStatus || this.model.cycleAutoBalanceDisabled == null) return true;\r\n const noVariance = !this.model.searchResults.some(r => r.varianceCount != 0 && r.varianceCount != null);\r\n return this.model.gasDayCycleStatus.status !== SimpleGasDayCycleStatus.Preliminary\r\n || this.model.cycleAutoBalanceDisabled || noVariance;\r\n }\r\n\r\n autoBalanceClicked() {\r\n this.autoBalanceService.autoBalanceAllLocations(this.model.searchParams.gasDay, this.model.searchParams.gasCycleCode)\r\n .subscribe();\r\n }\r\n\r\n canAutoBalance(): boolean {\r\n return this.sessionService.getPipeline().allowAllLocationConfirmation;\r\n }\r\n}\r\n","import {IGasDay} from \"@model/gas-day-month.interface\";\r\n\r\nexport class AutoBalanceRequestFactory {\r\n public static CreateAutoBalanceLocationRequest(gasDay: IGasDay, gasCycleCode: string, locationId: number) {\r\n const req = new AutoBalanceLocationRequest();\r\n req.gasDay = gasDay;\r\n req.gasCycleCode = gasCycleCode;\r\n req.locationId = locationId;\r\n return req;\r\n }\r\n}\r\n\r\n\r\nexport class AutoBalanceBaseRequest {\r\n gasDay: IGasDay;\r\n gasCycleCode?: string;\r\n}\r\n\r\nexport class AutoBalanceLocationRequest extends AutoBalanceBaseRequest {\r\n locationId: number;\r\n}\r\n","export class BaseCsvModel {\r\n filename: string;\r\n headers: string[];\r\n columns: string[];\r\n data: T[];\r\n}\r\n","import {ConfirmationDetailsComponent} from \"./confirmation-details.component\";\r\nimport {GasCycle} from \"@model/gas-cycle\";\r\nimport {NominationGroup} from \"@shared/services/nomination/nomination-nom-group/nomination-nom-group.service\";\r\nimport {NominationEnterprise} from \"@shared/services/nomination/nomination-enterprise/nomination-enterprise.service\";\r\nimport {SimpleGasDayCycleStatus} from \"@model/simple-gas-day-cycle-status\";\r\nimport {NominationLocation} from \"@shared/services/nomination/nomination-location/nomination-location.service\";\r\nimport {ConfirmationStatus} from \"@model/confirmation-status\";\r\nimport {IGasDay} from \"@model/gas-day-month.interface\";\r\nimport {LocationGasDayCycleStatusDto} from \"@shared/services/nomination/gas-cycle/gas-cycle.service\";\r\nimport {BaseCsvModel} from \"@model/base-csv-model\";\r\nimport * as _ from 'lodash';\r\nimport {UploadError} from \"@model/upload-error\";\r\nimport {GasDayCycleStatusCollection} from \"@model/gas-day-cycle-status-collection\";\r\nimport {\r\n ConfirmationRequest,\r\n ConfirmationRequestDetail, DailyConfirmationTransaction, Tuple\r\n} from \"app/shared/services/nomination/confirmation/confirmation-models\";\r\nimport {GasDay} from \"@model/gas-day\";\r\n\r\nexport class ConfirmationDetailsModel {\r\n defaultGasDay: IGasDay;\r\n minGasDay: GasDay;\r\n maxGasDay: GasDay;\r\n gasDayCycleStatuses: GasDayCycleStatusCollection = GasDayCycleStatusCollection.create();\r\n gasCycles: GasCycle[] = [];\r\n launchedGasCycles: GasCycle[] = [];\r\n filteredLaunchedGasCycles: GasCycle[] = [];\r\n openGasDayCycleStatus: SimpleGasDayCycleStatus = null;\r\n timelyOpenGasDayCycle: SimpleGasDayCycleStatus = null;\r\n filteredLocations: NominationLocation[] = [];\r\n locations: NominationLocation[] = [];\r\n confirmationStatuses: ConfirmationStatus[];\r\n requestGasDayCycleInEffect: string;\r\n searchParams: ConfirmationDetailsSearchParam = new ConfirmationDetailsSearchParam();\r\n lastSearchParams: ConfirmationDetailsSearchParam;\r\n isStsGasCycle: boolean;\r\n confirmationQuantityLabel: string;\r\n\r\n allowAllLocationConfirmation: boolean;\r\n disableAutoBalanceLocation: boolean;\r\n\r\n confirmationResponseInfo: ConfirmationResponseInfo;\r\n\r\n locationIsThreaded: boolean;\r\n locationIsConfirmedWithPackageId: boolean;\r\n locationIsConfirmedWithAgaEdi: boolean;\r\n locationIsDth: boolean;\r\n locationGasDayCycleStatus: LocationGasDayCycleStatusDto;\r\n gasDayCycleStatus: SimpleGasDayCycleStatus;\r\n confirmationRequest: ConfirmationRequest;\r\n data: ConfirmationRequestDetailGridItem[];\r\n hasConfirmationsEntered: boolean = false;\r\n submittedBy: string;\r\n\r\n windowWidth: number = window.innerWidth;\r\n confirmationRecordCount: number = 0;\r\n showFilterSection = true;\r\n isReadOnlyMode: boolean;\r\n preserveExistingData: boolean;\r\n isExternal: boolean = false;\r\n\r\n // PPA\r\n pageViewIsInPPAState: boolean = false;\r\n isPPAAnalyst: boolean = false;\r\n isPPAAdmin: boolean = false;\r\n pageIsReadOnly: boolean = false;\r\n pageIsUneditable: boolean = true;\r\n\r\n\r\n // todo: KC split below out into it's own upload component ?\r\n dataWasUploaded: boolean = false;\r\n isUploading: boolean = false;\r\n uploadFileName: string = '';\r\n uploadedData: Array = new Array();\r\n uploadErrors: Array = new Array();\r\n // -----------------------------------------------\r\n\r\n hasValidationErrors: boolean = false;\r\n modelDirty: boolean = false;\r\n locationShowFlowRateOnConfirmation: boolean;\r\n\r\n public static convertDthToGj(dthValue: number): number {\r\n return Math.round(dthValue * 1.055056);\r\n }\r\n\r\n public static convertGjToDth(dthValue: number): number {\r\n return Math.round(dthValue / 1.055056);\r\n }\r\n\r\n public canViewForPPA(): boolean {\r\n if (this.isPPAAdmin) return true;\r\n return this.isPPAAnalyst && (this.timelyOpenGasDayCycle && this.searchParams.gasDay >= this.openGasDayCycleStatus.gasDay.previous());\r\n\r\n }\r\n\r\n public isLocationVirtual(): boolean {\r\n const selectedLocation = _.find(this.locations, x => x.id === this.lastSearchParams.locationId);\r\n return !!selectedLocation.glcLocationIdForMlVirtualLocation;\r\n }\r\n}\r\n\r\nexport class ConfirmationDetailsSearchParam {\r\n id?: string;\r\n gasDay: IGasDay;\r\n gasCycleCode?: string;\r\n locationId: number;\r\n beforeConfirmationRequestId: number = null;\r\n gasDayIsValid: boolean;\r\n readOnly: boolean;\r\n\r\n isValidSearchModel(): boolean {\r\n return !!this.locationId && !!this.gasDay;\r\n }\r\n}\r\n\r\nexport class ConfirmationResponseInfo {\r\n itemCount: number;\r\n errorCount: number;\r\n}\r\n\r\nexport class ConfirmationRequestDetailGridItem {\r\n key: string;\r\n sortColumn1: number;\r\n enterpriseId: number;\r\n enterprise: NominationEnterprise;\r\n enterpriseShortName: string;\r\n sortValue: string;\r\n enterpriseDunsNumber: string;\r\n nomGroupId: number;\r\n nomGroup: NominationGroup;\r\n nomGroupMnemonic: string;\r\n upDownContract: string;\r\n counterParty: string;\r\n packageId: string;\r\n deliveryRequestDetail: ConfirmationRequestDetail;\r\n receiptRequestDetail: ConfirmationRequestDetail;\r\n tcDeliveryTransaction: DailyConfirmationTransaction;\r\n tcReceiptTransaction: DailyConfirmationTransaction;\r\n deliveryVariance: number;\r\n receiptVariance: number;\r\n deliveryVarianceDth: number;\r\n receiptVarianceDth: number;\r\n scheduledEpsq: number;\r\n\r\n public static calculateDeliveryVariance(item: ConfirmationRequestDetailGridItem): number {\r\n if (_.isNil(item.tcDeliveryTransaction) || _.isNil(item.tcDeliveryTransaction.scheduledEnergy)) {\r\n return;\r\n }\r\n\r\n if (item.deliveryRequestDetail.confirmedEnergyDth !== null) {\r\n item.deliveryRequestDetail.confirmedEnergyGj = +item.deliveryRequestDetail.confirmedEnergyDth !== item.tcDeliveryTransaction.scheduledEnergyDth\r\n ? ConfirmationDetailsModel.convertDthToGj(item.deliveryRequestDetail.confirmedEnergyDth)\r\n : item.tcDeliveryTransaction.scheduledEnergy;\r\n } else {\r\n item.deliveryRequestDetail.confirmedEnergyGj = item.deliveryRequestDetail.confirmedEnergyGj;\r\n }\r\n\r\n return item.tcDeliveryTransaction.scheduledEnergy - item.deliveryRequestDetail.confirmedEnergyGj;\r\n }\r\n\r\n public static calculateReceiptVariance(item: ConfirmationRequestDetailGridItem): number {\r\n if (_.isNil(item.tcReceiptTransaction) || _.isNil(item.tcReceiptTransaction.scheduledEnergy)) {\r\n return;\r\n }\r\n\r\n if (item.receiptRequestDetail.confirmedEnergyDth !== null) {\r\n item.receiptRequestDetail.confirmedEnergyGj = +item.receiptRequestDetail.confirmedEnergyDth !== item.tcReceiptTransaction.scheduledEnergyDth\r\n ? ConfirmationDetailsModel.convertDthToGj(item.receiptRequestDetail.confirmedEnergyDth)\r\n : item.tcReceiptTransaction.scheduledEnergy;\r\n } else {\r\n item.receiptRequestDetail.confirmedEnergyGj = item.receiptRequestDetail.confirmedEnergyGj;\r\n }\r\n\r\n return item.tcReceiptTransaction.scheduledEnergy - item.receiptRequestDetail.confirmedEnergyGj;\r\n }\r\n\r\n public static calculateDeliveryVarianceDth(item: ConfirmationRequestDetailGridItem): number {\r\n if (_.isNil(item.tcDeliveryTransaction) || _.isNil(item.tcDeliveryTransaction.scheduledEnergy)) {\r\n return;\r\n }\r\n return item.tcDeliveryTransaction.scheduledEnergyDth - item.deliveryRequestDetail.confirmedEnergyDth;\r\n }\r\n\r\n public static calculateReceiptVarianceDth(item: ConfirmationRequestDetailGridItem): number {\r\n if (_.isNil(item.tcReceiptTransaction) || _.isNil(item.tcReceiptTransaction.scheduledEnergy)) {\r\n return;\r\n }\r\n return item.tcReceiptTransaction.scheduledEnergyDth - item.receiptRequestDetail.confirmedEnergyDth;\r\n }\r\n\r\n public static createKeyForRequestDetail(detail: ConfirmationRequestDetail): string {\r\n const obj = {\r\n enterpriseId: detail.serviceRequestorEnterpriseId,\r\n nomGroupId: detail.nominationGroupId,\r\n upDownContract: detail.upDownContract || '',\r\n counterParty: detail.counterParty || '',\r\n packageId: detail.packageId || ''\r\n };\r\n return JSON.stringify(obj);\r\n }\r\n\r\n public static CreateFromTuple(tuple: Tuple, key: string): ConfirmationRequestDetailGridItem {\r\n const gridItem = new ConfirmationRequestDetailGridItem();\r\n gridItem.key = key;\r\n gridItem.enterpriseId = tuple.item2.serviceRequestorEnterpriseId;\r\n gridItem.nomGroupId = tuple.item2.nominationGroupId;\r\n gridItem.upDownContract = tuple.item2.upDownContract;\r\n gridItem.counterParty = tuple.item2.counterParty;\r\n gridItem.packageId = tuple.item2.packageId;\r\n return gridItem;\r\n }\r\n\r\n public UpdateBasedOnFlowDirection(tuple: Tuple, isGasDayLaunched: boolean): void {\r\n const hoursPerDay = 24;\r\n if (tuple.item2.flowDirection === 'On System') {\r\n this.receiptRequestDetail = tuple.item2;\r\n this.receiptRequestDetail['originalConfirmedEnergyGj'] = this.receiptRequestDetail.confirmedEnergyGj;\r\n this.tcReceiptTransaction = tuple.item1;\r\n if (!isGasDayLaunched) {\r\n this.tcReceiptTransaction.scheduledFlowRate = this.tcReceiptTransaction.scheduledEnergy / hoursPerDay;\r\n this.receiptRequestDetail.flowRate = this.receiptRequestDetail.confirmedEnergyGj / hoursPerDay;\r\n } else {\r\n this.receiptRequestDetail.flowRate = this.receiptRequestDetail.flowRate;\r\n }\r\n } else {\r\n this.deliveryRequestDetail = tuple.item2;\r\n this.deliveryRequestDetail['originalConfirmedEnergyGj'] = this.deliveryRequestDetail.confirmedEnergyGj;\r\n this.tcDeliveryTransaction = tuple.item1;\r\n if (!isGasDayLaunched) {\r\n this.tcDeliveryTransaction.scheduledFlowRate = this.tcDeliveryTransaction.scheduledEnergy / hoursPerDay;\r\n this.deliveryRequestDetail.flowRate = this.deliveryRequestDetail.confirmedEnergyGj / hoursPerDay;\r\n } else {\r\n this.deliveryRequestDetail.flowRate = this.deliveryRequestDetail.flowRate;\r\n }\r\n }\r\n }\r\n\r\n public UpdateVariances(): void {\r\n this.deliveryVariance = ConfirmationRequestDetailGridItem.calculateDeliveryVariance(this);\r\n this.receiptVariance = ConfirmationRequestDetailGridItem.calculateReceiptVariance(this);\r\n this.deliveryVarianceDth = ConfirmationRequestDetailGridItem.calculateDeliveryVarianceDth(this);\r\n this.receiptVarianceDth = ConfirmationRequestDetailGridItem.calculateReceiptVarianceDth(this);\r\n }\r\n\r\n public PreserveWithExistingData(originalItem: ConfirmationRequestDetailGridItem) {\r\n if (this.deliveryRequestDetail) {\r\n this.deliveryRequestDetail.confirmedEnergyGj = originalItem.deliveryRequestDetail.confirmedEnergyGj;\r\n this.deliveryRequestDetail.confirmedEnergyDth = originalItem.deliveryRequestDetail.confirmedEnergyDth;\r\n } else {\r\n this.deliveryRequestDetail = originalItem.deliveryRequestDetail;\r\n this.tcDeliveryTransaction = originalItem.tcDeliveryTransaction;\r\n }\r\n if (this.receiptRequestDetail) {\r\n this.receiptRequestDetail.confirmedEnergyGj = originalItem.receiptRequestDetail.confirmedEnergyGj;\r\n this.receiptRequestDetail.confirmedEnergyDth = originalItem.receiptRequestDetail.confirmedEnergyDth;\r\n } else {\r\n this.receiptRequestDetail = originalItem.receiptRequestDetail;\r\n this.tcReceiptTransaction = originalItem.tcReceiptTransaction;\r\n }\r\n this.UpdateVariances();\r\n }\r\n\r\n public CalculateSummary(data: ConfirmationRequestDetailGridItem[]): void {\r\n this.key = \"summary\";\r\n this.sortColumn1 = 0;\r\n this.enterpriseShortName = \"Location Totals:\";\r\n this.tcDeliveryTransaction = new DailyConfirmationTransaction();\r\n this.tcDeliveryTransaction.scheduledFlowRate = 0;\r\n this.tcDeliveryTransaction.scheduledEnergy = 0;\r\n this.tcDeliveryTransaction.scheduledEnergyDth = 0;\r\n this.deliveryRequestDetail = new ConfirmationRequestDetail();\r\n this.deliveryRequestDetail.flowRate = 0;\r\n this.deliveryRequestDetail.confirmedEnergyGj = 0;\r\n this.deliveryRequestDetail.confirmedEnergyDth = 0;\r\n this.deliveryVariance = 0;\r\n this.deliveryVarianceDth = 0;\r\n this.tcReceiptTransaction = new DailyConfirmationTransaction();\r\n this.tcReceiptTransaction.scheduledFlowRate = 0;\r\n this.tcReceiptTransaction.scheduledEnergy = 0;\r\n this.tcReceiptTransaction.scheduledEnergyDth = 0;\r\n this.receiptRequestDetail = new ConfirmationRequestDetail();\r\n this.receiptRequestDetail.flowRate = 0;\r\n this.receiptRequestDetail.confirmedEnergyGj = 0;\r\n this.receiptRequestDetail.confirmedEnergyDth = 0;\r\n this.receiptVariance = 0;\r\n this.receiptVarianceDth = 0;\r\n\r\n // Note: Converting the dataRow values to a number because the base-datagrid-handler will\r\n // convert the number to a string upon key press like 'enter' or 'arrow down'. If we do not convert them\r\n // the += will concententate the values as a string and not perform addition.\r\n for (let n = 2; n < data.length; n++) {\r\n const dataRow = data[n];\r\n if (dataRow.tcDeliveryTransaction) {\r\n if (dataRow.tcDeliveryTransaction.scheduledFlowRate) {\r\n this.tcDeliveryTransaction.scheduledFlowRate += Number(dataRow.tcDeliveryTransaction.scheduledFlowRate);\r\n }\r\n if (dataRow.tcDeliveryTransaction.scheduledEnergy) {\r\n this.tcDeliveryTransaction.scheduledEnergy += Number(dataRow.tcDeliveryTransaction.scheduledEnergy);\r\n }\r\n if (dataRow.tcDeliveryTransaction.scheduledEnergyDth) {\r\n this.tcDeliveryTransaction.scheduledEnergyDth += Number(dataRow.tcDeliveryTransaction.scheduledEnergyDth);\r\n }\r\n }\r\n if (dataRow.deliveryRequestDetail) {\r\n if (dataRow.deliveryRequestDetail.flowRate) {\r\n this.deliveryRequestDetail.flowRate += Number(dataRow.deliveryRequestDetail.flowRate);\r\n }\r\n if (dataRow.deliveryRequestDetail.confirmedEnergyGj) {\r\n this.deliveryRequestDetail.confirmedEnergyGj += Number(dataRow.deliveryRequestDetail.confirmedEnergyGj);\r\n }\r\n if (dataRow.deliveryRequestDetail.confirmedEnergyDth) {\r\n this.deliveryRequestDetail.confirmedEnergyDth += Number(dataRow.deliveryRequestDetail.confirmedEnergyDth);\r\n }\r\n }\r\n if (dataRow.deliveryVariance) {\r\n this.deliveryVariance += Number(dataRow.deliveryVariance);\r\n }\r\n if (dataRow.deliveryVarianceDth) {\r\n this.deliveryVarianceDth += Number(dataRow.deliveryVarianceDth);\r\n }\r\n if (dataRow.tcReceiptTransaction) {\r\n if (dataRow.tcReceiptTransaction.scheduledFlowRate) {\r\n this.tcReceiptTransaction.scheduledFlowRate += Number(dataRow.tcReceiptTransaction.scheduledFlowRate);\r\n }\r\n if (dataRow.tcReceiptTransaction.scheduledEnergy) {\r\n this.tcReceiptTransaction.scheduledEnergy += Number(dataRow.tcReceiptTransaction.scheduledEnergy);\r\n }\r\n if (dataRow.tcReceiptTransaction.scheduledEnergyDth) {\r\n this.tcReceiptTransaction.scheduledEnergyDth += Number(dataRow.tcReceiptTransaction.scheduledEnergyDth);\r\n }\r\n }\r\n if (dataRow.receiptRequestDetail) {\r\n if (dataRow.receiptRequestDetail.flowRate) {\r\n this.receiptRequestDetail.flowRate += Number(dataRow.receiptRequestDetail.flowRate);\r\n }\r\n if (dataRow.receiptRequestDetail.confirmedEnergyGj) {\r\n this.receiptRequestDetail.confirmedEnergyGj += Number(dataRow.receiptRequestDetail.confirmedEnergyGj);\r\n }\r\n if (dataRow.receiptRequestDetail.confirmedEnergyDth) {\r\n this.receiptRequestDetail.confirmedEnergyDth += Number(dataRow.receiptRequestDetail.confirmedEnergyDth);\r\n }\r\n }\r\n if (dataRow.receiptVariance) {\r\n this.receiptVariance += Number(dataRow.receiptVariance);\r\n }\r\n if (dataRow.receiptVarianceDth) {\r\n this.receiptVarianceDth += Number(dataRow.receiptVarianceDth);\r\n }\r\n }\r\n }\r\n\r\n public calculateNet(sumRow: ConfirmationRequestDetailGridItem): void {\r\n this.key = \"net\";\r\n this.sortColumn1 = 1;\r\n this.enterpriseShortName = \"NET:\";\r\n this.tcDeliveryTransaction = new DailyConfirmationTransaction();\r\n this.deliveryRequestDetail = new ConfirmationRequestDetail();\r\n this.tcReceiptTransaction = new DailyConfirmationTransaction();\r\n this.receiptRequestDetail = new ConfirmationRequestDetail();\r\n\r\n let net = sumRow.tcReceiptTransaction.scheduledEnergy - sumRow.tcDeliveryTransaction.scheduledEnergy;\r\n if (net < 0) {\r\n this.tcDeliveryTransaction.scheduledEnergy = -net;\r\n } else if (net >= 0) {\r\n this.tcReceiptTransaction.scheduledEnergy = net;\r\n }\r\n\r\n net = sumRow.tcReceiptTransaction.scheduledEnergyDth - sumRow.tcDeliveryTransaction.scheduledEnergyDth;\r\n if (net < 0) {\r\n this.tcDeliveryTransaction.scheduledEnergyDth = -net;\r\n } else if (net >= 0) {\r\n this.tcReceiptTransaction.scheduledEnergyDth = net;\r\n }\r\n\r\n net = sumRow.receiptRequestDetail.confirmedEnergyGj - sumRow.deliveryRequestDetail.confirmedEnergyGj;\r\n if (net < 0) {\r\n this.deliveryRequestDetail.confirmedEnergyGj = -net;\r\n } else if (net >= 0) {\r\n this.receiptRequestDetail.confirmedEnergyGj = net;\r\n }\r\n\r\n net = sumRow.receiptRequestDetail.confirmedEnergyDth - sumRow.deliveryRequestDetail.confirmedEnergyDth;\r\n if (net < 0) {\r\n this.deliveryRequestDetail.confirmedEnergyDth = -net;\r\n } else if (net >= 0) {\r\n this.receiptRequestDetail.confirmedEnergyDth = net;\r\n }\r\n }\r\n\r\n public createFromCsvRow(csvRows: ConfirmationDetailCsvRow[]): Array {\r\n const results = new Array();\r\n _.each(csvRows, (csvRow) => {\r\n const gridItem = new ConfirmationRequestDetailGridItem();\r\n gridItem.enterpriseShortName = csvRow.serviceRequester;\r\n gridItem.enterpriseDunsNumber = csvRow.serviceRequesterDuns;\r\n gridItem.nomGroupMnemonic = csvRow.tcContract;\r\n gridItem.upDownContract = csvRow.usdsContract;\r\n gridItem.counterParty = csvRow.usdsDuns;\r\n gridItem.packageId = csvRow.packageId;\r\n results.push(gridItem);\r\n });\r\n return results;\r\n }\r\n\r\n}\r\n\r\nexport class ConfirmationSearchRequest {\r\n gasDay: IGasDay;\r\n gasCycleCode: string;\r\n locationId: number;\r\n}\r\n\r\nexport class ConfirmationDetailPopupModel {\r\n confirmationDetailsComponent: ConfirmationDetailsComponent;\r\n\r\n locationIsThreaded: boolean = false;\r\n locationIsConfirmedWithPackageId: boolean = false;\r\n\r\n canAddReceiptOperatorQty: boolean = false;\r\n canAddDeliveryOperatorQty: boolean = false;\r\n receiptOperatorQty: number;\r\n deliveryOperatorQty: number;\r\n\r\n get receiptOperatorQtyGj(): number {\r\n return this.confirmationDetailsComponent.model.locationIsDth ?\r\n ConfirmationDetailsModel.convertDthToGj(this.receiptOperatorQty) : this.receiptOperatorQty;\r\n }\r\n\r\n get receiptOperatorQtyDth(): number {\r\n return this.confirmationDetailsComponent.model.locationIsDth ?\r\n this.receiptOperatorQty : null;\r\n }\r\n\r\n get deliveryOperatorQtyGj(): number {\r\n return this.confirmationDetailsComponent.model.locationIsDth ?\r\n ConfirmationDetailsModel.convertDthToGj(this.deliveryOperatorQty) : this.deliveryOperatorQty;\r\n }\r\n\r\n get deliveryOperatorQtyDth(): number {\r\n return this.confirmationDetailsComponent.model.locationIsDth ?\r\n this.deliveryOperatorQty : null;\r\n }\r\n\r\n get canAddDetails(): boolean {\r\n return this._nomGroupId != null && this._customerId != null && (!this.locationIsThreaded ||\r\n (this.upDownContract != null && this.upDownContract.length > 0 && this.counterParty != null && this.counterParty.length > 0)) &&\r\n ((this.receiptOperatorQty != null && this.receiptOperatorQty > 0) || (this.deliveryOperatorQty != null && this.deliveryOperatorQty > 0));\r\n }\r\n\r\n upDownContract: string = null;\r\n counterParty: string = null;\r\n packageId: string = null;\r\n\r\n customers: NominationEnterprise[] = [];\r\n private _customerId: number;\r\n get customerId(): number {\r\n return this._customerId;\r\n }\r\n\r\n set customerId(value: number) {\r\n this._customerId = value;\r\n this._nomGroupId = null;\r\n this.filteredNomGroups = _.filter(this.nominationGroups, nomGroup => nomGroup.enterpriseId === value);\r\n if (this.filteredNomGroups.length === 1) {\r\n this.nomGroupId = this.filteredNomGroups[0].id;\r\n }\r\n this.resetQuantities();\r\n }\r\n\r\n nominationGroups: NominationGroup[] = [];\r\n\r\n set nomGroups(value: NominationGroup[]) {\r\n this.nominationGroups = value;\r\n }\r\n\r\n filteredNomGroups: NominationGroup[] = [];\r\n private _nomGroupId: number;\r\n get nomGroupId(): number {\r\n return this._nomGroupId;\r\n }\r\n\r\n set nomGroupId(value: number) {\r\n this._nomGroupId = value;\r\n this.confirmationDetailsComponent.checkForCreateableEnergy();\r\n this.resetQuantities();\r\n }\r\n\r\n reset() {\r\n this.counterParty = this.upDownContract = this.packageId = null;\r\n this.customerId = this.nomGroupId = null;\r\n this.resetQuantities();\r\n }\r\n\r\n resetQuantities() {\r\n this.receiptOperatorQty = this.deliveryOperatorQty = null;\r\n }\r\n\r\n public getMatchingDetailRows(data: ConfirmationRequestDetailGridItem[]): ConfirmationRequestDetailGridItem[] {\r\n if (data == null) {\r\n return null;\r\n }\r\n return _.filter(data, detail =>\r\n detail.enterpriseId === this.customerId &&\r\n detail.nomGroupId === this.nomGroupId &&\r\n (!this.locationIsConfirmedWithPackageId || detail.packageId === this.packageId) &&\r\n (!this.locationIsThreaded\r\n || (detail.counterParty === this.counterParty && detail.upDownContract === this.upDownContract)));\r\n }\r\n\r\n public getTupleToDevelop(): Tuple {\r\n const newTuple = new Tuple();\r\n newTuple.item1 = new DailyConfirmationTransaction();\r\n newTuple.item2 = new ConfirmationRequestDetail();\r\n newTuple.item1.enterpriseId = this.customerId;\r\n newTuple.item1.nominationGroupId = this.nomGroupId;\r\n newTuple.item1.packageId = this.packageId;\r\n newTuple.item1.counterParty = this.counterParty;\r\n newTuple.item1.upDownContract = this.upDownContract;\r\n newTuple.item1.scheduledEnergy = 0;\r\n return newTuple;\r\n }\r\n\r\n public getRowToDevelop(): ConfirmationRequestDetailGridItem {\r\n const newRow = new ConfirmationRequestDetailGridItem();\r\n newRow.enterpriseId = this.customerId;\r\n newRow.enterprise = _.find(this.customers, customer => customer.id === this.customerId);\r\n newRow.nomGroupId = this.nomGroupId;\r\n newRow.nomGroup = _.find(this.nominationGroups, nomGroup => nomGroup.id === this.nomGroupId);\r\n newRow.upDownContract = this.upDownContract;\r\n newRow.counterParty = this.counterParty;\r\n newRow.packageId = this.packageId;\r\n\r\n // TODO - JOE - Check if this is an acceptable way not to require an enrichment.\r\n newRow['nomGroupMnemonic'] = newRow.nomGroup.mnemonic;\r\n newRow['enterpriseShortName'] = newRow.enterprise.shortName;\r\n return newRow;\r\n }\r\n\r\n public addDeliveryToRow(rowToDevelop: ConfirmationRequestDetailGridItem, model: ConfirmationDetailsModel): void {\r\n if (this.canAddDeliveryOperatorQty && this.deliveryOperatorQty != null) {\r\n this.updateRowForAddingOperatorQty(rowToDevelop, true);\r\n const tupleToDevelop = this.getTupleToDevelop();\r\n this.updateTupleForAddingDeliveryOperatorQty(tupleToDevelop, true);\r\n model.confirmationRequest.confirmationTransactions.push(tupleToDevelop);\r\n }\r\n }\r\n\r\n public addReceiptToRow(rowToDevelop: ConfirmationRequestDetailGridItem, model: ConfirmationDetailsModel): void {\r\n if (this.canAddReceiptOperatorQty && this.receiptOperatorQty != null) {\r\n this.updateRowForAddingOperatorQty(rowToDevelop, false);\r\n const tupleToDevelop = this.getTupleToDevelop();\r\n this.updateTupleForAddingDeliveryOperatorQty(tupleToDevelop, false);\r\n model.confirmationRequest.confirmationTransactions.push(tupleToDevelop);\r\n }\r\n }\r\n\r\n public updateRowForAddingOperatorQty(rowToDevelop: ConfirmationRequestDetailGridItem, isDelivery: boolean) {\r\n if (isDelivery) {\r\n rowToDevelop.tcDeliveryTransaction = new DailyConfirmationTransaction();\r\n rowToDevelop.tcDeliveryTransaction.scheduledEnergy = 0;\r\n } else {\r\n rowToDevelop.tcReceiptTransaction = new DailyConfirmationTransaction();\r\n rowToDevelop.tcReceiptTransaction.scheduledEnergy = 0;\r\n }\r\n\r\n const requestDetail = new ConfirmationRequestDetail();\r\n requestDetail.confirmedEnergyGj = isDelivery ? this.deliveryOperatorQtyGj : this.receiptOperatorQtyGj;\r\n requestDetail.confirmedEnergyDth = isDelivery ? this.deliveryOperatorQtyDth : this.receiptOperatorQtyDth;\r\n requestDetail.flowDirection = isDelivery ? \"Off System\" : \"On Season\";\r\n requestDetail.nominationGroupId = this.nomGroupId;\r\n requestDetail.upDownContract = this.upDownContract;\r\n requestDetail.counterParty = this.counterParty;\r\n requestDetail.packageId = this.packageId;\r\n\r\n if (isDelivery) rowToDevelop.deliveryRequestDetail = requestDetail;\r\n else {\r\n rowToDevelop.receiptRequestDetail = requestDetail;\r\n }\r\n }\r\n\r\n public updateTupleForAddingDeliveryOperatorQty(tupleToDevelop: Tuple, isDelivery: boolean) {\r\n tupleToDevelop.item2.confirmedEnergyGj = isDelivery ? this.deliveryOperatorQtyGj : this.receiptOperatorQtyGj;\r\n tupleToDevelop.item2.confirmedEnergyDth = isDelivery ? this.deliveryOperatorQtyDth : this.receiptOperatorQtyDth;\r\n tupleToDevelop.item2.flowDirection = isDelivery ? \"Off System\" : \"On System\";\r\n tupleToDevelop.item2.serviceRequestorEnterpriseId = this.customerId;\r\n tupleToDevelop.item2.nominationGroupId = this.nomGroupId;\r\n tupleToDevelop.item2.upDownContract = this.upDownContract;\r\n tupleToDevelop.item2.counterParty = this.counterParty;\r\n tupleToDevelop.item2.packageId = this.packageId;\r\n }\r\n}\r\n\r\nexport class ConfirmationDetailCsvBuilder {\r\n headers: string[];\r\n columns: string[];\r\n\r\n constructor(private includeDthColumns: boolean, private includeFlowRateColumns: boolean, private headerPrefix: string, private locationIsThreaded: boolean) {\r\n this.createHeaders();\r\n this.createColumns();\r\n }\r\n\r\n private createHeaders() {\r\n const headers = [\r\n 'Gas Day',\r\n 'Cycle',\r\n 'Location'];\r\n\r\n if (this.locationIsThreaded){\r\n headers.push('Service Requester',\r\n 'Service Requester ID',\r\n 'Service Requester Contract');\r\n } else {\r\n headers.push('Customer',\r\n 'Customer ID',\r\n 'Account');\r\n }\r\n headers.push(\r\n 'Up Dn Contract',\r\n 'Up Dn ID',\r\n 'Package Id');\r\n\r\n if (this.includeFlowRateColumns) headers.push(`Delivery ${this.headerPrefix} Qty GJ/hr`);\r\n headers.push(`Delivery ${this.headerPrefix} Quantity GJ`);\r\n if (this.includeDthColumns) headers.push(`Delivery ${this.headerPrefix} Quantity Dth`);\r\n\r\n if (this.includeFlowRateColumns) headers.push('Delivery Operator Qty GJ/hr');\r\n headers.push('Delivery Operator Quantity GJ');\r\n if (this.includeDthColumns) headers.push('Delivery Operator Quantity Dth');\r\n\r\n if (this.includeFlowRateColumns) headers.push(`Receipt ${this.headerPrefix} Qty GJ/hr`);\r\n headers.push(`Receipt ${this.headerPrefix} Quantity GJ`);\r\n if (this.includeDthColumns) headers.push(`Receipt ${this.headerPrefix} Quantity Dth`);\r\n\r\n if (this.includeFlowRateColumns) headers.push('Receipt Operator Qty GJ/hr');\r\n headers.push('Receipt Operator Quantity GJ');\r\n if (this.includeDthColumns) headers.push('Receipt Operator Quantity Dth');\r\n\r\n this.headers = headers;\r\n }\r\n\r\n private createColumns() {\r\n const columns =\r\n [\r\n 'gasDay',\r\n 'cycle',\r\n 'location',\r\n 'serviceRequester',\r\n 'serviceRequesterDuns',\r\n 'tcContract',\r\n 'usdsContract',\r\n 'usdsDuns',\r\n 'packageId'];\r\n\r\n if (this.includeFlowRateColumns) columns.push('deliveryTCFlowRate');\r\n columns.push('deliveryTCQuantityGj');\r\n if (this.includeDthColumns) columns.push('deliveryTCQuantityDth');\r\n\r\n if (this.includeFlowRateColumns) columns.push('deliveryOperatorFlowRate');\r\n columns.push('deliveryOperatorQuantityGj');\r\n if (this.includeDthColumns) columns.push('deliveryOperatorQuantityDth');\r\n\r\n if (this.includeFlowRateColumns) columns.push('receiptTCFlowRate');\r\n columns.push('receiptTCQuantityGj');\r\n if (this.includeDthColumns) columns.push('receiptTCQuantityDth');\r\n\r\n if (this.includeFlowRateColumns) columns.push('receiptOperatorFlowRate');\r\n columns.push('receiptOperatorQuantityGj');\r\n if (this.includeDthColumns) columns.push('receiptOperatorQuantityDth');\r\n\r\n this.columns = columns;\r\n }\r\n\r\n public buildCsvModel(data: ConfirmationDetailCsvRow[], title: string, location: string, gasDay: IGasDay): ConfirmationDetailsCsvModel {\r\n const csvData = _.sortBy(data, ['enterpriseShortName', 'hubAccountMnemonic', 'locationName']);\r\n const filename = 'ConfirmationDetails-' + location + '-' + gasDay.toDisplayFormat() + '.csv';\r\n return ConfirmationDetailsCsvModel.create(filename, this.headers, this.columns, csvData);\r\n }\r\n\r\n public createCsvRowFromGridRow(gasDay: IGasDay, gasCycle: GasCycle, location: string,\r\n item: ConfirmationRequestDetailGridItem): ConfirmationDetailCsvRow {\r\n const csvRow = new ConfirmationDetailCsvRow();\r\n csvRow.gasDay = gasDay.toCsvFormatWithNoDashes();\r\n csvRow.cycle = gasCycle.ediCode;\r\n csvRow.location = location;\r\n csvRow.serviceRequester = item.enterpriseShortName;\r\n csvRow.serviceRequesterDuns = item.enterpriseDunsNumber;\r\n csvRow.tcContract = item.nomGroupMnemonic;\r\n csvRow.usdsContract = item.upDownContract;\r\n csvRow.usdsDuns = item.counterParty;\r\n csvRow.packageId = item.packageId;\r\n\r\n csvRow.deliveryTCQuantityGj = this.valueOrEmptyString(() => item.tcDeliveryTransaction.scheduledEnergy);\r\n csvRow.deliveryOperatorQuantityGj = this.valueOrEmptyString(() => item.deliveryRequestDetail.confirmedEnergyGj);\r\n csvRow.receiptTCQuantityGj = this.valueOrEmptyString(() => item.tcReceiptTransaction.scheduledEnergy);\r\n csvRow.receiptOperatorQuantityGj = this.valueOrEmptyString(() => item.receiptRequestDetail.confirmedEnergyGj);\r\n\r\n if (this.includeFlowRateColumns){\r\n csvRow.deliveryTCFlowRate = this.valueOrEmptyString(() => item.tcDeliveryTransaction.scheduledFlowRate);\r\n csvRow.deliveryOperatorFlowRate = this.valueOrEmptyString(() => item.deliveryRequestDetail.flowRate);\r\n csvRow.receiptTCFlowRate = this.valueOrEmptyString(() => item.tcReceiptTransaction.scheduledFlowRate);\r\n csvRow.receiptOperatorFlowRate = this.valueOrEmptyString(() => item.receiptRequestDetail.flowRate);\r\n }\r\n\r\n if (this.includeDthColumns){\r\n csvRow.deliveryTCQuantityDth = this.valueOrEmptyString(() => item.tcDeliveryTransaction.scheduledEnergyDth);\r\n csvRow.deliveryOperatorQuantityDth = this.valueOrEmptyString(() => item.deliveryRequestDetail.confirmedEnergyDth);\r\n csvRow.receiptTCQuantityDth = this.valueOrEmptyString(() => item.tcReceiptTransaction.scheduledEnergyDth);\r\n csvRow.receiptOperatorQuantityDth = this.valueOrEmptyString(() => item.receiptRequestDetail.confirmedEnergyDth);\r\n }\r\n\r\n return csvRow;\r\n }\r\n\r\n private valueOrEmptyString = (func: () => number): string => {\r\n try {\r\n return _.round(func()).toString();\r\n } catch {\r\n return '';\r\n }\r\n };\r\n}\r\n\r\nexport class ConfirmationDetailCsvRow {\r\n rowNumber: string;\r\n gasDay: string;\r\n cycle: string;\r\n location: string;\r\n serviceRequester: string;\r\n serviceRequesterDuns: string;\r\n tcContract: string;\r\n usdsContract: string;\r\n usdsDuns: string;\r\n packageId: string;\r\n\r\n deliveryTCFlowRate: string;\r\n deliveryTCQuantityGj: string;\r\n deliveryTCQuantityDth: string;\r\n\r\n deliveryOperatorFlowRate: string;\r\n deliveryOperatorQuantityGj: string;\r\n deliveryOperatorQuantityDth: string;\r\n\r\n receiptTCFlowRate: string;\r\n receiptTCQuantityGj: string;\r\n receiptTCQuantityDth: string;\r\n\r\n receiptOperatorFlowRate: string;\r\n receiptOperatorQuantityGj: string;\r\n receiptOperatorQuantityDth: string;\r\n\r\n public static createFromGjUpload(rowNumber: number, gasDay: string, cycle: string, locationName: string, serviceRequester: string, serviceRequesterDuns: string,\r\n tcContract: string, usdsContract: string, usdsDuns: string, packageId: string, deliveryTCQuantityGj: string,\r\n deliveryOperatorQuantityGj: string, receiptTCQuantityGj: string, receiptOperatorQuantityGj: string): ConfirmationDetailCsvRow {\r\n\r\n const csvRow = new ConfirmationDetailCsvRow();\r\n csvRow.rowNumber = rowNumber.toString();\r\n csvRow.gasDay = gasDay;\r\n csvRow.cycle = cycle;\r\n csvRow.location = locationName;\r\n csvRow.serviceRequester = serviceRequester;\r\n csvRow.serviceRequesterDuns = serviceRequesterDuns;\r\n csvRow.tcContract = tcContract;\r\n csvRow.usdsContract = usdsContract;\r\n csvRow.usdsDuns = usdsDuns;\r\n csvRow.packageId = packageId;\r\n csvRow.deliveryTCQuantityGj = deliveryTCQuantityGj;\r\n csvRow.deliveryOperatorQuantityGj = deliveryOperatorQuantityGj;\r\n csvRow.receiptTCQuantityGj = receiptTCQuantityGj;\r\n csvRow.receiptOperatorQuantityGj = receiptOperatorQuantityGj;\r\n return csvRow;\r\n }\r\n\r\n public static createFromDthUpload(rowNumber: number, gasDay: string, cycle: string, locationName: string, serviceRequester: string, serviceRequesterDuns: string,\r\n tcContract: string, usdsContract: string, usdsDuns: string, packageId: string, deliveryTCQuantityGj: string,\r\n deliveryTCQuantityDth: string, deliveryOperatorQuantityGj: string, deliveryOperatorQuantityDth: string, receiptTCQuantityGj: string,\r\n receiptTCQuantityDth: string, receiptOperatorQuantityGj: string, receiptOperatorQuantityDth: string): ConfirmationDetailCsvRow {\r\n\r\n const csvRow = ConfirmationDetailCsvRow.createFromGjUpload(rowNumber, gasDay, cycle, locationName, serviceRequester, serviceRequesterDuns,\r\n tcContract, usdsContract, usdsDuns, packageId,\r\n deliveryTCQuantityGj, deliveryOperatorQuantityGj, receiptTCQuantityGj, receiptOperatorQuantityGj);\r\n\r\n csvRow.deliveryTCQuantityDth = deliveryTCQuantityDth;\r\n csvRow.deliveryOperatorQuantityDth = deliveryOperatorQuantityDth;\r\n csvRow.receiptTCQuantityDth = receiptTCQuantityDth;\r\n csvRow.receiptOperatorQuantityDth = receiptOperatorQuantityDth;\r\n return csvRow;\r\n }\r\n\r\n public static createFromFlowRateUpload(rowNumber: number, gasDay: string, cycle: string, locationName: string, serviceRequester: string, serviceRequesterDuns: string,\r\n tcContract: string, usdsContract: string, usdsDuns: string, packageId: string,\r\n deliveryTCFlowRate: string, deliveryTCQuantityGj: string, deliveryOperatorFlowRate: string, deliveryOperatorQuantityGj: string,\r\n receiptTCFlowRate: string, receiptTCQuantityGj: string, receiptOperatorFlowRate: string, receiptOperatorQuantityGj: string\r\n ): ConfirmationDetailCsvRow {\r\n\r\n const csvRow = ConfirmationDetailCsvRow.createFromGjUpload(rowNumber, gasDay, cycle, locationName, serviceRequester, serviceRequesterDuns,\r\n tcContract, usdsContract, usdsDuns, packageId,\r\n deliveryTCQuantityGj, deliveryOperatorQuantityGj, receiptTCQuantityGj, receiptOperatorQuantityGj,\r\n );\r\n\r\n csvRow.deliveryTCFlowRate = deliveryTCFlowRate;\r\n csvRow.deliveryOperatorFlowRate = deliveryOperatorFlowRate;\r\n csvRow.receiptTCFlowRate = receiptTCFlowRate;\r\n csvRow.receiptOperatorFlowRate = receiptOperatorFlowRate;\r\n return csvRow;\r\n }\r\n}\r\n\r\nexport class ConfirmationDetailsCsvModel extends BaseCsvModel {\r\n public static create(filename: string, headers: string[], columns: string[], data: ConfirmationDetailCsvRow[]) {\r\n const accountSummaryCsvModel = new ConfirmationDetailsCsvModel();\r\n accountSummaryCsvModel.filename = filename;\r\n accountSummaryCsvModel.headers = headers;\r\n accountSummaryCsvModel.columns = columns;\r\n accountSummaryCsvModel.data = data;\r\n return accountSummaryCsvModel;\r\n }\r\n}\r\n","\r\n
\r\n {{ getTitle() }}\r\n
\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n To subscribe enter your email address and click submit.\"\r\n eventType=\"ConfirmationRequest\"\r\n subscriptionMessage=\"confirmation notifications\"\r\n *ngIf=\"model.isExternal\">\r\n
\r\n
\r\n\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n\r\n
\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Gas Day: {{model.lastSearchParams?.gasDay | gasDayFormat}}\r\n Location: {{model.lastSearchParams?.locationId | displayName: 'id' : 'name' : model.locations}}\r\n Cycle (CCT): {{ model.lastSearchParams?.gasCycleCode | displayName: 'code' : 'displayValue' : model.gasCycles : 'EOD' }}\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.gasDay | gasDayFormat}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
{{ model.lastSearchParams?.gasCycleCode | displayName: 'code' : 'displayValue' : model.gasCycles : 'EOD' }}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.locationId | displayName: 'id' : 'name' : model.locations}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.locationGasDayCycleStatus.operatorShortName || 'N/A'}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.locationGasDayCycleStatus?.status | displayName: 'value' : 'name' : model.confirmationStatuses}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.gasDayCycleStatus?.status}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
{{model.requestGasDayCycleInEffect}}
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.submittedBy}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n\r\n
\r\n -\r\n +\r\n Upload\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n Browse...\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
{{model.error}}
\r\n
\r\n
\r\n
\r\n
\r\n \r\n  \r\n \r\n
\r\n
\r\n\r\n\r\n
0\" class=\"card-header\">\r\n Number of upload errors: {{model.confirmationRequest.csvUploadErrors.length}}\r\n
\r\n\r\n
0\">\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n Number of confirmation records found: {{model.confirmationRecordCount}}\r\n\r\n \r\n
\r\n \r\n\r\n \r\n Add \r\n \r\n\r\n \r\n | View Event History \r\n \r\n | View NGTL Inline \r\n \r\n \r\n | Export CSV\r\n \r\n \r\n | Upload\r\n Upload\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n","import * as _ from 'lodash';\r\nimport * as moment from 'moment';\r\nimport * as dx from \"devextreme/core/renderer\";\r\nimport * as $ from 'jquery';\r\nimport {AfterViewInit, ChangeDetectorRef, Component, HostListener, Renderer2, ViewChild} from '@angular/core';\r\nimport {DecimalPipe} from '@angular/common';\r\nimport {AppService} from '@shared/services/webapp/app/app.service';\r\nimport {AlertService} from \"app/shared/services/webapp/alert/alert.service\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {NominationSystemService} from \"@shared/services/nomination/nomination-system/nomination-system.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {forkJoin, from, Observable, of} from \"rxjs\";\r\nimport {LocationSearchParams, NominationLocation, NominationLocationService} from \"@shared/services/nomination/nomination-location/nomination-location.service\";\r\nimport {GasCycleService, LocationGasDayCycleStatusDto} from \"@shared/services/nomination/gas-cycle/gas-cycle.service\";\r\nimport {NominationEnterpriseEnrichmentService} from \"@shared/services/nomination/nomination-enterprise-enrichment/nomination-enterprise-enrichment.service\";\r\nimport {NominationNomGroupEnrichmentService} from 'app/shared/services/nomination/nomination-nom-group-enrichment/nomination-nom-group-enrichment.service';\r\nimport {DataGridHelpers} from \"@model/datagrid-helpers\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {ConfirmationService} from \"@shared/services/nomination/confirmation/confirmation.service\";\r\nimport {NominationGroup, NominationNomGroupService} from \"@shared/services/nomination/nomination-nom-group/nomination-nom-group.service\";\r\nimport {AutoBalanceService} from \"@shared/services/nomination/auto-balance/auto-balance.service\";\r\nimport {EnterpriseSearchParams, NominationEnterprise, NominationEnterpriseService} from \"@shared/services/nomination/nomination-enterprise/nomination-enterprise.service\";\r\nimport {BaseDatagridHandler} from \"@model/base-datagrid-handlers\";\r\nimport {YesNoCancelModalService} from \"@shared/services/webapp/yes-no-cancel-modal/yes-no-cancel-modal.service\";\r\nimport {UserService} from \"@shared/services/webapp/user/user-service\";\r\nimport {CapabilitiesService} from \"@shared/services/webapp/capabilities/capabilities.service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {SimpleGasDayCycleStatus} from \"@model/simple-gas-day-cycle-status\";\r\nimport {GasDayCycleStatusCollection} from \"@model/gas-day-cycle-status-collection\";\r\nimport {SelectedModalOption} from \"@shared/services/webapp/modal-options/selected-modal-option\";\r\nimport {ModalOptions} from \"@shared/services/webapp/modal-options/modal-options\";\r\nimport {ModalComponent} from \"@shared/components/modal/modal.component\";\r\nimport {ConfirmationStatus} from \"@model/confirmation-status\";\r\nimport {EditableSearchComponent} from \"@model/editable-search-component\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {AutoBalanceRequestFactory} from \"@shared/services/nomination/auto-balance/auto-balance-models\";\r\nimport {BaseConfirmationDetailsRequest, ConfirmationEventHistorySearchRequest, ConfirmationRequest, ConfirmationRequestDetail, ConfirmationRequestFactory, Tuple} from \"@shared/services/nomination/confirmation/confirmation-models\";\r\nimport {\r\n ConfirmationDetailCsvBuilder,\r\n ConfirmationDetailCsvRow,\r\n ConfirmationDetailPopupModel,\r\n ConfirmationDetailsModel,\r\n ConfirmationDetailsSearchParam,\r\n ConfirmationRequestDetailGridItem,\r\n ConfirmationResponseInfo\r\n} from \"./confirmation-details.model\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {CsvUtility} from \"@model/CsvUtility\";\r\nimport {DisplayNamePipe} from \"@shared/pipes/display-name/display-name.pipe\";\r\nimport {GasCycleLogic} from \"@model/gas-cycle.logic\";\r\nimport {NominationTransactionService} from \"app/shared/services/nomination/nomination-transaction/nomination-transaction.service\";\r\nimport {BusinessRight} from \"@model/business-right\";\r\nimport {GasDaySearchResourceTracker} from \"@model/gas-day-search-resource-tracker\";\r\nimport {ErrorService} from \"@shared/services/webapp/error/error-service\";\r\nimport {YesNoModalOptions} from \"@shared/services/webapp/modal-options/yes-no-modal-options\";\r\nimport {concatMap, tap} from \"rxjs/operators\";\r\nimport {PipelineSettingMapService} from '../../../shared/services/nomination/pipeline-settings-map/pipeline-setting-map.service';\r\nimport {EdiConfirmationMethod} from \"@model/edi-confirmation-method\";\r\n\r\n@Component({\r\n selector: 'app-confirmation-details',\r\n templateUrl: './confirmation-details.component.html',\r\n styleUrls: ['./confirmation-details.component.css'],\r\n providers: [DecimalPipe, CsvUtility, DisplayNamePipe]\r\n})\r\nexport class ConfirmationDetailsComponent extends EditableSearchComponent implements AfterViewInit {\r\n\r\n baseDatagridHandler: BaseDatagridHandler;\r\n private editCellStyle = \"editable-cell\";\r\n private summaryCellStyle = 'summary-cell';\r\n private summaryRowStyle = 'summary-row-background-color';\r\n private redVarianceStyle = \"red-variance\";\r\n private recordsBeingProcessed = false;\r\n private isCgl = this.pipelineSettingMapService.isCgl(this.sessionService.getPipeline().code);\r\n model = new ConfirmationDetailsModel();\r\n @ViewChild('gasDay') gasDayControl;\r\n @ViewChild('confirmationDataGrid') confirmationDataGrid: DxDataGridComponent;\r\n @ViewChild('location') locationControl;\r\n @ViewChild('submitButton') submitControl;\r\n @ViewChild(ModalComponent) modal: ModalComponent;\r\n\r\n addConfirmationDetailPopup: ConfirmationDetailPopupModel;\r\n goToFirstTab = false;\r\n\r\n private gasDayTracker: GasDaySearchResourceTracker = new GasDaySearchResourceTracker();\r\n\r\n constructor(private cdr: ChangeDetectorRef,\r\n protected appService: AppService,\r\n protected alertService: AlertService,\r\n private decimalPipe: DecimalPipe,\r\n protected router: Router,\r\n protected activatedRoute: ActivatedRoute,\r\n private gasCycleService: GasCycleService,\r\n private nominationSystemService: NominationSystemService,\r\n private nominationLocationService: NominationLocationService,\r\n private nominationTransactionService: NominationTransactionService,\r\n private nominationEnterpriseService: NominationEnterpriseService,\r\n private nominationGroupService: NominationNomGroupService,\r\n private nominationEnterpriseEnrichmentService: NominationEnterpriseEnrichmentService,\r\n private nominationNomGroupEnrichmentService: NominationNomGroupEnrichmentService,\r\n private autoBalanceService: AutoBalanceService,\r\n private confirmationService: ConfirmationService,\r\n private modalService: YesNoCancelModalService,\r\n private userService: UserService,\r\n private capabilitiesService: CapabilitiesService,\r\n private sessionService: SessionService,\r\n private fileService: FileService,\r\n private csvUtility: CsvUtility,\r\n private renderer: Renderer2,\r\n private displayNamePipe: DisplayNamePipe,\r\n private pipelineSettingMapService: PipelineSettingMapService) {\r\n\r\n super('Confirmation Detail', appService, activatedRoute, router, alertService);\r\n this.appService.hideMenu();\r\n this.addConfirmationDetailPopup = new ConfirmationDetailPopupModel();\r\n this.addConfirmationDetailPopup.confirmationDetailsComponent = this;\r\n this.model.isPPAAnalyst = this.capabilitiesService.hasCapabilities([\"ConfirmationDetails-PPA-OneDay-Adjustment\"], this.userService.user, this.sessionService.getPipeline().code);\r\n this.model.isPPAAdmin = this.capabilitiesService.hasCapabilities([\"ConfirmationDetails-PPA-Full-Adjustment\"], this.userService.user, this.sessionService.getPipeline().code);\r\n this.model.confirmationQuantityLabel = this.sessionService.getPipeline().confirmationQuantityLabel;\r\n this.model.allowAllLocationConfirmation = this.sessionService.getPipeline().allowAllLocationConfirmation;\r\n }\r\n\r\n // ===================================================\r\n //#region IMPLEMENTED\r\n\r\n ngAfterViewInit() {\r\n this.baseDatagridHandler = new BaseDatagridHandler(null, this.locationControl.valueAccessor.selectBox.element.nativeElement,\r\n this.submitControl !== undefined ? this.submitControl.nativeElement : null,\r\n BaseDatagridHandler.TabMode.Vertical, this.gridBlurCallback);\r\n }\r\n\r\n //#endregion\r\n // ===================================================\r\n\r\n\r\n // ===================================================\r\n //#region OVERRIDES\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onResize(event) {\r\n this.model.windowWidth = event.target.innerWidth;\r\n }\r\n\r\n public onMouseWheel($event: WheelEvent) {\r\n $event.preventDefault();\r\n }\r\n\r\n public addModalBusinessKeyInputChanged($event: any): void {\r\n this.checkForCreateableEnergy();\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.confirmationRecordCount = 0;\r\n this.model.dataWasUploaded = false;\r\n this.model.isUploading = false;\r\n this.model.data = null;\r\n\r\n const searchParams = _.clone(this.model.searchParams);\r\n\r\n const baseRequest = ConfirmationRequestFactory.CreateBaseConfirmationRequest(searchParams.gasDay, searchParams.gasCycleCode, searchParams.locationId, searchParams.id);\r\n const baseRequestWithActualCycle = ConfirmationRequestFactory.CreateBaseConfirmationRequest(searchParams.gasDay, this.buildGasCycleCodeForRequest(searchParams), searchParams.locationId);\r\n const historyRequest = ConfirmationRequestFactory.CreateConfirmationHistoryRequest(searchParams.gasDay, searchParams.gasCycleCode, searchParams.locationId, searchParams.beforeConfirmationRequestId);\r\n\r\n const correctQueryConfirmation = searchParams.beforeConfirmationRequestId == null ?\r\n this.queryConfirmationRequest(baseRequest) :\r\n this.confirmationService.queryConfirmationRequestHistory(historyRequest);\r\n\r\n const disableAutoBalanceLocation$ = this.gasCycleService.shouldDisableAutoBalanceLocation(searchParams.gasDay, this.buildGasCycleCodeForRequest(searchParams))\r\n .pipe(tap(flag => {\r\n this.model.disableAutoBalanceLocation = flag;\r\n }));\r\n\r\n const serviceCalls: Observable[] = [\r\n correctQueryConfirmation,\r\n this.getLocationGasCycleStatus(baseRequestWithActualCycle),\r\n this.gasCycleService.getGasCycleStatus(searchParams.gasDay, this.buildGasCycleCodeForRequest(searchParams)),\r\n this.confirmationService.queryConfirmationResponseInfo(searchParams.gasDay, this.buildGasCycleCodeForRequest(searchParams), searchParams.locationId),\r\n disableAutoBalanceLocation$\r\n ];\r\n\r\n return forkJoin(serviceCalls)\r\n .pipe(tap(response => {\r\n this.model.gasDayCycleStatus = (response[2] as SimpleGasDayCycleStatus);\r\n this.processSearchResults(response[0] as ConfirmationRequest);\r\n this.model.locationGasDayCycleStatus = response[1] as LocationGasDayCycleStatusDto;\r\n this.model.pageViewIsInPPAState = this.model.gasDayCycleStatus.isScheduled;\r\n this.setReadonlyAndPageEditableState();\r\n this.setupDataGridColumns();\r\n\r\n this.model.confirmationResponseInfo = (response[3] as ConfirmationResponseInfo);\r\n\r\n if (this.model.locationGasDayCycleStatus.status === ConfirmationStatus.AutoBalancing.value) {\r\n this.alertService.addWarnMessage(\"Warning\", \"Location is being Auto Balanced, changes will not be possible until Auto Balance is complete\");\r\n }\r\n\r\n this.model.isReadOnlyMode = this.model.searchParams.readOnly ||\r\n !this.capabilitiesService.hasCapabilities(['ConfirmationDetails-Basic-Write'], this.userService.user, this.sessionService.getPipeline().code);\r\n\r\n this.model.isStsGasCycle = _.find(this.model.gasCycles, x => x.code === this.buildGasCycleCodeForRequest(this.model.searchParams)).isStsCycle;\r\n if (this.model.data.length > 0) {\r\n this.goToFirstTab = true;\r\n }\r\n\r\n if (this.model.confirmationResponseInfo.errorCount > 0) {\r\n if (this.model.locationIsConfirmedWithAgaEdi) {\r\n this.alertService.addErrorMessage(\"Error\", \"NGTL Inline loaded with errors\");\r\n } else {\r\n this.alertService.addErrorMessage(\"Error\", \"EDI file received with errors\");\r\n }\r\n }\r\n this.resetUpload(this.model.isUploading);\r\n\r\n this.model.modelDirty = false;\r\n this.model.hasValidationErrors = false;\r\n }));\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n if (this.confirmationDataGrid) {\r\n this.confirmationDataGrid.instance.clearSorting();\r\n this.confirmationDataGrid.instance.columnOption('nomGroupMnemonic', {sortOrder: 'asc', sortIndex: 0});\r\n this.confirmationDataGrid.instance.columnOption('upDownContract', {sortOrder: 'asc', sortIndex: 1});\r\n this.confirmationDataGrid.instance.columnOption('counterParty', {sortOrder: 'asc', sortIndex: 2});\r\n this.confirmationDataGrid.instance.columnOption('Package ID', {sortOrder: 'asc', sortIndex: 3});\r\n }\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return this.paramValidator().isValid(params);\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams.gasDay = this.model.defaultGasDay;\r\n this.model.searchParams.gasCycleCode = null;\r\n\r\n this.model.isReadOnlyMode = false; // ?\r\n this.model.searchParams.readOnly = this.model.isReadOnlyMode;\r\n this.model.lastSearchParams = new ConfirmationDetailsSearchParam();\r\n this.model.data = null;\r\n this.model.searchParams.locationId = null;\r\n this.model.locationGasDayCycleStatus = null;\r\n this.model.confirmationResponseInfo = null;\r\n this.resetUpload();\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.isReadOnlyMode = typedParams.asBoolean('readOnly');\r\n this.model.searchParams.readOnly = this.model.isReadOnlyMode;\r\n if (this.model.isReadOnlyMode) {\r\n this.model.searchParams.id = typedParams.asNullableString('id'); // if readonly, get id from query params\r\n }\r\n\r\n this.model.searchParams.gasDay = typedParams.asGasDay('gasDay');\r\n this.model.searchParams.gasCycleCode = typedParams.asNullableString('gasCycleCode');\r\n this.model.searchParams.locationId = typedParams.asNumber('locationId');\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n return this.nominationSystemService.pipelineGasDay().pipe(tap((pipelineGasDay) => {\r\n this.model.searchParams.gasDay = pipelineGasDay.allowableGasDay;\r\n this.model.minGasDay = pipelineGasDay.minGasDayForCycleStatus;\r\n this.model.maxGasDay = pipelineGasDay.maxGasDayForCycleStatus;\r\n this.model.timelyOpenGasDayCycle = pipelineGasDay.timelyOpenGasDayCycleStatus;\r\n this.model.openGasDayCycleStatus = pipelineGasDay.openGasDayCycleStatus;\r\n this.model.defaultGasDay = pipelineGasDay.allowableGasDay;\r\n }));\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n\r\n if (this.gasDayTracker.previouslyLoadedForSameGasDay(this.model.searchParams.gasDay)) {\r\n\r\n // TODO: Figure out why removing this causes the typed search filter to stay in the location drop down.\r\n this.model.locations = _.orderBy(this.model.locations, x => x.name);\r\n this.postLoadSearchResources();\r\n\r\n return of(null);\r\n }\r\n\r\n // TODO: Can we get rid of this?\r\n // if (!this.model.lastSearchParams || !this.model.lastSearchParams.isValidSearchModel()) {\r\n // this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n // }\r\n\r\n if (!this.userService.user.isInternalUser || this.userService.user.isAssumingIdentity) {\r\n this.model.isExternal = true;\r\n }\r\n\r\n const serviceCalls: Observable[] = [\r\n this.gasCycleService.queryGasDayCycleStatusesFor(this.model.searchParams.gasDay), // 0\r\n this.nominationLocationService.queryAllDetails(new LocationSearchParams(this.model.searchParams.gasDay, true, this.model.searchParams.gasDay, true)) // 1\r\n ];\r\n\r\n return forkJoin(serviceCalls).pipe(tap(responses => {\r\n // 0 - Gas Day Cycle Status\r\n const gasDayCycleStatuses = responses[0] as GasDayCycleStatusCollection;\r\n this.model.gasDayCycleStatuses = gasDayCycleStatuses;\r\n this.model.gasCycles = gasDayCycleStatuses.gasCycles();\r\n this.model.launchedGasCycles = gasDayCycleStatuses.defaultGasDayCycleStatuses().gasCycles();\r\n\r\n // 1 - Locations\r\n this.model.locations = _.orderBy(_.filter(responses[1] as NominationLocation[], x => x.accountingLocationParameters.isConfirmedAtItself), x => x.name);\r\n this.model.confirmationStatuses = ConfirmationStatus.Statuses;\r\n this.postLoadSearchResources();\r\n\r\n this.gasDayTracker.markLastLoadedGasDay(this.model.searchParams.gasDay);\r\n }));\r\n }\r\n\r\n private postLoadSearchResources() {\r\n if (this.model.locations.length === 0) {\r\n this.alertService.clearMessages();\r\n\r\n if (!this.userService.user.isInternalUser || this.userService.user.isAssumingIdentity) {\r\n this.model.isExternal = true;\r\n this.addNoLocationsFoundMessage();\r\n }\r\n }\r\n\r\n if (!_.find(this.model.locations, x => x.id === this.model.searchParams.locationId)) {\r\n this.model.searchParams.locationId = null;\r\n }\r\n\r\n this.filterGasCycles();\r\n\r\n if (!this.model.searchParams.gasCycleCode) {\r\n this.setDefaultGasCycle();\r\n }\r\n\r\n this.filterLocations();\r\n\r\n if (this.model.filteredLocations.length === 1) {\r\n this.model.searchParams.locationId = this.model.filteredLocations[0].id;\r\n }\r\n }\r\n\r\n private setDefaultGasCycle() {\r\n if (_.isEmpty(this.model.gasDayCycleStatuses) || this.model.gasDayCycleStatuses.allCyclesScheduled()) {\r\n this.model.searchParams.gasCycleCode = null;\r\n } else {\r\n if (!this.model.searchParams.gasCycleCode || !_.find(this.model.filteredLaunchedGasCycles, x => x.code === this.model.searchParams.gasCycleCode)) {\r\n let code = this.model.gasDayCycleStatuses.defaultEarliestNonScheduled().gasCycle.code;\r\n // code may not be in the collection because we may have filtered out the STS cycles.\r\n if (!_.find(this.model.filteredLaunchedGasCycles, x => x.code === code)) {\r\n const gasCycle = _.find(this.model.launchedGasCycles, x => x.code === code);\r\n code = _.maxBy(_.filter(this.model.filteredLaunchedGasCycles, x => x.sequence < gasCycle.sequence), x => x.sequence).code;\r\n }\r\n this.model.searchParams.gasCycleCode = code;\r\n }\r\n }\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n return {\r\n gasDay: this.model.searchParams.gasDay,\r\n locationId: this.model.searchParams.locationId,\r\n gasCycleCode: this.model.searchParams.gasCycleCode\r\n };\r\n }\r\n\r\n public getDefaultChangesWillBeLostMessageOptions(): ModalOptions {\r\n return YesNoCancelModalService.getDefaultYesNoModalOptions();\r\n }\r\n\r\n public hasUnsavedChanges(): boolean {\r\n if (this.model.dataWasUploaded) return true;\r\n\r\n if (this.model.data) {\r\n for (let n = 2; n < this.model.data.length; n++) {\r\n if (this.model.data[n].deliveryRequestDetail && this.model.data[n].deliveryRequestDetail['originalConfirmedEnergyGj'] !== this.model.data[n].deliveryRequestDetail.confirmedEnergyGj) {\r\n return true;\r\n }\r\n if (this.model.data[n].receiptRequestDetail && this.model.data[n].receiptRequestDetail['originalConfirmedEnergyGj'] !== this.model.data[n].receiptRequestDetail.confirmedEnergyGj) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n public navigationCancelled(): void {\r\n }\r\n\r\n protected searchCompleted(): void {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n }\r\n\r\n\r\n //#endregion\r\n // ===================================================\r\n\r\n\r\n // ===================================================\r\n //#region DX GRID EVENTS\r\n\r\n public onCellPrepared = (e): void => {\r\n if (e.rowType === \"data\") {\r\n\r\n const cellElement = dx(e.cellElement);\r\n const numberEditorElement = cellElement.find('.dx-numberbox');\r\n const numberBox = numberEditorElement.data('dxNumberBox');\r\n\r\n if (e.data.key === 'summary' || e.data.key === 'net') {\r\n dx(e.cellElement).addClass(this.summaryCellStyle);\r\n dx(e.cellElement).addClass(this.summaryRowStyle);\r\n } else {\r\n if (!this.model.isReadOnlyMode && !this.model.pageIsUneditable && !this.model.isLocationVirtual()) {\r\n if (this.model.locationIsDth) {\r\n if ((e.data.deliveryRequestDetail && e.column.dataField === 'deliveryRequestDetail.confirmedEnergyDth') ||\r\n (e.data.receiptRequestDetail && e.column.dataField === 'receiptRequestDetail.confirmedEnergyDth')) {\r\n dx(e.cellElement).addClass(this.editCellStyle);\r\n }\r\n } else {\r\n if ((e.data.deliveryRequestDetail && e.column.dataField === 'deliveryRequestDetail.confirmedEnergyGj') ||\r\n (e.data.receiptRequestDetail && e.column.dataField === 'receiptRequestDetail.confirmedEnergyGj')) {\r\n dx(e.cellElement).addClass(this.editCellStyle);\r\n }\r\n }\r\n }\r\n }\r\n if (e.column.dataField === 'deliveryVariance' && e.data.deliveryRequestDetail &&\r\n e.data.deliveryRequestDetail != null && e.data.tcDeliveryTransaction != null &&\r\n Math.round(e.data.deliveryRequestDetail.confirmedEnergyGj) < Math.round(e.data.tcDeliveryTransaction.scheduledEnergy)) {\r\n dx(e.cellElement).addClass(this.redVarianceStyle);\r\n } else if (e.column.dataField === 'receiptVariance' && e.data.receiptRequestDetail &&\r\n e.data.receiptRequestDetail != null && e.data.tcReceiptTransaction != null &&\r\n Math.round(e.data.receiptRequestDetail.confirmedEnergyGj) < Math.round(e.data.tcReceiptTransaction.scheduledEnergy)) {\r\n dx(e.cellElement).addClass(this.redVarianceStyle);\r\n } else if (e.column.dataField === 'deliveryVarianceDth' && e.data.deliveryRequestDetail &&\r\n e.data.deliveryRequestDetail != null && e.data.tcDeliveryTransaction != null &&\r\n Math.round(e.data.deliveryRequestDetail.confirmedEnergyGj) < Math.round(e.data.tcDeliveryTransaction.scheduledEnergy)) {\r\n dx(e.cellElement).addClass(this.redVarianceStyle);\r\n } else if (e.column.dataField === 'receiptVarianceDth' && e.data.receiptRequestDetail &&\r\n e.data.receiptRequestDetail != null && e.data.tcReceiptTransaction != null &&\r\n Math.round(e.data.receiptRequestDetail.confirmedEnergyGj) < Math.round(e.data.tcReceiptTransaction.scheduledEnergy)) {\r\n dx(e.cellElement).addClass(this.redVarianceStyle);\r\n }\r\n\r\n\r\n\r\n\r\n if ((e.column.dataField === 'receiptRequestDetail.confirmedEnergyGj' || e.column.dataField === 'receiptRequestDetail.confirmedEnergyDth') && numberBox) {\r\n numberBox.on('keyDown', (x) => {\r\n DataGridHelpers.filterOutNonIntegerKeys(x);\r\n });\r\n }\r\n }\r\n\r\n DataGridHelpers.highlightNumberCellContents(e);\r\n };\r\n\r\n public onContentReady(): void {\r\n if (this.confirmationDataGrid) {\r\n\r\n if (this.model.locationIsThreaded) {\r\n this.confirmationDataGrid.instance.columnOption('enterpriseShortName', 'caption', \"Service Requester\");\r\n this.confirmationDataGrid.instance.columnOption('nomGroupMnemonic', 'caption', \"Svc Req K\");\r\n }\r\n\r\n this.confirmationDataGrid.instance.columnOption('upDownContract', 'visible', this.model.locationIsThreaded);\r\n this.confirmationDataGrid.instance.columnOption('counterParty', 'visible', this.model.locationIsThreaded);\r\n this.confirmationDataGrid.instance.columnOption('packageId', 'visible', this.model.locationIsConfirmedWithPackageId);\r\n this.confirmationDataGrid.instance.columnOption('deliveryRequestDetail.confirmedEnergyDth', 'visible', this.model.locationIsDth);\r\n this.confirmationDataGrid.instance.columnOption('receiptRequestDetail.confirmedEnergyDth', 'visible', this.model.locationIsDth);\r\n this.confirmationDataGrid.instance.columnOption('tcDeliveryTransaction.scheduledEnergyDth', 'visible', this.model.locationIsDth);\r\n this.confirmationDataGrid.instance.columnOption('tcDeliveryTransaction.nominatedEnergyDth', 'visible', this.model.locationIsDth);\r\n this.confirmationDataGrid.instance.columnOption('tcReceiptTransaction.scheduledEnergyDth', 'visible', this.model.locationIsDth);\r\n this.confirmationDataGrid.instance.columnOption('tcReceiptTransaction.nominatedEnergyDth', 'visible', this.model.locationIsDth);\r\n this.confirmationDataGrid.instance.columnOption('deliveryVarianceDth', 'visible', this.model.locationIsDth);\r\n this.confirmationDataGrid.instance.columnOption('receiptVarianceDth', 'visible', this.model.locationIsDth);\r\n this.confirmationDataGrid.instance.columnOption('tcDeliveryTransaction.scheduledFlowRate', 'caption', `${this.model.confirmationQuantityLabel} Qty GJ/hr`);\r\n this.confirmationDataGrid.instance.columnOption('tcDeliveryTransaction.scheduledEnergy', 'caption', `${this.model.confirmationQuantityLabel} Qty GJ`);\r\n this.confirmationDataGrid.instance.columnOption('tcDeliveryTransaction.scheduledEnergyDth', 'caption', `${this.model.confirmationQuantityLabel} Qty Dth`);\r\n this.confirmationDataGrid.instance.columnOption('tcReceiptTransaction.scheduledFlowRate', 'caption', `${this.model.confirmationQuantityLabel} Qty GJ/hr`);\r\n this.confirmationDataGrid.instance.columnOption('tcReceiptTransaction.scheduledEnergy', 'caption', `${this.model.confirmationQuantityLabel} Qty GJ`);\r\n this.confirmationDataGrid.instance.columnOption('tcReceiptTransaction.scheduledEnergyDth', 'caption', `${this.model.confirmationQuantityLabel} Qty Dth`);\r\n\r\n if (this.model.locationIsDth && this.model.locationIsConfirmedWithPackageId && this.model.locationIsThreaded) {\r\n // Normally, we don't set a width for the grid. This means that the grid will auto-resize columns when the menu slides in/out.\r\n // However, in the case of every possible column showing up, this causes some of the columns to become so small they are un-usable.\r\n // So, we need to set a width in this case so that when we slide out the menu, we don't truncate grid columns.\r\n this.confirmationDataGrid.instance.option('width', '1875px');\r\n\r\n }\r\n }\r\n }\r\n\r\n public onEditorPreparing = (e: any): void => {\r\n this.baseDatagridHandler.onEditorPreparing(e, this.confirmationDataGrid, this.isCellEditable);\r\n if (e.parentType === 'dataRow') {\r\n e.cancel = !this.isCellEditable(e.row, e.dataField);\r\n $(e.editorElement).append($('' + (_.isNil(e.value) ? '' : e.value) + ''));\r\n }\r\n };\r\n\r\n public onEditorPrepared = (e: any): void => {\r\n if (this.isCellEditable(e.row, e.dataField)) {\r\n dx(e.editorElement).addClass(this.editCellStyle);\r\n\r\n if (e.dataField === 'deliveryRequestDetail.confirmedEnergyGj' || e.dataField === 'deliveryRequestDetail.confirmedEnergyDth') {\r\n const dxEditorInstance = dx(e.editorElement).dxNumberBox('instance');\r\n const currentValue = dxEditorInstance.option(\"value\");\r\n dxEditorInstance.on('input', (event) => this.checkForValueChanging(event, e, currentValue));\r\n }\r\n }\r\n };\r\n\r\n public onCellValidating = (e): void => {\r\n if (e.brokenRules.length === 0) {\r\n this.model.hasValidationErrors = false;\r\n if (this.model.locationIsDth) {\r\n if (e.newData.deliveryRequestDetail) {\r\n e.newData.deliveryRequestDetail.confirmedEnergyGj = ConfirmationDetailsModel.convertDthToGj(e.newData.deliveryRequestDetail.confirmedEnergyDth);\r\n }\r\n if (e.newData.receiptRequestDetail) {\r\n e.newData.receiptRequestDetail.confirmedEnergyGj = ConfirmationDetailsModel.convertDthToGj(e.newData.receiptRequestDetail.confirmedEnergyDth);\r\n }\r\n }\r\n } else {\r\n this.model.hasValidationErrors = true;\r\n }\r\n\r\n };\r\n\r\n public onRowUpdated = (e) => {\r\n e.component.getDataSource().store().byKey(e.key)\r\n .then((data) => {\r\n if (e.key !== 'summary' && e.key !== 'net') {\r\n data.deliveryVariance = ConfirmationRequestDetailGridItem.calculateDeliveryVariance(data);\r\n data.receiptVariance = ConfirmationRequestDetailGridItem.calculateReceiptVariance(data);\r\n data.deliveryVarianceDth = ConfirmationRequestDetailGridItem.calculateDeliveryVarianceDth(data);\r\n data.receiptVarianceDth = ConfirmationRequestDetailGridItem.calculateReceiptVarianceDth(data);\r\n this.calculateSummaryRow();\r\n this.calculateNetRow();\r\n }\r\n });\r\n };\r\n\r\n protected resetCompleted(): void {\r\n this.model.modelDirty = false;\r\n this.model.hasValidationErrors = false;\r\n }\r\n\r\n //#endregion\r\n // ===================================================\r\n\r\n\r\n // ===================================================\r\n //#region BUTTON CLICK EVENTS\r\n\r\n public toggleFilterSectionClicked(): void {\r\n this.model.showFilterSection = !this.model.showFilterSection;\r\n }\r\n\r\n public toggleUploadSectionClicked(): void {\r\n this.model.isUploading = !this.model.isUploading;\r\n }\r\n\r\n public submitClicked = () => {\r\n this.alertService.clearMessages();\r\n\r\n this.canSubmitConfirmationRequest().subscribe(canSubmitConfirmationRequest => {\r\n if (canSubmitConfirmationRequest) {\r\n if (!this.model.data) {\r\n return;\r\n }\r\n\r\n if (!this.recordsBeingProcessed) {\r\n this.recordsBeingProcessed = true;\r\n\r\n if (!this.model.locationIsDth) {\r\n for (let n = 2; n < this.model.data.length; n++) { // Make sure that the dth values are nulled out.\r\n const item = this.model.data[n];\r\n if (item.receiptRequestDetail) item.receiptRequestDetail.confirmedEnergyDth = null;\r\n if (item.deliveryRequestDetail) item.deliveryRequestDetail.confirmedEnergyDth = null;\r\n }\r\n }\r\n\r\n // Bug 148359 - re-calculate the GJ value from Dth before submitting\r\n if (this.model.locationIsDth) {\r\n for (let n = 2; n < this.model.data.length; n++) {\r\n const item = this.model.data[n];\r\n\r\n ConfirmationRequestDetailGridItem.calculateReceiptVariance(item);\r\n ConfirmationRequestDetailGridItem.calculateDeliveryVariance(item);\r\n }\r\n }\r\n\r\n this.submitConfirmationRequest();\r\n }\r\n }\r\n });\r\n };\r\n\r\n private canSubmitConfirmationRequest(): Observable {\r\n return this.gasCycleService\r\n .getGasCycleStatus(this.model.lastSearchParams.gasDay, this.model.lastSearchParams.gasCycleCode)\r\n .pipe(\r\n concatMap( gasDayCycleStatus => {\r\n if (!gasDayCycleStatus.isScheduled) {\r\n return of(true);\r\n } else {\r\n const message = 'Confirmation is for a scheduled Gas Day cycle and will be treated as an IPA. Are you sure?';\r\n const yesNoModalOptions = new YesNoModalOptions('Submit Confirmation IPA', message, 'Cancel', 'OK');\r\n\r\n return this.modalService.show(yesNoModalOptions).pipe(\r\n concatMap(selectedModalOption => of(selectedModalOption === SelectedModalOption.Yes))\r\n );\r\n }\r\n })\r\n );\r\n }\r\n\r\n public addConfirmationDetail() {\r\n if (this.addConfirmationDetailPopup.customers.length === 0) {\r\n const queryEnterprises$ = this.queryEnterprises();\r\n const queryNomGroupDetails$ = this.queryNomGroupDetails();\r\n\r\n forkJoin([queryEnterprises$, queryNomGroupDetails$])\r\n .subscribe(() => {\r\n this.resetAndShow();\r\n });\r\n } else {\r\n this.resetAndShow();\r\n }\r\n }\r\n\r\n private queryEnterprises(): Observable {\r\n const enterpriseSearchParams = new EnterpriseSearchParams();\r\n enterpriseSearchParams.gasDay = this.model.lastSearchParams.gasDay;\r\n enterpriseSearchParams.gasAccountType = NominationEnterpriseService.DefaultGasAccountType;\r\n\r\n return this.nominationEnterpriseService.queryAllByPipeline(enterpriseSearchParams)\r\n .pipe(\r\n concatMap(enterprises => this.nominationEnterpriseEnrichmentService.enrichArray(enterprises, 'id')),\r\n tap(enrichedEnterprises => this.addConfirmationDetailPopup.customers = _.orderBy(enrichedEnterprises, x => x.displayValue))\r\n );\r\n }\r\n\r\n private queryNomGroupDetails(): Observable {\r\n return this.nominationGroupService.queryNomGroupDetails(this.model.lastSearchParams.gasDay, null, BusinessRight.CustodyTransfer)\r\n .pipe(\r\n tap(nomGroups => this.addConfirmationDetailPopup.nomGroups = nomGroups)\r\n );\r\n }\r\n\r\n public acceptClicked(): void {\r\n this.appService.clearMessages();\r\n\r\n const gasDay = this.model.searchParams.gasDay;\r\n const gasCycleCode = this.model.searchParams.gasCycleCode;\r\n const locationId = this.model.searchParams.locationId;\r\n const status = ConfirmationStatus.Confirmed;\r\n\r\n this.gasCycleService.changeLocationGasCycleStatus(gasDay, gasCycleCode, locationId, status).subscribe(() => {\r\n this.model.preserveExistingData = false;\r\n this.performSearch().subscribe(() => {});\r\n });\r\n }\r\n\r\n public autoBalanceClicked(): void {\r\n this.appService.clearMessages();\r\n\r\n if (this.model.allowAllLocationConfirmation) {\r\n const singleLocationYesNoModalOptions = new YesNoModalOptions('Auto Balance Location', 'Warning: You are about to balance an individual location. Do you want to continue?', 'Cancel');\r\n\r\n this.modalService.show(singleLocationYesNoModalOptions).subscribe((modalOption: SelectedModalOption) => {\r\n if (modalOption === SelectedModalOption.Yes) {\r\n this.runAutoBalanceLocation();\r\n }\r\n });\r\n } else {\r\n this.runAutoBalanceLocation();\r\n }\r\n }\r\n\r\n private runAutoBalanceLocation() {\r\n const hasBlankOperatorValue = this.hasBlankReceiptOperatorValue(this.model.data) || this.hasBlankDeliveryOperatorValue(this.model.data);\r\n if (!hasBlankOperatorValue) {\r\n this.autoBalanceLocation();\r\n return;\r\n }\r\n\r\n const modalOptions = new YesNoModalOptions('Auto Balance', 'There are missing operator values for one or more customers at this location. Auto balancing will reduce those customers to zero. Are you sure you want to proceed?');\r\n this.modalService.show(modalOptions).subscribe((selectedModalOption: SelectedModalOption) => {\r\n if (selectedModalOption === SelectedModalOption.Yes) {\r\n this.autoBalanceLocation();\r\n }\r\n });\r\n }\r\n\r\n public sendCrClicked = (): void => {\r\n this.alertService.clearMessages();\r\n\r\n this.saveEditData();\r\n if (!this.hasUnsavedChanges()) {\r\n this.sendCr();\r\n } else {\r\n const modalOptions = YesNoCancelModalService.getDefaultYesNoModalOptions();\r\n this.modalService.show(modalOptions).subscribe((selectedModalOption: SelectedModalOption) => {\r\n if (selectedModalOption === SelectedModalOption.Yes) { this.sendCr(); }\r\n });\r\n }\r\n };\r\n\r\n public addDetails(): void {\r\n const rowToDevelop = this.getRowToDevelop();\r\n this.addConfirmationDetailPopup.addDeliveryToRow(rowToDevelop, this.model);\r\n this.addConfirmationDetailPopup.addReceiptToRow(rowToDevelop, this.model);\r\n this.addConfirmationDetailPopup.confirmationDetailsComponent.refresh();\r\n this.calculateSummaryRow();\r\n this.calculateNetRow();\r\n }\r\n\r\n public exportCsv(): void {\r\n // loop through this.model.data and create new properties for GJ or DTH values and UOM\r\n // also pad out receipt or delivery objects\r\n\r\n const csvBuilder = new ConfirmationDetailCsvBuilder(this.model.locationIsDth, this.model.locationShowFlowRateOnConfirmation, this.model.confirmationQuantityLabel, this.model.locationIsThreaded);\r\n const gasCycle = this.buildGasCycleForRequest(this.model.lastSearchParams);\r\n const csvData = _.sortBy( _.filter(this.model.data, (row) => { return row.key !== 'summary' && row.key !== 'net'; }), ['sortValue']);\r\n const location = this.displayNamePipe.transform(this.model.lastSearchParams.locationId, 'id', 'name', this.model.locations);\r\n\r\n const csvRows = _.map(csvData, (row) => {\r\n return csvBuilder.createCsvRowFromGridRow(this.model.lastSearchParams.gasDay, gasCycle, location, row);\r\n });\r\n\r\n const csvModel = csvBuilder.buildCsvModel(csvRows, this.getTitle(), location, this.model.lastSearchParams.gasDay);\r\n this.fileService.downloadCsvFile(csvModel.filename, csvModel.data, csvModel.headers, csvModel.columns);\r\n }\r\n\r\n public uploadCsvClick(): void {\r\n this.alertService.clearMessages();\r\n const request = ConfirmationRequestFactory.CreateValidateConfirmationCsvRequest(this.model.lastSearchParams.gasDay, this.model.lastSearchParams.gasCycleCode,\r\n this.model.lastSearchParams.locationId, this.model.uploadedData);\r\n this.confirmationService.validateCsv(request).subscribe((response) => {\r\n this.processSearchResults(response as ConfirmationRequest);\r\n\r\n this.model.dataWasUploaded = true;\r\n\r\n const numErrors = this.model.confirmationRequest.csvUploadErrors.length;\r\n const successMessage = numErrors ?\r\n `File Upload completed with ${numErrors} errors.` :\r\n 'File Upload Completed.';\r\n this.alertService.addSuccessMessage(successMessage, '');\r\n });\r\n }\r\n\r\n public resetUploadCsvClick(): void {\r\n this.alertService.clearMessages();\r\n this.resetUpload(true);\r\n }\r\n\r\n public browseFileSelectedClick(e) {\r\n if (e.target.files.length > 0) {\r\n const reader = new FileReader();\r\n reader.onload = (event: any) => {\r\n // validate fileformat, column names, gas day + cycle match last search params, uom matches\r\n if (this.validateFileUploadExtension(e.target.files[0].name)) {\r\n this.alertService.clearMessages();\r\n this.extractData(e.target.files[0].name, event.target.result);\r\n }\r\n };\r\n reader.readAsText(e.target.files[0]);\r\n }\r\n }\r\n\r\n public cancelClicked() {\r\n this.resetUpload();\r\n this.searchClicked();\r\n }\r\n\r\n //#endregion\r\n // ===================================================\r\n\r\n\r\n // ===================================================\r\n //#region PUBLIC HELPER METHODS\r\n\r\n public setReadonlyAndPageEditableState(): void {\r\n this.model.pageIsReadOnly = this.pageIsReadOnly();\r\n this.model.pageIsUneditable = this.pageIsUneditable();\r\n }\r\n\r\n public pageIsReadOnly(): boolean {\r\n return !this.model || !this.model.searchParams || !!this.model.searchParams.beforeConfirmationRequestId || this.model.searchParams.readOnly;\r\n }\r\n\r\n public pageIsUneditable(): boolean {\r\n const isEOD = _.isNil(this.model.searchParams.gasCycleCode);\r\n if (this.model.pageViewIsInPPAState && this.model.canViewForPPA() && (this.model.gasDayCycleStatus && !isEOD)) return false;\r\n return isEOD || this.model.pageIsReadOnly || (!!this.model.gasDayCycleStatus && this.model.gasDayCycleStatus.status === SimpleGasDayCycleStatus.ScheduledStatus) || this.model.isReadOnlyMode;\r\n }\r\n\r\n public hasAgaConfirmationResponseItems(): boolean {\r\n return this.model.locationIsConfirmedWithAgaEdi && this.model.confirmationResponseInfo.itemCount > 0;\r\n }\r\n\r\n public viewEventHistory() {\r\n this.router.navigate(['/app', this.getPipelineCode(), 'confirmationeventhistory'], {\r\n queryParams: this.buildExternalPageParams()\r\n }).then(() => {});\r\n }\r\n\r\n public viewConfirmationResponse() {\r\n this.router.navigate(['/app', this.getPipelineCode(), 'confirmationresponse'], {\r\n queryParams: this.buildExternalPageParams()\r\n }).then(() => {});\r\n }\r\n\r\n public isAcceptedDisabled(): boolean {\r\n return this.isButtonDisabled(false) || this.model.locationGasDayCycleStatus.status === ConfirmationStatus.AutoBalancing.value;\r\n }\r\n\r\n public isAutoBalanceDisabled(): boolean {\r\n if (this.model.disableAutoBalanceLocation) return true;\r\n\r\n const allowedStates: string[] = [ConfirmationStatus.SendCR.value, ConfirmationStatus.AwaitingConfirmation.value, ConfirmationStatus.ConfirmationReceived.value];\r\n const anyVariance = _.some(this.model.data, x => (x.receiptVariance !== 0 && x.receiptVariance != null) || (x.deliveryVariance !== 0 && x.deliveryVariance != null));\r\n if (!anyVariance || this.model.pageIsUneditable || this.hasUnsavedChanges() || !this.model.locationGasDayCycleStatus) return true; // todo: Kevin - move to re-usable method\r\n\r\n if (_.includes(allowedStates, this.model.locationGasDayCycleStatus.status)) {\r\n if (this.model.hasConfirmationsEntered) return false;\r\n }\r\n return true;\r\n }\r\n\r\n public isSendCrButtonDisabled = (): boolean => {\r\n // an empty model.data will still have the 2 summary rows, disable SendCr if no actual data to send\r\n return this.model.pageIsUneditable || !this.model.data || !this.model.locationGasDayCycleStatus || this.model.data.length === 2;\r\n };\r\n\r\n public isUploadButtonDisabled(): boolean {\r\n return _.isNil(this.model.lastSearchParams.gasCycleCode) || this.model.isLocationVirtual(); // Disable if EOD or Virtual Location\r\n }\r\n\r\n public isSubmitButtonDisabled = (): boolean => {\r\n return this.model == null\r\n || this.model.locationGasDayCycleStatus == null\r\n || (this.model.locationGasDayCycleStatus.status === ConfirmationStatus.ConfirmationReceived.value && !this.hasRedVariance() && !this.hasUnsavedChanges())\r\n || this.model.locationGasDayCycleStatus.status === ConfirmationStatus.AutoBalancing.value\r\n || this.model.data == null || this.model.data.length === 0\r\n || this.recordsBeingProcessed\r\n || this.model.pageIsUneditable\r\n || this.model.hasValidationErrors;\r\n\r\n };\r\n\r\n public onGasDayChanged = (): void => {\r\n // this will be fired even when a null value is returned from the date picker and don't want to reload with a bad date\r\n if (!this.model.searchParams.gasDay) return;\r\n\r\n // This forces it to be correctly defaulted in loadResources().\r\n this.model.searchParams.gasCycleCode = null;\r\n this.loadSearchResources().subscribe(() => {});\r\n };\r\n\r\n public onLocationSelectionChanged = (): void => {\r\n this.filterGasCycles();\r\n };\r\n\r\n public onGasCycleSelectionChanged = (): void => {\r\n this.filterLocations();\r\n };\r\n\r\n public canNotOverride(): boolean {\r\n if (this.model.pageIsUneditable) { return true; }\r\n if (!this.model.data) { return true; }\r\n if (!this.model.lastSearchParams || !this.model.lastSearchParams.locationId) { return true; }\r\n if (this.model.isLocationVirtual()) return true;\r\n\r\n const location = _.find(this.model.locations, loc => loc.id === this.model.lastSearchParams.locationId);\r\n return location && (! location.accountingLocationParameters.overrideAllowed);\r\n }\r\n\r\n public overrideClicked() {\r\n this.alertService.clearMessages();\r\n if (!this.model || !this.model.data ) {\r\n return;\r\n }\r\n\r\n _.forEach(this.model.data, row => {\r\n if (row.key !== 'summary' && row.key !== 'net') {\r\n if (row.tcDeliveryTransaction) {\r\n row.deliveryRequestDetail.confirmedEnergyGj = row.tcDeliveryTransaction.scheduledEnergy;\r\n if (this.model.locationIsDth) row.deliveryRequestDetail.confirmedEnergyDth = ConfirmationDetailsModel.convertGjToDth(row.deliveryRequestDetail.confirmedEnergyGj);\r\n row.deliveryVariance = ConfirmationRequestDetailGridItem.calculateDeliveryVariance(row);\r\n row.deliveryVarianceDth = ConfirmationRequestDetailGridItem.calculateDeliveryVarianceDth(row);\r\n }\r\n if (row.tcReceiptTransaction) {\r\n row.receiptRequestDetail.confirmedEnergyGj = row.tcReceiptTransaction.scheduledEnergy;\r\n if (this.model.locationIsDth) row.receiptRequestDetail.confirmedEnergyDth = ConfirmationDetailsModel.convertGjToDth(row.receiptRequestDetail.confirmedEnergyGj);\r\n row.receiptVariance = ConfirmationRequestDetailGridItem.calculateReceiptVariance(row);\r\n row.receiptVarianceDth = ConfirmationRequestDetailGridItem.calculateReceiptVarianceDth(row);\r\n }\r\n }\r\n });\r\n this.calculateSummaryRow();\r\n this.calculateNetRow();\r\n }\r\n\r\n public confirmationValuesEntered(): boolean {\r\n let found = false;\r\n _.forEach(this.model.data, row => {\r\n if (found) { return true; }\r\n if (row.key !== 'summary' && row.key !== 'net') {\r\n if (row.tcDeliveryTransaction) {\r\n found = row.deliveryRequestDetail.confirmedEnergyGj !== null || row.deliveryRequestDetail.confirmedEnergyDth !== null;\r\n } else {\r\n found = row.receiptRequestDetail.confirmedEnergyGj !== null || row.receiptRequestDetail.confirmedEnergyDth !== null;\r\n }\r\n }\r\n });\r\n return found;\r\n }\r\n\r\n public submitConfirmationRequest = () => {\r\n this.alertService.clearMessages();\r\n this.saveEditData();\r\n this.confirmationService.submitConfirmationRequest(\r\n this.model.lastSearchParams.gasDay,\r\n this.model.lastSearchParams.gasCycleCode,\r\n this.model.lastSearchParams.locationId,\r\n this.model.confirmationRequest\r\n )\r\n .pipe(\r\n concatMap(() => this.loadSearchResources()),\r\n concatMap(() => {\r\n this.setupDataGridColumns();\r\n return this.performSearch();\r\n }))\r\n .subscribe(() => {\r\n this.alertService.addSuccessMessage('Confirmations Submitted', '');\r\n this.recordsBeingProcessed = false;\r\n }, (res) => {\r\n this.recordsBeingProcessed = false;\r\n const errMsg = ErrorService.getErrorMessageFromErrorResponse(res);\r\n if (errMsg.includes('Cycle is being scheduled', 0)) {\r\n this.setupDataGridColumns();\r\n return this.performSearch().subscribe();\r\n }\r\n });\r\n };\r\n\r\n public checkForCreateableEnergy() {\r\n if (this.model == null || this.model.data == null) {\r\n this.addConfirmationDetailPopup.canAddReceiptOperatorQty = this.addConfirmationDetailPopup.canAddDeliveryOperatorQty = false;\r\n this.addConfirmationDetailPopup.receiptOperatorQty = this.addConfirmationDetailPopup.deliveryOperatorQty = null;\r\n }\r\n\r\n const location = _.find(this.model.locations, {id: this.model.searchParams.locationId});\r\n const existingDetailRow = this.addConfirmationDetailPopup.getMatchingDetailRows(this.model.data);\r\n\r\n const receiptConfirmation = _.find(existingDetailRow, row => row.receiptRequestDetail != null);\r\n this.addConfirmationDetailPopup.canAddReceiptOperatorQty = this.addConfirmationDetailPopup.customerId != null && this.addConfirmationDetailPopup.nomGroupId != null && !receiptConfirmation && location.accountingLocationParameters.isReceipt;\r\n if (receiptConfirmation != null && !this.addConfirmationDetailPopup.canAddDeliveryOperatorQty) {\r\n this.addConfirmationDetailPopup.receiptOperatorQty = receiptConfirmation.receiptRequestDetail.confirmedEnergyGj;\r\n } else {\r\n this.addConfirmationDetailPopup.receiptOperatorQty = null;\r\n }\r\n const deliveryConfirmation = _.find(existingDetailRow, row => row.deliveryRequestDetail != null);\r\n this.addConfirmationDetailPopup.canAddDeliveryOperatorQty = this.addConfirmationDetailPopup.customerId != null && this.addConfirmationDetailPopup.nomGroupId != null && !deliveryConfirmation && location.accountingLocationParameters.isDelivery;\r\n if (deliveryConfirmation != null && !this.addConfirmationDetailPopup.canAddDeliveryOperatorQty) {\r\n this.addConfirmationDetailPopup.deliveryOperatorQty = deliveryConfirmation.deliveryRequestDetail.confirmedEnergyGj;\r\n } else {\r\n this.addConfirmationDetailPopup.deliveryOperatorQty = null;\r\n }\r\n }\r\n\r\n public refresh() {\r\n this.confirmationDataGrid.instance.refresh();\r\n }\r\n\r\n public calculateSortValue(e) {\r\n const dataField = \"dataField\";\r\n const sortOrder = \"sortOrder\";\r\n\r\n if (e.key === 'summary' && this['sortIndex'] === 0) {\r\n if (this['dataType'] === 'string') return (this[sortOrder] === 'asc') ? '!' : '~~';\r\n else { return (this[sortOrder] === 'asc') ? -2 : 99999999999; }\r\n } else if (e.key === 'net' && this['sortIndex'] === 0) {\r\n if (this['dataType'] === 'string') return (this[sortOrder] === 'asc') ? '!!' : '~';\r\n else {return (this[sortOrder] === 'asc') ? -1 : 99999999998; }\r\n } else {\r\n const pos = this[dataField].indexOf('.');\r\n if (pos < 0) {\r\n return e[this[dataField]] || 0;\r\n } else {\r\n const f1 = this[dataField].substr(0, pos);\r\n const f2 = this[dataField].substr(pos + 1);\r\n return e[f1] ? e[f1][f2] : 0;\r\n }\r\n }\r\n }\r\n\r\n public gasCyclePlaceholder(): string {\r\n return GasCycleLogic.placeholder(this.model.gasDayCycleStatuses);\r\n }\r\n\r\n public isGasCycleRequired(): boolean {\r\n return GasCycleLogic.isRequired(this.model.gasDayCycleStatuses);\r\n }\r\n\r\n // Delivery EPSQ\r\n public validateDeliveryOperatorQtyInGjGreaterThanOrEqualToScheduledEpsq = (e): boolean => {\r\n if (this.model.locationIsDth) return true;\r\n\r\n if (_.isNil(e.data.deliveryRequestDetail)) return true;\r\n\r\n const value = _.isNil(e.value) ? undefined : +e.value;\r\n return this.validateOperatorQtyGreaterThanOrEqualToScheduledEpsq(e, value, true);\r\n };\r\n\r\n public validateDeliveryOperatorQtyInDthGreaterThanOrEqualToScheduledEpsq = (e): boolean => {\r\n if (!this.model.locationIsDth) return true;\r\n\r\n if (_.isNil(e.data.deliveryRequestDetail)) return true;\r\n\r\n const authorizedValue = _.isNil(e.value) ? undefined : +e.value;\r\n const value = ConfirmationDetailsModel.convertDthToGj(authorizedValue);\r\n return this.validateOperatorQtyGreaterThanOrEqualToScheduledEpsq(e, value, true);\r\n };\r\n\r\n // Receipt EPSQ\r\n public validateReceiptOperatorQtyInGjGreaterThanOrEqualToScheduledEpsq = (e): boolean => {\r\n if (this.model.locationIsDth) return true;\r\n\r\n if (_.isNil(e.data.receiptRequestDetail)) return true;\r\n\r\n const value = _.isNil(e.value) ? undefined : +e.value;\r\n return this.validateOperatorQtyGreaterThanOrEqualToScheduledEpsq(e, value, false);\r\n };\r\n\r\n public validateReceiptOperatorQtyInDthGreaterThanOrEqualToScheduledEpsq = (e): boolean => {\r\n if (!this.model.locationIsDth) return true;\r\n\r\n if (_.isNil(e.data.receiptRequestDetail)) return true;\r\n\r\n const authorizedValue = _.isNil(e.value) ? undefined : +e.value;\r\n const value = ConfirmationDetailsModel.convertDthToGj(authorizedValue);\r\n return this.validateOperatorQtyGreaterThanOrEqualToScheduledEpsq(e, value, false);\r\n };\r\n\r\n\r\n public validateOperatorQtyGreaterThanOrEqualToScheduledEpsq(e: any, value: any, isDelivery: boolean): boolean {\r\n // We always compare in GJ to avoid rounding errors.\r\n\r\n const key = e.validator.option(\"validationGroup.key\");\r\n const grid = this.confirmationDataGrid.instance;\r\n const rowOptions = grid.getVisibleRows()[grid.getRowIndexByKey(key)];\r\n\r\n let scheduledEpsq = 0;\r\n if (isDelivery && rowOptions.data.deliveryRequestDetail != null && rowOptions.data.tcDeliveryTransaction != null) {\r\n scheduledEpsq = rowOptions.data.tcDeliveryTransaction.scheduledEpsq;\r\n } else {\r\n scheduledEpsq = rowOptions.data.tcReceiptTransaction.scheduledEpsq;\r\n }\r\n\r\n const isValid = this.isOperatorValueValidComparedToEpsq(value, scheduledEpsq);\r\n\r\n if (isValid) { return true; }\r\n e.rule.message =\r\n `Operator value cannot be below EPSQ of ${scheduledEpsq} GJ.`;\r\n return false;\r\n }\r\n\r\n private isOperatorValueValidComparedToEpsq(authorizedQuantity: number, scheduledEpsq: any) {\r\n return (_.isNil(authorizedQuantity) || _.isNil(scheduledEpsq)) ? true : authorizedQuantity >= scheduledEpsq - 5;\r\n }\r\n\r\n //#endregion\r\n // ===================================================\r\n\r\n\r\n // ===================================================\r\n //#region PRIVATE HELPER METHODS\r\n\r\n private hasRedVariance(): boolean {\r\n return _.some(this.model.data, x => (x.receiptVariance > 0 && x.receiptVariance != null) || (x.deliveryVariance > 0 && x.deliveryVariance != null));\r\n }\r\n\r\n private isButtonDisabled(notAnyVariance: boolean): boolean {\r\n let anyVariance = _.some(this.model.data, x => (x.receiptVariance !== 0 && x.receiptVariance != null) || (x.deliveryVariance !== 0 && x.deliveryVariance != null));\r\n if (notAnyVariance) anyVariance = !anyVariance;\r\n\r\n const result = this.model.pageIsUneditable\r\n || this.hasUnsavedChanges()\r\n || !this.model.locationGasDayCycleStatus\r\n || (anyVariance && this.model.locationGasDayCycleStatus.status === ConfirmationStatus.ConfirmationReceived.value)\r\n || this.model.locationGasDayCycleStatus.status === ConfirmationStatus.NotStarted.value\r\n || this.model.locationGasDayCycleStatus.status === ConfirmationStatus.SendCR.value\r\n || this.model.locationGasDayCycleStatus.status === ConfirmationStatus.AwaitingConfirmation.value && anyVariance\r\n || this.model.locationGasDayCycleStatus.status === ConfirmationStatus.Confirmed.value;\r\n\r\n return result;\r\n }\r\n\r\n private autoBalanceLocation(): void {\r\n const request = AutoBalanceRequestFactory.CreateAutoBalanceLocationRequest(this.model.searchParams.gasDay, this.model.searchParams.gasCycleCode, this.model.searchParams.locationId);\r\n\r\n this.autoBalanceService.autoBalanceLocation(request).subscribe(() => {\r\n this.model.preserveExistingData = false;\r\n this.performSearch().subscribe(() => {});\r\n });\r\n }\r\n\r\n private sendCr(): void {\r\n const locations: string[] = [this.model.lastSearchParams.locationId.toString()];\r\n const gasDay = this.model.lastSearchParams.gasDay;\r\n const request = ConfirmationRequestFactory.CreateSendCrRequest(locations, gasDay, this.model.lastSearchParams.gasCycleCode);\r\n this.confirmationService.sendCrConfirmation(request).subscribe(\r\n () => {\r\n this.alertService.addSuccessMessage(\"Success\", \"Confirmations have been sent.\");\r\n this.model.preserveExistingData = false;\r\n this.performSearch().subscribe(() => {});\r\n });\r\n }\r\n\r\n private isCellEditable = (row, dataField: string): boolean => {\r\n if (this.isRowEditable(row)) {\r\n switch (dataField) {\r\n case 'deliveryRequestDetail.confirmedEnergyGj':\r\n return !this.model.locationIsDth && row.data.deliveryRequestDetail;\r\n case 'receiptRequestDetail.confirmedEnergyGj':\r\n return !this.model.locationIsDth && row.data.receiptRequestDetail;\r\n case 'deliveryRequestDetail.confirmedEnergyDth':\r\n return this.model.locationIsDth && row.data.deliveryRequestDetail;\r\n case 'receiptRequestDetail.confirmedEnergyDth':\r\n return this.model.locationIsDth && row.data.receiptRequestDetail;\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n private buildExternalPageParams() {\r\n const request = new ConfirmationEventHistorySearchRequest();\r\n request.gasDay = this.model.lastSearchParams.gasDay;\r\n request.locationId = this.model.lastSearchParams.locationId;\r\n request.gasCycleCode = this.buildGasCycleCodeForRequest(this.model.lastSearchParams);\r\n\r\n return request;\r\n }\r\n\r\n private saveEditData(): void {\r\n if (this.confirmationDataGrid && this.confirmationDataGrid.instance) {\r\n from(this.confirmationDataGrid.instance.saveEditData()); // commit any unsaved datagrid data to the model\r\n }\r\n }\r\n\r\n private filterGasCycles = (): void => {\r\n // Filter out STS cycles if the selected gas cycle is STS but the location can't confirm STS Cycles.\r\n let showSts = true;\r\n if (this.model.searchParams.locationId && this.model.searchParams.gasCycleCode) {\r\n const location = _.find(this.model.locations, x => x.id === this.model.searchParams.locationId);\r\n const gasCycle = _.find(this.model.gasCycles, x => x.code === this.model.searchParams.gasCycleCode);\r\n if (gasCycle.isStsCycle) {\r\n showSts = location.accountingLocationParameters && location.accountingLocationParameters.areSTSCyclesConfirmed;\r\n }\r\n }\r\n if (showSts) {\r\n this.model.filteredLaunchedGasCycles = this.model.launchedGasCycles;\r\n } else {\r\n this.model.filteredLaunchedGasCycles = _.filter(this.model.launchedGasCycles, x => !x.isStsCycle);\r\n }\r\n };\r\n\r\n private filterLocations = (): void => {\r\n if (this.model.searchParams.gasCycleCode) {\r\n const gasCycle = _.find(this.model.gasCycles, x => x.code === this.model.searchParams.gasCycleCode);\r\n if (gasCycle.isStsCycle) {\r\n // If gas cycle is STS, then keep only locations that can confirm STS cycles.\r\n this.model.filteredLocations = _.filter(this.model.locations, x => x.accountingLocationParameters.areSTSCyclesConfirmed);\r\n } else {\r\n this.model.filteredLocations = this.model.locations;\r\n }\r\n } else {\r\n // If it's EOD, show all the locations\r\n this.model.filteredLocations = this.model.locations;\r\n }\r\n };\r\n\r\n private paramValidator(): ParamValidator {\r\n const queryParams = ParamValidator.Standard();\r\n queryParams.isGasDay('gasDay');\r\n queryParams.isString('gasCycleCode', true);\r\n queryParams.isNumber('locationId');\r\n queryParams.isBoolean('readonly', true);\r\n return queryParams;\r\n }\r\n\r\n private isViewOnly = (): boolean => {\r\n if (this.model.isReadOnlyMode) return true;\r\n if (this.model.timelyOpenGasDayCycle && this.model.lastSearchParams) {\r\n const d1 = this.model.timelyOpenGasDayCycle.gasDay.toDate;\r\n return d1.valueOf() > this.model.lastSearchParams.gasDay.valueOf();\r\n } else {\r\n return true;\r\n }\r\n };\r\n\r\n private isRowEditable = (row): boolean => {\r\n if (_.isNil(row)) {\r\n return false;\r\n }\r\n return !this.isViewOnly() && row.data.key !== 'summary' && row.data.key !== 'net';\r\n };\r\n\r\n private checkForValueChanging(inputEvent: any, editorPreparedEvent: any, oldValue: any): void {\r\n // todo: KEVIN -- what is this for? it doesn't do anything\r\n const newValue = inputEvent.component.option(\"value\");\r\n }\r\n\r\n private getLocationGasCycleStatus(req: BaseConfirmationDetailsRequest): Observable {\r\n return this.gasCycleService.getLocationGasCycleStatus(req)\r\n .pipe(\r\n concatMap(response => {\r\n return this.nominationEnterpriseEnrichmentService.enrich(response, 'operatorId', 'operator');\r\n }));\r\n }\r\n\r\n private queryConfirmationRequest(req: BaseConfirmationDetailsRequest): Observable {\r\n return this.confirmationService.queryConfirmationRequest(req)\r\n .pipe(\r\n concatMap(response => {\r\n const confirmationTransactionsItem2Array: ConfirmationRequestDetail[] =\r\n _.flatMap(response.confirmationTransactions, request => request.item2);\r\n\r\n return forkJoin([\r\n this.nominationEnterpriseEnrichmentService.enrichArray(confirmationTransactionsItem2Array, 'serviceRequestorEnterpriseId', 'enterprise'),\r\n this.nominationNomGroupEnrichmentService.enrichArray(confirmationTransactionsItem2Array, 'nominationGroupId', 'nomGroup')\r\n ]).pipe(concatMap(() => of(response)));\r\n }));\r\n }\r\n\r\n private setupDataGridColumns() {\r\n const location = _.find(this.model.locations, {id: this.model.searchParams.locationId});\r\n\r\n this.addConfirmationDetailPopup.locationIsThreaded = this.model.locationIsThreaded = location.accountingLocationParameters.confirmationMethod === 'Threaded';\r\n this.addConfirmationDetailPopup.locationIsConfirmedWithPackageId = this.model.locationIsConfirmedWithPackageId = location.accountingLocationParameters.isPackageIdConfirmed;\r\n this.model.locationIsDth = location.accountingLocationParameters.confirmationUOM === 'Dth';\r\n this.model.locationShowFlowRateOnConfirmation = location.accountingLocationParameters.showFlowRateOnConfirmation;\r\n this.model.locationIsConfirmedWithAgaEdi = location.accountingLocationParameters.isConfirmationByEDI\r\n && location.accountingLocationParameters.ediConfirmationMethod === EdiConfirmationMethod.AGA.value;\r\n }\r\n\r\n private processSearchResults(confirmationRequest: ConfirmationRequest) {\r\n const that = this;\r\n const originalData = this.model.data;\r\n const originalConfirmationRequest = this.model.confirmationRequest;\r\n this.model.confirmationRequest = confirmationRequest;\r\n this.model.data = [ new ConfirmationRequestDetailGridItem(), new ConfirmationRequestDetailGridItem()];\r\n this.model.requestGasDayCycleInEffect =\r\n GasDay.parse(confirmationRequest.effectiveGasDay).toDisplayFormat() + ' ' +\r\n ( this.model.gasCycles.find(item => item.id === confirmationRequest.effectiveGasCycleId) as any ).displayValue;\r\n\r\n this.model.confirmationRecordCount = confirmationRequest.confirmationTransactions.length;\r\n\r\n confirmationRequest.confirmationTransactions.forEach((tuple) => {\r\n that.convertTupleToGridItem(tuple);\r\n });\r\n\r\n if (confirmationRequest.lastModDateTime) {\r\n const dt = new Date(confirmationRequest.lastModDateTime);\r\n this.model.submittedBy = confirmationRequest.lastModByUserId + ', ' + GasDay.from(dt).toDisplayFormat() + ' ' + moment(dt).format('HH:mm:ss');\r\n }\r\n\r\n if (this.model.preserveExistingData) {\r\n for (let n = 2; n < originalData.length; n++) {\r\n const key = originalData[n].key;\r\n const newItem: ConfirmationRequestDetailGridItem = this.model.data[key];\r\n if (newItem) {\r\n newItem.PreserveWithExistingData(originalData[n]);\r\n } else {\r\n this.model.data[key] = originalData[n];\r\n this.model.data.push(originalData[n]);\r\n }\r\n }\r\n originalConfirmationRequest.confirmationTransactions.forEach(tuple => {\r\n if (!tuple.item2.id) {\r\n this.model.confirmationRequest.confirmationTransactions.push(tuple);\r\n }\r\n });\r\n }\r\n\r\n this.calculateSummaryRow();\r\n this.calculateNetRow();\r\n\r\n this.model.hasConfirmationsEntered = this.confirmationValuesEntered();\r\n }\r\n\r\n private convertTupleToGridItem(tuple: Tuple): ConfirmationRequestDetailGridItem {\r\n // A given key may have a receipt transaction, a delivery transaction, or both.\r\n // If both, we merge the two records into one; we use the key to easily find it\r\n // in the array. In a future story, use key for the actual key of the data source.\r\n const key = ConfirmationRequestDetailGridItem.createKeyForRequestDetail(tuple.item2);\r\n let gridItem: ConfirmationRequestDetailGridItem = this.model.data[key];\r\n if (!gridItem) {\r\n gridItem = ConfirmationRequestDetailGridItem.CreateFromTuple(tuple, key);\r\n\r\n this.nominationNomGroupEnrichmentService.enrich(gridItem, 'nomGroupId', 'nomGroup')\r\n .pipe(\r\n concatMap(() => {\r\n return this.nominationEnterpriseEnrichmentService.enrich(gridItem, 'enterpriseId', 'enterprise');\r\n })).subscribe(() => {\r\n // TODO - JOE - Verify that this subscribe here works with the view.\r\n gridItem.sortValue = gridItem.nomGroupMnemonic.toLowerCase();\r\n this.model.data[key] = gridItem;\r\n this.model.data.push(gridItem);\r\n });\r\n }\r\n\r\n gridItem.UpdateBasedOnFlowDirection(tuple, this.model.gasDayCycleStatus.isLaunched);\r\n\r\n // Update variances instead of calling UpdateVariances as UpdateVariances will do\r\n // unnecessary conversion of units which can cause rounding discrepancies.\r\n if (!(_.isNil(gridItem.tcDeliveryTransaction) || _.isNil(gridItem.tcDeliveryTransaction.scheduledEnergy))) {\r\n gridItem.deliveryVariance = gridItem.tcDeliveryTransaction.scheduledEnergy - gridItem.deliveryRequestDetail.confirmedEnergyGj;\r\n gridItem.deliveryVarianceDth = gridItem.tcDeliveryTransaction.scheduledEnergyDth - gridItem.deliveryRequestDetail.confirmedEnergyDth;\r\n }\r\n if (!(_.isNil(gridItem.tcReceiptTransaction) || _.isNil(gridItem.tcReceiptTransaction.scheduledEnergy))) {\r\n gridItem.receiptVariance = gridItem.tcReceiptTransaction.scheduledEnergy - gridItem.receiptRequestDetail.confirmedEnergyGj;\r\n gridItem.receiptVarianceDth = gridItem.tcReceiptTransaction.scheduledEnergyDth - gridItem.receiptRequestDetail.confirmedEnergyDth;\r\n }\r\n\r\n return gridItem;\r\n }\r\n\r\n private resetAndShow(): void {\r\n this.addConfirmationDetailPopup.reset();\r\n this.modal.show();\r\n }\r\n\r\n private addNoLocationsFoundMessage(): void {\r\n if (_.isNil(this.userService.user) || !this.userService.user.isAssumingIdentity) {\r\n this.alertService.addWarnMessage('Warning', `Locations were not found for Gas Day ${this.model.searchParams.gasDay.toDisplayFormat()}`);\r\n } else {\r\n this.alertService.addWarnMessage('Warning', `Locations were not found for ${this.userService.user.assumedEnterpriseDisplayName} for Gas Day ${this.model.searchParams.gasDay.toDisplayFormat()}`);\r\n }\r\n }\r\n\r\n private gridBlurCallback() {\r\n // If this is IE, the focus control may be hidden behind the top panel.\r\n // Chrome works properly, but running this code doesn't hurt.\r\n setTimeout(() => window.scrollTo(0, 0));\r\n }\r\n\r\n private getRowToDevelop(): ConfirmationRequestDetailGridItem {\r\n const existingDetailRows = this.addConfirmationDetailPopup.getMatchingDetailRows(this.model.data);\r\n if (existingDetailRows == null || existingDetailRows.length === 0) {\r\n const newRow = this.addConfirmationDetailPopup.getRowToDevelop();\r\n newRow.UpdateVariances();\r\n this.confirmationDataGrid.instance.getDataSource().store().insert(newRow);\r\n return newRow;\r\n }\r\n return existingDetailRows[0];\r\n }\r\n\r\n private calculateSummaryRow = () => {\r\n const sumRow: ConfirmationRequestDetailGridItem = this.model.data[0];\r\n sumRow.CalculateSummary(this.model.data);\r\n };\r\n\r\n private calculateNetRow = () => {\r\n const sumRow: ConfirmationRequestDetailGridItem = this.model.data[0];\r\n const netRow: ConfirmationRequestDetailGridItem = this.model.data[1];\r\n netRow.calculateNet(sumRow);\r\n\r\n // This works around a grid bug where the first time you type in a number,\r\n // the Net row isn't repainted.\r\n window.setTimeout(() => this.confirmationDataGrid.instance.repaintRows([0, 1]));\r\n };\r\n\r\n private validateFileUploadExtension(fileName: string): boolean {\r\n const errorMsg = 'The uploaded file must be in .csv (comma separated value) format';\r\n if (fileName.split('.').length > 1) {\r\n const ext = fileName.split('.').pop();\r\n if (ext === 'csv') return true; // if we got this far we're validated. just return\r\n }\r\n this.alertService.addErrorMessage('Error', errorMsg);\r\n return false;\r\n }\r\n\r\n private extractData(fileName: string, data: string) {\r\n this.model.uploadFileName = fileName;\r\n const csvBuilder = new ConfirmationDetailCsvBuilder(this.model.locationIsDth, this.model.locationShowFlowRateOnConfirmation, this.model.confirmationQuantityLabel, this.model.locationIsThreaded);\r\n this.csvUtility.extractData(data, this.model, csvBuilder.headers, this.processRows, true, true);\r\n }\r\n\r\n private processRows = (result: Array>, fields: Array) => {\r\n const csvBuilder = new ConfirmationDetailCsvBuilder(this.model.locationIsDth, this.model.locationShowFlowRateOnConfirmation, this.model.confirmationQuantityLabel, this.model.locationIsThreaded);\r\n const colIndices = new Array();\r\n _.each(csvBuilder.headers, (header) => colIndices.push(this.csvUtility.findColumnHeaderColumn(fields, header)));\r\n\r\n let createFromUpload: any;\r\n if (this.model.locationShowFlowRateOnConfirmation){\r\n createFromUpload = ConfirmationDetailCsvRow.createFromFlowRateUpload;\r\n } else {\r\n createFromUpload = this.model.locationIsDth ?\r\n ConfirmationDetailCsvRow.createFromDthUpload :\r\n ConfirmationDetailCsvRow.createFromGjUpload;\r\n }\r\n\r\n this.model.uploadedData = new Array();\r\n let rowIndex = 0;\r\n result.forEach((row: Array) => {\r\n this.model.uploadedData.push(createFromUpload(\r\n ++rowIndex,\r\n row[colIndices[0]],\r\n row[colIndices[1]],\r\n row[colIndices[2]],\r\n row[colIndices[3]],\r\n row[colIndices[4]],\r\n row[colIndices[5]],\r\n row[colIndices[6]],\r\n row[colIndices[7]],\r\n row[colIndices[8]],\r\n row[colIndices[9]],\r\n row[colIndices[10]],\r\n row[colIndices[11]],\r\n row[colIndices[12]],\r\n row[colIndices[13]],\r\n row[colIndices[14]],\r\n row[colIndices[15]],\r\n row[colIndices[16]]\r\n ));\r\n });\r\n };\r\n\r\n private resetUpload(showUploadSection: boolean = false): void {\r\n this.model.isUploading = showUploadSection;\r\n this.model.uploadedData = null;\r\n this.model.uploadFileName = '';\r\n if (this.model.confirmationRequest) this.model.confirmationRequest.csvUploadErrors = null;\r\n }\r\n\r\n private isLocationStsCyclesConfirmed(locationId: number): boolean {\r\n const location = _.find(this.model.locations, x => x.id === locationId);\r\n return !_.isNil(location) && location.accountingLocationParameters.areSTSCyclesConfirmed;\r\n }\r\n\r\n private buildGasCycleCodeForRequest(params: ConfirmationDetailsSearchParam) {\r\n const nonStsCycles = !this.isLocationStsCyclesConfirmed(params.locationId);\r\n return GasCycleLogic.buildGasCycleCodeForRequest(this.model.gasDayCycleStatuses, params.gasCycleCode, false, nonStsCycles);\r\n }\r\n\r\n private buildGasCycleForRequest(params: ConfirmationDetailsSearchParam) {\r\n const nonStsCycles = !this.isLocationStsCyclesConfirmed(params.locationId);\r\n return GasCycleLogic.buildGasCycleForRequest(this.model.gasDayCycleStatuses, params.gasCycleCode, false, nonStsCycles);\r\n }\r\n\r\n private hasBlankReceiptOperatorValue(data: ConfirmationRequestDetailGridItem[]): boolean {\r\n const hasBlank = _.some(data, x => {\r\n if (x.key === 'net' || _.isNil(x.tcReceiptTransaction) || _.isNil(x.tcReceiptTransaction.scheduledEnergy)) { return false; }\r\n return _.isNil(x.receiptRequestDetail.confirmedEnergyGj) && _.isNil(x.receiptRequestDetail.confirmedEnergyDth);\r\n });\r\n return hasBlank;\r\n }\r\n\r\n private hasBlankDeliveryOperatorValue(data: ConfirmationRequestDetailGridItem[]): boolean {\r\n const hasBlank = _.some(data, x => {\r\n if (x.key === 'net' || _.isNil(x.tcDeliveryTransaction) || _.isNil(x.tcDeliveryTransaction.scheduledEnergy)) { return false; }\r\n return _.isNil(x.deliveryRequestDetail.confirmedEnergyGj) && _.isNil(x.deliveryRequestDetail.confirmedEnergyDth);\r\n });\r\n return hasBlank;\r\n }\r\n\r\n //#endregion\r\n // ===================================================\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {Observable} from \"rxjs\";\r\nimport {NominationResourceService} from \"@shared/resources/nominations-resource.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {AccountSummaryReport} from \"app/gcts/nomination/account-summary/account-summary-model\";\r\nimport {GasCycleLogic} from \"app/shared/classes/gas-cycle.logic\";\r\nimport {GasDayCycleStatusCollection} from \"app/shared/classes/gas-day-cycle-status-collection\";\r\nimport {HttpResponse} from \"@angular/common/http\";\r\n\r\nexport class AccountSummaryRequest {\r\n enterpriseId?: number;\r\n gasDay: GasDay;\r\n gasCycleCode?: string = 'T';\r\n gasCycleDisplayCode: string;\r\n// locationIds: number[];\r\n locationId?: number;\r\n varianceOnly: boolean;\r\n nomTcplVarianceOnly: boolean;\r\n showDetails: boolean;\r\n hubAccountId?: number;\r\n accountType?: string;\r\n}\r\n\r\nexport class AccountSummaryHistoryRequest {\r\n gasDay: GasDay;\r\n gasCycleCode: string;\r\n dailyTransactionId: number;\r\n hubAccountId: number;\r\n transactionType: string;\r\n isDebitTransaction: boolean;\r\n\r\n public static create(gasDay: GasDay, gasCycleCode: string, gasDayCycleStatuses: GasDayCycleStatusCollection, row: AccountSummaryReport): AccountSummaryHistoryRequest {\r\n const request = new AccountSummaryHistoryRequest();\r\n request.gasDay = gasDay;\r\n request.gasCycleCode = gasCycleCode;\r\n request.gasCycleCode = GasCycleLogic.buildGasCycleCodeForRequest(gasDayCycleStatuses, gasCycleCode);\r\n request.dailyTransactionId = row.dailyTransactionId;\r\n request.hubAccountId = row.hubAccountId;\r\n request.transactionType = row.transactionType;\r\n if (request.transactionType === 'Transport') {\r\n request.isDebitTransaction = row.isDebitTransaction;\r\n }\r\n return request;\r\n }\r\n}\r\n\r\nexport class AccountSummary {\r\n cycleStatus: string;\r\n accountSummarySummaries: AccountSummarySummary[];\r\n}\r\n\r\nexport class AccountSummaryDetails {\r\n dailyTransactionId: number;\r\n bidPrice: number;\r\n counterParty: string;\r\n cycle: string;\r\n enterpriseId: number;\r\n hubAccountId: number;\r\n fromToLocation: number;\r\n inNominatedQuantity: number;\r\n inScheduledQuantity: number;\r\n locationId: number;\r\n nominationGroupId: number;\r\n outNominatedQuantity: number;\r\n outScheduledQuantity: number;\r\n packageId: string;\r\n rank: number;\r\n reasonCode: string;\r\n taxZeroRated: boolean;\r\n transactionType: string;\r\n transactionTypeDescription: string;\r\n typeOfService: string;\r\n serviceOption: string;\r\n upStreamDownStreamContract: string;\r\n variance: number;\r\n hasHistory: boolean;\r\n isDebitTransaction: boolean;\r\n event: string;\r\n lastModDateTime: Date;\r\n quantitySortOrder: string;\r\n fullTypeOfService: string;\r\n nominationGroupMnemonic: string;\r\n}\r\n\r\nexport class AccountSummarySummary {\r\n enterpriseId: number;\r\n hubAccountId: number;\r\n locationId: number;\r\n openingBalance: number;\r\n inNominatedQuantity: number;\r\n inScheduledQuantity: number;\r\n outNominatedQuantity: number;\r\n outScheduledQuantity: number;\r\n variance: number;\r\n closingBalance: number;\r\n scheduledCycle: string;\r\n accountSummaryDetails: AccountSummaryDetails[];\r\n}\r\n\r\n@Injectable()\r\nexport class AccountSummaryService {\r\n\r\n constructor(private nominationResource: NominationResourceService) { }\r\n\r\n queryCustomerHubAccountBalances(searchParams: AccountSummaryRequest): Observable {\r\n return this.nominationResource.get('/accountSummary', true, this.buildUrlSearchParams(searchParams));\r\n }\r\n\r\n queryAccountSummarySummaryReportPdf(searchParams: AccountSummaryRequest): Observable> {\r\n return this.nominationResource.getData('/accountSummary/pdf/summary', true, this.buildUrlSearchParams(searchParams));\r\n }\r\n\r\n queryAccountSummaryDetailReportPdf(searchParams: AccountSummaryRequest): Observable> {\r\n return this.nominationResource.getData('/accountSummary/pdf/detail', true, this.buildUrlSearchParams(searchParams));\r\n }\r\n\r\n private buildUrlSearchParams(searchParams: AccountSummaryRequest): GCTSHttpParams {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n // Array to string does a comma-delimited join by default\r\n if (searchParams.enterpriseId != null) { params.set('enterpriseIds', searchParams.enterpriseId.toString()); }\r\n if (searchParams.hubAccountId != null) { params.set('hubAccountIds', searchParams.hubAccountId.toString()); }\r\n if (searchParams.gasDay != null) { params.set('gasDay', searchParams.gasDay.toString()); }\r\n if (searchParams.gasCycleCode != null) { params.set('gasCycleCode', searchParams.gasCycleCode.toString()); }\r\n if (searchParams.gasCycleDisplayCode != null) { params.set('gasCycleDisplayCode', searchParams.gasCycleDisplayCode.toString()); }\r\n if (searchParams.locationId != null) { params.set('locationIds', searchParams.locationId.toString()); }\r\n if (searchParams.varianceOnly != null) { params.set('varianceOnly', searchParams.varianceOnly.toString()); }\r\n if (searchParams.nomTcplVarianceOnly != null) { params.set('nomTcplVarianceOnly', searchParams.nomTcplVarianceOnly.toString()); }\r\n if (searchParams.accountType != null) { params.set('accountType', searchParams.accountType.toString()); }\r\n\r\n return params;\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\nimport {GasCycle} from \"@model/gas-cycle\";\r\nimport {NominationEnterprise} from \"@shared/services/nomination/nomination-enterprise/nomination-enterprise.service\";\r\nimport {TransportationStatus} from \"../transportation-summary/transportation-summary-model\";\r\nimport {NominationLocation} from \"@shared/services/nomination/nomination-location/nomination-location.service\";\r\nimport {NominationGroup} from \"@shared/services/nomination/nomination-nom-group/nomination-nom-group.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {AccountSummarySummary} from \"@shared/services/nomination/account-summary/account-summary.service\";\r\nimport {BusinessRight} from \"@model/business-right\";\r\nimport {Observable} from \"rxjs\";\r\nimport {BaseCsvModel} from \"@model/base-csv-model\";\r\nimport {GasDayCycleStatusCollection} from \"@model/gas-day-cycle-status-collection\";\r\nimport {NominationEvent} from \"@model/nomination-event\";\r\nimport {SimpleGasDayCycleStatus} from \"@model/simple-gas-day-cycle-status\";\r\n\r\nexport interface QueryNomGroupNamesByBusinessRights {\r\n queryNomGroupNamesByBusinessRights(): Observable;\r\n}\r\n\r\nexport class AccountSummaryModel {\r\n\r\n constructor(queryNomGroupNamesByBusinessRights: QueryNomGroupNamesByBusinessRights) {\r\n this.queryNomGroupNamesByBusinessRights = queryNomGroupNamesByBusinessRights;\r\n }\r\n private queryNomGroupNamesByBusinessRights: QueryNomGroupNamesByBusinessRights;\r\n isExternalUser: boolean;\r\n gasDayCycleStatuses: GasDayCycleStatusCollection = GasDayCycleStatusCollection.create();\r\n gasCycles: GasCycle[] = [];\r\n launchedGasCycles: GasCycle[] = [];\r\n customers: NominationEnterprise[] = [];\r\n statuses: TransportationStatus[] = [];\r\n locations: NominationLocation[] = [];\r\n allAccounts: NominationGroup[] = [];\r\n filteredAccounts: NominationGroup[] = [];\r\n minGasDay: GasDay;\r\n maxGasDay: GasDay;\r\n actualGasDay: GasDay;\r\n\r\n searchParams: AccountSummaryModelSearchParams = new AccountSummaryModelSearchParams();\r\n lastSearchParams: AccountSummaryModelSearchParams;\r\n\r\n summarySearchResults: AccountSummarySummary[];\r\n detailedSearchResults: AccountSummaryReport[];\r\n detailedSearchResultsHaveHistory: boolean = false;\r\n cycleStatus: string;\r\n searchResults: any;\r\n\r\n showFilterSection: boolean = true;\r\n // need this flag to prevent the data grids from displaying too early.\r\n // using the setting from lastSearchParams displays the grid before\r\n // the search results are available, resulting in\r\n showDetailGrid: boolean = false;\r\n accountsSelectDisabled: boolean = true;\r\n accountTypes: AccountType[];\r\n customerAccountTypes: AccountType[];\r\n gasDay: GasDay;\r\n\r\n jsStartTime: any;\r\n jsEndTime: any;\r\n\r\n /**\r\n * For tracking the last rendered customer short name, for achieving the ability to not repeat the customer\r\n * short name on the data grid if the enterprise has not changed.\r\n */\r\n public lastRenderedCustomerShortName: string;\r\n\r\n /**\r\n * For tracking the last rendered account, for achieving the ability to not repeat the account on the data\r\n * grid if the account has not changed.\r\n */\r\n public lastRenderedAccount: string;\r\n\r\n public jsDuration(): string {\r\n const diff = this.jsEndTime.diff(this.jsStartTime, 'milliseconds') / 1000;\r\n return diff < 0 ? \"\" : diff.toString();\r\n }\r\n\r\n /*\r\n * Triggers the filtering of Customer -> Account Type -> Account\r\n */\r\n customerChangedUpdateDropdowns() {\r\n if (_.isNil(this.searchParams.enterpriseId)) {\r\n this.emptyCustomerSpecificHubAccounts();\r\n this.updateAccountTypeOptions(this.searchParams.enterpriseId);\r\n return;\r\n }\r\n\r\n this.queryNomGroupNamesByBusinessRights.queryNomGroupNamesByBusinessRights().subscribe(() => {\r\n // Reduce the options in the Account drop down\r\n // this event gets fired when the enterpriseId is changed but also it fires\r\n // as a result of .. perhaps navigation. In the second instance, there is no change\r\n // to the enterpriseId. If the code below is allowed to execute it does not do the\r\n // right thing. Fixing it for that condition creates additional problems like having\r\n // to detect the changes.\r\n this.rebuildAccountOptions();\r\n // Reduce the options in the Account Type drop down\r\n this.updateAccountTypeOptions(this.searchParams.enterpriseId);\r\n });\r\n }\r\n\r\n private emptyCustomerSpecificHubAccounts(): void {\r\n this.accountsSelectDisabled = true;\r\n this.searchParams.hubAccountId = null;\r\n this.filteredAccounts = [];\r\n }\r\n\r\n public updateAccountTypeOptions(enterpriseId: number): void {\r\n if (_.isNil(enterpriseId)) {\r\n this.customerAccountTypes = this.accountTypes;\r\n return;\r\n }\r\n\r\n const accountTypes = this.accountTypes;\r\n // Get the distinct account types\r\n const distinctHubAccountTypes = this.getDistinctHubAccountTypes(this.allAccounts);\r\n this.customerAccountTypes = _.filter(accountTypes, x => _.includes(distinctHubAccountTypes, x.businessRight.name));\r\n }\r\n\r\n private getDistinctHubAccountTypes(allAccounts: NominationGroup[]) {\r\n return _.uniqBy(allAccounts, x => x.businessRight).map(x => x.businessRight);\r\n }\r\n\r\n private rebuildAccountOptions(): void {\r\n const accountType = this.searchParams.accountType;\r\n\r\n // If an account type has been selected, reduce the accounts to the matching business right\r\n this.filteredAccounts = _.sortBy(_.isNil(accountType) ?\r\n this.allAccounts :\r\n this.allAccounts.filter(x => x.businessRight === accountType), value => value.mnemonic);\r\n\r\n // the assumption is that filter returns an empty array if there is no match on enterpriseId\r\n if (this.filteredAccounts.length === 1) {\r\n this.searchParams.hubAccountId = this.filteredAccounts[0].id;\r\n } else if (this.searchParams.hubAccountId && _.every(this.filteredAccounts, a => a.id !== this.searchParams.hubAccountId)) {\r\n // leave the selected hubAccountId as long as it exists in the drop-down list\r\n this.searchParams.hubAccountId = null;\r\n }\r\n\r\n // if the actively selected account type is no longer in the list\r\n if (!_.isNil(this.searchParams.accountType) && !_.includes(this.getDistinctHubAccountTypes(this.allAccounts), this.searchParams.accountType)) {\r\n if (this.allAccounts.length === 1) {\r\n this.searchParams.accountType = this.allAccounts[0].businessRight;\r\n } else {\r\n this.searchParams.accountType = null;\r\n }\r\n }\r\n\r\n this.accountsSelectDisabled = false;\r\n }\r\n\r\n setAccountType() {\r\n if (_.isNil(this.searchParams.enterpriseId)) { return; }\r\n this.rebuildAccountOptions();\r\n }\r\n}\r\n\r\nexport class AccountType {\r\n title: string;\r\n businessRight: BusinessRight;\r\n\r\n constructor(title: string, businessRight: BusinessRight) {\r\n this.title = title;\r\n this.businessRight = businessRight;\r\n }\r\n}\r\n\r\nexport class AccountSummaryReport {\r\n dailyTransactionId: number;\r\n bidPrice: number;\r\n counterParty: string;\r\n cycle: string;\r\n enterpriseId: number;\r\n hubAccountId: number;\r\n fromToLocation: number;\r\n inNominatedQuantity: number;\r\n inScheduledQuantity: number;\r\n locationId: number;\r\n nominationGroupId: number;\r\n outNominatedQuantity: number;\r\n outScheduledQuantity: number;\r\n inVariance: number;\r\n outVariance: number;\r\n nomVsTcplVariance: number;\r\n packageId: string;\r\n scheduledCycle: string;\r\n rank: number;\r\n reasonCode: string;\r\n taxZeroRated: boolean;\r\n transactionType: string;\r\n transactionTypeDescription: string;\r\n typeOfService: string;\r\n serviceOption: string;\r\n upStreamDownStreamContract: string;\r\n variance: number;\r\n hasHistory: boolean;\r\n isDebitTransaction: boolean;\r\n event: string;\r\n lastModDateTime: Date;\r\n createdDateTime: Date;\r\n createdDateTimeString: string;\r\n quantitySortOrder: string;\r\n fullTypeOfService: string;\r\n nominationGroupMnemonic: string;\r\n\r\n summaryOpeningBalance: number;\r\n summaryInNominatedQuantity: number;\r\n summaryInScheduledQuantity: number;\r\n summaryOutNominatedQuantity: number;\r\n summaryOutScheduledQuantity: number;\r\n summaryVariance: number;\r\n summaryClosingBalance: number;\r\n\r\n customerHubAccountDisplayValue: string;\r\n\r\n static create(summary: AccountSummarySummary): AccountSummaryReport {\r\n const accountSummaryReport = new AccountSummaryReport();\r\n accountSummaryReport.summaryOpeningBalance = summary.openingBalance;\r\n accountSummaryReport.summaryInNominatedQuantity = summary.inNominatedQuantity;\r\n accountSummaryReport.summaryInScheduledQuantity = summary.inScheduledQuantity;\r\n accountSummaryReport.summaryOutNominatedQuantity = summary.outScheduledQuantity;\r\n accountSummaryReport.summaryOutScheduledQuantity = summary.outScheduledQuantity;\r\n accountSummaryReport.summaryVariance = summary.variance;\r\n accountSummaryReport.summaryClosingBalance = summary.closingBalance;\r\n return accountSummaryReport;\r\n }\r\n}\r\n\r\nexport class AccountSummaryModelSearchParams {\r\n gasDay: GasDay;\r\n gasCycleCode: string = GasCycle.TimelyCycleCode;\r\n enterpriseId?: number;\r\n varianceOnly: boolean = true;\r\n nomTcplVarianceOnly: boolean = true;\r\n locationId?: number;\r\n showDetails: boolean = false;\r\n hubAccountId?: number;\r\n accountType?: string;\r\n}\r\n\r\nexport class AccountSummaryCsvBuilder {\r\n\r\n private static createFileName(pageTitle: string, customerShortName: string, gasDay: GasDay, gasCycleCode: string,\r\n isDetailedReport: boolean, includeHistory: boolean) {\r\n let title = pageTitle.replace(/\\s+/g, '');\r\n if (isDetailedReport) {\r\n title += '_Details';\r\n if (includeHistory) { title += \"_WithHistory\"; }\r\n }\r\n return customerShortName !== \"\"\r\n ? title + '_' + customerShortName + '_' + gasDay.toDisplayFormat() + '_' + gasCycleCode + '.csv'\r\n : title + '_' + gasDay.toDisplayFormat() + '_' + gasCycleCode + '.csv';\r\n }\r\n\r\n public static BuildSummaryCsvModel(data: AccountSummarySummary[], title: string, gasDay: GasDay,\r\n gasCycleCode: string, customerShortName: string, cycleStatus: string): AccountSummarySummaryCsvModel {\r\n const csvData = _.sortBy(data, ['enterpriseShortName', 'hubAccountIdMnemonic', 'locationName']);\r\n const filename = this.createFileName(title, customerShortName, gasDay, gasCycleCode, false, false);\r\n const headers = ['Scheduled Cycle', 'Customer Short Name', 'Customer Account', 'Location', 'Opening Balance', 'In Nom Qty', `In ${SimpleGasDayCycleStatus.getSQText(cycleStatus)}`, `In Nom vs. ${SimpleGasDayCycleStatus.getSQText(cycleStatus)} Variance`, 'Out Nom Qty', `Out ${SimpleGasDayCycleStatus.getSQText(cycleStatus)}`, `Out Nom vs. ${SimpleGasDayCycleStatus.getSQText(cycleStatus)} Variance`, 'Acct Variance', 'Closing Balance'];\r\n const columns = ['scheduledCycle', 'enterpriseShortName', 'hubAccountIdMnemonic', 'locationName', 'openingBalance', 'inNominatedQuantity', 'inScheduledQuantity', 'inVariance', 'outNominatedQuantity', 'outScheduledQuantity', 'outVariance', 'variance', 'closingBalance'];\r\n\r\n this.formatZeroValueColumns(['inVariance', 'outVariance'], csvData);\r\n\r\n return AccountSummarySummaryCsvModel.create(filename, headers, columns, csvData);\r\n }\r\n\r\n public static BuildDetailsCsvModel(data: AccountSummaryReport[], title: string, gasDay: GasDay, includeHistory: boolean,\r\n userIsExternal: boolean, gasCycleCode: string, customerShortName: string, cycleStatus: string): AccountSummaryDetailsCsvModel {\r\n\r\n // Remove rows that are not transactions (opening balance rows) from the CSV.\r\n _.remove(data, x => _.isNil(x.transactionType));\r\n\r\n const csvData = _.map(data, x => _.extend({}, x, {\r\n abbreviatedEvent: NominationEvent.find(x['event']).abbreviatedName,\r\n }));\r\n\r\n const filename = this.createFileName(title, customerShortName, gasDay, gasCycleCode, true, includeHistory);\r\n\r\n let headers = ['Customer Short Name', 'Customer Account', 'Location', 'TOS', 'Nom Cycle', 'Txn Type',\r\n 'Account', 'From/To Location', 'Rank', 'Up Dn Contract', 'Up Dn ID',\r\n 'Package Id', 'Scheduled Cycle', 'Reason Code', 'Event', 'Bid Price', 'Tax Zero Rated', 'In Nom Qty',\r\n `In ${SimpleGasDayCycleStatus.getSQText(cycleStatus)}`, 'Out Nom Qty', `Out ${SimpleGasDayCycleStatus.getSQText(cycleStatus)}`, `Nom vs. ${SimpleGasDayCycleStatus.getSQText(cycleStatus)} Variance`, 'Created'];\r\n let columns = ['enterpriseShortName', 'hubAccountMnemonic', 'locationName', 'fullTypeOfService', 'cycle', 'transactionTypeDescription',\r\n 'nominationGroupMnemonic', 'fromToLocationName', 'rank', 'upStreamDownStreamContract', 'counterParty',\r\n 'packageId', 'scheduledCycle', 'reasonCode', 'abbreviatedEvent', 'bidPrice', 'taxZeroRated', 'inNominatedQuantity',\r\n 'inScheduledQuantity', 'outNominatedQuantity', 'outScheduledQuantity', 'nomVsTcplVariance', 'createdDateTimeString'];\r\n\r\n if (userIsExternal) { // remove the event column\r\n headers = _.filter(headers, (header) => header !== 'Event');\r\n columns = _.filter(columns, (column) => column !== 'abbreviatedEvent');\r\n }\r\n\r\n this.formatZeroValueColumns(['nomVsTcplVariance'], csvData);\r\n\r\n return AccountSummaryDetailsCsvModel.create(filename, headers, columns, csvData);\r\n }\r\n\r\n private static formatZeroValueColumns(columnsToShowZeroes: string[], csvData: any[]): void {\r\n _.each(csvData, row => {\r\n _.each(columnsToShowZeroes, column => {\r\n if (row[column] === 0) {\r\n row[column] = null;\r\n }\r\n });\r\n });\r\n }\r\n}\r\n\r\nexport class AccountSummarySummaryCsvModel extends BaseCsvModel {\r\n public static create(filename: string, headers: string[], columns: string[], data: AccountSummarySummary[]) {\r\n const accountSummaryCsvModel = new AccountSummarySummaryCsvModel();\r\n accountSummaryCsvModel.filename = filename;\r\n accountSummaryCsvModel.headers = headers;\r\n accountSummaryCsvModel.columns = columns;\r\n accountSummaryCsvModel.data = data;\r\n return accountSummaryCsvModel;\r\n }\r\n}\r\n\r\nexport class AccountSummaryDetailsCsvModel extends BaseCsvModel {\r\n public static create(filename: string, headers: string[], columns: string[], data: AccountSummaryReport[]) {\r\n const accountSummaryCsvModel = new AccountSummaryDetailsCsvModel();\r\n accountSummaryCsvModel.filename = filename;\r\n accountSummaryCsvModel.headers = headers;\r\n accountSummaryCsvModel.columns = columns;\r\n accountSummaryCsvModel.data = data;\r\n return accountSummaryCsvModel;\r\n }\r\n}\r\n","\r\nimport {map} from 'rxjs/operators';\r\nimport * as _ from 'lodash';\r\nimport {Injectable} from '@angular/core';\r\nimport {Observable} from \"rxjs\";\r\nimport {NominationResourceService} from \"@shared/resources/nominations-resource.service\";\r\nimport {\r\n AccountSummary,\r\n AccountSummaryDetails,\r\n AccountSummaryHistoryRequest,\r\n AccountSummaryRequest\r\n} from \"app/shared/services/nomination/account-summary/account-summary.service\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\n\r\n@Injectable()\r\nexport class AccountSummaryDetailsService {\r\n\r\n constructor(private nominationResource: NominationResourceService) { }\r\n\r\n queryAccountSummaryDetails(searchParams: AccountSummaryRequest): Observable {\r\n return this.nominationResource.get('/accountSummary/details', true, this.buildSearchParams(searchParams)).pipe(\r\n map(sum => {\r\n sum.accountSummarySummaries.forEach(item => {\r\n _.forEach(item.accountSummaryDetails, balance => {\r\n if (balance.typeOfService) {\r\n balance.fullTypeOfService = balance.typeOfService + (balance.serviceOption ? ' ' + balance.serviceOption : '');\r\n }\r\n });\r\n });\r\n return sum;\r\n }));\r\n }\r\n\r\n queryAccountSummaryHistory(searchParams: AccountSummaryHistoryRequest): Observable {\r\n return this.nominationResource.get('/accountSummary/history', true, this.buildHistoryParams(searchParams));\r\n }\r\n\r\n private buildSearchParams(searchParams: AccountSummaryRequest): GCTSHttpParams {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n // Array to string does a comma-delimited join by default\r\n if (searchParams.enterpriseId != null) { params.set('enterpriseIds', searchParams.enterpriseId.toString()); }\r\n if (searchParams.hubAccountId != null) { params.set('hubAccountIds', searchParams.hubAccountId.toString()); }\r\n if (searchParams.gasDay != null) { params.set('gasDay', searchParams.gasDay.toString()); }\r\n if (searchParams.gasCycleCode != null) { params.set('gasCycleCode', searchParams.gasCycleCode.toString()); }\r\n if (searchParams.locationId != null) { params.set('locationIds', searchParams.locationId.toString()); }\r\n if (searchParams.varianceOnly != null) { params.set('varianceOnly', searchParams.varianceOnly.toString()); }\r\n if (searchParams.nomTcplVarianceOnly != null) { params.set('nomTcplVarianceOnly', searchParams.nomTcplVarianceOnly.toString()); }\r\n if (searchParams.accountType != null) { params.set('accountType', searchParams.accountType.toString()); }\r\n\r\n return params;\r\n }\r\n\r\n private buildHistoryParams(searchParams: AccountSummaryHistoryRequest): GCTSHttpParams {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n if (searchParams.gasDay != null) { params.set('gasDay', searchParams.gasDay.toString()); }\r\n if (searchParams.dailyTransactionId != null) { params.set('dailyTransactionId', searchParams.dailyTransactionId.toString()); }\r\n if (searchParams.transactionType != null) { params.set('transactionType', searchParams.transactionType.toString()); }\r\n if (searchParams.hubAccountId != null) { params.set('hubAccountId', searchParams.hubAccountId.toString()); }\r\n if (searchParams.isDebitTransaction != null) { params.set('isDebitTransaction', searchParams.isDebitTransaction.toString()); }\r\n if (searchParams.gasCycleCode != null) { params.set('gasCycleCode', searchParams.gasCycleCode.toString()); }\r\n\r\n return params;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {NominationResourceService} from \"@shared/resources/nominations-resource.service\";\r\nimport {Observable} from \"rxjs\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {BusinessRightPipelineSystemAssociationDto} from \"@shared/services/nomination/business-right/business-right-models\";\r\n\r\n@Injectable()\r\nexport class BusinessRightService {\r\n\r\n constructor(private nominationResource: NominationResourceService) { }\r\n\r\n getAccountSummaryBusinessRights(gasDay: GasDay): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('gasDay', gasDay.toString());\r\n\r\n return this.nominationResource.get('/businessRight/accountSummary', true, params);\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {NominationEvent} from \"@model/nomination-event\";\r\n\r\n@Pipe({\r\n name: 'abbreviateEvent'\r\n})\r\nexport class AbbreviateEventPipe implements PipeTransform {\r\n transform(event: string): string {\r\n const nominationEvent = NominationEvent.find(event);\r\n return nominationEvent.abbreviatedName;\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n\r\n To subscribe enter your email address and click submit.\"\r\n eventType=\"ScheduledCycle\"\r\n subscriptionMessage=\"notification when a cycle has been scheduled\"\r\n *ngIf=\"model.isExternalUser\">\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Customer: {{model.lastSearchParams?.enterpriseId | displayName: 'id' : 'displayValue' : model.customers}}\r\n Account Type: {{getAccountTypeFullName()}}\r\n Variance Only: {{model.lastSearchParams?.varianceOnly | booleanAsYesNo}}\r\n Nom Tcpl Variance Only: {{model.lastSearchParams?.nomTcplVarianceOnly | booleanAsYesNo}}\r\n Gas Day: {{model.lastSearchParams?.gasDay | gasDayFormat}}\r\n Cycle (CCT): {{model.lastSearchParams?.gasCycleCode | displayName: 'code' : 'displayValue' : model.gasCycles : 'EOD' }}\r\n Location: {{model.lastSearchParams?.locationId | displayName: 'id' : 'name' : model.locations}}\r\n Report Type: {{model.lastSearchParams?.showDetails ? 'Detail' : 'Summary'}}\r\n Cycle Status: {{model.cycleStatus}}\r\n \r\n
\r\n\r\n
\r\n
\r\n
{{model.searchResults?.billingMonth?.status}}
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.gasDay | gasDayFormat }}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.gasCycleCode | displayName: 'code' : 'displayValue' : model.gasCycles : 'EOD' }}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.enterpriseId | displayName: 'id' : 'displayValue' : model.customers}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.locationId | displayName: 'id' : 'name' : model.locations}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{getAccountTypeFullName()}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{!model.lastSearchParams.varianceOnly ? \"No\" : \"Yes\"}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.hubAccountId | displayName: 'id' : 'mnemonic' : model.filteredAccounts}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.showDetails ? 'Detail' : 'Summary'}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.cycleStatus}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.nomTcplVarianceOnly ? 'Yes' : 'No'}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Number of results found: {{getSearchResults().length }} \r\n
0\" class=\"pull-right\">\r\n Export CSV\r\n \r\n  | \r\n Export CSV (+History)\r\n \r\n | \r\n PDF\r\n
\r\n
\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n
\r\n
{{event.text}}
\r\n
\r\n\r\n \r\n
\r\n
\r\n {{event.text}}\r\n
\r\n
\r\n\r\n \r\n
\r\n {{event.text}}\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n {{data.data.inVariance | numberFormat : true }}\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n {{data.data.outVariance | numberFormat : true }}\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n
\r\n
{{data.displayValue}}
\r\n
\r\n\r\n \r\n \r\n
\r\n
{{data.displayValue}}
\r\n
\r\n\r\n \r\n \r\n
\r\n
Txn Type
\r\n
\r\n \r\n
\r\n
Account
\r\n
\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
Package Id
\r\n
\r\n \r\n
\r\n
Up Dn Contract
\r\n
\r\n \r\n
\r\n
Up Dn ID
\r\n
\r\n \r\n
\r\n
Rsn Code
\r\n
\r\n \r\n
\r\n {{data.data.event | abbreviateEvent}}\r\n
\r\n \r\n
\r\n
Tax Zero Rated
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {{data.data.nomVsTcplVariance | numberFormat : true }}\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {{data.data.event | abbreviateEvent}}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n\r\n","import {forkJoin, of, Observable} from 'rxjs';\r\n\r\nimport {map, concatMap, tap} from 'rxjs/operators';\r\nimport * as _ from 'lodash';\r\nimport * as dx from \"devextreme/core/renderer\";\r\nimport {ChangeDetectorRef, Component, OnInit, ViewChild} from '@angular/core';\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {ActivatedRoute, Params, Router} from '@angular/router';\r\nimport {NominationSystemService} from \"@shared/services/nomination/nomination-system/nomination-system.service\";\r\nimport {AlertService} from \"app/shared/services/webapp/alert/alert.service\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {GasCycleService} from \"@shared/services/nomination/gas-cycle/gas-cycle.service\";\r\nimport {\r\n EnterpriseSearchParams,\r\n NominationEnterprise,\r\n NominationEnterpriseService\r\n} from \"@shared/services/nomination/nomination-enterprise/nomination-enterprise.service\";\r\nimport {NominationEnterpriseEnrichmentService} from \"@shared/services/nomination/nomination-enterprise-enrichment/nomination-enterprise-enrichment.service\";\r\nimport {NominationLocationEnrichmentService} from \"@shared/services/nomination/nomination-location-enrichment/nomination-location-enrichment.service\";\r\nimport {NominationNomGroupEnrichmentService} from \"@shared/services/nomination/nomination-nom-group-enrichment/nomination-nom-group-enrichment.service\";\r\nimport {\r\n LocationSearchParams,\r\n NominationLocation,\r\n NominationLocationService\r\n} from \"@shared/services/nomination/nomination-location/nomination-location.service\";\r\nimport {\r\n AccountSummary,\r\n AccountSummaryDetails,\r\n AccountSummaryHistoryRequest,\r\n AccountSummaryRequest,\r\n AccountSummaryService,\r\n AccountSummarySummary\r\n} from \"@shared/services/nomination/account-summary/account-summary.service\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {AccountSummaryDetailsService} from \"@shared/services/nomination/account-summary-details/account-summary-details.service\";\r\nimport {\r\n NominationGroup,\r\n NominationNomGroupService\r\n} from '@shared/services/nomination/nomination-nom-group/nomination-nom-group.service';\r\nimport {BusinessRight} from \"@model/business-right\";\r\nimport {\r\n AccountSummaryCsvBuilder,\r\n AccountSummaryDetailsCsvModel,\r\n AccountSummaryModel,\r\n AccountSummaryReport,\r\n AccountType,\r\n QueryNomGroupNamesByBusinessRights\r\n} from \"app/gcts/nomination/account-summary/account-summary-model\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {TransportationStatus} from \"app/gcts/nomination/transportation-summary/transportation-summary-model\";\r\nimport {UserService} from \"@shared/services/webapp/user/user-service\";\r\nimport {IGasDay} from \"@model/gas-day-month.interface\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {DateTime} from \"@model/date-time\";\r\nimport {GasCycleLogic} from \"@model/gas-cycle.logic\";\r\nimport * as FileSaver from \"file-saver\";\r\nimport * as moment from \"moment\";\r\nimport {GasDayCycleStatusCollection} from \"@model/gas-day-cycle-status-collection\";\r\nimport {SimpleGasDayCycleStatus} from \"@model/simple-gas-day-cycle-status\";\r\nimport {BusinessRightService} from \"@shared/services/nomination/business-right/business-right.service\";\r\n\r\n@Component({\r\n selector: 'app-account-summary',\r\n templateUrl: './account-summary.component.html',\r\n styleUrls: ['./account-summary.component.css']\r\n})\r\nexport class AccountSummaryComponent extends BaseSearchComponent implements OnInit, QueryNomGroupNamesByBusinessRights {\r\n model: AccountSummaryModel = new AccountSummaryModel(this);\r\n setToDefaultCustomer: boolean = true;\r\n @ViewChild(DxDataGridComponent) dataGrid: DxDataGridComponent;\r\n\r\n constructor(protected appService: AppService,\r\n protected router: Router,\r\n protected activatedRoute: ActivatedRoute,\r\n protected alertService: AlertService,\r\n private nominationSystemService: NominationSystemService,\r\n private gasCycleService: GasCycleService,\r\n private nominationEnterpriseService: NominationEnterpriseService,\r\n private nominationEnterpriseEnrichmentService: NominationEnterpriseEnrichmentService,\r\n private nominationLocationService: NominationLocationService,\r\n private nomGroupEnrichmentService: NominationNomGroupEnrichmentService,\r\n private accountSummaryService: AccountSummaryService,\r\n private nominationLocationEnrichmentService: NominationLocationEnrichmentService,\r\n private fileService: FileService,\r\n private customerHubAccountBalanceDetailsService: AccountSummaryDetailsService,\r\n private nominationNomGroupService: NominationNomGroupService,\r\n public cdr: ChangeDetectorRef,\r\n private userService: UserService,\r\n private businessRightService: BusinessRightService) {\r\n super('Account Summary', appService, activatedRoute, router, alertService);\r\n this.appService.hideMenu();\r\n }\r\n\r\n /**\r\n * Public Methods\r\n */\r\n public queryNomGroupNamesByBusinessRights(): Observable {\r\n const allAllowableBusinessRights = _.map(this.model.customerAccountTypes, accountType => accountType.businessRight);\r\n\r\n return this.nominationNomGroupService.queryNomGroupNamesByBusinessRights(this.model.searchParams.gasDay, allAllowableBusinessRights, this.model.searchParams.enterpriseId).pipe(concatMap(nomGroups => {\r\n this.model.allAccounts = nomGroups as NominationGroup[];\r\n return of(null);\r\n }));\r\n }\r\n\r\n public getSearchResults() {\r\n return this.model.summarySearchResults ? this.model.summarySearchResults : this.model.detailedSearchResults;\r\n }\r\n\r\n public calculateVariance(data) {\r\n const inQty = data.inScheduledQuantity ? data.inScheduledQuantity : 0;\r\n const outQty = data.outScheduledQuantity ? data.outScheduledQuantity : 0;\r\n return inQty - outQty;\r\n }\r\n\r\n public summaryRowOnRowPrepared(row) {\r\n if (row.rowType === 'group') {\r\n if (row.groupIndex === 0) {\r\n dx(row['rowElement']).addClass('tc-grid-group-row-customer');\r\n _\r\n .chain(row.summaryCells)\r\n .filter((cell) => cell['length'] > 0)\r\n .flattenDeep()\r\n .filter((cell) => cell['column'] !== 'enterpriseMnemonic')\r\n .each((cell) => cell['value'] = '')\r\n .commit();\r\n } else if (row.groupIndex === 1) {\r\n dx(row['rowElement']).addClass('tc-grid-group-row-location');\r\n }\r\n }\r\n\r\n // To hide detail rows when showing purely Opening Balance\r\n // There are no transactions to show in the details, so the row will be hidden.\r\n // If there is a better way to hide this without the use of CSS, please advise & change!\r\n if (row.rowType === 'data') {\r\n if (_.isNil(row.data.transactionType)) {\r\n row.rowElement.hidden = true;\r\n }\r\n }\r\n }\r\n\r\n public detailsDataGridOnRowExpanding = (e) => {\r\n e.component.getDataSource().store().byKey(e.key).then((row) => {\r\n const request = AccountSummaryHistoryRequest.create(\r\n this.model.lastSearchParams.gasDay,\r\n this.model.lastSearchParams.gasCycleCode,\r\n this.model.gasDayCycleStatuses,\r\n row);\r\n this.getCustomerHubDetailHistory(request).subscribe(details => {\r\n _.forEach(details, detail => {\r\n if (row.transactionTypeDescription === 'Transport' && detail.transactionType === 'NominatedFuel') {\r\n detail.transactionTypeDescription = 'Transport'; // for display purposes, for Transport/Fuel, set child transaction type to Transport (bug 122822)\r\n detail.nominationGroupMnemonic = row.nominationGroupMnemonic; // for display purposes, set child nom group mnemonic to parent (bug 122822)\r\n }\r\n\r\n if (detail.typeOfService) {\r\n detail.fullTypeOfService = detail.typeOfService + (detail.serviceOption ? ' ' + detail.serviceOption : '');\r\n }\r\n });\r\n row['transactionHistory'] = details;\r\n });\r\n });\r\n };\r\n\r\n public onCellPrepared(e): void {\r\n if (e.rowType === \"data\") {\r\n if (e.column.command === \"expand\") {\r\n if (!e.data.hasHistory) {\r\n dx(e.cellElement).removeClass(\"dx-datagrid-expand\");\r\n dx(e.cellElement).empty();\r\n }\r\n }\r\n }\r\n }\r\n\r\n public sortByTransactionType(row): any {\r\n return row.quantitySortOrder;\r\n }\r\n\r\n /**\r\n * Should only display the customer short name when the enterprise short name changes from the previous row.\r\n * This assumes that the datagrid is rendering the rows in order (i.e. from top to bottom).\r\n */\r\n public displayCustomerShortName = (event): boolean => {\r\n if (event.rowIndex !== 0 && this.model.lastRenderedCustomerShortName === event.value) return false;\r\n\r\n this.model.lastRenderedCustomerShortName = event.value;\r\n return true;\r\n };\r\n\r\n /**\r\n * Should only display the account when the account changes from the previous row.\r\n * This assumes that the datagrid is rendering the rows in order (i.e. from top to bottom).\r\n */\r\n public displayAccount = (event): boolean => {\r\n if (event.rowIndex !== 0 && this.model.lastRenderedAccount === event.value) return false;\r\n\r\n this.model.lastRenderedAccount = event.value;\r\n return true;\r\n };\r\n\r\n public loadSpecificHub = (event) => {\r\n this.model.searchParams.showDetails = true;\r\n this.model.searchParams.enterpriseId = event.data.enterpriseId;\r\n this.model.searchParams.hubAccountId = event.data.hubAccountId;\r\n this.model.filteredAccounts = this.model.allAccounts.filter(x => {\r\n return x.enterpriseId === this.model.searchParams.enterpriseId;\r\n });\r\n this.model.accountsSelectDisabled = false;\r\n // changes need to be detected here as the Account select has its attributes\r\n // altered.\r\n this.cdr.detectChanges();\r\n this.searchClicked();\r\n };\r\n\r\n public loadLocation = (event) => {\r\n this.model.searchParams = _.clone(this.model.lastSearchParams);\r\n this.model.searchParams.enterpriseId = event.data.enterpriseId;\r\n this.model.searchParams.locationId = event.data.locationId;\r\n this.model.searchParams.showDetails = true;\r\n this.searchClicked();\r\n };\r\n\r\n public onChildGridCellPrepared = (e): void => {\r\n dx(e.cellElement).addClass('child-grid-cell');\r\n };\r\n\r\n public toggleFilterSectionClicked(): void {\r\n this.model.showFilterSection = !this.model.showFilterSection;\r\n }\r\n\r\n public gasCyclePlaceholder(): string {\r\n return GasCycleLogic.placeholder(this.model.gasDayCycleStatuses);\r\n }\r\n\r\n public isGasCycleRequired(): boolean {\r\n return GasCycleLogic.isRequired(this.model.gasDayCycleStatuses);\r\n }\r\n\r\n public onCustomerSelectionChanged = (): void => this.model.customerChangedUpdateDropdowns();\r\n\r\n public onAccountTypeChanged = () => this.model.setAccountType();\r\n\r\n /**\r\n * Protected Methods\r\n */\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return this.validator().isValid(params);\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams.accountType = BusinessRight.MultiTitleTransfer.name;\r\n this.model.searchParams.varianceOnly = false;\r\n this.model.searchParams.nomTcplVarianceOnly = false;\r\n this.model.searchParams.showDetails = false;\r\n this.model.searchParams.locationId = undefined;\r\n this.model.searchParams.enterpriseId = undefined;\r\n this.model.searchParams.hubAccountId = undefined;\r\n\r\n this.model.searchParams.gasDay = this.model.gasDay;\r\n this.model.searchParams.gasCycleCode = null;\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n const gasDay = typedParams.asGasDay('gasDay');\r\n\r\n // this.model.searchParams.gasDay = gasDay.toDate;\r\n this.model.searchParams.gasDay = gasDay;\r\n this.model.searchParams.gasCycleCode = typedParams.asNullableString('gasCycleCode');\r\n const locationIds = this.parseParamList(typedParams.asString('locationId'));\r\n this.model.searchParams.locationId = locationIds == null ? null : locationIds[0];\r\n this.model.searchParams.showDetails = typedParams.asBoolean('showDetails');\r\n this.model.searchParams.varianceOnly = typedParams.asBoolean('varianceOnly');\r\n this.model.searchParams.nomTcplVarianceOnly = typedParams.asBoolean('nomTcplVarianceOnly');\r\n this.model.searchParams.enterpriseId = typedParams.asNullableNumber('enterpriseId');\r\n this.model.searchParams.hubAccountId = typedParams.asNullableNumber('hubAccountId');\r\n this.model.searchParams.accountType = typedParams.asNullableString('accountType');\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n return forkJoin(\r\n this.nominationSystemService.pipelineGasDay(),\r\n\r\n // Doing these 3 requests at once with the Observable set to .share() means they\r\n // all get ran at the same time turning 3 queries into 1 query.\r\n this.nominationEnterpriseEnrichmentService.fetch(),\r\n this.nominationLocationEnrichmentService.fetch(),\r\n this.nomGroupEnrichmentService.fetch()\r\n ).pipe(tap(response => {\r\n const pipelineGasDay = response[0];\r\n\r\n if (!pipelineGasDay.hasGasDayCycles()) {\r\n this.alertService.addWarnMessage(\"Warning\", \"There are no Gas Day Cycles for the pipeline.\");\r\n return;\r\n }\r\n\r\n // Gas day defaults to the greater of the current gas day or the earliest selectable gas day\r\n // for the pipeline.\r\n this.model.gasDay = pipelineGasDay.actualGasDay.isGreaterThan(pipelineGasDay.earliestSelectableGasDay) ?\r\n pipelineGasDay.actualGasDay :\r\n pipelineGasDay.earliestSelectableGasDay;\r\n this.model.minGasDay = pipelineGasDay.minGasDayForCycleStatus.isLessThan(this.model.gasDay) ?\r\n pipelineGasDay.minGasDayForCycleStatus :\r\n this.model.gasDay;\r\n this.model.maxGasDay = pipelineGasDay.maxGasDayForCycleStatus.isGreaterThan(this.model.gasDay) ?\r\n pipelineGasDay.maxGasDayForCycleStatus :\r\n this.model.gasDay;\r\n this.model.actualGasDay = pipelineGasDay.actualGasDay;\r\n\r\n // On component first load, default to MTT\r\n // this.model.searchParams.accountType = BusinessRight.MultiTitleTransfer.name;\r\n }));\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n const gasDay = this.model.searchParams.gasDay ?\r\n this.model.searchParams.gasDay :\r\n this.model.gasDay;\r\n const user = this.userService.user;\r\n if (!this.userService.user.isInternalUser || this.userService.user.isAssumingIdentity) {\r\n this.model.isExternalUser = true;\r\n }\r\n\r\n const gasCycleStatuses$ = this.gasCycleService.queryGasDayCycleStatusesFor(gasDay);\r\n const enterprises$ = this.getEnterprises(gasDay);\r\n const locationNames$ = this.nominationLocationService.queryLocationNames(new LocationSearchParams(gasDay,true,gasDay,false,_.isNil(user.enterpriseId),false)); // 2\r\n const accountTypes$ = this.businessRightService.getAccountSummaryBusinessRights(gasDay);\r\n\r\n return forkJoin([\r\n accountTypes$,\r\n gasCycleStatuses$,\r\n enterprises$,\r\n locationNames$\r\n ]).pipe(\r\n tap(responses => {\r\n // 0 - Account Types\r\n const accountTypes = new Array();\r\n responses[0]\r\n .map(x =>\r\n accountTypes.push(new AccountType(`${x.accountSummaryDisplay} (${x.accountSummaryMnemonic})`, BusinessRight.find(x.name))));\r\n this.model.accountTypes = accountTypes;\r\n this.model.customerAccountTypes = this.model.accountTypes;\r\n\r\n this.model.statuses = TransportationStatus.Statuses;\r\n\r\n // 1 - Gas Day Cycle Status\r\n const gasDayCycleStatuses: GasDayCycleStatusCollection = responses[1];\r\n this.model.gasDayCycleStatuses = gasDayCycleStatuses;\r\n this.model.gasCycles = gasDayCycleStatuses.gasCycles();\r\n this.model.launchedGasCycles = gasDayCycleStatuses.defaultGasDayCycleStatuses().gasCycles();\r\n\r\n if (_.isNil(this.model.searchParams.gasCycleCode)) {\r\n this.model.searchParams.gasCycleCode = this.defaultGasCycleCode();\r\n }\r\n\r\n // 2 - Enterprise\r\n this.model.customers = _.orderBy(responses[2], x => x.displayValue);\r\n\r\n // 3 - Locations\r\n this.model.locations = _.orderBy(responses[3] as NominationLocation[], x => x.name);\r\n\r\n this.model.customerChangedUpdateDropdowns();\r\n this.defaultSelectedCustomer();\r\n this.setToDefaultCustomer = false;\r\n\r\n this.verifyForValidSelectedParameters();\r\n }));\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.jsStartTime = moment();\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n\r\n const searchRequest = this.buildSearchRequest();\r\n\r\n if (this.model.lastSearchParams.showDetails) {\r\n return this.getCustomerHubAccountBalanceDetails(searchRequest).pipe(tap(details => {\r\n // Flatten the data into a reportable structure\r\n const results = _.flatMap(details.accountSummarySummaries, summary => {\r\n\r\n // In the case where we don't actually have any transactions (opening gas account balance)\r\n if (summary.accountSummaryDetails.length === 0) {\r\n const accountSummaryReport = AccountSummaryReport.create(summary);\r\n accountSummaryReport['locationName'] = summary['locationName'];\r\n accountSummaryReport.customerHubAccountDisplayValue = summary['enterpriseShortName'] + ' ' + summary['hubAccountMnemonic'];\r\n return accountSummaryReport;\r\n } else {\r\n return _.map(summary.accountSummaryDetails, detail => {\r\n if (!this.model.detailedSearchResultsHaveHistory && detail.hasHistory) this.model.detailedSearchResultsHaveHistory = true;\r\n\r\n const accountSummaryReport = AccountSummaryReport.create(summary);\r\n\r\n // Copy all details over to summary\r\n _.assign(accountSummaryReport, detail);\r\n\r\n // Set Display Value, from previously ran enrichment\r\n accountSummaryReport.customerHubAccountDisplayValue = detail['enterpriseShortName'] + ' ' + detail['hubAccountMnemonic'];\r\n\r\n // Set the sort order\r\n accountSummaryReport.quantitySortOrder = accountSummaryReport.inNominatedQuantity !== null || accountSummaryReport.inScheduledQuantity !== null\r\n ? '1-' + accountSummaryReport.transactionType\r\n : '2-' + accountSummaryReport.transactionType;\r\n\r\n return accountSummaryReport;\r\n });\r\n }\r\n });\r\n\r\n this.model.cycleStatus = details.cycleStatus;\r\n this.model.detailedSearchResults = results;\r\n this.model.showDetailGrid = true;\r\n this.model.summarySearchResults = null;\r\n\r\n this.updateAccountTypeAndAccountDropDowns();\r\n }));\r\n } else {\r\n return this.getCustomerHubAccountBalanceSummary(searchRequest).pipe(tap(summary => {\r\n this.model.cycleStatus = summary.cycleStatus;\r\n this.model.summarySearchResults = summary.accountSummarySummaries;\r\n this.model.showDetailGrid = false;\r\n this.model.detailedSearchResults = null;\r\n\r\n this.updateAccountTypeAndAccountDropDowns();\r\n this.model.jsEndTime = moment();\r\n }));\r\n }\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n return {\r\n gasDay: this.model.searchParams.gasDay,\r\n gasCycleCode: this.model.searchParams.gasCycleCode,\r\n varianceOnly: this.model.searchParams.varianceOnly,\r\n nomTcplVarianceOnly: this.model.searchParams.nomTcplVarianceOnly,\r\n showDetails: this.model.searchParams.showDetails,\r\n accountType: this.model.searchParams.accountType,\r\n enterpriseId: this.model.searchParams.enterpriseId,\r\n locationId: this.model.searchParams.locationId,\r\n hubAccountId: this.model.searchParams.hubAccountId\r\n };\r\n }\r\n\r\n /**\r\n * Override Methods\r\n */\r\n\r\n protected resetCompleted(): void {\r\n this.model.searchResults = null;\r\n this.model.summarySearchResults = null;\r\n this.model.detailedSearchResults = null;\r\n this.setToDefaultCustomer = true;\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n // TODO: Implement me\r\n }\r\n\r\n /**\r\n * Private Methods\r\n */\r\n\r\n private buildSearchRequest(): AccountSummaryRequest {\r\n const request = new AccountSummaryRequest();\r\n // request.gasDay = GasDay.from(this.model.searchParams.gasDay);\r\n request.gasDay = this.model.searchParams.gasDay;\r\n request.gasCycleCode = GasCycleLogic.buildGasCycleCodeForRequest(this.model.gasDayCycleStatuses, this.model.searchParams.gasCycleCode);\r\n request.gasCycleDisplayCode = request.gasCycleCode !== this.model.searchParams.gasCycleCode ? \"EOD\" : null;\r\n // If all enterprises were selected (i.e. the user clicked Select All),\r\n // then don't set enterpriseId rather than copying in the full\r\n // list of enterprise ids because it kills IE.\r\n if (!_.isNil(this.model.searchParams.enterpriseId)) {\r\n request.enterpriseId = this.model.searchParams.enterpriseId;\r\n }\r\n if (!_.isNil(this.model.searchParams.locationId)) {\r\n request.locationId = this.model.searchParams.locationId;\r\n }\r\n if (!_.isNil(this.model.searchParams.hubAccountId)) {\r\n request.hubAccountId = this.model.searchParams.hubAccountId;\r\n }\r\n request.varianceOnly = this.model.searchParams.varianceOnly;\r\n request.nomTcplVarianceOnly = this.model.searchParams.nomTcplVarianceOnly;\r\n request.showDetails = this.model.searchParams.showDetails;\r\n request.accountType = this.model.searchParams.accountType;\r\n return request;\r\n }\r\n\r\n private validator(): ParamValidator {\r\n const paramValidator = ParamValidator.Standard();\r\n\r\n paramValidator.isGasDay('gasDay');\r\n paramValidator.isString('gasCycleCode', true);\r\n\r\n return paramValidator;\r\n }\r\n\r\n private verifyForValidSelectedParameters(): void {\r\n // Reset Gas Cycle, if the current selected gas cycle does not exist in the new Gas Cycles\r\n this.model.searchParams.gasCycleCode = GasCycleLogic.verifySelectedGasCycleCode(this.model.gasDayCycleStatuses, this.model.gasCycles, this.model.searchParams.gasCycleCode);\r\n }\r\n\r\n private getEnterprises(gasDay: IGasDay): Observable {\r\n return this.nominationEnterpriseService.queryAllByPipeline({\r\n gasDay: gasDay,\r\n accountBusinessRights: [BusinessRight.MultiTitleTransfer],\r\n includeInactive: true\r\n } as EnterpriseSearchParams).pipe(\r\n concatMap(response => {\r\n return this.nominationEnterpriseEnrichmentService.enrichArray(response, 'id');\r\n }));\r\n }\r\n\r\n private defaultSelectedCustomer(): void {\r\n if (!this.setToDefaultCustomer) return;\r\n const user = this.userService.user;\r\n if (!_.isNil(user.enterpriseId) && !_.isNil(_.find(this.model.customers, x => x.id === +user.enterpriseId))) {\r\n this.model.searchParams.enterpriseId = +user.enterpriseId;\r\n this.model.customerChangedUpdateDropdowns();\r\n }\r\n }\r\n\r\n private getCustomerHubAccountBalanceDetails(searchRequest: AccountSummaryRequest): Observable {\r\n return this.customerHubAccountBalanceDetailsService.queryAccountSummaryDetails(searchRequest).pipe(\r\n concatMap(response => {\r\n const accountDetails = _.flatMap(response.accountSummarySummaries, (x: AccountSummarySummary) => x.accountSummaryDetails);\r\n\r\n return forkJoin([\r\n // Typically, we have detail rows. For the case we don't (e.g. no transactions, but opening balance), enrich the summaries\r\n this.nominationEnterpriseEnrichmentService.enrichArray(response.accountSummarySummaries, 'enterpriseId', 'enterprise'),\r\n this.nominationLocationEnrichmentService.enrichArray(response.accountSummarySummaries, 'locationId', 'location'),\r\n this.nomGroupEnrichmentService.enrichArray(response.accountSummarySummaries, 'hubAccountId', 'hubAccount'),\r\n\r\n // Enrich the details\r\n this.nominationEnterpriseEnrichmentService.enrichArray(accountDetails, 'enterpriseId', 'enterprise'),\r\n this.nominationLocationEnrichmentService.enrichArray(accountDetails, 'fromToLocation', 'fromToLocation'),\r\n this.nominationLocationEnrichmentService.enrichArray(accountDetails, 'locationId', 'location'),\r\n this.nomGroupEnrichmentService.enrichArray(accountDetails, 'nominationGroupId', 'nominationGroup'),\r\n this.nomGroupEnrichmentService.enrichArray(accountDetails, 'hubAccountId', 'hubAccount')\r\n ]).pipe(map(() => response));\r\n }));\r\n }\r\n\r\n private getCustomerHubAccountBalanceSummary(searchRequest: AccountSummaryRequest): Observable {\r\n return this.accountSummaryService.queryCustomerHubAccountBalances(searchRequest).pipe(\r\n concatMap(response =>\r\n forkJoin(\r\n this.nominationEnterpriseEnrichmentService.enrichArray(response.accountSummarySummaries, 'enterpriseId', 'enterprise'),\r\n this.nominationLocationEnrichmentService.enrichArray(response.accountSummarySummaries, 'locationId', 'location'),\r\n this.nomGroupEnrichmentService.enrichArray(response.accountSummarySummaries, 'hubAccountId', 'hubAccountId')\r\n ).pipe(map(() => response))));\r\n }\r\n\r\n private getCustomerHubDetailHistory(request: AccountSummaryHistoryRequest): Observable {\r\n return this.customerHubAccountBalanceDetailsService.queryAccountSummaryHistory(request).pipe(\r\n concatMap(response =>\r\n forkJoin(\r\n this.nominationEnterpriseEnrichmentService.enrichArray(response, 'enterpriseId', 'enterprise'),\r\n this.nominationLocationEnrichmentService.enrichArray(response, 'locationId', 'location'),\r\n this.nominationLocationEnrichmentService.enrichArray(response, 'fromToLocation', 'fromToLocation'),\r\n this.nomGroupEnrichmentService.enrichArray(response, 'nominationGroupId', 'nominationGroup')\r\n ).pipe(map(() => response))));\r\n }\r\n\r\n private parseParamList(params: any): number[] {\r\n if (params) {\r\n if (typeof (params) === 'string') {\r\n params = params.split(',');\r\n }\r\n return params.map(Number);\r\n } else {\r\n return [];\r\n }\r\n }\r\n\r\n public formatDateTime(obj: Date): string {\r\n return new DateTime(obj).toDisplayFormat();\r\n }\r\n\r\n private exportCsvClicked(includeHistory) {\r\n const lastSearchParamsGasCycleCode = GasCycleLogic.buildGasCycleCodeForRequest(this.model.gasDayCycleStatuses, this.model.lastSearchParams.gasCycleCode);\r\n const customerShortName = this.model.lastSearchParams.enterpriseId !== null\r\n ? _.find(this.model.customers, x => x.id === this.model.lastSearchParams.enterpriseId).displayValue\r\n : \"\";\r\n\r\n let foundHistoryRecordsToDisplay = false;\r\n _.forEach(this.model.detailedSearchResults, (row: AccountSummaryReport) => {\r\n if (!foundHistoryRecordsToDisplay && row.hasHistory) foundHistoryRecordsToDisplay = true;\r\n row.scheduledCycle = lastSearchParamsGasCycleCode;\r\n row.createdDateTimeString = this.formatDateTime(new Date(row.createdDateTime));\r\n });\r\n\r\n if (this.model.lastSearchParams.showDetails === true) {\r\n const csvData = _.sortBy(this.model.detailedSearchResults, ['enterpriseShortName', 'hubAccountMnemonic', 'locationName', 'quantitySortOrder']);\r\n let csvModel = new AccountSummaryDetailsCsvModel();\r\n if (!includeHistory || !foundHistoryRecordsToDisplay) {\r\n csvModel = AccountSummaryCsvBuilder.BuildDetailsCsvModel(csvData, this.getTitle(), this.model.lastSearchParams.gasDay,\r\n false, this.model.isExternalUser, this.model.lastSearchParams.gasCycleCode, customerShortName, this.model.cycleStatus);\r\n this.fileService.downloadCsvFile(csvModel.filename, csvModel.data, csvModel.headers, csvModel.columns);\r\n } else {\r\n const serviceCalls: Observable[] = [];\r\n _.forEach(csvData, (row) => { // for each row that has history records, create a service call to get the history for that row\r\n if (row.hasHistory) {\r\n const request = AccountSummaryHistoryRequest.create(\r\n this.model.lastSearchParams.gasDay,\r\n this.model.lastSearchParams.gasCycleCode,\r\n this.model.gasDayCycleStatuses,\r\n row);\r\n\r\n serviceCalls.push(this.getCustomerHubDetailHistory(request));\r\n }\r\n });\r\n\r\n forkJoin(serviceCalls).subscribe(response => {\r\n let csvDataWithHistory: AccountSummaryReport[] = [];\r\n let historyIndex = 0;\r\n _.forEach(csvData, (csvRow) => {\r\n csvDataWithHistory.push(csvRow);\r\n if (csvRow.hasHistory) {\r\n\r\n const historyRecord = response[historyIndex++];\r\n if (csvRow.transactionTypeDescription === 'Transport') {\r\n _.forEach(historyRecord, (record) => {\r\n if (record.transactionType === 'NominatedFuel') {\r\n record.transactionTypeDescription = 'Transport'; // for display purposes, for Transport/Fuel, set child transaction type to Transport (bug 122822)\r\n record.nominationGroupMnemonic = csvRow.nominationGroupMnemonic; // for display purposes, set child nom group mnemonic to parent (bug 122822)\r\n }\r\n });\r\n }\r\n csvDataWithHistory = _.concat(csvDataWithHistory, _.orderBy(historyRecord, ['lastModDateTime'], ['desc']));\r\n }\r\n });\r\n csvModel = AccountSummaryCsvBuilder.BuildDetailsCsvModel(csvDataWithHistory, this.getTitle(),\r\n this.model.lastSearchParams.gasDay, true, this.model.isExternalUser,\r\n this.model.lastSearchParams.gasCycleCode, customerShortName, this.model.cycleStatus);\r\n this.fileService.downloadCsvFile(csvModel.filename, csvModel.data, csvModel.headers, csvModel.columns);\r\n });\r\n }\r\n } else {\r\n _.forEach(this.model.summarySearchResults, (row: AccountSummarySummary) => {\r\n row.scheduledCycle = lastSearchParamsGasCycleCode;\r\n });\r\n const csvModel = AccountSummaryCsvBuilder.BuildSummaryCsvModel(this.model.summarySearchResults, this.getTitle(),\r\n this.model.lastSearchParams.gasDay, this.model.lastSearchParams.gasCycleCode, customerShortName, this.model.cycleStatus);\r\n this.fileService.downloadCsvFile(csvModel.filename, csvModel.data, csvModel.headers, csvModel.columns);\r\n }\r\n }\r\n\r\n private getSortingOrder(): Array {\r\n const columnOptions = [];\r\n for (let i = 0; i < this.dataGrid.instance.columnCount(); i++) {\r\n columnOptions.push(this.dataGrid.instance.columnOption(i));\r\n }\r\n const sortingColumns = _.filter(columnOptions, co => co.sortIndex !== undefined);\r\n const orderedSortingColumns = _.sortBy(sortingColumns, co => co.sortIndex);\r\n return orderedSortingColumns;\r\n }\r\n\r\n private updateAccountTypeAndAccountDropDowns(): void {\r\n\r\n if (_.isNil(this.model.searchParams.enterpriseId)) {\r\n this.emptyHubAccounts();\r\n this.model.updateAccountTypeOptions(null);\r\n return;\r\n }\r\n\r\n this.queryNomGroupNamesByBusinessRights().subscribe();\r\n }\r\n\r\n private emptyHubAccounts(): void {\r\n this.model.accountsSelectDisabled = true;\r\n this.model.searchParams.hubAccountId = null;\r\n this.model.filteredAccounts = [];\r\n }\r\n\r\n private rebuildAccountOptions(): void {\r\n const accountType = this.model.searchParams.accountType;\r\n\r\n // If an account type has been selected, reduce the accounts to the matching business right\r\n this.model.filteredAccounts = _.isNil(accountType) ?\r\n this.model.allAccounts :\r\n this.model.allAccounts.filter(x => x.businessRight === accountType);\r\n\r\n // the assumption is that filter returns an empty array if there is no match on enterpriseId\r\n if (this.model.filteredAccounts.length === 1) {\r\n this.model.searchParams.hubAccountId = this.model.filteredAccounts[0].id;\r\n }\r\n\r\n this.model.accountsSelectDisabled = false;\r\n }\r\n\r\n getAccountTypeFullName(): string {\r\n const accountType = _.find(this.model.accountTypes, x => x.businessRight.name === this.model.lastSearchParams.accountType);\r\n return _.isNil(accountType) ? \"All\" : accountType.title;\r\n }\r\n\r\n onGasDayChanged(): void {\r\n // Refresh page options\r\n\r\n // this will be fired even when a null value is returned from the date picker and don't want to reload with a bad date\r\n if (!this.model.searchParams.gasDay) return;\r\n\r\n // This will force the GasCycle to get set to the default for the GasDay.\r\n this.model.searchParams.gasCycleCode = null;\r\n\r\n // Do nothing on subscription, we just want the drop downs to be reloaded\r\n this.loadSearchResources().subscribe(() => {\r\n });\r\n }\r\n\r\n private defaultGasCycleCode(): string {\r\n return GasCycleLogic.defaultGasCycleCode(this.model.gasDayCycleStatuses, this.model.gasDayCycleStatuses.defaultEarliestNonScheduled(true).gasCycle);\r\n }\r\n\r\n public getPdfClicked() {\r\n const savePdf = (response) => {\r\n const mediaType = response.headers.get('content-type');\r\n const blob = new Blob([response.body], {type: mediaType});\r\n\r\n // from the content disposition, should be second element with =\"{filename}\" surrounding it\r\n const filename = response.headers.get('content-disposition').split(';')[1].trim().split('=')[1].replace(/\"/g, '');\r\n FileSaver.saveAs(blob, filename);\r\n };\r\n\r\n if (this.model.lastSearchParams.showDetails) {\r\n this.accountSummaryService.queryAccountSummaryDetailReportPdf(this.buildSearchRequest()).subscribe(savePdf);\r\n } else {\r\n this.accountSummaryService.queryAccountSummarySummaryReportPdf(this.buildSearchRequest()).subscribe(savePdf);\r\n }\r\n }\r\n\r\n getSQText() : string {\r\n return SimpleGasDayCycleStatus.getSQText(this.model.cycleStatus);\r\n }\r\n}\r\n\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n Validation Error\r\n From Gas Day cannot be later than To Gas Day.\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.fromGasDay | gasDayFormat}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.toGasDay | gasDayFormat}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.locationId | displayName: 'id' : 'name' : model.locations}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n Number of records found: {{model.searchResults.length}}\r\n
\r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n\r\n","import {of, forkJoin, Observable} from 'rxjs';\r\n\r\nimport {tap} from 'rxjs/operators';\r\nimport * as _ from 'lodash';\r\nimport {Component, ViewChild} from '@angular/core';\r\nimport {ActivatedRoute, Params, Router} from '@angular/router';\r\nimport {DxDataGridComponent} from 'devextreme-angular';\r\nimport {GasDay} from '@model/gas-day';\r\nimport {DateTime} from '@model/date-time';\r\nimport {AppService} from '@shared/services/webapp/app/app.service';\r\nimport {NominationSystemService} from '@shared/services/nomination/nomination-system/nomination-system.service';\r\nimport {ParamValidator} from '@model/validators/param-validator';\r\nimport {\r\n NominationLocationService,\r\n LocationSearchParams,\r\n NominationLocation\r\n} from '@shared/services/nomination/nomination-location/nomination-location.service';\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {AlertService} from \"app/shared/services/webapp/alert/alert.service\";\r\nimport {NominationPipelineGasDay} from \"@model/nomination-pipeline-gas-day\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {BaseViewModel} from \"@model/base-view-model\";\r\nimport {\r\n ConfirmationHistoryDto,\r\n ConfirmationHistoryRequest\r\n} from \"app/shared/services/nomination/confirmation/confirmation-models\";\r\nimport {ConfirmationService} from \"app/shared/services/nomination/confirmation/confirmation.service\";\r\n\r\nexport class ConfirmationHistorySearchParams {\r\n fromGasDay: GasDay;\r\n toGasDay: GasDay;\r\n locationId: number;\r\n}\r\n\r\nexport class ConfirmationEventHistoryAtMoment {\r\n id: number;\r\n gasDay: GasDay;\r\n gasCycleCode: string;\r\n locationId: number;\r\n beforeConfirmationRequestId: number;\r\n readOnly: boolean;\r\n}\r\n\r\nexport class ConfirmationHistoryModel extends BaseViewModel {\r\n pipelineGasDay: NominationPipelineGasDay;\r\n minGasDay: GasDay;\r\n locations: NominationLocation[] = [];\r\n\r\n searchParams: ConfirmationHistorySearchParams = new ConfirmationHistorySearchParams();\r\n lastSearchParams: ConfirmationHistorySearchParams;\r\n\r\n searchResults: ConfirmationHistoryDto[];\r\n}\r\n\r\n@Component({\r\n selector: 'app-confirmation-history',\r\n templateUrl: './confirmation-history.component.html',\r\n styleUrls: ['./confirmation-history.component.css']\r\n})\r\nexport class ConfirmationHistoryComponent extends BaseSearchComponent {\r\n model: ConfirmationHistoryModel = new ConfirmationHistoryModel();\r\n @ViewChild(DxDataGridComponent) confirmationHistoryDataGrid: DxDataGridComponent;\r\n\r\n constructor(protected appService: AppService,\r\n protected alertService: AlertService,\r\n protected router: Router,\r\n protected activatedRoute: ActivatedRoute,\r\n protected nominationSystemService: NominationSystemService,\r\n protected nominationLocationService: NominationLocationService,\r\n protected confirmationService: ConfirmationService) {\r\n super('Confirmation History', appService, activatedRoute, router, alertService);\r\n }\r\n\r\n /**\r\n * Public Methods\r\n */\r\n\r\n public formatGasDay = (obj: any): string => {\r\n return GasDay.parse(obj.value).toDisplayFormat();\r\n };\r\n\r\n public formatDateTime = (obj): string => {\r\n return new DateTime(obj.value).toDisplayFormat();\r\n };\r\n\r\n public loadEventHistory (event: any) {\r\n this.router.navigate(['/app', this.getPipelineCode(), 'confirmationdetails'], {\r\n queryParams: this.buildEventHistoryParams(event.data)\r\n }).then(() => {});\r\n }\r\n\r\n public onGasDaySelectionChanged = (): void => {\r\n // this will be fired even when a null value is returned from the date picker and don't want to reload with a bad date\r\n if (!this.model.searchParams.fromGasDay || !this.model.searchParams.toGasDay) return;\r\n\r\n if (this.isValidDates()) {\r\n this.gasDayChanged(this.model.searchParams.fromGasDay, this.model.searchParams.toGasDay);\r\n }\r\n };\r\n /**\r\n * Protected Methods\r\n */\r\n protected loadInitialResources(): Observable {\r\n this.appService.clearMessages();\r\n this.appService.hideMenu();\r\n\r\n const serviceCalls = [\r\n this.nominationSystemService.pipelineGasDay() // 0\r\n ];\r\n\r\n return forkJoin(serviceCalls).pipe(tap(responses => {\r\n const pipelineGasDay = responses[0];\r\n\r\n this.model.pipelineGasDay = pipelineGasDay;\r\n this.model.minGasDay = pipelineGasDay.earliestSelectableGasDay;\r\n }));\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return this.gasDayRangeParamValidator().isValid(params);\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams = new ConfirmationHistorySearchParams();\r\n this.model.searchResults = undefined;\r\n\r\n const dt = this.model.pipelineGasDay.allowableGasDay.toDate;\r\n dt.setDate(dt.getDate() - 7);\r\n let fromGasDay = GasDay.from(dt);\r\n if (fromGasDay.isLessThan(this.model.pipelineGasDay.earliestSelectableGasDay)) {\r\n fromGasDay = this.model.pipelineGasDay.earliestSelectableGasDay;\r\n }\r\n const toGasDay = this.model.pipelineGasDay.allowableGasDay;\r\n this.model.searchParams.locationId = null;\r\n this.setGasDaySearchParams(fromGasDay, toGasDay);\r\n }\r\n\r\n protected setSearchParams(params: TypedParams): void {\r\n const fromGasDay = params.asGasDay('fromGasDay');\r\n const toGasDay = params.asGasDay('toGasDay');\r\n\r\n this.model.searchParams.locationId = params.asNumber('locationId');\r\n this.setGasDaySearchParams(fromGasDay, toGasDay);\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n this.onGasDaySelectionChanged();\r\n\r\n return of(null);\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n\r\n return this.confirmationService.queryConfirmationHistory(this.buildQueryParams()).pipe(tap(results => {\r\n this.model.searchResults = results;\r\n }));\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const request = new ConfirmationHistoryRequest();\r\n\r\n request.fromGasDay = this.model.searchParams.fromGasDay;\r\n request.toGasDay = this.model.searchParams.toGasDay;\r\n request.locationId = this.model.searchParams.locationId;\r\n return request;\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n // Do not execute first time through when the data grid does not exist.\r\n // If a user changes the sort order by sorting data on a column, the new\r\n // sort order persists without a reset\r\n if (this.confirmationHistoryDataGrid) {\r\n this.confirmationHistoryDataGrid.instance.clearSorting();\r\n this.confirmationHistoryDataGrid.instance.columnOption('Gas Day', {sortOrder: 'desc', sortIndex: 0});\r\n this.confirmationHistoryDataGrid.instance.columnOption('Submitted Date Time', {sortOrder: 'desc', sortIndex: 2});\r\n }\r\n }\r\n\r\n private buildEventHistoryParams(historyDto: ConfirmationHistoryDto) {\r\n const request = new ConfirmationEventHistoryAtMoment();\r\n request.id = historyDto.id;\r\n request.gasDay = GasDay.parse(historyDto.gasDay);\r\n request.gasCycleCode = historyDto.gasCycleCode;\r\n request.locationId = this.model.searchParams.locationId;\r\n request.beforeConfirmationRequestId = historyDto.id;\r\n request.readOnly = true;\r\n return request;\r\n }\r\n\r\n isValidDates = (): boolean => {\r\n if (this.model.searchParams.toGasDay == null || this.model.searchParams.fromGasDay == null) { return true; }\r\n\r\n return this.model.searchParams.toGasDay >= this.model.searchParams.fromGasDay;\r\n };\r\n\r\n private gasDayRangeParamValidator(): ParamValidator {\r\n const gasDayRangeParamValidator = ParamValidator.Standard();\r\n\r\n gasDayRangeParamValidator.isGasDay('fromGasDay');\r\n gasDayRangeParamValidator.isGasDay('toGasDay');\r\n\r\n return gasDayRangeParamValidator;\r\n }\r\n\r\n private setGasDaySearchParams(fromGasDay: GasDay, toGasDay: GasDay): void {\r\n this.model.searchParams.fromGasDay = fromGasDay;\r\n this.model.searchParams.toGasDay = toGasDay;\r\n }\r\n\r\n private gasDayChanged(fromGasDay: GasDay, toGasDay: GasDay) {\r\n const serviceCalls: Observable[] = [\r\n this.nominationLocationService.queryAllDetails(new LocationSearchParams(fromGasDay, true, toGasDay, true))\r\n ];\r\n\r\n forkJoin(serviceCalls).subscribe(response => {\r\n this.model.locations = _.orderBy(_.filter(response[0], x => x.accountingLocationParameters.isConfirmedAtItself), x => x.name);\r\n if (this.model.locations.length === 1) {\r\n this.model.searchParams.locationId = this.model.locations[0].id;\r\n }\r\n });\r\n }\r\n}\r\n","export class ConfirmationRequestQuickResponseRow {\r\n constructor(\r\n public rowNumber: number,\r\n public transactionIdentifier: string,\r\n public transactionStatus: string,\r\n public errorType: string,\r\n public location: string,\r\n public trackingNumber: string,\r\n public errorCode: string,\r\n public errorMessage: string\r\n ) { }\r\n}\r\n\r\nexport class UploadConfirmationRequestQuickResponseParameters {\r\n constructor(\r\n public confirmationEventId: number,\r\n public fileRows: Array\r\n ) { }\r\n}\r\n","\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n  \r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n Browse...\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n \r\n
{{ model.uploadResponse?.linesInFile }}
\r\n \r\n
{{ model.uploadResponse?.linesSaved }}
\r\n
\r\n
\r\n \r\n
{{ model.uploadResponse?.linesError }}
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n","import {Component, OnInit, ViewChild} from \"@angular/core\";\r\nimport {BaseUploadResponse} from \"@model/base-upload-response\";\r\nimport {BaseCsvUploadViewModel, CsvUtility} from \"@model/CsvUtility\";\r\nimport {ModalComponent} from \"@shared/components/modal/modal.component\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {Observable, of} from \"rxjs\";\r\nimport DevExpress from \"devextreme\";\r\nimport dxDataGridColumn = DevExpress.ui.dxDataGridColumn;\r\n\r\n\r\nexport class UploadEdiTestFileEvent {\r\n constructor(\r\n public callBackId : number,\r\n public extractedData : Array = null){}\r\n}\r\n\r\nclass UploadEdiTestFileModel extends BaseCsvUploadViewModel {\r\n public uploadResponse : BaseUploadResponse;\r\n}\r\n\r\n\r\n@Component({\r\n selector: 'app-upload-edi-test-file-modal',\r\n templateUrl: './upload-edi-test-file-modal.component.html',\r\n styleUrls: ['./upload-edi-test-file-modal.component.css'],\r\n providers: [CsvUtility]\r\n})\r\nexport class UploadEdiTestFileModalComponent implements OnInit {\r\n\r\n // headers required in CSV file.\r\n protected csvHeaders : string[];\r\n public modalTitle : string;\r\n\r\n @ViewChild(ModalComponent) modal: ModalComponent;\r\n\r\n public model: UploadEdiTestFileModel;\r\n public eventData : UploadEdiTestFileEvent;\r\n\r\n public dataGridColumns: any;\r\n\r\n\r\n constructor(protected alertService: AlertService, protected csvUtility: CsvUtility) {\r\n this.dataGridColumns = new Array();\r\n }\r\n\r\n // Override this method in the child class to implement the call to the server endpoint.\r\n public doFileUpload(eventData : UploadEdiTestFileEvent) : Observable> {\r\n return of(null);\r\n }\r\n\r\n // Override this method to create the actual object representing a row to be uploaded to the server endpoint.\r\n public createFileRowObject(rowIndex : number, csvRowData: string[]) : any {\r\n return null;\r\n }\r\n\r\n\r\n public ngOnInit(): void {\r\n this.initModel();\r\n }\r\n\r\n protected addDxGridColumn(dataField: string, caption: string, width: string = null) {\r\n if (width) {\r\n this.dataGridColumns.push({dataField: dataField, caption: caption, width: width});\r\n } else {\r\n this.dataGridColumns.push({dataField: dataField, caption: caption});\r\n }\r\n }\r\n\r\n private initModel(): void {\r\n this.model = new UploadEdiTestFileModel();\r\n this.model.error = '';\r\n this.model.fileName = '';\r\n }\r\n\r\n public getModalWidth() : number {\r\n return Math.max(500, window.innerWidth-200);\r\n }\r\n\r\n public getModalHeight() : number {\r\n return Math.max(500, window.innerHeight-200);\r\n }\r\n\r\n public hoverOver() : string {\r\n return this.model.error;\r\n }\r\n\r\n public show(callBackId: number): void {\r\n this.initModel();\r\n this.eventData = new UploadEdiTestFileEvent(callBackId);\r\n this.alertService.clearMessages();\r\n this.modal.show();\r\n }\r\n\r\n public closeModal() : void {\r\n this.initModel();\r\n this.eventData.extractedData = null;\r\n this.alertService.clearMessages();\r\n }\r\n\r\n public resetClicked(): void {\r\n this.initModel();\r\n this.eventData.extractedData = null;\r\n this.alertService.clearMessages();\r\n }\r\n\r\n public uploadClicked() : void {\r\n if (this.eventData.extractedData === null) return;\r\n\r\n this.alertService.clearMessages();\r\n this.doFileUpload(this.eventData)\r\n .subscribe(\r\n response => {\r\n this.model.uploadResponse = response;\r\n\r\n if (this.model.uploadResponse) {\r\n if (this.model.uploadResponse.errors.length === 0) {\r\n this.alertService.addSuccessMessage('Upload successful', `Upload successful, ${this.model.fileName} uploaded.`);\r\n } else {\r\n this.alertService.addErrorMessage('Upload Failed', `Uploaded file ${this.model.fileName} rejected because of errors.`);\r\n }\r\n }\r\n });\r\n }\r\n\r\n public updateClicked(e) : void {\r\n\r\n if (e.target.files.length > 0) {\r\n const reader = new FileReader();\r\n\r\n reader.onload = (event: any) => {\r\n this.extractData(e.target.files[0].name, event.target.result);\r\n };\r\n reader.readAsText(e.target.files[0]);\r\n }\r\n }\r\n\r\n private extractData(fileName: string, data: string) {\r\n this.resetClicked();\r\n this.model.fileName = fileName;\r\n this.csvUtility.extractData(data, this.model, this.csvHeaders, this.processRows, false,false,true);\r\n }\r\n\r\n private processRows = (result: Array>, fields: Array) => {\r\n const colIndices = new Array();\r\n this.csvHeaders.forEach((header) => colIndices.push(this.csvUtility.findColumnHeaderColumn(fields, header)));\r\n\r\n let rowIndex = 1;\r\n this.eventData.extractedData = new Array();\r\n result.forEach((row: Array) => {\r\n const rowData = new Array();\r\n colIndices.forEach((col:string) => {rowData.push(row[col]);});\r\n this.eventData.extractedData.push(this.createFileRowObject(++rowIndex, rowData));\r\n });\r\n };\r\n\r\n}\r\n","import {Component} from \"@angular/core\";\r\nimport {BaseUploadResponse} from \"@model/base-upload-response\";\r\nimport {CsvUtility} from \"@model/CsvUtility\";\r\nimport {ConfirmationRequestQuickResponseRow, UploadConfirmationRequestQuickResponseParameters} from \"@model/service-models/edi-test-harness/upload-confirmation-request-quick-response-parameters\";\r\nimport {EdiTestHarnessService} from \"@shared/services/nomination/edi-test-harness/edi-test-harness.service\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {UploadEdiTestFileEvent, UploadEdiTestFileModalComponent} from \"app/gcts/nomination/edi-test-harness/upload-edi-test-file-modal/upload-edi-test-file-modal.component\";\r\nimport {Observable} from \"rxjs\";\r\n\r\n\r\n@Component({\r\n selector: 'app-upload-confirmation-request-quick-response',\r\n templateUrl: '../upload-edi-test-file-modal/upload-edi-test-file-modal.component.html',\r\n styleUrls: ['../upload-edi-test-file-modal/upload-edi-test-file-modal.component.css'],\r\n providers: [CsvUtility]\r\n})\r\nexport class UploadConfirmationRequestQuickResponseComponent extends UploadEdiTestFileModalComponent {\r\n\r\n constructor(protected alertService: AlertService,\r\n protected csvUtility: CsvUtility,\r\n private ediTestHarnessService: EdiTestHarnessService)\r\n {\r\n super(alertService, csvUtility);\r\n this.modalTitle = 'Upload Quick Response For Sent Request';\r\n this.setupCsvHeaders();\r\n this.setupDxGridColumns();\r\n }\r\n\r\n private setupCsvHeaders() {\r\n this.csvHeaders = [\r\n 'Transaction Identifier',\r\n 'Status',\r\n 'Error Type',\r\n 'Location',\r\n 'Tracking Number',\r\n 'Error Code',\r\n 'Error Message'\r\n ];\r\n }\r\n\r\n private setupDxGridColumns() : void {\r\n this.addDxGridColumn('row.rowNumber','Line Number','5%');\r\n this.addDxGridColumn('row.transactionIdentifier','Transaction Identifier','10%');\r\n this.addDxGridColumn('row.transactionStatus','Status','5%');\r\n this.addDxGridColumn('row.errorType','Error Type','10%');\r\n this.addDxGridColumn('row.location','Location','10%');\r\n this.addDxGridColumn('row.trackingNumber','Tracking Number','10%');\r\n this.addDxGridColumn('row.errorCode','Error Code','10%');\r\n this.addDxGridColumn('row.errorMessage','Error Message','10%');\r\n this.addDxGridColumn('error','Validation Error', '30%');\r\n }\r\n\r\n\r\n public doFileUpload(eventData : UploadEdiTestFileEvent) : Observable> {\r\n\r\n const parameters = new UploadConfirmationRequestQuickResponseParameters(eventData.callBackId, eventData.extractedData);\r\n return this.ediTestHarnessService.UploadConfirmationRequestQuickResponse(parameters);\r\n }\r\n\r\n public createFileRowObject(rowIndex : number, rowData : string[]) : any {\r\n return new ConfirmationRequestQuickResponseRow (\r\n rowIndex,\r\n rowData[0],\r\n rowData[1],\r\n rowData[2],\r\n rowData[3],\r\n rowData[4],\r\n rowData[5],\r\n rowData[6]\r\n );\r\n }\r\n\r\n}\r\n","export class ConfirmationRequestResponseRow {\r\n constructor(\r\n public rowNumber: number,\r\n public transactionIdentifier: string,\r\n public requesterDuns: string,\r\n public documentReferenceNum: string,\r\n public confirmingPartyQualifier: string,\r\n public confirmingPartyDuns: string,\r\n public confirmationRequesterQualifier: string,\r\n public confirmationRequester: string,\r\n public issueDate: string,\r\n public startDate: string,\r\n public startTime: string,\r\n public endDate: string,\r\n public endTime: string,\r\n public locationDrnQualifier: string,\r\n public locationDrn: string,\r\n public cycleIndicator: string,\r\n public trackingNumber: string,\r\n public solicitedOrUnsolicited: string,\r\n public operatorQuantity: string,\r\n public unitOfMeasure: string,\r\n public contractualFlowIndicator: string,\r\n public downstreamContractNumber: string,\r\n public downstreamPartyQualifier: string,\r\n public downstreamPartyId: string,\r\n public upstreamContractNumber: string,\r\n public upstreamPartyQualifier: string,\r\n public upstreamPartyId: string,\r\n public serviceRequesterContract: string,\r\n public serviceRequesterQualifier: string,\r\n public serviceRequesterId: string) {\r\n }\r\n}\r\n\r\n\r\nexport class UploadConfirmationRequestResponseParameters {\r\n constructor(\r\n public confirmationEventId: number,\r\n public fileRows: Array\r\n ) { }\r\n}\r\n","import {Component} from \"@angular/core\";\r\nimport {CsvUtility} from \"@model/CsvUtility\";\r\nimport {BaseUploadResponse} from \"@model/base-upload-response\";\r\nimport {ConfirmationRequestResponseRow, UploadConfirmationRequestResponseParameters} from \"@model/service-models/edi-test-harness/upload-confirmation-request-response-parameters\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {EdiTestHarnessService} from \"@shared/services/nomination/edi-test-harness/edi-test-harness.service\";\r\nimport {UploadEdiTestFileEvent, UploadEdiTestFileModalComponent} from \"app/gcts/nomination/edi-test-harness/upload-edi-test-file-modal/upload-edi-test-file-modal.component\";\r\nimport {Observable} from \"rxjs\";\r\n\r\n\r\n@Component({\r\n selector: 'app-upload-confirmation-request-response',\r\n templateUrl: '../upload-edi-test-file-modal/upload-edi-test-file-modal.component.html',\r\n styleUrls: ['../upload-edi-test-file-modal/upload-edi-test-file-modal.component.css'],\r\n providers: [CsvUtility]\r\n})\r\nexport class UploadConfirmationRequestResponseComponent extends UploadEdiTestFileModalComponent {\r\n\r\n constructor(protected alertService: AlertService,\r\n protected csvUtility: CsvUtility,\r\n private ediTestHarnessService: EdiTestHarnessService)\r\n {\r\n super(alertService, csvUtility);\r\n this.modalTitle = 'Upload Confirmation Response For Sent Request';\r\n this.setupCsvHeaders();\r\n this.setupDxGridColumns();\r\n }\r\n\r\n private setupCsvHeaders() : void {\r\n this.csvHeaders = [\r\n 'Trans Id',\r\n 'Requester DUNS',\r\n 'Doc Ref Num',\r\n 'Confirming Party Qualifier',\r\n 'Confirming Party DUNS',\r\n 'Confirmation Requester Qualifier',\r\n 'Confirmation Requester',\r\n 'Issue Date',\r\n 'Start Date',\r\n 'Start Time',\r\n 'End Date',\r\n 'End Time',\r\n 'Loc Qualifier',\r\n 'Loc DRN',\r\n 'Cycle',\r\n 'Trk Num',\r\n 'Solicited or Unsolicited',\r\n 'Qty',\r\n 'UoM',\r\n 'Flow',\r\n 'Dn Contract',\r\n 'Dn Party Qualifier',\r\n 'Dn Party Id',\r\n 'Up Contract',\r\n 'Up Party Qualifier',\r\n 'Up Party Id',\r\n 'SR Contract',\r\n 'SR Qualifier',\r\n 'SR Id'\r\n ];\r\n }\r\n\r\n private setupDxGridColumns() : void {\r\n this.addDxGridColumn('row.rowNumber','Line Number');\r\n this.addDxGridColumn('row.transactionIdentifier','Trans Id');\r\n this.addDxGridColumn('row.requesterDuns','Requester DUNS');\r\n this.addDxGridColumn('row.documentReferenceNum','Doc Ref Num');\r\n this.addDxGridColumn('row.trackingNumber','Trk Num');\r\n this.addDxGridColumn('row.solicitedOrUnsolicited','Solicited or Unsolicited');\r\n this.addDxGridColumn('row.operatorQuantity','Qty');\r\n\r\n this.addDxGridColumn('error','Validation Error');\r\n }\r\n\r\n\r\n public doFileUpload(eventData : UploadEdiTestFileEvent) : Observable> {\r\n\r\n const parameters = new UploadConfirmationRequestResponseParameters(eventData.callBackId, eventData.extractedData);\r\n return this.ediTestHarnessService.UploadConfirmationRequestResponse(parameters);\r\n }\r\n\r\n public createFileRowObject(rowIndex : number, rowData : string[]) : any {\r\n return new ConfirmationRequestResponseRow (\r\n rowIndex,\r\n rowData[0],\r\n rowData[1],\r\n rowData[2],\r\n rowData[3],\r\n rowData[4],\r\n rowData[5],\r\n rowData[6],\r\n rowData[7],\r\n rowData[8],\r\n rowData[9],\r\n rowData[10],\r\n rowData[11],\r\n rowData[12],\r\n rowData[13],\r\n rowData[14],\r\n rowData[15],\r\n rowData[16],\r\n rowData[17],\r\n rowData[18],\r\n rowData[19],\r\n rowData[20],\r\n rowData[21],\r\n rowData[22],\r\n rowData[23],\r\n rowData[24],\r\n rowData[25],\r\n rowData[26],\r\n rowData[27],\r\n rowData[28]\r\n );\r\n }\r\n\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.gasDay | gasDayFormat}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.gasCycleCode | displayName: 'code' : 'displayValue' : model.gasCycles}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.locationId | displayName: 'id' : 'name' : model.locations}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n\r\n
\r\n Number of records found: {{model.searchResults.length}}\r\n
\r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n \r\n
{{event.displayValue}}
\r\n
\r\n\r\n \r\n\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n","import {forkJoin, Subscription} from 'rxjs';\r\nimport * as _ from 'lodash';\r\nimport {Component, OnDestroy, OnInit, ViewChild} from '@angular/core';\r\nimport {BaseComponent} from \"@model/base-component\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {\r\n LocationSearchParams,\r\n NominationLocation, NominationLocationService\r\n} from \"@shared/services/nomination/nomination-location/nomination-location.service\";\r\nimport {GasCycle} from \"@model/gas-cycle\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {NominationSystemService} from \"@shared/services/nomination/nomination-system/nomination-system.service\";\r\nimport {GasCycleService} from \"@shared/services/nomination/gas-cycle/gas-cycle.service\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {NominationTransactionService} from \"@shared/services/nomination/nomination-transaction/nomination-transaction.service\";\r\nimport {DateTime} from \"@model/date-time\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {ConfirmationService} from \"@shared/services/nomination/confirmation/confirmation.service\";\r\n\r\nimport {IGasDay} from \"@model/gas-day-month.interface\";\r\nimport * as FileSaver from \"file-saver\";\r\nimport {\r\n ConfirmationEventHistoryDto,\r\n ConfirmationEventHistorySearchRequest\r\n} from \"app/shared/services/nomination/confirmation/confirmation-models\";\r\nimport {tap} from \"rxjs/operators\";\r\nimport {EdiConfirmationMethod} from \"@model/edi-confirmation-method\";\r\nimport {UploadConfirmationRequestQuickResponseComponent} from \"app/gcts/nomination/edi-test-harness/upload-confirmation-request-quick-response/upload-confirmation-request-quick-response.component\";\r\nimport {UploadConfirmationRequestResponseComponent} from \"app/gcts/nomination/edi-test-harness/upload-confirmation-request-response/upload-confirmation-request-response.component\";\r\n\r\nclass ConfirmationEventHistorySearchParam {\r\n gasDay: IGasDay;\r\n gasCycleCode = 'T';\r\n locationId: number;\r\n\r\n constructor(public defaulted: boolean = false) {\r\n }\r\n}\r\n\r\nclass ConfirmationEventHistoryModel {\r\n lastSearchParams: ConfirmationEventHistorySearchParam = new ConfirmationEventHistorySearchParam(true);\r\n searchParams: ConfirmationEventHistorySearchParam = new ConfirmationEventHistorySearchParam(true);\r\n\r\n searchResults: ConfirmationEventHistoryDto[];\r\n\r\n minGasDay: GasDay;\r\n maxGasDay: GasDay;\r\n locations: NominationLocation[] = [];\r\n allGasCycles: GasCycle[] = [];\r\n gasCycles: GasCycle[] = [];\r\n}\r\n\r\n@Component({\r\n selector: 'app-confirmation-event-history',\r\n templateUrl: './confirmation-event-history.component.html',\r\n styleUrls: ['./confirmation-event-history.component.css']\r\n})\r\nexport class ConfirmationEventHistoryComponent extends BaseComponent implements OnInit, OnDestroy {\r\n model = new ConfirmationEventHistoryModel();\r\n\r\n @ViewChild(UploadConfirmationRequestQuickResponseComponent) uploadQuickResponse: UploadConfirmationRequestQuickResponseComponent;\r\n @ViewChild(UploadConfirmationRequestResponseComponent) uploadConfirmationResponse: UploadConfirmationRequestResponseComponent;\r\n\r\n constructor(\r\n protected appService: AppService,\r\n private activatedRoute: ActivatedRoute,\r\n private nominationSystemService: NominationSystemService,\r\n private gasCycleService: GasCycleService,\r\n private nominationLocationService: NominationLocationService,\r\n private router: Router,\r\n private nominationTransactionService: NominationTransactionService,\r\n private fileService: FileService,\r\n private confirmationService: ConfirmationService\r\n ) {\r\n super(appService);\r\n }\r\n\r\n private queryParams$: Subscription;\r\n\r\n ngOnInit() {\r\n super.setTitle('Confirmation Event History');\r\n\r\n // Not sure why this isn't doing the same as the BaseSearchComponent. As a result, this might be missing some results.\r\n this.queryParams$ = this.activatedRoute.queryParams.subscribe(params => this.handleActiveRoute(params));\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.queryParams$.unsubscribe();\r\n }\r\n\r\n searchClicked(userInitiated: boolean): void {\r\n if (userInitiated) {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n }\r\n this.router.navigate([], {queryParams: this.buildSearchRequest()}).then(() => {\r\n this.performSearch();\r\n });\r\n }\r\n\r\n resetClicked() {\r\n this.model.searchParams = _.clone(this.model.lastSearchParams);\r\n this.router.navigate([]).then(() => {});\r\n }\r\n\r\n formatDateTime = (obj): string => {\r\n return new DateTime(obj.value).toDisplayFormat();\r\n };\r\n\r\n public showSentCr(event) : void {\r\n this.confirmationService.queryForSentConfirmationRequestPdf(event.key.id).subscribe((response) => {\r\n const mediaType = response.headers.get('content-type');\r\n const blob = new Blob([response.body], {type: mediaType});\r\n\r\n // from the content disposition, should be second element with =\"{filename}\" surrounding it\r\n const filename = response.headers.get('content-disposition').split(';')[1].trim().split('=')[1].replace(/\"/g, '');\r\n FileSaver.saveAs(blob, filename);\r\n });\r\n }\r\n\r\n public isTestHarnessEnabled() : boolean {\r\n let enabled = false;\r\n if (this.appService.showEdiTestHarness()) {\r\n // only check further if edi test harness is enabled in config\r\n const location = _.find(this.model.locations, x => x.id === this.model.searchParams.locationId);\r\n enabled = location?.accountingLocationParameters\r\n && location.accountingLocationParameters.isConfirmationByEDI\r\n && location.accountingLocationParameters.ediConfirmationMethod === EdiConfirmationMethod.X12.value;\r\n }\r\n return enabled;\r\n }\r\n\r\n public showUploadResponse(eventRow : ConfirmationEventHistoryDto) : boolean {\r\n // only show on CR Sent event line, if a file was actually sent\r\n return eventRow.eventPerformed === 'Send CR' && eventRow.ediFileSent;\r\n }\r\n\r\n public testHarnessUploadQr(row) : void {\r\n const eventId = row?.key?.id;\r\n if (eventId) {\r\n this.uploadQuickResponse.show(eventId);\r\n }\r\n }\r\n\r\n public testHarnessUploadCr(row) : void {\r\n const eventId = row?.key?.id;\r\n if (eventId) {\r\n this.uploadConfirmationResponse.show(eventId);\r\n }\r\n }\r\n\r\n public onLocationSelectionChanged = (): void => {\r\n this.filterGasCycles();\r\n };\r\n\r\n private filterGasCycles = (): void => {\r\n // Filter out STS cycles if necessary.\r\n let showSts = true;\r\n if (this.model.searchParams.locationId) {\r\n const location = _.find(this.model.locations, x => x.id === this.model.searchParams.locationId);\r\n showSts = location.accountingLocationParameters && location.accountingLocationParameters.areSTSCyclesConfirmed;\r\n }\r\n if (showSts) {\r\n this.model.gasCycles = this.model.allGasCycles;\r\n } else {\r\n this.model.gasCycles = _.filter(this.model.allGasCycles, x => !x.isStsCycle);\r\n }\r\n };\r\n\r\n private handleActiveRoute(params: Params) {\r\n this.nominationSystemService.pipelineGasDay().subscribe(pipelineGasDay => {\r\n this.appService.clearMessages();\r\n\r\n if (this.gasDayCycleParamValidator().isValid(params)) {\r\n this.handleActiveRouteForGasDayCycle(params);\r\n } else {\r\n const gasDay = pipelineGasDay.allowableGasDay;\r\n this.handleActiveRouteWithNoParams(gasDay);\r\n }\r\n\r\n this.model.minGasDay = pipelineGasDay.earliestSelectableGasDay;\r\n this.model.maxGasDay = pipelineGasDay.maxGasDayForCycleStatus;\r\n });\r\n }\r\n\r\n private handleActiveRouteForGasDayCycle(params: Params) {\r\n const gasDay = GasDay.parse(params['gasDay']);\r\n\r\n this.model.searchParams.gasDay = gasDay;\r\n this.model.searchParams.gasCycleCode = params['gasCycleCode'];\r\n this.model.searchParams.locationId = +params['locationId'];\r\n\r\n this.loadResources(gasDay, true);\r\n }\r\n\r\n private gasDayCycleParamValidator() {\r\n const gasDayCycleParamValidator = ParamValidator.Standard();\r\n gasDayCycleParamValidator.isGasDay('gasDay');\r\n gasDayCycleParamValidator.isString('gasCycleCode');\r\n gasDayCycleParamValidator.isNumber('locationId');\r\n\r\n return gasDayCycleParamValidator;\r\n }\r\n\r\n private handleActiveRouteWithNoParams(gasDay: IGasDay) {\r\n this.model = new ConfirmationEventHistoryModel();\r\n this.model.searchParams.gasDay = gasDay;\r\n\r\n this.loadResources(gasDay);\r\n }\r\n\r\n private buildSearchRequest(): ConfirmationEventHistorySearchRequest {\r\n const request = new ConfirmationEventHistorySearchRequest();\r\n\r\n request.gasDay = this.model.searchParams.gasDay;\r\n request.gasCycleCode = this.model.searchParams.gasCycleCode;\r\n request.locationId = this.model.searchParams.locationId;\r\n\r\n return request;\r\n }\r\n\r\n private performSearch() {\r\n this.confirmationService.queryConfirmationEventHistory(this.buildSearchRequest()).subscribe(results => {\r\n this.model.searchResults = results;\r\n });\r\n }\r\n\r\n\r\n private loadResources(gasDay: IGasDay, performSearch: boolean = false) {\r\n if (this.model.lastSearchParams.defaulted) {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n }\r\n\r\n const gasCycleService$ = this.gasCycleService\r\n .queryAll(gasDay)\r\n .pipe(tap(response => this.model.allGasCycles = response));\r\n\r\n const location$ = this.nominationLocationService\r\n .queryAllDetails(new LocationSearchParams(gasDay, true, gasDay, true))\r\n .pipe(tap(response => this.model.locations = _.orderBy(response, x => x.name)));\r\n\r\n forkJoin({gasCycleService$, location$})\r\n .subscribe(\r\n () => {\r\n this.filterGasCycles();\r\n\r\n if (performSearch) {\r\n this.performSearch();\r\n }\r\n });\r\n }\r\n\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n Filters\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{ model.lastSearchParams?.gasDay | gasDayFormat }}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.customerId | displayName: 'id' : 'displayValue' : model.customers}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{ model.lastSearchParams?.gasCycleCode | displayName: 'code' : 'displayValue' : model.gasCycles }}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.status | displayName: 'value' : 'name' : model.statuses}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n Exceptions\r\n
\r\n\r\n
\r\n
\r\n Number of Nomination Exceptions found: {{model.data.length}}\r\n
0\" class=\"pull-right\">\r\n Export CSV\r\n
\r\n
\r\n\r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n
\r\n Customer
Account\r\n
\r\n \r\n \r\n
\r\n Cycle
Code\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n Rec
Rank\r\n
\r\n \r\n \r\n
\r\n Del
Rank\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n Zero
Tax
Rated\r\n
\r\n \r\n
\r\n Issue
Date
Time\r\n
\r\n
\r\n {{ data.data.issueDateTime | dateFormat:'YYYY-MMM-DD H:mm:ss' }}\r\n
\r\n \r\n
\r\n
{{event.displayValue}}
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n","import {Component, ViewChild} from '@angular/core';\r\nimport {AppService} from '@shared/services/webapp/app/app.service';\r\nimport {GasDay} from '@model/gas-day';\r\nimport {forkJoin, Observable} from 'rxjs';\r\nimport {ParamValidator} from '@model/validators/param-validator';\r\nimport * as _ from 'lodash';\r\nimport {ActivatedRoute, Params, Router} from '@angular/router';\r\nimport {NominationSystemService} from '@shared/services/nomination/nomination-system/nomination-system.service';\r\nimport {NominationExceptions, NominationExceptionsRequest, NominationRequestService} from \"@shared/services/nomination/nomination-request/nomination-request.service\";\r\nimport {EnterpriseSearchParams, NominationEnterprise, NominationEnterpriseService} from \"@shared/services/nomination/nomination-enterprise/nomination-enterprise.service\";\r\nimport {NominationEnterpriseEnrichmentService} from \"@shared/services/nomination/nomination-enterprise-enrichment/nomination-enterprise-enrichment.service\";\r\nimport {NominationLocationEnrichmentService} from \"@shared/services/nomination/nomination-location-enrichment/nomination-location-enrichment.service\";\r\nimport {NominationNomGroupEnrichmentService} from \"@shared/services/nomination/nomination-nom-group-enrichment/nomination-nom-group-enrichment.service\";\r\nimport {YesAndNo} from \"@model/yes-no\";\r\nimport {GasCycle} from \"@model/gas-cycle\";\r\nimport {GasCycleService} from \"@shared/services/nomination/gas-cycle/gas-cycle.service\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {concatMap, tap} from \"rxjs/operators\";\r\nimport {NominationPipelineGasDay} from \"@model/nomination-pipeline-gas-day\";\r\nimport {GasDayCycleStatusCollection} from \"@model/gas-day-cycle-status-collection\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\n\r\nclass NominationExceptionsSearchParams {\r\n gasDay: GasDay;\r\n gasCycleCode: string;\r\n customerId: number;\r\n status: string;\r\n}\r\n\r\nexport class NominationExceptionStatus {\r\n static Passed: NominationExceptionStatus = new NominationExceptionStatus('Passed', 'Passed');\r\n static Failed: NominationExceptionStatus = new NominationExceptionStatus('Failed', 'Failed');\r\n\r\n static Statuses: NominationExceptionStatus[] = [\r\n NominationExceptionStatus.Passed,\r\n NominationExceptionStatus.Failed\r\n ];\r\n\r\n value: string;\r\n name: string;\r\n\r\n constructor(value: string, name: string) {\r\n this.value = value;\r\n this.name = name;\r\n }\r\n}\r\n\r\nclass NominationExceptionsModel {\r\n minGasDay: GasDay;\r\n maxGasDay: GasDay;\r\n searchParams: NominationExceptionsSearchParams;\r\n lastSearchParams: NominationExceptionsSearchParams;\r\n data: Array;\r\n\r\n customers: NominationEnterprise[] = [];\r\n gasCycles: GasCycle[] = [];\r\n statuses: NominationExceptionStatus[] = [];\r\n yesAndNo: YesAndNo[] = [];\r\n\r\n constructor() {\r\n this.searchParams = new NominationExceptionsSearchParams();\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'app-nomination-exceptions',\r\n templateUrl: './nomination-exceptions.component.html',\r\n styleUrls: ['./nomination-exceptions.component.css']\r\n})\r\n\r\nexport class NominationExceptionsComponent extends BaseSearchComponent {\r\n static GasDayParam: string = 'gasDay';\r\n static GasCycleCodeParam: string = 'gasCycleCode';\r\n static StatusParam: string = 'status';\r\n static CustomerIdParam: string = 'customerId';\r\n\r\n @ViewChild(DxDataGridComponent) nominationExceptionsDataGrid: DxDataGridComponent;\r\n\r\n showFilters = true;\r\n model: NominationExceptionsModel = new NominationExceptionsModel();\r\n\r\n constructor(protected appService: AppService,\r\n protected alertService: AlertService,\r\n private nominationSystemService: NominationSystemService,\r\n private nominationRequestService: NominationRequestService,\r\n private nominationEnterpriseService: NominationEnterpriseService,\r\n private nominationEnterpriseEnrichmentService: NominationEnterpriseEnrichmentService,\r\n private nominationLocationEnrichmentService: NominationLocationEnrichmentService,\r\n private nominationNomGroupEnrichmentService: NominationNomGroupEnrichmentService,\r\n private gasCycleService: GasCycleService,\r\n private fileService: FileService,\r\n protected activatedRoute: ActivatedRoute,\r\n protected router: Router) {\r\n super('Nomination Exceptions', appService, activatedRoute, router, alertService);\r\n }\r\n\r\n /**\r\n * Protected Methods\r\n */\r\n\r\n protected loadInitialResources(): Observable {\r\n return this.nominationSystemService.pipelineGasDay().pipe(\r\n tap(nominationPipelineGasDay => {\r\n this.model.yesAndNo = YesAndNo.All(); // TODO not sure if this should be part of initial load\r\n this.model.minGasDay = nominationPipelineGasDay.minGasDayForCycleStatus;\r\n this.model.maxGasDay = nominationPipelineGasDay.maxGasDayForCycleStatus;\r\n })\r\n );\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return this.paramValidator().isValid(params);\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n // we want to anchor to the gas day that we're last searching on\r\n const gasDay = this.model.searchParams.gasDay;\r\n const gasCycleCode = GasCycle.TimelyCycleCode;\r\n\r\n this.setupForm(gasDay, gasCycleCode, null, null);\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n const gasDay = typedParams.asGasDay(NominationExceptionsComponent.GasDayParam);\r\n const gasCycleCode = typedParams.asNullableString(NominationExceptionsComponent.GasCycleCodeParam);\r\n const status = typedParams.asNullableString(NominationExceptionsComponent.StatusParam);\r\n const customerId = typedParams.asNullableNumber(NominationExceptionsComponent.CustomerIdParam);\r\n\r\n this.setupForm(gasDay, gasCycleCode, status, customerId);\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n const gasDay = this.model.minGasDay;\r\n\r\n const enterpriseSearchParams = new EnterpriseSearchParams();\r\n enterpriseSearchParams.gasDay = gasDay;\r\n enterpriseSearchParams.gasAccountType = NominationEnterpriseService.DefaultGasAccountType;\r\n\r\n const enterprisesCall$ = this.nominationEnterpriseService.queryAllByPipeline(enterpriseSearchParams).pipe(\r\n concatMap(nominationEnterprises =>\r\n this.nominationEnterpriseEnrichmentService.enrichArray(nominationEnterprises, 'id').pipe(\r\n tap(enrichedNominationEnterprises => {\r\n this.model.customers = _.orderBy(enrichedNominationEnterprises, x => x.displayValue);\r\n })\r\n )\r\n )\r\n );\r\n\r\n const gasDayCycleStatusesCall$ = this.gasCycleService.queryGasDayCycleStatusesFor(gasDay).pipe(\r\n tap(gasDayCycleStatusCollection => {\r\n this.model.statuses = NominationExceptionStatus.Statuses;\r\n this.model.gasCycles = gasDayCycleStatusCollection.gasCycles();\r\n })\r\n );\r\n\r\n return forkJoin(enterprisesCall$, gasDayCycleStatusesCall$);\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n\r\n return this.nominationRequestService.queryNominationExceptions(\r\n this.model.lastSearchParams.customerId,\r\n this.model.lastSearchParams.gasDay,\r\n this.model.lastSearchParams.gasCycleCode,\r\n this.model.lastSearchParams.status\r\n ).pipe(\r\n concatMap(nominationExceptions => this.nominationNomGroupEnrichmentService.enrichArray(nominationExceptions, 'customerNomGroupId', 'customerNomGroup')),\r\n concatMap(nominationExceptions => this.nominationNomGroupEnrichmentService.enrichArray(nominationExceptions, 'nomGroupId', 'nomGroup')),\r\n concatMap(nominationExceptions => this.nominationLocationEnrichmentService.enrichArray(nominationExceptions, 'receiptLocationId', 'receiptLocation')),\r\n concatMap(nominationExceptions => this.nominationLocationEnrichmentService.enrichArray(nominationExceptions, 'deliveryLocationId', 'deliveryLocation')),\r\n concatMap(nominationExceptions => this.nominationLocationEnrichmentService.enrichArray(nominationExceptions, 'fuelLocationId', 'fuelLocation')),\r\n tap(enrichedNominationExceptions => {\r\n this.model.data = enrichedNominationExceptions;\r\n })\r\n );\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n return new NominationExceptionsRequest(this.model.searchParams.gasDay, this.model.searchParams.customerId, this.model.searchParams.gasCycleCode, this.model.searchParams.status);\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n if (this.nominationExceptionsDataGrid) {\r\n this.nominationExceptionsDataGrid.instance.clearSorting();\r\n this.nominationExceptionsDataGrid.instance.columnOption('customerNomGroupMnemonic', {sortIndex: 0, sortOrder: 'asc'});\r\n this.nominationExceptionsDataGrid.instance.columnOption('cycleCode', {sortIndex: 1, sortOrder: 'asc'});\r\n }\r\n }\r\n\r\n protected resetCompleted(): void {\r\n this.model.data = null;\r\n }\r\n\r\n /**\r\n * Private Methods\r\n */\r\n\r\n private paramValidator(): ParamValidator {\r\n const queryParams = ParamValidator.Standard();\r\n\r\n queryParams.isGasDay('gasDay');\r\n\r\n return queryParams;\r\n }\r\n\r\n private setupForm(gasDay: GasDay, gasCycleCode: string, status: string, customerId: number) {\r\n if (gasDay < this.model.minGasDay) {\r\n gasDay = this.model.minGasDay;\r\n }\r\n\r\n this.model.searchParams = new NominationExceptionsSearchParams();\r\n\r\n this.model.searchParams.gasDay = gasDay;\r\n this.model.searchParams.gasCycleCode = gasCycleCode;\r\n this.model.searchParams.customerId = customerId;\r\n this.model.searchParams.status = status;\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n }\r\n\r\n /**\r\n * Public Methods\r\n */\r\n\r\n public toggleFilterSectionClicked(): void {\r\n this.showFilters = !this.showFilters;\r\n }\r\n\r\n public exportCsvClicked(): void {\r\n const filename = this.getTitle() + ' ' + this.model.lastSearchParams.gasDay.toDisplayFormat() + ' to ' + this.model.lastSearchParams.gasCycleCode + '.csv';\r\n\r\n const csvData = _.map(this.model.data, x => _.extend({}, x, {\r\n simplifiedTaxZeroRated: x.zeroTaxRated ? 'Y' : 'N'\r\n }));\r\n\r\n const headers = ['Status', 'Customer Account', 'Cycle Code', 'TOS', 'Account', 'Receipt Location', 'Rec Rank', 'Delivery Location', 'Del Rank', 'Nom Qty',\r\n 'Package Id', 'Bid Price', 'Fuel Location', 'Fuel', 'Zero Tax Rated', 'Issue Date Time', 'Exception'];\r\n const columns = ['status', 'customerNomGroupMnemonic', 'cycleCode', 'tos', 'nomGroupMnemonic', 'receiptLocationName', 'recRank', 'deliveryLocationName',\r\n 'delRank', 'nomQty', 'packageId', 'bidPrice', 'fuelLocationName', 'fuelQty', 'simplifiedTaxZeroRated', 'issueDateTime', 'exceptionMessage'];\r\n\r\n this.fileService.downloadCsvFile(filename, csvData, headers, columns);\r\n }\r\n\r\n public customerAccountClicked(event): void {\r\n this.router.navigate(['/app', this.getPipelineCode(), 'nominationrequests'], {queryParams: {\r\n gasDay: this.model.lastSearchParams.gasDay,\r\n gasCycleCode: event.data.cycleCode,\r\n customerId: event.data.customerId,\r\n nomGroupId: event.data.customerNomGroupId\r\n }}).then(() => {});\r\n }\r\n}\r\n","import * as dx from \"devextreme/core/renderer\";\r\nimport { Injectable } from '@angular/core';\r\nimport * as _ from 'lodash';\r\n\r\n@Injectable()\r\nexport class RowCellNavigationService {\r\n\r\n constructor() { }\r\n\r\n navigateToNextTab(e, event, cellIndex, tabList: Array, previous: boolean) {\r\n const cellElements = dx(e.rowElement).children();\r\n const fromColumn = _.find(e.columns, ['index', cellIndex]) as any;\r\n let toColumnCaption = null;\r\n\r\n const columnIndex = _.findIndex(tabList, x => x === fromColumn.caption);\r\n\r\n // if moving forward\r\n if (!previous) {\r\n if (columnIndex + 1 === tabList.length) {\r\n toColumnCaption = tabList[0];\r\n } else {\r\n toColumnCaption = tabList[columnIndex + 1];\r\n }\r\n } else { // if moving backwards\r\n if (columnIndex === 0) {\r\n toColumnCaption = tabList[tabList.length - 1];\r\n } else {\r\n toColumnCaption = tabList[columnIndex - 1];\r\n }\r\n }\r\n\r\n const colIndex = _.findIndex(e.columns, ['caption', toColumnCaption]);\r\n const cellElement = cellElements.eq(colIndex);\r\n e.component.focus(cellElement);\r\n event.preventDefault();\r\n }\r\n\r\n}\r\n","import * as dx from \"devextreme/core/renderer\";\r\nimport * as _ from 'lodash';\r\nimport { Input, OnInit, Directive } from \"@angular/core\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {StorageLimitMaintenanceModel} from \"./storage-limit-maintenance-model\";\r\nimport {NominationLocation} from \"@shared/services/nomination/nomination-location/nomination-location.service\";\r\nimport {NominationGroup} from \"@shared/services/nomination/nomination-nom-group/nomination-nom-group.service\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {AlertService} from \"app/shared/services/webapp/alert/alert.service\";\r\nimport {DataGridHelpers} from \"@model/datagrid-helpers\";\r\nimport {RowCellNavigationService} from \"@shared/services/webapp/row-cell-navigation/row-cell-navigation.service\";\r\nimport {IDateDisplayFormat} from \"@shared/interfaces/date-display-format\";\r\n\r\n@Directive()\r\nexport class StorageLimitGridBase implements OnInit {\r\n\r\n public dateEditorFormat: IDateDisplayFormat;\r\n\r\n isEditing: boolean = false;\r\n isNewRecord = false;\r\n isRecordInFuture = false;\r\n\r\n protected newTabList = [];\r\n protected editTabListCurrent = [];\r\n protected editTabListFuture = [];\r\n\r\n protected today: Date = null;\r\n\r\n protected newRow;\r\n protected suspendValueChanged: boolean;\r\n\r\n @Input() data: StorageLimitMaintenanceModel;\r\n\r\n constructor(protected alertService: AlertService,\r\n protected rowCellNavigationService: RowCellNavigationService) {\r\n\r\n this.dateEditorFormat = {\r\n formatter: this.dateEditorFormatter,\r\n parser: this.dateEditorParser\r\n };\r\n }\r\n\r\n dateEditorFormatter = (date: Date): string => {\r\n const gasDay = GasDay.from(date);\r\n return gasDay.toDisplayFormatAll();\r\n };\r\n\r\n dateEditorParser = (value: string): Date => {\r\n try {\r\n return GasDay.parse(value, true).toDate;\r\n } catch (e) {\r\n return new Date(NaN);\r\n }\r\n };\r\n\r\n ngOnInit(): void {\r\n this.today = this.data.currentGasDay.next().toDate;\r\n }\r\n\r\n formatGasDay(obj: any): string {\r\n if (obj.value !== undefined) {\r\n return GasDay.from(obj.value).toDisplayFormat();\r\n }\r\n return '';\r\n }\r\n\r\n rowHasExpired(cellInfo: any): boolean {\r\n return GasDay.from(cellInfo.data.toGasDay).toDate <= this.today;\r\n }\r\n\r\n locationsAsDisplayString(data: NominationLocation[]) {\r\n return _.map(data, location => location.name).join(', ');\r\n }\r\n\r\n accountsAsDisplayString(data: NominationGroup[]) {\r\n return _.map(data, nomGroup => nomGroup.mnemonic).join(', ');\r\n }\r\n\r\n onInitNewRow(e) {\r\n e.data.isEditing = true;\r\n }\r\n\r\n protected onEditorPreparing(e: any) {\r\n if (_.isNil(e) || _.isNil(e.row) || _.isNil(e.row.data) || _.isNil(e.row.data.id) || e.row.inserted === true) {\r\n this.isNewRecord = true;\r\n } else {\r\n this.isNewRecord = false;\r\n\r\n if (_.isNil(e) || _.isNil(e.row) || _.isNil(e.row.data) || _.isNil(e.row.data.fromGasDay)) {\r\n this.isRecordInFuture = false;\r\n } else {\r\n this.isRecordInFuture = this.dateIsInTheFuture(e.row.data.fromGasDay);\r\n }\r\n }\r\n }\r\n\r\n protected disableTopButtons(grid: DxDataGridComponent) {\r\n grid.sorting.mode = 'none';\r\n this.data.topButtonsEnabled = false;\r\n }\r\n\r\n protected editRowClicked(cellInfo: any, grid: DxDataGridComponent) {\r\n this.data.gridInEditMode = true;\r\n cellInfo.data.isEditing = true;\r\n cellInfo.component.editRow(cellInfo.rowIndex);\r\n this.isEditing = true;\r\n this.disableTopButtons(grid);\r\n }\r\n\r\n protected cancelClicked(data, grid: DxDataGridComponent) {\r\n this.data.gridInEditMode = false;\r\n this.isNewRecord = false;\r\n data.isEditing = false;\r\n this.isEditing = false;\r\n this.enableTopButtons(grid);\r\n grid.instance.cancelEditData();\r\n }\r\n\r\n protected addRow(grid: DxDataGridComponent) {\r\n this.data.gridInEditMode = true;\r\n grid.instance.addRow();\r\n this.disableTopButtons(grid);\r\n }\r\n\r\n protected enableTopButtons(grid: DxDataGridComponent) {\r\n grid.sorting.mode = 'multiple';\r\n this.data.topButtonsEnabled = true;\r\n }\r\n\r\n protected finishEdit(obj: any, grid: DxDataGridComponent) {\r\n this.data.gridInEditMode = false;\r\n this.isNewRecord = false;\r\n obj.isEditing = false;\r\n this.isEditing = false;\r\n this.enableTopButtons(grid);\r\n }\r\n\r\n protected onCellClick(e, grid: DxDataGridComponent) {\r\n const $invalidCell = dx(e.element).find(\"td.dx-datagrid-invalid.dx-focused\");\r\n if ($invalidCell.length) {\r\n (grid.instance as any)._$element.attr('cellinerror', 'TRUE');\r\n } else {\r\n (grid.instance as any)._$element.attr('cellinerror', 'FALSE');\r\n }\r\n }\r\n\r\n protected resetInvalidDate(e2) {\r\n if (!e2.component.option('isValid')) {\r\n const previousValue = e2.component.option('value');\r\n e2.component.reset();\r\n e2.component.option('value', previousValue);\r\n }\r\n }\r\n\r\n validLocations(locationList): boolean {\r\n if (locationList && locationList.length > 0) {\r\n if (!this.data.editedRowIsValid) {\r\n this.data.editedRowIsValid = false;\r\n }\r\n return true;\r\n }\r\n this.data.editedRowIsValid = true;\r\n return false;\r\n }\r\n\r\n allowEditLocations(e: any, columnId): boolean {\r\n return this.isCellEditable(e.data, columnId);\r\n }\r\n\r\n allowEditAccounts(e: any, columnId): boolean {\r\n return this.isCellEditable(e.data, columnId);\r\n }\r\n\r\n protected isCellEditable(row: any, dataField: string): boolean {\r\n return true;\r\n }\r\n\r\n onKeyDown = (e: any) => {\r\n DataGridHelpers.filterOutEscapeKey(e);\r\n };\r\n\r\n onSelectionChanged(e, d) {\r\n d.setValue(e.value);\r\n this.data.editedRowIsValid = e.value.length === 0;\r\n }\r\n\r\n protected baseOnEditorPrepared(e, component) {\r\n if (e.dataField === \"toGasDay\") {\r\n const dxEditorInstance = dx(e.editorElement).dxDateBox('instance');\r\n dxEditorInstance.option('min', this.data.currentGasDay.toDate);\r\n dxEditorInstance.option('max', new GasDay(9999, 11, 31).toDate);\r\n dxEditorInstance.option('onFocusOut', this.resetInvalidDate);\r\n }\r\n\r\n if (e.dataField === \"fromGasDay\") {\r\n const dxEditorInstance = dx(e.editorElement).dxDateBox('instance');\r\n dxEditorInstance.option('min', this.data.currentGasDay.toDate);\r\n dxEditorInstance.option('max', new GasDay(9999, 11, 31).toDate);\r\n dxEditorInstance.option('onFocusOut', this.resetInvalidDate);\r\n }\r\n\r\n if (e.parentType === \"dataRow\" && e.row.inserted && e.component.columnOption(e.dataField, \"validationRules\")) {\r\n\r\n // https://www.devexpress.com/Support/Center/Question/Details/T560474/dxdatagrid-how-to-force-validation-on-the-new-row-creation\r\n setTimeout(function () {\r\n let validator = null;\r\n try {\r\n validator = dx(e.editorElement).parent().parent().dxValidator(\"instance\");\r\n } catch (x) {\r\n }\r\n if (validator) {\r\n validator.validate();\r\n }\r\n component.data.editedRowIsValid = !e.component.getController('validating').validate();\r\n }, 100);\r\n }\r\n }\r\n\r\n saveClicked(cellInfo: any): void {\r\n cellInfo.component.saveEditData();\r\n }\r\n\r\n protected extractObject(e: any) {\r\n if (_.isNil(e.oldData)) {\r\n return _.clone(e.newData);\r\n } else {\r\n const limit = _.clone(e.oldData);\r\n Object.keys(e.newData).forEach(key =>\r\n limit[key] = e.newData[key]\r\n );\r\n return limit;\r\n }\r\n }\r\n\r\n protected onRowPrepared(e: any) {\r\n if (e.isEditing) {\r\n // hook up keydown event handlers for the columns that need to override tabbing behaviour\r\n const isFutureDated = (_.isNil(e) || _.isNil(e.data)) ? false : this.dateIsInTheFuture(e.data.fromGasDay);\r\n\r\n const focusNextTab = this.focusNextTab;\r\n const tabElements = dx(e.rowElement).children().filter((i): boolean => {\r\n return this.keyDownColumns(e.columns, e.inserted, i, isFutureDated);\r\n });\r\n _.forEach(tabElements, tabElement => {\r\n tabElement.addEventListener('keydown', event => {\r\n if (event.keyCode === 9) {\r\n focusNextTab(e, event, tabElement.cellIndex, isFutureDated, event.shiftKey);\r\n }\r\n });\r\n });\r\n }\r\n }\r\n\r\n protected dateIsInTheFuture(day: string): boolean {\r\n return new Date(day) >= this.today;\r\n }\r\n\r\n protected focusNextTab = (e, event, cellIndex, isFutureDated: boolean, previous: boolean) => {\r\n // If editing\r\n if (!e.inserted) {\r\n if (isFutureDated) {\r\n this.rowCellNavigationService.navigateToNextTab(e, event, cellIndex, this.editTabListFuture, previous);\r\n } else {\r\n this.rowCellNavigationService.navigateToNextTab(e, event, cellIndex, this.editTabListCurrent, previous);\r\n }\r\n }\r\n\r\n if (e.inserted) {\r\n this.rowCellNavigationService.navigateToNextTab(e, event, cellIndex, this.newTabList, previous);\r\n }\r\n };\r\n\r\n protected keyDownColumns(columns: any[], inserted: boolean, index: number, isFutureDated: boolean): boolean {\r\n return true;\r\n }\r\n\r\n public areThereUnsavedChanges(): boolean {\r\n return this.isEditing || this.isNewRecord;\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n Number of Storage Injections found: {{data.storageLimits.length}}\r\n
\r\n
\r\n\r\n
\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n \r\n \r\n \r\n\r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n \r\n
\r\n {{locationsAsDisplayString(d.data.locations)}}\r\n
\r\n
\r\n \r\n \r\n
{{locationsAsDisplayString(d.data.locations)}}
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n","import {forkJoin, Observable} from 'rxjs';\r\n\r\nimport {concatMap} from 'rxjs/operators';\r\nimport * as dx from \"devextreme/core/renderer\";\r\nimport * as _ from 'lodash';\r\nimport {Component, OnInit, ViewChild} from '@angular/core';\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {\r\n AccountInjectionLimitService,\r\n StorageLimit\r\n} from \"@shared/services/nomination/account-injection-limit/account-injection-limit.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {AlertService} from \"app/shared/services/webapp/alert/alert.service\";\r\nimport {\r\n YesNoCancelModalService\r\n} from \"@shared/services/webapp/yes-no-cancel-modal/yes-no-cancel-modal.service\";\r\nimport {RowCellNavigationService} from \"@shared/services/webapp/row-cell-navigation/row-cell-navigation.service\";\r\nimport {StorageLimitGridBase} from \"../storage-limit-grid-base\";\r\nimport {NominationGroup, NominationNomGroupService} from \"@shared/services/nomination/nomination-nom-group/nomination-nom-group.service\";\r\nimport { NominationNomGroupEnrichmentService } from \"@shared/services/nomination/nomination-nom-group-enrichment/nomination-nom-group-enrichment.service\";\r\nimport {YesNoModalOptions} from \"@shared/services/webapp/modal-options/yes-no-modal-options\";\r\nimport {SelectedModalOption} from \"@shared/services/webapp/modal-options/selected-modal-option\";\r\n\r\n\r\n@Component({\r\n selector: 'app-injections-tab',\r\n templateUrl: './injections-tab.component.html',\r\n styleUrls: ['./injections-tab.component.css']\r\n})\r\nexport class InjectionsTabComponent extends\r\n StorageLimitGridBase implements OnInit {\r\n\r\n protected _currentEditingItemLocations = [];\r\n\r\n @ViewChild('dg1') injectionsDataGrid: DxDataGridComponent;\r\n\r\n constructor(private accountInjectionLimitService: AccountInjectionLimitService,\r\n private appService: AppService,\r\n protected alertService: AlertService,\r\n protected modalService: YesNoCancelModalService,\r\n protected rowCellNavigationService: RowCellNavigationService,\r\n private nominationNomGroupService: NominationNomGroupService,\r\n protected nominationGroupEnrichmentService: NominationNomGroupEnrichmentService) {\r\n super(alertService, rowCellNavigationService);\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n\r\n this.newTabList = ['Account', 'Injection Limit', 'Start Gas Day', 'Expiry Gas Day', 'Locations', 'Injection Overrun (Y/N)'];\r\n this.editTabListCurrent = ['Expiry Gas Day'];\r\n this.editTabListFuture = ['Injection Limit', 'Start Gas Day', 'Expiry Gas Day', 'Locations', 'Injection Overrun (Y/N)'];\r\n }\r\n\r\n limitHasStarted(cellInfo: any): boolean {\r\n return GasDay.from(cellInfo.data.fromGasDay).toDate <= this.today;\r\n }\r\n\r\n deleteRowClicked(cellInfo) {\r\n const limit = cellInfo.data as StorageLimit;\r\n const confirmResultTrue = () => {\r\n this.accountInjectionLimitService.deleteStorageLimit(limit.id).subscribe(\r\n () => {\r\n this.alertService.addSuccessMessage(\"Delete Success\", 'Injection limit deleted');\r\n _.remove(this.data.storageLimits, limit);\r\n });\r\n };\r\n const yesNoModalOptions = new YesNoModalOptions('Delete Storage Injection Limit', 'You are about to delete this storage injection limit, are you sure you want to continue?', 'Cancel', 'OK');\r\n this.modalService.show(yesNoModalOptions).subscribe((selectedModalOption: SelectedModalOption) => {\r\n if (selectedModalOption === SelectedModalOption.Yes) {\r\n confirmResultTrue();\r\n }\r\n });\r\n }\r\n\r\n cancelClicked(data) {\r\n data.locations = this._currentEditingItemLocations;\r\n super.cancelClicked(data, this.injectionsDataGrid);\r\n\r\n }\r\n\r\n protected finishEdit(obj: any) {\r\n super.finishEdit(obj, this.injectionsDataGrid);\r\n }\r\n\r\n protected enableTopButtons() {\r\n super.enableTopButtons(this.injectionsDataGrid);\r\n }\r\n\r\n editRowClicked(cellInfo: any) {\r\n this._currentEditingItemLocations = cellInfo.data.locations;\r\n super.editRowClicked(cellInfo, this.injectionsDataGrid);\r\n }\r\n\r\n protected disableTopButtons() {\r\n super.disableTopButtons(this.injectionsDataGrid);\r\n }\r\n\r\n protected addRow() {\r\n super.addRow(this.injectionsDataGrid);\r\n}\r\n\r\n onEditorPrepared = (e: any) => {\r\n super.baseOnEditorPrepared(e, this);\r\n\r\n let dxEditorInstance = null;\r\n switch (e.dataField) {\r\n case 'limit':\r\n dxEditorInstance = dx(e.editorElement).dxNumberBox('instance');\r\n break;\r\n case 'toGasDay':\r\n case 'fromGasDay':\r\n dxEditorInstance = dx(e.editorElement).dxDateBox('instance');\r\n break;\r\n case 'nominationGroupId':\r\n case 'injectionOverrun':\r\n dxEditorInstance = dx(e.editorElement).dxSelectBox('instance');\r\n break;\r\n }\r\n if (dxEditorInstance) {\r\n dxEditorInstance.option('valueChangeEvent', 'keydown keyup');\r\n dxEditorInstance.on('valueChanged', (vce) => {\r\n e.setValue(vce.value);\r\n this.data.editedRowIsValid = e.component.getController('validating').validate();\r\n });\r\n }\r\n };\r\n\r\n onEditorPreparing(e: any) {\r\n super.onEditorPreparing(e);\r\n\r\n if (!!e.dataField) {\r\n if (!e.cancel) {\r\n switch (e.dataField) {\r\n case 'fromGasDay':\r\n e.editorOptions.min = this.today;\r\n break;\r\n case 'toGasDay':\r\n e.editorOptions.min = this.today;\r\n break;\r\n case 'limit':\r\n e.editorOptions.mode = 'number';\r\n break;\r\n case 'injectionOverrun':\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n onCellClick(e) {\r\n // this is for generic dx controls in a grid\r\n super.onCellClick(e, this.injectionsDataGrid);\r\n\r\n // this is for less generic controls in a grid\r\n if (e.column.dataField === 'locationIds') {\r\n if (e.row) {\r\n if (!e.row.data.locationIds) {\r\n (this.injectionsDataGrid.instance as any)._$element.attr('cellinerror', 'TRUE');\r\n } else {\r\n (this.injectionsDataGrid.instance as any)._$element.attr('cellinerror', 'FALSE');\r\n }\r\n }\r\n }\r\n }\r\n\r\n authQtyMustBeInteger(e): boolean {\r\n return e.value % 1 === 0;\r\n }\r\n\r\n onInjectionLimitSelectionChanged = (e, d) => {\r\n d.setValue(e);\r\n };\r\n\r\n injectionOverrunMustBeSelected(e) {\r\n return e.value === false || e.value === true;\r\n }\r\n\r\n protected isCellEditable(row: any, dataField: string): boolean {\r\n if (row.id == null) {\r\n return true;\r\n }\r\n switch (dataField) {\r\n case 'nominationGroupId':\r\n case 'limit':\r\n case 'fromGasDay':\r\n case \"injectionOverrun\":\r\n case 'locationIds':\r\n return this.dateIsInTheFuture(row.fromGasDay);\r\n case 'toGasDay':\r\n return this.dateIsInTheFuture(row.toGasDay);\r\n }\r\n }\r\n\r\n\r\n onRowPrepared(e) {\r\n super.onRowPrepared(e);\r\n }\r\n\r\n onRowInserting(e: any) {\r\n const limit = e.data as StorageLimit;\r\n e.cancel = this.createStorageLimit(limit);\r\n return;\r\n }\r\n\r\n private getApplicableInjectionAccounts(gasDay: GasDay, enterpriseId?: number): Observable {\r\n return this.nominationNomGroupService.getApplicableInjectionAccounts(this.data.currentGasDay, this.data.searchParams.enterpriseId).pipe(\r\n concatMap(response => {\r\n return this.nominationGroupEnrichmentService.enrichArray(response, 'id');\r\n }));\r\n }\r\n\r\n private createStorageLimit(limit: StorageLimit) {\r\n const deferredCancel = new Promise((resolve, reject) => {\r\n this.appService.clearMessages();\r\n\r\n this.accountInjectionLimitService.createStorageLimit(limit).subscribe(\r\n result => {\r\n this.alertService.addSuccessMessage(\"Save Success\", 'Created new injection limit');\r\n\r\n // trying to avoid reloading the storage limits from the api when we already have all the information we need\r\n // we can't leave the row that the UI added bacause it has no id and would therefore not be deleteable\r\n // its possible the we should be using devextreme datasource thought\r\n this.data.storageLimits = _.filter(this.data.storageLimits, record => !_.isNil(record.id));\r\n this.data.storageLimits.push(result);\r\n\r\n (limit as any).isEditing = false;\r\n this.finishEdit(result);\r\n\r\n resolve();\r\n\r\n const serviceCalls: Observable[] = [\r\n this.getApplicableInjectionAccounts(this.data.currentGasDay, this.data.searchParams.enterpriseId),\r\n // TODO - JOE - Previously, there was a call to getApplicableSTSAccounts, which was not being used so I removed it. Confirm this is okay and remove this comment.\r\n ];\r\n forkJoin(serviceCalls).subscribe(response => {\r\n this.data.availablePoolingsInjectionAccounts = response[0];\r\n });\r\n },\r\n () => {\r\n reject();\r\n }\r\n );\r\n });\r\n return deferredCancel;\r\n }\r\n\r\n onRowUpdating(e: any) {\r\n if (e.newData) {\r\n const limit = this.extractObject(e);\r\n e.cancel = this.updateStorageLimit(limit);\r\n return;\r\n }\r\n }\r\n\r\n\r\n private updateStorageLimit(limit: StorageLimit) {\r\n const deferredCancel = new Promise((resolve, reject) => {\r\n this.appService.clearMessages();\r\n\r\n this.accountInjectionLimitService.updateStorageLimit(limit).subscribe(\r\n result => {\r\n this.alertService.addSuccessMessage(\"Update Success\", 'Updated injection limit');\r\n\r\n // trying to avoid reloading the storage limits from the api when we already have all the information we need\r\n // we can't leave the row that the UI added bacause it has no id and would therefore not be deleteable\r\n // its possible the we should be using devextreme datasource thought\r\n this.data.storageLimits = _.filter(this.data.storageLimits, record => record.id !== limit.id);\r\n this.data.storageLimits.push(limit);\r\n (limit as any).isEditing = false;\r\n this.finishEdit(result);\r\n resolve();\r\n },\r\n () => {\r\n reject();\r\n }\r\n );\r\n });\r\n return deferredCancel;\r\n }\r\n\r\n onRowValidating(e) {\r\n const newLimit = this.extractObject(e);\r\n const otherLimitsWithSameAccount = _.filter(this.data.storageLimits, limit => limit.id !== newLimit.id && limit.nominationGroupId === newLimit.nominationGroupId);\r\n const firstOverlappingLimit = _.find(otherLimitsWithSameAccount, limit =>\r\n // NOT both before or both after\r\n ! ((limit.fromGasDay < newLimit.fromGasDay && limit.toGasDay < newLimit.fromGasDay) || (limit.fromGasDay > newLimit.toGasDay && limit.toGasDay > newLimit.toGasDay)));\r\n if (!_.isNil(firstOverlappingLimit)) {\r\n this.alertService.clearMessages();\r\n this.alertService.addErrorMessage('Validation Error', 'Cannot add account injection limit as one already exist for the selected date range.');\r\n e.isValid = false;\r\n } else {\r\n this.alertService.clearMessages();\r\n }\r\n }\r\n\r\n protected keyDownColumns(columns: any[], inserted: boolean, index: number, isFutureDated: boolean): boolean {\r\n if (inserted) {\r\n return true;\r\n } else { // If Editing\r\n // If in the future, enable more columns\r\n if (isFutureDated) {\r\n switch (columns[index].dataField) {\r\n case 'limit':\r\n case 'fromGasDay':\r\n case 'toGasDay':\r\n case 'locationIds':\r\n case 'injectionOverrun':\r\n return true;\r\n }\r\n } else {\r\n switch (columns[index].dataField) {\r\n case 'toGasDay':\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n}\r\n","import {NominationEnterprise} from \"@shared/services/nomination/nomination-enterprise/nomination-enterprise.service\";\r\nimport {\r\n StorageLimit\r\n} from \"@shared/services/nomination/account-injection-limit/account-injection-limit.service\";\r\nimport {NominationLocation} from \"@shared/services/nomination/nomination-location/nomination-location.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {YesAndNo} from \"@model/yes-no\";\r\nimport {Pooling, PoolType} from \"@shared/services/nomination/pooling-service/pooling-service.service\";\r\nimport {NominationGroup} from \"@shared/services/nomination/nomination-nom-group/nomination-nom-group.service\";\r\nimport {WithdrawalLimit} from \"@shared/services/nomination/withdrawal-service/withdrawal-service.service\";\r\nimport {AccountUhfLimit} from \"@shared/services/nomination/account-uhf-limit/account-uhf-limit.service\";\r\n\r\nexport class StorageLimitMaintenanceSearchParams {\r\n fromGasDay: GasDay;\r\n toGasDay: GasDay;\r\n enterpriseId: number;\r\n}\r\n\r\nexport class StorageLimitMaintenanceModel {\r\n searchParams: StorageLimitMaintenanceSearchParams = new StorageLimitMaintenanceSearchParams;\r\n lastSearchParams: StorageLimitMaintenanceSearchParams;\r\n showFilterSection: boolean = true;\r\n customers: NominationEnterprise[] = [];\r\n storageLimits: StorageLimit[] = null;\r\n poolings: Pooling[] = null;\r\n uhfLimits: AccountUhfLimit[] = null;\r\n withdrawals: WithdrawalLimit[] = null;\r\n availablePoolingsInjectionAccounts: NominationGroup[] = [];\r\n availablePoolingsWithdrawalAccounts: NominationGroup[] = [];\r\n availableWithdrawalAccounts: NominationGroup[] = [];\r\n nomGroupsForEnterprise: NominationEnterprise[] = [];\r\n allLocations: NominationLocation[] = [];\r\n topButtonsEnabled: boolean = true;\r\n currentGasDay: GasDay = null;\r\n yesAndNo: YesAndNo[] = [];\r\n poolTypes: PoolType[] = [];\r\n editedRowIsValid: boolean = false;\r\n gridInEditMode: boolean = false;\r\n isInternalUser: boolean = false;\r\n}\r\n\r\nexport class DateEditorFormat {\r\n formatter = (dateTime: Date): string => {\r\n return GasDay.from(dateTime).toDisplayFormat();\r\n };\r\n\r\n parser = (value: string): Date => {\r\n return GasDay.parse(value).toDate;\r\n }\r\n}\r\n","\r\nimport {map} from 'rxjs/operators';\r\nimport * as _ from 'lodash';\r\nimport { Injectable } from '@angular/core';\r\nimport {Observable} from \"rxjs\";\r\nimport {NominationGroup} from \"../nomination-nom-group/nomination-nom-group.service\";\r\nimport {NominationLocation} from \"../nomination-location/nomination-location.service\";\r\nimport {SessionService} from \"../../webapp/session/session.service\";\r\nimport {NominationResourceService} from \"@shared/resources/nominations-resource.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\n\r\nexport class PoolType {\r\n public static Withdrawal = new PoolType('withdrawal', 'Withdrawal');\r\n public static Injection = new PoolType('injection', 'Injection');\r\n\r\n public static PoolTypes: PoolType[] = [PoolType.Injection, PoolType.Withdrawal];\r\n\r\n constructor(public id: string, public name: string) {\r\n }\r\n\r\n}\r\n\r\nexport class Pooling {\r\n id: number;\r\n enterpriseId: number;\r\n poolName: string;\r\n poolType: PoolType;\r\n nominationGroups: NominationGroup[] = [];\r\n limit: number;\r\n locations: NominationLocation[] = [];\r\n fromGasDay: Date;\r\n toGasDay: Date;\r\n}\r\n\r\n@Injectable()\r\nexport class PoolingService {\r\n\r\n constructor(private nominationResource: NominationResourceService,\r\n private sessionService: SessionService) { }\r\n\r\n deletePooling(id): Observable {\r\n return this.nominationResource.deleteWithNoResponseBody('/poolStorageLimit/' + id, true);\r\n }\r\n\r\n createPooling(data: Pooling): Observable {\r\n const body = {\r\n id: data.id,\r\n enterpriseId: data.enterpriseId,\r\n poolName: data.poolName,\r\n poolType: data.poolType,\r\n limit: data.limit,\r\n nominationGroupIds : _.map(data.nominationGroups, nomGroup => nomGroup.id),\r\n locationIds: _.map(data.locations, loc => loc.id),\r\n pipeline: this.sessionService.getPipeline().code,\r\n fromGasDay: GasDay.from(data.fromGasDay).toString(),\r\n toGasDay: GasDay.from(data.toGasDay).toString()\r\n };\r\n return this.nominationResource.post('/poolStorageLimit', body, true).pipe(map(res => this.buildPooling(res)));\r\n }\r\n\r\n updatePooling(data: Pooling): Observable {\r\n const body = {\r\n id: data.id,\r\n enterpriseId: data.enterpriseId,\r\n poolName: data.poolName,\r\n poolType: data.poolType.id,\r\n limit: data.limit,\r\n nominationGroupIds : _.map(data.nominationGroups, nomGroup => nomGroup.id),\r\n locationIds: _.map(data.locations, loc => loc.id),\r\n pipeline: this.sessionService.getPipeline().code,\r\n fromGasDay: GasDay.from(data.fromGasDay).toString(),\r\n toGasDay: GasDay.from(data.toGasDay).toString()\r\n };\r\n return this.nominationResource.put('/poolStorageLimit', body, true).pipe(\r\n map(res => this.buildPooling(res)));\r\n }\r\n\r\n getPools(enterpriseId, fromGasDay, toGasDay): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n\r\n params.set('pipeline', this.sessionService.getPipeline().code);\r\n params.set('fromGasDay', fromGasDay.toString());\r\n params.set('toGasDay', toGasDay.toString());\r\n params.set('enterpriseId', enterpriseId.toString());\r\n\r\n return this.nominationResource.get('/poolStorageLimit', true, params).pipe(\r\n map(arr => {\r\n const returnArr = new Array();\r\n arr.forEach(item => {\r\n returnArr.push(this.buildPooling(item));\r\n });\r\n return returnArr;\r\n }));\r\n }\r\n\r\n private buildPooling(item): Pooling {\r\n const pooling = new Pooling();\r\n\r\n pooling.id = item.id;\r\n pooling.enterpriseId = item.enterpriseId;\r\n pooling.poolName = item.poolName;\r\n pooling.poolType = PoolType[item.poolType];\r\n pooling.limit = item.limit;\r\n pooling.locations = item.locations;\r\n pooling.nominationGroups = item.nominationGroups;\r\n pooling.toGasDay = GasDay.parse(item.toGasDay).toDate;\r\n pooling.fromGasDay = GasDay.parse(item.fromGasDay).toDate;\r\n\r\n return pooling;\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n Number of Poolings found: {{data.poolings.length}}\r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n
\r\n {{f.data.poolType ? f.data.poolType.name : ''}}\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\na \r\n \r\n \r\n\r\n\r\n \r\n
\r\n {{accountsAsDisplayString(f.data.nominationGroups)}}\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n {{locationsAsDisplayString(f.data.locations)}}\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n","import {map, concatMap} from 'rxjs/operators';\r\nimport * as _ from 'lodash';\r\nimport * as dx from \"devextreme/core/renderer\";\r\nimport {Component, OnInit, ViewChild} from '@angular/core';\r\nimport {\r\n StorageLimitGridBase\r\n} from \"../storage-limit-grid-base\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {\r\n Pooling,\r\n PoolType,\r\n PoolingService\r\n} from \"@shared/services/nomination/pooling-service/pooling-service.service\";\r\nimport {\r\n YesNoCancelModalService\r\n} from \"@shared/services/webapp/yes-no-cancel-modal/yes-no-cancel-modal.service\";\r\nimport {AlertService} from \"app/shared/services/webapp/alert/alert.service\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {RowCellNavigationService} from \"@shared/services/webapp/row-cell-navigation/row-cell-navigation.service\";\r\nimport {NominationGroup} from \"@shared/services/nomination/nomination-nom-group/nomination-nom-group.service\";\r\nimport {NominationLocationEnrichmentService} from \"@shared/services/nomination/nomination-location-enrichment/nomination-location-enrichment.service\";\r\nimport { NominationNomGroupEnrichmentService } from \"@shared/services/nomination/nomination-nom-group-enrichment/nomination-nom-group-enrichment.service\";\r\nimport {Observable} from \"rxjs\";\r\nimport {YesNoModalOptions} from \"@shared/services/webapp/modal-options/yes-no-modal-options\";\r\nimport {SelectedModalOption} from \"@shared/services/webapp/modal-options/selected-modal-option\";\r\n\r\n@Component({\r\n selector: 'app-pooling-tab',\r\n templateUrl: './pooling-tab.component.html',\r\n styleUrls: ['./pooling-tab.component.css']\r\n})\r\n\r\nexport class PoolingTabComponent extends StorageLimitGridBase implements OnInit {\r\n\r\n protected editTabListWithdrawalFuture = [];\r\n protected editTabListWithdrawalCurrent = [];\r\n protected newTabWithdrawalList = [];\r\n\r\n @ViewChild('dg2') poolingsDataGrid: DxDataGridComponent;\r\n\r\n constructor(protected poolService: PoolingService,\r\n protected appService: AppService,\r\n protected alertService: AlertService,\r\n protected modalService: YesNoCancelModalService,\r\n protected nominationGroupEnrichmentService: NominationNomGroupEnrichmentService,\r\n protected locationEnrichmentService: NominationLocationEnrichmentService,\r\n protected rowCellNavigationService: RowCellNavigationService) {\r\n super(alertService, rowCellNavigationService);\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n this.data.poolTypes = PoolType.PoolTypes;\r\n\r\n this.newTabList = ['Pool', 'Pool Type', 'Start Gas Day', 'Expiry Gas Day', 'Pool Amount (GJ)', 'Pool Accounts'];\r\n this.editTabListCurrent = ['Expiry Gas Day'];\r\n this.editTabListFuture = ['Start Gas Day', 'Expiry Gas Day', 'Pool Amount (GJ)', 'Pool Accounts'];\r\n\r\n this.editTabListWithdrawalFuture = ['Start Gas Day', 'Expiry Gas Day', 'Pool Amount (GJ)', 'Pool Accounts', 'Pooled Market Locations'];\r\n this.editTabListWithdrawalCurrent = ['Expiry Gas Day'];\r\n this.newTabWithdrawalList = ['Pool', 'Pool Type', 'Start Gas Day', 'Expiry Gas Day', 'Pool Amount (GJ)', 'Pool Accounts', 'Pooled Market Locations'];\r\n }\r\n\r\n poolLocationsNeeded() {\r\n return true;\r\n }\r\n\r\n protected disableTopButtons() {\r\n super.disableTopButtons(this.poolingsDataGrid);\r\n }\r\n\r\n editRowClicked(cellInfo: any) {\r\n super.editRowClicked(cellInfo, this.poolingsDataGrid);\r\n }\r\n\r\n protected enableTopButtons() {\r\n super.enableTopButtons(this.poolingsDataGrid);\r\n }\r\n\r\n cancelClicked(data) {\r\n super.cancelClicked(data, this.poolingsDataGrid);\r\n this.newRow = null;\r\n }\r\n\r\n protected finishEdit(obj: any) {\r\n super.finishEdit(obj, this.poolingsDataGrid);\r\n }\r\n\r\n protected addRow () {\r\n super.addRow(this.poolingsDataGrid);\r\n }\r\n\r\n saveClicked(cellInfo: any): void {\r\n this.alertService.clearMessages();\r\n super.saveClicked(cellInfo);\r\n this.newRow = null;\r\n }\r\n\r\n onRowInserting (e: any) {\r\n const pooling = e.data;\r\n e.cancel = this.createPooling(pooling);\r\n return;\r\n }\r\n\r\n onRowPrepared(e) {\r\n super.onRowPrepared(e);\r\n }\r\n\r\n onRowUpdating(e: any) {\r\n if (e.newData) {\r\n const pooling = this.extractObject(e);\r\n e.cancel = this.updatePooling(pooling);\r\n return;\r\n }\r\n }\r\n\r\n private performUpdate(pooling: Pooling): Observable {\r\n return this.poolService.updatePooling(pooling).pipe(\r\n concatMap(response => {\r\n return this.nominationGroupEnrichmentService.enrichArray(response.nominationGroups, 'id').pipe(\r\n concatMap(() => {\r\n return this.locationEnrichmentService.enrichArray(response.locations, 'id');\r\n }),\r\n map(() => response));\r\n }));\r\n }\r\n\r\n private updatePooling(pooling: Pooling) {\r\n const deferredCancel = new Promise((resolve, reject) => {\r\n this.appService.clearMessages();\r\n\r\n this.performUpdate(pooling).subscribe(\r\n result => {\r\n this.alertService.addSuccessMessage(\"Save Success\", 'Updated pooling');\r\n\r\n // trying to avoid reloading the storage limits from the api when we already have all the information we need\r\n // we can't leave the row that the UI added bacause it has no id and would therefore not be deleteable\r\n // its possible the we should be using devextreme datasource thought\r\n this.data.poolings = _.filter(this.data.poolings, record => record.id !== pooling.id);\r\n this.data.poolings.push(pooling);\r\n\r\n (pooling).isEditing = false;\r\n this.finishEdit(result);\r\n\r\n resolve();\r\n },\r\n () => {\r\n reject();\r\n }\r\n );\r\n });\r\n return deferredCancel;\r\n }\r\n\r\n private performCreate(pooling: Pooling): Observable {\r\n return this.poolService.createPooling(pooling).pipe(\r\n concatMap(response => {\r\n return this.nominationGroupEnrichmentService.enrichArray(response.nominationGroups, 'id').pipe(\r\n concatMap(() => {\r\n return this.locationEnrichmentService.enrichArray(response.locations, 'id');\r\n }),\r\n map(() => response));\r\n }));\r\n }\r\n\r\n private createPooling(pooling: Pooling) {\r\n const deferredCancel = new Promise((resolve, reject) => {\r\n this.appService.clearMessages();\r\n\r\n this.performCreate(pooling).subscribe(\r\n result => {\r\n this.alertService.addSuccessMessage(\"Save Success\", 'Created pooling');\r\n\r\n // trying to avoid reloading the storage limits from the api when we already have all the information we need\r\n // we can't leave the row that the UI added bacause it has no id and would therefore not be deleteable\r\n // its possible the we should be using devextreme datasource thought\r\n const poolTypeString = result.poolType.name;\r\n result.poolType = _.find(PoolType.PoolTypes, x => x.name === poolTypeString);\r\n this.data.poolings = _.filter(this.data.poolings, record => !_.isNil(record.id));\r\n this.data.poolings.push(result);\r\n\r\n (pooling).isEditing = false;\r\n this.finishEdit(result);\r\n\r\n resolve();\r\n },\r\n () => {\r\n reject();\r\n }\r\n );\r\n });\r\n return deferredCancel;\r\n }\r\n\r\n onRowValidating(e) {\r\n const newPooling = this.extractObject(e);\r\n\r\n const otherPoolingsWithSameAccount = _.filter(this.data.poolings, pooling => pooling.id !== newPooling.id\r\n && this.findOne(pooling.nominationGroups, newPooling.nominationGroups));\r\n const firstOverlappingPooling = _.find(otherPoolingsWithSameAccount, pooling =>\r\n // NOT both before or both after\r\n ! ((pooling.fromGasDay < newPooling.fromGasDay && pooling.toGasDay < newPooling.fromGasDay) || (pooling.fromGasDay > newPooling.toGasDay && pooling.toGasDay > newPooling.toGasDay)));\r\n if (!_.isNil(firstOverlappingPooling)) {\r\n this.alertService.clearMessages();\r\n this.alertService.addErrorMessage('Validation Error', 'Cannot add account pooling as one already exist for the selected date range.');\r\n e.isValid = false;\r\n } else {\r\n this.alertService.clearMessages();\r\n }\r\n }\r\n\r\n findOne(haystack: NominationGroup[], arr: NominationGroup[]) {\r\n if (!arr) {\r\n return false;\r\n }\r\n\r\n return arr.some(function (v) {\r\n return _.findIndex(haystack, x => x.id === v.id) >= 0;\r\n });\r\n }\r\n\r\n protected isCellEditable (row: any, dataField: string): boolean {\r\n // new row\r\n if (row.id == null) {\r\n // handle locations editor for injection vs withdrawal\r\n if (dataField === 'locations' && this.locationsNeeded(row.poolType)) {\r\n return true;\r\n } else if (dataField === 'locations') {\r\n return false;\r\n }\r\n\r\n if (dataField === 'nominationGroups' && row.poolType != null) {\r\n return true;\r\n } else if (dataField === 'nominationGroups' && row.poolType == null) {\r\n return false;\r\n }\r\n\r\n return true;\r\n } else {// edit row\r\n if (dataField === 'locations' && this.locationsNeeded(row.poolType)) {\r\n return true;\r\n } else if (dataField === 'locations') {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n }\r\n\r\n locationsNeeded(poolType): boolean {\r\n if (!poolType) {\r\n return false;\r\n }\r\n\r\n // why does this come in as a string on a new row? I don't know...\r\n if (!poolType.id) {\r\n return poolType === PoolType.Withdrawal.id;\r\n }\r\n\r\n return poolType.id === PoolType.Withdrawal.id;\r\n }\r\n\r\n validLocations(data): boolean {\r\n if (this.locationsNeeded(data.poolType)) {\r\n return super.validLocations(data.locations);\r\n }\r\n return true;\r\n }\r\n\r\n onInitNewRow(e) {\r\n super.onInitNewRow(e);\r\n e.data.enterpriseId = this.data.searchParams.enterpriseId;\r\n this.newRow = e;\r\n }\r\n\r\n validPoolingAccounts(poolingAccounts): boolean {\r\n if (poolingAccounts && poolingAccounts.length > 0) {\r\n this.data.editedRowIsValid = false;\r\n return true;\r\n }\r\n this.data.editedRowIsValid = true;\r\n return false;\r\n }\r\n\r\n onEditorPrepared = (e: any) => {\r\n super.baseOnEditorPrepared(e, this);\r\n let dxEditorInstance = null;\r\n switch (e.dataField) {\r\n case 'poolName':\r\n dxEditorInstance = dx(e.editorElement).dxTextBox('instance');\r\n break;\r\n case 'limit':\r\n dxEditorInstance = dx(e.editorElement).dxNumberBox('instance');\r\n break;\r\n case 'toGasDay':\r\n case 'fromGasDay':\r\n dxEditorInstance = dx(e.editorElement).dxDateBox('instance');\r\n break;\r\n }\r\n if (dxEditorInstance) {\r\n dxEditorInstance.option('valueChangeEvent', 'keydown keyup');\r\n dxEditorInstance.on('valueChanged', (vce) => {\r\n e.setValue(vce.value);\r\n this.data.editedRowIsValid = !e.component.getController('validating').validate();\r\n });\r\n }\r\n\r\n if (e.dataField === \"poolType\") {\r\n\r\n dxEditorInstance = dx(e.editorElement).dxSelectBox('instance');\r\n dxEditorInstance.on('valueChanged', (event) => {\r\n this.data.editedRowIsValid = !e.component.getController('validating').validate();\r\n if (event.previousValue !== undefined) {\r\n\r\n if (this.suspendValueChanged) {\r\n this.suspendValueChanged = false;\r\n return;\r\n }\r\n\r\n const confirmResultYes = () => {\r\n this.newRow.data.nominationGroups = [];\r\n this.newRow.data.locations = [];\r\n };\r\n\r\n const confirmResultNo = () => {\r\n this.suspendValueChanged = true;\r\n event.component.option('value', event.previousValue);\r\n };\r\n\r\n if ((this.newRow.data.locations && this.newRow.data.locations.length > 0) || (this.newRow.data.nominationGroups && this.newRow.data.nominationGroups.length > 0)) {\r\n const yesNoModalOptions = new YesNoModalOptions('Pool Type Change', 'Changing pool type will reset accounts and locations. Continue?.', 'No', 'Yes');\r\n this.modalService.show(yesNoModalOptions).subscribe((selectedModalOption: SelectedModalOption) => {\r\n if (selectedModalOption === SelectedModalOption.Yes) {\r\n confirmResultYes();\r\n }\r\n\r\n if (selectedModalOption === SelectedModalOption.No) {\r\n confirmResultNo();\r\n }\r\n });\r\n } else {\r\n this.newRow.data.poolAccounts = [];\r\n this.newRow.data.locations = [];\r\n }\r\n }\r\n });\r\n }\r\n };\r\n\r\n onEditorPreparing(e: any) {\r\n super.onEditorPreparing(e);\r\n }\r\n\r\n onCellClick(e) {\r\n // this is for generic dx controls in a grid\r\n super.onCellClick(e, this.poolingsDataGrid);\r\n\r\n if (e.row) {\r\n this.setGridEditBox(e, e.row.data.locations, 'locations');\r\n this.setGridEditBox(e, e.row.data.nominationGroups, 'nominationGroups');\r\n }\r\n }\r\n\r\n private setGridEditBox(e, field, column) {\r\n if (e.column.dataField === column) {\r\n if (!field) {\r\n (this.poolingsDataGrid.instance as any)._$element.attr('cellinerror', 'TRUE');\r\n } else {\r\n (this.poolingsDataGrid.instance as any)._$element.attr('cellinerror', 'FALSE');\r\n }\r\n }\r\n }\r\n\r\n deleteRowClicked(cellInfo) {\r\n this.alertService.clearMessages();\r\n const pooling = cellInfo.data;\r\n const confirmResultTrue = () => {\r\n this.poolService.deletePooling(pooling.id).subscribe(\r\n () => {\r\n this.alertService.addSuccessMessage(\"Delete Success\", 'Pooling deleted');\r\n _.remove(this.data.poolings, pooling);\r\n });\r\n };\r\n const yesNoModalOptions = new YesNoModalOptions('Delete Pooling', 'You are about to delete pooling, are you sure you want to continue?', 'Cancel', 'OK');\r\n this.modalService.show(yesNoModalOptions).subscribe((selectedModalOption: SelectedModalOption) => {\r\n if (selectedModalOption === SelectedModalOption.Yes) {\r\n confirmResultTrue();\r\n }\r\n });\r\n }\r\n\r\n\r\n // todo this needs to be customized for the grid\r\n protected keyDownColumns(columns: any[], inserted: boolean, index: number, isFutureDated: boolean): boolean {\r\n if (inserted) {\r\n return true;\r\n } else { // If Editing\r\n // If in the future, enable more columns\r\n if (isFutureDated) {\r\n switch (columns[index].dataField) {\r\n case 'fromGasDay':\r\n case 'toGasDay':\r\n case 'limit':\r\n case 'locations':\r\n case 'nominationGroups':\r\n return true;\r\n }\r\n } else {\r\n switch (columns[index].dataField) {\r\n case 'toGasDay':\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n protected focusNextTab = (e, event, cellIndex, isFutureDated: boolean, previous: boolean) => {\r\n\r\n if (e.data.poolType === PoolType.Withdrawal) {\r\n if (!e.inserted) {\r\n if (isFutureDated) {\r\n this.rowCellNavigationService.navigateToNextTab(e, event, cellIndex, this.editTabListWithdrawalFuture, previous);\r\n } else {\r\n this.rowCellNavigationService.navigateToNextTab(e, event, cellIndex, this.editTabListCurrent, previous);\r\n }\r\n }\r\n if (e.inserted) {\r\n this.rowCellNavigationService.navigateToNextTab(e, event, cellIndex, this.newTabWithdrawalList, previous);\r\n }\r\n } else if (e.data.poolType === PoolType.Injection) {\r\n if (isFutureDated) {\r\n this.rowCellNavigationService.navigateToNextTab(e, event, cellIndex, this.editTabListFuture, previous);\r\n } else {\r\n this.rowCellNavigationService.navigateToNextTab(e, event, cellIndex, this.editTabListCurrent, previous);\r\n }\r\n if (e.inserted) {\r\n this.rowCellNavigationService.navigateToNextTab(e, event, cellIndex, this.newTabList, previous);\r\n }\r\n }\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n Number of Withdrawals found: {{data.withdrawals.length}}\r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n","import * as dx from \"devextreme/core/renderer\";\r\nimport * as _ from 'lodash';\r\nimport {Component, OnInit, ViewChild} from '@angular/core';\r\nimport {StorageLimitGridBase} from \"../storage-limit-grid-base\";\r\nimport {\r\n YesNoCancelModalService\r\n} from \"@shared/services/webapp/yes-no-cancel-modal/yes-no-cancel-modal.service\";\r\nimport {AlertService} from \"app/shared/services/webapp/alert/alert.service\";\r\nimport {RowCellNavigationService} from \"@shared/services/webapp/row-cell-navigation/row-cell-navigation.service\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {\r\n AccountWithdrawalLimitService,\r\n WithdrawalLimit\r\n} from \"@shared/services/nomination/withdrawal-service/withdrawal-service.service\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {NominationLocationEnrichmentService} from \"@shared/services/nomination/nomination-location-enrichment/nomination-location-enrichment.service\";\r\nimport {YesNoModalOptions} from \"@shared/services/webapp/modal-options/yes-no-modal-options\";\r\nimport {SelectedModalOption} from \"@shared/services/webapp/modal-options/selected-modal-option\";\r\n\r\n\r\n@Component({\r\n selector: 'app-withdrawal-tab',\r\n templateUrl: './withdrawal-tab.component.html',\r\n styleUrls: ['./withdrawal-tab.component.css']\r\n})\r\nexport class WithdrawalTabComponent extends StorageLimitGridBase implements OnInit {\r\n\r\n @ViewChild('dg3') withdrawalsDataGrid: DxDataGridComponent;\r\n\r\n constructor(protected alertService: AlertService,\r\n protected modalService: YesNoCancelModalService,\r\n protected rowCellNavigationService: RowCellNavigationService,\r\n protected appService: AppService,\r\n protected withdrawalService: AccountWithdrawalLimitService,\r\n protected locationEnrichmentService: NominationLocationEnrichmentService) {\r\n super(alertService, rowCellNavigationService);\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n\r\n this.newTabList = ['Account', 'Start Gas Day', 'Expiry Gas Day', 'Withdrawal Amount (GJ)', 'Receipt Location', 'Delivery Location'];\r\n this.editTabListCurrent = ['Expiry Gas Day'];\r\n this.editTabListFuture = ['Start Gas Day', 'Expiry Gas Day', 'Withdrawal Amount (GJ)', 'Receipt Location', 'Delivery Location'];\r\n }\r\n\r\n protected disableTopButtons() {\r\n super.disableTopButtons(this.withdrawalsDataGrid);\r\n }\r\n\r\n editRowClicked(cellInfo: any) {\r\n super.editRowClicked(cellInfo, this.withdrawalsDataGrid);\r\n }\r\n\r\n protected enableTopButtons() {\r\n super.enableTopButtons(this.withdrawalsDataGrid);\r\n }\r\n\r\n cancelClicked(data) {\r\n super.cancelClicked(data, this.withdrawalsDataGrid);\r\n this.newRow = null;\r\n }\r\n\r\n protected finishEdit(obj: any) {\r\n super.finishEdit(obj, this.withdrawalsDataGrid);\r\n }\r\n\r\n protected addRow () {\r\n super.addRow(this.withdrawalsDataGrid);\r\n }\r\n\r\n saveClicked(cellInfo: any): void {\r\n this.alertService.clearMessages();\r\n super.saveClicked(cellInfo);\r\n this.newRow = null;\r\n }\r\n\r\n onRowInserting (e: any) {\r\n const withdrawal = e.data;\r\n e.cancel = this.createWithdrawal(withdrawal);\r\n return;\r\n }\r\n\r\n onRowPrepared(e) {\r\n super.onRowPrepared(e);\r\n }\r\n\r\n onRowUpdating(e: any) {\r\n if (e.newData) {\r\n const withdrawal = this.extractObject(e);\r\n e.cancel = this.updateWithdrawal(withdrawal);\r\n return;\r\n }\r\n }\r\n\r\n private updateWithdrawal(withdrawal: WithdrawalLimit) {\r\n const deferredCancel = new Promise((resolve, reject) => {\r\n this.appService.clearMessages();\r\n\r\n this.withdrawalService.updateWithdrawal(withdrawal).subscribe(\r\n result => {\r\n this.alertService.addSuccessMessage(\"Save Success\", 'Updated withdrawal');\r\n\r\n // trying to avoid reloading the storage limits from the api when we already have all the information we need\r\n // we can't leave the row that the UI added because it has no id and would therefore not be deletable\r\n // its possible the we should be using devextreme datasource thought\r\n this.data.withdrawals = _.filter(this.data.withdrawals, record => record.id !== withdrawal.id);\r\n this.data.withdrawals.push(withdrawal);\r\n\r\n (withdrawal).isEditing = false;\r\n this.finishEdit(result);\r\n\r\n resolve();\r\n },\r\n () => {\r\n reject();\r\n }\r\n );\r\n });\r\n return deferredCancel;\r\n }\r\n\r\n private createWithdrawal(withdrawal: WithdrawalLimit) {\r\n const deferredCancel = new Promise((resolve, reject) => {\r\n this.appService.clearMessages();\r\n\r\n this.withdrawalService.createWithdrawal(withdrawal).subscribe(\r\n result => {\r\n this.alertService.addSuccessMessage(\"Save Success\", 'Created withdrawal');\r\n\r\n // trying to avoid reloading the storage limits from the api when we already have all the information we need\r\n // we can't leave the row that the UI added because it has no id and would therefore not be deletable\r\n // its possible the we should be using devextreme datasource thought\r\n this.data.withdrawals = _.filter(this.data.withdrawals, record => !_.isNil(record.id));\r\n this.data.withdrawals.push(result);\r\n\r\n (withdrawal).isEditing = false;\r\n this.finishEdit(result);\r\n\r\n resolve();\r\n },\r\n () => {\r\n reject();\r\n }\r\n );\r\n });\r\n return deferredCancel;\r\n }\r\n\r\n onRowValidating(e) {\r\n const newWithdrawal = this.extractObject(e);\r\n const otherWithdrawasWithSameAccountAndLocations = _.filter(this.data.withdrawals, withdrawal => withdrawal.id !== newWithdrawal.id\r\n && withdrawal.nominationGroupId === newWithdrawal.nominationGroupId\r\n && withdrawal.deliveryLocation.id === newWithdrawal.deliveryLocation.id\r\n && withdrawal.receiptLocation.id === newWithdrawal.receiptLocation.id);\r\n const firstOverlappingPooling = _.find(otherWithdrawasWithSameAccountAndLocations, withdrawal =>\r\n // NOT both before or both after\r\n ! ((withdrawal.fromGasDay < newWithdrawal.fromGasDay && withdrawal.toGasDay < newWithdrawal.fromGasDay) || (withdrawal.fromGasDay > newWithdrawal.toGasDay && withdrawal.toGasDay > newWithdrawal.toGasDay)));\r\n if (!_.isNil(firstOverlappingPooling)) {\r\n this.alertService.clearMessages();\r\n this.alertService.addErrorMessage('Validation Error', 'Cannot add withdrawal as one already exist for the selected date range.');\r\n e.isValid = false;\r\n } else {\r\n this.alertService.clearMessages();\r\n }\r\n }\r\n protected isCellEditable (row: any, dataField: string): boolean {\r\n // new row\r\n if (row.id == null) {\r\n // handle locations editor for injection vs withdrawal\r\n return true;\r\n }\r\n }\r\n\r\n onInitNewRow(e) {\r\n super.onInitNewRow(e);\r\n this.newRow = e;\r\n }\r\n\r\n onEditorPrepared = (e: any) => {\r\n super.baseOnEditorPrepared(e, this);\r\n let dxEditorInstance = null;\r\n switch (e.dataField) {\r\n case 'nominationGroupId':\r\n case 'receiptLocation.id':\r\n case 'deliveryLocation.id':\r\n dxEditorInstance = dx(e.editorElement).dxSelectBox('instance');\r\n break;\r\n case 'limit':\r\n dxEditorInstance = dx(e.editorElement).dxNumberBox('instance');\r\n break;\r\n case 'toGasDay':\r\n case 'fromGasDay':\r\n dxEditorInstance = dx(e.editorElement).dxDateBox('instance');\r\n break;\r\n }\r\n if (dxEditorInstance) {\r\n dxEditorInstance.option('valueChangeEvent', 'keydown keyup');\r\n dxEditorInstance.on('valueChanged', (vce) => {\r\n e.setValue(vce.value);\r\n this.data.editedRowIsValid = !e.component.getController('validating').validate();\r\n });\r\n }\r\n };\r\n\r\n onEditorPreparing(e: any) {\r\n super.onEditorPreparing(e);\r\n }\r\n\r\n onCellClick(e) {\r\n // this is for generic dx controls in a grid\r\n super.onCellClick(e, this.withdrawalsDataGrid);\r\n }\r\n\r\n private setGridEditBox(e, field, column) {\r\n if (e.column.dataField === column) {\r\n if (!field) {\r\n (this.withdrawalsDataGrid.instance as any)._$element.attr('cellinerror', 'TRUE');\r\n } else {\r\n (this.withdrawalsDataGrid.instance as any)._$element.attr('cellinerror', 'FALSE');\r\n }\r\n }\r\n }\r\n deleteRowClicked(cellInfo) {\r\n this.alertService.clearMessages();\r\n const withdrawal = cellInfo.data;\r\n const confirmResultTrue = () => {\r\n this.withdrawalService.deleteWithdrawal(withdrawal.id).subscribe(\r\n () => {\r\n this.alertService.addSuccessMessage(\"Delete Success\", 'Withdrawal Limit deleted');\r\n _.remove(this.data.withdrawals, withdrawal);\r\n });\r\n };\r\n const yesNoModalOptions = new YesNoModalOptions('Delete Withdrawal Limit', 'You are about to delete a withdrawal, are you sure you want to continue?', 'Cancel', 'OK');\r\n this.modalService.show(yesNoModalOptions).subscribe((selectedModalOption: SelectedModalOption) => {\r\n if (selectedModalOption === SelectedModalOption.Yes) {\r\n confirmResultTrue();\r\n }\r\n });\r\n}\r\n\r\n\r\n // // todo this needs to be customized for the grid\r\n protected keyDownColumns(columns: any[], inserted: boolean, index: number, isFutureDated: boolean): boolean {\r\n if (inserted) {\r\n return true;\r\n } else { // If Editing\r\n // If in the future, enable more columns\r\n if (isFutureDated) {\r\n switch (columns[index].dataField) {\r\n case 'fromGasDay':\r\n case 'toGasDay':\r\n case 'limit':\r\n case 'receiptLocation.id':\r\n case 'deliveryLocation.id':\r\n case 'nominationGroup':\r\n return true;\r\n }\r\n } else {\r\n switch (columns[index].dataField) {\r\n case 'toGasDay':\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\nimport { Injectable } from '@angular/core';\r\nimport {NominationResourceService} from \"@shared/resources/nominations-resource.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {INominationLocationDto, NominationLocation} from \"../nomination-location/nomination-location.service\";\r\nimport {Observable} from \"rxjs\";\r\nimport {SessionService} from \"../../webapp/session/session.service\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {DateTime} from \"@model/date-time\";\r\nimport {NominationGroup} from \"@shared/services/nomination/nomination-nom-group/nomination-nom-group.service\";\r\nimport {map} from \"rxjs/operators\";\r\n\r\nexport interface IAccountUhfLimit {\r\n id: number;\r\n nominationGroupId: number;\r\n contractReference: string;\r\n deliveryLocation: INominationLocationDto;\r\n deliveryLocationId: number;\r\n\r\n limit: number;\r\n fromGasDay: string;\r\n toGasDay: string;\r\n}\r\n\r\nexport class AccountUhfLimit {\r\n public static Null = new AccountUhfLimit();\r\n\r\n id: number;\r\n nominationGroup: NominationGroup;\r\n nominationGroupId: number;\r\n contractReference: string;\r\n limit: number;\r\n fromGasDay: Date;\r\n toGasDay: Date;\r\n deliveryLocation: NominationLocation;\r\n deliveryLocationId: number;\r\n\r\n\r\n public static create(dto: IAccountUhfLimit): AccountUhfLimit {\r\n if (_.isNil(dto)) {\r\n return AccountUhfLimit.Null;\r\n }\r\n\r\n const accountUhfLimit = new AccountUhfLimit();\r\n accountUhfLimit.id = dto.id;\r\n accountUhfLimit.nominationGroupId = dto.nominationGroupId;\r\n accountUhfLimit.contractReference = dto.contractReference;\r\n accountUhfLimit.limit = dto.limit;\r\n\r\n accountUhfLimit.fromGasDay = !_.isNil(dto.fromGasDay) ? DateTime.parse(dto.fromGasDay).toDate() : null;\r\n accountUhfLimit.toGasDay = !_.isNil(dto.toGasDay) ? DateTime.parse(dto.toGasDay).toDate() : null;\r\n\r\n\r\n accountUhfLimit.deliveryLocationId = dto.deliveryLocationId;\r\n\r\n if (!_.isNil(dto.deliveryLocation)) {\r\n accountUhfLimit.deliveryLocation = NominationLocation.create(dto.deliveryLocation);\r\n }\r\n\r\n return accountUhfLimit;\r\n }\r\n}\r\n\r\n\r\n@Injectable()\r\nexport class AccountUhfLimitService {\r\n\r\n constructor(\r\n private nominationResource: NominationResourceService,\r\n private sessionService: SessionService\r\n ) { }\r\n\r\n\r\n getAccountUhfLimits(enterpriseId: number, fromGasDay: GasDay, toGasDay: GasDay): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('pipeline', this.sessionService.getPipeline().code);\r\n params.set('fromGasDay', fromGasDay.toString());\r\n params.set('toGasDay', toGasDay.toString());\r\n params.set('enterpriseId', enterpriseId.toString());\r\n\r\n return this.nominationResource.get('/accountUhfLimit', true, params)\r\n .pipe(\r\n map(res => {\r\n const returnArr = new Array();\r\n res.forEach(item => {\r\n returnArr.push(this.buildUhfLimit(item));\r\n });\r\n return returnArr;\r\n }));\r\n }\r\n\r\n\r\n deleteLimit(id): Observable {\r\n return this.nominationResource.deleteWithNoResponseBody('/accountUhfLimit/' + id, true);\r\n }\r\n\r\n createLimit(data: AccountUhfLimit): Observable {\r\n const body = {\r\n id: data.id,\r\n limit: data.limit,\r\n contractReference: data.contractReference,\r\n nominationGroupId : data.nominationGroup.id,\r\n pipeline: this.sessionService.getPipeline().code,\r\n fromGasDay: GasDay.from(data.fromGasDay).toString(),\r\n toGasDay: GasDay.from(data.toGasDay).toString(),\r\n deliveryLocationId: data.deliveryLocation.id\r\n };\r\n return this.nominationResource.post('/accountUhfLimit', body, true)\r\n .pipe(\r\n map(res => this.buildUhfLimit(res)));\r\n }\r\n\r\n updateUhfLimit(data: AccountUhfLimit): Observable {\r\n const body = {\r\n id: data.id,\r\n limit: data.limit,\r\n contractReference: data.contractReference,\r\n nominationGroupId : data.nominationGroup.id,\r\n pipeline: this.sessionService.getPipeline().code,\r\n fromGasDay: GasDay.from(data.fromGasDay).toString(),\r\n toGasDay: GasDay.from(data.toGasDay).toString(),\r\n deliveryLocationId: data.deliveryLocation.id\r\n };\r\n return this.nominationResource.put('/accountUhfLimit', body, true)\r\n .pipe(\r\n map(res => this.buildUhfLimit(res)));\r\n }\r\n\r\n\r\n private buildUhfLimit(item): AccountUhfLimit {\r\n const uhfLimit = new AccountUhfLimit();\r\n\r\n uhfLimit.id = item.id;\r\n uhfLimit.limit = item.limit;\r\n uhfLimit.contractReference = item.contractReference;\r\n uhfLimit.deliveryLocation = new NominationLocation();\r\n uhfLimit.deliveryLocation.id = item.deliveryLocationId;\r\n uhfLimit.nominationGroup = new NominationGroup();\r\n uhfLimit.nominationGroup.id = item.nominationGroupId;\r\n uhfLimit.toGasDay = GasDay.parse(item.toGasDay).toDate;\r\n uhfLimit.fromGasDay = GasDay.parse(item.fromGasDay).toDate;\r\n\r\n return uhfLimit;\r\n }\r\n\r\n}\r\n","
\r\n
\r\n
\r\n Number of UHF Limits found: {{data.uhfLimits.length}}\r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n","import * as dx from \"devextreme/core/renderer\";\r\nimport * as _ from 'lodash';\r\nimport {Component, OnInit, ViewChild} from '@angular/core';\r\nimport {StorageLimitGridBase} from \"../storage-limit-grid-base\";\r\nimport {\r\n YesNoCancelModalService\r\n} from \"@shared/services/webapp/yes-no-cancel-modal/yes-no-cancel-modal.service\";\r\nimport {AlertService} from \"app/shared/services/webapp/alert/alert.service\";\r\nimport {RowCellNavigationService} from \"@shared/services/webapp/row-cell-navigation/row-cell-navigation.service\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {NominationLocationEnrichmentService} from \"@shared/services/nomination/nomination-location-enrichment/nomination-location-enrichment.service\";\r\nimport {YesNoModalOptions} from \"@shared/services/webapp/modal-options/yes-no-modal-options\";\r\nimport {SelectedModalOption} from \"@shared/services/webapp/modal-options/selected-modal-option\";\r\nimport {AccountUhfLimit, AccountUhfLimitService} from \"@shared/services/nomination/account-uhf-limit/account-uhf-limit.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\n\r\n@Component({\r\n selector: 'app-uhf-tab',\r\n templateUrl: './uhf-tab.component.html',\r\n styleUrls: ['./uhf-tab.component.css']\r\n})\r\nexport class UhfTabComponent extends StorageLimitGridBase implements OnInit {\r\n\r\n @ViewChild('dg4') uhfLimitsDataGrid: DxDataGridComponent;\r\n\r\n constructor(protected alertService: AlertService,\r\n protected modalService: YesNoCancelModalService,\r\n protected rowCellNavigationService: RowCellNavigationService,\r\n protected appService: AppService,\r\n protected accountUhfLimitService: AccountUhfLimitService,\r\n protected locationEnrichmentService: NominationLocationEnrichmentService) {\r\n super(alertService, rowCellNavigationService);\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n this.newTabList = ['Account', 'Contract Reference', 'Start Gas Day', 'Expiry Gas Day', 'UHF Limit (GJ)', 'Delivery Location'];\r\n this.editTabListCurrent = ['Expiry Gas Day'];\r\n this.editTabListFuture = ['Account', 'Contract Reference', 'Start Gas Day', 'Expiry Gas Day', 'UHF Limit (GJ)', 'Delivery Location'];\r\n }\r\n\r\n protected disableTopButtons() {\r\n super.disableTopButtons(this.uhfLimitsDataGrid);\r\n }\r\n\r\n editRowClicked(cellInfo: any) {\r\n super.editRowClicked(cellInfo, this.uhfLimitsDataGrid);\r\n }\r\n\r\n protected enableTopButtons() {\r\n super.enableTopButtons(this.uhfLimitsDataGrid);\r\n }\r\n\r\n cancelClicked(data) {\r\n super.cancelClicked(data, this.uhfLimitsDataGrid);\r\n this.newRow = null;\r\n }\r\n\r\n protected finishEdit(obj: any) {\r\n super.finishEdit(obj, this.uhfLimitsDataGrid);\r\n }\r\n\r\n protected addRow () {\r\n super.addRow(this.uhfLimitsDataGrid);\r\n }\r\n\r\n saveClicked(cellInfo: any): void {\r\n this.alertService.clearMessages();\r\n super.saveClicked(cellInfo);\r\n this.newRow = null;\r\n }\r\n\r\n onRowInserting (e: any) {\r\n const limit = e.data;\r\n e.cancel = this.createUhfLimit(limit);\r\n return;\r\n }\r\n\r\n onRowPrepared(e) {\r\n super.onRowPrepared(e);\r\n }\r\n\r\n onRowUpdating(e: any) {\r\n if (e.newData) {\r\n const limit = this.extractObject(e);\r\n e.cancel = this.updateUhfLimit(limit);\r\n return;\r\n }\r\n }\r\n\r\n private updateUhfLimit(limit: AccountUhfLimit) {\r\n const deferredCancel = new Promise((resolve, reject) => {\r\n this.appService.clearMessages();\r\n\r\n this.accountUhfLimitService.updateUhfLimit(limit).subscribe(\r\n result => {\r\n this.alertService.addSuccessMessage(\"Save Success\", 'Updated UHF limit');\r\n\r\n // trying to avoid reloading the storage limits from the api when we already have all the information we need\r\n // we can't leave the row that the UI added because it has no id and would therefore not be deletable\r\n // its possible the we should be using devextreme datasource thought\r\n this.data.uhfLimits = _.filter(this.data.uhfLimits, record => record.id !== limit.id);\r\n this.data.uhfLimits.push(limit);\r\n\r\n (limit).isEditing = false;\r\n this.finishEdit(result);\r\n\r\n resolve();\r\n },\r\n () => {\r\n reject();\r\n }\r\n );\r\n });\r\n return deferredCancel;\r\n }\r\n\r\n private createUhfLimit(limit: AccountUhfLimit) {\r\n const deferredCancel = new Promise((resolve, reject) => {\r\n this.appService.clearMessages();\r\n\r\n this.accountUhfLimitService.createLimit(limit).subscribe(\r\n result => {\r\n this.alertService.addSuccessMessage(\"Save Success\", 'Created UHF limit');\r\n\r\n // trying to avoid reloading the storage limits from the api when we already have all the information we need\r\n // we can't leave the row that the UI added because it has no id and would therefore not be deletable\r\n // its possible the we should be using devextreme datasource thought\r\n this.data.uhfLimits = _.filter(this.data.uhfLimits, record => !_.isNil(record.id));\r\n this.data.uhfLimits.push(result);\r\n\r\n (limit).isEditing = false;\r\n this.finishEdit(result);\r\n\r\n resolve();\r\n },\r\n () => {\r\n reject();\r\n }\r\n );\r\n });\r\n return deferredCancel;\r\n }\r\n\r\n onRowValidating(e) {\r\n const newLimit = this.extractObject(e);\r\n\r\n if (_.isNil(newLimit.fromGasDay) || _.isNil(newLimit.toGasDay) || _.isNil(newLimit.deliveryLocation) || _.isNil(newLimit.nominationGroup) || _.isNil(newLimit.contractReference)) {\r\n this.alertService.clearMessages();\r\n return;\r\n }\r\n\r\n const existingLimitWithSameKey = _.filter(this.data.uhfLimits, limit => limit.id !== newLimit.id\r\n && (limit.nominationGroup.id === newLimit.nominationGroup.id)\r\n && (limit.deliveryLocation.id === newLimit.deliveryLocation.id)\r\n && (limit.contractReference === newLimit.contractReference)\r\n && (limit.fromGasDay.valueOf() === GasDay.from(newLimit.fromGasDay).toDate.valueOf())\r\n && (limit.toGasDay.valueOf() === GasDay.from(newLimit.toGasDay).toDate.valueOf()));\r\n\r\n if (_.some(existingLimitWithSameKey)) {\r\n this.alertService.clearMessages();\r\n this.alertService.addErrorMessage('Validation Error', 'Cannot add UHF limit as one already exists with the same account, contract reference, delivery location and date.');\r\n e.isValid = false;\r\n } else {\r\n this.alertService.clearMessages();\r\n }\r\n }\r\n\r\n protected isCellEditable (row: any, dataField: string): boolean {\r\n if (row.id == null) {\r\n return true;\r\n }\r\n }\r\n\r\n onInitNewRow(e) {\r\n super.onInitNewRow(e);\r\n this.newRow = e;\r\n }\r\n\r\n onEditorPrepared = (e: any) => {\r\n super.baseOnEditorPrepared(e, this);\r\n let dxEditorInstance = null;\r\n switch (e.dataField) {\r\n case 'nominationGroupId':\r\n case 'deliveryLocation.id':\r\n dxEditorInstance = dx(e.editorElement).dxSelectBox('instance');\r\n break;\r\n case 'contractReference':\r\n dxEditorInstance = dx(e.editorElement).dxTextBox('instance');\r\n break;\r\n case 'limit':\r\n dxEditorInstance = dx(e.editorElement).dxNumberBox('instance');\r\n break;\r\n case 'toGasDay':\r\n case 'fromGasDay':\r\n dxEditorInstance = dx(e.editorElement).dxDateBox('instance');\r\n break;\r\n }\r\n if (dxEditorInstance) {\r\n dxEditorInstance.option('valueChangeEvent', 'keydown keyup');\r\n dxEditorInstance.on('valueChanged', (vce) => {\r\n e.setValue(vce.value);\r\n this.data.editedRowIsValid = !e.component.getController('validating').validate();\r\n });\r\n }\r\n };\r\n\r\n onEditorPreparing(e: any) {\r\n super.onEditorPreparing(e);\r\n }\r\n\r\n onCellClick(e) {\r\n // this is for generic dx controls in a grid\r\n super.onCellClick(e, this.uhfLimitsDataGrid);\r\n }\r\n\r\n private setGridEditBox(e, field, column) {\r\n if (e.column.dataField === column) {\r\n if (!field) {\r\n (this.uhfLimitsDataGrid.instance as any)._$element.attr('cellinerror', 'TRUE');\r\n } else {\r\n (this.uhfLimitsDataGrid.instance as any)._$element.attr('cellinerror', 'FALSE');\r\n }\r\n }\r\n }\r\n\r\n deleteRowClicked(cellInfo) {\r\n this.alertService.clearMessages();\r\n const limit = cellInfo.data;\r\n const confirmResultTrue = () => {\r\n this.accountUhfLimitService.deleteLimit(limit.id).subscribe(\r\n () => {\r\n this.alertService.addSuccessMessage(\"Delete Success\", 'UHF Limit deleted');\r\n _.remove(this.data.uhfLimits, limit);\r\n });\r\n };\r\n const yesNoModalOptions = new YesNoModalOptions('Delete UHF Limit', 'You are about to delete an UHF Limit, are you sure you want to continue?', 'Cancel', 'OK');\r\n this.modalService.show(yesNoModalOptions).subscribe((selectedModalOption: SelectedModalOption) => {\r\n if (selectedModalOption === SelectedModalOption.Yes) {\r\n confirmResultTrue();\r\n }\r\n });\r\n }\r\n\r\n protected keyDownColumns(columns: any[], inserted: boolean, index: number, isFutureDated: boolean): boolean {\r\n if (inserted) {\r\n return true;\r\n } else { // If Editing\r\n // If in the future, enable more columns\r\n if (isFutureDated) {\r\n switch (columns[index].dataField) {\r\n case 'fromGasDay':\r\n case 'toGasDay':\r\n case 'limit':\r\n case 'contractReference':\r\n case 'deliveryLocation.id':\r\n return true;\r\n }\r\n } else {\r\n switch (columns[index].dataField) {\r\n case 'toGasDay':\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n Validation Error\r\n From Gas Day cannot be later than To Gas Day.\r\n
\r\n\r\n
\r\n -\r\n +\r\n Filters\r\n\r\n \r\n :\r\n Customer: {{model.lastSearchParams?.enterpriseId | displayName: 'id' : 'shortName' : model.customers}}\r\n Start Gas Day: {{model.lastSearchParams?.fromGasDay | gasDayFormat}}\r\n End Gas Day: {{model.lastSearchParams?.toGasDay | gasDayFormat}}\r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
{{model.lastSearchParams?.fromGasDay | gasDayFormat}}
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
{{model.lastSearchParams?.toGasDay | gasDayFormat}}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
{{model.lastSearchParams?.enterpriseId | displayName: 'id' : 'displayValue' : model.customers}}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n","import * as _ from 'lodash';\r\nimport {Component, OnDestroy, OnInit, ViewChild} from '@angular/core';\r\nimport {BaseComponent} from \"@model/base-component\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {ActivatedRoute, Router, Params} from \"@angular/router\";\r\nimport {forkJoin, Observable, of, Subscription} from \"rxjs\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {\r\n EnterpriseSearchParams,\r\n NominationEnterprise, NominationEnterpriseService\r\n} from \"@shared/services/nomination/nomination-enterprise/nomination-enterprise.service\";\r\nimport {\r\n LocationSearchParams,\r\n NominationLocation,\r\n NominationLocationService\r\n} from \"@shared/services/nomination/nomination-location/nomination-location.service\";\r\nimport {DxTabPanelComponent} from \"devextreme-angular\";\r\nimport {InjectionsTabComponent} from \"./injections-tab/injections-tab.component\";\r\nimport {\r\n NominationGroup,\r\n NominationNomGroupService\r\n} from \"@shared/services/nomination/nomination-nom-group/nomination-nom-group.service\";\r\nimport {\r\n AccountInjectionLimitService,\r\n StorageLimit\r\n} from \"@shared/services/nomination/account-injection-limit/account-injection-limit.service\";\r\nimport {StorageLimitMaintenanceModel, StorageLimitMaintenanceSearchParams} from \"./storage-limit-maintenance-model\";\r\nimport {NominationSystemService} from \"@shared/services/nomination/nomination-system/nomination-system.service\";\r\nimport {PoolingTabComponent} from \"./pooling-tab/pooling-tab.component\";\r\nimport {YesAndNo} from \"@model/yes-no\";\r\nimport {Pooling, PoolingService} from \"@shared/services/nomination/pooling-service/pooling-service.service\";\r\nimport {WithdrawalTabComponent} from \"./withdrawal-tab/withdrawal-tab.component\";\r\nimport {\r\n AccountWithdrawalLimitService, WithdrawalLimit\r\n} from \"@shared/services/nomination/withdrawal-service/withdrawal-service.service\";\r\nimport {GuardAgainstUnsavedChanges} from \"@shared/services/webapp/unsaved-changes/unsaved-changes.service\";\r\nimport {YesNoCancelModalService} from \"@shared/services/webapp/yes-no-cancel-modal/yes-no-cancel-modal.service\";\r\nimport { NominationNomGroupEnrichmentService } from \"@shared/services/nomination/nomination-nom-group-enrichment/nomination-nom-group-enrichment.service\";\r\nimport { NominationLocationEnrichmentService } from \"@shared/services/nomination/nomination-location-enrichment/nomination-location-enrichment.service\";\r\nimport {ModalOptions} from \"@shared/services/webapp/modal-options/modal-options\";\r\nimport {AccountUhfLimit, AccountUhfLimitService} from \"@shared/services/nomination/account-uhf-limit/account-uhf-limit.service\";\r\nimport {UhfTabComponent} from \"app/gcts/nomination/storage-limit-maintenance/uhf-tab/uhf-tab.component\";\r\nimport {UserService} from \"@shared/services/webapp/user/user-service\";\r\nimport {NominationEnterpriseEnrichmentService} from \"@shared/services/nomination/nomination-enterprise-enrichment/nomination-enterprise-enrichment.service\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {concatMap, first} from \"rxjs/operators\";\r\n\r\n@Component({\r\n selector: 'app-storage-limit-maintenance',\r\n templateUrl: './storage-limit-maintenance.component.html',\r\n styleUrls: ['./storage-limit-maintenance.component.css']\r\n})\r\nexport class StorageLimitMaintenanceComponent extends BaseComponent implements OnInit, GuardAgainstUnsavedChanges, OnDestroy {\r\n model: StorageLimitMaintenanceModel = new StorageLimitMaintenanceModel();\r\n tabs = [\r\n {id: 0, title: \"Injections\", template: \"template1\", addFunction: this.addInjection},\r\n {id: 1, title: \"Withdrawals\", template: \"template3\", addFunction: this.addWithdrawal},\r\n {id: 2, title: \"Pooling\", template: \"template2\", addFunction: this.addPooling}\r\n ];\r\n\r\n @ViewChild('tabPanel') tabPanel: DxTabPanelComponent;\r\n @ViewChild(InjectionsTabComponent) injectionLimitsTab: InjectionsTabComponent;\r\n @ViewChild(PoolingTabComponent) poolingTab: PoolingTabComponent;\r\n @ViewChild(WithdrawalTabComponent) withdrawalTab: WithdrawalTabComponent;\r\n @ViewChild(UhfTabComponent) uhfLimitsTab: UhfTabComponent;\r\n\r\n private queryParams$: Subscription;\r\n\r\n constructor(\r\n protected appService: AppService,\r\n private activatedRoute: ActivatedRoute,\r\n private router: Router,\r\n private nominationEnterpriseService: NominationEnterpriseService,\r\n private nominationNomGroupService: NominationNomGroupService,\r\n private nominationLocationService: NominationLocationService,\r\n private accountInjectionLimitService: AccountInjectionLimitService,\r\n private withdrawalLimitService: AccountWithdrawalLimitService,\r\n private accountUhfLimitService: AccountUhfLimitService,\r\n private poolingService: PoolingService,\r\n private nominationSystemService: NominationSystemService,\r\n protected nominationGroupEnrichmentService: NominationNomGroupEnrichmentService,\r\n protected locationEnrichmentService: NominationLocationEnrichmentService,\r\n protected nominationEnterpriseEnrichmentService: NominationEnterpriseEnrichmentService,\r\n protected alertService: AlertService,\r\n protected userService: UserService) {\r\n super(appService);\r\n }\r\n\r\n ngOnInit() {\r\n super.setTitle('Storage Limit');\r\n this.model.isInternalUser = this.userService.user.isInternalUser;\r\n\r\n if (this.model.isInternalUser) {\r\n this.tabs.push({id: 3, title: \"UHF\", template: \"template4\", addFunction: this.addUhf});\r\n }\r\n this.queryParams$ = this.activatedRoute.queryParams.subscribe(params => this.handleActiveRoute(params));\r\n this.appService.hideMenu();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.queryParams$.unsubscribe();\r\n }\r\n\r\n private handleActiveRoute(params: Params): void {\r\n this.model.searchParams.enterpriseId = params['enterpriseId'] == null ? null : +params['enterpriseId'];\r\n this.model.searchParams.toGasDay = _.isNil(params['toGasDay']) ? null : GasDay.parse(params['toGasDay']);\r\n this.model.searchParams.fromGasDay = _.isNil(params['fromGasDay']) ? null : GasDay.parse(params['fromGasDay']);\r\n\r\n this.loadResources(!_.isNil(params['enterpriseId']) && !_.isNil(params['toGasDay']) && !_.isNil(params['fromGasDay']));\r\n }\r\n\r\n private loadResources(performSearch: boolean = false) {\r\n const serviceCalls: Observable[] = [\r\n this.nominationEnterpriseService.queryEnterpriseNames({serviceType: \"STS\"}),\r\n this.nominationLocationService.queryLocationNames(new LocationSearchParams(this.model.searchParams.toGasDay, true)),\r\n this.nominationSystemService.applicationServerTimes()\r\n ];\r\n forkJoin(serviceCalls).subscribe(response => {\r\n this.model.customers = response[0];\r\n this.model.allLocations = _.sortBy(response[1], loc => loc.name);\r\n\r\n this.model.customers = _.orderBy(_.map((this.model.customers), x => _.extend({}, x, {\r\n displayValue: `${x.shortName} (${x.mnemonic})`\r\n })), x => x.displayValue);\r\n\r\n this.setDefaultCustomer();\r\n\r\n this.model.currentGasDay = GasDay.parse(response[2].gasDay);\r\n if (this.model.searchParams && _.isNil(this.model.searchParams.fromGasDay)) {\r\n this.model.searchParams.fromGasDay = this.model.currentGasDay.next() as GasDay;\r\n }\r\n if (this.model.searchParams && _.isNil(this.model.searchParams.toGasDay)) {\r\n this.model.searchParams.toGasDay = this.model.currentGasDay.next() as GasDay;\r\n }\r\n\r\n if (performSearch) {\r\n this.performSearch();\r\n }\r\n });\r\n }\r\n\r\n private setDefaultCustomer(): void {\r\n if (this.model.isInternalUser) {\r\n return;\r\n }\r\n\r\n if (_.isEmpty(this.model.customers)) {\r\n const enterprise = { enterpriseId: this.userService.user.enterpriseId };\r\n\r\n this.nominationEnterpriseEnrichmentService\r\n .enrich(enterprise, 'enterpriseId')\r\n .pipe(\r\n first())\r\n .subscribe(() => {\r\n this.alertService.addWarnMessage(`Warning`, `STS Service was not found for ${enterprise['shortName']} (${enterprise['mnemonic']})`);\r\n });\r\n } else if (_.isNil(this.model.searchParams.enterpriseId) && _.some(this.model.customers, x => x.id === Number(this.userService.user.enterpriseId))) {\r\n this.model.searchParams.enterpriseId = Number(this.userService.user.enterpriseId);\r\n } else if (this.model.customers.length === 1) {\r\n this.model.searchParams.enterpriseId = _.first(this.model.customers).id;\r\n }\r\n }\r\n\r\n private buildSearchRequest(): StorageLimitMaintenanceSearchParams {\r\n const request = new StorageLimitMaintenanceSearchParams();\r\n request.enterpriseId = this.model.searchParams.enterpriseId;\r\n if (this.model.searchParams.fromGasDay) {\r\n request.fromGasDay = this.model.searchParams.fromGasDay;\r\n }\r\n if (this.model.searchParams.toGasDay) {\r\n request.toGasDay = this.model.searchParams.toGasDay;\r\n }\r\n return request;\r\n }\r\n\r\n searchClicked() {\r\n this.router.navigate([], {queryParams: this.buildSearchRequest()}).then(results => {\r\n if (!results) {\r\n this.performSearch();\r\n }\r\n });\r\n }\r\n\r\n private getAvailablePoolingsInjectionAccounts(gasDay: GasDay, enterpriseId?: number): Observable {\r\n return this.nominationNomGroupService.getApplicableInjectionAccounts(gasDay, enterpriseId)\r\n .pipe(\r\n concatMap(response => {\r\n return this.nominationGroupEnrichmentService.enrichArray(response, 'id' );\r\n }));\r\n }\r\n\r\n private getAvailablePoolingsWithdrawalAccounts(gasDay: GasDay, enterpriseId?: number): Observable {\r\n return this.nominationNomGroupService.getApplicableSTSAccounts(gasDay, enterpriseId)\r\n .pipe(\r\n concatMap(response => {\r\n return this.nominationGroupEnrichmentService.enrichArray(response, 'id' );\r\n }));\r\n }\r\n\r\n private getPools(enterpriseId, fromGasDay, toGasDay): Observable {\r\n return this.poolingService.getPools(enterpriseId, fromGasDay, toGasDay)\r\n .pipe(\r\n concatMap(response => {\r\n if (_.isEmpty(response)) { return of(response); }\r\n const enrichmentServiceCalls: Observable[] = [];\r\n _.forEach(response, (pooling) => {\r\n enrichmentServiceCalls.push(this.nominationGroupEnrichmentService.enrichArray(pooling.nominationGroups, 'id'));\r\n enrichmentServiceCalls.push(this.locationEnrichmentService.enrichArray(pooling.locations, 'id'));\r\n });\r\n return forkJoin(enrichmentServiceCalls)\r\n .pipe(\r\n concatMap(() => {\r\n return of(response);\r\n }));\r\n }));\r\n }\r\n\r\n private getWithdrawals(enterpriseId, fromGasDay, toGasDay): Observable {\r\n return this.withdrawalLimitService.getWithdrawals(enterpriseId, fromGasDay, toGasDay)\r\n .pipe(\r\n concatMap(response => {\r\n if (_.isEmpty(response)) { return of(response); }\r\n const enrichmentServiceCalls: Observable[] = [];\r\n _.forEach(response, (withdrawal) => {\r\n enrichmentServiceCalls.push(this.locationEnrichmentService.enrich(withdrawal.receiptLocation, 'id'));\r\n enrichmentServiceCalls.push(this.locationEnrichmentService.enrich(withdrawal.deliveryLocation, 'id'));\r\n });\r\n return forkJoin(enrichmentServiceCalls)\r\n .pipe(\r\n concatMap(() => {\r\n return of(response);\r\n }));\r\n }));\r\n }\r\n\r\n private getUhfLimits(enterpriseId, fromGasDay, toGasDay): Observable {\r\n return this.accountUhfLimitService.getAccountUhfLimits(enterpriseId, fromGasDay, toGasDay)\r\n .pipe(\r\n concatMap(response => {\r\n if (_.isEmpty(response)) { return of(response); }\r\n const enrichmentServiceCalls: Observable[] = [];\r\n _.forEach(response, (withdrawal) => {\r\n enrichmentServiceCalls.push(this.locationEnrichmentService.enrich(withdrawal.deliveryLocation, 'id'));\r\n enrichmentServiceCalls.push(this.nominationGroupEnrichmentService.enrich(withdrawal.nominationGroup, 'id'));\r\n });\r\n return forkJoin(enrichmentServiceCalls)\r\n .pipe(\r\n concatMap(() => {\r\n return of(response);\r\n }));\r\n })); }\r\n\r\n private performSearch() {\r\n\r\n if (this.model.searchParams.enterpriseId == null) {\r\n this.model.storageLimits = null;\r\n\r\n } else {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n\r\n\r\n const serviceCalls: Observable[] = [\r\n this.nominationNomGroupService.queryEnterpriseNamesByServiceOption([\"I\"], this.model.searchParams.enterpriseId), // 0\r\n this.accountInjectionLimitService.getAccountInjectionLimits(this.model.searchParams.enterpriseId, this.model.searchParams.fromGasDay, this.model.searchParams.toGasDay), // 1\r\n this.getPools(this.model.searchParams.enterpriseId, this.model.searchParams.fromGasDay, this.model.searchParams.toGasDay), // 2\r\n this.getAvailablePoolingsInjectionAccounts(this.model.currentGasDay, this.model.searchParams.enterpriseId), // 3\r\n this.getAvailablePoolingsWithdrawalAccounts(this.model.currentGasDay, this.model.searchParams.enterpriseId), // 4,\r\n this.getWithdrawals(this.model.searchParams.enterpriseId, this.model.searchParams.fromGasDay, this.model.searchParams.toGasDay) // 5\r\n ];\r\n if (this.model.isInternalUser) {\r\n serviceCalls.push(this.getUhfLimits(this.model.searchParams.enterpriseId, this.model.searchParams.fromGasDay, this.model.searchParams.toGasDay)); // 6\r\n }\r\n\r\n forkJoin(serviceCalls).subscribe(response => {\r\n this.model.yesAndNo = YesAndNo.All();\r\n this.model.nomGroupsForEnterprise = response[0];\r\n this.model.storageLimits = response[1];\r\n this.model.poolings = response[2];\r\n this.model.withdrawals = response[5];\r\n\r\n this.model.availablePoolingsInjectionAccounts = response[3];\r\n this.model.availablePoolingsWithdrawalAccounts = response[4];\r\n this.model.availableWithdrawalAccounts = response[4];\r\n if (this.model.isInternalUser) {\r\n this.model.uhfLimits = response[6];\r\n }\r\n });\r\n }\r\n }\r\n\r\n haveSearched(): boolean {\r\n return !(this.model.storageLimits == null);\r\n }\r\n\r\n resetClicked() {\r\n this.model.storageLimits = null;\r\n this.router.navigate([]).then(() => {});\r\n }\r\n\r\n toggleFilterSectionClicked() {\r\n this.model.showFilterSection = !this.model.showFilterSection;\r\n }\r\n\r\n addClicked() {\r\n const addFunction = this.tabPanel.selectedItem.addFunction;\r\n if (addFunction) {\r\n addFunction(this);\r\n }\r\n }\r\n\r\n addInjection(invoker) {\r\n invoker.injectionLimitsTab.addRow();\r\n }\r\n\r\n addPooling(invoker) {\r\n invoker.poolingTab.addRow();\r\n }\r\n\r\n addWithdrawal(invoker) {\r\n invoker.withdrawalTab.addRow();\r\n }\r\n\r\n addUhf(invoker) {\r\n invoker.uhfLimitsTab.addRow();\r\n }\r\n\r\n hasUnsavedChanges(): boolean {\r\n return (!_.isNil(this.poolingTab) && this.poolingTab.areThereUnsavedChanges()) ||\r\n (!_.isNil(this.injectionLimitsTab) && this.injectionLimitsTab.areThereUnsavedChanges()) ||\r\n (!_.isNil(this.withdrawalTab) && this.withdrawalTab.areThereUnsavedChanges()) ||\r\n (!_.isNil(this.uhfLimitsTab) && this.uhfLimitsTab.areThereUnsavedChanges());\r\n }\r\n\r\n navigationCancelled(): void {\r\n }\r\n\r\n getDefaultChangesWillBeLostMessageOptions(): ModalOptions {\r\n return YesNoCancelModalService.getDefaultYesNoModalOptions();\r\n }\r\n\r\n public isValidDates = (): boolean => {\r\n if (this.model.searchParams.toGasDay == null || this.model.searchParams.fromGasDay == null) {\r\n return true;\r\n }\r\n\r\n return this.model.searchParams.toGasDay >= this.model.searchParams.fromGasDay;\r\n };\r\n}\r\n","import {GasDay} from \"@model/gas-day\";\r\nimport {GasCycle} from \"@model/gas-cycle\";\r\nimport {AutoBalanceHubLog} from \"@shared/services/nomination/auto-balance-log/auto-balance-details.model\";\r\nimport {AutoBalanceEvent} from \"@shared/services/nomination/auto-balance-log/auto-balance-events.model\";\r\nimport {BaseViewModel} from \"@model/base-view-model\";\r\nimport {NominationPipelineGasDay} from \"@model/nomination-pipeline-gas-day\";\r\nimport {NominationGroup} from \"@shared/services/nomination/nomination-nom-group/nomination-nom-group.service\";\r\n\r\nexport class AutoBalanceDetailsViewModel extends BaseViewModel {\r\n pipelineGasDay: NominationPipelineGasDay;\r\n autoBalanceEvents: AutoBalanceEvent[] = [];\r\n gasCycles: GasCycle[] = [];\r\n nonStsGasCycles: GasCycle[] = [];\r\n nominationGroups: NominationGroup[];\r\n\r\n searchParams: AutoBalanceDetailsSearchParams = new AutoBalanceDetailsSearchParams();\r\n lastSearchParams: AutoBalanceDetailsSearchParams;\r\n searchResults: AutoBalanceHubLog[];\r\n}\r\n\r\nexport class AutoBalanceDetailsSearchParams {\r\n gasDay: GasDay;\r\n gasCycleCode: string;\r\n eventGuid: string;\r\n nominationGroupId: number;\r\n\r\n autoBalanceEventName: string;\r\n}\r\n\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Gas Day: {{model.lastSearchParams?.gasDay | gasDayFormat}}\r\n Cycle (CCT): {{model.lastSearchParams?.gasCycleCode | displayName: 'code' : 'displayValue' : model.gasCycles}}\r\n Auto Balance Event: {{model.lastSearchParams?.autoBalanceEventName}}\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.gasDay | gasDayFormat}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.gasCycleCode | displayName: 'code' : 'displayValue' : model.gasCycles}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.autoBalanceEventName}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n Number of results found: {{model.searchResults.length}}\r\n\r\n
0\" class=\"pull-right\">\r\n Export CSV\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {{row.data.nominatedGasCycleId | displayName: 'id' : 'code' : model.gasCycles}}\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n\r\n\r\n","import {forkJoin, Observable} from 'rxjs';\r\n\r\nimport {tap, concatMap} from 'rxjs/operators';\r\nimport * as _ from 'lodash';\r\nimport {Component, ViewChild} from \"@angular/core\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {AutoBalanceDetailsSearchParams, AutoBalanceDetailsViewModel} from \"./auto-balance-details.model\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {NominationSystemService} from \"@shared/services/nomination/nomination-system/nomination-system.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {GasCycle} from \"@model/gas-cycle\";\r\nimport {GasCycleService} from \"@shared/services/nomination/gas-cycle/gas-cycle.service\";\r\nimport {AutoBalanceLogService} from \"@shared/services/nomination/auto-balance-log/auto-balance-log.service\";\r\nimport {DateTime} from \"@model/date-time\";\r\nimport {\r\n AutoBalanceEvent,\r\n AutoBalanceEventsRequest\r\n} from \"@shared/services/nomination/auto-balance-log/auto-balance-events.model\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {AlertService} from \"app/shared/services/webapp/alert/alert.service\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {\r\n NominationGroup,\r\n NominationNomGroupService\r\n} from \"@shared/services/nomination/nomination-nom-group/nomination-nom-group.service\";\r\nimport {NominationNomGroupEnrichmentService} from \"@shared/services/nomination/nomination-nom-group-enrichment/nomination-nom-group-enrichment.service\";\r\nimport {BusinessRight} from \"@model/business-right\";\r\nimport {AutoBalanceHubLog} from \"@shared/services/nomination/auto-balance-log/auto-balance-details.model\";\r\n\r\n@Component({\r\n selector: 'app-auto-balance-details',\r\n templateUrl: './auto-balance-details.component.html',\r\n styleUrls: ['./auto-balance-details.component.css'],\r\n providers: []\r\n})\r\n\r\nexport class AutoBalanceDetailsComponent extends BaseSearchComponent {\r\n static GasDayParam: string = 'gasDay';\r\n static GasDayCodeParam: string = 'gasCycleCode';\r\n static EventGuidParam: string = 'eventGuid';\r\n\r\n model: AutoBalanceDetailsViewModel = new AutoBalanceDetailsViewModel();\r\n @ViewChild(DxDataGridComponent) autoBalanceDetailsDataGrid: DxDataGridComponent;\r\n\r\n constructor(protected appService: AppService,\r\n protected activatedRoute: ActivatedRoute,\r\n protected router: Router,\r\n protected alertService: AlertService,\r\n private nominationSystemService: NominationSystemService,\r\n private gasCycleService: GasCycleService,\r\n private autoBalanceEventService: AutoBalanceLogService,\r\n private nominationNomGroupService: NominationNomGroupService,\r\n private nominationNomGroupEnrichmentService: NominationNomGroupEnrichmentService,\r\n private fileService: FileService) {\r\n super('Auto Balancing Details', appService, activatedRoute, router, alertService);\r\n }\r\n\r\n /**\r\n * Public Methods\r\n */\r\n\r\n varianceAbsoluteVariance(rowData: AutoBalanceHubLog): number {\r\n return Math.abs(rowData.variance);\r\n }\r\n\r\n onGasDayChanged(): void {\r\n // this will be fired even when a null value is returned from the date picker and don't want to reload with a bad date\r\n if (!this.model.searchParams.gasDay) return;\r\n\r\n this.getGasCycles().subscribe(() => {});\r\n }\r\n\r\n onGasCycleChanged(): void {\r\n this.getGasCycles().subscribe(() => {});\r\n }\r\n\r\n formatDateTime = (obj): string => {\r\n return new DateTime(obj).toDisplayFormat();\r\n };\r\n\r\n public exportCsvClicked(): void {\r\n const csvData = [];\r\n const orderedAutoBalanceData = _.sortBy(this.model.searchResults, x => x.depth, x => -Math.abs(x.variance), x => x.createDateTime);\r\n\r\n _.forEach(orderedAutoBalanceData, item => {\r\n const orderedTransactionLogs = _.sortBy(item.transactionLogs, x => x.id);\r\n\r\n _.forEach(orderedTransactionLogs, x => {\r\n const gasCycle = _.find(this.model.gasCycles, y => y.id === x.nominatedGasCycleId);\r\n\r\n csvData.push({\r\n hubLocationName: item['locationName'],\r\n hubNomGroupMnemonic: item['nominationGroupMnemonic'],\r\n hubVariance: item.variance,\r\n depth: item.depth,\r\n eventType: item.eventType.name,\r\n timeStampForCsv: this.formatDateTime(item.createDateTime),\r\n transactionType: x.transactionType,\r\n nominationGroupMnemonic: x['nominationGroupMnemonic'],\r\n locationName: x['locationName'],\r\n billableService: x.billableService,\r\n bidPrice: x.bidPrice,\r\n rank: x.rank,\r\n packageId: x.packageId,\r\n reasonCode: x.reasonCode,\r\n taxZeroRated: x.taxZeroRated,\r\n nominatedGasCycle: gasCycle.code,\r\n originalQty: x.originalQty,\r\n availableToCut: x.availableToCut,\r\n scheduledEpsq: x.scheduledEpsq,\r\n newQty: x.newQty,\r\n variance: x.variance,\r\n percentChange: x.percentChange,\r\n loopCounter: item.loopDetectionCounter\r\n });\r\n });\r\n });\r\n\r\n const filename = 'AutoBalancingDetails_' + this.model.lastSearchParams.gasDay + '_' + this.model.lastSearchParams.gasCycleCode + '_' + this.model.lastSearchParams.autoBalanceEventName + '.csv';\r\n const headers = [\r\n 'Location', 'Hub', 'Hub Variance', 'Depth', 'Event',\r\n 'Timestamp', 'TxnType', 'Account', 'FromToLocation', 'TOS',\r\n 'BidPrice', 'Rank', 'PackageId', 'RsnCode', 'Tax',\r\n 'NomCycle', 'OrgSQ', 'AvailToCut', 'EPSQ', 'NewSQ',\r\n 'Variance', '%Change', 'Loop Counter'];\r\n const columns = [\r\n 'hubLocationName', 'hubNomGroupMnemonic', 'hubVariance', 'depth', 'eventType',\r\n 'timeStampForCsv', 'transactionType', 'nominationGroupMnemonic', 'locationName', 'billableService',\r\n 'bidPrice', 'rank', 'packageId', 'reasonCode', 'taxZeroRated',\r\n 'nominatedGasCycle', 'originalQty', 'availableToCut', 'scheduledEpsq', 'newQty',\r\n 'variance', 'percentChange', 'loopCounter'];\r\n\r\n this.fileService.downloadCsvFile(filename, csvData, headers, columns);\r\n }\r\n\r\n /**\r\n * Protected Methods\r\n */\r\n\r\n protected loadInitialResources(): Observable {\r\n return this.nominationSystemService.pipelineGasDay().pipe(tap((pipelineGasDay) => {\r\n this.model.pipelineGasDay = pipelineGasDay;\r\n }));\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return this.gasDayCycleParamValidator().isValid(params);\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams = new AutoBalanceDetailsSearchParams();\r\n this.model.searchResults = null;\r\n\r\n this.setGasDayAndGasCycleCode(this.model.pipelineGasDay.allowableGasDay, GasCycle.TimelyCycleCode);\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.setGasDayAndGasCycleCode(typedParams.asGasDay(AutoBalanceDetailsComponent.GasDayParam),\r\n typedParams.asString(AutoBalanceDetailsComponent.GasDayCodeParam));\r\n this.model.searchParams.eventGuid = typedParams.asString(AutoBalanceDetailsComponent.EventGuidParam);\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n return this.getGasCycles();\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n\r\n return this.autoBalanceEventService.getLogs(this.model.searchParams.eventGuid, this.model.searchParams.nominationGroupId).pipe(tap(autoBalanceHubLogs => {\r\n this.model.searchResults = autoBalanceHubLogs;\r\n }));\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n return {\r\n gasDay: this.model.searchParams.gasDay,\r\n gasCycleCode: this.model.searchParams.gasCycleCode,\r\n eventGuid: this.model.searchParams.eventGuid\r\n };\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n if (this.autoBalanceDetailsDataGrid) {\r\n this.autoBalanceDetailsDataGrid.instance.clearSorting();\r\n this.autoBalanceDetailsDataGrid.instance.columnOption('Time Stamp', {sortOrder: 'asc', sortIndex: 0});\r\n }\r\n }\r\n\r\n protected searchCompleted(): void {\r\n this.model.lastSearchParams.autoBalanceEventName = this.getEventName(this.model.lastSearchParams.eventGuid);\r\n }\r\n\r\n /**\r\n * Private Methods\r\n */\r\n\r\n\r\n private getHubNominationGroups(): Observable {\r\n return this.nominationNomGroupService.queryAll(this.model.searchParams.gasDay, null, BusinessRight.MultiTitleTransfer).pipe(\r\n concatMap(response => {\r\n return this.nominationNomGroupEnrichmentService.enrichArray(response, 'id', 'nomGroup');\r\n }));\r\n }\r\n\r\n private getGasCycles(): Observable<{}> {\r\n const serviceCalls: Array = [\r\n this.gasCycleService.queryAll(this.model.searchParams.gasDay), // 0\r\n this.autoBalanceEventService.getEvents(new AutoBalanceEventsRequest(this.model.searchParams.gasDay, this.model.searchParams.gasCycleCode)), // 1\r\n this.getHubNominationGroups() // 2\r\n ];\r\n\r\n return forkJoin(serviceCalls).pipe(tap(responses => {\r\n this.model.gasCycles = responses[0];\r\n this.model.nonStsGasCycles = _.filter(this.model.gasCycles, x => !x.isStsCycle);\r\n this.model.autoBalanceEvents = responses[1];\r\n this.model.nominationGroups = responses[2];\r\n this.verifyForValidSelectedParameters();\r\n }));\r\n }\r\n\r\n private setGasDayAndGasCycleCode(gasDay: GasDay, gasCycleCode: string): void {\r\n this.model.searchParams.gasDay = gasDay;\r\n this.model.searchParams.gasCycleCode = gasCycleCode;\r\n }\r\n\r\n private verifyForValidSelectedParameters(): void {\r\n // Reset Gas Cycle, if the current selected gas cycle does not exist in the new Gas Cycles\r\n if (!_.some(this.model.gasCycles, gasCycle => gasCycle.code === this.model.searchParams.gasCycleCode)) {\r\n this.model.searchParams.gasCycleCode = GasCycle.TimelyCycleCode;\r\n }\r\n\r\n // De-select Event Guid, if the current selected event guid does not exist in the new AutoBalanceEvents\r\n if (!_.some(this.model.autoBalanceEvents, event => event.guid === this.model.searchParams.eventGuid)) {\r\n this.model.searchParams.eventGuid = null;\r\n }\r\n }\r\n\r\n private gasDayCycleParamValidator() {\r\n const gasDayCycleQueryParams = ParamValidator.Standard();\r\n\r\n gasDayCycleQueryParams.isGasDay(AutoBalanceDetailsComponent.GasDayParam);\r\n gasDayCycleQueryParams.isString(AutoBalanceDetailsComponent.GasDayCodeParam);\r\n gasDayCycleQueryParams.isString(AutoBalanceDetailsComponent.EventGuidParam);\r\n\r\n return gasDayCycleQueryParams;\r\n }\r\n\r\n private getEventName(eventGuid: string): string {\r\n const autoBalanceEvent = _.find(this.model.autoBalanceEvents, event => event.guid === eventGuid);\r\n return autoBalanceEvent.eventType.name;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {NominationResourceService} from \"@shared/resources/nominations-resource.service\";\r\nimport {Observable} from \"rxjs\";\r\nimport {HttpResponse} from \"@angular/common/http\";\r\n\r\nexport class UploadNominationRequestsRow {\r\n constructor(public rowNumber: string,\r\n public pipelineDuns: string,\r\n public customerIdentifier: string,\r\n public customerAccount: string,\r\n public account: string,\r\n public model: string,\r\n public beginDate: string,\r\n public beginTime: string,\r\n public endDate: string,\r\n public endTime: string,\r\n public gasCycle: string,\r\n public transactionType: string,\r\n public tos: string,\r\n public receiptLocation: string,\r\n public upstreamIdentifier: string,\r\n public upstreamContract: string,\r\n public receiptRank: string,\r\n public deliveryLocation: string,\r\n public downstreamIdentifier: string,\r\n public downstreamContract: string,\r\n public deliveryRank: string,\r\n public qty: string,\r\n public packageId: string,\r\n public bidPrice: string,\r\n public taxZeroRated: string,\r\n public fuelLocation: string,\r\n public transportRank: string,\r\n public deliveryReceipt: string,\r\n public nominationTrackingIdentifier: string\r\n ) {\r\n }\r\n}\r\n\r\nexport class UploadNominationRequestsErrorRow extends UploadNominationRequestsRow {\r\n errors: UploadNominationRequestsError[];\r\n}\r\n\r\nexport class UploadNominationRequestsError {\r\n dataField: string;\r\n validationError: string;\r\n\r\n constructor(dataField: string, validationError: string) {\r\n this.dataField = dataField;\r\n this.validationError = validationError;\r\n }\r\n}\r\n\r\nexport class UploadNominationRequestsResponse {\r\n linesInFile: number;\r\n linesSaved: number;\r\n errorRows: UploadNominationRequestsErrorRow[];\r\n\r\n constructor() {\r\n this.linesInFile = 0;\r\n this.linesSaved = 0;\r\n this.errorRows = [];\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport class UploadNominationRequestsService {\r\n\r\n constructor(private nominationResourceService: NominationResourceService) {\r\n\r\n }\r\n\r\n uploadNominationRequests(fileName: string, rows: UploadNominationRequestsRow[]): Observable {\r\n const body = {\r\n fileName: fileName,\r\n rows: rows\r\n };\r\n return this.nominationResourceService.post('/nominationrequests/ediupload', body, true);\r\n }\r\n\r\n testHarnessConvert(fileName: string, rows: UploadNominationRequestsRow[]): Observable> {\r\n const body = {\r\n fileName: fileName,\r\n rows: rows\r\n };\r\n return this.nominationResourceService.postWithDataResponse('/nominationrequests/testHarness', body, true);\r\n }\r\n}\r\n","export class UploadError {\r\n rowNumber: string;\r\n dataField: string;\r\n validationError: string;\r\n\r\n public static createFrom(rowNumber: string, dataField: string, validationError: string) {\r\n const result = new UploadError();\r\n result.rowNumber = rowNumber;\r\n result.dataField = dataField;\r\n result.validationError = validationError;\r\n return result;\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\nimport {UploadNominationRequestsResponse} from \"@shared/services/nomination/upload-nomination-requests/upload-nomination-requests.service\";\r\nimport {UploadError} from \"@model/upload-error\";\r\n\r\nexport class UploadNominationRequestsViewModel {\r\n fileName: string;\r\n isValid: boolean;\r\n error: string;\r\n uploadNominationRequestsResponse: UploadNominationRequestsResponse;\r\n errors: NominationUploadError[];\r\n\r\n public buildFormattedErrors(): NominationUploadError[] {\r\n if (_.isNil(this.uploadNominationRequestsResponse)) return [];\r\n\r\n const errorRows = this.uploadNominationRequestsResponse.errorRows;\r\n const errors = Array();\r\n\r\n _.forEach(errorRows, errorRow => {\r\n _.forEach(errorRow.errors, error => {\r\n errors.push(new NominationUploadError(errorRow.rowNumber, errorRow.nominationTrackingIdentifier, error.dataField, error.validationError));\r\n });\r\n });\r\n\r\n return errors;\r\n }\r\n}\r\n\r\nexport class NominationUploadError extends UploadError {\r\n nominationTrackingIdentifier: string;\r\n\r\n constructor(rowNumber: string, nominationTrackingIdentifier: string, dataField: string, validationError: string) {\r\n super();\r\n this.rowNumber = rowNumber;\r\n this.nominationTrackingIdentifier = nominationTrackingIdentifier;\r\n this.dataField = dataField;\r\n this.validationError = validationError;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {UserService} from \"app/shared/services/webapp/user/user-service\";\r\nimport \"../../../../../../../../node_modules/signalr/jquery.signalR\";\r\nimport \"signalr\";\r\nimport {NominationResourceService} from \"app/shared/resources/nominations-resource.service\";\r\nimport Proxy = SignalR.Hub.Proxy;\r\nimport {from, Observable, ReplaySubject, throwError} from \"rxjs\";\r\nimport {catchError, tap} from \"rxjs/operators\";\r\n\r\n// reference - https://docs.microsoft.com/en-us/aspnet/signalr/overview/guide-to-the-api/hubs-api-guide-javascript-client\r\n\r\nexport enum SignalRConnectionState {\r\n connecting = 0,\r\n connected = 1,\r\n reconnecting = 2,\r\n disconnected = 4\r\n}\r\n\r\nexport class SignalRMethods {\r\n public static NotifyUploadNominationRequestsCompleted = \"NotifyUploadNominationRequestsCompleted\";\r\n}\r\n\r\n@Injectable()\r\nexport class SignalRService {\r\n private connection: any;\r\n private proxy: Proxy;\r\n private readonly path: string;\r\n public nomsCompleteEvent: ReplaySubject = new ReplaySubject();\r\n\r\n constructor(private userService: UserService, private nominationsResourceService: NominationResourceService) {\r\n this.path = this.nominationsResourceService.getBaseUri(false) + \"/signalr\";\r\n }\r\n\r\n public connect(): Observable {\r\n if (this.connection && this.connection.state === SignalRConnectionState.connected) return;\r\n\r\n const that = this;\r\n this.connection = $.hubConnection(this.path, {\r\n useDefaultPath: false,\r\n qs: \"id=\" + this.userService.user.username\r\n });\r\n // Note: Turn this on if you have issues and need more debugging in the browser console.\r\n // this.connection.logging = true;\r\n this.proxy = this.connection.createHubProxy('signalRHub');\r\n // this.proxy = this.connection.createHubProxy('nominationRequestUploadHub');\r\n\r\n this.connection.disconnected(function() {\r\n if (window.console) console.log(\"SignalR disconnected\");\r\n });\r\n\r\n this.proxy.on(SignalRMethods.NotifyUploadNominationRequestsCompleted, function() {\r\n if (window.console) console.log('SignalR event received | event = NotifyUploadNominationRequestsCompleted');\r\n that.nomsCompleteEvent.next(\"nom upload complete\");\r\n });\r\n\r\n\r\n return from(\r\n this.connection.start({ transport: ['longPolling']}))\r\n .pipe(\r\n tap((data: any) => {\r\n if (window.console) console.log('SignalR connected | transport = ' + data.transport.name + ' | connection ID= ' + data.id);\r\n }),\r\n catchError(error => {\r\n if (window.console) console.log('Could not connect ' + error);\r\n return throwError(error);\r\n })\r\n );\r\n\r\n // todo: If we need to always connect, microsoft recommends starting the connection on each disconnect event :|\r\n // https://docs.microsoft.com/en-us/aspnet/signalr/overview/guide-to-the-api/handling-connection-lifetime-events\r\n // this.connection.disconnected(function() {\r\n // setTimeout(function() {\r\n // this.connection.start();\r\n // }, 5000); // Restart connection after 5 seconds.\r\n // });\r\n }\r\n\r\n public disconnect(): void {\r\n this.nomsCompleteEvent = null;\r\n this.nomsCompleteEvent = new ReplaySubject();\r\n this.connection.stop();\r\n this.connection = undefined;\r\n this.proxy = undefined;\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n Browse...\r\n \r\n
\r\n
\r\n
\r\n
\r\n CSV Parsing Errors:\r\n
{{model.error}}
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
{{ model.uploadNominationRequestsResponse?.linesInFile }}
\r\n \r\n
{{ model.uploadNominationRequestsResponse?.linesSaved - model.uploadNominationRequestsResponse?.errorRows.length }}
\r\n
\r\n
\r\n \r\n
{{ model.uploadNominationRequestsResponse?.errorRows.length }}
\r\n
   Click Back button to return to Nomination Requests page to check submission status
\r\n
\r\n
\r\n
Errors to be fixed in the file
\r\n
\r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n","import {ChangeDetectorRef, Component, OnInit, ViewChild} from '@angular/core';\r\nimport {\r\n UploadNominationRequestsResponse,\r\n UploadNominationRequestsRow,\r\n UploadNominationRequestsService\r\n} from \"app/shared/services/nomination/upload-nomination-requests/upload-nomination-requests.service\";\r\nimport {CsvUtility} from \"app/shared/classes/CsvUtility\";\r\nimport {AppService} from \"app/shared/services/webapp/app/app.service\";\r\nimport {AlertService} from \"app/shared/services/webapp/alert/alert.service\";\r\nimport {BaseComponent} from \"app/shared/classes/base-component\";\r\nimport {UploadNominationRequestsViewModel} from \"./upload-nomination-requests-view-model\";\r\nimport * as FileSaver from \"file-saver\";\r\nimport {SignalRService} from \"app/shared/services/webapp/signalr/signalr.service\";\r\nimport {Observable, Subscription} from \"rxjs\";\r\nimport {first, flatMap, tap} from \"rxjs/operators\";\r\n\r\n@Component({\r\n selector: 'app-upload-nomination-requests',\r\n templateUrl: './upload-nomination-requests.component.html',\r\n styleUrls: ['./upload-nomination-requests.component.css'],\r\n providers: [CsvUtility]\r\n})\r\nexport class UploadNominationRequestsComponent extends BaseComponent implements OnInit {\r\n model: UploadNominationRequestsViewModel = new UploadNominationRequestsViewModel();\r\n uploadInProgress: boolean = false;\r\n uploadComplete: boolean = false;\r\n submittingNoms: boolean = false;\r\n extractedData: UploadNominationRequestsRow[];\r\n private fileToRead: Blob;\r\n private fileEncoding: string;\r\n private nomUploadCompleteSubscription: Subscription;\r\n private csvUploader: HTMLInputElement;\r\n\r\n @ViewChild('csvUploader')\r\n set getCsvUploader(value: any) {\r\n this.csvUploader = value.nativeElement;\r\n }\r\n\r\n constructor(\r\n protected appService: AppService,\r\n private alertService: AlertService,\r\n private csvUtility: CsvUtility,\r\n private uploadNominationRequestsService: UploadNominationRequestsService,\r\n private signalRService: SignalRService,\r\n private changeDetectionRef: ChangeDetectorRef\r\n ) {\r\n super(appService);\r\n }\r\n\r\n ngOnInit() {\r\n super.setTitle('Upload Nomination Requests');\r\n this.initModel();\r\n }\r\n\r\n private initModel(): void {\r\n this.model = new UploadNominationRequestsViewModel();\r\n this.model.error = '';\r\n this.model.fileName = '';\r\n this.alertService.clearMessages();\r\n }\r\n\r\n private handleNominationRequestsCompletedEvent() {\r\n this.signalRService.disconnect();\r\n const that = this;\r\n that.alertService.clearMessages();\r\n that.alertService.addSuccessMessage('File Upload Completed.', 'Your Nominations can be viewed on the Nominations Page.');\r\n that.submittingNoms = false;\r\n\r\n that.changeDetectionRef.detectChanges();\r\n }\r\n\r\n private subscribeToNomCompletedEvent(): void {\r\n this.nomUploadCompleteSubscription = this.signalRService.nomsCompleteEvent\r\n .subscribe(() => this.handleNominationRequestsCompletedEvent());\r\n }\r\n\r\n uploadClicked(): void {\r\n this.alertService.clearMessages();\r\n\r\n this.subscribeToNomCompletedEvent();\r\n\r\n this.signalRService.connect().pipe(\r\n first(),\r\n flatMap(() => {\r\n return this.sendIt().pipe(\r\n first()\r\n );\r\n })\r\n ).subscribe();\r\n }\r\n\r\n private sendIt(): Observable {\r\n if (!!this.extractedData) {\r\n this.uploadInProgress = true;\r\n this.submittingNoms = true;\r\n return this.uploadNominationRequestsService.uploadNominationRequests(this.model.fileName, this.extractedData).pipe(tap(\r\n response => {\r\n this.model.uploadNominationRequestsResponse = response;\r\n this.model.error = '';\r\n\r\n if (this.model.uploadNominationRequestsResponse.errorRows !== undefined &&\r\n this.model.uploadNominationRequestsResponse.errorRows.length > 0) {\r\n this.model.errors = this.model.buildFormattedErrors();\r\n const validSubmissions = this.model.uploadNominationRequestsResponse.linesSaved - this.model.uploadNominationRequestsResponse.errorRows.length;\r\n this.alertService.addMessageWithProgress('File validation complete', validSubmissions + ' nominations are being processed. '\r\n + this.model.uploadNominationRequestsResponse.errorRows.length + ' had errors.');\r\n } else {\r\n this.model.errors = [];\r\n this.alertService.addMessageWithProgress('File validation complete', 'Valid Nominations are being processed');\r\n }\r\n this.uploadInProgress = false;\r\n this.uploadComplete = true;\r\n }));\r\n }\r\n }\r\n\r\n resetClicked() {\r\n this.reset();\r\n }\r\n\r\n public testHarnessClicked(): void {\r\n this.alertService.clearMessages();\r\n\r\n if (!!this.extractedData) {\r\n this.uploadInProgress = true;\r\n this.uploadNominationRequestsService.testHarnessConvert(this.model.fileName, this.extractedData).subscribe(\r\n httpResponse => {\r\n const blob = new Blob([httpResponse.body], {type: 'text/plain'});\r\n\r\n // from the content disposition, should be second element with =\"{filename}\" surrounding it\r\n const filename = httpResponse.headers.get('content-disposition').split(';')[1].trim().split('=')[1].replace(/\"/g, '');\r\n FileSaver.saveAs(blob, filename);\r\n\r\n this.uploadInProgress = false;\r\n });\r\n }\r\n }\r\n\r\n public isValidFile(model: UploadNominationRequestsViewModel): boolean {\r\n if (model.fileName !== null && model.fileName !== '' && model.isValid) {\r\n return true;\r\n }\r\n }\r\n\r\n browseClicked(): void {\r\n if (this.submittingNoms) {\r\n return;\r\n }\r\n\r\n this.csvUploader.value = null;\r\n this.csvUploader.click();\r\n\r\n this.model.uploadNominationRequestsResponse = null;\r\n this.alertService.clearMessages();\r\n }\r\n\r\n updateClick = (e: any) => {\r\n this.fileEncoding = 'utf-8';\r\n this.fileToRead = e.target.files[0];\r\n this.extractedData = [];\r\n if (e.target.files.length > 0) {\r\n this.model.fileName = e.target.files[0].name;\r\n\r\n const reader = new FileReader();\r\n reader.onload = this.onFileLoaded;\r\n reader.readAsText(this.fileToRead, this.fileEncoding);\r\n }\r\n };\r\n\r\n onFileLoaded = (event: any) => {\r\n this.uploadComplete = false;\r\n // Check to see if the file is utf-16. We only\r\n // support little-endian encoding.\r\n if (this.fileEncoding === 'utf-8' && event.target.result.length > 1 && event.target.result[1] === '\\0') {\r\n this.fileEncoding = 'utf-16';\r\n const reader = new FileReader();\r\n reader.onload = this.onFileLoaded;\r\n reader.readAsText(this.fileToRead, this.fileEncoding);\r\n } else {\r\n this.alertService.clearMessages();\r\n this.extractData(event.target.result, this.model);\r\n }\r\n };\r\n\r\n public showEdiTestHarness(): boolean {\r\n return this.appService.showEdiTestHarness();\r\n }\r\n\r\n private reset(): void {\r\n this.extractedData = null;\r\n this.model.error = '';\r\n this.model.fileName = '';\r\n this.model.uploadNominationRequestsResponse = null;\r\n this.alertService.clearMessages();\r\n this.uploadInProgress = false;\r\n this.uploadComplete = false;\r\n }\r\n\r\n protected extractData(data: string, model: UploadNominationRequestsViewModel) {\r\n const headers = ['TSP', 'Svc Req', 'Svc Req K', 'Assoc K', 'Model', 'Beg Date',\r\n 'Beg Time', 'End Date', 'End Time', 'Cycle', 'TT', 'Cap Type', 'Rec Loc',\r\n 'Up ID', 'Up K', 'Rec Rank', 'Del Loc', 'Dn ID',\r\n 'Dn K', 'Del Rank', 'Qty', 'Pkg ID', 'Bid Trans Rate', 'Exp Dec', 'Assoc Rec Loc',\r\n 'Path Rank', 'QTI', 'Nom Trk ID'];\r\n\r\n\r\n model.error = '';\r\n model.isValid = false;\r\n\r\n this.csvUtility.extractData(data, this.model, headers, (result, fields) => {\r\n for (let i = 0; i < result.length; i++) {\r\n this.extractedData.push(\r\n new UploadNominationRequestsRow(\r\n (i + 2).toString(),\r\n result[i][this.csvUtility.findColumnHeaderColumn(fields, headers[0])],\r\n result[i][this.csvUtility.findColumnHeaderColumn(fields, headers[1])],\r\n result[i][this.csvUtility.findColumnHeaderColumn(fields, headers[2])],\r\n result[i][this.csvUtility.findColumnHeaderColumn(fields, headers[3])],\r\n result[i][this.csvUtility.findColumnHeaderColumn(fields, headers[4])],\r\n result[i][this.csvUtility.findColumnHeaderColumn(fields, headers[5])],\r\n result[i][this.csvUtility.findColumnHeaderColumn(fields, headers[6])],\r\n result[i][this.csvUtility.findColumnHeaderColumn(fields, headers[7])],\r\n result[i][this.csvUtility.findColumnHeaderColumn(fields, headers[8])],\r\n result[i][this.csvUtility.findColumnHeaderColumn(fields, headers[9])],\r\n result[i][this.csvUtility.findColumnHeaderColumn(fields, headers[10])],\r\n result[i][this.csvUtility.findColumnHeaderColumn(fields, headers[11])],\r\n result[i][this.csvUtility.findColumnHeaderColumn(fields, headers[12])],\r\n result[i][this.csvUtility.findColumnHeaderColumn(fields, headers[13])],\r\n result[i][this.csvUtility.findColumnHeaderColumn(fields, headers[14])],\r\n result[i][this.csvUtility.findColumnHeaderColumn(fields, headers[15])],\r\n result[i][this.csvUtility.findColumnHeaderColumn(fields, headers[16])],\r\n result[i][this.csvUtility.findColumnHeaderColumn(fields, headers[17])],\r\n result[i][this.csvUtility.findColumnHeaderColumn(fields, headers[18])],\r\n result[i][this.csvUtility.findColumnHeaderColumn(fields, headers[19])],\r\n result[i][this.csvUtility.findColumnHeaderColumn(fields, headers[20])],\r\n result[i][this.csvUtility.findColumnHeaderColumn(fields, headers[21])],\r\n result[i][this.csvUtility.findColumnHeaderColumn(fields, headers[22])],\r\n result[i][this.csvUtility.findColumnHeaderColumn(fields, headers[23])],\r\n result[i][this.csvUtility.findColumnHeaderColumn(fields, headers[24])],\r\n result[i][this.csvUtility.findColumnHeaderColumn(fields, headers[25])],\r\n result[i][this.csvUtility.findColumnHeaderColumn(fields, headers[26])],\r\n result[i][this.csvUtility.findColumnHeaderColumn(fields, headers[27])]\r\n ));\r\n }\r\n }, true, true);\r\n }\r\n}\r\n\r\n\r\n","export class WaiverType {\r\n public static Buy = new WaiverType(\"Buy\", \"Buy\");\r\n public static Sell = new WaiverType(\"Sell\", \"Sell\");\r\n public static BiDirectional = new WaiverType(\"Bi-Directional\", \"Bi-Directional\");\r\n\r\n public static Types: WaiverType[] = [\r\n WaiverType.Buy,\r\n WaiverType.Sell,\r\n WaiverType.BiDirectional,\r\n ];\r\n\r\n constructor(public name: string, public formattedName: string) {\r\n }\r\n}\r\n","import {NominationEnterprise} from \"@shared/services/nomination/nomination-enterprise/nomination-enterprise.service\";\r\nimport {IGasDay} from \"@model/gas-day-month.interface\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {WaiverType} from \"@model/waiver-type\";\r\nimport {Waiver} from \"@model/waiver\";\r\nimport {NominationGroupHierarchyCollection} from \"@shared/services/nomination/nomination-nom-group/nomination-nom-group.service\";\r\nimport {TitleTransferWaiversComponent} from \"./title-transfer-waivers.component\";\r\n\r\nexport class TitleTransferWaiversModel {\r\n gasDay: GasDay;\r\n minGasDay: GasDay;\r\n searchParams: TitleTransferWaiversSearchParams = new TitleTransferWaiversSearchParams();\r\n lastSearchParams: TitleTransferWaiversSearchParams = null;\r\n searchResults: Waiver[];\r\n serviceRequesterEnterprises: NominationEnterprise[];\r\n counterPartyEnterprises: NominationEnterprise[];\r\n enterprisesWithoutCurrentServiceRequester: any;\r\n isEditing: boolean;\r\n isEditingRowValid: boolean;\r\n waiverTypes: WaiverType[] = WaiverType.Types;\r\n showFilters: boolean = true;\r\n // hubNomGroups: NominationGroupHierarchy[];\r\n hubNomGroups: NominationGroupHierarchyCollection = NominationGroupHierarchyCollection.create();\r\n userIsExternal: boolean = true;\r\n buyElement: any;\r\n sellElement: any;\r\n newWaiver: Waiver;\r\n}\r\n\r\nexport class TitleTransferWaiversSearchParams {\r\n serviceRequesterId: number;\r\n counterPartyId?: number;\r\n includeExpired?: boolean;\r\n}\r\n\r\nexport class WaiversExpiryPopupModel {\r\n component: TitleTransferWaiversComponent;\r\n expiryGasDay: IGasDay = null;\r\n minExpiryGasDay: GasDay = GasDay.today();\r\n isValid: boolean = true;\r\n private _waiver: Waiver = null;\r\n private _visible: boolean = false;\r\n\r\n get visible(): boolean {\r\n return this._visible;\r\n }\r\n set visible(value: boolean) {\r\n if (value) {\r\n this.reset();\r\n }\r\n this._visible = value;\r\n }\r\n\r\n get waiver(): Waiver {\r\n return this._waiver;\r\n }\r\n\r\n set waiver(value: Waiver) {\r\n if (value) {\r\n this._waiver = value;\r\n this.expiryGasDay = this.component.model.gasDay;\r\n this.minExpiryGasDay = this.component.model.gasDay;\r\n }\r\n }\r\n\r\n reset = () => {\r\n this.expiryGasDay = this.component.model.gasDay;\r\n }\r\n}\r\n\r\n","export class WaiverState {\r\n public static Expired = new WaiverState(\"Expired\", \"Expired\");\r\n public static Active = new WaiverState(\"Active\", \"Active\");\r\n public static Future = new WaiverState(\"Future\", \"Future\");\r\n\r\n public static Types: WaiverState[] = [\r\n WaiverState.Expired,\r\n WaiverState.Active,\r\n WaiverState.Future,\r\n ];\r\n\r\n constructor(public name: string, public formattedName: string) {\r\n }\r\n}\r\n","import {WaiverState} from \"./waiver-state\";\r\n\r\nexport class Waiver {\r\n public static NoMax: string = \"No max\";\r\n\r\n id: number;\r\n serviceRequesterEnterpriseId: number;\r\n counterPartyEnterpriseId: number;\r\n counterPartyEnterpriseShortName: string;\r\n effectiveGasDay: Date;\r\n expiryGasDay: Date;\r\n // TODO - Seb: This should be the enum flavor\r\n waiverType: string;\r\n buyMax?: number;\r\n sellMax?: number;\r\n rank: number;\r\n lastModDateTime: Date;\r\n lastModByUserId: string;\r\n isEditing: boolean;\r\n version: number;\r\n state: WaiverState;\r\n expirable: boolean;\r\n\r\n isDeletable(): boolean {\r\n return !this.expirable && this.state === WaiverState.Future;\r\n }\r\n\r\n isExpirable(): boolean {\r\n return this.expirable && this.state === WaiverState.Active;\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\nimport {IGasDay} from \"@model/gas-day-month.interface\";\r\nimport {Waiver} from \"@model/waiver\";\r\nimport {GasDay} from \"@model/gas-day\";\r\n\r\nexport class QueryWaiversRequest {\r\n serviceRequesterEnterpriseId: number;\r\n counterPartyEnterpriseId: number;\r\n gasDay: string;\r\n includeExpired: string;\r\n}\r\n\r\nexport class SaveWaiverRequest {\r\n serviceRequesterEnterpriseId: number;\r\n counterPartyEnterpriseId: number;\r\n waiverType: string;\r\n buyMax?: number;\r\n sellMax?: number;\r\n rank: number;\r\n fromGasDay: IGasDay;\r\n toGasDay?: IGasDay;\r\n pipelineCode: string;\r\n}\r\n\r\nexport class DeleteWaiverRequest {\r\n id: number;\r\n version: number;\r\n gasDay: IGasDay;\r\n\r\n public static buildFromWaiver(waiver: Waiver, gasDay: IGasDay) {\r\n const request = new DeleteWaiverRequest();\r\n\r\n request.id = waiver.id;\r\n request.version = waiver.version;\r\n request.gasDay = gasDay;\r\n\r\n return request;\r\n }\r\n}\r\n\r\nexport class ExpireWaiverRequest {\r\n id: number;\r\n version: number;\r\n gasDay: IGasDay;\r\n expiryGasDay: IGasDay;\r\n\r\n public static buildExpireRequestFromWaiver(waiver: Waiver, gasDay: IGasDay, expiryGasDay: IGasDay) {\r\n const request = new ExpireWaiverRequest();\r\n request.id = waiver.id;\r\n request.version = waiver.version;\r\n request.gasDay = gasDay;\r\n request.expiryGasDay = expiryGasDay;\r\n return request;\r\n }\r\n}\r\n\r\n\r\n","import * as _ from 'lodash';\r\nimport {Waiver} from \"@model/waiver\";\r\nimport {WaiverDto} from \"./title-transfer-waivers.service\";\r\nimport {WaiverState} from \"@model/waiver-state\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {DateTime} from \"@model/date-time\";\r\n\r\nexport class WaiverBuilder {\r\n public buildWaiver(titleTransferWaiversServiceDto: WaiverDto): Waiver {\r\n const waiver = new Waiver();\r\n waiver.id = titleTransferWaiversServiceDto.id;\r\n waiver.serviceRequesterEnterpriseId = titleTransferWaiversServiceDto.serviceRequesterEnterpriseId;\r\n waiver.counterPartyEnterpriseId = titleTransferWaiversServiceDto.counterPartyEnterpriseId;\r\n waiver.effectiveGasDay = GasDay.parse(titleTransferWaiversServiceDto.effectiveGasDay).toDate;\r\n waiver.expiryGasDay = GasDay.parse(titleTransferWaiversServiceDto.expiryGasDay).toDate;\r\n waiver.waiverType = titleTransferWaiversServiceDto.waiverType;\r\n waiver.rank = titleTransferWaiversServiceDto.rank;\r\n waiver.lastModDateTime = DateTime.parse(titleTransferWaiversServiceDto.lastModDateTime).toDate();\r\n waiver.lastModByUserId = titleTransferWaiversServiceDto.lastModByUserId;\r\n waiver.version = titleTransferWaiversServiceDto.version;\r\n waiver.buyMax = titleTransferWaiversServiceDto.buyMax;\r\n waiver.sellMax = titleTransferWaiversServiceDto.sellMax;\r\n waiver.state = _.find(WaiverState.Types,\r\n waiverState => waiverState.name.toLowerCase() === titleTransferWaiversServiceDto.state.toLowerCase());\r\n waiver.expirable = titleTransferWaiversServiceDto.expirable;\r\n\r\n return waiver;\r\n }\r\n}\r\n","\r\nimport {map} from 'rxjs/operators';\r\nimport * as _ from 'lodash';\r\nimport { Injectable } from '@angular/core';\r\nimport {NominationResourceService} from \"@shared/resources/nominations-resource.service\";\r\nimport {Observable} from \"rxjs\";\r\nimport {Waiver} from \"@model/waiver\";\r\nimport {DeleteWaiverRequest, QueryWaiversRequest, SaveWaiverRequest, ExpireWaiverRequest} from \"./waiver-requests\";\r\nimport {WaiverBuilder} from \"./waiver-builder\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\n\r\n@Injectable()\r\nexport class TitleTransferWaiversService {\r\n constructor(private nominationResource: NominationResourceService) { }\r\n\r\n queryTitleTransferWaivers(queryWaiversRequest: QueryWaiversRequest): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('serviceRequesterEnterpriseId', queryWaiversRequest.serviceRequesterEnterpriseId.toString());\r\n params.set('gasDay', queryWaiversRequest.gasDay.toString());\r\n params.set('includeExpired', queryWaiversRequest.includeExpired.toString());\r\n\r\n if (!_.isNil(queryWaiversRequest.counterPartyEnterpriseId)) {\r\n params.set('counterPartyEnterpriseId', queryWaiversRequest.counterPartyEnterpriseId.toString());\r\n }\r\n\r\n return this.nominationResource.get('/waivers', true, params).pipe(\r\n map(waiverDtos => _.map(waiverDtos, (waiverDto: WaiverDto) => new WaiverBuilder().buildWaiver(waiverDto))));\r\n }\r\n\r\n save(saveWaiverParams: SaveWaiverRequest): Observable {\r\n const body = {\r\n serviceRequesterEnterpriseId: saveWaiverParams.serviceRequesterEnterpriseId,\r\n counterPartyEnterpriseId: saveWaiverParams.counterPartyEnterpriseId,\r\n waiverType: saveWaiverParams.waiverType,\r\n buyMax: saveWaiverParams.buyMax,\r\n sellMax: saveWaiverParams.sellMax,\r\n rank: saveWaiverParams.rank,\r\n fromGasDay: saveWaiverParams.fromGasDay.toString(),\r\n toGasDay: _.isNil(saveWaiverParams.toGasDay) ? null : saveWaiverParams.toGasDay.toString()\r\n };\r\n\r\n return this.nominationResource.post('/waivers', body);\r\n }\r\n\r\n // TODO - Seb: Sounds like this should be a delete rather than a post\r\n delete(deleteWaiverParams: DeleteWaiverRequest): Observable {\r\n const body = {\r\n id: deleteWaiverParams.id,\r\n version: deleteWaiverParams.version,\r\n gasDay: deleteWaiverParams.gasDay.toString()\r\n };\r\n\r\n return this.nominationResource.postWithNoResponseBody('/waivers/' + body.id, body);\r\n }\r\n\r\n expire(expireWaiverParams: ExpireWaiverRequest): Observable {\r\n const body = {\r\n id: expireWaiverParams.id,\r\n version: expireWaiverParams.version,\r\n gasDay: expireWaiverParams.gasDay.toString(),\r\n expiryGasDay: expireWaiverParams.expiryGasDay.toString(),\r\n };\r\n\r\n return this.nominationResource.putWithNoResponseBody('/waivers/' + body.id, body);\r\n }\r\n}\r\n\r\nexport interface WaiverDto {\r\n id: number;\r\n serviceRequesterEnterpriseId: number;\r\n counterPartyEnterpriseId: number;\r\n effectiveGasDay: string;\r\n expiryGasDay: string;\r\n waiverType: string;\r\n buyMax?: number;\r\n sellMax?: number;\r\n rank: number;\r\n lastModDateTime: string;\r\n lastModByUserId: string;\r\n version: number;\r\n state: string;\r\n expirable: boolean;\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n - Filters\r\n + Filters\r\n \r\n :\r\n Service Requester: {{model.lastSearchParams?.serviceRequesterId | displayName: 'id' : 'displayValue' : model.serviceRequesterEnterprises}}\r\n Counter Party: {{model.lastSearchParams?.counterPartyId | displayName: 'id' : 'displayValue' : model.counterPartyEnterprises}}\r\n Include Expired: {{!model.lastSearchParams.includeExpired ? \"No\" : \"Yes\"}}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.serviceRequesterId | displayName: 'id' : 'displayValue' : model.serviceRequesterEnterprises}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.counterPartyId | displayName: 'id' : 'displayValue' : model.counterPartyEnterprises}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{!model.lastSearchParams.includeExpired ? \"No\" : \"Yes\"}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n Number of Records: {{model.searchResults.length}}\r\n
\r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n {{ displayBuyValue(row.data)}}\r\n
\r\n
\r\n {{ displaySellValue(row.data)}}\r\n
\r\n \r\n
\r\n\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
You are about to Expire This Waiver, are you sure you want to continue?
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\r\n","import * as dx from \"devextreme/core/renderer\";\r\nimport * as _ from 'lodash';\r\nimport {Component, ViewChild} from '@angular/core';\r\nimport {YesNoCancelModalService} from \"@shared/services/webapp/yes-no-cancel-modal/yes-no-cancel-modal.service\";\r\nimport {AlertService} from \"app/shared/services/webapp/alert/alert.service\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {NominationSystemService} from \"@shared/services/nomination/nomination-system/nomination-system.service\";\r\nimport {NominationEnterpriseEnrichmentService} from \"@shared/services/nomination/nomination-enterprise-enrichment/nomination-enterprise-enrichment.service\";\r\nimport {TitleTransferWaiversModel, WaiversExpiryPopupModel} from \"./title-transfer-waivers-model\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {TitleTransferWaiversService} from \"@shared/services/nomination/title-transfer-waivers/title-transfer-waivers.service\";\r\nimport {\r\n EnterpriseSearchParams,\r\n NominationEnterprise,\r\n NominationEnterpriseService\r\n} from \"@shared/services/nomination/nomination-enterprise/nomination-enterprise.service\";\r\nimport {BusinessRight} from \"@model/business-right\";\r\nimport {IGasDay} from \"@model/gas-day-month.interface\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {WaiverType} from \"@model/waiver-type\";\r\nimport {EditableSearchComponent} from \"@model/editable-search-component\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {Waiver} from \"@model/waiver\";\r\nimport {\r\n DeleteWaiverRequest,\r\n ExpireWaiverRequest,\r\n QueryWaiversRequest,\r\n SaveWaiverRequest\r\n} from \"@shared/services/nomination/title-transfer-waivers/waiver-requests\";\r\nimport {PageableList} from \"@model/pageable-list\";\r\nimport {\r\n NominationGroupHierarchyCollection,\r\n NominationNomGroupService\r\n} from \"@shared/services/nomination/nomination-nom-group/nomination-nom-group.service\";\r\nimport {UserService} from \"@shared/services/webapp/user/user-service\";\r\nimport {forkJoin, Observable} from \"rxjs\";\r\nimport {DateTime} from \"@model/date-time\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {ModalComponent} from \"@shared/components/modal/modal.component\";\r\nimport {ModalOptions} from \"@shared/services/webapp/modal-options/modal-options\";\r\nimport {YesNoModalOptions} from \"@shared/services/webapp/modal-options/yes-no-modal-options\";\r\nimport {SelectedModalOption} from \"@shared/services/webapp/modal-options/selected-modal-option\";\r\nimport {concatMap, map, tap} from \"rxjs/operators\";\r\n\r\nexport interface IDisplayFormat {\r\n formatter: (Date) => string;\r\n parser: (string) => Date;\r\n}\r\n\r\n@Component({\r\n selector: 'app-title-transfer-waivers',\r\n templateUrl: './title-transfer-waivers.component.html',\r\n styleUrls: ['./title-transfer-waivers.component.css']\r\n})\r\nexport class TitleTransferWaiversComponent extends EditableSearchComponent /*implements GuardAgainstUnsavedChanges*/ {\r\n public model: TitleTransferWaiversModel = new TitleTransferWaiversModel();\r\n public waiversExpiryPopupModel: WaiversExpiryPopupModel;\r\n\r\n private valueOption = 'value';\r\n private disabledOption = 'disabled';\r\n private placeholderOption = 'placeholder';\r\n\r\n @ViewChild(DxDataGridComponent) dataGrid: DxDataGridComponent;\r\n @ViewChild(ModalComponent) modal: ModalComponent;\r\n\r\n datePickerEditorFormat: IDisplayFormat;\r\n\r\n constructor(protected appService: AppService,\r\n protected activatedRoute: ActivatedRoute,\r\n protected router: Router,\r\n protected alertService: AlertService,\r\n protected modalService: YesNoCancelModalService,\r\n private nominationSystemService: NominationSystemService,\r\n private nominationEnterpriseEnrichmentService: NominationEnterpriseEnrichmentService,\r\n private titleTransferWaiversService: TitleTransferWaiversService,\r\n private nominationEnterpriseService: NominationEnterpriseService,\r\n private nominationNomGroupService: NominationNomGroupService,\r\n private userService: UserService\r\n ) {\r\n super('Title Transfer Waivers', appService, activatedRoute, router, alertService);\r\n\r\n this.waiversExpiryPopupModel = new WaiversExpiryPopupModel();\r\n this.waiversExpiryPopupModel.component = this;\r\n this.waiversExpiryPopupModel.expiryGasDay = this.model.gasDay;\r\n this.model.userIsExternal = this.userService.user.isExternalUser;\r\n\r\n this.datePickerEditorFormat = {\r\n formatter: this.formatGasDayInEditor,\r\n parser: this.parseGasDay\r\n };\r\n this.endGasDay = this.endGasDay.bind(this);\r\n }\r\n\r\n /***\r\n * Public Methods\r\n */\r\n\r\n public hasUnsavedChanges(): boolean {\r\n if (!this.dataGrid) return false;\r\n return this.dataGrid.instance.hasEditData();\r\n }\r\n\r\n public navigationCancelled(): void {\r\n }\r\n\r\n public getDefaultChangesWillBeLostMessageOptions(): ModalOptions {\r\n return YesNoCancelModalService.getDefaultYesNoModalOptions();\r\n }\r\n\r\n public addClicked(): void {\r\n if (_.isNil(this.dataGrid) || _.isNil(this.dataGrid.instance)) return;\r\n this.dataGrid.instance.addRow();\r\n this.model.isEditing = true;\r\n }\r\n\r\n public toggleFilterSection() {\r\n this.model.showFilters = !this.model.showFilters;\r\n }\r\n\r\n public isAddButtonDisabled(): boolean {\r\n return this.hasUnsavedChanges() || _.isNil(this.model.searchResults);\r\n }\r\n\r\n /**\r\n * task/100561 - Part of upgrading to DevExtreme, the code no longer worked and we need to populate\r\n * the imbalance transfer transaction from the cell info information.\r\n */\r\n private buildWaiverFromCellInfo(cellInfo: any): SaveWaiverRequest {\r\n const saveWaiverRequest = new SaveWaiverRequest();\r\n saveWaiverRequest.serviceRequesterEnterpriseId = this.model.lastSearchParams.serviceRequesterId;\r\n saveWaiverRequest.counterPartyEnterpriseId = cellInfo.row.data.counterPartyEnterpriseId;\r\n saveWaiverRequest.waiverType = cellInfo.row.data.waiverType;\r\n saveWaiverRequest.buyMax = cellInfo.row.data.buyMax;\r\n saveWaiverRequest.sellMax = cellInfo.row.data.sellMax;\r\n saveWaiverRequest.rank = cellInfo.row.data.rank;\r\n saveWaiverRequest.fromGasDay = GasDay.from(cellInfo.row.data.effectiveGasDay);\r\n saveWaiverRequest.pipelineCode = cellInfo.row.data.pipelineCode;\r\n\r\n if (_.isNil(cellInfo.row.data.expiryGasDay)) {\r\n saveWaiverRequest.toGasDay = GasDay.maxGasDay();\r\n } else {\r\n saveWaiverRequest.toGasDay = GasDay.from(cellInfo.row.data.expiryGasDay);\r\n }\r\n\r\n return saveWaiverRequest;\r\n }\r\n\r\n public saveWaiver(cellInfo: any): void {\r\n this.appService.clearMessages();\r\n\r\n const saveWaiverRequest = this.buildWaiverFromCellInfo(cellInfo);\r\n\r\n this.titleTransferWaiversService.save(saveWaiverRequest).pipe(\r\n concatMap(() => this.performSearch()))\r\n .subscribe(() => {\r\n this.alertService.addSuccessMessage(\"Success\", \"The waiver has been added.\");\r\n cellInfo.component.saveEditData();\r\n }, () => {\r\n this.model.isEditing = true;\r\n });\r\n }\r\n\r\n /***\r\n * Protected Methods\r\n */\r\n\r\n protected loadInitialResources(): Observable {\r\n const serviceCalls: Observable[] = [\r\n this.nominationSystemService.pipelineGasDay(), // 0\r\n\r\n // Eager fetch enterprises\r\n this.nominationEnterpriseEnrichmentService.fetch(),\r\n ];\r\n\r\n return forkJoin(serviceCalls).pipe(tap(response => {\r\n const pipelineGasDay = response[0];\r\n\r\n if (!pipelineGasDay.hasGasDayCycles()) {\r\n this.alertService.addWarnMessage(\"Warning\", \"There are no Gas Day Cycles for the pipeline.\");\r\n return;\r\n }\r\n\r\n this.appService.hideMenu();\r\n this.appService.clearMessages();\r\n\r\n this.model.gasDay = pipelineGasDay.allowableGasDay;\r\n this.model.minGasDay = pipelineGasDay.allowableGasDay;\r\n }));\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return this.paramValidator().isValid(params);\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams.counterPartyId = null;\r\n this.model.searchParams.includeExpired = false;\r\n\r\n if (this.model.userIsExternal) {\r\n this.model.searchParams.serviceRequesterId = +this.userService.user.enterpriseId;\r\n } else {\r\n this.model.searchParams.serviceRequesterId = null;\r\n }\r\n\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams.serviceRequesterId = typedParams.asNullableNumber('serviceRequesterId');\r\n this.model.searchParams.counterPartyId = typedParams.asNullableNumber('counterPartyId');\r\n this.model.searchParams.includeExpired = typedParams.asBoolean('includeExpired');\r\n }\r\n\r\n protected loadSearchResourcesDifferent(): Observable {\r\n\r\n const counterPartyEnterprises$ =\r\n this.getCounterPartyEnterprises(this.model.gasDay).pipe(\r\n tap(enterprises => {\r\n const counterPartyEnterprises = _.orderBy(enterprises, enterprise => enterprise.shortName);\r\n this.model.counterPartyEnterprises = counterPartyEnterprises;\r\n this.verifySelectedCounterParty();\r\n }));\r\n\r\n const hubNomGroups$ =\r\n this.nominationNomGroupService.queryAllHubNominationGroupNames(this.model.gasDay, null, true, true).pipe(\r\n tap(nomGroups => {\r\n this.model.hubNomGroups = nomGroups;\r\n }));\r\n\r\n const serviceCalls: Observable[] = [counterPartyEnterprises$, hubNomGroups$];\r\n\r\n if (this.model.userIsExternal) {\r\n\r\n const externalUserServiceCalls$ = forkJoin(\r\n this.getServiceRequesterEnterprises(this.model.gasDay),\r\n this.nominationNomGroupService.queryAllHubNominationGroupNames(this.model.gasDay, null, false, true)\r\n ).pipe(\r\n map(([serviceRequesterEnterprises, filteredNomGroupHubs]: [NominationEnterprise[], NominationGroupHierarchyCollection]) => {\r\n\r\n this.model.serviceRequesterEnterprises = _.intersectionWith(serviceRequesterEnterprises, filteredNomGroupHubs, (enterprise, nomGroup) => {\r\n return nomGroup.enterpriseId === enterprise.id && nomGroup.isEffectiveFor(this.model.gasDay);\r\n });\r\n this.verifySelectedServiceRequester();\r\n\r\n }));\r\n\r\n serviceCalls.push(externalUserServiceCalls$);\r\n\r\n } else {\r\n this.model.serviceRequesterEnterprises = this.model.counterPartyEnterprises;\r\n this.verifySelectedServiceRequester();\r\n }\r\n\r\n return forkJoin(serviceCalls);\r\n }\r\n\r\n\r\n\r\n protected loadSearchResources(): Observable {\r\n\r\n const counterPartyEnterprises$ = this.getCounterPartyEnterprises(this.model.gasDay).pipe(\r\n tap(enterprises => {\r\n this.model.counterPartyEnterprises = _.orderBy(enterprises , (enterprise: NominationEnterprise) => enterprise.shortName);\r\n })\r\n );\r\n const hubNomGroups$ = this.nominationNomGroupService.queryAllHubNominationGroupNames(this.model.gasDay, null, true, true).pipe(\r\n tap(nomGroups => this.model.hubNomGroups = nomGroups)\r\n );\r\n\r\n const serviceCalls$: Observable[] = [counterPartyEnterprises$, hubNomGroups$];\r\n\r\n if (this.model.userIsExternal) {\r\n const serviceRequesterEnterprises$ = this.getServiceRequesterEnterprises(this.model.gasDay);\r\n const allNomGroups$ = this.nominationNomGroupService.queryAllHubNominationGroupNames(this.model.gasDay, null, false, true);\r\n\r\n const externalUserCalls$ = forkJoin(serviceRequesterEnterprises$, allNomGroups$).pipe(\r\n tap(([enterprises, filteredNomGroupHubs]: [NominationEnterprise[], NominationGroupHierarchyCollection]) => {\r\n const orderedEnterprises = _.orderBy(enterprises , (enterprise: NominationEnterprise) => enterprise.shortName);\r\n this.model.serviceRequesterEnterprises = _.intersectionWith(orderedEnterprises, filteredNomGroupHubs, (enterprise, nomGroup) => {\r\n return nomGroup.enterpriseId === enterprise.id && nomGroup.isEffectiveFor(this.model.gasDay);\r\n });\r\n }\r\n ));\r\n\r\n serviceCalls$.push(externalUserCalls$);\r\n }\r\n\r\n return forkJoin(serviceCalls$).pipe(\r\n tap(() => {\r\n if (!this.model.serviceRequesterEnterprises) this.model.serviceRequesterEnterprises = this.model.counterPartyEnterprises;\r\n this.verifySelectedCounterParty();\r\n this.verifySelectedServiceRequester();\r\n })\r\n );\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n\r\n this.tryToCancelEditingData();\r\n\r\n const searchRequest = this.buildSearchRequest();\r\n const serviceCalls: Observable[] = [\r\n this.titleTransferWaiversService.queryTitleTransferWaivers(searchRequest)\r\n ];\r\n\r\n return forkJoin(serviceCalls).pipe(tap(response => {\r\n this.model.searchResults = response[0];\r\n this.enrichResults(this.model.searchResults);\r\n }));\r\n }\r\n\r\n protected buildQueryParams() {\r\n const params = {\r\n serviceRequesterId: this.model.searchParams.serviceRequesterId,\r\n includeExpired: this.model.searchParams.includeExpired\r\n };\r\n\r\n if (!_.isNil(this.model.searchParams.counterPartyId) && !_.isNaN(this.model.searchParams.counterPartyId)) {\r\n params[\"counterPartyId\"] = this.model.searchParams.counterPartyId;\r\n }\r\n\r\n return params;\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n // No sort order\r\n }\r\n\r\n protected resetCompleted(): void {\r\n this.tryToCancelEditingData();\r\n this.model.searchResults = null;\r\n this.model.isEditing = false;\r\n }\r\n\r\n protected searchCompleted(): void {\r\n // Filter out the current service requester from the list of counter parties.\r\n // It is carried out at this point rather than loadPageResources\r\n // because lastSearchParams is typically only set after a page search\r\n const counterPartiesExcludingCurrentRequester = _.filter(this.model.counterPartyEnterprises, enterprise => enterprise.id !== this.model.lastSearchParams.serviceRequesterId);\r\n this.model.enterprisesWithoutCurrentServiceRequester = PageableList.GenerateConfiguration(counterPartiesExcludingCurrentRequester);\r\n }\r\n\r\n /***\r\n * Private Methods\r\n */\r\n\r\n private paramValidator(): ParamValidator {\r\n const queryParams = ParamValidator.Standard();\r\n\r\n queryParams.isNumber('serviceRequesterId');\r\n queryParams.isNumber('counterPartyId', true);\r\n queryParams.isBoolean('includeExpired', true);\r\n\r\n return queryParams;\r\n }\r\n\r\n private buildSearchRequest(): QueryWaiversRequest {\r\n const request = new QueryWaiversRequest();\r\n request.serviceRequesterEnterpriseId = this.model.searchParams.serviceRequesterId;\r\n request.gasDay = this.model.gasDay.toString();\r\n request.includeExpired = this.model.searchParams.includeExpired.toString();\r\n\r\n if (!_.isNil(this.model.searchParams.counterPartyId)) {\r\n request.counterPartyEnterpriseId = this.model.searchParams.counterPartyId;\r\n }\r\n\r\n return request;\r\n }\r\n\r\n private getServiceRequesterEnterprises(gasDay: IGasDay): Observable {\r\n return this.nominationEnterpriseService.queryAllByPipeline({gasDay: gasDay,\r\n accountBusinessRights: [BusinessRight.MultiTitleTransfer],\r\n includeInactive: true,\r\n ignoreExternalNomGroupFilter: false})\r\n .pipe(\r\n concatMap(response => {\r\n return this.nominationEnterpriseEnrichmentService.enrichArray(response, 'id');\r\n }));\r\n }\r\n\r\n private getCounterPartyEnterprises(gasDay: IGasDay): Observable {\r\n return this.nominationEnterpriseService.queryAllByPipeline({gasDay: gasDay,\r\n accountBusinessRights: [BusinessRight.MultiTitleTransfer],\r\n includeInactive: true,\r\n ignoreExternalNomGroupFilter: true})\r\n .pipe(\r\n concatMap(response => {\r\n return this.nominationEnterpriseEnrichmentService.enrichArray(response, 'id');\r\n }));\r\n }\r\n\r\n private enrichResults(titleTransferWaivers: any): void {\r\n const enrichmentServiceCalls: Observable[] = [];\r\n\r\n enrichmentServiceCalls.push(this.nominationEnterpriseEnrichmentService.enrichArray(titleTransferWaivers,\r\n 'counterPartyEnterpriseId', 'counterPartyEnterprise'));\r\n\r\n forkJoin(enrichmentServiceCalls).subscribe(() => {\r\n // Do nothing\r\n });\r\n }\r\n\r\n public deleteWaiver(waiver: Waiver) {\r\n this.alertService.clearMessages();\r\n const modalOptions = new YesNoModalOptions('Are you sure?', 'Are you sure you want to delete this waiver?');\r\n this.modalService.show(modalOptions).subscribe((selectedModalOption: SelectedModalOption) => {\r\n if (selectedModalOption === SelectedModalOption.Yes) {\r\n const request = DeleteWaiverRequest.buildFromWaiver(waiver, this.model.gasDay);\r\n this.titleTransferWaiversService\r\n .delete(request)\r\n .pipe(\r\n concatMap(() => this.performSearch()))\r\n .subscribe(() => this.alertService.addSuccessMessage(\"Success\", \"The waiver has been deleted.\"));\r\n }\r\n });\r\n }\r\n\r\n public expireWaiver(waiver: Waiver) {\r\n this.alertService.clearMessages();\r\n this.waiversExpiryPopupModel.waiver = waiver;\r\n this.modal.show();\r\n }\r\n\r\n public okToExpireWaiver(expiryGasDay: IGasDay) {\r\n const request = ExpireWaiverRequest.buildExpireRequestFromWaiver(this.waiversExpiryPopupModel.waiver, this.model.gasDay, expiryGasDay);\r\n this.titleTransferWaiversService\r\n .expire(request)\r\n .pipe(\r\n concatMap(() => this.performSearch()))\r\n .subscribe(() => {\r\n this.alertService.addSuccessMessage(\"Success\", \"The waiver's Expiry Gas Day has been updated to \" + expiryGasDay.toString() + \".\");\r\n });\r\n\r\n }\r\n\r\n public cancelClicked(): void {\r\n this.tryToCancelEditingData();\r\n }\r\n\r\n private tryToCancelEditingData(): void {\r\n if (_.isNil(this.dataGrid) || _.isNil(this.dataGrid.instance)) return;\r\n if (!this.dataGrid.instance.hasEditData()) return;\r\n this.dataGrid.instance.cancelEditData();\r\n this.model.isEditing = false;\r\n }\r\n\r\n public saveClicked(cellInfo: any): void {\r\n // this.appService.clearMessages();\r\n // cellInfo.component.saveEditData();\r\n // this.model.isEditing = false;\r\n\r\n this.appService.clearMessages();\r\n this.saveWaiver(cellInfo);\r\n }\r\n\r\n public onInitNewRow(e: any): void {\r\n this.model.isEditingRowValid = false;\r\n const waiver = e.data;\r\n this.model.newWaiver = waiver;\r\n this.setRowDefaults(waiver);\r\n }\r\n\r\n private setRowDefaults(waiver: Waiver): void {\r\n waiver.isEditing = true;\r\n waiver.waiverType = WaiverType.BiDirectional.name;\r\n waiver.effectiveGasDay = this.model.gasDay.toDate;\r\n }\r\n\r\n public formatGasDay(obj: any): string {\r\n if (_.isNil(obj.value)) return null;\r\n const gasDay = GasDay.from(obj.value);\r\n return gasDay.toDisplayFormat();\r\n }\r\n\r\n public formatGasDayTime(obj: any): string {\r\n if (_.isNil(obj.value)) return null;\r\n const dateTime = new DateTime(obj.value);\r\n return dateTime.toDisplayFormat();\r\n }\r\n\r\n /*\r\n * Used to inspect validation in row edit mode\r\n * See -> https://www.devexpress.com/Support/Center/Question/Details/T551187/dxdatagrid-checking-the-status-of-validators-in-row-edit-mode\r\n */\r\n public onEditorPrepared(e: any) {\r\n if (e.parentType === 'dataRow') {\r\n let dxEditorInstance = null;\r\n\r\n\r\n switch (e.dataField) {\r\n case 'effectiveGasDay':\r\n this.setMinAndMaxGasDays(e);\r\n dxEditorInstance = dx(e.editorElement).dxDateBox('instance');\r\n dxEditorInstance.on('input', (event) => this.validateEditorText(event, e));\r\n break;\r\n case 'expiryGasDay':\r\n this.setMinAndMaxGasDays(e);\r\n dxEditorInstance = dx(e.editorElement).dxDateBox('instance');\r\n dxEditorInstance.on('input', (event) => this.validateEditorText(event, e));\r\n break;\r\n // TODO - Seb: This isn't triggering/valid logic for a Select Box - currently not triggering validation check\r\n // case 'counterParty':\r\n // dxEditorInstanceOther = e.editorElement.dxSelectBox('instance');\r\n // break;\r\n case 'sellMax':\r\n this.model.sellElement = dxEditorInstance = dx(e.editorElement).dxNumberBox('instance');\r\n\r\n if (this.model.newWaiver) {\r\n if (this.model.newWaiver.waiverType === WaiverType.BiDirectional.name || this.model.newWaiver.waiverType === WaiverType.Sell.name) {\r\n this.model.sellElement.option(this.disabledOption, false);\r\n this.model.sellElement.option(this.placeholderOption, Waiver.NoMax);\r\n }\r\n }\r\n break;\r\n case 'buyMax':\r\n this.model.buyElement = dxEditorInstance = dx(e.editorElement).dxNumberBox('instance');\r\n\r\n if (this.model.newWaiver) {\r\n if (this.model.newWaiver.waiverType === WaiverType.BiDirectional.name || this.model.newWaiver.waiverType === WaiverType.Buy.name) {\r\n this.model.buyElement.option(this.disabledOption, false);\r\n this.model.buyElement.option(this.placeholderOption, Waiver.NoMax);\r\n }\r\n }\r\n break;\r\n case 'rank':\r\n dxEditorInstance = dx(e.editorElement).dxNumberBox('instance');\r\n break;\r\n case 'waiverType':\r\n const selectBox = dx(e.editorElement).data('dxSelectBox');\r\n\r\n if (selectBox) {\r\n\r\n selectBox.on('selectionChanged', x => this.updateAbilityToEditBuySellBasedOffWaiverType(x));\r\n }\r\n break;\r\n }\r\n\r\n if (dxEditorInstance) {\r\n dxEditorInstance.option('valueChangeEvent', 'keydown keyup');\r\n dxEditorInstance.on('valueChanged', (vce) => {\r\n e.setValue(vce.value);\r\n this.model.isEditingRowValid = e.component.getController('validating').validate();\r\n });\r\n }\r\n }\r\n }\r\n\r\n private validateEditorText(inputEvent: any, editorPreparedEvent: any): void {\r\n const valueFormat = inputEvent.component.option('displayFormat');\r\n const newDate = valueFormat.parser(inputEvent.component.option('text'));\r\n let isValid = true;\r\n if (newDate) {\r\n const min = inputEvent.component.option('min');\r\n if (min) {\r\n if (newDate < min) {\r\n isValid = false;\r\n }\r\n }\r\n const max = inputEvent.component.option('max');\r\n if (max) {\r\n if (newDate > max) {\r\n isValid = false;\r\n }\r\n }\r\n } else {\r\n isValid = false;\r\n }\r\n inputEvent.component.option(\"isValid\", isValid);\r\n if (isValid) {\r\n editorPreparedEvent.setValue(newDate);\r\n } else {\r\n editorPreparedEvent.setValue(null);\r\n }\r\n this.model.isEditingRowValid = editorPreparedEvent.component.getController('validating').validate();\r\n }\r\n\r\n private setMinAndMaxGasDays(e: any): void {\r\n let dxEditorInstance = dx(e.editorElement).dxDateBox('instance');\r\n dxEditorInstance.option('min', this.model.gasDay.toDate);\r\n dxEditorInstance.option('max', GasDay.maxGasDay().toDate);\r\n }\r\n\r\n private updateAbilityToEditBuySellBasedOffWaiverType(x: any): void {\r\n if (x.selectedItem) {\r\n let sellDisabled = true;\r\n let buyDisabled = true;\r\n\r\n switch (x.selectedItem.name) {\r\n case 'Buy':\r\n buyDisabled = false;\r\n this.model.sellElement.option(this.valueOption, undefined);\r\n break;\r\n case 'Sell':\r\n sellDisabled = false;\r\n this.model.buyElement.option(this.valueOption, undefined);\r\n break;\r\n case 'Bi-Directional':\r\n sellDisabled = buyDisabled = false;\r\n break;\r\n }\r\n\r\n this.model.sellElement.option(this.disabledOption, sellDisabled);\r\n this.model.sellElement.option(this.placeholderOption, sellDisabled ? '' : Waiver.NoMax);\r\n this.model.buyElement.option(this.disabledOption, buyDisabled);\r\n this.model.buyElement.option(this.placeholderOption, buyDisabled ? '' : Waiver.NoMax);\r\n }\r\n }\r\n\r\n endGasDay(): Date {\r\n return _.isNil(this.model.newWaiver.expiryGasDay) ? this.getDefaultExpiryGasDay() : this.model.newWaiver.expiryGasDay;\r\n }\r\n\r\n private getDefaultExpiryGasDay(): Date {\r\n return GasDay.maxGasDay().toDate;\r\n }\r\n public onRowInserting(e: any) {\r\n const waiver = new Waiver();\r\n\r\n // We don't want to show MaxGasDay, so by default it is blank on a new row\r\n // When we go to save it, set it to max if it is not already set\r\n waiver.expiryGasDay = this.getDefaultExpiryGasDay();\r\n\r\n e.cancel = this.saveWaiver(waiver);\r\n }\r\n\r\n public shouldShowDeleteButton(waiver: Waiver) {\r\n return waiver.isDeletable();\r\n }\r\n\r\n public shouldShowExpireButton(waiver: Waiver) {\r\n return waiver.isExpirable();\r\n }\r\n\r\n displayBuyValue(e: any): string {\r\n return this.displayBuySellValue(e.buyMax, e.waiverType, WaiverType.Buy);\r\n }\r\n\r\n displaySellValue(e: any): string {\r\n return this.displayBuySellValue(e.sellMax, e.waiverType, WaiverType.Sell);\r\n }\r\n\r\n private displayBuySellValue(value: number, waiverType: string, matchingWaiverType: WaiverType): string {\r\n if (!_.isNil(value)) return value.toString();\r\n return (waiverType === WaiverType.BiDirectional.name || waiverType === matchingWaiverType.name) ? Waiver.NoMax : null;\r\n}\r\n\r\n public formatGasDayInEditor(obj: Date): string {\r\n if (obj !== undefined) {\r\n return GasDay.from(obj).toDisplayFormatAll();\r\n }\r\n return '';\r\n }\r\n\r\n parseGasDay = (value: string): Date => {\r\n try {\r\n const gasDayDate = GasDay.parse(value, true);\r\n return gasDayDate.toDate;\r\n } catch (e) {\r\n return null;\r\n }\r\n };\r\n\r\n private verifySelectedServiceRequester() {\r\n if (!!this.model.searchParams.serviceRequesterId && !_.some(this.model.serviceRequesterEnterprises, e => e.id === this.model.searchParams.serviceRequesterId)) {\r\n this.model.searchParams.serviceRequesterId = null;\r\n this.markParamsOutOfSync();\r\n }\r\n }\r\n\r\n private verifySelectedCounterParty() {\r\n if (!!this.model.searchParams.counterPartyId && !_.some(this.model.counterPartyEnterprises, e => e.id === this.model.searchParams.counterPartyId)) {\r\n this.model.searchParams.counterPartyId = null;\r\n this.markParamsOutOfSync();\r\n }\r\n\r\n }\r\n}\r\n","\r\nimport {GasCycle} from \"@model/gas-cycle\";\r\nimport {IGasDay} from \"@model/gas-day-month.interface\";\r\nimport {BaseViewModel} from \"@model/base-view-model\";\r\nimport {NominationLocation} from \"@shared/services/nomination/nomination-location/nomination-location.service\";\r\nimport {NominationPipelineGasDay} from \"@model/nomination-pipeline-gas-day\";\r\nimport {GasDay} from \"@model/gas-day\";\r\n\r\nexport class ConfirmationResponseSearchParam {\r\n gasDay: IGasDay;\r\n gasCycleCode: string;\r\n locationId: number;\r\n}\r\n\r\nexport class ConfirmationResponseModel extends BaseViewModel {\r\n gasDay: IGasDay;\r\n minGasDay: GasDay;\r\n maxGasDay: GasDay;\r\n userIsInternal: boolean;\r\n\r\n pipelineGasDay: NominationPipelineGasDay;\r\n gasCycles: GasCycle[] = [];\r\n launchedGasCycles: GasCycle[] = [];\r\n locations: NominationLocation[] = [];\r\n\r\n searchParams: ConfirmationResponseSearchParam = new ConfirmationResponseSearchParam();\r\n lastSearchParams: ConfirmationResponseSearchParam;\r\n searchResults: ConfirmationResponse[];\r\n}\r\n\r\nexport class ConfirmationResponse {\r\n gasDay: IGasDay;\r\n gasCycle: GasCycle;\r\n accountMnemonic: string;\r\n quantity: number;\r\n flowDirection: string;\r\n errorMessage: string;\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Gas Day: {{model.lastSearchParams?.gasDay | gasDayFormat}}\r\n Location: {{model.lastSearchParams?.locationId | displayName: 'id' : 'name' : model.locations}}\r\n Cycle (CCT): {{model.lastSearchParams?.gasCycleCode | displayName: 'code' : 'displayValue' : model.gasCycles}}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.gasDay | gasDayFormat}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.gasCycleCode | displayName: 'code' : 'displayValue' : model.gasCycles}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.locationId | displayName: 'id' : 'name' : model.locations}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n Number of records found: {{model.searchResults.length}}\r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n","import {forkJoin, Observable} from 'rxjs';\r\n\r\nimport {tap} from 'rxjs/operators';\r\nimport * as _ from 'lodash';\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {Component, ViewChild} from \"@angular/core\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {AlertService} from \"app/shared/services/webapp/alert/alert.service\";\r\nimport {\r\n LocationSearchParams, NominationLocation,\r\n NominationLocationService\r\n} from \"@shared/services/nomination/nomination-location/nomination-location.service\";\r\nimport {GasCycleService} from \"@shared/services/nomination/gas-cycle/gas-cycle.service\";\r\nimport {ConfirmationResponseModel, ConfirmationResponseSearchParam} from \"./confirmation-response.model\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {GasCycle} from \"@model/gas-cycle\";\r\nimport {ConfirmationService} from \"@shared/services/nomination/confirmation/confirmation.service\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {NominationSystemService} from \"@shared/services/nomination/nomination-system/nomination-system.service\";\r\nimport {UserService} from \"@shared/services/webapp/user/user-service\";\r\n\r\n@Component({\r\n selector: 'app-confirmation-response',\r\n templateUrl: './confirmation-response.component.html',\r\n styleUrls: ['./confirmation-response.component.css']\r\n})\r\nexport class ConfirmationResponseComponent extends BaseSearchComponent {\r\n static GasDayParam: string = 'gasDay';\r\n static GasDayCodeParam: string = 'gasCycleCode';\r\n static LocationIdParam: string = 'locationId';\r\n\r\n\r\n model: ConfirmationResponseModel = new ConfirmationResponseModel();\r\n @ViewChild(DxDataGridComponent) confirmationResponseDataGrid: DxDataGridComponent;\r\n\r\n constructor(protected appService: AppService,\r\n protected activatedRoute: ActivatedRoute,\r\n protected router: Router,\r\n protected alertService: AlertService,\r\n protected userService: UserService,\r\n protected gasCycleService: GasCycleService,\r\n protected nominationSystemService: NominationSystemService,\r\n protected nominationLocationService: NominationLocationService,\r\n protected confirmationService: ConfirmationService\r\n ) {\r\n super('View NGTL Inline', appService, activatedRoute, router, alertService);\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n return this.nominationSystemService.pipelineGasDay().pipe(tap(pipelineGasDay => {\r\n\r\n if (!pipelineGasDay.hasGasDayCycles()) {\r\n this.alertService.addWarnMessage(\"Warning\", \"There are no Gas Day Cycles for the pipeline.\");\r\n return;\r\n }\r\n\r\n this.model.pipelineGasDay = pipelineGasDay;\r\n this.model.gasDay = pipelineGasDay.allowableGasDay;\r\n this.model.minGasDay = pipelineGasDay.minGasDayForCycleStatus;\r\n this.model.maxGasDay = pipelineGasDay.maxGasDayForCycleStatus;\r\n this.model.userIsInternal = !this.userService.user.isExternalUser;\r\n }));\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return this.gasDayCycleParamValidator().isValid(params);\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n const gasDay = this.model.pipelineGasDay.allowableGasDay;\r\n const gasCycleCode = this.model.pipelineGasDay.openGasDayCycleStatus.gasCycle.code;\r\n this.setGasDayAndGasCycleCodeAndLocation(gasDay as GasDay, gasCycleCode, null);\r\n }\r\n\r\n protected resetCompleted(): void {\r\n this.model.searchParams = new ConfirmationResponseSearchParam();\r\n this.model.searchResults = null;\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.setGasDayAndGasCycleCodeAndLocation(typedParams.asGasDay(ConfirmationResponseComponent.GasDayParam),\r\n typedParams.asString(ConfirmationResponseComponent.GasDayCodeParam), typedParams.asNumber(ConfirmationResponseComponent.LocationIdParam));\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n const serviceCalls: Observable[] = [\r\n this.nominationLocationService.queryAllDetails(new LocationSearchParams(this.model.gasDay, true, this.model.gasDay, true)), // 0\r\n this.gasCycleService.queryAll(this.model.searchParams.gasDay) // 1\r\n ];\r\n\r\n return forkJoin(serviceCalls).pipe(tap(responses => {\r\n this.model.locations = _.orderBy(_.filter(responses[0], x => x.accountingLocationParameters.isConfirmed), x => x.name);\r\n\r\n this.model.gasCycles = responses[1];\r\n this.verifyForValidSelectedParameters();\r\n }));\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = { ...this.model.searchParams };\r\n\r\n return this.confirmationService.queryConfirmationResponse(this.model.searchParams.gasDay, this.model.searchParams.gasCycleCode, this.model.searchParams.locationId).pipe(tap(results => {\r\n this.model.searchResults = results;\r\n }));\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n return {\r\n gasDay: this.model.searchParams.gasDay,\r\n gasCycleCode: this.model.searchParams.gasCycleCode,\r\n locationId: this.model.searchParams.locationId\r\n };\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n if (this.confirmationResponseDataGrid) {\r\n this.confirmationResponseDataGrid.instance.clearSorting();\r\n this.confirmationResponseDataGrid.instance.columnOption('Gas Day', {sortOrder: 'asc', sortIndex: 1});\r\n }\r\n }\r\n\r\n public toggleFilterSectionClicked(): void {\r\n this.model.showFilterSection = !this.model.showFilterSection;\r\n }\r\n\r\n private setGasDayAndGasCycleCodeAndLocation(gasDay: GasDay, gasCycleCode: string, locationId: number): void {\r\n this.model.searchParams.gasDay = gasDay;\r\n this.model.searchParams.gasCycleCode = gasCycleCode;\r\n this.model.searchParams.locationId = locationId;\r\n }\r\n\r\n private verifyForValidSelectedParameters(): void {\r\n // Reset Gas Cycle, if the current selected gas cycle does not exist in the new Gas Cycles\r\n if (!_.some(this.model.gasCycles, gasCycle => gasCycle.code === this.model.searchParams.gasCycleCode)) {\r\n this.model.searchParams.gasCycleCode = GasCycle.TimelyCycleCode;\r\n }\r\n }\r\n\r\n private gasDayCycleParamValidator(): ParamValidator {\r\n const gasDayCycleQueryParams = ParamValidator.Standard();\r\n\r\n gasDayCycleQueryParams.isGasDay(ConfirmationResponseComponent.GasDayParam);\r\n gasDayCycleQueryParams.isString(ConfirmationResponseComponent.GasDayCodeParam);\r\n gasDayCycleQueryParams.isNumber(ConfirmationResponseComponent.LocationIdParam);\r\n\r\n return gasDayCycleQueryParams;\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\nimport {GasDay} from \"app/shared/classes/gas-day\";\r\nimport {BaseViewModel} from \"app/shared/classes/base-view-model\";\r\nimport {NominationPipelineGasDay} from \"app/shared/classes/nomination-pipeline-gas-day\";\r\nimport {GasCycle} from \"app/shared/classes/gas-cycle\";\r\nimport {NominationEnterprise} from \"app/shared/services/nomination/nomination-enterprise/nomination-enterprise.service\";\r\nimport {GasDayCycleStatusCollection} from \"app/shared/classes/gas-day-cycle-status-collection\";\r\n\r\nexport class PendingStsNominationsModel extends BaseViewModel {\r\n pipelineGasDay: NominationPipelineGasDay;\r\n minGasDay: GasDay;\r\n maxGasDay: GasDay;\r\n gasDay: GasDay;\r\n\r\n gasDayCycleStatusCollection: GasDayCycleStatusCollection = GasDayCycleStatusCollection.create();\r\n\r\n stsGasCycles: GasCycle[] = [];\r\n gasCycles: GasCycle[] = [];\r\n isCycleNomWindowClosed: boolean = false;\r\n isPreviousCycleSchedule: boolean = false;\r\n\r\n customers: NominationEnterprise[] = [];\r\n\r\n searchParams: PendingStsNominationsSearchParams = new PendingStsNominationsSearchParams();\r\n lastSearchParams: PendingStsNominationsSearchParams;\r\n pendingStsNominations: Array;\r\n queryDateTime: Date;\r\n\r\n hubAccounts: HubAccountInfo[] = [];\r\n\r\n pendingStsNominationCount: number;\r\n\r\n isExternalUser: boolean = true;\r\n}\r\n\r\n// contains grouping info per Hub Account to know if there is a variance or if the hub is selected.\r\nexport class HubAccountInfo {\r\n public isSelected: boolean = false;\r\n constructor(public hubAccountId: number, public locationInfo: LocationInfo[]) {\r\n }\r\n\r\n get hasVarianceAtAnyLocation(): boolean {\r\n return _.some(this.locationInfo, l => l.variance !== 0);\r\n }\r\n}\r\n\r\nexport class LocationInfo {\r\n constructor(public hubAccountId: number, public locationId: number, public variance: number) {\r\n }\r\n}\r\n\r\nexport class PendingStsNominationsSearchParams {\r\n gasCycleCode: string;\r\n gasDay: GasDay;\r\n customerId?: number;\r\n}\r\n\r\nexport class PendingStsNominationsSearchResponse {\r\n queryDateTime: Date;\r\n pendingStsNominations: PendingStsNominationRequest[];\r\n}\r\n\r\nexport class PendingStsNominationRequest {\r\n summaryNomQtyIn: number;\r\n summaryTcplQtyIn: number;\r\n summaryNomQtyOut: number;\r\n summaryTcplQtyOut: number;\r\n summaryNomVariance: number;\r\n\r\n nomRequestId: number;\r\n nomRequestStatus: string;\r\n cycle: string;\r\n transactionType: string;\r\n enterpriseId: number;\r\n hubAccountId: number;\r\n nominationGroupId: number;\r\n fromToLocation: number;\r\n typeOfService: string;\r\n serviceOption: string;\r\n packageId: string;\r\n\r\n priorScheduledCycle: string;\r\n priorScheduledQuantity: number;\r\n priorScheduledVariance: number;\r\n\r\n // derived properties\r\n customerHubAccountDisplayValue: string;\r\n locationNameDisplayValue: string;\r\n typeOfServiceWithOption: string;\r\n\r\n locationId: number;\r\n}\r\n","import {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {NominationResourceService} from \"@shared/resources/nominations-resource.service\";\r\nimport {Observable} from \"rxjs\";\r\nimport {Injectable} from \"@angular/core\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {\r\n PendingStsNominationsSearchResponse\r\n} from \"app/gcts/nomination/gasday-monitor/pending-sts-nominations/pending-sts-nominations.model\";\r\n\r\n@Injectable()\r\nexport class PendingStsNominationsService {\r\n\r\n constructor(private nominationResource: NominationResourceService) {\r\n }\r\n\r\n queryPendingStsNominations(gasDay: GasDay, gasCycleCode: string, customerId: number): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('gasDay', gasDay.toString());\r\n params.set('gasCycleCode', gasCycleCode);\r\n params.setNumber('enterpriseId', customerId);\r\n\r\n return this.nominationResource.get('/nominationrequests/pending', true, params);\r\n }\r\n\r\n approvePendingStsNominations(gasDay: GasDay, gasCycleCode: string, queryDateTime: Date, hubAccountIds: number[]): Observable {\r\n const body = {\r\n gasDay: gasDay.toString(),\r\n gasCycleCode: gasCycleCode,\r\n queryDateTime: queryDateTime,\r\n hubAccountIds: hubAccountIds\r\n };\r\n\r\n return this.nominationResource.postWithNoResponseBody('/nominationrequests/pending/approve', body);\r\n }\r\n\r\n rejectPendingStsNominations(gasDay: GasDay, gasCycleCode: string, queryDateTime: Date, hubAccountIds: number[]): Observable {\r\n const body = {\r\n gasDay: gasDay.toString(),\r\n gasCycleCode: gasCycleCode,\r\n queryDateTime: queryDateTime,\r\n hubAccountIds: hubAccountIds\r\n };\r\n\r\n return this.nominationResource.postWithNoResponseBody('/nominationrequests/pending/reject', body);\r\n }\r\n\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Gas Day: {{model.lastSearchParams?.gasDay | gasDayFormat}}\r\n Cycle: {{model.lastSearchParams?.gasCycleCode}}\r\n Customer: {{model.lastSearchParams?.customerId | displayName: 'id' : 'displayValue' : model.customers}}\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{ model.lastSearchParams.gasDay | gasDayFormat }}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{ model.lastSearchParams.gasCycleCode | displayName: 'code' : 'displayValue' : model.gasCycles : 'EOD' }}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
{{model.lastSearchParams.customerId | displayName: 'id' : 'displayValue' : model.customers}}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n Number of Pending STS Nominations found: {{model.pendingStsNominationCount}}\r\n
\r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n {{data.displayValue}}\r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n
{{data.displayValue}}
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n
\r\n
\r\n\r\n
\r\n","import {Component, ViewChild} from \"@angular/core\";\r\nimport {BaseSearchComponent} from \"app/shared/classes/base-search-component\";\r\nimport {forkJoin, Observable} from 'rxjs';\r\nimport {TypedParams} from \"app/shared/classes/typed-params\";\r\nimport {AppService} from \"app/shared/services/webapp/app/app.service\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {AlertService} from \"app/shared/services/webapp/alert/alert.service\";\r\nimport {\r\n HubAccountInfo,\r\n LocationInfo,\r\n PendingStsNominationsModel,\r\n PendingStsNominationsSearchResponse\r\n} from \"./pending-sts-nominations.model\";\r\nimport {NominationSystemService} from \"app/shared/services/nomination/nomination-system/nomination-system.service\";\r\nimport {GasDay} from \"app/shared/classes/gas-day\";\r\nimport {GasCycle} from \"app/shared/classes/gas-cycle\";\r\nimport {ParamValidator} from \"app/shared/classes/validators/param-validator\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {\r\n EnterpriseSearchParams,\r\n NominationEnterprise,\r\n NominationEnterpriseService\r\n} from \"app/shared/services/nomination/nomination-enterprise/nomination-enterprise.service\";\r\nimport {NominationEnterpriseEnrichmentService} from \"app/shared/services/nomination/nomination-enterprise-enrichment/nomination-enterprise-enrichment.service\";\r\nimport * as _ from \"lodash\";\r\nimport {GasCycleService} from \"app/shared/services/nomination/gas-cycle/gas-cycle.service\";\r\nimport {IGasDay} from \"app/shared/classes/gas-day-month.interface\";\r\nimport {PendingStsNominationsService} from \"app/shared/services/nomination/pending-sts-nominations/pending-sts-nominations.service\";\r\nimport * as dx from \"devextreme/core/renderer\";\r\nimport {NominationLocationEnrichmentService} from \"app/shared/services/nomination/nomination-location-enrichment/nomination-location-enrichment.service\";\r\nimport {NominationNomGroupEnrichmentService} from \"app/shared/services/nomination/nomination-nom-group-enrichment/nomination-nom-group-enrichment.service\";\r\nimport {GasDayCycleStatusCollection} from \"app/shared/classes/gas-day-cycle-status-collection\";\r\nimport {HubStatuses} from \"app/gcts/nomination/nomination-requests/nomination-requests.model\";\r\nimport {UserService} from \"@shared/services/webapp/user/user-service\";\r\nimport {concatMap, first, map, tap} from \"rxjs/operators\";\r\n\r\n@Component({\r\n selector: 'app-pending-sts-nominations',\r\n templateUrl: './pending-sts-nominations.component.html',\r\n styleUrls: ['./pending-sts-nominations.component.css']\r\n})\r\n\r\nexport class PendingStsNominationsComponent extends BaseSearchComponent {\r\n static GasDayParam: string = 'gasDay';\r\n static GasDayCodeParam: string = 'gasCycleCode';\r\n static CustomerParam: string = 'customerId';\r\n\r\n model: PendingStsNominationsModel = new PendingStsNominationsModel();\r\n @ViewChild(DxDataGridComponent) pendingStsNominationsDataGrid: DxDataGridComponent;\r\n\r\n constructor(protected appService: AppService,\r\n protected activatedRoute: ActivatedRoute,\r\n protected router: Router,\r\n protected alertService: AlertService,\r\n protected nominationSystemService: NominationSystemService,\r\n protected nominationEnterpriseService: NominationEnterpriseService,\r\n protected nominationEnterpriseEnrichmentService: NominationEnterpriseEnrichmentService,\r\n protected nominationLocationEnrichmentService: NominationLocationEnrichmentService,\r\n protected nomGroupEnrichmentService: NominationNomGroupEnrichmentService,\r\n protected gasCycleService: GasCycleService,\r\n protected pendingStsNominationsService: PendingStsNominationsService,\r\n protected userService: UserService\r\n ) {\r\n super('Pending STS Nominations', appService, activatedRoute, router, alertService);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n return { gasDay: this.model.searchParams.gasDay,\r\n gasCycleCode: this.model.searchParams.gasCycleCode,\r\n customerId: this.model.searchParams.customerId };\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n return this.nominationSystemService.pipelineGasDay().pipe(\r\n tap((pipelineGasDay) => {\r\n this.model.pipelineGasDay = pipelineGasDay;\r\n this.model.gasDay = pipelineGasDay.actualGasDay.isGreaterThan(pipelineGasDay.earliestSelectableGasDay) ?\r\n pipelineGasDay.actualGasDay :\r\n pipelineGasDay.earliestSelectableGasDay;\r\n\r\n this.model.minGasDay = pipelineGasDay.minGasDayForCycleStatus;\r\n this.model.maxGasDay = pipelineGasDay.maxGasDayForCycleStatus;\r\n this.model.isExternalUser = this.userService.user.isExternalUser;\r\n }));\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n const gasDay = this.model.searchParams.gasDay ?\r\n this.model.searchParams.gasDay :\r\n this.model.gasDay;\r\n\r\n const serviceCalls: Observable[] = [\r\n this.gasCycleService.queryAll(gasDay), // 0\r\n this.getEnterprises(gasDay), // 1\r\n this.gasCycleService.queryGasDayCycleStatusesFor(gasDay) // 2\r\n ];\r\n\r\n return forkJoin(serviceCalls).pipe(tap(responses => {\r\n // 0 - Gas Day Cycle Status\r\n const gasCycles = responses[0];\r\n this.model.gasCycles = gasCycles;\r\n this.model.stsGasCycles = _.filter(this.model.gasCycles, g => g.isStsCycle);\r\n\r\n // 1 - Enterprise\r\n this.model.customers = _.orderBy( responses[1], x => x.displayValue);\r\n this.setDefaultCustomer();\r\n\r\n // 2 - Gas Day Cycle Status\r\n const gasCycleStatusCollection = responses[2];\r\n this.model.gasDayCycleStatusCollection = gasCycleStatusCollection;\r\n\r\n if (_.isNil(this.model.searchParams.gasCycleCode)) {\r\n this.model.searchParams.gasCycleCode = this.defaultGasCycleCode(gasCycleStatusCollection);\r\n }\r\n\r\n this.model.isCycleNomWindowClosed = gasCycleStatusCollection.isCycleClosedForNominations(this.model.searchParams.gasCycleCode);\r\n this.model.isPreviousCycleSchedule = gasCycleStatusCollection.isPreviousCycleScheduled(this.model.searchParams.gasCycleCode);\r\n }));\r\n }\r\n\r\n onGasDayChanged(): void {\r\n // this will be fired even when a null value is returned from the date picker and don't want to reload with a bad date\r\n if (!this.model.searchParams.gasDay) return;\r\n\r\n // This will force the GasCycle to get set to the default for the GasDay.\r\n this.model.searchParams.gasCycleCode = null;\r\n\r\n // Do nothing on subscription, we just want the drop downs to be reloaded\r\n this.loadSearchResources().subscribe(() => {\r\n });\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n\r\n const serviceCalls: Observable[] = [\r\n this.getPendingStsNominations(this.model.searchParams.gasDay, this.model.searchParams.gasCycleCode, this.model.searchParams.customerId) // 0\r\n ];\r\n\r\n return forkJoin(serviceCalls).pipe(\r\n tap(response => {\r\n // Response 0\r\n const pendingStsNominationsResponse = response[0];\r\n _.map(pendingStsNominationsResponse.pendingStsNominations, nomination => {\r\n nomination.typeOfServiceWithOption = _.isNil(nomination.typeOfService) ? '' : `${nomination.typeOfService} ${nomination.serviceOption}`;\r\n nomination.customerHubAccountDisplayValue = nomination['enterpriseShortName'] + ' ' + nomination['hubAccountMnemonic'];\r\n nomination.locationNameDisplayValue = nomination['locationName'];\r\n // TODO: Use the Nominated or Scheduled?\r\n nomination.summaryNomVariance = nomination['inScheduledQuantity'] - nomination['outScheduledQuantity'];\r\n if (!_.isNil(nomination['priorScheduledQuantity'])) {\r\n if (!_.isNil(nomination['outScheduledQuantity'])) {\r\n nomination.priorScheduledVariance = nomination['priorScheduledQuantity'] - nomination['outScheduledQuantity'];\r\n } else {\r\n nomination.priorScheduledVariance = nomination['inScheduledQuantity'] - nomination['priorScheduledQuantity'];\r\n }\r\n } else if (nomination['nomRequestStatus'] === HubStatuses.pending) {\r\n if (!_.isNil(nomination['outScheduledQuantity'])) {\r\n nomination.priorScheduledVariance = -nomination['outScheduledQuantity'];\r\n } else {\r\n nomination.priorScheduledVariance = nomination['inScheduledQuantity'];\r\n }\r\n }\r\n });\r\n this.model.pendingStsNominations = pendingStsNominationsResponse.pendingStsNominations;\r\n this.model.pendingStsNominationCount =\r\n _.chain(this.model.pendingStsNominations)\r\n .filter(p =>\r\n p.cycle === this.model.lastSearchParams.gasCycleCode && p.nomRequestStatus === HubStatuses.pending && !_.isNil(p.nomRequestId))\r\n .uniqBy(p => p.nomRequestId)\r\n .size()\r\n .value();\r\n this.model.queryDateTime = pendingStsNominationsResponse.queryDateTime;\r\n\r\n\r\n this.model.hubAccounts =\r\n _(this.model.pendingStsNominations)\r\n .groupBy(x => x.hubAccountId)\r\n .map((group, key) => ({hubAccountId: +key, noms: group}))\r\n .map(x =>\r\n _(x.noms)\r\n .groupBy(y => y.locationId)\r\n .map((group, key) => ({hubAccountId: x.hubAccountId, locationId: +key, noms: group}))\r\n .map(y =>\r\n new LocationInfo(y.hubAccountId, y.locationId, _.sumBy(y.noms, n => n.summaryNomVariance)))\r\n .value()\r\n )\r\n .flatten()\r\n .groupBy(x => x.hubAccountId)\r\n .map((group, key) =>\r\n new HubAccountInfo(+key, group))\r\n .value();\r\n }));\r\n }\r\n\r\n private getPendingStsNominations(gasDay: GasDay, gasCycleCode: string, customerId: number): Observable {\r\n return this.pendingStsNominationsService.queryPendingStsNominations(gasDay, gasCycleCode, customerId).pipe(\r\n concatMap(response => {\r\n return forkJoin([\r\n this.nominationEnterpriseEnrichmentService.enrichArray(response.pendingStsNominations, 'enterpriseId', 'enterprise'),\r\n this.nominationLocationEnrichmentService.enrichArray(response.pendingStsNominations, 'fromToLocation', 'fromToLocation'),\r\n this.nominationLocationEnrichmentService.enrichArray(response.pendingStsNominations, 'locationId', 'location'),\r\n this.nomGroupEnrichmentService.enrichArray(response.pendingStsNominations, 'nominationGroupId', 'nominationGroup'),\r\n this.nomGroupEnrichmentService.enrichArray(response.pendingStsNominations, 'hubAccountId', 'hubAccount')\r\n ]).pipe(map(() => response));\r\n }));\r\n }\r\n\r\n protected resetCompleted(): void {\r\n this.model.pendingStsNominations = null;\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n if (this.pendingStsNominationsDataGrid) {\r\n this.pendingStsNominationsDataGrid.instance.clearSorting();\r\n this.pendingStsNominationsDataGrid.instance.columnOption('fromToLocationName', {sortOrder: 'asc', sortIndex: 0});\r\n }\r\n }\r\n\r\n\r\n protected setDefaultSearchParams(): void {\r\n const gasDay = this.model.pipelineGasDay.allowableGasDay;\r\n\r\n this.setGasDayAndGasCycleCodeAndCustomer(gasDay as GasDay, null, null);\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return this.gasDayCycleParamValidator().isValid(params);\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.setGasDayAndGasCycleCodeAndCustomer(typedParams.asGasDay(PendingStsNominationsComponent.GasDayParam),\r\n typedParams.asString(PendingStsNominationsComponent.GasDayCodeParam), typedParams.asNullableNumber(PendingStsNominationsComponent.CustomerParam));\r\n }\r\n\r\n public stsRowOnRowPrepared(row) {\r\n if (row.rowType === 'data') {\r\n if (!_.isNil(row.data.nomRequestStatus) || row.data.nomRequestStatus === HubStatuses.pending ) {\r\n dx(row['rowElement']).addClass('pending');\r\n }\r\n }\r\n }\r\n\r\n public summaryRowOnRowPrepared(row) {\r\n if (row.rowType === 'group') {\r\n if (row.groupIndex === 0) {\r\n dx(row['rowElement']).addClass('tc-grid-group-row-customer');\r\n _.chain(row.summaryCells)\r\n .filter((cell) => cell['length'] > 0)\r\n .flattenDeep()\r\n .filter((cell) => cell['column'] !== 'enterpriseMnemonic')\r\n .each((cell) => cell['value'] = '')\r\n .commit();\r\n } else if (row.groupIndex === 1) {\r\n dx(row['rowElement']).addClass('tc-grid-group-row-location');\r\n }\r\n }\r\n }\r\n\r\n // For the summary row, get the value of the Variance. If it's anything other than zero, then set the color to red.\r\n public onCellPrepared = (e) => {\r\n if (e.rowType !== 'group') return;\r\n if (e.row.groupIndex !== 1) return;\r\n if (e.column.dataField !== 'summaryNomVariance') return;\r\n const si = _.find(e.summaryItems, i => i.column === 'summaryNomVariance');\r\n if (!_.isNil(si)) {\r\n if (si.value !== 0) {\r\n dx(e.cellElement).addClass('red');\r\n }\r\n }\r\n };\r\n\r\n private getEnterprises(gasDay: IGasDay): Observable {\r\n const serviceType = \"STS\";\r\n return this.nominationEnterpriseService.queryAllByPipeline({gasDay: gasDay, serviceType: serviceType}).pipe(\r\n concatMap(response => {\r\n return this.nominationEnterpriseEnrichmentService.enrichArray(response, 'id');\r\n }));\r\n }\r\n\r\n private defaultGasCycleCode(gasCycleStatusCollection: GasDayCycleStatusCollection): string {\r\n return gasCycleStatusCollection.defaultEarliestOpenStsGasCycle().gasCycle.code;\r\n }\r\n\r\n private setGasDayAndGasCycleCodeAndCustomer(gasDay: GasDay, gasCycleCode: string, customerId: number): void {\r\n this.model.searchParams.gasDay = gasDay;\r\n this.model.searchParams.gasCycleCode = gasCycleCode;\r\n this.model.searchParams.customerId = customerId;\r\n }\r\n\r\n private gasDayCycleParamValidator(): ParamValidator {\r\n const gasDayCycleQueryParams = ParamValidator.Standard();\r\n\r\n gasDayCycleQueryParams.isGasDay(PendingStsNominationsComponent.GasDayParam);\r\n gasDayCycleQueryParams.isString(PendingStsNominationsComponent.GasDayCodeParam);\r\n gasDayCycleQueryParams.isNumber(PendingStsNominationsComponent.CustomerParam, true);\r\n\r\n return gasDayCycleQueryParams;\r\n }\r\n\r\n mttAccountCheckBox_valueChanged (e: any, mttAccountDisplayValue: string) {\r\n const hubAccountId =\r\n _.find(this.model.pendingStsNominations, n => n.customerHubAccountDisplayValue === mttAccountDisplayValue)\r\n .hubAccountId;\r\n\r\n _.find(this.model.hubAccounts, x => x.hubAccountId === hubAccountId).isSelected = e.value;\r\n }\r\n\r\n isRejectButtonDisabled() {\r\n return _.every(this.model.hubAccounts, h => h.isSelected === false);\r\n }\r\n\r\n isApproveButtonsDisabled() {\r\n return !this.model.isPreviousCycleSchedule ||\r\n _.every(this.model.hubAccounts, h => h.isSelected === false) ||\r\n // or, any of the selected ones has a variance, then disable the button.\r\n _.chain(this.model.hubAccounts)\r\n .filter(h => h.isSelected === true)\r\n .some(h => h.hasVarianceAtAnyLocation === true)\r\n .value();\r\n }\r\n\r\n rejectClicked() {\r\n const selectedHubIds = _.chain(this.model.hubAccounts)\r\n .filter(h => h.isSelected === true)\r\n .map(h => h.hubAccountId)\r\n .value();\r\n\r\n this.pendingStsNominationsService\r\n .rejectPendingStsNominations(this.model.searchParams.gasDay, this.model.searchParams.gasCycleCode, this.model.queryDateTime, selectedHubIds)\r\n .subscribe(\r\n () => {\r\n this.searchClicked();\r\n this.alertService.addSuccessMessage(\"Success\", \"Pending Nominations Rejected.\" );\r\n });\r\n }\r\n\r\n approveClicked() {\r\n const selectedHubIds = _.chain(this.model.hubAccounts)\r\n .filter(h => h.isSelected === true)\r\n .map(h => h.hubAccountId)\r\n .value();\r\n\r\n this.pendingStsNominationsService\r\n .approvePendingStsNominations(this.model.searchParams.gasDay, this.model.searchParams.gasCycleCode, this.model.queryDateTime, selectedHubIds)\r\n .subscribe(\r\n () => {\r\n this.searchClicked();\r\n this.alertService.addSuccessMessage(\"Success\", \"Pending Nominations Approved.\" );\r\n });\r\n\r\n }\r\n\r\n private setDefaultCustomer(): void {\r\n const queryParams = this.activatedRoute.snapshot.queryParams;\r\n const queryParamsProvided = Object.keys(queryParams).length !== 0;\r\n const isInternalUser = !this.userService.user.isExternalUser;\r\n\r\n if (queryParamsProvided || isInternalUser) {\r\n return;\r\n }\r\n\r\n if (_.isEmpty(this.model.customers)) {\r\n const enterprise = { enterpriseId: this.userService.user.enterpriseId };\r\n\r\n this.nominationEnterpriseEnrichmentService\r\n .enrich(enterprise, 'enterpriseId').pipe(\r\n first())\r\n .subscribe(() => {\r\n this.alertService.addWarnMessage(`Warning`, `STS Service was not found for ${enterprise['shortName']} (${enterprise['mnemonic']}) for Gas Day ${this.model.searchParams.gasDay}`);\r\n });\r\n } else if (_.some(this.model.customers, x => x.id === Number(this.userService.user.enterpriseId))) {\r\n this.model.searchParams.customerId = Number(this.userService.user.enterpriseId);\r\n } else if (this.model.customers.length === 1) {\r\n this.model.searchParams.customerId = _.first(this.model.customers).id;\r\n }\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\nimport {GasCycle} from \"@model/gas-cycle\";\r\nimport {NominationEnterprise} from \"@shared/services/nomination/nomination-enterprise/nomination-enterprise.service\";\r\nimport {NominationLocation} from \"@shared/services/nomination/nomination-location/nomination-location.service\";\r\nimport {NominationGroup} from \"@shared/services/nomination/nomination-nom-group/nomination-nom-group.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {Observable} from \"rxjs\";\r\nimport {GasDayCycleStatusCollection} from \"@model/gas-day-cycle-status-collection\";\r\nimport {LookupItem} from \"app/shared/services/nomination/nomination-request/nomination-request.interface\";\r\nimport {IScheduledQuantitiesDto, IScheduledQuantityDto} from \"app/shared/services/nomination/scheduled-quantity/scheduled-quantity.service\";\r\n\r\nexport interface QueryNomGroupNamesByBusinessRights {\r\n queryNomGroupNamesByBusinessRights(): Observable;\r\n}\r\n\r\nexport class ScheduledQuantityAdjustmentsModel {\r\n private queryNomGroupNamesByBusinessRights: QueryNomGroupNamesByBusinessRights;\r\n isExternalUser: boolean;\r\n gasDayCycleStatuses: GasDayCycleStatusCollection = GasDayCycleStatusCollection.create();\r\n gasCycles: GasCycle[] = [];\r\n launchedGasCycles: GasCycle[] = [];\r\n customers: NominationEnterprise[] = [];\r\n locations: NominationLocation[] = [];\r\n allAccounts: NominationGroup[] = [];\r\n filteredAccounts: NominationGroup[] = [];\r\n minGasDay: GasDay;\r\n maxGasDay: GasDay;\r\n actualGasDay: GasDay;\r\n searchParams: ScheduledQuantityAdjustmentsModelSearchParams = new ScheduledQuantityAdjustmentsModelSearchParams();\r\n lastSearchParams: ScheduledQuantityAdjustmentsModelSearchParams;\r\n transactionReasonCodeChangedDictionary: { [id: number ]: boolean; } = {};\r\n detailedSearchResults: ScheduledQuantity[];\r\n cycleStatus: string;\r\n reasonCodeLookupList: LookupItem[];\r\n searchResults: any;\r\n\r\n showFilterSection: boolean = true;\r\n showGrid: boolean = false;\r\n accountsSelectDisabled: boolean = true;\r\n gasDay: GasDay;\r\n queryDateTime: Date;\r\n\r\n hasValidationErrors: boolean = false;\r\n modelDirty: boolean = false;\r\n\r\n isFullAdjustmentCapable: boolean = false;\r\n isOneDayAdjustmentCapable: boolean = false;\r\n\r\n constructor(queryNomGroupNamesByBusinessRights: QueryNomGroupNamesByBusinessRights) {\r\n this.queryNomGroupNamesByBusinessRights = queryNomGroupNamesByBusinessRights;\r\n }\r\n\r\n /*\r\n * Triggers the filtering of Customer -> Account Type -> Account\r\n */\r\n customerChangedUpdateDropdowns() {\r\n if (_.isNil(this.searchParams.enterpriseId)) {\r\n this.emptyHubAccounts();\r\n return;\r\n }\r\n this.queryNomGroupNamesByBusinessRights.queryNomGroupNamesByBusinessRights().subscribe(() => {\r\n this.rebuildAccountOptions();\r\n });\r\n }\r\n\r\n private emptyHubAccounts(): void {\r\n this.accountsSelectDisabled = true;\r\n this.searchParams.mttHubAccountId = null;\r\n this.filteredAccounts = [];\r\n }\r\n\r\n public rebuildAccountOptions(): void {\r\n this.filteredAccounts = _.sortBy(this.allAccounts);\r\n\r\n if (!(!_.isNil(this.searchParams.mttHubAccountId) && !_.isNil(_.find(this.filteredAccounts, x => x.id === this.searchParams.mttHubAccountId)))) {\r\n this.searchParams.mttHubAccountId = null;\r\n // the assumption is that filter returns an empty array if there is no match on enterpriseId\r\n if (this.filteredAccounts.length === 1) {\r\n this.searchParams.mttHubAccountId = this.filteredAccounts[0].id;\r\n }\r\n this.accountsSelectDisabled = false;\r\n }\r\n }\r\n}\r\n\r\nexport class ScheduledQuantityAdjustmentsModelSearchParams {\r\n gasDay: GasDay;\r\n gasCycleCode: string = GasCycle.TimelyCycleCode;\r\n locationId?: number;\r\n mttHubAccountId: number;\r\n enterpriseId: number;\r\n}\r\n\r\nexport class ScheduledQuantities {\r\n cycleStatus: string;\r\n queryDateTime: Date;\r\n scheduledQuantities: ScheduledQuantity[] = [];\r\n\r\n public static create(dto: IScheduledQuantitiesDto): ScheduledQuantities {\r\n const scheduledQuantities = new ScheduledQuantities();\r\n scheduledQuantities.cycleStatus = dto.cycleStatus;\r\n scheduledQuantities.queryDateTime = dto.queryDateTime;\r\n\r\n _.forEach(dto.scheduledQuantities, x => {\r\n scheduledQuantities.scheduledQuantities.push(ScheduledQuantity.create(x));\r\n });\r\n return scheduledQuantities;\r\n }\r\n}\r\n\r\nexport class ScheduledQuantity {\r\n dailyTransactionId: number;\r\n dailyFuelTransactionId: number;\r\n bidPrice: number;\r\n counterParty: string;\r\n cycle: string;\r\n fromToLocation: number;\r\n inNominatedQuantity: number;\r\n inScheduledQuantity: number;\r\n locationId: number;\r\n nominationGroupId: number;\r\n outNominatedQuantity: number;\r\n outScheduledQuantity: number;\r\n packageId: string;\r\n rank: number;\r\n reasonCode: string;\r\n taxZeroRated: boolean;\r\n transactionType: string;\r\n typeOfService: string;\r\n serviceOption: string;\r\n upStreamDownStreamContract: string;\r\n submittedBy: string;\r\n scheduledEpsq: number;\r\n customerHubAccountDisplayValue: string;\r\n\r\n get fullTypeOfService(): string {\r\n if (this.typeOfService) {\r\n return this.typeOfService + (this.serviceOption ? ' ' + this.serviceOption : '');\r\n }\r\n return \"\";\r\n }\r\n\r\n public static create(dto: IScheduledQuantityDto): ScheduledQuantity {\r\n const scheduledQuantity = new ScheduledQuantity();\r\n _.assign(scheduledQuantity, dto);\r\n return scheduledQuantity;\r\n }\r\n}\r\n","\r\nimport {map} from 'rxjs/operators';\r\nimport {GasDay} from \"app/shared/classes/gas-day\";\r\nimport {Injectable} from \"@angular/core\";\r\nimport {GCTSHttpParams} from \"app/shared/classes/gcts-http-params\";\r\nimport {NominationResourceService} from \"app/shared/resources/nominations-resource.service\";\r\nimport {Observable} from \"rxjs\";\r\nimport {ScheduledQuantities} from \"app/gcts/nomination/scheduled-quantity-adjustments/scheduled-quantity-adjustments.model\";\r\n\r\n// Query Request\r\nexport class ScheduledQuantityRequest {\r\n gasDay: GasDay;\r\n gasCycleCode?: string = 'T';\r\n locationId?: number;\r\n mttHubAccountId: number;\r\n enterpriseId: number;\r\n}\r\n\r\n// Query Response\r\nexport interface IScheduledQuantitiesDto {\r\n queryDateTime: Date;\r\n cycleStatus: string;\r\n scheduledQuantities: IScheduledQuantityDto[];\r\n}\r\n\r\nexport interface IScheduledQuantityDto {\r\n dailyTransactionId: number;\r\n dailyFuelTransactionId: number;\r\n bidPrice: number;\r\n counterParty: string;\r\n cycle: string;\r\n fromToLocation: number;\r\n inNominatedQuantity: number;\r\n inScheduledQuantity: number;\r\n locationId: number;\r\n nominationGroupId: number;\r\n outNominatedQuantity: number;\r\n outScheduledQuantity: number;\r\n packageId: string;\r\n rank: number;\r\n reasonCode: string;\r\n taxZeroRated: boolean;\r\n transactionType: string;\r\n typeOfService: string;\r\n serviceOption: string;\r\n upStreamDownStreamContract: string;\r\n submittedBy: string;\r\n}\r\n\r\n// Update Request\r\nexport class ScheduledQuantityUpdateRequest {\r\n gasDay: GasDay;\r\n gasCycleCode: string;\r\n queryDateTime: Date;\r\n scheduledQuantityUpdateDetails: ScheduledQuantityUpdateDetail[];\r\n}\r\n\r\nexport class ScheduledQuantityUpdateDetail {\r\n constructor(public dailyTransactionId: number,\r\n public reasonCode: string,\r\n public scheduledQuantity: number) {\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport class ScheduledQuantityService {\r\n\r\n constructor(private nominationResource: NominationResourceService) {\r\n }\r\n\r\n queryScheduledQuantities(searchParams: ScheduledQuantityRequest): Observable {\r\n return this.nominationResource.get('/scheduledQuantities', true, this.buildSearchParams(searchParams)).pipe(\r\n map(res =>\r\n ScheduledQuantities.create(res)\r\n ));\r\n }\r\n\r\n private buildSearchParams(searchParams: ScheduledQuantityRequest): GCTSHttpParams {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n\r\n params.setNumber('mttHubAccountId', searchParams.mttHubAccountId);\r\n params.setNumber('enterpriseId', searchParams.enterpriseId);\r\n params.setGasDay(searchParams.gasDay);\r\n\r\n if (searchParams.gasCycleCode != null) {\r\n params.set('gasCycleCode', searchParams.gasCycleCode);\r\n }\r\n if (searchParams.locationId != null) {\r\n params.setNumber('locationId', searchParams.locationId);\r\n }\r\n\r\n return params;\r\n }\r\n\r\n public updateScheduledQuantities(request: ScheduledQuantityUpdateRequest): Observable {\r\n const body = {\r\n gasDay: request.gasDay.toString(),\r\n gasCycleCode: request.gasCycleCode,\r\n queryDateTime: request.queryDateTime,\r\n scheduledQuantityUpdateDetails: request.scheduledQuantityUpdateDetails,\r\n };\r\n\r\n return this.nominationResource.postWithNoResponseBody('/scheduledQuantities', body);\r\n }\r\n}\r\n","export class ReductionReasonCode {\r\n\r\n public static AOK: ReductionReasonCode = new ReductionReasonCode('AOK');\r\n public static PCC: ReductionReasonCode = new ReductionReasonCode('PCC');\r\n public static HB: ReductionReasonCode = new ReductionReasonCode('HB');\r\n public static DSR: ReductionReasonCode = new ReductionReasonCode('DSR');\r\n public static USR: ReductionReasonCode = new ReductionReasonCode('USR');\r\n public static TTR: ReductionReasonCode = new ReductionReasonCode('TTR');\r\n public static CPR: ReductionReasonCode = new ReductionReasonCode('CPR');\r\n public static IPA: ReductionReasonCode = new ReductionReasonCode('IPA');\r\n\r\n code: string;\r\n name: string;\r\n\r\n public static All(): ReductionReasonCode[] {\r\n return [\r\n ReductionReasonCode.AOK,\r\n ReductionReasonCode.PCC,\r\n ReductionReasonCode.HB,\r\n ReductionReasonCode.DSR,\r\n ReductionReasonCode.USR,\r\n ReductionReasonCode.TTR,\r\n ReductionReasonCode.CPR,\r\n ReductionReasonCode.IPA\r\n ];\r\n }\r\n\r\n constructor(code: string) {\r\n this.code = code;\r\n this.name = code;\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Customer: {{model.lastSearchParams?.enterpriseId | displayName: 'id' : 'displayValue' : model.customers}}\r\n Gas Day: {{model.lastSearchParams?.gasDay | gasDayFormat}}\r\n Cycle (CCT): {{model.lastSearchParams?.gasCycleCode | displayName: 'code' : 'displayValue' : model.gasCycles : 'EOD' }}\r\n Location: {{model.lastSearchParams?.locationId | displayName: 'id' : 'name' : model.locations}}\r\n Cycle Status: {{model.cycleStatus}}\r\n \r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.gasDay | gasDayFormat }}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.gasCycleCode | displayName: 'code' : 'displayValue' : model.gasCycles : 'EOD' }}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.enterpriseId | displayName: 'id' : 'displayValue' : model.customers}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.locationId | displayName: 'id' : 'name' : model.locations}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.mttHubAccountId | displayName: 'id' : 'mnemonic' : model.allAccounts}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.cycleStatus}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Number of results found: {{getSearchResults().length }}\r\n
\r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n \r\n
\r\n
{{data.displayValue}}
\r\n
\r\n\r\n \r\n \r\n
\r\n
{{data.displayValue}}
\r\n
\r\n\r\n \r\n \r\n
\r\n
Txn Type
\r\n
\r\n \r\n
\r\n
Account
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
Package Id
\r\n
\r\n \r\n
\r\n
Up Dn Contract
\r\n
\r\n \r\n
\r\n
Up Dn ID
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n
\r\n
{{data.data.reasonCode}}
\r\n
\r\n
\r\n
\r\n
Rsn Code
\r\n
\r\n\r\n \r\n
\r\n
Tax Zero Rated
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
{{data.data.inScheduledQuantity == null ? ' ' : data.data.inScheduledQuantity | numberFormat : false }}
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n
{{data.data.outScheduledQuantity == null ? ' ' : data.data.outScheduledQuantity | numberFormat : false}}
\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n\r\n","\r\nimport {forkJoin, of, Observable} from 'rxjs';\r\n\r\nimport {map, concatMap, tap} from 'rxjs/operators';\r\nimport * as _ from 'lodash';\r\nimport * as dx from \"devextreme/core/renderer\";\r\nimport * as $ from 'jquery';\r\nimport {AfterViewInit, ChangeDetectorRef, Component, ViewChild} from '@angular/core';\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {ActivatedRoute, Params, Router} from '@angular/router';\r\nimport {NominationSystemService} from \"@shared/services/nomination/nomination-system/nomination-system.service\";\r\nimport {AlertService} from \"app/shared/services/webapp/alert/alert.service\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {GasCycleService} from \"@shared/services/nomination/gas-cycle/gas-cycle.service\";\r\nimport {\r\n EnterpriseSearchParams, NominationEnterprise,\r\n NominationEnterpriseService\r\n} from \"@shared/services/nomination/nomination-enterprise/nomination-enterprise.service\";\r\nimport {NominationEnterpriseEnrichmentService} from \"@shared/services/nomination/nomination-enterprise-enrichment/nomination-enterprise-enrichment.service\";\r\nimport {NominationLocationEnrichmentService} from \"@shared/services/nomination/nomination-location-enrichment/nomination-location-enrichment.service\";\r\nimport {NominationNomGroupEnrichmentService} from \"@shared/services/nomination/nomination-nom-group-enrichment/nomination-nom-group-enrichment.service\";\r\nimport {\r\n LocationSearchParams, NominationLocation, NominationLocationService\r\n} from \"@shared/services/nomination/nomination-location/nomination-location.service\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {\r\n AccountSummaryDetailsService\r\n} from \"@shared/services/nomination/account-summary-details/account-summary-details.service\";\r\nimport {\r\n NominationGroup,\r\n NominationNomGroupService\r\n} from '@shared/services/nomination/nomination-nom-group/nomination-nom-group.service';\r\nimport {BusinessRight} from \"@model/business-right\";\r\nimport {\r\n AccountType,\r\n QueryNomGroupNamesByBusinessRights\r\n} from \"app/gcts/nomination/account-summary/account-summary-model\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {UserService} from \"@shared/services/webapp/user/user-service\";\r\nimport {GasDayCycleStatusCollection} from \"@model/gas-day-cycle-status-collection\";\r\nimport {IGasDay} from \"@model/gas-day-month.interface\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {GasCycleLogic} from \"@model/gas-cycle.logic\";\r\nimport {\r\n ScheduledQuantityRequest,\r\n ScheduledQuantityService,\r\n ScheduledQuantityUpdateDetail,\r\n ScheduledQuantityUpdateRequest\r\n} from \"app/shared/services/nomination/scheduled-quantity/scheduled-quantity.service\";\r\nimport {FuelRatioService} from \"app/shared/services/nomination/fuel-ratio/fuel-ratio.service\";\r\nimport {ReductionReasonCode} from \"app/shared/classes/reduction-reason-code\";\r\nimport {LookupItem} from \"app/shared/services/nomination/nomination-request/nomination-request.interface\";\r\nimport {DataGridHelpers} from \"app/shared/classes/datagrid-helpers\";\r\nimport {BaseDatagridHandler} from \"app/shared/classes/base-datagrid-handlers\";\r\nimport {CapabilitiesService} from \"app/shared/services/webapp/capabilities/capabilities.service\";\r\nimport {SessionService} from \"app/shared/services/webapp/session/session.service\";\r\nimport {ScheduledQuantities, ScheduledQuantity, ScheduledQuantityAdjustmentsModel} from \"app/gcts/nomination/scheduled-quantity-adjustments/scheduled-quantity-adjustments.model\";\r\nimport {SimpleGasDayCycleStatus} from \"@model/simple-gas-day-cycle-status\";\r\n\r\n@Component({\r\n selector: 'app-scheduled-quantity-adjustments',\r\n templateUrl: './scheduled-quantity-adjustments.component.html',\r\n styleUrls: ['./scheduled-quantity-adjustments.component.css']\r\n})\r\nexport class ScheduledQuantityAdjustmentsComponent extends BaseSearchComponent implements AfterViewInit, QueryNomGroupNamesByBusinessRights {\r\n public model: ScheduledQuantityAdjustmentsModel = new ScheduledQuantityAdjustmentsModel(this);\r\n private setToDefaultCustomer: boolean = true;\r\n private editCellStyle = \"editable-cell\";\r\n private baseDatagridHandler: BaseDatagridHandler;\r\n private goToFirstTab = false;\r\n\r\n @ViewChild(DxDataGridComponent) dataGrid: DxDataGridComponent;\r\n @ViewChild('gasDay') gasDayControl;\r\n @ViewChild('hubAccount') accountCustomerHubControl;\r\n @ViewChild('submitButton') submitControl;\r\n\r\n constructor(protected appService: AppService,\r\n protected router: Router,\r\n protected activatedRoute: ActivatedRoute,\r\n protected alertService: AlertService,\r\n private nominationSystemService: NominationSystemService,\r\n private gasCycleService: GasCycleService,\r\n private nominationEnterpriseService: NominationEnterpriseService,\r\n private nominationEnterpriseEnrichmentService: NominationEnterpriseEnrichmentService,\r\n private nominationLocationService: NominationLocationService,\r\n private nomGroupEnrichmentService: NominationNomGroupEnrichmentService,\r\n private nominationLocationEnrichmentService: NominationLocationEnrichmentService,\r\n private customerHubAccountBalanceDetailsService: AccountSummaryDetailsService,\r\n private scheduledQuantityService: ScheduledQuantityService,\r\n private nominationNomGroupService: NominationNomGroupService,\r\n private fuelRatioService: FuelRatioService,\r\n public cdr: ChangeDetectorRef,\r\n private userService: UserService,\r\n private capabilitiesService: CapabilitiesService,\r\n private sessionService: SessionService) {\r\n super('Scheduled Quantity Adjustments', appService, activatedRoute, router, alertService);\r\n this.appService.hideMenu();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.baseDatagridHandler = new BaseDatagridHandler(\r\n null,\r\n this.accountCustomerHubControl.valueAccessor.selectBox.element.nativeElement,\r\n this.submitControl.nativeElement,\r\n BaseDatagridHandler.TabMode.Horizontal,\r\n this.gridBlurCallback);\r\n }\r\n\r\n public onCellPrepared(e) {\r\n if (e.rowType !== 'data') return;\r\n\r\n const cellElement = dx(e.cellElement),\r\n numberEditorElement = cellElement.find('.dx-numberbox'),\r\n numberBox = numberEditorElement.data('dxNumberBox');\r\n\r\n if (e.column.dataField === 'inScheduledQuantity' && numberBox) {\r\n numberBox.on('change', () => {\r\n const currentRowData = e.data;\r\n if (currentRowData.transactionType !== 'Transport') return;\r\n\r\n const transportTransaction = _.find(this.model.detailedSearchResults, detail =>\r\n detail.dailyTransactionId === currentRowData.dailyTransactionId && !_.isNil(detail.outNominatedQuantity));\r\n\r\n if (_.isNil(transportTransaction)) return;\r\n\r\n transportTransaction.outScheduledQuantity = e.value;\r\n\r\n if (_.isNil(transportTransaction.dailyFuelTransactionId)) return;\r\n\r\n this.recalculateFuel(\r\n transportTransaction.dailyFuelTransactionId,\r\n transportTransaction.fullTypeOfService,\r\n transportTransaction.fromToLocation,\r\n transportTransaction.locationId,\r\n e.value);\r\n setTimeout(() => this.dataGrid.instance.saveEditData());\r\n });\r\n\r\n numberBox.on('keyDown', (x) => {\r\n DataGridHelpers.filterOutNonIntegerKeys(x);\r\n });\r\n }\r\n\r\n if (e.column.dataField === 'outScheduledQuantity' && numberBox) {\r\n numberBox.on('change', () => {\r\n const currentRowData = e.data;\r\n\r\n if (currentRowData.transactionType !== 'Transport') return;\r\n\r\n const transportTransaction = _.find(this.model.detailedSearchResults, detail =>\r\n detail.dailyTransactionId === currentRowData.dailyTransactionId && !_.isNil(detail.inNominatedQuantity));\r\n\r\n if (!_.isNil(transportTransaction)) {\r\n transportTransaction.inScheduledQuantity = e.value;\r\n }\r\n\r\n if (_.isNil(currentRowData.dailyFuelTransactionId)) return;\r\n\r\n this.recalculateFuel(\r\n currentRowData.dailyFuelTransactionId,\r\n currentRowData.fullTypeOfService,\r\n currentRowData.fromToLocation,\r\n currentRowData.locationId,\r\n e.value);\r\n setTimeout(() => this.dataGrid.instance.saveEditData());\r\n });\r\n\r\n numberBox.on('keyDown', (x) => {\r\n DataGridHelpers.filterOutNonIntegerKeys(x);\r\n });\r\n }\r\n }\r\n\r\n public onCustomerSelectionChanged = (): void => this.model.customerChangedUpdateDropdowns();\r\n\r\n public onEditorPrepared = (e: any): void => {\r\n dx(e.editorElement).addClass(this.editCellStyle);\r\n };\r\n\r\n public onEditorPreparing = (e: any): void => {\r\n this.baseDatagridHandler.onEditorPreparing(e, this.dataGrid, this.isCellEditable);\r\n\r\n if (e.parentType === 'dataRow' && e.dataField !== undefined) {\r\n\r\n e.cancel = !this.isCellEditable(e.row, e.dataField);\r\n\r\n // Prevents non-editable fields (e.g. Nominated Fuel TCPL Quantity) from losing their value when clicked.\r\n // Would prefer not to have to use jQuery to do this, but dx() does not seem available at this time either.\r\n $(e.editorElement).append($('' + (_.isNil(e.value) ? '' : e.value) + ''));\r\n }\r\n };\r\n\r\n public onKeyDown(e) {\r\n this.baseDatagridHandler.onKeyDown(e, this.dataGrid, this.isCellEditable);\r\n }\r\n\r\n public onRowPrepared(row) {\r\n if (row.rowType === 'group') {\r\n if (row.groupIndex === 0) {\r\n dx(row['rowElement']).addClass('tc-grid-group-row-customer');\r\n _\r\n .chain(row.summaryCells)\r\n .filter((cell) => cell['length'] > 0)\r\n .flattenDeep()\r\n .filter((cell) => cell['column'] !== 'enterpriseMnemonic')\r\n .each((cell) => cell['value'] = '')\r\n .commit();\r\n } else if (row.groupIndex === 1) {\r\n dx(row['rowElement']).addClass('tc-grid-group-row-location');\r\n }\r\n }\r\n }\r\n\r\n public onRowUpdating = (e): void => {\r\n const inScheduledQuantityChangedValue = e.newData.inScheduledQuantity;\r\n const outScheduledQuantityChangedValue = e.newData.outScheduledQuantity;\r\n const reasonCodeChangedValue = e.newData.reasonCode;\r\n\r\n const dailyTransactionId = e.key.dailyTransactionId;\r\n\r\n if (reasonCodeChangedValue) {\r\n this.updateReasonCodeOnAssociatedTransactions(dailyTransactionId, reasonCodeChangedValue);\r\n this.model.transactionReasonCodeChangedDictionary[dailyTransactionId] = true;\r\n }\r\n\r\n if (inScheduledQuantityChangedValue === undefined && outScheduledQuantityChangedValue === undefined) {\r\n return;\r\n }\r\n\r\n this.updateReasonCodeOnAssociatedTransactions(dailyTransactionId, ReductionReasonCode.IPA.code, true);\r\n };\r\n\r\n public onRowValidating(e: any): void {\r\n this.model.modelDirty = !!e.newData;\r\n if (this.model.modelDirty && e.brokenRules.length > 0) {\r\n this.model.hasValidationErrors = true;\r\n return;\r\n }\r\n this.model.hasValidationErrors = false;\r\n }\r\n\r\n public allowUpdating(): boolean {\r\n // Quantity updates only allowed on scheduled non-EOD cycles\r\n return !_.isNil(this.model.lastSearchParams.gasCycleCode) &&\r\n this.model.gasDayCycleStatuses.isCycleScheduled(this.model.lastSearchParams.gasCycleCode) &&\r\n this.hasRoleToSubmit();\r\n }\r\n\r\n public isCellEditable = (row, dataField: string): boolean => {\r\n if (!this.isRowEditable(row)) return false;\r\n\r\n switch (dataField) {\r\n case \"inScheduledQuantity\" :\r\n return !_.isNil(row.data.inNominatedQuantity);\r\n case \"outScheduledQuantity\" :\r\n return !_.isNil(row.data.outNominatedQuantity);\r\n case \"reasonCode\" :\r\n return true;\r\n default:\r\n return false;\r\n }\r\n };\r\n\r\n public queryNomGroupNamesByBusinessRights(): Observable {\r\n const allAllowableBusinessRights = _.map(this.buildAccountTypes(), accountType => accountType.businessRight);\r\n\r\n return this.nominationNomGroupService.queryNomGroupNamesByBusinessRights(this.model.searchParams.gasDay, allAllowableBusinessRights, this.model.searchParams.enterpriseId).pipe(concatMap(nomGroups => {\r\n this.model.allAccounts = nomGroups;\r\n return of(null);\r\n }));\r\n }\r\n\r\n public getSearchResults() {\r\n return this.model.detailedSearchResults;\r\n }\r\n\r\n public calculateVariance(data) {\r\n const inQty = data.inScheduledQuantity ? data.inScheduledQuantity : 0;\r\n const outQty = data.outScheduledQuantity ? data.outScheduledQuantity : 0;\r\n return inQty - outQty;\r\n }\r\n\r\n getSQText() : string {\r\n return SimpleGasDayCycleStatus.getSQText(this.model.cycleStatus);\r\n }\r\n\r\n public toggleFilterSectionClicked(): void {\r\n this.model.showFilterSection = !this.model.showFilterSection;\r\n }\r\n\r\n public gasCyclePlaceholder(): string {\r\n return GasCycleLogic.placeholder(this.model.gasDayCycleStatuses);\r\n }\r\n\r\n public isGasCycleRequired(): boolean {\r\n return GasCycleLogic.isRequired(this.model.gasDayCycleStatuses);\r\n }\r\n\r\n public submitClicked(): void {\r\n if (this.model.hasValidationErrors) {\r\n return;\r\n }\r\n\r\n // TODO: TA - can't believe I wrote this.\r\n // why not call saveEditData().then()\r\n // look to improve when deadlines are not in the air\r\n if (this.dataGrid.instance.hasEditData()) {\r\n setTimeout(() => this.submitClicked(), 200);\r\n return;\r\n }\r\n\r\n const scheduledQuantityDetails: ScheduledQuantityUpdateDetail[] = new Array();\r\n this.model.detailedSearchResults.forEach(item => {\r\n const scheduledQuantityUpdateDetail = new ScheduledQuantityUpdateDetail(item.dailyTransactionId, item.reasonCode, this.getScheduledQuantityForUpdate(item));\r\n scheduledQuantityDetails.push(scheduledQuantityUpdateDetail);\r\n });\r\n\r\n const request = this.buildUpdateRequest(scheduledQuantityDetails);\r\n\r\n this.scheduledQuantityService.updateScheduledQuantities(request).subscribe(\r\n () => {\r\n this.model.searchParams = this.model.lastSearchParams; // Search based on last search params because this is a submit\r\n this.model.rebuildAccountOptions(); // Rebuild Filtered Account List\r\n\r\n this.performSearch().subscribe(() => {});\r\n });\r\n }\r\n\r\n public isSubmitEnabled(): boolean {\r\n return !_.isNil(this.model.detailedSearchResults) &&\r\n this.model.detailedSearchResults.length > 0 &&\r\n this.model.modelDirty &&\r\n !this.model.hasValidationErrors;\r\n }\r\n\r\n public validateInScheduledIsNotBlank = e => {\r\n const inNominatedQty = e.data.inNominatedQuantity;\r\n\r\n if (!_.isNil(inNominatedQty)) {\r\n return (!_.isNil(e.value));\r\n }\r\n return true;\r\n };\r\n\r\n public validateOutScheduledIsNotBlank = e => {\r\n const outNominatedQty = e.data.outNominatedQuantity;\r\n\r\n if (!_.isNil(outNominatedQty)) {\r\n return (!_.isNil(e.value));\r\n }\r\n return true;\r\n };\r\n\r\n public validateInScheduledQtyLessThanOrEqualToInNomQty = e => {\r\n return e.value <= e.data.inNominatedQuantity;\r\n };\r\n\r\n public validateOutScheduledQtyLessThanOrEqualToOutNomQty = e => {\r\n return e.value <= e.data.outNominatedQuantity;\r\n };\r\n\r\n public validateScheduledQtyIsAnInteger = e => {\r\n return e.value % 1 === 0;\r\n };\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return this.validator().isValid(params);\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams.gasDay = this.model.gasDay;\r\n this.model.searchParams.gasCycleCode = null;\r\n this.model.searchParams.locationId = undefined;\r\n this.model.searchParams.enterpriseId = undefined;\r\n this.model.searchParams.mttHubAccountId = undefined;\r\n }\r\n\r\n\r\n /**\r\n * Protected Methods\r\n */\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n const gasDay = typedParams.asGasDay('gasDay');\r\n\r\n this.model.searchParams.gasDay = gasDay;\r\n this.model.searchParams.gasCycleCode = typedParams.asNullableString('gasCycleCode');\r\n this.model.searchParams.locationId = typedParams.asNullableNumber('locationId');\r\n this.model.searchParams.enterpriseId = typedParams.asNumber('enterpriseId');\r\n this.model.searchParams.mttHubAccountId = typedParams.asNumber('mttHubAccountId');\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n const serviceCalls: Observable[] = [\r\n this.nominationSystemService.pipelineGasDay(),\r\n\r\n // Doing these 3 requests at once with the Observable set to .share() means they\r\n // all get ran at the same time turning 3 queries into 1 query.\r\n this.nominationEnterpriseEnrichmentService.fetch(),\r\n this.nominationLocationEnrichmentService.fetch(),\r\n this.nomGroupEnrichmentService.fetch()\r\n ];\r\n\r\n return forkJoin(serviceCalls).pipe(tap(response => {\r\n const pipelineGasDay = response[0];\r\n\r\n if (!pipelineGasDay.hasGasDayCycles()) {\r\n this.alertService.addWarnMessage(\"Warning\", \"There are no Gas Day Cycles for the pipeline.\");\r\n return;\r\n }\r\n\r\n // Gas day defaults to the greater of the current gas day or the earliest selectable gas day\r\n // for the pipeline.\r\n this.model.gasDay = pipelineGasDay.actualGasDay.isGreaterThan(pipelineGasDay.earliestSelectableGasDay) ?\r\n pipelineGasDay.actualGasDay :\r\n pipelineGasDay.earliestSelectableGasDay;\r\n this.model.minGasDay = pipelineGasDay.minGasDayForCycleStatus.isLessThan(this.model.gasDay) ?\r\n pipelineGasDay.minGasDayForCycleStatus :\r\n this.model.gasDay;\r\n this.model.maxGasDay = pipelineGasDay.maxGasDayForCycleStatus.isGreaterThan(this.model.gasDay) ?\r\n pipelineGasDay.maxGasDayForCycleStatus :\r\n this.model.gasDay;\r\n this.model.actualGasDay = pipelineGasDay.actualGasDay;\r\n\r\n this.model.isOneDayAdjustmentCapable = this.capabilitiesService.hasCapabilities(['NominationRequests-OneDay-Adjustment'], this.userService.user, this.sessionService.getPipeline().code);\r\n this.model.isFullAdjustmentCapable = this.capabilitiesService.hasCapabilities(['NominationRequests-Full-Adjustment'], this.userService.user, this.sessionService.getPipeline().code);\r\n }));\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n const gasDay = this.model.searchParams.gasDay ?\r\n this.model.searchParams.gasDay :\r\n this.model.gasDay;\r\n const user = this.userService.user;\r\n if (!this.userService.user.isInternalUser || this.userService.user.isAssumingIdentity) {\r\n this.model.isExternalUser = true;\r\n }\r\n\r\n const serviceCalls: Observable[] = [\r\n this.gasCycleService.queryGasDayCycleStatusesFor(gasDay), // 0\r\n this.getEnterprises(gasDay), // 1\r\n this.nominationLocationService.queryLocationNames(new LocationSearchParams(gasDay,true,gasDay,false,_.isNil(user.enterpriseId),false)) // 2\r\n ];\r\n\r\n return forkJoin(serviceCalls).pipe(tap(responses => {\r\n this.model.reasonCodeLookupList = _.map(ReductionReasonCode.All(), x => new LookupItem(x.code, x.code));\r\n\r\n // 0 - Gas Day Cycle Status\r\n const gasDayCycleStatuses = responses[0];\r\n this.model.gasDayCycleStatuses = gasDayCycleStatuses;\r\n this.model.gasCycles = gasDayCycleStatuses.gasCycles();\r\n this.model.launchedGasCycles = gasDayCycleStatuses.defaultGasDayCycleStatuses().gasCycles();\r\n\r\n if (_.isNil(this.model.searchParams.gasCycleCode)) {\r\n this.model.searchParams.gasCycleCode = this.defaultGasCycleCode();\r\n }\r\n\r\n // 1 - Enterprise\r\n this.model.customers = _.orderBy( responses[1], x => x.displayValue);\r\n\r\n // 2 - Locations\r\n this.model.locations = _.orderBy(responses[2], x => x.name);\r\n\r\n this.model.customerChangedUpdateDropdowns();\r\n this.defaultSelectedCustomer();\r\n this.setToDefaultCustomer = false;\r\n\r\n this.verifyForValidSelectedParameters();\r\n }));\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n const searchRequest = this.buildSearchRequest();\r\n\r\n return this.getScheduledQuantities(searchRequest).pipe(tap(response => {\r\n // Set dictionary to keep track if reason code was changed by the user (otherwise we change it to IPA on change of TCPL quantities)\r\n _.forEach(response.scheduledQuantities, x => {\r\n this.model.transactionReasonCodeChangedDictionary[x.dailyTransactionId] = false;\r\n });\r\n\r\n // Set the customer display value\r\n const customer = _.find(this.model.customers, x => x.id === this.model.lastSearchParams.enterpriseId);\r\n const account = _.find(this.model.filteredAccounts, x => x.id === this.model.lastSearchParams.mttHubAccountId);\r\n _.forEach(response.scheduledQuantities, x => x.customerHubAccountDisplayValue = customer.shortName + ' ' + account.mnemonic);\r\n\r\n this.model.cycleStatus = response.cycleStatus;\r\n this.model.detailedSearchResults = response.scheduledQuantities;\r\n this.model.modelDirty = false;\r\n this.model.hasValidationErrors = false;\r\n this.goToFirstTab = this.allowUpdating() && response.scheduledQuantities.length > 0;\r\n this.model.queryDateTime = response.queryDateTime;\r\n this.model.showGrid = true;\r\n }));\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n return {\r\n gasDay: this.model.searchParams.gasDay,\r\n gasCycleCode: this.model.searchParams.gasCycleCode,\r\n enterpriseId: this.model.searchParams.enterpriseId,\r\n locationId: this.model.searchParams.locationId,\r\n mttHubAccountId: this.model.searchParams.mttHubAccountId\r\n };\r\n }\r\n\r\n /**\r\n * Override Methods\r\n */\r\n\r\n protected resetCompleted(): void {\r\n this.model.searchResults = null;\r\n this.model.detailedSearchResults = null;\r\n this.setToDefaultCustomer = true;\r\n this.model.modelDirty = false;\r\n this.model.hasValidationErrors = false;\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n // TODO: Implement me\r\n }\r\n\r\n /**\r\n * Private Methods\r\n */\r\n\r\n private buildSearchRequest(): ScheduledQuantityRequest {\r\n const request = new ScheduledQuantityRequest();\r\n request.gasDay = this.model.searchParams.gasDay;\r\n request.gasCycleCode = GasCycleLogic.buildGasCycleCodeForRequest(this.model.gasDayCycleStatuses, this.model.searchParams.gasCycleCode);\r\n request.enterpriseId = this.model.searchParams.enterpriseId;\r\n request.locationId = this.model.searchParams.locationId;\r\n request.mttHubAccountId = this.model.searchParams.mttHubAccountId;\r\n return request;\r\n }\r\n\r\n private buildUpdateRequest(details: ScheduledQuantityUpdateDetail[]): ScheduledQuantityUpdateRequest {\r\n const request = new ScheduledQuantityUpdateRequest();\r\n request.gasDay = this.model.lastSearchParams.gasDay;\r\n request.gasCycleCode = GasCycleLogic.buildGasCycleCodeForRequest(this.model.gasDayCycleStatuses, this.model.lastSearchParams.gasCycleCode);\r\n request.scheduledQuantityUpdateDetails = details;\r\n request.queryDateTime = this.model.queryDateTime;\r\n return request;\r\n }\r\n\r\n private validator(): ParamValidator {\r\n const paramValidator = ParamValidator.Standard();\r\n\r\n paramValidator.isGasDay('gasDay');\r\n paramValidator.isString('gasCycleCode', true);\r\n\r\n return paramValidator;\r\n }\r\n\r\n private verifyForValidSelectedParameters(): void {\r\n // Reset Gas Cycle, if the current selected gas cycle does not exist in the new Gas Cycles\r\n this.model.searchParams.gasCycleCode = GasCycleLogic.verifySelectedGasCycleCode(this.model.gasDayCycleStatuses, this.model.gasCycles, this.model.searchParams.gasCycleCode);\r\n }\r\n\r\n private getEnterprises(gasDay: IGasDay): Observable {\r\n return this.nominationEnterpriseService.queryAllByPipeline({gasDay: gasDay, includeInactive: true, accountBusinessRights: [BusinessRight.MultiTitleTransfer] }).pipe(\r\n concatMap(response => {\r\n return this.nominationEnterpriseEnrichmentService.enrichArray(response, 'id');\r\n }));\r\n }\r\n\r\n private hasRoleToSubmit(): boolean {\r\n if (this.model.isFullAdjustmentCapable) {\r\n return true;\r\n }\r\n if (this.model.isOneDayAdjustmentCapable) {\r\n return this.model.lastSearchParams.gasDay.isGreatThanOrEqualTo(this.model.actualGasDay.addDays(-1));\r\n }\r\n return false;\r\n }\r\n\r\n private buildAccountTypes(): Array {\r\n const accountTypes = new Array();\r\n accountTypes.push(new AccountType(\"Customer Hub (MTT)\", BusinessRight.MultiTitleTransfer));\r\n return accountTypes;\r\n }\r\n\r\n private defaultSelectedCustomer(): void {\r\n if (!this.setToDefaultCustomer) return;\r\n const user = this.userService.user;\r\n if (!_.isNil(user.enterpriseId) && !_.isNil(_.find(this.model.customers, x => x.id === +user.enterpriseId))) {\r\n this.model.searchParams.enterpriseId = +user.enterpriseId;\r\n this.model.customerChangedUpdateDropdowns();\r\n }\r\n }\r\n\r\n private getScheduledQuantities(searchRequest: ScheduledQuantityRequest ): Observable {\r\n return this.scheduledQuantityService.queryScheduledQuantities(searchRequest).pipe(\r\n concatMap(response => {\r\n const scheduledQuantities = response.scheduledQuantities;\r\n const serviceCalls = [\r\n this.nominationLocationEnrichmentService.enrichArray(scheduledQuantities, 'fromToLocation', 'fromToLocation'),\r\n this.nominationLocationEnrichmentService.enrichArray(scheduledQuantities, 'locationId', 'location'),\r\n this.nomGroupEnrichmentService.enrichArray(scheduledQuantities, 'nominationGroupId', 'nominationGroup'),\r\n ];\r\n\r\n return forkJoin(serviceCalls).pipe(map(() => response));\r\n }));\r\n }\r\n\r\n private getScheduledQuantityForUpdate(item: ScheduledQuantity): number {\r\n if (!_.isNil(item.inScheduledQuantity)) {\r\n return item.inScheduledQuantity;\r\n } else if (!_.isNil(item.outScheduledQuantity)) {\r\n return item.outScheduledQuantity;\r\n }\r\n return 0;\r\n }\r\n\r\n private recalculateFuel(fuelTransactionId: number, billableServiceCode: string, creditLocationId: number,\r\n debitLocationId: number, energy: number): void {\r\n const gasDay = this.model.lastSearchParams.gasDay;\r\n\r\n energy = _.isNil(energy) ? 0 : energy;\r\n const serviceCalls: Observable[] = [\r\n this.fuelRatioService.queryFuel(gasDay, billableServiceCode, creditLocationId, debitLocationId, energy)\r\n ];\r\n\r\n forkJoin(serviceCalls).subscribe(response => {\r\n const fuelTransaction = _.find(this.model.detailedSearchResults, detail => detail.dailyTransactionId === fuelTransactionId);\r\n\r\n if (_.isNil(fuelTransaction)) {\r\n return;\r\n }\r\n\r\n fuelTransaction.outScheduledQuantity = response[0];\r\n });\r\n }\r\n\r\n onGasDayChanged(): void {\r\n // Refresh page options\r\n\r\n // this will be fired even when a null value is returned from the date picker and don't want to reload with a bad date\r\n if (!this.model.searchParams.gasDay) return;\r\n\r\n // This will force the GasCycle to get set to the default for the GasDay.\r\n this.model.searchParams.gasCycleCode = null;\r\n\r\n // Do nothing on subscription, we just want the drop downs to be reloaded\r\n this.loadSearchResources().subscribe(() => {});\r\n }\r\n\r\n private gridBlurCallback() {\r\n // If this is IE, the focus control may be hidden behind the top panel.\r\n // Chrome works properly, but running this code doesn't hurt.\r\n setTimeout(() => window.scrollTo(0, 0));\r\n }\r\n\r\n private defaultGasCycleCode(): string {\r\n return GasCycleLogic.defaultGasCycleCode(this.model.gasDayCycleStatuses, this.model.gasDayCycleStatuses.defaultLatestScheduled()?.gasCycle);\r\n }\r\n\r\n private isRowEditable = (row): boolean => {\r\n return row.data.transactionType !== \"Nominated Fuel\";\r\n };\r\n\r\n private updateReasonCodeOnAssociatedTransactions(dailyTransactionId: number, reasonCode: string, checkIfUnchanged: boolean = false ): void {\r\n // When updating reason code on quantity change, if user has modified the reason code manually, do not override it.\r\n if (checkIfUnchanged && this.model.transactionReasonCodeChangedDictionary[dailyTransactionId]) return;\r\n\r\n const transactions = _.filter(this.model.detailedSearchResults, detail => detail.dailyTransactionId === dailyTransactionId);\r\n _.forEach(transactions, x => {\r\n x.reasonCode = reasonCode;\r\n this.updateFuelReasonCode(x.dailyFuelTransactionId, reasonCode);\r\n });\r\n }\r\n\r\n private updateFuelReasonCode(dailyFuelTransactionId: number, reasonCode: string) {\r\n if (_.isNil(dailyFuelTransactionId)) {\r\n return;\r\n }\r\n\r\n const fuelTransaction = _.find(this.model.detailedSearchResults, detail => detail.dailyTransactionId === dailyFuelTransactionId);\r\n\r\n if (_.isNil(fuelTransaction)) {\r\n return;\r\n }\r\n\r\n fuelTransaction.reasonCode = reasonCode;\r\n }\r\n}\r\n","import {GasDay} from \"app/shared/classes/gas-day\";\r\nimport {\r\n NominationGroup,\r\n NominationGroupCollection\r\n} from \"app/shared/services/nomination/nomination-nom-group/nomination-nom-group.service\";\r\nimport {\r\n NominationLocation\r\n} from \"app/shared/services/nomination/nomination-location/nomination-location.service\";\r\nimport {BusinessRight} from \"app/shared/classes/business-right\";\r\nimport {ImbalanceTransferTransaction} from \"app/shared/services/nomination/imbalance-transfer/imbalance-transfer.service\";\r\nimport {LookupItem} from \"app/shared/services/nomination/nomination-request/nomination-request.interface\";\r\nimport {SimpleGasDayCycleStatus} from \"app/shared/classes/simple-gas-day-cycle-status\";\r\nimport {GasCycle} from \"@model/gas-cycle\";\r\nimport {GasDayCycleStatusCollection} from \"@model/gas-day-cycle-status-collection\";\r\n\r\n\r\nexport class ImbalanceTransferTransactionsModel {\r\n gasDay: GasDay;\r\n minGasDay: GasDay;\r\n maxGasDay: GasDay;\r\n gasDayCycleStatuses: GasDayCycleStatusCollection = GasDayCycleStatusCollection.create();\r\n openGasDayCycleStatus: SimpleGasDayCycleStatus = null;\r\n gasCycles: GasCycle[] = [];\r\n launchedGasCycles: GasCycle[] = [];\r\n searchParams: ImbalanceTransferTransactionsSearchParams = new ImbalanceTransferTransactionsSearchParams();\r\n lastSearchParams: ImbalanceTransferTransactionsSearchParams = null;\r\n\r\n searchResults: ImbalanceTransferTransaction[];\r\n validDebitNominationGroups: NominationGroup[];\r\n validCreditNominationGroups: NominationGroup[];\r\n\r\n newDebitNomGroupValue: any;\r\n newCreditNomGroupValue: any;\r\n\r\n cvNominationGroups: NominationGroup[];\r\n tvarNominationGroups: NominationGroup[];\r\n fuelNominationGroups: NominationGroup[];\r\n palNominationGroups: NominationGroup[];\r\n mttNominationGroups: NominationGroup[];\r\n ctNominationGroups: NominationGroup[];\r\n solpNominationGroups: NominationGroup[];\r\n fvNominationGroups: NominationGroup[];\r\n\r\n nominationGroups: NominationGroupCollection;\r\n nominationGroupsForEdit: NominationGroupCollection;\r\n locations: NominationLocation[];\r\n gasAccountTypes: LookupItem[] = [\r\n new LookupItem(\"CT\", \"CT\"),\r\n new LookupItem(\"CV\", \"CV\"),\r\n new LookupItem(\"FV\", \"FV\"),\r\n new LookupItem(\"PAL\", \"PAL\"),\r\n new LookupItem(\"SFV\", \"SFV\"),\r\n new LookupItem(\"SOLP\", \"SOLP\"),\r\n new LookupItem(\"TT\", \"TT\"),\r\n new LookupItem(\"TV\", \"TV\")\r\n ];\r\n\r\n allowableBusinessRights: BusinessRight[] = [\r\n BusinessRight.ConfirmationVariance,\r\n BusinessRight.TransportationVariance,\r\n BusinessRight.TransportationFuel,\r\n BusinessRight.ParkAndLoan,\r\n BusinessRight.MultiTitleTransfer,\r\n BusinessRight.CustodyTransfer,\r\n BusinessRight.SystemLinepack,\r\n BusinessRight.SystemFuel\r\n ];\r\n\r\n showFilters: boolean = true;\r\n isEditing: boolean;\r\n isEditingRowValid: boolean;\r\n\r\n isOneDayAdjustmentCapable: boolean;\r\n isFullAdjustmentCapable: boolean;\r\n}\r\n\r\nexport class ImbalanceTransferTransactionsSearchParams {\r\n gasDay: GasDay;\r\n gasCycleCode: string;\r\n}\r\n","\r\nimport {map} from 'rxjs/operators';\r\nimport {Injectable} from \"@angular/core\";\r\nimport {NominationResourceService} from \"app/shared/resources/nominations-resource.service\";\r\nimport {GCTSHttpParams} from \"app/shared/classes/gcts-http-params\";\r\nimport {Observable} from \"rxjs\";\r\nimport {GasDay} from \"app/shared/classes/gas-day\";\r\nimport * as _ from \"lodash\";\r\n\r\nexport class ImbalanceTransferTransaction {\r\n gasCycleName: string;\r\n affectedGasDay: Date;\r\n createdDateTime: Date;\r\n debitGasAccountType: string;\r\n debitNominationGroupId: number;\r\n debitLocationId: number;\r\n creditGasAccountType: string;\r\n creditNominationGroupId: number;\r\n creditLocationId: number;\r\n energy: number;\r\n isEditing: boolean;\r\n\r\n public static create(imbalanceTransfer: ImbalanceTransferTransaction) {\r\n\r\n const transaction = new ImbalanceTransferTransaction();\r\n transaction.gasCycleName = imbalanceTransfer.gasCycleName;\r\n transaction.affectedGasDay = GasDay.parse(imbalanceTransfer.affectedGasDay.toString()).toDate;\r\n transaction.debitGasAccountType = imbalanceTransfer.debitGasAccountType;\r\n transaction.debitNominationGroupId = imbalanceTransfer.debitNominationGroupId;\r\n transaction.debitLocationId = imbalanceTransfer.debitLocationId;\r\n transaction.creditGasAccountType = imbalanceTransfer.creditGasAccountType;\r\n transaction.creditNominationGroupId = imbalanceTransfer.creditNominationGroupId;\r\n transaction.creditLocationId = imbalanceTransfer.creditLocationId;\r\n transaction.energy = imbalanceTransfer.energy;\r\n\r\n return transaction;\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport class ImbalanceTransferService {\r\n\r\n constructor(private nominationsResource: NominationResourceService) {\r\n }\r\n\r\n queryAll(gasDay: GasDay, gasCycleCode: string): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n\r\n params.setGasDay(gasDay);\r\n params.set('gasCycleCode', gasCycleCode);\r\n\r\n return this.nominationsResource.get('/imbalanceTransfers', true, params).pipe(\r\n map(imbalanceTransferDtos => _.map(imbalanceTransferDtos, (x: ImbalanceTransferTransaction) =>\r\n ImbalanceTransferTransaction.create(x))));\r\n }\r\n\r\n save(imbalanceTransferTransaction: ImbalanceTransferTransaction): Observable {\r\n const body = {\r\n gasCycleName: imbalanceTransferTransaction.gasCycleName,\r\n gasDay: GasDay.from(imbalanceTransferTransaction.affectedGasDay).toString(),\r\n debitGasAccountType: imbalanceTransferTransaction.debitGasAccountType,\r\n debitNominationGroupId: imbalanceTransferTransaction.debitNominationGroupId,\r\n debitLocationId: imbalanceTransferTransaction.debitLocationId,\r\n creditGasAccountType: imbalanceTransferTransaction.creditGasAccountType,\r\n creditNominationGroupId: imbalanceTransferTransaction.creditNominationGroupId,\r\n creditLocationId: imbalanceTransferTransaction.creditLocationId,\r\n energy: imbalanceTransferTransaction.energy\r\n };\r\n\r\n return this.nominationsResource.postWithNoResponseBody('/imbalanceTransfer/save', body);\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n - Filters\r\n + Filters\r\n \r\n :\r\n Gas Day: {{model.lastSearchParams?.gasDay}}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.gasDay | gasDayFormat }}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.gasCycleCode | displayName: 'code' : 'displayValue' : model.gasCycles : 'EOD' }}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n Number of Records: {{model.searchResults.length}}\r\n
\r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n","import {of, forkJoin, Observable} from 'rxjs';\r\n\r\nimport {tap} from 'rxjs/operators';\r\nimport * as dx from \"devextreme/core/renderer\";\r\nimport * as _ from 'lodash';\r\nimport {Component, ViewChild} from \"@angular/core\";\r\nimport {EditableSearchComponent} from \"app/shared/classes/editable-search-component\";\r\nimport {AppService} from \"app/shared/services/webapp/app/app.service\";\r\nimport {YesNoCancelModalService} from \"app/shared/services/webapp/yes-no-cancel-modal/yes-no-cancel-modal.service\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {AlertService} from \"app/shared/services/webapp/alert/alert.service\";\r\nimport {ModalOptions} from \"app/shared/services/webapp/modal-options/modal-options\";\r\nimport {TypedParams} from \"app/shared/classes/typed-params\";\r\nimport {ImbalanceTransferTransactionsModel} from \"app/gcts/nomination/imbalance-transfer-transactions/imbalance-transfer-transactions-model\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {NominationNomGroupEnrichmentService} from \"app/shared/services/nomination/nomination-nom-group-enrichment/nomination-nom-group-enrichment.service\";\r\nimport {NominationSystemService} from \"app/shared/services/nomination/nomination-system/nomination-system.service\";\r\nimport {NominationLocationEnrichmentService} from \"app/shared/services/nomination/nomination-location-enrichment/nomination-location-enrichment.service\";\r\nimport {\r\n NominationGroup,\r\n NominationGroupCollection,\r\n NominationNomGroupService\r\n} from \"app/shared/services/nomination/nomination-nom-group/nomination-nom-group.service\";\r\nimport {\r\n LocationSearchParams, NominationLocation,\r\n NominationLocationService\r\n} from \"app/shared/services/nomination/nomination-location/nomination-location.service\";\r\nimport {ParamValidator} from \"app/shared/classes/validators/param-validator\";\r\nimport {\r\n ImbalanceTransferService,\r\n ImbalanceTransferTransaction\r\n} from \"app/shared/services/nomination/imbalance-transfer/imbalance-transfer.service\";\r\nimport {GasDay} from \"app/shared/classes/gas-day\";\r\nimport {GasCycleService} from \"app/shared/services/nomination/gas-cycle/gas-cycle.service\";\r\nimport {GasCycleLogic} from \"@model/gas-cycle.logic\";\r\nimport {GasDayCycleStatusCollection} from \"@model/gas-day-cycle-status-collection\";\r\nimport {UserService} from \"@shared/services/webapp/user/user-service\";\r\nimport {CapabilitiesService} from \"@shared/services/webapp/capabilities/capabilities.service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {GasDaySearchResourceTracker} from \"@model/gas-day-search-resource-tracker\";\r\n\r\n@Component({\r\n selector: 'app-imbalance-transfer-transactions',\r\n templateUrl: './imbalance-transfer-transactions.component.html',\r\n styleUrls: ['./imbalance-transfer-transactions.component.css']\r\n})\r\nexport class ImbalanceTransferTransactionsComponent extends EditableSearchComponent {\r\n public model: ImbalanceTransferTransactionsModel = new ImbalanceTransferTransactionsModel();\r\n private gasDayTracker: GasDaySearchResourceTracker = new GasDaySearchResourceTracker();\r\n\r\n @ViewChild(DxDataGridComponent) dataGrid: DxDataGridComponent;\r\n\r\n constructor(protected appService: AppService,\r\n protected activatedRoute: ActivatedRoute,\r\n protected router: Router,\r\n protected alertService: AlertService,\r\n protected modalService: YesNoCancelModalService,\r\n protected nominationSystemService: NominationSystemService,\r\n protected nominationNomGroupService: NominationNomGroupService,\r\n protected nominationLocationService: NominationLocationService,\r\n protected imbalanceTransferService: ImbalanceTransferService,\r\n protected nominationNomGroupEnrichmentService: NominationNomGroupEnrichmentService,\r\n protected nominationLocationEnrichmentService: NominationLocationEnrichmentService,\r\n protected gasCycleService: GasCycleService,\r\n private userService: UserService,\r\n private capabilitiesService: CapabilitiesService,\r\n private sessionService: SessionService\r\n\r\n ) {\r\n super('Imbalance Transfer Transactions', appService, activatedRoute, router, alertService);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {\r\n gasDay: this.model.searchParams.gasDay,\r\n gasCycleCode: this.model.searchParams.gasCycleCode\r\n };\r\n\r\n return params;\r\n }\r\n\r\n getDefaultChangesWillBeLostMessageOptions(): ModalOptions {\r\n return YesNoCancelModalService.getDefaultYesNoModalOptions();\r\n }\r\n\r\n hasUnsavedChanges(): boolean {\r\n if (!this.dataGrid) return false;\r\n return this.dataGrid.instance.hasEditData();\r\n }\r\n\r\n navigationCancelled(): void {\r\n }\r\n\r\n onGasDayChanged(): void {\r\n // this will be fired even when a null value is returned from the date picker and don't want to reload with a bad date\r\n if (!this.model.searchParams.gasDay) return;\r\n\r\n // This will force the GasCycle to get set to the default for the GasDay.\r\n this.model.searchParams.gasCycleCode = null;\r\n this.loadSearchResources().subscribe(() => {});\r\n }\r\n\r\n public gasCyclePlaceholder(): string {\r\n return GasCycleLogic.placeholder(this.model.gasDayCycleStatuses);\r\n }\r\n\r\n public isGasCycleRequired(): boolean {\r\n return GasCycleLogic.isRequired(this.model.gasDayCycleStatuses);\r\n }\r\n\r\n getNominationGroupsForAccountType(accountType: string): Array {\r\n if (accountType === \"CV\") {\r\n return this.model.cvNominationGroups;\r\n } else if (accountType === \"TV\") {\r\n return this.model.tvarNominationGroups;\r\n } else if (accountType === \"SFV\") {\r\n return this.model.fuelNominationGroups;\r\n } else if (accountType === \"PAL\") {\r\n return this.model.palNominationGroups;\r\n } else if (accountType === \"TT\") {\r\n return this.model.mttNominationGroups;\r\n } else if (accountType === \"CT\") {\r\n return this.model.ctNominationGroups;\r\n } else if (accountType === \"SOLP\") {\r\n return this.model.solpNominationGroups;\r\n } else if (accountType === \"FV\") {\r\n return this.model.fvNominationGroups;\r\n }\r\n }\r\n\r\n public saveClicked(cellInfo: any): void {\r\n this.saveImbalanceTransferTransaction(cellInfo);\r\n }\r\n\r\n /**\r\n * task/100561 - Part of upgrading to DevExtreme, the code no longer worked and we need to populate\r\n * the imbalance transfer transaction from the cell info information.\r\n */\r\n private buildImbalanceTransferTransactionFromCellInfo(cellInfo: any): ImbalanceTransferTransaction {\r\n const imbalanceTransferTransaction = new ImbalanceTransferTransaction();\r\n imbalanceTransferTransaction.gasCycleName = cellInfo.row.data.gasCycleName;\r\n imbalanceTransferTransaction.affectedGasDay = cellInfo.row.data.affectedGasDay;\r\n imbalanceTransferTransaction.createdDateTime = cellInfo.row.data.createdDateTime;\r\n imbalanceTransferTransaction.debitGasAccountType = cellInfo.row.data.debitGasAccountType;\r\n imbalanceTransferTransaction.debitNominationGroupId = cellInfo.row.data.debitNominationGroupId;\r\n imbalanceTransferTransaction.debitLocationId = cellInfo.row.data.debitLocationId;\r\n imbalanceTransferTransaction.creditGasAccountType = cellInfo.row.data.creditGasAccountType;\r\n imbalanceTransferTransaction.creditNominationGroupId = cellInfo.row.data.creditNominationGroupId;\r\n imbalanceTransferTransaction.creditLocationId = cellInfo.row.data.creditLocationId;\r\n imbalanceTransferTransaction.energy = cellInfo.row.data.energy;\r\n\r\n return imbalanceTransferTransaction;\r\n }\r\n\r\n public saveImbalanceTransferTransaction(cellInfo: any): void {\r\n this.appService.clearMessages();\r\n\r\n const imbalanceTransferTransaction = this.buildImbalanceTransferTransactionFromCellInfo(cellInfo);\r\n\r\n this.imbalanceTransferService.save(imbalanceTransferTransaction)\r\n // .concatMap(res => this.performSearch())\r\n .subscribe(() => {\r\n this.model.isEditing = false;\r\n this.alertService.addSuccessMessage(\"Success\", \"The imbalance transfer has been added.\");\r\n cellInfo.component.saveEditData();\r\n this.performSearch().subscribe(() => {});\r\n }, () => {\r\n this.model.isEditing = true;\r\n });\r\n }\r\n\r\n public cancelClicked(): void {\r\n this.tryToCancelEditingData();\r\n }\r\n\r\n public toggleFilterSection() {\r\n this.model.showFilters = !this.model.showFilters;\r\n }\r\n\r\n public isAddButtonDisabled(): boolean {\r\n if (this.hasUnsavedChanges() || _.isNil(this.model.searchResults) || _.isNil(this.model.lastSearchParams.gasCycleCode)) {\r\n return true;\r\n }\r\n\r\n if (this.model.isFullAdjustmentCapable) {\r\n return false;\r\n }\r\n\r\n if (this.model.isOneDayAdjustmentCapable) {\r\n return this.model.openGasDayCycleStatus.gasDay.addDays(-1).isGreaterThan(this.model.lastSearchParams.gasDay);\r\n }\r\n }\r\n\r\n public addClicked(): void {\r\n if (_.isNil(this.dataGrid) || _.isNil(this.dataGrid.instance)) return;\r\n this.dataGrid.instance.addRow();\r\n this.model.isEditing = true;\r\n }\r\n\r\n public onInitNewRow(e: any): void {\r\n e.data.isEditing = true;\r\n const imbalanceTransfer = e.data as ImbalanceTransferTransaction;\r\n this.setRowDefaults(imbalanceTransfer);\r\n }\r\n\r\n cellTemplate = (cellElement, cellInfo, dataGrid: DxDataGridComponent) => {\r\n if (cellInfo.column.dataField === \"debitNominationGroupId\") {\r\n const nomGroup = _.find(this.model.nominationGroups, x => x.id === cellInfo.data.debitNominationGroupId);\r\n cellElement.innerText = nomGroup.mnemonic;\r\n }\r\n if (cellInfo.column.dataField === \"creditNominationGroupId\") {\r\n const nomGroup = _.find(this.model.nominationGroups, x => x.id === cellInfo.data.creditNominationGroupId);\r\n cellElement.innerText = nomGroup.mnemonic;\r\n }\r\n };\r\n\r\n public onEditorPrepared(e: any) {\r\n let onValueChangedSetup = false;\r\n if (e.parentType === 'dataRow') {\r\n let dxEditorInstance = null;\r\n switch (e.dataField) {\r\n case \"debitGasAccountType\":\r\n dxEditorInstance = dx(e.editorElement).dxSelectBox('instance');\r\n dxEditorInstance.on('valueChanged', (x) => {\r\n this.model.newDebitNomGroupValue.setValue(null);\r\n this.model.validDebitNominationGroups = this.getNominationGroupsForAccountType(x.value);\r\n e.setValue(x.value);\r\n this.model.isEditingRowValid = e.component.getController('validating').validate();\r\n });\r\n onValueChangedSetup = true;\r\n break;\r\n case \"debitNominationGroupId\":\r\n dxEditorInstance = dx(e.editorElement).dxSelectBox('instance');\r\n this.model.newDebitNomGroupValue = e;\r\n dxEditorInstance.option({\r\n dataSource: {\r\n store: this.model.validDebitNominationGroups,\r\n paginate: true,\r\n pageSize: 10\r\n }\r\n });\r\n break;\r\n case \"creditNominationGroupId\":\r\n dxEditorInstance = dx(e.editorElement).dxSelectBox('instance');\r\n this.model.newCreditNomGroupValue = e;\r\n dxEditorInstance.option({\r\n dataSource: {\r\n store: this.model.validCreditNominationGroups,\r\n paginate: true,\r\n pageSize: 10\r\n }\r\n });\r\n break;\r\n case \"creditGasAccountType\":\r\n dxEditorInstance = dx(e.editorElement).dxSelectBox('instance');\r\n dxEditorInstance.on('valueChanged', (x) => {\r\n this.model.newCreditNomGroupValue.setValue(null);\r\n this.model.validCreditNominationGroups = this.getNominationGroupsForAccountType(x.value);\r\n e.setValue(x.value);\r\n this.model.isEditingRowValid = e.component.getController('validating').validate();\r\n });\r\n onValueChangedSetup = true;\r\n break;\r\n case \"debitLocationId\":\r\n case \"creditLocationId\":\r\n dxEditorInstance = dx(e.editorElement).dxSelectBox('instance');\r\n break;\r\n case \"energy\":\r\n dxEditorInstance = dx(e.editorElement).dxNumberBox('instance');\r\n break;\r\n }\r\n\r\n if (dxEditorInstance) {\r\n dxEditorInstance.option('valueChangeEvent', 'keydown keyup');\r\n if (!onValueChangedSetup) {\r\n dxEditorInstance.on('valueChanged', (vce) => {\r\n e.setValue(vce.value);\r\n this.model.isEditingRowValid = e.component.getController('validating').validate();\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n public onRowInserting = (e: any) => {\r\n if (e.brokenRules.length === 0) {\r\n this.model.isEditingRowValid = true;\r\n }\r\n };\r\n\r\n\r\n public formatGasDay(obj: any): string {\r\n if (_.isNil(obj.value)) return null;\r\n const gasDay = GasDay.from(obj.value);\r\n return gasDay.toDisplayFormat();\r\n }\r\n\r\n private setRowDefaults(imbalanceTransfer: ImbalanceTransferTransaction): void {\r\n imbalanceTransfer.isEditing = true;\r\n imbalanceTransfer.affectedGasDay = this.model.lastSearchParams.gasDay.toDate;\r\n imbalanceTransfer.createdDateTime = new Date();\r\n imbalanceTransfer.gasCycleName = _.find(this.model.gasCycles, x => x.code === this.model.lastSearchParams.gasCycleCode).name;\r\n this.model.isEditingRowValid = false;\r\n }\r\n\r\n public onRowValidating(e): void {\r\n if (e.brokenRules.length === 0) {\r\n this.model.isEditingRowValid = true;\r\n }\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n const serviceCalls: Observable[] = [\r\n this.nominationSystemService.pipelineGasDay(), // 0\r\n this.nominationNomGroupEnrichmentService.fetch(),\r\n this.nominationLocationEnrichmentService.fetch()\r\n ];\r\n\r\n return forkJoin(serviceCalls).pipe(tap(response => {\r\n const pipelineGasDay = response[0];\r\n if (!pipelineGasDay.hasGasDayCycles()) {\r\n this.alertService.addWarnMessage(\"Warning\", \"There are no Gas Day Cycles for the pipeline.\");\r\n return;\r\n }\r\n\r\n this.appService.hideMenu();\r\n this.appService.clearMessages();\r\n\r\n this.model.gasDay = pipelineGasDay.actualGasDay.isGreaterThan(pipelineGasDay.earliestSelectableGasDay) ?\r\n pipelineGasDay.actualGasDay :\r\n pipelineGasDay.earliestSelectableGasDay;\r\n this.model.minGasDay = pipelineGasDay.minGasDayForCycleStatus.isLessThan(this.model.gasDay) ?\r\n pipelineGasDay.minGasDayForCycleStatus :\r\n this.model.gasDay;\r\n this.model.maxGasDay = pipelineGasDay.maxGasDayForCycleStatus.isGreaterThan(this.model.gasDay) ?\r\n pipelineGasDay.maxGasDayForCycleStatus :\r\n this.model.gasDay;\r\n this.model.openGasDayCycleStatus = pipelineGasDay.openGasDayCycleStatus;\r\n\r\n this.model.isOneDayAdjustmentCapable = this.capabilitiesService.hasCapabilities(['ImbalanceTransferTransactions-OneDay-Adjustment'], this.userService.user, this.sessionService.getPipeline().code);\r\n this.model.isFullAdjustmentCapable = this.capabilitiesService.hasCapabilities(['ImbalanceTransferTransactions-Full-Adjustment'], this.userService.user, this.sessionService.getPipeline().code);\r\n }));\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n\r\n const gasDay = this.model.searchParams.gasDay ?\r\n this.model.searchParams.gasDay :\r\n this.model.gasDay;\r\n\r\n if (this.gasDayTracker.previouslyLoadedForSameGasDay(gasDay)) {\r\n // Set GasDay dependent fields to defaults.\r\n if (!this.model.searchParams.gasCycleCode) {\r\n this.model.searchParams.gasCycleCode = this.defaultGasCycleCode();\r\n }\r\n return of(null);\r\n }\r\n\r\n const serviceCalls: Observable[] = [\r\n this.nominationNomGroupService.queryNomGroupNamesByBusinessRights2(this.model.gasDay, this.model.allowableBusinessRights, null), // 0\r\n this.nominationNomGroupService.getApplicableImbalanceTransferAccounts(this.model.gasDay), // 1\r\n this.nominationLocationService.queryLocationNames(new LocationSearchParams(gasDay,true,gasDay,false,false,false)), // 2\r\n this.gasCycleService.queryGasDayCycleStatusesFor(gasDay) // 3\r\n ];\r\n\r\n return forkJoin(serviceCalls).pipe(tap(response => {\r\n const nominationGroups = _.map(response[0], x => NominationGroup.create(x));\r\n this.model.nominationGroups = NominationGroupCollection.create(nominationGroups);\r\n\r\n const nominationGroupsForEdit = _.map(_.orderBy(response[1], x => x.mnemonic), x => NominationGroup.create(x));\r\n this.model.nominationGroupsForEdit = NominationGroupCollection.create(nominationGroupsForEdit);\r\n\r\n this.model.cvNominationGroups = this.model.nominationGroupsForEdit.confirmationVariance;\r\n this.model.tvarNominationGroups = this.model.nominationGroupsForEdit.transportationVariance;\r\n this.model.fuelNominationGroups = this.model.nominationGroupsForEdit.transportationFuel;\r\n this.model.palNominationGroups = this.model.nominationGroupsForEdit.parkAndLoan;\r\n this.model.mttNominationGroups = this.model.nominationGroupsForEdit.multiTitleTransfer;\r\n this.model.ctNominationGroups = this.model.nominationGroupsForEdit.custodyTransfer;\r\n this.model.solpNominationGroups = this.model.nominationGroupsForEdit.systemLinepack;\r\n this.model.fvNominationGroups = this.model.nominationGroupsForEdit.fuelVariance;\r\n\r\n this.model.locations = _.orderBy(response[2] as NominationLocation[], x => x.name);\r\n\r\n // 2 - Gas Day Cycle Status\r\n const gasDayCycleStatuses = response[3] as GasDayCycleStatusCollection;\r\n this.model.gasDayCycleStatuses = gasDayCycleStatuses;\r\n this.model.gasCycles = gasDayCycleStatuses.gasCycles();\r\n this.model.launchedGasCycles = gasDayCycleStatuses.defaultGasDayCycleStatuses().gasCycles();\r\n if (!this.model.searchParams.gasCycleCode) {\r\n this.model.searchParams.gasCycleCode = this.defaultGasCycleCode();\r\n }\r\n\r\n this.gasDayTracker.markLastLoadedGasDay(this.model.searchParams.gasDay);\r\n }));\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n this.tryToCancelEditingData();\r\n const gasCycleCode = GasCycleLogic.buildGasCycleCodeForRequest(this.model.gasDayCycleStatuses, this.model.searchParams.gasCycleCode);\r\n\r\n const serviceCalls: Observable[] = [\r\n this.imbalanceTransferService.queryAll(this.model.lastSearchParams.gasDay, gasCycleCode)\r\n ];\r\n\r\n return forkJoin(serviceCalls).pipe(tap(response => {\r\n this.model.searchResults = (response[0] as ImbalanceTransferTransaction[]);\r\n }));\r\n }\r\n\r\n protected resetSortOrder(): void { }\r\n\r\n protected resetCompleted(): void {\r\n this.model.lastSearchParams = null;\r\n this.model.searchResults = null;\r\n this.tryToCancelEditingData();\r\n this.model.searchResults = null;\r\n this.model.isEditing = false;\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return this.paramValidator().isValid(params);\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams.gasDay = this.model.gasDay;\r\n this.model.searchParams.gasCycleCode = null;\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams.gasDay = typedParams.asGasDay('gasDay');\r\n }\r\n\r\n private paramValidator(): ParamValidator {\r\n const queryParams = ParamValidator.Standard();\r\n queryParams.isGasDay('gasDay');\r\n queryParams.isString('gasCycleCode', true); // Optional for EOD\r\n\r\n return queryParams;\r\n }\r\n\r\n private tryToCancelEditingData(): void {\r\n if (_.isNil(this.dataGrid) || _.isNil(this.dataGrid.instance)) return;\r\n if (!this.model.isEditing) return;\r\n this.dataGrid.instance.cancelEditData();\r\n this.model.isEditing = false;\r\n this.performSearch().subscribe(() => { });\r\n }\r\n\r\n private defaultGasCycleCode(): string {\r\n return _.isEmpty(this.model.gasDayCycleStatuses) ?\r\n null :\r\n GasCycleLogic.defaultGasCycleCode(this.model.gasDayCycleStatuses, this.model.gasDayCycleStatuses.defaultEarliestNonScheduled(true).gasCycle);\r\n }\r\n}\r\n","import { GasDay } from \"app/shared/classes/gas-day\";\r\nimport { GasCycle } from \"app/shared/classes/gas-cycle\";\r\n\r\nexport class MinimumItBidRateSearchParams {\r\n gasDay: GasDay;\r\n}\r\n\r\nexport class MinimumItBidRateModel {\r\n showFilterSection: boolean = true;\r\n searchParams: MinimumItBidRateSearchParams = new MinimumItBidRateSearchParams();\r\n lastSearchParams: MinimumItBidRateSearchParams = null;\r\n gasDay: GasDay;\r\n minGasDay: GasDay = null;\r\n maxGasDay: GasDay = null;\r\n searchResults: any;\r\n gasCycles: GasCycle[];\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport { Observable } from \"rxjs\";\r\n\r\nimport { MinimumItBidRateSearchParams } from \"app/gcts/nomination/minimum-it-bid-rate/minimum-it-bid-rate-model\";\r\nimport { NominationResourceService } from \"app/shared/resources/nominations-resource.service\";\r\nimport {GCTSHttpParams} from \"app/shared/classes/gcts-http-params\";\r\nimport {HttpResponse} from \"@angular/common/http\";\r\n\r\n@Injectable()\r\nexport class MinimumItBidRateService {\r\n constructor(private nominationResource: NominationResourceService) { }\r\n\r\n queryMinimumItBidRates(minimumItBidRateSearchParams: MinimumItBidRateSearchParams): Observable {\r\n return this.nominationResource.get(`/minimumitbidrates/${minimumItBidRateSearchParams.gasDay}`);\r\n }\r\n\r\n queryForPdf(id: string): Observable> {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n return this.nominationResource.getData('/minimumitbidrates/' + id + '/pdf', true, params);\r\n }\r\n}\r\n\r\nexport class MinimumItBidRateResponse {\r\n id: string;\r\n gasCycle: string;\r\n report: string;\r\n}\r\n","\r\n
\r\n {{ getTitle() }}\r\n
\r\n \r\n \r\n To subscribe enter your email address and click submit.\"\r\n eventType=\"MinimumItBidRate\"\r\n subscriptionMessage=\"Minimum IT Bid Rate notifications\"\r\n *ngIf=\"true\">\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n -\r\n +\r\n Filters\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
Gas Day: {{model.lastSearchParams?.gasDay | gasDayFormat}}
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n","\r\nimport {forkJoin, of, Observable } from 'rxjs';\r\n\r\nimport {tap} from 'rxjs/operators';\r\nimport * as _ from 'lodash';\r\nimport { Component } from \"@angular/core\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\n\r\nimport { BaseSearchComponent } from \"@model/base-search-component\";\r\nimport { AppService } from \"@shared/services/webapp/app/app.service\";\r\nimport {AlertService} from \"app/shared/services/webapp/alert/alert.service\";\r\nimport { MinimumItBidRateModel, MinimumItBidRateSearchParams } from \"./minimum-it-bid-rate-model\";\r\nimport { NominationSystemService } from \"@shared/services/nomination/nomination-system/nomination-system.service\";\r\nimport { MinimumItBidRateService} from \"@shared/services/nomination/minimum-it-bid-rate/minimum-it-bid-rate.service\";\r\nimport { NominationPipelineGasDay } from \"@model/nomination-pipeline-gas-day\";\r\nimport { TypedParams } from \"@model/typed-params\";\r\nimport { ParamValidator } from \"@model/validators/param-validator\";\r\nimport { GasCycleService } from \"@shared/services/nomination/gas-cycle/gas-cycle.service\";\r\nimport { GasCycle } from \"@model/gas-cycle\";\r\nimport * as FileSaver from \"file-saver\";\r\n\r\n@Component({\r\n templateUrl: \"./minimum-it-bid-rate.component.html\"\r\n})\r\nexport class MinimumItBidRateComponent extends BaseSearchComponent {\r\n\r\n model: MinimumItBidRateModel = new MinimumItBidRateModel();\r\n\r\n constructor(protected appService: AppService,\r\n protected activatedRoute: ActivatedRoute,\r\n protected router: Router,\r\n protected alertService: AlertService,\r\n private nominationSystemService: NominationSystemService,\r\n private minimumItBidRateService: MinimumItBidRateService,\r\n private gasCycleService: GasCycleService) {\r\n super(\"Minimum IT Bid Rate\", appService, activatedRoute, router, alertService);\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n return this.nominationSystemService.pipelineGasDay().pipe(\r\n tap((pipelineGasDay: NominationPipelineGasDay) => {\r\n\r\n if (!pipelineGasDay.hasGasDayCycles()) {\r\n this.alertService.addWarnMessage(\"Warning\", \"There are no Gas Day Cycles for the pipeline.\");\r\n return;\r\n }\r\n\r\n this.appService.clearMessages();\r\n\r\n this.model.gasDay = pipelineGasDay.allowableGasDay;\r\n this.model.minGasDay = pipelineGasDay.minGasDayForCycleStatus;\r\n this.model.maxGasDay = pipelineGasDay.maxGasDayForCycleStatus;\r\n }));\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n return of(null);\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return this.paramValidator().isValid(params);\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n const gasDay = this.model.gasDay;\r\n this.model.searchParams = new MinimumItBidRateSearchParams();\r\n this.model.searchParams.gasDay = gasDay;\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams.gasDay = typedParams.asGasDay('gasDay');\r\n }\r\n\r\n protected buildQueryParams(): MinimumItBidRateSearchParams {\r\n return this.model.searchParams;\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n\r\n const serviceCalls: Observable[] = [\r\n this.minimumItBidRateService.queryMinimumItBidRates(this.model.searchParams),\r\n this.gasCycleService.queryNaesb(this.model.searchParams.gasDay)\r\n ];\r\n\r\n return forkJoin(serviceCalls).pipe(\r\n tap(([bidRates, gasCycles]) => {\r\n this.model.searchResults = bidRates;\r\n this.model.gasCycles = gasCycles;\r\n }));\r\n }\r\n\r\n protected resetCompleted(): void {\r\n this.model.searchResults = null;\r\n }\r\n\r\n protected resetSortOrder(): void { }\r\n\r\n onGasDayChanged(): void {\r\n // Refresh page options\r\n\r\n if (!this.model.searchParams.gasDay) return; // this will be fired even when a null value is returned from the date picker and don't want to reload with a bad date\r\n this.loadSearchResources().subscribe(() => {}); // Do nothing on subscription, we just want the drop downs to be reloaded\r\n }\r\n\r\n private paramValidator(): ParamValidator {\r\n const queryParams = ParamValidator.Standard();\r\n queryParams.isGasDay('gasDay');\r\n return queryParams;\r\n }\r\n\r\n toggleFilterSectionClicked(): void {\r\n this.model.showFilterSection = !this.model.showFilterSection;\r\n }\r\n\r\n searchResultFor(gasCycle: GasCycle) {\r\n return this.model.searchResults.find(x => x.gasCycle === gasCycle.code);\r\n }\r\n\r\n pdfClicked(gasCycle: GasCycle) {\r\n const searchResult = this.searchResultFor(gasCycle);\r\n\r\n this.minimumItBidRateService.queryForPdf(searchResult.id).subscribe((response) => {\r\n const mediaType = response.headers.get('content-type');\r\n const blob = new Blob([response.body], {type: mediaType});\r\n\r\n // from the content disposition, should be second element with =\"{filename}\" surrounding it\r\n const filename = response.headers.get('content-disposition').split(';')[1].trim().split('=')[1].replace(/\"/g, '');\r\n FileSaver.saveAs(blob, filename);\r\n });\r\n }\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {NominationResourceService} from \"@shared/resources/nominations-resource.service\";\r\nimport {Observable} from \"rxjs\";\r\nimport {HttpResponse} from \"@angular/common/http\";\r\nimport {CustodyTransferReportRequest} from \"@shared/services/nomination/confirmation/confirmation-models\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\n\r\n@Injectable()\r\nexport class NominationReportsService {\r\n\r\n constructor(private nominationResource: NominationResourceService) {\r\n }\r\n\r\n queryCustodyTransferReport(custodyTransferRequest: CustodyTransferReportRequest): Observable> {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('gasMonth', custodyTransferRequest.gasMonth.toString());\r\n params.setOptionalListOfNumbers('locationIds', custodyTransferRequest.locationIds);\r\n params.set('reportType', custodyTransferRequest.reportType.toString());\r\n\r\n return this.nominationResource.getData('/reports/custodytransfer/csv', true, params);\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Gas Month: {{model.lastSearchParams?.gasMonth | gasMonthFormat }}\r\n Location: {{model.lastSearchParams?.locationIds | displayName: 'id' : 'name' : model.locations}}\r\n \r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.gasMonth | gasMonthFormat}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.locationIds | multiDisplayName: 'id' : 'name' : model.locations}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n","import {of, forkJoin, Observable} from 'rxjs';\r\n\r\nimport {tap} from 'rxjs/operators';\r\nimport * as _ from 'lodash';\r\nimport {AppService} from '@shared/services/webapp/app/app.service';\r\nimport {\r\n BidFloor\r\n} from '@shared/services/nomination/bid-floor/bid-floor.service';\r\nimport {GasCycleService} from '@shared/services/nomination/gas-cycle/gas-cycle.service';\r\nimport {FileService} from '@shared/services/webapp/file-service/file.service';\r\nimport {GasDay} from '@model/gas-day';\r\nimport {IGasMonth} from '@model/gas-day-month.interface';\r\nimport {GasCycle} from '@model/gas-cycle';\r\nimport {DateTime} from '@model/date-time';\r\nimport {Location} from '@shared/interfaces/location';\r\nimport {ActivatedRoute, Params, Router} from '@angular/router';\r\nimport {\r\n NominationLocationService,\r\n NominationLocation, LocationSearchParams\r\n} from '@shared/services/nomination/nomination-location/nomination-location.service';\r\nimport {NominationLocationEnrichmentService} from \"@shared/services/nomination/nomination-location-enrichment/nomination-location-enrichment.service\";\r\nimport {Component, ViewChild} from '@angular/core';\r\nimport {NominationSystemService} from '@shared/services/nomination/nomination-system/nomination-system.service';\r\nimport {DxDataGridComponent} from 'devextreme-angular';\r\nimport {IGasDay} from \"@model/gas-day-month.interface\";\r\nimport {BaseViewModel} from \"@model/base-view-model\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {AlertService} from \"app/shared/services/webapp/alert/alert.service\";\r\nimport {NominationPipelineGasDay} from \"@model/nomination-pipeline-gas-day\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {GasDayCycleStatusCollection} from \"@model/gas-day-cycle-status-collection\";\r\nimport {CustodyTransferReportRequest} from \"@shared/services/nomination/confirmation/confirmation-models\";\r\nimport * as FileSaver from \"file-saver\";\r\nimport {HttpResponse} from \"@angular/common/http\";\r\nimport {NominationReportsService} from \"@shared/services/nomination/nomination-reports/nomination-reports.service\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\n\r\n\r\n/**\r\n * Models\r\n */\r\n\r\nexport class CustodyTransferReportSearchParams {\r\n locationIds: number[] = [];\r\n gasMonth: GasMonth;\r\n reportType: string;\r\n}\r\n\r\nexport class CustodyTransferReportModel extends BaseViewModel {\r\n pipelineGasDay: NominationPipelineGasDay;\r\n gasDayCycleStatuses: GasDayCycleStatusCollection = GasDayCycleStatusCollection.create();\r\n minGasDay: IGasDay;\r\n tomorrowsGasDay: GasDay;\r\n today: IGasDay;\r\n gasCycles: GasCycle[] = [];\r\n locations: Location[] = [];\r\n\r\n searchParams: CustodyTransferReportSearchParams = new CustodyTransferReportSearchParams();\r\n lastSearchParams: CustodyTransferReportSearchParams;\r\n\r\n searchResults: BidFloor[];\r\n searchDateTime: Date;\r\n\r\n fileName: string;\r\n gasMonth: IGasMonth;\r\n minGasMonth: GasMonth;\r\n maxGasMonth: GasMonth;\r\n}\r\n\r\n@Component({\r\n selector: 'app-custody-transfer-report',\r\n templateUrl: './custody-transfer-report.component.html',\r\n styleUrls: ['./custody-transfer-report.component.css']\r\n})\r\nexport class CustodyTransferReportComponent extends BaseSearchComponent {\r\n model: CustodyTransferReportModel = new CustodyTransferReportModel();\r\n @ViewChild(DxDataGridComponent) bidFloorDataGrid: DxDataGridComponent;\r\n\r\n constructor(protected appService: AppService,\r\n protected alertService: AlertService,\r\n protected router: Router,\r\n protected activatedRoute: ActivatedRoute,\r\n protected nominationSystemService: NominationSystemService,\r\n protected gasCycleService: GasCycleService,\r\n protected nominationLocationService: NominationLocationService,\r\n protected nominationLocationEnrichmentService: NominationLocationEnrichmentService,\r\n protected fileService: FileService,\r\n private nominationReportService: NominationReportsService) {\r\n super('Custody Transfer Report', appService, activatedRoute, router, alertService);\r\n }\r\n\r\n /**\r\n * Public Methods\r\n */\r\n\r\n public onGasMonthChanged(): void {\r\n\r\n // this will be fired even when a null value is returned from the date picker and don't want to reload with a bad date\r\n if (!this.model.searchParams.gasMonth) return;\r\n\r\n this.loadSearchResources().subscribe(() => {});\r\n }\r\n\r\n public formatDateTime(obj: Date): string {\r\n return new DateTime(obj).toDisplayFormat();\r\n }\r\n\r\n\r\n /**\r\n * Protected Methods\r\n */\r\n\r\n protected loadInitialResources(): Observable {\r\n // this.appService.hideMenu();\r\n this.appService.clearMessages();\r\n\r\n // this.model.searchParams.gasDay = GasDay.today();\r\n const serviceCalls: Array = [\r\n this.nominationSystemService.pipelineGasDay() // , // 0\r\n // this.nominationLocationEnrichmentService.fetch() // 1\r\n ];\r\n\r\n return forkJoin(serviceCalls).pipe(tap(responses => {\r\n const pipelineGasDay = responses[0];\r\n const gasDay = pipelineGasDay.tomorrowsCalendarAllowableGasDay;\r\n\r\n this.model.today = gasDay.previous(); // Today.\r\n this.model.pipelineGasDay = pipelineGasDay;\r\n this.model.minGasDay = pipelineGasDay.earliestSelectableGasDay;\r\n this.model.minGasMonth = GasMonth.fromGasDay(pipelineGasDay.earliestSelectableGasDay);\r\n this.model.maxGasMonth = GasMonth.fromGasDay(pipelineGasDay.allowableGasDay);\r\n }));\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return false;\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n const gasDay = this.model.pipelineGasDay.actualGasDay;\r\n const actualGasMonth = GasMonth.fromGasDay(gasDay);\r\n const previousMonth = actualGasMonth.previous();\r\n let defaultMonth = null;\r\n if (this.model.minGasMonth.toDate > previousMonth.toDate) {\r\n defaultMonth = this.model.minGasMonth;\r\n } else {\r\n defaultMonth = previousMonth;\r\n }\r\n\r\n this.model.searchParams = new CustodyTransferReportSearchParams();\r\n this.model.searchResults = undefined;\r\n\r\n this.setGasMonthSearchParams(defaultMonth);\r\n }\r\n\r\n protected setSearchParams(params: TypedParams): void {\r\n\r\n const gasDay = this.model.pipelineGasDay.actualGasDay;\r\n const actualGasMonth = GasMonth.fromGasDay(gasDay);\r\n const previousMonth = actualGasMonth.previous();\r\n let defaultMonth = null;\r\n if (this.model.minGasMonth.toDate > previousMonth.toDate) {\r\n defaultMonth = this.model.minGasMonth;\r\n } else {\r\n defaultMonth = previousMonth;\r\n }\r\n\r\n this.model.searchParams = new CustodyTransferReportSearchParams();\r\n this.model.searchResults = undefined;\r\n\r\n this.setCommonSearchParamsFromRoute(params);\r\n this.setGasMonthSearchParams(defaultMonth);\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n\r\n const serviceCalls: Observable[] = [\r\n this.nominationLocationService.queryAllDetails(new LocationSearchParams(this.model.searchParams.gasMonth.start(), true,\r\n this.model.searchParams.gasMonth.end(), true))\r\n ];\r\n\r\n return forkJoin(serviceCalls).pipe(tap(response => {\r\n this.model.locations = _.orderBy(_.filter(response[0], x => x.accountingLocationParameters.isConfirmedAtItself), x => x.name);\r\n }));\r\n }\r\n\r\n protected performSearch(): Observable {\r\n return of(null);\r\n }\r\n\r\n public download(reportType: string) {\r\n this.alertService.clearMessages();\r\n this.model.searchParams.reportType = reportType;\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n this.nominationReportService.queryCustodyTransferReport(this.model.searchParams).subscribe(data => this.downloadFile(data));\r\n }\r\n\r\n private downloadFile(httpResponse: HttpResponse) {\r\n const blob = new Blob([httpResponse.body], {type: 'text/csv'});\r\n\r\n // from the content disposition, should be second element with =\"{filename}\" surrounding it\r\n const filename = httpResponse.headers.get('content-disposition').split(';')[1].trim().split('=')[1].replace(/\"/g, '');\r\n FileSaver.saveAs(blob, filename);\r\n }\r\n\r\n protected buildQueryParams(isForQueryParams: boolean = true): any {\r\n const request = new CustodyTransferReportRequest();\r\n request.gasMonth = this.model.searchParams.gasMonth;\r\n request.locationIds = this.model.searchParams.locationIds;\r\n return request;\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n this.setSearchParams(null);\r\n }\r\n\r\n private setCommonSearchParamsFromRoute(params: TypedParams): void {\r\n if (params) {\r\n this.model.searchParams.locationIds = params.asListOfNumbers('locationIds');\r\n this.model.searchParams.gasMonth = params.asGasMonth('gasMonth');\r\n }\r\n }\r\n\r\n private setGasMonthSearchParams(gasMonth: GasMonth): void {\r\n this.model.searchParams.gasMonth = gasMonth;\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\nimport { Injectable } from '@angular/core';\r\nimport {FileService} from \"../../webapp/file-service/file.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {TransportationTransactionSummaryDto} from \"app/shared/services/nomination/nomination-transaction/nomination-transaction.models\";\r\nimport {BfpDailyTransportationSummaryDto} from \"app/gcts/nomination/bfp-daily-transportation-summary/bfp-daily-transportation-summary.component\";\r\nimport {NumberFormatPipe} from \"@shared/pipes/number-format/number-format.pipe\";\r\nimport {NumberLessThanFormatPipe} from \"@shared/pipes/number-less-than-format/number-less-than-format.pipe\";\r\nimport {IGasDay} from \"@model/gas-day-month.interface\";\r\nimport {SimpleGasDayCycleStatus} from \"@model/simple-gas-day-cycle-status\";\r\nimport {CapacityAllocationTypeService} from \"@model/models/capacity-allocation-type\";\r\n\r\n@Injectable()\r\nexport class TransportationSummaryCsvBuilderService {\r\n constructor(private fileService: FileService) {}\r\n\r\n build(title: string,\r\n transportationTransactionDetailDtos: TransportationTransactionSummaryDto[],\r\n gasDay: GasDay,\r\n isSentToMCAForCapacityAllocation: string,\r\n userIsInternal: boolean,\r\n cycleStatus: string): void {\r\n const records = transportationTransactionDetailDtos;\r\n let csvData = _.map(records, x => _.extend({}, x, {\r\n gasDay: gasDay.toCsvFormat(),\r\n simplifiedTazZeroRated: x.zeroTaxRated ? 'Y' : 'N'\r\n }));\r\n\r\n csvData = _.sortBy(csvData, ['customerShortName', 'customerAccountMnemonic', 'receiptLocationName', 'deliveryLocationName']);\r\n\r\n const filename = title + ' ' + gasDay.toDisplayFormat() + '.csv';\r\n\r\n const headers = ['Customer Name', 'Customer Account', 'Gas Day', 'Nom Cycle', 'TOS',\r\n 'Nom Group', 'Receipt Location', 'Delivery Location', 'Package Id', 'Bid Price', 'Tax Zero Rated',\r\n 'Nom Qty', 'Scheduled Cycle', 'Auth Qty', 'Nom vs Auth Variance', SimpleGasDayCycleStatus.getSQText(cycleStatus), 'Fuel Location', 'Nom Fuel Qty', 'Auth Fuel Qty', `${SimpleGasDayCycleStatus.getSQText(cycleStatus)} Fuel`, 'Reason Code',\r\n 'Status'];\r\n\r\n const columns = ['customerShortName', 'customerAccountMnemonic', 'gasDay', 'cycleCode', 'fullTypeOfService',\r\n 'nominationGroup', 'receiptLocationName', 'deliveryLocationName', 'packageId', 'bidPrice', 'simplifiedTazZeroRated',\r\n 'nominatedQuantity', 'scheduledCycleCode', 'authorizedQuantity', 'nominatedVersusAuthorizedQuantity', 'scheduledQuantity', 'fuelLocationName', 'nominatedFuelQuantity', 'authorizedFuelQuantity', 'scheduledFuelQuantity',\r\n 'reasonCode', 'status'];\r\n\r\n if (isSentToMCAForCapacityAllocation === CapacityAllocationTypeService.CGL.value) {\r\n headers.splice(8, 0, 'Path Rank');\r\n columns.splice(8, 0, 'transportRank');\r\n }\r\n\r\n if (isSentToMCAForCapacityAllocation === CapacityAllocationTypeService.MCA.value && userIsInternal) {\r\n headers.push('MCA Transport Nomination Id');\r\n headers.push('MCA Fuel Nomination Id');\r\n\r\n columns.push('nominationId');\r\n columns.push('fuelNominationId');\r\n }\r\n\r\n if (!userIsInternal) { // user is external, so remove nomid and status columns\r\n _.pull(headers, 'Status');\r\n _.pull(columns, 'status');\r\n }\r\n\r\n this.fileService.downloadCsvFile(filename, csvData, headers, columns);\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport class BfpDailyTransportationSummaryCsvBuilderService {\r\n\r\n constructor(private fileService: FileService) {}\r\n\r\n build(title: string,\r\n summaryDto: BfpDailyTransportationSummaryDto,\r\n fromGasDay: IGasDay,\r\n toGasDay: IGasDay): void {\r\n\r\n const numberPipe = new NumberFormatPipe();\r\n const numberLessThanFormatPipe = new NumberLessThanFormatPipe();\r\n\r\n let csvData = _.map(summaryDto.details, x => _.extend({}, x, {\r\n gasDayCsvFormat: GasDay.parse(x.gasDay).toCsvFormat(),\r\n bidPriceCsvFormat: x.bidPrice == null ? null : x.bidPrice.toFixed(4),\r\n nominatedQuantityCsvFormat: x.nominatedQuantity.toFixed(4),\r\n authorizedQuantityCsvFormat: x.authorizedQuantity == null ? null : x.authorizedQuantity.toFixed(4),\r\n scheduledQuantityCsvFormat: x.scheduledQuantity.toFixed(4),\r\n varianceCsvFormat: x.variance == null ? null : x.variance.toFixed(0),\r\n nominatedCountCsvFormat: numberLessThanFormatPipe.transform(x.nominatedCount, 3, true, false),\r\n nominatedQuantityLessThan10000CsvFormat: numberPipe.transform(x.nominatedQuantityLessThan10000, true, false),\r\n authorizedQuantityLessThan10000CsvFormat: numberPipe.transform(x.authorizedQuantityLessThan10000, true, false),\r\n nominatedCountLessThan10000CsvFormat: numberLessThanFormatPipe.transform(x.nominatedCountLessThan10000, 4, true, false),\r\n nominatedQuantityGreaterThan10000CsvFormat: numberPipe.transform(x.nominatedQuantityGreaterThan10000, true, false),\r\n authorizedQuantityGreaterThan10000CsvFormat: numberPipe.transform(x.authorizedQuantityGreaterThan10000, true, false),\r\n nominatedCountGreaterThan10000CsvFormat: numberLessThanFormatPipe.transform(x.nominatedCountGreaterThan10000, 4, true, false),\r\n bfpServiceCategorySortOrder: this.getBfpServiceCategorySortOrder(x.bfpServiceCategory)\r\n }));\r\n\r\n csvData = _.sortBy(csvData,\r\n ['gasDay', 'bfpServiceCategorySortOrder', 'receiptLocationName', 'deliveryLocationName', 'primaryReceiptLocationName', 'primaryDeliveryLocationName', 'bidPrice']);\r\n\r\n const filename = title + ' ' + fromGasDay.toDisplayFormat() + ' to ' + toGasDay.toDisplayFormat() + '.csv';\r\n\r\n const headers = ['Gas Day', 'Primary Receipt Location', 'Receipt Location', 'Delivery Location', 'Primary Delivery Location',\r\n 'Service Category', 'Bid Price', 'Nom Qty', 'Auth Qty', 'Sched Qty', 'Variance', 'Nom Cnt',\r\n 'Nom Qty<10000', 'Auth Qty<10000', 'Nom Cnt<10000',\r\n 'Nom Qty>10000', 'Auth Qty>10000', 'Nom Cnt>10000'\r\n ];\r\n\r\n const columns = ['gasDayCsvFormat', 'primaryReceiptLocationName', 'receiptLocationName', 'deliveryLocationName', 'primaryDeliveryLocationName',\r\n 'bfpServiceCategory', 'bidPriceCsvFormat', 'nominatedQuantityCsvFormat', 'authorizedQuantityCsvFormat', 'scheduledQuantityCsvFormat', 'varianceCsvFormat', 'nominatedCountCsvFormat',\r\n 'nominatedQuantityLessThan10000CsvFormat', 'authorizedQuantityLessThan10000CsvFormat', 'nominatedCountLessThan10000CsvFormat',\r\n 'nominatedQuantityGreaterThan10000CsvFormat', 'authorizedQuantityGreaterThan10000CsvFormat', 'nominatedCountGreaterThan10000CsvFormat'\r\n ];\r\n\r\n this.fileService.downloadCsvFile(filename, csvData, headers, columns);\r\n }\r\n\r\n private getBfpServiceCategorySortOrder(bfpServiceCategory: string): number {\r\n if (bfpServiceCategory === \"Firm\") return 0;\r\n if (bfpServiceCategory === \"Diversion\") return 1;\r\n if (bfpServiceCategory === \"STFT\") return 2;\r\n if (bfpServiceCategory === \"IT\") return 3;\r\n return 4;\r\n }\r\n}\r\n","\r\n\r\n
\r\n\r\n {{getTitle()}}\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n From Gas Day: {{model.lastSearchParams?.fromGasDay | gasDayFormat}}\r\n To Gas Day: {{model.lastSearchParams?.toGasDay | gasDayFormat}}\r\n Locations: {{model.lastSearchParams.locationIds | multiDisplayName: 'id' : 'name' : model.locations}} \r\n Variance Only: {{model.lastSearchParams?.varianceOnly | booleanAsYesNo }} \r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{ model.lastSearchParams.fromGasDay | gasDayFormat }}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{ model.lastSearchParams.toGasDay | gasDayFormat }}\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.locationIds | multiDisplayName: 'id' : 'name' : model.locations}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.varianceOnly | booleanAsYesNo}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n Number of summaries found: {{model.searchResults.details.length}}\r\n AS OF {{model.searchResults.queryDateTime | dateFormat:'YYYY-MMM-DD H:mm:ss'}}\r\n\r\n
0\" class=\"pull-right\">\r\n Export CSV\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {{data.data.nominatedCount | numberLessThanFormat: 3 : true }}\r\n
\r\n
\r\n \r\n
\r\n {{data.data.nominatedQuantityLessThan10000 | numberFormat: true }}\r\n
\r\n
\r\n \r\n
\r\n {{data.data.authorizedQuantityLessThan10000 | numberFormat: true }}\r\n
\r\n
\r\n \r\n
\r\n {{data.data.nominatedCountLessThan10000 | numberLessThanFormat: 4 : true }}\r\n
\r\n
\r\n 10000\" alignment=\"right\" cellTemplate=\"nominatedQuantityGreaterThan10000Template\" [minWidth]=\"90\">\r\n
\r\n {{data.data.nominatedQuantityGreaterThan10000 | numberFormat: true }}\r\n
\r\n
\r\n 10000\" alignment=\"right\" dataType=\"number\" cellTemplate=\"authorizedQuantityGreaterThan10000Template\" [minWidth]=\"90\">\r\n
\r\n {{data.data.authorizedQuantityGreaterThan10000 | numberFormat: true }}\r\n
\r\n
\r\n 10000\" alignment=\"right\" dataType=\"number\" cellTemplate=\"nominatedCountGreaterThan10000Template\" [minWidth]=\"90\">\r\n
\r\n {{data.data.nominatedCountGreaterThan10000 | numberLessThanFormat: 4 : true }}\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n","import {of, forkJoin, Observable} from 'rxjs';\r\n\r\nimport {tap, concatMap} from 'rxjs/operators';\r\nimport {Component, ViewChild} from \"@angular/core\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\n\r\nimport {AlertService} from \"app/shared/services/webapp/alert/alert.service\";\r\nimport {AppService} from 'app/shared/services/webapp/app/app.service';\r\nimport {BaseSearchComponent} from \"app/shared/classes/base-search-component\";\r\nimport {TypedParams} from \"app/shared/classes/typed-params\";\r\nimport {BaseViewModel} from \"@model/base-view-model\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {GasDayCycleStatusSearchParams} from \"@shared/services/nomination/gas-cycle/gas-cycle.service\";\r\nimport {IGasDay} from \"@model/gas-day-month.interface\";\r\nimport {NominationSystemService} from '@shared/services/nomination/nomination-system/nomination-system.service';\r\nimport {NominationLocation} from \"@shared/services/nomination/nomination-location/nomination-location.service\";\r\nimport {LocationSearchParams, NominationLocationService} from \"@shared/services/nomination/nomination-location/nomination-location.service\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {NominationTransactionService} from \"@shared/services/nomination/nomination-transaction/nomination-transaction.service\";\r\nimport {DateTime} from \"@model/date-time\";\r\nimport * as _ from \"lodash\";\r\nimport {NominationLocationEnrichmentService} from \"@shared/services/nomination/nomination-location-enrichment/nomination-location-enrichment.service\";\r\nimport {BfpDailyTransportationSummaryCsvBuilderService} from \"@shared/services/nomination/transportation-summary-csv-builder/transportation-summary-csv-builder.service\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\n\r\n@Component({\r\n selector: 'app-bfp-daily-transportation-summary',\r\n templateUrl: './bfp-daily-transportation-summary.component.html',\r\n styleUrls: ['./bfp-daily-transportation-summary.component.css']\r\n})\r\nexport class BfpDailyTransportationSummaryComponent extends BaseSearchComponent {\r\n\r\n model: BfpDailyTransportationSummaryModel = new BfpDailyTransportationSummaryModel();\r\n @ViewChild(DxDataGridComponent) dataGrid: DxDataGridComponent;\r\n\r\n constructor(protected appService: AppService,\r\n protected router: Router,\r\n protected activatedRoute: ActivatedRoute,\r\n protected alertService: AlertService,\r\n protected nominationSystemService: NominationSystemService,\r\n protected nominationLocationService: NominationLocationService,\r\n private nominationTransactionService: NominationTransactionService,\r\n private nominationLocationEnrichmentService: NominationLocationEnrichmentService,\r\n private bfpDailyTransportationSummaryCsvBuilderService: BfpDailyTransportationSummaryCsvBuilderService,\r\n ) {\r\n super('Daily Transportation Summary for BFP', appService, activatedRoute, router, alertService);\r\n }\r\n\r\n /**\r\n * Public Methods\r\n */\r\n\r\n public onGasDayChanged(): void {\r\n if (this.isValidDates()) {\r\n this.loadSearchResources().subscribe(() => {});\r\n }\r\n }\r\n\r\n public toggleFilterSection() {\r\n this.model.showFilters = !this.model.showFilters;\r\n }\r\n\r\n public isValidDates = (): boolean => {\r\n if (this.model.searchParams.toGasDay == null || this.model.searchParams.fromGasDay == null) { return true; }\r\n\r\n return this.model.searchParams.toGasDay >= this.model.searchParams.fromGasDay;\r\n };\r\n\r\n exportCsvClicked = () =>\r\n this.bfpDailyTransportationSummaryCsvBuilderService.build(\r\n \"Daily Transportation Summary BFP \",\r\n this.model.searchResults,\r\n this.model.searchParams.fromGasDay,\r\n this.model.searchParams.toGasDay\r\n );\r\n\r\n bfpServiceCategorySortValue = (rowData: BfpDailyTransportationDetailDto) => {\r\n if (rowData.bfpServiceCategory === \"Firm\") return 0;\r\n if (rowData.bfpServiceCategory === \"Diversion\") return 1;\r\n if (rowData.bfpServiceCategory === \"STFT\") return 2;\r\n if (rowData.bfpServiceCategory === \"IT\") return 3;\r\n return 4;\r\n };\r\n\r\n /*\r\n * Protected methods\r\n */\r\n protected buildQueryParams(isForQueryParams: boolean = true): any {\r\n const request = new BfpDailyTransportationSummaryRequest();\r\n\r\n request.fromGasDay = this.model.searchParams.fromGasDay;\r\n request.toGasDay = this.model.searchParams.toGasDay;\r\n\r\n request.locationIds = this.model.searchParams.locationIds;\r\n request.varianceOnly = this.model.searchParams.varianceOnly;\r\n\r\n return request;\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n\r\n const serviceCalls: Observable[] = [\r\n this.nominationSystemService.pipelineGasDay(), // 0\r\n this.nominationSystemService.bfpAvailableGasDays() // 1\r\n ];\r\n\r\n return forkJoin(serviceCalls).pipe(\r\n tap(response => {\r\n const pipelineGasDay = response[0]; // 0\r\n this.model.availableGasDays = response[1].map(x => GasDay.parse(x));\r\n\r\n if (!pipelineGasDay.hasGasDayCycles()) {\r\n this.alertService.addWarnMessage(\"Warning\", \"There are no Gas Day Cycles for the pipeline.\");\r\n return;\r\n }\r\n\r\n if (this.model.availableGasDays.length === 0) {\r\n this.alertService.addWarnMessage(\"Warning\", \"There are no Authorized Gas Cycles for the pipeline.\");\r\n return;\r\n }\r\n\r\n this.appService.hideMenu();\r\n this.appService.clearMessages();\r\n\r\n // From Gas Day\tDefault to current gas day.\r\n // \tCan select a closed gas day or open gas day where a cycle has been authorized (Preliminary or later state).\r\n // To Gas Day\tDefault to current gas day.\r\n // Can select a closed gas day or open gas day where a cycle has been authorized (Preliminary or later state).\r\n // \tMust be the same or after the From Gas Day.\r\n // \tWhen the From Gas Day is changed, if the To Gas Day is before then change it to the From Gas Day.\r\n\r\n this.model.gasDay =\r\n _.some(this.model.availableGasDays, x => x.toDate === pipelineGasDay.allowableGasDay.toDate) ?\r\n this.model.gasDay = pipelineGasDay.allowableGasDay :\r\n GasDay.from(_.max(_.map(this.model.availableGasDays, x => x.toDate)));\r\n\r\n this.model.minGasDay = pipelineGasDay.minGasDayForCycleStatus;\r\n this.model.maxGasDay = this.model.gasDay; // Same logic used to determine gas day\r\n }));\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n\r\n if (!this.isValidDates()) {\r\n return of(null);\r\n }\r\n\r\n const serviceCalls: Observable[] = [\r\n this.nominationLocationService.queryLocationNames(new LocationSearchParams(this.model.searchParams.fromGasDay, true, this.model.searchParams.toGasDay, false))\r\n ];\r\n\r\n return forkJoin(serviceCalls).pipe(tap( responses => {\r\n this.model.locations = _.orderBy(responses[0], x => x.name);\r\n\r\n // Check if all locations selected are in still in the list of available locations.\r\n // For simplicity, we will unselect the locations in this rare occurance of a location expiring, for example.\r\n const difference = _.difference(this.model.searchParams.locationIds, this.model.locations.map(x => x.id));\r\n if (difference.length !== 0) {\r\n this.model.searchParams.locationIds = null;\r\n }\r\n }));\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n\r\n const searchRequest = this.buildSearchRequest();\r\n\r\n const serviceCalls: Observable[] = [\r\n this.queryBfpDailyTransportationSummary(searchRequest)\r\n ];\r\n\r\n return forkJoin(serviceCalls).pipe(\r\n tap(([results]: [BfpDailyTransportationSummaryDto]) => {\r\n\r\n this.model.searchResults =\r\n this.processBfpDailyTransportationSummaryResults(results); // Any processing that needs to be done.\r\n\r\n }));\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n if (this.dataGrid) {\r\n this.dataGrid.instance.clearSorting();\r\n this.dataGrid.instance.columnOption('Gas Day', {sortOrder: 'asc', sortIndex: 0});\r\n this.dataGrid.instance.columnOption('Service Category', {sortOrder: 'asc', sortIndex: 1});\r\n this.dataGrid.instance.columnOption('Receipt Location', {sortOrder: 'asc', sortIndex: 2});\r\n this.dataGrid.instance.columnOption('Delivery Location', {sortOrder: 'asc', sortIndex: 3});\r\n this.dataGrid.instance.columnOption('Primary Receipt Location', {sortOrder: 'asc', sortIndex: 4});\r\n this.dataGrid.instance.columnOption('Primary Delivery Location', {sortOrder: 'asc', sortIndex: 5});\r\n this.dataGrid.instance.columnOption('Bid Price', {sortOrder: 'asc', sortIndex: 6});\r\n }\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return this.gasDayRangeParamValidator().isValid(params);\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n const gasDay = this.model.gasDay;\r\n this.model.searchParams = new BfpDailyTransportationSummarySearchParams();\r\n this.model.searchResults = null;\r\n this.setGasDaySearchParams(gasDay, gasDay);\r\n }\r\n\r\n protected setSearchParams(params: TypedParams): void {\r\n const fromGasDay = params.asGasDay('fromGasDay');\r\n const toGasDay = params.asGasDay('toGasDay');\r\n this.setCommonSearchParamsFromRoute(params);\r\n this.setGasDaySearchParams(fromGasDay, toGasDay);\r\n }\r\n\r\n private gasDayRangeParamValidator(): ParamValidator {\r\n const gasDayRangeQueryParams = ParamValidator.Standard();\r\n gasDayRangeQueryParams.isGasDay('fromGasDay');\r\n gasDayRangeQueryParams.isGasDay('toGasDay');\r\n return gasDayRangeQueryParams;\r\n }\r\n\r\n private setCommonSearchParamsFromRoute(params: TypedParams): void {\r\n if (params) {\r\n this.model.searchParams.locationIds = this.parseLocations(params.asString('locationIds'));\r\n }\r\n }\r\n\r\n private setGasDaySearchParams(fromGasDay: GasDay, toGasDay: GasDay): void {\r\n this.model.searchParams.fromGasDay = fromGasDay;\r\n this.model.searchParams.toGasDay = toGasDay;\r\n }\r\n\r\n private parseLocations(locations: any): number[] {\r\n if (locations && typeof(locations) === 'string') {\r\n locations = locations.split(',');\r\n }\r\n return (locations !== undefined && locations !== null && locations !== '') ? locations.map(Number) : [];\r\n }\r\n\r\n private buildSearchRequest() {\r\n const request = new BfpDailyTransportationSummaryRequest();\r\n request.fromGasDay = this.model.searchParams.fromGasDay;\r\n request.toGasDay = this.model.searchParams.toGasDay;\r\n request.locationIds = this.model.searchParams.locationIds;\r\n request.varianceOnly = this.model.searchParams.varianceOnly;\r\n return request;\r\n }\r\n\r\n private queryBfpDailyTransportationSummary(searchRequest: BfpDailyTransportationSummaryRequest) {\r\n\r\n return this.nominationTransactionService.queryBfpTransportationSummary(searchRequest).pipe(\r\n concatMap(transportationSummaries => {\r\n return forkJoin([\r\n this.nominationLocationEnrichmentService.enrichArray(transportationSummaries.details, 'primaryReceiptLocationId', 'primaryReceiptLocation'),\r\n this.nominationLocationEnrichmentService.enrichArray(transportationSummaries.details, 'primaryDeliveryLocationId', 'primaryDeliveryLocation'),\r\n this.nominationLocationEnrichmentService.enrichArray(transportationSummaries.details, 'receiptLocationId', 'receiptLocation'),\r\n this.nominationLocationEnrichmentService.enrichArray(transportationSummaries.details, 'deliveryLocationId', 'deliveryLocation')\r\n ]).pipe(concatMap(() => of(transportationSummaries)));\r\n }));\r\n }\r\n\r\n private processBfpDailyTransportationSummaryResults(results: BfpDailyTransportationSummaryDto): BfpDailyTransportationSummaryDto {\r\n return results;\r\n }\r\n}\r\n\r\nexport class BfpDailyTransportationSummaryModel extends BaseViewModel {\r\n gasDay: GasDay;\r\n minGasDay: GasDay;\r\n maxGasDay: GasDay;\r\n availableGasDays: Array;\r\n varianceOnly: boolean;\r\n\r\n searchResults: BfpDailyTransportationSummaryDto;\r\n\r\n searchParams: BfpDailyTransportationSummarySearchParams = new BfpDailyTransportationSummarySearchParams();\r\n lastSearchParams: BfpDailyTransportationSummarySearchParams = null;\r\n\r\n locations: NominationLocation[] = [];\r\n\r\n showFilters: boolean;\r\n}\r\n\r\n\r\nexport class BfpDailyTransportationSummarySearchParams extends GasDayCycleStatusSearchParams {\r\n locationIds: number[] = null;\r\n varianceOnly: boolean = false;\r\n}\r\n\r\n\r\nexport class BfpDailyTransportationDetailDto {\r\n gasDay: string;\r\n primaryReceiptLocationId: number;\r\n receiptLocationId: number;\r\n deliveryLocationId: number;\r\n primaryDeliveryLocationId: number;\r\n\r\n bfpServiceCategory: string;\r\n bidPrice: number;\r\n nominatedQuantity: number;\r\n scheduledQuantity: number;\r\n authorizedQuantity: number;\r\n variance: number;\r\n nominatedCount: number;\r\n nominatedQuantityLessThan10000: number;\r\n authorizedQuantityLessThan10000: number;\r\n nominatedCountLessThan10000: number;\r\n nominatedQuantityGreaterThan10000: number;\r\n authorizedQuantityGreaterThan10000: number;\r\n nominatedCountGreaterThan10000: number;\r\n}\r\n\r\nexport class BfpDailyTransportationSummaryDto {\r\n details: BfpDailyTransportationDetailDto[];\r\n queryDateTime: DateTime;\r\n}\r\n\r\nexport class BfpDailyTransportationSummaryRequest {\r\n fromGasDay: IGasDay;\r\n toGasDay: IGasDay;\r\n locationIds: number[];\r\n varianceOnly: boolean = false;\r\n}\r\n","\r\nimport {of, Observable} from 'rxjs';\r\n\r\nimport {tap} from 'rxjs/operators';\r\nimport {GasDayCycleStatusCollection} from \"@model/gas-day-cycle-status-collection\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {NominationEnterprise} from \"@shared/services/nomination/nomination-enterprise/nomination-enterprise.service\";\r\nimport * as _ from \"lodash\";\r\nimport {NominationGroup} from \"@shared/services/nomination/nomination-nom-group/nomination-nom-group.service\";\r\nimport {AccountType, QueryNomGroupNamesByBusinessRights} from \"app/gcts/nomination/account-summary/account-summary-model\";\r\nimport {Enterprise} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\n\r\nexport class ContractUtilizationModel {\r\n private queryNomGroupNamesByBusinessRights: QueryNomGroupNamesByBusinessRights;\r\n\r\n minGasDay: GasDay;\r\n maxGasDay: GasDay;\r\n gasDay: GasDay;\r\n actualGasDay: GasDay;\r\n earliestSelectableGasDay: GasDay;\r\n\r\n gasDayCycleStatuses: GasDayCycleStatusCollection = GasDayCycleStatusCollection.create();\r\n showFilterSection: boolean = true;\r\n allAccounts: NominationGroup[] = [];\r\n filteredAccounts: NominationGroup[] = [];\r\n customers: NominationEnterprise[] = [];\r\n percents: PercentRange[] = [];\r\n utilizationTypes: UtilizationType[] = [];\r\n\r\n searchParams: ContractUtilizationSearchParams = new ContractUtilizationSearchParams();\r\n lastSearchParams: ContractUtilizationSearchParams;\r\n\r\n searchDateTime: Date;\r\n searchResults: ContractUtilizationReportRow[];\r\n isExternalUser: boolean;\r\n accountsSelectDisabled: boolean = true;\r\n accountTypes: AccountType[];\r\n customerAccountTypes: AccountType[];\r\n\r\n constructor(queryNomGroupNamesByBusinessRights: QueryNomGroupNamesByBusinessRights) {\r\n this.queryNomGroupNamesByBusinessRights = queryNomGroupNamesByBusinessRights;\r\n this.createPercentRanges();\r\n this.createUtilizationTypes();\r\n }\r\n\r\n public customerChangedUpdateDropdowns() {\r\n if (_.isNil(this.searchParams.enterpriseId)) {\r\n this.emptyHubAccounts();\r\n this.updateAccountTypeOptions(null);\r\n\r\n return of(null);\r\n }\r\n\r\n return this.queryNomGroupNamesByBusinessRights.queryNomGroupNamesByBusinessRights().pipe(\r\n tap(() => {\r\n this.rebuildAccountOptions();\r\n this.updateAccountTypeOptions(this.searchParams.enterpriseId);\r\n }));\r\n }\r\n\r\n private emptyHubAccounts(): void {\r\n this.accountsSelectDisabled = true;\r\n this.searchParams.hubAccountId = null;\r\n this.filteredAccounts = [];\r\n }\r\n\r\n private updateAccountTypeOptions(enterpriseId: number): void {\r\n if (_.isNil(enterpriseId)) {\r\n this.customerAccountTypes = this.accountTypes;\r\n return;\r\n }\r\n\r\n const accountTypes = this.accountTypes;\r\n // Get the distinct account types\r\n const distinctHubAccountTypes = this.getDistinctHubAccountTypes(this.allAccounts);\r\n this.customerAccountTypes = _.filter(accountTypes, x => _.includes(distinctHubAccountTypes, x.businessRight.name));\r\n }\r\n\r\n private rebuildAccountOptions(): void {\r\n // If an account type has been selected, reduce the accounts to the matching business right\r\n this.filteredAccounts = _.sortBy(this.allAccounts, value => value.mnemonic);\r\n this.accountsSelectDisabled = false;\r\n // the assumption is that filter returns an empty array if there is no match on enterpriseId\r\n if (this.filteredAccounts.length === 1) {\r\n this.searchParams.hubAccountId = this.filteredAccounts[0].id;\r\n } else if (this.searchParams.hubAccountId && _.every(this.filteredAccounts, a => a.id !== this.searchParams.hubAccountId)) {\r\n // leave the selected hubAccountId as long as it exists in the drop-down list\r\n this.searchParams.hubAccountId = null;\r\n }\r\n }\r\n\r\n private getDistinctHubAccountTypes(allAccounts: NominationGroup[]) {\r\n return _.uniqBy(allAccounts, x => x.businessRight).map(x => x.businessRight);\r\n }\r\n\r\n private createPercentRanges(): void {\r\n this.percents.push(new PercentRange(1, 10));\r\n this.percents.push(new PercentRange(2, 20));\r\n this.percents.push(new PercentRange(3, 30));\r\n this.percents.push(new PercentRange(4, 40));\r\n this.percents.push(new PercentRange(5, 50));\r\n this.percents.push(new PercentRange(6, 60));\r\n this.percents.push(new PercentRange(7, 70));\r\n this.percents.push(new PercentRange(8, 80));\r\n this.percents.push(new PercentRange(9, 90));\r\n this.percents.push(new PercentRange(10, 99.9));\r\n\r\n this.percents.reverse();\r\n }\r\n\r\n private createUtilizationTypes(): void {\r\n this.utilizationTypes.push(new UtilizationType('UNDER'));\r\n this.utilizationTypes.push(new UtilizationType('OVER'));\r\n }\r\n}\r\n\r\nexport class ContractUtilizationSearchParams {\r\n gasDay: GasDay;\r\n enterpriseId?: number;\r\n hubAccountId?: number;\r\n percentage?: number;\r\n utilizationType?: string;\r\n}\r\n\r\nexport class ContractUtilizationReportRow {\r\n enterpriseId: number;\r\n hubAccountId: number;\r\n tos: string;\r\n primaryReceiptLocationId: number;\r\n primaryDeliveryLocationId: number;\r\n nominatedQuantity: number;\r\n scheduledQuantity: number;\r\n demandQuantity: number;\r\n overUnderGJ: number;\r\n percent: number;\r\n\r\n public static create(dto: any): ContractUtilizationReportRow {\r\n const row = new ContractUtilizationReportRow();\r\n\r\n row.enterpriseId = dto.enterpriseId;\r\n row.hubAccountId = dto.hubAccountId;\r\n row.tos = dto.tos;\r\n row.primaryReceiptLocationId = dto.primaryReceiptLocationId;\r\n row.primaryDeliveryLocationId = dto.primaryDeliveryLocationId;\r\n row.nominatedQuantity = dto.nominatedQuantity;\r\n row.scheduledQuantity = dto.scheduledQuantity;\r\n row.demandQuantity = dto.demandQuantity;\r\n row.overUnderGJ = dto.overUnder;\r\n row.percent = dto.percent;\r\n\r\n return row;\r\n }\r\n}\r\n\r\nexport class PercentRange {\r\n id: number;\r\n max: number;\r\n displayVal: string;\r\n\r\n constructor(id: number, max: number) {\r\n this.id = id;\r\n this.max = max;\r\n this.displayVal = \"0 - \" + max;\r\n }\r\n}\r\n\r\nexport class UtilizationType {\r\n val: string;\r\n\r\n constructor(val: string) {\r\n this.val = val;\r\n }\r\n}\r\n\r\nexport class ContractUtilizationSearchRequest {\r\n gasDay: GasDay;\r\n enterpriseId?: number;\r\n hubAccountId?: number;\r\n percent?: number;\r\n utilizationType?: string;\r\n}\r\n\r\nexport class ContractUtilizationResponse {\r\n enterpriseId: number;\r\n hubAccountId: number;\r\n tos: string;\r\n primaryReceiptLocationId: number;\r\n primaryDeliveryLocationId: number;\r\n nominatedQuantity: number;\r\n scheduledQuantity: number;\r\n demandQuantity: number;\r\n overUnder: number;\r\n percent: number;\r\n}\r\n","\r\nimport {forkJoin, Observable} from 'rxjs';\r\n\r\nimport {map} from 'rxjs/operators';\r\nimport { Injectable } from '@angular/core';\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {NominationResourceService} from \"@shared/resources/nominations-resource.service\";\r\nimport {ContractUtilizationReportRow, ContractUtilizationResponse, ContractUtilizationSearchRequest} from \"app/gcts/nomination/contract-utilization/contract-utilization-model\";\r\nimport {Enterprise} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport * as _ from \"lodash\";\r\nimport {NominationSystemService} from \"@shared/services/nomination/nomination-system/nomination-system.service\";\r\n\r\n@Injectable()\r\nexport class ContractUtilizationService {\r\n\r\n constructor(private nominationResource: NominationResourceService,\r\n private nominationSystemService: NominationSystemService) { }\r\n\r\n queryContractUtilization(searchParams: ContractUtilizationSearchRequest): Observable<[ContractUtilizationReportRow[], Date]> {\r\n\r\n return forkJoin([\r\n this.nominationResource.get('/reports/contractUtilization', true, this.buildUrlSearchParams(searchParams)).pipe(\r\n map(rows => _.map(rows, x => ContractUtilizationReportRow.create(x)))),\r\n this.nominationSystemService.applicationServerTimes().pipe(map(res => new Date(res.serverTime)))\r\n ]);\r\n\r\n // return this.nominationResource.get('/reports/contractUtilization', true, this.buildUrlSearchParams(searchParams))\r\n // .map(rows => _.map(rows, x => ContractUtilizationReportRow.create(x)));\r\n }\r\n\r\n private buildUrlSearchParams(searchParams: ContractUtilizationSearchRequest): GCTSHttpParams {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n if (searchParams.gasDay != null) { params.set('gasDay', searchParams.gasDay.toString()); }\r\n if (searchParams.enterpriseId != null) { params.set('enterpriseId', searchParams.enterpriseId.toString()); }\r\n if (searchParams.hubAccountId != null) { params.set('hubAccountId', searchParams.hubAccountId.toString()); }\r\n if (searchParams.percent != null) { params.set('percent', searchParams.percent.toString()); }\r\n if (searchParams.utilizationType != null) { params.set('utilizationType', searchParams.utilizationType.toString()); }\r\n return params;\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Gas Day: {{model.lastSearchParams?.gasDay | gasDayFormat}}\r\n Customer: {{model.lastSearchParams?.enterpriseId | displayName: 'id' : 'displayValue' : model.customers}}\r\n Account: {{model.lastSearchParams?.hubAccountId | displayName: 'id' : 'mnemonic' : model.allAccounts}}\r\n Percent: {{model.lastSearchParams?.percentage | displayName: 'id' : 'displayVal' : model.percents}}\r\n Utilization Type: {{ model.lastSearchParams?.utilizationType | displayName: 'val' : 'val' : model.utilizationTypes }}\r\n\r\n \r\n
\r\n\r\n\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.gasDay | gasDayFormat }}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.enterpriseId | displayName: 'id' : 'displayValue' : model.customers}}\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.hubAccountId | displayName: 'id' : 'mnemonic' : model.filteredAccounts}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.percentage | displayName: 'max' : 'displayVal' : model.percents}}\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.utilizationType | displayName: 'val' : 'val' : model.utilizationTypes }}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n Number of results found: {{ model.searchResults.length }}\r\n AS OF {{model.searchDateTime | dateFormat:'YYYY-MMM-DD H:mm:ss'}}\r\n
0\" class=\"pull-right\">\r\n Export CSV\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {{ data.data.overUnderGJ }}\r\n = 0\">{{ data.data.overUnderGJ }}\r\n
\r\n
\r\n \r\n
\r\n {{ data.data.percent }}\r\n = 0\">{{ data.data.percent }}\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n","import {forkJoin, Observable} from 'rxjs';\r\n\r\nimport {tap, map, concatMap} from 'rxjs/operators';\r\nimport { Component } from '@angular/core';\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {ContractUtilizationModel, ContractUtilizationReportRow, ContractUtilizationSearchParams, ContractUtilizationSearchRequest} from \"app/gcts/nomination/contract-utilization/contract-utilization-model\";\r\nimport {NominationSystemService} from \"@shared/services/nomination/nomination-system/nomination-system.service\";\r\nimport {NominationLocationEnrichmentService} from \"@shared/services/nomination/nomination-location-enrichment/nomination-location-enrichment.service\";\r\nimport {NominationNomGroupEnrichmentService} from \"@shared/services/nomination/nomination-nom-group-enrichment/nomination-nom-group-enrichment.service\";\r\nimport {NominationEnterpriseEnrichmentService} from \"@shared/services/nomination/nomination-enterprise-enrichment/nomination-enterprise-enrichment.service\";\r\nimport {BusinessRight} from \"@model/business-right\";\r\nimport * as _ from \"lodash\";\r\nimport {EnterpriseSearchParams, NominationEnterprise, NominationEnterpriseService} from \"@shared/services/nomination/nomination-enterprise/nomination-enterprise.service\";\r\nimport {UserService} from \"@shared/services/webapp/user/user-service\";\r\nimport {IGasDay} from \"@model/gas-day-month.interface\";\r\nimport {AccountType, QueryNomGroupNamesByBusinessRights} from \"app/gcts/nomination/account-summary/account-summary-model\";\r\nimport {NominationGroup, NominationNomGroupService} from \"@shared/services/nomination/nomination-nom-group/nomination-nom-group.service\";\r\nimport {ContractUtilizationService} from \"@shared/services/nomination/contract-utilization/contract-utilization.service\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {NominationPipelineGasDay} from \"@model/nomination-pipeline-gas-day\";\r\n\r\n\r\n@Component({\r\n selector: 'app-contract-utilization',\r\n templateUrl: './contract-utilization.component.html',\r\n styleUrls: ['./contract-utilization.component.css']\r\n})\r\nexport class ContractUtilizationComponent extends BaseSearchComponent implements QueryNomGroupNamesByBusinessRights {\r\n\r\n model: ContractUtilizationModel = new ContractUtilizationModel(this);\r\n\r\n constructor(protected appService: AppService,\r\n protected router: Router,\r\n protected activatedRoute: ActivatedRoute,\r\n protected alertService: AlertService,\r\n private nominationSystemService: NominationSystemService,\r\n private nominationEnterpriseService: NominationEnterpriseService,\r\n private nominationEnterpriseEnrichmentService: NominationEnterpriseEnrichmentService,\r\n private nominationLocationEnrichmentService: NominationLocationEnrichmentService,\r\n private nomGroupEnrichmentService: NominationNomGroupEnrichmentService,\r\n private userService: UserService,\r\n private nominationNomGroupService: NominationNomGroupService,\r\n private contractUtilizationService: ContractUtilizationService,\r\n public fileService: FileService) {\r\n super('Contract Utilization', appService, activatedRoute, router, alertService);\r\n this.appService.hideMenu();\r\n }\r\n\r\n\r\n // #########################################################################################################\r\n /**\r\n * Implemented Methods\r\n */\r\n\r\n protected loadInitialResources(): Observable {\r\n this.setExternalUser();\r\n\r\n const serviceCalls: Observable[] = [\r\n this.nominationSystemService.pipelineGasDay(),\r\n this.nominationEnterpriseEnrichmentService.fetch(),\r\n this.nominationLocationEnrichmentService.fetch(),\r\n this.nomGroupEnrichmentService.fetch()\r\n ];\r\n\r\n return forkJoin(serviceCalls).pipe(tap(response => {\r\n const pipelineGasDay = response[0] as NominationPipelineGasDay;\r\n\r\n if (!pipelineGasDay.hasGasDayCycles()) {\r\n this.alertService.addWarnMessage(\"Warning\", \"There are no Gas Day Cycles for the pipeline.\");\r\n return;\r\n }\r\n\r\n this.model.minGasDay = GasDay.max([pipelineGasDay.minGasDayForCycleStatus, pipelineGasDay.earliestSelectableGasDay]);\r\n // this.model.minGasDay = pipelineGasDay.minGasDayForCycleStatus;\r\n this.model.maxGasDay = pipelineGasDay.maxGasDayForCycleStatus;\r\n this.model.actualGasDay = pipelineGasDay.actualGasDay;\r\n this.model.earliestSelectableGasDay = pipelineGasDay.earliestSelectableGasDay;\r\n }));\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n const gasDay = this.model.searchParams.gasDay || this.model.gasDay;\r\n\r\n return this.getEnterprises(gasDay).pipe(\r\n tap(enterprises => {\r\n this.model.customers = _.orderBy( enterprises, x => x.displayValue);\r\n this.onCustomerChanged();\r\n if (this.model.searchParams.enterpriseId === undefined && this.model.isExternalUser) {\r\n this.setDefaultCustomer();\r\n }\r\n }));\r\n }\r\n\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return this.validator().isValid(params);\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams.gasDay = GasDay.max([typedParams.asGasDay('gasDay'),this.model.earliestSelectableGasDay]);\r\n this.model.searchParams.enterpriseId = typedParams.asNullableNumber('enterpriseId');\r\n this.model.searchParams.hubAccountId = typedParams.asNullableNumber('hubAccountId');\r\n this.model.searchParams.percentage = typedParams.asNullableNumber('percent');\r\n this.model.searchParams.utilizationType = typedParams.asNullableString('utilizationType');\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams = new ContractUtilizationSearchParams();\r\n this.model.searchParams.gasDay = GasDay.max([this.model.actualGasDay, this.model.earliestSelectableGasDay]);\r\n this.setDefaultCustomer();\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n const searchRequest = this.buildSearchRequest();\r\n\r\n return this.getContractUtilizationReport(searchRequest).pipe(\r\n tap(results => {\r\n\r\n const ordered = _.orderBy(results, ['enterpriseShortName', 'nominationGroupMnemonic', 'receiptLocationName', 'deliveryLocationName'], ['asc', 'asc', 'asc', 'asc']);\r\n const overs = _.filter(ordered, function(row: ContractUtilizationReportRow) {\r\n return row.overUnderGJ < 0;\r\n });\r\n const unders = _.filter(ordered, function(row: ContractUtilizationReportRow) {\r\n return row.overUnderGJ >= 0;\r\n });\r\n this.model.searchResults = overs.concat(unders);\r\n }));\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n return {\r\n gasDay: this.model.searchParams.gasDay,\r\n enterpriseId: this.model.searchParams.enterpriseId,\r\n hubAccountId: this.model.searchParams.hubAccountId,\r\n percent: this.model.searchParams.percentage,\r\n utilizationType: this.model.searchParams.utilizationType\r\n };\r\n }\r\n\r\n queryNomGroupNamesByBusinessRights(): Observable {\r\n const allAllowableBusinessRights = _.map(this.buildAccountTypes(), accountType => accountType.businessRight);\r\n\r\n return this.nominationNomGroupService.queryNomGroupNamesByBusinessRights(\r\n this.model.searchParams.gasDay,\r\n allAllowableBusinessRights,\r\n this.model.searchParams.enterpriseId).pipe(\r\n tap(nomGroups => this.model.allAccounts = nomGroups));\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n\r\n }\r\n\r\n protected resetCompleted(): void {\r\n this.model.searchResults = undefined;\r\n }\r\n\r\n\r\n // #########################################################################################################\r\n /**\r\n * Public Methods\r\n */\r\n\r\n public onCustomerChanged = () => this.model.customerChangedUpdateDropdowns().subscribe();\r\n\r\n public toggleFilterSectionClicked(): void {\r\n this.model.showFilterSection = !this.model.showFilterSection;\r\n }\r\n\r\n public onGasDayChanged = (): void => {\r\n if (!this.model.searchParams.gasDay) return;\r\n this.loadSearchResources().subscribe(() => {});\r\n };\r\n\r\n public exportCsvClicked() {\r\n const enterprise = _.find(this.model.customers, x => x.id === this.model.lastSearchParams.enterpriseId);\r\n const enterpriseName = enterprise === undefined ? 'All_Customers' : enterprise.mnemonic ;\r\n const filename = 'Contract_Utilization_' + enterpriseName + '_' + this.model.lastSearchParams.gasDay.toCsvFormat() + '.csv';\r\n const csvData = new Array();\r\n csvData.push(['Gas Day', 'Customer', 'Account', 'TOS', 'Primary Receipt Location', 'Primary Delivery Location', 'Nominated Quantity (GJ)',\r\n 'Scheduled Quantity (GJ)', 'Demand Quantity (GJ)', 'Over/Under (GJ)', 'Percent (%)']);\r\n\r\n _.forEach(this.model.searchResults, (row: any) => {\r\n csvData.push([this.model.lastSearchParams.gasDay.toCsvFormat(), row.enterpriseShortName, row.nominationGroupMnemonic, row.tos, row.receiptLocationName,\r\n row.deliveryLocationName, row.nominatedQuantity, row.scheduledQuantity, row.demandQuantity, row.overUnderGJ, row.percent]);\r\n });\r\n\r\n this.fileService.parseArrayToCsv(filename, csvData);\r\n\r\n }\r\n\r\n // #########################################################################################################\r\n /**\r\n * Private Methods\r\n */\r\n\r\n private setDefaultCustomer(): void {\r\n const user = this.userService.user;\r\n\r\n if (_.isNil(user.enterpriseId) || _.isNil(_.find(this.model.customers, x => x.id === +user.enterpriseId))) {\r\n return;\r\n }\r\n\r\n this.model.searchParams.enterpriseId = +user.enterpriseId;\r\n this.onCustomerChanged();\r\n }\r\n\r\n private buildSearchRequest(): ContractUtilizationSearchRequest {\r\n const request = new ContractUtilizationSearchRequest();\r\n\r\n request.gasDay = this.model.searchParams.gasDay;\r\n request.enterpriseId = this.model.searchParams.enterpriseId;\r\n request.hubAccountId = this.model.searchParams.hubAccountId;\r\n request.percent = this.model.searchParams.percentage;\r\n request.utilizationType = this.model.searchParams.utilizationType;\r\n\r\n return request;\r\n }\r\n\r\n private getContractUtilizationReport(searchRequest: ContractUtilizationSearchRequest): Observable {\r\n return this.contractUtilizationService.queryContractUtilization(searchRequest).pipe(\r\n concatMap(response => {\r\n const serviceCalls = [\r\n this.nominationEnterpriseEnrichmentService.enrichArray(response[0], 'enterpriseId', 'enterprise'),\r\n this.nomGroupEnrichmentService.enrichArray(response[0], 'hubAccountId', 'nominationGroup'),\r\n this.nominationLocationEnrichmentService.enrichArray(response[0], 'primaryReceiptLocationId', 'receiptLocation'),\r\n this.nominationLocationEnrichmentService.enrichArray(response[0], 'primaryDeliveryLocationId', 'deliveryLocation')\r\n ];\r\n this.model.searchDateTime = response[1];\r\n return forkJoin(serviceCalls).pipe(map(() => response[0]));\r\n }));\r\n }\r\n\r\n private buildAccountTypes(): Array {\r\n const accountTypes = new Array();\r\n accountTypes.push(new AccountType(\"Customer Hub (MTT)\", BusinessRight.Transportation));\r\n return accountTypes;\r\n }\r\n\r\n private validator(): ParamValidator {\r\n const paramValidator = ParamValidator.Standard();\r\n paramValidator.isGasDay('gasDay');\r\n paramValidator.isNumber('enterpriseId', true);\r\n paramValidator.isNumber('hubAccountId', true);\r\n return paramValidator;\r\n }\r\n\r\n\r\n private getEnterprises(gasDay: IGasDay): Observable {\r\n return this.nominationEnterpriseService.queryAllByPipeline({\r\n gasDay: gasDay,\r\n includeInactive: true,\r\n accountBusinessRights: [BusinessRight.MultiTitleTransfer, BusinessRight.CustodyTransfer]\r\n }).pipe(\r\n concatMap(response => {\r\n return this.nominationEnterpriseEnrichmentService.enrichArray(response, 'id');\r\n }));\r\n }\r\n\r\n private setExternalUser = () =>\r\n this.model.isExternalUser = !this.userService.user.isInternalUser || this.userService.user.isAssumingIdentity;\r\n\r\n\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {Observable} from \"rxjs\";\r\nimport {NominationResourceService} from \"@shared/resources/nominations-resource.service\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {Location} from '@shared/interfaces/location';\r\nimport * as _ from \"lodash\";\r\n\r\nexport class CreatePathSetRequest {\r\n pathSetName: string;\r\n paths: CreatePathRequest[];\r\n}\r\n\r\nexport class CreatePathRequest {\r\n receiptLocationId: string;\r\n deliveryLocationId: string;\r\n\r\n public static create(receiptLocationId: number, deliveryLocationId: number): CreatePathRequest {\r\n const createPathRequest = new CreatePathRequest();\r\n createPathRequest.receiptLocationId = receiptLocationId.toString();\r\n createPathRequest.deliveryLocationId = deliveryLocationId.toString();\r\n return createPathRequest;\r\n }\r\n}\r\n\r\nexport class ITBidFloorAverageReportPathSet { // readonly resultset\r\n id: number;\r\n pathSetName: string;\r\n}\r\n\r\nexport class ITBidFloorAverageReportPath { // readonly resultset\r\n id: number;\r\n pathSetId: number;\r\n deliveryLocationId: number;\r\n receiptLocationId: number;\r\n name: string;\r\n}\r\n\r\nexport class EditITBidFloorAverageReportPathSet { // operational\r\n pathSetName: string;\r\n paths: EditITBidFloorAverageReportPath[] = [];\r\n\r\n public sort(): void {\r\n this.paths =\r\n _.orderBy(this.paths, path =>\r\n [\r\n path.receiptLocation.name.toLowerCase(),\r\n path.deliveryLocation.name.toLowerCase()]);\r\n }\r\n\r\n public add(reportPath: EditITBidFloorAverageReportPath) {\r\n if (!this.contains(reportPath.id)) {\r\n this.paths.push(reportPath);\r\n }\r\n }\r\n\r\n public remove(reportPathTempKey: string): void {\r\n if (this.contains(reportPathTempKey)) {\r\n const reportPath = _.find(this.paths, x => x.id === reportPathTempKey);\r\n const index = this.paths.indexOf(reportPath, 0);\r\n if (index > -1) {\r\n this.paths.splice(index, 1);\r\n }\r\n }\r\n }\r\n\r\n private contains(reportPathTempKey: string): boolean {\r\n return _.some(this.paths, x => x.id === reportPathTempKey);\r\n }\r\n\r\n // private toRequest(): any {\r\n // const obj = new {};\r\n // obj.pathName = 'arthur';\r\n // obj.paths = [];\r\n // obj.paths.push(new {\r\n // deliveryLocationId: 1,\r\n // receiptLocationId: 2\r\n // })\r\n //\r\n // service.create(toRequest);\r\n // }\r\n\r\n public toRequest(pathSetName): CreatePathSetRequest {\r\n const aPathSetRequest = new CreatePathSetRequest();\r\n // aPathSetRequest.pathSetName = this.pathSetName; // dont think the pathset name is available from here\r\n aPathSetRequest.pathSetName = pathSetName; // dont think the pathset name is available from here\r\n const pathsToPush: CreatePathRequest[] = [];\r\n for (const path of this.paths) {\r\n const aPathRequest = CreatePathRequest.create(path.receiptLocation.id, path.deliveryLocation.id);\r\n pathsToPush.push(aPathRequest);\r\n }\r\n aPathSetRequest.paths = pathsToPush;\r\n return aPathSetRequest;\r\n }\r\n}\r\n\r\nexport class EditITBidFloorAverageReportPath { // readonly\r\n id: string;\r\n receiptLocation: Location;\r\n deliveryLocation: Location;\r\n\r\n constructor(receiptLocation: Location, deliveryLocation: Location) {\r\n this.id = `${receiptLocation.id}_${deliveryLocation.id}`;\r\n this.receiptLocation = receiptLocation;\r\n this.deliveryLocation = deliveryLocation;\r\n }\r\n\r\n public get name(): string {\r\n return `${this.receiptLocation.name} -> ${this.deliveryLocation.name}`;\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport class ReportsItBidFloorAverageService {\r\n\r\n constructor(private nominationsResource: NominationResourceService) {\r\n }\r\n\r\n queryPathSets(): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n const results = this.nominationsResource.get('/pathSets', true, params);\r\n return results;\r\n }\r\n\r\n queryPaths(selectedPathSetId: number): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n return this.nominationsResource.get('/paths/' + selectedPathSetId, true, params);\r\n }\r\n\r\n savePathSet(request: CreatePathSetRequest): Observable {\r\n const body = {\r\n pathSetName: request.pathSetName,\r\n paths: request.paths\r\n };\r\n return this.nominationsResource.postWithNoResponseBody('/pathSet', body);\r\n }\r\n}\r\n","import {ITBidFloorAverageReportPath} from \"@shared/services/nomination/reports-itbidflooraverage/reports-itbidflooraverage.service\";\r\n\r\nexport class ItBidFloorPathSetPopupModel {\r\n receiptLocationIds: number[] = [];\r\n deliveryLocationIds: number[] = [];\r\n paths: ITBidFloorAverageReportPath[] = []; // MR Changed this from path\r\n newPathSetName: string;\r\n placeholderName: string;\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n PERIOD: {{model.lastSearchParams.gasMonth}}\r\n PATH SET: {{model.lastSearchParams.pathSetId | displayName: 'id' : 'pathSetName' : model.pathSets }}\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.searchParams.gasMonth}}\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n \r\n
\r\n {{this.getSelectedPathSetName()}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n \r\n\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\r\n\r\n
 
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n\r\n\r\n \r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n","import * as _ from 'lodash';\r\nimport {AppService} from '@shared/services/webapp/app/app.service';\r\nimport {\r\n BidFloor,\r\n BidFloorAverageRequest,\r\n BidFloorService\r\n} from '@shared/services/nomination/bid-floor/bid-floor.service';\r\nimport {FileService} from '@shared/services/webapp/file-service/file.service';\r\nimport {Location} from '@shared/interfaces/location';\r\nimport {ActivatedRoute, Router, Params} from '@angular/router';\r\nimport {\r\n NominationLocationService,\r\n NominationLocation, LocationSearchParams\r\n} from '@shared/services/nomination/nomination-location/nomination-location.service';\r\nimport {NominationLocationEnrichmentService} from \"@shared/services/nomination/nomination-location-enrichment/nomination-location-enrichment.service\";\r\nimport {Component, ViewChild} from '@angular/core';\r\nimport {NominationSystemService} from '@shared/services/nomination/nomination-system/nomination-system.service';\r\nimport {DxDataGridComponent} from 'devextreme-angular';\r\nimport {forkJoin, Observable, of} from \"rxjs\";\r\nimport {BaseViewModel} from \"@model/base-view-model\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {AlertService} from \"app/shared/services/webapp/alert/alert.service\";\r\nimport {NominationPipelineGasDay} from \"@model/nomination-pipeline-gas-day\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {ModalComponent} from \"@shared/components/modal/modal.component\";\r\nimport {concatMap, tap} from \"rxjs/operators\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {\r\n EditITBidFloorAverageReportPath,\r\n EditITBidFloorAverageReportPathSet,\r\n ITBidFloorAverageReportPath,\r\n ITBidFloorAverageReportPathSet,\r\n ReportsItBidFloorAverageService\r\n} from \"@shared/services/nomination/reports-itbidflooraverage/reports-itbidflooraverage.service\";\r\nimport {ItBidFloorPathSetPopupModel} from \"app/gcts/nomination/it-bid-floor-average-report/it-bid-floor-average-report.model\";\r\nimport {DatePipe} from \"@angular/common\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {HttpResponse} from \"@angular/common/http\";\r\nimport * as FileSaver from \"file-saver\";\r\nimport {MultiSelectComponent} from \"@shared/components/multi-select/multi-select.component\";\r\n\r\n\r\n\r\n/**\r\n * Models\r\n */\r\n\r\nexport class BidFloorSearchParams {\r\n gasMonth: GasMonth;\r\n pathSetId: number;\r\n pathSetIds: string[];\r\n receiptLocationIds: number[];\r\n deliveryLocationIds: number[];\r\n showRevisions: boolean = false;\r\n}\r\n\r\nexport class ITBidFloorModel extends BaseViewModel {\r\n pipelineGasDay: NominationPipelineGasDay;\r\n gasMonth: GasMonth;\r\n minGasMonth: GasMonth;\r\n maxGasMonth: GasMonth;\r\n locations: Location[] = [];\r\n deliveryLocations: Location[] = [];\r\n receiptLocations: Location[] = [];\r\n pathSets: ITBidFloorAverageReportPathSet[] = [];\r\n searchParams: BidFloorSearchParams = new BidFloorSearchParams();\r\n lastSearchParams: BidFloorSearchParams = null;\r\n searchResults: BidFloor[];\r\n searchDateTime: Date;\r\n paths: ITBidFloorAverageReportPath[] = [];\r\n editPathSet: EditITBidFloorAverageReportPathSet = new EditITBidFloorAverageReportPathSet();\r\n\r\n public hasSearchResults(): boolean {\r\n return !_.isNil(this.lastSearchParams);\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'app-it-bid-floor-average-report',\r\n templateUrl: './it-bid-floor-average-report.component.html',\r\n styleUrls: ['./it-bid-floor-average-report.component.css']\r\n})\r\n\r\nexport class ITBidFloorAverageReportComponent extends BaseSearchComponent {\r\n static GasMonthParam: string = 'gasMonth';\r\n static PathSetIdParam: string = 'pathSetId';\r\n\r\n model: ITBidFloorModel = new ITBidFloorModel();\r\n @ViewChild(DxDataGridComponent) bidFloorDataGrid: DxDataGridComponent;\r\n @ViewChild(ModalComponent) addPathSetModal: ModalComponent;\r\n\r\n @ViewChild('foo') selectedPathsComponent: MultiSelectComponent;\r\n\r\n\r\n addPathSetPopup: ItBidFloorPathSetPopupModel;\r\n\r\n constructor(protected appService: AppService,\r\n protected alertService: AlertService,\r\n protected router: Router,\r\n protected activatedRoute: ActivatedRoute,\r\n protected nominationSystemService: NominationSystemService,\r\n protected nominationLocationService: NominationLocationService,\r\n protected nominationLocationEnrichmentService: NominationLocationEnrichmentService,\r\n protected reportsItBidFloorAverageService: ReportsItBidFloorAverageService,\r\n protected bidFloorService: BidFloorService,\r\n protected fileService: FileService,\r\n protected sessionService: SessionService) {\r\n super('IT Bid Floor Average', appService, activatedRoute, router, alertService);\r\n\r\n this.addPathSetPopup = new ItBidFloorPathSetPopupModel();\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n // this.model.displaySearchPathName = \"\";\r\n // this.model.displaySearchPeriod = \"\";\r\n // TODO: Fetch Nomination Location Enrichment Service\r\n\r\n\r\n return this.nominationSystemService.pipelineGasDay().pipe(\r\n tap(nominationPipelineGasDay => {\r\n this.model.pipelineGasDay = nominationPipelineGasDay;\r\n // MR As per Karen these should be based off the same logic as in the custody transfer report\r\n const myMaxGasMonth = GasMonth.from(nominationPipelineGasDay.allowableGasDay.toDate);\r\n this.model.maxGasMonth = myMaxGasMonth;\r\n this.model.minGasMonth = GasMonth.from(nominationPipelineGasDay.earliestSelectableGasDay.toDate);\r\n // MR Amendment from Mick - current month is not a viable selection\r\n if (myMaxGasMonth === this.model.maxGasMonth) {\r\n this.model.maxGasMonth = myMaxGasMonth.previous();\r\n }\r\n })\r\n );\r\n }\r\n\r\n\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return this.paramValidator().isValid(params);\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams.gasMonth = GasMonth.fromGasDay(this.model.pipelineGasDay.allowableGasDay);\r\n if ( this.model.searchParams.gasMonth.toDate > this.model.maxGasMonth.toDate) {\r\n this.model.searchParams.gasMonth = this.model.maxGasMonth;\r\n }\r\n\r\n this.model.searchParams.pathSetId = null;\r\n this.model.lastSearchParams = null;\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams.gasMonth = typedParams.asGasMonth(ITBidFloorAverageReportComponent.GasMonthParam) as GasMonth;\r\n this.model.searchParams.pathSetId = typedParams.asNumber(ITBidFloorAverageReportComponent.PathSetIdParam);\r\n // We don't need this. The BaseSearchComponent makes sure for us that this method is never called if the search params were not valid already.\r\n // Also, we don't do anything with the (boolean) result of this method. So, why are we calling it?\r\n // this.areParamsValid(this.model.searchParams);\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n const locationSearchParams = new LocationSearchParams(null, true, null, false);\r\n\r\n const nominationLocations$ = this.nominationLocationService.queryAllDetails2(locationSearchParams)\r\n .pipe(\r\n tap(locations => {\r\n this.model.locations = locations;\r\n this.model.deliveryLocations = _.orderBy(_.filter(locations, x => x.accountingLocationParameters.isDelivery), x => x.name);\r\n this.model.receiptLocations = _.orderBy(_.filter(locations, x => x.accountingLocationParameters.isReceipt), x => x.name);\r\n })\r\n );\r\n\r\n const that = this;\r\n\r\n const pathSets$ = this.reportsItBidFloorAverageService.queryPathSets()\r\n .pipe(\r\n tap(pathSets => {\r\n\r\n that.model.pathSets = pathSets;\r\n\r\n if (_.isNil(that.model.searchParams.pathSetId)) {\r\n that.model.searchParams.pathSetId = that.getMaxPathSetId();\r\n }\r\n })\r\n );\r\n\r\n return forkJoin(nominationLocations$, pathSets$);\r\n }\r\n\r\n\r\n\r\n\r\n\r\n /**\r\n * Private Methods\r\n */\r\n private getMaxPathSetId(): number {\r\n let myMaxPathSetId = -1;\r\n for (const pathSet of this.model.pathSets) {\r\n if (pathSet.id > myMaxPathSetId) { // need 3 equals signs in typescript it seems\r\n myMaxPathSetId = pathSet.id;\r\n }\r\n }\r\n return myMaxPathSetId;\r\n }\r\n\r\n\r\n getSelectedPathSetName(): string {\r\n for (const pathSet of this.model.pathSets) {\r\n if (pathSet.id === this.model.searchParams.pathSetId) { // need 3 equals signs in typescript it seems\r\n return pathSet.pathSetName;\r\n }\r\n }\r\n return \"NOT SET\";\r\n }\r\n\r\n private paramValidator(): ParamValidator {\r\n const queryParams = ParamValidator.Standard();\r\n return queryParams;\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n return {\r\n gasMonth: this.model.searchParams.gasMonth,\r\n pathSetId: this.model.searchParams.pathSetId\r\n };\r\n }\r\n\r\n protected performSearch(): Observable> {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n\r\n const requestParams: BidFloorAverageRequest = { gasMonth: this.model.searchParams.gasMonth, pathSetId: this.model.searchParams.pathSetId };\r\n\r\n return this.bidFloorService.getBidFloorAverage(requestParams).pipe(\r\n tap(response => {\r\n this.downloadFile(response);\r\n })\r\n );\r\n }\r\n\r\n downloadFile(response: HttpResponse) {\r\n const blob = new Blob([response.body], {type: 'text/csv'});\r\n\r\n const filename = response.headers.get('content-disposition').split(';')[1].trim().split('=')[1].replace(/\"/g, '');\r\n FileSaver.saveAs(blob, filename);\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n\r\n /**\r\n * Previous\r\n */\r\n\r\n /**\r\n * Public Methods\r\n */\r\n\r\n public retrievePathSetClicked(): void {\r\n this.getPathsForSelectedPathSet().subscribe(() => {\r\n const editITBidFloorAverageReportPathSet = new EditITBidFloorAverageReportPathSet();\r\n if (!_.isNil(this.model.searchParams.pathSetId)) {\r\n for (const path of this.model.paths) {\r\n const receiptLocation = _.find(this.model.locations, x => x.id === path.receiptLocationId);\r\n const deliveryLocation = _.find(this.model.locations, x => x.id === path.deliveryLocationId);\r\n\r\n editITBidFloorAverageReportPathSet.add(new EditITBidFloorAverageReportPath(receiptLocation, deliveryLocation));\r\n }\r\n }\r\n editITBidFloorAverageReportPathSet.sort();\r\n this.model.editPathSet = editITBidFloorAverageReportPathSet;\r\n\r\n // initialize the model\r\n if (this.model.pathSets.length !== 0) {\r\n const selectedPathSet = _.find(this.model.pathSets, x => this.model.searchParams.pathSetId === x.id);\r\n this.addPathSetPopup.newPathSetName = selectedPathSet.pathSetName;\r\n\r\n this.addPathSetPopup.placeholderName = `${this.model.editPathSet.paths.length} paths available`;\r\n\r\n }\r\n // Mick wants prior receipt and delivery selections cleared on entry\r\n this.model.searchParams.receiptLocationIds = [];\r\n this.model.searchParams.deliveryLocationIds = [];\r\n\r\n this.addPathSetModal.show();\r\n });\r\n }\r\n\r\n public onSaveClicked(): void {\r\n const pathSetName = this.appendDateToString(this.addPathSetPopup.newPathSetName);\r\n const req = this.model.editPathSet.toRequest(pathSetName);\r\n this.reportsItBidFloorAverageService.savePathSet(req).pipe(\r\n concatMap(() => {\r\n this.model.searchParams.pathSetId = null; // Reset Search Param Path Set Id\r\n return this.loadSearchResources();\r\n }))\r\n .subscribe(() => {\r\n });\r\n }\r\n\r\n\r\n public isSaveDisabled(): boolean {\r\n if (_.isNil(this.addPathSetPopup)) return true;\r\n return _.isNil(this.addPathSetPopup.newPathSetName) || this.addPathSetPopup.newPathSetName.length === 0;\r\n }\r\n\r\n public isSearchDisabled(): boolean {\r\n // will evaluate to true if value is not:\r\n //\r\n // null\r\n // undefined\r\n // NaN\r\n // empty string ''\r\n // 0\r\n // false\r\n if (this.model.searchParams.pathSetId) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n private isDate(valIn): boolean {\r\n return (new Date(valIn).toString() !== \"Invalid Date\") && !isNaN(Date.parse(valIn));\r\n }\r\n\r\n private appendDateToString(pathSetName): string {\r\n // first we check if the string is long enough to already contain a date\r\n // if it is we need to test the last 19 characters is a date if so we will remove it before appending the new date\r\n\r\n const len = pathSetName.length;\r\n if (len > \" - yyyy-MM-dd HH:mm:ss\".length) {\r\n const stringToTest = pathSetName.substring(len - \"yyyy-MM-dd HH:mm:ss\".length, len);\r\n if (this.isDate (stringToTest)) {\r\n pathSetName = pathSetName.substring(0, len - \" - yyyy-MM-dd HH:mm:ss\".length);\r\n }\r\n }\r\n\r\n\r\n const datePipe = new DatePipe('en-US');\r\n const dateFormat = datePipe.transform(new Date(), \"yyyy-MM-dd HH:mm:ss\");\r\n return pathSetName + ' - ' + dateFormat;\r\n }\r\n\r\n /**\r\n * Protected Methods\r\n */\r\n public onPathSetChanged(): void {\r\n this.getPathsForSelectedPathSet().subscribe(() => {\r\n });\r\n }\r\n\r\n private getPathsForSelectedPathSet(): Observable {\r\n if (_.isNil(this.model.searchParams.pathSetId)) {\r\n this.model.paths = null;\r\n return of(null);\r\n }\r\n\r\n return this.reportsItBidFloorAverageService.queryPaths(this.model.searchParams.pathSetId)\r\n .pipe(\r\n tap(responses => {\r\n this.model.paths = (responses);\r\n this.model.paths.forEach(path => {\r\n // use arrow operator to show angular you mean business, otherwise it will be like,\r\n // what I didn't know you meant the function defined below, let me throw a property undefined error instead\r\n path.name = this.getPathNameForReceiptandDeliveryLocationId(path.receiptLocationId, path.deliveryLocationId);\r\n });\r\n }));\r\n }\r\n\r\n\r\n protected getPathNameForReceiptandDeliveryLocationId(receiptId, deliveryId): string {\r\n let deliveryName = 'Invalid Delivery Location';\r\n let receiptName = 'Invalid Receipt Location';\r\n\r\n for (const location of this.model.locations) {\r\n if (location.id === deliveryId) { // need 3 equals signs in typescript it seems\r\n deliveryName = location.name;\r\n }\r\n if (location.id === receiptId) {\r\n receiptName = location.name;\r\n }\r\n }\r\n\r\n return receiptName + ' -> ' + deliveryName;\r\n }\r\n\r\n public addRandDLocationsToPathSetClicked(): void {\r\n // loop through receipt locations\r\n // loop through delivery locations\r\n // for each combination check if it exists else add it\r\n for (const selectedReceiptLocationId of this.model.searchParams.receiptLocationIds) {\r\n for (const selectedDeliveryLocationId of this.model.searchParams.deliveryLocationIds) {\r\n const receiptLocation = _.find(this.model.locations, x => x.id === selectedReceiptLocationId);\r\n const deliveryLocation = _.find(this.model.locations, x => x.id === selectedDeliveryLocationId);\r\n\r\n this.model.editPathSet.add(new EditITBidFloorAverageReportPath(receiptLocation, deliveryLocation));\r\n }\r\n }\r\n this.model.editPathSet.sort();\r\n\r\n this.addPathSetPopup.placeholderName = ` ${this.model.editPathSet.paths.length} paths available`;\r\n this.selectedPathsComponent.forceOptionsToBeDisplayed();\r\n }\r\n\r\n public removeRandDLocationsToPathSetClicked(): void {\r\n for (const pathSetId of this.model.searchParams.pathSetIds) {\r\n this.model.editPathSet.remove(pathSetId);\r\n }\r\n\r\n this.model.editPathSet.sort();\r\n this.addPathSetPopup.placeholderName = `${this.model.editPathSet.paths.length} paths available`;\r\n }\r\n}\r\n\r\n\r\n","import {GasDay} from \"@model/gas-day\";\r\nimport * as _ from 'lodash';\r\nimport {YesAndNo} from \"@model/yes-no\";\r\nimport {ImbalanceTradeRequest} from \"@model/models/imbalance-trade-request\";\r\nimport {NominationEnterprise} from \"@shared/services/nomination/nomination-enterprise/nomination-enterprise.service\";\r\nimport {NominationGroup, NominationGroupHierarchyCollection } from \"@shared/services/nomination/nomination-nom-group/nomination-nom-group.service\";\r\nimport DataSource from \"devextreme/data/data_source\";\r\nimport {IUndoRecord} from \"@shared/services/nomination/nomination-request/nomination-request.interface\";\r\nimport {HubStatuses} from \"app/gcts/nomination/nomination-requests/nomination-requests.model\";\r\nimport {NominationRequest} from \"@shared/services/nomination/nomination-request/nomination-request.service\";\r\nimport {IImbalanceTradeRequestsModel} from \"@shared/services/nomination/ImbalanceTradeRequests/imbalance-trade-requests.interface\";\r\nimport {NominationLocation} from \"@shared/services/nomination/nomination-location/nomination-location.service\";\r\nimport {ImbalanceTradeRequestsComponent} from \"app/gcts/nomination/imbalance-trade-requests/imbalance-trade-requests.component\";\r\nimport {GasDayCycleStatusCollection} from \"@model/gas-day-cycle-status-collection\";\r\nimport {NominationPipeline} from \"@model/nomination-pipeline\";\r\nimport {DateTime} from \"@model/date-time\";\r\nimport {User} from \"@model/user\";\r\nimport {ImbalanceTradeLocationBalance} from \"@model/models/imbalance-trade-location-balance\";\r\n\r\nexport class ImbalanceTradeRequestsModel implements IImbalanceTradeRequestsModel {\r\n clearMessages(): void {\r\n this.imbalanceTradeRequestsComponent.clearMessages();\r\n }\r\n\r\n hasSearchResults(){\r\n return this.buyImbalanceTradeRequests && this.sellImbalanceTradeRequests;\r\n }\r\n\r\n constructor(private imbalanceTradeRequestsComponent: ImbalanceTradeRequestsComponent) {\r\n this.searchParams = new ImbalanceTradeRequestsSearchParams(imbalanceTradeRequestsComponent);\r\n this.columnWidths = {};\r\n this.columnEditorPopupWidths = new Map();\r\n }\r\n\r\n editRowKey: number;\r\n disableNomReqEntries: boolean = false;\r\n searchParams: ImbalanceTradeRequestsSearchParams = null;\r\n lastSearchParams: ImbalanceTradeRequestsSearchParams = null;\r\n customers: NominationEnterprise[] = [];\r\n\r\n children: any = {\r\n Child_Buys: 'Buy',\r\n Child_Sells: 'Sell'\r\n };\r\n\r\n hideChildren: string[];\r\n\r\n imbalanceTradeRequestFields: ImbalanceTradeRequestFields = new ImbalanceTradeRequestFields();\r\n nominationGroups: NominationGroupHierarchyCollection = NominationGroupHierarchyCollection.create();\r\n counterPartyNomGroups: NominationGroupHierarchyCollection = NominationGroupHierarchyCollection.create();\r\n yesAndNo: YesAndNo[] = [];\r\n locations: NominationLocation[];\r\n\r\n selectedNomGroup: NominationGroup;\r\n todaysAllowableGasDay: GasDay = null;\r\n\r\n isEditing: boolean = false;\r\n isEditingRowValid: boolean;\r\n newRowAdded: boolean = false;\r\n\r\n gasDay: any;\r\n minGasDay: GasDay;\r\n maxGasDay: GasDay;\r\n pageView: boolean = false;\r\n\r\n imbalanceTradeLocationBalances: ImbalanceTradeLocationBalance[] = null;\r\n\r\n originalBuyImbalanceTradeRequests: ImbalanceTradeRequest[];\r\n originalSellImbalanceTradeRequests: ImbalanceTradeRequest[];\r\n\r\n queryDateTime: Date;\r\n\r\n imbalanceTradeClones: Array<{ buy: ImbalanceTradeRequest, sell: ImbalanceTradeRequest}>;\r\n selectableRequests: Array;\r\n selectableRequestIds: Array = [];\r\n\r\n buyImbalanceTradeRequests: ImbalanceTradeRequest[] = null;\r\n buyDataSource: DataSource = null;\r\n buySelections: Array = [];\r\n buyUndos: Array = [];\r\n\r\n sellImbalanceTradeRequests: ImbalanceTradeRequest[] = null;\r\n sellDataSource: DataSource = null;\r\n sellUndos: Array = [];\r\n sellSelections: Array = [];\r\n\r\n\r\n buyFilter: any[];\r\n sellFilter: any[];\r\n\r\n buySelectedRowKeys = [];\r\n sellSelectedRowKeys = [];\r\n\r\n buyImbalanceTradeRequestOriginals: Array;\r\n sellImbalanceTradeRequestOriginals: Array;\r\n\r\n isReadOnlyMode: boolean;\r\n isOneDayAdjustmentCapable: boolean;\r\n isFullAdjustmentCapable: boolean;\r\n user: User;\r\n\r\n columnWidths: any;\r\n columnEditorPopupWidths: Map;\r\n\r\n pipeline: NominationPipeline;\r\n previousGasDayCycleStatuses: GasDayCycleStatusCollection;\r\n serverDateTime: DateTime;\r\n\r\n public anyNewOrRevisedRows(): boolean {\r\n // -1 indicates a newly inserted row without an assigned Id\r\n return _.includes(this.getSelectedIds(), -1)\r\n || this.anyRows((x: ImbalanceTradeRequest) =>\r\n (x.statusCode === HubStatuses.new || x.statusCode === HubStatuses.revised || x.isPendingChanged === true));\r\n }\r\n\r\n public anyFailedRows(): boolean {\r\n return this.anyRows((x: ImbalanceTradeRequest) => (x.statusCode === HubStatuses.failed));\r\n }\r\n\r\n public anySavedRows(): boolean {\r\n return this.anyRows((x: ImbalanceTradeRequest) => (x.statusCode === HubStatuses.saved || x.statusCode === HubStatuses.mismatched));\r\n }\r\n\r\n public anySavedRowsThatAreNotSelected(): boolean {\r\n return this.anyRows((x: ImbalanceTradeRequest) =>\r\n (x.statusCode === HubStatuses.saved || x.statusCode === HubStatuses.mismatched), false);\r\n }\r\n\r\n anyNonNewRows(): boolean {\r\n return this.anyRows((x: ImbalanceTradeRequest) =>\r\n (x.statusCode === HubStatuses.failed || x.statusCode === HubStatuses.passed || x.statusCode === HubStatuses.saved || x.statusCode === HubStatuses.mismatched));\r\n }\r\n\r\n private getSelectedIds(): Array {\r\n return _.union(this.buySelectedRowKeys, this.sellSelectedRowKeys);\r\n }\r\n\r\n public anyDeletableNomSelected(): boolean {\r\n return this.anyRows((x: NominationRequest) => x.canBeDeleted);\r\n }\r\n\r\n private anyRows(predicate: any, checkThatRowHasBeenClicked: boolean = true) {\r\n return this.anyRowsIn(predicate, this.sellImbalanceTradeRequests, this.sellSelectedRowKeys, checkThatRowHasBeenClicked)\r\n || this.anyRowsIn(predicate, this.buyImbalanceTradeRequests, this.buySelectedRowKeys, checkThatRowHasBeenClicked);\r\n }\r\n\r\n private anyRowsIn(predicate: any, array: Array, ids: Array, checkThatRowHasBeenClicked: boolean = true) {\r\n const filteredRows = _.filter(array, predicate);\r\n\r\n if (checkThatRowHasBeenClicked) {\r\n const selectedSavedOrFailedRecords = _.intersection(ids, filteredRows.map(x => (x as any).key));\r\n return selectedSavedOrFailedRecords.length > 0;\r\n }\r\n\r\n return filteredRows.length > 0;\r\n }\r\n\r\n anyRequestsSelected(): boolean{\r\n const result = ((this.buySelectedRowKeys != null && this.buySelectedRowKeys.length > 0) || (this.sellSelectedRowKeys != null && this.sellSelectedRowKeys.length > 0));\r\n return result;\r\n }\r\n\r\n public deleteRecord(imbalanceTradeRequest: ImbalanceTradeRequest):void{\r\n this.imbalanceTradeRequestsComponent.deleteClicked(imbalanceTradeRequest);\r\n }\r\n\r\n saveRecord(imbalanceTradeRequest: ImbalanceTradeRequest): void {\r\n this.imbalanceTradeRequestsComponent.saveClicked(imbalanceTradeRequest);\r\n }\r\n\r\n public setSelectableRequests() : void {\r\n const buySelectableRequests = _.filter(this.buyImbalanceTradeRequests, function(x) {return !_.isNil(x.counterPartyImbalanceTradeRequestId) && x.counterPartyImbalanceTradeRequestId > 0 && (_.isNil(x.id) || x.id == 0);});\r\n const sellSelectableRequests = _.filter(this.sellImbalanceTradeRequests, function(x) {return !_.isNil(x.counterPartyImbalanceTradeRequestId) && x.counterPartyImbalanceTradeRequestId > 0 && (_.isNil(x.id) || x.id == 0);});\r\n\r\n this.selectableRequests = buySelectableRequests.concat(sellSelectableRequests);\r\n this.selectableRequestIds = _.map(this.selectableRequests, 'id');\r\n }\r\n\r\n isUserRoleModifyAllowed(): boolean {\r\n const currentGasDay: GasDay = GasDay.fromDateTime(this.serverDateTime);\r\n\r\n if (this.user.isInternalUser) {\r\n if (this.isFullAdjustmentCapable) {\r\n return true;\r\n }\r\n\r\n if (this.isOneDayAdjustmentCapable) {\r\n return this.lastSearchParams.gasDay.isGreatThanOrEqualTo(currentGasDay.previous());\r\n }\r\n return false;\r\n }\r\n\r\n // external user checks\r\n if (_.isNil(this.serverDateTime) || _.isNil(this.pipeline.externalImbalanceTradeDeadlineTime)){\r\n return false;\r\n }\r\n\r\n const externalImbalanceTradeDeadlineTime:DateTime = DateTime.parse(this.serverDateTime.toDateString() + ' ' + this.pipeline.externalImbalanceTradeDeadlineTime);\r\n\r\n return this.lastSearchParams.gasDay.isEqual(currentGasDay)\r\n && !_.isNil(this.previousGasDayCycleStatuses)\r\n && this.previousGasDayCycleStatuses.isGasDayAllocated()\r\n && externalImbalanceTradeDeadlineTime >= this.serverDateTime;\r\n }\r\n\r\n canUserCanSubscribeToEmails(): boolean {\r\n if (this.user.isInternalUser){\r\n if (!this.user.isAssumingIdentity){\r\n return false;\r\n }\r\n\r\n const internalRoles = [\r\n `${this.pipeline.code}_${User.NominationAnalystRole}`,\r\n `${this.pipeline.code}_${User.NominationSpecialistRole}`,\r\n `${this.pipeline.code}_${User.SupportRole}`\r\n ];\r\n return this.user.hasAnyRole(internalRoles);\r\n } else {\r\n const externalRoles = [\r\n `${this.pipeline.code}_${User.NominationsTransactorRole}`,\r\n `${this.pipeline.code}_${User.NominationsViewRole}`\r\n ];\r\n return this.user.hasAnyRole(externalRoles);\r\n }\r\n }\r\n}\r\n\r\nexport class ImbalanceTradeRequestsSearchParams {\r\n\r\n constructor(private imbalanceTradeRequestsComponent: ImbalanceTradeRequestsComponent, customerId?: number, nomGroupId?: number, gasDay?: GasDay, mismatchedOnly?: boolean) {\r\n this.nomGroupId = nomGroupId;\r\n\r\n if (!_.isNil(customerId)) {\r\n // Assume this comes from params, so don't requery hubNomGroups if it's not null.\r\n if (imbalanceTradeRequestsComponent.model.nominationGroups && imbalanceTradeRequestsComponent.model.nominationGroups.length > 0) {\r\n this._customerId = customerId;\r\n this._gasDay = gasDay;\r\n this._mismatchedOnly = mismatchedOnly;\r\n } else {\r\n this.customerId = customerId;\r\n this.gasDay = gasDay;\r\n this.mismatchedOnly = mismatchedOnly;\r\n }\r\n }\r\n }\r\n\r\n private _gasDay: GasDay;\r\n private _customerId: number;\r\n private _nomGroupId: number;\r\n private _mismatchedOnly: boolean;\r\n\r\n get customerId(): number {\r\n return this._customerId;\r\n }\r\n\r\n set customerId(value: number) {\r\n if (this._customerId !== value) {\r\n this._customerId = value;\r\n }\r\n }\r\n\r\n get gasDay(): GasDay {\r\n return this._gasDay;\r\n }\r\n\r\n set gasDay(gasDay: GasDay) {\r\n if (_.isNil(this._gasDay) || !this._gasDay.isEqual(gasDay)) {\r\n this._gasDay = gasDay;\r\n }\r\n }\r\n\r\n get nomGroupId(): number{\r\n return this._nomGroupId;\r\n }\r\n\r\n set nomGroupId(value: number) {\r\n if (this._nomGroupId !== value) {\r\n this._nomGroupId = value;\r\n }\r\n }\r\n\r\n get mismatchedOnly(): boolean{\r\n return this._mismatchedOnly;\r\n }\r\n\r\n set mismatchedOnly(value: boolean) {\r\n if (this._mismatchedOnly !== value) {\r\n this._mismatchedOnly = value;\r\n }\r\n }\r\n}\r\n\r\nexport class ImbalanceTradeRequestFields {\r\n creditNominationGroupId: string = \"creditNominationGroupId\";\r\n debitNominationGroupId: string = 'debitNominationGroupId';\r\n statusCode: string = \"statusCode\";\r\n creditLocationId: string = 'creditLocationId';\r\n debitLocationId: string = 'debitLocationId';\r\n energy: string = 'energy';\r\n gasDay: string = 'gasDay';\r\n submittedBy: string = \"submittedBy\";\r\n counterPartyEnergy: string = \"counterPartyEnergy\";\r\n counterPartyGasDay: string = \"counterPartyGasDay\";\r\n counterPartySubmittedBy: string = \"counterPartySubmittedBy\";\r\n}\r\n","import * as _ from 'lodash';\r\nimport { ViewChild, Directive } from \"@angular/core\";\r\nimport {ImbalanceTradeRequestComponentBase} from \"app/gcts/nomination/imbalance-trade-requests/imbalance-trade-component.interface\";\r\n\r\n@Directive()\r\nexport class BaseImbalanceTradeRequestsView {\r\n private static readonly buyIndex: number = 0;\r\n private static readonly sellIndex: number = 1;\r\n\r\n @ViewChild('BuyImbalanceTradeComponent') buyImbalanceTradeComponent: ImbalanceTradeRequestComponentBase;\r\n @ViewChild('SellImbalanceTradeComponent') sellImbalanceTradeComponent: ImbalanceTradeRequestComponentBase;\r\n\r\n public components: Array = [null, null];\r\n public componentsMap: Map = new Map();\r\n\r\n hasEditData(): boolean {\r\n return\r\n (!_.isNil(this.buyImbalanceTradeComponent) && this.buyImbalanceTradeComponent.dataGrid.instance && this.buyImbalanceTradeComponent.dataGrid.instance.hasEditData());// ||\r\n (!_.isNil(this.sellImbalanceTradeComponent) && this.sellImbalanceTradeComponent.dataGrid.instance && this.sellImbalanceTradeComponent.dataGrid.instance.hasEditData()) ;\r\n }\r\n\r\n public getComponents(): Array {\r\n if (this.componentsMap.size < 2) {\r\n this.addToComponentsIfDefined(BaseImbalanceTradeRequestsView.buyIndex, this.buyImbalanceTradeComponent);\r\n this.addToComponentsIfDefined(BaseImbalanceTradeRequestsView.sellIndex, this.sellImbalanceTradeComponent);\r\n }\r\n return this.components;\r\n }\r\n\r\n public addToComponentsIfDefined(tabIndex: number, component: ImbalanceTradeRequestComponentBase): void {\r\n\r\n if (!this.componentsMap.has(tabIndex) && component) {\r\n // add to map for quick look up\r\n this.componentsMap.set(tabIndex, component);\r\n // put component into designed index of the array\r\n this.components.splice(tabIndex, 1, component);\r\n }\r\n }\r\n}\r\n","
\r\n
\r\n -\r\n +\r\n Buy\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n -\r\n +\r\n Sell\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n","import {ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { IUndoRecord } from \"@shared/services/nomination/nomination-request/nomination-request.interface\";\r\nimport {UndoRowArgs} from \"app/gcts/nomination/nomination-requests/common-hub.service\";\r\nimport {BaseImbalanceTradeRequestsView} from \"app/gcts/nomination/imbalance-trade-requests/base-view\";\r\nimport {forkJoin, from, Observable } from 'rxjs';\r\nimport * as _ from 'lodash';\r\nimport {ImbalanceTradeRequestComponentBase} from \"app/gcts/nomination/imbalance-trade-requests/imbalance-trade-component.interface\";\r\nimport {IImbalanceTradeRequestsModel} from \"@shared/services/nomination/ImbalanceTradeRequests/imbalance-trade-requests.interface\";\r\n\r\n@Component({\r\n selector: 'app-imbalance-trade-requests-page-view',\r\n templateUrl: './imbalance-trade-requests-page-view.component.html',\r\n styleUrls: ['./imbalance-trade-requests-page-view.component.css']\r\n})\r\nexport class ImbalanceTradeRequestsPageViewComponent extends BaseImbalanceTradeRequestsView implements OnInit {\r\n\r\n @Input() data: IImbalanceTradeRequestsModel;\r\n @Input() buyUndos: Array;\r\n @Input() sellUndos: Array;\r\n @Output() undoRow: EventEmitter = new EventEmitter();\r\n @Output() selectionChanged: EventEmitter = new EventEmitter();\r\n\r\n components: Array = [];\r\n\r\n showBuyImbalanceTradeRequests = true;\r\n showSellImbalanceTradeRequests = true;\r\n\r\n constructor(public cdr: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.cdr.detectChanges(); // https://stackoverflow.com/questions/34364880/expression-has-changed-after-it-was-checked\r\n }\r\n\r\n toggleShowBuyImbalanceTradeRequestClicked() {\r\n this.showBuyImbalanceTradeRequests = !this.showBuyImbalanceTradeRequests;\r\n }\r\n\r\n toggleShowSellImbalanceTradeRequestClicked() {\r\n this.showSellImbalanceTradeRequests = !this.showSellImbalanceTradeRequests;\r\n }\r\n\r\n\r\n tryToSaveEditingData(): Observable {\r\n const observable = Observable.create(observer => {\r\n let hasEditData = false;\r\n for (let n = 0; n < this.getComponents().length; n++) {\r\n if (!!this.getComponents()[n]) {\r\n hasEditData = hasEditData || this.getComponents()[n].dataGrid.instance.hasEditData();\r\n }\r\n }\r\n\r\n if (!hasEditData) {\r\n observer.next(true);\r\n observer.complete();\r\n } else {\r\n const saveEditObservables: Observable[] = [];\r\n\r\n _.forEach(this.getComponents(), component => {\r\n if (!!component) {\r\n saveEditObservables.push(from(component.dataGrid.instance.saveEditData()));\r\n }\r\n });\r\n\r\n forkJoin(saveEditObservables).subscribe(() => {\r\n // If saveEditData() fails (i.e. the row being edited fails validation), it does\r\n // not seem to indicate failure in any way. We can call hasEditData() again to\r\n // find out.\r\n hasEditData = false;\r\n for (let n = 0; n < this.getComponents().length; n++) {\r\n if (!!this.getComponents()[n]) {\r\n hasEditData = hasEditData || this.getComponents()[n].dataGrid.instance.hasEditData();\r\n }\r\n }\r\n observer.next(!hasEditData);\r\n observer.complete();\r\n });\r\n }\r\n });\r\n return observable;\r\n }\r\n\r\n // TODO: This should be able to go away. Dennis is on it! Sept-6-2017.\r\n refreshGrids() {\r\n _.forEach(this.getComponents(), component => {\r\n if (!!component) {\r\n component.dataGrid.instance.refresh();\r\n }\r\n });\r\n }\r\n\r\n applyFilters() {\r\n _.forEach(this.getComponents(), component => {\r\n if (!!component) {\r\n component.filter();\r\n }\r\n });\r\n }\r\n\r\n clearFilters() {\r\n _.forEach(this.getComponents(), component => {\r\n if (!!component) {\r\n if (component.dataGrid.instance.getDataSource()) {\r\n component.dataGrid.instance.clearFilter();\r\n }\r\n }\r\n });\r\n }\r\n\r\n selectSavedRequests() {\r\n for (let n = 0; n < this.getComponents().length; n++) {\r\n if (!!this.getComponents()[n]) {\r\n this.getComponents()[n].selectSavedRequests(arguments[n]);\r\n }\r\n }\r\n }\r\n\r\n deselectNewDuplicateKeyRequests() {\r\n for (let n = 0; n < this.getComponents().length; n++) {\r\n if (!!this.getComponents()[n]) {\r\n this.getComponents()[n].deselectNewDuplicateKeyRequests(arguments[n]);\r\n }\r\n }\r\n }\r\n\r\n deselectExpiredKeyRequests() {\r\n for (let n = 0; n < this.getComponents().length; n++) {\r\n if (!!this.getComponents()[n]) {\r\n this.getComponents()[n].deselectExpiredKeyRequests(arguments[n]);\r\n }\r\n }\r\n }\r\n\r\n clearGridEdits() {\r\n _.forEach(this.getComponents(), component => {\r\n if (!!component) {\r\n component.clearGridEdits();\r\n }\r\n });\r\n }\r\n\r\n removeIncompleteRows() {\r\n _.forEach(this.getComponents(), component => {\r\n if (!!component) {\r\n component.removeIncompleteRows();\r\n }\r\n });\r\n }\r\n\r\n isDisabled(): boolean {\r\n for (let n = 0; n < this.getComponents().length; n++) {\r\n if (!!this.getComponents()[n] && this.getComponents()[n].canDisableSubmitButton && this.getComponents()[n].isDisabled()) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n isViewOnly(): boolean {\r\n for (let n = 0; n < this.getComponents().length; n++) {\r\n if (!!this.getComponents()[n] && this.getComponents()[n].isViewOnly()) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n onUndoRow = (e: UndoRowArgs): void => {\r\n this.undoRow.emit(e);\r\n };\r\n\r\n onSelectionChanged = (e): void => {\r\n this.selectionChanged.emit(e);\r\n };\r\n}\r\n","
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n","import {AfterViewInit, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport {IUndoRecord} from \"@shared/services/nomination/nomination-request/nomination-request.interface\";\r\nimport {UndoRowArgs} from \"app/gcts/nomination/nomination-requests/common-hub.service\";\r\nimport {DxTabPanelComponent} from 'devextreme-angular';\r\nimport {IImbalanceTradeRequestsModel} from \"@shared/services/nomination/ImbalanceTradeRequests/imbalance-trade-requests.interface\";\r\nimport {forkJoin, from, Observable} from 'rxjs';\r\nimport {BaseImbalanceTradeRequestsView} from \"app/gcts/nomination/imbalance-trade-requests/base-view\";\r\nimport * as _ from 'lodash';\r\n\r\n@Component({\r\n selector: 'app-imbalance-trade-requests-tab-view',\r\n templateUrl: './imbalance-trade-requests-tab-view.component.html',\r\n styleUrls: ['./imbalance-trade-requests-tab-view.component.css']\r\n})\r\nexport class ImbalanceTradeRequestsTabViewComponent extends BaseImbalanceTradeRequestsView implements OnInit, AfterViewInit {\r\n\r\n @Input() data: IImbalanceTradeRequestsModel;\r\n @Input() buyUndos: Array;\r\n @Input() sellUndos: Array;\r\n @Output() undoRow: EventEmitter = new EventEmitter();\r\n @Output() selectionChanged: EventEmitter = new EventEmitter();\r\n\r\n @ViewChild('tabPanel') tabPanel: DxTabPanelComponent;\r\n\r\n _tabs: Array = [];\r\n get tabs(): Array {\r\n return this._tabs;\r\n }\r\n\r\n constructor(public cdr: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this._tabs =\r\n [\r\n {id: 0, title: this.data.children.Child_Buys, template: \"template1\"},\r\n {id: 1, title: this.data.children.Child_Sells, template: \"template2\"}\r\n ];\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.cdr.detectChanges(); // https://stackoverflow.com/questions/34364880/expression-has-changed-after-it-was-checked\r\n }\r\n\r\n tryToSaveEditingData(): Observable {\r\n const observable = Observable.create(observer => {\r\n let hasEditData = false;\r\n for (const component of this.getComponents()) {\r\n if (!!component) {\r\n hasEditData = hasEditData || component.dataGrid.instance.hasEditData();\r\n }\r\n }\r\n\r\n if (!hasEditData) {\r\n observer.next(true);\r\n observer.complete();\r\n } else {\r\n const saveEditObservables: Observable[] = [];\r\n\r\n _.forEach(this.getComponents(), component => {\r\n if (!!component) {\r\n saveEditObservables.push(from(component.dataGrid.instance.saveEditData()));\r\n }\r\n });\r\n\r\n forkJoin(saveEditObservables).subscribe(() => {\r\n // If saveEditData() fails (i.e. the row being edited fails validation), it does\r\n // not seem to indicate failure in any way. We can call hasEditData() again to\r\n // find out.\r\n hasEditData = false;\r\n for (const component of this.getComponents()) {\r\n if (!!component) {\r\n hasEditData = hasEditData || component.dataGrid.instance.hasEditData();\r\n }\r\n }\r\n observer.next(!hasEditData);\r\n observer.complete();\r\n });\r\n }\r\n });\r\n return observable;\r\n }\r\n\r\n refreshGrids() {\r\n _.forEach(this.getComponents(), component => {\r\n if (!!component) {\r\n component.dataGrid.instance.refresh();\r\n }\r\n });\r\n }\r\n\r\n applyFilters() {\r\n }\r\n\r\n clearFilters() {\r\n _.forEach(this.getComponents(), component => {\r\n if (!!component) {\r\n if (!!component.dataGrid.instance.getDataSource()) {\r\n component.dataGrid.instance.clearFilter();\r\n }\r\n }\r\n });\r\n }\r\n\r\n selectSavedRequests(/*transportResults, recResults, delResults, energyImbalanceResults*/) {\r\n for (let n = 0; n < this.getComponents().length; n++) {\r\n if (!!this.getComponents()[n]) {\r\n this.getComponents()[n].selectSavedRequests(arguments[n]);\r\n }\r\n }\r\n }\r\n\r\n deselectNewDuplicateKeyRequests(/*transportResults, recResults, delResults, energyImbalanceResults*/) {\r\n for (let n = 0; n < this.getComponents().length; n++) {\r\n if (!!this.getComponents()[n]) {\r\n this.getComponents()[n].deselectNewDuplicateKeyRequests(arguments[n]);\r\n }\r\n }\r\n }\r\n\r\n deselectExpiredKeyRequests(/*transportResults, recResults, delResults, energyImbalanceResults*/) {\r\n for (let n = 0; n < this.getComponents().length; n++) {\r\n if (!!this.getComponents()[n]) {\r\n this.getComponents()[n].deselectExpiredKeyRequests(arguments[n]);\r\n }\r\n }\r\n }\r\n\r\n clearGridEdits() {\r\n _.forEach(this.getComponents(), component => {\r\n if (!!component) {\r\n component.clearGridEdits();\r\n }\r\n });\r\n }\r\n\r\n removeIncompleteRows() {\r\n _.forEach(this.getComponents(), component => {\r\n if (!!component) {\r\n component.removeIncompleteRows();\r\n }\r\n });\r\n }\r\n\r\n isDisabled(): boolean {\r\n for (const component of this.getComponents()) {\r\n if (!!component && component.canDisableSubmitButton && component.isDisabled()) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n isViewOnly(): boolean {\r\n for (const component of this.getComponents()) {\r\n if (!!component && component.isViewOnly()) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n onUndoRow = (e: UndoRowArgs): void => {\r\n this.undoRow.emit(e);\r\n };\r\n\r\n onSelectionChanged = (e): void => {\r\n this.selectionChanged.emit(e);\r\n };\r\n\r\n focusFirstTab(): void {\r\n if (_.isNil(this.tabPanel) || _.isNil(this.tabPanel.instance)) { return; }\r\n this.tabPanel.instance.option(\"selectedIndex\", 0);\r\n }\r\n\r\n public onDisableTabs(){\r\n for (const tab of this.tabs){\r\n if(this.tabPanel.instance.option(\"selectedItem\").id === tab.id) continue;\r\n tab.disabled = true;\r\n }\r\n }\r\n\r\n public onEnableTabs(){\r\n for (const tab of this.tabs){\r\n tab.disabled = false;\r\n }\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n \r\n\r\n To subscribe enter your email address and click submit.\"\r\n eventType=\"ImbalanceTradeRequest\"\r\n subscriptionMessage=\"Imbalance Trade Request Notifications\"\r\n *ngIf=\"model.canUserCanSubscribeToEmails()\">\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Customer: {{model.lastSearchParams?.customerId | displayName: 'id' : 'displayValue' : model.customers}}\r\n Account: {{model.lastSearchParams?.nomGroupId | displayName: 'id' : 'mnemonic' : model.hubNomGroups}}\r\n Gas Day: {{model.lastSearchParams?.gasDay}}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.gasDay | gasDayFormat}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.mismatchedOnly ? 'Yes' : 'No'}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.customerId | displayName: 'id' : 'displayValue' : model.customers}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.nomGroupId | displayName: 'id' : 'mnemonic' : model.nominationGroups}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
{{model.lastSearchParams?.gasDay | gasDayFormat }}
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
{{model.lastSearchParams?.customerId | displayName: 'id' : 'displayValue' : model.customers}}
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
{{model.lastSearchParams?.nomGroupId | displayName: 'id' : 'mnemonic' :\r\n model.hubNomGroups}}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n

\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n","import {Component, OnInit, ViewChild } from '@angular/core';\r\nimport {ActivatedRoute, Router} from '@angular/router';\r\nimport {EditableSearchComponent} from \"@model/editable-search-component\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {YesNoCancelModalService} from \"@shared/services/webapp/yes-no-cancel-modal/yes-no-cancel-modal.service\";\r\nimport {UserService} from \"@shared/services/webapp/user/user-service\";\r\nimport {CapabilitiesService} from \"@shared/services/webapp/capabilities/capabilities.service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {ImbalanceTradeRequestsModel, ImbalanceTradeRequestsSearchParams} from \"app/gcts/nomination/imbalance-trade-requests/imbalance-trade-requests-model\";\r\nimport {ModalOptions} from \"@shared/services/webapp/modal-options/modal-options\";\r\nimport {forkJoin, Observable, of } from 'rxjs';\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {EnterpriseSearchParams, NominationEnterprise, NominationEnterpriseService} from \"@shared/services/nomination/nomination-enterprise/nomination-enterprise.service\";\r\nimport {IGasDay} from \"@model/gas-day-month.interface\";\r\nimport {BusinessRight} from \"@model/business-right\";\r\nimport {concatMap, tap } from 'rxjs/operators';\r\nimport {NominationEnterpriseEnrichmentService} from \"@shared/services/nomination/nomination-enterprise-enrichment/nomination-enterprise-enrichment.service\";\r\nimport {ImbalanceTradeRequestQueryResult, ImbalanceTradeRequestsService} from \"app/gcts/nomination/imbalance-trade-requests/imbalance-trade-requests-service\";\r\nimport {NominationGroupService} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport {YesAndNo} from \"@model/yes-no\";\r\nimport * as _ from 'lodash';\r\nimport {NominationGroup, NominationGroupHierarchyCollection} from \"@shared/services/nomination/nomination-nom-group/nomination-nom-group.service\";\r\nimport { DxDataGridComponent } from 'devextreme-angular/ui/data-grid';\r\nimport {NominationSystemService} from \"@shared/services/nomination/nomination-system/nomination-system.service\";\r\nimport {GasDaySearchResourceTracker} from \"@model/gas-day-search-resource-tracker\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {IImbalanceTradeRequest, ImbalanceTradeRequest} from \"@model/models/imbalance-trade-request\";\r\nimport { UndoRecord} from \"app/gcts/nomination/nomination-requests/nomination-requests.model\";\r\nimport {ImbalanceTradeRequestsPageViewComponent} from \"app/gcts/nomination/imbalance-trade-requests/imbalance-trade-requests-page-view/imbalance-trade-requests-page-view.component\";\r\nimport {ImbalanceTradeRequestsTabViewComponent} from \"app/gcts/nomination/imbalance-trade-requests/imbalance-trade-requests-tab-view/imbalance-trade-requests-tab-view.component\";\r\nimport {IUndoRecord} from \"@shared/services/nomination/nomination-request/nomination-request.interface\";\r\nimport DataSource from 'devextreme/data/data_source';\r\nimport ArrayStore from 'devextreme/data/array_store';\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {NominationLocationEnrichmentService} from \"@shared/services/nomination/nomination-location-enrichment/nomination-location-enrichment.service\";\r\nimport {NominationNomGroupEnrichmentService} from \"@shared/services/nomination/nomination-nom-group-enrichment/nomination-nom-group-enrichment.service\";\r\nimport {UndoRowArgs} from \"app/gcts/nomination/nomination-requests/common-hub.service\";\r\nimport {LocationSearchParams, NominationLocation, NominationLocationService} from \"@shared/services/nomination/nomination-location/nomination-location.service\";\r\nimport {TransactionTypes} from \"@shared/services/nomination/nomination-request/nomination-request.service\";\r\nimport {NominationPipelineGasDay} from \"@model/nomination-pipeline-gas-day\";\r\nimport {GasCycleService} from \"@shared/services/nomination/gas-cycle/gas-cycle.service\";\r\nimport {ApplicationServerTimes, CommonDataGasdayService} from \"@shared/services/common-data/common-data-gasday/common-data-gasday.service\";\r\nimport {DateTime} from \"@model/date-time\";\r\nimport {ImbalanceTradeLocationBalances} from \"@model/models/imbalance-trade-location-balance\";\r\n\r\n@Component({\r\n selector: 'app-imbalance-trade-requests',\r\n templateUrl: './imbalance-trade-requests.component.html',\r\n styleUrls: ['./imbalance-trade-requests.component.css']\r\n})\r\nexport class ImbalanceTradeRequestsComponent extends EditableSearchComponent implements OnInit {\r\n public model: ImbalanceTradeRequestsModel = new ImbalanceTradeRequestsModel(this);\r\n public showFilters = true;\r\n public hidePage = true;\r\n public recordsBeingProcessed: boolean = false;\r\n\r\n private gasDayTracker: GasDaySearchResourceTracker = new GasDaySearchResourceTracker();\r\n\r\n @ViewChild(ImbalanceTradeRequestsPageViewComponent) imbalanceTradeRequestPageView: ImbalanceTradeRequestsPageViewComponent;\r\n @ViewChild(ImbalanceTradeRequestsTabViewComponent) imbalanceTradeRequestTabView: ImbalanceTradeRequestsTabViewComponent;\r\n\r\n constructor(protected appService: AppService,\r\n protected activatedRoute: ActivatedRoute,\r\n protected router: Router,\r\n protected alertService: AlertService,\r\n protected modalService: YesNoCancelModalService,\r\n public nominationEnterpriseEnrichmentService: NominationEnterpriseEnrichmentService,\r\n public nominationLocationEnrichmentService: NominationLocationEnrichmentService,\r\n public nominationNomGroupEnrichmentService: NominationNomGroupEnrichmentService,\r\n public nominationEnterpriseService: NominationEnterpriseService,\r\n public nominationLocationService: NominationLocationService,\r\n public nominationGroupService: NominationGroupService,\r\n public imbalanceTradeRequestsService: ImbalanceTradeRequestsService,\r\n protected nominationSystemService: NominationSystemService,\r\n private userService: UserService,\r\n private capabilitiesService: CapabilitiesService,\r\n private sessionService: SessionService,\r\n private gasCycleService: GasCycleService,\r\n private commonDataGasDayService: CommonDataGasdayService) {\r\n super('Imbalance Trade Requests', appService, activatedRoute, router, alertService);\r\n }\r\n\r\n protected areParamsValid(params): boolean {\r\n return this.paramValidator().isValid(params);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {\r\n customerId: this.model.searchParams.customerId,\r\n gasDay: this.model.searchParams.gasDay,\r\n nomGroupId: this.model.searchParams.nomGroupId,\r\n mismatchedOnly: this.model.searchParams.mismatchedOnly\r\n };\r\n\r\n return params;\r\n }\r\n\r\n hasUnsavedChanges(): boolean {\r\n const unsavedStatuses = ['New', 'Incomplete'];\r\n const hasEditData = this.getView().hasEditData();\r\n\r\n const newOrIncompleteBuyRequests = _.some(this.model.buyImbalanceTradeRequests, x => _.includes(unsavedStatuses, x.statusCode));\r\n const newOrIncompleteSellRequests = _.some(this.model.sellImbalanceTradeRequests, x => _.includes(unsavedStatuses, x.statusCode));\r\n\r\n const hasUndos = this.model.buyUndos.length > 0 || this.model.sellUndos.length > 0;\r\n\r\n return newOrIncompleteBuyRequests || newOrIncompleteSellRequests || hasEditData || hasUndos;\r\n }\r\n\r\n protected loadInitialResources(): Observable{\r\n\r\n const serviceCalls: Observable[] = [\r\n this.nominationSystemService.pipelineGasDay(),\r\n this.nominationEnterpriseEnrichmentService.fetch(),\r\n this.nominationLocationEnrichmentService.fetch(),\r\n this.nominationNomGroupEnrichmentService.fetch(),\r\n this.getServerDateTime()\r\n ];\r\n this.model.user = this.userService.user;\r\n this.model.pipeline = this.sessionService.getPipeline();\r\n\r\n return forkJoin(serviceCalls).pipe(tap(response => {\r\n const pipelineGasDay = response[0];\r\n\r\n this.appService.hideMenu();\r\n this.appService.clearMessages();\r\n\r\n this.setupPipelineGasDay(pipelineGasDay);\r\n\r\n this.model.gasDay = pipelineGasDay.actualGasDay.isGreaterThan(pipelineGasDay.earliestSelectableGasDay) ?\r\n pipelineGasDay.actualGasDay :\r\n pipelineGasDay.earliestSelectableGasDay;\r\n\r\n this.model.maxGasDay = this.model.gasDay;\r\n }));\r\n }\r\n\r\n private getServerDateTime(): Observable{\r\n return this.commonDataGasDayService.applicationServerTimes().pipe(\r\n tap(applicationTimes => this.model.serverDateTime = DateTime.parse(applicationTimes.clockTime.toString())));\r\n }\r\n\r\n private setupPipelineGasDay(pipelineGasDay: NominationPipelineGasDay): void{\r\n this.hidePage = false;\r\n this.setPipelineGasDayProperties(pipelineGasDay);\r\n }\r\n\r\n\r\n // * EVENTS *//\r\n\r\n public searchClicked(): void {\r\n if (!_.isNil(this.model.lastSearchParams) && this.model.lastSearchParams.nomGroupId !== this.model.searchParams.nomGroupId) {\r\n this.getView().clearFilters();\r\n }\r\n\r\n super.searchClicked();\r\n }\r\n\r\n public onGasDayChanged(): void {\r\n // this will be fired even when a null value is returned from the date picker and don't want to reload with a bad date\r\n if (!this.model.searchParams.gasDay) return;\r\n\r\n this.loadSearchResources().subscribe(() => {});\r\n }\r\n\r\n public resetClicked(): void {\r\n this.model.buyDataSource = null;\r\n this.model.sellDataSource = null;\r\n this.model.imbalanceTradeLocationBalances = null;\r\n\r\n this.gasDayTracker.reset();\r\n super.resetClicked();\r\n }\r\n\r\n public onCustomerChanged(): void {\r\n this.model.searchParams.nomGroupId = null;\r\n this.loadImbalanceTradeNomGroupsForCustomer().subscribe(() => {});\r\n }\r\n\r\n public onAccountChanged(): void {\r\n if (_.isNil(this.model.searchParams.nomGroupId)) {\r\n return;\r\n }\r\n }\r\n\r\n navigationCancelled(): void {\r\n this.model.searchParams = _.clone(this.model.lastSearchParams);\r\n\r\n this.loadSearchResources().subscribe(() => {});\r\n }\r\n\r\n private clearIssueDateTime(requests: T[]): T[] {\r\n return _.map(requests, request => { request.issueDateTime = null; return request; });\r\n }\r\n\r\n onSelectionChanged = (e): void => {\r\n\r\n const dataGrid: DxDataGridComponent = e.component.instance();\r\n\r\n let buyHub = null;\r\n let sellHub = null;\r\n\r\n if (this.model.pageView) {\r\n buyHub = this.imbalanceTradeRequestPageView.buyImbalanceTradeComponent;\r\n sellHub = this.imbalanceTradeRequestPageView.sellImbalanceTradeComponent;\r\n } else {\r\n buyHub = this.imbalanceTradeRequestTabView.buyImbalanceTradeComponent;\r\n sellHub = this.imbalanceTradeRequestTabView.sellImbalanceTradeComponent;\r\n }\r\n // tslint:disable-next-line:triple-equals\r\n if (buyHub && buyHub.dataGrid.instance == dataGrid) { // Don't use ===\r\n this.model.buySelectedRowKeys = e.selectedRowKeys;\r\n this.model.buySelections = e.selectedRowsData;\r\n // tslint:disable-next-line:triple-equals\r\n } else if (sellHub && sellHub.dataGrid.instance == dataGrid) {\r\n this.model.sellSelectedRowKeys = e.selectedRowKeys;\r\n this.model.sellSelections = e.selectedRowsData;\r\n }\r\n };\r\n\r\n public onViewChanged(): void {\r\n if (!!this.imbalanceTradeRequestPageView) {\r\n this.imbalanceTradeRequestPageView.refreshGrids();\r\n }\r\n if (!!this.imbalanceTradeRequestTabView) {\r\n this.imbalanceTradeRequestTabView.refreshGrids();\r\n }\r\n }\r\n\r\n toggleFilterSectionClicked() {\r\n this.showFilters = !this.showFilters;\r\n }\r\n\r\n onUndoRow = (e: UndoRowArgs): void => {\r\n const undoObj = _.find(e.undos, item => item.key === e.key);\r\n\r\n if (undoObj) {\r\n let dataSource: DataSource;\r\n\r\n const transactionType = (undoObj.data as ImbalanceTradeRequest).transactionType;\r\n if (this.isBuyTransaction(transactionType)) {\r\n dataSource = this.model.buyDataSource;\r\n } else if (this.isSellTransaction(transactionType)) {\r\n dataSource = this.model.sellDataSource;\r\n }\r\n\r\n // Copy the undo record back over the data record.\r\n const store = dataSource.store();\r\n store.update(e.key, _.cloneDeep(undoObj.data));\r\n const undoIndex = e.undos.indexOf(undoObj, 0);\r\n e.undos.splice(undoIndex, 1);\r\n }\r\n };\r\n\r\n public onMatchClicked(e): void {\r\n const selectedRequests: Array = [];\r\n\r\n // get the selected buy requests\r\n _.each(this.model.buySelectedRowKeys, (x) => {\r\n\r\n const foundRequest = _.find(this.model.buyImbalanceTradeRequests, {key: x});\r\n selectedRequests.push(foundRequest as ImbalanceTradeRequest);\r\n });\r\n\r\n // get the selected sell requests\r\n _.each(this.model.sellSelectedRowKeys, (x) => {\r\n\r\n const foundRequest = _.find(this.model.sellImbalanceTradeRequests, {key: x});\r\n selectedRequests.push(foundRequest as ImbalanceTradeRequest);\r\n });\r\n\r\n if(selectedRequests.length <= 0) return;\r\n\r\n this.getServerDateTime().subscribe(x => {\r\n if (this.model.isUserRoleModifyAllowed()){\r\n this.recordsBeingProcessed = true;\r\n this.matchImbalanceTradeRequests(selectedRequests).subscribe(() => {\r\n this.resetEditMode();\r\n });\r\n return;\r\n }\r\n\r\n this.recordsBeingProcessed = false;\r\n this.alertService.addErrorMessage('Error', 'Match is not allowed past the Imbalance Trade deadline.');\r\n });\r\n }\r\n\r\n public deleteClicked(imbalanceTradeRequest: ImbalanceTradeRequest): void {\r\n if (!this.recordsBeingProcessed) {\r\n this.getServerDateTime().subscribe(x => {\r\n if (this.model.isUserRoleModifyAllowed()){\r\n this.recordsBeingProcessed = true;\r\n this.deleteImbalanceTradeRequests(imbalanceTradeRequest);\r\n return;\r\n }\r\n this.recordsBeingProcessed = false;\r\n this.alertService.addErrorMessage('Error', 'Delete is not allowed past the Imbalance Trade deadline.');\r\n });\r\n }\r\n }\r\n\r\n saveClicked = (imbalanceTradeRequest: ImbalanceTradeRequest) => this.saveChanges(imbalanceTradeRequest).subscribe(() => {\r\n this.resetEditMode();\r\n this.performSearch().subscribe(() => {\r\n // Do nothing\r\n });\r\n });\r\n\r\n /* END EVENTS */\r\n\r\n /* VERIFICATION METHODS */\r\n\r\n isViewOnly(): boolean {\r\n const check =\r\n (!!this.imbalanceTradeRequestPageView && this.imbalanceTradeRequestPageView.isViewOnly()) ||\r\n (!!this.imbalanceTradeRequestTabView && this.imbalanceTradeRequestTabView.isViewOnly());\r\n\r\n return check;\r\n }\r\n\r\n isDisabled(): boolean {\r\n const check =\r\n (!!this.imbalanceTradeRequestPageView && this.imbalanceTradeRequestPageView.isDisabled()) ||\r\n (!!this.imbalanceTradeRequestTabView && this.imbalanceTradeRequestTabView.isDisabled());\r\n\r\n return check;\r\n }\r\n\r\n isMatchEnabled(): boolean{\r\n // view is disabled\r\n if(this.isDisabled() && this.isViewOnly()) return false;\r\n // nothing is selected\r\n if(!this.model.anyRequestsSelected()) return false;\r\n // go ahead and enable it.\r\n return this.model.isUserRoleModifyAllowed();\r\n }\r\n\r\n /* END VERIFICATION METHODS */\r\n\r\n\r\n protected loadSearchResources(): Observable{\r\n const gasDayFromSearchParams = this.model.searchParams.gasDay;\r\n\r\n if (this.gasDayTracker.previouslyLoadedForSameGasDay(gasDayFromSearchParams)) {\r\n this.model.customers = _.orderBy(this.model.customers, x => x.displayValue);\r\n\r\n this.postLoadSearchResources();\r\n return of(null);\r\n }\r\n\r\n const serviceCalls: Observable[] = [\r\n this.getEnterprises(gasDayFromSearchParams), // 0\r\n this.loadImbalanceTradeNomGroupsForCustomer()\r\n ];\r\n\r\n return forkJoin(serviceCalls).pipe(tap(response => {\r\n this.model.yesAndNo = YesAndNo.All();\r\n this.model.customers = _.orderBy(response[0] as NominationEnterprise[], x => x.displayValue);\r\n this.postLoadSearchResources();\r\n\r\n this.gasDayTracker.markLastLoadedGasDay(this.model.searchParams.gasDay);\r\n }));\r\n }\r\n\r\n private postLoadSearchResources() {\r\n const currentSelectedCustomer = _.find(this.model.customers, (x) => {\r\n return this.model.searchParams.customerId === x.id;\r\n });\r\n if (currentSelectedCustomer === undefined) {\r\n this.model.searchParams.customerId = null;\r\n }\r\n\r\n // External Access\r\n if (!this.model.user.isInternalUser) {\r\n const hasValidCustomerSelected = _.some(this.model.customers, x => x.id === this.model.searchParams.customerId);\r\n\r\n if (!this.model.searchParams.customerId || !hasValidCustomerSelected) {\r\n this.model.searchParams.customerId = Number(this.userService.user.enterpriseId);\r\n\r\n this.onCustomerChanged();\r\n }\r\n }\r\n }\r\n\r\n protected performSearch(unsavedBuyRequests: ImbalanceTradeRequest[] = [],\r\n unsavedSellRequests: ImbalanceTradeRequest[] = [],\r\n isAfterSaveOrSubmit: boolean = false): Observable{\r\n this.recordsBeingProcessed = false;\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n\r\n if (!!this.imbalanceTradeRequestTabView) {\r\n this.imbalanceTradeRequestTabView.onEnableTabs();\r\n }\r\n\r\n this.selectFirstTabWhenCustomerHasChanged();\r\n this.getView().removeIncompleteRows();\r\n\r\n let serviceCalls: Observable[] = [\r\n this.getImbalanceTradeRequests(this.model.lastSearchParams.customerId, this.model.lastSearchParams.nomGroupId, this.model.lastSearchParams.gasDay, 'Buy', this.model.searchParams.mismatchedOnly), // 0\r\n this.getImbalanceTradeRequests(this.model.lastSearchParams.customerId, this.model.lastSearchParams.nomGroupId, this.model.lastSearchParams.gasDay, 'Sell', this.model.searchParams.mismatchedOnly), // 1\r\n this.gasCycleService.queryGasDayCycleStatusesFor(this.model.lastSearchParams.gasDay.previous()), // 2\r\n this.getImbalanceTradeLocationBalances(this.model.lastSearchParams.customerId, this.model.lastSearchParams.nomGroupId, this.model.lastSearchParams.gasDay) // 3\r\n ];\r\n\r\n if (!isAfterSaveOrSubmit) {\r\n const supportingDataServiceCalls: Observable[] = [\r\n\r\n this.getNominationLocations(this.model.lastSearchParams.gasDay), // 4\r\n this.getCounterPartyNomGroups() // 5\r\n ];\r\n serviceCalls = serviceCalls.concat(supportingDataServiceCalls);\r\n }\r\n\r\n return forkJoin(serviceCalls).pipe(tap(response => {\r\n this.model.queryDateTime = new Date(Math.min(response[0].queryDateTime.valueOf(), response[1].queryDateTime.valueOf()));\r\n this.loadBuyInformation(response[0], unsavedBuyRequests);\r\n this.loadSellInformation(response[1], unsavedSellRequests);\r\n this.model.previousGasDayCycleStatuses = response[2];\r\n this.model.imbalanceTradeLocationBalances = response[3];\r\n\r\n if (!isAfterSaveOrSubmit) {\r\n this.model.selectedNomGroup = _.find(this.model.nominationGroups, x => x.id === this.model.lastSearchParams.nomGroupId);\r\n this.model.locations = _.orderBy(response[4] as NominationLocation[], x => x.name);\r\n this.loadCounterPartyNoms(response[5]);\r\n }\r\n\r\n this.model.setSelectableRequests();\r\n\r\n this.model.isReadOnlyMode = !this.capabilitiesService.hasCapabilities(['ImbalanceTradeRequests-Write'], this.userService.user, this.sessionService.getPipeline().code);\r\n\r\n this.model.isOneDayAdjustmentCapable = this.capabilitiesService.hasCapabilities(['ImbalanceTradeRequests-OneDay-Adjustment'], this.userService.user, this.sessionService.getPipeline().code);\r\n this.model.isFullAdjustmentCapable = this.capabilitiesService.hasCapabilities(['ImbalanceTradeRequests-Full-Adjustment'], this.userService.user, this.sessionService.getPipeline().code);\r\n\r\n }));\r\n }\r\n\r\n private getCounterPartyNomGroups() {\r\n return this.imbalanceTradeRequestsService.queryCounterPartyImbalanceTrade(this.model.lastSearchParams.gasDay, this.model.lastSearchParams.customerId).pipe(\r\n concatMap(response => {\r\n return this.nominationEnterpriseEnrichmentService.enrichArray(response, 'enterpriseId', 'enterprise');\r\n })\r\n ,\r\n concatMap(response => {\r\n _.forEach(response, r => r['displayValue'] = `${r['enterpriseShortName']} (${r.mnemonic})`);\r\n return of(response);\r\n })\r\n );\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n protected resetCompleted(): void {\r\n this.resetUndoRecords(this.model.buyUndos);\r\n this.resetUndoRecords(this.model.sellUndos);\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams.gasDay = this.model.gasDay;\r\n this.model.searchParams.mismatchedOnly = false;\r\n\r\n this.model.searchParams.customerId = null;\r\n this.model.searchParams.nomGroupId = null;\r\n this.model.nominationGroups = NominationGroupHierarchyCollection.create();\r\n\r\n this.model.buyImbalanceTradeRequests = null;\r\n this.model.sellImbalanceTradeRequests = null;\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams = new ImbalanceTradeRequestsSearchParams(\r\n this,\r\n typedParams.asNullableNumber('customerId'),\r\n typedParams.asNullableNumber('nomGroupId'),\r\n typedParams.asGasDay('gasDay'),\r\n typedParams.asBoolean('mismatchedOnly')\r\n );\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n }\r\n\r\n private getEnterprises(gasDay: IGasDay): Observable {\r\n return this.nominationEnterpriseService.queryAllByPipeline({gasDay: gasDay, includeInactive: true, accountBusinessRights: [BusinessRight.CustodyTransfer, BusinessRight.MultiTitleTransfer, BusinessRight.LdcVariance, BusinessRight.TboTransportation] } as EnterpriseSearchParams).pipe(\r\n concatMap(response => {\r\n return this.nominationEnterpriseEnrichmentService.enrichArray(response, 'id');\r\n }));\r\n }\r\n\r\n private loadImbalanceTradeNomGroupsForCustomer() : Observable {\r\n if (!this.model.searchParams.customerId) {\r\n // Customer may be explicitly cleared by the user, in that case reset customer selected nomGroup selection\r\n this.model.searchParams.nomGroupId = null;\r\n this.model.nominationGroups = NominationGroupHierarchyCollection.create();\r\n return of(null);\r\n }\r\n\r\n return this.imbalanceTradeRequestsService.queryNominationGroupsForImbalanceTrade(this.model.searchParams.gasDay, this.model.searchParams.customerId).pipe(\r\n tap(\r\n nominationGroups => {\r\n this.model.nominationGroups = NominationGroupHierarchyCollection.create(nominationGroups);\r\n\r\n if (this.model.nominationGroups.isSingle) {\r\n // No matter what is or isn't selected, just use the first one if there is only one Nom Group (Account)\r\n this.model.searchParams.nomGroupId = this.model.nominationGroups.first().id;\r\n this.onAccountChanged();\r\n }\r\n }));\r\n }\r\n\r\n static createUndoRecord(key: number, record: ImbalanceTradeRequest, undos: IUndoRecord[]) {\r\n if (key > 0) { // Ignore new records.\r\n // Copy the data to the undos collection if it isn't already there.\r\n if (!undos.some(item => item.key === key)) {\r\n // We can't use dataStore.byKey() as it's async so the value would\r\n // be updated by the time we get the record.\r\n const dst = _.cloneDeep(record);\r\n undos.push(new UndoRecord(key, dst));\r\n }\r\n }\r\n }\r\n\r\n private loadCounterPartyNoms(nominationGroups: NominationGroup[]){\r\n this.model.counterPartyNomGroups = NominationGroupHierarchyCollection.create();\r\n this.model.counterPartyNomGroups = (nominationGroups as NominationGroupHierarchyCollection);\r\n }\r\n\r\n public getView(): ImbalanceTradeRequestsPageViewComponent | ImbalanceTradeRequestsTabViewComponent {\r\n return this.model.pageView ? this.imbalanceTradeRequestPageView : this.imbalanceTradeRequestTabView;\r\n }\r\n\r\n private loadBuyInformation(buyImbalanceTradeRequestResponse: ImbalanceTradeRequestQueryResult, seedRequests: ImbalanceTradeRequest[]) {\r\n let key = 1;\r\n this.model.buyImbalanceTradeRequestOriginals = [];\r\n if (buyImbalanceTradeRequestResponse) {\r\n const buyRequests = buyImbalanceTradeRequestResponse.requests as ImbalanceTradeRequest[];\r\n\r\n this.resetUndoRecords(this.model.buyUndos);\r\n this.resetSelections(this.model.buySelections);\r\n\r\n buyRequests.forEach(req => req['key'] = key++);\r\n\r\n // Only assign a key if this record is not new (i.e. has a nomination id)\r\n _.filter(seedRequests, x => x.id).forEach(req => { req['key'] = key++; });\r\n\r\n this.model.buyImbalanceTradeRequests = (buyRequests as ImbalanceTradeRequest[]);\r\n this.model.buyDataSource = this.createDataSource(this.model.buyImbalanceTradeRequests, this.model.buyUndos);\r\n\r\n const store = this.model.buyDataSource.store();\r\n\r\n store.on('updated', (recordKey: number, values: ImbalanceTradeRequest) => {\r\n if (recordKey > 0) { // Ignore new records.\r\n store.byKey(recordKey).then((record) => {\r\n if (record.transactionType === TransactionTypes.ImbalanceTradeBuy) {\r\n const original = this.model.buyImbalanceTradeRequestOriginals[recordKey];\r\n const updateObj: any = { };\r\n\r\n if (values.statusCode !== undefined && original.statusCode !== values.statusCode) {\r\n updateObj.statusCode = values.statusCode;\r\n }\r\n if (values.id !== undefined && original.id !== values.id) {\r\n updateObj.id = values.id;\r\n }\r\n }\r\n });\r\n }\r\n });\r\n\r\n this.clearGridEdits();\r\n\r\n this.model.originalBuyImbalanceTradeRequests = _.cloneDeep(this.model.buyImbalanceTradeRequests);\r\n }\r\n }\r\n\r\n private loadSellInformation(sellImbalanceTradeRequestResponse: ImbalanceTradeRequestQueryResult, seedRequests: ImbalanceTradeRequest[]) {\r\n this.model.sellImbalanceTradeRequestOriginals = [];\r\n let key = 1;\r\n\r\n if (sellImbalanceTradeRequestResponse) {\r\n const sellRequests = sellImbalanceTradeRequestResponse.requests as ImbalanceTradeRequest[];\r\n\r\n this.resetUndoRecords(this.model.sellUndos);\r\n this.resetSelections(this.model.sellSelections);\r\n\r\n sellRequests.forEach(req => req['key'] = key++);\r\n\r\n // Only assign a key if this record is not new (i.e. has a nomination id)\r\n _.filter(seedRequests, x => x.id).forEach(req => { req['key'] = key++; });\r\n\r\n this.model.sellImbalanceTradeRequests = (sellRequests as ImbalanceTradeRequest[]);\r\n this.model.sellDataSource = this.createDataSource(this.model.sellImbalanceTradeRequests, this.model.sellUndos);\r\n\r\n const store = this.model.sellDataSource.store();\r\n\r\n store.on('updated', (recordKey: number, values: ImbalanceTradeRequest) => {\r\n if (recordKey > 0) { // Ignore new records.\r\n store.byKey(recordKey).then((record) => {\r\n if (record.transactionType === TransactionTypes.ImbalanceTradeSell) {\r\n const original = this.model.sellImbalanceTradeRequestOriginals[recordKey];\r\n const updateObj: any = { };\r\n\r\n if (values.statusCode !== undefined && original.statusCode !== values.statusCode) {\r\n updateObj.statusCode = values.statusCode;\r\n }\r\n if (values.id !== undefined && original.id !== values.id) {\r\n updateObj.id = values.id;\r\n }\r\n }\r\n });\r\n }\r\n });\r\n\r\n this.clearGridEdits();\r\n\r\n this.model.originalSellImbalanceTradeRequests = _.cloneDeep(this.model.sellImbalanceTradeRequests);\r\n }\r\n }\r\n\r\n createDataSource(data: any[], undos: IUndoRecord[]): DataSource {\r\n const dataStore = new ArrayStore({\r\n data: data,\r\n key: 'key'\r\n });\r\n\r\n dataStore.on('updating', (key: number, values: ImbalanceTradeRequest) => {\r\n const record = _.find(data, r => r['key'] === key);\r\n ImbalanceTradeRequestsComponent.createUndoRecord(key, record, undos);\r\n });\r\n\r\n const dataSource = new DataSource({\r\n requireTotalCount: true,\r\n store: dataStore,\r\n onLoadingChanged: (isLoading) => {\r\n if (!isLoading) {\r\n this.applyFilters();\r\n }\r\n }\r\n });\r\n\r\n return dataSource;\r\n }\r\n\r\n private applyFilters() : void {\r\n\r\n this.model.buyFilter = [];\r\n this.model.sellFilter = [];\r\n\r\n // Sometimes the view is null, putting check in place so that the page continues to operate\r\n const view = this.getView();\r\n if (view) {\r\n view.applyFilters();\r\n }\r\n }\r\n\r\n private resetUndoRecords(undoRecords: IUndoRecord[]): void {\r\n undoRecords.splice(0, undoRecords.length);\r\n }\r\n\r\n private resetSelections(selections: Array): void {\r\n selections.splice(0, selections.length);\r\n }\r\n\r\n private paramValidator(): ParamValidator {\r\n const queryParams = ParamValidator.Standard();\r\n\r\n queryParams.isGasDay('gasDay');\r\n queryParams.isNumber('customerId');\r\n queryParams.isNumber('nomGroupId', true);\r\n return queryParams;\r\n }\r\n\r\n private clearGridEdits() {\r\n this.getView().clearGridEdits();\r\n }\r\n\r\n private getImbalanceTradeRequests(customerId: number, nomGroupId: number, gasDay: GasDay, requestType: string, mismatchedOnly: boolean): Observable {\r\n return this.imbalanceTradeRequestsService.queryImbalanceTradeRequests(customerId, nomGroupId, gasDay, requestType, mismatchedOnly).pipe(\r\n concatMap(response => {\r\n return forkJoin(\r\n [\r\n this.nominationLocationEnrichmentService.enrichArray(response.requests, 'creditLocationId', 'creditLocation'),\r\n this.nominationLocationEnrichmentService.enrichArray(response.requests, 'debitLocationId', 'debitLocation'),\r\n this.nominationNomGroupEnrichmentService.enrichArray(response.requests, 'creditNominationGroupId', 'creditNominationGroup'),\r\n this.nominationNomGroupEnrichmentService.enrichArray(response.requests, 'debitNominationGroupId', 'debitNominationGroup')\r\n ]).pipe(concatMap(() => of(response)));\r\n }));\r\n }\r\n\r\n private getImbalanceTradeLocationBalances(customerId: number, nomGroupId: number, gasDay: GasDay): Observable {\r\n return this.imbalanceTradeRequestsService.queryImbalanceTradeLocationBalances(customerId, nomGroupId, gasDay);\r\n }\r\n\r\n ///\r\n /// Persitance Methods\r\n ///\r\n\r\n private saveImbalanceTradeRequests(imbalanceTradeRequest: ImbalanceTradeRequest): Observable {\r\n this.appService.clearMessages();\r\n\r\n const o = new Observable(observer => {\r\n if (console) { console.log('Saving @ ' + new Date().valueOf()); }\r\n this.getView().tryToSaveEditingData().subscribe(success => {\r\n if (console) { console.log('Finished save editing data @ ' + new Date().valueOf()); }\r\n if (!success) {\r\n this.recordsBeingProcessed = false;\r\n this.alertService.addErrorMessage('Error', 'One or more requests are in an invalid state and must be corrected.');\r\n return;\r\n }\r\n\r\n let buyRequests = this.getSelectedBuyRequestsNotPassed();\r\n let sellRequests = this.getSelectedSellRequestsNotPassed();\r\n\r\n buyRequests = this.clearIssueDateTime(buyRequests);\r\n sellRequests = this.clearIssueDateTime(sellRequests);\r\n\r\n const unsavedNewBuyRequests = this.getUnsavedNewRequests(this.model.buyImbalanceTradeRequests, buyRequests).filter(y => this.isBuyTransaction(y.transactionType));\r\n const unsavedNewSellRequests = this.getUnsavedNewRequests(this.model.sellImbalanceTradeRequests, sellRequests).filter(y => this.isSellTransaction(y.transactionType));\r\n\r\n this.normalizeRequest(imbalanceTradeRequest);\r\n\r\n if (console) { console.log('Calling server @ ' + new Date().valueOf()); }\r\n this.imbalanceTradeRequestsService.saveImbalanceTradeRequest(\r\n this.model.lastSearchParams.customerId,\r\n this.model.lastSearchParams.nomGroupId,\r\n this.model.lastSearchParams.gasDay,\r\n this.model.queryDateTime,\r\n imbalanceTradeRequest\r\n )\r\n .subscribe(() => {\r\n\r\n if (console) { console.log('Back from server at @ ' + new Date().valueOf()); }\r\n\r\n return this.performSearch(unsavedNewBuyRequests, unsavedNewSellRequests, true)\r\n .subscribe(() => {\r\n this.resetEditMode();\r\n\r\n observer.next(true);\r\n observer.complete();\r\n });\r\n\r\n }, () => { this.resetEditMode(); observer.next(false); observer.complete(); } );\r\n }, () => { this.resetEditMode(); observer.next(false); observer.complete(); } );\r\n });\r\n return o;\r\n }\r\n\r\n private matchImbalanceTradeRequests(selectedRequests: ImbalanceTradeRequest[]): Observable{\r\n this.appService.clearMessages();\r\n\r\n const o = new Observable(observer => {\r\n if (console) { console.log('Saving @ ' + new Date().valueOf()); }\r\n\r\n // post them to the server\r\n if (console) { console.log('Calling server @ ' + new Date().valueOf()); }\r\n\r\n const buyRequests = this.getSelectedBuyRequestsNotPassed();\r\n const sellRequests = this.getSelectedSellRequestsNotPassed();\r\n\r\n const unsavedNewBuyRequests = this.getUnsavedNewRequests(this.model.buyImbalanceTradeRequests, buyRequests).filter(y => this.isBuyTransaction(y.transactionType));\r\n const unsavedNewSellRequests = this.getUnsavedNewRequests(this.model.sellImbalanceTradeRequests, sellRequests).filter(y => this.isSellTransaction(y.transactionType));\r\n\r\n this.imbalanceTradeRequestsService.matchImbalanceTradeRequests(this.model.lastSearchParams.customerId,\r\n this.model.lastSearchParams.nomGroupId,\r\n this.model.lastSearchParams.gasDay,\r\n this.model.queryDateTime,\r\n selectedRequests).subscribe(() => {\r\n return this.performSearch(unsavedNewBuyRequests, unsavedNewSellRequests)\r\n .subscribe(() => {\r\n this.resetEditMode();\r\n\r\n\r\n observer.next(true);\r\n observer.complete();\r\n });\r\n });\r\n });\r\n return o;\r\n }\r\n\r\n private deleteImbalanceTradeRequests(imbalanceTradeRequest: ImbalanceTradeRequest) {\r\n this.appService.clearMessages();\r\n this.getView().tryToSaveEditingData().subscribe(success => {\r\n if (!success) {\r\n this.recordsBeingProcessed = false;\r\n this.alertService.addErrorMessage('Error', 'One or more requests are in an invalid state and must be corrected.');\r\n return;\r\n }\r\n\r\n const buyRequests = this.getSelectedBuyRequestsNotPassed();\r\n const sellRequests = this.getSelectedSellRequestsNotPassed();\r\n\r\n const unsavedNewBuyRequests = this.getUnsavedNewRequests(this.model.buyImbalanceTradeRequests, buyRequests).filter(y => this.isBuyTransaction(y.transactionType));\r\n const unsavedNewSellRequests = this.getUnsavedNewRequests(this.model.sellImbalanceTradeRequests, sellRequests).filter(y => this.isSellTransaction(y.transactionType));\r\n\r\n this.imbalanceTradeRequestsService.deleteImbalanceTradeRequests(\r\n this.model.lastSearchParams.gasDay,\r\n this.model.queryDateTime,\r\n imbalanceTradeRequest\r\n ).subscribe(() => {\r\n\r\n return this.performSearch(unsavedNewBuyRequests, unsavedNewSellRequests)\r\n .subscribe(() => {\r\n this.recordsBeingProcessed = false;\r\n });\r\n });\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n private saveChanges = (imbalanceTradeRequest: ImbalanceTradeRequest): Observable => {\r\n if (!this.recordsBeingProcessed) {\r\n return this.getServerDateTime().pipe(tap(() => {\r\n if (this.model.isUserRoleModifyAllowed()){\r\n this.recordsBeingProcessed = true;\r\n this.saveImbalanceTradeRequests(imbalanceTradeRequest).subscribe(() => {});\r\n return of(true);\r\n }\r\n this.recordsBeingProcessed = false;\r\n this.alertService.addErrorMessage('Error', 'Save is not allowed past the Imbalance Trade deadline.');\r\n return of(false);\r\n }));\r\n } else {\r\n return of(true);\r\n }\r\n };\r\n\r\n private selectFirstTabWhenCustomerHasChanged(): void {\r\n if (this.model.lastSearchParams.customerId === this.model.searchParams.customerId) { return; }\r\n\r\n if (!!this.imbalanceTradeRequestTabView) {\r\n this.imbalanceTradeRequestTabView.focusFirstTab();\r\n }\r\n }\r\n\r\n\r\n\r\n getUnsavedNewRequests(requests: ImbalanceTradeRequest[], exclusions: ImbalanceTradeRequest[]) {\r\n const unsavedNewRequests = requests\r\n .filter(req => req.statusCode === \"New\")\r\n .filter(req => !_.some(exclusions, id => id['key'] === req['key'])); // This used to be a full object compare, verify if this breaks anything.\r\n\r\n return unsavedNewRequests;\r\n }\r\n\r\n private setPipelineGasDayProperties(pipelineGasDay: NominationPipelineGasDay) {\r\n this.model.minGasDay = pipelineGasDay.minGasDayForCycleStatus;\r\n this.model.maxGasDay = this.model.gasDay;\r\n this.model.todaysAllowableGasDay = pipelineGasDay.allowableGasDay;\r\n }\r\n\r\n isBuyTransaction(transactionType: string): boolean {\r\n return transactionType === TransactionTypes.ImbalanceTradeBuy;\r\n }\r\n\r\n isSellTransaction(transactionType: string): boolean {\r\n return transactionType === TransactionTypes.ImbalanceTradeSell;\r\n }\r\n\r\n private get datagridIsProcessingData(): boolean {\r\n return this.getView().hasEditData();\r\n }\r\n\r\n getSelectedBuyRequests(): ImbalanceTradeRequest[] {\r\n const results = (this.model.buyImbalanceTradeRequests\r\n .filter(req => this.isBuyTransaction(req.transactionType))\r\n .filter(req => _.some(this.model.buySelectedRowKeys, id => id === req['key']))) as ImbalanceTradeRequest[];\r\n return results;\r\n }\r\n\r\n getSelectedBuyRequestsNotPassed(): ImbalanceTradeRequest[] {\r\n return _.filter(this.getSelectedBuyRequests(), req => req.statusCode !== \"Passed\");\r\n }\r\n\r\n getSelectedSellRequests(): ImbalanceTradeRequest[] {\r\n const results = (this.model.sellImbalanceTradeRequests\r\n .filter(req => this.isSellTransaction(req.transactionType))\r\n .filter(req => _.some(this.model.sellSelectedRowKeys, id => id === req['key']))) as ImbalanceTradeRequest[];\r\n return results;\r\n }\r\n\r\n getSelectedSellRequestsNotPassed(): ImbalanceTradeRequest[] {\r\n return _.filter(this.getSelectedSellRequests(), req => req.statusCode !== \"Passed\");\r\n }\r\n\r\n private getNominationLocations(gasDay: IGasDay): Observable {\r\n return this.nominationLocationService.queryAllDetails2(new LocationSearchParams(gasDay, true, GasDay.maxGasDay(), false, true)).pipe(\r\n concatMap(response => {\r\n return this.nominationLocationEnrichmentService.enrichArray(response, 'id');\r\n }));\r\n }\r\n\r\n getDefaultChangesWillBeLostMessageOptions(): ModalOptions {\r\n return YesNoCancelModalService.getDefaultYesNoModalOptions();\r\n }\r\n\r\n private normalizeRequest(requestToSave: ImbalanceTradeRequest) {\r\n\r\n // is always the same location for both, so the datagrids are tied to the credit location\r\n if(_.isNil(requestToSave.debitLocationId)) requestToSave.debitLocationId = requestToSave.creditLocationId;\r\n if(_.isNil(requestToSave.pipelineId)) requestToSave.pipelineId = this.baseSessionService.getPipeline().id;\r\n\r\n // this clears out the gas day and issue datetime which will be set on the server side. This seems to be a date issue when passing to the server. it nulls out the\r\n // whole request for some reason.\r\n requestToSave.gasDay = null;\r\n requestToSave.issueDateTime = null;\r\n }\r\n\r\n clearMessages() {\r\n this.appService.clearMessages();\r\n }\r\n\r\n private resetEditMode() {\r\n this.model.newRowAdded = false;\r\n this.model.editRowKey = null;\r\n this.recordsBeingProcessed = false;\r\n this.model.isEditing = false;\r\n this.model.sellSelectedRowKeys = [];\r\n this.model.buySelectedRowKeys = [];\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\nimport {GasCycle} from \"@model/gas-cycle\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {IAvailableCapacitiesDto, IAvailableCapacityDto, IAvailableSegmentDto} from \"@shared/services/nomination/available-capacity/available-capacity-service\";\r\nimport {GasDayCycleStatusCollection} from \"@model/gas-day-cycle-status-collection\";\r\nimport {DateTime} from \"@model/date-time\";\r\nimport {SimpleGasDayCycleStatus} from \"@model/simple-gas-day-cycle-status\";\r\n\r\nexport class AvailableCapacityModel {\r\n gasDayCycleStatuses: GasDayCycleStatusCollection = GasDayCycleStatusCollection.create();\r\n gasCycles: GasCycle[] = [];\r\n launchedGasCycles: GasCycle[] = [];\r\n minGasDay: GasDay;\r\n maxGasDay: GasDay;\r\n actualGasDay: GasDay;\r\n searchParams: AvailableCapacityModelSearchParams = new AvailableCapacityModelSearchParams();\r\n lastSearchParams: AvailableCapacityModelSearchParams;\r\n\r\n searchResults: AvailableCapacity[];\r\n\r\n showFilterSection: boolean = true;\r\n gasDay: GasDay;\r\n queryDateTime: Date;\r\n\r\n hasValidationErrors: boolean = false;\r\n modelDirty: boolean = false;\r\n\r\n isAdding: boolean = false;\r\n isEditing: boolean = false;\r\n isEditingRowValid: boolean= false;\r\n currentRowIndex: number = -1;\r\n\r\n unassignedSegments: AvailableSegment[];\r\n currentCycleStatus: SimpleGasDayCycleStatus;\r\n hasCalculatedDailyValue: boolean = false;\r\n}\r\nexport class AvailableCapacitySaveResult{\r\n futureCapacityReplaced: boolean;\r\n message: string;\r\n}\r\n\r\nexport class AvailableCapacityModelSearchParams {\r\n gasDay: GasDay;\r\n gasCycleCode: string = \"\";\r\n includeRevisions: boolean = false;\r\n segmentId?: number;\r\n}\r\n\r\nexport class AvailableCapacities {\r\n availableCapacities: AvailableCapacity[] = [];\r\n availableSegments: AvailableSegment[] = [];\r\n\r\n public static create(dto: IAvailableCapacitiesDto): AvailableCapacities {\r\n const availableCapacities = new AvailableCapacities();\r\n _.forEach(dto.availableCapacities, x => {\r\n availableCapacities.availableCapacities.push(AvailableCapacity.create(x));\r\n });\r\n _.forEach(dto.availableSegments, x => {\r\n availableCapacities.availableSegments.push(AvailableSegment.create(x));\r\n });\r\n return availableCapacities;\r\n }\r\n}\r\n\r\nexport class AvailableCapacity {\r\n segmentId: string;\r\n segmentName: string;\r\n segmentType: string;\r\n effectiveGasDay: GasDay;\r\n expiryGasDay: string;\r\n effectiveGasCycle: string;\r\n isReplaced: boolean;\r\n currentCapacityFlowRate: number;\r\n currentCapacityQuantity: number;\r\n createdDateTime: DateTime;\r\n\r\n public static create(dto: IAvailableCapacityDto): AvailableCapacity {\r\n const availableCapacity = new AvailableCapacity();\r\n _.assign(availableCapacity, dto);\r\n return availableCapacity;\r\n }\r\n}\r\n\r\nexport class AvailableSegment {\r\n id: number;\r\n segmentName: string;\r\n segmentType: string;\r\n\r\n public static create(dto: IAvailableSegmentDto): AvailableSegment {\r\n const availableSegment = new AvailableSegment();\r\n _.assign(availableSegment, dto);\r\n return availableSegment;\r\n }\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {DateTime} from \"@model/date-time\";\r\nimport {Observable} from \"rxjs\";\r\nimport {map} from \"rxjs/operators\";\r\nimport {NominationResourceService} from \"@shared/resources/nominations-resource.service\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {\r\n AvailableCapacities,\r\n AvailableCapacity\r\n} from \"app/gcts/nomination/available-capacity/available-capacity.model\";\r\n\r\nexport class AvailableCapacityRequest {\r\n gasDay: GasDay;\r\n gasCycleCode?: string = 'T';\r\n includeRevisions?: boolean;\r\n segmentId?: number;\r\n}\r\nexport interface IAvailableCapacitiesDto {\r\n availableCapacities: IAvailableCapacityDto[];\r\n availableSegments: IAvailableSegmentDto[];\r\n}\r\n\r\nexport interface IAvailableCapacityDto {\r\n segmentId: number;\r\n segmentName: string;\r\n gasDay: GasDay;\r\n cycle: string;\r\n currentCapacityFlowRate: number;\r\n currentCapacityQuantity: number;\r\n createDateTime: DateTime;\r\n}\r\n\r\nexport interface IAvailableSegmentDto {\r\n segmentId: number;\r\n segmentName: string;\r\n segmentType: string;\r\n}\r\n\r\nexport interface IDailyCapacityCalculationDto\r\n{\r\n gasCycleCode: string;\r\n calculatedCapacity: number;\r\n}\r\n\r\n@Injectable()\r\nexport class AvailableCapacityService {\r\n constructor(private nominationResource: NominationResourceService) {}\r\n\r\n public queryAvailableCapacities(searchParams: AvailableCapacityRequest): Observable {\r\n return this.nominationResource.get('/availableCapacities', true, this.buildSearchParams(searchParams))\r\n .pipe(\r\n map(res => AvailableCapacities.create(res))\r\n );\r\n }\r\n\r\n public getAvailableCapacityCsv(searchParams: AvailableCapacityRequest) {\r\n return this.nominationResource.get('/availableCapacities/csv', true, this.buildSearchParams(searchParams))\r\n .pipe(\r\n map(res => AvailableCapacities.create(res))\r\n );\r\n }\r\n\r\n public createOrUpdateAvailableCapacity(gasDay: GasDay, gasCycle: string, availableCapacity: AvailableCapacity) : Observable {\r\n return this.nominationResource.post(\"/availableCapacity\", this.setupRequestBody(gasDay, gasCycle, availableCapacity));\r\n }\r\n\r\n public calculateDailyCapacity(gasDay: GasDay, gasCycle: string, availableCapacity: AvailableCapacity) : Observable {\r\n return this.nominationResource.post(\"/availableCapacity/calculateDailyCapacity\", this.setupRequestBody(gasDay, gasCycle, availableCapacity));\r\n }\r\n\r\n private setupRequestBody(gasDay: GasDay, gasCycle: string, availableCapacity: AvailableCapacity): any{\r\n availableCapacity.effectiveGasDay = null;\r\n availableCapacity.expiryGasDay = null;\r\n\r\n return {\r\n availableCapacityDto: availableCapacity,\r\n gasDay: gasDay.toString(),\r\n gasCycleCode: gasCycle,\r\n queryDateTime: new Date() // todo: this needs to be moved to the model, and setup properly\r\n };\r\n }\r\n\r\n private buildSearchParams(searchParams: AvailableCapacityRequest): GCTSHttpParams {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n\r\n params.setGasDay(searchParams.gasDay);\r\n\r\n if (searchParams.gasCycleCode != null) {\r\n params.set('gasCycleCode', searchParams.gasCycleCode);\r\n }\r\n if (searchParams.includeRevisions != null) {\r\n params.setBoolean('includeRevisions', searchParams.includeRevisions);\r\n }\r\n if(searchParams.segmentId != null) {\r\n params.setNumber('segmentId', searchParams.segmentId);\r\n }\r\n\r\n return params;\r\n }\r\n\r\n\r\n\r\n\r\n}\r\n","export class StringHelpers{\r\n public static toCommaFormattedNumber(value: number): string{\r\n return value.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n }\r\n}\r\n","import {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport * as _ from \"lodash\";\r\nimport {AvailableCapacity} from \"app/gcts/nomination/available-capacity/available-capacity.model\";\r\nimport {DateTime} from \"@model/date-time\";\r\n\r\n@Injectable()\r\nexport class AvailableCapacityCsvBuilderService {\r\n constructor(private fileService: FileService) {}\r\n\r\n build(title: string,\r\n availableCapacityDtos: AvailableCapacity[],\r\n gasDay: GasDay): void {\r\n\r\n const records : AvailableCapacity[] = availableCapacityDtos;\r\n\r\n let csvData = _.map(records, x => _.extend({}, x, {\r\n gasDay: x.effectiveGasDay,\r\n isReplaced: x.isReplaced ? 'Replaced' : '',\r\n createdDateTime: this.formatDateTime(new Date(x.createdDateTime.toString()))\r\n }));\r\n\r\n csvData = _.sortBy(csvData, ['segmentName', 'segmentType', 'gasDay', 'gasCycle']);\r\n\r\n const filename = title + ' ' + gasDay.toDisplayFormat() + '.csv';\r\n const headers = ['Segment Name', 'Segment Type', 'Gas Day', 'Cycle', 'Current Capacity (GJ/hr)', 'Current Capacity (GJ/d)', 'Create Date Time', 'Status'];\r\n const columns = ['segmentName', 'segmentType', 'effectiveGasDay', 'effectiveGasCycle', 'currentCapacityFlowRate', 'currentCapacityQuantity', 'createdDateTime', 'isReplaced'];\r\n\r\n this.fileService.downloadCsvFile(filename, csvData, headers, columns);\r\n }\r\n\r\n public formatDateTime(obj: Date): string {\r\n return new DateTime(obj).toDisplayFormat();\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Gas Day: {{model.lastSearchParams?.gasDay | gasDayFormat}}\r\n Cycle (CCT): {{model.lastSearchParams?.gasCycleCode | displayName: 'code' : 'displayValue' : model.gasCycles : 'EOD' }}\r\n Revisions: {{model.lastSearchParams?.includeRevisions | booleanAsYesNo}}\r\n \r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.gasDay | gasDayFormat }}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.gasCycleCode | displayName: 'code' : 'displayValue' : model.gasCycles : 'EOD' }}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.includeRevisions ? 'Yes' : 'No' }}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n Number of results found: {{getSearchResults().length }}\r\n \r\n \r\n Add |\r\n \r\n Export CSV\r\n \r\n\r\n
\r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n {{row.data.effectiveGasDay | gasDayFormat}}\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n Current Capacity
(GJ/hr)\r\n
\r\n
\r\n \r\n \r\n\r\n \r\n
\r\n Current Capacity
(GJ/d)\r\n
\r\n
\r\n \r\n \r\n\r\n\r\n \r\n
\r\n {{row.data.isReplaced ? 'Replaced' : ''}}\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n","import {Observable, of} from 'rxjs';\r\nimport {AfterViewChecked, AfterViewInit, ChangeDetectorRef, Component, ViewChild} from \"@angular/core\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {NominationSystemService} from \"@shared/services/nomination/nomination-system/nomination-system.service\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport * as dx from \"devextreme/core/renderer\";\r\nimport {\r\n AvailableCapacity,\r\n AvailableCapacityModel,\r\n AvailableCapacityModelSearchParams\r\n} from \"app/gcts/nomination/available-capacity/available-capacity.model\";\r\nimport {AvailableCapacityRequest, AvailableCapacityService} from \"@shared/services/nomination/available-capacity/available-capacity-service\";\r\nimport {GasCycleLogic} from \"@model/gas-cycle.logic\";\r\nimport {flatMap, concatMap, tap} from \"rxjs/operators\";\r\nimport {GasCycleService} from \"@shared/services/nomination/gas-cycle/gas-cycle.service\";\r\nimport * as _ from \"lodash\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {DataGridHelpers} from \"@model/datagrid-helpers\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport { AvailableSegment } from './available-capacity.model';\r\nimport {StringHelpers} from \"@shared/helpers/string-helpers\";\r\nimport {AvailableCapacityCsvBuilderService} from \"@shared/services/nomination/available-capacity/available-capacity-csv-builder-service\";\r\nimport {DateTime} from \"@model/date-time\";\r\n\r\n@Component({\r\n selector: 'app-available-capacity',\r\n templateUrl: './available-capacity.component.html',\r\n styleUrls: ['./available-capacity.component.css']\r\n})\r\nexport class AvailableCapacityComponent extends BaseSearchComponent implements AfterViewInit, AfterViewChecked {\r\n private typedParamsSet = false;\r\n\r\n model: AvailableCapacityModel = new AvailableCapacityModel();\r\n editors: object = {};\r\n currentRowIndex: number;\r\n\r\n @ViewChild(DxDataGridComponent) dataGrid: DxDataGridComponent;\r\n\r\n constructor(\r\n protected appService: AppService,\r\n protected router: Router,\r\n protected activatedRoute: ActivatedRoute,\r\n protected alertService: AlertService,\r\n private availableCapacityService: AvailableCapacityService,\r\n private availableCapacityCsvBuilderService: AvailableCapacityCsvBuilderService,\r\n private nominationSystemService: NominationSystemService,\r\n private gasCycleService: GasCycleService,\r\n private cdr: ChangeDetectorRef) {\r\n super('Available Capacity', appService, activatedRoute, router, alertService);\r\n this.appService.hideMenu();\r\n }\r\n\r\n ngAfterViewInit() {\r\n }\r\n\r\n ngAfterViewChecked() {\r\n // https://stackoverflow.com/questions/34364880/expression-has-changed-after-it-was-checked\r\n this.cdr.detectChanges();\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return this.validator().isValid(params);\r\n }\r\n\r\n private validator(): ParamValidator {\r\n const validator = ParamValidator.Standard();\r\n\r\n validator.isGasDay('gasDay');\r\n validator.isString('gasCycleCode', true); // Optional for EOD case\r\n validator.isString('includeRevisions');\r\n\r\n return validator;\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n return {\r\n gasDay: this.model.searchParams.gasDay,\r\n gasCycleCode: this.model.searchParams.gasCycleCode,\r\n includeRevisions: this.model.searchParams.includeRevisions\r\n };\r\n }\r\n\r\n protected resetCompleted(): void {\r\n this.typedParamsSet = false;\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams.gasDay = this.model.gasDay;\r\n this.model.searchParams.includeRevisions = false;\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n const gasDay = typedParams.asGasDay('gasDay');\r\n\r\n this.model.searchParams.gasDay = gasDay;\r\n this.model.searchParams.gasCycleCode = typedParams.asNullableString('gasCycleCode');\r\n this.model.searchParams.includeRevisions = typedParams.asBoolean('includeRevisions');\r\n this.model.searchParams.segmentId = typedParams.asNullableNumber('segmentId');\r\n\r\n this.typedParamsSet = true;\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n return this.nominationSystemService.pipelineGasDay()\r\n .pipe(tap(pipelineGasDay => {\r\n if (!pipelineGasDay.hasGasDayCycles()) {\r\n this.alertService.addWarnMessage(\"Warning\", \"No Gas Day Cycles found for pipeline\");\r\n }\r\n this.appService.hideMenu();\r\n this.appService.clearMessages();\r\n\r\n this.model.gasDay = pipelineGasDay.allowableGasDay;\r\n this.model.minGasDay = pipelineGasDay.minGasDayForCycleStatus;\r\n this.model.maxGasDay = pipelineGasDay.maxGasDayForCycleStatus;\r\n }));\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n return this.gasCycleService.queryGasDayCycleStatusesFor(this.model.searchParams.gasDay)\r\n .pipe(tap(gasDayCycleStatuses => {\r\n this.model.gasDayCycleStatuses = gasDayCycleStatuses;\r\n this.model.gasCycles = gasDayCycleStatuses.gasCycles();\r\n this.model.launchedGasCycles = gasDayCycleStatuses.defaultGasDayCycleStatuses().gasCycles();\r\n\r\n if (!this.model.searchParams.gasCycleCode) {\r\n this.model.searchParams.gasCycleCode = this.defaultGasCycleCode();\r\n }}));\r\n }\r\n\r\n private defaultGasCycleCode(): string {\r\n if (this.typedParamsSet && !_.isNil(this.model.searchParams.gasCycleCode)\r\n && _.includes(this.model.launchedGasCycles.map(x => x.code), this.model.searchParams.gasCycleCode)) {\r\n this.typedParamsSet = false;\r\n return this.model.searchParams.gasCycleCode;\r\n }\r\n\r\n return GasCycleLogic.defaultGasCycleCode(this.model.gasDayCycleStatuses,\r\n this.model.gasDayCycleStatuses.defaultEarliestNonScheduled(true)?.gasCycle);\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.hasCalculatedDailyValue = false;\r\n this.appService.clearMessages();\r\n this.clearEditMode(null);\r\n\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n const searchRequest = this.buildSearchRequest();\r\n this.setCurrentGasCycleStatus();\r\n\r\n return this.availableCapacityService.queryAvailableCapacities(searchRequest)\r\n .pipe(tap(response => {\r\n this.model.searchResults = response.availableCapacities;\r\n this.model.unassignedSegments = response.availableSegments;\r\n })\r\n );\r\n }\r\n\r\n exportCsvClicked = () =>\r\n this.availableCapacityCsvBuilderService.build(\r\n \"AvailableCapacity\",\r\n this.model.searchResults,\r\n this.model.lastSearchParams.gasDay\r\n );\r\n\r\n resetClicked(): void {\r\n this.clearEditMode(null);\r\n this.model.hasCalculatedDailyValue = false;\r\n this.model.searchResults = null;\r\n this.model.searchParams = new AvailableCapacityModelSearchParams();\r\n this.model.lastSearchParams = new AvailableCapacityModelSearchParams();\r\n super.resetClicked();\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n private buildSearchRequest(): AvailableCapacityRequest {\r\n const request = new AvailableCapacityRequest();\r\n request.gasDay = this.model.searchParams.gasDay;\r\n request.gasCycleCode = GasCycleLogic.buildGasCycleCodeForRequest(this.model.gasDayCycleStatuses, this.model.searchParams.gasCycleCode);\r\n request.includeRevisions = this.model.searchParams.includeRevisions;\r\n return request;\r\n }\r\n\r\n public getSearchResults() {\r\n return this.model.searchResults;\r\n }\r\n\r\n public toggleFilterSectionClicked(): void {\r\n this.model.showFilterSection = !this.model.showFilterSection;\r\n }\r\n\r\n public gasCyclePlaceholder(): string {\r\n return GasCycleLogic.placeholder(this.model.gasDayCycleStatuses);\r\n }\r\n\r\n public isGasCycleRequired(): boolean {\r\n return GasCycleLogic.isRequired(this.model.gasDayCycleStatuses);\r\n }\r\n\r\n onGasDayChanged(): void {\r\n // Refresh page options\r\n // this will be fired even when a null value is returned from the date picker and don't want to reload with a bad date\r\n if (!this.model.searchParams.gasDay) return;\r\n\r\n // This will force the GasCycle to get set to the default for the GasDay.\r\n this.model.searchParams.gasCycleCode = null;\r\n\r\n // Do nothing on subscription, we just want the drop downs to be reloaded\r\n this.loadSearchResources().subscribe(() => {});\r\n }\r\n\r\n onCellValidating = (e): void => {\r\n\r\n if(!this.model.isAdding && !_.isEmpty(e.newData.currentCapacityFlowRate)) {\r\n this.model.isEditingRowValid = true;\r\n }\r\n\r\n if(this.model.isAdding){\r\n this.model.isEditingRowValid = !_.isEmpty(e.newData) &&\r\n !_.isNil(e.newData.currentCapacityFlowRate) && !_.isNil(e.newData.segmentId) && e.newData.segmentId > 0;\r\n }\r\n\r\n this.cdr.detectChanges();\r\n };\r\n\r\n public dateEditorFormatter(date: Date): string {\r\n const gasDay = GasDay.from(date);\r\n return gasDay.toDisplayFormat();\r\n }\r\n\r\n public dateEditorParser(value: string): Date {\r\n try {\r\n return GasDay.parse(value).toDate;\r\n } catch (e) {\r\n return new Date(NaN);\r\n }\r\n }\r\n\r\n addRecord(): void {\r\n if (_.isNil(this.dataGrid) || _.isNil(this.dataGrid.instance)) return;\r\n\r\n this.alertService.clearMessages();\r\n this.model.isAdding = true;\r\n this.model.isEditingRowValid = false;\r\n this.dataGrid.instance.addRow();\r\n }\r\n\r\n shouldShowEditButton(availableCapacity: AvailableCapacity): boolean {\r\n if(!this.model.currentCycleStatus.isLaunched\r\n || this.model.currentCycleStatus.isScheduled\r\n || this.model.currentCycleStatus.isCapacityAllocationAuthorized()\r\n ) return false;\r\n\r\n if(availableCapacity.isReplaced) return false;\r\n\r\n return true;\r\n }\r\n\r\n canAddNewRow(): boolean {\r\n // check to see if the gas day cycle has been launched and not scheduled.\r\n if(!this.model.currentCycleStatus\r\n || !this.model.currentCycleStatus.isLaunched\r\n || this.model.currentCycleStatus.isScheduled\r\n || this.model.currentCycleStatus.isCapacityAllocationAuthorized()\r\n ) return false;\r\n\r\n return !this.model.isAdding && !this.model.isEditing && this.model.unassignedSegments.length > 0;\r\n }\r\n\r\n\r\n editClicked(cellInfo: any): void {\r\n this.appService.clearMessages();\r\n if(this.model.isEditing || this.model.isAdding) return; // this means we're already editing and shouldn't start again\r\n\r\n this.model.isEditingRowValid = true;\r\n this.model.isEditing = true;\r\n this.model.currentRowIndex = cellInfo.data.id;\r\n this.model.hasCalculatedDailyValue = false;\r\n\r\n cellInfo.data.isEditing = true;\r\n\r\n cellInfo.row.data.isEditing = true;\r\n cellInfo.component.editRow(cellInfo.rowIndex);\r\n\r\n setTimeout(() => {\r\n this.dataGrid.instance.editCell(cellInfo.rowIndex, \"currentCapacityFlowRate\");\r\n const field = this.dataGrid.instance.getCellElement(cellInfo.rowIndex, \"currentCapacityFlowRate\");\r\n DataGridHelpers.highlightCellElement(field);\r\n });\r\n }\r\n\r\n private clearEditMode(rowData: any): void {\r\n if (rowData != null){\r\n rowData.isEditing = false;\r\n }\r\n\r\n this.model.isAdding = false;\r\n this.model.isEditing = false;\r\n this.model.isEditingRowValid = true;\r\n this.model.hasCalculatedDailyValue = false;\r\n this.currentRowIndex = null;\r\n }\r\n\r\n public cancelClicked(cellInfo: any): void {\r\n this.alertService.clearMessages();\r\n this.clearEditMode(cellInfo);\r\n this.performSearch().subscribe(() => {\r\n });\r\n }\r\n\r\n public onInitNewRow(event: any): void {\r\n this.dataGrid.sorting.mode = 'none';\r\n const capacity = new AvailableCapacity();\r\n capacity.effectiveGasCycle = this.model.lastSearchParams.gasCycleCode;\r\n capacity.effectiveGasDay = this.model.lastSearchParams.gasDay;\r\n capacity.isReplaced = false;\r\n event.data = capacity;\r\n event.data.isEditing = true;\r\n }\r\n\r\n public onEditorPrepared(event: any) {\r\n if (event.parentType !== 'dataRow') {\r\n return;\r\n }\r\n this.currentRowIndex = event.row.rowIndex;\r\n let dxEditorInstance = null;\r\n switch (event.dataField) {\r\n case \"segmentId\":\r\n dxEditorInstance = dx(event.editorElement).dxSelectBox('instance');\r\n break;\r\n case \"currentCapacityFlowRate\":\r\n dxEditorInstance = dx(event.editorElement).dxNumberBox('instance');\r\n const numberFormat = event.dataField === \"capacityFlowRate\" ? '#' : 'fixedPoint'; // # prevents 0's\r\n dxEditorInstance.option('format', numberFormat); // ints only\r\n break;\r\n }\r\n if (dxEditorInstance) {\r\n dxEditorInstance.on('valueChanged', (vce) => {\r\n event.setValue(vce.value);\r\n event.component.getController('validating').validate().then((result: boolean) => {\r\n this.model.isEditingRowValid = result;\r\n });\r\n });\r\n this.editors[event.dataField] = dxEditorInstance;\r\n }\r\n }\r\n\r\n onEditorPreparing(e: any){\r\n const page = this;\r\n\r\n if (e.dataField === 'currentCapacityFlowRate') {\r\n // disable the enter key. it causes issues with the calc\r\n e.editorOptions.onKeyDown = (arg) => {\r\n if (arg.event.key === 'Enter') {\r\n arg.event.stopPropagation();\r\n }\r\n };\r\n\r\n e.editorOptions.onValueChanged = (_args) => {\r\n page.model.hasCalculatedDailyValue = false;\r\n\r\n if (_.isNil(e.row.data.segmentId)) {\r\n page.alertService.addErrorMessage(\"Error Calculating Daily Capacity\", \"Segment has not been set. Please set segment prior to calculating flow rate\");\r\n return;\r\n }\r\n\r\n page.recalculateDailyCapacity(page.model.lastSearchParams.gasDay, page.model.lastSearchParams.gasCycleCode, e.row.data)\r\n .subscribe((calculatedCapacity) => {\r\n page.model.hasCalculatedDailyValue = true;\r\n const cellElement = page.dataGrid.instance.getCellElement(e.row.rowIndex, \"currentCapacityQuantity\");\r\n e.row.data.currentCapacityQuantity = calculatedCapacity;\r\n\r\n cellElement.innerHTML = StringHelpers.toCommaFormattedNumber(calculatedCapacity);\r\n });\r\n };\r\n }\r\n\r\n if (e.dataField === 'segmentName') {\r\n e.editorOptions.onValueChanged = (args) => {\r\n const segment = page.getSegmentTypeFor(args.value);\r\n const cellElement = page.dataGrid.instance.getCellElement(e.row.rowIndex, \"segmentType\");\r\n\r\n e.row.data.segmentType = segment.segmentType;\r\n\r\n // force set these values. so the model is filled in properly\r\n e.row.data.segmentId = segment.id;\r\n e.row.data.segmentName = segment.segmentName;\r\n\r\n // set the actual cell value since the grid won't do it.\r\n cellElement.textContent = segment.segmentType;\r\n\r\n // clear any errors we added earlier\r\n page.alertService.clearMessages();\r\n };\r\n }\r\n }\r\n\r\n cellTemplateSegmentName(cellElement: HTMLElement, cellInfo){\r\n cellElement.innerHTML = cellInfo.data.segmentName;\r\n }\r\n\r\n cellTemplateCurrentCapacityQuantity(cellElement: HTMLElement, cellInfo){\r\n if(!_.isNil(cellInfo.data.currentCapacityQuantity)) cellElement.innerHTML = StringHelpers.toCommaFormattedNumber(cellInfo.data.currentCapacityQuantity);\r\n }\r\n\r\n private getSegmentTypeFor(segmentId: number) : AvailableSegment{\r\n const segment = _.find(this.model.unassignedSegments, {id: segmentId});\r\n if(_.isNil(segment)) return null;\r\n return segment;\r\n }\r\n\r\n public saveClicked(cellInfo: any): void {\r\n this.alertService.clearMessages();\r\n\r\n this.canUpdateSegment()\r\n .subscribe(canUpdateSegment => {\r\n if (canUpdateSegment) {\r\n this.dataGrid.instance\r\n .saveEditData()\r\n .then(() => {\r\n const capacityData = cellInfo.row.data as AvailableCapacity;\r\n // pull the latest recalculated daily capacity number (pull from the backend if needed)\r\n this.recalculateDailyCapacity(this.model.lastSearchParams.gasDay, this.model.lastSearchParams.gasCycleCode, capacityData)\r\n .pipe(\r\n concatMap(calculatedCapacity => {\r\n capacityData.currentCapacityQuantity = calculatedCapacity;\r\n return this.availableCapacityService.createOrUpdateAvailableCapacity(this.model.lastSearchParams.gasDay, this.model.lastSearchParams.gasCycleCode, capacityData);\r\n })\r\n )\r\n .subscribe((result => {\r\n this.performSearch().subscribe(() => {\r\n if (result.futureCapacityReplaced)\r\n this.alertService.addWarnMessage(\"\", result.message);\r\n });\r\n }));\r\n });\r\n } else {\r\n this.loadSearchResources()\r\n .pipe(\r\n flatMap(() => this.performSearch())\r\n )\r\n .subscribe(() => {\r\n this.alertService.addWarnMessage(\"\", \"Cycle is authorized or scheduled, update not allowed\");\r\n });\r\n }\r\n });\r\n }\r\n\r\n private canUpdateSegment(): Observable {\r\n return this.gasCycleService\r\n .getGasCycleStatus(this.model.lastSearchParams.gasDay, this.model.lastSearchParams.gasCycleCode)\r\n .pipe(\r\n concatMap(gasDayCycleStatus => {\r\n if (!gasDayCycleStatus.isScheduled && !gasDayCycleStatus.isCapacityAllocationAuthorized()) {\r\n return of(true);\r\n } else {\r\n return of(false);\r\n }\r\n })\r\n );\r\n }\r\n\r\n formatDateTime(obj: Date): string {\r\n return new DateTime(obj).toDisplayFormat();\r\n }\r\n\r\n clearMessages() {\r\n }\r\n\r\n private setCurrentGasCycleStatus() : void {\r\n const model = this.model;\r\n const currentCycleStatus = _.find(this.model.gasDayCycleStatuses, (x) => {\r\n return x.gasCycle.code === model.lastSearchParams.gasCycleCode;\r\n });\r\n if(!_.isNil(currentCycleStatus))\r\n this.model.currentCycleStatus = currentCycleStatus;\r\n }\r\n\r\n private recalculateDailyCapacity(gasDay: GasDay, gasCycleCode: string, capacityData: AvailableCapacity) : Observable {\r\n if (this.model.hasCalculatedDailyValue) {\r\n return of(capacityData.currentCapacityQuantity);\r\n } else {\r\n return this.availableCapacityService\r\n .calculateDailyCapacity(gasDay, gasCycleCode, capacityData)\r\n .pipe(\r\n concatMap((calculationResult) => of(calculationResult.calculatedCapacity))\r\n );\r\n }\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\nimport { CapacityAllocationTransactionDto, CapacityAllocationTransferDto, CapacityAllocationTransportationDto } from '@shared/services/nomination/capacity-allocation/capacity-allocation-summary.models';\r\n\r\nexport class AuthorizedQuantityTask {\r\n static isAuthorizedValueValidComparedToPrelimSqQty(authorizedQuantity: number, prelimSqQty: number): boolean {\r\n return (_.isNil(authorizedQuantity) || _.isNil(prelimSqQty)) ? true : authorizedQuantity <= prelimSqQty;\r\n }\r\n\r\n static checkAllAuthQuantitiesHaveBeenProvided(authorizedQuantities: CapacityAllocationTransactionDto[]): boolean {\r\n if (!this.hasAuthorizedQuantities(authorizedQuantities)) return true;\r\n return _.every(authorizedQuantities, x => {\r\n return _.isNumber((x as CapacityAllocationTransportationDto)?.flowRateAuthorizedTransport)\r\n || _.isNumber((x as CapacityAllocationTransferDto)?.flowRateAuthorized);\r\n });\r\n }\r\n\r\n static hasAuthorizedQuantities(authorizedQuantities: CapacityAllocationTransactionDto[]): boolean {\r\n return !((_.isNil(authorizedQuantities) || _.isEmpty(authorizedQuantities)));\r\n }\r\n}\r\n","import { Directive, EventEmitter, Input, Output, Renderer2, ViewChild } from '@angular/core';\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {CapacityAllocationSummaryModel} from \"app/gcts/nomination/capacity-allocation-summary/capacity-allocation-summary-model\";\r\nimport {DataGridHelpers} from \"@model/datagrid-helpers\";\r\nimport * as _ from 'lodash';\r\nimport {AuthorizedQuantityTask} from \"app/gcts/nomination/capacity-allocation-summary/authorized-quantity-task\";\r\n\r\n\r\n@Directive()\r\nexport abstract class BaseCapacitySummaryGrid {\r\n protected summaryCellStyle = 'summary-row-background-color';\r\n protected editCellStyle = \"editable-cell\";\r\n\r\n @Input() model: CapacityAllocationSummaryModel;\r\n @Output() onDataChanged = new EventEmitter();\r\n @ViewChild(DxDataGridComponent) capacityAllocationSummaryDataGrid: DxDataGridComponent;\r\n\r\n protected constructor(\r\n protected renderer: Renderer2) {\r\n }\r\n\r\n public onSummaryCellPrepared($event: any): void {\r\n if ($event.rowType === \"data\") {\r\n if ($event.column.dataField === 'flowRateAuthorizedTransport' || $event.column.dataField === 'flowRateAuthorized') {\r\n this.model.isReadOnly ? this.removeEditableCellStyle($event) : this.addEditableCellStyle($event);\r\n }} else\r\n if ($event.rowType === 'group') {\r\n this.renderer.addClass($event.cellElement, this.summaryCellStyle);\r\n }\r\n }\r\n\r\n public onRowUpdated(): void {\r\n this.modelDataChanged();\r\n }\r\n\r\n protected addEditableCellStyle(e: any): void {\r\n this.renderer.addClass(e.cellElement, this.editCellStyle);\r\n }\r\n\r\n protected removeEditableCellStyle(e: any): void {\r\n this.renderer.removeClass(e.cellElement, this.editCellStyle);\r\n }\r\n\r\n public onEditorPrepared = ($event: any): void => {\r\n this.renderer.addClass($event.editorElement, this.editCellStyle);\r\n };\r\n\r\n public onEditorPreparing = ($event: any): void => {\r\n DataGridHelpers.highlightCellOnFocus($event);\r\n\r\n if ($event.parentType !== 'dataRow') { return; }\r\n\r\n DataGridHelpers.filterOutArrowKeys($event);\r\n if ($event.dataField === 'flowRateAuthorizedTransport' || $event.dataField === 'flowRateAuthorized') {\r\n const currentValue = $event.editorOptions.value;\r\n $event.editorOptions.valueChangeEvent = 'input change';\r\n const nativeHandler = $event.editorOptions.onValueChanged;\r\n $event.editorOptions.onValueChanged = (e) => {\r\n nativeHandler(e);\r\n this.checkForValueChanging(e, $event, currentValue);\r\n };\r\n }\r\n\r\n this.tryToDisableEditing($event);\r\n }\r\n\r\n public onRowValidating($event: any): void {\r\n if (!!$event.newData && $event.brokenRules.length > 0) {\r\n this.model.hasValidationErrors = true;\r\n return;\r\n }\r\n\r\n this.model.hasValidationErrors = false;\r\n }\r\n\r\n validateAuthQtyLessThanOrEqualToPrelimSQFlow = ($event: any): boolean => {\r\n const key = $event.validator.option(\"validationGroup.key\");\r\n const grid = this.capacityAllocationSummaryDataGrid.instance; // Get the grid instance\r\n const rowOptions = grid.getVisibleRows()[grid.getRowIndexByKey(key)];\r\n\r\n const authorizedValue = _.isNil($event.value) ? undefined : +$event.value;\r\n const prelimSchedQty = rowOptions.data['prelimSchedQtyFlowRate'];\r\n\r\n const isValid = AuthorizedQuantityTask.isAuthorizedValueValidComparedToPrelimSqQty(authorizedValue, prelimSchedQty);\r\n\r\n if (isValid) { return true; }\r\n\r\n $event.rule.message = `Authorized Quantity cannot be greater than Preliminary SQ Quantity of ${prelimSchedQty}.`;\r\n return false;\r\n };\r\n\r\n public authQtyCannotBeBlank(e): boolean {\r\n return !_.isNil(e.value);\r\n\r\n }\r\n\r\n public authQtyMustBeInteger(e): boolean {\r\n return e.value % 1 === 0;\r\n }\r\n\r\n checkForValueChanging(inputEvent: any, editorPreparedEvent: any, oldValue: any): void {\r\n const newValue = inputEvent.component.option(\"value\");\r\n if (oldValue !== newValue) this.model.modelDirty = true;\r\n }\r\n\r\n protected tryToDisableEditing($event: any): void {\r\n if (this.model.isReadOnly) {\r\n $event.editorOptions.disabled = true;\r\n $event.cancel = true;\r\n return;\r\n }\r\n }\r\n\r\n protected modelDataChanged(): void {\r\n this.onDataChanged.emit();\r\n }\r\n}\r\n","
\r\n
\r\n Number of transportation transactions found: {{model.searchResultsCount}}\r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n Totals:\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n Nom
Cycle\r\n
\r\n
\r\n Package
Id\r\n
\r\n
\r\n Primary
Receipt\r\n
\r\n
\r\n Nominated
Receipt\r\n
\r\n
\r\n Primary
Delivery\r\n
\r\n
\r\n Nominated
Delivery\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n // quirk in dev express causes the last column to be set to auto-width despite setting the width - causing it to disappear in this case\r\n // work around is to add a dummy column at end of grid\r\n \r\n \r\n\r\n
\r\n Path
Rank\r\n
\r\n
\r\n Prelim
Fuel SQ\r\n
\r\n
\r\n Authorized
Transport\r\n
\r\n\r\n
\r\n Authorized
Fuel\r\n
\r\n
\r\n Calculated
Transport\r\n
\r\n
\r\n Calculated
Fuel\r\n
\r\n\r\n\r\n
\r\n {{data.value ? 'Y' : 'N'}}\r\n
\r\n\r\n \r\n
\r\n","import {from} from 'rxjs';\r\nimport { Component, Input, Renderer2 } from '@angular/core';\r\nimport {\r\n BaseCapacitySummaryGrid\r\n} from \"app/gcts/nomination/capacity-allocation-summary/base-capacity-allocation-summary-grid.component\";\r\nimport {\r\n CapacityAllocationSummaryGrid\r\n} from \"app/gcts/nomination/capacity-allocation-summary/capacity-allocation-summary-grid\";\r\n\r\n@Component({\r\n selector: 'app-transportation-capacity-allocation-summary-grid',\r\n templateUrl: './transportation-capacity-allocation-summary-grid.component.html',\r\n styleUrls: ['./transportation-capacity-allocation-summary-grid.component.css']\r\n})\r\nexport class TransportationCapacityAllocationSummaryGridComponent extends BaseCapacitySummaryGrid implements CapacityAllocationSummaryGrid {\r\n\r\n constructor(\r\n renderer: Renderer2) {\r\n super(renderer);\r\n }\r\n\r\n saveEditData(): void {\r\n if (this.capacityAllocationSummaryDataGrid) from(this.capacityAllocationSummaryDataGrid.instance.saveEditData());\r\n }\r\n}\r\n","
\r\n
\r\n Number of non-transportation transactions found: {{transactions.length}}\r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n Totals:\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n Nom
Cycle\r\n
\r\n
\r\n Package
Id\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n // quirk in dev express causes the lat column to be set to auto-width despite setting the width - causing it to disappear in this case\r\n // work around is to add a dummy column at end of grid\r\n \r\n \r\n\r\n \r\n
\r\n","import {from} from 'rxjs';\r\nimport { Component, Input, Renderer2 } from '@angular/core';\r\nimport {\r\n BaseCapacitySummaryGrid\r\n} from \"app/gcts/nomination/capacity-allocation-summary/base-capacity-allocation-summary-grid.component\";\r\nimport {\r\n CapacityAllocationSummaryGrid\r\n} from \"app/gcts/nomination/capacity-allocation-summary/capacity-allocation-summary-grid\";\r\nimport { CapacityAllocationTransferDto } from '@shared/services/nomination/capacity-allocation/capacity-allocation-summary.models';\r\n\r\n@Component({\r\n selector: 'app-transfer-capacity-allocation-summary-grid',\r\n templateUrl: './transfer-capacity-allocation-summary-grid.component.html',\r\n styleUrls: ['./transfer-capacity-allocation-summary-grid.component.css']\r\n})\r\nexport class TransferCapacityAllocationSummaryGridComponent extends BaseCapacitySummaryGrid implements CapacityAllocationSummaryGrid {\r\n\r\n @Input() transactions: CapacityAllocationTransferDto[];\r\n\r\n constructor(\r\n renderer: Renderer2) {\r\n super(renderer);\r\n }\r\n\r\n saveEditData(): void {\r\n if (this.capacityAllocationSummaryDataGrid) from(this.capacityAllocationSummaryDataGrid.instance.saveEditData());\r\n }\r\n}\r\n","
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n","import * as _ from 'lodash';\r\nimport { Component, Input, EventEmitter, Output, OnInit, ViewChild } from '@angular/core';\r\nimport {CapacityAllocationSummaryModel} from \"app/gcts/nomination/capacity-allocation-summary/capacity-allocation-summary-model\";\r\nimport { DxTabPanelComponent } from 'devextreme-angular';\r\nimport {\r\n CapacityAllocationSummaryGrid\r\n} from \"app/gcts/nomination/capacity-allocation-summary/capacity-allocation-summary-grid\";\r\n\r\n@Component({\r\n selector: 'app-capacity-allocation-summary-tab-view',\r\n templateUrl: './capacity-allocation-summary-tab-view.component.html',\r\n styleUrls: ['./capacity-allocation-summary-tab-view.component.css']\r\n})\r\nexport class CapacityAllocationSummaryTabViewComponent implements OnInit {\r\n\r\n public static transportationTabLabel: string = \"Transportation\";\r\n public static nonTransportationReceiptTabLabel: string = \"Non Transportation Receipt\";\r\n public static nonTransportationDeliveryTabLabel: string = \"Non Transportation Delivery\";\r\n\r\n @Input() data: CapacityAllocationSummaryModel;\r\n @Output() onDataChanged = new EventEmitter();\r\n\r\n // TODO verify if we will need to add OnDataChanged event emitter to pass changes back in future story\r\n // if so, refer to Transportation Summary page for examples\r\n @ViewChild(DxTabPanelComponent) tabPanel: DxTabPanelComponent;\r\n @ViewChild('TransportationCapacityAllocationDataGrid') transportationCapacityAllocationDataGrid: CapacityAllocationSummaryGrid;\r\n @ViewChild('NonTransportationReceiptCapacityAllocationDataGrid') transferReceiptCapacityAllocationDataGrid: CapacityAllocationSummaryGrid;\r\n @ViewChild('NonTransportationDeliveryCapacityAllocationDataGrid') transferDeliveryCapacityAllocationDataGrid: CapacityAllocationSummaryGrid;\r\n\r\n\r\n tabs: Array;\r\n\r\n readonly availableTabs = [\r\n {id: 0, title: CapacityAllocationSummaryTabViewComponent.transportationTabLabel, template: \"template1\", getCurrentGrid: this.getTransportationCapacityAllocationDataGrid},\r\n {id: 1, title: CapacityAllocationSummaryTabViewComponent.nonTransportationReceiptTabLabel, template: \"template2\", getCurrentGrid: this.getTransferReceiptCapacityAllocationDataGrid},\r\n {id: 2, title: CapacityAllocationSummaryTabViewComponent.nonTransportationDeliveryTabLabel, template: \"template3\", getCurrentGrid: this.getTransferDeliveryCapacityAllocationDataGrid}\r\n ];\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n this.tabs = _.clone(this.availableTabs);\r\n }\r\n\r\n public getTransportationCapacityAllocationDataGrid(invoker) {\r\n return invoker.transportationCapacityAllocationDataGrid;\r\n }\r\n\r\n public getTransferReceiptCapacityAllocationDataGrid(invoker) {\r\n return invoker.transferReceiptCapacityAllocationDataGrid;\r\n }\r\n\r\n public getTransferDeliveryCapacityAllocationDataGrid(invoker) {\r\n return invoker.transferDeliveryCapacityAllocationDataGrid;\r\n }\r\n\r\n public setTabIndex(e: any): void {\r\n this.data.activeNomTabIndex = this.tabPanel.selectedIndex;\r\n }\r\n\r\n public onTabDataChanged(): void {\r\n this.onDataChanged.emit();\r\n }\r\n\r\n public saveEditData = () => this.executeActionOnAllTabs(this.saveEditDataAction);\r\n\r\n public saveEditDataAction = (grid: CapacityAllocationSummaryGrid) => grid.saveEditData();\r\n\r\n private executeActionOnAllTabs(action: any) {\r\n // Stamp the current context, so that this doesn't change into something else in the forEach\r\n _.forEach(this.availableTabs, tab => {\r\n const gridReference = tab.getCurrentGrid(this);\r\n // ViewChild will not be present if the tab has not been clicked on yet, so\r\n // value may be null\r\n if (!_.isNil(gridReference)) {\r\n action(gridReference);\r\n }\r\n });\r\n }\r\n}\r\n","import {GasDay} from \"app/shared/classes/gas-day\";\r\n\r\nexport class CapacityAllocationSummaryDto {\r\n details: CapacityAllocationTransactionDto[];\r\n gasDayCycleStatus: string;\r\n\r\n lastModByUserId: string;\r\n lastModDateTime: string;\r\n queryDateTime: Date;\r\n}\r\n\r\nexport interface CapacityAllocationTransactionDto {\r\n transactionId: number;\r\n customerId: number;\r\n transactionType: string;\r\n cycleCode: string;\r\n packageId: string;\r\n prelimSchedQtyFlowRate: number;\r\n prelimSchedQty: number;\r\n scheduledEpsq: number;\r\n previousSchedQtyFlowRate: number | null;\r\n previousSchedQty: number | null;\r\n flowRateSchedQtyChange: number | null;\r\n dailyQuantitySchedQtyChange: number | null;\r\n}\r\n\r\nexport interface CapacityAllocationTransportationDto extends CapacityAllocationTransactionDto {\r\n customerAccountId: number;\r\n nominationGroup: number;\r\n anchorRights: boolean | null;\r\n typeOfService: string;\r\n serviceOption: string;\r\n fullTypeOfService: string;\r\n zeroTaxRated: boolean;\r\n transportRank: number;\r\n primaryReceiptLocationId: number;\r\n receiptLocationId: number;\r\n primaryDeliveryLocationId: number;\r\n deliveryLocationId: number;\r\n prelimFuelSchedQtyFlowRate: number;\r\n prelimFuelSchedQty: number;\r\n\r\n // calculated fields\r\n flowRateCalculatedTransport: number;\r\n flowRateCalculatedFuel: number;\r\n flowRateAuthorizedTransport: number;\r\n flowRateVariance: number;\r\n flowRatePctAuthorized: number;\r\n dailyQuantityAuthorizedTransport: number;\r\n dailyQuantityAuthorizedFuel: number;\r\n dailyQuantityVariance: number;\r\n}\r\n\r\nexport interface CapacityAllocationTransferDto extends CapacityAllocationTransactionDto {\r\n isReceipt: boolean;\r\n nominationGroup: number;\r\n rank: number;\r\n locationId: number;\r\n flowRateAuthorized: number | null;\r\n dailyQuantityAuthorized: number | null;\r\n\r\n // calculated fields\r\n flowRateVariance: number | null;\r\n flowRatePctAuthorized: number | null;\r\n dailyQuantityVariance: number | null;\r\n}\r\n\r\nexport class CapacityAllocationSummaryRequest{\r\n public pipeline: string;\r\n public gasDay: GasDay;\r\n public gasCycleCode: string;\r\n}\r\n","import {GasDayCycleStatusCollection} from \"@model/gas-day-cycle-status-collection\";\r\nimport { GasCycle } from \"@model/gas-cycle\";\r\nimport {NominationPipelineGasDay} from \"@model/nomination-pipeline-gas-day\";\r\nimport {NominationPipeline} from \"@model/nomination-pipeline\";\r\nimport {SimpleGasDayCycleStatus} from \"@model/simple-gas-day-cycle-status\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport { CapacityAllocationTransferDto, CapacityAllocationTransportationDto } from \"@shared/services/nomination/capacity-allocation/capacity-allocation-summary.models\";\r\n\r\nexport class CapacityAllocationSummarySearchParams {\r\n public gasDay: GasDay;\r\n public gasCycleCode: string;\r\n public numberOfRowsAffected: number;\r\n}\r\n\r\n\r\n\r\nexport class CapacityAllocationSummaryModel {\r\n public searchParams : CapacityAllocationSummarySearchParams = new CapacityAllocationSummarySearchParams();\r\n public lastSearchParams : CapacityAllocationSummarySearchParams = new CapacityAllocationSummarySearchParams();\r\n public searchHasBeenPerformed: boolean;\r\n public showFilters: boolean = true;\r\n public gasDayCycleStatuses: GasDayCycleStatusCollection;\r\n public gasCycles: GasCycle[];\r\n public launchedGasCycles: GasCycle[];\r\n\r\n public transportationSearchResults: CapacityAllocationTransportationDto[];\r\n public transferDeliverySearchResults: CapacityAllocationTransferDto[];\r\n public transferReceiptSearchResults: CapacityAllocationTransferDto[];\r\n\r\n public pipelineGasDay: NominationPipelineGasDay;\r\n public gasDay: GasDay;\r\n public minGasDay: GasDay;\r\n public maxGasDay: GasDay;\r\n public modelDirty: boolean;\r\n public hasValidationErrors: boolean;\r\n public haveAllAuthorizedValuesBeenFilledIn: boolean;\r\n\r\n public isAuthorizedDataValid: boolean;\r\n public isReadOnly: boolean;\r\n\r\n public activeNomTabIndex: number = 0;\r\n\r\n public gasCycleStatus: string;\r\n public capacityAllocationStatus: string;\r\n public pipeline: NominationPipeline;\r\n public queryDateTime: Date;\r\n public searchResultsCount: number;\r\n public currentCycleStatus: SimpleGasDayCycleStatus;\r\n\r\n\r\n public clearSearchResults() : void {\r\n this.transportationSearchResults = undefined;\r\n this.transferDeliverySearchResults = undefined;\r\n this.transferReceiptSearchResults = undefined;\r\n this.searchHasBeenPerformed = false;\r\n this.searchResultsCount = 0;\r\n this.searchParams = new CapacityAllocationSummarySearchParams();\r\n this.lastSearchParams = new CapacityAllocationSummarySearchParams();\r\n }\r\n\r\n public selectDefaultGasDay() : GasDay {\r\n return this.pipelineGasDay.actualGasDay < this.pipelineGasDay.earliestSelectableGasDay ? this.pipelineGasDay.earliestSelectableGasDay : this.pipelineGasDay.actualGasDay;\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport {NominationResourceService} from \"@shared/resources/nominations-resource.service\";\r\nimport {NominationSystemService} from \"@shared/services/nomination/nomination-system/nomination-system.service\";\r\nimport { Observable } from \"rxjs\";\r\nimport {\r\n AuthorizeDailyTransportationTransactionsRequest\r\n} from \"@shared/services/nomination/nomination-transaction/nomination-transaction.models\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport { AuthorizeDailyTransferTransactionsRequest } from \"../nomination-transaction/nomination-transaction.models\";\r\nimport { CapacityAllocationSummaryRequest, CapacityAllocationSummaryDto } from \"./capacity-allocation-summary.models\";\r\nimport {CapacityAllocationDetailData} from \"app/gcts/nomination/capacity-allocation-details/capacity-allocation-details.model\";\r\n\r\n@Injectable()\r\nexport class CapacityAllocationSummaryService{\r\n\r\n constructor(private nominationResource: NominationResourceService,\r\n private nominationSystemService: NominationSystemService) {\r\n }\r\n\r\n queryTransportationCapacityAllocationSummaries(searchRequest: CapacityAllocationSummaryRequest) : Observable {\r\n const params = this.setUrlSearchParamsForTransportationOrTransferSummary(searchRequest);\r\n return this.nominationResource.get('/capacityallocationsummary/transportation', true, params);\r\n }\r\n\r\n queryTransferCapacityAllocationSummaries(searchRequest: CapacityAllocationSummaryRequest) : Observable {\r\n const params = this.setUrlSearchParamsForTransportationOrTransferSummary(searchRequest);\r\n return this.nominationResource.get('/capacityallocationsummary/transfer', true, params);\r\n }\r\n\r\n //note: using the same request as the search as they are the same\r\n authorizeCapacityAllocation(authorizeRequest: CapacityAllocationSummaryRequest) : Observable {\r\n const body = {\r\n pipeline: authorizeRequest.pipeline,\r\n gasCycleCode: authorizeRequest.gasCycleCode,\r\n gasDay: authorizeRequest.gasDay.toString()\r\n };\r\n\r\n return this.nominationResource.post(\"/capacityallocationsummary/authorizecapacityallocation\", body);\r\n }\r\n\r\n authorizeTransportationTransactions(authorizeTransportationTransactionsRequest: AuthorizeDailyTransportationTransactionsRequest) : Observable {\r\n return this.nominationResource.post('/capacityallocationsummary/authorizedtransportationtransactions', authorizeTransportationTransactionsRequest);\r\n }\r\n\r\n authorizeTransferTransactions(authorizeTransferTransactionsRequest: AuthorizeDailyTransferTransactionsRequest): Observable {\r\n return this.nominationResource.post('/capacityallocationsummary/authorizedtransfertransactions', authorizeTransferTransactionsRequest);\r\n }\r\n\r\n queryCapacityAllocationDetails(searchRequest: CapacityAllocationSummaryRequest) : Observable {\r\n const params = this.setUrlSearchParamsForTransportationOrTransferSummary(searchRequest);\r\n return this.nominationResource.get( '/capacityallocationsummary/detail', true, params);\r\n }\r\n\r\n /**\r\n * Private methods\r\n */\r\n private setUrlSearchParamsForTransportationOrTransferSummary(searchParams: CapacityAllocationSummaryRequest): GCTSHttpParams {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n if (searchParams.gasDay != null) {\r\n params.set('gasDay', searchParams.gasDay.toString());\r\n }\r\n if (searchParams.gasCycleCode != null) {\r\n params.set('gasCycleCode', searchParams.gasCycleCode);\r\n }\r\n return params;\r\n }\r\n\r\n\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n - Filters\r\n + Filters\r\n \r\n :\r\n Gas Day: {{model.lastSearchParams?.gasDay | gasDayFormat}}\r\n Cycle (CCT): {{model.lastSearchParams?.gasCycleCode | displayName: 'code' : 'displayValue' : model.gasCycles : 'EOD' }}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.gasDay | gasDayFormat }}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.gasCycleCode | displayName: 'code' : 'displayValue' : model.gasCycles : 'EOD' }}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.currentCycleStatus?.status}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.currentCycleStatus?.capacityAllocationStatus}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n","import { Component, ViewChild } from '@angular/core';\r\nimport {ActivatedRoute, Params, Router } from '@angular/router';\r\n\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {GasDayCycleStatusCollection} from \"@model/gas-day-cycle-status-collection\";\r\nimport {CapacityAllocationSummaryService} from \"@shared/services/nomination/capacity-allocation/capacity-allocation-summary-service\";\r\nimport {forkJoin, Observable, of } from 'rxjs';\r\nimport {concatMap, tap } from 'rxjs/operators';\r\nimport {NominationSystemService} from \"@shared/services/nomination/nomination-system/nomination-system.service\";\r\nimport * as _ from 'lodash';\r\nimport {GasCycleService} from \"@shared/services/nomination/gas-cycle/gas-cycle.service\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\n\r\nimport {NominationPipelineGasDay} from \"@model/nomination-pipeline-gas-day\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {GasCycle} from \"@model/gas-cycle\";\r\nimport {GasDaySearchResourceTracker} from \"@model/gas-day-search-resource-tracker\";\r\nimport {GasCycleLogic} from \"@model/gas-cycle.logic\";\r\nimport {NominationLocationEnrichmentService} from \"@shared/services/nomination/nomination-location-enrichment/nomination-location-enrichment.service\";\r\nimport {NominationEnterpriseEnrichmentService} from \"@shared/services/nomination/nomination-enterprise-enrichment/nomination-enterprise-enrichment.service\";\r\nimport {NominationNomGroupEnrichmentService} from \"@shared/services/nomination/nomination-nom-group-enrichment/nomination-nom-group-enrichment.service\";\r\nimport {GctsProcess} from \"@model/gcts-process\";\r\nimport {JobService} from \"@shared/services/job-scheduling/jobs/job.service\";\r\nimport {CapacityAllocationStatus, SimpleGasDayCycleStatus} from \"@model/simple-gas-day-cycle-status\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {EditableSearchComponent} from \"@model/editable-search-component\";\r\nimport {ModalOptions} from \"@shared/services/webapp/modal-options/modal-options\";\r\nimport {YesNoCancelModalService} from \"@shared/services/webapp/yes-no-cancel-modal/yes-no-cancel-modal.service\";\r\nimport {AuthorizedQuantityTask} from \"app/gcts/nomination/capacity-allocation-summary/authorized-quantity-task\";\r\nimport {\r\n CapacityAllocationSummaryTabViewComponent\r\n} from \"app/gcts/nomination/capacity-allocation-summary/capacity-allocation-summary-tab-view/capacity-allocation-summary-tab-view.component\";\r\nimport {\r\n AuthorizeDailyTransportationTransactionsData,\r\n AuthorizeDailyTransportationTransactionsRequest,\r\n} from \"@shared/services/nomination/nomination-transaction/nomination-transaction.models\";\r\nimport { AuthorizeDailyTransferTransactionsData, AuthorizeDailyTransferTransactionsRequest } from '@shared/services/nomination/nomination-transaction/nomination-transaction.models';\r\nimport {\r\n CapacityAllocationSummaryDto,\r\n CapacityAllocationSummaryRequest,\r\n CapacityAllocationTransferDto,\r\n CapacityAllocationTransportationDto\r\n} from '@shared/services/nomination/capacity-allocation/capacity-allocation-summary.models';\r\nimport { CapacityAllocationSummaryModel } from './capacity-allocation-summary-model';\r\nimport {GasDayCycleStatus} from \"@model/gas-day-cycle-status\";\r\nimport {GasDay} from \"@model/gas-day\";\r\n\r\n\r\n@Component({\r\n selector: 'app-capacity-allocation-summary',\r\n templateUrl: './capacity-allocation-summary.component.html',\r\n styleUrls: ['./capacity-allocation-summary.component.css']\r\n})\r\nexport class CapacityAllocationSummaryComponent extends EditableSearchComponent {\r\n\r\n public model: CapacityAllocationSummaryModel = new CapacityAllocationSummaryModel();\r\n private gasDayTracker: GasDaySearchResourceTracker = new GasDaySearchResourceTracker();\r\n private typedParamsSet = false;\r\n private submitting = false;\r\n\r\n @ViewChild(CapacityAllocationSummaryTabViewComponent) tabs: CapacityAllocationSummaryTabViewComponent;\r\n\r\n constructor(protected appService: AppService,\r\n protected activatedRoute: ActivatedRoute,\r\n protected router: Router,\r\n protected alertService: AlertService,\r\n protected modalService: YesNoCancelModalService,\r\n private capacityAllocationSummaryService: CapacityAllocationSummaryService,\r\n private nominationSystemService: NominationSystemService,\r\n private nominationLocationEnrichmentService: NominationLocationEnrichmentService,\r\n private nominationEnterpriseEnrichmentService: NominationEnterpriseEnrichmentService,\r\n private nominationNomGroupEnrichmentService: NominationNomGroupEnrichmentService,\r\n private gasCycleService: GasCycleService,\r\n private sessionService: SessionService,\r\n private jobService: JobService,\r\n private fileService: FileService) {\r\n super('Capacity Allocation Summary', appService, activatedRoute, router, alertService);\r\n }\r\n\r\n /* events */\r\n public initiateClicked(): void{\r\n this.alertService.clearMessages();\r\n this.jobService.submitJob(GctsProcess.Nominations.name, 'InitiateCapacityAllocationJob', null, this.model.searchParams.gasDay, this.model.searchParams.gasCycleCode)\r\n .subscribe(() => {\r\n const message = 'The job Initiate Capacity Allocation has been successfully submitted.';\r\n this.alertService.addSuccessMessage('Submit Successful', message);\r\n this.model.currentCycleStatus.capacityAllocationStatus = CapacityAllocationStatus.Initiating;\r\n });\r\n }\r\n\r\n hasUnsavedChanges(): boolean {\r\n return this.model.modelDirty || this.model.hasValidationErrors;\r\n }\r\n\r\n getDefaultChangesWillBeLostMessageOptions(): ModalOptions {\r\n return YesNoCancelModalService.getDefaultYesNoModalOptions();\r\n }\r\n\r\n navigationCancelled(): void {\r\n }\r\n\r\n public onEditorPrepared(event: any) {\r\n if (event.parentType !== 'dataRow') {\r\n return;\r\n }\r\n }\r\n\r\n public calculateClicked() : void {\r\n this.alertService.clearMessages();\r\n\r\n this.confirmCanRunCalculateAllocationJob()\r\n .pipe(\r\n concatMap((okToRun) => {\r\n if (okToRun) {\r\n return this.jobService\r\n .submitJob(GctsProcess.Nominations.name, 'CalculateCapacityAllocationJob', null, this.model.searchParams.gasDay, this.model.searchParams.gasCycleCode)\r\n .pipe(\r\n concatMap(() => of(true))\r\n );\r\n } else {\r\n return of(false);\r\n }\r\n })\r\n )\r\n .subscribe((result) => {\r\n this.handleResult(result, 'Calculate', CapacityAllocationStatus.Calculating);\r\n }\r\n );\r\n }\r\n\r\n private confirmCanRunCalculateAllocationJob() : Observable {\r\n return this.gasCycleService.queryGasDayCycleStatusesFor(this.model.searchParams.gasDay)\r\n .pipe(\r\n concatMap(statuses => {\r\n const capAllocStatus = _.filter(statuses, s => s.gasCycle.code === this.model.searchParams.gasCycleCode).map(s => s.capacityAllocationStatus);\r\n if (capAllocStatus[0] === CapacityAllocationStatus.InitiateRequired) {\r\n return of(false);\r\n } else {\r\n return of(true);\r\n }\r\n })\r\n );\r\n }\r\n\r\n public authorizeClicked() : void{\r\n this.gasCycleService.queryGasDayCycleStatusesFor(this.model.searchParams.gasDay)\r\n .pipe(\r\n concatMap(statuses => {\r\n const capAllocStatus = _.filter(statuses, s => s.gasCycle.code === this.model.searchParams.gasCycleCode).map(s => s.capacityAllocationStatus);\r\n if (capAllocStatus[0] === CapacityAllocationStatus.InitiateRequired) {\r\n return of(false);\r\n }\r\n else {\r\n this.authorizeCapacityAllocation();\r\n return of(true);\r\n }\r\n }\r\n )\r\n )\r\n .subscribe((result) => {\r\n this.handleResult(result, 'Authorize', CapacityAllocationStatus.Authorized, false);\r\n }\r\n );\r\n }\r\n\r\n public resendClicked() :void{\r\n this.authorizeCapacityAllocation();\r\n }\r\n\r\n private authorizeCapacityAllocation(){\r\n this.alertService.clearMessages();\r\n const authorizationRequest = this.buildSearchRequest(null, null, true);\r\n\r\n this.capacityAllocationSummaryService.authorizeCapacityAllocation(authorizationRequest).subscribe((numberOfRecordsUpdated) => {\r\n // need to reload the drop down as there will now be new values in there.\r\n this.loadSearchResources().subscribe(() => {\r\n this.alertService.addSuccessMessage('Success', `${numberOfRecordsUpdated} record(s) passed to Nominations.`);\r\n this.model.currentCycleStatus.capacityAllocationStatus = CapacityAllocationStatus.Authorized;\r\n this.model.isReadOnly = true;\r\n });\r\n });\r\n }\r\n\r\n private handleResult(result, action: string, newStatus: string, isJob: boolean = true) : void{\r\n if (result === false) {\r\n const message = `${action} not allowed when the capacity allocation status is Initiate Required`;\r\n this.alertService.addErrorMessage('Submit Failed', message);\r\n this.model.currentCycleStatus.capacityAllocationStatus = CapacityAllocationStatus.InitiateRequired;\r\n }\r\n else {\r\n\r\n // these aren't required in all cases.\r\n if(!isJob) return;\r\n\r\n const message = `The job ${action} Capacity Allocation has been successfully submitted.`;\r\n this.alertService.addSuccessMessage('Submit Successful', message);\r\n this.model.currentCycleStatus.capacityAllocationStatus = newStatus;\r\n }\r\n }\r\n\r\n public csvClicked() : void{\r\n const csvData = [];\r\n\r\n if (this.model.activeNomTabIndex === 0) {\r\n const csvOrderedData = _.orderBy(this.model.transportationSearchResults, ['customerMnemonic', 'nominationGroup', 'nominatedReceiptLocationName', 'nominatedDeliveryLocationName'], ['asc', 'asc', 'asc', 'asc']);\r\n\r\n for (const row of csvOrderedData) {\r\n csvData.push({\r\n customer: row['customerMnemonic'],\r\n account: row['nominationGroup'],\r\n anchorShipper: row['anchorRights'],\r\n tos: row['fullTypeOfService'],\r\n nomCycle: row.cycleCode,\r\n packageId: row.packageId,\r\n pathRank: row.transportRank,\r\n primaryReceipt: row[\"primaryReceiptLocationName\"],\r\n nominatedReceipt: row[\"nominatedReceiptLocationName\"],\r\n primaryDelivery: row['primaryDeliveryLocationName'],\r\n nominatedDelivery: row[\"nominatedDeliveryLocationName\"],\r\n flowRatePrelimSq: row.prelimSchedQtyFlowRate,\r\n flowRatePrelimFuelSq: row.prelimFuelSchedQtyFlowRate,\r\n flowRatePreviousSq: row.previousSchedQtyFlowRate,\r\n flowRateSchedQtyChange: row.flowRateSchedQtyChange,\r\n flowRateCalculatedTransport: row.flowRateCalculatedTransport,\r\n flowRateCalculatedFuel: row.flowRateCalculatedFuel,\r\n flowRateAuthorizedTransport: row.flowRateAuthorizedTransport,\r\n flowRateVariance: row.flowRateVariance,\r\n flowRatePctAuth: row.flowRatePctAuthorized == null ? null : row.flowRatePctAuthorized.toFixed(1),\r\n dailyAuthorizedTransport: row.dailyQuantityAuthorizedTransport,\r\n dailyAuthorizedFuel: row.dailyQuantityAuthorizedFuel,\r\n dailyPrelimSq: row.prelimSchedQty,\r\n dailyPrelimFuelSq: row.prelimFuelSchedQty,\r\n dailyQuantitySchedQtyChange: row.dailyQuantitySchedQtyChange,\r\n dailyVariance: row.dailyQuantityVariance,\r\n dailyPreviousSq: row.previousSchedQty,\r\n epsq: row.scheduledEpsq\r\n });\r\n }\r\n\r\n const filename = `CapacityAllocationSummary_Transport_${this.model.lastSearchParams.gasDay.toDisplayFormat()}_${this.model.lastSearchParams.gasCycleCode}.csv`;\r\n const headers = this.GenerateTransportationCsvHeader();\r\n const columns = this.GenerateTransportationCsvColumns();\r\n\r\n this.fileService.downloadCsvFile(filename, csvData, headers, columns);\r\n }\r\n else if (this.model.activeNomTabIndex === 1 || this.model.activeNomTabIndex === 2) {\r\n\r\n const csvOrderedData = _.orderBy((this.model.activeNomTabIndex === 1) ? this.model.transferReceiptSearchResults : this.model.transferDeliverySearchResults,\r\n ['customerMnemonic', 'nominationGroup', 'nominatedReceiptLocationName', 'nominatedDeliveryLocationName'], ['asc', 'asc', 'asc', 'asc']);\r\n\r\n for (const row of csvOrderedData) {\r\n csvData.push({\r\n customer: row['customerMnemonic'],\r\n account: row['accountMnemonic'],\r\n transactionType: row['transactionType'],\r\n nomCycle: row.cycleCode,\r\n packageId: row.packageId,\r\n rank: row.rank,\r\n locationName: row[\"locationName\"],\r\n flowRatePrelimSq: row.prelimSchedQtyFlowRate,\r\n flowRatePreviousSq: row.previousSchedQtyFlowRate,\r\n flowRateSchedQtyChange: row.flowRateSchedQtyChange,\r\n flowRateAuthorized: row.flowRateAuthorized,\r\n flowRateVariance: row.flowRateVariance,\r\n flowRatePctAuthorized: row.flowRatePctAuthorized,\r\n dailyPrelimSq: row.prelimSchedQty,\r\n dailyQuantitySchedQtyChange: row.dailyQuantitySchedQtyChange,\r\n dailyQuantityAuthorized: row.dailyQuantityAuthorized,\r\n dailyQuantityVariance: row.dailyQuantityVariance,\r\n dailyPreviousSq: row.previousSchedQty,\r\n epsq: row.scheduledEpsq\r\n });\r\n }\r\n\r\n const filename = `CapacityAllocationSummary_Non_Transport_${this.model.activeNomTabIndex === 1 ? \"Receipt\" : \"Delivery\"}_${this.model.lastSearchParams.gasDay.toDisplayFormat()}_${this.model.lastSearchParams.gasCycleCode}.csv`;\r\n const headers = this.GenerateTransferCsvHeader();\r\n const columns = this.GenerateTransferCsvColumns();\r\n\r\n this.fileService.downloadCsvFile(filename, csvData, headers, columns);\r\n }\r\n }\r\n\r\n private GenerateTransportationCsvHeader() : string[] {\r\n return ['Cust', 'Acct', 'Anch', 'TOS', 'Nom Cycle','Package Id', 'Path Rank', 'Primary Receipt', 'Nominated Receipt', 'Primary Delivery', 'Nominated Delivery',\r\n 'Flow Rate Prelim SQ', 'Flow Rate Prelim Fuel SQ', 'Flow Rate Previous SQ', 'Flow Rate SQ Change', 'Flow Rate Calculated Transport', 'Flow Rate Calculated Fuel',\r\n 'Flow Rate Authorized Transport', 'Flow Rate Variance', 'Flow Rate % Auth', 'Authorized Transport', 'Authorized Fuel', 'Prelim SQ', 'Prelim Fuel SQ', 'SQ Change',\r\n 'Variance', 'Previous SQ', 'EPSQ'];\r\n }\r\n\r\n private GenerateTransferCsvHeader() : string[] {\r\n return ['Cust', 'Acct', 'Txn Type', 'Nom Cycle','Package Id', 'Rank', 'Location',\r\n 'Flow Rate Prelim SQ', 'Flow Rate Previous SQ', 'Flow Rate SQ Change', 'Flow Rate Authorized', 'Flow Rate Variance', 'Flow Rate % Auth',\r\n 'Prelim SQ', 'SQ Change', 'Authorized', 'Variance', 'Previous SQ', 'EPSQ'];\r\n }\r\n\r\n private GenerateTransportationCsvColumns() : string[] {\r\n return ['customer',\r\n 'account',\r\n 'anchorShipper',\r\n 'tos',\r\n 'nomCycle',\r\n 'packageId',\r\n 'pathRank',\r\n 'primaryReceipt',\r\n 'nominatedReceipt',\r\n 'primaryDelivery',\r\n 'nominatedDelivery',\r\n 'flowRatePrelimSq',\r\n 'flowRatePrelimFuelSq',\r\n 'flowRatePreviousSq',\r\n 'flowRateSchedQtyChange',\r\n 'flowRateCalculatedTransport',\r\n 'flowRateCalculatedFuel',\r\n 'flowRateAuthorizedTransport',\r\n 'flowRateVariance',\r\n 'flowRatePctAuth',\r\n 'dailyAuthorizedTransport',\r\n 'dailyAuthorizedFuel',\r\n 'dailyPrelimSq',\r\n 'dailyPrelimFuelSq',\r\n 'dailyQuantitySchedQtyChange',\r\n 'dailyVariance',\r\n 'dailyPreviousSq',\r\n 'epsq'];\r\n }\r\n\r\n private GenerateTransferCsvColumns() : string[] {\r\n return ['customer',\r\n 'account',\r\n 'transactionType',\r\n 'nomCycle',\r\n 'packageId',\r\n 'rank',\r\n 'locationName',\r\n 'flowRatePrelimSq',\r\n 'flowRatePreviousSq',\r\n 'flowRateSchedQtyChange',\r\n 'flowRateAuthorized',\r\n 'flowRateVariance',\r\n 'flowRatePctAuth',\r\n 'dailyPrelimSq',\r\n 'dailyQuantitySchedQtyChange',\r\n 'dailyQuantityAuthorized',\r\n 'dailyQuantityVariance',\r\n 'dailyPreviousSq',\r\n 'epsq'];\r\n }\r\n\r\n public toggleFilterSection() :void {\r\n this.model.showFilters = !this.model.showFilters;\r\n }\r\n\r\n public onGasDayChanged(_e): void{\r\n // this will be fired even when a null value is returned from the date picker and don't want to reload with a bad date\r\n if (!this.model.searchParams.gasDay) return;\r\n\r\n // This will force the GasCycle to get set to the default for the GasDay.\r\n this.model.searchParams.gasCycleCode = null;\r\n this.loadSearchResources().subscribe(() => {});\r\n }\r\n\r\n public canInitiate() : boolean{\r\n if (!this.model.currentCycleStatus) return false; // search not done yet\r\n\r\n if(this.model.currentCycleStatus.isCapacityAllocationInitiating()\r\n || this.model.currentCycleStatus.isCapacityAllocationCalculating()\r\n || this.model.currentCycleStatus.isCapacityAllocationAuthorized()\r\n ) return false;\r\n\r\n return true;\r\n }\r\n\r\n public canCalculate() : boolean{\r\n if (!this.model.currentCycleStatus) return false; // search not done yet\r\n\r\n return this.model.currentCycleStatus.isCapacityAllocationInitiated() || this.model.currentCycleStatus.isCapacityAllocationCalculated();\r\n }\r\n\r\n canSubmit(): boolean {\r\n return this.isHubBalanced() &&\r\n !this.model.hasValidationErrors &&\r\n this.model.modelDirty &&\r\n this.model.haveAllAuthorizedValuesBeenFilledIn;\r\n }\r\n\r\n onDataChanged(): void {\r\n this.model.modelDirty = true;\r\n this.model.haveAllAuthorizedValuesBeenFilledIn = AuthorizedQuantityTask.checkAllAuthQuantitiesHaveBeenProvided(this.model.transportationSearchResults)\r\n && AuthorizedQuantityTask.checkAllAuthQuantitiesHaveBeenProvided(this.model.transferDeliverySearchResults)\r\n && AuthorizedQuantityTask.checkAllAuthQuantitiesHaveBeenProvided(this.model.transferReceiptSearchResults);\r\n }\r\n\r\n public canCancel() : boolean {\r\n return this.model.modelDirty;\r\n }\r\n\r\n public submitClicked() {\r\n if (this.submitting) { // Guard against dbl-click.\r\n return;\r\n }\r\n this.submitting = true;\r\n\r\n // Remove the messages if the router hasn't navigated\r\n this.appService.clearMessages();\r\n this.submitData();\r\n }\r\n\r\n resetModelState(): void {\r\n this.model.modelDirty = false;\r\n this.model.hasValidationErrors = false;\r\n }\r\n\r\n private submitData(): void {\r\n this.authorizeTransactions().subscribe(() => {\r\n this.submitting = false;\r\n });\r\n\r\n }\r\n\r\n private buildTransportationRequest(uniqueTransportTransactions: CapacityAllocationTransportationDto[]): AuthorizeDailyTransportationTransactionsRequest {\r\n const dataToSubmit = uniqueTransportTransactions.map(x => new AuthorizeDailyTransportationTransactionsData(x.transactionId, x.flowRateAuthorizedTransport, x.deliveryLocationId, x.receiptLocationId, this.model.searchParams.gasCycleCode));\r\n const request = new AuthorizeDailyTransportationTransactionsRequest();\r\n request.pipeline = this.sessionService.getPipeline().code;\r\n request.gasCycleCode = this.model.searchParams.gasCycleCode;\r\n request.gasDay = this.model.searchParams.gasDay.toString();\r\n request.queryDateTime = this.model.queryDateTime;\r\n request.data = dataToSubmit;\r\n\r\n return request;\r\n }\r\n\r\n private buildTransferRequest(uniqueTransferTransactions: CapacityAllocationTransferDto[]): AuthorizeDailyTransferTransactionsRequest {\r\n const dataToSubmit = uniqueTransferTransactions.map(x => new AuthorizeDailyTransferTransactionsData(x.transactionId, x.flowRateAuthorized));\r\n const request = new AuthorizeDailyTransferTransactionsRequest();\r\n request.pipeline = this.sessionService.getPipeline().code;\r\n request.gasCycleCode = this.model.searchParams.gasCycleCode;\r\n request.gasDay = this.model.searchParams.gasDay.toString();\r\n request.queryDateTime = this.model.queryDateTime;\r\n request.data = dataToSubmit;\r\n\r\n return request;\r\n }\r\n\r\n private authorizeTransactions(): Observable {\r\n this.tabs.saveEditData();\r\n\r\n const transportationDetails = this.model.transportationSearchResults;\r\n let uniqueTransportation = new Array();\r\n if (transportationDetails && transportationDetails.length !== 0) {\r\n uniqueTransportation = _.uniqBy(transportationDetails, x => x.transactionId);\r\n }\r\n\r\n const transferDetails = this.model.transferReceiptSearchResults.concat(this.model.transferDeliverySearchResults);\r\n let uniqueTransfer = new Array();\r\n if (transferDetails && transferDetails.length !== 0) {\r\n uniqueTransfer = _.uniqBy(transferDetails, x => x.transactionId);\r\n }\r\n\r\n let numRecordsUpdated = 0;\r\n\r\n return this.capacityAllocationSummaryService.authorizeTransportationTransactions(this.buildTransportationRequest(uniqueTransportation)).pipe(\r\n tap(result => numRecordsUpdated += result),\r\n concatMap(() => this.capacityAllocationSummaryService.authorizeTransferTransactions(this.buildTransferRequest(uniqueTransfer))),\r\n tap(result => numRecordsUpdated += result),\r\n tap(() => this.showAuthorizedViewIfRecordsWereUpdated(numRecordsUpdated)));\r\n }\r\n\r\n private showAuthorizedViewIfRecordsWereUpdated(numberOfRecordsUpdated: number): void {\r\n if (numberOfRecordsUpdated === 0) {\r\n this.alertService.addInfoMessage('Info', `No records were updated.`);\r\n return;\r\n }\r\n\r\n // Update the UI to show the latest results\r\n this.showAuthorizedView(numberOfRecordsUpdated);\r\n this.alertService.addSuccessMessage('Success', `${numberOfRecordsUpdated} record(s) updated.`);\r\n }\r\n\r\n private showAuthorizedView(numberOfRecordsUpdated): void {\r\n // We've saved changes, so now let's reset the model state\r\n // We need to do this so that perform search won't get hung up on the \"are changes made\" guard clause.\r\n this.resetModelState();\r\n\r\n // change back to All\r\n this.model.searchParams.numberOfRowsAffected = numberOfRecordsUpdated;\r\n\r\n this.searchClicked();\r\n }\r\n\r\n public canAuthorize() : boolean{\r\n if (!this.model.currentCycleStatus) return false; // search not done yet\r\n\r\n // check to make sure all authorized values have a value.\r\n if(_.some(this.model.transportationSearchResults, ['flowRateAuthorizedTransport', null]) ||\r\n _.some(this.model.transferDeliverySearchResults, ['flowRateAuthorized', null]) ||\r\n _.some(this.model.transferReceiptSearchResults, ['flowRateAuthorized', null])) return false;\r\n\r\n // confirm there aren't any non-submitted changes\r\n if(this.model.modelDirty) return false;\r\n\r\n // return the value of the statuses\r\n return this.model.currentCycleStatus.isCapacityAllocationCalculated() && this.model.currentCycleStatus.isStatus(GasDayCycleStatus.HubsBalanced);\r\n }\r\n\r\n public canResend() : boolean{\r\n if (!this.model.currentCycleStatus) return false; // search not done yet\r\n\r\n return this.model.currentCycleStatus.isCapacityAllocationAuthorized();\r\n }\r\n\r\n public canExport() : boolean{\r\n return this.model.searchHasBeenPerformed;\r\n }\r\n\r\n public resetClicked() {\r\n this.model.currentCycleStatus = null;\r\n super.resetClicked();\r\n }\r\n\r\n /* inherited members */\r\n\r\n protected loadInitialResources(): Observable {\r\n\r\n this.model.pipeline = this.sessionService.getPipeline();\r\n\r\n const serviceCalls: Observable[] = [\r\n this.queryPipelineGasDay(),\r\n\r\n this.nominationEnterpriseEnrichmentService.fetch(),\r\n this.nominationLocationEnrichmentService.fetch(),\r\n this.nominationNomGroupEnrichmentService.fetch()\r\n ];\r\n\r\n return forkJoin(serviceCalls).pipe(\r\n tap( () => {\r\n this.appService.hideMenu();\r\n this.appService.clearMessages();\r\n })\r\n );\r\n }\r\n\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return this.gasDayCycleParamValidator().isValid(params);\r\n }\r\n\r\n protected resetCompleted(): void {\r\n /* Reset any search results if they existed */\r\n this.model.transportationSearchResults = undefined;\r\n this.model.transferDeliverySearchResults = undefined;\r\n this.model.transferReceiptSearchResults = undefined;\r\n this.model.searchHasBeenPerformed = false;\r\n this.model.modelDirty = false;\r\n\r\n this.typedParamsSet = false;\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams.gasDay = this.model.gasDay;\r\n this.model.searchParams.gasCycleCode = null;\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams.gasDay = typedParams.asGasDay('gasDay');\r\n this.model.searchParams.gasCycleCode = typedParams.asNullableString('gasCycleCode');\r\n\r\n this.typedParamsSet = true;\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n\r\n if (this.gasDayTracker.previouslyLoadedForSameGasDay(this.model.searchParams.gasDay)) {\r\n // Set GasDay dependent fields to defaults.\r\n if (!this.model.searchParams.gasCycleCode) {\r\n this.model.searchParams.gasCycleCode = this.defaultGasCycleCode();\r\n }\r\n // This causes any filters to be removed.\r\n return of(null);\r\n }\r\n\r\n return this.queryGasDayCycleStatuses(this.model.searchParams.gasDay);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {\r\n gasDay: this.model.searchParams.gasDay,\r\n gasCycleCode: this.model.searchParams.gasCycleCode\r\n };\r\n\r\n return params;\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n\r\n this.model.searchHasBeenPerformed = false;\r\n this.setCurrentGasCycleStatus();\r\n\r\n const searchRequest = this.buildSearchRequest();\r\n\r\n const transportationCapacityAllocationSummary$ = this.queryTransportationCapacityAllocationSummaries(searchRequest).pipe(\r\n tap(transportationSummary => this.processTransportationCapacityAllocationSummary(transportationSummary))\r\n );\r\n\r\n const transferCapacityAllocationSummary$ = this.queryTransferCapacityAllocationSummaries(searchRequest).pipe(\r\n tap(transferSummary => this.processTransferCapacityAllocationSummary(transferSummary))\r\n );\r\n\r\n // TODO: see if this is something we need to do\r\n // const gasCycleStatus$ = this.gasCycleService.getGasCycleStatus(this.model.searchParams.gasDay,\r\n // GasCycleLogic.buildGasCycleCodeForRequest(this.model.gasDayCycleStatuses, this.model.searchParams.gasCycleCode)).pipe(\r\n // tap(gasDayCycleStatus => this.gasDayCycleStatusReturned(gasDayCycleStatus))\r\n // );\r\n\r\n return forkJoin([transportationCapacityAllocationSummary$, transferCapacityAllocationSummary$]).pipe(\r\n tap(() => {\r\n this.model.searchHasBeenPerformed = true;\r\n this.model.isReadOnly = !(this.model.currentCycleStatus.isCapacityAllocationCalculated() && this.isHubBalanced());\r\n this.model.activeNomTabIndex = 0; // reset this as the UI will automatically set the first tab\r\n this.model.modelDirty = false;\r\n this.model.hasValidationErrors = false;\r\n })\r\n );\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n public gasCyclePlaceholder(): string {\r\n // See NominationRequestsComponent for comments on why this guard clause is needed\r\n if (_.isNil(this.model.gasDayCycleStatuses)) return null;\r\n\r\n return GasCycleLogic.placeholder(this.model.gasDayCycleStatuses);\r\n }\r\n\r\n public isGasCycleRequired(): boolean {\r\n if (_.isNil(this.model.gasDayCycleStatuses)) return true;\r\n\r\n return GasCycleLogic.isRequired(this.model.gasDayCycleStatuses);\r\n }\r\n\r\n /***\r\n * Private Methods\r\n */\r\n\r\n\r\n private isHubBalanced(): boolean {\r\n return this.model?.currentCycleStatus?.status === SimpleGasDayCycleStatus.HubsBalanced;\r\n }\r\n\r\n private gasDayCycleParamValidator(): ParamValidator {\r\n const gasDayCycleParamValidator = ParamValidator.Standard();\r\n\r\n gasDayCycleParamValidator.isGasDay('gasDay');\r\n gasDayCycleParamValidator.isString('gasCycleCode', true); // Optional for EOD case\r\n\r\n return gasDayCycleParamValidator;\r\n }\r\n\r\n private defaultGasCycleCode(): string {\r\n if (_.isNil(this.model.gasDayCycleStatuses)) return GasCycle.TimelyCycleCode;\r\n\r\n let defaultGasCycleStatus = this.model.gasDayCycleStatuses.defaultEarliestNotAuthorized();\r\n if (_.isNil(defaultGasCycleStatus) && !this.model.gasDayCycleStatuses.allCyclesScheduled()) {\r\n // if all cycles authorized, then default to first cycle not scheduled\r\n defaultGasCycleStatus = this.model.gasDayCycleStatuses.defaultEarliestNonScheduled();\r\n }\r\n // if all cycles authorized and scheduled, returns null (i.e. EOD)\r\n return defaultGasCycleStatus?.gasCycle?.code;\r\n }\r\n\r\n private buildSearchRequest(_numberOfRowsAffected?: number, _expandAll?: boolean, includePipeline: boolean = false): CapacityAllocationSummaryRequest {\r\n const request = new CapacityAllocationSummaryRequest();\r\n\r\n request.gasDay = this.model.searchParams.gasDay;\r\n request.gasCycleCode = GasCycleLogic.buildGasCycleCodeForRequest(this.model.gasDayCycleStatuses, this.model.searchParams.gasCycleCode);\r\n\r\n if(includePipeline) request.pipeline = this.sessionService.getPipeline().code;\r\n\r\n return request;\r\n }\r\n\r\n private queryPipelineGasDay() : Observable {\r\n return this.nominationSystemService\r\n .pipelineGasDay()\r\n .pipe(\r\n tap((pipelineGasDay) => {\r\n\r\n if (!pipelineGasDay.hasGasDayCycles()) {\r\n this.alertService.addWarnMessage(\"Warning\", \"There are no Gas Day Cycles for the pipeline.\");\r\n return;\r\n }\r\n\r\n this.model.gasDay = pipelineGasDay.allowableGasDay;\r\n this.model.minGasDay = pipelineGasDay.minGasDayForCycleStatus;\r\n this.model.maxGasDay = pipelineGasDay.maxGasDayForCycleStatus;\r\n })\r\n );\r\n }\r\n\r\n private queryGasDayCycleStatuses(gasDay: GasDay) : Observable {\r\n return this.gasCycleService\r\n .queryGasDayCycleStatusesFor(gasDay)\r\n .pipe(\r\n tap((gasDayCycleStatuses) => {\r\n\r\n this.model.gasDayCycleStatuses = gasDayCycleStatuses;\r\n this.model.gasCycles = gasDayCycleStatuses.gasCycles();\r\n\r\n this.model.launchedGasCycles = gasDayCycleStatuses.defaultGasDayCycleStatusesForCapacityAllocation().gasCycles();\r\n\r\n if (!this.model.searchParams.gasCycleCode) {\r\n this.model.searchParams.gasCycleCode = this.defaultGasCycleCode();\r\n }\r\n }));\r\n }\r\n\r\n private queryTransportationCapacityAllocationSummaries(searchRequest: CapacityAllocationSummaryRequest): Observable {\r\n return this.capacityAllocationSummaryService.queryTransportationCapacityAllocationSummaries(searchRequest).pipe(\r\n concatMap(transportationSummaries =>\r\n forkJoin(\r\n [\r\n this.nominationEnterpriseEnrichmentService.enrichArray(transportationSummaries.details, 'customerId', 'customer'),\r\n this.nominationLocationEnrichmentService.enrichArray(transportationSummaries.details, 'deliveryLocationId', 'nominatedDeliveryLocation'),\r\n this.nominationLocationEnrichmentService.enrichArray(transportationSummaries.details, 'receiptLocationId', 'nominatedReceiptLocation'),\r\n this.nominationNomGroupEnrichmentService.enrichArray(transportationSummaries.details, 'customerAccountId', 'customerAccount'),\r\n this.nominationLocationEnrichmentService.enrichArray(transportationSummaries.details, 'primaryDeliveryLocationId', 'primaryDeliveryLocation'),\r\n this.nominationLocationEnrichmentService.enrichArray(transportationSummaries.details, 'primaryReceiptLocationId', 'primaryReceiptLocation'),\r\n ]).pipe(concatMap(() => of(transportationSummaries))\r\n )));\r\n }\r\n\r\n private queryTransferCapacityAllocationSummaries(searchRequest: CapacityAllocationSummaryRequest): Observable {\r\n return this.capacityAllocationSummaryService.queryTransferCapacityAllocationSummaries(searchRequest).pipe(\r\n concatMap(transferSummaries =>\r\n forkJoin(\r\n [\r\n this.nominationEnterpriseEnrichmentService.enrichArray(transferSummaries.details, 'customerId', 'customer'),\r\n this.nominationNomGroupEnrichmentService.enrichArray(transferSummaries.details, 'nominationGroup', 'account'),\r\n this.nominationLocationEnrichmentService.enrichArray(transferSummaries.details, 'locationId', 'location'),\r\n ]).pipe(concatMap(() => of(transferSummaries))\r\n )));\r\n }\r\n\r\n private processTransportationCapacityAllocationSummary(capacityAllocationSummary: CapacityAllocationSummaryDto): void {\r\n this.model.transportationSearchResults = capacityAllocationSummary.details as CapacityAllocationTransportationDto[];\r\n this.model.searchResultsCount = this.model.transportationSearchResults.length;\r\n\r\n _.forEach(this.model.transportationSearchResults, (dto: CapacityAllocationTransportationDto) => {\r\n // Build Type of Service, with its Service Option\r\n dto.fullTypeOfService = dto.serviceOption ?\r\n `${dto.typeOfService} ${dto.serviceOption}`\r\n : dto.typeOfService;\r\n });\r\n\r\n this.model.queryDateTime = capacityAllocationSummary.queryDateTime;\r\n this.model.modelDirty = false;\r\n }\r\n\r\n private processTransferCapacityAllocationSummary(capacityAllocationSummary: CapacityAllocationSummaryDto): void {\r\n const results = capacityAllocationSummary?.details as CapacityAllocationTransferDto[];\r\n if (results) {\r\n this.model.transferDeliverySearchResults = results.filter((t) => t.isReceipt === false);\r\n this.model.transferReceiptSearchResults = results.filter((t) => t.isReceipt === true);\r\n }\r\n\r\n this.model.queryDateTime = capacityAllocationSummary.queryDateTime;\r\n this.model.modelDirty = false;\r\n }\r\n\r\n private setCurrentGasCycleStatus() : void {\r\n this.model.currentCycleStatus = GasCycleLogic.buildGasCycleStatusForRequest(this.model.gasDayCycleStatuses, this.model.lastSearchParams.gasCycleCode);\r\n }\r\n}\r\n","import {GasDay} from \"@model/gas-day\";\r\nimport {GasCycle} from \"@model/gas-cycle\";\r\nimport {BaseViewModel} from \"@model/base-view-model\";\r\nimport {NominationPipelineGasDay} from \"@model/nomination-pipeline-gas-day\";\r\nimport {CapacityAllocationSummarySearchParams} from \"app/gcts/nomination/capacity-allocation-summary/capacity-allocation-summary-model\";\r\nimport {NominationPipeline} from \"@model/nomination-pipeline\";\r\nimport {GasDayCycleStatusCollection} from \"@model/gas-day-cycle-status-collection\";\r\nimport {SimpleGasDayCycleStatus} from \"@model/simple-gas-day-cycle-status\";\r\n\r\nexport class CapacityAllocationDetailsViewModel extends BaseViewModel {\r\n searchParams: CapacityAllocationSummarySearchParams = new CapacityAllocationSummarySearchParams();\r\n lastSearchParams: CapacityAllocationSummarySearchParams = new CapacityAllocationSummarySearchParams();\r\n searchHasBeenPerformed: boolean = false;\r\n showFilters: boolean = true;\r\n gasDayCycleStatuses: GasDayCycleStatusCollection;\r\n gasCycles: GasCycle[];\r\n launchedGasCycles: GasCycle[];\r\n\r\n public searchResults: CapacityAllocationDetailData[];\r\n\r\n pipelineGasDay: NominationPipelineGasDay;\r\n public gasDay: GasDay;\r\n minGasDay: GasDay;\r\n maxGasDay: GasDay;\r\n\r\n // activeNomTabIndex: number = 0;\r\n\r\n pipeline: NominationPipeline;\r\n queryDateTime: Date;\r\n // searchResultsCount: number;\r\n currentCycleStatus: SimpleGasDayCycleStatus;\r\n\r\n public clearSearchResults() : void {\r\n this.searchResults = undefined;\r\n this.searchHasBeenPerformed = false;\r\n // this.searchResultsCount = 0;\r\n this.searchParams = new CapacityAllocationSummarySearchParams();\r\n this.lastSearchParams = new CapacityAllocationSummarySearchParams();\r\n }\r\n\r\n public selectDefaultGasDay() : GasDay {\r\n return this.pipelineGasDay.actualGasDay < this.pipelineGasDay.earliestSelectableGasDay ? this.pipelineGasDay.earliestSelectableGasDay : this.pipelineGasDay.actualGasDay;\r\n }\r\n}\r\n\r\nexport class CapacityAllocationSegmentAggregateDetail {\r\n enterpriseMnemonic: string;\r\n aggregateBy: string;\r\n serviceClass: string;\r\n prorationBasisValue: number;\r\n shareAvailableCapacityFlowRate: number;\r\n previousTransportFlowRate: number;\r\n previousFuelFlowRate: number;\r\n prelimTransportFlowRate: number;\r\n prelimFuelFlowRate: number;\r\n sqChangeFlowRate: number;\r\n restOfDayPreliminaryScheduledFlowRate: number;\r\n authorizedFlowRate: number;\r\n segmentStartAvailableCapacityFlowRate: number;\r\n totalAuthorized: number;\r\n previouslyAuthorizedFlowRate: number;\r\n percentageAuthorized: number;\r\n percentageShareAvailable: number;\r\n percentageTotalAuthorized: number;\r\n}\r\n\r\nexport class CapacityAllocationSegmentTransactionDetail {\r\n enterpriseMnemonic: string;\r\n account: string;\r\n service: string;\r\n anchorShipperRights: string;\r\n packageId: string;\r\n pathRank: number;\r\n nomReceiptLocationId: number;\r\n nomDeliveryLocationId: number;\r\n previousTransportFlowRate: number;\r\n previousFuelFlowRate: number;\r\n prelimTransportFlowRate: number;\r\n prelimFuelFlowRate: number;\r\n sqChangeFlowRate: number;\r\n authTransportFlowRate: number;\r\n authFuelFlowRate: number;\r\n totalAuthFlowRate: number;\r\n prelimTransport: number;\r\n epsq: number;\r\n authTransport: number;\r\n authFuel: number;\r\n totalAuthorized: number;\r\n percentageAuthorized: number;\r\n}\r\n\r\nexport class CapacityAllocationDetailData {\r\n gasDay: GasDay;\r\n gasCycle: string;\r\n segmentName: string;\r\n serviceClass: string;\r\n processType: string;\r\n processOrder: number;\r\n priority: number;\r\n segmentTypePriorityOfService: number;\r\n iteration: number;\r\n startAvailableCapacityFlowRate: number;\r\n authorizedCapacityFlowRate: number;\r\n endingAvailableCapacityFlowRate: number;\r\n transactionDetails: CapacityAllocationSegmentTransactionDetail[];\r\n aggregateDetails: CapacityAllocationSegmentAggregateDetail[];\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {CapacityAllocationDetailsViewModel} from \"app/gcts/nomination/capacity-allocation-details/capacity-allocation-details.model\";\r\nimport * as _ from \"lodash\";\r\n\r\n@Injectable()\r\nexport class CapacityAllocationAggregateDetailsCsvBuilderService {\r\n constructor(private fileService: FileService) {\r\n }\r\n\r\n build (title: string,\r\n detailData: CapacityAllocationDetailsViewModel): void {\r\n const gasDay = detailData.lastSearchParams.gasDay;\r\n const gasCycle = detailData.lastSearchParams.gasCycleCode;\r\n const filename = title + ' ' + gasDay.toDisplayFormat() + '.csv';\r\n\r\n const combinedData = detailData.searchResults.map(segment =>\r\n segment.aggregateDetails.map(details => {\r\n // add common data to each detail row\r\n Object.assign(details, {segment: segment.segmentName});\r\n Object.assign(details, {processOrder: segment.processOrder});\r\n Object.assign(details, {priority: segment.priority});\r\n Object.assign(details, {serviceClass: segment.serviceClass});\r\n Object.assign(details, {gasDay: gasDay});\r\n Object.assign(details, {gasCycle: gasCycle});\r\n Object.assign(details, {processType: segment.processType});\r\n Object.assign(details, {iteration: segment.iteration});\r\n return details;\r\n })\r\n );\r\n\r\n let csvData = [].concat.apply([], combinedData);\r\n csvData = _.sortBy(csvData, ['processOrder', 'priority', 'iteration', 'operationalDemandEnergy']);\r\n\r\n const headers = [\r\n \"Segment\", \"Service Class\", \"Process Type\", \"Iteration\",\r\n \"Customer\", \"Aggregated By\", \"Prorate Basis\",\r\n \"Share Avail Cap (GJ/hr)\", \"% Share Avail\",\r\n \"Previous Transport (GJ/hr)\", \"Previous Fuel (GJ/hr)\",\r\n \"Prelim Transport (GJ/hr)\", \"Prelim Fuel (GJ/hr)\", \"SQ Change (GJ/hr)\",\r\n \"ROD Prelim Flow (GJ/hr)\", \"Auth (GJ/hr)\", \"% Auth\",\r\n \"Prelim Sched Flow (GJ/hr)\", \"Prev Auth (GJ/hr)\",\r\n \"Total Auth (GJ/hr)\", \"Total % Auth\",\r\n \"Gas Day\", \"Gas Cycle\",\r\n ];\r\n\r\n const columns = [\r\n \"segment\", \"serviceClass\", \"processType\", \"iteration\",\r\n \"enterpriseMnemonic\", \"aggregateBy\", \"prorationBasisValue\",\r\n \"shareAvailableCapacityFlowRate\", \"percentageShareAvailable\",\r\n \"previousTransportFlowRate\", \"previousFuelFlowRate\",\r\n \"prelimTransportFlowRate\", \"prelimFuelFlowRate\", \"sqChangeFlowRate\",\r\n \"restOfDayPreliminaryScheduledFlowRate\", \"authorizedFlowRate\", \"percentageAuthorized\",\r\n \"segmentStartAvailableCapacityFlowRate\", \"previouslyAuthorizedFlowRate\",\r\n \"totalAuthorized\", \"percentageTotalAuthorized\",\r\n \"gasDay\", \"gasCycle\"\r\n ];\r\n\r\n this.fileService.downloadCsvFile(filename, csvData, headers, columns);\r\n }\r\n}\r\n","\r\n\r\n \r\n \r\n \r\n \r\n
\r\n Prorate Basis\r\n
\r\n
\r\n\r\n \r\n
\r\n Share Avail Cap
(GJ/hr)\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n Prev Transp
(GJ/hr)\r\n
\r\n
\r\n \r\n
\r\n Prev Fuel
(GJ/hr)\r\n
\r\n
\r\n \r\n
\r\n Prelim Transp
(GJ/hr)\r\n
\r\n
\r\n \r\n
\r\n Prelim Fuel
(GJ/hr)\r\n
\r\n
\r\n \r\n
\r\n SQ Change
(GJ/hr)\r\n
\r\n
\r\n \r\n
\r\n ROD Prelim
Flow (GJ/hr)\r\n
\r\n
\r\n \r\n
\r\n Auth
(GJ/hr)\r\n
\r\n
\r\n \r\n \r\n
\r\n Prelim Sched
Flow (GJ/hr)\r\n
\r\n
\r\n \r\n
\r\n Prev Auth
(GJ/hr)\r\n
\r\n
\r\n\r\n \r\n
\r\n Total Auth
(GJ/hr)\r\n
\r\n
\r\n \r\n
\r\n Total %
Auth\r\n
\r\n
\r\n\r\n","import {Component, Input} from \"@angular/core\";\r\nimport {CapacityAllocationDetailData, CapacityAllocationDetailsViewModel} from \"app/gcts/nomination/capacity-allocation-details/capacity-allocation-details.model\";\r\n\r\n@Component({\r\n selector: 'app-capacity-allocation-details-aggregate-details',\r\n templateUrl: './capacity-allocation-details-aggregate-details.component.html',\r\n styleUrls: ['./capacity-allocation-details-aggregate-details.component.css'],\r\n providers: []\r\n})\r\n\r\nexport class CapacityAllocationDetailsAggregateDetailsComponent {\r\n @Input() detailsModel: CapacityAllocationDetailData = new CapacityAllocationDetailData();\r\n}\r\n","
\r\n
\r\n\r\n
\r\n Number of results found: {{data.searchResults.length}}\r\n \r\n Export CSV\r\n \r\n
\r\n\r\n \r\n \r\n >\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n","import {Component, Input} from \"@angular/core\";\r\nimport {CapacityAllocationDetailsViewModel} from \"app/gcts/nomination/capacity-allocation-details/capacity-allocation-details.model\";\r\nimport {CapacityAllocationAggregateDetailsCsvBuilderService} from \"@shared/services/nomination/capacity-allocation/capacity-allocation-aggregate-details-csv-builder-service\";\r\n\r\n@Component({\r\n selector: 'app-capacity-allocation-details-aggregate-pane',\r\n templateUrl: './capacity-allocation-details-aggregate-pane.component.html',\r\n styleUrls: ['./capacity-allocation-details-aggregate-pane.component.css'],\r\n providers: []\r\n})\r\n\r\nexport class CapacityAllocationDetailsAggregatePaneComponent {\r\n @Input() data: CapacityAllocationDetailsViewModel;\r\n\r\n constructor(private capacityAllocationAggregateDetailsCsvBuilderService: CapacityAllocationAggregateDetailsCsvBuilderService){}\r\n\r\n public exportCsv(): void {\r\n this.capacityAllocationAggregateDetailsCsvBuilderService\r\n .build(\"CapacityAllocationDetailAggregate\", this.data);\r\n }\r\n\r\n public onRowPrepared(input: any): void {\r\n // If there are no aggregate detail rows in the summary record, then don't display the master detail control.\r\n if (input.rowType === 'data' && input.data['aggregateDetails'].length === 0) {\r\n input.cells[0].cellElement.classList.remove('dx-datagrid-expand');\r\n input.cells[0].cellElement.childNodes[0].classList.remove('dx-datagrid-group-closed');\r\n }\r\n }\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {CapacityAllocationDetailsViewModel} from \"app/gcts/nomination/capacity-allocation-details/capacity-allocation-details.model\";\r\nimport * as _ from \"lodash\";\r\nimport {LocationService} from \"@shared/services/common-data/location/location.service\";\r\nimport {LocationEnrichmentService} from \"@shared/services/enrichment/location-enrichment.service\";\r\n\r\n@Injectable()\r\nexport class CapacityAllocationTransactionDetailsCsvBuilderService {\r\n constructor(private fileService: FileService,\r\n private locationService: LocationService,\r\n private locationEnrichmentService: LocationEnrichmentService\r\n )\r\n {\r\n locationEnrichmentService.setEnrichmentResource(locationService);\r\n }\r\n\r\n build (title: string,\r\n detailData: CapacityAllocationDetailsViewModel): void {\r\n const gasDay = detailData.lastSearchParams.gasDay;\r\n const gasCycle = detailData.lastSearchParams.gasCycleCode;\r\n const filename = title + ' ' + gasDay.toDisplayFormat() + '.csv';\r\n\r\n const combinedData = detailData.searchResults.map(segment => {\r\n const exportData = segment.transactionDetails.map(details => {\r\n\r\n // add common data to each detail row\r\n Object.assign(details, {segment: segment.segmentName});\r\n Object.assign(details, {serviceClass: segment.serviceClass});\r\n Object.assign(details, {processType: segment.processType});\r\n Object.assign(details, {processOrder: segment.processOrder});\r\n Object.assign(details, {priority: segment.priority});\r\n Object.assign(details, {iteration: segment.iteration});\r\n Object.assign(details, {gasDay: gasDay});\r\n Object.assign(details, {gasCycle: gasCycle});\r\n\r\n return details;\r\n });\r\n this.locationEnrichmentService.enrichArray(exportData, 'nomReceiptLocationId', 'nomReceiptLocation');\r\n this.locationEnrichmentService.enrichArray(exportData, 'nomDeliveryLocationId', 'nomDeliveryLocation');\r\n\r\n return exportData;\r\n }\r\n );\r\n\r\n let csvData = [].concat.apply([], combinedData);\r\n csvData = _.sortBy(csvData, ['processOrder', 'priority', 'iteration', 'enterpriseMnemonic', 'account', 'service' ]);\r\n\r\n const headers = [\r\n \"Segment\",\"Service Class\", \"Process Type\", \"Iteration\",\r\n \"Customer\", \"Account\", \"Anch\", \"Service\",\r\n \"Package Id\", \"Path Rank\",\r\n \"Nominated Receipt\", \"Nominated Delivery\",\r\n \"Previous Transport (GJ/hr)\", \"Previous Fuel (GJ/hr)\",\r\n \"Prelim Transport (GJ/hr)\", \"Prelim Fuel (GJ/hr)\",\r\n \"SQ Change (GJ/hr)\", \"Auth Transport (GJ/hr)\", \"Auth Fuel (GJ/hr)\",\r\n \"Total Auth (GJ/hr)\", \"Prelim Transport (GJ/d)\",\r\n \"EPSQ (GJ/d)\", \"Auth Transport (GJ/d)\",\r\n \"Auth Fuel (GJ/d)\", \"Total Auth (GJ/d)\", \"% Auth\",\r\n \"Gas Day\", \"Gas Cycle\",\r\n ];\r\n\r\n const columns = [\r\n \"segment\",\"serviceClass\", \"processType\", \"iteration\",\r\n \"enterpriseMnemonic\", \"account\", \"anchorShipperRights\", \"service\",\r\n \"packageId\", \"pathRank\",\r\n \"nomReceiptLocationName\", \"nomDeliveryLocationName\",\r\n \"previousTransportFlowRate\", \"previousFuelFlowRate\",\r\n \"prelimTransportFlowRate\", \"prelimFuelFlowRate\",\r\n \"sqChangeFlowRate\", \"authTransportFlowRate\", \"authFuelFlowRate\",\r\n \"totalAuthFlowRate\", \"prelimTransport\",\r\n \"epsq\", \"authTransport\",\r\n \"authFuel\", \"totalAuthorized\", \"percentageAuthorized\",\r\n \"gasDay\", \"gasCycle\"\r\n ];\r\n\r\n this.fileService.downloadCsvFile(filename, csvData, headers, columns);\r\n }\r\n}\r\n","\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n Path
Rank\r\n
\r\n
\r\n\r\n \r\n
\r\n Nominated
Receipt\r\n
\r\n
\r\n \r\n
\r\n Nominated
Delivery\r\n
\r\n
\r\n\r\n \r\n
\r\n Prev Transp
(GJ/hr)\r\n
\r\n
\r\n\r\n \r\n
\r\n Prev Fuel
(GJ/hr)\r\n
\r\n
\r\n\r\n \r\n
\r\n Prelim Transp
(GJ/hr)\r\n
\r\n
\r\n\r\n \r\n
\r\n Prelim Fuel
(GJ/hr)\r\n
\r\n
\r\n\r\n \r\n
\r\n SQ Change
(GJ/hr)\r\n
\r\n
\r\n\r\n \r\n
\r\n Auth Transp
(GJ/hr)\r\n
\r\n
\r\n\r\n \r\n
\r\n Auth Fuel
(GJ/hr)\r\n
\r\n
\r\n\r\n \r\n
\r\n Total Auth
(GJ/hr)\r\n
\r\n
\r\n\r\n \r\n
\r\n Prelim Transp
(GJ/d)\r\n
\r\n
\r\n\r\n \r\n
\r\n EPSQ
(GJ/d)\r\n
\r\n
\r\n\r\n \r\n
\r\n Auth Transp
(GJ/d)\r\n
\r\n
\r\n\r\n \r\n
\r\n Auth Fuel
(GJ/d)\r\n
\r\n
\r\n\r\n \r\n
\r\n Total Auth
(GJ/d)\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n\r\n","import {Component, Input} from \"@angular/core\";\r\nimport {CapacityAllocationDetailData} from \"app/gcts/nomination/capacity-allocation-details/capacity-allocation-details.model\";\r\n\r\n@Component({\r\n selector: 'app-capacity-allocation-details-transaction-details',\r\n templateUrl: './capacity-allocation-details-transaction-details.component.html',\r\n styleUrls: ['./capacity-allocation-details-transaction-details.component.css'],\r\n providers: []\r\n})\r\n\r\nexport class CapacityAllocationDetailsTransactionDetailsComponent {\r\n @Input() detailsModel: CapacityAllocationDetailData = new CapacityAllocationDetailData();\r\n}\r\n","
\r\n
\r\n\r\n
\r\n Number of results found: {{data.searchResults.length}}\r\n \r\n Export CSV\r\n \r\n
\r\n\r\n \r\n \r\n >\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n","import {Component, Input} from \"@angular/core\";\r\nimport {CapacityAllocationDetailsViewModel} from \"app/gcts/nomination/capacity-allocation-details/capacity-allocation-details.model\";\r\nimport {CapacityAllocationTransactionDetailsCsvBuilderService} from \"@shared/services/nomination/capacity-allocation/capacity-allocation-transaction-details-csv-builder-service\";\r\n\r\n@Component({\r\n selector: 'app-capacity-allocation-details-transaction-pane',\r\n templateUrl: './capacity-allocation-details-transaction-pane.component.html',\r\n styleUrls: ['./capacity-allocation-details-transaction-pane.component.css'],\r\n providers: []\r\n})\r\n\r\nexport class CapacityAllocationDetailsTransactionPaneComponent {\r\n @Input() data: CapacityAllocationDetailsViewModel;\r\n\r\n constructor(private capacityAllocationTransactionDetailsCsvBuilderService: CapacityAllocationTransactionDetailsCsvBuilderService){}\r\n\r\n public exportCsv(): void {\r\n this.capacityAllocationTransactionDetailsCsvBuilderService\r\n .build(\"CapacityAllocationDetailTransactions\", this.data);\r\n }\r\n\r\n public onRowPrepared(input: any): void {\r\n // If there are no aggregate detail rows in the summary record, then don't display the master detail control.\r\n if (input.rowType === 'data' && input.data['transactionDetails'].length === 0) {\r\n input.cells[0].cellElement.classList.remove('dx-datagrid-expand');\r\n input.cells[0].cellElement.childNodes[0].classList.remove('dx-datagrid-group-closed');\r\n }\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Gas Day: {{model.lastSearchParams?.gasDay | gasDayFormat}}\r\n Cycle (CCT): {{model.lastSearchParams?.gasCycleCode | displayName: 'code' : 'displayValue' : model.gasCycles}}\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.gasDay | gasDayFormat}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.gasCycleCode | displayName: 'code' : 'displayValue' : model.gasCycles}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n","import {Component} from \"@angular/core\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {NominationSystemService} from \"@shared/services/nomination/nomination-system/nomination-system.service\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {GasCycle} from \"@model/gas-cycle\";\r\nimport {GasCycleService} from \"@shared/services/nomination/gas-cycle/gas-cycle.service\";\r\nimport {forkJoin, Observable, of} from \"rxjs\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {concatMap, tap} from \"rxjs/operators\";\r\nimport {\r\n CapacityAllocationDetailData,\r\n CapacityAllocationDetailsViewModel,\r\n CapacityAllocationSegmentTransactionDetail\r\n} from \"app/gcts/nomination/capacity-allocation-details/capacity-allocation-details.model\";\r\nimport {CapacityAllocationSummaryService} from \"@shared/services/nomination/capacity-allocation/capacity-allocation-summary-service\";\r\nimport {NominationPipelineGasDay} from \"@model/nomination-pipeline-gas-day\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {GasDayCycleStatusCollection} from \"@model/gas-day-cycle-status-collection\";\r\nimport {GasDaySearchResourceTracker} from \"@model/gas-day-search-resource-tracker\";\r\nimport {CapacityAllocationSummaryRequest} from \"@shared/services/nomination/capacity-allocation/capacity-allocation-summary.models\";\r\nimport {GasCycleLogic} from \"@model/gas-cycle.logic\";\r\nimport * as _ from \"lodash\";\r\nimport {LocationEnrichmentService} from \"@shared/services/enrichment/location-enrichment.service\";\r\nimport {NominationLocationService} from \"@shared/services/nomination/nomination-location/nomination-location.service\";\r\n\r\n@Component({\r\n selector: 'app-capacity-allocation-details',\r\n templateUrl: './capacity-allocation-details.component.html',\r\n styleUrls: ['./capacity-allocation-details.component.css'],\r\n providers: []\r\n})\r\n\r\nexport class CapacityAllocationDetailsComponent extends BaseSearchComponent {\r\n public model: CapacityAllocationDetailsViewModel = new CapacityAllocationDetailsViewModel();\r\n private gasDayTracker: GasDaySearchResourceTracker = new GasDaySearchResourceTracker();\r\n private typedParamsSet = false;\r\n\r\n public tabs = [{id: 0, title: \"Aggregate\", template: \"template1\"},\r\n {id: 1, title: \"Transaction\", template: \"template2\"}];\r\n\r\n constructor(protected appService: AppService,\r\n protected activatedRoute: ActivatedRoute,\r\n protected router: Router,\r\n protected alertService: AlertService,\r\n private locationService: NominationLocationService,\r\n private locationEnrichmentService: LocationEnrichmentService,\r\n private capacityAllocationSummaryService: CapacityAllocationSummaryService,\r\n private nominationSystemService: NominationSystemService,\r\n private gasCycleService: GasCycleService,\r\n private sessionService: SessionService,\r\n )\r\n {\r\n super('Capacity Allocation Details', appService, activatedRoute, router, alertService);\r\n locationEnrichmentService.setEnrichmentResource(locationService);\r\n }\r\n\r\n public toggleFilterSection() :void {\r\n this.model.showFilters = !this.model.showFilters;\r\n }\r\n\r\n public onGasDayChanged(_e): void{\r\n // this will be fired even when a null value is returned from the date picker and don't want to reload with a bad date\r\n if (!this.model.searchParams.gasDay) return;\r\n\r\n // This will force the GasCycle to get set to the default for the GasDay.\r\n this.model.searchParams.gasCycleCode = null;\r\n this.loadSearchResources().subscribe(() => {});\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n this.model.pipeline = this.sessionService.getPipeline();\r\n\r\n const serviceCalls: Observable[] = [\r\n this.nominationSystemService.pipelineGasDay(),\r\n ];\r\n\r\n return forkJoin(serviceCalls).pipe(\r\n tap(([pipelineGasDay]: [NominationPipelineGasDay]) => {\r\n\r\n if (!pipelineGasDay.hasGasDayCycles()) {\r\n this.alertService.addWarnMessage(\"Warning\", \"There are no Gas Day Cycles for the pipeline.\");\r\n return;\r\n }\r\n\r\n this.appService.hideMenu();\r\n this.appService.clearMessages();\r\n\r\n this.model.gasDay = pipelineGasDay.allowableGasDay;\r\n this.model.minGasDay = pipelineGasDay.minGasDayForCycleStatus;\r\n this.model.maxGasDay = pipelineGasDay.maxGasDayForCycleStatus;\r\n }));\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return this.gasDayCycleParamValidator().isValid(params);\r\n }\r\n\r\n protected resetCompleted(): void {\r\n /* Reset any search results if they existed */\r\n this.model.searchResults = undefined;\r\n this.model.searchHasBeenPerformed = false;\r\n\r\n this.typedParamsSet = false;\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams.gasDay = this.model.gasDay;\r\n this.model.searchParams.gasCycleCode = null;\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams.gasDay = typedParams.asGasDay('gasDay');\r\n this.model.searchParams.gasCycleCode = typedParams.asNullableString('gasCycleCode');\r\n\r\n this.typedParamsSet = true;\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n if (this.gasDayTracker.previouslyLoadedForSameGasDay(this.model.searchParams.gasDay)) {\r\n // Set GasDay dependent fields to defaults.\r\n if (!this.model.searchParams.gasCycleCode) {\r\n this.model.searchParams.gasCycleCode = this.defaultGasCycleCode();\r\n }\r\n // This causes any filters to be removed.\r\n return of(null);\r\n }\r\n\r\n const serviceCalls: Observable[] = [\r\n this.gasCycleService.queryGasDayCycleStatusesFor(this.model.searchParams.gasDay), // 0\r\n ];\r\n\r\n return forkJoin(serviceCalls).pipe(\r\n tap(([gasDayCycleStatuses]: [GasDayCycleStatusCollection]) => {\r\n // 0 - Gas Day Cycle Statuses\r\n this.model.gasDayCycleStatuses = gasDayCycleStatuses;\r\n this.model.gasCycles = gasDayCycleStatuses.gasCycles();\r\n this.model.launchedGasCycles = gasDayCycleStatuses.defaultGasDayCycleStatuses().gasCycles();\r\n\r\n if (!this.model.searchParams.gasCycleCode) {\r\n this.model.searchParams.gasCycleCode = this.defaultGasCycleCode();\r\n }\r\n }));\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {\r\n gasDay: this.model.searchParams.gasDay,\r\n gasCycleCode: this.model.searchParams.gasCycleCode\r\n };\r\n\r\n return params;\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n\r\n this.model.searchHasBeenPerformed = false;\r\n this.setCurrentGasCycleStatus();\r\n\r\n const searchRequest = this.buildSearchRequest();\r\n\r\n return this.capacityAllocationSummaryService.queryCapacityAllocationDetails(searchRequest)\r\n .pipe(\r\n concatMap(allocationDetails => this.enrichTransactionDetail(allocationDetails)),\r\n tap(result => {\r\n this.model.searchResults = result;\r\n this.model.searchHasBeenPerformed = true;\r\n })\r\n );\r\n }\r\n\r\n private enrichTransactionDetail(allocationDetails: CapacityAllocationDetailData[]): Observable {\r\n if(_.isEmpty(allocationDetails)) return of([]);\r\n\r\n const enrichmentCalls: Observable[] = [];\r\n\r\n for (const detail of allocationDetails) {\r\n enrichmentCalls.push(this.locationEnrichmentService.enrichArray(detail.transactionDetails, 'nomReceiptLocationId', 'nomReceiptLocation'));\r\n enrichmentCalls.push(this.locationEnrichmentService.enrichArray(detail.transactionDetails, 'nomDeliveryLocationId', 'nomDeliveryLocation'));\r\n }\r\n\r\n return forkJoin(enrichmentCalls)\r\n .pipe(\r\n concatMap(() => of(allocationDetails))\r\n );\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n public gasCyclePlaceholder(): string {\r\n // return GasCycleLogic.placeholder(this.model.gasDayCycleStatuses);\r\n return \"T\";\r\n }\r\n\r\n /***\r\n * Private Methods\r\n */\r\n\r\n private gasDayCycleParamValidator(): ParamValidator {\r\n const gasDayCycleParamValidator = ParamValidator.Standard();\r\n\r\n gasDayCycleParamValidator.isGasDay('gasDay');\r\n gasDayCycleParamValidator.isString('gasCycleCode', true); // Optional for EOD case\r\n\r\n return gasDayCycleParamValidator;\r\n }\r\n\r\n private defaultGasCycleCode(): string {\r\n return GasCycle.TimelyCycleCode;\r\n }\r\n\r\n private buildSearchRequest(_numberOfRowsAffected?: number, _expandAll?: boolean): CapacityAllocationSummaryRequest {\r\n const request = new CapacityAllocationSummaryRequest();\r\n\r\n request.gasDay = this.model.searchParams.gasDay;\r\n request.gasCycleCode = GasCycleLogic.buildGasCycleCodeForRequest(this.model.gasDayCycleStatuses, this.model.searchParams.gasCycleCode);\r\n\r\n return request;\r\n }\r\n\r\n private setCurrentGasCycleStatus() : void {\r\n const model = this.model;\r\n const currentCycleStatus = _.find(this.model.gasDayCycleStatuses, (x) => {\r\n return x.gasCycle.code === model.lastSearchParams.gasCycleCode;\r\n });\r\n if(!_.isNil(currentCycleStatus))\r\n this.model.currentCycleStatus = currentCycleStatus;\r\n }\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {Observable} from \"rxjs\";\r\nimport {map} from \"rxjs/operators\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {NominationResourceService} from \"@shared/resources/nominations-resource.service\";\r\nimport * as _ from \"lodash\";\r\n\r\n\r\nexport class SegmentProcessOrderQueryRequest {\r\n gasDay: GasDay;\r\n gasCycleCode?: string = 'T';\r\n}\r\n\r\nexport class SegmentProcessOrderUpdateRequest {\r\n gasDay: string;\r\n gasCycleCode: string;\r\n segmentProcessOrdering: SegmentProcessOrderDto[];\r\n}\r\n\r\nexport class SegmentProcessOrderDto {\r\n id: number;\r\n segmentId: number;\r\n segmentName: string;\r\n segmentType: string;\r\n effectiveGasDay: string;\r\n // noinspection JSUnusedGlobalSymbols\r\n effectiveGasCycleId: number;\r\n // noinspection JSUnusedGlobalSymbols\r\n effectiveGasCycleName: string;\r\n capacityAllocationOrder: number;\r\n createDateTime: string;\r\n\r\n constructor(data: SegmentProcessOrder) {\r\n _.assign(this, data);\r\n this.effectiveGasDay = data.effectiveGasDay.toString();\r\n this.createDateTime = data.createDateTime.toJSON();\r\n }\r\n}\r\n\r\nexport class SegmentProcessOrder {\r\n id: number;\r\n segmentId: number;\r\n segmentName: string;\r\n segmentType: string;\r\n effectiveGasDay: GasDay;\r\n // noinspection JSUnusedGlobalSymbols\r\n effectiveGasCycleId: number;\r\n // noinspection JSUnusedGlobalSymbols\r\n effectiveGasCycleName: string;\r\n capacityAllocationOrder: number;\r\n createDateTime: Date;\r\n\r\n constructor(dto: SegmentProcessOrderDto) {\r\n _.assign(this, dto);\r\n this.effectiveGasDay = _.isNil(dto.effectiveGasDay) ? null : GasDay.parse(dto.effectiveGasDay);\r\n this.createDateTime = _.isNil(dto.createDateTime) ? null : new Date(dto.createDateTime);\r\n\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport class SegmentProcessOrderService {\r\n\r\n constructor(private nominationResource: NominationResourceService) {}\r\n\r\n public querySegmentProcessOrder(searchParams: SegmentProcessOrderQueryRequest): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n\r\n params.setGasDay(searchParams.gasDay);\r\n\r\n if (searchParams.gasCycleCode != null) {\r\n params.set('gasCycleCode', searchParams.gasCycleCode);\r\n }\r\n\r\n return this.nominationResource\r\n .get('/capacityAllocation/segmentProcessOrder', true, params)\r\n .pipe(\r\n map(results => _.map(results, dto => new SegmentProcessOrder(dto)))\r\n );\r\n }\r\n\r\n public updateSegmentProcessOrdering(effectiveGasDay: GasDay, effectiveGasCycleCode: string, segmentProcessOrdering: SegmentProcessOrder[]): Observable {\r\n const request: SegmentProcessOrderUpdateRequest = {\r\n gasDay: effectiveGasDay.toString(),\r\n gasCycleCode: effectiveGasCycleCode,\r\n segmentProcessOrdering: _.map(segmentProcessOrdering, data => new SegmentProcessOrderDto(data))\r\n };\r\n\r\n return this.nominationResource\r\n .putWithNoResponseBody('/capacityAllocation/segmentProcessOrder', request, true);\r\n }\r\n}\r\n","import {GasDay} from \"@model/gas-day\";\r\nimport {BaseViewModel} from \"@model/base-view-model\";\r\nimport {GasCycle} from \"@model/gas-cycle\";\r\nimport {GasDayCycleStatusCollection} from \"@model/gas-day-cycle-status-collection\";\r\nimport {SegmentProcessOrder} from \"@shared/services/nomination/segment-process-order/segment-process-order.service\";\r\nimport {SimpleGasDayCycleStatus} from \"@model/simple-gas-day-cycle-status\";\r\n\r\nexport class CapacityAllocationSegmentOrderModelSearchParams {\r\n gasDay: GasDay;\r\n gasCycleCode: string = \"\";\r\n}\r\n\r\nexport class CapacityAllocationSegmentOrderModel extends BaseViewModel\r\n{\r\n gasDayCycleStatuses: GasDayCycleStatusCollection = GasDayCycleStatusCollection.create();\r\n currentCycleStatus: SimpleGasDayCycleStatus;\r\n gasCycles: GasCycle[] = [];\r\n launchedGasCycles: GasCycle[] = [];\r\n\r\n gasDay: GasDay;\r\n minGasDay: GasDay;\r\n maxGasDay: GasDay;\r\n actualGasDay: GasDay;\r\n\r\n searchParams: CapacityAllocationSegmentOrderModelSearchParams = new CapacityAllocationSegmentOrderModelSearchParams();\r\n lastSearchParams: CapacityAllocationSegmentOrderModelSearchParams;\r\n\r\n searchResults: SegmentProcessOrder[];\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Gas Day: {{model.lastSearchParams?.gasDay | gasDayFormat}}\r\n Cycle (CCT): {{model.lastSearchParams?.gasCycleCode | displayName: 'code' : 'displayValue' : model.gasCycles : 'EOD' }}\r\n \r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.gasDay | gasDayFormat }}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.gasCycleCode | displayName: 'code' : 'displayValue' : model.gasCycles : 'EOD' }}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
{{model.currentCycleStatus?.status}}
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
{{model.currentCycleStatus?.capacityAllocationStatus}}
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n Number of results found: {{model.searchResults?.length }}\r\n
\r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n {{ cellInfo.value | gasDayFormat }}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n","import {AfterViewChecked, ChangeDetectorRef, Component} from \"@angular/core\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {Observable} from \"rxjs\";\r\nimport {concatMap, tap} from \"rxjs/operators\";\r\nimport {EditableSearchComponent} from \"@model/editable-search-component\";\r\nimport {GasCycleLogic} from \"@model/gas-cycle.logic\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {GasCycleService} from \"@shared/services/nomination/gas-cycle/gas-cycle.service\";\r\nimport {NominationSystemService} from \"@shared/services/nomination/nomination-system/nomination-system.service\";\r\nimport {SegmentProcessOrderQueryRequest, SegmentProcessOrderService} from \"@shared/services/nomination/segment-process-order/segment-process-order.service\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {ModalOptions} from \"@shared/services/webapp/modal-options/modal-options\";\r\nimport {YesNoCancelModalService} from \"@shared/services/webapp/yes-no-cancel-modal/yes-no-cancel-modal.service\";\r\nimport {CapacityAllocationSegmentOrderModel} from \"app/gcts/nomination/capacity-allocation-segment-order/capacity-allocation-segment-order.model\";\r\nimport * as _ from \"lodash\";\r\nimport {GasCycle} from \"@model/gas-cycle\";\r\nimport {DateTime} from \"@model/date-time\";\r\n\r\n@Component({\r\n selector: 'app-capacity-allocation-segment-order',\r\n templateUrl: 'capacity-allocation-segment-order.component.html',\r\n styles: []\r\n})\r\nexport class CapacityAllocationSegmentOrderComponent extends EditableSearchComponent implements AfterViewChecked {\r\n\r\n public model: CapacityAllocationSegmentOrderModel = new CapacityAllocationSegmentOrderModel();\r\n\r\n public allowReordering = false;\r\n public rowOrderHasChanged = false;\r\n\r\n private typedParamsSet = false;\r\n\r\n constructor(protected appService: AppService,\r\n protected activatedRoute: ActivatedRoute,\r\n protected router: Router,\r\n protected alertService: AlertService,\r\n private nominationSystemService: NominationSystemService,\r\n private gasCycleService: GasCycleService,\r\n private segmentProcessOrderService: SegmentProcessOrderService,\r\n private cdr: ChangeDetectorRef)\r\n {\r\n super('Capacity Allocation Segment Order', appService, activatedRoute, router, alertService);\r\n this.onReorder = this.onReorder.bind(this);\r\n }\r\n\r\n ngAfterViewChecked() {\r\n // https://stackoverflow.com/questions/34364880/expression-has-changed-after-it-was-checked\r\n this.cdr.detectChanges();\r\n }\r\n\r\n public formatDateTime(obj: Date): string {\r\n return new DateTime(obj).toDisplayFormat();\r\n }\r\n\r\n\r\n //#region \"parameter methods\"\r\n protected areParamsValid(params: Params): boolean {\r\n const validator = ParamValidator.Standard();\r\n\r\n validator.isGasDay('gasDay');\r\n validator.isString('gasCycleCode', true); // Optional for EOD case\r\n\r\n return validator.isValid(params);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n return {\r\n gasDay: this.model.searchParams.gasDay,\r\n gasCycleCode: this.model.searchParams.gasCycleCode\r\n };\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams.gasDay = this.model.gasDay;\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams.gasDay = typedParams.asGasDay('gasDay');\r\n this.model.searchParams.gasCycleCode = typedParams.asNullableString('gasCycleCode');\r\n this.typedParamsSet = true;\r\n }\r\n //#endregion \"parameters\"\r\n\r\n //#region \"unsaved changes guard\"\r\n getDefaultChangesWillBeLostMessageOptions(): ModalOptions {\r\n return YesNoCancelModalService.getDefaultYesNoModalOptions();\r\n }\r\n\r\n hasUnsavedChanges(): boolean {\r\n return this.allowReordering && this.rowOrderHasChanged;\r\n }\r\n\r\n navigationCancelled(): void {\r\n // nothing needed here\r\n }\r\n //#endregion \"unsaved changes guard\"\r\n\r\n //#region \"handle reset\"\r\n protected resetSortOrder(): void {\r\n // nothing to do\r\n }\r\n\r\n protected resetCompleted() {\r\n super.resetCompleted();\r\n this.model.searchResults = null;\r\n this.model.lastSearchParams = null;\r\n this.typedParamsSet = false;\r\n this.allowReordering = false;\r\n this.rowOrderHasChanged = false;\r\n }\r\n //#endregion \"handle reset\"\r\n\r\n protected loadInitialResources(): Observable {\r\n this.appService.hideMenu();\r\n this.appService.clearMessages();\r\n\r\n return this.nominationSystemService.pipelineGasDay()\r\n .pipe(\r\n tap(pipelineGasDay => {\r\n if (!pipelineGasDay.hasGasDayCycles()) {\r\n this.alertService.addWarnMessage(\"Warning\", \"No Gas Day Cycles found for pipeline\");\r\n }\r\n\r\n this.model.gasDay = pipelineGasDay.allowableGasDay;\r\n this.model.minGasDay = pipelineGasDay.minGasDayForCycleStatus;\r\n this.model.maxGasDay = pipelineGasDay.maxGasDayForCycleStatus;\r\n }));\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n return this.gasCycleService.queryGasDayCycleStatusesFor(this.model.searchParams.gasDay)\r\n .pipe(\r\n tap(gasDayCycleStatuses => {\r\n this.model.gasDayCycleStatuses = gasDayCycleStatuses;\r\n this.model.gasCycles = gasDayCycleStatuses.gasCycles();\r\n this.model.launchedGasCycles = gasDayCycleStatuses.defaultGasDayCycleStatuses().gasCycles();\r\n\r\n if (!this.model.searchParams.gasCycleCode) {\r\n this.model.searchParams.gasCycleCode = this.defaultGasCycleCode();\r\n }\r\n }));\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n return this.performSearchWithLastSearchParams();\r\n }\r\n\r\n protected performSearchWithLastSearchParams(): Observable {\r\n const request = new SegmentProcessOrderQueryRequest();\r\n request.gasDay = this.model.searchParams.gasDay;\r\n request.gasCycleCode = GasCycleLogic.buildGasCycleCodeForRequest(this.model.gasDayCycleStatuses, this.model.searchParams.gasCycleCode);\r\n\r\n this.setCurrentGasCycleStatus();\r\n this.allowReordering = this.determineIfReorderingAllowed();\r\n this.rowOrderHasChanged = false;\r\n\r\n return this.segmentProcessOrderService\r\n .querySegmentProcessOrder(request)\r\n .pipe(\r\n tap(response => {\r\n this.model.searchResults = _.orderBy(response, x => x.capacityAllocationOrder);\r\n })\r\n );\r\n }\r\n\r\n public submitClicked(): void {\r\n this.alertService.clearMessages();\r\n let newSequence = 0;\r\n this.model.searchResults.forEach(r => {\r\n newSequence += 10;\r\n r.capacityAllocationOrder = newSequence;\r\n });\r\n this.segmentProcessOrderService\r\n .updateSegmentProcessOrdering(this.model.lastSearchParams.gasDay, this.model.lastSearchParams.gasCycleCode, this.model.searchResults)\r\n .pipe(\r\n concatMap(() => this.performSearchWithLastSearchParams())\r\n )\r\n .subscribe(\r\n _result => {\r\n this.alertService.addSuccessMessage('Info', 'Updated segment process ordering has been submitted.');\r\n }\r\n // HTTP intercept will take care of displaying any error messages\r\n );\r\n }\r\n\r\n //#region \"page event handlers\"\r\n public gasCyclePlaceholder(): string {\r\n return GasCycleLogic.placeholder(this.model.gasDayCycleStatuses);\r\n }\r\n\r\n public isGasCycleRequired(): boolean {\r\n return GasCycleLogic.isRequired(this.model.gasDayCycleStatuses);\r\n }\r\n\r\n public onGasDayChanged(): void {\r\n // Refresh page options\r\n // this will be fired even when a null value is returned from the date picker and don't want to reload with a bad date\r\n if (!this.model.searchParams.gasDay) return;\r\n\r\n // This will force the GasCycle to get set to the default for the GasDay.\r\n this.model.searchParams.gasCycleCode = null;\r\n\r\n // Do nothing on subscription, we just want the drop downs to be reloaded\r\n this.loadSearchResources().subscribe(() => {});\r\n }\r\n\r\n public onReorder(e): void {\r\n const visibleRows = e.component.getVisibleRows();\r\n const toIndex = this.model.searchResults.findIndex((item) => item.id === visibleRows[e.toIndex].data.id);\r\n const fromIndex = this.model.searchResults.findIndex((item) => item.id === e.itemData.id);\r\n\r\n this.model.searchResults.splice(fromIndex, 1);\r\n this.model.searchResults.splice(toIndex, 0, e.itemData);\r\n\r\n this.rowOrderHasChanged = true;\r\n } //#endregion \"page event handlers\"\r\n\r\n private defaultGasCycleCode(): string {\r\n if (this.typedParamsSet && !_.isNil(this.model.searchParams.gasCycleCode)\r\n && _.includes(this.model.launchedGasCycles.map(x => x.code), this.model.searchParams.gasCycleCode)) {\r\n this.typedParamsSet = false;\r\n return this.model.searchParams.gasCycleCode;\r\n }\r\n\r\n return GasCycleLogic.defaultGasCycleCode(this.model.gasDayCycleStatuses,\r\n this.model.gasDayCycleStatuses.defaultEarliestNonScheduled(true)?.gasCycle);\r\n }\r\n\r\n private setCurrentGasCycleStatus() : void {\r\n const currentCycleStatus = this.model.gasDayCycleStatuses.getGasDayCycleStatus(this.model.lastSearchParams.gasCycleCode);\r\n if(!_.isNil(currentCycleStatus))\r\n this.model.currentCycleStatus = currentCycleStatus;\r\n }\r\n\r\n private determineIfReorderingAllowed(): boolean {\r\n if (!this.model.lastSearchParams || !this.model.currentCycleStatus) return false;\r\n\r\n if (!this.model.lastSearchParams.gasCycleCode) return false; // EOD\r\n\r\n if (!this.model.gasDayCycleStatuses.isGasDayLaunched()) return false;\r\n\r\n if (this.model.currentCycleStatus.isScheduled) return false;\r\n if (this.model.currentCycleStatus.isCapacityAllocationAuthorized()) return false;\r\n\r\n if (this.model.lastSearchParams.gasCycleCode === GasCycle.TimelyCycleCode) {\r\n return true;\r\n }\r\n\r\n // otherwise for evening/intraday, previous cycle needs to have been authorized or scheduled\r\n return this.model.gasDayCycleStatuses.isPreviousCycleScheduled(this.model.lastSearchParams.gasCycleCode)\r\n || this.model.gasDayCycleStatuses.isPreviousCycleAuthorized(this.model.lastSearchParams.gasCycleCode);\r\n }\r\n}\r\n","import {Route} from \"@angular/router\";\r\nimport {AuthorizationService} from \"@shared/services/webapp/authorization/authorization.service\";\r\nimport {AutoBalanceEventsComponent} from \"./auto-balance-events/auto-balance-events.component\";\r\nimport {NominationRequestsComponent} from \"./nomination-requests/nomination-requests.component\";\r\nimport {GasDayMonitorComponent} from \"./gasday-monitor/gasday-monitor.component\";\r\nimport {TransportationSummaryComponent} from \"./transportation-summary/transportation-summary.component\";\r\nimport {ConfirmationMonitorComponent} from './confirmation-monitor/confirmation-monitor.component';\r\nimport {ConfirmationDetailsComponent} from \"./confirmation-details/confirmation-details.component\";\r\nimport {AccountSummaryComponent} from \"./account-summary/account-summary.component\";\r\nimport {ConfirmationHistoryComponent} from './confirmation-history/confirmation-history.component';\r\nimport {ConfirmationEventHistoryComponent} from \"./confirmation-event-history/confirmation-event-history.component\";\r\nimport {NominationExceptionsComponent} from \"./nomination-exceptions/nomination-exceptions.component\";\r\nimport {StorageLimitMaintenanceComponent} from \"./storage-limit-maintenance/storage-limit-maintenance.component\";\r\nimport {TitleTransferReportComponent} from \"./title-transfer-report/title-transfer-report.component\";\r\nimport {UnsavedChangesService} from \"@shared/services/webapp/unsaved-changes/unsaved-changes.service\";\r\nimport {AutoBalanceDetailsComponent} from \"./auto-balance-details/auto-balance-details.component\";\r\nimport {UploadNominationRequestsComponent} from \"./nomination-requests/upload-nomination-requests/upload-nomination-requests.component\";\r\nimport {TitleTransferWaiversComponent} from \"./title-transfer-waivers/title-transfer-waivers.component\";\r\nimport {ConfirmationResponseComponent} from \"./confirmation-response/confirmation-response.component\";\r\nimport {PendingStsNominationsComponent} from \"./gasday-monitor/pending-sts-nominations/pending-sts-nominations.component\";\r\nimport {ScheduledQuantityAdjustmentsComponent} from \"app/gcts/nomination/scheduled-quantity-adjustments/scheduled-quantity-adjustments.component\";\r\nimport {ImbalanceTransferTransactionsComponent} from \"app/gcts/nomination/imbalance-transfer-transactions/imbalance-transfer-transactions.component\";\r\nimport {MinimumItBidRateComponent} from \"app/gcts/nomination/minimum-it-bid-rate/minimum-it-bid-rate.component\";\r\nimport {CustodyTransferReportComponent} from \"app/gcts/nomination/custody-transfer-report/custody-transfer-report.component\";\r\nimport {BfpDailyTransportationSummaryComponent} from \"app/gcts/nomination/bfp-daily-transportation-summary/bfp-daily-transportation-summary.component\";\r\nimport {ContractUtilizationComponent} from \"app/gcts/nomination/contract-utilization/contract-utilization.component\";\r\nimport {ITBidFloorAverageReportComponent} from \"app/gcts/nomination/it-bid-floor-average-report/it-bid-floor-average-report.component\";\r\nimport {ImbalanceTradeRequestsComponent} from \"app/gcts/nomination/imbalance-trade-requests/imbalance-trade-requests.component\";\r\nimport {AvailableCapacityComponent} from \"app/gcts/nomination/available-capacity/available-capacity.component\";\r\nimport {CapacityAllocationSummaryComponent} from \"app/gcts/nomination/capacity-allocation-summary/capacity-allocation-summary.component\";\r\nimport {CapacityAllocationDetailsComponent} from \"app/gcts/nomination/capacity-allocation-details/capacity-allocation-details.component\";\r\nimport {CapacityAllocationSegmentOrderComponent} from \"app/gcts/nomination/capacity-allocation-segment-order/capacity-allocation-segment-order.component\";\r\n\r\nexport const NominationRoutes: Route[] = [\r\n {\r\n path: 'nominationrequests',\r\n component: NominationRequestsComponent,\r\n canActivate: [AuthorizationService],\r\n canDeactivate: [UnsavedChangesService],\r\n runGuardsAndResolvers: 'always', // TODO: Change this to 'pathParamsOrQueryParamsChange' when we are on Angular 7.2\r\n data: {capabilities: ['NominationRequests-Read']}\r\n },\r\n {\r\n path: 'gasdaymonitor',\r\n component: GasDayMonitorComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['GasCycleStatus-Read']}\r\n },\r\n {\r\n path: 'transportationsummary',\r\n component: TransportationSummaryComponent,\r\n canActivate: [AuthorizationService],\r\n canDeactivate: [UnsavedChangesService],\r\n runGuardsAndResolvers: 'always',\r\n data: {capabilities: ['TransportationSummary-Internal-Read', 'TransportationSummary-External-Read', 'TransportationSummary-Write']}\r\n },\r\n {\r\n path: 'confirmationmonitor',\r\n component: ConfirmationMonitorComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['ConfirmationMonitor-Read']}\r\n },\r\n {\r\n path: 'confirmationdetails',\r\n component: ConfirmationDetailsComponent,\r\n canActivate: [AuthorizationService],\r\n canDeactivate: [UnsavedChangesService],\r\n runGuardsAndResolvers: 'always',\r\n data: {capabilities: ['ConfirmationDetails-Read']}\r\n },\r\n {\r\n path: 'confirmationhistory',\r\n component: ConfirmationHistoryComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['ConfirmationHistory-Read']}\r\n },\r\n {\r\n path: 'confirmationeventhistory',\r\n component: ConfirmationEventHistoryComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['ConfirmationDetails-Read']}\r\n },\r\n {\r\n path: 'accountSummary',\r\n component: AccountSummaryComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['AccountSummary-Read']}\r\n },\r\n {\r\n path: 'nominationexceptions',\r\n component: NominationExceptionsComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['NominationExceptions-Read']}\r\n },\r\n {\r\n path: 'storagelimitmaintenance',\r\n component: StorageLimitMaintenanceComponent,\r\n canActivate: [AuthorizationService],\r\n canDeactivate: [UnsavedChangesService],\r\n runGuardsAndResolvers: 'always',\r\n data: {capabilities: ['StorageLimit-Internal-Read', 'StorageLimit-External-Read']}\r\n },\r\n {\r\n path: 'titletransferreport',\r\n component: TitleTransferReportComponent,\r\n canActivate: [AuthorizationService],\r\n canDeactivate: [UnsavedChangesService],\r\n runGuardsAndResolvers: 'always',\r\n data: {capabilities: ['TitleTransferReport-Read']}\r\n },\r\n {\r\n path: 'titletransferwaivers',\r\n component: TitleTransferWaiversComponent,\r\n canActivate: [AuthorizationService],\r\n canDeactivate: [UnsavedChangesService],\r\n runGuardsAndResolvers: 'always',\r\n data: {capabilities: ['TitleTransferWaivers-Read']}\r\n },\r\n {\r\n path: 'autobalanceevents',\r\n component: AutoBalanceEventsComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['AutoBalanceEvents-Read']}\r\n },\r\n {\r\n path: 'autobalancedetails',\r\n component: AutoBalanceDetailsComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['AutoBalanceDetails-Read']}\r\n },\r\n {\r\n path: 'uploadnominationrequests',\r\n component: UploadNominationRequestsComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['NominationRequests-Write']}\r\n },\r\n {\r\n path: 'confirmationresponse',\r\n component: ConfirmationResponseComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['ConfirmationDetails-Read']}\r\n },\r\n {\r\n path: 'pendingstsnominations',\r\n component: PendingStsNominationsComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['PendingStsNominations-Read']}\r\n },\r\n {\r\n path: 'scheduledquantityadjustments',\r\n component: ScheduledQuantityAdjustmentsComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['ScheduledQuantityAdjustments-Read']}\r\n },\r\n {\r\n path: 'imbalancetransfertransactions',\r\n component: ImbalanceTransferTransactionsComponent,\r\n canActivate: [AuthorizationService],\r\n canDeactivate: [UnsavedChangesService],\r\n runGuardsAndResolvers: 'always',\r\n data: {capabilities: ['ImbalanceTransferTransactions-Read']}\r\n },\r\n {\r\n path: 'minimumitbidrate',\r\n component: MinimumItBidRateComponent,\r\n canActivate: [AuthorizationService],\r\n runGuardsAndResolvers: 'always',\r\n data: {capabilities: ['MinimumItBidRate-Read']}\r\n },\r\n {\r\n path: 'custodytransferreport',\r\n component: CustodyTransferReportComponent,\r\n canActivate: [AuthorizationService],\r\n runGuardsAndResolvers: 'always',\r\n data: {capabilities: ['CustodyTransferReport-Read']}\r\n },\r\n {\r\n path: 'bfpdailytransportationsummary',\r\n component: BfpDailyTransportationSummaryComponent,\r\n canActivate: [AuthorizationService],\r\n runGuardsAndResolvers: 'always',\r\n data: {capabilities: ['BfpDailyTransportationSummary-Read']}\r\n },\r\n {\r\n path: 'itbidflooraveragereport',\r\n component: ITBidFloorAverageReportComponent,\r\n canActivate: [AuthorizationService],\r\n runGuardsAndResolvers: 'always',\r\n data: {capabilities: ['ITBidFloorAverageReport-Read']}\r\n },\r\n {\r\n path: 'contractutilizationreport',\r\n component: ContractUtilizationComponent,\r\n canActivate: [AuthorizationService],\r\n runGuardsAndResolvers: 'always',\r\n data: {capabilities: ['ContractUtilization-Read']}\r\n },\r\n {\r\n path: 'imbalancetraderequests',\r\n component: ImbalanceTradeRequestsComponent,\r\n canActivate: [AuthorizationService],\r\n runGuardsAndResolvers: 'always',\r\n data: {capabilities: ['ImbalanceTradeRequests-Read']}\r\n },\r\n {\r\n path: 'availablecapacity',\r\n component: AvailableCapacityComponent,\r\n canActivate: [AuthorizationService],\r\n runGuardsAndResolvers: 'always',\r\n data: {capabilities: ['AvailableCapacity-Read']}\r\n },\r\n {\r\n path: 'capacityallocationsummary',\r\n component: CapacityAllocationSummaryComponent,\r\n canActivate: [AuthorizationService],\r\n canDeactivate: [UnsavedChangesService],\r\n runGuardsAndResolvers: 'always',\r\n data: {capabilities: ['CapacityAllocationSummary-Read']}\r\n },\r\n {\r\n path: 'capacityallocationdetails',\r\n component: CapacityAllocationDetailsComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['CapacityAllocationDetails-Read']}\r\n },\r\n {\r\n path: 'capacityallocationsegmentorder',\r\n component: CapacityAllocationSegmentOrderComponent,\r\n canActivate: [AuthorizationService],\r\n canDeactivate: [UnsavedChangesService],\r\n runGuardsAndResolvers: 'always',\r\n data: {capabilities: ['CapacityAllocationSegmentOrder-Read']}\r\n }\r\n];\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n Browse...\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
{{ model.response?.recordsRead }}
\r\n \r\n
{{ model.response?.recordsAdded }}
\r\n
\r\n
\r\n \r\n
{{ model.response?.recordsWithError }}
\r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n\r\n","import {Component, OnInit} from '@angular/core';\r\nimport {BaseComponent} from '@model/base-component';\r\nimport {AppService} from '@shared/services/webapp/app/app.service';\r\nimport {\r\n LocationService, LocationRow,\r\n LocationsUploadParameters, LocationsUploadResponse\r\n} from '@shared/services/common-data/location/location.service';\r\nimport {AlertService} from \"app/shared/services/webapp/alert/alert.service\";\r\nimport {CsvUtility, BaseCsvUploadViewModel} from \"@model/CsvUtility\";\r\nimport {Router} from '@angular/router';\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\n\r\nexport class LocationsUploadViewModel extends BaseCsvUploadViewModel {\r\n public extractedData: Array;\r\n response: LocationsUploadResponse;\r\n}\r\n\r\n@Component({\r\n selector: 'app-load-locations',\r\n templateUrl: './load-locations.component.html',\r\n styleUrls: ['./load-locations.component.css'],\r\n providers: [CsvUtility]\r\n})\r\nexport class LoadLocationsComponent extends BaseComponent implements OnInit {\r\n\r\n // csvHeaders must be in the same order as LocationRow's constructor parameters.\r\n csvHeaders = [\r\n 'Location Id', 'Pipeline System', 'Location Name', 'Operator Mnemonic', 'Location Type',\r\n 'IsExport', 'IsPressurePoint', 'Nom Group', 'On Stream Gas Day', 'SPG Id', 'GMS Id', 'DRN Id'\r\n ];\r\n\r\n model: LocationsUploadViewModel;\r\n pipelineCode: string;\r\n\r\n constructor(protected appService: AppService,\r\n private locationService: LocationService,\r\n private alertService: AlertService,\r\n private csvUtility: CsvUtility,\r\n private sessionService: SessionService,\r\n private router: Router) {\r\n super(appService);\r\n }\r\n\r\n ngOnInit() {\r\n super.setTitle('Load Locations');\r\n\r\n this.appService.hideMenu();\r\n this.appService.clearMessages();\r\n\r\n this.pipelineCode = this.sessionService.getPipeline().code;\r\n this.initModel();\r\n }\r\n\r\n public getTitle(): string { // To get rid of annoying lint error.\r\n return super.getTitle();\r\n }\r\n\r\n public isValidFile(): boolean {\r\n return this.model.isValidFile();\r\n }\r\n\r\n private initModel(): void {\r\n this.model = new LocationsUploadViewModel();\r\n this.model.fileName = '';\r\n this.model.error = '';\r\n this.model.isValid = false;\r\n this.model.extractedData = null;\r\n this.model.response = null;\r\n }\r\n\r\n public updateClick(e) {\r\n if (e.target.files.length > 0) {\r\n const reader = new FileReader();\r\n reader.onload = (event: any) => this.extractData(e.target.files[0].name, event.target.result);\r\n reader.readAsText(e.target.files[0]);\r\n }\r\n }\r\n\r\n uploadClicked() {\r\n if (this.model.extractedData !== null) {\r\n this.alertService.clearMessages();\r\n const parameters = new LocationsUploadParameters(this.model.extractedData);\r\n this.route = this.router.routerState.snapshot.url;\r\n\r\n this.locationService.set(parameters)\r\n .subscribe(\r\n response => {\r\n this.model.response = response;\r\n this.model.error = '';\r\n if (this.route === this.router.routerState.snapshot.url) {\r\n this.alertService.addSuccessMessage('Upload successful',\r\n (this.model.response.results && this.model.response.results.length > 0) ?\r\n `${this.model.fileName} uploaded with ${this.model.response.results.length} errors.` :\r\n `${this.model.fileName} uploaded.`);\r\n }\r\n });\r\n }\r\n }\r\n\r\n resetClicked() {\r\n this.initModel();\r\n this.alertService.clearMessages();\r\n }\r\n\r\n hoverOver() {\r\n return this.model.error;\r\n }\r\n\r\n protected extractData(fileName: string, data: string) {\r\n this.resetClicked();\r\n this.model.fileName = fileName;\r\n this.csvUtility.extractData(data, this.model, this.csvHeaders, this.processRows);\r\n }\r\n\r\n private processRows = (result: Array>, fields: Array) => {\r\n const colIndices = new Array();\r\n this.csvHeaders.forEach((header) => colIndices.push(this.csvUtility.findColumnHeaderColumn(fields, header)));\r\n\r\n let rowIndex = 0;\r\n this.model.extractedData = new Array();\r\n result.forEach((row: Array) => {\r\n this.model.extractedData.push(new LocationRow(\r\n ++rowIndex,\r\n row[colIndices[0]],\r\n row[colIndices[1]],\r\n row[colIndices[2]],\r\n row[colIndices[3]],\r\n row[colIndices[4]],\r\n row[colIndices[5]],\r\n row[colIndices[6]],\r\n row[colIndices[7]],\r\n row[colIndices[8]],\r\n row[colIndices[9]],\r\n row[colIndices[10]],\r\n row[colIndices[11]],\r\n this.pipelineCode,\r\n 'OnStream'\r\n ));\r\n });\r\n };\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n Browse...\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
{{ model.response?.recordsRead }}
\r\n \r\n
{{ model.response?.recordsAdded }}
\r\n
\r\n
\r\n \r\n
{{ model.response?.recordsWithError }}
\r\n
\r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n\r\n\r\n","import {Component, OnInit} from '@angular/core';\r\nimport {BaseComponent} from '@model/base-component';\r\nimport {AppService} from '@shared/services/webapp/app/app.service';\r\nimport {\r\n LocationService, LocationParameterRow,\r\n LocationParametersUploadParameters, LocationParametersUploadResponse\r\n} from '@shared/services/common-data/location/location.service';\r\nimport {AlertService} from \"app/shared/services/webapp/alert/alert.service\";\r\nimport {CsvUtility, BaseCsvUploadViewModel} from \"@model/CsvUtility\";\r\nimport {Router} from '@angular/router';\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\n\r\nexport class LocationParametersUploadViewModel extends BaseCsvUploadViewModel {\r\n public extractedData: Array;\r\n response: LocationParametersUploadResponse;\r\n}\r\n\r\n@Component({\r\n selector: 'app-load-location-parameters',\r\n templateUrl: './load-location-parameters.component.html',\r\n styleUrls: ['./load-location-parameters.component.css'],\r\n providers: [CsvUtility]\r\n})\r\nexport class LoadLocationParametersComponent extends BaseComponent implements OnInit {\r\n\r\n // csvHeaders must be in the same order as LocationParameterRow's constructor parameters.\r\n csvHeaders = [\r\n 'Account Location Name', 'Effective Gas Day', 'Expiry Gas Day', 'IsMeasurementLocation', 'AllocationMethod',\r\n 'Province', 'STS Long Haul', 'PhysicalFlowDirection', 'DoesTCPLInitiateConfirmation', 'ConfirmationUOM',\r\n 'IsPackageIdConfirmed', 'IsStandingRequestUsed', 'IsExport', 'IsPressurePoint', 'IsNominationsAllowed',\r\n 'ConfirmationMethod', 'IsConfirmationByEDI', 'OverrideAllowed', 'IsReceipt', 'IsDelivery', 'IsVirtual',\r\n 'IsTBONominationAllowed', 'IsCVAllowed', 'ConfirmAccountLocationName', 'AreSTSCyclesConfirmed', 'ReportOnGdsr',\r\n 'ReportOnUhf', 'IsManualHourlySqForUhf', 'IsSecondaryHubNomAllowed', 'ShowFlowRateOnConfirmation', 'EdiConfirmationMethod',\r\n 'NgtlLocationNumber', 'NgtlLocationMnemonic'];\r\n\r\n model: LocationParametersUploadViewModel;\r\n pipelineCode: string;\r\n\r\n constructor(protected appService: AppService,\r\n private locationService: LocationService,\r\n private alertService: AlertService,\r\n private csvUtility: CsvUtility,\r\n private sessionService: SessionService,\r\n private router: Router) {\r\n super(appService);\r\n }\r\n\r\n ngOnInit() {\r\n super.setTitle('Load Location Parameters');\r\n\r\n this.appService.hideMenu();\r\n this.appService.clearMessages();\r\n\r\n this.pipelineCode = this.sessionService.getPipeline().code;\r\n this.initModel();\r\n }\r\n\r\n public getTitle(): string { // To get rid of annoying lint error.\r\n return super.getTitle();\r\n }\r\n\r\n public isValidFile(): boolean {\r\n return this.model.isValidFile();\r\n }\r\n\r\n private initModel(): void {\r\n this.model = new LocationParametersUploadViewModel();\r\n this.model.fileName = '';\r\n this.model.error = '';\r\n this.model.isValid = false;\r\n this.model.extractedData = null;\r\n this.model.response = null;\r\n }\r\n\r\n public updateClick(e) {\r\n if (e.target.files.length > 0) {\r\n const reader = new FileReader();\r\n reader.onload = (event: any) => this.extractData(e.target.files[0].name, event.target.result);\r\n reader.readAsText(e.target.files[0]);\r\n }\r\n }\r\n\r\n uploadClicked() {\r\n if (this.model.extractedData !== null) {\r\n this.alertService.clearMessages();\r\n const parameters = new LocationParametersUploadParameters(this.model.extractedData);\r\n this.route = this.router.routerState.snapshot.url;\r\n\r\n this.locationService.publishLocationParameters(parameters)\r\n .subscribe(\r\n response => {\r\n this.model.response = response;\r\n this.model.error = '';\r\n if (this.route === this.router.routerState.snapshot.url) {\r\n this.alertService.addSuccessMessage('Upload successful',\r\n (this.model.response.results && this.model.response.results.length > 0) ?\r\n `${this.model.fileName} uploaded with ${this.model.response.results.length} errors.` :\r\n `${this.model.fileName} uploaded.`);\r\n }\r\n });\r\n }\r\n }\r\n\r\n resetClicked() {\r\n this.initModel();\r\n this.alertService.clearMessages();\r\n }\r\n\r\n hoverOver() {\r\n return this.model.error;\r\n }\r\n\r\n protected extractData(fileName: string, data: string) {\r\n this.resetClicked();\r\n this.model.fileName = fileName;\r\n this.csvUtility.extractData(data, this.model, this.csvHeaders, this.processRows);\r\n }\r\n\r\n private processRows = (result: Array>, fields: Array) => {\r\n const colIndices = new Array();\r\n this.csvHeaders.forEach((header) => colIndices.push(this.csvUtility.findColumnHeaderColumn(fields, header)));\r\n\r\n let rowIndex = 0;\r\n this.model.extractedData = new Array();\r\n result.forEach((row: Array) => {\r\n this.model.extractedData.push(new LocationParameterRow(\r\n ++rowIndex,\r\n row[colIndices[0]],\r\n row[colIndices[1]],\r\n row[colIndices[2]],\r\n row[colIndices[3]],\r\n row[colIndices[4]],\r\n row[colIndices[5]],\r\n row[colIndices[6]],\r\n row[colIndices[7]],\r\n row[colIndices[8]],\r\n row[colIndices[9]],\r\n row[colIndices[10]],\r\n row[colIndices[11]],\r\n row[colIndices[12]],\r\n row[colIndices[13]],\r\n row[colIndices[14]],\r\n row[colIndices[15]],\r\n row[colIndices[16]],\r\n row[colIndices[17]],\r\n row[colIndices[18]],\r\n row[colIndices[19]],\r\n row[colIndices[20]],\r\n row[colIndices[21]],\r\n row[colIndices[22]],\r\n row[colIndices[23]],\r\n row[colIndices[24]],\r\n row[colIndices[25]],\r\n row[colIndices[26]],\r\n row[colIndices[27]],\r\n row[colIndices[28]],\r\n row[colIndices[29]],\r\n row[colIndices[30]],\r\n row[colIndices[31]],\r\n row[colIndices[32]]\r\n ));\r\n });\r\n };\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n Browse...\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
{{ model.response?.recordsRead }}
\r\n \r\n
{{ model.response?.recordsAdded }}
\r\n
\r\n
\r\n \r\n
{{ model.response?.recordsWithError }}
\r\n
\r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport {BaseCsvUploadViewModel, CsvUtility} from \"@model/CsvUtility\";\r\nimport {BaseComponent} from \"@model/base-component\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {\r\n LocationRelationshipRow, LocationRelationshipsUploadParameters,\r\n LocationRelationshipsUploadResponse,\r\n LocationService\r\n} from \"@shared/services/common-data/location/location.service\";\r\nimport {AlertService} from \"app/shared/services/webapp/alert/alert.service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {Router} from '@angular/router';\r\n\r\nexport class LocationRelationshipsUploadViewModel extends BaseCsvUploadViewModel {\r\n public extractedData: Array;\r\n response: LocationRelationshipsUploadResponse;\r\n}\r\n\r\n@Component({\r\n selector: 'app-load-location-relationships',\r\n templateUrl: './load-location-relationships.component.html',\r\n styleUrls: ['./load-location-relationships.component.css'],\r\n providers: [CsvUtility]\r\n})\r\nexport class LoadLocationRelationshipsComponent extends BaseComponent implements OnInit {\r\n\r\n csvHeaders = [\r\n 'Accounting Location', 'Detail Location', 'Effective Gas Day', 'Expiry Gas Day'\r\n ];\r\n\r\n model: LocationRelationshipsUploadViewModel;\r\n pipelineCode: string;\r\n\r\n constructor(protected appService: AppService,\r\n private locationService: LocationService,\r\n private alertService: AlertService,\r\n private csvUtility: CsvUtility,\r\n private sessionService: SessionService,\r\n private router: Router) {\r\n super(appService);\r\n }\r\n\r\n ngOnInit() {\r\n super.setTitle('Load Location Relationships');\r\n this.pipelineCode = this.sessionService.getPipeline().code;\r\n this.initModel();\r\n }\r\n\r\n uploadClicked() {\r\n if (this.model.extractedData !== null) {\r\n this.alertService.clearMessages();\r\n const parameters = new LocationRelationshipsUploadParameters(this.model.extractedData);\r\n this.route = this.router.routerState.snapshot.url;\r\n\r\n this.locationService.publishLocationRelationships(parameters)\r\n .subscribe(\r\n response => {\r\n this.model.response = response;\r\n this.model.error = '';\r\n if (this.route === this.router.routerState.snapshot.url) {\r\n this.alertService.addSuccessMessage('Upload successful',\r\n (this.model.response.results && this.model.response.results.length > 0) ?\r\n `${this.model.fileName} uploaded with ${this.model.response.results.length} errors.` :\r\n `${this.model.fileName} uploaded.`);\r\n }\r\n });\r\n }\r\n }\r\n\r\n resetClicked() {\r\n this.initModel();\r\n this.alertService.clearMessages();\r\n }\r\n\r\n hoverOver() {\r\n return this.model.error;\r\n }\r\n\r\n public getTitle(): string { // To get rid of annoying lint error.\r\n return super.getTitle();\r\n }\r\n\r\n public isValidFile(): boolean {\r\n return this.model.isValidFile();\r\n }\r\n\r\n private initModel(): void {\r\n this.model = new LocationRelationshipsUploadViewModel();\r\n this.model.fileName = '';\r\n this.model.error = '';\r\n this.model.isValid = false;\r\n this.model.extractedData = null;\r\n this.model.response = null;\r\n }\r\n\r\n public updateClick(e) {\r\n if (e.target.files.length > 0) {\r\n const reader = new FileReader();\r\n reader.onload = (event: any) => this.extractData(e.target.files[0].name, event.target.result);\r\n reader.readAsText(e.target.files[0]);\r\n }\r\n }\r\n protected extractData(fileName: string, data: string) {\r\n this.resetClicked();\r\n this.model.fileName = fileName;\r\n this.csvUtility.extractData(data, this.model, this.csvHeaders, this.processRows);\r\n }\r\n\r\n private processRows = (result: Array>, fields: Array) => {\r\n const colIndices = new Array();\r\n this.csvHeaders.forEach((header) => colIndices.push(this.csvUtility.findColumnHeaderColumn(fields, header)));\r\n\r\n let rowIndex = 0;\r\n this.model.extractedData = new Array();\r\n result.forEach((row: Array) => {\r\n this.model.extractedData.push(new LocationRelationshipRow(\r\n ++rowIndex,\r\n row[colIndices[0]],\r\n row[colIndices[1]],\r\n row[colIndices[2]],\r\n row[colIndices[3]]\r\n ));\r\n });\r\n };\r\n\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n Browse...\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
{{ model.response?.recordsRead }}
\r\n \r\n
{{ model.response?.recordsAdded }}
\r\n
\r\n
\r\n \r\n
{{ model.response?.recordsWithError }}
\r\n
\r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {BaseCsvUploadViewModel, CsvUtility} from \"@model/CsvUtility\";\r\nimport {AlertService} from \"app/shared/services/webapp/alert/alert.service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {Router} from '@angular/router';\r\nimport {\r\n LBALocationTolerancepRow, LBALocationTolerancesUploadParameters, LBALocationTolerancesUploadResponse,\r\n FlowingGasLocationService\r\n} from \"@shared/services/flowing-gas/location/flowing-gas-location.service\";\r\nimport {BaseComponent} from \"@model/base-component\";\r\n\r\nexport class LBALocationTolerancesUploadViewModel extends BaseCsvUploadViewModel {\r\n public extractedData: Array;\r\n response: LBALocationTolerancesUploadResponse;\r\n}\r\n\r\n@Component({\r\n selector: 'app-load-lba-location-tolerances',\r\n templateUrl: './load-lba-location-tolerances.component.html',\r\n styleUrls: ['./load-lba-location-tolerances.component.css'],\r\n providers: [CsvUtility]\r\n})\r\nexport class LoadLbaLocationTolerancesComponent extends BaseComponent implements OnInit {\r\n\r\n csvHeaders = [\r\n 'Location', 'Effective Gas Day', 'Expiry Gas Day', 'Quantity', 'Toll Type Code'\r\n ];\r\n\r\n model: LBALocationTolerancesUploadViewModel;\r\n pipelineCode: string;\r\n\r\n constructor(protected appService: AppService,\r\n private locationService: FlowingGasLocationService,\r\n private alertService: AlertService,\r\n private csvUtility: CsvUtility,\r\n private sessionService: SessionService,\r\n private router: Router) {\r\n super(appService);\r\n }\r\n\r\n ngOnInit() {\r\n super.setTitle('Load Lba Location Tolerances');\r\n this.pipelineCode = this.sessionService.getPipeline().code;\r\n this.initModel();\r\n }\r\n\r\n uploadClicked() {\r\n if (this.model.extractedData !== null) {\r\n this.alertService.clearMessages();\r\n const parameters = new LBALocationTolerancesUploadParameters(this.model.extractedData);\r\n this.route = this.router.routerState.snapshot.url;\r\n\r\n this.locationService.publishLBALocationTolerances(parameters)\r\n .subscribe(\r\n response => {\r\n this.model.response = response;\r\n this.model.error = '';\r\n if (this.route === this.router.routerState.snapshot.url) {\r\n this.alertService.addSuccessMessage('Upload successful',\r\n (this.model.response.results && this.model.response.results.length > 0) ?\r\n `${this.model.fileName} uploaded with ${this.model.response.results.length} errors.` :\r\n `${this.model.fileName} uploaded.`);\r\n }\r\n });\r\n }\r\n }\r\n\r\n resetClicked() {\r\n this.initModel();\r\n this.alertService.clearMessages();\r\n }\r\n\r\n hoverOver() {\r\n return this.model.error;\r\n }\r\n\r\n public getTitle(): string { // To get rid of annoying lint error.\r\n return super.getTitle();\r\n }\r\n\r\n public isValidFile(): boolean {\r\n return this.model.isValidFile();\r\n }\r\n\r\n public updateClick(e) {\r\n if (e.target.files.length > 0) {\r\n const reader = new FileReader();\r\n reader.onload = (event: any) => this.extractData(e.target.files[0].name, event.target.result);\r\n reader.readAsText(e.target.files[0]);\r\n }\r\n }\r\n\r\n protected extractData(fileName: string, data: string) {\r\n this.resetClicked();\r\n this.model.fileName = fileName;\r\n this.csvUtility.extractData(data, this.model, this.csvHeaders, this.processRows);\r\n }\r\n\r\n private initModel(): void {\r\n this.model = new LBALocationTolerancesUploadViewModel();\r\n this.model.fileName = '';\r\n this.model.error = '';\r\n this.model.isValid = false;\r\n this.model.extractedData = null;\r\n this.model.response = null;\r\n }\r\n\r\n private processRows = (result: Array>, fields: Array) => {\r\n const colIndices = new Array();\r\n this.csvHeaders.forEach((header) => colIndices.push(this.csvUtility.findColumnHeaderColumn(fields, header)));\r\n\r\n let rowIndex = 0;\r\n this.model.extractedData = new Array();\r\n result.forEach((row: Array) => {\r\n this.model.extractedData.push(new LBALocationTolerancepRow(\r\n ++rowIndex,\r\n row[colIndices[0]],\r\n row[colIndices[1]],\r\n row[colIndices[2]],\r\n row[colIndices[3]],\r\n row[colIndices[4]]\r\n ));\r\n });\r\n };\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {NominationResourceService} from \"@shared/resources/nominations-resource.service\";\r\nimport {Observable} from \"rxjs\";\r\nimport {GasDay} from \"@model/gas-day\";\r\n\r\nexport class SecondaryLocationsRow {\r\n rowNumber: string;\r\n pipeline: string;\r\n primaryContractReceiptPoint: string;\r\n primaryContractDeliveryPoint: string;\r\n secondaryLocation: string;\r\n nominationType: string;\r\n serviceType: string;\r\n effectiveGasDay: string;\r\n expiryGasDay: string;\r\n\r\n constructor(rowNumber: string, pipeline: string, primaryContractReceiptPoint: string, primaryContractDeliveryPoint: string,\r\n secondaryLocation: string, nominationType: string, serviceType: string, effectiveGasDay: string, expiryGasDay: string) {\r\n this.rowNumber = rowNumber;\r\n this.pipeline = pipeline;\r\n this.primaryContractDeliveryPoint = primaryContractDeliveryPoint;\r\n this.primaryContractReceiptPoint = primaryContractReceiptPoint;\r\n this.secondaryLocation = secondaryLocation;\r\n this.nominationType = nominationType;\r\n this.serviceType = serviceType;\r\n this.effectiveGasDay = effectiveGasDay;\r\n this.expiryGasDay = expiryGasDay;\r\n }\r\n}\r\n\r\nexport class SecondaryLocationsRowError {\r\n row: SecondaryLocationsRow;\r\n rowNumber: number;\r\n error: string;\r\n}\r\n\r\nexport class SecondaryLocationsResponse {\r\n linesInFile: string;\r\n linesChanged: string;\r\n linesSaved: string;\r\n linesIgnored: string;\r\n errors: SecondaryLocationsRowError[];\r\n\r\n constructor() {\r\n this.linesChanged = '0';\r\n this.linesInFile = '0';\r\n this.linesSaved = '0';\r\n this.linesIgnored = '0';\r\n this.errors = [];\r\n }\r\n}\r\n\r\nexport class SecondaryLocation {\r\n nominationType: string;\r\n effectiveGasDay: GasDay;\r\n expiryGasDay: GasDay;\r\n name: string;\r\n id: number;\r\n}\r\n\r\n@Injectable()\r\nexport class SecondaryLocationsService {\r\n constructor(private nominationResourceService: NominationResourceService) { }\r\n\r\n loadSecondaryLocations(rows: SecondaryLocationsRow[]): Observable {\r\n const body = {\r\n rows: rows\r\n };\r\n\r\n return this.nominationResourceService.post(`/loadsecondarylocations`, body, true);\r\n }\r\n}\r\n\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n Browse...\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
{{ model.loadSecondaryLocationsReponse?.linesInFile }}
\r\n \r\n
{{ model.loadSecondaryLocationsReponse?.linesSaved }}
\r\n
\r\n
\r\n \r\n
{{ model.loadSecondaryLocationsReponse?.linesChanged }}
\r\n \r\n
{{ model.loadSecondaryLocationsReponse?.linesIgnored }}
\r\n
\r\n
\r\n \r\n
{{ model.loadSecondaryLocationsReponse?.errors.length }}
\r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport {BaseComponent} from \"@model/base-component\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {CsvUtility} from '@model/CsvUtility';\r\nimport {AlertService} from \"app/shared/services/webapp/alert/alert.service\";\r\nimport {\r\n SecondaryLocationsResponse,\r\n SecondaryLocationsService,\r\n SecondaryLocationsRow\r\n} from \"@shared/services/nomination/secondary-locations/secondary-locations.service\";\r\n\r\nexport class SecondaryLocationsViewModel {\r\n fileName: string;\r\n isValid: boolean;\r\n error: string;\r\n loadSecondaryLocationsReponse: SecondaryLocationsResponse;\r\n}\r\n\r\n\r\n\r\n@Component({\r\n selector: 'app-load-secondary-locations',\r\n templateUrl: './load-secondary-locations.component.html',\r\n styleUrls: ['./load-secondary-locations.component.css'],\r\n providers: [CsvUtility]\r\n})\r\nexport class LoadSecondaryLocationsComponent extends BaseComponent implements OnInit {\r\n model: SecondaryLocationsViewModel;\r\n extractedData: SecondaryLocationsRow[];\r\n\r\n constructor(\r\n protected appService: AppService,\r\n private alertService: AlertService,\r\n private csvUtility: CsvUtility,\r\n private loadEndpointService: SecondaryLocationsService\r\n ) {\r\n super(appService);\r\n }\r\n\r\n ngOnInit() {\r\n super.setTitle('Load Secondary Locations');\r\n this.initModel();\r\n }\r\n\r\n private initModel(): void {\r\n this.model = new SecondaryLocationsViewModel();\r\n this.model.error = '';\r\n this.model.fileName = '';\r\n }\r\n\r\n uploadClicked() {\r\n if (!!this.extractedData) {\r\n this.loadEndpointService.loadSecondaryLocations(this.extractedData).subscribe(\r\n response => {\r\n this.model.loadSecondaryLocationsReponse = response;\r\n this.model.error = '';\r\n\r\n if (this.model.loadSecondaryLocationsReponse.errors !== undefined &&\r\n this.model.loadSecondaryLocationsReponse.errors.length > 0) {\r\n\r\n this.alertService.addSuccessMessage('Upload successful', this.model.fileName + ' uploaded with '\r\n + this.model.loadSecondaryLocationsReponse.errors.length + ' errors.');\r\n } else {\r\n this.alertService.addSuccessMessage('Upload successful', this.model.fileName + ' uploaded.');\r\n }\r\n });\r\n }\r\n }\r\n\r\n resetClicked() {\r\n this.extractedData = null;\r\n this.model.error = '';\r\n this.model.fileName = '';\r\n this.model.loadSecondaryLocationsReponse = null;\r\n this.alertService.clearMessages();\r\n }\r\n\r\n public isValidFile(model: SecondaryLocationsViewModel): boolean {\r\n if (model.fileName !== null && model.fileName !== '' && model.isValid) {\r\n return true;\r\n }\r\n }\r\n\r\n updateClick(e: any) {\r\n this.extractedData = new Array();\r\n if (e.target.files.length > 0) {\r\n this.model.fileName = e.target.files[0].name;\r\n\r\n const reader = new FileReader();\r\n\r\n reader.onload = (event: any) => {\r\n this.alertService.clearMessages();\r\n this.extractData(event.target.result, this.model);\r\n };\r\n\r\n reader.readAsText(e.target.files[0]);\r\n }\r\n }\r\n\r\n protected extractData(data: string, model: SecondaryLocationsViewModel) {\r\n const headers = ['Pipeline', 'Primary Contract Receipt Point', 'Primary Contract Delivery Point', 'Secondary Location',\r\n 'Nomination Type', 'Service Type', 'Effective Gas Day', 'Expiry Gas Day'];\r\n\r\n model.error = '';\r\n model.isValid = false;\r\n\r\n this.csvUtility.extractData(data, this.model, headers, (result, fields) => {\r\n for (let i = 0; i < result.length; i++) {\r\n this.extractedData.push(\r\n new SecondaryLocationsRow(\r\n (i + 1).toString(),\r\n result[i][this.csvUtility.findColumnHeaderColumn(fields, headers[0])],\r\n result[i][this.csvUtility.findColumnHeaderColumn(fields, headers[1])],\r\n result[i][this.csvUtility.findColumnHeaderColumn(fields, headers[2])],\r\n result[i][this.csvUtility.findColumnHeaderColumn(fields, headers[3])],\r\n result[i][this.csvUtility.findColumnHeaderColumn(fields, headers[4])],\r\n result[i][this.csvUtility.findColumnHeaderColumn(fields, headers[5])],\r\n result[i][this.csvUtility.findColumnHeaderColumn(fields, headers[6])],\r\n result[i][this.csvUtility.findColumnHeaderColumn(fields, headers[7])]));\r\n }\r\n });\r\n }\r\n\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport {BaseComponent} from \"@model/base-component\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {LocationService} from \"@shared/services/common-data/location/location.service\";\r\nimport {Location} from \"@shared/interfaces/location\";\r\nimport {AlertService} from \"app/shared/services/webapp/alert/alert.service\";\r\n\r\n\r\nexport class PublishAccountingLocationsModel {\r\n accountingLocations: Location[] = [];\r\n selectedAccountingLocationIds: number[];\r\n}\r\n\r\n@Component({\r\n selector: 'app-publish-accounting-locations',\r\n templateUrl: './publish-accounting-locations.component.html',\r\n styleUrls: ['./publish-accounting-locations.component.css']\r\n})\r\nexport class PublishAccountingLocationsComponent extends BaseComponent implements OnInit {\r\n\r\n model: PublishAccountingLocationsModel = new PublishAccountingLocationsModel();\r\n\r\n constructor(protected appService: AppService,\r\n private locationService: LocationService,\r\n private alertService: AlertService) {\r\n super(appService);\r\n }\r\n\r\n ngOnInit() {\r\n this.setTitle('Publish Accounting Locations');\r\n\r\n this.appService.hideMenu();\r\n this.appService.clearMessages();\r\n\r\n this.locationService.queryAccountingLocations().subscribe(locations => {\r\n this.model.accountingLocations = locations;\r\n });\r\n }\r\n\r\n searchClicked(): void {\r\n this.appService.clearMessages();\r\n\r\n this.locationService.publishAccountingLocations(this.model.selectedAccountingLocationIds).subscribe(() => {\r\n this.alertService.addSuccessMessage('Success', 'Published accounting location(s)');\r\n // TODO: Put success message in here\r\n });\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n","import { Injectable } from '@angular/core';\r\nimport {Observable} from \"rxjs\";\r\nimport {FlowinggasResourceService} from \"@shared/resources/flowinggas-resource.service\";\r\n\r\nexport class OMVRelationshipsUploadParameters {\r\n constructor(public rows: Array) { }\r\n}\r\n\r\nexport class OMVRelationshipRow {\r\n constructor(public lineNumber: number,\r\n public parentLocationName: string,\r\n public childLocationName: string,\r\n public effectiveGasDay: string,\r\n public expiryGasDay: string\r\n\r\n ) {}\r\n}\r\n\r\nexport class OMVRelationshipRowError extends OMVRelationshipRow {\r\n severity: string;\r\n message: string;\r\n}\r\n\r\nexport class OMVRelationshipsUploadResponse {\r\n recordsAdded = 0;\r\n recordsRead = 0;\r\n recordsWithError = 0;\r\n results = new Array();\r\n}\r\n\r\n@Injectable()\r\nexport class FlowingGasLoadOmvRelationshipsService {\r\n\r\n constructor(private flowinggasResource: FlowinggasResourceService) { }\r\n\r\n publishOMVRelationships(uploadParameters: OMVRelationshipsUploadParameters): Observable {\r\n return this.flowinggasResource.post('/gasAccount/relationships', uploadParameters.rows);\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n Browse...\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
{{ model.response?.recordsRead }}
\r\n \r\n
{{ model.response?.recordsAdded }}
\r\n
\r\n
\r\n \r\n
{{ model.response?.recordsWithError }}
\r\n
\r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport {BaseComponent} from \"@model/base-component\";\r\nimport {\r\n FlowingGasLoadOmvRelationshipsService,\r\n OMVRelationshipRow, OMVRelationshipsUploadParameters, OMVRelationshipsUploadResponse\r\n} from \"@shared/services/flowing-gas/flowing-gas-load-omv-relationships/flowing-gas-load-omv-relationships.service\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {AlertService} from \"app/shared/services/webapp/alert/alert.service\";\r\nimport {BaseCsvUploadViewModel, CsvUtility} from \"@model/CsvUtility\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {Router} from \"@angular/router\";\r\n\r\nexport class OMVRelationshipsUploadViewModel extends BaseCsvUploadViewModel {\r\n public extractedData: Array;\r\n response: OMVRelationshipsUploadResponse;\r\n}\r\n\r\n@Component({\r\n selector: 'app-load-omv-relationships',\r\n templateUrl: './load-omv-relationships.component.html',\r\n styleUrls: ['./load-omv-relationships.component.css'],\r\n providers: [CsvUtility]\r\n})\r\nexport class LoadOmvRelationshipsComponent extends BaseComponent implements OnInit {\r\n\r\n csvHeaders = [\r\n 'Parent Location', 'Child Location', 'EffectiveGasDay', 'ExpiryGasDay'\r\n ];\r\n\r\n model: OMVRelationshipsUploadViewModel;\r\n pipelineCode: string;\r\n\r\n constructor(protected appService: AppService,\r\n private locationService: FlowingGasLoadOmvRelationshipsService,\r\n private alertService: AlertService,\r\n private csvUtility: CsvUtility,\r\n private sessionService: SessionService,\r\n private router: Router) {\r\n super(appService);\r\n }\r\n\r\n ngOnInit() {\r\n super.setTitle('Load OMV Account Relationships');\r\n this.pipelineCode = this.sessionService.getPipeline().code;\r\n this.initModel();\r\n }\r\n\r\n uploadClicked() {\r\n if (this.model.extractedData !== null) {\r\n this.alertService.clearMessages();\r\n const parameters = new OMVRelationshipsUploadParameters(this.model.extractedData);\r\n this.route = this.router.routerState.snapshot.url;\r\n\r\n this.locationService.publishOMVRelationships(parameters)\r\n .subscribe(\r\n response => {\r\n this.model.response = response;\r\n this.model.error = '';\r\n if (this.route === this.router.routerState.snapshot.url) {\r\n this.alertService.addSuccessMessage('Upload successful',\r\n (this.model.response.results && this.model.response.results.length > 0) ?\r\n `${this.model.fileName} uploaded with ${this.model.response.results.length} errors.` :\r\n `${this.model.fileName} uploaded.`);\r\n }\r\n });\r\n }\r\n }\r\n\r\n resetClicked() {\r\n this.initModel();\r\n this.alertService.clearMessages();\r\n }\r\n\r\n hoverOver() {\r\n return this.model.error;\r\n }\r\n\r\n public getTitle(): string { // To get rid of annoying lint error.\r\n return super.getTitle();\r\n }\r\n\r\n public isValidFile(): boolean {\r\n return this.model.isValidFile();\r\n }\r\n\r\n public updateClick(e) {\r\n if (e.target.files.length > 0) {\r\n const reader = new FileReader();\r\n reader.onload = (event: any) => this.extractData(e.target.files[0].name, event.target.result);\r\n reader.readAsText(e.target.files[0]);\r\n }\r\n }\r\n\r\n protected extractData(fileName: string, data: string) {\r\n this.resetClicked();\r\n this.model.fileName = fileName;\r\n this.csvUtility.extractData(data, this.model, this.csvHeaders, this.processRows);\r\n }\r\n\r\n private initModel(): void {\r\n this.model = new OMVRelationshipsUploadViewModel();\r\n this.model.fileName = '';\r\n this.model.error = '';\r\n this.model.isValid = false;\r\n this.model.extractedData = null;\r\n this.model.response = null;\r\n }\r\n\r\n private processRows = (result: Array>, fields: Array) => {\r\n const colIndices = new Array();\r\n this.csvHeaders.forEach((header) => colIndices.push(this.csvUtility.findColumnHeaderColumn(fields, header)));\r\n\r\n let rowIndex = 0;\r\n this.model.extractedData = new Array();\r\n result.forEach((row: Array) => {\r\n this.model.extractedData.push(new OMVRelationshipRow(\r\n ++rowIndex,\r\n row[colIndices[0]],\r\n row[colIndices[1]],\r\n row[colIndices[2]],\r\n row[colIndices[3]]\r\n ));\r\n });\r\n };\r\n}\r\n","import {Route} from '@angular/router';\r\nimport {AuthorizationService} from '@shared/services/webapp/authorization/authorization.service';\r\nimport {LoadLocationsComponent} from './load-locations/load-locations.component';\r\nimport {LoadLocationParametersComponent} from './load-location-parameters/load-location-parameters.component';\r\nimport {LoadLocationRelationshipsComponent} from \"./load-location-relationships/load-location-relationships.component\";\r\nimport {LoadLbaLocationTolerancesComponent} from \"./load-lba-location-tolerances/load-lba-location-tolerances.component\";\r\nimport {LoadSecondaryLocationsComponent} from \"../administration/load-secondary-locations/load-secondary-locations.component\";\r\nimport {PublishAccountingLocationsComponent} from \"../administration/publish-accounting-locations/publish-accounting-locations.component\";\r\nimport {LoadOmvRelationshipsComponent} from \"./load-omv-relationships/load-omv-relationships.component\";\r\n\r\nexport const ManageLocationRoutes: Route[] = [\r\n {\r\n path: 'loadlocations',\r\n component: LoadLocationsComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['LoadLocations-Write']}\r\n },\r\n {\r\n path: 'loadlocationparameters',\r\n component: LoadLocationParametersComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['LoadLocationParameters-Write']}\r\n },\r\n {\r\n path: 'loadlocationrelationships',\r\n component: LoadLocationRelationshipsComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['LoadLocationRelationships-Write']}\r\n },\r\n {\r\n path: 'loadlbalocationtolerances',\r\n component: LoadLbaLocationTolerancesComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['LoadLbaLocationTolerances-Write']}\r\n },\r\n {\r\n path: 'loadomvrelationships',\r\n component: LoadOmvRelationshipsComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['LoadOmvRelationships-Write']}\r\n },\r\n {\r\n path: 'loadSecondaryLocationsComponent',\r\n component: LoadSecondaryLocationsComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['LoadSecondaryLocations-Write']}\r\n },\r\n {\r\n path: 'publishAccountingLocations',\r\n component: PublishAccountingLocationsComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['PublishAccountingLocation-Write']}\r\n },\r\n];\r\n","import { Component, OnInit } from '@angular/core';\r\nimport {ActivatedRoute, Router} from '@angular/router';\r\nimport {ErrorService} from \"../../services/webapp/error/error-service\";\r\nimport {Location} from '@angular/common';\r\n\r\n@Component({\r\n selector: 'app-error',\r\n templateUrl: './error.component.html',\r\n styleUrls: ['./error.component.css']\r\n})\r\nexport class ErrorComponent implements OnInit {\r\n\r\n public getLastErrorReferenceNumber: string;\r\n constructor(private route: ActivatedRoute,\r\n private errorService: ErrorService,\r\n private location: Location) {\r\n }\r\n\r\n ngOnInit() {\r\n this.getLastErrorReferenceNumber = this.errorService.getLastErrorReferenceNumber();\r\n }\r\n\r\n goToPreviousPage() {\r\n this.location.back();\r\n }\r\n}\r\n","
\r\n GCTS has encountered an issue.\r\n
\r\n\r\n
\r\n
\r\n Click here to return to the previous page. If the issue persists, please contact support. {{getLastErrorReferenceNumber}}\r\n
\r\n","import {Component, OnInit} from '@angular/core';\r\nimport {BaseComponent} from \"@model/base-component\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\n\r\n@Component({\r\n selector: 'app-service-unavailable',\r\n templateUrl: 'service-unavailable.component.html',\r\n styleUrls: ['service-unavailable.component.css']\r\n})\r\nexport class ServiceUnavailableComponent extends BaseComponent implements OnInit {\r\n\r\n constructor(protected appService: AppService) {\r\n super(appService);\r\n }\r\n\r\n ngOnInit() {\r\n super.setTitle(\"Service Unavailable\");\r\n }\r\n}\r\n\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n\r\n
\r\n The system is unavailable at this time. Please try again later.\r\n
\r\n
\r\n","import * as _ from \"lodash\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {BaseViewModel} from \"@model/base-view-model\";\r\nimport {NominationEnterprise} from \"@shared/services/nomination/nomination-enterprise/nomination-enterprise.service\";\r\nimport {NominationGroup} from \"@shared/services/nomination/nomination-nom-group/nomination-nom-group.service\";\r\nimport {ContractAlternatePath, NominationGroupContract, NominationGroupOperationalQuantity, NominationGroupPALOperationalQuantity} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport {NominationPipelineGasDay} from \"@model/nomination-pipeline-gas-day\";\r\nimport {NominationLocation} from \"@shared/services/nomination/nomination-location/nomination-location.service\";\r\nimport {BillableService} from \"@model/BillableService\";\r\nimport {IGasDay} from \"@model/gas-day-month.interface\";\r\nimport {GasDayRangeParams} from \"@model/gas-day-range-params\";\r\nimport {CommonPipeline} from \"@shared/services/common-data/pipelines/common-data-pipelines.service\";\r\n\r\nexport class AccountContractSummaryReportModel extends BaseViewModel {\r\n /**\r\n * Public Properties\r\n */\r\n public pipelineGasDay: NominationPipelineGasDay;\r\n public minGasDay: GasDay;\r\n\r\n public searchParams: AccountContractSummaryReportSearchParams = new AccountContractSummaryReportSearchParams();\r\n public lastSearchParams: AccountContractSummaryReportSearchParams;\r\n\r\n /**\r\n * Collections\r\n */\r\n public receiptLocations: NominationLocation[] = [];\r\n public deliveryLocations: NominationLocation[] = [];\r\n public filteredBillableServices: BillableService[] = [];\r\n public allowableBillableServiceIds: number[] = [];\r\n\r\n public commonPipeline: CommonPipeline;\r\n\r\n private _enterprises: NominationEnterprise[] = [];\r\n public get enterprises(): NominationEnterprise[] {\r\n return this._enterprises;\r\n }\r\n public set enterprises(enterprises: NominationEnterprise[]) {\r\n this._enterprises = enterprises;\r\n\r\n if (this.hasOnlyOneItem(this._enterprises)) {\r\n this.searchParams.enterpriseId = _.head(this._enterprises).id;\r\n }\r\n }\r\n\r\n private _locations: NominationLocation[] = [];\r\n public get locations(): NominationLocation[] {\r\n return this._locations;\r\n }\r\n public set locations(locations: NominationLocation[]) {\r\n this._locations = locations;\r\n this.receiptLocations = _.orderBy(_.filter(locations, x => x.accountingLocationParameters.isReceipt), x => x.name);\r\n this.deliveryLocations = _.orderBy(_.filter(locations, x => x.accountingLocationParameters.isDelivery), x => x.name);\r\n }\r\n\r\n private _nomGroupsForEnterprise: NominationGroup[] = [];\r\n public get nomGroupsForEnterprise(): NominationGroup[] {\r\n return this._nomGroupsForEnterprise;\r\n }\r\n public set nomGroupsForEnterprise(nomGroupsForEnterprise: NominationGroup[]) {\r\n this._nomGroupsForEnterprise = nomGroupsForEnterprise;\r\n\r\n if (this.hasOnlyOneItem(this._nomGroupsForEnterprise)) {\r\n this.searchParams.nomGroupIds = [_.head(this._nomGroupsForEnterprise).id];\r\n }\r\n }\r\n\r\n private _billableServices: BillableService[] = [];\r\n public get billableServices(): BillableService[] {\r\n return this._billableServices;\r\n }\r\n public set billableServices(billableServices: BillableService[]) {\r\n this._billableServices = billableServices;\r\n this.filteredBillableServices = this._billableServices;\r\n this.allowableBillableServiceIds = _.map(this.billableServices, x => x.id);\r\n }\r\n\r\n private _transportationSearchResults: NominationGroupOperationalQuantity[];\r\n public get transportationSearchResults(): NominationGroupOperationalQuantity[] {\r\n return this._transportationSearchResults;\r\n }\r\n public set transportationSearchResults(nominationGroupOperationalQuantities: NominationGroupOperationalQuantity[]) {\r\n // Group by requires the enterprise display value (short name + mnemonic)\r\n _.forEach(nominationGroupOperationalQuantities, x => _.assign(x, {enterpriseDisplayValue: `${x['enterpriseShortName']} (${x['enterpriseMnemonic']})`}));\r\n\r\n this._transportationSearchResults = nominationGroupOperationalQuantities;\r\n }\r\n\r\n private _palSearchResults: NominationGroupPALOperationalQuantity[];\r\n public get palSearchResults(): NominationGroupPALOperationalQuantity[] {\r\n return this._palSearchResults;\r\n }\r\n public set palSearchResults(nominationGroupPALOperationalQuantities: NominationGroupPALOperationalQuantity[]) {\r\n // Group by requires the enterprise display value (short name + mnemonic)\r\n _.forEach(nominationGroupPALOperationalQuantities, x => _.assign(x, {enterpriseDisplayValue: `${x['enterpriseShortName']} (${x['enterpriseMnemonic']})`}));\r\n\r\n this._palSearchResults = nominationGroupPALOperationalQuantities;\r\n }\r\n\r\n public hasSearchResults(): boolean {\r\n return !!this._transportationSearchResults || !!this._palSearchResults;\r\n }\r\n\r\n public clearSearchResults(): void {\r\n this._transportationSearchResults = null;\r\n this._palSearchResults = null;\r\n }\r\n\r\n /**\r\n * Public Methods\r\n */\r\n\r\n public enterpriseChanged(): void {\r\n this.adjustNomGroupsForChangedParameters();\r\n this.adjustBillableServicesForChangedParameters();\r\n }\r\n\r\n public nomGroupChanged(): void {\r\n this.adjustBillableServicesForChangedParameters();\r\n }\r\n\r\n /**\r\n * Private Methods\r\n */\r\n\r\n private adjustNomGroupsForChangedParameters(): void {\r\n // No Enterprise selected, so clear nom groups\r\n if (!this.searchParams.enterpriseId) {\r\n this.nomGroupsForEnterprise = [];\r\n } else {\r\n // Filter nom groups based on allowed billable services\r\n this.nomGroupsForEnterprise = _.filter(this.nomGroupsForEnterprise, x => this.allowableBillableServiceIds.includes(x.billableServiceId));\r\n }\r\n\r\n // Remove any selected nom groups that are no longer available\r\n this.searchParams.nomGroupIds = _.filter(this.searchParams.nomGroupIds, x => _.some(this.nomGroupsForEnterprise, y => y.id === x));\r\n }\r\n\r\n private adjustBillableServicesForChangedParameters(): void {\r\n if (_.size(this.searchParams.nomGroupIds) > 0) {\r\n // Filter billable services based on selected nom groups\r\n const selectedNomGroups = _.filter(this.nomGroupsForEnterprise, x => this.searchParams.nomGroupIds.includes(x.id));\r\n const billableServiceIdsForNomGroups = _.map(selectedNomGroups, x => x.billableServiceId);\r\n this.filteredBillableServices = _.filter(this.billableServices, x => billableServiceIdsForNomGroups.includes(x.id));\r\n } else if (this.searchParams.enterpriseId) {\r\n // Filter billable services based on all enterprise nom groups\r\n const enterpriseBillableServiceIds = _.uniq(_.map(this.nomGroupsForEnterprise, x => x.billableServiceId));\r\n this.filteredBillableServices = _.filter(this.billableServices, x => enterpriseBillableServiceIds.includes(x.id));\r\n } else {\r\n // No filtering required, show all billable services\r\n this.filteredBillableServices = this.billableServices;\r\n }\r\n\r\n // Remove any selected billable services that are no longer available\r\n this.searchParams.billableServiceIds = _.filter(this.searchParams.billableServiceIds, x => _.some(this.filteredBillableServices, y => y.id === x));\r\n }\r\n\r\n private hasOnlyOneItem(values: any[]): boolean {\r\n return _.size(values) === 1;\r\n }\r\n}\r\n\r\nexport class AccountContractSummaryReportSearchParams extends GasDayRangeParams {\r\n public enterpriseId?: number;\r\n public nomGroupIds: number[] = [];\r\n public receiptLocationIds: number[] = [];\r\n public deliveryLocationIds: number[] = [];\r\n public billableServiceIds: number[] = [];\r\n}\r\n\r\nexport class NominationGroupContractDisplayDto {\r\n private static CounterPartyEnterpriseShortNameField: string = 'counterPartyEnterpriseShortName';\r\n\r\n public isTypeTempAssignOut: boolean;\r\n public primaryContractId: number;\r\n public contractId: number;\r\n public contractStartGasDay: IGasDay;\r\n public contractEndGasDay: IGasDay;\r\n public type: string;\r\n public assignorAssigneeEnterpriseShortName: string;\r\n public contractVolumeDemandQuantity?: number = null;\r\n public contractDemandQuantity: number;\r\n public operationalQuantity: number;\r\n public quantityStartGasDay: IGasDay;\r\n public quantityEndGasDay: IGasDay;\r\n public contractAlternatePaths: ContractAlternatePath[];\r\n\r\n public static createFromPartyContract(nominationGroupContract: NominationGroupContract, createFromTempAssignOut: boolean = false): NominationGroupContractDisplayDto {\r\n const type = createFromTempAssignOut ? '' : nominationGroupContract.type;\r\n const assignorAssigneeEnterpriseShortName = createFromTempAssignOut ? '' : nominationGroupContract[this.CounterPartyEnterpriseShortNameField];\r\n\r\n return new NominationGroupContractDisplayDto(\r\n false,\r\n nominationGroupContract.partyContractId,\r\n nominationGroupContract.partyContractId,\r\n nominationGroupContract.partyContractEffectiveGasDay,\r\n nominationGroupContract.partyContractExpiryGasDay,\r\n type,\r\n assignorAssigneeEnterpriseShortName,\r\n nominationGroupContract.partyContractVolumeDemand,\r\n nominationGroupContract.partyContractDemand,\r\n nominationGroupContract.partyContractDemand,\r\n nominationGroupContract.partyQuantityEffectiveGasDay,\r\n nominationGroupContract.partyQuantityExpiryGasDay,\r\n nominationGroupContract.contractAlternatePaths\r\n );\r\n }\r\n\r\n public static createFromCounterPartyContract(nominationGroupContract: NominationGroupContract): NominationGroupContractDisplayDto {\r\n return new NominationGroupContractDisplayDto(\r\n true,\r\n nominationGroupContract.partyContractId,\r\n nominationGroupContract.counterPartyContractId,\r\n nominationGroupContract.counterPartyContractEffectiveGasDay,\r\n nominationGroupContract.counterPartyContractExpiryGasDay,\r\n nominationGroupContract.type,\r\n nominationGroupContract[this.CounterPartyEnterpriseShortNameField],\r\n nominationGroupContract.counterPartyContractVolumeDemand,\r\n nominationGroupContract.counterPartyContractDemand,\r\n -nominationGroupContract.counterPartyContractDemand,\r\n nominationGroupContract.counterPartyQuantityEffectiveGasDay,\r\n nominationGroupContract.counterPartyQuantityExpiryGasDay,\r\n [] // Ignore Alternate Paths for Counter Party\r\n );\r\n }\r\n\r\n constructor(\r\n isTypeTempAssignOut: boolean,\r\n primaryContractId: number,\r\n contractId: number,\r\n contractStartGasDay: IGasDay,\r\n contractEndGasDay: IGasDay,\r\n type: string,\r\n assignorAssigneeEnterpriseShortName: string,\r\n contractVolumeDemandQuantity: number | null,\r\n contractDemandQuantity: number,\r\n operationalQuantity: number,\r\n quantityStartGasDay: IGasDay,\r\n quantityEndGasDay: IGasDay,\r\n contractAlternatePaths: ContractAlternatePath[]) {\r\n this.isTypeTempAssignOut = isTypeTempAssignOut;\r\n this.primaryContractId = primaryContractId;\r\n this.contractId = contractId;\r\n this.contractStartGasDay = contractStartGasDay;\r\n this.contractEndGasDay = contractEndGasDay;\r\n this.type = type;\r\n this.assignorAssigneeEnterpriseShortName = assignorAssigneeEnterpriseShortName;\r\n this.contractVolumeDemandQuantity = contractVolumeDemandQuantity;\r\n this.contractDemandQuantity = contractDemandQuantity;\r\n this.operationalQuantity = operationalQuantity;\r\n this.quantityStartGasDay = quantityStartGasDay;\r\n this.quantityEndGasDay = quantityEndGasDay;\r\n this.contractAlternatePaths = contractAlternatePaths;\r\n }\r\n\r\n public hasContractAlternatePaths(): boolean {\r\n return !_.isEmpty(this.contractAlternatePaths);\r\n }\r\n}\r\n\r\n","export enum BillableServiceReportType {\r\n AccountContractSummaryReport = 'AccountContractSummaryReport'\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport * as _ from \"lodash\";\r\nimport {NominationGroupOperationalQuantity, NominationGroupPALOperationalQuantity} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport {BillableService} from \"@model/BillableService\";\r\nimport {IGasDay} from \"@model/gas-day-month.interface\";\r\n\r\n@Injectable()\r\nexport class AccountContractSummaryCsvBuilderService {\r\n constructor(private fileService: FileService) {}\r\n\r\n public buildTransportationSummaryCsv(nominationGroupOperationalQuantities: NominationGroupOperationalQuantity[], billableServices: BillableService[],\r\n customerShortName: string, fromGasDay: IGasDay, toGasDay: IGasDay, hasVolumeDemand: boolean): void {\r\n const records = nominationGroupOperationalQuantities;\r\n let csvData = _.map(records, x => _.extend({}, x, {\r\n simplifiedTazZeroRated: x.taxZeroRated ? 'Y' : 'N',\r\n path: !!x['receiptLocationName'] ? x['receiptLocationName'] + '-' + x['deliveryLocationName'] : '',\r\n customerShortName: x['enterpriseDisplayValue'],\r\n serviceType: _.find(billableServices, b => b.id === x.billableServiceId).service,\r\n quantityStartGasDay: !!x.quantityEffectiveGasDay ? x.quantityEffectiveGasDay.toCsvFormat() : '',\r\n quantityEndGasDay: !!x.quantityExpiryGasDay ? x.quantityExpiryGasDay.toCsvFormat() : ''\r\n }));\r\n\r\n csvData = _.sortBy(csvData, item => {\r\n return [item.customerShortName.toLowerCase(), item.nominationGroupId, item.quantityStartGasDay, item.quantityEndGasDay];\r\n });\r\n\r\n let filename = '';\r\n if (customerShortName === '') {\r\n filename = `TransportationAccountSummary_${fromGasDay.toDisplayFormat()}_${toGasDay.toDisplayFormat()}.csv`;\r\n } else {\r\n filename = `TransportationAccountSummary_${customerShortName}_${fromGasDay.toDisplayFormat()}_${toGasDay.toDisplayFormat()}.csv`;\r\n }\r\n\r\n const headers = ['Customer', 'Account', 'Invoice Group', 'Service Type', 'Path Type', 'Receipt Location', 'Delivery Location', 'Path',\r\n 'Tax Zero Rated', 'Total Account Contract Demand (Gj/d)', 'Account Operational Quantity (Gj/d)',\r\n 'Account Operational Quantity Start Gas Day', 'Account Operational Quantity End Gas Day'];\r\n\r\n const columns = ['customerShortName', 'nominationGroupId', 'invoiceGroupId', 'serviceType', 'pathType', 'receiptLocationName', 'deliveryLocationName', 'path',\r\n 'simplifiedTazZeroRated', 'contractDemandQuantity', 'operationalQuantity',\r\n 'quantityStartGasDay', 'quantityEndGasDay'];\r\n\r\n if (hasVolumeDemand) {\r\n headers.splice(9, 0, 'Total Account Volume Demand (Mcf/d)');\r\n columns.splice(9, 0, 'contractVolumeDemandQuantity');\r\n }\r\n\r\n this.fileService.downloadCsvFile(filename, csvData, headers, columns);\r\n }\r\n\r\n public buildPalsSummaryCsv(nominationGroupPALOperationalQuantities: NominationGroupPALOperationalQuantity[], billableServices: BillableService[],\r\n customerShortName: string, fromGasDay: IGasDay, toGasDay: IGasDay): void {\r\n const records = nominationGroupPALOperationalQuantities;\r\n let csvData: AccountContractPALSReport[] = [];\r\n\r\n _.forEach(records, x => {\r\n csvData.push(AccountContractPALSReport.create(x, billableServices));\r\n });\r\n\r\n csvData = _.sortBy(csvData, ['customerShortName', 'nomGroupMnemonic', 'serviceType', 'type', 'contractNumber', 'contractStartGasDay', 'contractEndGasDay']);\r\n\r\n let filename = '';\r\n if (customerShortName === '') {\r\n filename = `NonTransportationContractDetail_${fromGasDay.toDisplayFormat()}_${toGasDay.toDisplayFormat()}.csv`;\r\n } else {\r\n filename = `NonTransportationContractDetail_${customerShortName}_${fromGasDay.toDisplayFormat()}_${toGasDay.toDisplayFormat()}.csv`;\r\n }\r\n\r\n const headers = ['Customer', 'Account', 'Invoice Group', 'Service Type', 'PALS Type', 'Location',\r\n 'Tax Zero Rated', 'Contract', 'Contract Start Gas Day', 'Contract End Gas Day',\r\n 'Injection Quantity (Gj/d)', 'Injection Quantity Start Gas Day', 'Injection Quantity End Gas Day',\r\n 'Withdrawal Quantity (Gj/d)', 'Withdrawal Quantity Start Gas Day', 'Withdrawal Quantity End Gas Day',\r\n 'Total Quantity (Gj/d)', 'Total Quantity Start Gas Day', 'Total Quantity End Gas Day'];\r\n\r\n const columns = ['customerShortName', 'nomGroupMnemonic', 'invoiceGroupId', 'serviceType', 'type', 'locationName',\r\n 'simplifiedTazZeroRated', 'contractNumber', 'contractStartGasDay', 'contractEndGasDay',\r\n 'injectionQuantity', 'injectionStartGasDay', 'injectionEndGasDay',\r\n 'withdrawalQuantity', 'withdrawalStartGasDay', 'withdrawalEndGasDay',\r\n 'totalQuantity', 'totalStartGasDay', 'totalEndGasDay'];\r\n\r\n this.fileService.downloadCsvFile(filename, csvData, headers, columns);\r\n }\r\n}\r\n\r\nexport class AccountContractPALSReport {\r\n customerShortName: string;\r\n nomGroupMnemonic: string;\r\n invoiceGroupId: number;\r\n serviceType: string;\r\n type: string;\r\n locationName: string;\r\n simplifiedTazZeroRated: string;\r\n contractNumber: string;\r\n contractStartGasDay: string;\r\n contractEndGasDay: string;\r\n injectionQuantity: number;\r\n injectionStartGasDay: string;\r\n injectionEndGasDay: string;\r\n withdrawalQuantity: number;\r\n withdrawalStartGasDay: string;\r\n withdrawalEndGasDay: string;\r\n totalQuantity: number;\r\n totalStartGasDay: string;\r\n totalEndGasDay: string;\r\n\r\n static create(palOperationalQuantity: NominationGroupPALOperationalQuantity, billableServices: BillableService[]): AccountContractPALSReport {\r\n const accountContractPALSReport = new AccountContractPALSReport();\r\n accountContractPALSReport.customerShortName = palOperationalQuantity['enterpriseDisplayValue'];\r\n accountContractPALSReport.nomGroupMnemonic = palOperationalQuantity['nominationGroupMnemonic'];\r\n accountContractPALSReport.invoiceGroupId = palOperationalQuantity.invoiceGroupId;\r\n accountContractPALSReport.serviceType = _.find(billableServices, b => b.id === palOperationalQuantity.billableServiceId).service;\r\n accountContractPALSReport.type = palOperationalQuantity.type;\r\n accountContractPALSReport.locationName = palOperationalQuantity['locationName'];\r\n accountContractPALSReport.simplifiedTazZeroRated = palOperationalQuantity.taxZeroRated ? 'Y' : 'N';\r\n\r\n const injectionResult = _.find(palOperationalQuantity.parkAndLoanContracts, x => x.quantityType === 'Injection');\r\n const withdrawalResult = _.find(palOperationalQuantity.parkAndLoanContracts, x => x.quantityType === 'Withdrawal');\r\n const totalResult = _.find(palOperationalQuantity.parkAndLoanContracts, x => x.quantityType === 'Total Quantity');\r\n\r\n accountContractPALSReport.contractNumber = injectionResult.contractNumber.toString();\r\n accountContractPALSReport.contractStartGasDay = injectionResult.contractEffectiveGasDay.toCsvFormat();\r\n accountContractPALSReport.contractEndGasDay = injectionResult.contractExpiryGasDay.toCsvFormat();\r\n\r\n accountContractPALSReport.injectionQuantity = injectionResult.quantity;\r\n accountContractPALSReport.injectionStartGasDay = injectionResult.quantityEffectiveGasDay.toCsvFormat();\r\n accountContractPALSReport.injectionEndGasDay = injectionResult.quantityExpiryGasDay.toCsvFormat();\r\n\r\n accountContractPALSReport.withdrawalQuantity = withdrawalResult.quantity;\r\n accountContractPALSReport.withdrawalStartGasDay = withdrawalResult.quantityEffectiveGasDay.toCsvFormat();\r\n accountContractPALSReport.withdrawalEndGasDay = withdrawalResult.quantityExpiryGasDay.toCsvFormat();\r\n\r\n accountContractPALSReport.totalQuantity = totalResult.quantity;\r\n accountContractPALSReport.totalStartGasDay = totalResult.quantityEffectiveGasDay.toCsvFormat();\r\n accountContractPALSReport.totalEndGasDay = totalResult.quantityExpiryGasDay.toCsvFormat();\r\n\r\n return accountContractPALSReport;\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'negativeNumberParenthesisFormat'\r\n})\r\nexport class NegativeNumberParenthesisFormatPipe implements PipeTransform {\r\n transform(value: number, useLocalFormat: boolean = true): string {\r\n if (value === undefined || value === null) {\r\n return \"\";\r\n }\r\n\r\n if (value < 0 ) {\r\n return `(${this.getDisplayValue(Math.abs(value), useLocalFormat)})`;\r\n } else {\r\n return this.getDisplayValue(value, useLocalFormat);\r\n }\r\n }\r\n\r\n private getDisplayValue(value: number, useLocalFormat: boolean): string {\r\n if (useLocalFormat) {\r\n return value.toLocaleString('en');\r\n } else {\r\n return value.toString();\r\n }\r\n }\r\n}\r\n","
\r\n
\r\n Number of Accounts found: {{model.transportationSearchResults.length}}\r\n
0\" class=\"pull-right\">\r\n Export Account Summary CSV\r\n | \r\n Export Contract Detail CSV\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n
\r\n {{ row.data.key }}\r\n
\r\n\r\n \r\n \r\n
\r\n Account/Contract\r\n
\r\n
\r\n \r\n
\r\n {{row.data.nominationGroupId}}\r\n
\r\n
\r\n\r\n \r\n
\r\n Contract
Start Gas Day\r\n
\r\n\r\n \r\n
\r\n Contract
End Gas Day\r\n
\r\n\r\n \r\n
\r\n Invoice
Group\r\n
\r\n\r\n \r\n
\r\n Service
Type\r\n
\r\n
\r\n {{ row.data.billableServiceId | displayName: 'id' : 'service' : model.billableServices }}\r\n
\r\n\r\n \r\n\r\n \r\n
\r\n Assignor/Assignee\r\n
\r\n\r\n \r\n
\r\n Receipt
Location\r\n
\r\n\r\n \r\n
\r\n Delivery
Location\r\n
\r\n\r\n \r\n
\r\n Tax Zero
Rated\r\n
\r\n
\r\n {{ row.data.taxZeroRated | booleanAsYesNo: 'abbr' }}\r\n
\r\n\r\n \r\n
\r\n Volume Demand
(Mcf/d)\r\n
\r\n\r\n \r\n
\r\n Contract Demand
(GJ/d)\r\n
\r\n\r\n \r\n
\r\n Operational Quantity
(GJ/d)\r\n
\r\n\r\n \r\n
\r\n Quantity
Start Gas Day\r\n
\r\n
\r\n {{ row.data.quantityEffectiveGasDay | gasDayFormat : false }}\r\n
\r\n\r\n \r\n
\r\n Quantity
End Gas Day\r\n
\r\n
\r\n {{ row.data.quantityExpiryGasDay | gasDayFormat : false }}\r\n
\r\n\r\n \r\n
\r\n \r\n\r\n \r\n\r\n \r\n
\r\n {{ row.data.contractId }}\r\n
\r\n\r\n \r\n
\r\n {{ row.data.contractStartGasDay | gasDayFormat }}\r\n
\r\n\r\n \r\n
\r\n {{ row.data.contractEndGasDay | gasDayFormat : false }}\r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n
\r\n {{ row.data.operationalQuantity | negativeNumberParenthesisFormat }}\r\n
\r\n\r\n \r\n
\r\n {{ row.data.quantityStartGasDay | gasDayFormat : false }}\r\n
\r\n\r\n \r\n
\r\n {{ row.data.quantityEndGasDay | gasDayFormat : false }}\r\n
\r\n\r\n \r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n
\r\n {{ row.data.pathEffectiveGasDay | gasDayFormat : false }}\r\n
\r\n\r\n \r\n
\r\n {{ row.data.pathExpiryGasDay | gasDayFormat : false }}\r\n
\r\n\r\n \r\n
\r\n\r\n \r\n
\r\n\r\n \r\n
\r\n","import * as _ from \"lodash\";\r\nimport {concatMap} from \"rxjs/operators\";\r\nimport {forkJoin, Observable, of} from \"rxjs\";\r\nimport {Component, Input, ViewChild} from \"@angular/core\";\r\nimport {AccountContractSummaryReportModel, NominationGroupContractDisplayDto} from \"app/gcts/contracts/account-contract-summary-report/account-contract-summary-report.model\";\r\nimport {DataGridHelpers} from \"@model/datagrid-helpers\";\r\nimport {DataGridColumnFormatHelper} from \"@shared/helpers/data-grid-column-format-helper\";\r\nimport {\r\n ContractAlternatePath,\r\n NominationGroupContract,\r\n NominationGroupContractsRequest,\r\n NominationGroupOperationalQuantity,\r\n NominationGroupOperationalQuantityRequest,\r\n NominationGroupService\r\n} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport {NominationNomGroupEnrichmentService} from \"@shared/services/nomination/nomination-nom-group-enrichment/nomination-nom-group-enrichment.service\";\r\nimport {NominationLocationEnrichmentService} from \"@shared/services/nomination/nomination-location-enrichment/nomination-location-enrichment.service\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {AccountContractSummaryCsvBuilderService} from \"app/gcts/contracts/account-contract-summary-report/account-contract-summary-csv-builder.service\";\r\nimport {HttpResponse} from \"@angular/common/http\";\r\nimport * as FileSaver from \"file-saver\";\r\nimport {Location} from '@angular/common';\r\nimport {UriService} from \"@shared/services/webapp/uri/uri.service\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\n\r\n@Component({\r\n selector: 'app-account-contract-summary-transportation',\r\n templateUrl: './account-contract-summary-transportation.component.html',\r\n styleUrls: ['./account-contract-summary-transportation.component.css']\r\n})\r\n\r\nexport class AccountContractSummaryTransportationComponent {\r\n @Input() model: AccountContractSummaryReportModel;\r\n @ViewChild(DxDataGridComponent) contractTransportOperationalQuantitiesDataGrid: DxDataGridComponent;\r\n\r\n constructor(private nominationGroupService: NominationGroupService,\r\n private enterpriseService: EnterpriseService,\r\n private enterpriseEnrichmentService: EnterpriseEnrichmentService,\r\n private nominationNomGroupEnrichmentService: NominationNomGroupEnrichmentService,\r\n private nominationLocationEnrichmentService: NominationLocationEnrichmentService,\r\n private accountContractSummaryCsvBuilderService: AccountContractSummaryCsvBuilderService,\r\n private uriService: UriService,\r\n protected location: Location,\r\n private sessionService: SessionService) {\r\n enterpriseEnrichmentService.setEnrichmentResource(enterpriseService);\r\n }\r\n\r\n /**\r\n * DataGrid Events\r\n */\r\n\r\n public contractTransportOperationalQuantitiesOnRowExpanding($event): void {\r\n $event.component.getDataSource().store().byKey($event.key).then((row) => {\r\n this.queryNomGroupContracts(row).subscribe(nominationGroupContracts => row['contracts'] = this.convertToNominationGroupContractDtos(nominationGroupContracts));\r\n });\r\n }\r\n\r\n public contractTransportOperationalQuantitiesOnCellPrepared($event): void {\r\n if (!DataGridHelpers.isDataRow($event.rowType)) {\r\n return;\r\n }\r\n\r\n DataGridHelpers.whenColumnDataFieldIs($event, 'nominationGroupId', () => DataGridColumnFormatHelper.setColSpan($event, 3));\r\n DataGridHelpers.whenColumnDataFieldIs($event, 'pathType', () => DataGridColumnFormatHelper.setColSpan($event, 2));\r\n }\r\n\r\n public nominationGroupContractsOnCellPrepared($event): void {\r\n if (!DataGridHelpers.isDataRow($event.rowType)) {\r\n return;\r\n }\r\n\r\n DataGridHelpers.whenColumnCommandIsExpand($event, () => {\r\n if (!$event.data.hasContractAlternatePaths()) {\r\n DataGridColumnFormatHelper.hideExpandIcon($event);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Public Methods\r\n */\r\n\r\n public resetSortOrder(): void {\r\n if (this.contractTransportOperationalQuantitiesDataGrid) {\r\n this.contractTransportOperationalQuantitiesDataGrid.instance.clearSorting();\r\n this.contractTransportOperationalQuantitiesDataGrid.instance.columnOption('nominationGroupId', {sortOrder: 'asc', sortIndex: 0});\r\n }\r\n }\r\n\r\n\r\n public exportSummaryCsvClicked(): void {\r\n const customerShortName = this.model.lastSearchParams.enterpriseId !== null\r\n ? _.find(this.model.enterprises, x => x.id === this.model.lastSearchParams.enterpriseId).displayValue\r\n : \"\";\r\n\r\n this.accountContractSummaryCsvBuilderService.buildTransportationSummaryCsv(this.model.transportationSearchResults, this.model.filteredBillableServices, customerShortName,\r\n this.model.lastSearchParams.fromGasDay, this.model.lastSearchParams.toGasDay, this.shouldShowVolumeDemand());\r\n }\r\n\r\n public exportDetailCsvClicked(): void {\r\n const searchRequest = new NominationGroupOperationalQuantityRequest(\r\n this.model.lastSearchParams.fromGasDay,\r\n this.model.lastSearchParams.toGasDay,\r\n this.model.lastSearchParams.enterpriseId,\r\n this.model.lastSearchParams.nomGroupIds,\r\n this.model.lastSearchParams.receiptLocationIds,\r\n this.model.lastSearchParams.deliveryLocationIds,\r\n this.model.lastSearchParams.billableServiceIds);\r\n\r\n this.nominationGroupService.downloadAccountContractSummaryDetailsCsv(searchRequest).subscribe(data => this.downloadFile(data));\r\n }\r\n\r\n public goToPublicItBidFloorReport(): string {\r\n return this.uriService.getPublicSiteUri() + '/' + this.sessionService.getPipeline().code + \"/viewBidFloors?gasDay=\" + this.model.lastSearchParams.fromGasDay;\r\n }\r\n\r\n /**\r\n * Private Methods\r\n */\r\n\r\n downloadFile(httpResponse: HttpResponse) {\r\n const blob = new Blob([httpResponse.body], {type: 'text/csv'});\r\n\r\n // from the content disposition, should be second element with =\"{filename}\" surrounding it\r\n const filename = httpResponse.headers.get('content-disposition').split(';')[1].trim().split('=')[1].replace(/\"/g, '');\r\n FileSaver.saveAs(blob, filename);\r\n }\r\n\r\n private queryNomGroupContracts(nominationGroupOperationalQuantity: NominationGroupOperationalQuantity): Observable {\r\n const nominationGroupContractsRequest = new NominationGroupContractsRequest(\r\n nominationGroupOperationalQuantity.nominationGroupId,\r\n nominationGroupOperationalQuantity.quantityEffectiveGasDay,\r\n nominationGroupOperationalQuantity.quantityExpiryGasDay);\r\n\r\n if (_.isNil(nominationGroupOperationalQuantity.quantityEffectiveGasDay)) { // this is probably an IT that does not have a contract quantity\r\n nominationGroupContractsRequest.fromGasDay = nominationGroupOperationalQuantity.nomGroupEffectiveGasDay;\r\n nominationGroupContractsRequest.toGasDay = nominationGroupOperationalQuantity.nomGroupExpiryGasDay;\r\n }\r\n\r\n return this.nominationGroupService.queryContracts(nominationGroupContractsRequest)\r\n .pipe(\r\n concatMap(nominationGroupContracts => this.enterpriseEnrichmentService.enrichArray(nominationGroupContracts, 'counterPartyEnterpriseId', 'counterPartyEnterprise')),\r\n concatMap(nominationGroupContracts => this.enrichAlternatePaths(nominationGroupContracts))\r\n );\r\n }\r\n\r\n private enrichAlternatePaths(nominationGroupContracts: NominationGroupContract[]): Observable {\r\n const enrichmentCalls: Observable[] = [];\r\n\r\n for (const nominationGroupContract of nominationGroupContracts) {\r\n enrichmentCalls.push(this.nominationLocationEnrichmentService.enrichArray(nominationGroupContract.contractAlternatePaths, 'receiptLocationId', 'receiptLocation'));\r\n enrichmentCalls.push(this.nominationLocationEnrichmentService.enrichArray(nominationGroupContract.contractAlternatePaths, 'deliveryLocationId', 'deliveryLocation'));\r\n }\r\n\r\n return forkJoin(enrichmentCalls)\r\n .pipe(\r\n concatMap(() => of(nominationGroupContracts))\r\n );\r\n }\r\n\r\n /**\r\n * We need to convert the Nomination Group Contracts to display objects in a particular manner, so this method is used to re-structure the\r\n * data.\r\n *\r\n * There are several types of Nomination Group Contracts:\r\n *\r\n * (1) Regular Contracts - No In or Out Temp Assignments (one record for Party Contract properties)\r\n * (2) Temp Assignment In Contracts - Contract Quantities from another Contract (one record for Party Contract properties)\r\n * (3) Temp Assignment Out Contracts - Contract Quantities to another Contract\r\n */\r\n private convertToNominationGroupContractDtos(nominationGroupContracts: NominationGroupContract[]): NominationGroupContractDisplayDto[] {\r\n const dtos: NominationGroupContractDisplayDto[] = [];\r\n\r\n for (const nominationGroupContract of nominationGroupContracts) {\r\n\r\n if (this.shouldProcessNominationGroupContract(nominationGroupContract)) {\r\n\r\n const nomGroupContractDisplayDto = nominationGroupContract.isTypeTempAssignOut()\r\n ? NominationGroupContractDisplayDto.createFromCounterPartyContract(nominationGroupContract)\r\n : NominationGroupContractDisplayDto.createFromPartyContract(nominationGroupContract);\r\n\r\n dtos.push (nomGroupContractDisplayDto);\r\n }\r\n }\r\n\r\n return dtos;\r\n }\r\n\r\n private shouldProcessNominationGroupContract(nominationGroupContract: NominationGroupContract): boolean {\r\n if (_.isNil(nominationGroupContract.partyQuantityEffectiveGasDay)) {\r\n return true;\r\n }\r\n\r\n if (nominationGroupContract.isTypeTempAssignOut()) {\r\n return nominationGroupContract.counterPartyQuantityEffectiveGasDay <= this.model.lastSearchParams.toGasDay\r\n && nominationGroupContract.counterPartyContractExpiryGasDay >= this.model.lastSearchParams.fromGasDay;\r\n }\r\n\r\n return nominationGroupContract.partyQuantityEffectiveGasDay <= this.model.lastSearchParams.toGasDay\r\n && nominationGroupContract.partyContractExpiryGasDay >= this.model.lastSearchParams.fromGasDay;\r\n }\r\n\r\n public shouldShowVolumeDemand(): boolean {\r\n return this.model.commonPipeline.isContractQuantityTypeVolume();\r\n }\r\n}\r\n","
\r\n
\r\n Number of Accounts found: {{model.palSearchResults.length}}\r\n
0\" class=\"pull-right\">\r\n Export CSV\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n
\r\n {{ row.data.key }}\r\n
\r\n\r\n \r\n \r\n
\r\n Account/Contract\r\n
\r\n\r\n \r\n
\r\n Contract
Start Gas Day\r\n
\r\n\r\n \r\n
\r\n Contract
End Gas Day\r\n
\r\n\r\n \r\n
\r\n Invoice
Group\r\n
\r\n\r\n \r\n
\r\n Service
Type\r\n
\r\n
\r\n {{ row.data.billableServiceId | displayName: 'id' : 'service' : model.billableServices }}\r\n
\r\n\r\n \r\n\r\n \r\n
\r\n Location\r\n
\r\n\r\n \r\n
\r\n Tax Zero
Rated\r\n
\r\n
\r\n {{ row.data.taxZeroRated | booleanAsYesNo: 'abbr' }}\r\n
\r\n\r\n \r\n
\r\n Quantity Type\r\n
\r\n\r\n \r\n
\r\n Quantity
(GJ/d)\r\n
\r\n\r\n \r\n
\r\n Quantity
Start Gas Day\r\n
\r\n\r\n \r\n
\r\n Quantity
End Gas Day\r\n
\r\n\r\n \r\n
\r\n \r\n\r\n \r\n\r\n \r\n
\r\n {{ row.data.contractEffectiveGasDay | gasDayFormat }}\r\n
\r\n\r\n \r\n
\r\n {{ row.data.contractExpiryGasDay | gasDayFormat : false }}\r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n
\r\n {{ row.data.quantityEffectiveGasDay | gasDayFormat : false }}\r\n
\r\n\r\n \r\n
\r\n {{ row.data.quantityExpiryGasDay | gasDayFormat : false }}\r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n","import {Component, Input, ViewChild} from \"@angular/core\";\r\nimport {AccountContractSummaryReportModel} from \"app/gcts/contracts/account-contract-summary-report/account-contract-summary-report.model\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {DataGridHelpers} from \"@model/datagrid-helpers\";\r\nimport {DataGridColumnFormatHelper} from \"@shared/helpers/data-grid-column-format-helper\";\r\nimport {AccountContractSummaryCsvBuilderService} from \"app/gcts/contracts/account-contract-summary-report/account-contract-summary-csv-builder.service\";\r\nimport * as _ from \"lodash\";\r\n\r\n@Component({\r\n selector: 'app-account-contract-summary-parkandloan',\r\n templateUrl: './account-contract-summary-parkandloan.component.html',\r\n styleUrls: ['./account-contract-summary-parkandloan.component.css']\r\n})\r\n\r\nexport class AccountContractSummaryParkAndLoanComponent {\r\n @Input() model: AccountContractSummaryReportModel;\r\n @ViewChild(DxDataGridComponent) contractParkAndLoanOperationalQuantitiesDataGrid: DxDataGridComponent;\r\n\r\n constructor(private accountContractSummaryCsvBuilderService: AccountContractSummaryCsvBuilderService) {\r\n }\r\n\r\n public contractPalOperationalQuantitiesOnCellPrepared($event): void {\r\n if (!DataGridHelpers.isDataRow($event.rowType)) return;\r\n\r\n DataGridHelpers.whenColumnDataFieldIs($event, 'nominationGroupMnemonic', () => DataGridColumnFormatHelper.setColSpan($event, 3));\r\n }\r\n\r\n public nominationGroupPalContractsOnCellPrepared($event): void {\r\n if (!DataGridHelpers.isDataRow($event.rowType)) return;\r\n\r\n if ($event.rowIndex > 0) {\r\n DataGridHelpers.whenColumnDataFieldIs($event, 'contractNumber', () => {\r\n DataGridColumnFormatHelper.setColSpan($event, 3);\r\n DataGridColumnFormatHelper.clearCell($event);\r\n DataGridColumnFormatHelper.setBackgroundColor($event, \"#fafafa\");\r\n DataGridColumnFormatHelper.clearBorder($event);\r\n });\r\n DataGridHelpers.whenColumnDataFieldIs($event, 'contractEffectiveGasDay', () => DataGridColumnFormatHelper.hideCell($event));\r\n DataGridHelpers.whenColumnDataFieldIs($event, 'contractExpiryGasDay', () => DataGridColumnFormatHelper.hideCell($event));\r\n }\r\n }\r\n\r\n public exportPalCsvClicked(): void {\r\n const customerShortName = this.model.lastSearchParams.enterpriseId !== null\r\n ? _.find(this.model.enterprises, x => x.id === this.model.lastSearchParams.enterpriseId).displayValue\r\n : \"\";\r\n\r\n this.accountContractSummaryCsvBuilderService.buildPalsSummaryCsv(this.model.palSearchResults, this.model.filteredBillableServices, customerShortName,\r\n this.model.lastSearchParams.fromGasDay, this.model.lastSearchParams.toGasDay);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {NominationResourceService} from \"@shared/resources/nominations-resource.service\";\r\nimport {BillableService} from \"@model/BillableService\";\r\nimport {Observable} from \"rxjs\";\r\nimport {BillableServiceReportType} from \"@shared/services/nomination/billable-service/billable-service.service.model\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {GasDay} from \"@model/gas-day\";\r\n\r\n@Injectable()\r\nexport class BillableServiceService {\r\n\r\n constructor(private nominationResource: NominationResourceService) { }\r\n\r\n queryAllByPipeline(forReportType?: BillableServiceReportType): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n\r\n if (forReportType) {\r\n params.set('forReportType', forReportType);\r\n }\r\n\r\n return this.nominationResource.get('/billableService', true, params);\r\n }\r\n\r\n updateEffectiveGasDays(effectiveGasDay: GasDay): Observable{\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('gasDay', effectiveGasDay.toString());\r\n return this.nominationResource.putWithNoResponseBody('/effectiveGasDays', null, true, params);\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n Validation Error From Gas Day cannot be later than To Gas Day.\r\n
\r\n\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n From Gas Day: {{model.lastSearchParams?.fromGasDay | gasDayFormat}}\r\n To Gas Day: {{model.lastSearchParams?.toGasDay | gasDayFormat}}\r\n Customer: {{model.lastSearchParams?.enterpriseId | displayName: 'id' : 'displayValue' : model.enterprises}}\r\n Account(s): {{model.lastSearchParams?.nomGroupIds | multiDisplayName: 'id' : 'mnemonic' : model.nomGroupsForEnterprise}}\r\n Receipt Location(s): {{model.lastSearchParams?.receiptLocationIds | multiDisplayName: 'id' : 'name' : model.locations}}\r\n Delivery Location(s): {{model.lastSearchParams?.deliveryLocationIds | multiDisplayName: 'id' : 'name' : model.locations}}\r\n Service Type(s): {{model.lastSearchParams?.billableServiceIds | multiDisplayName: 'id' : 'service' : model.billableServices}}\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.fromGasDay | gasDayFormat}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.toGasDay | gasDayFormat}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.enterpriseId | displayName: 'id' : 'displayValue' : model.enterprises}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.nomGroupIds | multiDisplayName: 'id' : 'mnemonic' : model.nomGroupsForEnterprise}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.receiptLocationIds | multiDisplayName: 'id' : 'name' : model.locations}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.deliveryLocationIds | multiDisplayName: 'id' : 'name' : model.locations}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.billableServiceIds | multiDisplayName: 'id' : 'service' : model.billableServices}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n","import * as _ from \"lodash\";\r\nimport {Component, OnInit, ViewChild} from '@angular/core';\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {EnterpriseSearchParams, NominationEnterprise, NominationEnterpriseService} from \"@shared/services/nomination/nomination-enterprise/nomination-enterprise.service\";\r\nimport {NominationGroupCollection, NominationNomGroupService} from \"@shared/services/nomination/nomination-nom-group/nomination-nom-group.service\";\r\nimport {forkJoin, Observable, of} from \"rxjs\";\r\nimport {concatMap, tap} from \"rxjs/operators\";\r\nimport {NominationPipelineGasDay} from \"@model/nomination-pipeline-gas-day\";\r\nimport {NominationSystemService} from '@shared/services/nomination/nomination-system/nomination-system.service';\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {NominationEnterpriseEnrichmentService} from \"@shared/services/nomination/nomination-enterprise-enrichment/nomination-enterprise-enrichment.service\";\r\nimport {NominationNomGroupEnrichmentService} from \"@shared/services/nomination/nomination-nom-group-enrichment/nomination-nom-group-enrichment.service\";\r\nimport {\r\n NominationGroupOperationalQuantity,\r\n NominationGroupOperationalQuantityRequest,\r\n NominationGroupService,\r\n NominationGroupPALOperationalQuantity, NominationGroupOperationalParkAndLoanRequest\r\n} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {AccountContractSummaryReportModel, AccountContractSummaryReportSearchParams} from \"app/gcts/contracts/account-contract-summary-report/account-contract-summary-report.model\";\r\nimport {LocationSearchParams, NominationLocation, NominationLocationService} from \"@shared/services/nomination/nomination-location/nomination-location.service\";\r\nimport {NominationLocationEnrichmentService} from \"@shared/services/nomination/nomination-location-enrichment/nomination-location-enrichment.service\";\r\nimport {BillableServiceService} from \"@shared/services/nomination/billable-service/billable-service.service\";\r\nimport {BillableService} from \"@model/BillableService\";\r\nimport {BusinessRight} from \"@model/business-right\";\r\nimport {BillableServiceReportType} from \"@shared/services/nomination/billable-service/billable-service.service.model\";\r\nimport {AccountContractSummaryTransportationComponent} from \"app/gcts/contracts/account-contract-summary-report/account-contract-summary-transportation/account-contract-summary-transportation.component\";\r\nimport {AccountContractSummaryParkAndLoanComponent} from \"app/gcts/contracts/account-contract-summary-report/account-contract-summary-parkandloan/account-contract-summary-parkandloan.component\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {\r\n CommonDataPipelinesService,\r\n CommonPipeline\r\n} from \"@shared/services/common-data/pipelines/common-data-pipelines.service\";\r\n\r\n@Component({\r\n selector: 'app-account-contract-summary-report',\r\n templateUrl: './account-contract-summary-report.component.html',\r\n styleUrls: ['./account-contract-summary-report.component.css']\r\n})\r\nexport class AccountContractSummaryReportComponent extends BaseSearchComponent implements OnInit {\r\n static FromGasDayParam = 'fromGasDay';\r\n static ToGasDayParam: string = 'toGasDay';\r\n static EnterpriseId: string = 'enterpriseId';\r\n static NomGroupIds: string = 'nomGroupIds';\r\n static ReceiptLocationIds: string = 'receiptLocationIds';\r\n static DeliveryLocationIds: string = 'deliveryLocationIds';\r\n static BillableServiceIds: string = 'billableServiceIds';\r\n\r\n model: AccountContractSummaryReportModel = new AccountContractSummaryReportModel();\r\n\r\n @ViewChild(AccountContractSummaryTransportationComponent)\r\n accountContractSummaryTransportationComponent: AccountContractSummaryTransportationComponent;\r\n\r\n @ViewChild(AccountContractSummaryParkAndLoanComponent)\r\n accountContractSummaryParkAndLoanComponent: AccountContractSummaryParkAndLoanComponent;\r\n\r\n tabs = [{id: 0, title: \"Transportation\", template: \"template1\"},\r\n {id: 1, title: \"Non Transportation\", template: \"template2\"}];\r\n\r\n constructor(protected appService: AppService,\r\n protected activatedRoute: ActivatedRoute,\r\n protected router: Router,\r\n protected alertService: AlertService,\r\n private nominationSystemService: NominationSystemService,\r\n private nominationEnterpriseService: NominationEnterpriseService,\r\n private nominationNomGroupService: NominationNomGroupService,\r\n private nominationLocationService: NominationLocationService,\r\n private billableServiceService: BillableServiceService,\r\n private nominationEnterpriseEnrichmentService: NominationEnterpriseEnrichmentService,\r\n private nominationNomGroupEnrichmentService: NominationNomGroupEnrichmentService,\r\n private nominationLocationEnrichmentService: NominationLocationEnrichmentService,\r\n private nominationGroupService: NominationGroupService,\r\n private sessionService: SessionService,\r\n private commonPipelineService: CommonDataPipelinesService) {\r\n\r\n super('Account Contract Summary', appService, activatedRoute, router, alertService);\r\n }\r\n\r\n /**\r\n * Public Methods\r\n */\r\n\r\n public isGasDayRangeValid(): boolean {\r\n if (!this.model.searchParams.fromGasDay || !this.model.searchParams.toGasDay) return true;\r\n\r\n return this.model.searchParams.toGasDay >= this.model.searchParams.fromGasDay;\r\n }\r\n\r\n public onEnterpriseChanged(): void {\r\n this.queryNomGroupsForEnterprise().subscribe(() => {\r\n this.model.enterpriseChanged();\r\n });\r\n }\r\n\r\n public onNomGroupChanged(): void {\r\n this.model.nomGroupChanged();\r\n }\r\n\r\n public onFromGasDayChanged(): void {\r\n if (!this.isGasDayRangeValid()) {\r\n this.model.searchParams.toGasDay = this.model.searchParams.fromGasDay;\r\n }\r\n\r\n this.loadSearchResources().subscribe(() => {\r\n });\r\n }\r\n\r\n /**\r\n * Protected Methods\r\n */\r\n\r\n protected loadInitialResources(): Observable {\r\n this.appService.hideMenu();\r\n\r\n const queryCommonPipeline$ = this.queryCommonPipeline();\r\n const queryPipelineGasDay$ = this.queryPipelineGasDay();\r\n\r\n return forkJoin(queryCommonPipeline$, queryPipelineGasDay$);\r\n }\r\n\r\n private queryCommonPipeline(): Observable{\r\n return this.commonPipelineService.getPipeline(this.sessionService.getPipeline().code)\r\n .pipe(\r\n tap(commonPipeline => this.model.commonPipeline = commonPipeline)\r\n );\r\n }\r\n\r\n private queryPipelineGasDay(): Observable{\r\n return this.nominationSystemService.pipelineGasDay()\r\n .pipe(\r\n tap(nominationPipelineGasDay => {\r\n this.model.pipelineGasDay = nominationPipelineGasDay;\r\n\r\n this.model.minGasDay = nominationPipelineGasDay.earliestSelectableGasDay;\r\n })\r\n );\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return this.paramValidator().isValid(params);\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams = new AccountContractSummaryReportSearchParams();\r\n this.model.clearSearchResults();\r\n\r\n this.model.searchParams.fromGasDay = this.model.pipelineGasDay.allowableGasDay;\r\n this.model.searchParams.toGasDay = this.model.pipelineGasDay.allowableGasDay;\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams = new AccountContractSummaryReportSearchParams();\r\n\r\n this.model.searchParams.fromGasDay = typedParams.asGasDay(AccountContractSummaryReportComponent.FromGasDayParam);\r\n this.model.searchParams.toGasDay = typedParams.asGasDay(AccountContractSummaryReportComponent.ToGasDayParam);\r\n this.model.searchParams.enterpriseId = typedParams.asNullableNumber(AccountContractSummaryReportComponent.EnterpriseId);\r\n this.model.searchParams.nomGroupIds = typedParams.asListOfNumbers(AccountContractSummaryReportComponent.NomGroupIds);\r\n this.model.searchParams.receiptLocationIds = typedParams.asListOfNumbers(AccountContractSummaryReportComponent.ReceiptLocationIds);\r\n this.model.searchParams.deliveryLocationIds = typedParams.asListOfNumbers(AccountContractSummaryReportComponent.DeliveryLocationIds);\r\n this.model.searchParams.billableServiceIds = typedParams.asListOfNumbers(AccountContractSummaryReportComponent.BillableServiceIds);\r\n\r\n if (this.model.searchParams.enterpriseId) {\r\n this.onEnterpriseChanged();\r\n }\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n const queryEnterprises$ = this.queryEnterprises();\r\n const queryLocations$ = this.queryLocations();\r\n const queryBillableServices$ = this.queryBillableServices();\r\n\r\n return forkJoin(queryEnterprises$, queryLocations$, queryBillableServices$);\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n\r\n const queryNominationGroupTransportation$ = this.queryNomGroupTransportation();\r\n const queryNominationGroupParkAndLoan$ = this.queryNomGroupParkAndLoan();\r\n\r\n return forkJoin(queryNominationGroupTransportation$, queryNominationGroupParkAndLoan$);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {};\r\n params[AccountContractSummaryReportComponent.FromGasDayParam] = this.model.searchParams.fromGasDay;\r\n params[AccountContractSummaryReportComponent.ToGasDayParam] = this.model.searchParams.toGasDay;\r\n\r\n if (this.model.searchParams.enterpriseId) {\r\n params[AccountContractSummaryReportComponent.EnterpriseId] = this.model.searchParams.enterpriseId;\r\n }\r\n\r\n if (_.size(this.model.searchParams.nomGroupIds) > 0) {\r\n params[AccountContractSummaryReportComponent.NomGroupIds] = this.model.searchParams.nomGroupIds;\r\n }\r\n\r\n if (_.size(this.model.searchParams.receiptLocationIds) > 0) {\r\n params[AccountContractSummaryReportComponent.ReceiptLocationIds] = this.model.searchParams.receiptLocationIds;\r\n }\r\n\r\n if (_.size(this.model.searchParams.deliveryLocationIds) > 0) {\r\n params[AccountContractSummaryReportComponent.DeliveryLocationIds] = this.model.searchParams.deliveryLocationIds;\r\n }\r\n\r\n if (_.size(this.model.searchParams.billableServiceIds) > 0) {\r\n params[AccountContractSummaryReportComponent.BillableServiceIds] = this.model.searchParams.billableServiceIds;\r\n }\r\n\r\n return params;\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n if (this.accountContractSummaryTransportationComponent) {\r\n this.accountContractSummaryTransportationComponent.resetSortOrder();\r\n }\r\n }\r\n\r\n /**\r\n * Private Methods\r\n */\r\n\r\n private paramValidator(): ParamValidator {\r\n const validator = ParamValidator.Standard();\r\n\r\n validator.isGasDay(AccountContractSummaryReportComponent.FromGasDayParam);\r\n validator.isGasDay(AccountContractSummaryReportComponent.ToGasDayParam);\r\n\r\n return validator;\r\n }\r\n\r\n private queryEnterprises(): Observable {\r\n const enterpriseSearchParams = new EnterpriseSearchParams();\r\n enterpriseSearchParams.gasDay = this.model.searchParams.fromGasDay;\r\n enterpriseSearchParams.accountBusinessRights = [BusinessRight.MultiTitleTransfer];\r\n enterpriseSearchParams.includeInactive = true;\r\n\r\n return this.nominationEnterpriseService.queryAllByPipeline(enterpriseSearchParams)\r\n .pipe(\r\n concatMap(enterprises => this.nominationEnterpriseEnrichmentService.enrichArray(enterprises, 'id')),\r\n tap(enrichedEnterprises => this.model.enterprises = _.orderBy(enrichedEnterprises, x => x.displayValue))\r\n );\r\n }\r\n\r\n private queryLocations(): Observable {\r\n const locationSearchParams = new LocationSearchParams(this.model.searchParams.fromGasDay, true, this.model.searchParams.toGasDay);\r\n\r\n return this.nominationLocationService.queryAllDetails2(locationSearchParams)\r\n .pipe(\r\n tap(locations => this.model.locations = _.orderBy(locations, x => x.name))\r\n );\r\n }\r\n\r\n private queryBillableServices(): Observable {\r\n return this.billableServiceService.queryAllByPipeline(BillableServiceReportType.AccountContractSummaryReport)\r\n .pipe(\r\n tap(billableServices => this.model.billableServices = billableServices)\r\n );\r\n }\r\n\r\n private queryNomGroupsForEnterprise(): Observable {\r\n if (!this.model.searchParams.enterpriseId) return of(null);\r\n\r\n const businessRights = [BusinessRight.Transportation, BusinessRight.ParkAndLoan, BusinessRight.ShortNoticeBalancing];\r\n\r\n return this.nominationNomGroupService.queryNomGroupDetailsByBusinessRights(this.model.searchParams.fromGasDay, businessRights, this.model.searchParams.enterpriseId, this.model.searchParams.toGasDay)\r\n .pipe(\r\n concatMap(nominationsGroups => this.nominationNomGroupEnrichmentService.enrichArray(nominationsGroups, 'id')),\r\n tap(enrichedNominationGroups => this.model.nomGroupsForEnterprise = _.orderBy(enrichedNominationGroups, x => x.mnemonic))\r\n );\r\n }\r\n\r\n private queryNomGroupTransportation(): Observable {\r\n const searchRequest = new NominationGroupOperationalQuantityRequest(\r\n this.model.searchParams.fromGasDay,\r\n this.model.searchParams.toGasDay,\r\n this.model.searchParams.enterpriseId,\r\n this.model.searchParams.nomGroupIds,\r\n this.model.searchParams.receiptLocationIds,\r\n this.model.searchParams.deliveryLocationIds,\r\n this.model.searchParams.billableServiceIds);\r\n\r\n return this.nominationGroupService.queryOperationalQuantity(searchRequest)\r\n .pipe(\r\n concatMap(nomGroupOperationalQuantities =>\r\n this.nominationEnterpriseEnrichmentService.enrichArray(nomGroupOperationalQuantities, 'enterpriseId', 'enterprise')),\r\n concatMap(nomGroupOperationalQuantities =>\r\n this.nominationLocationEnrichmentService.enrichArray(nomGroupOperationalQuantities, 'receiptLocationId', 'receiptLocation')),\r\n concatMap(nomGroupOperationalQuantities =>\r\n this.nominationLocationEnrichmentService.enrichArray(nomGroupOperationalQuantities, 'deliveryLocationId', 'deliveryLocation')),\r\n tap(nomGroupOperationalQuantities => {\r\n nomGroupOperationalQuantities = _.map(nomGroupOperationalQuantities, x => _.extend({}, x, {\r\n isItServiceType: _.find(this.model.billableServices, bs => bs.id === x.billableServiceId).service === 'IT'\r\n }));\r\n this.model.transportationSearchResults = _.sortBy(nomGroupOperationalQuantities, x => x.quantityEffectiveGasDay);\r\n })\r\n );\r\n }\r\n\r\n private queryNomGroupParkAndLoan(): Observable {\r\n const locationIds = _.uniq(_.union(this.model.searchParams.receiptLocationIds, this.model.searchParams.deliveryLocationIds));\r\n\r\n const searchRequest = new NominationGroupOperationalParkAndLoanRequest(\r\n this.model.searchParams.fromGasDay,\r\n this.model.searchParams.toGasDay,\r\n this.model.searchParams.enterpriseId,\r\n this.model.searchParams.nomGroupIds,\r\n locationIds,\r\n this.model.searchParams.billableServiceIds);\r\n\r\n return this.nominationGroupService.queryParkAndLoanOperationalQuantity(searchRequest)\r\n .pipe(\r\n concatMap(nomGroupPALOperationalQuantities =>\r\n this.nominationEnterpriseEnrichmentService.enrichArray(nomGroupPALOperationalQuantities, 'enterpriseId', 'enterprise')),\r\n concatMap(nomGroupPALOperationalQuantities =>\r\n this.nominationLocationEnrichmentService.enrichArray(nomGroupPALOperationalQuantities, 'locationId', 'location')),\r\n concatMap(nomGroupPALOperationalQuantities =>\r\n this.nominationNomGroupEnrichmentService.enrichArray(nomGroupPALOperationalQuantities, 'nominationGroupId', 'nominationGroup')),\r\n tap(nomGroupPALOperationalQuantities => this.model.palSearchResults = nomGroupPALOperationalQuantities)\r\n );\r\n }\r\n\r\n public calculateSearchResultsWidth() : string{\r\n return this.model.commonPipeline.isContractQuantityTypeVolume()\r\n ? \"1950px\"\r\n : \"1800px\";\r\n }\r\n}\r\n","import {BaseViewModel} from \"@model/base-view-model\";\r\nimport {NominationLocation} from \"@shared/services/nomination/nomination-location/nomination-location.service\";\r\nimport {BillableService} from \"@model/BillableService\";\r\nimport * as _ from \"lodash\";\r\nimport {\r\n ContractAwaitingProcessingDetail,\r\n ContractAwaitingProcessingQuantity,\r\n ContractNumber,\r\n Reason\r\n} from \"@shared/services/contracts/contracts/contracts-awaiting-processing.service\";\r\nimport {Enterprise} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {BusinessRight} from \"@model/business-right\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {NominationPipelineGasDay} from \"@model/nomination-pipeline-gas-day\";\r\nimport {CommonPipeline} from \"@shared/services/common-data/pipelines/common-data-pipelines.service\";\r\n\r\nexport class ContractsAwaitingProcessingModel extends BaseViewModel {\r\n /**\r\n * Public Properties\r\n */\r\n public pipelineGasDay: NominationPipelineGasDay;\r\n\r\n public searchParams: ContractsAwaitingLinkingSearchParams = new ContractsAwaitingLinkingSearchParams();\r\n public lastSearchParams: ContractsAwaitingLinkingSearchParams;\r\n public lastContractsSyncDateTime: Date;\r\n public hasEditSecurity: boolean = false;\r\n public contractQuantitiesShown: boolean = false;\r\n public areQuantitiesEmpty: boolean = false;\r\n\r\n /**\r\n * Data Sources\r\n */\r\n\r\n public queryAccountsDataSource;\r\n\r\n /**\r\n * Collections\r\n */\r\n public receiptLocations: NominationLocation[] = [];\r\n public deliveryLocations: NominationLocation[] = [];\r\n public filteredBillableServices: BillableService[] = [];\r\n public allowableBillableServiceIds: number[] = [];\r\n\r\n private _enterprises: Enterprise[] = [];\r\n\r\n public commonPipeline: CommonPipeline;\r\n public selectedQuantities: ContractAwaitingProcessingQuantity[] = [];\r\n\r\n\r\n public get enterprises(): Enterprise[] {\r\n return this._enterprises;\r\n }\r\n public set enterprises(enterprises: Enterprise[]) {\r\n this._enterprises = enterprises;\r\n\r\n if (this.hasOnlyOneItem(this._enterprises)) {\r\n this.searchParams.enterpriseId = _.head(this._enterprises).cid;\r\n }\r\n }\r\n\r\n private _billableServices: BillableService[] = [];\r\n public get billableServices(): BillableService[] {\r\n return this._billableServices;\r\n }\r\n public set billableServices(billableServices: BillableService[]) {\r\n this._billableServices = billableServices;\r\n this.filteredBillableServices = this._billableServices;\r\n this.allowableBillableServiceIds = _.map(this.billableServices, x => x.id);\r\n }\r\n\r\n private _contractNumbers: ContractNumber[] = [];\r\n public get contractNumbers(): ContractNumber[] {\r\n return this._contractNumbers;\r\n }\r\n public set contractNumbers(contractNumbers: ContractNumber[]) {\r\n this._contractNumbers = contractNumbers;\r\n }\r\n\r\n private _reasons: Reason[] = [];\r\n public get reasons(): Reason[] {\r\n return this._reasons;\r\n }\r\n public set reasons(reasons: Reason[]) {\r\n this._reasons = reasons;\r\n }\r\n\r\n private _searchResults: ContractAwaitingProcessingDetail[];\r\n public get searchResults(): ContractAwaitingProcessingDetail[] {\r\n return this._searchResults;\r\n }\r\n public set searchResults(contractAwaitingProcessingDetail: ContractAwaitingProcessingDetail[]) {\r\n _.forEach(contractAwaitingProcessingDetail, x => _.assign(x, {customerDisplayValue: `${x['customerShortName']} (${x['customerMnemonic']})`}));\r\n\r\n this._searchResults = contractAwaitingProcessingDetail;\r\n }\r\n\r\n public hasSearchResults(): boolean {\r\n return !!this._searchResults;\r\n }\r\n\r\n public clearSearchResults(): void {\r\n this._searchResults = null;\r\n }\r\n\r\n private hasOnlyOneItem(values: any[]): boolean {\r\n return _.size(values) === 1;\r\n }\r\n}\r\n\r\nexport class ContractsAwaitingLinkingSearchParams {\r\n public enterpriseId?: number;\r\n public billableServiceId?: number;\r\n public contractNum?: number;\r\n public reason: string;\r\n}\r\n\r\nexport class AddAccountModel {\r\n public contractVersionId: number;\r\n\r\n public enterpriseId: number;\r\n public accountId: number;\r\n public accountMnemonic: string;\r\n public name: string;\r\n public businessRight: BusinessRight;\r\n public anchorShipperRights: boolean;\r\n public billableServiceId: number;\r\n public invoiceGroupId: number;\r\n public primaryReceiptLocationId: number;\r\n public primaryDeliveryLocationId: number;\r\n public taxZeroRated: boolean;\r\n public startGasMonth: GasMonth;\r\n public endGasMonth: GasMonth;\r\n public invoiceAgentEnterpriseId: number;\r\n public isCgl: boolean;\r\n\r\n // Display Properties (probably in a later future, we will be using selects?\r\n public enterpriseDisplayName: string;\r\n public invoiceAgentEnterpriseDisplayName: string;\r\n public primaryReceiptLocationName: string;\r\n public primaryDeliveryLocationName: string;\r\n\r\n public errorMessage: string;\r\n}\r\n","import {ContractsResourceService} from \"@shared/resources/contracts-resource.service\";\r\nimport {Injectable} from \"@angular/core\";\r\nimport {Observable} from \"rxjs\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {IGasDay} from \"@model/gas-day-month.interface\";\r\nimport * as _ from \"lodash\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {map} from \"rxjs/operators\";\r\n\r\n@Injectable()\r\nexport class ContractsAwaitingProcessingService {\r\n\r\n constructor(private contractResource: ContractsResourceService) { }\r\n\r\n queryContractsAwaitingProcessing(searchParams: ContractsAwaitingProcessingReportRequest): Observable {\r\n return this.contractResource.get('/contracts/awaiting', true, this.buildUrlSearchParams(searchParams))\r\n .pipe(\r\n map(dtos => dtos.map(dto => ContractAwaitingProcessingDetail.create(dto)))\r\n );\r\n }\r\n\r\n queryContractQuantities(contractId: number): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('contractId', contractId.toString());\r\n\r\n return this.contractResource.get('/contracts/awaiting/quantities', true, params)\r\n .pipe(\r\n map(dtos =>\r\n _.sortBy(dtos.map(dto => ContractAwaitingProcessingQuantity.create(dto)), x => x.sortByIndex))\r\n );\r\n }\r\n\r\n queryAdditionalFilters(enterpriseId?: number, billableServiceId?: number): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n if (!_.isNil(enterpriseId) && _.isNumber(enterpriseId)) { params.set('enterpriseId', enterpriseId.toString()); }\r\n if (!_.isNil(billableServiceId) && _.isNumber(billableServiceId)) { params.set('billableServiceId', billableServiceId.toString()); }\r\n\r\n return this.contractResource.get('/contracts/awaiting/filters', true, params)\r\n .pipe(\r\n map(dto => AdditionalFilters.create(dto))\r\n );\r\n }\r\n\r\n queryAccountsForContract(contractId: number, contractVersionId: number, includeAllApplicable: boolean): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setNumber('contractId', contractId);\r\n params.setNumber('contractVersionId', contractVersionId);\r\n params.setBoolean('includeAllApplicable', includeAllApplicable);\r\n\r\n return this.contractResource.get('/contracts/awaiting/accounts', true, params);\r\n }\r\n\r\n acceptAccounts(linkAccountToContracts: LinkAccountToContract[]): Observable {\r\n return this.contractResource.postWithNoResponseBody('/contracts/awaiting/accept', linkAccountToContracts, true);\r\n }\r\n\r\n private buildUrlSearchParams(searchParams: ContractsAwaitingProcessingReportRequest): GCTSHttpParams {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n if (!_.isNil(searchParams.enterpriseId) && _.isNumber(searchParams.enterpriseId)) { params.set('enterpriseId', searchParams.enterpriseId.toString()); }\r\n if (!_.isNil(searchParams.billableServiceId)) { params.set('billableServiceId', searchParams.billableServiceId.toString()); }\r\n if (!_.isNil(searchParams.contractNum)) { params.set('contractNumber', searchParams.contractNum.toString()); }\r\n if (!_.isNil(searchParams.reason)) { params.set('reason', searchParams.reason.toString()); }\r\n return params;\r\n }\r\n}\r\n\r\nexport class LinkAccountToContract {\r\n nominationGroupId: number;\r\n contractId: number;\r\n contractNumber: string;\r\n contractVersionId: number;\r\n\r\n constructor(nominationGroupId: number, contractId: number, contractVersionId: number, contractNumber: string) {\r\n this.nominationGroupId = nominationGroupId;\r\n this.contractId = contractId;\r\n this.contractVersionId = contractVersionId;\r\n this.contractNumber = contractNumber;\r\n }\r\n}\r\n\r\nexport class ContractsAwaitingProcessingReportRequest {\r\n enterpriseId?: number;\r\n billableServiceId?: number;\r\n contractNum?: number;\r\n reason: string;\r\n}\r\n\r\nexport interface IContractAwaitingProcessingDetail {\r\n contractId: string;\r\n contractVersionId: string;\r\n customerId: string;\r\n accountId: string;\r\n contractNumber: string;\r\n contractVersion: string;\r\n billableServiceId: string;\r\n reason: string;\r\n primaryReceiptLocationId: string;\r\n primaryDeliveryLocationId: string;\r\n // receiptLocationId: string;\r\n // deliveryLocationId: string;\r\n taxZeroRated: boolean;\r\n lastModDateTime: Date;\r\n lastModByUserId: string;\r\n contractStartDate: string;\r\n contractEndDate: string;\r\n assignorEnterpriseId: string;\r\n assignorAccount: string;\r\n assignorContractNumber: string;\r\n hasVolumeDemandQuantity: boolean;\r\n isVolumeDemandQuantityValid: boolean;\r\n volumeDemandQuantityWarning: string;\r\n}\r\n\r\nexport class ContractAwaitingProcessingDetail {\r\n contractId: number;\r\n contractVersionId: number;\r\n customerId: number;\r\n accountId: number;\r\n contractNumber: number;\r\n contractVersion: number;\r\n billableServiceId: number;\r\n reason: string;\r\n receiptLocationId: number;\r\n deliveryLocationId: number;\r\n taxZeroRated: boolean;\r\n lastModDateTime: Date;\r\n lastModByUserId: string;\r\n contractStartDate: IGasDay;\r\n contractEndDate: IGasDay;\r\n assignorEnterpriseId: number;\r\n assignorAccount: string;\r\n assignorContractNumber: number;\r\n hasVolumeDemandQuantity: boolean;\r\n isVolumeDemandQuantityValid: boolean;\r\n volumeDemandQuantityWarning: string;\r\n\r\n\r\n public static create(dto: IContractAwaitingProcessingDetail): ContractAwaitingProcessingDetail {\r\n const contractAwaitingProcessingDetail = new ContractAwaitingProcessingDetail();\r\n\r\n contractAwaitingProcessingDetail.contractId = +dto.contractId;\r\n contractAwaitingProcessingDetail.contractVersionId = +dto.contractVersionId;\r\n contractAwaitingProcessingDetail.customerId = +dto.customerId;\r\n contractAwaitingProcessingDetail.accountId = !_.isNil(dto.accountId) ? +dto.accountId : null;\r\n contractAwaitingProcessingDetail.contractNumber = +dto.contractNumber;\r\n contractAwaitingProcessingDetail.contractVersion = +dto.contractVersion;\r\n contractAwaitingProcessingDetail.billableServiceId = +dto.billableServiceId;\r\n contractAwaitingProcessingDetail.reason = dto.reason;\r\n contractAwaitingProcessingDetail.receiptLocationId = !_.isNil(dto.primaryReceiptLocationId) ? +dto.primaryReceiptLocationId : null;\r\n contractAwaitingProcessingDetail.deliveryLocationId = !_.isNil(dto.primaryDeliveryLocationId) ? +dto.primaryDeliveryLocationId : null;\r\n contractAwaitingProcessingDetail.taxZeroRated = !!dto.taxZeroRated;\r\n contractAwaitingProcessingDetail.lastModDateTime = dto.lastModDateTime;\r\n contractAwaitingProcessingDetail.lastModByUserId = dto.lastModByUserId;\r\n contractAwaitingProcessingDetail.contractStartDate = GasDay.parse(dto.contractStartDate);\r\n contractAwaitingProcessingDetail.contractEndDate = GasDay.parse(dto.contractEndDate);\r\n contractAwaitingProcessingDetail.assignorEnterpriseId = !_.isNil(dto.assignorEnterpriseId) ? +dto.assignorEnterpriseId : null;\r\n contractAwaitingProcessingDetail.assignorContractNumber = !_.isNil(dto.assignorContractNumber) ? +dto.assignorContractNumber : null;\r\n contractAwaitingProcessingDetail.assignorAccount = dto.assignorAccount;\r\n contractAwaitingProcessingDetail.hasVolumeDemandQuantity = dto.hasVolumeDemandQuantity;\r\n contractAwaitingProcessingDetail.isVolumeDemandQuantityValid = dto.isVolumeDemandQuantityValid;\r\n contractAwaitingProcessingDetail.volumeDemandQuantityWarning = dto.volumeDemandQuantityWarning;\r\n\r\n return contractAwaitingProcessingDetail;\r\n }\r\n}\r\n\r\nexport class ContractAwaitingProcessingQuantity {\r\n public static sortByMap: { [quantityType: string ]: number; } = {\r\n Demand: 0,\r\n Injection: 1,\r\n Withdrawal: 2,\r\n TotalQuantity: 3\r\n };\r\n\r\n contractId: number;\r\n receiptLocationId: number;\r\n deliveryLocationId: number;\r\n quantityType: string;\r\n quantity: number;\r\n startDate: IGasDay;\r\n endDate: IGasDay;\r\n\r\n sortByIndex: number;\r\n quantityUom: string;\r\n\r\n public static create(dto: any): ContractAwaitingProcessingQuantity {\r\n const contractAwaitingProcessingQuantity = new ContractAwaitingProcessingQuantity();\r\n\r\n contractAwaitingProcessingQuantity.receiptLocationId = !_.isNil(dto.receiptLocationId) ? +dto.receiptLocationId : null;\r\n contractAwaitingProcessingQuantity.deliveryLocationId = !_.isNil(dto.deliveryLocationId) ? +dto.deliveryLocationId : null;\r\n contractAwaitingProcessingQuantity.quantityType = dto.quantityType;\r\n contractAwaitingProcessingQuantity.quantityUom = dto.quantityUom;\r\n contractAwaitingProcessingQuantity.quantity = +dto.quantity;\r\n contractAwaitingProcessingQuantity.contractId = +dto.contractId;\r\n contractAwaitingProcessingQuantity.startDate = GasDay.parse(dto.startDate);\r\n contractAwaitingProcessingQuantity.endDate = GasDay.parse(dto.endDate);\r\n\r\n contractAwaitingProcessingQuantity.sortByIndex = ContractAwaitingProcessingQuantity.sortByMap[dto.quantityType];\r\n\r\n return contractAwaitingProcessingQuantity;\r\n }\r\n}\r\n\r\nexport class AdditionalFilters {\r\n contractNumbers: ContractNumber[];\r\n reasons: Reason[];\r\n\r\n public static create(dto: any): AdditionalFilters {\r\n const additionalFilters = new AdditionalFilters();\r\n\r\n if (dto.contractNumbers && dto.contractNumbers instanceof Array) {\r\n additionalFilters.contractNumbers = _.map(dto.contractNumbers, contractNumber => new ContractNumber(contractNumber, contractNumber));\r\n }\r\n\r\n if (dto.reasons && dto.reasons instanceof Array) {\r\n additionalFilters.reasons = _.map(dto.reasons, reason => new Reason(reason, reason));\r\n }\r\n\r\n return additionalFilters;\r\n }\r\n}\r\n\r\nexport class Reason {\r\n id: string;\r\n name: string;\r\n\r\n constructor(id: string, name: string) {\r\n this.id = id;\r\n this.name = name;\r\n }\r\n}\r\n\r\nexport class ContractNumber {\r\n id: number;\r\n name: number;\r\n\r\n constructor(id: number, name: number) {\r\n this.id = id;\r\n this.name = name;\r\n }\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {Observable} from \"rxjs\";\r\nimport {map} from \"rxjs/operators\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {ContractsResourceService} from \"@shared/resources/contracts-resource.service\";\r\nimport {UpdateCustomerAccountParametersModel} from \"app/gcts/contracts/customer-account-parameters/customer-account-parameters.model\";\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CustomerAccountParametersService {\r\n constructor(private contractsResource: ContractsResourceService) {\r\n }\r\n\r\n queryCustomerAccountParameters(searchParams: CustomerAccountParametersRequest): Observable {\r\n return this.contractsResource.get(`/enterprises/${searchParams.customerId}/accountparameters`, true, this.buildUrlSearchParams(searchParams))\r\n .pipe(\r\n map(dto => CustomerAccountParametersRow.create(dto))\r\n );\r\n }\r\n\r\n updateCustomerAccountParameters(updateCustomerAccountParametersModel: UpdateCustomerAccountParametersModel): Observable {\r\n const body = this.buildBody(updateCustomerAccountParametersModel);\r\n return this.contractsResource.put('/enterprises/' + updateCustomerAccountParametersModel.customerId + '/accountparameters',body);\r\n }\r\n\r\n private buildBody(updateCustomerAccountParametersModel: UpdateCustomerAccountParametersModel) {\r\n const body = {\r\n enterpriseId: updateCustomerAccountParametersModel.customerId,\r\n pipelineCode: updateCustomerAccountParametersModel.pipelineCode,\r\n isAnchorShipper: updateCustomerAccountParametersModel.isAnchorShipper,\r\n };\r\n return body;\r\n }\r\n\r\n private buildUrlSearchParams(searchParams: CustomerAccountParametersRequest): GCTSHttpParams {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n return params;\r\n }\r\n}\r\n\r\nexport class CustomerAccountParametersRequest {\r\n customerId: number;\r\n}\r\n\r\nexport class ICustomerAccountParametersRow {\r\n enterpriseId: string;\r\n pipelineName: string;\r\n isAnchorShipper: string;\r\n version: string;\r\n}\r\n\r\nexport class CustomerAccountParametersRow {\r\n enterpriseId: number;\r\n pipelineName: string;\r\n isAnchorShipper: boolean;\r\n version: number;\r\n\r\n public static create(dto: any): CustomerAccountParametersRow {\r\n const customerAccountParametersRow = new CustomerAccountParametersRow();\r\n customerAccountParametersRow.enterpriseId = dto.enterpriseId;\r\n customerAccountParametersRow.pipelineName = dto.pipelineName;\r\n customerAccountParametersRow.isAnchorShipper = dto.isAnchorShipper;\r\n customerAccountParametersRow.version = dto.version;\r\n\r\n return customerAccountParametersRow;\r\n }\r\n}\r\n","import {BaseViewModel} from \"@model/base-view-model\";\r\nimport {CustomerAccountParametersRow} from \"@shared/services/accounts/customer-account-parameters/customer-account-parameters.service\";\r\nimport {Enterprise} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\n\r\nexport class CustomerAccountParametersModel extends BaseViewModel {\r\n searchParams: CustomerAccountParametersSearchParams = new CustomerAccountParametersSearchParams();\r\n lastSearchParams: CustomerAccountParametersSearchParams;\r\n searchResults: CustomerAccountParametersRow;\r\n public allEnterprises: Enterprise[];\r\n customers: Enterprise[];\r\n searchPerformed: boolean = false;\r\n timeOfLastSearch: Date;\r\n saved: boolean = false;\r\n customerParametersButtonEnabled: boolean = false;\r\n isAnchorShipper: boolean = false;\r\n}\r\n\r\nexport class CustomerAccountParametersSearchParams {\r\n customerId: number;\r\n}\r\n\r\nexport class UpdateCustomerAccountParametersModel {\r\n customerId: number;\r\n pipelineCode: string;\r\n isAnchorShipper: boolean = false;\r\n version: number;\r\n}\r\n","import {GasDay} from \"@model/gas-day\";\r\nimport {TemporaryAssignmentDto} from \"@model/dto/temporary-assignment-dto\";\r\n\r\n\r\nexport class TemporaryAssignment {\r\n public assignorEnterpriseId: number;\r\n public assigneeEnterpriseId: number;\r\n public contractVolumeQuantity: number;\r\n public contractQuantity: number;\r\n public quantityEffectiveGasDay: GasDay;\r\n public quantityExpiryGasDay: GasDay;\r\n public primaryReceiptLocation: number;\r\n public primaryDeliveryLocation: number;\r\n public assignorContractNumber: number;\r\n public assignorAccountId: number;\r\n public assigneeContractNumber: number;\r\n public assigneeAccountId: number;\r\n public customerReferenceNumber: number;\r\n\r\n public static create(dto: TemporaryAssignmentDto): TemporaryAssignment {\r\n const temporaryAssignment = new TemporaryAssignment();\r\n\r\n temporaryAssignment.assignorEnterpriseId = dto.assignorEnterpriseId;\r\n temporaryAssignment.assigneeEnterpriseId = dto.assigneeEnterpriseId;\r\n temporaryAssignment.contractVolumeQuantity = dto.contractVolumeQuantity;\r\n temporaryAssignment.contractQuantity = dto.contractQuantity;\r\n temporaryAssignment.quantityEffectiveGasDay = GasDay.parse(dto.quantityEffectiveGasDay);\r\n temporaryAssignment.quantityExpiryGasDay = GasDay.parse(dto.quantityExpiryGasDay);\r\n temporaryAssignment.primaryReceiptLocation = dto.primaryReceiptLocation;\r\n temporaryAssignment.primaryDeliveryLocation = dto.primaryDeliveryLocation;\r\n temporaryAssignment.assignorContractNumber = dto.assignorContractNumber;\r\n temporaryAssignment.assignorAccountId = dto.assignorAccountId;\r\n temporaryAssignment.assigneeContractNumber = dto.assigneeContractNumber;\r\n temporaryAssignment.assigneeAccountId = dto.assigneeAccountId;\r\n temporaryAssignment.customerReferenceNumber = dto.customerReferenceNumber;\r\n\r\n return temporaryAssignment;\r\n }\r\n}\r\n","import {IGasDay} from \"@model/gas-day-month.interface\";\r\nimport * as _ from \"lodash\";\r\nimport {GasDay} from \"@model/gas-day\";\r\n\r\nexport class ContractServiceRequester {\r\n serviceRequesterEnterpriseId: number;\r\n accountId: number;\r\n contractPartyStartGasDay: IGasDay;\r\n contractPartyEndGasDay: IGasDay;\r\n\r\n public static create(dto: any): ContractServiceRequester {\r\n const contractServiceRequester = new ContractServiceRequester();\r\n\r\n contractServiceRequester.serviceRequesterEnterpriseId = !_.isNil(dto.serviceRequesterEnterpriseId) ? +dto.serviceRequesterEnterpriseId : null;\r\n contractServiceRequester.accountId = !_.isNil(dto.accountId) ? +dto.accountId : null;\r\n contractServiceRequester.contractPartyStartGasDay = GasDay.parse(dto.contractPartyStartGasDay);\r\n contractServiceRequester.contractPartyEndGasDay = GasDay.parse(dto.contractPartyEndGasDay);\r\n\r\n return contractServiceRequester;\r\n }\r\n}\r\n","import {GasDay} from \"@model/gas-day\";\r\nimport * as _ from \"lodash\";\r\nimport {IContractResponse} from \"@model/service-models/icontract-response\";\r\n\r\n\r\nexport class Contract {\r\n contractId: number;\r\n contractNumber: number;\r\n contractVersionId: number;\r\n contractVersionNumber: number;\r\n\r\n customerId: number;\r\n billableServiceId: number;\r\n primaryReceiptLocationId: number;\r\n primaryDeliveryLocationId: number;\r\n taxZeroRated: boolean;\r\n\r\n startGasDay: GasDay;\r\n endGasDay: GasDay;\r\n\r\n accountId: number;\r\n accountMnemonic: string;\r\n linkStartGasDay: GasDay;\r\n linkEndGasDay: GasDay;\r\n\r\n public static create(dto: IContractResponse): Contract {\r\n const contract = new Contract();\r\n _.assign(contract, dto);\r\n\r\n contract.startGasDay = GasDay.parse(dto.startGasDay);\r\n contract.endGasDay = GasDay.parse(dto.endGasDay);\r\n contract.linkStartGasDay = GasDay.parse(dto.linkStartGasDay);\r\n contract.linkEndGasDay = GasDay.parse(dto.linkEndGasDay);\r\n\r\n return contract;\r\n }\r\n}\r\n","export class MoveContractBody {\r\n contractVersionId: number;\r\n nominationGroupId: number;\r\n accountName: string;\r\n accountMnemonic: string;\r\n linkStartGasDay: string;\r\n gasDay: string;\r\n}\r\n","import {ContractsResourceService} from \"@shared/resources/contracts-resource.service\";\r\nimport {IGasDay} from \"@model/gas-day-month.interface\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport * as _ from \"lodash\";\r\nimport {Observable} from \"rxjs\";\r\nimport {map} from \"rxjs/operators\";\r\nimport {Injectable} from \"@angular/core\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {ContractPricingSearchParams} from \"app/gcts/contracts/contract-pricing/contract-pricing.model\";\r\nimport {TemporaryAssignment} from \"@model/models/temporary-assignment\";\r\nimport {ContractServiceRequester} from \"@model/service-models/contract-service-requester\";\r\nimport {TemporaryAssignmentDto} from \"@model/dto/temporary-assignment-dto\";\r\nimport {IContractResponse} from \"@model/service-models/icontract-response\";\r\nimport {Contract} from \"@model/models/contract\";\r\nimport {MoveContractBody} from \"@model/models/move-contract-body\";\r\nimport {LoadContractUploadParameters} from \"@model/service-models/load-contract-upload-parameters\";\r\nimport {BaseUploadResponse} from \"@model/base-upload-response\";\r\nimport {ContractRow} from \"@model/view-helpers/contract-row\";\r\n\r\n@Injectable()\r\nexport class ContractsService {\r\n\r\n constructor(private contractResource: ContractsResourceService) {}\r\n\r\n public queryContractNumbers(searchParams: ContractPricingSearchParams): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n if(!isNaN(searchParams.customerId)) params.setNumber('customerId', searchParams.customerId);\r\n params.set('serviceType', searchParams.serviceType);\r\n params.setGasDay(searchParams.startDate, 'fromGasDay');\r\n params.setGasDay(searchParams.endDate, 'toGasDay');\r\n return this.contractResource.get('/contracts', true, params);\r\n }\r\n\r\n public queryContractServiceRequesters(contractId: number, contractVersionId: number): Observable {\r\n return this.contractResource.get(`/contracts/${contractId}/contractversions/${contractVersionId}/servicerequesters`, true)\r\n .pipe(\r\n map(dtos => dtos.map(dto => ContractServiceRequester.create(dto)))\r\n );\r\n }\r\n\r\n public moveContract(contractVersionId: number, nominationGroupId: number, asOfGasDay: IGasDay, gasDay: IGasDay, name?: string, mneomic?: string): Observable {\r\n const body = new MoveContractBody();\r\n body.contractVersionId = contractVersionId;\r\n body.nominationGroupId = nominationGroupId;\r\n body.linkStartGasDay = asOfGasDay.toString();\r\n body.accountName = name;\r\n body.accountMnemonic = mneomic;\r\n body.gasDay = gasDay.toString();\r\n\r\n return this.contractResource.patchWithNoResponseBody(`/contracts/${contractVersionId}`, body);\r\n }\r\n\r\n public queryContractAccountHistory(contractVersionId: number): Observable {\r\n const resourceURI: string = `/contracts/${contractVersionId}/accounts`;\r\n return this.contractResource.get(resourceURI)\r\n .pipe(\r\n map(dtos => dtos.map(dto => Contract.create(dto)))\r\n );\r\n }\r\n\r\n public unlinkContract(contractVersionId: number, nominationGroupId: number, linkStartGasDay: GasDay): Observable {\r\n return this.contractResource\r\n .patchWithNoResponseBody(`/contracts/${contractVersionId}/unlink`, {nominationGroupId: nominationGroupId, linkStartGasDay: linkStartGasDay.toString()});\r\n }\r\n\r\n public queryTempAssignmentForCustomer(fromGasDay: GasDay, toGasDay: GasDay, customerId: number, primaryReceiptLocationId?: number, primaryDeliveryLocationId?: number): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setGasDay(fromGasDay, 'fromGasDay');\r\n params.setGasDay(toGasDay, 'toGasDay');\r\n params.setOptionalNumber('receiptLocationId', primaryReceiptLocationId);\r\n params.setOptionalNumber('deliveryLocationId', primaryDeliveryLocationId);\r\n\r\n return this.contractResource.get(`/contracts/tempassign/customer/${customerId}`, true, params)\r\n .pipe(\r\n map(dtos => _.map(dtos, x => TemporaryAssignment.create(x)))\r\n );\r\n }\r\n\r\n public queryTempAssignmentForAssignorAssignee(fromGasDay: GasDay, toGasDay: GasDay, assignorEnterpriseIds: number[],\r\n assigneeEnterpriseIds: number[], primaryReceiptLocationId?: number,\r\n primaryDeliveryLocationId?: number): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setGasDay(fromGasDay, 'fromGasDay');\r\n params.setGasDay(toGasDay, 'toGasDay');\r\n params.setListOfNumbers('assignorIds', assignorEnterpriseIds);\r\n params.setListOfNumbers('assigneeIds', assigneeEnterpriseIds);\r\n params.setOptionalNumber('receiptLocationId', primaryReceiptLocationId);\r\n params.setOptionalNumber('deliveryLocationId', primaryDeliveryLocationId);\r\n\r\n return this.contractResource.get(`/contracts/tempassign`, true, params)\r\n .pipe(\r\n map(dtos => _.map(dtos, x => TemporaryAssignment.create(x)))\r\n );\r\n }\r\n\r\n public uploadContracts(uploadParameters: LoadContractUploadParameters) : Observable>{\r\n const body = {\r\n Contracts: uploadParameters.rows\r\n };\r\n\r\n return this.contractResource.post>(\"/contracts/\", body, true );\r\n }\r\n}\r\n","import {ContractsResourceService} from \"@shared/resources/contracts-resource.service\";\r\nimport {Observable} from \"rxjs\";\r\nimport { Injectable } from \"@angular/core\";\r\n\r\n@Injectable()\r\nexport class AccountsJobService {\r\n constructor(private accountsResource: ContractsResourceService) {\r\n }\r\n\r\n getLastContractSync(): Observable {\r\n return this.accountsResource.get('/syncDataJob/lastRun', true);\r\n }\r\n}\r\n","\r\n
\r\n \r\n
\r\n
\r\n Error: {{addAccountModel.errorMessage}}\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Customer: {{model.lastSearchParams?.enterpriseId | displayName: 'cid' : 'displayName' : model.enterprises}}\r\n Service Type: {{model.lastSearchParams?.billableServiceId | displayName: 'id' : 'service' : model.billableServices}}\r\n Contract: {{model.lastSearchParams?.contractNum | displayName: 'id' : 'name' : model.contractNumbers}}\r\n Service Type: {{model.lastSearchParams?.reason | displayName: 'id' : 'name' : model.reasons}}\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.enterpriseId | displayName: 'cid' : 'displayName' : model.enterprises}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.billableServiceId | displayName: 'id' : 'service' : model.billableServices}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.contractNum | displayName: 'id' : 'name' : model.contractNumbers}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.reason | displayName: 'id' : 'name' : model.reasons}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n {{model.lastContractsSyncDateTime | dateFormat: 'YYYY-MMM-DD hh:mm:ss A'}}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n Number of results found: {{model.searchResults.length}}\r\n
\r\n\r\n \r\n\r\n \r\n\r\n
\r\n \r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n
\r\n Customer\r\n
\r\n\r\n \r\n \r\n \r\n \r\n
\r\n {{row.data.accountId | displayName: 'id' : 'mnemonic' : row.data.availableAccounts : ''}}\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n
\r\n Service
Type\r\n
\r\n
\r\n {{ row.data.billableServiceId | displayName: 'id' : 'service' : model.billableServices }}\r\n
\r\n\r\n \r\n\r\n \r\n
\r\n Primary
Receipt\r\n
\r\n\r\n \r\n
\r\n Primary
Delivery\r\n
\r\n\r\n \r\n
\r\n Tax Zero
Rated\r\n
\r\n
\r\n {{ row.data.taxZeroRated | booleanAsYesNo: 'abbr' }}\r\n
\r\n\r\n \r\n
\r\n Contract
Last Mod At\r\n
\r\n\r\n \r\n
\r\n Contract
Last Mod By\r\n
\r\n\r\n \r\n
\r\n Contract
Start Gas Day\r\n
\r\n\r\n \r\n
\r\n Contract
End Gas Day\r\n
\r\n\r\n \r\n\r\n \r\n
\r\n Assignor
Account\r\n
\r\n\r\n \r\n
\r\n Assignor
Contract\r\n
\r\n\r\n
\r\n {{ row.value | gasDayFormat }}\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n
\r\n {{ row.value | gasDayFormat : false }}\r\n
\r\n \r\n
\r\n  \r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n Contract Party
Start Date\r\n
\r\n\r\n \r\n
\r\n Contract Party
End Date\r\n
\r\n\r\n
\r\n {{ row.value | gasDayFormat : false }}\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n","import {Component, OnInit, ViewChild} from \"@angular/core\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {EMPTY, forkJoin, Observable, of} from \"rxjs\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {\r\n AddAccountModel,\r\n ContractsAwaitingLinkingSearchParams,\r\n ContractsAwaitingProcessingModel\r\n} from \"app/gcts/contracts/contracts-awaiting-processing/contracts-awaiting-processing.model\";\r\nimport {concatMap, tap} from \"rxjs/operators\";\r\nimport * as _ from \"lodash\";\r\nimport {BillableService} from \"@model/BillableService\";\r\nimport {BillableServiceService} from \"@shared/services/nomination/billable-service/billable-service.service\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {\r\n AdditionalFilters,\r\n ContractAwaitingProcessingDetail,\r\n ContractAwaitingProcessingQuantity,\r\n ContractsAwaitingProcessingReportRequest,\r\n ContractsAwaitingProcessingService, LinkAccountToContract\r\n} from \"@shared/services/contracts/contracts/contracts-awaiting-processing.service\";\r\nimport {\r\n Enterprise,\r\n EnterpriseService\r\n} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport * as dx from \"devextreme/core/renderer\";\r\nimport {AccountsJobService} from \"@shared/services/accounts/accounts/accounts-job.service\";\r\nimport {PipelineSettingMapService} from \"@shared/services/nomination/pipeline-settings-map/pipeline-setting-map.service\";\r\nimport {GctsProcess} from \"@model/gcts-process\";\r\nimport {JobService} from \"@shared/services/job-scheduling/jobs/job.service\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {\r\n CreateNominationGroupRequest,\r\n NominationGroupNameDto,\r\n NominationGroupService\r\n} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport {DataGridHooks} from \"@shared/devexpress/datagrid-hooks\";\r\nimport {ModalComponent} from \"@shared/components/modal/modal.component\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {NominationSystemService} from \"@shared/services/nomination/nomination-system/nomination-system.service\";\r\nimport {CapabilitiesService} from \"@shared/services/webapp/capabilities/capabilities.service\";\r\nimport {UserService} from \"@shared/services/webapp/user/user-service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {ContractsService} from \"@shared/services/contracts/contracts/contracts.service\";\r\nimport {ErrorService} from \"@shared/services/webapp/error/error-service\";\r\nimport {AgentRelationship, AgentRelationshipService, MaintainAgentSearchRequest} from \"@shared/services/nomination/agent-relationship/agent-relationship.service\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {LocationEnrichmentService} from \"@shared/services/enrichment/location-enrichment.service\";\r\nimport {LocationService} from \"@shared/services/common-data/location/location.service\";\r\nimport {NomGroupEnrichmentService} from \"@shared/services/enrichment/nomgroup-enrichment.service\";\r\nimport {ContractServiceRequester} from \"@model/service-models/contract-service-requester\";\r\nimport {NominationPipelineGasDay} from \"@model/nomination-pipeline-gas-day\";\r\nimport {\r\n CommonDataPipelinesService,\r\n CommonPipeline\r\n} from \"@shared/services/common-data/pipelines/common-data-pipelines.service\";\r\nimport {YesNoModalOptions} from \"@shared/services/webapp/modal-options/yes-no-modal-options\";\r\nimport {SelectedModalOption} from \"@shared/services/webapp/modal-options/selected-modal-option\";\r\nimport {YesNoCancelModalService} from \"@shared/services/webapp/yes-no-cancel-modal/yes-no-cancel-modal.service\";\r\nimport {CustomerAccountParametersRow, CustomerAccountParametersService} from \"@shared/services/accounts/customer-account-parameters/customer-account-parameters.service\";\r\nimport {CustomerAccountParametersSearchParams} from \"app/gcts/contracts/customer-account-parameters/customer-account-parameters.model\";\r\n\r\n@Component({\r\n selector: 'app-contracts-awaiting-processing',\r\n templateUrl: './contracts-awaiting-processing.component.html',\r\n styleUrls: ['./contracts-awaiting-processing.component.css']\r\n})\r\nexport class ContractsAwaitingProcessingComponent extends BaseSearchComponent implements OnInit {\r\n\r\n constructor(protected appService: AppService,\r\n protected activatedRoute: ActivatedRoute,\r\n protected router: Router,\r\n protected alertService: AlertService,\r\n private nominationsSystemService: NominationSystemService,\r\n private billableServiceService: BillableServiceService,\r\n private enterpriseService: EnterpriseService,\r\n private enterpriseEnrichmentService: EnterpriseEnrichmentService,\r\n private locationService: LocationService,\r\n private locationEnrichmentService: LocationEnrichmentService,\r\n private contractsAwaitingProcessingService: ContractsAwaitingProcessingService,\r\n private contractsService: ContractsService,\r\n private accountsJobService: AccountsJobService,\r\n private pipelineSettingsMapService: PipelineSettingMapService,\r\n private jobService: JobService,\r\n private nomGroupEnrichmentService: NomGroupEnrichmentService,\r\n private nominationGroupService: NominationGroupService,\r\n private agentRelationshipService: AgentRelationshipService,\r\n private capabilitiesService: CapabilitiesService,\r\n private userService: UserService,\r\n private sessionService: SessionService,\r\n private modalService: YesNoCancelModalService,\r\n private commonPipelineService: CommonDataPipelinesService,\r\n private customerAccountParametersService: CustomerAccountParametersService) {\r\n super('Contracts Awaiting Processing', appService, activatedRoute, router, alertService);\r\n\r\n enterpriseEnrichmentService.setEnrichmentResource(enterpriseService);\r\n locationEnrichmentService.setEnrichmentResource(locationService);\r\n nomGroupEnrichmentService.setEnrichmentResource(nominationGroupService);\r\n }\r\n model: ContractsAwaitingProcessingModel = new ContractsAwaitingProcessingModel();\r\n addAccountModel: AddAccountModel = null;\r\n\r\n @ViewChild(DxDataGridComponent)\r\n dataGrid: DxDataGridComponent;\r\n\r\n @ViewChild(ModalComponent)\r\n addAccountModal: ModalComponent;\r\n\r\n public onParamChanged(): void {\r\n this.queryAdditionalFilters().subscribe(() => {\r\n });\r\n }\r\n\r\n public shouldDisableAccountMnemonic(): boolean {\r\n return _.find(this.model.billableServices, x => x.id === this.addAccountModel.billableServiceId).service !== 'SNB';\r\n }\r\n\r\n public submitAddAccount(): void {\r\n this.alertService.clearMessages();\r\n\r\n const request = new CreateNominationGroupRequest();\r\n request.contractVersionId = this.addAccountModel.contractVersionId;\r\n request.id = this.addAccountModel.accountId;\r\n request.mnemonic = this.addAccountModel.accountMnemonic;\r\n request.name = this.addAccountModel.name;\r\n request.invoiceAgentId = this.addAccountModel.invoiceAgentEnterpriseId;\r\n request.enterpriseId = this.addAccountModel.enterpriseId;\r\n request.effectiveGasDay = this.addAccountModel.startGasMonth.start();\r\n request.expiryGasDay = this.addAccountModel.endGasMonth.end();\r\n if (this.addAccountModel.isCgl){\r\n request.anchorShipperRights = this.addAccountModel.anchorShipperRights;\r\n }\r\n\r\n this.nominationGroupService.createNomGroupFinalState(request)\r\n .subscribe(() => {\r\n const updateObject = new ContractAwaitingProcessingDetail();\r\n updateObject.accountId = request.id;\r\n const nominationGroupNameDto = NominationGroupNameDto.create(request.id, request.mnemonic, request.name);\r\n this.addAvailableAccounts(updateObject, [nominationGroupNameDto]);\r\n this.nomGroupEnrichmentService.addMapEntry(nominationGroupNameDto); // Add Entry to Enrichment Service\r\n\r\n this.dataGrid.instance.getDataSource().store().update(request.contractVersionId, updateObject)\r\n .then(() => {\r\n this.dataGrid.instance.selectRows([request.contractVersionId], true); // Auto Select Record\r\n });\r\n this.addAccountModal.hide();\r\n },\r\n error => {\r\n this.alertService.clearMessages();\r\n const errMsg = ErrorService.getErrorMessageFromErrorResponse(error);\r\n this.addAccountModel.errorMessage = errMsg;\r\n });\r\n }\r\n\r\n public showAddAccountModal(row: any): void {\r\n this.alertService.clearMessages();\r\n\r\n const isCgl: boolean = this.pipelineSettingsMapService.isCgl(this.sessionService.getPipeline().code);\r\n\r\n const createNomGroup$ = this.nominationGroupService.createNomGroupInitialState(row.contractVersionId);\r\n const invoiceAgents$ = this.getAgentRelationships(row.customerId);\r\n const serviceRequesters$ = this.queryContractServiceRequesters(row.contractId, row.contractVersionId);\r\n const customerAccountParameters$ = this.getCustomerAccountParameters(isCgl, row.customerId)\r\n\r\n forkJoin([createNomGroup$, invoiceAgents$, serviceRequesters$, customerAccountParameters$])\r\n .pipe(\r\n concatMap(([nomGroup, invoiceAgents, serviceRequesters, customerAccountParameters]) => {\r\n const expiryGasDay = nomGroup.expiryGasDay.day === 1 ? nomGroup.expiryGasDay.previous() : nomGroup.expiryGasDay;\r\n const startGasMonth = row.reason !== 'Amalgamate'\r\n ? GasMonth.fromGasDay(row.contractStartDate)\r\n : GasMonth.fromGasDay(_.first(serviceRequesters).contractPartyStartGasDay); // Use Counter Party Start Gas Day for Amalgamate Contracts\r\n const endGasMonth = new GasMonth(expiryGasDay.year, expiryGasDay.month);\r\n\r\n // Setup New Model\r\n const newAccountModel = new AddAccountModel();\r\n newAccountModel.isCgl = isCgl;\r\n newAccountModel.contractVersionId = row.contractVersionId;\r\n newAccountModel.enterpriseId = nomGroup.ownerEnterpriseId;\r\n newAccountModel.accountId = nomGroup.id;\r\n newAccountModel.accountMnemonic = nomGroup.mnemonic;\r\n newAccountModel.name = nomGroup.name;\r\n newAccountModel.businessRight = nomGroup.businessRight;\r\n newAccountModel.billableServiceId = row.billableServiceId;\r\n newAccountModel.invoiceGroupId = nomGroup.invoiceGroupId;\r\n newAccountModel.primaryReceiptLocationId = row.receiptLocationId;\r\n newAccountModel.primaryDeliveryLocationId = row.deliveryLocationId;\r\n newAccountModel.taxZeroRated = nomGroup.isGstExempt;\r\n newAccountModel.startGasMonth = startGasMonth;\r\n newAccountModel.endGasMonth = endGasMonth;\r\n\r\n if (_.size(invoiceAgents) === 1) {\r\n newAccountModel.invoiceAgentEnterpriseId = +_.head(invoiceAgents).agentEnterpriseId;\r\n } else {\r\n newAccountModel.invoiceAgentEnterpriseId = row.customerId;\r\n }\r\n\r\n if (!_.isNil(customerAccountParameters)){\r\n newAccountModel.anchorShipperRights = customerAccountParameters.isAnchorShipper;\r\n }\r\n\r\n return of(newAccountModel);\r\n }),\r\n concatMap(newAccountModel => this.enterpriseEnrichmentService.enrich(newAccountModel, 'invoiceAgentEnterpriseId', 'invoiceAgentEnterprise')),\r\n concatMap(newAccountModel => this.enterpriseEnrichmentService.enrich(newAccountModel, 'enterpriseId', 'enterprise')),\r\n concatMap(newAccountModel => this.locationEnrichmentService.enrich(newAccountModel, 'primaryReceiptLocationId', 'primaryReceiptLocation')),\r\n concatMap(newAccountModel => this.locationEnrichmentService.enrich(newAccountModel, 'primaryDeliveryLocationId', 'primaryDeliveryLocation')),\r\n )\r\n .subscribe(newAccountModel => {\r\n this.addAccountModel = newAccountModel;\r\n this.addAccountModal.show();\r\n });\r\n }\r\n\r\n public cellPrepared(e): void {\r\n DataGridHooks.onSelectBoxSelectionChangedForColumn(e, 'accountId', (x, y) => {\r\n this.selectOrDeselectRow(x, y.selectedItem);\r\n });\r\n\r\n // Show or Hide Expansion\r\n if (e.rowType === \"data\") {\r\n if (e.column.command === \"expand\") {\r\n const billableService = _.find(this.model.billableServices, b => b.id === e.data.billableServiceId);\r\n if (billableService.service === 'IT') {\r\n dx(e.cellElement).removeClass(\"dx-datagrid-expand\");\r\n dx(e.cellElement).empty();\r\n }\r\n }\r\n\r\n if (e.column.dataField === \"accountId\") {\r\n /*\r\n if (_.isNil(e.data.assignorAccount)) {\r\n // e.editorOptions.disabled = true;\r\n e.row.disabled = true;\r\n e.row.editorOptions.disabled = true;\r\n e.cellElement.disabled = true;\r\n\r\n\r\n\r\n const cellElement = dx(e.cellElement);\r\n\r\n cellElement.editing.allowUpdating = false;\r\n cellElement.editing.allowAdding = false;\r\n cellElement.editing.allowDeleting = false;\r\n\r\n\r\n // cellElement.find('.dx-selectbox').css(\"display\", \"none\");\r\n // cellElement.dxSelectBox(\"instance\").option('disabled', true);\r\n // dx(e.cellElement).empty();\r\n }\r\n*/\r\n }\r\n/*\r\n if (e.column.command === \"select\") {\r\n e.data.parentAwaiting\r\n const cellElement = dx(e.cellElement);\r\n cellElement.find('.dx-select-checkbox').css(\"display\", \"none\");\r\n\r\n // const instance = dx(e.cellElement).dxCheckBox(\"instance\");\r\n // instance.option(\"disabled\", true);\r\n // e.cellElement.off();\r\n // const editor = CheckBox.getInstance(e.cellElement.querySelector(\".dx-select-checkbox\"));\r\n\r\n }\r\n*/\r\n }\r\n }\r\n\r\n public expandRow($event): void {\r\n this.model.contractQuantitiesShown = true;\r\n $event.component.getDataSource().store().byKey($event.key).then((row) => {\r\n const queryContractQuantities$ = this.queryContractQuantities(row.contractId)\r\n .pipe(\r\n tap(quantities => {\r\n this.checkForEmptyQuantities(quantities);\r\n row['quantities'] = quantities;\r\n })\r\n );\r\n\r\n const queryContractServiceRequesters$ = this.queryContractServiceRequesters(row.contractId, row.contractVersionId)\r\n .pipe(\r\n tap(serviceRequesters => row['serviceRequesters'] = serviceRequesters)\r\n );\r\n\r\n forkJoin([queryContractQuantities$, queryContractServiceRequesters$]).subscribe(() => {});\r\n });\r\n }\r\n\r\n public collapseRow($event): void{\r\n this.model.contractQuantitiesShown = false;\r\n this.model.areQuantitiesEmpty = false;\r\n }\r\n\r\n public disableAccountIdField(e): void {\r\n // Cannot edit if the Temp Assignor hasn't been linked yet. Does this still check off the checkbox though?\r\n if (this.shouldDisableForUnlinkedAssignorTAssign(e.data)) {\r\n e.cancel = true;\r\n }\r\n if (this.doesAccountHaveDefaultValue(e.data)) { e.cancel = true; } // Cannot be edited if account has default value (this is set during queryContractsAwaitingProcessing)\r\n }\r\n\r\n public modifyAccountFieldDropDownWidth(e): void {\r\n DataGridHooks.setDropDownWidth(e, 'accountId', 400); // Set Account Id DropDown Width\r\n }\r\n\r\n public hasSelectedRows(): boolean {\r\n if (!this.dataGrid) { return false; }\r\n\r\n const selectedRows = this.dataGrid.instance.getSelectedRowsData();\r\n return !_.isNil(selectedRows) && _.some(selectedRows, x => !_.isNil(x.accountId));\r\n }\r\n\r\n public acceptClicked(): void{\r\n this.alertService.clearMessages();\r\n\r\n this.dataGrid.instance.saveEditData().then(() => {\r\n const dataRows = this.dataGrid.instance.getSelectedRowsData();\r\n\r\n const linkAccountsToContracts: LinkAccountToContract[] = _.map(dataRows, x => new LinkAccountToContract(x.accountId, x.contractId, x.contractVersionId, x.contractNumber));\r\n const linkAccountsToContractsThatHasAccountId: LinkAccountToContract[] = _.filter(linkAccountsToContracts, x => !_.isNil(x.nominationGroupId));\r\n\r\n this.verifyAndWarnForDemandDates(linkAccountsToContracts).subscribe(shouldSubmitRequest => {\r\n if(!shouldSubmitRequest) return;\r\n\r\n this.contractsAwaitingProcessingService.acceptAccounts(linkAccountsToContractsThatHasAccountId)\r\n .pipe(\r\n concatMap(() => this.performSearch())\r\n )\r\n .subscribe(() => {\r\n this.alertService.addSuccessMessage('Success', 'The Account(s) have been linked to the Contract(s).');\r\n });\r\n })\r\n });\r\n }\r\n\r\n public verifyAndWarnForDemandDates(linkAccountsToContracts: LinkAccountToContract[]) : Observable{\r\n\r\n //if this isn't a volume type return and continue\r\n if (!this.model.commonPipeline.isContractQuantityTypeVolume()) return of(true);\r\n\r\n let shouldWarn: boolean = false;\r\n let invalidContracts: string = \"\";\r\n\r\n return this.loadSelectedQuantities(linkAccountsToContracts)\r\n .pipe(\r\n concatMap(() =>{\r\n for (let i = 0; i < linkAccountsToContracts.length; i++) {\r\n let quantities: ContractAwaitingProcessingQuantity[] = [];\r\n\r\n //get the quantities for the current contract\r\n _.forEach(this.model.selectedQuantities, function(quantity) {\r\n if(quantity.contractId === linkAccountsToContracts[i].contractId) quantities.push(quantity);\r\n });\r\n\r\n //cancel if there are no quantities\r\n if(quantities.length ===0) return of(false);\r\n\r\n //validate if the start dates are the same. If not, mark this contract as a warning\r\n const startDate = quantities[0].startDate;\r\n for(let j = 0; j < quantities.length; j++){\r\n if(quantities[j].startDate.toString() !== startDate.toString()){\r\n shouldWarn = true;\r\n invalidContracts += `${linkAccountsToContracts[i].contractNumber},`;\r\n }\r\n }\r\n }\r\n\r\n //if everything is ok, send the request back\r\n if(!shouldWarn) { return of(true); }\r\n\r\n //setup the modal\r\n let message = `Demand and Volume Demand dates do not match for the following contracts: ${_.trimEnd(invalidContracts, ',')}. Would you like to continue?`;\r\n const yesNoModalOptions = new YesNoModalOptions('Accept Warning', message, 'No', 'Yes');\r\n return this.modalService.show(yesNoModalOptions).pipe(\r\n concatMap(selectedModalOption => of(selectedModalOption === SelectedModalOption.Yes))\r\n );\r\n }));\r\n }\r\n\r\n /** Get the quantities of the selected contracts for validation */\r\n private loadSelectedQuantities(linkAccountsToContracts: LinkAccountToContract[]) : Observable{\r\n this.model.selectedQuantities = [];\r\n let serviceCalls: Observable[] = [];\r\n\r\n //since we don't know how many contracts were selected we need to add all of them to the service call chain.\r\n for (let i = 0; i < linkAccountsToContracts.length; i++) {\r\n serviceCalls.push(this.queryContractQuantities(linkAccountsToContracts[i].contractId));\r\n }\r\n\r\n return forkJoin(serviceCalls).pipe(tap(response => {\r\n //load all of the service responses and push the data into the model\r\n for (let i = 0; i < linkAccountsToContracts.length; i++) {\r\n this.model.selectedQuantities.push(...response[i]);\r\n }\r\n }));\r\n }\r\n\r\n public syncDataClicked(): void {\r\n this.alertService.clearMessages();\r\n this.jobService.submitJob(GctsProcess.Contracts.name, 'SyncDataJob')\r\n .subscribe(() => {\r\n const message = 'The job Sync Data has been successfully submitted.';\r\n this.alertService.addSuccessMessage('Submit Successful', message);\r\n });\r\n }\r\n\r\n public showLoadContractTestHarness(): boolean {\r\n return this.appService.showLoadContractTestHarness();\r\n }\r\n\r\n public testHarnessClicked() :void {\r\n this.router.navigate(['/app', this.getPipelineCode(), 'loadcontracts']).then();\r\n }\r\n\r\n public canSyncContractData(): boolean {\r\n return this.pipelineSettingsMapService.getPipelineSetting().canSyncData;\r\n }\r\n\r\n public isVolumeQuantityType(): boolean{\r\n return this.model.commonPipeline.isContractQuantityTypeVolume();\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return this.paramValidator().isValid(params);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {};\r\n params['enterpriseId'] = this.model.searchParams.enterpriseId;\r\n params['billableServiceId'] = this.model.searchParams.billableServiceId;\r\n params['contractNumber'] = this.model.searchParams.contractNum;\r\n params['reason'] = !_.isNil(this.model.searchParams.reason) ? this.model.searchParams.reason : '';\r\n\r\n return params;\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n this.appService.hideMenu();\r\n\r\n this.model.hasEditSecurity = this.capabilitiesService.hasCapabilities([\"ContractsAwaitingProcessing-Write\"], this.userService.user, this.sessionService.getPipeline().code);\r\n\r\n const queryCommonPipeline$ = this.queryCommonPipeline();\r\n const queryPipelineGasDay$ = this.queryPipelineGasDay();\r\n\r\n return forkJoin(queryCommonPipeline$, queryPipelineGasDay$);\r\n }\r\n\r\n private queryCommonPipeline(): Observable{\r\n return this.commonPipelineService.getPipeline(this.sessionService.getPipeline().code)\r\n .pipe(\r\n tap(commonPipeline => this.model.commonPipeline = commonPipeline)\r\n );\r\n }\r\n\r\n private queryPipelineGasDay(): Observable{\r\n return this.nominationsSystemService.pipelineGasDay()\r\n .pipe(\r\n tap(pipelineGasDay => this.model.pipelineGasDay = pipelineGasDay)\r\n );\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n const queryEnterprises$ = this.queryEnterprises();\r\n const queryBillableServices$ = this.queryBillableServices();\r\n const queryContractNumbers$ = this.queryAdditionalFilters();\r\n\r\n return forkJoin([queryEnterprises$, queryBillableServices$, queryContractNumbers$]);\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.searchResults = null; // Destroy Grid (to refresh data grid, we do not want to preserve any expanded rows)\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n\r\n // Clear All Selections\r\n if (this.dataGrid) {\r\n this.dataGrid.instance.clearSelection();\r\n }\r\n\r\n const serviceCalls$ = [\r\n this.queryContractsAwaitingProcessing(),\r\n this.getLastContractSync()\r\n ];\r\n\r\n return forkJoin(serviceCalls$);\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n // do nothing\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams = new ContractsAwaitingLinkingSearchParams();\r\n this.model.clearSearchResults();\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams = new ContractsAwaitingLinkingSearchParams();\r\n\r\n this.model.searchParams.enterpriseId = typedParams.asNullableNumber('enterpriseId');\r\n this.model.searchParams.billableServiceId = typedParams.asNullableNumber('billableServiceId');\r\n this.model.searchParams.contractNum = typedParams.asNullableNumber('contractNumber');\r\n this.model.searchParams.reason = typedParams.asNullableString('reason');\r\n }\r\n\r\n private queryEnterprises(): Observable {\r\n return this.enterpriseService.getAll()\r\n .pipe(\r\n tap(enterprises => {\r\n this.model.enterprises = _.orderBy(enterprises, x => x.displayName);\r\n })\r\n );\r\n }\r\n\r\n private queryBillableServices(): Observable {\r\n return this.billableServiceService.queryAllByPipeline()\r\n .pipe(\r\n tap(billableServices => this.model.billableServices = billableServices)\r\n );\r\n }\r\n\r\n private queryAdditionalFilters(): Observable {\r\n return this.contractsAwaitingProcessingService.queryAdditionalFilters(this.model.searchParams.enterpriseId, this.model.searchParams.billableServiceId)\r\n .pipe(\r\n tap(additionalFilters => {\r\n this.model.contractNumbers = _.sortBy(additionalFilters.contractNumbers, x => x.id);\r\n this.model.reasons = additionalFilters.reasons;\r\n })\r\n );\r\n }\r\n\r\n private paramValidator(): ParamValidator {\r\n return ParamValidator.Standard();\r\n }\r\n\r\n private queryContractsAwaitingProcessing(): Observable {\r\n const searchRequest = new ContractsAwaitingProcessingReportRequest();\r\n searchRequest.enterpriseId = this.model.searchParams.enterpriseId;\r\n searchRequest.billableServiceId = this.model.searchParams.billableServiceId;\r\n searchRequest.contractNum = this.model.searchParams.contractNum;\r\n searchRequest.reason = this.model.searchParams.reason;\r\n\r\n return this.contractsAwaitingProcessingService.queryContractsAwaitingProcessing(searchRequest)\r\n .pipe(\r\n concatMap(contractAwaitingProcessingDetail => this.nomGroupEnrichmentService.enrichArray(contractAwaitingProcessingDetail, 'accountId', 'account')),\r\n concatMap(contractAwaitingProcessingDetail => this.enterpriseEnrichmentService.enrichArray(contractAwaitingProcessingDetail, 'customerId', 'customer')),\r\n concatMap(contractAwaitingProcessingDetail => this.enterpriseEnrichmentService.enrichArray(contractAwaitingProcessingDetail, 'assignorEnterpriseId', 'assignorEnterprise')),\r\n concatMap(contractAwaitingProcessingDetail => this.locationEnrichmentService.enrichArray(contractAwaitingProcessingDetail, 'receiptLocationId', 'receiptLocation')),\r\n concatMap(contractAwaitingProcessingDetail => this.locationEnrichmentService.enrichArray(contractAwaitingProcessingDetail, 'deliveryLocationId', 'deliveryLocation')),\r\n tap(contractAwaitingProcessingDetail => {\r\n // Populate Available Accounts with the defaulted Account (so that the mnemonic can be rendered in the data grid). This behaves the same way as how we load the available accounts from an end point.\r\n _.each(contractAwaitingProcessingDetail, x => this.addAvailableAccounts(x, !_.isNil(x.accountId) ? [NominationGroupNameDto.create(x.accountId, x['accountMnemonic'], x['accountName'])] : null));\r\n\r\n this.model.searchResults = _.sortBy(contractAwaitingProcessingDetail, x => x.contractNumber);\r\n\r\n this.setAccountsDataSource(); // Setup Data Grid Look Ups after Search Results are Set\r\n this.preSelectRows();\r\n })\r\n );\r\n }\r\n\r\n private getLastContractSync(): Observable {\r\n return this.accountsJobService.getLastContractSync()\r\n .pipe(\r\n tap(lastContractsSyncDateTime => this.model.lastContractsSyncDateTime = lastContractsSyncDateTime)\r\n );\r\n }\r\n\r\n private queryContractQuantities(contractId: number): Observable {\r\n return this.contractsAwaitingProcessingService.queryContractQuantities(contractId)\r\n .pipe(\r\n concatMap(contractAwaitingProcessingQuantity => this.locationEnrichmentService.enrichArray(contractAwaitingProcessingQuantity, 'receiptLocationId', 'receiptLocation')),\r\n concatMap(contractAwaitingProcessingQuantity => this.locationEnrichmentService.enrichArray(contractAwaitingProcessingQuantity, 'deliveryLocationId', 'deliveryLocation'))\r\n );\r\n }\r\n\r\n private queryContractServiceRequesters(contractId: number, contractVersionId: number): Observable {\r\n return this.contractsService.queryContractServiceRequesters(contractId, contractVersionId)\r\n .pipe(\r\n concatMap(contractServiceRequestors => this.nomGroupEnrichmentService.enrichArray(contractServiceRequestors, 'accountId', 'account')),\r\n concatMap(contractServiceRequestors => this.enterpriseEnrichmentService.enrichArray(contractServiceRequestors, 'serviceRequesterEnterpriseId', 'serviceRequesterEnterprise'))\r\n );\r\n }\r\n\r\n private queryContractAccounts(contractId: number, contractVersionId: number): Observable {\r\n return this.contractsAwaitingProcessingService\r\n .queryAccountsForContract(contractId, contractVersionId, false)\r\n .pipe(\r\n concatMap(nomGroupIds => {\r\n const nominationGroupNameDtos: NominationGroupNameDto[] = [];\r\n _.each(nomGroupIds, nomGroupId => {\r\n const nominationGroupNameDto = new NominationGroupNameDto();\r\n nominationGroupNameDto.id = nomGroupId;\r\n\r\n nominationGroupNameDtos.push(nominationGroupNameDto);\r\n });\r\n\r\n return this.nomGroupEnrichmentService.enrichArray(nominationGroupNameDtos, 'id');\r\n })\r\n );\r\n }\r\n\r\n private getAgentRelationships(customerId: number): Observable {\r\n const maintainAgentSearchRequest = new MaintainAgentSearchRequest();\r\n maintainAgentSearchRequest.agentRole = 'InvoiceAgent';\r\n maintainAgentSearchRequest.includeExpired = false;\r\n maintainAgentSearchRequest.customerId = customerId.toString();\r\n maintainAgentSearchRequest.agentType = 'Full';\r\n return this.agentRelationshipService.getMaintainAgentRelationships(maintainAgentSearchRequest);\r\n }\r\n\r\n private getCustomerAccountParameters(isCgl: boolean, customerId: number): Observable {\r\n const searchParams = new CustomerAccountParametersSearchParams();\r\n searchParams.customerId = customerId;\r\n\r\n if (isCgl){\r\n return this.customerAccountParametersService.queryCustomerAccountParameters(searchParams);\r\n }\r\n\r\n const nonCglValue = new CustomerAccountParametersRow();\r\n nonCglValue.isAnchorShipper = false;\r\n return of(nonCglValue);\r\n }\r\n\r\n private preSelectRows() {\r\n // Haven't been able to properly select rows with other DataGrid events (i.e. onInitialize, onContentReady, onRowPrepared)\r\n // - onInitialize - only runs once and never runs again\r\n // - onContentReady, onRowPrepared - always runs and if you de-select a row, it will automatically select it again\r\n setTimeout(() => {\r\n if (this.dataGrid) {\r\n const rows = this.dataGrid.instance.getVisibleRows();\r\n const recordsWhereAccountHasDefaultValue = _.filter(rows, x => this.doesAccountHaveDefaultValue(x.data));\r\n const rowIndexes: number[] = _.map( recordsWhereAccountHasDefaultValue, y => y.rowIndex);\r\n this.dataGrid.instance.selectRowsByIndexes(rowIndexes);\r\n }\r\n }, 250);\r\n }\r\n\r\n private setAccountsDataSource() {\r\n // Need define the function using the => operation and not the function operation because (this) is\r\n // lexically bound with the => operation where as the function operation, it is not.\r\n //\r\n // https://stackoverflow.com/questions/1047454/what-is-lexical-scope\r\n this.model.queryAccountsDataSource = options => {\r\n return {\r\n loadMode: 'raw',\r\n load: loadOptions => {\r\n // Return Nothing - No Data Exists\r\n if (!options || !options.data) {\r\n return [];\r\n }\r\n\r\n return this.queryContractAccounts(options.data.contractId, options.data.contractVersionId)\r\n .toPromise()\r\n .then(accounts => {\r\n this.addAvailableAccounts(options.data, accounts);\r\n return accounts;\r\n });\r\n },\r\n };\r\n };\r\n }\r\n\r\n /**\r\n * If the record has an account with a default value, it means that the user cannot change the account.\r\n * (this is determined by enriching the object with the account mnemonic).\r\n */\r\n private doesAccountHaveDefaultValue(record: ContractAwaitingProcessingDetail): boolean {\r\n return !_.isNil(record['accountMnemonic']);\r\n }\r\n\r\n private shouldDisableForUnlinkedAssignorTAssign(record: ContractAwaitingProcessingDetail): boolean {\r\n return (!_.isNil(record.assignorContractNumber) && _.isNil(record.assignorAccount))\r\n || this.shouldDisableForMissingVolumeQuantity(record);\r\n }\r\n\r\n private shouldDisableForMissingVolumeQuantity(record: ContractAwaitingProcessingDetail): boolean{\r\n if (!this.model.commonPipeline.isContractQuantityTypeVolume()) return false;\r\n return !record.hasVolumeDemandQuantity || !record.isVolumeDemandQuantityValid;\r\n }\r\n public showContractWarning(record: ContractAwaitingProcessingDetail) : string{\r\n return _.isNil(record.volumeDemandQuantityWarning) ? '' : record.volumeDemandQuantityWarning;\r\n }\r\n\r\n /**\r\n * In order to display the nom group mnemonic, we need a list of the available accounts associated to the record\r\n * so the UI can display the value using the pipe.\r\n */\r\n private addAvailableAccounts(record: ContractAwaitingProcessingDetail, availableAccounts: NominationGroupNameDto[]): void {\r\n record['availableAccounts'] = availableAccounts;\r\n }\r\n\r\n private selectOrDeselectRow($event, accountId: number): void {\r\n if (accountId) {\r\n this.dataGrid.instance.selectRows([$event.key], true);\r\n } else {\r\n this.dataGrid.instance.deselectRows([$event.key]);\r\n }\r\n }\r\n\r\n private checkForEmptyQuantities(quantities) {\r\n _.forEach(quantities, function(value){\r\n if(_.isNil(value.quantity) || value.quantity === 0)\r\n this.model.areQuantitiesEmpty = true;\r\n });\r\n }\r\n}\r\n","import {GasDay} from \"@model/gas-day\";\r\n\r\nexport class Quantity{\r\n public injectionQuantity: number;\r\n public injectionQuantityStartDate: GasDay;\r\n public injectionQuantityEndDate: GasDay;\r\n\r\n public withdrawalQuantity: number;\r\n public withdrawalQuantityStartDate: GasDay;\r\n public withdrawalQuantityEndDate: GasDay;\r\n\r\n public totalQuantity: number;\r\n public totalQuantityStartDate: GasDay;\r\n public totalQuantityEndDate: GasDay;\r\n\r\n public setEndDate() {\r\n if(this.injectionQuantityEndDate === undefined && this.withdrawalQuantityEndDate === undefined) return;\r\n if(this.injectionQuantityEndDate === undefined && this.withdrawalQuantityEndDate !== undefined) this.totalQuantityEndDate = this.withdrawalQuantityEndDate;\r\n if(this.injectionQuantityEndDate !== undefined && this.withdrawalQuantityEndDate === undefined) this.totalQuantityEndDate = this.injectionQuantityEndDate;\r\n if(this.injectionQuantityEndDate !== undefined && this.withdrawalQuantityEndDate !== undefined)\r\n this.totalQuantityEndDate = this.injectionQuantityEndDate > this.withdrawalQuantityEndDate ? this.injectionQuantityEndDate : this.withdrawalQuantityEndDate;\r\n }\r\n\r\n public setStartDate() {\r\n if(this.injectionQuantityStartDate === undefined && this.withdrawalQuantityStartDate === undefined) return;\r\n if(this.injectionQuantityStartDate === undefined && this.withdrawalQuantityStartDate !== undefined) this.totalQuantityStartDate = this.withdrawalQuantityStartDate;\r\n if(this.injectionQuantityStartDate !== undefined && this.withdrawalQuantityStartDate === undefined) this.totalQuantityStartDate = this.injectionQuantityStartDate;\r\n if(this.injectionQuantityStartDate !== undefined && this.withdrawalQuantityStartDate !== undefined)\r\n this.totalQuantityStartDate = this.injectionQuantityStartDate < this.withdrawalQuantityStartDate ? this.injectionQuantityStartDate : this.withdrawalQuantityStartDate;\r\n }\r\n}\r\n","import {BaseViewModel} from \"@model/base-view-model\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {NominationPipelineGasDay} from \"@model/nomination-pipeline-gas-day\";\r\nimport {Enterprise, EnterpriseCertificate} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {BusinessRight} from \"@model/business-right\";\r\nimport {BillableService} from \"@model/BillableService\";\r\nimport {Account} from \"@model/models/account\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {NominationGroup, NominationGroupGasAccount} from \"@shared/services/nomination/nomination-nom-group/nomination-nom-group.service\";\r\nimport {ShipperHubType} from \"app/gcts/contracts/accounts/shipperHubType\";\r\nimport {Quantity} from \"app/gcts/contracts/accounts/quantity\";\r\nimport {AccountingLocation, Location} from \"@shared/interfaces/location\";\r\nimport {ParkAndLoanType} from \"@model/park-and-loan-type\";\r\n\r\nexport class AccountsModel extends BaseViewModel {\r\n searchParams: AccountSearchParams = new AccountSearchParams();\r\n lastSearchParams: AccountSearchParams;\r\n searchResults: Account[];\r\n\r\n minGasDay: GasDay = GasDay.GasDayForEarliestBillingMonth;\r\n // TODO: This should use Gas Day from Accounts, not Nominations.\r\n pipelineGasDay: NominationPipelineGasDay;\r\n enterprises: Enterprise[];\r\n businessRights: BusinessRight[];\r\n shipperHubTypes: ShipperHubType[];\r\n billableServices: BillableService[];\r\n billableServicesNotAllowedEdit: BillableService[];\r\n\r\n public isEditing: boolean = false;\r\n\r\n public clearSearchResults(): void {\r\n this.searchResults = null;\r\n }\r\n}\r\nexport class AccountSearchParams {\r\n gasDay: GasDay;\r\n enterpriseId?: number;\r\n businessRights: string[];\r\n billableServiceIds: number[];\r\n includeExpired: boolean = false;\r\n}\r\n\r\nexport class AddAccountModel {\r\n accountType: string;\r\n accountTypes: NewAccountType[] = NewAccountType.All;\r\n\r\n public enterpriseId: number;\r\n public enterpriseDisplayName: string;\r\n public hubType: string;\r\n public mnemonicPrefix: string; // this is for shipper hub accounts - can just use the same property?\r\n public accountMnemonic: string; // this is for non-shipper hub accounts - can just use the same property?\r\n public accountName: string;\r\n public minGasMonth: GasMonth;\r\n public startGasMonth: GasMonth;\r\n public endGasMonth: GasMonth;\r\n public invoiceRecipientEnterpriseId: number;\r\n public invoiceRecipientEnterpriseDisplayName: string;\r\n public errorMessage: string;\r\n public enterpriseCertificates: EnterpriseCertificate[];\r\n\r\n public linkedAccountId: number;\r\n public gasAccountId: number;\r\n public locationId: number;\r\n public parkAndLoanType: string;\r\n\r\n public hubTypes: ShipperHubType[];\r\n public linkedAccounts: Account[];\r\n public gasAccounts: NominationGroupGasAccount[];\r\n public existingNominationGroups: NominationGroup[];\r\n public locations: AccountingLocation[];\r\n public parkAndLoanTypes: ParkAndLoanType[];\r\n\r\n public palsQuantities: Quantity = new Quantity();\r\n public startGasDay: GasDay;\r\n\r\n public isAddingPalsOnCgl: boolean;\r\n}\r\n\r\nexport class NewAccountType {\r\n public static CustodyTransfer: NewAccountType = new NewAccountType('CustodyTransfer', 'Custody Transfer');\r\n public static LdcVariance: NewAccountType = new NewAccountType('LdcVariance', 'Ldc Variance');\r\n public static MultiTitleTransfer: NewAccountType = new NewAccountType('MultiTitleTransfer', 'Multi Title Transfer');\r\n public static PipelineVariance: NewAccountType = new NewAccountType('PipelineVariance', 'Pipeline Variance');\r\n public static Purchase: NewAccountType = new NewAccountType('Purchase', 'Purchase');\r\n public static Sale: NewAccountType = new NewAccountType('Sale', 'Sale');\r\n public static SboStorage: NewAccountType = new NewAccountType('SboStorage', 'Sbo Storage');\r\n public static ShipperHub: NewAccountType = new NewAccountType('ShipperHub', 'Shipper Hub');\r\n public static SystemFuel: NewAccountType = new NewAccountType('SystemFuel', 'System Fuel');\r\n public static SystemLinepack: NewAccountType = new NewAccountType('SystemLinepack', 'System Linepack');\r\n public static TboFuel: NewAccountType = new NewAccountType('TboFuel', 'Tbo Fuel');\r\n public static TboTransportation: NewAccountType = new NewAccountType('TboTransportation', 'Tbo Transportation');\r\n public static TransportationVariance: NewAccountType = new NewAccountType('MainlineTransportationVariance', 'Transportation Variance');\r\n public static ParkAndLoan: NewAccountType = new NewAccountType('ParkAndLoan', 'Park And Loan'); // this isn't to be included in the ALL options below.\r\n\r\n public static All: NewAccountType[] = [\r\n NewAccountType.CustodyTransfer,\r\n NewAccountType.LdcVariance,\r\n NewAccountType.MultiTitleTransfer,\r\n NewAccountType.PipelineVariance,\r\n NewAccountType.Purchase,\r\n NewAccountType.Sale,\r\n NewAccountType.SboStorage,\r\n NewAccountType.ShipperHub,\r\n NewAccountType.SystemFuel,\r\n NewAccountType.SystemLinepack,\r\n NewAccountType.TboFuel,\r\n NewAccountType.TboTransportation,\r\n NewAccountType.TransportationVariance\r\n ];\r\n\r\n public id: string;\r\n public name: string;\r\n\r\n constructor(id: string, name: string) {\r\n this.id = id;\r\n this.name = name;\r\n }\r\n}\r\n","import {IGasDay} from \"@model/gas-day-month.interface\";\r\nimport {BusinessRight} from \"@model/business-right\";\r\nimport * as _ from \"lodash\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {Quantity} from \"app/gcts/contracts/accounts/quantity\";\r\n\r\nexport class Account {\r\n accountId: number;\r\n customerId: number;\r\n mnemonic: string;\r\n name: string;\r\n businessRight: string;\r\n billableServiceId: number;\r\n billableService: string;\r\n invoiceGroupId: number;\r\n invoiceGroupStartGasDay: Date;\r\n invoiceGroupEndGasDay: Date;\r\n primaryReceiptLocationId: number;\r\n primaryDeliveryLocationId: number;\r\n receiptLocationName: string;\r\n deliveryLocationName: string;\r\n taxZeroRated: boolean;\r\n anchorShipperRights?: boolean;\r\n startGasDay: IGasDay;\r\n endGasDay: IGasDay;\r\n palsQuantities: Quantity;\r\n parkAndLoanType: string;\r\n isContracted?: boolean;\r\n\r\n private businessRightsWithContracts: string[] = [BusinessRight.Transportation.displayName, BusinessRight.ParkAndLoan.displayName, BusinessRight.ShortNoticeBalancing.alternateName];\r\n\r\n // TODO: dto should be an interface, not any.\r\n public static create(dto: any): Account {\r\n const account = new Account();\r\n account.customerId = dto.customerId;\r\n account.accountId = dto.accountId = !_.isNil(dto.accountId) ? +dto.accountId : null;\r\n account.mnemonic = dto.mnemonic;\r\n account.name = dto.name;\r\n account.businessRight = dto.businessRight;\r\n account.billableServiceId = dto.billableServiceId;\r\n account.invoiceGroupId = dto.invoiceGroupId;\r\n account.invoiceGroupStartGasDay = dto.invoiceGroupLinkStartGasDay;\r\n account.invoiceGroupEndGasDay = dto.invoiceGroupLinkEndGasDay;\r\n account.primaryReceiptLocationId = dto.primaryReceiptLocationId;\r\n account.primaryDeliveryLocationId = dto.primaryDeliveryLocationId;\r\n account.taxZeroRated = dto.taxZeroRated;\r\n account.anchorShipperRights = dto.anchorShipperRights;\r\n account.startGasDay = GasDay.parse(dto.startGasDay);\r\n account.endGasDay = GasDay.parse(dto.endGasDay);\r\n account.isContracted = dto.isContracted;\r\n\r\n // The following fields should only be applicable for PALS account with no contract\r\n if(dto.businessRight === BusinessRight.ParkAndLoan.displayName && (!_.isNil(account.isContracted) && !account.isContracted)){\r\n account.parkAndLoanType = dto.parkAndLoanType;\r\n account.palsQuantities = new Quantity();\r\n\r\n account.palsQuantities.injectionQuantity = dto.quantities.injectionQuantity;\r\n account.palsQuantities.injectionQuantityStartDate = !_.isNil(dto.quantities.injectionQuantityStartDate) ? GasDay.parse(dto.quantities.injectionQuantityStartDate) : null;\r\n account.palsQuantities.injectionQuantityEndDate = !_.isNil(dto.quantities.injectionQuantityEndDate) ? GasDay.parse(dto.quantities.injectionQuantityEndDate) : null;\r\n\r\n account.palsQuantities.withdrawalQuantity = dto.quantities.withdrawalQuantity;\r\n account.palsQuantities.withdrawalQuantityStartDate = !_.isNil(dto.quantities.withdrawalQuantityStartDate) ? GasDay.parse(dto.quantities.withdrawalQuantityStartDate) : null;\r\n account.palsQuantities.withdrawalQuantityEndDate = !_.isNil(dto.quantities.withdrawalQuantityEndDate) ? GasDay.parse(dto.quantities.withdrawalQuantityEndDate) : null;\r\n\r\n account.palsQuantities.totalQuantity = dto.quantities.totalQuantity;\r\n account.palsQuantities.totalQuantityStartDate = !_.isNil(dto.quantities.totalQuantityStartDate) ? GasDay.parse(dto.quantities.totalQuantityStartDate) : null;\r\n account.palsQuantities.totalQuantityEndDate = !_.isNil(dto.quantities.totalQuantityEndDate) ? GasDay.parse(dto.quantities.totalQuantityEndDate) : null;\r\n }\r\n\r\n return account;\r\n }\r\n\r\n public get isLinkableToContracts(): boolean {\r\n return _.some(this.businessRightsWithContracts, x => x.toUpperCase() === this.businessRight.toUpperCase() && this.isContracted);\r\n }\r\n}\r\n","import {map} from 'rxjs/operators';\r\nimport {Observable} from \"rxjs\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {IGasDay} from \"@model/gas-day-month.interface\";\r\nimport {ContractsResourceService} from \"@shared/resources/contracts-resource.service\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport {IContractResponse} from \"@model/service-models/icontract-response\";\r\nimport {Contract} from \"@model/models/contract\";\r\nimport {Account} from \"@model/models/account\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {BusinessRight} from \"@model/business-right\";\r\nimport {ShipperHubType} from \"app/gcts/contracts/accounts/shipperHubType\";\r\nimport {ViewAccountsReportRequest} from \"@model/service-models/view-accounts-report-request\";\r\n\r\n@Injectable()\r\nexport class AccountsService {\r\n constructor(private accountsResource: ContractsResourceService) {\r\n }\r\n\r\n\r\n queryAccounts(requestParams: ViewAccountsReportRequest): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setGasDay(requestParams.gasDay, 'gasDay');\r\n params.setOptionalNumber('enterpriseId', requestParams.enterpriseId);\r\n params.setOptionalListOfStrings('businessRights', requestParams.businessRights);\r\n params.setOptionalListOfNumbers('billableServiceIds', requestParams.billableServiceIds);\r\n params.setBoolean('includeExpired', requestParams.includeExpired);\r\n\r\n return this.accountsResource.get('/accounts', true, params)\r\n .pipe(\r\n map(dtos => dtos.map(dto => Account.create(dto)))\r\n );\r\n }\r\n\r\n queryParentAccounts(enterpriseId: number, businessRight: string, gasDay: IGasDay): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setGasDay(gasDay, 'gasDay');\r\n params.setNumber('enterpriseId', enterpriseId);\r\n params.set('businessRight', businessRight);\r\n\r\n return this.accountsResource.get('/accounts/parents', true, params)\r\n .pipe(\r\n map(dtos => dtos.map(dto => Account.create(dto)))\r\n );\r\n }\r\n\r\n queryAccountContracts(accountId: number, gasDay: IGasDay, includeExpired: boolean): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setGasDay(gasDay, 'gasDay');\r\n params.setBoolean('includeExpired', includeExpired);\r\n return this.accountsResource.get(`/accounts/${accountId}/contracts`, true, params)\r\n .pipe(\r\n map(dtos => dtos.map(dto => Contract.create(dto)))\r\n );\r\n }\r\n\r\n public queryAllByPipeline(effectiveGasDay: GasDay): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setGasDay(effectiveGasDay);\r\n return this.accountsResource.get('/businessRight', true, params);\r\n }\r\n\r\n public queryShipperHubTypes(effectiveGasDay: GasDay): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setGasDay(effectiveGasDay);\r\n return this.accountsResource.get('/shipperHubTypes', true, params);\r\n }\r\n}\r\n\r\n\r\n\r\n","\r\n
\r\n
\r\n Error: {{model.errorMessage}}\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n","import {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core';\r\nimport {ModalComponent} from \"@shared/components/modal/modal.component\";\r\nimport {AccountsService} from \"@shared/services/accounts/accounts/accounts.service\";\r\nimport {Account} from \"@model/models/account\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport { tap} from \"rxjs/operators\";\r\nimport {ContractsResourceService} from \"@shared/resources/contracts-resource.service\";\r\nimport * as _ from \"lodash\";\r\nimport {ErrorService} from \"@shared/services/webapp/error/error-service\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {NominationLocationEnrichmentService} from \"@shared/services/nomination/nomination-location-enrichment/nomination-location-enrichment.service\";\r\nimport {InvoiceGroupService} from \"@shared/services/contracts/invoice-group/invoice-group.service\";\r\nimport {forkJoin} from \"rxjs\";\r\nimport {BillableService} from \"@model/BillableService\";\r\nimport {NominationPipelineGasDay} from \"@model/nomination-pipeline-gas-day\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {BusinessRight} from \"@model/business-right\";\r\nimport {Quantity} from \"app/gcts/contracts/accounts/quantity\";\r\nimport {DateTime} from \"@model/date-time\";\r\n\r\nexport class EditAccountModel {\r\n public isDirty: boolean = false;\r\n\r\n public accountId: number;\r\n public enterpriseId: number;\r\n public enterpriseDisplayName: string;\r\n public mnemonic: string;\r\n public name: string;\r\n public businessRight: string;\r\n public billableServiceId: number;\r\n public invoiceGroup: number;\r\n public invoiceGroupStartGasMonth: GasMonth;\r\n public invoiceGroupEndGasMonth: GasMonth;\r\n public receiptLocationId: number;\r\n public receiptLocationName: string;\r\n public deliveryLocationId: number;\r\n public deliveryLocationName: string;\r\n public taxZeroRated: boolean;\r\n public startGasMonth: GasMonth;\r\n public endGasMonth: GasMonth;\r\n\r\n public hasLinkedContracts: boolean;\r\n public isLinkableToContracts: boolean;\r\n\r\n public newInvoiceGroup: number;\r\n public newInvoiceGroupEffectiveGasMonth: GasMonth;\r\n\r\n public errorMessage: string;\r\n\r\n public invoiceGroups: number[] = [];\r\n public minExpiryGasMonth: GasMonth;\r\n public minEffectiveGasMonth: GasMonth;\r\n\r\n public palsQuantities: Quantity;\r\n public parkAndLoanType: string;\r\n\r\n public minInjectionQuantityEndDate: GasDay;\r\n public minWithdrawalQuantityEndDate: GasDay;\r\n\r\n public get isPathed(): boolean {\r\n return !_.isNil(this.receiptLocationName) && !_.isNil(this.deliveryLocationName);\r\n }\r\n\r\n public isPalsAccount() : boolean {\r\n return this.businessRight === BusinessRight.ParkAndLoan.displayName;\r\n }\r\n\r\n // this is currently being used for display purposes, so only has the Transportation account included.\r\n public isFtAccount() : boolean {\r\n return this.businessRight === BusinessRight.Transportation.displayName;\r\n }\r\n\r\n}\r\n\r\n@Component({\r\n selector: 'app-edit-account',\r\n templateUrl: './edit-account.component.html',\r\n styleUrls: ['./edit-account.component.css']\r\n})\r\nexport class EditAccountComponent implements OnInit {\r\n\r\n model: EditAccountModel = null;\r\n accountToEdit: Account = null;\r\n\r\n @Output() okEvent = new EventEmitter();\r\n @Output() cancelEvent = new EventEmitter();\r\n\r\n @ViewChild(ModalComponent) modal: ModalComponent;\r\n public billableServices: BillableService[];\r\n\r\n constructor(private enterpriseService: EnterpriseService,\r\n private enterpriseEnrichmentService: EnterpriseEnrichmentService,\r\n private locationEnrichmentService: NominationLocationEnrichmentService, // TODO: This should use Location Enrichment from Accounts, not common data or nominations.\r\n private contractsResourceService: ContractsResourceService,\r\n private alertService: AlertService,\r\n private accountsService: AccountsService,\r\n private invoiceGroupService: InvoiceGroupService) {\r\n enterpriseEnrichmentService.setEnrichmentResource(enterpriseService);\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n public markIsDirty(_$event: any): void {\r\n this.model.isDirty = true;\r\n }\r\n\r\n // The current gas month picker throws off extra change events\r\n // so need to double check to see if it really has changed\r\n public markIsDirtyForEndGasMonth($event: any): void {\r\n if (!_.isNil($event)) {\r\n if ($event instanceof GasMonth) {\r\n if ($event.end().isEqual(this.accountToEdit.endGasDay)) return; // unchanged\r\n } else if ($event instanceof Date) {\r\n if (DateTime.isSame($event, this.accountToEdit.endGasDay.toDate)) return; // unchanged\r\n }\r\n }\r\n this.model.isDirty = true;\r\n }\r\n\r\n public isPalsAccount(): boolean{\r\n if(_.isNil(this.model)) return false;\r\n return this.model.isPalsAccount();\r\n }\r\n\r\n public isContracted(billableServiceId?: number) : boolean {\r\n const serviceId = _.isNil(billableServiceId) ? this.model.billableServiceId : billableServiceId;\r\n const billableService = _.find(this.billableServices, {id: serviceId});\r\n\r\n if(_.isEmpty(billableService)) return false;\r\n\r\n return billableService.isContracted;\r\n }\r\n\r\n public show(account: Account, billableServices: BillableService[], lastSearchGasDay: GasDay, pipelineGasDay: NominationPipelineGasDay): void {\r\n this.billableServices = billableServices;\r\n this.accountToEdit = account;\r\n\r\n // Setup New Model\r\n const editAccountModel = new EditAccountModel();\r\n editAccountModel.accountId = account.accountId;\r\n editAccountModel.enterpriseId = account.customerId;\r\n editAccountModel.mnemonic = account.mnemonic;\r\n editAccountModel.name = account.name;\r\n editAccountModel.businessRight = account.businessRight;\r\n editAccountModel.billableServiceId = account.billableServiceId;\r\n editAccountModel.invoiceGroup = account.invoiceGroupId;\r\n editAccountModel.invoiceGroupStartGasMonth = GasMonth.from(account.invoiceGroupStartGasDay);\r\n editAccountModel.invoiceGroupEndGasMonth = GasMonth.from(account.invoiceGroupEndGasDay);\r\n editAccountModel.receiptLocationId = account.primaryReceiptLocationId;\r\n editAccountModel.deliveryLocationId = account.primaryDeliveryLocationId;\r\n editAccountModel.receiptLocationName = account.receiptLocationName;\r\n editAccountModel.deliveryLocationName = account.deliveryLocationName;\r\n editAccountModel.parkAndLoanType = account.parkAndLoanType;\r\n\r\n editAccountModel.taxZeroRated = account.taxZeroRated;\r\n\r\n editAccountModel.startGasMonth = GasMonth.fromGasDay(account.startGasDay);\r\n editAccountModel.endGasMonth = GasMonth.fromGasDay(account.endGasDay);\r\n\r\n editAccountModel.minEffectiveGasMonth = GasMonth.fromGasDay(GasDay.max([pipelineGasDay.actualGasDay, account.startGasDay]));\r\n editAccountModel.minExpiryGasMonth = editAccountModel.startGasMonth;\r\n\r\n editAccountModel.isLinkableToContracts = account.isLinkableToContracts;\r\n\r\n if(editAccountModel.isPalsAccount() && !this.isContracted(editAccountModel.billableServiceId)) {\r\n editAccountModel.palsQuantities = new Quantity();\r\n\r\n editAccountModel.palsQuantities.injectionQuantity = account.palsQuantities.injectionQuantity;\r\n editAccountModel.palsQuantities.injectionQuantityStartDate = account.palsQuantities.injectionQuantityStartDate;\r\n editAccountModel.palsQuantities.injectionQuantityEndDate = account.palsQuantities.injectionQuantityEndDate;\r\n\r\n editAccountModel.palsQuantities.withdrawalQuantity = account.palsQuantities.withdrawalQuantity;\r\n editAccountModel.palsQuantities.withdrawalQuantityStartDate = account.palsQuantities.withdrawalQuantityStartDate;\r\n editAccountModel.palsQuantities.withdrawalQuantityEndDate = account.palsQuantities.withdrawalQuantityEndDate;\r\n\r\n editAccountModel.palsQuantities.totalQuantity = account.palsQuantities.totalQuantity;\r\n editAccountModel.palsQuantities.totalQuantityStartDate = account.palsQuantities.totalQuantityStartDate;\r\n editAccountModel.palsQuantities.totalQuantityEndDate = account.palsQuantities.totalQuantityEndDate;\r\n\r\n editAccountModel.minInjectionQuantityEndDate = editAccountModel.palsQuantities.injectionQuantityEndDate;\r\n editAccountModel.minWithdrawalQuantityEndDate = editAccountModel.palsQuantities.withdrawalQuantityEndDate;\r\n }\r\n\r\n const accountContracts$ = this.accountsService\r\n .queryAccountContracts(account.accountId, lastSearchGasDay, false)\r\n .pipe(\r\n tap(contracts => {\r\n editAccountModel.hasLinkedContracts = !_.isNil(contracts) && contracts.length > 0;\r\n })\r\n );\r\n\r\n const invoiceGroups$ = this.invoiceGroupService.queryInvoiceGroupsForEnterprise(account.customerId)\r\n .pipe(\r\n tap(invoices => {\r\n editAccountModel.invoiceGroups = [].concat(invoices);\r\n })\r\n );\r\n\r\n const enrichEditAccountModel$ = this.enterpriseEnrichmentService.enrich(editAccountModel, 'enterpriseId', 'enterprise');\r\n\r\n forkJoin([accountContracts$, invoiceGroups$, enrichEditAccountModel$]).pipe(\r\n tap(() => {\r\n this.model = editAccountModel;\r\n this.modal.show();\r\n })).subscribe(() => {});\r\n }\r\n\r\n submitEditAccount(): void {\r\n const body = new UpdateNominationGroupBody();\r\n body.name = this.model.name.trim() === this.accountToEdit.name ? null : this.model.name.trim();\r\n body.expiryGasDay = this.model.endGasMonth.end().isEqual(this.accountToEdit.endGasDay) ? null : this.model.endGasMonth.end().toString();\r\n body.moveToInvoiceGroupId = this.model.newInvoiceGroup === this.accountToEdit.invoiceGroupId ? null : this.model.newInvoiceGroup;\r\n body.moveToEffectiveGasDay = (this.model.newInvoiceGroup === this.accountToEdit.invoiceGroupId\r\n ? null\r\n : this.model.newInvoiceGroup) != null\r\n ? this.model.newInvoiceGroupEffectiveGasMonth.start().toString()\r\n : null;\r\n\r\n if(this.isPalsAccount() && !this.isContracted()) {\r\n body.injectionQuantity = (this.model.palsQuantities.injectionQuantity === this.accountToEdit.palsQuantities.injectionQuantity) ? null : this.model.palsQuantities.injectionQuantity;\r\n body.injectionQuantityEndDate = this.model.palsQuantities.injectionQuantityEndDate.isEqual(this.accountToEdit.palsQuantities.injectionQuantityEndDate) ? null : this.model.palsQuantities.injectionQuantityEndDate.toString();\r\n body.withdrawalQuantity = (this.model.palsQuantities.withdrawalQuantity === this.accountToEdit.palsQuantities.withdrawalQuantity) ? null : this.model.palsQuantities.withdrawalQuantity;\r\n body.withdrawalQuantityEndDate = this.model.palsQuantities.withdrawalQuantityEndDate.isEqual(this.accountToEdit.palsQuantities.withdrawalQuantityEndDate) ? null : this.model.palsQuantities.withdrawalQuantityEndDate.toString();\r\n body.totalQuantity = (this.model.palsQuantities.totalQuantity === this.accountToEdit.palsQuantities.totalQuantity) ? null : this.model.palsQuantities.totalQuantity;\r\n body.totalQuantityEndDate = this.model.palsQuantities.totalQuantityEndDate.isEqual(this.accountToEdit.palsQuantities.totalQuantityEndDate) ? null : this.model.palsQuantities.totalQuantityEndDate.toString();\r\n }\r\n\r\n this.contractsResourceService.patchWithNoResponseBody(`/nominationgroup/${this.model.accountId}`, body)\r\n .subscribe(() => {\r\n this.model = null; // clear model, so the next move they do will not have the previous properties set\r\n this.okEvent.emit();\r\n this.modal.hide();\r\n }, error => {\r\n this.alertService.clearMessages();\r\n this.model.errorMessage = ErrorService.getErrorMessageFromErrorResponse(error);\r\n });\r\n }\r\n\r\n cancelEditAccount() {\r\n this.accountToEdit = null;\r\n this.model = null;\r\n this.cancelEvent.emit();\r\n }\r\n\r\n public get isValid(): boolean {\r\n return !_.isNil(this.model.endGasMonth) && !_.isNil(this.model.name);\r\n }\r\n\r\n public onQuantityEndDateChanged(e): void {\r\n this.model.palsQuantities.setEndDate();\r\n this.model.endGasMonth = GasMonth.fromGasDay(this.model.palsQuantities.totalQuantityEndDate);\r\n this.markIsDirty(e);\r\n }\r\n\r\n public setHeight() : number{\r\n if(this.isPalsAccount() && !this.isContracted()) return 700;\r\n if(this.isFtAccount()) return 620;\r\n\r\n return 500;\r\n }\r\n\r\n private isFtAccount() {\r\n if(_.isNil(this.model)) return false;\r\n return this.model.isFtAccount();\r\n }\r\n}\r\n\r\nclass UpdateNominationGroupBody {\r\n name: string;\r\n expiryGasDay: string;\r\n moveToInvoiceGroupId: number;\r\n moveToEffectiveGasDay: string;\r\n injectionQuantity: number;\r\n injectionQuantityEndDate: string;\r\n withdrawalQuantity: number;\r\n withdrawalQuantityEndDate: string;\r\n totalQuantity: number;\r\n totalQuantityEndDate: string;\r\n}\r\n","\r\n
\r\n
\r\n Error: {{model.errorMessage}}\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n","import {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core';\r\nimport {GasDay} from \"@model/gas-day\";\r\n\r\nimport {BillableService} from \"@model/BillableService\";\r\nimport {ModalComponent} from \"@shared/components/modal/modal.component\";\r\nimport * as _ from \"lodash\";\r\nimport {concatMap, map, tap} from \"rxjs/operators\";\r\nimport {NominationLocationEnrichmentService} from \"@shared/services/nomination/nomination-location-enrichment/nomination-location-enrichment.service\";\r\nimport {forkJoin, Observable, of} from \"rxjs\";\r\nimport {IGasDay} from \"@model/gas-day-month.interface\";\r\nimport {NominationGroupDto, NominationGroupNameDto, NominationGroupService} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport {ContractsAwaitingProcessingService} from \"@shared/services/contracts/contracts/contracts-awaiting-processing.service\";\r\nimport {BusinessRight} from \"@model/business-right\";\r\nimport {ContractsService} from \"@shared/services/contracts/contracts/contracts.service\";\r\nimport {ErrorService} from \"@shared/services/webapp/error/error-service\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {NominationPipelineGasDay} from \"@model/nomination-pipeline-gas-day\";\r\nimport {EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {NomGroupEnrichmentService} from \"@shared/services/enrichment/nomgroup-enrichment.service\";\r\nimport {Contract} from \"@model/models/contract\";\r\n\r\nclass EditContractModel {\r\n public contractVersionId: number;\r\n\r\n public contractNumber: number;\r\n public contractVersionNumber: number;\r\n\r\n public enterpriseId: number;\r\n public enterpriseDisplayName: string;\r\n\r\n public billableServiceId: number;\r\n public receiptLocationId: number;\r\n public receiptLocationName: string;\r\n public deliveryLocationId: number;\r\n public deliveryLocationName: string;\r\n public taxZeroRated: boolean;\r\n public startGasDay: IGasDay;\r\n public endGasDay: IGasDay;\r\n\r\n public accountId: number;\r\n public accountMnemonic: string;\r\n public accountName: string;\r\n public accountLinkStartGasDay: IGasDay;\r\n public accountLinkEndGasDay: IGasDay;\r\n\r\n public newLinkedAccountId: number;\r\n public newLinkedAccountName: string;\r\n public newLinkedAccountMnemonic: string;\r\n public newLinkedAccountStartGasDay: IGasDay;\r\n\r\n public errorMessage: string;\r\n public addClicked: boolean = false;\r\n\r\n public reservedNewNomGroup: NominationGroupDto = null;\r\n public isNewMnemonicEditable: boolean = false;\r\n\r\n public searchedGasDay: GasDay;\r\n public minEffectiveGasDay: GasDay;\r\n public maxEffectiveGasDay: GasDay;\r\n public defaultGasDay: GasDay;\r\n}\r\n\r\n@Component({\r\n selector: 'app-edit-contract',\r\n templateUrl: './edit-contract.component.html',\r\n styleUrls: ['./edit-contract.component.css']\r\n})\r\nexport class EditContractComponent implements OnInit {\r\n\r\n model: EditContractModel = null;\r\n contractToEdit: Contract = null;\r\n\r\n @Output() okEvent = new EventEmitter();\r\n @Output() cancelEvent = new EventEmitter();\r\n @ViewChild(ModalComponent) modal: ModalComponent;\r\n\r\n private billableServices: BillableService[];\r\n private accounts: NominationGroupNameDto[];\r\n // private futureAccounts: Contract[];\r\n\r\n constructor(private enterpriseService: EnterpriseService,\r\n private enterpriseEnrichmentService: EnterpriseEnrichmentService,\r\n private locationEnrichmentService: NominationLocationEnrichmentService, // TODO: This should use Location Enrichment from Accounts, not common data or nominations.\r\n private contractsAwaitingProcessingService: ContractsAwaitingProcessingService,\r\n private nomGroupEnrichmentService: NomGroupEnrichmentService,\r\n private nominationGroupService: NominationGroupService,\r\n private contractsService: ContractsService,\r\n private alertService: AlertService) {\r\n enterpriseEnrichmentService.setEnrichmentResource(enterpriseService);\r\n nomGroupEnrichmentService.setEnrichmentResource(nominationGroupService);\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n private findFutureAccountLinks(contract: Contract, contracts: Contract[]): Contract[] {\r\n return _.chain(contracts)\r\n .filter(c => c.linkStartGasDay > contract.linkStartGasDay)\r\n .sortBy(c => c.linkStartGasDay)\r\n .value();\r\n }\r\n\r\n public show(contract: Contract, billableServices: BillableService[], lastSearchGasDay: GasDay, pipelineGasDay: NominationPipelineGasDay): Observable {\r\n this.billableServices = billableServices;\r\n this.contractToEdit = contract;\r\n\r\n return this.contractsService.queryContractAccountHistory(contract.contractVersionId)\r\n .pipe(\r\n concatMap(contracts => {\r\n const isValid = this.validateLink(contract, contracts);\r\n if (isValid) {\r\n return this.setupModal(contract, lastSearchGasDay, pipelineGasDay).pipe(\r\n tap(() => {\r\n this.modal.show();\r\n })\r\n );\r\n }\r\n return of(isValid);\r\n })\r\n );\r\n }\r\n\r\n submitEdit() {\r\n this.contractsService.moveContract(this.model.contractVersionId, this.model.newLinkedAccountId, this.model.newLinkedAccountStartGasDay, this.model.searchedGasDay,\r\n this.model.newLinkedAccountName, this.model.newLinkedAccountMnemonic)\r\n .subscribe(() => {\r\n this.okEvent.emit();\r\n this.modal.hide();\r\n }, error => {\r\n this.alertService.clearMessages();\r\n this.model.errorMessage = ErrorService.getErrorMessageFromErrorResponse(error);\r\n });\r\n }\r\n\r\n private queryContractAccounts(contractId: number, contractVersionId: number): Observable {\r\n return this.contractsAwaitingProcessingService\r\n .queryAccountsForContract(contractId, contractVersionId, true)\r\n .pipe(\r\n concatMap(nomGroupIds => {\r\n const nominationGroupNameDtos: NominationGroupNameDto[] = [];\r\n _.each(nomGroupIds, nomGroupId => {\r\n const nominationGroupNameDto = new NominationGroupNameDto();\r\n nominationGroupNameDto.id = nomGroupId;\r\n\r\n nominationGroupNameDtos.push(nominationGroupNameDto);\r\n });\r\n\r\n return this.nomGroupEnrichmentService.enrichArray(nominationGroupNameDtos, 'id');\r\n })\r\n );\r\n }\r\n\r\n cancelEdit() {\r\n this.contractToEdit = null;\r\n this.model = null;\r\n this.cancelEvent.emit();\r\n }\r\n\r\n cancelAddNewAccountClicked() {\r\n this.model.addClicked = false;\r\n }\r\n\r\n addNewAccountClicked() {\r\n\r\n const newNomGroup$: Observable = this.model.reservedNewNomGroup ?\r\n of(this.model.reservedNewNomGroup) :\r\n this.nominationGroupService.createNomGroupInitialState(this.model.contractVersionId).pipe(tap(result => {\r\n this.model.reservedNewNomGroup = result;\r\n this.model.isNewMnemonicEditable = result.businessRight.name === BusinessRight.ShortNoticeBalancing.name;\r\n }));\r\n\r\n newNomGroup$.pipe(\r\n tap(() => {\r\n this.model.newLinkedAccountId = this.model.reservedNewNomGroup.id;\r\n this.model.newLinkedAccountMnemonic = this.model.reservedNewNomGroup.mnemonic;\r\n this.model.newLinkedAccountName = this.model.reservedNewNomGroup.name;\r\n this.model.addClicked = true;\r\n })\r\n ).subscribe(() => {});\r\n }\r\n\r\n submitDisabled() {\r\n return !this.model || !this.model.newLinkedAccountId || !this.model.newLinkedAccountStartGasDay || (this.model.addClicked && !this.model.newLinkedAccountName);\r\n }\r\n\r\n private validateLink(contract: Contract, contracts: Contract[]): boolean {\r\n const futureContractLinks = this.findFutureAccountLinks(contract, contracts);\r\n if (futureContractLinks.length > 0) {\r\n const accountMnemonics = _.join(_.map(futureContractLinks, a => a.accountMnemonic));\r\n // The contract has been linked to another account in the future. Cannot edit/unlink this.\r\n this.alertService.clearMessages();\r\n this.alertService.addWarnMessage(\"Cannot link to another Account\", `The contract must be unlinked from the following account(s) first: ${accountMnemonics}`);\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n private setupModal(contract: Contract, lastSearchGasDay: GasDay, pipelineGasDay: NominationPipelineGasDay): Observable {\r\n const setupEditModel$ = this.setupModalModel(contract, lastSearchGasDay, pipelineGasDay);\r\n\r\n const accounts$ = this.queryContractAccounts(contract.contractId, contract.contractVersionId).pipe(\r\n tap(dtos => {\r\n // Don't include the current Account Id in the drop-down.\r\n _.remove(dtos, dto => dto.id === contract.accountId);\r\n\r\n this.accounts = dtos;\r\n })\r\n );\r\n\r\n return forkJoin([setupEditModel$, accounts$])\r\n .pipe(\r\n map(() => {\r\n return true;\r\n })\r\n );\r\n }\r\n\r\n private setupModalModel(contract: Contract, lastSearchGasDay: GasDay, pipelineGasDay: NominationPipelineGasDay): Observable {\r\n const editContractModel = new EditContractModel();\r\n _.assign(editContractModel, contract);\r\n\r\n editContractModel.enterpriseId = contract.customerId;\r\n editContractModel.receiptLocationId = contract.primaryReceiptLocationId;\r\n editContractModel.deliveryLocationId = contract.primaryDeliveryLocationId;\r\n editContractModel.accountLinkStartGasDay = contract.linkStartGasDay;\r\n editContractModel.accountLinkEndGasDay = contract.linkEndGasDay;\r\n\r\n editContractModel.minEffectiveGasDay = GasDay.max([pipelineGasDay.actualGasDay, contract.linkStartGasDay, contract.startGasDay]);\r\n editContractModel.maxEffectiveGasDay = contract.endGasDay;\r\n editContractModel.defaultGasDay = editContractModel.minEffectiveGasDay;\r\n\r\n editContractModel.searchedGasDay = lastSearchGasDay;\r\n\r\n return of(editContractModel)\r\n .pipe(\r\n concatMap(editModel => this.enterpriseEnrichmentService.enrich(editModel, 'enterpriseId', 'enterprise')),\r\n concatMap(editModel => this.locationEnrichmentService.enrich(editModel, 'receiptLocationId', 'receiptLocation')),\r\n concatMap(editModel => this.locationEnrichmentService.enrich(editModel, 'deliveryLocationId', 'deliveryLocation')),\r\n tap(editModel => {\r\n this.model = editModel;\r\n })\r\n );\r\n }\r\n}\r\n\r\n\r\n","\r\n
\r\n
\r\n Error: {{model.errorMessage}}\r\n
\r\n
\r\n The Contract {{model.contractNum}} will be unlinked and relinked.\r\n
\r\n
\r\n
\r\n \r\n
{{model.currentAccountMnemonic}}\r\n ({{model.currentAccountLinkStart}} to {{model.currentAccountLinkEnd}})\r\n
\r\n
\r\n
\r\n \r\n
{{model.relinkAccountMnemonic}}\r\n ({{model.relinkAccountLinkStart}} to {{model.relinkAccountLinkEnd}})\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n","import {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core';\r\nimport {ModalComponent} from \"@shared/components/modal/modal.component\";\r\n\r\nimport * as _ from \"lodash\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {ContractsService} from \"@shared/services/contracts/contracts/contracts.service\";\r\nimport {map, tap} from \"rxjs/operators\";\r\nimport {Observable} from \"rxjs\";\r\nimport {Contract} from \"@model/models/contract\";\r\n\r\nclass UnlinkContractModel {\r\n contractNum: number;\r\n\r\n currentAccountMnemonic: string;\r\n currentAccountLinkStart: GasDay;\r\n currentAccountLinkEnd: GasDay;\r\n\r\n relinkAccountMnemonic: string;\r\n relinkAccountLinkStart: GasDay;\r\n relinkAccountLinkEnd: GasDay;\r\n\r\n errorMessage: string;\r\n}\r\n\r\n@Component({\r\n selector: 'app-unlink-contract',\r\n templateUrl: './unlink-contract.component.html',\r\n styleUrls: ['./unlink-contract.component.css']\r\n})\r\nexport class UnlinkContractComponent implements OnInit {\r\n\r\n contractToUnLink: Contract = null;\r\n relinkContract: Contract = null;\r\n\r\n futureAccounts: Contract[] = null;\r\n model: UnlinkContractModel = null;\r\n\r\n @Output() okEvent = new EventEmitter();\r\n @Output() cancelEvent = new EventEmitter();\r\n @ViewChild(ModalComponent) modal: ModalComponent;\r\n\r\n constructor(private alertService: AlertService, private contractsService: ContractsService) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n submit() {\r\n this.contractsService.unlinkContract(this.contractToUnLink.contractVersionId, this.contractToUnLink.accountId, this.contractToUnLink.linkStartGasDay)\r\n .pipe(\r\n tap(() => {\r\n this.okEvent.emit();\r\n this.modal.hide();\r\n })\r\n ).subscribe(() => {});\r\n }\r\n\r\n cancel() {\r\n this.model = null;\r\n this.contractToUnLink = null;\r\n this.cancelEvent.emit();\r\n }\r\n\r\n private findFutureAccountLinks(contract: Contract, contracts: Contract[]): void {\r\n this.futureAccounts = _.chain(contracts)\r\n .filter(c => c.linkStartGasDay > contract.linkStartGasDay)\r\n .sortBy(c => c.linkStartGasDay)\r\n .value();\r\n }\r\n\r\n show(contract: Contract): Observable {\r\n return this.contractsService.queryContractAccountHistory(contract.contractVersionId)\r\n .pipe(\r\n tap(contracts => {\r\n this.setAccountForRelink(contract, contracts);\r\n this.findFutureAccountLinks(contract, contracts);\r\n }),\r\n map(() => {\r\n const isValid = this.validateUnlink();\r\n if (isValid) {\r\n this.contractToUnLink = contract;\r\n this.setupModel();\r\n this.modal.show();\r\n }\r\n return isValid;\r\n }));\r\n }\r\n\r\n private setupModel() {\r\n const unlinkModel = new UnlinkContractModel();\r\n unlinkModel.contractNum = this.contractToUnLink.contractNumber;\r\n\r\n unlinkModel.currentAccountMnemonic = this.contractToUnLink.accountMnemonic;\r\n unlinkModel.currentAccountLinkStart = this.contractToUnLink.linkStartGasDay;\r\n unlinkModel.currentAccountLinkEnd = this.contractToUnLink.linkEndGasDay;\r\n unlinkModel.relinkAccountMnemonic = this.relinkContract.accountMnemonic;\r\n unlinkModel.relinkAccountLinkStart = this.relinkContract.linkStartGasDay;\r\n unlinkModel.relinkAccountLinkEnd = this.contractToUnLink.linkEndGasDay;\r\n this.model = unlinkModel;\r\n }\r\n\r\n private validateUnlink(): boolean {\r\n if (this.futureAccounts.length > 0) {\r\n const accountMnemonics = _.join(_.map(this.futureAccounts, a => a.accountMnemonic));\r\n this.alertService.clearMessages();\r\n // The contract has been linked to another account in the future. Cannot edit/unlink this.\r\n this.alertService.addWarnMessage('Cannot Unlink Account', `The contract is linked to the following account(s): ${accountMnemonics}. You must unlink the newest one(s) first.`);\r\n return false;\r\n } else if (_.isNil(this.relinkContract)) {\r\n this.alertService.clearMessages();\r\n this.alertService.addWarnMessage('Cannot Unlink Account', 'There is no Account to relink the Contract to. Cannot unlink the Contract from the Account');\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n private setAccountForRelink(contract: Contract, contracts: Contract[]): void {\r\n this.relinkContract = _.chain(contracts)\r\n .filter(c => c.linkStartGasDay < contract.linkStartGasDay)\r\n .orderBy(c => c.linkStartGasDay, ['desc'])\r\n .head()\r\n .value();\r\n }\r\n}\r\n","export class ShipperHubType {\r\n public static primary : ShipperHubType = ShipperHubType.create('Primary');\r\n public static secondary : ShipperHubType = ShipperHubType.create('Secondary');\r\n public static shortNotice : ShipperHubType = ShipperHubType.create('ShortNotice');\r\n public static renewable : ShipperHubType = ShipperHubType.createWithName('Rng', 'Attachment C (RENEWABLE - RNG)');\r\n public static certified : ShipperHubType = ShipperHubType.createWithName('Cert', 'Attachment B (CERTIFIED - CERT)');\r\n\r\n public static certifiedGasHubTypes : ShipperHubType[] = [\r\n ShipperHubType.renewable,\r\n ShipperHubType.certified\r\n ];\r\n\r\n public id: string;\r\n public name: string;\r\n\r\n public static create(value: string): ShipperHubType {\r\n const hubType = new ShipperHubType();\r\n hubType.id = value;\r\n hubType.name = value;\r\n return hubType;\r\n }\r\n\r\n public static createWithName(value: string, name: string): ShipperHubType {\r\n const hubType = new ShipperHubType();\r\n hubType.id = value;\r\n hubType.name = name;\r\n return hubType;\r\n }\r\n\r\n // Method to return a certified HubType when the user passes the name\r\n getCertifiedHubTypeByName(name: string) {\r\n let matchingType = new ShipperHubType();\r\n ShipperHubType.certifiedGasHubTypes.forEach( hubType => { // Loop through the available hub types\r\n if (hubType.name.toLowerCase() === name.toLowerCase()){ // Match the name to the string passed by the user case-insensitively\r\n matchingType = hubType; // Store the relevant value\r\n }\r\n });\r\n return matchingType; // Return object we've found, or a blank object if we haven't\r\n }\r\n\r\n // Method to return a certified HubType when the user passes the id\r\n getCertifiedHubTypeById(id: string) {\r\n let matchingType = new ShipperHubType();\r\n ShipperHubType.certifiedGasHubTypes.forEach( hubType => { // Loop through the available hub types\r\n if (hubType.id.toLowerCase() === id.toLowerCase()){ // Match the id to the string passed by the user case-insensitively\r\n matchingType = hubType; // Store the relevant value\r\n }\r\n });\r\n return matchingType; // Return object we've found, or a blank object if we haven't\r\n }\r\n}\r\n","import {IGasDay} from \"@model/gas-day-month.interface\";\r\n\r\nexport class ViewAccountsReportRequest {\r\n gasDay: IGasDay;\r\n enterpriseId?: number;\r\n businessRights?: string[];\r\n billableServiceIds?: number[];\r\n includeExpired?: boolean;\r\n\r\n constructor(\r\n gasDay: IGasDay,\r\n enterpriseId?: number,\r\n businessRights?: string[],\r\n billableServiceIds?: number[],\r\n includeExpired?: boolean) {\r\n this.gasDay = gasDay;\r\n this.enterpriseId = enterpriseId;\r\n this.businessRights = businessRights;\r\n this.billableServiceIds = billableServiceIds;\r\n this.includeExpired = includeExpired;\r\n }\r\n}\r\n","export class ParkAndLoanType {\r\n constructor(name: string) {\r\n this.name = name;\r\n }\r\n\r\n public static Park: ParkAndLoanType = new ParkAndLoanType(\"Park\");\r\n public static Loan: ParkAndLoanType = new ParkAndLoanType(\"Loan\");\r\n\r\n\r\n public static All: ParkAndLoanType[] = [\r\n ParkAndLoanType.Park,\r\n ParkAndLoanType.Loan\r\n ];\r\n\r\n public name: string;\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n
\r\n
\r\n Error: {{addAccountModel.errorMessage}}\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Gas Day: {{model.lastSearchParams?.gasDay | gasDayFormat}}\r\n Customer: {{model.lastSearchParams?.enterpriseId | displayName: 'cid' : 'displayValue' : model.enterprises}}\r\n Service Type(s): {{model.lastSearchParams?.billableServiceIds | multiDisplayName: 'id' : 'name' : model.billableServices}}\r\n Business Rights: {{model.lastSearchParams?.businessRights | multiDisplayName: 'name' : 'name' : model.businessRights}}\r\n Include Expired: {{model.lastSearchParams?.includeExpired | booleanAsYesNo}}\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.gasDay | gasDayFormat}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.businessRights | multiDisplayName: 'name' : 'name' : model.businessRights}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.enterpriseId | displayName: 'cid' : 'displayValue' : model.enterprises}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.billableServiceIds | multiDisplayName: 'id' : 'service' : model.billableServices}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.includeExpired | booleanAsYesNo}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n Number of results found: {{model.searchResults.length}}\r\n
\r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n\r\n \r\n
\r\n Account
Mnemonic\r\n
\r\n
\r\n \r\n
\r\n {{event.displayValue}}\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n Service
Type\r\n
\r\n
\r\n {{ data.value | displayName: 'id' : 'service' : model.billableServices : '' }}\r\n
\r\n\r\n \r\n
\r\n Invoice
Group\r\n
\r\n \r\n
\r\n Primary
Receipt\r\n
\r\n \r\n
\r\n Primary
Delivery\r\n
\r\n \r\n
\r\n Tax Zero
Rated\r\n
\r\n
\r\n {{ row.value | booleanAsYesNo:'abbr' }}\r\n
\r\n \r\n
\r\n Anchor Shipper
Rights\r\n
\r\n
\r\n {{ row.value | booleanAsYesNo:'abbr' }}\r\n
\r\n \r\n \r\n
\r\n {{ row.value | gasDayFormat : false }}\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n {{ row.value | gasDayFormat }}\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n","import {Component, ViewChild} from \"@angular/core\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {forkJoin, Observable, of} from \"rxjs\";\r\nimport {AccountSearchParams, AccountsModel, AddAccountModel, NewAccountType} from \"app/gcts/contracts/accounts/accounts.model\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {NominationSystemService} from \"@shared/services/nomination/nomination-system/nomination-system.service\";\r\nimport {concatMap, tap} from \"rxjs/operators\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {Enterprise, EnterpriseCertificate, EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {BillableServiceService} from \"@shared/services/nomination/billable-service/billable-service.service\";\r\nimport {BillableService, BillableServices} from \"@model/BillableService\";\r\nimport * as _ from \"lodash\";\r\nimport { AccountsService } from \"@shared/services/accounts/accounts/accounts.service\";\r\nimport {NominationLocationEnrichmentService} from \"@shared/services/nomination/nomination-location-enrichment/nomination-location-enrichment.service\";\r\nimport {BusinessRight} from \"@model/business-right\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport * as dx from \"devextreme/core/renderer\";\r\nimport {AccountsEnterpriseSearchRequest, AccountsEnterpriseService} from \"@shared/services/accounts/accounts-enterprise/accounts-enterprise.service\";\r\nimport {ModalComponent} from \"@shared/components/modal/modal.component\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {BaseCreateAccountRequest, CreateHubAccountRequest, CreateNonHubAccountRequest, CreateParkAndLoanAccountRequest, NominationGroupService} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport {ErrorService} from \"@shared/services/webapp/error/error-service\";\r\nimport {AgentRelationship, AgentRelationshipService, MaintainAgentSearchRequest} from \"@shared/services/nomination/agent-relationship/agent-relationship.service\";\r\nimport {EditAccountComponent} from \"app/gcts/contracts/accounts/edit-account/edit-account.component\";\r\nimport {EditContractComponent} from \"app/gcts/contracts/accounts/edit-contract/edit-contract.component\";\r\nimport {UnlinkContractComponent} from \"app/gcts/contracts/accounts/unlink-contract/unlink-contract.component\";\r\nimport {NominationGroup, NominationGroupGasAccount, NominationNomGroupService} from \"@shared/services/nomination/nomination-nom-group/nomination-nom-group.service\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {Contract} from \"@model/models/contract\";\r\nimport {Account} from \"@model/models/account\";\r\nimport {ShipperHubType} from \"app/gcts/contracts/accounts/shipperHubType\";\r\nimport {ViewAccountsReportRequest} from \"@model/service-models/view-accounts-report-request\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {AccountingLocation} from \"@shared/interfaces/location\";\r\nimport {LocationService} from \"@shared/services/common-data/location/location.service\";\r\nimport {ParkAndLoanType} from \"@model/park-and-loan-type\";\r\nimport {UserService} from \"@shared/services/webapp/user/user-service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {PipelineSettingMapService} from \"@shared/services/nomination/pipeline-settings-map/pipeline-setting-map.service\";\r\nimport {AccountsBillableServicesService} from \"@shared/services/accounts/billable-service/accounts-billable-services.service\";\r\n\r\n@Component({\r\n selector: 'app-accounts',\r\n templateUrl: './accounts.component.html',\r\n styleUrls: ['./accounts.component.css']\r\n})\r\n\r\nexport class AccountsComponent extends BaseSearchComponent {\r\n static paramNameGasDay = 'gasDay';\r\n static paramNameEnterpriseId = 'enterpriseId';\r\n static paramNameBusinessRights = 'businessRights';\r\n static paramNameBillableServiceIds = 'billableServiceIds';\r\n static paramNameIncludeExpired = 'includeExpired';\r\n\r\n model: AccountsModel = new AccountsModel();\r\n addAccountModel: AddAccountModel = null;\r\n\r\n @ViewChild(DxDataGridComponent) toplevelgrid: DxDataGridComponent;\r\n @ViewChild(ModalComponent) addHubAccountModal: ModalComponent;\r\n @ViewChild(EditAccountComponent) editAccountModal: EditAccountComponent;\r\n @ViewChild(EditContractComponent) editContractModal: EditContractComponent;\r\n @ViewChild(UnlinkContractComponent) unlinkContractModal: UnlinkContractComponent;\r\n\r\n constructor(appService: AppService,\r\n activatedRoute: ActivatedRoute,\r\n router: Router,\r\n alertService: AlertService,\r\n protected nominationSystemService: NominationSystemService,\r\n protected enterpriseService: AccountsEnterpriseService,\r\n protected nominationsBillableServiceService: BillableServiceService,\r\n protected sessionService: SessionService,\r\n protected accountsBillableServicesService: AccountsBillableServicesService,\r\n private commonDataEnterpriseService: EnterpriseService,\r\n private enterpriseEnrichmentService: EnterpriseEnrichmentService,\r\n private nominationLocationEnrichmentService: NominationLocationEnrichmentService,\r\n private accountsService: AccountsService,\r\n private commonDataBillingMonthService: CommonDataBillingMonthService,\r\n private agentRelationshipService: AgentRelationshipService,\r\n private nominationGroupService: NominationGroupService,\r\n private nominationNomGroupService: NominationNomGroupService,\r\n private userService: UserService,\r\n private locationService: LocationService,\r\n private pipelineSettingMapService: PipelineSettingMapService) {\r\n super('View Accounts', appService, activatedRoute, router, alertService);\r\n\r\n enterpriseEnrichmentService.setEnrichmentResource(commonDataEnterpriseService);\r\n }\r\n\r\n public showMnemonicHyperlink(data: any): boolean {\r\n const account = data as Account;\r\n if (account.endGasDay.isLessThan(this.model.pipelineGasDay.earliestSelectableGasDay)) {\r\n return false;\r\n }\r\n const valIn = account.businessRight;\r\n return valIn.toUpperCase() === BusinessRight.Transportation.displayName.toUpperCase() ||\r\n valIn.toUpperCase() === BusinessRight.ParkAndLoan.displayName.toUpperCase() ||\r\n valIn.toUpperCase() === BusinessRight.ShortNoticeBalancing.alternateName.toUpperCase();\r\n }\r\n\r\n public showOrHideExpansion(e): void {\r\n if (e.rowType === \"data\") {\r\n if (e.column.command === \"expand\") {\r\n\r\n const account = e.data as Account;\r\n if (!account.isLinkableToContracts) {\r\n dx(e.cellElement).removeClass(\"dx-datagrid-expand\");\r\n dx(e.cellElement).empty();\r\n }\r\n }\r\n }\r\n }\r\n\r\n public contractOnRowExpanding($event): void {\r\n $event.component.getDataSource().store().byKey($event.key).then((row) => {\r\n return this.accountsService\r\n .queryAccountContracts(row.accountId, this.model.lastSearchParams.gasDay, this.model.lastSearchParams.includeExpired)\r\n .subscribe(contracts => row['contracts'] = contracts);\r\n });\r\n }\r\n\r\n public isAccountEditingDisabled(data: Account) : boolean {\r\n const billableService = this.model.billableServices.find(b => b.id === data.billableServiceId);\r\n\r\n if (billableService && billableService.service === BillableServices.pals && this.userService.hasCapabilities(['PALSAccountView-Write'])){\r\n return false;\r\n }\r\n\r\n // if don't have PALS account write privs but has accounts write privs, disable edits if it is a non-contracted PALS account\r\n if (this.userService.hasCapabilities(['ViewAccounts-Write'])) {\r\n return (billableService && billableService.service === BillableServices.pals && !billableService.isContracted);\r\n }\r\n return true;\r\n }\r\n\r\n public editAccountRowClicked(cellInfo: any): void {\r\n\r\n this.alertService.clearMessages();\r\n\r\n this.model.isEditing = true;\r\n const account = cellInfo.data as Account;\r\n this.editAccountModal.show(account, this.model.billableServices, this.model.lastSearchParams.gasDay, this.model.pipelineGasDay);\r\n }\r\n\r\n public unLinkContractRowClicked(cellInfo: any): void {\r\n const contract = cellInfo.data as Contract;\r\n this.unlinkContractModal.show(contract)\r\n .pipe(\r\n tap(result => {\r\n if (result) {\r\n this.model.isEditing = true;\r\n }\r\n })\r\n ).subscribe(() => {});\r\n }\r\n\r\n public moveContractRowClicked(cellInfo: any): void {\r\n const contract = cellInfo.data as Contract;\r\n\r\n this.editContractModal.show(contract, this.model.billableServices, this.model.lastSearchParams.gasDay, this.model.pipelineGasDay)\r\n .pipe(\r\n tap(result => {\r\n if (result) {\r\n this.model.isEditing = true;\r\n }\r\n })\r\n ).subscribe(() => {});\r\n }\r\n\r\n isContractMovable(cellInfo: any): boolean {\r\n const contract = cellInfo.data as Contract;\r\n return contract.endGasDay > this.model.pipelineGasDay.latestLaunchedGasDay && !_.some(this.model.billableServicesNotAllowedEdit, bs => bs.id === contract.billableServiceId);\r\n }\r\n\r\n cancelEditEvent(): void {\r\n this.model.isEditing = false;\r\n }\r\n\r\n okEditAccountEvent(message: string): void {\r\n this.performSearch().pipe(\r\n tap(() => {\r\n this.alertService.clearMessages();\r\n this.alertService.addSuccessMessage('Success', message);\r\n this.model.isEditing = false;\r\n })\r\n ).subscribe(() => {});\r\n }\r\n\r\n showAddModal(): void {\r\n this.buildAddAccountModel(false).subscribe(newAccountModel => {\r\n this.addAccountModel = newAccountModel;\r\n this.addHubAccountModal.show();\r\n });\r\n }\r\n\r\n showAddPalsModal(): void {\r\n this.buildAddAccountModel(true).subscribe(newAccountModel => {\r\n this.addAccountModel = newAccountModel;\r\n this.buildParkAndLoanAccountType();\r\n this.addHubAccountModal.show();\r\n });\r\n }\r\n private buildParkAndLoanAccountType(): void {\r\n this.addAccountModel.accountTypes = [];\r\n\r\n const item = new NewAccountType(BusinessRight.ParkAndLoan.name, BusinessRight.ParkAndLoan.displayName);\r\n\r\n this.addAccountModel.accountType = item.id;\r\n this.addAccountModel.accountTypes.push(item);\r\n }\r\n\r\n private buildAddAccountModel(buildParkAndLoanAccountType: boolean): Observable {\r\n const pipeline = this.sessionService.getPipeline();\r\n const isAddingPalsOnCgl = this.pipelineSettingMapService.isCgl(pipeline.code) && buildParkAndLoanAccountType;\r\n\r\n const openBillingMonth$ = this.commonDataBillingMonthService.getOpen();\r\n const invoiceAgents$ = isAddingPalsOnCgl\r\n ? openBillingMonth$\r\n .pipe(\r\n concatMap(openBillingMonth => this.getAgentRelationships(true, openBillingMonth.gasMonth.start()))\r\n )\r\n : this.getAgentRelationships(false, null);\r\n const enterpriseCertificates$ = this.queryEnterpriseCertificates();\r\n const queryHubTypes$ = this.queryShipperHubTypes();\r\n const locations$ = this.queryLocationsForPipeline();\r\n\r\n return forkJoin([openBillingMonth$, invoiceAgents$, queryHubTypes$, locations$, enterpriseCertificates$])\r\n .pipe(\r\n concatMap(([openBillingMonth, invoiceAgents, hubTypes,locations, enterpriseCertificates]) => {\r\n // Setup New Model\r\n const newAccountModel = new AddAccountModel();\r\n newAccountModel.isAddingPalsOnCgl = isAddingPalsOnCgl;\r\n\r\n if (buildParkAndLoanAccountType){\r\n const item = new NewAccountType(BusinessRight.ParkAndLoan.name, BusinessRight.ParkAndLoan.displayName);\r\n newAccountModel.accountType = item.id;\r\n newAccountModel.accountTypes = [];\r\n newAccountModel.accountTypes.push(item);\r\n }\r\n else {\r\n newAccountModel.accountTypes = _.orderBy(this.buildNewAccountTypes(), x=> x.id);\r\n }\r\n newAccountModel.hubTypes = hubTypes;\r\n newAccountModel.locations = locations;\r\n newAccountModel.parkAndLoanTypes = ParkAndLoanType.All;\r\n\r\n newAccountModel.enterpriseId = this.model.lastSearchParams.enterpriseId;\r\n newAccountModel.hubType = null;\r\n newAccountModel.startGasMonth = openBillingMonth.gasMonth;\r\n newAccountModel.minGasMonth = openBillingMonth.gasMonth;\r\n newAccountModel.endGasMonth = GasMonth.endOfTime;\r\n newAccountModel.enterpriseCertificates = enterpriseCertificates;\r\n\r\n enterpriseCertificates.forEach(value => {\r\n const hubType = ShipperHubType.createWithName(value.certificateTypeId, value.certificateTypeName);\r\n newAccountModel.hubTypes.push(hubType);\r\n });\r\n\r\n newAccountModel.startGasDay = this.model.pipelineGasDay.allowableGasDay;\r\n\r\n if (_.size(invoiceAgents) === 1) {\r\n newAccountModel.invoiceRecipientEnterpriseId = +_.head(invoiceAgents).agentEnterpriseId;\r\n } else {\r\n newAccountModel.invoiceRecipientEnterpriseId = this.model.lastSearchParams.enterpriseId;\r\n }\r\n\r\n return of(newAccountModel);\r\n }),\r\n concatMap(newAccountModel => this.enterpriseEnrichmentService.enrich(newAccountModel, 'invoiceRecipientEnterpriseId', 'invoiceRecipientEnterprise')),\r\n concatMap(newAccountModel => this.enterpriseEnrichmentService.enrich(newAccountModel, 'enterpriseId', 'enterprise'))\r\n );\r\n }\r\n\r\n // Feature 195820 requires the ability to filter account types/business rights by pipeline\r\n // Had confirmed with Mick that the account types shown here are actually business rights\r\n private buildNewAccountTypes(): NewAccountType[] {\r\n const newAccountTypes = _.intersectionWith(NewAccountType.All, this.model.businessRights, (a, b) => a['id'] === b['name'] || (!_.isNil(b['alternateName']) && a['id'] === b['alternateName']) );\r\n newAccountTypes.push(NewAccountType.ShipperHub);\r\n return newAccountTypes;\r\n }\r\n\r\n public onAccountTypeSelectionChanged(): void {\r\n if (_.isNil(this.addAccountModel.accountType)) {\r\n return;\r\n }\r\n\r\n const parentAccounts$ = this.queryParentAccounts();\r\n const gasAccounts$ = this.queryNominationGroupGasAccounts();\r\n const existingNominationGroups$ = this.queryNominationGroupsForEnterprise();\r\n\r\n forkJoin([parentAccounts$, gasAccounts$, existingNominationGroups$])\r\n .subscribe(([parentAccounts, gasAccounts, existingNominationGroups]) => {\r\n\r\n if(!this.canAddAccount()) {\r\n return;\r\n }\r\n\r\n this.addAccountModel.linkedAccounts = parentAccounts;\r\n this.addAccountModel.gasAccounts = gasAccounts;\r\n this.addAccountModel.existingNominationGroups = existingNominationGroups;\r\n });\r\n }\r\n\r\n public queryEnterpriseCertificates(): Observable {\r\n return this.commonDataEnterpriseService.queryEnterpriseCertificates(this.model.lastSearchParams.enterpriseId,this.sessionService.getPipeline().code, this.model.lastSearchParams.gasDay);\r\n }\r\n\r\n public canAddAccount() :boolean {\r\n if(!this.isShipperLinePackAccount()) return true;\r\n\r\n if(_.find(this.addAccountModel.existingNominationGroups, ['businessRight', 'System Linepack'])) {\r\n this.addAccountModel.errorMessage = 'System Linepack Account already exists';\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public canAddPalsAccount(): boolean{\r\n if(this.model.billableServices === null || this.model.billableServices === undefined) return false;\r\n\r\n return _.some(this.model.billableServices, {service: BillableServices.pals, isContracted: false});\r\n }\r\n\r\n public isAddSubmitButtonDisabled(): boolean {\r\n if (_.isNil(this.addAccountModel) || _.isNil(this.addAccountModel.accountType)) {\r\n return true;\r\n }\r\n\r\n if (this.isShipperHub()) {\r\n return !this.addAccountModel || !this.addAccountModel.hubType || !this.addAccountModel.mnemonicPrefix\r\n || !this.addAccountModel.startGasMonth || !this.addAccountModel.invoiceRecipientEnterpriseId;\r\n }\r\n\r\n if(this.isShipperLinePackAccount()){\r\n return !this.canAddAccount();\r\n }\r\n\r\n\r\n\r\n let toReturn = !this.addAccountModel || !this.addAccountModel.accountName || !this.addAccountModel.accountMnemonic\r\n || !this.addAccountModel.startGasMonth || !this.addAccountModel.invoiceRecipientEnterpriseId;\r\n\r\n if (this.showParentAccount()) {\r\n toReturn = toReturn || !this.addAccountModel.linkedAccountId;\r\n }\r\n\r\n if (this.showGasAccount()) {\r\n toReturn = toReturn || !this.addAccountModel.gasAccountId;\r\n }\r\n\r\n if(this.isPalsAccount()){\r\n toReturn = toReturn || !this.addAccountModel.locationId || !this.addAccountModel.parkAndLoanType\r\n || !this.addAccountModel.palsQuantities.injectionQuantity || !this.addAccountModel.palsQuantities.injectionQuantityStartDate || !this.addAccountModel.palsQuantities.injectionQuantityEndDate\r\n || !this.addAccountModel.palsQuantities.withdrawalQuantity || !this.addAccountModel.palsQuantities.withdrawalQuantityStartDate || !this.addAccountModel.palsQuantities.withdrawalQuantityEndDate\r\n || !this.addAccountModel.palsQuantities.totalQuantity || !this.addAccountModel.palsQuantities.totalQuantityStartDate|| !this.addAccountModel.palsQuantities.totalQuantityEndDate\r\n || this.addAccountModel.palsQuantities.injectionQuantityEndDate.isLessThan(this.addAccountModel.palsQuantities.injectionQuantityStartDate)\r\n || this.addAccountModel.palsQuantities.withdrawalQuantityEndDate.isLessThan(this.addAccountModel.palsQuantities.withdrawalQuantityStartDate);\r\n }\r\n\r\n return toReturn;\r\n }\r\n\r\n public isAccountTypeSelected(): boolean {\r\n return !_.isNil(this.addAccountModel.accountType);\r\n }\r\n\r\n public isShipperHub(): boolean {\r\n return this.addAccountModel.accountType === NewAccountType.ShipperHub.id;\r\n }\r\n\r\n public isPalsAccount() {\r\n if(this.addAccountModel === null) return false;\r\n return this.addAccountModel.accountType === NewAccountType.ParkAndLoan.id;\r\n }\r\n\r\n public showParentAccount(): boolean {\r\n return this.addAccountModel.accountType === NewAccountType.CustodyTransfer.id ||\r\n this.addAccountModel.accountType === NewAccountType.SboStorage.id ||\r\n this.addAccountModel.accountType === NewAccountType.TboFuel.id ||\r\n this.addAccountModel.accountType === NewAccountType.MultiTitleTransfer.id;\r\n }\r\n\r\n public showCtAccount(): boolean {\r\n return this.addAccountModel.accountType === NewAccountType.MultiTitleTransfer.id;\r\n }\r\n\r\n public showGasAccount(): boolean {\r\n if(this.isShipperLinePackAccount()) return false;\r\n\r\n return this.addAccountModel.accountType === NewAccountType.Purchase.id ||\r\n this.addAccountModel.accountType === NewAccountType.Sale.id ||\r\n this.addAccountModel.accountType === NewAccountType.SboStorage.id ||\r\n this.addAccountModel.accountType === NewAccountType.SystemFuel.id ||\r\n this.addAccountModel.accountType === NewAccountType.SystemLinepack.id ||\r\n this.addAccountModel.accountType === NewAccountType.TboTransportation.id;\r\n }\r\n\r\n public isShipperLinePackAccount() {\r\n\r\n const pipeline = this.sessionService.getPipeline();\r\n\r\n if(this.addAccountModel.accountType !== NewAccountType.SystemLinepack.id) return false;\r\n\r\n // check to see if the selected customer is a shipper or pipeline owner\r\n if(this.addAccountModel.enterpriseId === pipeline.legalSignorEnterpriseCid) return false;\r\n\r\n return true;\r\n }\r\n\r\n public submitAddAccount(): void {\r\n this.alertService.clearMessages();\r\n\r\n if (this.isShipperHub()) {\r\n this.submitHubAccount();\r\n } else if (this.isPalsAccount()){\r\n this.submitParkAndLoanAccount();\r\n } else {\r\n this.submitNonHubAccount();\r\n }\r\n }\r\n\r\n public isCustomerSelected(): boolean {\r\n return !_.isNil(this.model.lastSearchParams) && !_.isNaN(this.model.lastSearchParams.enterpriseId);\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n const paramValidator = ParamValidator.Standard();\r\n paramValidator.isGasDay(AccountsComponent.paramNameGasDay);\r\n paramValidator.isNumber(AccountsComponent.paramNameEnterpriseId, true);\r\n paramValidator.isBoolean(AccountsComponent.paramNameIncludeExpired);\r\n return paramValidator.isValid(params);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {};\r\n params[AccountsComponent.paramNameGasDay] = this.model.searchParams.gasDay;\r\n\r\n if (!_.isNil(this.model.searchParams.enterpriseId) && !isNaN(this.model.searchParams.enterpriseId)) {\r\n params[AccountsComponent.paramNameEnterpriseId] = this.model.searchParams.enterpriseId;\r\n }\r\n\r\n if (!_.isNil(this.model.searchParams.businessRights) && this.model.businessRights.length !== this.model.searchParams.businessRights.length) {\r\n params[AccountsComponent.paramNameBusinessRights] = this.model.searchParams.businessRights;\r\n }\r\n\r\n params[AccountsComponent.paramNameBillableServiceIds] = this.model.searchParams.billableServiceIds;\r\n params[AccountsComponent.paramNameIncludeExpired] = this.model.searchParams.includeExpired;\r\n return params;\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n this.appService.hideMenu();\r\n\r\n return this.nominationSystemService.pipelineGasDay()\r\n .pipe(\r\n tap(pipelineGasDay => this.model.pipelineGasDay = pipelineGasDay)\r\n );\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n const serviceCalls = [\r\n this.queryEnterprises(),\r\n this.queryBillableServices(),\r\n this.queryBusinessRights()\r\n ];\r\n\r\n return forkJoin(serviceCalls);\r\n }\r\n\r\n private queryBusinessRights(): Observable {\r\n return this.accountsService.queryAllByPipeline(this.model.searchParams.gasDay).pipe(\r\n tap(businessRights => this.model.businessRights = _.sortBy(businessRights, b => b['displayName']))\r\n );\r\n }\r\n\r\n private queryShipperHubTypes() : Observable{\r\n return this.accountsService.queryShipperHubTypes(this.model.searchParams.gasDay).pipe(\r\n tap(shipperHubTypes => this.model.shipperHubTypes = shipperHubTypes)\r\n );\r\n }\r\n\r\n private queryBillableServices(): Observable {\r\n return this.accountsBillableServicesService.queryAllByPipeline()\r\n .pipe(\r\n tap(billableServiceIds => {\r\n this.model.billableServices = billableServiceIds;\r\n this.model.billableServicesNotAllowedEdit = _.filter(this.model.billableServices, s => s.service === BillableServices.pals);\r\n })\r\n );\r\n }\r\n\r\n private queryEnterprises(): Observable {\r\n const request = new AccountsEnterpriseSearchRequest(this.model.searchParams.gasDay, 'NominationAgent');\r\n\r\n return this.enterpriseService.getAll(request)\r\n .pipe(\r\n tap(enterprises => this.model.enterprises = enterprises)\r\n );\r\n }\r\n\r\n private submitHubAccount(): void {\r\n const request = new CreateHubAccountRequest();\r\n this.buildBaseRequest(request);\r\n\r\n request.hubType = this.addAccountModel.hubType;\r\n request.mnemonicPrefix = this.addAccountModel.mnemonicPrefix;\r\n\r\n this.nominationGroupService.createHubAccount(request).pipe(\r\n concatMap(() => this.performSearch())\r\n )\r\n .subscribe(() => {\r\n this.alertService.addSuccessMessage('Success', 'The Account(s) have been created.');\r\n this.addHubAccountModal.hide();\r\n },\r\n error => {\r\n this.alertService.clearMessages();\r\n const errMsg = ErrorService.getErrorMessageFromErrorResponse(error);\r\n this.addAccountModel.errorMessage = errMsg;\r\n });\r\n }\r\n\r\n private submitNonHubAccount(): void {\r\n const request = new CreateNonHubAccountRequest();\r\n this.buildBaseRequest(request);\r\n\r\n request.accountName = this.addAccountModel.accountName;\r\n request.accountMnemonic = this.addAccountModel.accountMnemonic;\r\n request.parentAccountId = this.addAccountModel.linkedAccountId;\r\n request.gasAccountId = this.addAccountModel.gasAccountId;\r\n request.businessRight = this.addAccountModel.accountType;\r\n\r\n this.nominationGroupService.createNonHubAccount(request).pipe(\r\n concatMap(() => this.performSearch())\r\n )\r\n .subscribe(() => {\r\n this.alertService.addSuccessMessage('Success', 'The Account(s) have been created.');\r\n this.addHubAccountModal.hide();\r\n },\r\n error => {\r\n this.alertService.clearMessages();\r\n const errMsg = ErrorService.getErrorMessageFromErrorResponse(error);\r\n this.addAccountModel.errorMessage = errMsg;\r\n });\r\n }\r\n\r\n private submitParkAndLoanAccount(): void {\r\n const request = new CreateParkAndLoanAccountRequest();\r\n this.buildBaseRequest(request);\r\n\r\n request.accountName = this.addAccountModel.accountName;\r\n request.accountMnemonic = this.addAccountModel.accountMnemonic;\r\n request.parentAccountId = this.addAccountModel.linkedAccountId;\r\n request.gasAccountId = this.addAccountModel.gasAccountId;\r\n request.businessRight = this.addAccountModel.accountType;\r\n\r\n request.injectionQuantity = this.addAccountModel.palsQuantities.injectionQuantity;\r\n request.injectionQuantityStartDate = this.addAccountModel.palsQuantities.injectionQuantityStartDate;\r\n request.injectionQuantityEndDate = this.addAccountModel.palsQuantities.injectionQuantityEndDate;\r\n\r\n request.withdrawalQuantity = this.addAccountModel.palsQuantities.withdrawalQuantity;\r\n request.withdrawalQuantityStartDate = this.addAccountModel.palsQuantities.withdrawalQuantityStartDate;\r\n request.withdrawalQuantityEndDate = this.addAccountModel.palsQuantities.withdrawalQuantityEndDate;\r\n\r\n request.totalQuantity = this.addAccountModel.palsQuantities.totalQuantity;\r\n request.totalQuantityStartDate = this.addAccountModel.palsQuantities.totalQuantityStartDate;\r\n request.totalQuantityEndDate = this.addAccountModel.palsQuantities.totalQuantityEndDate;\r\n request.locationId = this.addAccountModel.locationId;\r\n request.parkAndLoanType = this.addAccountModel.parkAndLoanType;\r\n\r\n this.nominationGroupService.createParkAndLoanAccount(request).pipe(\r\n concatMap(() => this.performSearch())\r\n )\r\n .subscribe(() => {\r\n this.alertService.addSuccessMessage('Success', 'The Account(s) have been created.');\r\n this.addHubAccountModal.hide();\r\n },\r\n error => {\r\n this.alertService.clearMessages();\r\n const errMsg = ErrorService.getErrorMessageFromErrorResponse(error);\r\n this.addAccountModel.errorMessage = errMsg;\r\n });\r\n }\r\n\r\n private buildBaseRequest(request: BaseCreateAccountRequest) {\r\n request.enterpriseId = this.addAccountModel.enterpriseId;\r\n request.effectiveGasDay = this.addAccountModel.startGasMonth.start();\r\n request.expiryGasDay = this.addAccountModel.endGasMonth.end();\r\n request.invoiceRecipientId = this.addAccountModel.invoiceRecipientEnterpriseId;\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n\r\n return this.queryAccounts();\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n if (this.toplevelgrid) {\r\n this.toplevelgrid.instance.clearSorting();\r\n this.toplevelgrid.instance.columnOption('Customer', {sortOrder: 'asc', sortIndex: 0});\r\n this.toplevelgrid.instance.columnOption('Mnemonic', {sortOrder: 'asc', sortIndex: 1});\r\n }\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams = new AccountSearchParams();\r\n this.model.searchParams.gasDay = this.model.pipelineGasDay.allowableGasDay;\r\n this.model.clearSearchResults();\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams.gasDay = typedParams.asGasDay(AccountsComponent.paramNameGasDay);\r\n this.model.searchParams.enterpriseId = typedParams.asNumber(AccountsComponent.paramNameEnterpriseId);\r\n this.model.searchParams.businessRights = typedParams.asListOfStrings(AccountsComponent.paramNameBusinessRights);\r\n this.model.searchParams.billableServiceIds = typedParams.asListOfNumbers(AccountsComponent.paramNameBillableServiceIds);\r\n this.model.searchParams.includeExpired = typedParams.asBoolean(AccountsComponent.paramNameIncludeExpired);\r\n }\r\n\r\n private queryParentAccounts(): Observable {\r\n if (!this.showParentAccount()) { return of(null); }\r\n\r\n return this.accountsService.queryParentAccounts(this.model.lastSearchParams.enterpriseId, this.addAccountModel.accountType, this.model.lastSearchParams.gasDay)\r\n .pipe(\r\n concatMap(accounts => this.enterpriseEnrichmentService.enrichArray(accounts, 'customerId', 'customer')),\r\n tap(accounts => {\r\n this.addAccountModel.linkedAccounts = accounts;\r\n })\r\n );\r\n }\r\n\r\n private queryNominationGroupGasAccounts(): Observable {\r\n if (!this.showGasAccount() && !this.isShipperLinePackAccount()) { return of(null); }\r\n\r\n return this.nominationNomGroupService.queryNominationGroupGasAccounts(this.addAccountModel.accountType)\r\n .pipe(\r\n tap(gasAccounts => {\r\n this.addAccountModel.gasAccounts = gasAccounts;\r\n })\r\n );\r\n }\r\n\r\n private queryNominationGroupsForEnterprise() : Observable{\r\n return this.nominationGroupService.queryNominationGroupsForEnterprise(this.addAccountModel.enterpriseId)\r\n .pipe(\r\n tap(nominationGroups => {\r\n this.addAccountModel.existingNominationGroups = nominationGroups;\r\n })\r\n );\r\n }\r\n\r\n private queryLocationsForPipeline() : Observable {\r\n return this.locationService.queryAccountLocations();\r\n }\r\n\r\n private queryAccounts(): Observable {\r\n\r\n const selectedBusinessRights = _.intersectionWith(this.model.businessRights, this.model.searchParams.businessRights, (b, s) => b['name'] === s);\r\n const selectedBusinessRightAlternateNames = _.map(selectedBusinessRights, x => _.isNil(x.alternateName)? x.name : x.alternateName);\r\n\r\n const searchRequest = new ViewAccountsReportRequest(\r\n this.model.searchParams.gasDay,\r\n this.model.searchParams.enterpriseId,\r\n selectedBusinessRightAlternateNames,\r\n this.model.searchParams.billableServiceIds,\r\n this.model.searchParams.includeExpired);\r\n\r\n return this.accountsService.queryAccounts(searchRequest)\r\n .pipe(\r\n concatMap(account => this.enterpriseEnrichmentService.enrichArray(account, 'customerId', 'customer')),\r\n concatMap(account => this.nominationLocationEnrichmentService.enrichArray(account, 'primaryReceiptLocationId', 'receiptLocation')),\r\n concatMap(account => this.nominationLocationEnrichmentService.enrichArray(account, 'primaryDeliveryLocationId', 'deliveryLocation')),\r\n tap(account => {\r\n this.model.searchResults = account;\r\n })\r\n );\r\n }\r\n\r\n private getAgentRelationships(queryByEffectiveGasDay: boolean, effectiveGasDay: GasDay): Observable {\r\n const maintainAgentSearchRequest = new MaintainAgentSearchRequest();\r\n maintainAgentSearchRequest.agentRole = 'InvoiceAgent';\r\n maintainAgentSearchRequest.customerId = this.model.lastSearchParams.enterpriseId.toString();\r\n maintainAgentSearchRequest.agentType = 'Full';\r\n\r\n if (queryByEffectiveGasDay) {\r\n maintainAgentSearchRequest.includeExpired = true;\r\n maintainAgentSearchRequest.effectiveGasDay = effectiveGasDay;\r\n }\r\n else {\r\n maintainAgentSearchRequest.includeExpired = false;\r\n }\r\n return this.agentRelationshipService.getMaintainAgentRelationships(maintainAgentSearchRequest);\r\n }\r\n\r\n public onGasDayChanged(): void {\r\n // this will be fired even when a null value is returned from the date picker and don't want to reload with a bad date\r\n if (!this.model.searchParams.gasDay) { return; }\r\n\r\n const queryEnterprise$ = this.queryEnterprises();\r\n const queryBusinessRight$ = this.queryBusinessRights();\r\n\r\n forkJoin([queryEnterprise$, queryBusinessRight$]).subscribe(() => {});\r\n }\r\n\r\n public onQuantityStartDateChanged(e): void {\r\n this.addAccountModel.palsQuantities.setStartDate();\r\n this.addAccountModel.startGasMonth = GasMonth.fromGasDay(this.addAccountModel.palsQuantities.totalQuantityStartDate);\r\n\r\n if (this.addAccountModel.isAddingPalsOnCgl) {\r\n this.getAgentRelationships(true, this.addAccountModel.startGasMonth?.start())\r\n .pipe(\r\n concatMap(agents => this.enterpriseEnrichmentService.enrichArray(agents, 'agentEnterpriseId', 'agentEnterprise')),\r\n tap(invoiceAgents =>{\r\n {\r\n if (_.size(invoiceAgents) === 1) {\r\n this.addAccountModel.invoiceRecipientEnterpriseId = +_.head(invoiceAgents).agentEnterpriseId;\r\n this.addAccountModel.invoiceRecipientEnterpriseDisplayName = _.head(invoiceAgents).agentEnterpriseDisplayName;\r\n } else {\r\n this.addAccountModel.invoiceRecipientEnterpriseId = this.model.lastSearchParams.enterpriseId;\r\n this.addAccountModel.invoiceRecipientEnterpriseDisplayName = this.addAccountModel.enterpriseDisplayName;\r\n }\r\n }\r\n })\r\n ).subscribe(() => {});\r\n }\r\n }\r\n\r\n public onQuantityEndDateChanged(e): void {\r\n this.addAccountModel.palsQuantities.setEndDate();\r\n this.addAccountModel.endGasMonth = GasMonth.fromGasDay(this.addAccountModel.palsQuantities.totalQuantityEndDate);\r\n }\r\n\r\n\r\n public clearSelectedAccountType() {\r\n this.addAccountModel = null;\r\n }\r\n}\r\n","export const BillableServices = {\r\n ft: 'FT',\r\n ftnr: 'FT-NR',\r\n ftsn: 'FT-SN',\r\n snb: 'SNB',\r\n stft: 'STFT',\r\n sts: 'STS',\r\n stsn: 'ST-SN',\r\n it: 'IT',\r\n pals: 'PALS',\r\n emb: 'EMB',\r\n sss: 'SSS',\r\n ltfp: 'LTFP',\r\n tbo: 'TBO'\r\n};\r\n\r\nexport class BillableService {\r\n id: number;\r\n name: string;\r\n service: string;\r\n public isContracted: boolean;\r\n\r\n constructor(id: number, name: string, service: string, isContracted: boolean = false) {\r\n this.id = id;\r\n this.name = name;\r\n this.service = service;\r\n this.isContracted = isContracted;\r\n }\r\n}\r\n\r\n","import { BaseViewModel } from \"@model/base-view-model\";\r\nimport {Enterprise, EnterpriseCertificate} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {ShipperHubType} from \"app/gcts/contracts/accounts/shipperHubType\";\r\n\r\nexport class CustomerCertifiedGasParametersModel extends BaseViewModel {\r\n searchParams: CustomerCertifiedGasParametersSearchParams = new CustomerCertifiedGasParametersSearchParams();\r\n lastSearchParams: CustomerCertifiedGasParametersSearchParams;\r\n searchResults: EnterpriseCertificate[];\r\n customers: Enterprise[];\r\n searchPerformed: boolean = false;\r\n timeOfLastSearch: Date;\r\n saved: boolean = false;\r\n customerParametersButtonEnabled: boolean = false;\r\n selectedMnemonic: string;\r\n selectedEnterpriseId: number;\r\n hasEditSecurity: boolean;\r\n isAnchorShipper: boolean = false;\r\n\r\n certifiedGasHubTypes: ShipperHubType[] = ShipperHubType.certifiedGasHubTypes;\r\n}\r\n\r\nexport class CustomerCertifiedGasParametersSearchParams {\r\n customerId: number;\r\n}\r\n","\r\n\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Customer: {{model.lastSearchParams?.customerId | displayName: 'id' : 'displayValue' : model.customers}}\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{this.model.lastSearchParams?.customerId | displayName: 'id' : 'displayValue' : model.customers}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{this.model.lastSearchParams?.customerId | displayName: 'id' : 'sapNumber' : model.customers}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n Number of records found: {{model.searchResults.length}}\r\n AS OF {{model.timeOfLastSearch | dateFormat:'YYYY-MMM-DD H:mm:ss'}}\r\n Export All\r\n
\r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n {{ this.model.selectedMnemonic }}\r\n
\r\n \r\n
\r\n {{ row.data.certificateTypeName }}\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n {{ row.data.effectiveGasDay }}\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n {{ row.data.expiryGasDay }}\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n","import { Component } from \"@angular/core\";\r\nimport { BaseSearchComponent } from \"@model/base-search-component\";\r\nimport { AppService } from \"@shared/services/webapp/app/app.service\";\r\nimport { AlertService } from \"@shared/services/webapp/alert/alert.service\";\r\nimport { FileService } from \"@shared/services/webapp/file-service/file.service\";\r\nimport { EnterpriseEnrichmentService } from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {\r\n Enterprise,\r\n EnterpriseCertificate,\r\n EnterpriseService\r\n} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {formatDate} from '@angular/common';\r\nimport { CustomerCertifiedGasParametersModel, CustomerCertifiedGasParametersSearchParams } from \"app/gcts/contracts/customer-certified-gas-parameters/customer-certified-gas-parameters.model\";\r\nimport { ActivatedRoute, Params, Router } from \"@angular/router\";\r\nimport {forkJoin, Observable, of} from \"rxjs\";\r\nimport { ParamValidator } from \"@model/validators/param-validator\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {concatMap, tap} from \"rxjs/operators\";\r\nimport * as _ from \"lodash\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {CapabilitiesService} from \"@shared/services/webapp/capabilities/capabilities.service\";\r\nimport {UserService} from \"@shared/services/webapp/user/user-service\";\r\nimport {ShipperHubType} from \"app/gcts/contracts/accounts/shipperHubType\";\r\nimport {PipelineSettingMapService} from \"@shared/services/nomination/pipeline-settings-map/pipeline-setting-map.service\";\r\n\r\n@Component({\r\n selector: 'app-customer-certified-gas-parameters',\r\n templateUrl: './customer-certified-gas-parameters.component.html',\r\n styleUrls: ['./customer-certified-gas-parameters.component.css']\r\n})\r\nexport class CustomerCertifiedGasParametersComponent extends BaseSearchComponent{\r\n private static readonly PARAM_CUSTOMER_ID: string = 'customerId';\r\n model: CustomerCertifiedGasParametersModel = new CustomerCertifiedGasParametersModel();\r\n private isCgl = this.pipelineSettingsMapService.isCgl(this.sessionService.getPipeline().code);\r\n public isAnchorShipper = false;\r\n\r\n constructor(\r\n protected appService: AppService,\r\n activatedRoute: ActivatedRoute,\r\n router: Router,\r\n protected alertService: AlertService,\r\n protected fileService: FileService,\r\n protected hubType: ShipperHubType,\r\n protected enterpriseEnrichmentService: EnterpriseEnrichmentService,\r\n protected enterpriseService: EnterpriseService,\r\n protected capabilitiesService: CapabilitiesService,\r\n protected userService: UserService,\r\n private sessionService: SessionService,\r\n private pipelineSettingsMapService: PipelineSettingMapService,\r\n ) {\r\n super('Customer Parameters', appService, activatedRoute, router, alertService);\r\n enterpriseEnrichmentService.setEnrichmentResource(enterpriseService);\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n const paramValidator = ParamValidator.Standard();\r\n paramValidator.isNumber(CustomerCertifiedGasParametersComponent.PARAM_CUSTOMER_ID);\r\n return paramValidator.isValid(params);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {};\r\n params['customerId'] = this.model.searchParams.customerId;\r\n return params;\r\n }\r\n\r\n // Load the inital resources neccessary for the page to function\r\n protected loadInitialResources(): Observable {\r\n this.model.hasEditSecurity = this.capabilitiesService.hasCapabilities(\r\n [\"CustomerCertifiedGasParameters-Write\"],\r\n this.userService.user,\r\n this.sessionService.getPipeline().code);\r\n const getEnterprises$ = this.queryEnterprises(); // Get the enterprises that will populate the dropdown\r\n return forkJoin([getEnterprises$]);\r\n }\r\n\r\n // This method checks that all the resources to make a search are in place. If they are it calls performSearch\r\n protected loadSearchResources(): Observable {\r\n return of({});\r\n }\r\n\r\n // This method is the one that actually does the search\r\n protected performSearch() {\r\n this.alertService.clearMessages(); // Clear any alerts\r\n\r\n if (this.model.saved === true) { // If the user has just saved a row\r\n this.alertService.addSuccessMessage(\"Success\", \"The customer invoice parameters have been sucessfully saved.\"); // Let the user know\r\n this.model.saved = false; // Turn off the saved flag\r\n }\r\n\r\n this.model.lastSearchParams = _.clone(this.model.searchParams); // Save the last search params\r\n\r\n // Get the certificates for the customer the user has selected and on the pipeline they are currently viewing.\r\n // Passing gasDay as undefined causes the endpoint to select today as the gas day\r\n const queryCustomerCertifiedGasParameters$ = this.enterpriseService.queryEnterpriseCertificates(this.model.searchParams.customerId, this.sessionService.getPipeline().code, undefined).pipe(\r\n tap(customerCertifiedGasParameters => {\r\n this.enterpriseService.get(this.model.searchParams.customerId).subscribe( enterprise => { // Get the mnemonic from the enterprise service\r\n this.model.selectedMnemonic = enterprise.mnemonic;\r\n this.model.selectedEnterpriseId = enterprise.cid;\r\n this.model.searchResults = customerCertifiedGasParameters; // Set the search results equal to the array we just built\r\n this.model.timeOfLastSearch = new Date(); // Set the search time to now\r\n });\r\n })\r\n );\r\n return forkJoin([queryCustomerCertifiedGasParameters$]);\r\n }\r\n\r\n // Unused method inherited from BaseSearchComponent\r\n protected resetSortOrder(): void {}\r\n\r\n // Unused method inherited from BaseSearchComponent\r\n protected setDefaultSearchParams(): void {}\r\n\r\n // Method to save the old search params and save the new ones\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams); // Save the current search params to last params\r\n this.model.searchParams = new CustomerCertifiedGasParametersSearchParams(); // Clear the search params\r\n this.model.searchParams.customerId = typedParams.asNumber(CustomerCertifiedGasParametersComponent.PARAM_CUSTOMER_ID); // Set the id\r\n }\r\n\r\n // Method to fetch all the enterprises to populate the dropdown.\r\n // This is a pipe and tap instead of a subscribe since the structure of BaseSearchComponent assumes a value will be\r\n // returned through to loadInitialResources\r\n private queryEnterprises(): Observable {\r\n return this.enterpriseService.getAll() // Call the service to get the enterprises\r\n .pipe(\r\n tap(enterprises => {\r\n this.model.customers = enterprises; // Set the result to the customer list\r\n })\r\n );\r\n }\r\n\r\n // Method to reset the page to it's initial state\r\n resetHasBeenClicked(b: boolean) {\r\n this.router.navigate([`app/${this.sessionService.getPipeline().code}/customeraccountparameters/`]); // Renavigate to the page to clear the params\r\n this.clearSearchResults(); // Call the method to clear the search results\r\n this.alertService.clearMessages(); // Clear any alert messages\r\n }\r\n\r\n // Method to reset the search results\r\n public clearSearchResults(): void {\r\n this.model.searchParams.customerId = null; // Null the id\r\n this.model.searchResults = null; // Null the search results\r\n }\r\n\r\n // Method to note that the user has changed the customer in the dropdown and call renavigate\r\n customerChanged($event: any) {\r\n this.renavigate();\r\n }\r\n\r\n // Method used both for initial search and after a row change to reload the page\r\n renavigate() {\r\n const queryParams = {\r\n customerId: this.model.searchParams.customerId\r\n };\r\n const url = `app/${this.sessionService.getPipeline().code}/customeraccountparameters/`;\r\n this.router.navigate([url], {queryParams});\r\n }\r\n\r\n // Method to download/export the table as a csv\r\n exportCsv() {\r\n this.enterpriseService.get(this.model.searchParams.customerId).subscribe( enterprise => { // Get the enterprise via the id\r\n const shortName = enterprise.shortName; // Get the name from the enterprise\r\n const currentDate = new Date(); // Get today's date\r\n const fileName = `ContractPricing_${shortName}_${currentDate}.csv`; // Use the name and date to generate the file name\r\n\r\n const headers = ['Customer Name (Mnemonic)','Certification Type','Start Date','End Date']; // Create the headers\r\n const columns = ['companyMnemonic','enterpriseCert.certificateTypeName','enterpriseCert.effectiveGasDay','enterpriseCert.expiryGasDay']; // List the child mapped to each column\r\n\r\n this.fileService.downloadCsvFile(fileName, this.model.searchResults, headers, columns); // Send all the relevant info to the fileService and download the thing\r\n });\r\n }\r\n\r\n updateNotADate(eventData, cellInfo: any) {\r\n if (cellInfo.setValue) {\r\n cellInfo.setValue(eventData.value);\r\n }\r\n }\r\n\r\n onEditorPreparing($event: any) {}\r\n\r\n updateADate(eventData, cellInfo: any) {\r\n if (cellInfo.setValue) {\r\n const formattedDate = formatDate(eventData.value, 'yyyy-MM-dd hh:mm', 'en-US');\r\n cellInfo.setValue(formattedDate);\r\n }\r\n }\r\n\r\n onRowInserted($event: any) {\r\n if (this.model.hasEditSecurity) { // Make sure the user has permission to do this\r\n const cert = new EnterpriseCertificate(); // Init the cert we'll be building\r\n cert.certificateTypeName = $event.data.certificateTypeName; // Begin adding the values from the user's input\r\n cert.certificateTypeId = this.hubType.getCertifiedHubTypeByName($event.data.certificateTypeName).id; // Use the cert name to fetch and save the id\r\n cert.effectiveGasDay = $event.data.effectiveGasDay;\r\n cert.expiryGasDay = $event.data.expiryGasDay;\r\n cert.enterpriseId = this.model.selectedEnterpriseId; // Get the enterprise ID from the enterprise we've searched\r\n cert.pipelineId = this.sessionService.getPipeline().id; // Get the pipeine from the session service\r\n this.enterpriseService.saveEnterpriseCertificate(cert).subscribe( result => { // Send the cert to the save endpoint\r\n this.renavigate(); // Renavigate to the page to reflect the new data and fetch a complete record for the new row\r\n });\r\n }\r\n }\r\n\r\n onRowRemoved($event: any) {\r\n if (this.model.hasEditSecurity) { // Make sure the user has permission to do this\r\n this.enterpriseService.deleteEnterpriseCertificate($event.data.id).subscribe( result => { // Send the cert id to the delete endpoint\r\n this.renavigate(); // Renavigate to the page to reflect the now-absent row\r\n });\r\n }\r\n }\r\n\r\n // This runs when each cell is prepared\r\n // onCellPrepared($event: any) {\r\n // if ($event.column.buttons) { // Check to see if we're looking at a cell with buttons\r\n // if (($event.data?.certificateTypeId.toLowerCase() === 'cert' || $event.data?.certificateTypeId.toLowerCase() === 'rng') || // Check if the row type is one we're not allowed to delete OR...\r\n // !this.model.hasEditSecurity) { // If the user lacks write permissions\r\n // // $event.cellElement.innerHTML = \"\"; // If either is the case, blank out the cell, thereby removing the buttons\r\n // }\r\n // }\r\n // }\r\n}\r\n","import {GasDay} from \"@model/gas-day\";\r\nimport {BaseViewModel} from \"@model/base-view-model\";\r\nimport {NominationPipelineGasDay} from \"@model/nomination-pipeline-gas-day\";\r\nimport {Enterprise} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {NominationLocation} from \"@shared/services/nomination/nomination-location/nomination-location.service\";\r\nimport {TemporaryAssignment} from \"@model/models/temporary-assignment\";\r\nimport {CommonPipeline} from \"@shared/services/common-data/pipelines/common-data-pipelines.service\";\r\n\r\nexport class TemporaryAssignmentModel extends BaseViewModel {\r\n public pipelineGasDay: NominationPipelineGasDay;\r\n public earliestSelectableGasDay: GasDay;\r\n public enterprises: Enterprise[];\r\n public locations: NominationLocation[];\r\n\r\n public searchParams: TemporaryAssignmentSearchParams = new TemporaryAssignmentSearchParams();\r\n public lastSearchParams: TemporaryAssignmentSearchParams;\r\n\r\n public searchResults: TemporaryAssignment[];\r\n public searchDateTime: Date;\r\n\r\n public commonPipeline: CommonPipeline;\r\n\r\n public isExternalUser: boolean = true;\r\n}\r\n\r\nexport class TemporaryAssignmentSearchParams {\r\n public searchType: string;\r\n public fromGasDay: GasDay;\r\n public toGasDay: GasDay;\r\n public customerId?: number;\r\n public assignorEnterpriseIds: number[] = [];\r\n public assigneeEnterpriseIds: number[] = [];\r\n public primaryReceiptLocationId?: number;\r\n public primaryDeliveryLocationId?: number;\r\n}\r\n\r\nexport enum TemporaryAssignmentSearchBy {\r\n AssignorAssignee,\r\n Customer\r\n}\r\n","\r\n\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n From Gas Day: {{model.lastSearchParams?.fromGasDay | gasDayFormat}}\r\n To Gas Day: {{model.lastSearchParams?.toGasDay | gasDayFormat}}\r\n Customer: {{model.lastSearchParams?.customerId | displayName: 'cid' : 'displayValue' : model.enterprises}}\r\n Assignor: {{model.lastSearchParams?.assignorEnterpriseIds | multiDisplayName: 'cid' : 'displayValue' : model.enterprises}}\r\n Assignee: {{model.lastSearchParams?.assigneeEnterpriseIds | multiDisplayName: 'cid' : 'displayValue' : model.enterprises}}\r\n Primary Receipt: {{model.lastSearchParams?.primaryReceiptLocationId | displayName: 'id' : 'name' : model.locations}}\r\n Primary Delivery: {{model.lastSearchParams?.primaryDeliveryLocationId | displayName: 'id' : 'name' : model.locations}}\r\n \r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n Assignor/Assignee\r\n \r\n \r\n Customer\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.fromGasDay | gasDayFormat}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.toGasDay | gasDayFormat}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams.customerId | displayName: 'cid' : 'displayValue' : model.enterprises}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.assignorEnterpriseIds | multiDisplayName: 'cid' : 'displayValue' : model.enterprises}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.assigneeEnterpriseIds | multiDisplayName: 'cid' : 'displayValue' : model.enterprises}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.primaryReceiptLocationId | displayName: 'id' : 'name' : model.locations}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.primaryDeliveryLocationId | displayName: 'id' : 'name' : model.locations}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n Number of results found: {{model.searchResults.length}}\r\n AS OF {{model.searchDateTime | dateFormat:'YYYY-MMM-DD H:mm:ss'}}\r\n\r\n
0\" class=\"pull-right\">\r\n Export CSV\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n
\r\n Assignment
Start Date\r\n
\r\n
\r\n {{ data.value | gasDayFormat }}\r\n
\r\n\r\n \r\n
\r\n Assignment
End Date\r\n
\r\n
\r\n {{ data.value | gasDayFormat }}\r\n
\r\n\r\n \r\n
\r\n Volume
Demand (Mcf/d)\r\n
\r\n\r\n \r\n
\r\n Contract
Demand (GJ/d)\r\n
\r\n\r\n \r\n \r\n\r\n \r\n
\r\n Assignor
Contract\r\n
\r\n\r\n \r\n
\r\n Assignor
Account\r\n
\r\n\r\n \r\n
\r\n Assignee
Contract\r\n
\r\n\r\n \r\n
\r\n Assignee
Account\r\n
\r\n\r\n \r\n
\r\n Customer
Ref Number\r\n
\r\n\r\n \r\n\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n","import * as _ from \"lodash\";\r\nimport {Component, OnInit} from \"@angular/core\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {EMPTY, forkJoin, Observable} from \"rxjs\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {\r\n TemporaryAssignmentModel,\r\n TemporaryAssignmentSearchBy, TemporaryAssignmentSearchParams\r\n} from \"app/gcts/contracts/temporary-assignment/temporary-assignment.model\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {concatMap, tap} from \"rxjs/operators\";\r\nimport {NominationSystemService} from \"@shared/services/nomination/nomination-system/nomination-system.service\";\r\nimport {\r\n Enterprise,\r\n EnterpriseService\r\n} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {Location} from \"@shared/interfaces/location\";\r\nimport {UserService} from \"@shared/services/webapp/user/user-service\";\r\nimport {ContractsService} from \"@shared/services/contracts/contracts/contracts.service\";\r\nimport {CommonDataGasdayService} from \"@shared/services/common-data/common-data-gasday/common-data-gasday.service\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {LocationEnrichmentService} from \"@shared/services/enrichment/location-enrichment.service\";\r\nimport {NomGroupEnrichmentService} from \"@shared/services/enrichment/nomgroup-enrichment.service\";\r\nimport {NominationGroupService} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport {NominationNomGroupService} from \"@shared/services/nomination/nomination-nom-group/nomination-nom-group.service\";\r\nimport {LocationSearchParams, NominationLocation, NominationLocationService} from \"@shared/services/nomination/nomination-location/nomination-location.service\";\r\nimport {TemporaryAssignment} from \"@model/models/temporary-assignment\";\r\nimport {\r\n CommonDataPipelinesService,\r\n CommonPipeline\r\n} from \"@shared/services/common-data/pipelines/common-data-pipelines.service\";\r\nimport {NominationPipelineGasDay} from \"@model/nomination-pipeline-gas-day\";\r\n\r\n@Component({\r\n selector: 'app-temporary-assignment',\r\n templateUrl: './temporary-assignment.component.html',\r\n styleUrls: ['./temporary-assignment.component.css']\r\n})\r\nexport class TemporaryAssignmentComponent extends BaseSearchComponent implements OnInit {\r\n public static readonly paramSearchType = 'searchType';\r\n public static readonly paramFromGasDay = 'fromGasDay';\r\n public static readonly paramToGasDay = 'toGasDay';\r\n public static readonly paramCustomerId = 'customerId';\r\n public static readonly paramAssignorIds = 'assignorIds';\r\n public static readonly paramAssigneeIds = 'assigneeIds';\r\n public static readonly paramPrimaryReceiptLocationId = 'primaryReceiptLocationId';\r\n public static readonly paramPrimaryDeliveryLocationId = 'primaryDeliveryLocationId';\r\n\r\n model: TemporaryAssignmentModel = new TemporaryAssignmentModel();\r\n\r\n constructor(\r\n appService: AppService,\r\n activatedRoute: ActivatedRoute,\r\n router: Router,\r\n alertService: AlertService,\r\n private sessionService: SessionService,\r\n private nominationSystemService: NominationSystemService,\r\n private enterpriseService: EnterpriseService,\r\n private locationService: NominationLocationService,\r\n private nominationGroupService: NominationGroupService,\r\n private userService: UserService,\r\n private contractService: ContractsService,\r\n private commonDataGasDayService: CommonDataGasdayService,\r\n private fileService: FileService,\r\n private enterpriseEnrichmentService: EnterpriseEnrichmentService,\r\n private locationEnrichmentService: LocationEnrichmentService,\r\n private nomGroupEnrichmentService: NomGroupEnrichmentService,\r\n private commonPipelineService: CommonDataPipelinesService) {\r\n super('Temporary Assignment', appService, activatedRoute, router, alertService);\r\n\r\n enterpriseEnrichmentService.setEnrichmentResource(enterpriseService);\r\n locationEnrichmentService.setEnrichmentResource(locationService);\r\n nomGroupEnrichmentService.setEnrichmentResource(nominationGroupService);\r\n }\r\n\r\n public fromGasDayValueChanged = (): void => {\r\n if (this.model.searchParams.fromGasDay > this.model.searchParams.toGasDay) {\r\n this.model.searchParams.toGasDay = this.model.searchParams.fromGasDay;\r\n }\r\n };\r\n\r\n public exportCsvClicked(): void {\r\n const csvData = [];\r\n\r\n const csvOrderedData = _.orderBy(this.model.searchResults, ['assignorEnterpriseDisplayName', 'assignorContractNumber', 'quantityEffectiveGasDay', 'assigneeEnterpriseDisplayName'], ['asc', 'asc', 'asc', 'asc']);\r\n\r\n for (const row of csvOrderedData) {\r\n csvData.push({\r\n assignor: row['assignorEnterpriseShortName'],\r\n assignorMnemonic: row['assignorEnterpriseMnemonic'],\r\n assignee: row['assigneeEnterpriseShortName'],\r\n assigneeMnemonic: row['assigneeEnterpriseMnemonic'],\r\n assignmentStartDate: row.quantityEffectiveGasDay.toCsvFormat(),\r\n assignmentEndDate: row.quantityExpiryGasDay.toCsvFormat(),\r\n contractVolumeDemand: row.contractVolumeQuantity,\r\n contractDemand: row.contractQuantity,\r\n primaryReceipt: row['primaryReceiptLocationName'],\r\n primaryDelivery: row['primaryDeliveryLocationName'],\r\n assignorContract: row.assignorContractNumber,\r\n assignorAccount: row.assignorAccountId,\r\n assigneeContract: row.assigneeContractNumber,\r\n assigneeAccount: row.assigneeAccountId,\r\n customerRefNumber: row.customerReferenceNumber\r\n });\r\n }\r\n\r\n const filename = `TemporaryAssignment_${this.model.lastSearchParams.fromGasDay.toDisplayFormat()}_${this.model.lastSearchParams.toGasDay.toDisplayFormat()}.csv`;\r\n\r\n const headers = this.GenerateCsvHeader();\r\n\r\n const columns = this.GenerateCsvColumns();\r\n\r\n this.fileService.downloadCsvFile(filename, csvData, headers, columns);\r\n }\r\n\r\n private GenerateCsvHeader() : string[] {\r\n const headers = ['Assignor', 'Assignor Mnemonic', 'Assignee', 'Assignee Mnemonic', 'Assignment Start Date','Assignment End Date'];\r\n\r\n if (this.model.commonPipeline.isContractQuantityTypeVolume()){\r\n headers.push('Volume Demand (Mcf/d)');\r\n }\r\n\r\n headers.push('Contract Demand (Gj/d)', 'Primary Receipt', 'Primary Delivery', 'Assignor Contract','Assignor Account', 'Assignee Contract', 'Assignee Account', 'Customer Reference Number');\r\n\r\n return headers;\r\n }\r\n\r\n private GenerateCsvColumns() : string[] {\r\n const columns = ['assignor', 'assignorMnemonic', 'assignee', 'assigneeMnemonic', 'assignmentStartDate', 'assignmentEndDate'];\r\n\r\n if (this.model.commonPipeline.isContractQuantityTypeVolume()) {\r\n columns.push('contractVolumeDemand');\r\n }\r\n\r\n columns.push('contractDemand', 'primaryReceipt', 'primaryDelivery', 'assignorContract', 'assignorAccount', 'assigneeContract', 'assigneeAccount', 'customerRefNumber');\r\n\r\n return columns;\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n const paramValidator = ParamValidator.Standard();\r\n paramValidator.isGasDay(TemporaryAssignmentComponent.paramFromGasDay);\r\n paramValidator.isGasDay(TemporaryAssignmentComponent.paramToGasDay);\r\n paramValidator.isNumber(TemporaryAssignmentComponent.paramPrimaryReceiptLocationId, true);\r\n paramValidator.isNumber(TemporaryAssignmentComponent.paramPrimaryDeliveryLocationId, true);\r\n return paramValidator.isValid(params);\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams = new TemporaryAssignmentSearchParams();\r\n this.model.lastSearchParams = null;\r\n this.model.searchResults = null;\r\n\r\n this.model.searchParams.searchType = TemporaryAssignmentSearchBy[TemporaryAssignmentSearchBy.AssignorAssignee].toString();\r\n this.model.searchParams.fromGasDay = this.model.pipelineGasDay.allowableGasDay;\r\n this.model.searchParams.toGasDay = this.model.pipelineGasDay.allowableGasDay;\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams.searchType = typedParams.asString(TemporaryAssignmentComponent.paramSearchType);\r\n this.model.searchParams.fromGasDay = typedParams.asGasDay(TemporaryAssignmentComponent.paramFromGasDay);\r\n this.model.searchParams.toGasDay = typedParams.asGasDay(TemporaryAssignmentComponent.paramToGasDay);\r\n this.model.searchParams.customerId = typedParams.asNullableNumber(TemporaryAssignmentComponent.paramCustomerId);\r\n this.model.searchParams.assignorEnterpriseIds = typedParams.asListOfNumbers(TemporaryAssignmentComponent.paramAssignorIds);\r\n this.model.searchParams.assigneeEnterpriseIds = typedParams.asListOfNumbers(TemporaryAssignmentComponent.paramAssigneeIds);\r\n this.model.searchParams.primaryReceiptLocationId = typedParams.asNullableNumber(TemporaryAssignmentComponent.paramPrimaryReceiptLocationId);\r\n this.model.searchParams.primaryDeliveryLocationId = typedParams.asNullableNumber(TemporaryAssignmentComponent.paramPrimaryDeliveryLocationId);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {};\r\n params[TemporaryAssignmentComponent.paramSearchType] = this.model.searchParams.searchType;\r\n params[TemporaryAssignmentComponent.paramFromGasDay] = this.model.searchParams.fromGasDay;\r\n params[TemporaryAssignmentComponent.paramToGasDay] = this.model.searchParams.toGasDay;\r\n\r\n if (this.model.searchParams.customerId) {\r\n params[TemporaryAssignmentComponent.paramCustomerId] = this.model.searchParams.customerId;\r\n }\r\n\r\n if (!_.isEmpty(this.model.searchParams.assignorEnterpriseIds)) {\r\n params[TemporaryAssignmentComponent.paramAssignorIds] = this.getSelectedEnterprises(this.model.searchParams.assignorEnterpriseIds);\r\n }\r\n\r\n if (!_.isEmpty(this.model.searchParams.assigneeEnterpriseIds)) {\r\n params[TemporaryAssignmentComponent.paramAssigneeIds] = this.getSelectedEnterprises(this.model.searchParams.assigneeEnterpriseIds);\r\n }\r\n\r\n if (this.model.searchParams.primaryReceiptLocationId) {\r\n params[TemporaryAssignmentComponent.paramPrimaryReceiptLocationId] = this.model.searchParams.primaryReceiptLocationId;\r\n }\r\n\r\n if (this.model.searchParams.primaryDeliveryLocationId) {\r\n params[TemporaryAssignmentComponent.paramPrimaryDeliveryLocationId] = this.model.searchParams.primaryDeliveryLocationId;\r\n }\r\n\r\n return params;\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n this.appService.hideMenu();\r\n\r\n const queryCommonPipeline$ = this.queryCommonPipeline();\r\n const queryPipelineGasDay$ = this.queryPipelineGasDay();\r\n\r\n return forkJoin(queryCommonPipeline$, queryPipelineGasDay$);\r\n }\r\n\r\n private queryCommonPipeline(): Observable{\r\n return this.commonPipelineService.getPipeline(this.sessionService.getPipeline().code)\r\n .pipe(\r\n tap(commonPipeline => this.model.commonPipeline = commonPipeline)\r\n );\r\n }\r\n\r\n private queryPipelineGasDay(): Observable{\r\n return this.nominationSystemService.pipelineGasDay()\r\n .pipe(\r\n tap(pipelineGasDay => this.model.pipelineGasDay = pipelineGasDay)\r\n );\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n const queryEnterprises$ = this.enterpriseService.getAll()\r\n .pipe(\r\n tap(enterprises => {\r\n this.enterpriseEnrichmentService.enrichArray(enterprises, 'cid');\r\n this.model.enterprises = _.orderBy(enterprises, x => x.displayName);\r\n })\r\n );\r\n\r\n\r\n const locationSearchParams = new LocationSearchParams(this.model.searchParams.fromGasDay, true, this.model.searchParams.toGasDay);\r\n const queryLocations$ = this.locationService.queryAllDetails2(locationSearchParams)\r\n .pipe(\r\n tap(locations => {\r\n this.model.locations = _.orderBy(locations, x => x.name);\r\n })\r\n );\r\n\r\n return forkJoin([queryEnterprises$, queryLocations$])\r\n .pipe(\r\n tap(() => {\r\n // Set Earliest Selectable Gas Day\r\n this.model.earliestSelectableGasDay = GasDay.parse(this.sessionService.getPipeline().uiAccessibleGasDay);\r\n\r\n // If User is External, then they can only search by customer\r\n this.model.isExternalUser = this.userService.user.isExternalUser;\r\n if (this.model.isExternalUser) {\r\n this.model.searchParams.searchType = TemporaryAssignmentSearchBy[TemporaryAssignmentSearchBy.Customer];\r\n this.model.searchParams.customerId = +this.userService.user.enterpriseId;\r\n }\r\n })\r\n );\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n\r\n const queryTemporaryAssignments$ = this.queryTemporaryAssignments();\r\n const queryApplicationDateTime$ = this.commonDataGasDayService.getServerTimeData()\r\n .pipe(\r\n tap(serverDateTime => this.model.searchDateTime = serverDateTime.clockTime.toDate())\r\n );\r\n\r\n return forkJoin([queryTemporaryAssignments$, queryApplicationDateTime$]);\r\n }\r\n\r\n private queryTemporaryAssignments(): Observable {\r\n const queryObservable$ = this.model.searchParams.searchType === TemporaryAssignmentSearchBy[TemporaryAssignmentSearchBy.Customer]\r\n ? this.contractService.queryTempAssignmentForCustomer(\r\n this.model.searchParams.fromGasDay,\r\n this.model.searchParams.toGasDay,\r\n this.model.searchParams.customerId,\r\n this.model.searchParams.primaryReceiptLocationId,\r\n this.model.searchParams.primaryDeliveryLocationId)\r\n : this.contractService.queryTempAssignmentForAssignorAssignee(\r\n this.model.searchParams.fromGasDay,\r\n this.model.searchParams.toGasDay,\r\n this.getSelectedEnterprises(this.model.searchParams.assignorEnterpriseIds),\r\n this.getSelectedEnterprises(this.model.searchParams.assigneeEnterpriseIds),\r\n this.model.searchParams.primaryReceiptLocationId,\r\n this.model.searchParams.primaryDeliveryLocationId);\r\n\r\n return queryObservable$.pipe(\r\n concatMap(tempAssignments => this.enterpriseEnrichmentService.enrichArray(tempAssignments, 'assignorEnterpriseId', 'assignorEnterprise')),\r\n concatMap(tempAssignments => this.enterpriseEnrichmentService.enrichArray(tempAssignments, 'assigneeEnterpriseId', 'assigneeEnterprise')),\r\n concatMap(tempAssignments => this.locationEnrichmentService.enrichArray(tempAssignments, 'primaryReceiptLocation', 'primaryReceiptLocation')),\r\n concatMap(tempAssignments => this.locationEnrichmentService.enrichArray(tempAssignments, 'primaryDeliveryLocation', 'primaryDeliveryLocation')),\r\n concatMap(tempAssignments => this.nomGroupEnrichmentService.enrichArray(tempAssignments, 'assignorAccountId', 'assignorAccount')),\r\n concatMap(tempAssignments => this.nomGroupEnrichmentService.enrichArray(tempAssignments, 'assigneeAccountId', 'assigneeAccount')),\r\n tap(tempAssignments => this.model.searchResults = tempAssignments)\r\n );\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n /**\r\n * For multi-select control, if all items are selected, we want an empty array\r\n */\r\n private getSelectedEnterprises(selection: InputType[]): InputType[] {\r\n return selection.length !== this.model.enterprises.length\r\n ? selection\r\n : [];\r\n }\r\n\r\n private shouldShowVolumeDemand(): boolean {\r\n return this.model.commonPipeline.isContractQuantityTypeVolume();\r\n }\r\n}\r\n","import {BaseViewModel} from \"@model/base-view-model\";\r\nimport {DateTime} from \"@model/date-time\";\r\nimport {ContractDemandEnergyRow} from \"@shared/services/contracts/contract-demand-energy/contract-demand-energy.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {CommonPipeline} from \"@shared/services/common-data/pipelines/common-data-pipelines.service\";\r\n\r\nexport class ContractDemandEnergyModel extends BaseViewModel {\r\n\r\n searchResults: ContractDemandEnergyRow[] = [];\r\n searchParams: ContractDemandEnergySearchParams = new ContractDemandEnergySearchParams();\r\n lastSearchParams: ContractDemandEnergySearchParams;\r\n searchTime: DateTime;\r\n\r\n minGasDay: GasDay;\r\n currentGasDay: GasDay;\r\n\r\n commonPipeline: CommonPipeline;\r\n searchComplete: boolean;\r\n\r\n clearSearchResults() {\r\n this.searchResults = [];\r\n this.searchTime = undefined;\r\n this.lastSearchParams = undefined;\r\n }\r\n}\r\n\r\nexport class ContractDemandEnergySearchParams {\r\n fromGasDay: GasDay;\r\n toGasDay: GasDay;\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {ContractsResourceService} from \"@shared/resources/contracts-resource.service\";\r\nimport {forkJoin, Observable} from \"rxjs\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {concatMap, map} from \"rxjs/operators\";\r\nimport {ContractDemandEnergySearchParams} from \"app/gcts/contracts/contract-demand-energy/contract-demand-energy.model\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {LocationEnrichmentService} from \"@shared/services/enrichment/location-enrichment.service\";\r\nimport {LocationService} from \"@shared/services/common-data/location/location.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ContractDemandEnergyService {\r\n\r\n constructor(private contractsResource: ContractsResourceService,\r\n private enterpriseEnrichmentService: EnterpriseEnrichmentService,\r\n private enterpriseService: EnterpriseService,\r\n private locationEnrichmentService: LocationEnrichmentService,\r\n private commonDataLocationService: LocationService) {\r\n enterpriseEnrichmentService.setEnrichmentResource(this.enterpriseService);\r\n locationEnrichmentService.setEnrichmentResource(commonDataLocationService);\r\n }\r\n\r\n public query(searchParams: ContractDemandEnergySearchParams): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.setGasDay(searchParams.fromGasDay, 'fromGasDay');\r\n params.setGasDay(searchParams.toGasDay, 'toGasDay');\r\n return this.contractsResource.get('/cdeReport', true, params).pipe(\r\n concatMap(response => this.enterpriseEnrichmentService.enrichArrayAll(response, 'serviceRequesterId')),\r\n concatMap(response => this.locationEnrichmentService.enrichArrayAll(response, 'receiptLocationId', 'receiptLocation')),\r\n concatMap(response => this.locationEnrichmentService.enrichArrayAll(response, 'deliveryLocationId', 'deliveryLocation')),\r\n map(response => ContractDemandEnergyRow.create(response)));\r\n }\r\n\r\n public loadEnterpriseAndLocationCache(): Observable {\r\n const ent$ = this.enterpriseEnrichmentService.enrichArrayAll([], '');\r\n const loc$ = this.locationEnrichmentService.enrichArrayAll([], '');\r\n return forkJoin([ent$, loc$]);\r\n }\r\n}\r\n\r\ninterface IContractDemandEnergyResponse {\r\n contractNum: number;\r\n displayName: string;\r\n serviceType: string;\r\n contractStartGasDay: string;\r\n contractEndGasDay: string;\r\n receiptLocationName: string;\r\n deliveryLocationName: string;\r\n quantity: number;\r\n volumeDemand: number;\r\n contractPrice: number;\r\n priceStartGasDay: string;\r\n priceEndGasDay: string;\r\n currentToll: number;\r\n}\r\n\r\nexport class ContractDemandEnergyRow {\r\n contractNumber: number;\r\n serviceRequester: string;\r\n serviceType: string;\r\n contractStartDate: string;\r\n contractEndDate: string;\r\n primaryReceiptLocation: string;\r\n primaryDeliveryLocation: string;\r\n quantity: number;\r\n volumeDemand: number;\r\n contractMonthlyPrice: number;\r\n priceStartDate: string;\r\n priceEndDate: string;\r\n currentTariffMonthlyPrice: number;\r\n\r\n formatGasDay(day: string): string {\r\n return GasDay.parse(day).toDisplayFormat()\r\n }\r\n\r\n static create(response: IContractDemandEnergyResponse[]): ContractDemandEnergyRow[] {\r\n const rows: ContractDemandEnergyRow[] = [];\r\n for (const item of response) {\r\n const row = new ContractDemandEnergyRow();\r\n row.contractNumber = item.contractNum;\r\n row.serviceRequester = item.displayName;\r\n row.serviceType = item.serviceType;\r\n row.contractStartDate = row.formatGasDay(item.contractStartGasDay);\r\n row.contractEndDate = row.formatGasDay(item.contractEndGasDay);\r\n row.primaryReceiptLocation = item.receiptLocationName;\r\n row.primaryDeliveryLocation = item.deliveryLocationName;\r\n row.quantity = item.quantity;\r\n row.volumeDemand = item.volumeDemand;\r\n row.contractMonthlyPrice = item.contractPrice;\r\n row.priceStartDate = row.formatGasDay(item.priceStartGasDay);\r\n row.priceEndDate = row.formatGasDay(item.priceEndGasDay);\r\n row.currentTariffMonthlyPrice = item.currentToll;\r\n rows.push(row);\r\n }\r\n return rows;\r\n }\r\n}\r\n","\r\n
\r\n {{ getTitle() }}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n -\r\n +\r\n Filters\r\n 0\" style=\"font-weight: normal;\">\r\n :\r\n From Date: {{model.lastSearchParams?.fromGasDay}}\r\n To Date: {{model.lastSearchParams?.toGasDay}}\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n\r\n
0\">\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.fromGasDay | gasDayFormat }}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.toGasDay | gasDayFormat }}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n Number of Records: {{model.searchResults?.length}}\r\n As of: {{ model.searchTime | dateTimeFormat }}\r\n
0\" class=\"pull-right\">\r\n Export CSV\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {forkJoin, Observable, of} from \"rxjs\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {ContractDemandEnergyModel, ContractDemandEnergySearchParams} from \"app/gcts/contracts/contract-demand-energy/contract-demand-energy.model\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {tap} from \"rxjs/operators\";\r\nimport {CommonDataGasdayService, ServerTimeData} from \"@shared/services/common-data/common-data-gasday/common-data-gasday.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport * as _ from \"lodash\";\r\nimport {ContractDemandEnergyRow, ContractDemandEnergyService} from \"@shared/services/contracts/contract-demand-energy/contract-demand-energy.service\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {CommonDataPipelinesService, CommonPipeline} from \"@shared/services/common-data/pipelines/common-data-pipelines.service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\n\r\n@Component({\r\n selector: 'app-contract-demand-energy',\r\n templateUrl: './contract-demand-energy.component.html',\r\n styleUrls: ['./contract-demand-energy.component.css']\r\n})\r\nexport class ContractDemandEnergyComponent extends BaseSearchComponent implements OnInit {\r\n\r\n model: ContractDemandEnergyModel = new ContractDemandEnergyModel();\r\n\r\n constructor(protected appService: AppService,\r\n protected router: Router,\r\n protected activatedRoute: ActivatedRoute,\r\n protected alertService: AlertService,\r\n private commonDataGasdayService: CommonDataGasdayService,\r\n private contractDemandEnergyService : ContractDemandEnergyService,\r\n private commonDataBillingMonthService: CommonDataBillingMonthService,\r\n private fileService: FileService,\r\n private sessionService: SessionService,\r\n private commonPipelineService: CommonDataPipelinesService) {\r\n super('Contract Demand Energy (CDE)', appService, activatedRoute, router, alertService);\r\n }\r\n\r\n public getUnits() : string {\r\n return this.model.commonPipeline?.isContractQuantityTypeVolume() ? 'Mcf' : 'GJ';\r\n }\r\n protected areParamsValid(params: Params): boolean {\r\n return ParamValidator.Standard().isValid(params);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {};\r\n params['fromDate'] = this.model.searchParams.fromGasDay;\r\n params['toDate'] = this.model.searchParams.toGasDay;\r\n return params;\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n const pipeline$ = this.queryCommonPipeline();\r\n const cache$ = this.contractDemandEnergyService.loadEnterpriseAndLocationCache();\r\n const currentGasDay$ = this.commonDataGasdayService.getServerTimeData()\r\n .pipe(tap(time => this.model.currentGasDay = GasDay.fromDateTime(time.serverTime)));\r\n const getOldestBillingMonth$ = this.commonDataBillingMonthService.getOldest()\r\n .pipe(tap(oldestBillingMonth => this.model.minGasDay = oldestBillingMonth.firstDayOfMonth));\r\n return forkJoin([pipeline$, currentGasDay$, getOldestBillingMonth$, cache$]);\r\n }\r\n\r\n private queryCommonPipeline(): Observable{\r\n return this.commonPipelineService.getPipeline(this.sessionService.getPipeline().code)\r\n .pipe(\r\n tap(commonPipeline => this.model.commonPipeline = commonPipeline)\r\n );\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n return of(null);\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n const time$ = this.commonDataGasdayService.getServerTimeData()\r\n .pipe(tap((time:ServerTimeData) => this.model.searchTime = time.serverTime));\r\n const results$ = this.contractDemandEnergyService.query(this.model.searchParams)\r\n .pipe(tap(results => this.model.searchResults = results));\r\n return forkJoin([time$, results$]);\r\n }\r\n\r\n protected searchCompleted() {\r\n super.searchCompleted();\r\n this.model.searchComplete = true;\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n this.model.searchComplete = false;\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams = new ContractDemandEnergySearchParams();\r\n this.model.searchParams.fromGasDay = this.model.currentGasDay;\r\n this.model.searchParams.toGasDay = this.model.currentGasDay;\r\n this.model.clearSearchResults();\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams = new ContractDemandEnergySearchParams();\r\n this.model.searchParams.fromGasDay = typedParams.asGasDay('fromDate');\r\n this.model.searchParams.toGasDay = typedParams.asGasDay('toDate');\r\n }\r\n\r\n exportCsv(): void {\r\n const csvData = [];\r\n this.model.searchResults.forEach((r: ContractDemandEnergyRow) => {\r\n csvData.push({\r\n contractNumber: r.contractNumber,\r\n serviceRequester: r.serviceRequester,\r\n serviceType: r.serviceType,\r\n contractStartDate: r.contractStartDate,\r\n contractEndDate: r.contractEndDate,\r\n primaryReceiptLocation: r.primaryReceiptLocation,\r\n primaryDeliveryLocation: r.primaryDeliveryLocation,\r\n quantity: r.quantity,\r\n volumeDemand: r.volumeDemand,\r\n contractMonthlyPrice: r.contractMonthlyPrice,\r\n priceStartDate: r.priceStartDate,\r\n priceEndDate: r.priceEndDate,\r\n currentTariffMonthlyPrice: r.currentTariffMonthlyPrice\r\n });\r\n });\r\n csvData.sort((a, b) => a.serviceRequester.localeCompare(b.serviceRequester));\r\n const fileName = `ContractDemandEnergy_${this.model.searchParams.fromGasDay.toDisplayFormat()}_${this.model.searchParams.toGasDay.toDisplayFormat()}.csv`;\r\n const headers = ['Contract #','Service Requester','Service Type','Contract Start Date','Contract End Date','Primary Receipt Location'\r\n ,'Primary Delivery Location','Quantity (GJ/day)',`Contract Monthly Price ($/${this.getUnits()}/Month)`,'Price Start Date','Price End Date',`Current Tariff Monthly Price ($/${this.getUnits()}/Month)`];\r\n const columns = ['contractNumber','serviceRequester','serviceType','contractStartDate','contractEndDate','primaryReceiptLocation','primaryDeliveryLocation'\r\n ,'quantity','contractMonthlyPrice','priceStartDate','priceEndDate','currentTariffMonthlyPrice'];\r\n\r\n if (this.model.commonPipeline?.isContractQuantityTypeVolume()){\r\n headers.splice(7, 0, 'Volume Demand (Mcf/day)');\r\n columns.splice(7, 0, 'volumeDemand');\r\n }\r\n\r\n this.fileService.downloadCsvFile(fileName, csvData, headers, columns);\r\n }\r\n}\r\n","import {BaseViewModel} from \"@model/base-view-model\";\r\n\r\nexport class CoverPageModel extends BaseViewModel {\r\n fileName: string;\r\n lastFileName: string;\r\n fileError: string;\r\n isValid: boolean;\r\n title: string;\r\n}\r\n\r\nexport class CoverPageDetailModel extends CoverPageModel {\r\n coverPageDetail: CoverPageDetail[];\r\n uploadResult: UploadDetailResult = new UploadDetailResult();\r\n}\r\n\r\nexport class CoverPageContactsModel extends CoverPageModel {\r\n coverPageContacts: CoverPageContacts[];\r\n uploadResult: UploadContactsResult = new UploadContactsResult();\r\n}\r\n\r\nexport class UploadResult {\r\n recordsAdded: number;\r\n recordsRead: number;\r\n recordsWithError: number;\r\n}\r\n\r\nexport class UploadDetailResult extends UploadResult {\r\n detailResults: CoverPageDetailError[];\r\n\r\n static create(response): UploadDetailResult {\r\n const result = new UploadDetailResult();\r\n result.detailResults = CoverPageDetailError.createError(response.detailResults);\r\n result.recordsAdded = response.recordsAdded;\r\n result.recordsRead = response.recordsRead;\r\n result.recordsWithError = response.recordsWithError;\r\n return result;\r\n }\r\n}\r\n\r\nexport class UploadContactsResult extends UploadResult {\r\n contactsResults: CoverPageContactsError[];\r\n\r\n static create(response): UploadContactsResult {\r\n const result = new UploadContactsResult();\r\n result.contactsResults = CoverPageContactsError.createError(response.detailResults);\r\n result.recordsAdded = response.recordsAdded;\r\n result.recordsRead = response.recordsRead;\r\n result.recordsWithError = response.recordsWithError;\r\n return result;\r\n }\r\n}\r\n\r\nexport class CoverPageDetail {\r\n lineNumber: number;\r\n bankLine1: string;\r\n bankLine2: string;\r\n bankLine3: string;\r\n bankLine4: string;\r\n bankCode: string;\r\n bankTransit: string;\r\n bankAccount: string;\r\n swiftCode: string;\r\n payableTo: string;\r\n mailLine1: string;\r\n mailLine2: string;\r\n mailLine3: string;\r\n mailLine4: string;\r\n mailAttention: string;\r\n mainSwitchboard: string;\r\n gstRegistrationNumber: string;\r\n logoLine1: string;\r\n logoLine2: string;\r\n tariffSectionFootnote: string;\r\n\r\n static create(line: string[], index: number): CoverPageDetail {\r\n const detail: CoverPageDetail = new CoverPageDetail();\r\n for (const item of line) {\r\n detail.lineNumber = index;\r\n let i = 0;\r\n detail.bankLine1 = line[i];\r\n detail.bankLine2 = line[++i];\r\n detail.bankLine3 = line[++i];\r\n detail.bankLine4 = line[++i];\r\n detail.bankCode = line[++i];\r\n detail.bankTransit = line[++i];\r\n detail.bankAccount = line[++i];\r\n detail.swiftCode = line[++i];\r\n detail.payableTo = line[++i];\r\n detail.mailLine1 = line[++i];\r\n detail.mailLine2 = line[++i];\r\n detail.mailLine3 = line[++i];\r\n detail.mailLine4 = line[++i];\r\n detail.mailAttention = line[++i];\r\n detail.mainSwitchboard = line[++i];\r\n detail.gstRegistrationNumber = line[++i];\r\n detail.logoLine1 = line[++i];\r\n detail.logoLine2 = line[++i];\r\n detail.tariffSectionFootnote = line[++i];\r\n }\r\n return detail;\r\n }\r\n}\r\n\r\nexport class CoverPageDetailError extends CoverPageDetail {\r\n severity: string;\r\n message: string;\r\n\r\n static createError(json): CoverPageDetailError[] {\r\n const errors: CoverPageDetailError[] = [];\r\n for (const item of json) {\r\n const error = new CoverPageDetailError();\r\n Object.assign(error, item);\r\n errors.push(error);\r\n }\r\n return errors;\r\n }\r\n}\r\n\r\nexport class CoverPageContacts {\r\n lineNumber: number;\r\n typeName: string;\r\n name: string;\r\n phone: string;\r\n fax: string;\r\n email: string;\r\n sortOrder: string;\r\n\r\n static create(line: string[], index: number): CoverPageContacts {\r\n const detail: CoverPageContacts = new CoverPageContacts();\r\n for (const item of line) {\r\n detail.lineNumber = index;\r\n let i = 0;\r\n detail.typeName = line[i++];\r\n detail.name = line[i++];\r\n detail.phone = line[i++];\r\n detail.fax = line[i++];\r\n detail.email = line[i++];\r\n detail.sortOrder = line[i++];\r\n }\r\n return detail;\r\n }\r\n}\r\n\r\nexport class CoverPageContactsError extends CoverPageContacts {\r\n severity: string;\r\n message: string;\r\n\r\n static createError(json): CoverPageContactsError[] {\r\n const errors: CoverPageContactsError[] = [];\r\n for (const item of json) {\r\n const error = new CoverPageContactsError();\r\n Object.assign(error, item);\r\n errors.push(error);\r\n }\r\n return errors;\r\n }\r\n}\r\n","import {BaseComponent} from \"../../../classes/base-component\";\r\nimport {CoverPageModel} from \"./cover-page.model\";\r\nimport {AppService} from \"../../webapp/app/app.service\";\r\nimport {FileService} from \"../../webapp/file-service/file.service\";\r\nimport {OnInit} from \"@angular/core\";\r\n\r\nexport abstract class CoverPageBaseComponent extends BaseComponent implements OnInit {\r\n\r\n abstract model: CoverPageModel;\r\n\r\n constructor(protected appService: AppService,\r\n protected fileService: FileService) {\r\n super(appService);\r\n this.appService.hideMenu();\r\n }\r\n\r\n ngOnInit() {\r\n super.setTitle(this.model.title);\r\n }\r\n\r\n isValidFile(): boolean {\r\n return this.model.fileName && this.model.isValid;\r\n }\r\n\r\n resetClicked() {\r\n this.model.fileName = null;\r\n this.model.isValid = false;\r\n this.model.fileError = '';\r\n }\r\n\r\n fileChosen(e) {\r\n const input = e.target;\r\n if (input.files.length > 0) {\r\n this.model.fileName = input.files[0].name;\r\n this.model.isValid = false;\r\n this.model.fileError = '';\r\n const reader = new FileReader();\r\n reader.onload = (fileEvent: any) => this.readFile(fileEvent.target.result);\r\n reader.readAsText(input.files[0]);\r\n }\r\n }\r\n\r\n abstract get FILE_COLUMNS(): number;\r\n\r\n abstract processFileLines(lines: string[][]);\r\n\r\n protected readFile(data: string) {\r\n this.fileService.parseCsvWithoutHeader(data, results => {\r\n const lines: string[][] = results.data;\r\n if (lines.length < 2) {\r\n this.model.fileError = 'No records found in selected file';\r\n return;\r\n }\r\n for (let i=1; i < lines.length; i++) {\r\n if (lines[i].length != this.FILE_COLUMNS) {\r\n this.model.fileError = `Line number ${i} should have ${this.FILE_COLUMNS} columns but found ${lines[i].length}`;\r\n return;\r\n }\r\n }\r\n this.model.isValid = true;\r\n this.model.lastFileName = this.model.fileName;\r\n lines.shift();\r\n this.processFileLines(lines);\r\n });\r\n }\r\n\r\n onCellPrepared(e) {\r\n if (e.rowType === 'data' && e.column.dataField === 'message') {\r\n if (e.data.severity === 'Error') {\r\n e.cellElement.style.backgroundColor = \"#f2dede\";\r\n } else {\r\n e.cellElement.style.backgroundColor = \"#ebf9ff\";\r\n }\r\n }\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n CSV Date File: {{model.fileName}}\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n Browse...\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n CSV Filename: {{model.lastFileName}}\r\n \r\n Cover Page Details Read: {{model.uploadResult.recordsRead}},\r\n Cover Page Details Added: {{model.uploadResult.recordsAdded}},\r\n Cover Page Details With Errors: {{model.uploadResult.recordsWithError}}\r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n","import {Component} from '@angular/core';\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {CoverPageDetail, CoverPageDetailModel, UploadDetailResult} from \"@shared/services/contracts/cover-page/cover-page.model\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {InvoicingResourceService} from \"@shared/resources/invoicing-resource.service\";\r\nimport {CoverPageBaseComponent} from \"@shared/services/contracts/cover-page/cover-page-base\";\r\n\r\n@Component({\r\n selector: 'app-load-cover-page',\r\n templateUrl: './cover-page-detail.component.html',\r\n styleUrls: ['../../../shared/services/contracts/cover-page/cover-page.css']\r\n})\r\nexport class CoverPageDetailComponent extends CoverPageBaseComponent {\r\n\r\n model: CoverPageDetailModel = new CoverPageDetailModel();\r\n\r\n constructor(protected appService: AppService,\r\n protected fileService: FileService,\r\n protected invoicingResource: InvoicingResourceService) {\r\n super(appService, fileService);\r\n this.model.title = 'Load Cover Page Detail';\r\n }\r\n\r\n resetClicked() {\r\n super.resetClicked()\r\n this.model.uploadResult.detailResults = null;\r\n }\r\n\r\n uploadClicked() {\r\n this.model.fileName = null;\r\n this.model.fileError = 'No file chosen';\r\n this.model.isValid = false;\r\n this.invoicingResource.post('/coverpage/detail', {details: this.model.coverPageDetail})\r\n .subscribe(response => {\r\n this.model.uploadResult = UploadDetailResult.create(response);\r\n });\r\n }\r\n\r\n get FILE_COLUMNS() {return 19}\r\n\r\n processFileLines(lines: string[][]) {\r\n this.model.coverPageDetail = lines.map((line, index) => CoverPageDetail.create(line, index));\r\n }\r\n\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n CSV Date File: {{model.fileName}}\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n Browse...\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n CSV Filename: {{model.lastFileName}}\r\n \r\n Cover Page Contacts Read: {{model.uploadResult.recordsRead}},\r\n Cover Page Contacts Added: {{model.uploadResult.recordsAdded}},\r\n Cover Page Contacts With Errors: {{model.uploadResult.recordsWithError}}\r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n","import {Component} from '@angular/core';\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {CoverPageContacts, CoverPageContactsModel, UploadContactsResult} from \"@shared/services/contracts/cover-page/cover-page.model\";\r\nimport {CoverPageBaseComponent} from \"@shared/services/contracts/cover-page/cover-page-base\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {InvoicingResourceService} from \"@shared/resources/invoicing-resource.service\";\r\n\r\n@Component({\r\n selector: 'app-cover-page-contacts',\r\n templateUrl: './cover-page-contacts.component.html',\r\n styleUrls: ['../../../shared/services/contracts/cover-page/cover-page.css']\r\n})\r\nexport class CoverPageContactsComponent extends CoverPageBaseComponent {\r\n\r\n model: CoverPageContactsModel = new CoverPageContactsModel();\r\n\r\n constructor(protected appService: AppService,\r\n protected fileService: FileService,\r\n protected invoicingResource: InvoicingResourceService) {\r\n super(appService, fileService);\r\n this.model.title = 'Load Cover Page Contacts';\r\n }\r\n\r\n resetClicked() {\r\n super.resetClicked()\r\n this.model.uploadResult.contactsResults = null;\r\n }\r\n\r\n uploadClicked() {\r\n this.model.fileName = '';\r\n this.model.fileError = 'No file chosen';\r\n this.model.isValid = false;\r\n this.invoicingResource.post('/coverpage/contacts', {details: this.model.coverPageContacts})\r\n .subscribe(response => {\r\n this.model.uploadResult = UploadContactsResult.create(response);\r\n });\r\n }\r\n\r\n get FILE_COLUMNS() {return 6}\r\n\r\n processFileLines(lines: string[][]) {\r\n this.model.coverPageContacts = lines.map((line, index) => CoverPageContacts.create(line, index));\r\n }\r\n\r\n}\r\n","import {BaseViewModel} from \"@model/base-view-model\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {DateTime} from \"@model/date-time\";\r\nimport {BillingMonth} from \"@model/billing-month\";\r\nimport {Enterprise} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {ContactPrice} from \"@shared/services/accounts/contract-pricing/contract-pricing.service\";\r\n\r\nexport class ContractPricingModel extends BaseViewModel {\r\n searchParams: ContractPricingSearchParams = new ContractPricingSearchParams();\r\n lastSearchParams: ContractPricingSearchParams;\r\n searchResults: ContactPrice[];\r\n customers: Enterprise[];\r\n serviceTypes: [];\r\n contractNumbers: any[];\r\n searchTime: DateTime;\r\n openBillingMonth: BillingMonth;\r\n minGasDay: GasDay;\r\n contractNumberDisabled: boolean = true;\r\n isEditing: boolean = false;\r\n canSubmit: boolean = false;\r\n\r\n clearSearchResults() {\r\n this.searchResults = [];\r\n this.searchTime = null;\r\n this.lastSearchParams = null;\r\n this.contractNumberDisabled = true;\r\n this.searchParams = new ContractPricingSearchParams();\r\n }\r\n}\r\n\r\nexport class ContractPricingSearchParams {\r\n customerId?: number;\r\n serviceType?: string;\r\n startDate: GasDay;\r\n endDate: GasDay;\r\n contractNumber?: number;\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {ContractsResourceService} from \"@shared/resources/contracts-resource.service\";\r\nimport {Observable} from \"rxjs\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {concatMap, map} from \"rxjs/operators\";\r\nimport {ContractPricingSearchParams} from \"app/gcts/contracts/contract-pricing/contract-pricing.model\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {LocationEnrichmentService} from \"@shared/services/enrichment/location-enrichment.service\";\r\nimport {LocationService} from \"@shared/services/common-data/location/location.service\";\r\nimport * as _ from \"lodash\";\r\n\r\n@Injectable()\r\nexport class ContractPricingService {\r\n\r\n constructor(private contractsResource: ContractsResourceService,\r\n private enterpriseEnrichmentService: EnterpriseEnrichmentService,\r\n private enterpriseService: EnterpriseService,\r\n private locationEnrichmentService: LocationEnrichmentService,\r\n private locationService: LocationService) {\r\n enterpriseEnrichmentService.setEnrichmentResource(this.enterpriseService);\r\n locationEnrichmentService.setEnrichmentResource(locationService);\r\n }\r\n\r\n public query(searchParams: ContractPricingSearchParams): Observable {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n if(!isNaN(searchParams.customerId)) params.setNumber('customerId', searchParams.customerId);\r\n params.set('serviceType', searchParams.serviceType);\r\n params.setGasDay(searchParams.startDate, 'fromGasDay');\r\n params.setGasDay(searchParams.endDate, 'toGasDay');\r\n if (!isNaN(searchParams.contractNumber)) params.setNumber('contractNumber', searchParams.contractNumber);\r\n return this.contractsResource.get('/contractPrices', true, params).pipe(\r\n concatMap(response => this.enterpriseEnrichmentService.enrichArrayAll(response, 'customerId', 'customer')),\r\n concatMap(response => this.locationEnrichmentService.enrichArrayAll(response, 'receiptLocationId', 'receiptLocation')),\r\n concatMap(response => this.locationEnrichmentService.enrichArrayAll(response, 'deliveryLocationId', 'deliveryLocation')),\r\n map(response => ContactPrice.create(response)));\r\n }\r\n\r\n public save(grid: ContactPrice[], lastSearchParams: ContractPricingSearchParams): Observable {\r\n const updates = ContractPriceUpdate.create(grid, lastSearchParams);\r\n return this.contractsResource.post('/contractPrices', updates, true);\r\n }\r\n\r\n public loadLocationCache(): Observable {\r\n return this.locationEnrichmentService.enrichArrayAll([], '');\r\n }\r\n}\r\n\r\nexport class ContactPrice {\r\n customer: string;\r\n customerId: number;\r\n customerDisplayName: string;\r\n contractNumber: number;\r\n versionNumber: number;\r\n versionId: number;\r\n serviceType: string;\r\n nomGroup: string;\r\n contractStartDate: string;\r\n contractEndDate: string;\r\n receiptLocation: string;\r\n deliveryLocation: string;\r\n priceStartDate: string;\r\n originalPriceStartDate: string;\r\n priceEndDate: string;\r\n originalPriceEndDate: string;\r\n monthlyPrice: number;\r\n monthlyPriceId: number;\r\n dailyPrice: number;\r\n dailyPriceId: number;\r\n priceType: string;\r\n quantity: number;\r\n validationMessage: string;\r\n added: boolean = false;\r\n deleted: boolean = false;\r\n addUpdateRequest: boolean = false;\r\n\r\n formatGasDay(day: string): string {\r\n return GasDay.parse(day).toDisplayFormat()\r\n }\r\n\r\n static create(response: IContractPricingResponse[]): ContactPrice[] {\r\n const prices: ContactPrice[] = [];\r\n for (const r of response) {\r\n const price = new ContactPrice();\r\n price.customer = r.customerMnemonic;\r\n price.customerId = r.customerId;\r\n price.customerDisplayName = r.customerDisplayName;\r\n price.contractNumber = r.contractNumber;\r\n price.versionNumber = r.contractVersionNumber;\r\n price.versionId = r.contractVersionId;\r\n price.serviceType = r.serviceType;\r\n price.nomGroup = r.nomGroupId;\r\n price.contractStartDate = price.formatGasDay(r.startGasDay);\r\n price.contractEndDate = price.formatGasDay(r.endGasDay);\r\n price.receiptLocation = r.receiptLocationName;\r\n price.deliveryLocation = r.deliveryLocationName;\r\n if (r.prices.length == 0) prices.push(price);\r\n else {\r\n for (const priceData of r.prices) {\r\n const expandedPrice = _.clone(price);\r\n expandedPrice.priceStartDate = price.formatGasDay(priceData.startGasDay);\r\n expandedPrice.originalPriceStartDate = expandedPrice.priceStartDate;\r\n expandedPrice.priceEndDate = price.formatGasDay(priceData.endGasDay);\r\n expandedPrice.originalPriceEndDate = expandedPrice.priceEndDate;\r\n expandedPrice.dailyPrice = priceData.dailyPrice;\r\n expandedPrice.dailyPriceId = priceData.contractPriceDailyId;\r\n expandedPrice.monthlyPrice = priceData.monthlyPrice;\r\n expandedPrice.monthlyPriceId = priceData.contractPriceMonthlyId;\r\n expandedPrice.priceType = priceData.priceType;\r\n expandedPrice.quantity = priceData.quantity;\r\n prices.push(expandedPrice);\r\n }\r\n }\r\n }\r\n return _.orderBy(prices, ['customer', 'contractNumber', 'contractStartDate']);\r\n }\r\n}\r\n\r\ninterface IContractPricingResponse {\r\n customerId: number;\r\n customerMnemonic: string;\r\n customerDisplayName: string;\r\n contractNumber: number;\r\n contractVersionNumber: number;\r\n contractVersionId: number;\r\n serviceType: string;\r\n nomGroupId: string;\r\n startGasDay: string;\r\n endGasDay: string;\r\n receiptLocationId: number;\r\n receiptLocationName: string;\r\n deliveryLocationId: number;\r\n deliveryLocationName: string;\r\n validationMessage: string;\r\n prices: IContractPrice[];\r\n}\r\n\r\ninterface IContractPrice {\r\n startGasDay: string;\r\n endGasDay: string;\r\n dailyPrice: number;\r\n monthlyPrice: number;\r\n priceType: string;\r\n contractPriceDailyId: number;\r\n contractPriceMonthlyId: number;\r\n quantity: number;\r\n validationMessage: string;\r\n}\r\n\r\nclass ContractPriceUpdate {\r\n enterpriseId: number;\r\n contractNumber: number;\r\n contractVersionNumber: number;\r\n contractVersionId: number;\r\n fromGasDay: string;\r\n toGasDay: string;\r\n prices: PriceUpdate[] = [];\r\n\r\n formatGasDay(day: string): string {\r\n if (day == null) return null;\r\n return GasDay.parse(day).toString()\r\n }\r\n\r\n populateAddedRows(grid: ContactPrice[], lastSearchParams: ContractPricingSearchParams) {\r\n let addedRowId = -1;\r\n for (const p of grid) {\r\n if (!p.added && p.dailyPriceId) continue;\r\n p.dailyPriceId = addedRowId;\r\n p.monthlyPriceId = addedRowId;\r\n addedRowId--;\r\n p.originalPriceStartDate = lastSearchParams.startDate.toString();\r\n p.originalPriceEndDate = lastSearchParams.endDate.toString();\r\n }\r\n }\r\n\r\n static create(grid: ContactPrice[], lastSearchParams: ContractPricingSearchParams): ContractPriceUpdate {\r\n const price = new ContractPriceUpdate();\r\n price.enterpriseId = grid[0].customerId;\r\n price.contractNumber = grid[0].contractNumber;\r\n price.contractVersionNumber = grid[0].versionNumber;\r\n price.contractVersionId = grid[0].versionId;\r\n price.fromGasDay = lastSearchParams.startDate.toString();\r\n price.toGasDay = lastSearchParams.endDate.toString();\r\n price.populateAddedRows(grid, lastSearchParams);\r\n for (const p of grid) {\r\n if (p.added && p.deleted) continue;\r\n const update = new PriceUpdate();\r\n update.addUpdateRequest = p.addUpdateRequest;\r\n update.deleteRequest = p.deleted;\r\n update.contractPriceDailyId = p.dailyPriceId;\r\n update.contractPriceMonthlyId = p.monthlyPriceId;\r\n update.dailyPrice = p.dailyPrice;\r\n update.monthlyPrice = p.monthlyPrice;\r\n update.originalPriceStartGasDay = price.formatGasDay(p.originalPriceStartDate);\r\n update.originalPriceEndGasDay = price.formatGasDay(p.originalPriceEndDate);\r\n update.priceStartGasDay = price.formatGasDay(p.priceStartDate);\r\n update.priceEndGasDay = price.formatGasDay(p.priceEndDate);\r\n update.priceType = p.priceType;\r\n price.prices.push(update);\r\n }\r\n return price;\r\n }\r\n}\r\n\r\nclass PriceUpdate {\r\n addUpdateRequest: boolean = false;\r\n deleteRequest: boolean = false;\r\n contractPriceDailyId: number;\r\n contractPriceMonthlyId: number;\r\n dailyPrice: number;\r\n monthlyPrice: number;\r\n originalPriceEndGasDay: string;\r\n originalPriceStartGasDay: string;\r\n priceEndGasDay: string;\r\n priceStartGasDay: string;\r\n priceType: string;\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n -\r\n +\r\n Filters\r\n 0\" style=\"font-weight: normal;\">\r\n :\r\n Customer: {{getCustomer()}}\r\n Service Type: {{model.lastSearchParams?.serviceType == null ? 'All' : model.lastSearchParams.serviceType}}\r\n Start Date: {{model.lastSearchParams?.startDate}}\r\n End Date: {{model.lastSearchParams?.endDate}}\r\n Contract #: {{model.lastSearchParams.contractNumber}}\r\n \r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
0\">\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
{{getCustomer()}}
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.serviceType == null ? 'All' : model.lastSearchParams.serviceType}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.startDate.toDisplayFormat()}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{model.lastSearchParams?.endDate.toDisplayFormat()}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
{{getContractNumber()}}
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n Number of Records: {{numberOfRecords()}}\r\n As of: {{model.searchTime | dateTimeFormat}}\r\n
0\" class=\"pull-right\">\r\n Export CSV\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n","import {Component, ViewChild} from '@angular/core';\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {forkJoin, Observable, of} from \"rxjs\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {ContractPricingModel, ContractPricingSearchParams} from \"app/gcts/contracts/contract-pricing/contract-pricing.model\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {concatMap, mergeMap, tap} from \"rxjs/operators\";\r\nimport {CommonDataBillingMonthService} from \"@shared/services/common-data/common-data-billing-month/common-data-billing-month.service\";\r\nimport {AccountsCustomerSearchParams, AccountsEnterpriseService} from \"@shared/services/accounts/accounts-enterprise/accounts-enterprise.service\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {Enterprise, EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {AccountsBillableServicesService} from \"@shared/services/accounts/billable-service/accounts-billable-services.service\";\r\nimport * as _ from \"lodash\";\r\nimport {CommonDataGasdayService, ServerTimeData} from \"@shared/services/common-data/common-data-gasday/common-data-gasday.service\";\r\nimport {ContractPricingService} from \"@shared/services/accounts/contract-pricing/contract-pricing.service\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {ContractsService} from \"@shared/services/contracts/contracts/contracts.service\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {ModalComponent} from \"@shared/components/modal/modal.component\";\r\nimport {YesNoCancelModalService} from \"@shared/services/webapp/yes-no-cancel-modal/yes-no-cancel-modal.service\";\r\nimport {YesNoModalOptions} from \"@shared/services/webapp/modal-options/yes-no-modal-options\";\r\nimport {SelectedModalOption} from \"@shared/services/webapp/modal-options/selected-modal-option\";\r\nimport {DataGridHooks} from \"@shared/devexpress/datagrid-hooks\";\r\n\r\n@Component({\r\n selector: 'app-contract-pricing',\r\n templateUrl: './contract-pricing.component.html',\r\n styleUrls: ['./contract-pricing.component.css']\r\n})\r\nexport class ContractPricingComponent extends BaseSearchComponent {\r\n\r\n model: ContractPricingModel = new ContractPricingModel();\r\n\r\n @ViewChild(DxDataGridComponent) dataGrid: DxDataGridComponent;\r\n @ViewChild(ModalComponent) cancelModal: ModalComponent;\r\n\r\n constructor(protected appService: AppService,\r\n protected router: Router,\r\n protected activatedRoute: ActivatedRoute,\r\n protected alertService: AlertService,\r\n private billingMonthService: CommonDataBillingMonthService,\r\n private accountsEnterpriseService: AccountsEnterpriseService,\r\n private enterpriseEnrichmentService: EnterpriseEnrichmentService,\r\n private enterpriseService: EnterpriseService,\r\n private billableServicesService: AccountsBillableServicesService,\r\n private gasDayService: CommonDataGasdayService,\r\n private service: ContractPricingService,\r\n private fileService: FileService,\r\n private contractsService: ContractsService,\r\n private modalService: YesNoCancelModalService) {\r\n super('Contract Pricing', appService, activatedRoute, router, alertService);\r\n enterpriseEnrichmentService.setEnrichmentResource(this.enterpriseService);\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return ParamValidator.Standard().isValid(params);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {};\r\n if(!isNaN(this.model.searchParams.customerId)) params['customerId'] = this.model.searchParams.customerId;\r\n params['serviceType'] = this.model.searchParams.serviceType;\r\n params['startDate'] = this.model.searchParams.startDate;\r\n params['endDate'] = this.model.searchParams.endDate;\r\n if(!isNaN(this.model.searchParams.contractNumber)) params['contractNumber'] = this.model.searchParams.contractNumber;\r\n return params;\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n const oldestBillingMonth$ = this.billingMonthService.getOldest()\r\n .pipe(tap(oldestBillingMonth => this.model.minGasDay = oldestBillingMonth.firstDayOfMonth));\r\n const openBillingMonthAndCustomers$ = this.billingMonthService.getOpen()\r\n .pipe(mergeMap(openBillingMonth => {\r\n this.model.openBillingMonth = openBillingMonth;\r\n const params = AccountsCustomerSearchParams.updateablePriceWithDates(openBillingMonth.firstDayOfMonth, openBillingMonth.lastDayOfMonth);\r\n return this.accountsEnterpriseService.queryCustomers(params)\r\n .pipe(concatMap(customerIds => {\r\n const customers = customerIds.map(id => Enterprise.createWithId(id));\r\n return this.enterpriseEnrichmentService.enrichArrayAll(customers, 'cid');\r\n }),\r\n tap(customers => this.model.customers = customers.sort((a, b) => a.shortName.localeCompare(b.shortName))));\r\n }));\r\n const billableServices$ = this.billableServicesService.getOnlyUpdateablePrice(true)\r\n .pipe(tap(services => this.model.serviceTypes = services.map(s => {return {name: s}})))\r\n const locationCache$ = this.service.loadLocationCache();\r\n return forkJoin([oldestBillingMonth$, openBillingMonthAndCustomers$, billableServices$, locationCache$]);\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n return of(null);\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n const time$ = this.gasDayService.getServerTimeData()\r\n .pipe(tap((time:ServerTimeData) => this.model.searchTime = time.serverTime));\r\n const prices$ = this.service.query(this.model.searchParams)\r\n .pipe(tap(prices => this.model.searchResults = prices));\r\n const contractNumbers$ = this.loadContractNumbers();\r\n return forkJoin([prices$, time$, contractNumbers$]);\r\n }\r\n\r\n protected resetSortOrder(): void { }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.clearSearchResults();\r\n this.model.searchParams.startDate = this.model.openBillingMonth.firstDayOfMonth;\r\n this.model.searchParams.endDate = this.model.openBillingMonth.lastDayOfMonth;\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams = new ContractPricingSearchParams();\r\n this.model.searchParams.customerId = typedParams.asNumber('customerId');\r\n this.model.searchParams.serviceType = typedParams.asString('serviceType');\r\n this.model.searchParams.startDate = typedParams.asGasDay('startDate');\r\n this.model.searchParams.endDate = typedParams.asGasDay('endDate');\r\n this.model.searchParams.contractNumber = typedParams.asNumber('contractNumber');\r\n }\r\n\r\n exportCsv() {\r\n const customer = this.model.searchParams.contractNumber ? this.model.searchResults[0].customer : 'Any';\r\n const startDate = this.model.searchParams.startDate.toDisplayFormat();\r\n const endDate = this.model.searchParams.endDate.toDisplayFormat();\r\n const fileName = `ContractPricing_${customer}_${startDate}_${endDate}.csv`;\r\n const columns = ['customerDisplayName','contractNumber','versionNumber','serviceType','nomGroup','contractStartDate',\r\n 'contractEndDate','receiptLocation','deliveryLocation','quantity','priceStartDate','priceEndDate',\r\n 'monthlyPrice','dailyPrice','priceType'];\r\n const headers = ['Customer','Contract #','Version #','Service Type','Nom Group','Contract Start Date',\r\n 'Contract End Date','Receipt Location','Delivery Location','Quantity','Price Start Date',\r\n 'Price End Date','Monthly Price','Daily Price','Price Type'];\r\n this.fileService.downloadCsvFile(fileName, this.model.searchResults, headers, columns);\r\n }\r\n\r\n getCustomer() {\r\n const customer = this.model.customers.find(c => c.cid === this.model.lastSearchParams.customerId);\r\n return customer ? customer.displayValue : 'All';\r\n }\r\n\r\n getContractNumber() {\r\n return isNaN(this.model.lastSearchParams.contractNumber) ? '' : this.model.lastSearchParams.contractNumber;\r\n }\r\n\r\n customerChanged() {\r\n this.model.searchParams.contractNumber = null;\r\n this.loadContractNumbers().subscribe();\r\n }\r\n\r\n loadContractNumbers(): Observable {\r\n if(isNaN(this.model.searchParams.customerId)) {\r\n this.model.contractNumberDisabled = true;\r\n return of(null);\r\n }\r\n this.model.contractNumberDisabled = false;\r\n return this.contractsService.queryContractNumbers(this.model.searchParams)\r\n .pipe(tap(numbers => this.model.contractNumbers = numbers.map(n => {return {name: n}})));\r\n }\r\n\r\n resetClicked() {\r\n this.model.isEditing = false;\r\n super.resetClicked();\r\n }\r\n\r\n numberOfRecords(): number {\r\n return this.model.searchResults?.filter(r => r.deleted == false).length;\r\n }\r\n\r\n isEditing(): boolean {\r\n return this.model.isEditing;\r\n }\r\n\r\n isEditDisabled(): boolean {\r\n return _.isNil(this.model.lastSearchParams?.contractNumber) || isNaN(this.model.lastSearchParams.contractNumber);\r\n }\r\n\r\n getEditorColor(): string {\r\n return this.model.isEditing ? 'editableField' : '';\r\n }\r\n\r\n editClicked() {\r\n this.alertService.clearMessages();\r\n for (const p of this.model.searchResults) {\r\n if(!p.priceStartDate && !p.priceEndDate) {\r\n p.priceStartDate = this.model.openBillingMonth.firstDayOfMonth.toDisplayFormat();\r\n p.priceEndDate = this.model.openBillingMonth.lastDayOfMonth.toDisplayFormat();\r\n }\r\n }\r\n this.model.isEditing = true;\r\n this.model.canSubmit = false;\r\n }\r\n\r\n addClicked() {\r\n this.model.canSubmit = false;\r\n this.disableValidation = true;\r\n this.dataGrid.instance.addRow();\r\n }\r\n\r\n disableValidation: boolean = false;\r\n\r\n onRowValidating(e) {\r\n if (e.brokenRules?.length == 0) this.model.canSubmit = true;\r\n // need to disable validation for the new row to be able to move to the bottom\r\n if (this.disableValidation) e.isValid = true;\r\n }\r\n\r\n onInitNewRow(e) {\r\n e.data.customer = this.model.searchResults[0].customer;\r\n e.data.contractNumber = this.model.searchResults[0].contractNumber;\r\n e.data.versionNumber = this.model.searchResults[0].versionNumber;\r\n e.data.serviceType = this.model.searchResults[0].serviceType;\r\n e.data.nomGroup = this.model.searchResults[0].nomGroup;\r\n e.data.contractStartDate = this.model.searchResults[0].contractStartDate;\r\n e.data.contractEndDate = this.model.searchResults[0].contractEndDate;\r\n e.data.receiptLocation = this.model.searchResults[0].receiptLocation;\r\n e.data.deliveryLocation = this.model.searchResults[0].deliveryLocation;\r\n e.data.deleted = false;\r\n e.data.added = true;\r\n this.rowAdded = true;\r\n }\r\n\r\n rowAdded: boolean = false;\r\n\r\n onContentReady() {\r\n this.dataGrid.instance.filter([['deleted', '=', false]]);\r\n if (this.rowAdded) {\r\n this.rowAdded = false;\r\n // this is to move the new row to the bottom of the grid\r\n // which replicates the behavior of the angular 1.x site\r\n // and is nice because it will jump down to the bottom\r\n // when it loses focus anyway if we don't do this\r\n this.dataGrid.instance.saveEditData();\r\n this.disableValidation = false;\r\n }\r\n }\r\n\r\n submitClicked() {\r\n this.alertService.clearMessages();\r\n this.dataGrid.instance.saveEditData().then(() => {\r\n this.service.save(this.model.searchResults, this.model.lastSearchParams).subscribe(r => {\r\n if (r?.prices?.filter(p => p.validationMessage).length > 0) {\r\n this.showErrorColumn = true;\r\n this.alertService.addErrorMessage('Error:', 'You have errors with your submitted Contract Prices.');\r\n for (let i=0; i < r.prices.length; i++) {\r\n this.model.searchResults[i].validationMessage = r.prices[i].validationMessage;\r\n }\r\n return;\r\n }\r\n this.model.isEditing = false;\r\n this.showErrorColumn = false;\r\n this.alertService.addSuccessMessage('Save Success:', 'Contract Prices were saved.')\r\n if (r?.validationMessage) this.alertService.addWarnMessage('Warning:', r.validationMessage);\r\n this.performSearch().subscribe();\r\n });\r\n });\r\n }\r\n\r\n showErrorColumn: boolean = false;\r\n\r\n setCellValue(rowData, value) {\r\n rowData.addUpdateRequest = true;\r\n (this as any).defaultSetCellValue(rowData, value);\r\n }\r\n\r\n cancelClicked() {\r\n this.alertService.clearMessages();\r\n const options = new YesNoModalOptions('Discard Changes', 'Unsaved changes will be lost, would you like to continue?');\r\n this.modalService.show(options).subscribe((selected: SelectedModalOption) => {\r\n if (selected === SelectedModalOption.Yes) {\r\n this.model.isEditing = false;\r\n this.showErrorColumn = false;\r\n this.performSearch().subscribe();\r\n }\r\n });\r\n }\r\n\r\n deleteClicked(cellInfo) {\r\n cellInfo.data.deleted = true;\r\n this.dataGrid.instance.refresh();\r\n if (cellInfo.data.added) return;\r\n cellInfo.data.monthlyPriceId = -1;\r\n cellInfo.data.dailyPriceId = -1;\r\n cellInfo.data.dailyPrice = null;\r\n cellInfo.data.monthlyPrice = null;\r\n cellInfo.data.originalPriceStartDate = _.clone(cellInfo.data.priceStartDate);\r\n cellInfo.data.originalPriceEndDate = _.clone(cellInfo.data.priceEndDate);\r\n cellInfo.data.priceStartDate = null;\r\n cellInfo.data.priceEndDate = null;\r\n cellInfo.data.priceType = null;\r\n this.model.canSubmit = true;\r\n }\r\n\r\n onEditorPreparing(e) {\r\n DataGridHooks.setDropDownWidth(e, 'priceType', 100);\r\n if(e.parentType === 'dataRow'){\r\n e.editorOptions.valueChangeEvent = 'keydown keyup';\r\n e.editorOptions.onValueChanged = (changed) => {\r\n e.setValue(changed.value);\r\n e.component.getController('validating').validate().then((isValid: boolean) => {\r\n this.model.canSubmit = isValid;\r\n });\r\n }\r\n }\r\n }\r\n\r\n}\r\n","import {BaseCsvUploadViewModel} from \"@model/CsvUtility\";\r\nimport {BaseUploadResponse} from \"@model/base-upload-response\";\r\nimport {ContractRow} from \"@model/view-helpers/contract-row\";\r\n\r\nexport class LoadContractsUploadViewModel extends BaseCsvUploadViewModel{\r\n uploadResponse: BaseUploadResponse;\r\n public extractedData: Array;\r\n}\r\n","export class ContractRow{\r\n constructor(\r\n public rowNumber: number,\r\n public serviceType: string,\r\n public pipeline: string,\r\n public priorityDateTime: string,\r\n public num: string,\r\n public contractState: string,\r\n public createdReason: string,\r\n public isRenewableInd: string,\r\n public secondaryStartGasDay: string,\r\n public contractStartGasDay: string,\r\n public contractEndGasDay: string,\r\n public creditExposureDays: string,\r\n public expansionRelatedInd: string,\r\n public serviceRequester: string,\r\n public uomType: string,\r\n public contractDemand: string,\r\n public volumeUOMType: string,\r\n public volumeDemand: string, \r\n public receiptLocation: string,\r\n public deliveryLocation: string,\r\n public gstExempt: string\r\n ){ }\r\n}\r\n","import {ContractRow} from \"@model/view-helpers/contract-row\";\r\n\r\nexport class LoadContractUploadParameters {\r\n constructor(public rows: Array) { }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n Browse...\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n
{{ model.uploadResponse?.linesInFile }}
\r\n \r\n
{{ model.uploadResponse?.linesSaved }}
\r\n
\r\n
\r\n \r\n
{{ model.uploadResponse?.linesError }}
\r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport {BaseComponent} from \"@model/base-component\";\r\nimport {CsvUtility} from \"@model/CsvUtility\";\r\nimport {LoadContractsUploadViewModel} from \"app/gcts/contracts/load-contracts/load-contracts-upload-view-model\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {Router} from \"@angular/router\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {ContractRow} from \"@model/view-helpers/contract-row\";\r\nimport {LoadContractUploadParameters} from \"@model/service-models/load-contract-upload-parameters\";\r\nimport {ContractsService} from \"@shared/services/contracts/contracts/contracts.service\";\r\n\r\n\r\n@Component({\r\n selector: 'app-load-contracts',\r\n templateUrl: './load-contracts.component.html',\r\n styleUrls: ['./load-contracts.component.css'],\r\n providers: [CsvUtility]\r\n})\r\nexport class LoadContractsComponent extends BaseComponent implements OnInit {\r\n\r\n // csvHeaders must be in the same order as ContractRow's constructor parameters.\r\n csvHeaders = [\r\n 'ServiceType', 'Pipeline', 'PriorityDateTime', 'Num', 'ContractState',\r\n 'CreatedReason', 'IsRenewableInd', 'SecondaryStartGasDay', 'ContractStartGasDay', 'ContractEndGasDay', 'CreditExposureDays', 'ExpansionRelatedInd',\r\n 'ServiceRequester', 'UOMType', 'ContractDemand', 'VolumeUOMType', 'VolumeDemand', 'ReceiptLocation', 'DeliveryLocation', 'GSTExempt'\r\n ];\r\n\r\n model: LoadContractsUploadViewModel;\r\n extractedData: ContractRow[];\r\n pipelineCode: string;\r\n\r\n constructor(protected appService: AppService,\r\n private csvUtility: CsvUtility,\r\n private alertService: AlertService,\r\n private sessionService: SessionService,\r\n private contractService: ContractsService,\r\n private router: Router) { super(appService); }\r\n\r\n ngOnInit() {\r\n super.setTitle(\"Upload Contracts\");\r\n this.pipelineCode = this.sessionService.getPipeline().code;\r\n this.initModel();\r\n }\r\n\r\n private initModel(): void {\r\n this.model = new LoadContractsUploadViewModel();\r\n this.model.extractedData = new Array();\r\n\r\n this.model.uploadResponse = null;\r\n this.model.error = '';\r\n this.model.fileName = '';\r\n\r\n }\r\n\r\n public isValidFile(): boolean {\r\n return this.model.isValidFile();\r\n }\r\n\r\n updateClick(e) {\r\n this.extractedData = new Array();\r\n\r\n if (e.target.files.length > 0) {\r\n const reader = new FileReader();\r\n\r\n reader.onload = (event: any) => {\r\n this.extractData(e.target.files[0].name, event.target.result);\r\n };\r\n reader.readAsText(e.target.files[0]);\r\n }\r\n }\r\n\r\n uploadClicked() {\r\n if (this.model.extractedData === null) return;\r\n\r\n this.alertService.clearMessages();\r\n const parameters = new LoadContractUploadParameters(this.model.extractedData);\r\n this.route = this.router.routerState.snapshot.url;\r\n\r\n this.contractService.uploadContracts(parameters).subscribe(\r\n response => {\r\n\r\n this.model.uploadResponse = response;\r\n\r\n if(this.model.uploadResponse !== undefined && this.model.uploadResponse.errors.length > 0 && this.route === this.router.routerState.snapshot.url){\r\n this.alertService.addSuccessMessage('Upload successful', this.model.fileName + ' uploaded with ' + this.model.uploadResponse.errors.length + ' errors.');\r\n }else if(this.route === this.router.routerState.snapshot.url) {\r\n this.alertService.addSuccessMessage('Upload successful', this.model.fileName + ' uploaded.');\r\n }\r\n });\r\n }\r\n\r\n resetClicked() {\r\n this.initModel();\r\n this.alertService.clearMessages();\r\n }\r\n\r\n hoverOver() {\r\n return this.model.error;\r\n }\r\n\r\n protected extractData(fileName: string, data: string) {\r\n this.resetClicked();\r\n this.model.fileName = fileName;\r\n this.csvUtility.extractData(data, this.model, this.csvHeaders, this.processRows);\r\n }\r\n\r\n private processRows = (result: Array>, fields: Array) => {\r\n const colIndices = new Array();\r\n this.csvHeaders.forEach((header) => colIndices.push(this.csvUtility.findColumnHeaderColumn(fields, header)));\r\n\r\n let rowIndex = 0;\r\n this.model.extractedData = new Array();\r\n result.forEach((row: Array) => {\r\n this.model.extractedData.push(new ContractRow(\r\n ++rowIndex,\r\n row[colIndices[0]],\r\n row[colIndices[1]],\r\n row[colIndices[2]],\r\n row[colIndices[3]],\r\n row[colIndices[4]],\r\n row[colIndices[5]],\r\n row[colIndices[6]],\r\n row[colIndices[7]],\r\n row[colIndices[8]],\r\n row[colIndices[9]],\r\n row[colIndices[10]],\r\n row[colIndices[11]],\r\n row[colIndices[12]],\r\n row[colIndices[13]],\r\n row[colIndices[14]],\r\n row[colIndices[15]],\r\n row[colIndices[16]],\r\n row[colIndices[17]],\r\n row[colIndices[18]],\r\n row[colIndices[19]]\r\n));\r\n });\r\n };\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n -\r\n +\r\n Filters\r\n \r\n :\r\n Customer: {{model.lastSearchParams?.customerId | displayName: 'id' : 'displayValue' : model.customers}}\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n","import {Route} from \"@angular/router\";\r\n\r\nimport {AccountContractSummaryReportComponent} from \"app/gcts/contracts/account-contract-summary-report/account-contract-summary-report.components\";\r\nimport {AuthorizationService} from \"@shared/services/webapp/authorization/authorization.service\";\r\nimport {ContractsAwaitingProcessingComponent} from \"app/gcts/contracts/contracts-awaiting-processing/contracts-awaiting-processing.component\";\r\nimport {AccountsComponent} from \"app/gcts/contracts/accounts/accounts.component\";\r\nimport {CustomerCertifiedGasParametersComponent} from \"app/gcts/contracts/customer-certified-gas-parameters/customer-certified-gas-parameters.component\";\r\nimport {TemporaryAssignmentComponent} from \"app/gcts/contracts/temporary-assignment/temporary-assignment.component\";\r\nimport {ContractDemandEnergyComponent} from \"app/gcts/contracts/contract-demand-energy/contract-demand-energy.component\";\r\nimport {CoverPageDetailComponent} from \"app/gcts/contracts/cover-page-detail/cover-page-detail.component\";\r\nimport {CoverPageContactsComponent} from \"app/gcts/contracts/cover-page-contacts/cover-page-contacts.component\";\r\nimport {ContractPricingComponent} from \"app/gcts/contracts/contract-pricing/contract-pricing.component\";\r\nimport {LoadContractsComponent} from \"app/gcts/contracts/load-contracts/load-contracts.component\";\r\nimport {CustomerAccountParametersComponent} from \"app/gcts/contracts/customer-account-parameters/customer-account-parameters.component\";\r\n\r\nexport const AccountsRoutes: Route[] = [\r\n {\r\n path: 'accountcontractsummaryreport',\r\n component: AccountContractSummaryReportComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['AccountContractSummary-Read']}\r\n },\r\n {\r\n path: 'contractsawaitingprocessing',\r\n component: ContractsAwaitingProcessingComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['ContractsAwaitingProcessing-Read', 'ContractsAwaitingProcessing-Write']}\r\n },\r\n {\r\n path: 'accounts',\r\n component: AccountsComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['ViewAccounts-Read']}\r\n },\r\n {\r\n path: 'temporaryassignment',\r\n component: TemporaryAssignmentComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['TemporaryAssignment-Read']}\r\n },\r\n {\r\n path: 'reports/contractdemandenergy',\r\n component: ContractDemandEnergyComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['ContractDemandEnergy-Read']}\r\n },\r\n {\r\n path: 'coverpagedetail',\r\n component: CoverPageDetailComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['CoverPageDetail-Write']}\r\n },\r\n {\r\n path: 'coverpagecontacts',\r\n component: CoverPageContactsComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['CoverPageContacts-Write']}\r\n },\r\n {\r\n path: 'contractpricing',\r\n component: ContractPricingComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['ContractPricing-Read']}\r\n },\r\n {\r\n path: 'accountscustomerparameters',\r\n component: CustomerCertifiedGasParametersComponent,\r\n canActivate: [AuthorizationService],\r\n data: { capabilities: ['CustomerCertifiedGasParameters-Read'] }\r\n },\r\n {\r\n path: 'customeraccountparameters',\r\n component: CustomerAccountParametersComponent,\r\n canActivate: [AuthorizationService],\r\n data: { capabilities: ['CustomerCertifiedGasParameters-Read', 'CGL-CustomerAccountParameters-Read'] }\r\n },\r\n {\r\n path: 'loadcontracts',\r\n component: LoadContractsComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['LoadContracts-Write']}\r\n }\r\n];\r\n","import {Component} from \"@angular/core\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {CommonDataGasdayService, ServerTimeData} from \"@shared/services/common-data/common-data-gasday/common-data-gasday.service\";\r\nimport {forkJoin, Observable, of} from \"rxjs\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {CommonDataEnterpriseSearchParams, Enterprise, EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {tap} from \"rxjs/operators\";\r\nimport * as _ from \"lodash\";\r\nimport {CustomerAccountParametersService, } from \"@shared/services/accounts/customer-account-parameters/customer-account-parameters.service\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {AccountsEnterpriseService} from \"@shared/services/accounts/accounts-enterprise/accounts-enterprise.service\";\r\nimport {CustomerAccountParametersModel, CustomerAccountParametersSearchParams, UpdateCustomerAccountParametersModel} from \"app/gcts/contracts/customer-account-parameters/customer-account-parameters.model\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {PipelineSettingMapService} from \"@shared/services/nomination/pipeline-settings-map/pipeline-setting-map.service\";\r\n\r\n@Component({\r\n selector: 'app-customer-account-parameters',\r\n templateUrl: './customer-account-parameters.component.html',\r\n styleUrls: ['./customer-account-parameters.component.css']\r\n})\r\nexport class CustomerAccountParametersComponent extends BaseSearchComponent {\r\n private static readonly PARAM_CUSTOMER_ID: string = 'customerId';\r\n private pipelineCode: string = this.sessionService.getPipeline().code;\r\n private isCgl = this.pipelineSettingsMapService.isCgl(this.pipelineCode);\r\n public model: CustomerAccountParametersModel = new CustomerAccountParametersModel();\r\n public isAnchorShipper = false;\r\n\r\n constructor(\r\n protected appService: AppService,\r\n activatedRoute: ActivatedRoute,\r\n router: Router,\r\n protected alertService: AlertService,\r\n protected commonDataGasDayService: CommonDataGasdayService,\r\n protected accountsEnterpriseService: AccountsEnterpriseService,\r\n protected enterpriseEnrichmentService: EnterpriseEnrichmentService,\r\n protected enterpriseService: EnterpriseService,\r\n protected sessionService: SessionService,\r\n protected customerAccountParametersService: CustomerAccountParametersService,\r\n protected pipelineSettingsMapService: PipelineSettingMapService,\r\n ) {\r\n super('Customer Account Parameters', appService, activatedRoute, router, alertService);\r\n enterpriseEnrichmentService.setEnrichmentResource(enterpriseService);\r\n }\r\n protected areParamsValid(params: Params): boolean {\r\n const paramValidator = ParamValidator.Standard();\r\n paramValidator.isNumber(CustomerAccountParametersComponent.PARAM_CUSTOMER_ID);\r\n return paramValidator.isValid(params);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n const params = {};\r\n params[CustomerAccountParametersComponent.PARAM_CUSTOMER_ID] = this.model.searchParams.customerId;\r\n return params;\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n return of({});\r\n }\r\n\r\n protected performSearch(): Observable {\r\n this.alertService.clearMessages();\r\n this.model.customerParametersButtonEnabled=true;\r\n\r\n if(this.model.saved===true){\r\n this.alertService.addSuccessMessage(\"Success\", \"The customer account parameters have been successfully saved.\");\r\n this.model.saved=false;\r\n }\r\n\r\n this.model.lastSearchParams = _.clone(this.model.searchParams);\r\n const queryCustomerAccountParameters$ =\r\n this.customerAccountParametersService.queryCustomerAccountParameters(this.model.searchParams)\r\n .pipe(\r\n tap( accountParameters => {\r\n this.model.searchResults = accountParameters;\r\n this.model.isAnchorShipper = accountParameters.isAnchorShipper;\r\n this.isAnchorShipper = this.model.isAnchorShipper;\r\n })\r\n );\r\n const queryServerTime$ = this.queryServerTimeData();\r\n\r\n return forkJoin([queryCustomerAccountParameters$, queryServerTime$]);\r\n }\r\n\r\n\r\n private queryServerTimeData(): Observable {\r\n return this.commonDataGasDayService.getServerTimeData()\r\n .pipe(\r\n tap(serverTimes => this.model.timeOfLastSearch = serverTimes.serverTime.toDate())\r\n );\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n this.model.searchParams = new CustomerAccountParametersSearchParams();\r\n this.model.searchParams.customerId = typedParams.asNumber(CustomerAccountParametersComponent.PARAM_CUSTOMER_ID);\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n const myEnterpriseId = this.activatedRoute.snapshot.queryParams['enterpriseCid'];\r\n const mySaved = this.activatedRoute.snapshot.queryParams['saved'];\r\n if(!_.isNil(myEnterpriseId)) {\r\n this.model.searchParams.customerId = parseInt(myEnterpriseId, 10);\r\n }\r\n if (!_.isNil(mySaved) && \"true\"===mySaved) {\r\n this.model.saved = true;\r\n }else{\r\n this.model.saved=false;\r\n }\r\n return this.queryEnterprises();\r\n }\r\n\r\n private queryEnterprises(): Observable {\r\n const params = new CommonDataEnterpriseSearchParams();\r\n params.onlyActive = true;\r\n return this.enterpriseService.getAll(params)\r\n .pipe(\r\n tap(enterprises => {\r\n this.model.customers = enterprises;\r\n })\r\n );\r\n }\r\n\r\n public haveParametersChanged(): boolean {\r\n return !this.isAnchorShipper === this.model.isAnchorShipper;\r\n }\r\n\r\n public saveParametersClicked() {\r\n const parametersModel = new UpdateCustomerAccountParametersModel();\r\n parametersModel.customerId = this.model.searchParams.customerId;\r\n parametersModel.pipelineCode = this.pipelineCode;\r\n parametersModel.isAnchorShipper = this.isAnchorShipper;\r\n this.customerAccountParametersService.updateCustomerAccountParameters(parametersModel).subscribe(\r\n (x) => {\r\n this.model.saved = true;\r\n this.searchClicked();\r\n }, error => {\r\n _.forEach(error.messages, (message) => this.alertService.addErrorMessage('Save Failed:', message));\r\n }\r\n );\r\n }\r\n\r\n public resetHasBeenClicked(isSaved: boolean): void {\r\n // MR need to re-navigate also to remove the parameters from the url also\r\n const url = ['/app', this.getPipelineCode(), 'customeraccountparameters'];\r\n this.router.navigate(url);\r\n this.clearSearchResults();\r\n this.alertService.clearMessages();\r\n }\r\n\r\n public clearSearchResults():void{\r\n this.model.searchParams.customerId = null;\r\n this.model.searchResults = null;\r\n }\r\n}\r\n","import {GasDay} from \"@model/gas-day\";\r\nimport {BaseViewModel} from \"@model/base-view-model\";\r\nimport {NominationPipelineGasDay} from \"@model/nomination-pipeline-gas-day\";\r\nimport {Enterprise} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\n\r\nexport class CreditExposureReportModel extends BaseViewModel {\r\n /**\r\n * Public Properties\r\n */\r\n public minGasDay: GasDay;\r\n public pipelineGasDay: NominationPipelineGasDay;\r\n\r\n public searchParams: CreditExposureReportSearchParams = new CreditExposureReportSearchParams();\r\n public lastSearchParams: CreditExposureReportSearchParams;\r\n\r\n /**\r\n * Collections\r\n */\r\n private _enterprises: Enterprise[] = [];\r\n public get enterprises(): Enterprise[] {\r\n return this._enterprises;\r\n }\r\n public set enterprises(enterprises: Enterprise[]) {\r\n this._enterprises = enterprises;\r\n }\r\n}\r\n\r\nexport class CreditExposureReportSearchParams {\r\n public enterpriseId: number;\r\n public gasDay: GasDay;\r\n public asOfGasDay: GasDay;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {AbstractResourceService} from \"./abstract-resource.service\";\r\nimport {ConfigService} from \"../services/webapp/configuration/configuration.service\";\r\nimport {UriService} from \"../services/webapp/uri/uri.service\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\n\r\n@Injectable()\r\nexport class CreditResourceService extends AbstractResourceService {\r\n\r\n constructor(protected httpClient: HttpClient,\r\n private uriService: UriService,\r\n private configService: ConfigService) {\r\n super(httpClient);\r\n }\r\n\r\n getBaseUri(includePipeline: boolean): string {\r\n return this.uriService.getUriWithPipelineAndGateway(this.configService.creditServiceUri, includePipeline);\r\n }\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {CreditResourceService} from \"@shared/resources/credit-resource.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {Observable} from \"rxjs\";\r\nimport {HttpResponse} from \"@angular/common/http\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\n\r\n@Injectable()\r\nexport class CreditExposureReportService {\r\n\r\n constructor(private creditResource: CreditResourceService) { }\r\n\r\n queryCreditReportPdf(searchParams: CreditExposureReportRequest): Observable> {\r\n return this.creditResource.getData('/creditexposurereport/pdf', true, this.buildUrlSearchParams(searchParams));\r\n }\r\n\r\n private buildUrlSearchParams(searchParams: CreditExposureReportRequest): GCTSHttpParams {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('enterpriseId', searchParams.enterpriseId.toString());\r\n if (searchParams.asOfGasDay != null) params.set('asOfGasDay', searchParams.asOfGasDay.toString());\r\n params.set('gasDay', searchParams.gasDay.toString());\r\n return params;\r\n }\r\n}\r\n\r\nexport class CreditExposureReportRequest {\r\n enterpriseId: number;\r\n gasDay: GasDay;\r\n asOfGasDay: GasDay;\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {Observable} from \"rxjs\";\r\nimport {map} from \"rxjs/operators\";\r\nimport * as _ from \"lodash\";\r\nimport {Enterprise, IEnterpriseResponse} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {CreditResourceService} from \"@shared/resources/credit-resource.service\";\r\n\r\n@Injectable()\r\nexport class CreditEnterpriseService {\r\n\r\n constructor(private creditDataResource: CreditResourceService) {\r\n }\r\n\r\n getEnterprises(): Observable {\r\n return this.creditDataResource.get('/enterprises', true).pipe(\r\n map(enterprises => _.map(enterprises, x => Enterprise.create(x))));\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n","import {Component, OnInit} from \"@angular/core\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {Observable} from \"rxjs\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {CreditExposureReportModel, CreditExposureReportSearchParams} from \"app/gcts/credit/credit-exposure-report/credit-exposure-report.model\";\r\nimport {Enterprise} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {tap} from \"rxjs/operators\";\r\nimport {NominationPipelineGasDay} from \"@model/nomination-pipeline-gas-day\";\r\nimport {NominationSystemService} from \"@shared/services/nomination/nomination-system/nomination-system.service\";\r\nimport * as _ from \"lodash\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport {CreditExposureReportRequest, CreditExposureReportService} from \"@shared/services/credit/credit-exposure-report/credit-exposure-report.service\";\r\nimport * as FileSaver from \"file-saver\";\r\nimport {HttpResponse} from \"@angular/common/http\";\r\nimport {GctsProcess} from \"@model/gcts-process\";\r\nimport {JobService} from \"@shared/services/job-scheduling/jobs/job.service\";\r\nimport {PipelineSettingMapService} from \"@shared/services/nomination/pipeline-settings-map/pipeline-setting-map.service\";\r\nimport {CreditEnterpriseService} from \"@shared/services/credit/enterprise/credit-enterprise.service\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\n\r\n@Component({\r\n selector: 'app-credit-exposure-report',\r\n templateUrl: './credit-exposure-report.component.html',\r\n styleUrls: ['./credit-exposure-report.component.css']\r\n})\r\nexport class CreditExposureReportComponent extends BaseSearchComponent implements OnInit {\r\n\r\n model: CreditExposureReportModel = new CreditExposureReportModel();\r\n\r\n constructor(protected appService: AppService,\r\n protected activatedRoute: ActivatedRoute,\r\n protected router: Router,\r\n protected alertService: AlertService,\r\n protected sessionService: SessionService,\r\n protected creditService: CreditEnterpriseService,\r\n protected nominationSystemService: NominationSystemService,\r\n protected creditExposureReportService: CreditExposureReportService,\r\n private pipelineSettingsMapService: PipelineSettingMapService,\r\n private jobService: JobService) {\r\n\r\n super('Credit Exposure Report', appService, activatedRoute, router, alertService);\r\n }\r\n\r\n public pdfClicked(): void {\r\n this.alertService.clearMessages();\r\n this.creditExposureReportService.queryCreditReportPdf(this.buildSearchRequest())\r\n .subscribe(data =>\r\n this.downloadFile(data)\r\n );\r\n }\r\n\r\n public syncDataClicked(): void {\r\n this.jobService.submitJob(GctsProcess.Contracts.name, 'SyncDataJob')\r\n .subscribe(() => {\r\n const message = 'The job Sync Data has been successfully submitted.';\r\n this.alertService.addSuccessMessage('Submit Successful', message);\r\n });\r\n }\r\n\r\n canSyncData = (): boolean => {\r\n return this.pipelineSettingsMapService.getPipelineSetting().canSyncData;\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return this.paramValidator().isValid(params);\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n this.appService.hideMenu();\r\n return this.nominationSystemService.pipelineGasDay()\r\n .pipe(\r\n tap(nominationPipelineGasDay => {\r\n this.model.pipelineGasDay = nominationPipelineGasDay;\r\n this.model.searchParams.gasDay = nominationPipelineGasDay.actualGasDay;\r\n this.model.searchParams.asOfGasDay = GasMonth.fromGasDay(nominationPipelineGasDay.actualGasDay).previous().start();\r\n this.model.minGasDay = nominationPipelineGasDay.actualGasDay;\r\n })\r\n );\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n return this.creditService.getEnterprises()\r\n .pipe(\r\n tap(enrichedEnterprises => {\r\n this.model.enterprises = _.orderBy(enrichedEnterprises, x => x.displayName);\r\n })\r\n );\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams = new CreditExposureReportSearchParams();\r\n\r\n this.model.searchParams.gasDay = this.model.pipelineGasDay.actualGasDay;\r\n this.model.searchParams.asOfGasDay = GasMonth.fromGasDay(this.model.pipelineGasDay.actualGasDay).previous().start();\r\n this.model.searchParams.enterpriseId = null;\r\n }\r\n\r\n private buildSearchRequest(): CreditExposureReportRequest {\r\n const request = new CreditExposureReportRequest();\r\n request.gasDay = this.model.searchParams.gasDay;\r\n request.asOfGasDay = this.model.searchParams.asOfGasDay;\r\n request.enterpriseId = this.model.searchParams.enterpriseId;\r\n return request;\r\n }\r\n\r\n private paramValidator(): ParamValidator {\r\n const validator = ParamValidator.Standard();\r\n validator.isGasDay('gasDay');\r\n validator.isGasDay('asOfGasDay');\r\n validator.isNumber('enterpriseId');\r\n return validator;\r\n }\r\n\r\n downloadFile(response: HttpResponse) {\r\n const mediaType = response.headers.get('content-type');\r\n const blob = new Blob([response.body], {type: mediaType});\r\n\r\n // from the content disposition, should be second element with =\"{filename}\" surrounding it\r\n const filename = response.headers.get('content-disposition').split(';')[1].trim().split('=')[1].replace(/\"/g, '');\r\n FileSaver.saveAs(blob, filename);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n // do nothing\r\n }\r\n\r\n protected performSearch(): Observable {\r\n // do nothing\r\n return undefined;\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n // do nothing\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n // do nothing\r\n }\r\n}\r\n","import {GasDay} from \"@model/gas-day\";\r\nimport {BaseViewModel} from \"@model/base-view-model\";\r\nimport {NominationPipelineGasDay} from \"@model/nomination-pipeline-gas-day\";\r\n\r\nexport class CreditOverageReportModel extends BaseViewModel {\r\n /**\r\n * Public Properties\r\n */\r\n public minGasDay: GasDay;\r\n public maxGasDay: GasDay;\r\n public pipelineGasDay: NominationPipelineGasDay;\r\n\r\n public searchParams: CreditOverageReportSearchParams = new CreditOverageReportSearchParams();\r\n public lastSearchParams: CreditOverageReportSearchParams;\r\n\r\n /**\r\n * Collections\r\n */\r\n}\r\n\r\nexport class CreditOverageReportSearchParams {\r\n public gasDay: GasDay;\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {CreditResourceService} from \"@shared/resources/credit-resource.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {Observable} from \"rxjs\";\r\nimport {HttpResponse} from \"@angular/common/http\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\n\r\n@Injectable()\r\nexport class CreditOverageReportService {\r\n\r\n constructor(private creditResource: CreditResourceService) { }\r\n\r\n queryCreditOverageReportXlsx(searchParams: CreditOverageReportRequest): Observable> {\r\n return this.creditResource.getData('/creditoveragereport/xlsx', true, this.buildUrlSearchParams(searchParams));\r\n }\r\n\r\n private buildUrlSearchParams(searchParams: CreditOverageReportRequest): GCTSHttpParams {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('gasDay', searchParams.gasDay.toString());\r\n return params;\r\n }\r\n}\r\n\r\nexport class CreditOverageReportRequest {\r\n gasDay: GasDay;\r\n}\r\n","import {Component, OnInit} from \"@angular/core\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {Observable, of} from \"rxjs\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {tap} from \"rxjs/operators\";\r\nimport {NominationPipelineGasDay} from \"@model/nomination-pipeline-gas-day\";\r\nimport {NominationSystemService} from \"@shared/services/nomination/nomination-system/nomination-system.service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport * as FileSaver from \"file-saver\";\r\nimport {HttpResponse} from \"@angular/common/http\";\r\nimport {CreditExposureReportSearchParams} from \"app/gcts/credit/credit-exposure-report/credit-exposure-report.model\";\r\nimport {CreditOverageReportModel} from \"app/gcts/credit/credit-overage-report/credit-overage-report.model\";\r\nimport {CreditOverageReportRequest, CreditOverageReportService} from \"@shared/services/credit/credit-overage-report/credit-overage-report.service\";\r\n\r\n@Component({\r\n selector: 'app-credit-overage-report',\r\n templateUrl: './credit-overage-report.component.html',\r\n styleUrls: ['./credit-overage-report.component.css']\r\n})\r\nexport class CreditOverageReportComponent extends BaseSearchComponent implements OnInit {\r\n\r\n model: CreditOverageReportModel = new CreditOverageReportModel();\r\n\r\n constructor(protected appService: AppService,\r\n protected activatedRoute: ActivatedRoute,\r\n protected router: Router,\r\n protected alertService: AlertService,\r\n protected sessionService: SessionService,\r\n protected nominationSystemService: NominationSystemService,\r\n protected creditOverageReportService: CreditOverageReportService) {\r\n\r\n super('Credit Overage Report', appService, activatedRoute, router, alertService);\r\n }\r\n\r\n public excelClicked(): void {\r\n this.alertService.clearMessages();\r\n this.creditOverageReportService.queryCreditOverageReportXlsx(this.buildSearchRequest())\r\n .subscribe(data =>\r\n this.downloadFile(data)\r\n );\r\n }\r\n\r\n protected areParamsValid(params: Params): boolean {\r\n return this.paramValidator().isValid(params);\r\n }\r\n\r\n protected loadInitialResources(): Observable {\r\n this.appService.hideMenu();\r\n return this.nominationSystemService.pipelineGasDay()\r\n .pipe(\r\n tap(nominationPipelineGasDay => {\r\n this.model.pipelineGasDay = nominationPipelineGasDay;\r\n this.model.searchParams.gasDay = nominationPipelineGasDay.actualGasDay;\r\n this.model.minGasDay = nominationPipelineGasDay.earliestSelectableGasDay;\r\n this.model.maxGasDay = nominationPipelineGasDay.actualGasDay;\r\n })\r\n );\r\n }\r\n\r\n protected loadSearchResources(): Observable {\r\n // do nothing;\r\n return of(null);\r\n }\r\n\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams = new CreditExposureReportSearchParams();\r\n\r\n this.model.searchParams.gasDay = this.model.pipelineGasDay.actualGasDay;\r\n }\r\n\r\n private buildSearchRequest(): CreditOverageReportRequest {\r\n const request = new CreditOverageReportRequest();\r\n request.gasDay = this.model.searchParams.gasDay;\r\n return request;\r\n }\r\n\r\n private paramValidator(): ParamValidator {\r\n const validator = ParamValidator.Standard();\r\n validator.isGasDay('gasDay');\r\n return validator;\r\n }\r\n\r\n downloadFile(response: HttpResponse) {\r\n const mediaType = response.headers.get('content-type');\r\n const blob = new Blob([response.body], {type: mediaType});\r\n\r\n // from the content disposition, should be second element with =\"{filename}\" surrounding it\r\n const filename = response.headers.get('content-disposition').split(';')[1].trim().split('=')[1].replace(/\"/g, '');\r\n FileSaver.saveAs(blob, filename);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n // do nothing\r\n }\r\n\r\n protected performSearch(): Observable {\r\n // do nothing\r\n return undefined;\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n // do nothing\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n // do nothing\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n","import {GasDay} from \"@model/gas-day\";\r\nimport {BaseViewModel} from \"@model/base-view-model\";\r\nimport {NominationPipelineGasDay} from \"@model/nomination-pipeline-gas-day\";\r\nimport {Enterprise} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\n\r\nexport class CreditReportArchiveRetrievalModel extends BaseViewModel {\r\n /**\r\n * Public Properties\r\n */\r\n public minGasDay: GasDay;\r\n public pipelineGasDay: NominationPipelineGasDay;\r\n\r\n public searchParams: CreditReportArchiveRetrievalSearchParams = new CreditReportArchiveRetrievalSearchParams();\r\n public lastSearchParams: CreditReportArchiveRetrievalSearchParams;\r\n public enterprise: Enterprise = new Enterprise();\r\n\r\n /**\r\n * Collections\r\n */\r\n private _enterprises: Enterprise[] = [];\r\n public get enterprises(): Enterprise[] {\r\n return this._enterprises;\r\n }\r\n public set enterprises(enterprises: Enterprise[]) {\r\n this._enterprises = enterprises;\r\n }\r\n}\r\n\r\nexport class CreditReportArchiveRetrievalSearchParams {\r\n public enterpriseId: number;\r\n public gasDay: GasDay;\r\n public asOfGasDay: GasDay;\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {CreditResourceService} from \"@shared/resources/credit-resource.service\";\r\nimport {Observable} from \"rxjs\";\r\nimport {HttpResponse} from \"@angular/common/http\";\r\nimport {GCTSHttpParams} from \"@model/gcts-http-params\";\r\nimport {GasDay} from \"@model/gas-day\";\r\n\r\n@Injectable()\r\nexport class CreditReportArchiveRetrievalService {\r\n\r\n constructor(private creditResource: CreditResourceService) { }\r\n\r\n fetchArchivedCreditReportPdf(searchParams: ArchivedCreditReportRequest): Observable> {\r\n return this.creditResource.getData('/archivedcrediteport/pdf', true, this.buildUrlSearchParams(searchParams));\r\n }\r\n\r\n private buildUrlSearchParams(searchParams: ArchivedCreditReportRequest): GCTSHttpParams {\r\n const params: GCTSHttpParams = new GCTSHttpParams();\r\n params.set('fileName', searchParams.enterpriseName);\r\n params.set('gasDay', searchParams.gasDay.toString());\r\n return params;\r\n }\r\n}\r\nexport class ArchivedCreditReportRequest {\r\n enterpriseName: string;\r\n gasDay: GasDay;\r\n}\r\n\r\n","import {Route} from \"@angular/router\";\r\nimport {AuthorizationService} from \"@shared/services/webapp/authorization/authorization.service\";\r\nimport {CreditExposureReportComponent} from \"app/gcts/credit/credit-exposure-report/credit-exposure-report.component\";\r\nimport {CreditOverageReportComponent} from \"app/gcts/credit/credit-overage-report/credit-overage-report.component\";\r\nimport {CreditReportArchiveRetrievalComponent} from \"app/gcts/credit/credit-report-archive-retrieval/credit-report-archive-retrieval.component\";\r\n\r\nexport const CreditRoutes: Route[] = [\r\n {\r\n path: 'creditexposurereport',\r\n component: CreditExposureReportComponent,\r\n canActivate: [AuthorizationService],\r\n runGuardsAndResolvers: 'always',\r\n data: {capabilities: ['CreditExposureReport-Read']}\r\n },\r\n {\r\n path: 'creditreportarchiveretrieval',\r\n component: CreditReportArchiveRetrievalComponent,\r\n canActivate: [AuthorizationService],\r\n runGuardsAndResolvers: 'always',\r\n data: {capabilities: ['ArchivedCreditReport-Read']}\r\n },\r\n {\r\n path: 'creditoveragereport',\r\n component: CreditOverageReportComponent,\r\n canActivate: [AuthorizationService],\r\n runGuardsAndResolvers: 'always',\r\n data: {capabilities: ['CreditOverageReport-Read']}\r\n },\r\n];\r\n","import {Component, OnInit} from \"@angular/core\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {BaseSearchComponent} from \"@model/base-search-component\";\r\nimport {Observable} from \"rxjs\";\r\nimport {TypedParams} from \"@model/typed-params\";\r\nimport {Enterprise, EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {tap} from \"rxjs/operators\";\r\nimport {NominationPipelineGasDay} from \"@model/nomination-pipeline-gas-day\";\r\nimport {NominationSystemService} from \"@shared/services/nomination/nomination-system/nomination-system.service\";\r\nimport * as _ from \"lodash\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {ParamValidator} from \"@model/validators/param-validator\";\r\nimport * as FileSaver from \"file-saver\";\r\nimport {HttpResponse} from \"@angular/common/http\";\r\nimport {CreditEnterpriseService} from \"@shared/services/credit/enterprise/credit-enterprise.service\";\r\nimport {CreditReportArchiveRetrievalModel, CreditReportArchiveRetrievalSearchParams} from \"app/gcts/credit/credit-report-archive-retrieval/credit-report-archive-retrieval.model\";\r\nimport {CreditExposureReportRequest, CreditExposureReportService} from \"@shared/services/credit/credit-exposure-report/credit-exposure-report.service\";\r\nimport {\r\n ArchivedCreditReportRequest,\r\n CreditReportArchiveRetrievalService\r\n} from \"@shared/services/credit/credit-report-archive-retrieval/credit-report-archive-retrieval.service\";\r\n\r\n@Component({\r\n selector: 'app-credit-report-archive-retrieval',\r\n templateUrl: './credit-report-archive-retrieval.component.html',\r\n styleUrls: ['./credit-report-archive-retrieval.component.css']\r\n})\r\nexport class CreditReportArchiveRetrievalComponent extends BaseSearchComponent implements OnInit {\r\n\r\n model: CreditReportArchiveRetrievalModel = new CreditReportArchiveRetrievalModel();\r\n\r\n constructor(protected appService: AppService,\r\n protected activatedRoute: ActivatedRoute,\r\n protected router: Router,\r\n protected alertService: AlertService,\r\n protected sessionService: SessionService,\r\n protected creditService: CreditEnterpriseService,\r\n protected enterpriseService: EnterpriseService,\r\n protected nominationSystemService: NominationSystemService,\r\n protected creditReportArchiveRetrievalService: CreditReportArchiveRetrievalService) {\r\n\r\n // This sets both the page header and title.\r\n super('Credit Report Archive Retrieval', appService, activatedRoute, router, alertService);\r\n }\r\n\r\n // This method is called when the user clicks the \"Fetch PDF\" button\r\n public fetchClicked(): void {\r\n this.alertService.clearMessages(); // Clear any alerts to make way for possible new ones\r\n this.creditReportArchiveRetrievalService.fetchArchivedCreditReportPdf(this.buildSearchRequest()) // Send the file name to the service\r\n .subscribe(data =>\r\n this.downloadFile(data) // Download the file we just found\r\n ); // TODO - Additional error checking might be required once we're actually getting the pdfs back\r\n }\r\n\r\n // This method ensures that the parameters the user has selected are valid and is used to control whether the fetch button is active\r\n protected areParamsValid(params: Params): boolean {\r\n return this.paramValidator().isValid(params);\r\n }\r\n\r\n // This method is called when the page is loaded and sets the initial values for the model, among other initial setup\r\n protected loadInitialResources(): Observable {\r\n this.appService.hideMenu();\r\n return this.nominationSystemService.pipelineGasDay()\r\n .pipe(\r\n tap(nominationPipelineGasDay => {\r\n this.model.pipelineGasDay = nominationPipelineGasDay;\r\n this.model.searchParams.gasDay = nominationPipelineGasDay.actualGasDay;\r\n this.model.minGasDay = nominationPipelineGasDay.actualGasDay;\r\n })\r\n );\r\n }\r\n\r\n // This method is called to load resources necessary for searching\r\n protected loadSearchResources(): Observable {\r\n return this.creditService.getEnterprises()\r\n .pipe(\r\n tap(enrichedEnterprises => {\r\n // Fetch the list of enterprises necessary to populate the customer drop down\r\n this.model.enterprises = _.orderBy(enrichedEnterprises, x => x.displayName);\r\n })\r\n );\r\n }\r\n\r\n // This method uses the values set in the model during loadInitialResources to set the initial values for the search fields\r\n protected setDefaultSearchParams(): void {\r\n this.model.searchParams = new CreditReportArchiveRetrievalSearchParams();\r\n\r\n this.model.searchParams.gasDay = this.model.pipelineGasDay.actualGasDay;\r\n this.model.searchParams.enterpriseId = null;\r\n }\r\n\r\n\r\n // This method uses the customer name and gas day to construct the predicted name of the file we want to fetch\r\n private buildFileName(): string {\r\n let fileName = \"\";\r\n // Assemble the file name. Follows the format (ConocoPhillipsCanMktingULC-2022-5-11.pdf)\r\n fileName = this.model.enterprise.shortName.replace(/[\\s]+|[\\.]/g, \"\") + \"-\" + // This regex removes all spaces and periods\r\n this.model.searchParams.gasDay.year + \"-\" +\r\n this.model.searchParams.gasDay.month + \"-\" +\r\n this.model.searchParams.gasDay.day + \".pdf\";\r\n return fileName;\r\n }\r\n\r\n private buildSearchRequest(): ArchivedCreditReportRequest {\r\n const request = new ArchivedCreditReportRequest();\r\n request.gasDay = this.model.searchParams.gasDay;\r\n request.enterpriseName = this.model.enterprise.shortName.replace(/[\\s]+|[\\.]/g, \"\");\r\n return request;\r\n }\r\n\r\n // The actual validation instructions for the gas day and customer fields\r\n private paramValidator(): ParamValidator {\r\n const validator = ParamValidator.Standard();\r\n validator.isGasDay('gasDay');\r\n validator.isNumber('enterpriseId');\r\n return validator;\r\n }\r\n\r\n // We've got the file, give it to the user\r\n downloadFile(response: HttpResponse) {\r\n // const mediaType = response.headers.get('content-type');\r\n // const blob = new Blob([response.body], {type: mediaType});\r\n\r\n // from the content disposition, should be second element with =\"{filename}\" surrounding it\r\n // const filename = response.headers.get('content-disposition').split(';')[1].trim().split('=')[1].replace(/\"/g, '');\r\n // FileSaver.saveAs(blob, filename);\r\n }\r\n\r\n protected buildQueryParams(): any {\r\n // do nothing\r\n }\r\n\r\n protected performSearch(): Observable {\r\n // do nothing\r\n return undefined;\r\n }\r\n\r\n protected resetSortOrder(): void {\r\n // do nothing\r\n }\r\n\r\n protected setSearchParams(typedParams: TypedParams): void {\r\n // do nothing\r\n }\r\n\r\n // This method checks that there is an enterprise ID, and if so, fetches the acompanying Enterprise object.\r\n updateEnterprise() {\r\n if (typeof this.model.searchParams.enterpriseId === \"number\") {\r\n this.enterpriseService.get(this.model.searchParams.enterpriseId).subscribe( result =>{\r\n this.model.enterprise = result;\r\n });\r\n }\r\n }\r\n}\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n","import { Injectable } from '@angular/core';\r\nimport {NominationResourceService} from \"@shared/resources/nominations-resource.service\";\r\nimport {Observable} from \"rxjs\";\r\n\r\n@Injectable()\r\nexport class NominationGasAccountService {\r\n\r\n constructor(private nominationsResource: NominationResourceService) { }\r\n\r\n createProductionSetupGasAccounts() : Observable{\r\n return this.nominationsResource.post('/gasAccount/productionSetup', null, true);\r\n }\r\n}\r\n","import {Component, OnInit, ViewChild} from '@angular/core';\r\nimport {BaseComponent} from \"@model/base-component\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {AlertService} from \"@shared/services/webapp/alert/alert.service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {NgForm} from \"@angular/forms\";\r\nimport {NominationPipelineService} from \"@shared/services/nomination/nomination-pipeline/nomination-pipeline.service\";\r\nimport {forkJoin, Observable} from \"rxjs\";\r\nimport {CommonDataPipelinesService} from \"@shared/services/common-data/pipelines/common-data-pipelines.service\";\r\nimport {CommonDataEnterpriseSearchParams, Enterprise, EnterpriseService} from \"@shared/services/common-data/enterprise/enterprise.service\";\r\nimport {BillableServiceService} from \"@shared/services/nomination/billable-service/billable-service.service\";\r\nimport {AccountsBillableServicesService} from \"@shared/services/accounts/billable-service/accounts-billable-services.service\";\r\nimport {NominationGasAccountService} from \"@shared/services/nomination/nomination-gas-account/nomination-gas-account.service\";\r\nimport {NominationGroupService} from \"@shared/services/contracts/nomination-group/nomination-group.service\";\r\nimport {NominationPipeline} from \"@model/nomination-pipeline\";\r\n\r\nclass ProductionSetupViewModel {\r\n effectiveGasMonth: GasMonth;\r\n enterprises: Enterprise[];\r\n pipelineOwnerEnterpriseId: number;\r\n}\r\n\r\n@Component({\r\n selector: 'app-production-setup',\r\n templateUrl: './production-setup.component.html',\r\n styleUrls: ['./production-setup.component.css']\r\n})\r\nexport class ProductionSetupComponent extends BaseComponent implements OnInit {\r\n model: ProductionSetupViewModel;\r\n originalModel: ProductionSetupViewModel;\r\n pipeline: NominationPipeline;\r\n\r\n @ViewChild('f')\r\n form: NgForm;\r\n\r\n constructor(protected appService: AppService,\r\n protected alertService: AlertService,\r\n protected accountsBillableServicesService: AccountsBillableServicesService,\r\n private billableServiceService: BillableServiceService,\r\n private commonDataPipelineService: CommonDataPipelinesService,\r\n private enterpriseService: EnterpriseService,\r\n private nominationPipelineService: NominationPipelineService,\r\n private nominationGasAccountService: NominationGasAccountService,\r\n private nominationGroupService: NominationGroupService,\r\n private sessionService: SessionService) {\r\n super(appService);\r\n }\r\n\r\n ngOnInit() {\r\n super.setTitle(\"Production Setup\");\r\n\r\n this.model = ({\r\n enterprises: []\r\n } as ProductionSetupViewModel);\r\n this.originalModel = new ProductionSetupViewModel();\r\n\r\n this.loadResources();\r\n }\r\n\r\n loadResources() {\r\n this.appService.hideMenu();\r\n this.appService.clearMessages();\r\n\r\n this.pipeline = this.sessionService.getPipeline();\r\n this.model.effectiveGasMonth = this.originalModel.effectiveGasMonth = GasMonth.fromGasDay(GasDay.parse(this.pipeline.earliestSelectableGasDay));\r\n this.model.pipelineOwnerEnterpriseId = this.originalModel.pipelineOwnerEnterpriseId = this.pipeline.legalSignorEnterpriseCid;\r\n\r\n const commonDataEnterpriseSearchParams = new CommonDataEnterpriseSearchParams();\r\n commonDataEnterpriseSearchParams.onlyActiveAndNotTerminated = true;\r\n commonDataEnterpriseSearchParams.pipeline = this.pipeline.code;\r\n\r\n this.enterpriseService.getAll(commonDataEnterpriseSearchParams).subscribe(enterprises => {\r\n this.model.enterprises = enterprises;\r\n });\r\n }\r\n\r\n updateClicked(){\r\n this.alertService.clearMessages();\r\n\r\n const serviceCalls: Observable[] = [\r\n this.commonDataPipelineService.updateProductionSetup(this.model.effectiveGasMonth, this.model.pipelineOwnerEnterpriseId)\r\n , this.nominationPipelineService.updateProductionSetup(this.model.effectiveGasMonth, this.model.pipelineOwnerEnterpriseId)\r\n , this.accountsBillableServicesService.updateEffectiveGasDays(this.model.effectiveGasMonth.start())\r\n , this.billableServiceService.updateEffectiveGasDays(this.model.effectiveGasMonth.start())\r\n ];\r\n\r\n forkJoin(serviceCalls).subscribe(() => {\r\n this.alertService.addSuccessMessage('Update Successful', 'The pipeline and billing month records have been updated.');\r\n });\r\n }\r\n\r\n isUpdateDisabled(){\r\n return this.model.effectiveGasMonth.isEqual(this.originalModel.effectiveGasMonth) && this.model.pipelineOwnerEnterpriseId === this.originalModel.pipelineOwnerEnterpriseId;\r\n }\r\n\r\n createPipelineGasAccountsClicked(){\r\n this.alertService.clearMessages();\r\n\r\n const createProductionSetupGasAccounts$ = this.nominationGasAccountService.createProductionSetupGasAccounts();\r\n const createProductionSetupNominationGroup$ = this.nominationGroupService.createProductionSetupNominationGroup(this.model.pipelineOwnerEnterpriseId, this.pipeline.effectiveGasDay);\r\n\r\n forkJoin([createProductionSetupGasAccounts$, createProductionSetupNominationGroup$])\r\n .subscribe(([createProductionSetupGasAccounts, createProductionSetupNominationGroup]) => {\r\n let message: string = createProductionSetupGasAccounts ? 'The default Gas Accounts were created.' : 'The default Gas Accounts already exist so no changes were made.';\r\n message += createProductionSetupNominationGroup ? ' The VLT Nomination Group was created.' : ' The VLT Nomination Group already existed.';\r\n this.alertService.addSuccessMessage('Update Successful', message);\r\n });\r\n }\r\n}\r\n","import {Route} from '@angular/router';\r\nimport {GctsComponent} from './gcts.component';\r\n\r\nimport {AssumeIdentityComponent} from './assume-identity/assume-identity.component';\r\nimport {HealthComponent} from './health/health.component';\r\nimport {ReportingRoutes} from './reporting/reporting.routes';\r\nimport {AdministrationRoutes} from './administration/administration.routes';\r\nimport {FlowingGasRoutes} from './flowinggas/flowinggas.routes';\r\nimport {InvoicingRoutes} from './invoicing/invoicing.routes';\r\nimport {AuthorizationService} from '@shared/services/webapp/authorization/authorization.service';\r\nimport {TestPageComponent} from './test-page/test-page.component';\r\nimport {HomeRoutes} from './home/home.routes';\r\nimport {NominationRoutes} from './nomination/nomination.routes';\r\nimport {ManageLocationRoutes} from './managelocation/managelocation.routes';\r\nimport {ErrorComponent} from \"@shared/components/error/error.component\";\r\nimport {ServiceUnavailableComponent} from \"app/service-unavailable/service-unavailable.component\";\r\nimport {AccountsRoutes} from \"app/gcts/contracts/accounts.routes\";\r\nimport {CreditRoutes} from \"app/gcts/credit/credit.routes\";\r\nimport {ProductionSetupComponent} from \"app/gcts/production-setup/production-setup.component\";\r\n\r\nexport const GctsRoutes: Route[] = [\r\n {\r\n path: 'app/:pipeline', component: GctsComponent,\r\n children: [\r\n ...AdministrationRoutes,\r\n ...AccountsRoutes,\r\n ...CreditRoutes,\r\n ...FlowingGasRoutes,\r\n ...InvoicingRoutes,\r\n ...ReportingRoutes,\r\n ...HomeRoutes,\r\n ...NominationRoutes,\r\n ...ManageLocationRoutes,\r\n {\r\n path: 'assumeidentity', component: AssumeIdentityComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['AssumeCustomerIdentity-Write']}\r\n },\r\n {\r\n path: 'health',\r\n component: HealthComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['Health-Read']}\r\n },\r\n {\r\n path: 'testpage',\r\n component: TestPageComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['TestPage-Read', 'StageMeasurements-Write']}\r\n },\r\n {\r\n path: 'productionSetup',\r\n component: ProductionSetupComponent,\r\n canActivate: [AuthorizationService],\r\n data: {capabilities: ['ProductionSetup-Write']}\r\n },\r\n {\r\n path: 'error',\r\n component: ErrorComponent\r\n },\r\n {\r\n path: '503',\r\n component: ServiceUnavailableComponent\r\n }\r\n ]\r\n }\r\n];\r\n","\r\n
\r\n {{getTitle()}}\r\n
\r\n
\r\n\r\n\r\n
\r\n\r\n
\r\n
\r\n Configuration\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n Steps\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
StepActionDescription
UPDATE HOME PAGECLICK HEREUpdate Home Page contents for CGL.
CREATE PIPELINE GAS ACCOUNTSThe SLP, OLP, FV, VLT, WO, & TTM Pipeline Gas Accounts for the Pipeline Owner will be defined in both Nominations and Flowing Gas services. A VLT Nomination Group will also be created if it does not exist.
SETUP BILLING MONTHCLICK HEREOpen Billing Month page to setup Billing Month for CGL.
ADD SHIPPER HUBSCLICK HERE\r\n Open View Accounts page for CGL to create new Shipper Hub Accounts for the following Enterprises:\r\n
    \r\n
  • Shell Canada Energy
  • \r\n
  • Diamond LNG Canada Partnership
  • \r\n
  • KOGAS Canada LNG Ltd.
  • \r\n
  • North Montney LNG Limited Partnership
  • \r\n
  • PetroChina Kitimat LNG Limited Partnership
  • \r\n
  • Coastal GasLink Pipeline Limited Partnership
  • \r\n
\r\n
ADD PIPELINE VARIANCE ACCOUNTSCLICK HERE\r\n Open View Accounts page for CGL to create new Pipeline Variance Accounts for the following Enterprises:\r\n
    \r\n
  • Shell Canada Energy
  • \r\n
  • Diamond LNG Canada Partnership
  • \r\n
  • North Montney LNG Limited Partnership
  • \r\n
  • PetroChina Kitimat LNG Limited Partnership
  • \r\n
  • LNG Canada Development Inc.
  • \r\n
  • Nova Gas Transmission Ltd.
  • \r\n
\r\n
LOAD LOCATIONSCLICK HEREOpen Load Locations page to upload locations for CGL.
LOAD LOCATION PARAMETERSCLICK HEREOpen Load Location Parameters page to upload location parameters for CGL.
PUBLISH LOCATIONSCLICK HEREOpen Publish Locations page to publish locations for CGL.
SEED AUTO BALANCE LOCATION ORDER (BY PIPELINE)CLICK HERE\r\n
Load Auto Balance Location Order required for Auto Balancing into Nominations.
\r\n
SEED CONFIRMATION AUTO BALANCE LOCATION ORDER (BY PIPELINE)CLICK HERE\r\n
Load Confirmation Auto Balance Location Order required for Auto Balancing into Nominations.
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n","
\r\n \"TC\r\n
\r\n\r\n\r\n","import {Component, Inject, OnInit} from '@angular/core';\r\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\r\nimport {UserService} from \"../../services/webapp/user/user-service\";\r\nimport * as _ from \"lodash\";\r\nimport {AuthenticationService} from \"@shared/services/webapp/authentication/authentication.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {NominationSystemService} from \"@shared/services/nomination/nomination-system/nomination-system.service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {Title} from \"@angular/platform-browser\";\r\nimport {ConfigService} from \"@shared/services/webapp/configuration/configuration.service\";\r\nimport {NominationPipelineService} from \"@shared/services/nomination/nomination-pipeline/nomination-pipeline.service\";\r\nimport {NominationPipeline} from \"@model/nomination-pipeline\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\n\r\nimport { OKTA_AUTH } from '@okta/okta-angular';\r\nimport { OktaAuth } from '@okta/okta-auth-js';\r\n\r\nclass LoginModel {\r\n username: string;\r\n password: string;\r\n}\r\n\r\n@Component({\r\n selector: 'app-login',\r\n templateUrl: 'login.component.html',\r\n styleUrls: ['login.component.css']\r\n})\r\nexport class LoginComponent implements OnInit {\r\n public static PASSWORD_ERROR_MESSAGE: string = 'User password has expired';\r\n\r\n model: LoginModel;\r\n isInvalidCredentials: boolean;\r\n hasServerError: boolean;\r\n returnUrl: string;\r\n isInternal: boolean;\r\n pipelines: NominationPipeline[];\r\n\r\n constructor(protected appService: AppService,\r\n private router: Router,\r\n private activatedRoute: ActivatedRoute,\r\n private userService: UserService,\r\n private authenticationService: AuthenticationService,\r\n private nominationSystemService: NominationSystemService,\r\n private nominationPipelineService: NominationPipelineService,\r\n private sessionService: SessionService,\r\n private titleService: Title,\r\n private configService: ConfigService,\r\n @Inject(OKTA_AUTH) private oktaAuth: OktaAuth) {\r\n }\r\n\r\n ngOnInit() {\r\n this.nominationSystemService.applicationServerTimes().subscribe(times => {\r\n this.nominationPipelineService.get(GasDay.parse(times.clockTime, false))\r\n .subscribe(pipelines => {\r\n this.pipelines = pipelines;\r\n }, () => {\r\n this.hasServerError = true;\r\n });\r\n });\r\n this.titleService.setTitle('Login - ' + this.configService.data.applicationAcronym);\r\n this.model = new LoginModel();\r\n this.activatedRoute.queryParams.subscribe(params => this.handleActiveRoute(params));\r\n this.authenticationService.isInternal().subscribe(response => this.isInternal = response);\r\n }\r\n\r\n loginByOkta(): void {\r\n this.clearErrorMessages();\r\n this.oktaAuth.signInWithRedirect();\r\n }\r\n\r\n // loginByCredentials() {\r\n // this.clearErrorMessages();\r\n // this.model.username = this.model.username.trim();\r\n // this.model.password = this.model.password.trim();\r\n //\r\n // this.userService.loginByCredentials(this.model.username, this.model.password)\r\n // // TODO: Need to be able to redirect to originally requested url, not just home!\r\n // .subscribe(() => this.redirectToHome(), (err) => this.handleError(err));\r\n // }\r\n //\r\n // loginByDomain(): void {\r\n // this.clearErrorMessages();\r\n // this.userService.loginByDomain().subscribe(() => this.redirectToHome(), () => this.handleError());\r\n // }\r\n\r\n private clearErrorMessages() {\r\n this.isInvalidCredentials = false;\r\n this.hasServerError = false;\r\n }\r\n\r\n private redirectToHome() {\r\n if (!_.isNil(this.returnUrl)) {\r\n this.router.navigateByUrl(this.returnUrl).then(() => {});\r\n } else {\r\n const userPipelines = _.filter(this.pipelines, p => this.userService.user.hasRolesIn(p));\r\n const pipeline = userPipelines.find((p => p.code === 'ML')) ?? userPipelines[0];\r\n this.sessionService.setPipeline(pipeline);\r\n this.router.navigate(['/app', pipeline.code, 'home']).then(() => {});\r\n }\r\n }\r\n\r\n private handleError(error? : any) {\r\n // TODO: Handle the various errors (login failed, server error, etc.) The gateway response errors need to be rewritten before this can work\r\n this.isInvalidCredentials = true;\r\n\r\n this.HandleChangePasswordRedirect(error);\r\n }\r\n\r\n private HandleChangePasswordRedirect(error: any) {\r\n if (error?.status === 302 && error?.error === LoginComponent.PASSWORD_ERROR_MESSAGE) {\r\n this.clearErrorMessages();\r\n\r\n let changePasswordUrl = '';\r\n if (this.appService.getEnvironment() === 'AWS-Prod') {\r\n changePasswordUrl = 'https://admin.tcenergy.com';\r\n } else { // Developer Test\r\n changePasswordUrl = 'https://admin-test.tcenergy.com';\r\n }\r\n alert(\"As per current regulatory requirements, your password has expired. You will now be redirected to reset your password.\");\r\n window.location.href = `${changePasswordUrl}/ICSA/ChangePassword?USERNAME=${this.model.username}`;\r\n }\r\n }\r\n\r\n private handleActiveRoute(params: Params) {\r\n this.returnUrl = params['returnUrl'];\r\n }\r\n}\r\n","import {Component, OnInit} from '@angular/core';\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {BaseComponent} from \"@model/base-component\";\r\n\r\n@Component({\r\n selector: 'app-forbidden',\r\n templateUrl: 'forbidden.component.html',\r\n styleUrls: ['forbidden.component.css']\r\n})\r\nexport class ForbiddenComponent extends BaseComponent implements OnInit {\r\n\r\n constructor(protected appService: AppService) {\r\n super(appService);\r\n }\r\n\r\n ngOnInit() {\r\n super.setTitle(\"Forbidden\");\r\n }\r\n\r\n}\r\n","
403
\r\n
Forbidden
\r\n","import {Component, OnInit} from '@angular/core';\r\nimport {BaseComponent} from \"@model/base-component\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\n\r\n@Component({\r\n selector: 'app-not-found',\r\n templateUrl: 'not-found.component.html',\r\n styleUrls: ['not-found.component.css']\r\n})\r\nexport class NotFoundComponent extends BaseComponent implements OnInit {\r\n\r\n constructor(protected appService: AppService) {\r\n super(appService);\r\n }\r\n\r\n ngOnInit() {\r\n super.setTitle(\"Not Found\");\r\n }\r\n}\r\n","
404
\r\n
Not Found
\r\n","import {Component, OnInit} from '@angular/core';\r\nimport {BaseComponent} from \"@model/base-component\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\n\r\n@Component({\r\n selector: 'app-health-check',\r\n templateUrl: 'health-check.component.html',\r\n styleUrls: ['health-check.component.css']\r\n})\r\nexport class HealthCheckComponent extends BaseComponent implements OnInit {\r\n\r\n constructor(protected appService: AppService) {\r\n super(appService);\r\n }\r\n\r\n ngOnInit() {\r\n super.setTitle(\"Health Check\");\r\n }\r\n}\r\n","

\r\n Health Check!\r\n

\r\n","import {Injectable} from \"@angular/core\";\r\nimport {ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot} from \"@angular/router\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\n\r\n@Injectable()\r\nexport class EmptyRedirect implements CanActivate {\r\n\r\n constructor(private router: Router,\r\n private sessionService: SessionService) {}\r\n\r\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {\r\n const code = this.sessionService.getPipeline().code;\r\n this.router.navigate(['/app', code, 'home']).then(() => {});\r\n return true;\r\n }\r\n\r\n}\r\n","import {NgModule} from '@angular/core';\r\nimport {RouterModule, Routes} from '@angular/router';\r\nimport {GctsRoutes} from \"./gcts/gcts.routes\";\r\nimport {LoginComponent} from \"@shared/components/login/login.component\";\r\nimport {LogoutComponent} from \"@shared/components/logout/logout.component\";\r\nimport {ForbiddenComponent} from \"./forbidden/forbidden.component\";\r\nimport {NotFoundComponent} from \"./not-found/not-found.component\";\r\nimport {HealthCheckComponent} from \"./health-check/health-check.component\";\r\nimport {ServiceUnavailableComponent} from \"app/service-unavailable/service-unavailable.component\";\r\nimport {EmptyRedirect} from \"@shared/services/webapp/app/EmptyRedirect\";\r\n\r\nconst routes: Routes = [\r\n ...GctsRoutes,\r\n {path: 'login', component: LoginComponent},\r\n {path: 'logout', component: LogoutComponent},\r\n {path: 'healthcheck/ping', component: HealthCheckComponent},\r\n {path: '403', component: ForbiddenComponent},\r\n {path: '404', component: NotFoundComponent},\r\n {path: '503', component: ServiceUnavailableComponent},\r\n {\r\n path: '',\r\n canActivate: [EmptyRedirect],\r\n component: NotFoundComponent // this does nothing, just fills the requirement to have a component\r\n },\r\n {\r\n path: 'forceLoginForm',\r\n redirectTo: '/app/ML/home/forceLoginForm',\r\n pathMatch: 'full'\r\n },\r\n {path: '**', component: NotFoundComponent}];\r\n\r\n@NgModule({\r\n imports: [\r\n RouterModule.forRoot(routes, {useHash: true, initialNavigation: \"disabled\", onSameUrlNavigation: \"reload\", enableTracing: false})\r\n ],\r\n exports: [RouterModule],\r\n providers: []\r\n})\r\nexport class AppRoutingModule {\r\n}\r\n","import {NgModule} from \"@angular/core\";\r\nimport {SecureItemDirective} from './secure-item/secure-item.directive';\r\nimport {ContentDisableDirective} from './content-disable/content-disable.directive';\r\nimport {FormInputMatchDirective} from './form-input-match/form-input-match.directive';\r\nimport {InsecureItemDirective} from \"./secure-item/insecure-item.directive\";\r\nimport {SecureItemOldDirective} from \"./secure-item/secure-item-old.directive\";\r\nimport {BackgroundColorDirective} from \"app/shared/directives/background-color/background-color.directive\";\r\nimport {DebounceClickDirective} from \"app/shared/directives/debounce-click/debounce-click.directive\";\r\nimport {NumberMinValueValidatorDirective} from \"@shared/directives/form-input-number-min/form-input-number-min\";\r\nimport {NumberMaxValueValidatorDirective} from \"@shared/directives/form-input-number-max/form-input-number-max\";\r\n\r\n@NgModule({\r\n declarations: [\r\n SecureItemDirective,\r\n InsecureItemDirective,\r\n ContentDisableDirective,\r\n FormInputMatchDirective,\r\n SecureItemOldDirective,\r\n BackgroundColorDirective,\r\n DebounceClickDirective,\r\n NumberMinValueValidatorDirective,\r\n NumberMaxValueValidatorDirective\r\n ],\r\n exports: [\r\n SecureItemDirective,\r\n InsecureItemDirective,\r\n ContentDisableDirective,\r\n FormInputMatchDirective,\r\n SecureItemOldDirective,\r\n BackgroundColorDirective,\r\n DebounceClickDirective,\r\n NumberMinValueValidatorDirective,\r\n NumberMaxValueValidatorDirective\r\n ]\r\n})\r\nexport class DirectivesModule {\r\n}\r\n","import {BooleanAsYesNoPipe} from \"./boolean-as-yes-no/boolean-as-yes-no.pipe\";\r\nimport {DateCycleToGasDayFormatPipe} from \"./date-cycle-to-gas-day-format/date-cycle-to-gas-day-format.pipe\";\r\nimport {DateFormatPipe} from \"./date-format/date-format.pipe\";\r\nimport {DisplayNamePipe} from './display-name/display-name.pipe';\r\nimport {GasDayFormatPipe} from \"./gasday-format/gasday-format.pipe\";\r\nimport {GasMonthFormatPipe} from \"./gasmonth-format/gasmonth-format.pipe\";\r\nimport {MultiDisplayNamePipe} from './multi-display-name/multi-display-name.pipe';\r\nimport {NgModule} from \"@angular/core\";\r\nimport {SafeHtmlPipe} from './safe-html/safe-html.pipe';\r\nimport {WhenEmptyUsePipe} from './when-empty-use/when-empty-use.pipe';\r\nimport {DateToGasDayFormatPipe} from \"./date-to-gas-day-format/date-to-gas-day-format.pipe\";\r\nimport {AbbreviateEventPipe} from \"./abbreviate-event/abbreviate-event\";\r\n\r\nimport {NumberFormatPipe} from \"./number-format/number-format.pipe\";\r\nimport {NumberLessThanFormatPipe} from \"@shared/pipes/number-less-than-format/number-less-than-format.pipe\";\r\nimport {NegativeNumberParenthesisFormatPipe} from \"@shared/pipes/negative-number-parenthesis-format/negative-number-parenthesis-format.pipe\";\r\nimport {SpaceUppercasePipe} from \"@shared/pipes/space-uppercase/space-uppercase.pipe\";\r\nimport {NumberOrAllFormatPipe} from \"@shared/pipes/number-or-all/number-or-all.pipe\";\r\nimport { FilterPipe } from './filter/filter.pipe';\r\nimport {NegativeParenthesisTwoDecimalsPipe} from \"@shared/pipes/negative-parenthesis-two-decimals/negative-parenthesis-two-decimals.pipe\";\r\nimport { DateTimeFormatPipe } from './date-time-format/date-time-format.pipe';\r\n\r\n@NgModule({\r\n declarations: [\r\n AbbreviateEventPipe,\r\n BooleanAsYesNoPipe,\r\n DateCycleToGasDayFormatPipe,\r\n DateFormatPipe,\r\n DateToGasDayFormatPipe,\r\n DisplayNamePipe,\r\n GasDayFormatPipe,\r\n GasMonthFormatPipe,\r\n MultiDisplayNamePipe,\r\n NumberFormatPipe,\r\n SafeHtmlPipe,\r\n WhenEmptyUsePipe,\r\n NumberLessThanFormatPipe,\r\n NumberOrAllFormatPipe,\r\n NegativeNumberParenthesisFormatPipe,\r\n SpaceUppercasePipe,\r\n FilterPipe,\r\n NegativeParenthesisTwoDecimalsPipe,\r\n DateTimeFormatPipe\r\n ],\r\n exports: [\r\n AbbreviateEventPipe,\r\n BooleanAsYesNoPipe,\r\n DateCycleToGasDayFormatPipe,\r\n DateFormatPipe,\r\n DateTimeFormatPipe,\r\n DateToGasDayFormatPipe,\r\n DisplayNamePipe,\r\n GasDayFormatPipe,\r\n GasMonthFormatPipe,\r\n MultiDisplayNamePipe,\r\n NumberFormatPipe,\r\n SafeHtmlPipe,\r\n WhenEmptyUsePipe,\r\n NumberLessThanFormatPipe,\r\n NumberOrAllFormatPipe,\r\n NegativeNumberParenthesisFormatPipe,\r\n SpaceUppercasePipe,\r\n FilterPipe,\r\n NegativeParenthesisTwoDecimalsPipe\r\n ]\r\n})\r\nexport class PipesModule {\r\n}\r\n","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {BrowserAnimationsModule} from '@angular/platform-browser/animations';\r\nimport {AppRoutingModule} from \"app/app.routes\";\r\nimport {DirectivesModule} from \"../directives/directives.module\";\r\nimport {ContentComponent} from \"./content/content.component\";\r\nimport {HeaderComponent} from \"./header/header.component\";\r\nimport {MenuComponent} from \"./menu/menu.component\";\r\nimport {MenuButtonComponent} from \"./menu-button/menu-button.component\";\r\nimport {FormsModule} from \"@angular/forms\";\r\nimport {MultiSelectComponent} from './multi-select/multi-select.component';\r\nimport {PipelineDropdownComponent} from './pipeline-dropdown/pipeline-dropdown.component';\r\nimport {ToggleRowComponent} from './toggle-row/toggle-row.component';\r\nimport {PipesModule} from \"../pipes/pipes.module\";\r\nimport {ContentEditorComponent} from './content-editor/content-editor.component';\r\nimport {LogoutComponent} from \"./logout/logout.component\";\r\nimport {LoginComponent} from \"./login/login.component\";\r\nimport {\r\n DxDateBoxModule, DxSelectBoxModule, DxSwitchModule, DxTagBoxModule, DxTextBoxModule,\r\n DxRadioGroupModule, DxListModule, DxPopupModule, DxValidatorModule } from 'devextreme-angular';\r\nimport {GasDayPickerComponent} from \"./gas-day-picker/gas-day-picker.component\";\r\nimport {GasCyclePickerComponent} from \"./gas-cycle-picker/gas-cycle-picker.component\";\r\nimport {SelectComponent} from './select/select.component';\r\nimport {SwitchComponent} from './switch/switch/switch.component';\r\nimport {SectionLoadOverlayComponent} from './section-load-overlay/section-load-overlay.component';\r\nimport {BackToTopComponent} from './back-to-top/back-to-top.component';\r\nimport {GasMonthPickerComponent} from './gas-month-picker/gas-month-picker.component';\r\nimport { ErrorComponent } from './error/error.component';\r\nimport { YesNoCancelModalComponent } from './yes-no-cancel-modal/yes-no-cancel-modal.component';\r\nimport { TimePickerComponent } from './time-picker/time-picker.component';\r\nimport {ModalComponent} from \"./modal/modal.component\";\r\nimport { EmailSubscriptionComponent } from './email-subscription/email-subscription.component';\r\nimport { FormErrorsComponent } from './form-errors/form-errors.component';\r\nimport {PageContentComponent} from \"./page-content/page-content.component\";\r\nimport { AlertComponent } from './alert/alert.component';\r\nimport { SessionTimeoutModalComponent } from './session-timeout-modal/session-timeout-modal.component';\r\nimport {GoogleTagManagerComponent} from \"@shared/components/analytics/google-tag-manager.component\";\r\nimport {DxiValidationRuleModule} from \"devextreme-angular/ui/nested\";\r\nimport {DateTimePickerComponent} from \"@shared/components/date-time-picker/date-time-picker.component\";\r\nimport {ExpandCollapseComponent} from \"@shared/components/expand-collapse/expand-collapse.component\";\r\nimport {NumericOnlyInputComponent} from \"@shared/components/numeric-only-input/numeric-only-input.component\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n BrowserAnimationsModule,\r\n FormsModule,\r\n AppRoutingModule,\r\n DirectivesModule,\r\n PipesModule,\r\n DxDateBoxModule,\r\n DxSelectBoxModule,\r\n DxTagBoxModule,\r\n DxTextBoxModule,\r\n DxSwitchModule,\r\n DxPopupModule,\r\n DxRadioGroupModule,\r\n DxiValidationRuleModule,\r\n DxValidatorModule,\r\n DxListModule,\r\n // GctsCommonModule\r\n ],\r\n declarations: [\r\n ContentComponent,\r\n HeaderComponent,\r\n MenuComponent,\r\n MenuButtonComponent,\r\n AlertComponent,\r\n ToggleRowComponent,\r\n MultiSelectComponent,\r\n PipelineDropdownComponent,\r\n ContentEditorComponent,\r\n LogoutComponent,\r\n LoginComponent,\r\n GasDayPickerComponent,\r\n GasCyclePickerComponent,\r\n SelectComponent,\r\n SwitchComponent,\r\n SectionLoadOverlayComponent,\r\n BackToTopComponent,\r\n GasMonthPickerComponent,\r\n ErrorComponent,\r\n YesNoCancelModalComponent,\r\n TimePickerComponent,\r\n ModalComponent,\r\n EmailSubscriptionComponent,\r\n FormErrorsComponent,\r\n PageContentComponent,\r\n SessionTimeoutModalComponent,\r\n GoogleTagManagerComponent,\r\n DateTimePickerComponent,\r\n ExpandCollapseComponent,\r\n NumericOnlyInputComponent\r\n ],\r\n exports: [\r\n ContentComponent,\r\n HeaderComponent,\r\n MenuComponent,\r\n MenuButtonComponent,\r\n AlertComponent,\r\n ToggleRowComponent,\r\n MultiSelectComponent,\r\n PipelineDropdownComponent,\r\n ContentEditorComponent,\r\n LogoutComponent,\r\n LoginComponent,\r\n GasDayPickerComponent,\r\n GasCyclePickerComponent,\r\n SelectComponent,\r\n SwitchComponent,\r\n DirectivesModule,\r\n BackToTopComponent,\r\n GasMonthPickerComponent,\r\n YesNoCancelModalComponent,\r\n TimePickerComponent,\r\n ModalComponent,\r\n EmailSubscriptionComponent,\r\n FormErrorsComponent,\r\n PageContentComponent,\r\n GoogleTagManagerComponent,\r\n DateTimePickerComponent,\r\n ExpandCollapseComponent,\r\n NumericOnlyInputComponent\r\n ]\r\n})\r\nexport class ComponentsModule {\r\n}\r\n","import {NgModule} from \"@angular/core\";\r\n\r\nimport {CommondataResourceService} from \"./commondata-resource.service\";\r\nimport {NominationResourceService} from \"./nominations-resource.service\";\r\nimport {FlowinggasResourceService} from \"./flowinggas-resource.service\";\r\nimport {InvoicingResourceService} from \"./invoicing-resource.service\";\r\nimport {ContractsResourceService} from \"./contracts-resource.service\";\r\nimport {ScheduledJobsResourceService} from \"./scheduledjobs-resource.service\";\r\nimport {CreditResourceService} from \"@shared/resources/credit-resource.service\";\r\n\r\n@NgModule({\r\n providers: [\r\n CommondataResourceService,\r\n ContractsResourceService,\r\n CreditResourceService,\r\n FlowinggasResourceService,\r\n NominationResourceService,\r\n InvoicingResourceService,\r\n ScheduledJobsResourceService\r\n ]\r\n})\r\nexport class ResourceServicesModule {\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {HttpEvent, HttpHandler, HttpInterceptor, HttpRequest} from \"@angular/common/http\";\r\nimport {Observable} from \"rxjs\";\r\nimport {UserService} from \"../user/user-service\";\r\n\r\n/*\r\n * This interceptor injects the current user's authorization details into the HTTP Header\r\n * for all outbound requests.\r\n */\r\n@Injectable()\r\nexport class JwtTokenInterceptor implements HttpInterceptor {\r\n\r\n constructor(private userService: UserService) {\r\n }\r\n\r\n intercept(request: HttpRequest, next: HttpHandler): Observable> {\r\n if (this.userService.isLoggedIn()) {\r\n request = request.clone({\r\n setHeaders: {\r\n Authorization: `Bearer ${this.userService.getUserResourceToken()}`\r\n }\r\n });\r\n return next.handle(request);\r\n } else {\r\n return next.handle(request);\r\n }\r\n }\r\n}\r\n","export class RestRequestTypes {\r\n public static readonly JSONP = \"JSONP\";\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {HttpEvent, HttpHandler, HttpInterceptor, HttpRequest} from \"@angular/common/http\";\r\nimport {Observable} from \"rxjs\";\r\nimport {RestRequestTypes} from \"@model/rest-request-type\";\r\n\r\n/*\r\n * BaseInterceptor to be used in scenarios that do not want to modify JSONP calls.\r\n */\r\n@Injectable()\r\nexport abstract class BaseInterceptor implements HttpInterceptor {\r\n\r\n intercept(request: HttpRequest, next: HttpHandler): Observable> {\r\n if (request.method === RestRequestTypes.JSONP) {\r\n return next.handle(request);\r\n }\r\n\r\n return this.process(request, next);\r\n }\r\n\r\n protected abstract process(request: HttpRequest, next: HttpHandler): Observable>;\r\n}\r\n","import {finalize} from 'rxjs/operators';\r\nimport {Injectable} from '@angular/core';\r\nimport {HttpEvent, HttpHandler, HttpRequest} from \"@angular/common/http\";\r\nimport {Observable} from \"rxjs\";\r\nimport {LoadOverlayService} from \"../load-overlay/load-overlay.service\";\r\nimport {BaseInterceptor} from \"./base-interceptor\";\r\n\r\n/*\r\n * This interceptor applies the loading overlay for all outbound, non-JSONP (HttpClient) requests.\r\n */\r\n@Injectable()\r\nexport class OverlayInterceptor extends BaseInterceptor {\r\n constructor(private loadOverlayService: LoadOverlayService) {\r\n super();\r\n }\r\n\r\n protected process(request: HttpRequest, next: HttpHandler): Observable> {\r\n // Seb - JSONP does tom-foolery with how the response callback is invoked.\r\n // I'm seeing that JSONP requests do not fire Observable completed events\r\n // so the modal will start, but never finish.\r\n //\r\n // Currently ignoring JSONP with regards to Overlays for the time being. This could be revisisted\r\n // should we utilize JSONP outside the context of Auth Token handshaking. As of right now I believe\r\n // we are only using it for \"infrequently\" used calls.\r\n this.loadOverlayService.pushHttpRequest();\r\n\r\n return next.handle(request).pipe(finalize(() => this.loadOverlayService.popHttpRequest()));\r\n }\r\n}\r\n","import {concatMap} from 'rxjs/operators';\r\nimport {Injectable} from \"@angular/core\";\r\nimport {HttpEvent, HttpHandler, HttpRequest} from \"@angular/common/http\";\r\nimport {UserService} from \"../user/user-service\";\r\nimport {Observable} from \"rxjs\";\r\nimport {BaseInterceptor} from \"./base-interceptor\";\r\nimport {AuthenticationService} from \"../authentication/authentication.service\";\r\nimport {environment} from \"../../../../../environments/environment\";\r\nimport {User} from \"@model/user\";\r\n\r\n/*\r\n * This interceptor checks that the current user's session is still valid\r\n * and will take steps to re-initialize a session (login/auto-login) if session is expired.\r\n */\r\n@Injectable()\r\nexport class LoginInterceptor extends BaseInterceptor {\r\n\r\n protected observable: Observable;\r\n\r\n constructor(private userService: UserService, private authenticationService: AuthenticationService) {\r\n super();\r\n }\r\n\r\n /*\r\n * This forces the login of the user before their actual request.\r\n * It may result in pulling existing tokens from local storage, auto-login (internal user),\r\n * or forwarding to the login page.\r\n */\r\n protected process(request: HttpRequest, next: HttpHandler): Observable> {\r\n if (this.isAnIgnoredUri(request.url)) {\r\n return next.handle(request);\r\n }\r\n\r\n // const userService = this.injector.get(UserService);\r\n return this.userService.getUser().pipe(\r\n concatMap(() => next.handle(request)));\r\n }\r\n\r\n /*\r\n * Any URIs used in the getUser call and its dependencies should be excluded\r\n * Otherwise it will create an infinite loop as they will themselves trigger this interceptor\r\n * and so on...\r\n */\r\n private isAnIgnoredUri(requestUri: string): boolean {\r\n const uriToLowercase = requestUri.toLowerCase();\r\n return uriToLowercase === environment.config_file ||\r\n uriToLowercase.includes('/nominations/healthcheck/time') ||\r\n uriToLowercase.includes('/nominations/pipelines') ||\r\n uriToLowercase === this.authenticationService.clientTypeCheckUri.toLowerCase() ||\r\n uriToLowercase === this.authenticationService.authenticateUri.toLowerCase() ||\r\n uriToLowercase === this.authenticationService.oktaAuthenticateUri.toLowerCase();\r\n }\r\n}\r\n","import { HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport {JwtTokenInterceptor} from \"./jwt-token-interceptor\";\r\nimport {OverlayInterceptor} from \"./overlay-interceptor\";\r\nimport {LoginInterceptor} from \"./login-interceptor.service\";\r\nimport {ErrorInterceptor} from \"./error-interceptor\";\r\n\r\n/** Http interceptor providers in outside-in order */\r\nexport const HttpInterceptorProviders = [\r\n { provide: HTTP_INTERCEPTORS, useClass: ErrorInterceptor, multi: true },\r\n { provide: HTTP_INTERCEPTORS, useClass: LoginInterceptor, multi: true },\r\n { provide: HTTP_INTERCEPTORS, useClass: OverlayInterceptor, multi: true },\r\n { provide: HTTP_INTERCEPTORS, useClass: JwtTokenInterceptor, multi: true }\r\n];\r\n","\r\nimport {tap} from 'rxjs/operators';\r\nimport {HttpEvent, HttpHandler, HttpInterceptor, HttpRequest} from \"@angular/common/http\";\r\nimport {Injectable} from \"@angular/core\";\r\nimport {Observable} from \"rxjs\";\r\nimport {ErrorService} from \"../error/error-service\";\r\nimport {UserService} from \"@shared/services/webapp/user/user-service\";\r\nimport {LoginComponent} from \"@shared/components/login/login.component\";\r\n\r\n/*\r\n * This interceptor handles server side errors and takes care of showing errors to the user\r\n * should they arise.\r\n */\r\n@Injectable()\r\nexport class ErrorInterceptor implements HttpInterceptor {\r\n\r\n constructor(private errorService: ErrorService) {\r\n }\r\n\r\n intercept(request: HttpRequest, next: HttpHandler): Observable> {\r\n return next.handle(request).pipe(\r\n tap(\r\n // Success condition\r\n () => {},\r\n // Error condition\r\n (error) => {\r\n if (this.isPasswordRedirect(error)) return error;\r\n if (this.isAnIgnoredUri(request.url)) return;\r\n if (this.isAnErrorToLetComponentHandle(error)) return;\r\n\r\n this.errorService.processError(error)\r\n .then(() => {\r\n // We're not interested in doing anything on successful processing of the error.\r\n })\r\n .catch(() => {\r\n // If we run into an error navigating to the error page.\r\n // Seb - We could put an alert on the current page indicating the error. Left it out for now...\r\n });\r\n },\r\n // Completed condition\r\n () => {}\r\n ));\r\n }\r\n\r\n private isPasswordRedirect(error: any): boolean {\r\n if (error?.status === 302 && error?.error === LoginComponent.PASSWORD_ERROR_MESSAGE) return true;\r\n }\r\n\r\n /**\r\n * If we fail to log a client exception to our backend services, we don't really care if it fails,\r\n * we don't want to interrupt the work flow of the given user.\r\n */\r\n private isAnIgnoredUri(requestUri: string): boolean {\r\n return requestUri.endsWith(\"/client/log\");\r\n }\r\n\r\n private isAnErrorToLetComponentHandle(error: any): boolean {\r\n if(error?.status === 503 && error?.url?.endsWith('/accounting/batch')) return true;\r\n\r\n // HealthCheck page is designed to handle and display errors, so let them through\r\n if (error?.url?.endsWith('/healthCheck')) return true;\r\n if (error?.url?.endsWith('/healthCheck/Verb')) return true;\r\n\r\n return false;\r\n }\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {UserService} from \"@shared/services/webapp/user/user-service\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {Subscription} from \"rxjs\";\r\n\r\n@Injectable()\r\nexport class GoogleAnalyticsService {\r\n\r\n private currentUserChangedSubscription: Subscription;\r\n\r\n constructor(private userService: UserService, private appService: AppService) {\r\n\r\n/*\r\n this.currentUserChangedSubscription = this.userService.currentUserChangedEvent\r\n .subscribe(user => {\r\n this.send(new GoogleAnalyticsSetTag().withParameter('user_id', user.userIdentifier));\r\n });\r\n*/\r\n }\r\n\r\n/*\r\n public send(tag: GoogleAnalyticsTag): void {\r\n if (this.isAnalyticsDisabled) return;\r\n\r\n tag.send();\r\n }\r\n*/\r\n\r\n private get isAnalyticsDisabled(): boolean {\r\n return !this.appService.analyticsEnabled;\r\n }\r\n}\r\n","import {HttpInterceptorProviders} from \"./interceptors/http-interceptors\";\r\nimport {NgModule} from \"@angular/core\";\r\nimport {AppService} from \"./app/app.service\";\r\nimport {AuthenticationService} from \"./authentication/authentication.service\";\r\nimport {AuthorizationService} from \"./authorization/authorization.service\";\r\nimport {CapabilitiesService} from \"./capabilities/capabilities.service\";\r\nimport {JwtService} from \"./jwt/jwt.service\";\r\nimport {HealthCheckService} from \"./health-check/health-check.service\";\r\nimport {ConfigService} from \"./configuration/configuration.service\";\r\nimport {LoadOverlayService} from \"./load-overlay/load-overlay.service\";\r\nimport {SessionService} from \"./session/session.service\";\r\nimport {UriService} from \"./uri/uri.service\";\r\nimport {TestPageService} from \"./test-page/test-page.service\";\r\nimport {FileService} from \"./file-service/file.service\";\r\nimport {YesNoCancelModalService} from \"./yes-no-cancel-modal/yes-no-cancel-modal.service\";\r\nimport {RowCellNavigationService} from \"./row-cell-navigation/row-cell-navigation.service\";\r\nimport {UnsavedChangesService} from \"./unsaved-changes/unsaved-changes.service\";\r\nimport {UserService} from \"./user/user-service\";\r\nimport {ModalOptionsToConfigurationBuilderService} from \"./modal-options-to-configuration-builder/modal-options-to-configuration-builder.service\";\r\nimport {ErrorService} from \"./error/error-service\";\r\nimport {SignalRService} from \"app/shared/services/webapp/signalr/signalr.service.ts\";\r\nimport {AlertService} from \"app/shared/services/webapp/alert/alert.service\";\r\nimport {SessionTimeoutModalService} from \"@shared/services/webapp/session-timeout-modal/session-timeout-modal.service\";\r\nimport {GoogleAnalyticsService} from \"@shared/services/webapp/analytics/google-analytics.service\";\r\nimport {EmptyRedirect} from \"@shared/services/webapp/app/EmptyRedirect\";\r\n\r\n@NgModule({\r\n providers: [\r\n HttpInterceptorProviders,\r\n AlertService,\r\n AppService,\r\n AuthenticationService,\r\n AuthorizationService,\r\n CapabilitiesService,\r\n ConfigService,\r\n FileService,\r\n HealthCheckService,\r\n JwtService,\r\n LoadOverlayService,\r\n YesNoCancelModalService,\r\n SessionService,\r\n SignalRService,\r\n TestPageService,\r\n UriService,\r\n RowCellNavigationService,\r\n UnsavedChangesService,\r\n UserService,\r\n ModalOptionsToConfigurationBuilderService,\r\n ErrorService,\r\n SessionTimeoutModalService,\r\n GoogleAnalyticsService,\r\n EmptyRedirect\r\n ]\r\n})\r\nexport class WebAppServicesModule {\r\n}\r\n","import {NgModule} from \"@angular/core\";\r\n\r\nimport {EnterpriseService} from \"./enterprise/enterprise.service\";\r\nimport {HomeService} from \"./home/home.service\";\r\nimport {LocationService} from \"./location/location.service\";\r\nimport {CommonDataBillingMonthService} from \"./common-data-billing-month/common-data-billing-month.service\";\r\nimport {CommonDataGasdayService} from \"./common-data-gasday/common-data-gasday.service\";\r\nimport {CommonDataConfigurationService} from \"./common-data-configuration/common-data-configuration.service\";\r\nimport {CommonDataCacheService} from \"./common-data-cache/common-data-cache.service\";\r\nimport {CommonDataPipelinesService} from \"@shared/services/common-data/pipelines/common-data-pipelines.service\";\r\n\r\n@NgModule({\r\n providers: [\r\n EnterpriseService,\r\n HomeService,\r\n LocationService,\r\n CommonDataBillingMonthService,\r\n CommonDataGasdayService,\r\n CommonDataConfigurationService,\r\n CommonDataCacheService,\r\n CommonDataPipelinesService\r\n ]\r\n})\r\nexport class CommonDataServicesModule {\r\n}\r\n","import {NgModule} from \"@angular/core\";\r\nimport {CustomerService} from \"./customer/customer.service\";\r\nimport {ContractsAwaitingProcessingService} from \"@shared/services/contracts/contracts/contracts-awaiting-processing.service\";\r\nimport {InvoiceRecipientService} from \"@shared/services/contracts/invoice-recipient/invoice-recipient.service\";\r\nimport {ContractsService} from \"@shared/services/contracts/contracts/contracts.service\";\r\nimport {ContractDemandEnergyService} from \"@shared/services/contracts/contract-demand-energy/contract-demand-energy.service\";\r\n\r\n@NgModule({\r\n providers: [\r\n CustomerService,\r\n ContractsService,\r\n ContractsAwaitingProcessingService,\r\n InvoiceRecipientService,\r\n ContractDemandEnergyService\r\n ]\r\n})\r\nexport class ContractsServicesModule {\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport {FlowingGasPriorDayPendingActivitiesService} from './flowing-gas-prior-day-pending-activities/flowing-gas-prior-day-pending-activities.service';\r\nimport {FlowingGasAllocationAndBalancingBillingProcessService} from './flowing-gas-allocation-and-balancing-billing-process/flowing-gas-allocation-and-balancing-billing-process.service';\r\nimport {FlowingGasLocationService} from \"./location/flowing-gas-location.service\";\r\nimport {FlowingGasMeasurementBillingProcessService} from \"./flowing-gas-measurement-billing-process/flowing-gas-measurement-billing-process.service\";\r\nimport {FlowingGasLoadOmvRelationshipsService} from \"./flowing-gas-load-omv-relationships/flowing-gas-load-omv-relationships.service\";\r\nimport {VolumeEnergyCompositionService} from \"@shared/services/flowing-gas/volume-energy-composition/volume-energy-composition.service\";\r\nimport {FlowingGasUniformHourlyFlowReportService} from \"@shared/services/flowing-gas/flowing-gas-uniform-hourly-flow-report/flowing-gas-uniform-hourly-flow-report.service\";\r\nimport {FlowingGasPriorDayPendingActivitiesCsvBuilderService} from \"@shared/services/flowing-gas/flowing-gas-prior-day-pending-activities-csv-builder-service/flowing-gas-prior-day-pending-activities-csv-builder.service\";\r\nimport {FlowingGasEnterpriseService} from \"@shared/services/flowing-gas/flowing-gas-enterprise-service/flowing-gas-enterprise-service\";\r\nimport {FlowingGasAccountSummaryService} from \"@shared/services/flowing-gas/flowing-gas-account-summary-service/flowing-gas-account-summary.service\";\r\nimport {TransportationAccountDetailService} from \"@shared/services/flowing-gas/transportation-account-detail/transportation-account-detail.service\";\r\nimport {OverrideMakeupNominationsService} from \"@shared/services/flowing-gas/override-makeup-nominations/override-makeup-nominations.service\";\r\n\r\nimport {ItPenaltiesService} from \"@shared/services/flowing-gas/it-penalties-service/it-penalties.service\";\r\nimport {OperatorBalanceService} from \"@shared/services/flowing-gas/operator-balance/operator-balance-service\";\r\nimport {FlowingGasBilledBalancingFeesReportService} from \"@shared/services/flowing-gas/flowing-gas-billed-balancing-fees-report/flowing-gas-billed-balancing-fees-report.service\";\r\nimport {OverrideMakeupNominationsCsvBuilderService} from \"@shared/services/flowing-gas/override-makeup-nominations/override-makeup-nominations-csv-builder.service\";\r\nimport {PendingPriorPeriodAdjustmentService} from \"@shared/services/flowing-gas/pending-prior-period-adjustment/pending-prior-period-adjustment.service\";\r\nimport {SystemBalanceService} from \"@shared/services/flowing-gas/system-balance-service/system-balalnce.service\";\r\nimport {StorageTransportationBalanceService} from \"@shared/services/flowing-gas/storage-transportation-balance/storage-transportation-balance.service\";\r\nimport {LbaExcessQuantityService} from \"@shared/services/flowing-gas/lba-excess-quantity/lba-excess-quantity.service\";\r\nimport {ManualTransactionService} from \"@shared/services/flowing-gas/manual-transaction-service/manual-transaction.service\";\r\nimport {StatisticsCanadaDownloadService} from \"@shared/services/flowing-gas/statistics-canada-download-service/statistics-canada-download.service\";\r\nimport {OutstandingBalanceExportService} from \"@shared/services/flowing-gas/outstanding-balance-export-service/outstanding-balance-export.service\";\r\nimport {FlowingGasBalancingFeesSummaryReportService} from \"@shared/services/flowing-gas/flowing-gas-balancing-fees-summary-report-service/flowing-gas-balancing-fees-summary-report.service\";\r\nimport {StsTransferBalanceService} from \"@shared/services/flowing-gas/sts-transfer-balance-service/sts-transfer-balance.service\";\r\nimport {FlowingGasStorageBalanceService} from \"@shared/services/flowing-gas/flowing-gas-storage-balance-service/flowing-gas-storage-balance-service\";\r\nimport {FlowingGasTestService} from \"@shared/services/flowing-gas/flowing-gas-test/flowing-gas-test.service\";\r\nimport {FlowingGasPipelineSystemSettingService} from \"@shared/services/flowing-gas/flowing-gas-pipeline-system-setting-service/flowing-gas-pipeline-system-setting-service\";\r\nimport {FlowingGasActivityMessageService} from \"@shared/services/flowing-gas/flowing-gas-activity-message-service/flowing-gas-activity-message.service\";\r\nimport {FlowingGasLocationImbalanceService} from \"@shared/services/flowing-gas/flowing-gas-location-imbalance-service/flowing-gas-location-imbalance.service\";\r\nimport {NppDataService} from \"@shared/services/flowing-gas/npp-data-service/npp-data.service\";\r\nimport {FlowingGasTrendComplianceService} from \"@shared/services/flowing-gas/flowing-gas-trend-compliance-service/flowing-gas-trend-compliance-service\";\r\nimport {OfoCreditReportService} from \"@shared/services/flowing-gas/ofo-credit-report-service/ofo-credit-report.service\";\r\nimport {OfoPenaltyReportService} from \"@shared/services/flowing-gas/ofo-penalty-report-service/ofo-penalty-report.service\";\r\n\r\n@NgModule({\r\n providers: [\r\n FlowingGasPriorDayPendingActivitiesService,\r\n FlowingGasAllocationAndBalancingBillingProcessService,\r\n FlowingGasMeasurementBillingProcessService,\r\n FlowingGasUniformHourlyFlowReportService,\r\n FlowingGasLocationService,\r\n FlowingGasLoadOmvRelationshipsService,\r\n VolumeEnergyCompositionService,\r\n FlowingGasPriorDayPendingActivitiesCsvBuilderService,\r\n FlowingGasEnterpriseService,\r\n FlowingGasAccountSummaryService,\r\n TransportationAccountDetailService,\r\n ItPenaltiesService,\r\n OperatorBalanceService,\r\n FlowingGasBilledBalancingFeesReportService,\r\n OverrideMakeupNominationsCsvBuilderService,\r\n OverrideMakeupNominationsService,\r\n PendingPriorPeriodAdjustmentService,\r\n LbaExcessQuantityService,\r\n SystemBalanceService,\r\n StorageTransportationBalanceService,\r\n ManualTransactionService,\r\n StatisticsCanadaDownloadService,\r\n OutstandingBalanceExportService,\r\n FlowingGasBalancingFeesSummaryReportService,\r\n StsTransferBalanceService,\r\n FlowingGasStorageBalanceService,\r\n FlowingGasTestService,\r\n FlowingGasPipelineSystemSettingService,\r\n FlowingGasActivityMessageService,\r\n FlowingGasLocationImbalanceService,\r\n NppDataService,\r\n FlowingGasTrendComplianceService,\r\n OfoPenaltyReportService,\r\n OfoCreditReportService,\r\n ]\r\n})\r\nexport class FlowingGasServicesModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport {ScheduledJobsService} from \"./scheduled-jobs/scheduled-jobs.service\";\r\nimport {JobService} from \"./jobs/job.service\";\r\n\r\n@NgModule({\r\n providers: [\r\n ScheduledJobsService,\r\n JobService\r\n ]\r\n})\r\n\r\nexport class JobSchedulingServicesModule { }\r\n","import * as _ from 'lodash';\r\nimport { Injectable } from '@angular/core';\r\nimport {FileService} from \"../../webapp/file-service/file.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {TransferTransactionSummaryDto} from \"app/shared/services/nomination/nomination-transaction/nomination-transaction.models\";\r\nimport {SimpleGasDayCycleStatus} from \"@model/simple-gas-day-cycle-status\";\r\nimport {CapacityAllocationTypeService} from \"@model/models/capacity-allocation-type\";\r\n\r\n@Injectable()\r\nexport class NonTransportationSummaryCsvBuilderService {\r\n constructor(private fileService: FileService) {}\r\n\r\n build(title: string,\r\n transportationTransactionDetailDtos: TransferTransactionSummaryDto[],\r\n gasDay: GasDay,\r\n isSentToMCAForCapacityAllocation: string,\r\n userIsInternal: boolean,\r\n cycleStatus: string): void {\r\n const records = transportationTransactionDetailDtos;\r\n let csvData = _.map(records, x => _.extend({}, x, {\r\n gasDay: gasDay.toCsvFormat()\r\n }));\r\n\r\n csvData = _.sortBy(csvData, ['customerShortName', 'customerAccountMnemonic', 'receiptLocationName', 'deliveryLocationName']);\r\n\r\n const filename = title + ' ' + gasDay.toDisplayFormat() + '.csv';\r\n const headers = ['From Account', 'Nom Cycle', 'Transaction Type', 'To Account', 'Rank',\r\n 'Location', 'Package Id', 'Up Dn Contract', 'Up Dn ID', 'Nom Qty', 'Scheduled Cycle', 'Auth Qty', 'Nom vs Auth Variance', SimpleGasDayCycleStatus.getSQText(cycleStatus), 'Reason Code',\r\n 'Status'];\r\n\r\n const columns = ['fromAccountMnemonic', 'cycleCode', 'transactionType', 'toAccountMnemonic', 'transportRank',\r\n 'locationName', 'packageId', 'upDownContract', 'counterParty', 'nominatedQuantity', 'scheduledCycleCode', 'authorizedQuantity',\r\n 'nominatedVersusAuthorizedQuantity', 'scheduledQuantity', 'reasonCode', 'status'];\r\n\r\n if (isSentToMCAForCapacityAllocation === CapacityAllocationTypeService.MCA.value && userIsInternal) {\r\n headers.push('MCA Transfer Nomination Id');\r\n columns.push('nominationId');\r\n }\r\n\r\n if (!userIsInternal) { // user is external, so remove nomid and status columns\r\n _.pull(headers, 'Status');\r\n _.pull(columns, 'status');\r\n }\r\n\r\n this.fileService.downloadCsvFile(filename, csvData, headers, columns);\r\n }\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {NominationResourceService} from \"@shared/resources/nominations-resource.service\";\r\nimport {Observable, of} from \"rxjs\";\r\nimport {catchError} from \"rxjs/operators\";\r\nimport {ErrorService} from \"@shared/services/webapp/error/error-service\";\r\n\r\n@Injectable()\r\nexport class LoggingService {\r\n\r\n constructor(private nominationResource: NominationResourceService) {\r\n }\r\n\r\n /**\r\n * If the error is an http error response, we don't want to send another log message because the http request/response error will already have\r\n * been logged on the server. This method only wants to log pure javascript errors.\r\n */\r\n public log(error: any): Observable {\r\n const body = {\r\n error: this.buildError(error)\r\n };\r\n\r\n return this.nominationResource.postWithNoResponseBody('/client/log', body, false)\r\n .pipe(\r\n catchError(() => of({})) // Gracefully handle server exception, so application can continue to operate\r\n );\r\n }\r\n\r\n private buildError(error: any): string {\r\n if (!this.isHttpErrorResponse(error)) {\r\n return `JavaScript Exception:\\n` +\r\n `${error.stack}`;\r\n }\r\n\r\n const referenceNumberMessage = ErrorService.buildReferenceNumberMessage(error);\r\n return `Server Request Exception:\\n` +\r\n `Url: ${error.url}\\n` +\r\n `Name: ${error.name}\\n` +\r\n `Message: ${error.message}\\n` +\r\n `Status: ${error.status}\\n` +\r\n `StatusText: ${error.statusText}\\n` +\r\n referenceNumberMessage;\r\n }\r\n\r\n private isHttpErrorResponse(error: any): boolean {\r\n return error.hasOwnProperty(\"status\") && error.hasOwnProperty(\"url\");\r\n }\r\n}\r\n","import {NgModule} from \"@angular/core\";\r\n\r\nimport {BidFloorService} from \"./bid-floor/bid-floor.service\";\r\nimport {FuelRatioService} from \"./fuel-ratio/fuel-ratio.service\";\r\nimport {GasCycleService} from \"./gas-cycle/gas-cycle.service\";\r\nimport {NominationEnterpriseService} from \"./nomination-enterprise/nomination-enterprise.service\";\r\nimport {NominationEnterpriseEnrichmentService} from \"./nomination-enterprise-enrichment/nomination-enterprise-enrichment.service\";\r\nimport {NominationLocationService} from \"./nomination-location/nomination-location.service\";\r\nimport { NominationLocationEnrichmentService } from \"./nomination-location-enrichment/nomination-location-enrichment.service\";\r\nimport {NominationNomGroupService} from \"./nomination-nom-group/nomination-nom-group.service\";\r\nimport { NominationNomGroupEnrichmentService } from \"./nomination-nom-group-enrichment/nomination-nom-group-enrichment.service\";\r\nimport {NominationPipelineService} from \"./nomination-pipeline/nomination-pipeline.service\";\r\nimport {NominationRequestService} from \"./nomination-request/nomination-request.service\";\r\nimport {NominationSystemService} from \"./nomination-system/nomination-system.service\";\r\nimport {NominationTransactionService} from \"./nomination-transaction/nomination-transaction.service\";\r\nimport {AccountSummaryService} from \"./account-summary/account-summary.service\";\r\nimport {AutoBalanceService} from \"./auto-balance/auto-balance.service\";\r\nimport {ConfirmationService} from \"./confirmation/confirmation.service\";\r\nimport {AccountSummaryDetailsService} from \"./account-summary-details/account-summary-details.service\";\r\nimport {BillableServiceService} from \"./billable-service/billable-service.service\";\r\nimport {BusinessRightService} from \"./business-right/business-right.service\";\r\nimport {SecondaryLocationsService} from \"./secondary-locations/secondary-locations.service\";\r\nimport {BillableServiceOptionService} from \"./billable-service-option/billable-service-option.service\";\r\nimport {AgentRelationshipService} from \"./agent-relationship/agent-relationship.service\";\r\nimport {AccountInjectionLimitService} from \"./account-injection-limit/account-injection-limit.service\";\r\nimport {TitleTransferReportService} from \"./title-transfer-report/title-transfer-report.service\";\r\nimport {PoolingService} from \"./pooling-service/pooling-service.service\";\r\nimport {AccountWithdrawalLimitService} from \"./withdrawal-service/withdrawal-service.service\";\r\nimport {AccountUhfLimitService} from \"@shared/services/nomination/account-uhf-limit/account-uhf-limit.service\";\r\nimport {AutoBalanceLogService} from \"./auto-balance-log/auto-balance-log.service\";\r\nimport {BfpDailyTransportationSummaryCsvBuilderService, TransportationSummaryCsvBuilderService} from \"./transportation-summary-csv-builder/transportation-summary-csv-builder.service\";\r\nimport {NonTransportationSummaryCsvBuilderService} from \"./transportation-summary-csv-builder/non-transportation-summary-csv-builder.service\";\r\nimport {UploadNominationRequestsService} from \"./upload-nomination-requests/upload-nomination-requests.service\";\r\nimport {TitleTransferWaiversService} from \"./title-transfer-waivers/title-transfer-waivers.service\";\r\nimport {EmailSubscriptionService} from \"./email-subscription/email-subscription.service\";\r\nimport {NominationWindowService} from \"./nomination-window/nomination-window.service\";\r\nimport {PendingStsNominationsService} from \"./pending-sts-nominations/pending-sts-nominations.service\";\r\nimport {ScheduledQuantityService} from \"app/shared/services/nomination/scheduled-quantity/scheduled-quantity.service\";\r\nimport {ImbalanceTransferService} from \"app/shared/services/nomination/imbalance-transfer/imbalance-transfer.service\";\r\nimport {MinimumItBidRateService} from \"app/shared/services/nomination/minimum-it-bid-rate/minimum-it-bid-rate.service\";\r\nimport {PriorDayActivityService} from \"app/shared/services/nomination/prior-day-activity/prior-day-activity.service\";\r\nimport {PipelineSettingMapService} from \"app/shared/services/nomination/pipeline-settings-map/pipeline-setting-map.service\";\r\nimport {NominationsConfigurationService} from \"@shared/services/nomination/nomination-data-configuration.service\";\r\nimport {NominationReportsService} from \"@shared/services/nomination/nomination-reports/nomination-reports.service\";\r\nimport {ContractUtilizationService} from \"app/shared/services/nomination/contract-utilization/contract-utilization.service\";\r\nimport {HourlyFlowMaintenanceService} from \"@shared/services/nomination/hourly-flow-maintenance/hourly-flow-maintenance.service\";\r\nimport {LoggingService} from \"@shared/services/nomination/logging/logging.service\";\r\nimport {ReportsItBidFloorAverageService} from \"@shared/services/nomination/reports-itbidflooraverage/reports-itbidflooraverage.service\";\r\nimport {AccountContractSummaryCsvBuilderService} from \"app/gcts/contracts/account-contract-summary-report/account-contract-summary-csv-builder.service\";\r\nimport {LoadAutoBalanceLocationOrderService} from \"@shared/services/nomination/load-auto-balance-location-order/load-auto-balance-location-order.service\";\r\nimport { NominationGasAccountService } from \"@shared/services/nomination/nomination-gas-account/nomination-gas-account.service\";\r\nimport { NominationTransactionTypeService } from \"@shared/services/nomination/nomination-transaction-type/nomination-transaction-type.service\";\r\nimport {LoadConfirmationAutoBalanceLocationOrderService} from \"@shared/services/nomination/load-confirmation-auto-balance-location-order/load-confirmation-auto-balance-location-order.service\";\r\nimport {EdiTestHarnessService} from \"@shared/services/nomination/edi-test-harness/edi-test-harness.service\";\r\nimport {AvailableCapacityService} from \"@shared/services/nomination/available-capacity/available-capacity-service\";\r\nimport {AvailableCapacityCsvBuilderService} from \"@shared/services/nomination/available-capacity/available-capacity-csv-builder-service\";\r\nimport {CapacityAllocationSummaryService} from \"@shared/services/nomination/capacity-allocation/capacity-allocation-summary-service\";\r\nimport {CapacityAllocationAggregateDetailsCsvBuilderService} from \"@shared/services/nomination/capacity-allocation/capacity-allocation-aggregate-details-csv-builder-service\";\r\nimport {CapacityAllocationTransactionDetailsCsvBuilderService} from \"@shared/services/nomination/capacity-allocation/capacity-allocation-transaction-details-csv-builder-service\";\r\nimport {SegmentProcessOrderService} from \"@shared/services/nomination/segment-process-order/segment-process-order.service\";\r\n@NgModule({\r\n providers: [\r\n AgentRelationshipService,\r\n AutoBalanceService,\r\n AutoBalanceLogService,\r\n BidFloorService,\r\n FuelRatioService,\r\n GasCycleService,\r\n NominationEnterpriseService,\r\n NominationEnterpriseEnrichmentService,\r\n NominationNomGroupEnrichmentService,\r\n NominationLocationService,\r\n NominationLocationEnrichmentService,\r\n NominationNomGroupService,\r\n NominationPipelineService,\r\n NominationRequestService,\r\n NominationSystemService,\r\n NominationTransactionService,\r\n AccountSummaryService,\r\n SecondaryLocationsService,\r\n ConfirmationService,\r\n AccountSummaryDetailsService,\r\n BillableServiceService,\r\n BusinessRightService,\r\n BillableServiceOptionService,\r\n AccountInjectionLimitService,\r\n TitleTransferReportService,\r\n PoolingService,\r\n AccountWithdrawalLimitService,\r\n AccountUhfLimitService,\r\n TransportationSummaryCsvBuilderService,\r\n NonTransportationSummaryCsvBuilderService,\r\n BfpDailyTransportationSummaryCsvBuilderService,\r\n UploadNominationRequestsService,\r\n TitleTransferWaiversService,\r\n EmailSubscriptionService,\r\n NominationWindowService,\r\n PendingStsNominationsService,\r\n ScheduledQuantityService,\r\n ImbalanceTransferService,\r\n MinimumItBidRateService,\r\n PriorDayActivityService,\r\n PipelineSettingMapService,\r\n NominationsConfigurationService,\r\n NominationReportsService,\r\n ContractUtilizationService,\r\n HourlyFlowMaintenanceService,\r\n LoggingService,\r\n ReportsItBidFloorAverageService,\r\n AccountContractSummaryCsvBuilderService,\r\n LoadAutoBalanceLocationOrderService,\r\n LoadConfirmationAutoBalanceLocationOrderService,\r\n NominationGasAccountService,\r\n NominationTransactionTypeService,\r\n EdiTestHarnessService,\r\n AvailableCapacityService,\r\n AvailableCapacityCsvBuilderService,\r\n CapacityAllocationSummaryService,\r\n CapacityAllocationAggregateDetailsCsvBuilderService,\r\n CapacityAllocationTransactionDetailsCsvBuilderService,\r\n SegmentProcessOrderService,\r\n ]\r\n})\r\nexport class NominationServicesModule {\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport {InvoicingInvoiceBillingProcessService} from './invoicing-invoice-billing-process/invoicing-invoice-billing-process.service';\r\nimport {InvoicingBillableServiceService} from './invoicing-billable-service/invoicing-billable-service.service';\r\nimport {InvoicingTollService} from './invoicing-toll/invoicing-toll.service';\r\nimport {PalsBillingDetailReportService} from \"@shared/services/invoicing/pals-billing-detail-report/pals-billing-detail-report.service\";\r\nimport {InvoicingInvoicePackageService} from \"@shared/services/invoicing/invoicing-invoice-package/invoicing-invoice-package.service\";\r\nimport {AccountsReceivableService} from \"@shared/services/invoicing/accounts-receivable/accounts-receivable.service\";\r\nimport {InvoicingManualChangeService} from \"@shared/services/invoicing/invoicing-manual-charge/invoicing-manual-change.service\";\r\nimport {InvoicingTaxRateService} from \"@shared/services/invoicing/invoicing-tax-rate/invoicing-tax-rate.service\";\r\nimport {InvoiceAccountingStatusService} from \"@shared/services/invoicing/invoice-accounting-status/invoice-accounting-status.service\";\r\nimport {InvoicingChargesService} from \"@shared/services/invoicing/invoicing-charges/invoicing-charges.service\";\r\nimport {InvoicingClassOfServiceReportService} from \"@shared/services/invoicing/invoicing-class-of-service-report/invoicing-class-of-service-report.service\";\r\nimport {InvoicingCustomerInvoiceParametersService} from \"@shared/services/invoicing/invoicing-customer-invoice-parameters/invoicing-customer-invoice-parameters.service\";\r\nimport {ExpectedPaymentService} from \"@shared/services/invoicing/expected-payment/expected-payment.service\";\r\nimport {InvoicingOfoCreditService} from \"@shared/services/invoicing/invoicing-ofo-credits/invoicing-ofo-credits.service\";\r\n\r\n@NgModule({\r\n providers: [\r\n InvoicingInvoiceBillingProcessService,\r\n InvoicingBillableServiceService,\r\n InvoicingTollService,\r\n PalsBillingDetailReportService,\r\n InvoicingInvoicePackageService,\r\n AccountsReceivableService,\r\n InvoicingManualChangeService,\r\n InvoicingTaxRateService,\r\n InvoiceAccountingStatusService,\r\n InvoicingChargesService,\r\n InvoicingClassOfServiceReportService,\r\n InvoicingCustomerInvoiceParametersService,\r\n ExpectedPaymentService,\r\n InvoicingOfoCreditService,\r\n ]\r\n})\r\nexport class InvoicingServicesModule { }\r\n","import {NgModule} from \"@angular/core\";\r\nimport {CreditExposureReportService} from \"@shared/services/credit/credit-exposure-report/credit-exposure-report.service\";\r\nimport {CreditOverageReportService} from \"@shared/services/credit/credit-overage-report/credit-overage-report.service\";\r\nimport {CreditEnterpriseService} from \"@shared/services/credit/enterprise/credit-enterprise.service\";\r\nimport {\r\n CreditReportArchiveRetrievalService\r\n} from \"@shared/services/credit/credit-report-archive-retrieval/credit-report-archive-retrieval.service\";\r\n\r\n@NgModule({\r\n providers: [\r\n CreditExposureReportService,\r\n CreditOverageReportService,\r\n CreditEnterpriseService,\r\n CreditReportArchiveRetrievalService\r\n ]\r\n})\r\nexport class CreditServicesModule {\r\n}\r\n","import {NgModule} from \"@angular/core\";\r\nimport {AccountsService} from \"@shared/services/accounts/accounts/accounts.service\";\r\nimport {AccountsJobService} from \"@shared/services/accounts/accounts/accounts-job.service\";\r\nimport {AccountsBillableServicesService} from \"@shared/services/accounts/billable-service/accounts-billable-services.service\";\r\nimport {ContractPricingService} from \"@shared/services/accounts/contract-pricing/contract-pricing.service\";\r\n\r\n\r\n@NgModule({\r\n providers: [\r\n AccountsService,\r\n AccountsJobService,\r\n AccountsBillableServicesService,\r\n ContractPricingService\r\n ]\r\n})\r\nexport class AccountsServicesModule {\r\n}\r\n","import {NgModule} from \"@angular/core\";\r\nimport {EnterpriseEnrichmentService} from \"@shared/services/enrichment/enterprise-enrichment.service\";\r\nimport {LocationEnrichmentService} from \"@shared/services/enrichment/location-enrichment.service\";\r\nimport {NomGroupEnrichmentService} from \"@shared/services/enrichment/nomgroup-enrichment.service\";\r\n\r\n@NgModule({\r\n providers: [\r\n EnterpriseEnrichmentService,\r\n LocationEnrichmentService,\r\n NomGroupEnrichmentService\r\n ]\r\n})\r\nexport class EnrichmentModule {\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {NominationSystemService} from \"@shared/services/nomination/nomination-system/nomination-system.service\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {catchError, mergeMap} from \"rxjs/operators\";\r\nimport {Observable, of} from \"rxjs\";\r\nimport {PipelineSettingMapService} from \"@shared/services/nomination/pipeline-settings-map/pipeline-setting-map.service\";\r\nimport {UserService} from \"@shared/services/webapp/user/user-service\";\r\nimport {NominationPipelineService} from \"@shared/services/nomination/nomination-pipeline/nomination-pipeline.service\";\r\n\r\n@Injectable()\r\nexport class PipelineInitService {\r\n\r\n constructor(private nominationPipelineService: NominationPipelineService,\r\n private nominationSystemService: NominationSystemService,\r\n private sessionService: SessionService,\r\n private pipelineMap: PipelineSettingMapService,\r\n private userService: UserService) {\r\n }\r\n\r\n loadSessionPipeline(): Observable {\r\n return this.nominationSystemService.applicationServerTimes()\r\n .pipe(mergeMap(times => {\r\n return this.nominationPipelineService.get(GasDay.parse(times.clockTime, false))\r\n .pipe(mergeMap(pipelines => {\r\n try {\r\n let code = location.hash.split('/')[2];\r\n if (this.notValidPipelineCode(code) && this.userService.user) code = this.userService.user.getPipelineCodes()[0];\r\n const pipeline = pipelines.find(p => p.code === code) || pipelines[0];\r\n this.sessionService.setPipeline(pipeline);\r\n return of({});\r\n } catch (e) {\r\n console.error(e, e.stack);\r\n }\r\n }),\r\n catchError(e => {\r\n console.error(e, e.stack);\r\n return of({});\r\n }));\r\n }),\r\n catchError(e => {\r\n console.error(e, e.stack);\r\n return of({});\r\n }));\r\n }\r\n\r\n notValidPipelineCode(code: string) {\r\n return !this.pipelineMap.pipelineCodes().includes(code);\r\n }\r\n\r\n}\r\n","import {NgModule} from \"@angular/core\";\r\n\r\nimport {ResourceServicesModule} from \"../resources/resource-services.module\";\r\nimport {WebAppServicesModule} from \"./webapp/webapp-services.module\";\r\nimport {CommonDataServicesModule} from \"./common-data/common-data-services.module\";\r\nimport {ContractsServicesModule} from \"./contracts/contracts-services.module\";\r\nimport {FlowingGasServicesModule} from \"./flowing-gas/flowing-gas-services.module\";\r\nimport {JobSchedulingServicesModule} from \"./job-scheduling/job-secheduling-services.module\";\r\nimport {HttpClientJsonpModule, HttpClientModule} from \"@angular/common/http\";\r\nimport {NominationServicesModule} from \"./nomination/nomination-services.module\";\r\nimport {InvoicingServicesModule} from \"./invoicing/invoicing-services.module\";\r\nimport {CreditServicesModule} from \"@shared/services/credit/credit-services.module\";\r\nimport {AccountsServicesModule} from \"@shared/services/accounts/accounts-services.module\";\r\nimport {EnrichmentModule} from \"@shared/services/enrichment/enrichment.module\";\r\nimport {PipelineInitService} from \"@shared/services/shared/pipeline-init.service\";\r\n\r\n@NgModule({\r\n imports: [\r\n ResourceServicesModule,\r\n WebAppServicesModule,\r\n CommonDataServicesModule,\r\n CreditServicesModule,\r\n ContractsServicesModule,\r\n FlowingGasServicesModule,\r\n InvoicingServicesModule,\r\n NominationServicesModule,\r\n JobSchedulingServicesModule,\r\n HttpClientModule,\r\n HttpClientJsonpModule,\r\n AccountsServicesModule,\r\n EnrichmentModule\r\n ],\r\n exports: [\r\n ResourceServicesModule,\r\n WebAppServicesModule,\r\n CommonDataServicesModule,\r\n InvoicingServicesModule,\r\n ContractsServicesModule,\r\n CreditServicesModule,\r\n FlowingGasServicesModule,\r\n NominationServicesModule,\r\n JobSchedulingServicesModule,\r\n HttpClientModule,\r\n HttpClientJsonpModule,\r\n AccountsServicesModule,\r\n EnrichmentModule\r\n ],\r\n providers: [PipelineInitService]\r\n})\r\nexport class ServicesModule {\r\n}\r\n","import {NgModule} from \"@angular/core\";\r\nimport {ComponentsModule} from \"./components/components.module\";\r\nimport {DirectivesModule} from \"./directives/directives.module\";\r\nimport {ServicesModule} from \"./services/services.module\";\r\nimport {PipesModule} from \"./pipes/pipes.module\";\r\nimport {HttpClientJsonpModule } from \"@angular/common/http\";\r\n\r\n@NgModule({\r\n imports: [\r\n ComponentsModule,\r\n PipesModule,\r\n DirectivesModule,\r\n ServicesModule,\r\n HttpClientJsonpModule\r\n ],\r\n exports: [\r\n ComponentsModule,\r\n PipesModule,\r\n DirectivesModule,\r\n ServicesModule\r\n ]\r\n})\r\nexport class SharedModule {\r\n}\r\n","
\r\n \r\n \r\n
\r\n","import {Component, OnInit, Input, Output, EventEmitter} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-toggle-row',\r\n templateUrl: './toggle-row.component.html',\r\n styleUrls: ['./toggle-row.component.css']\r\n})\r\nexport class ToggleRowComponent implements OnInit {\r\n isExpandedValue: boolean = false;\r\n\r\n @Output() isExpandedChange = new EventEmitter();\r\n\r\n @Input()\r\n get isExpanded() {\r\n return this.isExpandedValue;\r\n }\r\n set isExpanded(value: boolean) {\r\n this.isExpandedValue = value;\r\n }\r\n\r\n constructor() {\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n clicked(): void {\r\n this.isExpandedValue = !this.isExpandedValue;\r\n this.isExpandedChange.emit(this.isExpandedValue);\r\n }\r\n}\r\n","import {forkJoin, Observable} from 'rxjs';\r\nimport {Component, forwardRef, Input, Output, EventEmitter, OnInit} from '@angular/core';\r\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\r\nimport {GasCycle} from \"@model/gas-cycle\";\r\nimport * as _ from 'lodash';\r\nimport {NominationSystemService} from \"../../services/nomination/nomination-system/nomination-system.service\";\r\nimport {AppService} from \"../../services/webapp/app/app.service\";\r\nimport {GasCycleService, GasDayCycleStatusSearchParams} from \"../../services/nomination/gas-cycle/gas-cycle.service\";\r\nimport {GasDayCycleStatus} from \"@model/gas-day-cycle-status\";\r\nimport {GasDay} from \"@model/gas-day\";\r\n\r\nexport const CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => GasCyclePickerComponent),\r\n multi: true\r\n};\r\n\r\n@Component({\r\n selector: 'app-gas-cycle-picker',\r\n templateUrl: './gas-cycle-picker.component.html',\r\n styleUrls: ['./gas-cycle-picker.component.css'],\r\n providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR]\r\n})\r\nexport class GasCyclePickerComponent implements ControlValueAccessor, OnInit {\r\n @Input() today: GasDay; // The gas day representing today.\r\n @Input() gasCycles: GasCycle[]; // All potential gas cycles for this screen.\r\n @Input() disabled: boolean = false;\r\n @Input() onValueChanged: () => {};\r\n @Input() searchMode: boolean = false; // When true, displays all gas cycles in gasCycles.\r\n @Input() hideExpiredCycles: boolean = false;\r\n @Output() selectionChanged: EventEmitter = new EventEmitter();\r\n\r\n private onChangeCallback: (_: any) => {};\r\n private onTouchedCallback: () => {};\r\n private innerValue: any;\r\n private selectedGasDay: GasDay;\r\n public dataSource: GasCycle[];\r\n\r\n constructor(private appService: AppService,\r\n private gasCycleService: GasCycleService,\r\n private nominationSystemService: NominationSystemService) {\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n public get placeholder(): string {\r\n return !this.searchMode && this.hideExpiredCycles ? 'No gas cycles available' : 'Select a gas cycle';\r\n }\r\n\r\n // The selected gas day.\r\n @Input() set gasDay(selectedGasDay: GasDay) {\r\n if (!selectedGasDay) {\r\n return;\r\n }\r\n\r\n if (this.searchMode) {\r\n this.dataSource = this.gasCycles;\r\n this.setDefaultToTimely();\r\n return;\r\n }\r\n\r\n if (selectedGasDay.isEqual(this.selectedGasDay)) {\r\n return;\r\n }\r\n\r\n this.configurePicker(selectedGasDay);\r\n }\r\n\r\n configurePicker(selectedGasDay: GasDay): void {\r\n this.selectedGasDay = selectedGasDay;\r\n\r\n // Query the server time and the gas day cycles.\r\n const params = new GasDayCycleStatusSearchParams();\r\n params.fromGasDay = params.toGasDay = selectedGasDay;\r\n\r\n const serviceCalls: Observable[] = [\r\n this.nominationSystemService.applicationServerTimes(),\r\n this.gasCycleService.queryAllGasCycleStatuses(params)\r\n ];\r\n\r\n forkJoin(serviceCalls).subscribe(responses => this.initializePicker(responses));\r\n }\r\n\r\n private initializePicker(serviceCallResponses): void {\r\n const serverTimes = serviceCallResponses[0];\r\n const gasDayCycleStatuses: GasDayCycleStatus[] = serviceCallResponses[1];\r\n const currentTime = new Date(serverTimes.clockTime);\r\n\r\n this.selectedGasDay.isEqual(this.today) ?\r\n this.initializePickerForToday(gasDayCycleStatuses, currentTime) :\r\n this.initializePickerForAnotherDay(gasDayCycleStatuses, currentTime);\r\n }\r\n\r\n private initializePickerForToday(gasDayCycleStatuses: GasDayCycleStatus[], currentTime: Date): void {\r\n // Today - use intra-day.\r\n this.dataSource = _.sortBy(_.filter(this.gasCycles, x => x.isIntraDayCycle), x => x.sequence);\r\n if (this.hideExpiredCycles) {\r\n // Remove the intra-day cycles that have passed.\r\n _.remove(this.dataSource, x => {\r\n const gasDayCycleStatus = _.find(gasDayCycleStatuses, y => y.gasCycle.code === x.code);\r\n return gasDayCycleStatus == null || new Date(gasDayCycleStatus.nominationDeadline).valueOf() < currentTime.valueOf();\r\n });\r\n }\r\n // Default based on nomination deadline.\r\n for (let n = 0; n < this.dataSource.length; n++) {\r\n const code = this.dataSource[n].code;\r\n const status = _.find(gasDayCycleStatuses, x => x.gasCycle.code === code);\r\n if (new Date(status.nominationDeadline).valueOf() >= currentTime.valueOf()) {\r\n this.value = code;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n private initializePickerForAnotherDay(gasDayCycleStatuses: GasDayCycleStatus[], currentTime: Date): void {\r\n // Not-Today - use Timely & Evening.\r\n const intraDayCycles = _.filter(this.gasCycles, x => !x.isIntraDayCycle);\r\n this.dataSource = _.sortBy(intraDayCycles, x => x.sequence);\r\n\r\n // If we're tomorrow (today + 1), then remove the extra-day cycles that have passed.\r\n if (this.hideExpiredCycles && this.selectedGasDay.isEqual(this.today.next())) {\r\n _.remove(this.dataSource, x => {\r\n const gasDayCycleStatus = _.find(gasDayCycleStatuses, y => y.gasCycle.code === x.code);\r\n return gasDayCycleStatus == null || new Date(gasDayCycleStatus.nominationDeadline).valueOf() < currentTime.valueOf();\r\n });\r\n }\r\n this.setDefaultToTimely();\r\n }\r\n\r\n private setDefaultToTimely() {\r\n // Default to Timely if it exists.\r\n const timely = _.find(this.dataSource, x => x.isStandingNomAllowed);\r\n if (timely) {\r\n this.value = timely.code;\r\n } else if (this.dataSource.length > 0) {\r\n this.value = this.dataSource[0].code;\r\n }\r\n }\r\n\r\n get value(): any {\r\n return this.innerValue;\r\n }\r\n\r\n set value(value: any) {\r\n if (value !== this.innerValue) {\r\n this.innerValue = value;\r\n if (this.onChangeCallback) {\r\n this.onChangeCallback(value);\r\n }\r\n if (!(this.onValueChanged == null)) {\r\n this.onValueChanged();\r\n }\r\n }\r\n }\r\n\r\n onBlur() {\r\n this.onTouchedCallback();\r\n }\r\n\r\n writeValue(obj: any): void {\r\n if (obj !== this.innerValue) {\r\n this.innerValue = obj;\r\n }\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChangeCallback = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouchedCallback = fn;\r\n }\r\n onSelectionChanged = (e): void => {\r\n this.selectionChanged.emit(e);\r\n };\r\n\r\n private mountainTimeToDate(dt: Date): Date {\r\n if (!dt) {\r\n return dt;\r\n }\r\n const timeStr = this.monthToName(dt.getMonth()) + ' ' + dt.getDate().toString() + ' ' + dt.getFullYear().toString() +\r\n ' ' + dt.getHours().toString() + ':' + dt.getMinutes().toString() + ':' + dt.getSeconds().toString() +\r\n '.' + dt.getMilliseconds().toString() + ' MST';\r\n return new Date(timeStr);\r\n }\r\n private monthToName(m: number) {\r\n return ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'][m];\r\n }\r\n}\r\n","\r\n\r\n","import {Directive, Input, TemplateRef, ViewContainerRef} from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[appContentDisable]'\r\n})\r\n\r\nexport class ContentDisableDirective {\r\n\r\n constructor(\r\n private templateRef: TemplateRef,\r\n private viewContainer: ViewContainerRef\r\n ) { }\r\n\r\n @Input() set appContentDisable(shouldAdd: boolean) {\r\n if (!shouldAdd) {\r\n this.viewContainer.createEmbeddedView(this.templateRef);\r\n } else {\r\n // Else remove template from DOM\r\n this.viewContainer.clear();\r\n }\r\n }\r\n}\r\n","import {Directive, Input} from '@angular/core';\r\nimport {FormControl, NG_VALIDATORS, ValidationErrors, Validator} from \"@angular/forms\";\r\n\r\n\r\n@Directive({\r\n selector: '[appInputMatch]',\r\n providers: [{provide: NG_VALIDATORS, useExisting: FormInputMatchDirective, multi: true}]\r\n})\r\n\r\nexport class FormInputMatchDirective implements Validator {\r\n\r\n @Input('valToMatch') valToMatch: string;\r\n @Input('validationMessage') validationMessage: string;\r\n\r\n validate(c: FormControl): ValidationErrors {\r\n return c.value === this.valToMatch\r\n ? null\r\n : { 'appInputMatch': { message: this.validationMessage }};\r\n }\r\n}\r\n\r\n\r\n","import {Directive, ElementRef, Input, OnDestroy, OnInit, Renderer2} from \"@angular/core\";\r\nimport {Subscription} from \"rxjs\";\r\nimport {UserService} from \"../../services/webapp/user/user-service\";\r\nimport {CapabilitiesService} from \"../../services/webapp/capabilities/capabilities.service\";\r\nimport {SessionService} from \"../../services/webapp/session/session.service\";\r\nimport {User} from \"@model/user\";\r\nimport * as _ from \"lodash\";\r\n\r\n@Directive({\r\n selector: '[appSecureItemOld]'\r\n})\r\n\r\n// OBSOLETE: ('This directive should not be used. It only sets the css style instead of removing an item from the DOM.')\r\nexport class SecureItemOldDirective implements OnInit, OnDestroy {\r\n\r\n @Input('appSecureItemOld') capabilities: string[];\r\n\r\n currentUserChangedSubscription: Subscription;\r\n\r\n constructor(private el: ElementRef,\r\n private renderer: Renderer2,\r\n private userService: UserService,\r\n private capabilityService: CapabilitiesService,\r\n private sessionService: SessionService) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.currentUserChangedSubscription = this.userService.currentUserChangedEvent\r\n .subscribe(user => this.performSecurityCheck(user));\r\n this.sessionService.pipelineChangeEvent.subscribe(() => this.onPipelineChanged());\r\n\r\n // need to get the user as this items starts loading before we think it would.\r\n this.performSecurityCheck(this.userService.user);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.currentUserChangedSubscription.unsubscribe();\r\n }\r\n\r\n private onPipelineChanged() {\r\n this.userService.getUser().subscribe(user => {\r\n this.performSecurityCheck(user);\r\n });\r\n }\r\n\r\n private performSecurityCheck(user: User) {\r\n // The _.isNil is really here for the Modal as it may not have capabilites set\r\n // and if no capabilities are set, it should be accessible\r\n const hasCapabilities = _.isNil(this.capabilities) ? true :\r\n this.capabilityService.hasCapabilities(this.capabilities, user, this.sessionService.getPipeline().code);\r\n const displayValue = !hasCapabilities ? 'none' : 'inline';\r\n this.renderer.setStyle(this.el.nativeElement, 'display', displayValue);\r\n }\r\n}\r\n","import {Directive, ElementRef, OnDestroy, Renderer2, ViewContainerRef} from '@angular/core';\r\nimport {ConfigService} from \"app/shared/services/webapp/configuration/configuration.service\";\r\n\r\n@Directive({\r\n selector: '[appBackgroundColor]'\r\n})\r\n\r\nexport class BackgroundColorDirective implements OnDestroy {\r\n\r\n constructor(private viewContainer: ViewContainerRef, private el: ElementRef, private renderer: Renderer2, private configService: ConfigService) {\r\n if (this.configService.backgroundColor && document.body != null) {\r\n this.renderer.setStyle(document.body, 'background-color', this.configService.backgroundColor);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.renderer.removeStyle(document.body, 'background-color');\r\n }\r\n}\r\n","
\r\n \r\n {{error}}
\r\n
\r\n
\r\n","import {Component, Input} from '@angular/core';\r\nimport {AbstractControl, AbstractControlDirective} from \"@angular/forms\";\r\n\r\n@Component({\r\n selector: 'app-form-errors',\r\n templateUrl: './form-errors.component.html',\r\n styleUrls: ['./form-errors.component.css']\r\n})\r\nexport class FormErrorsComponent {\r\n\r\n private static readonly errorMessages = {\r\n 'required': () => 'This field is required',\r\n 'minlength': (params) => 'The min number of characters is ' + params.requiredLength,\r\n 'maxlength': (params) => 'The max allowed number of characters is ' + params.requiredLength,\r\n 'pattern': (params) => 'The required pattern is: ' + params.requiredPattern,\r\n 'uniqueName': (params) => params.message,\r\n 'email': () => 'Invalid email address',\r\n 'appInputMatch': (params) => params.message\r\n };\r\n\r\n @Input()\r\n private control: AbstractControlDirective | AbstractControl;\r\n\r\n shouldShowErrors(): boolean {\r\n return this.control &&\r\n this.control.errors &&\r\n (this.control.dirty || this.control.touched || this.control.invalid);\r\n }\r\n\r\n listOfErrors(): string[] {\r\n return Object.keys(this.control.errors)\r\n .map(field => this.getMessage(field, this.control.errors[field]));\r\n }\r\n\r\n private getMessage(type: string, params: any) {\r\n return FormErrorsComponent.errorMessages[type](params);\r\n }\r\n}\r\n","import {AfterViewInit, Component} from \"@angular/core\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\n\r\n@Component({\r\n selector: 'app-google-tag-manager',\r\n template: ''\r\n})\r\nexport class GoogleTagManagerComponent implements AfterViewInit {\r\n\r\n constructor(private appService: AppService) {\r\n }\r\n\r\n public ngAfterViewInit(): void {\r\n if (this.isAnalyticsDisabled) return;\r\n\r\n const head = document.getElementsByTagName('head')[0];\r\n const googleAnalyticsId = this.appService.analyticsId;\r\n\r\n const script = document.createElement('script');\r\n script.type = 'text/javascript';\r\n script.async = true;\r\n script.src = `https://www.googletagmanager.com/gtag/js?id=${googleAnalyticsId}`;\r\n head.appendChild(script);\r\n\r\n const gtagFunction = document.createElement('script');\r\n gtagFunction.type = 'text/javascript';\r\n gtagFunction.innerHTML += 'window.dataLayer = window.dataLayer || [];';\r\n gtagFunction.innerHTML += 'function gtag(){dataLayer.push(arguments);};';\r\n gtagFunction.innerHTML += 'gtag(\\'js\\', new Date());';\r\n\r\n head.appendChild(gtagFunction);\r\n }\r\n\r\n private get isAnalyticsDisabled(): boolean {\r\n return !this.appService.analyticsEnabled;\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\nimport {GasCycle} from \"@model/gas-cycle\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {GasDayCycle} from \"@model/gas-day-cycle\";\r\n\r\n@Pipe({\r\n name: 'dateCycleToGasDayFormat'\r\n})\r\nexport class DateCycleToGasDayFormatPipe implements PipeTransform {\r\n transform(dateValue: Date, gasCycleCode: string, gasCycles: GasCycle[]): string {\r\n const gasDay = GasDay.from(dateValue);\r\n const gasCycle = gasCycles.find(x => x.code === gasCycleCode);\r\n const gasDayCycle = GasDayCycle.for(gasDay, gasCycle);\r\n\r\n return gasDayCycle.toGasDayCycleFormatString();\r\n }\r\n}\r\n","import {NgModule} from \"@angular/core\";\r\nimport {FormsModule} from \"@angular/forms\";\r\n\r\nimport {BillingMonthComponent} from \"./billing-month/billing-month.component\";\r\nimport {ConfigureJobSchedulesComponent} from \"./configure-job-schedules/configure-job-schedules.component\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {SharedModule} from \"@shared/shared.module\";\r\nimport {ViewBidFloorsComponent} from './view-bid-floors/view-bid-floors.component';\r\nimport {ViewFuelRatiosComponent} from './view-fuel-ratios/view-fuel-ratios.component';\r\nimport {DxPopupModule, DxDataGridModule, DxSwitchModule, DxTemplateModule, DxCheckBoxModule, DxTextBoxModule, DxTooltipModule, DxRadioGroupModule} from \"devextreme-angular\";\r\nimport {LoadFuelRatiosComponent} from './load-fuel-ratios/load-fuel-ratios.component';\r\nimport {LoadBidFloorsComponent} from './load-bid-floors/load-bid-floors.component';\r\nimport {PublishAccountingLocationsComponent} from './publish-accounting-locations/publish-accounting-locations.component';\r\nimport {AppRoutingModule} from \"app/app.routes\";\r\nimport {EditBillingMonthComponent} from './billing-month/edit-billing-month/edit-billing-month.component';\r\nimport {AddBillingMonthComponent} from './billing-month/add-billing-month/add-billing-month.component';\r\nimport {ViewJobHistoryComponent} from './view-job-history/view-job-history.component';\r\nimport {JobRunnerComponent} from './job-runner/job-runner.component';\r\nimport {SupportComponent} from './support/support/support.component';\r\nimport {LoadTollsComponent} from './load-tolls/load-tolls.component';\r\nimport {ViewTollsComponent} from './view-tolls/view-tolls.component';\r\nimport {LoadSecondaryLocationsComponent} from './load-secondary-locations/load-secondary-locations.component';\r\nimport {BidFloorGasCyclePickerComponent} from \"./bid-floor-gas-cycle-picker/bid-floor-gas-cycle-picker.component\";\r\nimport {HourlyFlowMaintenanceComponent} from \"app/gcts/administration/hourly-flow-maintenance/hourly-flow-maintenance.component\";\r\nimport {UnsubscribeEmailNotificationsComponent} from \"app/gcts/administration/unsubscribe-email-notifications/unsubscribe-email-notifications.component\";\r\nimport {MaintainAgentsComponent} from \"app/gcts/administration/maintain-agents/maintain-agents.component\";\r\nimport {AddAgentComponent} from \"app/gcts/administration/maintain-agents/add-agents/add-agent.component\";\r\nimport {ViewAgentsComponent} from \"app/gcts/administration/maintain-agents/view-agents/view-agents.component\";\r\nimport {DeleteTollComponent} from './view-tolls/delete-toll/delete-toll.component';\r\nimport {StsTransferBalanceComponent} from \"app/gcts/administration/sts-transfer-balance/sts-transfer-balance.component\";\r\nimport {StsBalanceParametersComponent} from \"app/gcts/administration/sts-balance-parameters/sts-balance-parameters.component\";\r\nimport {AddStorageTransportationBalanceComponent} from \"app/gcts/administration/sts-balance-parameters/add-storage-transportation-balance/add-storage-transportation-balance.component\";\r\nimport {LoadAutoBalanceLocationOrderComponent} from \"app/gcts/administration/load-auto-balance-location-order/load-auto-balance-location-order.component\";\r\nimport {LoadConfirmationAutoBalanceLocationOrderComponent} from \"app/gcts/administration/load-confirmation-auto-balance-location-order/load-confirmation-auto-balance-location-order.component\";\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n DxDataGridModule,\r\n DxSwitchModule,\r\n DxPopupModule,\r\n DxTemplateModule,\r\n DxCheckBoxModule,\r\n DxTextBoxModule,\r\n DxTooltipModule,\r\n CommonModule,\r\n FormsModule,\r\n SharedModule,\r\n AppRoutingModule,\r\n DxRadioGroupModule\r\n ],\r\n declarations: [\r\n BillingMonthComponent,\r\n ConfigureJobSchedulesComponent,\r\n ViewBidFloorsComponent,\r\n ViewFuelRatiosComponent,\r\n LoadFuelRatiosComponent,\r\n LoadBidFloorsComponent,\r\n PublishAccountingLocationsComponent,\r\n EditBillingMonthComponent,\r\n AddBillingMonthComponent,\r\n ViewJobHistoryComponent,\r\n JobRunnerComponent,\r\n SupportComponent,\r\n LoadTollsComponent,\r\n ViewTollsComponent,\r\n LoadSecondaryLocationsComponent,\r\n BidFloorGasCyclePickerComponent,\r\n HourlyFlowMaintenanceComponent,\r\n UnsubscribeEmailNotificationsComponent,\r\n MaintainAgentsComponent,\r\n AddAgentComponent,\r\n ViewAgentsComponent,\r\n DeleteTollComponent,\r\n StsTransferBalanceComponent,\r\n StsBalanceParametersComponent,\r\n AddStorageTransportationBalanceComponent,\r\n LoadAutoBalanceLocationOrderComponent,\r\n LoadConfirmationAutoBalanceLocationOrderComponent\r\n ]\r\n})\r\nexport class AdministrationModule {\r\n}\r\n","
\r\n\r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n Total:\r\n
\r\n
\r\n\r\n \r\n
\r\n {{ cellInfo.value | gasDayFormat }}\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n Estimated Fee
($CDN)\r\n
\r\n
\r\n {{ row.value ? row.value.toFixed(2) : ' ' }}\r\n
\r\n\r\n\r\n
\r\n","import {Component, Input, ViewChild} from \"@angular/core\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {BilledExcessTierTabModel} from \"app/gcts/flowinggas/operator-balance-report/operator-balance-report-billed-excess-quantity-tab/billed-excess-quantity-popup/billed-excess-quantity-popup.component\";\r\n\r\n@Component({\r\n selector: 'app-billed-excess-daily-tab',\r\n templateUrl: './billed-excess-daily-tab.component.html',\r\n styleUrls: ['./billed-excess-daily-tab.component.css']\r\n})\r\nexport class BilledExcessDailyTabComponent {\r\n @Input() model: BilledExcessTierTabModel;\r\n @ViewChild(DxDataGridComponent) billedExcessDailyDataGrid: DxDataGridComponent;\r\n\r\n\r\n}\r\n","import {NgModule} from \"@angular/core\";\r\nimport {PriorDayPendingActivitiesComponent} from \"./prior-day-pending-activities/prior-day-pending-activities.component\";\r\nimport {SharedModule} from \"@shared/shared.module\";\r\nimport {AccountSummaryByLocationDailyReportComponent} from \"app/gcts/flowinggas/account-summary-by-location-daily-report/account-summary-by-location-daily-report.component\";\r\nimport {UniformHourlyFlowReportComponent} from \"app/gcts/flowinggas/uniform-hourly-flow-report/uniform-hourly-flow-report.component\";\r\nimport {FormsModule} from \"@angular/forms\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {VolumeEnergyCompositionComponent} from \"app/gcts/flowinggas/volume-energy-composition/volume-energy-composition.component\";\r\nimport {DxDataGridModule, DxSelectBoxModule, DxTabPanelModule, DxTagBoxModule, DxTextAreaModule, DxTooltipModule} from \"devextreme-angular\";\r\nimport {TransportationAccountDetailComponent} from \"app/gcts/flowinggas/transportation-account-detail/transportation-account-detail.component\";\r\nimport { TransportationAccountDetailsTransportationTabComponent } from './transportation-account-detail/transportation-account-details-transportation-tab/transportation-account-details-transportation-tab.component';\r\nimport {TransportationAccountDetailsTransferTabComponent} from \"app/gcts/flowinggas/transportation-account-detail/transportation-account-details-transfer-tab/transportation-account-details-transfer-tab.component\";\r\nimport {TransportationAccountDetailsFuelTabComponent} from \"app/gcts/flowinggas/transportation-account-detail/transportation-account-details-fuel-tab/transportation-account-details-fuel-tab.component\";\r\nimport {TransportationAccountDetailsFuelPopupComponent} from \"app/gcts/flowinggas/transportation-account-detail/transportation-account-details-fuel-tab/transportation-account-details-fuel-popup/transportation-account-details-fuel-popup.component\";\r\nimport {TransportationAccountDetailsTransportationVarianceTabComponent} from \"app/gcts/flowinggas/transportation-account-detail/transportation-account-details-transportation-variance-tab/transportation-account-details-transportation-variance-tab.component\";\r\nimport {OverrideMakeupNominationsComponent} from \"app/gcts/flowinggas/override-makeup-nominations/override-makeup-nominations.component\";\r\nimport {ItPenaltiesComponent} from \"app/gcts/flowinggas/it-penalities/it-penalties.component\";\r\nimport {AccountSummaryByLocationMonthlyReportComponent} from \"app/gcts/flowinggas/account-summary-by-location-monthly-report/account-summary-by-location-monthly-report.component\";\r\nimport { ViewMeasurementComponent } from './view-measurement/view-measurement.component';\r\nimport {OperatorBalanceReportComponent} from \"app/gcts/flowinggas/operator-balance-report/operator-balance-report.component\";\r\nimport {OperatorBalanceReportLocationBalanceTabComponent} from \"app/gcts/flowinggas/operator-balance-report/operator-balance-report-location-balance-tab/operator-balance-report-location-balance-tab.component\";\r\nimport {OperatorBalanceReportLbaDailyVarianceTabComponent} from \"app/gcts/flowinggas/operator-balance-report/operator-balance-report-lba-daily-variance-tab/operator-balance-report-lba-daily-variance-tab.component\";\r\nimport {OperatorBalanceReportBilledExcessQuantityTabComponent} from \"app/gcts/flowinggas/operator-balance-report/operator-balance-report-billed-excess-quantity-tab/operator-balance-report-billed-excess-quantity-tab.component\";\r\nimport {OperatorBalanceReportCumulativeExcessTabComponent} from \"app/gcts/flowinggas/operator-balance-report/operator-balance-report-cumulative-excess-tab/operator-balance-report-cumulative-excess-tab.component\";\r\nimport {BilledExcessQuantityPopupComponent} from \"app/gcts/flowinggas/operator-balance-report/operator-balance-report-billed-excess-quantity-tab/billed-excess-quantity-popup/billed-excess-quantity-popup.component\";\r\nimport {BilledExcessDailyTabComponent} from \"app/gcts/flowinggas/operator-balance-report/operator-balance-report-billed-excess-quantity-tab/billed-excess-quantity-popup/billed-excess-daily-tab/billed-excess-daily-tab.component\";\r\nimport {OverrideMakeupNominationsTabComponent} from \"app/gcts/flowinggas/override-makeup-nominations/override-makeup-nominations-tab/override-makeup-nominations-tab.component\";\r\nimport {PendingPriorPeriodAdjustmentComponent} from \"app/gcts/flowinggas/pending-prior-period-adjustment/pending-prior-period-adjustment.component\";\r\nimport {PendingPpaMeasurementTabComponent} from \"app/gcts/flowinggas/pending-prior-period-adjustment/pending-ppa-measurement-tab/pending-ppa-measurement-tab.component\";\r\nimport {PendingPpaTransportationTabComponent} from \"app/gcts/flowinggas/pending-prior-period-adjustment/pending-ppa-transportation-tab/pending-ppa-transportation-tab.component\";\r\nimport {PendingPpaTransferTabComponent} from \"app/gcts/flowinggas/pending-prior-period-adjustment/pending-ppa-transfer-tab/pending-ppa-transfer-tab.component\";\r\nimport {SystemBalanceComponent} from \"app/gcts/flowinggas/system-balance/system-balance.component\";\r\nimport {StorageTransportationBalanceReportComponent} from \"app/gcts/flowinggas/storage-transportation-balance-report/storage-transportation-balance-report.component\";\r\nimport {StorageTransportationBalanceExcessTabComponent} from \"app/gcts/flowinggas/storage-transportation-balance-report/storage-transportation-balance-excess-tab/storage-transportation-balance-excess-tab.component\";\r\nimport {StorageTransportationBalanceBalanceTabComponent} from \"app/gcts/flowinggas/storage-transportation-balance-report/storage-transportation-balance-balance-tab/storage-transportation-balance-balance-tab.component\";\r\nimport {ManualTransactionsComponent} from \"app/gcts/flowinggas/manual-transactions/manual-transactions.component\";\r\nimport {StatisticsCanadaDownloadComponent} from \"app/gcts/flowinggas/statistics-canada-download/statistics-canada-download.component\";\r\nimport {OutstandingBalanceExportComponent} from \"app/gcts/flowinggas/outstanding-balance-export/outstanding-balance-export.component\";\r\nimport {TransactionExportComponent} from \"app/gcts/flowinggas/transaction-export/transaction-export.component\";\r\nimport {BalancingFeesSummaryReportComponent} from \"app/gcts/flowinggas/balancing-fees-summary-report/balancing-fees-summary-report.component\";\r\nimport {BalancingFeesSummaryDailyTabComponent} from \"app/gcts/flowinggas/balancing-fees-summary-report/balancing-fees-summary-daily-tab/balancing-fees-summary-daily-tab.component\";\r\nimport {BalancingFeesSummaryCumulativeTabComponent} from \"app/gcts/flowinggas/balancing-fees-summary-report/balancing-fees-summary-cumulative-tab/balancing-fees-summary-cumulative-tab.component\";\r\nimport { StorageTransportationBalanceSummaryComponent } from './storage-transportation-balance-summary/storage-transportation-balance-summary.component';\r\nimport {StageMeasurementsComponent} from \"app/gcts/flowinggas/stage-measurement/stage-measurements.component\";\r\nimport {PdaInstructionsComponent} from \"app/gcts/flowinggas/pda-instructions/pda-instructions.component\";\r\nimport {ReplacePdaInstructionsComponent} from \"app/gcts/flowinggas/pda-instructions/replace-pda-instructions/replace-pda-instructions-component\";\r\nimport {FlowingGasMonitorComponent} from \"app/gcts/flowinggas/flowing-gas-monitor/flowing-gas-monitor.component\";\r\nimport {PdaInstructionEventHistoryComponent} from \"app/gcts/flowinggas/pda-instruction-event-history/pda-instruction-event-history.component\";\r\nimport {UploadPdaInstructionsComponent} from \"app/gcts/flowinggas/edi-test-harness/upload-pda-instructions/upload-pda-instructions.component\";\r\nimport {LocationImbalanceReportComponent} from 'app/gcts/flowinggas/location-imbalance-report/location-imbalance-report.component';\r\nimport {ViewNppDataComponent} from \"app/gcts/flowinggas/view-npp-data/view-npp-data.component\";\r\nimport { TrendComplianceComponent } from './trend-compliance/trend-compliance.component';\r\nimport { OfoMaintenanceComponent } from './ofo-maintenance/ofo-maintenance.component';\r\nimport { OfoWatchShippersComponent } from './ofo-maintenance/ofo-watch-shippers/ofo-watch-shippers.component';\r\nimport { NewOfoWatchModalComponent } from './ofo-maintenance/new-ofo-watch-modal/new-ofo-watch-modal.component';\r\nimport { NewOfoOrderModalComponent } from './ofo-maintenance/new-ofo-order-modal/new-ofo-order-modal.component';\r\nimport { OfoOrderShippersComponent } from './ofo-maintenance/ofo-order-shippers/ofo-order-shippers.component';\r\nimport {OfoPenaltyComponent} from \"app/gcts/flowinggas/ofo-maintenance/ofo-penalty/ofo-penalty.component\";\r\nimport {OfoPenaltyReportComponent} from \"app/gcts/flowinggas/ofo-maintenance/ofo-penalty-report/ofo-penalty-report.component\";\r\nimport {OfoPenaltyOverrideComponent} from \"app/gcts/flowinggas/ofo-maintenance/ofo-penalty-override/ofo-penalty-override.component\";\r\nimport {OfoCreditReportComponent} from \"app/gcts/flowinggas/ofo-credit-report/ofo-credit-report.component\";\r\nimport {OfoCreditSummaryComponent} from \"app/gcts/flowinggas/ofo-credit-report/ofo-credit-summary/ofo-credit-summary.component\";\r\nimport {OfoCreditDetailsByShipperComponent} from \"app/gcts/flowinggas/ofo-credit-report/ofo-credit-details-by-shipper/ofo-credit-details-by-shipper.component\";\r\nimport {OfoCreditDetailsByOrderComponent} from \"app/gcts/flowinggas/ofo-credit-report/ofo-credit-details-by-order/ofo-credit-details-by-order.component\";\r\nimport {NppAdjustmentExportComponent} from \"app/gcts/flowinggas/npp-adjustment-export/npp-adjustment-export.component\";\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n SharedModule,\r\n CommonModule,\r\n FormsModule,\r\n DxDataGridModule,\r\n DxTabPanelModule,\r\n DxTagBoxModule,\r\n DxTextAreaModule,\r\n DxTooltipModule,\r\n DxSelectBoxModule\r\n ],\r\n declarations: [\r\n PriorDayPendingActivitiesComponent,\r\n OverrideMakeupNominationsComponent,\r\n OverrideMakeupNominationsTabComponent,\r\n AccountSummaryByLocationDailyReportComponent,\r\n VolumeEnergyCompositionComponent,\r\n UniformHourlyFlowReportComponent,\r\n TransportationAccountDetailComponent,\r\n TransportationAccountDetailsTransportationTabComponent,\r\n TransportationAccountDetailsFuelTabComponent,\r\n TransportationAccountDetailsFuelPopupComponent,\r\n TransportationAccountDetailsTransferTabComponent,\r\n TransportationAccountDetailsTransportationVarianceTabComponent,\r\n ItPenaltiesComponent,\r\n AccountSummaryByLocationMonthlyReportComponent,\r\n ViewMeasurementComponent,\r\n OperatorBalanceReportComponent,\r\n OperatorBalanceReportLocationBalanceTabComponent,\r\n OperatorBalanceReportLbaDailyVarianceTabComponent,\r\n OperatorBalanceReportBilledExcessQuantityTabComponent,\r\n OperatorBalanceReportCumulativeExcessTabComponent,\r\n BilledExcessQuantityPopupComponent,\r\n BilledExcessDailyTabComponent,\r\n PendingPriorPeriodAdjustmentComponent,\r\n PendingPpaMeasurementTabComponent,\r\n PendingPpaTransportationTabComponent,\r\n PendingPpaTransferTabComponent,\r\n PdaInstructionsComponent,\r\n ReplacePdaInstructionsComponent,\r\n SystemBalanceComponent,\r\n StorageTransportationBalanceReportComponent,\r\n StorageTransportationBalanceBalanceTabComponent,\r\n StorageTransportationBalanceExcessTabComponent,\r\n ManualTransactionsComponent,\r\n StatisticsCanadaDownloadComponent,\r\n OutstandingBalanceExportComponent,\r\n TransactionExportComponent,\r\n BalancingFeesSummaryReportComponent,\r\n BalancingFeesSummaryDailyTabComponent,\r\n BalancingFeesSummaryCumulativeTabComponent,\r\n StorageTransportationBalanceSummaryComponent,\r\n StageMeasurementsComponent,\r\n FlowingGasMonitorComponent,\r\n PdaInstructionEventHistoryComponent,\r\n UploadPdaInstructionsComponent,\r\n LocationImbalanceReportComponent,\r\n ViewNppDataComponent,\r\n TrendComplianceComponent,\r\n OfoMaintenanceComponent,\r\n OfoWatchShippersComponent,\r\n NewOfoWatchModalComponent,\r\n NewOfoOrderModalComponent,\r\n OfoOrderShippersComponent,\r\n OfoPenaltyComponent,\r\n OfoPenaltyReportComponent,\r\n OfoPenaltyOverrideComponent,\r\n OfoCreditReportComponent,\r\n OfoCreditSummaryComponent,\r\n OfoCreditDetailsByShipperComponent,\r\n OfoCreditDetailsByOrderComponent,\r\n NppAdjustmentExportComponent\r\n ]\r\n})\r\nexport class FlowingGasModule {}\r\n","import {NgModule} from \"@angular/core\";\r\n\r\nimport {InvoiceMonitorComponent} from \"./invoice-monitor/invoice-monitor.component\";\r\nimport {PalsBillingDetailReportComponent} from \"./pals-billing-detail-report/pals-billing-detail-report.component\";\r\nimport {SharedModule} from \"@shared/shared.module\";\r\nimport {FormsModule} from \"@angular/forms\";\r\nimport {DxDataGridModule, DxTabPanelModule, DxTextBoxModule} from \"devextreme-angular\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {BilledBalancingFeesReportComponent} from \"app/gcts/invoicing/billed-balancing-fees-report/billed-balancing-fees-report.component\";\r\nimport { ViewInvoiceComponent } from './view-invoice/view-invoice.component';\r\nimport {OverrideLbaExcessQuantityComponent} from \"app/gcts/invoicing/override-lba-excess-quantity/override-lba-excess-quantity.component\";\r\nimport {DailyLbaExcessQuantityTabComponent} from \"app/gcts/invoicing/override-lba-excess-quantity/daily-lba-excess-quantity-tab/daily-lba-excess-quantity-tab.component\";\r\nimport {CumulativeLbaExcessQuantityTabComponent} from \"app/gcts/invoicing/override-lba-excess-quantity/cumulative-lba-excess-quantity-tab/cumulative-lba-excess-quantity-tab.component\";\r\nimport {LbaExcessCommentsTabComponent} from \"app/gcts/invoicing/override-lba-excess-quantity/lba-excess-comments-tab/lba-excess-comments-tab.component\";\r\nimport { InvoiceBusinessMessagesComponent } from './invoice-business-messages/invoice-business-messages.component';\r\nimport {GenerateChargesComponent} from \"app/gcts/invoicing/generate-charges/generate-charges.component\";\r\nimport {PrintInvoicesComponent} from \"app/gcts/invoicing/print-invoice/print-invoices.component\";\r\nimport {AccountsReceivableComponent} from \"app/gcts/invoicing/accounts-receivable/accounts-receivable.component\";\r\nimport {AppRoutingModule} from \"app/app.routes\";\r\nimport { PublishInvoicesComponent } from './publish-invoices/publish-invoices.component';\r\nimport {ViewManualAdjustmentComponent} from \"app/gcts/invoicing/view-manual-adjustment/view-manual-adjustment.component\";\r\nimport {ViewManualAdjustmentCustomerComponent} from \"app/gcts/invoicing/view-manual-adjustment/view-manual-adjustment-customer/view-manual-adjustment-customer.component\";\r\nimport {ViewManualAdjustmentNominationGroupComponent} from \"app/gcts/invoicing/view-manual-adjustment/view-manual-adjustment-nomination-group/view-manual-adjustment-nomination-group.component\";\r\nimport {ViewManualAdjustmentForceMajeureComponent} from \"app/gcts/invoicing/view-manual-adjustment/view-manual-adjustment-force-majeure/view-manual-adjustment-force-majeure.component\";\r\nimport {ManualAdjustmentCustomerPopupComponent} from \"app/gcts/invoicing/view-manual-adjustment/manual-adjustment-customer-popup/manual-adjustment-customer-popup.component\";\r\nimport {ManualAdjustmentNominationGroupPopupComponent} from \"app/gcts/invoicing/view-manual-adjustment/manual-adjustment-nomination-group-popup/manual-adjustment-nomination-group-popup.component\";\r\nimport {LoadManualAdjustmentComponent} from \"app/gcts/invoicing/load-manual-adjustment/load-manual-adjustment.component\";\r\nimport { DailyDiscretionaryRevenueReportComponent } from './daily-discretionary-revenue-report/daily-discretionary-revenue-report.component';\r\nimport {DemandCommodityDetailsReportComponent} from \"app/gcts/invoicing/demand-commodity-details-report/demand-commodity-details-report.component\";\r\nimport {ClassOfServiceReportComponent} from \"app/gcts/invoicing/class-of-service-report/class-of-service-report.component\";\r\nimport { ExpectedPaymentComponent } from './expected-payment/expected-payment.component';\r\nimport {CustomerInvoiceParametersComponent} from \"app/gcts/invoicing/customer-invoice-parameters/customer-invoice-parameters.component\";\r\nimport {EditCustomerParametersComponent} from \"app/gcts/invoicing/customer-invoice-parameters/edit-customer-parameters/edit-customer-parameters.component\";\r\n\r\n@NgModule({\r\n imports: [\r\n SharedModule,\r\n FormsModule,\r\n DxDataGridModule,\r\n DxTabPanelModule,\r\n CommonModule,\r\n DxTextBoxModule,\r\n AppRoutingModule\r\n ],\r\n declarations: [\r\n InvoiceMonitorComponent,\r\n PalsBillingDetailReportComponent,\r\n BilledBalancingFeesReportComponent,\r\n ViewInvoiceComponent,\r\n OverrideLbaExcessQuantityComponent,\r\n DailyLbaExcessQuantityTabComponent,\r\n CumulativeLbaExcessQuantityTabComponent,\r\n LbaExcessCommentsTabComponent,\r\n InvoiceBusinessMessagesComponent,\r\n GenerateChargesComponent,\r\n PrintInvoicesComponent,\r\n PublishInvoicesComponent,\r\n AccountsReceivableComponent,\r\n ViewManualAdjustmentComponent,\r\n ViewManualAdjustmentCustomerComponent,\r\n ViewManualAdjustmentNominationGroupComponent,\r\n ViewManualAdjustmentForceMajeureComponent,\r\n ManualAdjustmentCustomerPopupComponent,\r\n ManualAdjustmentNominationGroupPopupComponent,\r\n LoadManualAdjustmentComponent,\r\n DailyDiscretionaryRevenueReportComponent,\r\n DemandCommodityDetailsReportComponent,\r\n ClassOfServiceReportComponent,\r\n ExpectedPaymentComponent,\r\n CustomerInvoiceParametersComponent,\r\n EditCustomerParametersComponent,\r\n ]\r\n})\r\nexport class InvoicingModule {\r\n}\r\n","import {NgModule} from \"@angular/core\";\r\nimport {AppRoutingModule} from \"app/app.routes\";\r\n\r\nimport {SharedModule} from \"@shared/shared.module\";\r\nimport {ReportsComponent} from \"app/gcts/reporting/reports/reports.component\";\r\nimport {DxTabPanelModule} from \"devextreme-angular\";\r\nimport { InternalReportsComponent } from './reports/internal-reports/internal-reports.component';\r\nimport { ExternalReportComponent } from './reports/external-report/external-report.component';\r\nimport {CommonModule} from \"@angular/common\";\r\n\r\n@NgModule({\r\n imports: [\r\n AppRoutingModule,\r\n SharedModule,\r\n DxTabPanelModule,\r\n CommonModule\r\n ],\r\n declarations: [\r\n ReportsComponent,\r\n InternalReportsComponent,\r\n ExternalReportComponent\r\n ]\r\n})\r\nexport class ReportingModule {}\r\n","import * as _ from 'lodash';\r\nimport {\r\n INominationRequest,\r\n INominationRequestsModel\r\n} from \"@shared/services/nomination/nomination-request/nomination-request.interface\";\r\nimport {MinAndMax} from \"@model/min-and-max\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {GasDayCycle} from \"@model/gas-day-cycle\";\r\nimport {GasCycle} from \"@model/gas-cycle\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\n\r\n/**\r\n * Legend:\r\n *\r\n * @updateNomRequest - This is a shell nom request where we update it's properties (NOTE: this does not contain any data pertaining to the existing nom request)\r\n * The reason we need use a shell Nom Request for updates instead of modifying the existing Nom Request is because we use DevExpress's\r\n * store.update. This is mainly used for the transportation nomination requests so they are synchronized between the transport, hub rec and\r\n * hub del tabs.\r\n *\r\n * @existingNomRequest - This is the existing nom request that resides in the data grid.\r\n *\r\n * @undoNomRequest - This is the original nom request prior to any modifications { key: '', data: }\r\n */\r\n\r\nexport class NominationRequestLogic {\r\n\r\n /**\r\n * When a row is edited, we want to default the Gas Day Cycle for the record.\r\n *\r\n * Timely - any changes to the record will default the gas day cycle\r\n * Timely - change the start gas day date will default the end gas day\r\n * Timely - change the end gas day end date will only change the start gas day\r\n * Intraday - any changes to the record will default the gas day cycle\r\n */\r\n public static defaultNominationRequestGasDayCycleBasedOnGasCycle(\r\n event: any,\r\n model: INominationRequestsModel,\r\n updateNomRequest: INominationRequest,\r\n existingNomRequest: INominationRequest,\r\n undoNomRequest: any): void {\r\n\r\n const startGasDayCycle = GasDayCycle.forCode(model.lastSearchParams.gasDay, model.lastSearchParams.gasCycleCode, model.gasCycles);\r\n\r\n if (this.isAdjustment(startGasDayCycle, model)) {\r\n updateNomRequest.startGasDayDate = startGasDayCycle.gasDayDate;\r\n updateNomRequest.startGasDayCycleCode = startGasDayCycle.gasCycleCode;\r\n updateNomRequest.endGasDayEndDate = startGasDayCycle.nextGasDayDate;\r\n return;\r\n }\r\n\r\n if (NominationRequestLogic.isTimelyAndUserHasNotChangedTheStartDate(model, existingNomRequest, undoNomRequest) ||\r\n NominationRequestLogic.isGasCycleDifferentThanLastSearchParamsGasCycle(model, existingNomRequest)) {\r\n\r\n const defaultEndGasDayEndDate = !event.newData.endGasDayEndDate; // Don't change end date because the user just changed the end date\r\n\r\n NominationRequestLogic.setNominationRequestGasDayCycle(updateNomRequest, startGasDayCycle, defaultEndGasDayEndDate, model);\r\n }\r\n }\r\n\r\n public static setNominationRequestGasDayCycle(nomRequest: INominationRequest, gasDayCycle: GasDayCycle, defaultEndGasDayEndDate: boolean, model: INominationRequestsModel): void {\r\n nomRequest.startGasDayCycleCode = gasDayCycle.gasCycleCode;\r\n nomRequest.startGasDayDate = gasDayCycle.gasDayDate;\r\n\r\n if (defaultEndGasDayEndDate && model.lastSearchParams.gasCycleCode !== GasCycle.TimelyCycleCode ) {\r\n nomRequest.endGasDayEndDate = gasDayCycle.defaultEndGasDayCycle(this.isAdjustment(gasDayCycle, model)).nextGasDayDate;\r\n }\r\n }\r\n\r\n public static isAdjustment(gasDayCycle: GasDayCycle, model: INominationRequestsModel): boolean {\r\n const selectedGasDayCycleStatus = _.find(model.lastGasDayCycleStatuses, x => x.gasCycle.code === model.lastSearchParams.gasCycleCode);\r\n\r\n return !_.isNil(selectedGasDayCycleStatus) && selectedGasDayCycleStatus.isClosedForNomination;\r\n }\r\n\r\n public static getStartGasDayDateMinAndMax(updateNomRequest: INominationRequest, model: INominationRequestsModel): MinAndMax {\r\n const endGasDayDate = GasDay.from(updateNomRequest.endGasDayEndDate).previous().toDate;\r\n\r\n const minStartGasDayDate = model.isFullAdjustmentCapable ?\r\n // minGasDayForCycleStatus || first day of the end gas day month, which ever is greater\r\n _.max([model.minGasDay.toDate, GasMonth.fromGasDay(GasDay.from(endGasDayDate)).start().toDate]) :\r\n // open gas day cycle\r\n model.openGasDayCycleStatus.gasDay.toDate;\r\n\r\n const maxStartGasDayDate = _.min([endGasDayDate, model.maxGasDay.toDate]);\r\n\r\n return new MinAndMax(minStartGasDayDate, maxStartGasDayDate);\r\n }\r\n\r\n public static getEndGasDayDateMinAndMax(updateNomRequest: INominationRequest, model: INominationRequestsModel): MinAndMax {\r\n let minEndGasDayDate = GasDay.from(_.max([\r\n updateNomRequest.startGasDayDate,\r\n model.openGasDayCycleStatus.gasDay.toDate,\r\n model.lastSearchParams.gasDay.toDate\r\n ])).next().toDate;\r\n\r\n if (model.isFullAdjustmentCapable) {\r\n minEndGasDayDate = GasDay.from(_.max([updateNomRequest.startGasDayDate, model.lastSearchParams.gasDay.toDate])).next().toDate;\r\n } else if (model.isOneDayAdjustmentCapable) {\r\n minEndGasDayDate = GasDay.from(_.max([updateNomRequest.startGasDayDate, model.lastSearchParams.gasDay.toDate, model.openGasDayCycleStatus.gasDay.addDays(-1).toDate])).next().toDate;\r\n }\r\n\r\n const maxEndGasDayDate = GasMonth.from(updateNomRequest.startGasDayDate).next().start().toDate;\r\n\r\n return new MinAndMax(minEndGasDayDate, maxEndGasDayDate);\r\n }\r\n\r\n /**\r\n * Should not update gas day cycle because the current row is already for the last search params gas day and gas cycle. This only applies to\r\n * the timely cycle. This is used to prefer the user selected end gas day\r\n */\r\n private static shouldNotUpdateGasDayCycle(model: INominationRequestsModel, existingNomRequest: INominationRequest) {\r\n return existingNomRequest.startGasDayCycleCode === GasCycle.TimelyCycleCode &&\r\n model.lastSearchParams.gasCycleCode === GasCycle.TimelyCycleCode &&\r\n existingNomRequest.startGasDayDate.valueOf() === model.lastSearchParams.gasDay.toDate.valueOf();\r\n }\r\n\r\n public static isTimelyAndUserHasNotChangedTheStartDate(model: INominationRequestsModel, existingNomRequest: INominationRequest, undoNomRequest: any): boolean {\r\n return existingNomRequest.startGasDayCycleCode === GasCycle.TimelyCycleCode && existingNomRequest.startGasDayDate.valueOf() === undoNomRequest.data.startGasDayCycle.gasDay.toDate.valueOf();\r\n }\r\n\r\n public static isGasCycleDifferentThanLastSearchParamsGasCycle(model: INominationRequestsModel, existingNomRequest: INominationRequest): boolean {\r\n return existingNomRequest.startGasDayCycleCode !== model.lastSearchParams.gasCycleCode;\r\n }\r\n}\r\n","import * as dx from \"devextreme/core/renderer\";\r\nimport {EventEmitter} from '@angular/core';\r\nimport * as _ from 'lodash';\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {NominationRequest, TransactionTypes} from \"@shared/services/nomination/nomination-request/nomination-request.service\";\r\nimport {GasDayCycle} from \"@model/gas-day-cycle\";\r\nimport {NominationLocation} from \"@shared/services/nomination/nomination-location/nomination-location.service\";\r\nimport {DataGridHelpers} from \"@model/datagrid-helpers\";\r\nimport {INominationRequestsModel, IUndoRecord} from '@shared/services/nomination/nomination-request/nomination-request.interface';\r\nimport {BaseDatagridHandler} from \"@model/base-datagrid-handlers\";\r\nimport {NominationGroup,} from \"@shared/services/nomination/nomination-nom-group/nomination-nom-group.service\";\r\nimport {BusinessRight} from \"@model/business-right\";\r\nimport {GasCycle} from \"@model/gas-cycle\";\r\nimport {DataGridHooks} from \"@shared/devexpress/datagrid-hooks\";\r\nimport {NominationRequestLogic} from \"./nomination-requests.logic\";\r\nimport {HubStatuses} from \"./nomination-requests.model\";\r\nimport {NominationRequestsModel} from \"app/gcts/nomination/nomination-requests/nomination-requests.model\";\r\nimport {NominationRequestsComponent} from \"./nomination-requests.component\";\r\nimport {NominationNomGroupEnrichmentService} from \"@shared/services/nomination/nomination-nom-group-enrichment/nomination-nom-group-enrichment.service\";\r\nimport {IDateDisplayFormat} from \"@shared/interfaces/date-display-format\";\r\n\r\nexport class UndoRowArgs {\r\n constructor(public key: number, public undos: Array) {\r\n\r\n }\r\n}\r\n\r\nexport class CommonHubService extends BaseDatagridHandler {\r\n private static nextNewRowKey = -1;\r\n public dateEditorFormat: IDateDisplayFormat;\r\n public dateEditorFormat2: IDateDisplayFormat;\r\n private rowWasEdited = false;\r\n private currentRowData: any;\r\n private currentRowIndex: number;\r\n private readonly columnAlignmentMap = null;\r\n\r\n constructor(\r\n protected undoRow: EventEmitter,\r\n protected selectionChanged: EventEmitter,\r\n protected hasRowChanged: (r1: any, r2: any) => boolean,\r\n protected isCellEditable: (row, dataField: string) => boolean,\r\n protected nominationNomGroupEnrichmentService: NominationNomGroupEnrichmentService) {\r\n super(undoRow);\r\n\r\n this.dateEditorFormat = {\r\n formatter: this.dateEditorFormatter,\r\n parser: this.dateEditorParser\r\n };\r\n\r\n this.dateEditorFormat2 = {\r\n formatter: this.dateEditorFormatter2,\r\n parser: this.dateEditorParser2\r\n };\r\n\r\n this.columnAlignmentMap = {\r\n statusCode: 'left',\r\n billableServiceOptionId: 'left',\r\n nominationGroupId: 'left',\r\n debitLocationId: 'left',\r\n creditLocationId: 'left',\r\n packageId: 'left',\r\n transactionType: 'left',\r\n upDownContract: 'left',\r\n counterParty: 'left',\r\n debitLocationName: 'left',\r\n creditLocationName: 'left',\r\n status: 'left',\r\n transactionTypeDescription: 'left',\r\n locationName: 'left',\r\n nominationGroupMnemonic: 'left',\r\n endGasDayCycle: 'left',\r\n transportationRank: 'right',\r\n receiptRank: 'right',\r\n deliveryRank: 'right',\r\n energy: 'right',\r\n bidPrice: 'right',\r\n packQuantity: 'right',\r\n draftQuantity: 'right',\r\n rank: 'right',\r\n epsq: 'right'\r\n };\r\n this.columnAlignmentMap['fuelNominationRequest.locationId'] = 'left';\r\n this.columnAlignmentMap['fuelNominationRequest.fuel'] = 'right';\r\n }\r\n\r\n onNgAfterViewInit = (undos: Array) => {\r\n this.undos = undos;\r\n };\r\n\r\n clearGridEdits = (dataGrid: DxDataGridComponent) => {\r\n // Clear undo history.\r\n this.rowWasEdited = false;\r\n // Clear any previously selected checkboxes.\r\n dataGrid.instance.clearSelection();\r\n // clear oldData <--event data does not get cleared with the item above.\r\n dataGrid.instance.cancelEditData();\r\n this.rowWasEdited = false;\r\n };\r\n\r\n cellTemplate = (cellElement, cellInfo, dataGrid: DxDataGridComponent) => {\r\n const $cellElement = dx(cellElement);\r\n this.cellTemplateCommon(cellElement, cellInfo);\r\n\r\n this.displayCellTemplateDefault(cellElement, cellInfo, dataGrid, false);\r\n\r\n this.customDisplayFormattingForColumns(cellElement, cellInfo);\r\n };\r\n\r\n editCellTemplate = (cellElement, cellInfo, dataGrid: DxDataGridComponent, model: INominationRequestsModel) => {\r\n const $cellElement = dx(cellElement);\r\n this.cellTemplateCommon(cellElement, cellInfo);\r\n if (model.disableNomReqEntries || $cellElement.attr('isreadonly') === 'TRUE') {\r\n let container: any;\r\n // This keeps text in a read-only cell from jogging to the left by a pixel.\r\n container = document.createElement('span');\r\n container.style.padding = '1px';\r\n $cellElement.append(container);\r\n this.displayCellTemplateDefault(container, cellInfo, dataGrid, true);\r\n } else {\r\n // This derives from the code from the data grid that creates the default template for\r\n // the cell. See ui.data_grid.editing.js, line 70.\r\n const $editor = dx(document.createElement('div'));\r\n $cellElement.append($editor);\r\n cellInfo.component._controllers.editing.getController('editorFactory').createEditor($editor, Object.assign({}, cellInfo.column, {\r\n value: cellInfo.value,\r\n setValue: cellInfo.setValue,\r\n row: cellInfo.row,\r\n parentType: 'dataRow',\r\n width: null,\r\n readOnly: !cellInfo.setValue,\r\n id: cellInfo.id\r\n }));\r\n }\r\n };\r\n\r\n cellTemplateCommon = (cellElement: HTMLElement, cellInfo) => {\r\n const $cellElement = dx(cellElement);\r\n\r\n // Set an attribute for read-only columns so they can\r\n // be targeted by the CSS.\r\n const isReadOnly = !cellInfo.column.allowEditing || !this.isCellEditable(cellInfo.row, cellInfo.column.dataField);\r\n $cellElement.attr('isreadonly', isReadOnly ? 'TRUE' : 'FALSE');\r\n\r\n // Set an attribute to indicate if this is the current row so it\r\n // can be targeted by the CSS.\r\n const rowKey = cellInfo.key;\r\n $cellElement.attr('iscurrentrow', rowKey === this.currentRowKey ? 'TRUE' : 'FALSE');\r\n $cellElement.parent().attr('iscurrentrow', rowKey === this.currentRowKey ? 'TRUE' : 'FALSE');\r\n\r\n // If this is the status column, set an attribute to indicate what the status of the row is.\r\n if (cellInfo.column.caption === \"Status\") {\r\n $cellElement.attr('status', cellInfo.value);\r\n }\r\n\r\n if (cellInfo.column.caption === \"Status\" && cellInfo.value === \"Passed\" && cellInfo.row.data.statusMessage.length > 0) {\r\n $cellElement.attr('amended', 'TRUE');\r\n }\r\n\r\n const alignment = this.columnAlignmentMap[cellInfo.column.dataField];\r\n cellElement.style.textAlign = alignment;\r\n if (alignment === 'right') {\r\n cellElement.style.paddingRight = '7px';\r\n }\r\n };\r\n\r\n displayCellTemplateDefault = (cellElement, cellInfo, dataGrid: DxDataGridComponent, inEditCellTemplate: boolean) => {\r\n // This derives from the code from the data grid that creates the default template for\r\n // the cell.\r\n const isDataTextEmpty = !cellInfo.text && cellInfo.rowType === \"data\";\r\n const text = isDataTextEmpty ? \" \" : cellInfo.text;\r\n if (cellInfo.column.encodeHtml && !isDataTextEmpty) {\r\n cellElement.textContent = text;\r\n } else {\r\n cellElement.innerHTML = text;\r\n }\r\n if (inEditCellTemplate) {\r\n this.applyInternetExplorerFocusCellHack(cellElement, cellInfo, dataGrid);\r\n }\r\n };\r\n\r\n isInternetExplorer = (): boolean => {\r\n return window.navigator.userAgent.indexOf(\"MSIE \") > 0 || !!window.navigator.userAgent.match(/Trident.*rv\\:11\\./);\r\n };\r\n\r\n applyInternetExplorerFocusCellHack = (container, cellInfo, dataGrid: DxDataGridComponent) => {\r\n if (!!dataGrid && this.isInternetExplorer()) {\r\n // Hack for an IE bug. If we're setting the template for a cell in edit mode,\r\n // the focus rectangle is display at about 60% of the height that it should be.\r\n // We work around this by explicitly setting the height of the cell.\r\n const currentCell = this.getCurrentCell(dataGrid);\r\n if (cellInfo.rowIndex === currentCell.rowIndex && cellInfo.columnIndex === currentCell.columnIndex) {\r\n const $rowEl = dx((dataGrid.instance.getRowElement(cellInfo.rowIndex) as Array)[0]);\r\n const $container = dx(container);\r\n $container.css('height', $rowEl.height());\r\n $container.css('display', 'inline-block');\r\n }\r\n }\r\n };\r\n\r\n editorPreparing = (e: any, data: INominationRequestsModel, dataGrid: DxDataGridComponent): void => {\r\n const that = this;\r\n super.onEditorPreparing(e, dataGrid, this.isCellEditable);\r\n\r\n if (!!e.dataField && e.parentType === \"dataRow\") {\r\n e.editorOptions.onFocusIn = function(args) {\r\n const input = args.element.querySelector(\"input\");\r\n\r\n // ie 11 workaround\r\n const selectEvent = document.createEvent(\"Event\");\r\n selectEvent.initEvent(\"select\", false, true);\r\n input.dispatchEvent(selectEvent);\r\n input.style.textAlign = that.columnAlignmentMap[e.dataField];\r\n };\r\n\r\n // Adjust column editor pop-up (dxo-lookup) widths\r\n if (data.columnEditorPopupWidths.has(e.dataField)) {\r\n e.editorOptions.onOpened = function (arg) {\r\n const popupInstance = arg.component._popup;\r\n const width = data.columnEditorPopupWidths.get(e.dataField);\r\n popupInstance.option('width', width);\r\n popupInstance.off(\"optionChanged\", (args) => that.optionChangedHandler(args, width));\r\n popupInstance.on(\"optionChanged\", (args) => that.optionChangedHandler(args, width));\r\n };\r\n }\r\n\r\n DataGridHooks.setEditorOptionsInputMaxLength(e, data.nomRequestFields.receiptRank, NominationRequestsModel.rankFieldMaxLength);\r\n DataGridHooks.setEditorOptionsInputMaxLength(e, data.nomRequestFields.transportationRank, NominationRequestsModel.rankFieldMaxLength);\r\n DataGridHooks.setEditorOptionsInputMaxLength(e, data.nomRequestFields.deliveryRank, NominationRequestsModel.rankFieldMaxLength);\r\n }\r\n\r\n DataGridHooks.setEditorOptionsMinAndMax(e, data, data.nomRequestFields.startGasDayDate, NominationRequestLogic.getStartGasDayDateMinAndMax);\r\n DataGridHooks.setEditorOptionsMinAndMax(e, data, data.nomRequestFields.endGasDayEndDate, NominationRequestLogic.getEndGasDayDateMinAndMax);\r\n };\r\n\r\n optionChangedHandler = (args: any, width: number) => {\r\n // It is odd that this handler is required. I have seen the drop-down re-size on it's own (e.g. try scrolling when the drop down is open).\r\n // Moreover, their support group also has this handler in their post.\r\n // https://www.devexpress.com/Support/Center/Question/Details/T484722/datagrid-how-to-set-the-drop-down-width-in-a-lookup-column\r\n if (args.name === \"width\" && args.value < width) {\r\n args.component.option(\"width\", width);\r\n }\r\n };\r\n\r\n rowInitialized = (e): boolean =>\r\n (e.newData && e.newData.startGasDayDate && e.oldData && e.oldData.endGasDayEndDate) ||\r\n (e.newData && e.newData.endGasDayEndDate && e.oldData && e.oldData.startGasDayDate);\r\n\r\n validateStartGasDay = (e, model: INominationRequestsModel): boolean => {\r\n if (!e.newData.startGasDayDate) {\r\n return true;\r\n }\r\n const { max, min } = NominationRequestLogic.getStartGasDayDateMinAndMax(e.oldData, model);\r\n const gasDay = GasDay.from(e.newData.startGasDayDate);\r\n\r\n return gasDay.isInRangeOf(GasDay.from(min), GasDay.from(max));\r\n };\r\n\r\n validateEndGasDay = (e, model: INominationRequestsModel): boolean => {\r\n if (!e.newData.endGasDayEndDate) {\r\n return true;\r\n }\r\n\r\n const { max, min } = NominationRequestLogic.getEndGasDayDateMinAndMax(e.oldData, model);\r\n const gasDay = GasDay.from(e.newData.endGasDayEndDate);\r\n\r\n return gasDay.isInRangeOf(GasDay.from(min), GasDay.from(max));\r\n };\r\n\r\n onCellValidating = (e, model: INominationRequestsModel): void => {\r\n if (this.rowInitialized(e) && e.isValid) {\r\n e.isValid = this.validateStartGasDay(e, model) && this.validateEndGasDay(e, model);\r\n }\r\n if (!e.isValid) {\r\n return;\r\n }\r\n\r\n if (!!e.newData && e.newData.statusCode === HubStatuses.incomplete && e.brokenRules.length === 0) {\r\n e.newData.statusCode = HubStatuses.new;\r\n } else if (!!e.oldData && e.oldData.statusCode === HubStatuses.incomplete && e.brokenRules.length === 0) {\r\n e.oldData.statusCode = HubStatuses.new;\r\n } else if (!!e.oldData && e.oldData.statusCode === HubStatuses.new && e.brokenRules.length > 0) {\r\n e.oldData.statusCode = HubStatuses.incomplete;\r\n }\r\n };\r\n\r\n onRowInserting = (e, data: INominationRequestsModel, dataGrid: DxDataGridComponent): void => {\r\n // Do Nothing. However, if there is any common logic on Row Insert, please put here.\r\n };\r\n\r\n onCellPrepared = (e, data: INominationRequestsModel, dataGrid: DxDataGridComponent): void => {\r\n if (e.rowType === 'data') {\r\n const cellElement = dx(e.cellElement),\r\n selectBoxEditorElement = cellElement.find('.dx-selectbox'),\r\n selectBox = selectBoxEditorElement.data('dxSelectBox'),\r\n dateEditorElement = cellElement.find('.dx-datebox'),\r\n dateBox = dateEditorElement.data('dxDateBox'),\r\n numberEditorElement = cellElement.find('.dx-numberbox'),\r\n numberBox = numberEditorElement.data('dxNumberBox'),\r\n textBoxEditorElement = cellElement.find('.dx-textbox'),\r\n textBox = textBoxEditorElement.data('dxTextBox');\r\n\r\n\r\n // startGasDayCycleCode - to handle toggling of the cycle when the record is first created/new (unsaved)\r\n if (e.column.dataField === data.nomRequestFields.startGasDayCycleCode && selectBox) {\r\n selectBox.on('valueChanged', (event) => {\r\n this.currentRowData = e.data;\r\n this.currentRowIndex = e.rowIndex;\r\n\r\n // Only handles new records. (The updates are handled by onCellUpdated).\r\n dataGrid.instance.getDataSource().store().byKey(e.data['key']).then(() => { /* exists */}, () => { /* doesn't exist yet (new) */\r\n const startGasDayCycle = GasDayCycle.forCode(data.lastSearchParams.gasDay, event.value, data.gasCycles);\r\n this.currentRowData.startGasDayDate = startGasDayCycle.gasDayDate;\r\n this.currentRowData.endGasDayEndDate = startGasDayCycle.defaultEndGasDayCycle(NominationRequestLogic.isAdjustment(startGasDayCycle, data)).nextGasDayDate;\r\n });\r\n });\r\n }\r\n\r\n // Rank columns\r\n if ((e.column.dataField === data.nomRequestFields.receiptRank\r\n || e.column.dataField === data.nomRequestFields.transportationRank\r\n || e.column.dataField === data.nomRequestFields.deliveryRank) && numberBox) {\r\n numberBox.on('keyDown', (x) => {\r\n this.filterOutNonIntegerKeys(x);\r\n });\r\n }\r\n\r\n // Nom Qty\r\n if (e.column.dataField === data.nomRequestFields.energy && numberBox) {\r\n numberBox.on('keyDown', (x) => {\r\n this.filterOutNonIntegerKeys(x);\r\n });\r\n }\r\n\r\n // Package Id\r\n if (e.column.dataField === data.nomRequestFields.packageId && textBox) {\r\n textBox.on('keyDown', (x) => {\r\n this.filterOutNonAlphanumericKeys(x);\r\n });\r\n\r\n textBox.on('valueChanged', (x) => {\r\n x.value = _.trim(x.value);\r\n });\r\n }\r\n }\r\n };\r\n\r\n public onCellHoverChanged = (e): void => {\r\n if(e.rowType !== \"data\") return;\r\n if(e.displayValue !== null) e.cellElement.title = e.displayValue;\r\n };\r\n\r\n /**\r\n * Bug/142175 - simplified logic and moved logic for determining if an undo record exists.\r\n *\r\n * @param rowData - the rowdata from the datagrid containing the information regarding the row\r\n */\r\n public hasUndoRecord(rowData: any): boolean {\r\n // Instead of checking if an undo record exists, we will toggle the undo button based\r\n // on whether or not it has an id or if it has a status code of 'Revised'.\r\n if (!rowData.data.id || rowData.data.statusCode === 'Revised') {\r\n return true;\r\n }\r\n\r\n // Instead of checking if an undo record exists, we will toggle the undo button based\r\n // on the status code of the record. Passed means there are no modifications to the\r\n // record.\r\n if (rowData.data.statusCode === 'Passed') {\r\n return false;\r\n }\r\n\r\n // Only check the undo objs for failed and saved records, because whenever quantities\r\n // are modified, their status does not change to 'Revised'.\r\n const undoObjs = _.filter(this.undos, x => x.key === rowData.key);\r\n return undoObjs.length > 0 && this.hasRowChanged(undoObjs[0].data, rowData.data);\r\n }\r\n\r\n /**\r\n * Bug/142175 - instead of using the cell clicked to toggle the undo record, we created a template with a button\r\n * that will directly trigger the undo method. It is easier to locate the method and some minor adjustments were\r\n * made to the logic.\r\n *\r\n * @param dataGrid - the datagrid where the row needs to be undone from\r\n * @param rowData - the rowdata from the datagrid containing the information regarding the row\r\n */\r\n public undoRowEdit(dataGrid: DxDataGridComponent, rowData: any): void {\r\n // There are 2 states for a new row\r\n // (1) the user is in the middle of setting the values for a new row. This means the row hasn't been added\r\n // to the datagrid datasource yet (this is where the isNewRow property will be found)\r\n // (2) the user has entered all the required values for the new row and the row lost focus at least once. This\r\n // means the row has been added to the datagrid data source (this is where the key will be less than zero)\r\n const isEditingNewRow = rowData.row.hasOwnProperty('isNewRow') && rowData.row['isNewRow'];\r\n const isNewRowAddedToDataGrid = rowData.key < 0;\r\n\r\n if (isEditingNewRow || isNewRowAddedToDataGrid) {\r\n // New, unsaved record; just get rid of it.\r\n dataGrid.editing.texts.confirmDeleteMessage = ''; // Turns off the confirmation message.\r\n\r\n // Using cancelEditData() instead of deleteRow() because of the changes made to the dxDataGrid by DevExpress\r\n // Reference: https://www.devexpress.com/Support/Center/Question/Details/T758752/datagrid-the-deleterow-method-does-nothing-if-the-widget-is-in-edit-mode\r\n dataGrid.instance.cancelEditData();\r\n\r\n if (isNewRowAddedToDataGrid) {\r\n dataGrid.instance.deleteRow(rowData.rowIndex); // new row was added to the datagrid's data source, so we will need to remove it\r\n }\r\n } else {\r\n const undoObj = _.find(this.undos, item => item.key === rowData.key);\r\n if (undoObj) {\r\n // Handle this in the parent component.\r\n this.undoRow.emit(new UndoRowArgs(rowData.key, this.undos));\r\n rowData.component.deselectRows([rowData.key]);\r\n }\r\n }\r\n }\r\n\r\n editorPrepared = (e: any, data: INominationRequestsModel, dataGrid: DxDataGridComponent): void => {\r\n switch (e.dataField) {\r\n case data.nomRequestFields.energy:\r\n case data.nomRequestFields.receiptRank:\r\n case data.nomRequestFields.deliveryRank:\r\n const dxEditorInstance = dx(e.editorElement).dxNumberBox('instance');\r\n setTimeout(() => {\r\n // The editor can be null if tabbing off the cell, hence the check.\r\n if (!_.isNil(dxEditorInstance._input()[0])) {\r\n dxEditorInstance._input()[0].select();\r\n }\r\n });\r\n break;\r\n }\r\n }\r\n\r\n onCellUpdating = async (event, data: INominationRequestsModel, dataGrid: DxDataGridComponent, isReceiptHub: boolean, performCellUpdate = true): Promise => {\r\n NominationRequestsComponent.createUndoRecord(event.key, event.oldData, this.undos);\r\n await event.component.selectRows([event.key], true);\r\n\r\n const store = dataGrid.instance.getDataSource().store();\r\n const record = await store.byKey(event.key);\r\n\r\n // We use store.update rather than modify the record itself so that the code that\r\n // keeps the transport records in the three hubs synchronized will run.\r\n\r\n // On edit, a passed row becomes a template for a new row.\r\n const updateObj: any = { };\r\n if (record.statusCode === HubStatuses.passed) {\r\n updateObj.statusCode = HubStatuses.revised;\r\n updateObj.id = null;\r\n }\r\n if (record.statusCode === HubStatuses.pending) {\r\n updateObj.isPendingChanged = true;\r\n }\r\n\r\n // Both rowInserted and rowUpdated call this function, but we only need to perform the cell custom update on the later.\r\n if (performCellUpdate) {\r\n this.customOnCellUpdated(event, data, updateObj, record);\r\n }\r\n\r\n // For hub transfers, keep the locations and the ranks the same, otherwise\r\n // the server gets confused about which value to use. Also, update the debit/credit\r\n // nom group to the bound value.\r\n if (record.transactionType === TransactionTypes.onSystem ||\r\n record.transactionType === TransactionTypes.makeupOnSystem ||\r\n record.transactionType === TransactionTypes.buy ||\r\n record.transactionType === TransactionTypes.fuelDraft ||\r\n record.transactionType === TransactionTypes.tvarDraft ||\r\n record.transactionType === TransactionTypes.paybackDraft ||\r\n record.transactionType === TransactionTypes.cvDraft ||\r\n record.transactionType === TransactionTypes.loan ||\r\n record.transactionType === TransactionTypes.parkWithdrawal ||\r\n record.transactionType === TransactionTypes.linepackSale ||\r\n record.transactionType === TransactionTypes.tboLinepackPurchase ||\r\n record.transactionType === TransactionTypes.tboOffSystem ||\r\n record.transactionType === TransactionTypes.tboFuelPayback ||\r\n record.transactionType === TransactionTypes.sboWithdrawal ||\r\n record.transactionType === TransactionTypes.tboReceiptConfirmation ||\r\n (record.transactionType === TransactionTypes.tboTransfer && isReceiptHub)) {\r\n updateObj.debitLocationId = record.creditLocationId;\r\n updateObj.receiptRank = record.deliveryRank;\r\n if (record.transactionType === TransactionTypes.tboOffSystem ||\r\n record.transactionType === TransactionTypes.tboFuelPayback ||\r\n record.transactionType === TransactionTypes.sboWithdrawal ||\r\n record.transactionType === TransactionTypes.tboReceiptConfirmation ||\r\n (record.transactionType === TransactionTypes.tboTransfer && isReceiptHub) ||\r\n record.transactionType === TransactionTypes.tboLinepackPurchase) {\r\n updateObj.creditNominationGroupId = record.nominationGroupId;\r\n } else {\r\n updateObj.debitNominationGroupId = record.nominationGroupId;\r\n }\r\n } else if (record.transactionType === TransactionTypes.offSystem ||\r\n record.transactionType === TransactionTypes.makeupOffSystem ||\r\n record.transactionType === TransactionTypes.sell ||\r\n record.transactionType === TransactionTypes.fuelPack ||\r\n record.transactionType === TransactionTypes.tvarPack ||\r\n record.transactionType === TransactionTypes.paybackPack ||\r\n record.transactionType === TransactionTypes.cvPack ||\r\n record.transactionType === TransactionTypes.park ||\r\n record.transactionType === TransactionTypes.loanPayback ||\r\n record.transactionType === TransactionTypes.linepackPurchase ||\r\n record.transactionType === TransactionTypes.tboLinepackSale ||\r\n record.transactionType === TransactionTypes.tboOnSystem ||\r\n record.transactionType === TransactionTypes.tboFuel ||\r\n record.transactionType === TransactionTypes.sboInjection ||\r\n record.transactionType === TransactionTypes.tboDeliveryConfirmation ||\r\n (record.transactionType === TransactionTypes.tboTransfer && !isReceiptHub)) {\r\n updateObj.creditLocationId = record.debitLocationId;\r\n updateObj.deliveryRank = record.receiptRank;\r\n if (record.transactionType === TransactionTypes.tboOnSystem ||\r\n record.transactionType === TransactionTypes.tboFuel ||\r\n record.transactionType === TransactionTypes.sboInjection ||\r\n record.transactionType === TransactionTypes.tboDeliveryConfirmation ||\r\n (record.transactionType === TransactionTypes.tboTransfer && !isReceiptHub) ||\r\n record.transactionType === TransactionTypes.tboLinepackSale) {\r\n updateObj.debitNominationGroupId = record.nominationGroupId;\r\n } else {\r\n updateObj.creditNominationGroupId = record.nominationGroupId;\r\n }\r\n }\r\n\r\n if (Object.keys(updateObj).length > 0) {\r\n await store.update(event.key, updateObj);\r\n }\r\n\r\n return;\r\n }\r\n\r\n filterNonIntegerKeys = (e, dataGrid: DxDataGridComponent, columnPosition: Array) => {\r\n if (!columnPosition) { return; }\r\n const focusedCellPosition = this.getCurrentCell(dataGrid).columnIndex;\r\n if (!_.includes(columnPosition, focusedCellPosition)) { return; }\r\n DataGridHelpers.filterNonIntegerKeys(e);\r\n };\r\n\r\n filterCommaKeyForPackageId = (e, dataGrid: DxDataGridComponent) => {\r\n const focusedCellPosition = this.getCurrentCell(dataGrid).columnIndex;\r\n if (focusedCellPosition !== 10) { return; } // 11 is the index of the packageId column\r\n DataGridHelpers.filterOutCommaKey(e);\r\n };\r\n\r\n public filterOutNonIntegerKeys = (e) => {\r\n DataGridHelpers.filterOutNonIntegerKeys(e);\r\n };\r\n\r\n public filterOutNonAlphanumericKeys = (e) => {\r\n DataGridHelpers.filterOutNonAlphanumericKeys(e);\r\n };\r\n\r\n\r\n addRecord(dataGrid: DxDataGridComponent): void {\r\n dataGrid.instance.addRow();\r\n }\r\n\r\n onInitNewRow = (e: any, data: INominationRequestsModel, dataGrid: DxDataGridComponent) => {\r\n const previousRowIndex = this.getPreviousRowIndex(dataGrid);\r\n this.currentRowKey = CommonHubService.nextNewRowKey--;\r\n\r\n const gasDay = data.lastSearchParams.gasDay;\r\n const gasCycle = _.find(data.gasCycles, x => x.code === data.lastSearchParams.gasCycleCode);\r\n\r\n const currentRowData = e.data;\r\n currentRowData['key'] = this.currentRowKey;\r\n currentRowData.statusCode = HubStatuses.incomplete;\r\n currentRowData.enterpriseId = data.lastSearchParams.customerId;\r\n\r\n // Energy Imbalance still is bound to these older fields. The Energy Imbalance feature is no longer active and should be removed.\r\n // If you bring back this feature and are missing functionality refer to the git history, look for cellPrepared and other event handlers.\r\n currentRowData.startGasDayCycle = GasDayCycle.for(gasDay, gasCycle);\r\n currentRowData.endGasDayCycle = currentRowData.startGasDayCycle.defaultEndGasDayCycle();\r\n\r\n // Gas Day Cycle fields for Transport, Receipt and Delivery\r\n const startGasDayCycle = GasDayCycle.for(gasDay, gasCycle);\r\n currentRowData.startGasDayDate = startGasDayCycle.gasDayDate;\r\n currentRowData.startGasDayCycleCode = startGasDayCycle.gasCycleCode;\r\n currentRowData.endGasDayEndDate = startGasDayCycle.defaultEndGasDayCycle(NominationRequestLogic.isAdjustment(startGasDayCycle, data)).nextGasDayDate;\r\n\r\n // Force immediate validation. This is to smooth out a grid bug where sometimes validation is called immediately\r\n // and sometimes it isn't. Obviously, validation shouldn't happen right away, but the users want to see the\r\n // red borders so it's obvious what has to be filled in.\r\n dataGrid.instance.closeEditCell();\r\n\r\n // Unpaint the previously focused row.\r\n window.setTimeout(() => {\r\n dataGrid.instance.repaintRows([previousRowIndex + 1]); // + 1 because the new row shifted the old one down.\r\n });\r\n };\r\n\r\n /*getPreviousRowIndex = (dataGrid: DxDataGridComponent): number => {\r\n return dataGrid.instance.getRowIndexByKey(this.currentRowKey);\r\n }*/\r\n\r\n // Add functionality is disabled while we're currently editing a new row.\r\n isDisabled = (dataGrid: DxDataGridComponent): boolean => {\r\n return dataGrid &&\r\n !!dataGrid.instance &&\r\n dataGrid.instance.hasOwnProperty('getVisibleRows') &&\r\n !!(dataGrid.instance.getVisibleRows().find(req => ((req.data)).statusCode === HubStatuses.incomplete));\r\n };\r\n\r\n isDeleteDisabled = (dataGrid: DxDataGridComponent): boolean => {\r\n return dataGrid &&\r\n !!dataGrid.instance &&\r\n dataGrid.instance.hasOwnProperty('getVisibleRows') &&\r\n !(dataGrid.instance.getVisibleRows().find(req => ((req.data)).statusCode === HubStatuses.failed ||\r\n ((req.data)).statusCode === HubStatuses.saved));\r\n };\r\n\r\n isViewOnly = (data: INominationRequestsModel): boolean => {\r\n if (!data) return true;\r\n\r\n if (_.isNil(data.openGasDayCycleStatus) ||\r\n _.isNil(data.lastSearchParams) ||\r\n _.isNil(data.lastSearchParams.gasCycleCode)) {\r\n return true;\r\n }\r\n\r\n if (data.isFullAdjustmentCapable) {\r\n return false;\r\n }\r\n\r\n if (data.isOneDayAdjustmentCapable) {\r\n return data.openGasDayCycleStatus.gasDay.addDays(-1).isGreaterThan(data.lastSearchParams.gasDay);\r\n }\r\n\r\n // Get the gasDayCycleStatus for the last searched gas cycle\r\n const selectedGasDayCycleStatus = _.find( data.gasDayCycleStatuses, x => x.gasCycle.code === data.lastSearchParams.gasCycleCode);\r\n\r\n\r\n return data.isReadOnlyMode || selectedGasDayCycleStatus.isClosedForNomination;\r\n };\r\n\r\n isEditableStatusHub(transactionType, statusCode): boolean {\r\n return transactionType !== TransactionTypes.transport && transactionType !== TransactionTypes.tboTransport && this.isEditableStatus(statusCode);\r\n }\r\n\r\n isEditableStatus (statusCode): boolean {\r\n return statusCode === HubStatuses.incomplete || statusCode === HubStatuses.new || statusCode === HubStatuses.saved;\r\n }\r\n\r\n onSelectionChanged = (e) => {\r\n this.selectionChanged.emit(e);\r\n };\r\n\r\n removeIncompleteRows(dataGrid: DxDataGridComponent) {\r\n if (!!(dataGrid.instance)) {\r\n if (!!(dataGrid.instance.getVisibleRows().find(req => ((req.data)).statusCode === HubStatuses.incomplete))) {\r\n dataGrid.editing.texts.confirmDeleteMessage = '';\r\n dataGrid.instance.deleteRow(0);\r\n }\r\n }\r\n }\r\n\r\n dateEditorFormatter = (dateTime: Date): string => {\r\n return GasDay.from(dateTime).toDisplayDateTimeFormat();\r\n };\r\n\r\n dateEditorParser = (value: string): Date => {\r\n try {\r\n return GasDay.parse(value, true).toDate;\r\n } catch (e) {\r\n return new Date(NaN);\r\n }\r\n };\r\n\r\n dateEditorFormatter2 = (date: Date): string => {\r\n const gasDay = GasDay.from(date);\r\n return gasDay.toDisplayFormatAll();\r\n };\r\n\r\n dateEditorParser2 = (value: string): Date => {\r\n try {\r\n return GasDay.parse(value, true).toDate;\r\n } catch (e) {\r\n return new Date(NaN);\r\n }\r\n };\r\n\r\n endDateDisplayFormatter = (settings: any): string => {\r\n return GasDay.from(settings.value).toDisplayDateTimeFormat();\r\n };\r\n\r\n public formatGasDayCycle(date: Date, cycleCode: string, gasCycles: GasCycle[]) {\r\n const gasDay = GasDay.from(date);\r\n const gasCycle = gasCycles.find(x => x.code === cycleCode);\r\n\r\n const gasDayCycle = GasDayCycle.for(gasDay, gasCycle);\r\n return gasDayCycle.toGasDayCycleFormatString();\r\n }\r\n\r\n isLocationNonThreaded = (locationId: number, locations: NominationLocation[]): boolean => {\r\n const location = _.find(locations, loc => loc.id === locationId);\r\n\r\n return !location || location.accountingLocationParameters.confirmationMethod === 'Non-Threaded';\r\n };\r\n\r\n describeNumberOfRecords(data: NominationRequest[], dataGrid: DxDataGridComponent): string {\r\n if (!!data) {\r\n const lengthOfRealRecords = data.length;\r\n const lengthOfVisibleRecords = (dataGrid == null || dataGrid.instance == null || !dataGrid.instance.hasOwnProperty('getVisibleRows')) ?\r\n lengthOfRealRecords :\r\n _.filter(dataGrid.instance.getVisibleRows(), x => ((x.data)).statusCode !== HubStatuses.incomplete).length;\r\n if (lengthOfRealRecords === lengthOfVisibleRecords) {\r\n return lengthOfRealRecords.toString();\r\n }\r\n return lengthOfVisibleRecords + ' of ' + lengthOfRealRecords;\r\n }\r\n\r\n return '';\r\n }\r\n\r\n validateForThreaded = (e, dataField: string, data: INominationRequestsModel, dataGrid: DxDataGridComponent): boolean => {\r\n const key = e.validator.option(\"validationGroup.key\"); // Get the key of your row\r\n const grid = dataGrid.instance; // Get the grid instance\r\n const rowOptions = grid.getVisibleRows()[grid.getRowIndexByKey(key)];\r\n\r\n const rowIndex = rowOptions.rowIndex;\r\n const transactionType = dataGrid.instance.cellValue(rowIndex, 'transactionType');\r\n\r\n if (transactionType !== TransactionTypes.onSystem && transactionType !== TransactionTypes.offSystem &&\r\n transactionType !== TransactionTypes.makeupOnSystem && transactionType !== TransactionTypes.makeupOffSystem\r\n && transactionType !== TransactionTypes.tboOnSystem && transactionType !== TransactionTypes.tboOffSystem) return true; // only care about validation of threaded locations for OnSystem/OffSystem Noms\r\n\r\n const locationId = dataGrid.instance.cellValue(rowIndex, dataField);\r\n if (!locationId || this.isLocationNonThreaded(locationId, data.locations)) {\r\n return true;\r\n } else {\r\n return e.value !== null && e.value !== undefined && e.value.length > 0;\r\n }\r\n };\r\n\r\n // Nomination group is always required. However, for TBO Confirmations the user can't edit them\r\n // because they're auto-filled when the user picks location. We report that in this case the nom\r\n // group is not required so the red border does not appear around the cell.\r\n validateForNominationGroup = (e, data: INominationRequestsModel, dataGrid: DxDataGridComponent): boolean => {\r\n const key = e.validator.option(\"validationGroup.key\"); // Get the key of your row\r\n const grid = dataGrid.instance; // Get the grid instance\r\n const rowOptions = grid.getVisibleRows()[grid.getRowIndexByKey(key)];\r\n\r\n const rowIndex = rowOptions.rowIndex;\r\n const transactionType = dataGrid.instance.cellValue(rowIndex, 'transactionType');\r\n\r\n if (transactionType !== TransactionTypes.tboReceiptConfirmation && transactionType !== TransactionTypes.tboDeliveryConfirmation) {\r\n const nomGroupId = dataGrid.instance.cellValue(rowIndex, 'nominationGroupId');\r\n return !!nomGroupId;\r\n } else {\r\n return true;\r\n }\r\n };\r\n\r\n isTboSelected = (businessRight: string): boolean => {\r\n return businessRight === BusinessRight.TboTransportation.name;\r\n };\r\n\r\n public getDataForSort = (rowData) => {\r\n // If there is an undo object, sort by the original value.\r\n // This way the row won't move around during an edit.\r\n const undoObjs = this.undos.filter(item => item.key === rowData.key);\r\n if (undoObjs.length > 0) {\r\n return undoObjs[0].data;\r\n } else {\r\n return rowData;\r\n }\r\n };\r\n\r\n public updateSelectedRows = (dataGrid: DxDataGridComponent, keysToAdd: Array, keysToRemove: Array) => {\r\n dataGrid.instance.selectRows(keysToAdd, true);\r\n dataGrid.instance.deselectRows(keysToRemove);\r\n };\r\n\r\n public getNomGroupsForBuyOrSell(data: INominationRequestsModel): Array {\r\n const result: Array = [];\r\n // We want to display \"company name (nom group)\" in the dropdown list, so we manufacture\r\n // a new array of new objects.\r\n const gasDay = data.lastSearchParams.gasDay.toDate.valueOf();\r\n const nomGroups = _.filter(data.hubNomGroups, x =>\r\n x.businessRight === BusinessRight.MultiTitleTransfer.name &&\r\n x.id !== data.lastSearchParams.nomGroupId &&\r\n x.effectiveGasDay.toDate.valueOf() <= gasDay &&\r\n x.expiryGasDay.toDate.valueOf() >= gasDay);\r\n\r\n for (let n = 0; n < nomGroups.length; n++) {\r\n const ng = nomGroups[n];\r\n const obj = new NominationGroup();\r\n obj.id = ng.id;\r\n obj.mnemonic = `${ng['enterpriseShortName']} (${ng.mnemonic})`;\r\n const idx = _.sortedIndexBy(result, obj, (x) => x.mnemonic);\r\n result.splice(idx, 0, obj);\r\n }\r\n return result;\r\n }\r\n\r\n public prepareLocation(e, selectBox, data: INominationRequestsModel, dataGrid: DxDataGridComponent) {\r\n if (selectBox) {\r\n selectBox.on('selectionChanged', x => {\r\n if (x.selectedItem) {\r\n const locationNonThreaded = this.isLocationNonThreaded(x.selectedItem.id, data.locations);\r\n if (locationNonThreaded) {\r\n e.data.upDownContract = null;\r\n e.data.counterParty = null;\r\n }\r\n if (e.data.transactionType === TransactionTypes.tboReceiptConfirmation || e.data.transactionType === TransactionTypes.tboDeliveryConfirmation) {\r\n const locationId = x.selectedItem.id;\r\n const nomGroupId = locationId == null ? null : _.filter(data.tboConfirmationNomGroups, y => _.find(y.locations, z => z.locationId === locationId) != null)[0].id;\r\n if (e.data.key < 0) {\r\n e.data.nominationGroupId = nomGroupId;\r\n } else {\r\n const store = dataGrid.instance.getDataSource().store();\r\n store.byKey(e.data.key).then(() => {\r\n const updateObj: any = {nominationGroupId: nomGroupId};\r\n store.update(e.data.key, updateObj);\r\n });\r\n }\r\n }\r\n }\r\n });\r\n\r\n selectBox.option({\r\n dataSource: {\r\n store: this.getFilteredLocationsFromNomGroup(e.data, data),\r\n paginate: true,\r\n pageSize: 10,\r\n sort: { getter: \"name\", desc: false }\r\n }\r\n });\r\n }\r\n }\r\n\r\n public prepareTransactionType(e, locationField: string, getFilteredTransactionTypes: (gasCycleCode: string) => Array, selectBox, dataGrid: DxDataGridComponent, data: INominationRequestsModel) {\r\n if (selectBox) {\r\n selectBox.on('selectionChanged', x => {\r\n if (x.selectedItem) {\r\n const nomGroups = this.getFilteredNomGroupsFromTransactionType(x.selectedItem.description, data);\r\n\r\n let packageId = \"\";\r\n if (x.selectedItem.description === TransactionTypes.TboOffSystem || x.selectedItem.description === TransactionTypes.TboOnSystem) {\r\n let updateObj: any;\r\n updateObj = {nominationGroupId: e.data.creditNominationGroupId};\r\n this.nominationNomGroupEnrichmentService.enrich(updateObj, 'nominationGroupId', 'nominationGroup').subscribe(x => {\r\n packageId = x.nominationGroupMnemonic;\r\n });\r\n }\r\n if (packageId !== e.data.packageId) {\r\n this.currentRowIndex = e.rowIndex;\r\n e.data.packageId = packageId;\r\n }\r\n\r\n const nomGroupId = (nomGroups.length === 1) ? nomGroups[0].id : null;\r\n const prevNomGroupId = e.data.nominationGroupId;\r\n\r\n if (nomGroupId !== e.data.nominationGroupId) {\r\n this.currentRowIndex = e.rowIndex;\r\n e.data.nominationGroupId = nomGroupId;\r\n\r\n //bug #261851 -this feels like a hack, but is required.\r\n //the backend datastore doesn't get updated with the new nom group everytime, when the account is changed and the status is new.\r\n //this will force the update to the store for the grid and update the nomgroup on the ui accordingly..\r\n if(e.data.statusCode === HubStatuses.new){\r\n const store = dataGrid.instance.getDataSource().store();\r\n store.byKey(e.data.key).then(() => {\r\n const updateObj: any = {nominationGroupId: prevNomGroupId};\r\n updateObj.nominationGroupId = nomGroupId;\r\n store.update(e.data.key, updateObj);\r\n });\r\n }\r\n\r\n this.onNominationGroupSelectionChanged(e, locationField, dataGrid, data);\r\n }\r\n\r\n setTimeout(() => dataGrid.instance.repaintRows([this.currentRowIndex]));\r\n this.delayFocusCellElement(e.rowIndex, e.columnIndex, dataGrid);\r\n }\r\n });\r\n\r\n selectBox.option({\r\n dataSource: {\r\n store: getFilteredTransactionTypes(e.data.startGasDayCycleCode),\r\n paginate: true,\r\n pageSize: 10\r\n }\r\n });\r\n }\r\n }\r\n\r\n public prepareNominationGroup(e, locationField: string, selectBox, dataGrid: DxDataGridComponent, data: INominationRequestsModel) {\r\n if (selectBox) {\r\n selectBox.on('selectionChanged', () => {\r\n this.onNominationGroupSelectionChanged(e, locationField, dataGrid, data);\r\n });\r\n\r\n selectBox.option({\r\n dataSource: {\r\n store: this.getFilteredNomGroupsFromTransactionType(e.data.transactionType, data),\r\n paginate: true,\r\n pageSize: 10\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Afer upgrading DevExtreme to the latest version, whenever a datagrid row is repainted, we would lose focus on particular items\r\n * such as the drop down box when the user selected an item. Attempted to remove the repaint datagrid row because it seems like a\r\n * poor design to have to repaint the row but ran into a lot of issues (mainly due to how we've implemented the datagrid).\r\n *\r\n * Finally, came across this solution which will focus the cell based on the rowIndex and columnIndex. We need to use a timeout because\r\n * the code that is performing the repaint of the datagrid row is also wrapped in a timeout. In my opinion, we shouldn't really need to\r\n * use the TimeOut. The Nomination Request page should really be refactored due to it's sheer complexity, some unnecessary code, and pieced\r\n * meal code.\r\n */\r\n public delayFocusCellElement(rowIndex: number, columnIndex: number, dataGrid: DxDataGridComponent): void {\r\n setTimeout(() => {\r\n this.focusCellElement(rowIndex, columnIndex, dataGrid);\r\n });\r\n }\r\n\r\n public focusCellElement(rowIndex: number, columnIndex: number, dataGrid: DxDataGridComponent): void {\r\n const focusCellElement = dataGrid.instance.getCellElement(rowIndex, columnIndex);\r\n dataGrid.instance.focus(focusCellElement);\r\n }\r\n\r\n private getFilteredLocationsFromNomGroup(rowData: NominationRequest, data: INominationRequestsModel): Array {\r\n let result: Array = [];\r\n const transactionType = rowData.transactionType;\r\n\r\n const nomGroup = _.find(data.nomGroups2, x => x.id === rowData['nominationGroupId']);\r\n const locationsForCycle = _.filter(data.locations2, x => x.isTransferLocationForCycle(transactionType, rowData.startGasDayCycleCode, nomGroup, data.nomGroups2));\r\n\r\n if (transactionType === TransactionTypes.tboReceiptConfirmation ||\r\n transactionType === TransactionTypes.tboDeliveryConfirmation) {\r\n // This has to appear before the BusinessRight.LdcVariance check because the tboConfirmation\r\n // t-types can have LdcVariance, and in that case the location comes from NomGroupLocations.\r\n const hubNomGroupLocations = _.map(data.selectedNomGroup.locations, loc => loc.locationId);\r\n result = _.filter(locationsForCycle, x => _.includes(hubNomGroupLocations, x.id));\r\n\r\n // Filter out any that don't have locations that are in tboConfirmationNomGroups\r\n const locations = _.flatMap(data.tboConfirmationNomGroups, x => _.map(x.locations, y => y.locationId));\r\n result = _.filter(result, x => _.includes(locations, x.id));\r\n } else if (data.selectedNomGroup.businessRight === BusinessRight.LdcVariance.name) {\r\n result = _.filter(locationsForCycle, itemData =>\r\n itemData.accountingLocationParameters.allocationMethod === 'LBA' &&\r\n itemData.accountingLocationParameters.isNominationsAllowed &&\r\n itemData.operatorEnterpriseCid === data.lastSearchParams.customerId);\r\n } else if (transactionType === TransactionTypes.loan || transactionType === TransactionTypes.parkWithdrawal ||\r\n transactionType === TransactionTypes.park || transactionType === TransactionTypes.loanPayback) {\r\n // Park & Loan restricted to nom group path.\r\n const filteredNomGroups = _.find(data.nomGroups, p => p.id === rowData['nominationGroupId']);\r\n result = _.filter(locationsForCycle, itemData => filteredNomGroups && filteredNomGroups.paths && filteredNomGroups.paths.length > 0 && itemData.id === filteredNomGroups.paths[0].receiptLocationId);\r\n } else if (transactionType === TransactionTypes.tboTransfer) {\r\n if (!_.isNil(rowData['nominationGroupId'])) {\r\n const hubNomGroupLocationsForTboTransfer = _.map(data.selectedNomGroup.locations, loc => loc.locationId);\r\n const filteredNomGroupsForTboTransfer = _.find(data.nomGroups, p => p.id === rowData['nominationGroupId']);\r\n const rowNomGroupLocationsForTboTransfer = _.map(filteredNomGroupsForTboTransfer.locations, loc => loc.locationId);\r\n result = _.filter(locationsForCycle, x => _.includes(hubNomGroupLocationsForTboTransfer, x.id) && _.includes(rowNomGroupLocationsForTboTransfer, x.id));\r\n }\r\n } else if (transactionType === TransactionTypes.tboFuel ||\r\n transactionType === TransactionTypes.tboFuelPayback ||\r\n transactionType === TransactionTypes.sboInjection ||\r\n transactionType === TransactionTypes.sboWithdrawal ||\r\n transactionType === TransactionTypes.tboOffSystem ||\r\n transactionType === TransactionTypes.tboOnSystem ||\r\n transactionType === TransactionTypes.tboLinepackSale ||\r\n transactionType === TransactionTypes.tboLinepackPurchase\r\n ) {\r\n const hubNomGroupLocations = _.map(data.selectedNomGroup.locations, loc => loc.locationId);\r\n result = _.filter(locationsForCycle, x => _.includes(hubNomGroupLocations, x.id));\r\n } else if (rowData.statusCode === HubStatuses.incomplete) {\r\n // Incomplete see all locations.\r\n result = _.filter(locationsForCycle, x => x.accountingLocationParameters.isNominationsAllowed);\r\n } else if (transactionType === TransactionTypes.fuelDraft ||\r\n transactionType === TransactionTypes.fuelPack ||\r\n transactionType === TransactionTypes.sell ||\r\n transactionType === TransactionTypes.tvarDraft ||\r\n transactionType === TransactionTypes.tvarPack ||\r\n transactionType === TransactionTypes.paybackDraft ||\r\n transactionType === TransactionTypes.paybackPack ||\r\n transactionType === TransactionTypes.cvDraft ||\r\n transactionType === TransactionTypes.cvPack ||\r\n transactionType === TransactionTypes.buy ||\r\n transactionType === TransactionTypes.linepackPurchase ||\r\n transactionType === TransactionTypes.linepackSale\r\n ) {\r\n // See all locations.\r\n result = _.filter(locationsForCycle, x => x.accountingLocationParameters.isNominationsAllowed);\r\n } else {\r\n // Otherwise, restrict to the same location type as the current one.\r\n const isNonThreaded = this.isLocationNonThreaded(rowData.debitLocationId, data.locations);\r\n result = _.filter(locationsForCycle, itemData => this.isLocationNonThreaded(itemData.id, data.locations) === isNonThreaded);\r\n }\r\n\r\n switch (transactionType) {\r\n case TransactionTypes.onSystem:\r\n case TransactionTypes.makeupOnSystem:\r\n // Filter out any non-receipt locations.\r\n result = _.filter(result, x => x.accountingLocationParameters.isReceipt && x.accountingLocationParameters.isConfirmed);\r\n break;\r\n case TransactionTypes.offSystem:\r\n case TransactionTypes.makeupOffSystem:\r\n // Filter out any non-delivery locations.\r\n result = _.filter(result, x => x.accountingLocationParameters.isDelivery && x.accountingLocationParameters.isConfirmed);\r\n break;\r\n case TransactionTypes.cvPack:\r\n case TransactionTypes.cvDraft:\r\n result = _.filter(result, x => x.accountingLocationParameters.isCVAllowed);\r\n break;\r\n case TransactionTypes.fuelDraft:\r\n case TransactionTypes.fuelPack:\r\n const parentNomGroup = _.find(data.allNomGroups, {id: nomGroup.parentNominationGroupId});\r\n // Add Secondary Fuel Locations that aren't already in the list (could have been added via Secondary Locations)\r\n _.each(parentNomGroup.secondaryFuelLocations, fuelLocation => {\r\n if (_.some(result, {id: fuelLocation.id}) === false) {\r\n const nominationLocation = new NominationLocation();\r\n nominationLocation.id = fuelLocation.id;\r\n nominationLocation.name = fuelLocation.name;\r\n result.push(nominationLocation);\r\n }\r\n });\r\n break;\r\n // For all TBO transaction types, filter out locations where isTboNominationAllowed is false\r\n case TransactionTypes.tboOnSystem:\r\n case TransactionTypes.tboOffSystem:\r\n case TransactionTypes.tboFuel:\r\n case TransactionTypes.tboFuelPayback:\r\n case TransactionTypes.tboTransfer:\r\n case TransactionTypes.sboInjection:\r\n case TransactionTypes.sboWithdrawal:\r\n case TransactionTypes.tboImbalanceTransfer:\r\n case TransactionTypes.tboReceiptConfirmation:\r\n case TransactionTypes.tboDeliveryConfirmation:\r\n case TransactionTypes.tboLinepackPurchase:\r\n case TransactionTypes.tboLinepackSale:\r\n result = _.filter(result, x => x.accountingLocationParameters.isTboNominationAllowed);\r\n break;\r\n }\r\n\r\n if (transactionType === TransactionTypes.tboOnSystem || transactionType === TransactionTypes.tboOffSystem) {\r\n result = _.filter(result, x => x.accountingLocationParameters.isConfirmed);\r\n }\r\n\r\n if(this.isGreenGasHub(data.selectedNomGroup) && transactionType === TransactionTypes.onSystem){\r\n // MR do not apply the secondary filter if we are dealing with an RNG or Cert HubType,\r\n return _.filter(result, x =>x.name===\"Empress\"); // May need to filter this down to empress\r\n }else if(this.isGreenGasHub(data.selectedNomGroup)){ return result;}\r\n\r\n if ((transactionType === TransactionTypes.onSystem || transactionType === TransactionTypes.offSystem) &&\r\n (!data.selectedNomGroup.isPrimaryHub && !data.selectedNomGroup.isShortNoticeHub)) {\r\n result = _.filter(result, x => x.accountingLocationParameters.isSecondaryHubNomAllowed);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n isGreenGasHub(selectedNomGroup : NominationGroup) {\r\n // TODO MR if green gas explodes we will likely want to tag Nom group with a nullable column gas type or something to that effect\r\n return ((selectedNomGroup.mnemonic.indexOf(\" RNG\")!==-1) || (selectedNomGroup.mnemonic.indexOf(\" Cert\")!==-1));\r\n }\r\n\r\n // This code is called when the Nomination Group cell is entered. It returns the list of\r\n // nomination groups to show in the dropdown.\r\n public getFilteredNomGroupsFromTransactionType(transactionType: string, data: INominationRequestsModel): Array {\r\n let result: Array = [];\r\n\r\n switch (transactionType) {\r\n case TransactionTypes.onSystem:\r\n case TransactionTypes.offSystem:\r\n case TransactionTypes.makeupOnSystem:\r\n case TransactionTypes.makeupOffSystem:\r\n case TransactionTypes.paybackDraft:\r\n case TransactionTypes.paybackPack:\r\n const nomGroup = _.find(data.hubNomGroups, x => x.id === data.lastSearchParams.nomGroupId);\r\n for (let n = 0; n < nomGroup.children.length; n++) {\r\n result.push(nomGroup.children[n]);\r\n }\r\n break;\r\n case TransactionTypes.buy:\r\n case TransactionTypes.sell:\r\n result = this.getNomGroupsForBuyOrSell(data);\r\n break;\r\n case TransactionTypes.fuelDraft:\r\n case TransactionTypes.fuelPack:\r\n result = data.transportationFuelNomGroups;\r\n break;\r\n case TransactionTypes.tvarDraft:\r\n case TransactionTypes.tvarPack:\r\n result = data.transportationVarianceNomGroups;\r\n break;\r\n case TransactionTypes.cvDraft:\r\n case TransactionTypes.cvPack:\r\n // Find the CT(s) for the selected MTT account.\r\n const hub = _.find(data.customerHubNomGroups, x => x.id === data.lastSearchParams.nomGroupId);\r\n const ctsIds = _.filter(hub.children, x => x.businessRight === BusinessRight.CustodyTransfer.name).map(x => x.id);\r\n result = _.filter(data.confirmationVarianceNomGroups, x => _.includes(ctsIds, x.parentNominationGroupId));\r\n //\r\n // result = _.filter(data.confirmationVarianceNomGroups, function(x) {\r\n // return _.find(cts, y => y.id === x.parentNominationGroupId) !== null;\r\n // });\r\n break;\r\n case TransactionTypes.loan:\r\n case TransactionTypes.loanPayback:\r\n result = data.loanNomGroups;\r\n break;\r\n case TransactionTypes.park:\r\n case TransactionTypes.parkWithdrawal:\r\n result = data.parkNomGroups;\r\n break;\r\n case TransactionTypes.linepackPurchase:\r\n case TransactionTypes.linepackSale:\r\n case TransactionTypes.tboLinepackSale:\r\n case TransactionTypes.tboLinepackPurchase:\r\n result = data.inventoryTransferNomGroups;\r\n break;\r\n case TransactionTypes.PaybackPack:\r\n case TransactionTypes.PaybackDraft:\r\n case TransactionTypes.tboOffSystem:\r\n case TransactionTypes.tboOnSystem:\r\n result = _.filter(data.tboTransferNomGroups, x => x.businessRight === BusinessRight.CustodyTransfer.name && x.enterpriseId === data.lastSearchParams.customerId);\r\n break;\r\n case TransactionTypes.tboFuel:\r\n case TransactionTypes.tboFuelPayback:\r\n result = _.filter(data.tboFuelNomGroups, x => x.businessRight === BusinessRight.TboFuel.name && data.lastSearchParams.nomGroupId === x.parentNominationGroupId);\r\n break;\r\n case TransactionTypes.tboTransfer:\r\n result = _.filter(data.tboTransferNomGroups, x => x.businessRight === BusinessRight.TboTransportation.name && x.enterpriseId === data.lastSearchParams.customerId && x.id !== data.lastSearchParams.nomGroupId);\r\n break;\r\n case TransactionTypes.sboInjection:\r\n case TransactionTypes.sboWithdrawal:\r\n result = _.filter(data.tboTransferNomGroups, x => x.businessRight === BusinessRight.SboStorage.name && x.enterpriseId === data.lastSearchParams.customerId);\r\n break;\r\n // case TransactionTypes.tboReceiptConfirmation:\r\n // case TransactionTypes.tboDeliveryConfirmation:\r\n // result = _.filter(data.tboConfirmationNomGroups, x => x.locations.length > 0);\r\n // break;\r\n }\r\n result = _.sortBy(result, x => x.mnemonic);\r\n return result;\r\n }\r\n\r\n private onNominationGroupSelectionChanged(e, locationField: string, dataGrid: DxDataGridComponent, data: INominationRequestsModel) {\r\n window.setTimeout(() => {\r\n const locations = this.getFilteredLocationsFromNomGroup(e.data, data);\r\n if ((e.data[locationField] && !_.find(locations, loc => loc.id === e.data[locationField]))) {\r\n e.data[locationField] = (locations.length === 1) ? locations[0].id : null;\r\n dataGrid.instance.repaintRows([e.rowIndex]);\r\n } else if (_.isNil(e.data[locationField])) {\r\n e.data[locationField] = (locations.length === 1) ? locations[0].id : null;\r\n }\r\n });\r\n }\r\n\r\n public isReceiptDeliveryCellEditable(row, dataField: string, data: INominationRequestsModel): boolean {\r\n if (this.isReceiptDeliveryRowEditable(row, data)) {\r\n switch (dataField) {\r\n\r\n\r\n case data.nomRequestFields.startGasDayDate:\r\n case data.nomRequestFields.endGasDayEndDate:\r\n return data.lastSearchParams.gasCycleCode === GasCycle.TimelyCycleCode; // Dates are only editable if the last search param is Timely.\r\n\r\n /* TODO - JOE - I think we should do this instead\r\n const gasDayCycle = GasDayCycle.forCode(data.lastSearchParams.gasDay, data.lastSearchParams.gasCycleCode, data.gasCycles);\r\n if (NominationRequestLogic.isAdjustment(gasDayCycle, data)) {\r\n return false;\r\n }\r\n return data.lastSearchParams.gasCycleCode === GasCycle.TimelyCycleCode; // Dates are only editable if the last search param is Timely.\r\n */\r\n\r\n case 'debitLocationName':\r\n case 'creditLocationName':\r\n case 'billableServiceOptionId':\r\n case 'bidPrice':\r\n case 'statusCode':\r\n // Always read-only.\r\n return false;\r\n\r\n case 'transactionType':\r\n // Editable if Incomplete or New.\r\n return row.data.statusCode === HubStatuses.incomplete || row.data.statusCode === HubStatuses.new;\r\n\r\n case 'nominationGroupId':\r\n // Not editable for trans type of TBO Confirmation. Otherwise, editable if\r\n // Incomplete or New\r\n if (row.data.transactionType === TransactionTypes.tboReceiptConfirmation || row.data.transactionType === TransactionTypes.tboDeliveryConfirmation) {\r\n return false;\r\n } else if (row.data.statusCode === HubStatuses.incomplete || row.data.statusCode === HubStatuses.new) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n\r\n case 'debitLocationId':\r\n case 'creditLocationId':\r\n case 'packageId':\r\n // Editable if Incomplete or New or Saved or Failed, or, if Buy/Sell transaction, Mismatched.\r\n if (row.data.transactionType === TransactionTypes.TboOnSystem || row.data.transactionType === TransactionTypes.TboOffSystem) {\r\n return true;\r\n } else\r\n if (row.data.transactionType !== TransactionTypes.transport && row.data.transactionType !== TransactionTypes.tboTransport) {\r\n return row.data.statusCode === HubStatuses.incomplete || row.data.statusCode === HubStatuses.new || row.data.statusCode === HubStatuses.saved || row.data.statusCode === HubStatuses.failed || row.data.statusCode === HubStatuses.mismatched;\r\n } else {\r\n return false;\r\n }\r\n\r\n case 'counterParty':\r\n case 'upDownContract':\r\n // If applicable, editable if Incomplete or New or Saved or Failed.\r\n if ((row.data.transactionType === TransactionTypes.onSystem || row.data.transactionType === TransactionTypes.makeupOnSystem || row.data.transactionType === TransactionTypes.TboOffSystem) && row.data.creditLocationId && !this.isLocationNonThreaded(row.data.creditLocationId, data.locations)) {\r\n return row.data.statusCode === HubStatuses.incomplete || row.data.statusCode === HubStatuses.new || row.data.statusCode === HubStatuses.saved || row.data.statusCode === HubStatuses.failed;\r\n } else if ((row.data.transactionType === TransactionTypes.offSystem || row.data.transactionType === TransactionTypes.makeupOffSystem || row.data.transactionType === TransactionTypes.TboOnSystem) && row.data.debitLocationId && !this.isLocationNonThreaded(row.data.debitLocationId, data.locations)) {\r\n if ((row.data.transactionType === TransactionTypes.offSystem || row.data.transactionType === TransactionTypes.makeupOffSystem || row.data.transactionType === TransactionTypes.TboOnSystem) && row.data.debitLocationId) {\r\n return row.data.statusCode === HubStatuses.incomplete || row.data.statusCode === HubStatuses.new || row.data.statusCode === HubStatuses.saved || row.data.statusCode === HubStatuses.failed;\r\n }\r\n }\r\n return false;\r\n\r\n case 'receiptRank':\r\n case 'deliveryRank':\r\n // Always editable, including transport.\r\n return true;\r\n\r\n default:\r\n // Always editable except for transport.\r\n return row.data.transactionType !== TransactionTypes.transport && row.data.transactionType !== TransactionTypes.tboTransport;\r\n }\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n private isReceiptDeliveryRowEditable = (row, data): boolean => {\r\n return !this.isViewOnly(data) && row && row.data;\r\n };\r\n\r\n /**\r\n * Private Methods\r\n */\r\n\r\n /**\r\n * For customizing how data is rendered on the data grid. This is handled on a per column basis.\r\n */\r\n private customDisplayFormattingForColumns(cellElement: HTMLElement, cellInfo: any) {\r\n // This is only for Energy Imbalance.\r\n if (cellInfo.column.dataField === 'startGasDayCycle.gasDayDate') {\r\n cellElement.innerText = GasDayCycle.formatGasDayCycle(cellInfo.data.startGasDayCycle);\r\n }\r\n }\r\n\r\n private customOnCellUpdated(event: any, data: INominationRequestsModel, updateObj: any, existingRecord: any) {\r\n const undoObj = _.find(this.undos, item => item.key === event.key); // Undo object helps us determine if this cell changed from the original saved state\r\n\r\n if (undoObj) {\r\n NominationRequestLogic.defaultNominationRequestGasDayCycleBasedOnGasCycle(event, data, updateObj, existingRecord, undoObj);\r\n }\r\n }\r\n}\r\n","import {DxDataGridComponent} from \"devextreme-angular\";\r\n\r\n// This interface exists to prevent circular references between the nomination files.\r\nexport interface IHubComponent {\r\n dataGrid: DxDataGridComponent;\r\n canDisableSubmitButton: boolean;\r\n clearGridEdits: () => void;\r\n filter(): void;\r\n selectSavedRequests(requestsToSelect: any): void;\r\n deselectNewDuplicateKeyRequests(requestsToSelect: any): void;\r\n deselectExpiredKeyRequests(requestsToDeselect: any): void;\r\n removeIncompleteRows(): void;\r\n isDisabled(): boolean;\r\n isDeleteDisabled(): boolean;\r\n isViewOnly(): boolean;\r\n}\r\n\r\n// We create the abstract base class for @ViewChild.\r\nexport abstract class HubComponentBase implements IHubComponent {\r\n abstract dataGrid: DxDataGridComponent;\r\n abstract canDisableSubmitButton: boolean;\r\n abstract clearGridEdits: () => void;\r\n abstract filter(): void;\r\n abstract selectSavedRequests(requestsToSelect: any): void;\r\n abstract deselectNewDuplicateKeyRequests(requestsToSelect: any): void;\r\n abstract deselectExpiredKeyRequests(requestsToDeselect: any): void;\r\n abstract removeIncompleteRows(): void;\r\n abstract isDisabled(): boolean;\r\n abstract isDeleteDisabled(): boolean;\r\n abstract isViewOnly(): boolean;\r\n}\r\n","
\r\n
\r\n\r\n
\r\n Number of hub receipt requests: {{describeNumberOfRecords}}\r\n \r\n Add\r\n
Add
\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n
\r\n \r\n
\r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n
\r\n Supply
Location\r\n
\r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n
\r\n Bid
Price\r\n
\r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n Gas
Cycle\r\n
\r\n\r\n \r\n \r\n \r\n
\r\n {{ row.data.startGasDayDate | dateCycleToGasDayFormat: row.data.startGasDayCycleCode : data.gasCycles }}\r\n
\r\n\r\n \r\n \r\n \r\n
\r\n {{ row.data.endGasDayEndDate | dateToGasDayFormat }}\r\n
\r\n\r\n \r\n \r\n
\r\n {{ epsqConversion(row.data.epsq, row.data.statusCode) }}\r\n
\r\n\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Submitted ByCompanyDate
{{row.data.submittedByUserFullName}}{{row.data.submittedByUserEnterpriseIdShortName}}{{row.data.issueDateTime?.toDisplayFormat()}}
\r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n","import * as dx from \"devextreme/core/renderer\";\r\nimport * as _ from 'lodash';\r\nimport {\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {CommonHubService, UndoRowArgs} from \"../common-hub.service\";\r\nimport {\r\n NominationRequest,\r\n TransactionTypes\r\n} from \"@shared/services/nomination/nomination-request/nomination-request.service\";\r\nimport {SortingService} from \"../sorting-service/sorting.service\";\r\nimport {HubComponentBase} from \"../hub-component.interface\";\r\nimport {\r\n INominationRequestsModel,\r\n IUndoRecord\r\n} from '@shared/services/nomination/nomination-request/nomination-request.interface';\r\nimport {NominationGroupHierarchy2} from \"@shared/services/nomination/nomination-nom-group/nomination-nom-group.service\";\r\nimport {BusinessRight} from \"@model/business-right\";\r\nimport {NominationNomGroupEnrichmentService} from \"@shared/services/nomination/nomination-nom-group-enrichment/nomination-nom-group-enrichment.service\";\r\nimport {HubStatuses} from \"../nomination-requests.model\";\r\n\r\n@Component({\r\n selector: 'app-receipt-hub',\r\n templateUrl: './receipt-hub.component.html',\r\n styleUrls: ['../common-hub.service.css', './receipt-hub.component.css']\r\n})\r\nexport class ReceiptHubComponent extends HubComponentBase implements OnInit, AfterViewInit {\r\n @Input() data: INominationRequestsModel;\r\n @Input() undos: Array;\r\n @Output() undoRow: EventEmitter = new EventEmitter();\r\n @Output() selectionChanged: EventEmitter = new EventEmitter();\r\n\r\n @ViewChild(DxDataGridComponent)\r\n public dataGrid: DxDataGridComponent;\r\n public commonImpl: CommonHubService;\r\n public canDisableSubmitButton = true;\r\n private sortingService: SortingService;\r\n public rankPattern: any = /^([1-9]|[1-9][0-9]|[1-9][0-9][0-9])$/;\r\n\r\n integerOnlyColumnIndexes: Array = [10];\r\n\r\n constructor(public cdr: ChangeDetectorRef,\r\n private nominationNomGroupEnrichmentService: NominationNomGroupEnrichmentService) {\r\n super();\r\n this.commonImpl = new CommonHubService(this.undoRow, this.selectionChanged, this.hasRowChanged, this.isCellEditable, nominationNomGroupEnrichmentService);\r\n this.sortingService = new SortingService();\r\n }\r\n\r\n ngOnInit() {\r\n // Grid field - select box sizes\r\n this.data.columnEditorPopupWidths = new Map([\r\n [this.data.nomRequestFields.transactionType, 190],\r\n [this.data.nomRequestFields.nominationGroupId, 300],\r\n [this.data.nomRequestFields.debitLocationId, 200],\r\n [this.data.nomRequestFields.creditLocationId, 200]\r\n ]);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.cdr.detectChanges(); // https://stackoverflow.com/questions/34364880/expression-has-changed-after-it-was-checked\r\n this.commonImpl.onNgAfterViewInit(this.undos);\r\n this.commonImpl.updateSelectedRows(this.dataGrid, this.data.receiptSelections, []);\r\n }\r\n\r\n onContentReady() {\r\n if (this.data.balanceHubSelectedRowKeys.length > 0) {\r\n this.filter();\r\n }\r\n }\r\n\r\n onCellPrepared = (e) => {\r\n this.commonImpl.onCellPrepared(e, this.data, this.dataGrid);\r\n\r\n if (e.rowType === 'data') {\r\n const cellElement = dx(e.cellElement);\r\n const selectBoxEditorElement = cellElement.find('.dx-selectbox');\r\n const selectBox = selectBoxEditorElement.data('dxSelectBox');\r\n const textBoxEditorElement = cellElement.find('.dx-textbox');\r\n const textBox = textBoxEditorElement.data('dxTextBox');\r\n\r\n switch (e.column.dataField) {\r\n case 'creditLocationId':\r\n this.commonImpl.prepareLocation(e, selectBox, this.data, this.dataGrid);\r\n break;\r\n case 'transactionType':\r\n this.commonImpl.prepareTransactionType(e, 'creditLocationId', this.getFilteredTransactionTypes, selectBox, this.dataGrid, this.data);\r\n break;\r\n case 'nominationGroupId':\r\n this.commonImpl.prepareNominationGroup(e, 'creditLocationId', selectBox, this.dataGrid, this.data);\r\n break;\r\n case this.data.nomRequestFields.packageId:\r\n if (textBox) {\r\n textBox.on('keyDown', (x) => {\r\n this.commonImpl.filterOutNonAlphanumericKeys(x);\r\n });\r\n\r\n textBox.on('valueChanged', (x) => {\r\n x.value = _.trim(x.value);\r\n });\r\n }\r\n break;\r\n }\r\n }\r\n };\r\n\r\n private getFilteredTransactionTypes = (gasCycleCode: string) => {\r\n const transactionsForCycle = _.filter(this.data.receiptHubTransactionTypes, x => x.isForCycle(gasCycleCode));\r\n\r\n if (this.data.selectedNomGroup.businessRight === BusinessRight.LdcVariance.name) {\r\n return _.filter(transactionsForCycle, x => x.description === TransactionTypes.MakeupOnSystem);\r\n } else {\r\n return _.filter(transactionsForCycle, x => {\r\n switch (x.description) {\r\n case TransactionTypes.Transport:\r\n case TransactionTypes.TboTransport:\r\n case TransactionTypes.TboImbalanceTransfer:\r\n case TransactionTypes.MakeupOnSystem:\r\n return false;\r\n case TransactionTypes.FuelDraft:\r\n return !this.data.selectedNomGroup.isShortNoticeHub && !this.commonImpl.isTboSelected(this.data.selectedNomGroup.businessRight) && this.data.transportationFuelNomGroups.length > 0;\r\n case TransactionTypes.TvarDraft:\r\n return !this.commonImpl.isTboSelected(this.data.selectedNomGroup.businessRight) && this.data.transportationVarianceNomGroups.length > 0; // && this.userService.user.isInternalUser;\r\n case TransactionTypes.CvDraft:\r\n return !this.commonImpl.isTboSelected(this.data.selectedNomGroup.businessRight) && this.data.confirmationVarianceNomGroups.length > 0 && this.data.selectedNomGroup.isPrimaryHub;\r\n case TransactionTypes.Loan:\r\n return !this.commonImpl.isTboSelected(this.data.selectedNomGroup.businessRight) && this.data.loanNomGroups.length > 0;\r\n case TransactionTypes.ParkWithdrawal:\r\n return !this.commonImpl.isTboSelected(this.data.selectedNomGroup.businessRight) && this.data.parkNomGroups.length > 0;\r\n case TransactionTypes.LinepackSale:\r\n return this.data.inventoryTransferNomGroups.length > 0 && !this.commonImpl.isTboSelected(this.data.selectedNomGroup.businessRight);\r\n case TransactionTypes.TboLinepackPurchase:\r\n return this.data.inventoryTransferNomGroups.length > 0 && this.commonImpl.isTboSelected(this.data.selectedNomGroup.businessRight);\r\n case TransactionTypes.TboOffSystem:\r\n case TransactionTypes.TboTransfer:\r\n case TransactionTypes.TboReceiptConfirmation:\r\n return this.commonImpl.isTboSelected(this.data.selectedNomGroup.businessRight);\r\n case TransactionTypes.SboWithdrawal:\r\n // The hub nom group must have a child with a business right of SboStorage to nominate this type.\r\n if (this.commonImpl.isTboSelected(this.data.selectedNomGroup.businessRight)) {\r\n const hubNomGroup = _.find(this.data.hubNomGroups, y => y.id === this.data.selectedNomGroup.id);\r\n return (!!_.find(hubNomGroup.children, y => y.businessRight === BusinessRight.SboStorage.name));\r\n } else {\r\n return false;\r\n }\r\n case TransactionTypes.TboFuelPayback:\r\n return this.commonImpl.isTboSelected(this.data.selectedNomGroup.businessRight) &&\r\n _.filter(this.data.tboFuelNomGroups, ng => ng.businessRight === BusinessRight.TboFuel.name && this.data.lastSearchParams.nomGroupId === ng.parentNominationGroupId).length > 0;\r\n default:\r\n return !this.commonImpl.isTboSelected(this.data.selectedNomGroup.businessRight);\r\n }\r\n });\r\n }\r\n };\r\n\r\n epsqConversion(valIn: number, status: string): string {\r\n if (valIn === undefined) {\r\n return \"\";\r\n }\r\n if (valIn == null) {\r\n return \"\";\r\n }\r\n if (valIn === -1 && status === \"Passed\") {\r\n return \"updating\";\r\n }\r\n if (valIn === -1 && status !== \"Passed\") {\r\n return \"\";\r\n }\r\n return valIn.toString();\r\n }\r\n\r\n onRowInserting = (e): void => {\r\n this.commonImpl.onRowInserting(e, this.data, this.dataGrid);\r\n };\r\n\r\n onRowInserted = (e): void => {\r\n this.commonImpl.onCellUpdating(e, this.data, this.dataGrid, true, false).then(() => {});\r\n };\r\n\r\n onRowUpdating = (e): void => {\r\n this.commonImpl.onCellUpdating(e, this.data, this.dataGrid, true, true).then(() => {});\r\n };\r\n\r\n onCellValidating = (e): void => {\r\n this.commonImpl.onCellValidating(e, this.data);\r\n this.cdr.detectChanges();\r\n };\r\n\r\n isRowEditable = (row): boolean => {\r\n return !this.commonImpl.isViewOnly(this.data) && row && row.data;\r\n };\r\n\r\n isColumnVisible = (dataField: string): boolean => {\r\n return this.getColumnVisibilityForHubColumn(dataField, this.data.lastSearchParams.nomGroupId, this.data.hubNomGroups);\r\n };\r\n\r\n getColumnVisibilityForHubColumn(dataField: string, nomGroupId: number, hubNomGroups: NominationGroupHierarchy2[]): boolean {\r\n const nomGroup = _.find(hubNomGroups, x => x.id === nomGroupId);\r\n if (nomGroup && nomGroup.businessRight === BusinessRight.TboTransportation.name) {\r\n switch (dataField) {\r\n case 'receiptRank':\r\n case 'deliveryRank':\r\n case 'packageId':\r\n return false;\r\n default:\r\n return true;\r\n }\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n isCellEditable = (row, dataField: string): boolean => {\r\n return this.commonImpl.isReceiptDeliveryCellEditable(row, dataField, this.data);\r\n };\r\n\r\n editorPreparing = (e: any): void => {\r\n if (e.parentType === 'dataRow' && e.dataField !== undefined) { // undefined data field is the check box column.\r\n e.cancel = !this.isCellEditable(e.row, e.dataField);\r\n this.commonImpl.editorPreparing(e, this.data, this.dataGrid);\r\n }\r\n };\r\n\r\n editorPrepared = (e: any): void => {\r\n this.commonImpl.editorPrepared(e, this.data, this.dataGrid);\r\n };\r\n\r\n validateForThreaded = (e): boolean => {\r\n return this.commonImpl.validateForThreaded(e, 'creditLocationId', this.data, this.dataGrid);\r\n };\r\n\r\n validateForNominationGroup = (e): boolean => {\r\n return this.commonImpl.validateForNominationGroup(e, this.data, this.dataGrid);\r\n };\r\n\r\n onInitNewRow = (e) => {\r\n this.commonImpl.onInitNewRow(e, this.data, this.dataGrid);\r\n\r\n if (!_.isNil(this.data.searchParams.nomGroupId) && _.filter(this.data.nomGroups, x => x.id === this.data.searchParams.nomGroupId && x.businessRight === BusinessRight.LdcVariance.name).length > 0) {\r\n const receiptHubTransactionTypes = _.filter(this.data.receiptHubTransactionTypes, x => x.description === TransactionTypes.makeupOffSystem);\r\n if (receiptHubTransactionTypes.length === 1) {\r\n e.data.transactionType = receiptHubTransactionTypes[0].description;\r\n\r\n const nomGroups = this.commonImpl.getFilteredNomGroupsFromTransactionType(receiptHubTransactionTypes[0].description, this.data);\r\n const nomGroupId = (nomGroups.length === 1) ? nomGroups[0].id : null;\r\n if (nomGroupId !== e.data.nominationGroupId ) {\r\n e.data.nominationGroupId = nomGroupId;\r\n }\r\n }\r\n }\r\n\r\n if (this.data.selectedNomGroup.businessRight === BusinessRight.LdcVariance.name) {\r\n const nominationLocations = _.filter(this.data.locations, itemData => {\r\n return itemData.accountingLocationParameters.allocationMethod === 'LBA' && itemData.accountingLocationParameters.isNominationsAllowed\r\n && (!_.isNil(this.data.lastSearchParams) && itemData.operatorEnterpriseCid === this.data.lastSearchParams.customerId);\r\n });\r\n if (nominationLocations.length === 1) {\r\n e.data.creditLocationId = nominationLocations[0].id;\r\n }\r\n }\r\n\r\n const request = e.data;\r\n\r\n request.creditNominationGroupId = this.data.lastSearchParams.nomGroupId;\r\n\r\n if (this.data.selectedNomGroup.businessRight === BusinessRight.TboTransportation.name) {\r\n request.debitNominationGroupId = this.data.lastSearchParams.nomGroupId;\r\n request.deliveryRank = 999;\r\n }\r\n\r\n setTimeout(() => this.dataGrid.instance.editCell(0, \"transactionType\"));\r\n };\r\n\r\n hasRowChanged = (r1, r2): boolean => {\r\n const rowChanged = r1.statusCode !== r2.statusCode ||\r\n r1.transactionType !== r2.transactionType ||\r\n r1.creditLocationId !== r2.creditLocationId ||\r\n r1.nominationGroupId !== r2.nominationGroupId ||\r\n r1.deliveryRank !== r2.deliveryRank ||\r\n r1.energy !== r2.energy ||\r\n r1.upDownContract !== (r2 as any).upDownContract ||\r\n r1.counterParty !== (r2 as any).counterParty ||\r\n r1.packageId !== r2.packageId ||\r\n r1.startGasDayCycleCode !== r2.startGasDayCycleCode ||\r\n r1.startGasDayDate.valueOf() !== r2.startGasDayDate.valueOf() ||\r\n r1.endGasDayEndDate.valueOf() !== r2.endGasDayEndDate.valueOf();\r\n return rowChanged;\r\n };\r\n\r\n clearGridEdits = () => {\r\n // IE needs this in a timeout, Chrome does not.\r\n window.setTimeout(() => {\r\n this.commonImpl.clearGridEdits(this.dataGrid);\r\n });\r\n };\r\n\r\n selectSavedRequests(requestsToSelect) {\r\n this.dataGrid.instance.selectRows(requestsToSelect, true);\r\n }\r\n\r\n deselectNewDuplicateKeyRequests(requestsToSelect) {\r\n this.dataGrid.instance.deselectRows(requestsToSelect);\r\n }\r\n\r\n deselectExpiredKeyRequests(requestsToSelect) {\r\n this.dataGrid.instance.deselectRows(requestsToSelect);\r\n }\r\n\r\n addRecord() {\r\n this.commonImpl.addRecord(this.dataGrid);\r\n this.data.newRowAdded = true;\r\n }\r\n\r\n onCellClick(e) {\r\n this.commonImpl.onCellClick(e, this.dataGrid);\r\n }\r\n\r\n onKeyDown(e: any, columnPosition: Array) {\r\n this.commonImpl.onKeyDown(e, this.dataGrid, this.isCellEditable);\r\n }\r\n\r\n isDisabled(): boolean {\r\n return this.commonImpl.isDisabled(this.dataGrid);\r\n }\r\n\r\n isDeleteDisabled(): boolean {\r\n return this.commonImpl.isDeleteDisabled(this.dataGrid);\r\n }\r\n\r\n isViewOnly(): boolean {\r\n return this.commonImpl.isViewOnly(this.data);\r\n }\r\n\r\n removeIncompleteRows() {\r\n this.commonImpl.removeIncompleteRows(this.dataGrid);\r\n }\r\n\r\n filter() {\r\n if (!this.dataGrid.instance.getDataSource()) return;\r\n if (this.data.receiptFilter.length > 0 && !!this.dataGrid.instance) {\r\n this.dataGrid.instance.filter(this.data.receiptFilter);\r\n }\r\n }\r\n\r\n get describeNumberOfRecords(): string {\r\n return this.commonImpl.describeNumberOfRecords(this.data.receiptHubNominationRequests, this.dataGrid);\r\n }\r\n\r\n public hasUndoRecord(rowData: any): boolean {\r\n return this.commonImpl.hasUndoRecord(rowData);\r\n }\r\n\r\n public onUndoClick(e: any, rowData: any): void {\r\n this.commonImpl.undoRowEdit(this.dataGrid, rowData);\r\n }\r\n\r\n cellTemplate = (cellElement: HTMLElement, cellInfo) => {\r\n this.cellTemplateCommon(cellElement, cellInfo, false);\r\n };\r\n\r\n editCellTemplate = (cellElement: HTMLElement, cellInfo) => {\r\n this.cellTemplateCommon(cellElement, cellInfo, true);\r\n };\r\n\r\n cellTemplateCommon = (cellElement: HTMLElement, cellInfo, fromEdit) => {\r\n const $cellElement = dx(cellElement);\r\n if (cellInfo.column.caption === \"Status\") {\r\n if (cellInfo.data.statusCode === HubStatuses.mismatched) {\r\n cellElement.style.backgroundColor = \"yellow\";\r\n }\r\n\r\n if (!_.isNil(cellInfo.data.statusMessage) && cellInfo.data.statusMessage.length > 0) {\r\n cellElement.addEventListener('mousemove', () => {\r\n cellElement.setAttribute('title', cellInfo.data.statusMessage);\r\n });\r\n }\r\n }\r\n\r\n if (cellInfo.column.caption === \"Account\" && cellInfo.data.transactionType === TransactionTypes.transport) {\r\n // check if the nom group is active. If it isn't we need to put the mnemonic in because it won't show up in the lookup\r\n const nomGroup = _.find(this.data.allNomGroups, x => x.id === cellInfo.data.nominationGroupId);\r\n if (_.isNil(nomGroup) && !_.isNil(cellInfo.data.nominationGroupId)) {\r\n let updateObj: any;\r\n updateObj = {nominationGroupId: cellInfo.data.nominationGroupId};\r\n this.nominationNomGroupEnrichmentService.enrich(updateObj, 'nominationGroupId', 'nominationGroup').subscribe(updateObj2 => {\r\n $cellElement.append(updateObj2.nominationGroupMnemonic);\r\n cellElement.style.textAlign = 'left';\r\n });\r\n\r\n } else {\r\n $cellElement.append(nomGroup.mnemonic);\r\n cellElement.style.textAlign = 'left';\r\n }\r\n } else if (fromEdit) {\r\n this.commonImpl.editCellTemplate(cellElement, cellInfo, this.dataGrid, this.data);\r\n } else {\r\n this.commonImpl.cellTemplate(cellElement, cellInfo, this.dataGrid);\r\n }\r\n };\r\n\r\n /**\r\n * Receipt Nomination Request has special sorting requirement where any new records regardless of search\r\n * criteria will always be displayed at the top. Any modified record will be sorted based on it's old value to\r\n * prevent the row from changing to another position due to sorting (as a result, any modified records do not\r\n * follow the sort logic).\r\n */\r\n\r\n statusSortValue = (rowData: NominationRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getSortStringValue('statusCode', recordData.statusCode, rowData, this.dataGrid.instance);\r\n };\r\n\r\n transactionTypeSortValue = (rowData: NominationRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getSortStringValue('transactionType', recordData.transactionType, rowData, this.dataGrid.instance);\r\n };\r\n\r\n debitNomGroupSortValue = (rowData: NominationRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getNomGroupSortValue(this.data.lastSearchParams.gasDay, 'nominationGroupId', recordData.nominationGroupId, recordData.nominationGroupMnemonic, rowData, this.dataGrid.instance);\r\n };\r\n\r\n creditLocationSortValue = (rowData: NominationRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getLocationSortValue('creditLocationId', recordData.creditLocationId, recordData.creditLocationName, rowData, this.dataGrid.instance);\r\n };\r\n\r\n debitLocationSortValue = (rowData: NominationRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n\r\n // Only Sort Location Value for Transport Records\r\n if (recordData.transactionType === 'Transport') {\r\n return this.sortingService.getLocationSortValue('debitLocationName', recordData.debitLocationId, recordData.debitLocationName, rowData, this.dataGrid.instance);\r\n } else {\r\n return this.sortingService.getLocationSortValue('debitLocationName', null, null, rowData, this.dataGrid.instance);\r\n }\r\n };\r\n\r\n tosSortValue = (rowData: NominationRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getBillableServiceSortValue('billableServiceOptionId', recordData.billableServiceOptionId, this.data.billableServiceOptions, rowData, this.dataGrid.instance);\r\n };\r\n\r\n bidPriceSortValue = (rowData: NominationRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getSortNumberValue('bidPrice', recordData.bidPrice, rowData, this.dataGrid.instance);\r\n };\r\n\r\n deliveryRankSortValue = (rowData: NominationRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getSortNumberValue('deliveryRank', recordData.deliveryRank, rowData, this.dataGrid.instance);\r\n };\r\n\r\n nomQtySortValue = (rowData: NominationRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getSortNumberValue('energy', recordData.energy, rowData, this.dataGrid.instance);\r\n };\r\n\r\n upDownContractSortValue = (rowData: NominationRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getSortStringValue('upDownContract', recordData.upDownContract, rowData, this.dataGrid.instance);\r\n };\r\n\r\n counterPartySortValue = (rowData: NominationRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getSortStringValue('counterParty', recordData.counterParty, rowData, this.dataGrid.instance);\r\n };\r\n\r\n packageIdSortValue = (rowData: NominationRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getSortStringValue('packageId', recordData.packageId, rowData, this.dataGrid.instance);\r\n };\r\n\r\n beginDateSortValue = (rowData: NominationRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getSortDateValue('startGasDayDate', recordData.startGasDayDate, rowData, this.dataGrid.instance);\r\n };\r\n\r\n endDateSortValue = (rowData: NominationRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getSortDateValue('endGasDayEndDate', recordData.endGasDayEndDate, rowData, this.dataGrid.instance);\r\n };\r\n\r\n gasCycleSortValue = (rowData: NominationRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getSortStringValue(this.data.nomRequestFields.startGasDayCycleCode, recordData.startGasDayCycleCode, rowData, this.dataGrid.instance);\r\n };\r\n\r\n updateSelectedRows = (keysToAdd: Array, keysToRemove: Array) => {\r\n this.commonImpl.updateSelectedRows(this.dataGrid, keysToAdd, keysToRemove);\r\n };\r\n}\r\n","
\r\n
\r\n\r\n
\r\n Number of hub delivery requests: {{describeNumberOfRecords}}\r\n \r\n Add\r\n
Add
\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n
\r\n \r\n
\r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n
\r\n Delivery
Location\r\n
\r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n
\r\n Bid
Price\r\n
\r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n Gas
Cycle\r\n
\r\n\r\n \r\n \r\n \r\n
\r\n {{ row.data.startGasDayDate | dateCycleToGasDayFormat: row.data.startGasDayCycleCode : data.gasCycles }}\r\n
\r\n\r\n \r\n \r\n \r\n
\r\n {{ row.data.endGasDayEndDate | dateToGasDayFormat }}\r\n
\r\n\r\n \r\n \r\n
\r\n {{ epsqConversion(row.data.epsq, row.data.statusCode) }}\r\n
\r\n\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Submitted ByCompanyDate
{{row.data.submittedByUserFullName}}{{row.data.submittedByUserEnterpriseIdShortName}}{{row.data.issueDateTime?.toDisplayFormat()}}
\r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n","import * as dx from \"devextreme/core/renderer\";\r\nimport * as _ from 'lodash';\r\nimport {\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {CommonHubService, UndoRowArgs} from \"../common-hub.service\";\r\nimport {\r\n NominationRequest,\r\n TransactionTypes\r\n} from \"@shared/services/nomination/nomination-request/nomination-request.service\";\r\nimport {SortingService} from \"../sorting-service/sorting.service\";\r\nimport {HubComponentBase} from \"../hub-component.interface\";\r\nimport {\r\n INominationRequestsModel,\r\n IUndoRecord\r\n} from '@shared/services/nomination/nomination-request/nomination-request.interface';\r\nimport {NominationGroupHierarchy2} from \"@shared/services/nomination/nomination-nom-group/nomination-nom-group.service\";\r\nimport {BusinessRight} from \"@model/business-right\";\r\nimport {NominationNomGroupEnrichmentService} from \"@shared/services/nomination/nomination-nom-group-enrichment/nomination-nom-group-enrichment.service\";\r\nimport {HubStatuses} from \"../nomination-requests.model\";\r\n\r\n@Component({\r\n selector: 'app-delivery-hub',\r\n templateUrl: './delivery-hub.component.html',\r\n styleUrls: ['../common-hub.service.css', './delivery-hub.component.css']\r\n})\r\nexport class DeliveryHubComponent extends HubComponentBase implements OnInit, AfterViewInit {\r\n @Input() data: INominationRequestsModel;\r\n @Input() undos: Array;\r\n @Output() undoRow: EventEmitter = new EventEmitter();\r\n @Output() selectionChanged: EventEmitter = new EventEmitter();\r\n\r\n @ViewChild(DxDataGridComponent)\r\n public dataGrid: DxDataGridComponent;\r\n public commonImpl: CommonHubService;\r\n public canDisableSubmitButton = true;\r\n private sortingService: SortingService;\r\n public rankPattern: any = /^([1-9]|[1-9][0-9]|[1-9][0-9][0-9])$/;\r\n\r\n integerOnlyColumnIndexes: Array = [10];\r\n\r\n constructor(public cdr: ChangeDetectorRef,\r\n private nominationNomGroupEnrichmentService: NominationNomGroupEnrichmentService) {\r\n super();\r\n this.commonImpl = new CommonHubService(this.undoRow, this.selectionChanged, this.hasRowChanged, this.isCellEditable, nominationNomGroupEnrichmentService);\r\n this.sortingService = new SortingService();\r\n }\r\n\r\n ngOnInit() {\r\n // Grid field - select box sizes\r\n this.data.columnEditorPopupWidths = new Map([\r\n [this.data.nomRequestFields.transactionType, 190],\r\n [this.data.nomRequestFields.nominationGroupId, 300],\r\n [this.data.nomRequestFields.debitLocationId, 200],\r\n [this.data.nomRequestFields.creditLocationId, 200]\r\n ]);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.cdr.detectChanges(); // https://stackoverflow.com/questions/34364880/expression-has-changed-after-it-was-checked\r\n this.commonImpl.onNgAfterViewInit(this.undos);\r\n this.commonImpl.updateSelectedRows(this.dataGrid, this.data.deliverySelections, []);\r\n }\r\n\r\n onContentReady() {\r\n if (this.data.balanceHubSelectedRowKeys.length > 0) {\r\n this.filter();\r\n }\r\n }\r\n\r\n onCellPrepared = (e) => {\r\n this.commonImpl.onCellPrepared(e, this.data, this.dataGrid);\r\n\r\n if (e.rowType === 'data') {\r\n const cellElement = dx(e.cellElement);\r\n const selectBoxEditorElement = cellElement.find('.dx-selectbox');\r\n const selectBox = selectBoxEditorElement.data('dxSelectBox');\r\n const textBoxEditorElement = cellElement.find('.dx-textbox');\r\n const textBox = textBoxEditorElement.data('dxTextBox');\r\n\r\n switch (e.column.dataField) {\r\n case 'debitLocationId':\r\n this.commonImpl.prepareLocation(e, selectBox, this.data, this.dataGrid);\r\n break;\r\n case 'transactionType':\r\n this.commonImpl.prepareTransactionType(e, 'debitLocationId', this.getFilteredTransactionTypes, selectBox, this.dataGrid, this.data);\r\n break;\r\n case 'nominationGroupId':\r\n this.commonImpl.prepareNominationGroup(e, 'debitLocationId', selectBox, this.dataGrid, this.data);\r\n break;\r\n case this.data.nomRequestFields.packageId:\r\n if (textBox) {\r\n textBox.on('keyDown', (x) => {\r\n this.commonImpl.filterOutNonAlphanumericKeys(x);\r\n });\r\n\r\n textBox.on('valueChanged', (x) => {\r\n x.value = _.trim(x.value);\r\n });\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n private getFilteredTransactionTypes = (gasCycleCode: string) => {\r\n const transactionsForCycle = _.filter(this.data.deliveryHubTransactionTypes, x => x.isForCycle(gasCycleCode));\r\n\r\n if (this.data.selectedNomGroup.businessRight === BusinessRight.LdcVariance.name) {\r\n return _.filter(transactionsForCycle, x => x.description === TransactionTypes.MakeupOffSystem);\r\n } else {\r\n return _.filter(transactionsForCycle, x => {\r\n switch (x.description) {\r\n case TransactionTypes.Transport:\r\n case TransactionTypes.TboTransport:\r\n case TransactionTypes.TboImbalanceTransfer:\r\n case TransactionTypes.MakeupOffSystem:\r\n return false;\r\n case TransactionTypes.FuelPack:\r\n return !this.data.selectedNomGroup.isShortNoticeHub && !this.commonImpl.isTboSelected(this.data.selectedNomGroup.businessRight) && this.data.transportationFuelNomGroups.length > 0;\r\n case TransactionTypes.TvarPack:\r\n return !this.commonImpl.isTboSelected(this.data.selectedNomGroup.businessRight) && this.data.transportationVarianceNomGroups.length > 0; // && this.userService.user.isInternalUser;\r\n case TransactionTypes.CvPack:\r\n return !this.commonImpl.isTboSelected(this.data.selectedNomGroup.businessRight) && this.data.confirmationVarianceNomGroups.length > 0 && this.data.selectedNomGroup.isPrimaryHub;\r\n case TransactionTypes.Park:\r\n return !this.commonImpl.isTboSelected(this.data.selectedNomGroup.businessRight) && this.data.parkNomGroups.length > 0;\r\n case TransactionTypes.LoanPayback:\r\n return !this.commonImpl.isTboSelected(this.data.selectedNomGroup.businessRight) && this.data.loanNomGroups.length > 0;\r\n case TransactionTypes.LinepackPurchase:\r\n return this.data.inventoryTransferNomGroups.length > 0 && !this.commonImpl.isTboSelected(this.data.selectedNomGroup.businessRight);\r\n case TransactionTypes.TboLinepackSale:\r\n return this.data.inventoryTransferNomGroups.length > 0 && this.commonImpl.isTboSelected(this.data.selectedNomGroup.businessRight);\r\n case TransactionTypes.TboOnSystem:\r\n case TransactionTypes.TboTransfer:\r\n case TransactionTypes.TboDeliveryConfirmation:\r\n return this.commonImpl.isTboSelected(this.data.selectedNomGroup.businessRight);\r\n case TransactionTypes.SboInjection:\r\n // The hub nom group must have a child with a business right of SboStorage to nominate this type.\r\n if (this.commonImpl.isTboSelected(this.data.selectedNomGroup.businessRight)) {\r\n const hubNomGroup = _.find(this.data.hubNomGroups, y => y.id === this.data.selectedNomGroup.id);\r\n return (!!_.find(hubNomGroup.children, y => y.businessRight === BusinessRight.SboStorage.name));\r\n } else {\r\n return false;\r\n }\r\n case TransactionTypes.TboFuel:\r\n return this.commonImpl.isTboSelected(this.data.selectedNomGroup.businessRight) &&\r\n _.filter(this.data.tboFuelNomGroups, ng => ng.businessRight === BusinessRight.TboFuel.name && this.data.lastSearchParams.nomGroupId === ng.parentNominationGroupId).length > 0;\r\n default:\r\n return !this.commonImpl.isTboSelected(this.data.selectedNomGroup.businessRight);\r\n }\r\n });\r\n }\r\n }\r\n\r\n epsqConversion(valIn: number, status: string): string {\r\n if (valIn === undefined) {\r\n return \"\";\r\n }\r\n if (valIn == null) {\r\n return \"\";\r\n }\r\n if (valIn === -1 && status === \"Passed\") {\r\n return \"updating\";\r\n }\r\n if (valIn === -1 && status !== \"Passed\") {\r\n return \"\";\r\n }\r\n return valIn.toString();\r\n }\r\n\r\n onRowInserting = (e): void => {\r\n this.commonImpl.onRowInserting(e, this.data, this.dataGrid);\r\n }\r\n\r\n onRowInserted = (e): void => {\r\n this.commonImpl.onCellUpdating(e, this.data, this.dataGrid, false, false).then(() => {});\r\n }\r\n\r\n onRowUpdating = (e): void => {\r\n this.commonImpl.onCellUpdating(e, this.data, this.dataGrid, false, true).then(() => {});\r\n }\r\n\r\n onCellValidating = (e): void => {\r\n this.commonImpl.onCellValidating(e, this.data);\r\n this.cdr.detectChanges();\r\n }\r\n\r\n isRowEditable = (row): boolean => {\r\n return !this.commonImpl.isViewOnly(this.data) && row && row.data;\r\n }\r\n\r\n isColumnVisible = (dataField: string): boolean => {\r\n return this.getColumnVisibilityForHubColumn(dataField, this.data.lastSearchParams.nomGroupId, this.data.hubNomGroups);\r\n }\r\n\r\n getColumnVisibilityForHubColumn(dataField: string, nomGroupId: number, hubNomGroups: NominationGroupHierarchy2[]): boolean {\r\n const nomGroup = _.find(hubNomGroups, x => x.id === nomGroupId);\r\n if (nomGroup && nomGroup.businessRight === BusinessRight.TboTransportation.name) {\r\n switch (dataField) {\r\n case 'receiptRank':\r\n case 'deliveryRank':\r\n case 'packageId':\r\n return false;\r\n default:\r\n return true;\r\n }\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n isCellEditable = (row, dataField: string): boolean => {\r\n return this.commonImpl.isReceiptDeliveryCellEditable(row, dataField, this.data);\r\n }\r\n\r\n editorPreparing = (e: any): void => {\r\n if (e.parentType === 'dataRow' && e.dataField !== undefined) { // undefined data field is the check box column.\r\n e.cancel = !this.isCellEditable(e.row, e.dataField);\r\n this.commonImpl.editorPreparing(e, this.data, this.dataGrid);\r\n }\r\n }\r\n\r\n editorPrepared = (e: any): void => {\r\n this.commonImpl.editorPrepared(e, this.data, this.dataGrid);\r\n }\r\n\r\n validateForThreaded = (e): boolean => {\r\n return this.commonImpl.validateForThreaded(e, 'debitLocationId', this.data, this.dataGrid);\r\n }\r\n\r\n validateForNominationGroup = (e): boolean => {\r\n return this.commonImpl.validateForNominationGroup(e, this.data, this.dataGrid);\r\n }\r\n\r\n onInitNewRow = (e) => {\r\n this.commonImpl.onInitNewRow(e, this.data, this.dataGrid);\r\n\r\n if (!_.isNil(this.data.searchParams.nomGroupId) && _.filter(this.data.nomGroups, x => x.id === this.data.searchParams.nomGroupId && x.businessRight === BusinessRight.LdcVariance.name).length > 0) {\r\n const deliveryHubTransactionTypes = _.filter(this.data.deliveryHubTransactionTypes, x => x.description === TransactionTypes.makeupOffSystem);\r\n if (deliveryHubTransactionTypes.length === 1) {\r\n e.data.transactionType = deliveryHubTransactionTypes[0].description;\r\n\r\n const nomGroups = this.commonImpl.getFilteredNomGroupsFromTransactionType(deliveryHubTransactionTypes[0].description, this.data);\r\n const nomGroupId = (nomGroups.length === 1) ? nomGroups[0].id : null;\r\n if (nomGroupId !== e.data.nominationGroupId ) {\r\n e.data.nominationGroupId = nomGroupId;\r\n }\r\n }\r\n }\r\n\r\n if (this.data.selectedNomGroup.businessRight === BusinessRight.LdcVariance.name) {\r\n const nominationLocations = _.filter(this.data.locations, itemData => {\r\n return itemData.accountingLocationParameters.allocationMethod === 'LBA' && itemData.accountingLocationParameters.isNominationsAllowed\r\n && (!_.isNil(this.data.lastSearchParams) && itemData.operatorEnterpriseCid === this.data.lastSearchParams.customerId);\r\n });\r\n if (nominationLocations.length === 1) {\r\n e.data.debitLocationId = nominationLocations[0].id;\r\n }\r\n }\r\n\r\n const request = e.data;\r\n\r\n request.debitNominationGroupId = this.data.lastSearchParams.nomGroupId;\r\n\r\n if (this.data.selectedNomGroup.businessRight === BusinessRight.TboTransportation.name) {\r\n request.creditNominationGroupId = this.data.lastSearchParams.nomGroupId;\r\n request.receiptRank = 999;\r\n }\r\n\r\n setTimeout(() => this.dataGrid.instance.editCell(0, \"transactionType\"));\r\n }\r\n\r\n hasRowChanged = (r1, r2): boolean => {\r\n const rowChanged = r1.statusCode !== r2.statusCode ||\r\n r1.transactionType !== r2.transactionType ||\r\n r1.debitLocationId !== r2.debitLocationId ||\r\n r1.nominationGroupId !== r2.nominationGroupId ||\r\n r1.receiptRank !== r2.receiptRank ||\r\n r1.energy !== r2.energy ||\r\n r1.upDownContract !== (r2 as any).upDownContract ||\r\n r1.counterParty !== (r2 as any).counterParty ||\r\n r1.packageId !== r2.packageId ||\r\n r1.startGasDayCycleCode !== r2.startGasDayCycleCode ||\r\n r1.startGasDayDate.valueOf() !== r2.startGasDayDate.valueOf() ||\r\n r1.endGasDayEndDate.valueOf() !== r2.endGasDayEndDate.valueOf();\r\n return rowChanged;\r\n }\r\n\r\n clearGridEdits = () => {\r\n // IE needs this in a timeout, Chrome does not.\r\n window.setTimeout(() => {\r\n this.commonImpl.clearGridEdits(this.dataGrid);\r\n });\r\n }\r\n\r\n selectSavedRequests(requestsToSelect) {\r\n this.dataGrid.instance.selectRows(requestsToSelect, true);\r\n }\r\n\r\n deselectNewDuplicateKeyRequests(requestsToSelect) {\r\n this.dataGrid.instance.deselectRows(requestsToSelect);\r\n }\r\n\r\n deselectExpiredKeyRequests(requestsToSelect) {\r\n this.dataGrid.instance.deselectRows(requestsToSelect);\r\n }\r\n\r\n addRecord() {\r\n this.commonImpl.addRecord(this.dataGrid);\r\n this.data.newRowAdded = true;\r\n }\r\n\r\n onCellClick(e) {\r\n this.commonImpl.onCellClick(e, this.dataGrid);\r\n }\r\n\r\n onKeyDown(e: any, columnPosition: Array) {\r\n this.commonImpl.onKeyDown(e, this.dataGrid, this.isCellEditable);\r\n }\r\n\r\n isDisabled(): boolean {\r\n return this.commonImpl.isDisabled(this.dataGrid);\r\n }\r\n\r\n isDeleteDisabled(): boolean {\r\n return this.commonImpl.isDeleteDisabled(this.dataGrid);\r\n }\r\n\r\n isViewOnly(): boolean {\r\n return this.commonImpl.isViewOnly(this.data);\r\n }\r\n\r\n removeIncompleteRows() {\r\n this.commonImpl.removeIncompleteRows(this.dataGrid);\r\n }\r\n\r\n filter() {\r\n if (!this.dataGrid.instance.getDataSource()) return;\r\n if (this.data.deliveryFilter.length > 0 && !!this.dataGrid.instance) {\r\n this.dataGrid.instance.filter(this.data.deliveryFilter);\r\n }\r\n }\r\n\r\n get describeNumberOfRecords(): string {\r\n return this.commonImpl.describeNumberOfRecords(this.data.deliveryHubNominationRequests, this.dataGrid);\r\n }\r\n\r\n public hasUndoRecord(rowData: any): boolean {\r\n return this.commonImpl.hasUndoRecord(rowData);\r\n }\r\n\r\n public onUndoClick(e: any, rowData: any): void {\r\n this.commonImpl.undoRowEdit(this.dataGrid, rowData);\r\n }\r\n\r\n cellTemplate = (cellElement: HTMLElement, cellInfo) => {\r\n this.cellTemplateCommon(cellElement, cellInfo, false);\r\n }\r\n\r\n editCellTemplate = (cellElement: HTMLElement, cellInfo) => {\r\n this.cellTemplateCommon(cellElement, cellInfo, true);\r\n }\r\n\r\n cellTemplateCommon = (cellElement: HTMLElement, cellInfo, fromEdit) => {\r\n const $cellElement = dx(cellElement);\r\n if (cellInfo.column.caption === \"Status\") {\r\n if (cellInfo.data.statusCode === HubStatuses.mismatched) {\r\n cellElement.style.backgroundColor = \"yellow\";\r\n }\r\n\r\n if (!_.isNil(cellInfo.data.statusMessage) && cellInfo.data.statusMessage.length > 0) {\r\n cellElement.addEventListener('mousemove', () => {\r\n cellElement.setAttribute('title', cellInfo.data.statusMessage);\r\n });\r\n }\r\n }\r\n\r\n if (cellInfo.column.caption === \"Account\" && cellInfo.data.transactionType === TransactionTypes.transport) {\r\n // check if the nom group is active. If it isn't we need to put the mnemonic in because it won't show up in the lookup\r\n const nomGroup = _.find(this.data.allNomGroups, x => x.id === cellInfo.data.nominationGroupId);\r\n if (_.isNil(nomGroup) && !_.isNil(cellInfo.data.nominationGroupId)) {\r\n let updateObj: any;\r\n updateObj = {nominationGroupId: cellInfo.data.nominationGroupId};\r\n this.nominationNomGroupEnrichmentService.enrich(updateObj, 'nominationGroupId', 'nominationGroup').subscribe(x => {\r\n $cellElement.append(x.nominationGroupMnemonic);\r\n cellElement.style.textAlign = 'left';\r\n });\r\n\r\n } else {\r\n $cellElement.append(nomGroup.mnemonic);\r\n cellElement.style.textAlign = 'left';\r\n }\r\n } else if (fromEdit) {\r\n this.commonImpl.editCellTemplate(cellElement, cellInfo, this.dataGrid, this.data);\r\n } else {\r\n this.commonImpl.cellTemplate(cellElement, cellInfo, this.dataGrid);\r\n }\r\n }\r\n\r\n /**\r\n * Delivery Nomination Request has special sorting requirement where any new records regardless of search\r\n * criteria will always be displayed at the top. Any modified record will be sorted based on it's old value to\r\n * prevent the row from changing to another position due to sorting (as a result, any modified records do not\r\n * follow the sort logic).\r\n */\r\n\r\n statusSortValue = (rowData: NominationRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getSortStringValue('statusCode', recordData.statusCode, rowData, this.dataGrid.instance);\r\n }\r\n\r\n transactionTypeSortValue = (rowData: NominationRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getSortStringValue('transactionType', recordData.transactionType, rowData, this.dataGrid.instance);\r\n }\r\n\r\n creditNomGroupSortValue = (rowData: NominationRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getNomGroupSortValue(this.data.lastSearchParams.gasDay, 'nominationGroupId', recordData.nominationGroupId, recordData.nominationGroupMnemonic, rowData, this.dataGrid.instance);\r\n }\r\n\r\n debitLocationSortValue = (rowData: NominationRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getLocationSortValue('debitLocationId', recordData.debitLocationId, recordData.debitLocationName, rowData, this.dataGrid.instance);\r\n }\r\n\r\n creditLocationSortValue = (rowData: NominationRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n\r\n // Only Sort Location Value for Transport Records\r\n if (recordData.transactionType === 'Transport') {\r\n return this.sortingService.getLocationSortValue('creditLocationName', recordData.creditLocationId, recordData.creditLocationName, rowData, this.dataGrid.instance);\r\n } else {\r\n return this.sortingService.getLocationSortValue('creditLocationName', null, null, rowData, this.dataGrid.instance);\r\n }\r\n }\r\n\r\n tosSortValue = (rowData: NominationRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getBillableServiceSortValue('billableServiceOptionId', recordData.billableServiceOptionId, this.data.billableServiceOptions, rowData, this.dataGrid.instance);\r\n }\r\n\r\n bidPriceSortValue = (rowData: NominationRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getSortNumberValue('bidPrice', recordData.bidPrice, rowData, this.dataGrid.instance);\r\n }\r\n\r\n receiptRankSortValue = (rowData: NominationRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getSortNumberValue('receiptRank', recordData.receiptRank, rowData, this.dataGrid.instance);\r\n }\r\n\r\n nomQtySortValue = (rowData: NominationRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getSortNumberValue('energy', recordData.energy, rowData, this.dataGrid.instance);\r\n }\r\n\r\n upDownContractSortValue = (rowData: NominationRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getSortStringValue('upDownContract', recordData.upDownContract, rowData, this.dataGrid.instance);\r\n }\r\n\r\n counterPartySortValue = (rowData: NominationRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getSortStringValue('counterParty', recordData.counterParty, rowData, this.dataGrid.instance);\r\n }\r\n\r\n packageIdSortValue = (rowData: NominationRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getSortStringValue('packageId', recordData.packageId, rowData, this.dataGrid.instance);\r\n }\r\n\r\n beginDateSortValue = (rowData: NominationRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getSortDateValue('startGasDayDate', recordData.startGasDayDate, rowData, this.dataGrid.instance);\r\n }\r\n\r\n endDateSortValue = (rowData: NominationRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getSortDateValue('endGasDayEndDate', recordData.endGasDayEndDate, rowData, this.dataGrid.instance);\r\n }\r\n\r\n gasCycleSortValue = (rowData: NominationRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getSortStringValue(this.data.nomRequestFields.startGasDayCycleCode, recordData.startGasDayCycleCode, rowData, this.dataGrid.instance);\r\n }\r\n\r\n updateSelectedRows = (keysToAdd: Array, keysToRemove: Array) => {\r\n this.commonImpl.updateSelectedRows(this.dataGrid, keysToAdd, keysToRemove);\r\n }\r\n}\r\n","
\r\n
\r\n Number of transportation requests: {{describeNumberOfRecords}}\r\n\r\n \r\n Add\r\n
Add
\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n
\r\n \r\n
\r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n Receipt
Location\r\n
\r\n\r\n \r\n \r\n \r\n \r\n
\r\n Rec
Rank\r\n
\r\n\r\n \r\n \r\n \r\n \r\n
\r\n Path
Rank\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n Delivery
Location\r\n
\r\n\r\n\r\n \r\n \r\n \r\n \r\n
\r\n Del
Rank\r\n
\r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n
\r\n Package
Id\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n Bid
Price\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n
\r\n Tax
Zero
Rated\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n Gas
Cycle\r\n
\r\n\r\n \r\n \r\n \r\n
\r\n {{ row.data.startGasDayDate | dateCycleToGasDayFormat: row.data.startGasDayCycleCode : data.gasCycles }}\r\n
\r\n\r\n \r\n \r\n \r\n
\r\n {{ row.data.endGasDayEndDate | dateToGasDayFormat }}\r\n
\r\n\r\n \r\n \r\n
\r\n {{ epsqConversion(row.data.epsq, row.data.statusCode) }}\r\n
\r\n\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Submitted ByCompanyDate
{{row.data.submittedByUserFullName}}{{row.data.submittedByUserEnterpriseIdShortName}}{{row.data.issueDateTime?.toDisplayFormat()}}
\r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n","import {forkJoin, Observable, of} from 'rxjs';\r\nimport * as dx from \"devextreme/core/renderer\";\r\nimport * as _ from 'lodash';\r\nimport {\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {DxDataGridComponent, DxPopupComponent} from \"devextreme-angular\";\r\nimport {FuelRatioService} from \"@shared/services/nomination/fuel-ratio/fuel-ratio.service\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport {\r\n FuelNominationRequest,\r\n TransportationNominationRequest\r\n} from \"@shared/services/nomination/nomination-request/nomination-request.service\";\r\nimport {CommonHubService, UndoRowArgs} from \"../common-hub.service\";\r\nimport {SortingService} from \"../sorting-service/sorting.service\";\r\nimport {HubComponentBase} from \"../hub-component.interface\";\r\nimport {\r\n INominationRequestsModel,\r\n IUndoRecord\r\n} from '@shared/services/nomination/nomination-request/nomination-request.interface';\r\nimport {NominationRequestsComponent} from \"../nomination-requests.component\";\r\nimport {BillableServiceOption} from \"@model/billable-service-option\";\r\nimport { NominationGroup, NominationGroupPath,\r\n SecondaryLocation\r\n} from \"@shared/services/nomination/nomination-nom-group/nomination-nom-group.service\";\r\nimport {NominationLocation} from \"@shared/services/nomination/nomination-location/nomination-location.service\";\r\nimport {NominationLocationEnrichmentService} from \"@shared/services/nomination/nomination-location-enrichment/nomination-location-enrichment.service\";\r\nimport {NominationNomGroupEnrichmentService} from \"@shared/services/nomination/nomination-nom-group-enrichment/nomination-nom-group-enrichment.service\";\r\nimport {BusinessRight} from \"@model/business-right\";\r\nimport {GasCycle} from \"@model/gas-cycle\";\r\nimport {HubStatuses} from \"../nomination-requests.model\";\r\nimport {NominationRequestLogic} from \"app/gcts/nomination/nomination-requests/nomination-requests.logic\";\r\nimport {GasDayCycle} from \"app/shared/classes/gas-day-cycle\";\r\nimport {BillableServices} from \"@model/BillableService\";\r\nimport {tap} from \"rxjs/operators\";\r\nimport {DataGridHooks} from \"@shared/devexpress/datagrid-hooks\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {PipelineSettingMapService} from \"@shared/services/nomination/pipeline-settings-map/pipeline-setting-map.service\";\r\n\r\n// When modifying data in code, do not directly update the underlying array. Instead, use the update() method\r\n// on the data store. This ensures that data changes are caught by event handlers in nomination-requests.component.ts,\r\n// which can then send them on to the shadow Transport and Fuel records in the hub grids.\r\n\r\n@Component({\r\n selector: 'app-transport-hub',\r\n templateUrl: './transport-hub.component.html',\r\n styleUrls: ['../common-hub.service.css', './transport-hub.component.css']\r\n})\r\nexport class TransportHubComponent extends HubComponentBase implements OnInit, AfterViewInit {\r\n private static readonly CGL_CAP_ALLOC_METHOD: string = 'CGL';\r\n constructor(protected appService: AppService,\r\n private nominationNomGroupEnrichmentService: NominationNomGroupEnrichmentService,\r\n private nominationLocationEnrichmentService: NominationLocationEnrichmentService,\r\n private fuelRatioService: FuelRatioService,\r\n private sessionService: SessionService,\r\n private pipelineSettingsMapService: PipelineSettingMapService,\r\n public cdr: ChangeDetectorRef) {\r\n super();\r\n this.commonImpl = new CommonHubService(this.undoRow, this.selectionChanged, this.hasRowChanged, this.isCellEditable, nominationNomGroupEnrichmentService);\r\n this.sortingService = new SortingService();\r\n this.nominationGroupHeaderFilter = this.nominationGroupHeaderFilter.bind(this);\r\n this.isCapacityAllocationMethodCgl = this.sessionService.getPipeline().isSentToMCAForCapacityAllocation === TransportHubComponent.CGL_CAP_ALLOC_METHOD;\r\n }\r\n\r\n @Input() data: INominationRequestsModel;\r\n @Input() undos: Array;\r\n @Output() undoRow: EventEmitter = new EventEmitter();\r\n @Output() selectionChanged: EventEmitter = new EventEmitter();\r\n private currentRowData: any;\r\n private currentRowIndex: number;\r\n private energyValue: number;\r\n @ViewChild(DxDataGridComponent)\r\n public dataGrid: DxDataGridComponent;\r\n public commonImpl: CommonHubService;\r\n public canDisableSubmitButton = true;\r\n private sortingService: SortingService;\r\n public rankPattern: any = /^([1-9]|[1-9][0-9]|[1-9][0-9][0-9])$/;\r\n public isCapacityAllocationMethodCgl: boolean = false;\r\n\r\n @ViewChild(DxPopupComponent) myPopup: DxPopupComponent;\r\n withTemplateVisible: boolean = false;\r\n withTemplateVisibleId: number;\r\n\r\n private added: boolean = false;\r\n integerOnlyColumnIndexes: Array = [9];\r\n\r\n private static getStatus(rowData: TransportationNominationRequest) {\r\n return rowData.statusCode;\r\n }\r\n\r\n ngOnInit() {\r\n // Grid field - select box sizes\r\n this.data.columnEditorPopupWidths = new Map([\r\n [this.data.nomRequestFields.transactionType, 120],\r\n [this.data.nomRequestFields.debitLocationId, 200],\r\n [this.data.nomRequestFields.creditLocationId, 200]\r\n ]);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.cdr.detectChanges(); // https://stackoverflow.com/questions/34364880/expression-has-changed-after-it-was-checked\r\n this.commonImpl.onNgAfterViewInit(this.undos);\r\n this.commonImpl.updateSelectedRows(this.dataGrid, this.data.transportSelections, []);\r\n }\r\n\r\n onContentReady() {\r\n if (this.data.balanceHubSelectedRowKeys.length > 0) {\r\n this.filter();\r\n }\r\n }\r\n\r\n private getBillableServiceOption(billableServiceOptionId: number): BillableServiceOption {\r\n return _.find(this.data.filteredBillableServiceOptions, (x: BillableServiceOption) => x.id === billableServiceOptionId);\r\n }\r\n\r\n\r\n private getFilteredNomGroupsFromBillableServiceOptionId(billableServiceOptionId: number): Array {\r\n if (_.isNil(billableServiceOptionId)) {\r\n return new Array();\r\n }\r\n\r\n const billableServiceOption = this.data.filteredBillableServiceOptions.find(x => x.id === billableServiceOptionId);\r\n return Array.from(this.data.billableServiceNominationGroupMap.get(billableServiceOption).values());\r\n }\r\n\r\n private getFilteredBillableServiceOptionsFromNomGroupId2(nominationGroupId?: number): Array {\r\n const billableServiceOptionsForNomGroup = new Array();\r\n this.data.billableServiceNominationGroupMap.forEach((nomGroups: Array , billableServiceOption: BillableServiceOption) => {\r\n if (_.isNil(nominationGroupId) || _.includes(nomGroups.map(x => x.id), nominationGroupId)) {\r\n billableServiceOptionsForNomGroup.push(billableServiceOption);\r\n }\r\n });\r\n return billableServiceOptionsForNomGroup;\r\n }\r\n\r\n private clearLocationsAndFuel(e: any): void {\r\n e.data.creditLocationId = null;\r\n e.data.debitLocationId = null;\r\n e.data.fuelNominationRequest.locationId = null;\r\n e.data.fuelNominationRequest.fuel = null;\r\n }\r\n\r\n private getSecondaryPathIds(nomGroup: NominationGroup, type: string): Array {\r\n const secondaryPaths = _.filter(_.flatMap(nomGroup.paths, x => x.secondaryLocations), (x: SecondaryLocation) => x.nominationType === type);\r\n return _.map(secondaryPaths, x => x.id);\r\n }\r\n\r\n private buildReceiptLocations(rowData: any, includeSecondaryLocations: boolean = false): Array {\r\n // STS Cycle Rule - location must be confirmed on the STS Cycle for EMB, STS & STS O Type of service.\r\n const billableServiceOption = this.getBillableServiceOption(rowData.billableServiceOptionId);\r\n const locationsForCycle = _.filter(this.data.locations2, x => x.isForCycle(rowData.startGasDayCycleCode, true, billableServiceOption) );\r\n\r\n if (this.data.selectedNomGroup.businessRight === BusinessRight.TboTransportation.name) {\r\n return _.filter(locationsForCycle, x => _.some(this.data.selectedNomGroup.locations, y => y.locationId === x.id && x.accountingLocationParameters.isTboNominationAllowed));\r\n } else {\r\n const nomGroup = _.find(this.data.nomGroups2, {id: rowData.nominationGroupId});\r\n if (!billableServiceOption || !nomGroup) {\r\n return [];\r\n }\r\n\r\n // If we're dealing with injections, then receipt location can only be the primary location.\r\n let locationIds: number[] = [];\r\n\r\n const billableService = _.find(nomGroup.associatedBillableServices, x => x.billableServiceId === billableServiceOption.billableServiceId);\r\n const paths = (nomGroup.billableServiceId === billableServiceOption.billableServiceId) ?\r\n nomGroup.paths :\r\n _.isNil(billableService) ? new Array() : billableService.paths;\r\n\r\n for (const item of paths) {\r\n if (rowData.creditLocationId == null || rowData.creditLocationId === item.deliveryLocationId) {\r\n locationIds.push(item.receiptLocationId);\r\n }\r\n }\r\n\r\n // Add secondary routes if looking at a Billable Service Option with diversions\r\n if (billableServiceOption != null &&\r\n (billableServiceOption.hasDivertOption() ||\r\n billableServiceOption.isExcessCapacity() ||\r\n billableServiceOption.hasInjectionOption() ||\r\n billableServiceOption.hasInjectionOverrunOption() ||\r\n includeSecondaryLocations)) {\r\n locationIds = _.union(locationIds, this.getSecondaryPathIds(nomGroup, \"Receipt\"));\r\n }\r\n\r\n\r\n // If we're STS, then receipt location is restricted to the locations in the nom group.\r\n if (billableServiceOption.billableServiceType === BillableServices.sts) {\r\n if (rowData.creditLocationId) {\r\n locationIds = _.map(_.filter(nomGroup.accountWithdrawalLimits, x => x.deliveryLocationId === rowData.creditLocationId), y => y.receiptLocationId);\r\n } else {\r\n locationIds = _.map(nomGroup.accountWithdrawalLimits, x => x.receiptLocationId);\r\n }\r\n }\r\n\r\n return _.filter(locationsForCycle, x => _.includes(locationIds, x.id));\r\n }\r\n }\r\n\r\n private buildDeliveryLocations(rowData: any): Array {\r\n const billableServiceOption = this.getBillableServiceOption(rowData.billableServiceOptionId);\r\n\r\n const locationsForCycle = _.filter(this.data.locations2, x => x.isForCycle(rowData.startGasDayCycleCode, false, billableServiceOption) );\r\n\r\n if (this.data.selectedNomGroup.businessRight === BusinessRight.TboTransportation.name) {\r\n return _.filter(locationsForCycle, x => _.some(this.data.selectedNomGroup.locations, y => y.locationId === x.id && x.accountingLocationParameters.isTboNominationAllowed));\r\n } else {\r\n const nomGroup = _.find(this.data.nomGroups2, {id: rowData.nominationGroupId});\r\n let locationIds: number[] = [];\r\n if (!billableServiceOption || !nomGroup) {\r\n return [];\r\n }\r\n\r\n // If the Billable Service Option uses injections, then the delivery locations come\r\n // from the injection limit object.\r\n if (billableServiceOption.hasInjectionOption() || billableServiceOption.hasInjectionOverrunOption()) {\r\n locationIds = nomGroup.accountInjectionLimit.locations.map(x => x.id);\r\n } else {\r\n const billableService = _.find(nomGroup.associatedBillableServices, x => x.billableServiceId === billableServiceOption.billableServiceId);\r\n const paths = (nomGroup.billableServiceId === billableServiceOption.billableServiceId) ?\r\n nomGroup.paths :\r\n _.isNil(billableService) ? new Array() : billableService.paths;\r\n\r\n for (const item of paths) {\r\n if (rowData.debitLocationId == null || rowData.debitLocationId === item.receiptLocationId) {\r\n locationIds.push(item.deliveryLocationId);\r\n }\r\n }\r\n\r\n // Add secondary routes if looking at a Billable Service Option with diversions\r\n if (billableServiceOption != null && (billableServiceOption.hasDivertOption() || billableServiceOption.isExcessCapacity())) {\r\n locationIds = _.union(locationIds, this.getSecondaryPathIds(nomGroup, \"Delivery\"));\r\n\r\n // if this is FT-SN D type, we need to remove the primary delivery point as it should not be selectable\r\n if (billableServiceOption.billableServiceType === 'FT-SN') {\r\n const primaryPath = _.filter(paths, x => x.pathType === 'Primary');\r\n locationIds = _.filter(locationIds, x => x !== primaryPath[0].deliveryLocationId);\r\n }\r\n\r\n // if this is FT D or FT-NR D type and an STS gas cycle, we need to allow only the primary delivery point to be selectable\r\n if (GasCycle.isStsCycle(rowData.startGasDayCycleCode) &&\r\n (billableServiceOption.billableServiceType === 'FT' || billableServiceOption.billableServiceType === 'FT-NR')) {\r\n const primaryPath = _.filter(paths, x => x.pathType === 'Primary');\r\n locationIds = _.filter(locationIds, x => x === primaryPath[0].deliveryLocationId);\r\n }\r\n }\r\n }\r\n\r\n // If we're STS, then delivery location is restricted to the locations in the nom group.\r\n if (billableServiceOption.billableServiceType === 'STS') {\r\n if (rowData.debitLocationId) {\r\n locationIds = _.map(_.filter(nomGroup.accountWithdrawalLimits, x => x.receiptLocationId === rowData.debitLocationId), y => y.deliveryLocationId);\r\n } else {\r\n locationIds = _.map(nomGroup.accountWithdrawalLimits, x => x.deliveryLocationId);\r\n }\r\n }\r\n\r\n return _.filter(locationsForCycle, x => _.includes(locationIds, x.id));\r\n }\r\n }\r\n\r\n private buildFuelLocations(rowData: any): Array {\r\n if (rowData.billableServiceOptionId) {\r\n const billableServiceOption = this.getBillableServiceOption(rowData.billableServiceOptionId);\r\n\r\n let receiptLocations = this.buildReceiptLocations(rowData, this.shouldIncludeSecondaryLocations(billableServiceOption.billableServiceType) );\r\n\r\n // If the transport service does not support fuel at locations different from the debit location, constrain the fuel location choices.\r\n if (rowData.debitLocationId && !billableServiceOption.allowFuelAtAlternateLocation) {\r\n return _.filter(receiptLocations, x => x.id === rowData.debitLocationId);\r\n }\r\n\r\n // Supplement with secondary fuel locations\r\n const nomGroup = _.find(this.data.nomGroups2, {id: rowData.nominationGroupId});\r\n const nomGroupPrimaryPath = nomGroup.getPrimaryPath();\r\n\r\n // Only add secondary locations if the selected receipt location id is the same as the primary path receipt location\r\n if (nomGroupPrimaryPath && nomGroupPrimaryPath.receiptLocationId === rowData.debitLocationId) {\r\n const secondaryFuelLocationIds = _.map(nomGroup.secondaryFuelLocations, x => x.id);\r\n const secondaryFuelLocations = _.filter(this.data.locations2, x => _.includes(secondaryFuelLocationIds, x.id));\r\n\r\n if (_.some(secondaryFuelLocations)) {\r\n receiptLocations = _.orderBy(_.union(receiptLocations, secondaryFuelLocations), x => x.name);\r\n }\r\n }\r\n\r\n return receiptLocations;\r\n } else {\r\n return [];\r\n }\r\n }\r\n\r\n private shouldIncludeSecondaryLocations(billableServiceType: string): boolean {\r\n return billableServiceType === BillableServices.ft || billableServiceType === BillableServices.ftnr;\r\n }\r\n\r\n private lookupDataAndSetPathAndRecalcFuel(e: any, nominationGroupId: number, billiableServiceOption: BillableServiceOption) {\r\n this.currentRowData.billableServiceOptionId = billiableServiceOption.id; // set billable service option\r\n\r\n if (nominationGroupId != null) {\r\n this.dataGrid.instance.getDataSource().store().byKey(e.data['key']).then(() => {\r\n this.setPathAndRecalculateFuel(false, nominationGroupId);\r\n this.setZeroTaxRated(e, false);\r\n }, () => {\r\n this.setPathAndRecalculateFuel(true, nominationGroupId);\r\n this.setZeroTaxRated(e, true);\r\n });\r\n }\r\n }\r\n\r\n private setAccountValue(e: any, billableServiceOption: BillableServiceOption): void {\r\n const matchingNomGroups: Array = _.filter(this.getFilteredNomGroupsFromBillableServiceOptionId(billableServiceOption.id),\r\n nomGroup =>\r\n nomGroup.billableServiceId === billableServiceOption.billableServiceId ||\r\n _.some(nomGroup.associatedBillableServices, x => x.billableServiceId === billableServiceOption.billableServiceId)\r\n );\r\n\r\n // If there is only 1 account, set it in the account drop down\r\n // Otherwise set it do the blank option\r\n if (matchingNomGroups.length !== 1) {\r\n const matchingNomGroupsContainsCurrentlySelectedNomGroupId = _.filter(matchingNomGroups, x => x.id === e.data.nominationGroupId);\r\n // If an account has already been selected, we don't want to reset it or stomp on it\r\n if (matchingNomGroupsContainsCurrentlySelectedNomGroupId.length === 1) { return; }\r\n e.data.nominationGroupId = null;\r\n } else {\r\n // If an account has already been selected, we don't want to reset it or stomp on it\r\n if (e.data.nominationGroupId === matchingNomGroups[0].id) { return; }\r\n e.data.nominationGroupId = matchingNomGroups[0].id;\r\n }\r\n }\r\n\r\n onCellPrepared(e) {\r\n this.commonImpl.onCellPrepared(e, this.data, this.dataGrid);\r\n\r\n if (e.rowType === 'data') {\r\n const cellElement = dx(e.cellElement);\r\n const selectBoxEditorElement = cellElement.find('.dx-selectbox');\r\n const selectBox = selectBoxEditorElement.data('dxSelectBox');\r\n\r\n const numberEditorElement = cellElement.find('.dx-numberbox');\r\n const numberBox = numberEditorElement.data('dxNumberBox');\r\n\r\n // This code should be cleaned up, too wordy\r\n if (e.column.dataField === this.data.nomRequestFields.billableServiceOptionId && selectBox) {\r\n selectBox.option({\r\n dataSource: {\r\n store: this.getFilteredBillableServiceOptionsFromNomGroupId2(e.data.nominationGroupId)\r\n }\r\n });\r\n\r\n\r\n selectBox.on('selectionChanged', x => {\r\n // Stops the recalc fuel from calling this in a circular loop\r\n if (x.selectedItem != null && e.data != null && x.selectedItem.id === e.data.billableServiceOptionId) {\r\n return;\r\n }\r\n\r\n NominationRequestsComponent.createUndoRecord(e.data['key'], e.data, this.data.transportUndos);\r\n\r\n this.currentRowData = e.data;\r\n this.currentRowIndex = e.rowIndex;\r\n\r\n this.clearLocationsAndFuel(e);\r\n if (!_.isNil(x.selectedItem)) {\r\n this.setAccountValue(e, x.selectedItem);\r\n const billableServiceOption = this.getBillableServiceOption(x.selectedItem.id);\r\n const nomGroupId = e.data.nominationGroupId;\r\n\r\n if (billableServiceOption != null) {\r\n this.lookupDataAndSetPathAndRecalcFuel(e, nomGroupId, billableServiceOption);\r\n }\r\n\r\n // Whenever a value is changed for another column, we need to perform save edit data and repaint rows\r\n setTimeout(() => this.dataGrid.instance.saveEditData());\r\n setTimeout(() => this.dataGrid.instance.repaintRows([this.currentRowIndex]));\r\n this.commonImpl.delayFocusCellElement(e.rowIndex, e.columnIndex, this.dataGrid);\r\n }\r\n });\r\n\r\n if (e.data.nominationGroupId != null) {\r\n selectBox.option({\r\n dataSource: {\r\n store: this.getFilteredBillableServiceOptionsFromNomGroupId2(e.data.nominationGroupId)\r\n }\r\n });\r\n }\r\n }\r\n\r\n if (e.column.dataField === this.data.nomRequestFields.nominationGroupId && selectBox) {\r\n selectBox.on('selectionChanged', x => {\r\n // Stops the recalc fuel from calling this in a circular loop\r\n if (x.selectedItem != null && e.data != null && x.selectedItem.id === e.data.nominationGroupId) {\r\n return;\r\n }\r\n\r\n NominationRequestsComponent.createUndoRecord(e.data['key'], e.data, this.data.transportUndos);\r\n\r\n this.currentRowData = e.data;\r\n this.currentRowIndex = e.rowIndex;\r\n\r\n this.clearLocationsAndFuel(e);\r\n\r\n if (!_.isNil(x.selectedItem) && e.data.billableServiceOptionId != null) {\r\n const billableServiceOption = this.getBillableServiceOption(e.data.billableServiceOptionId);\r\n if (billableServiceOption != null) {\r\n this.lookupDataAndSetPathAndRecalcFuel(e, x.selectedItem.id, billableServiceOption);\r\n this.commonImpl.delayFocusCellElement(e.rowIndex, e.columnIndex, this.dataGrid);\r\n }\r\n }\r\n });\r\n\r\n // if (e.data.billableServiceOptionId != null) {\r\n selectBox.option({\r\n dataSource: {\r\n store: this.getFilteredNomGroupsFromBillableServiceOptionId(e.data.billableServiceOptionId)\r\n }\r\n });\r\n // }\r\n }\r\n\r\n if (e.column.dataField === this.data.nomRequestFields.fuelNominationRequestLocationId && selectBox) {\r\n if (e.data.nominationGroupId && e.data.billableServiceOptionId) {\r\n const nomGroup = _.find(this.data.nomGroups, {id: e.data.nominationGroupId});\r\n const billableServiceOption = this.getBillableServiceOption(e.data.billableServiceOptionId);\r\n if (billableServiceOption.billableServiceType === BillableServices.sts) {\r\n const possibleEndpoints = _.filter(this.data.locations, x => x.id === e.data.receiptLocationId);\r\n selectBox.option({\r\n dataSource: {\r\n store: possibleEndpoints\r\n }\r\n });\r\n } else {\r\n let possibleEndpoints = _.sortBy(nomGroup.paths[0].secondaryLocations, endpt => endpt.name);\r\n possibleEndpoints = _.filter(possibleEndpoints, endpt => endpt.nominationType === \"receipt\" || endpt.nominationType === \"Receipt\");\r\n possibleEndpoints = _.uniqBy(possibleEndpoints, endpt => endpt.name);\r\n selectBox.option({\r\n dataSource: {\r\n store: possibleEndpoints\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n if (e.column.dataField === this.data.nomRequestFields.debitLocationId && selectBox) {\r\n selectBox.on('valueChanged', (x) => {\r\n e.setValue(x.value);\r\n this.currentRowData = e.data;\r\n this.currentRowIndex = e.rowIndex;\r\n\r\n this.dataGrid.instance.getDataSource().store().byKey(e.data['key']).then(() => {\r\n if (this.currentRowData.fuelNominationRequest.locationId !== x.value) {\r\n const updateObj = {fuelNominationRequest: this.currentRowData.fuelNominationRequest};\r\n updateObj.fuelNominationRequest.locationId = x.value;\r\n this.dataGrid.instance.getDataSource().store().update(this.currentRowData['key'], updateObj);\r\n }\r\n this.updateReceiptLocationAndRecalculateFuel(false, x);\r\n setTimeout(() => this.dataGrid.instance.repaintRows([e.rowIndex]));\r\n this.commonImpl.delayFocusCellElement(e.rowIndex, e.columnIndex, this.dataGrid);\r\n }, () => {\r\n if (this.currentRowData.fuelNominationRequest.locationId !== x.value) {\r\n this.currentRowData.fuelNominationRequest.locationId = x.value;\r\n }\r\n this.updateReceiptLocationAndRecalculateFuel(true, x);\r\n setTimeout(() => this.dataGrid.instance.repaintRows([e.rowIndex]));\r\n this.commonImpl.delayFocusCellElement(e.rowIndex, e.columnIndex, this.dataGrid);\r\n });\r\n });\r\n\r\n if (e.data.nominationGroupId) {\r\n selectBox.option({\r\n dataSource: {\r\n store: this.buildReceiptLocations(e.data)\r\n }\r\n });\r\n } else {\r\n selectBox.option({\r\n dataSource: {\r\n store: []\r\n }\r\n });\r\n }\r\n }\r\n\r\n // Credit Location\r\n DataGridHooks.onSelectBoxSelectionChanged(e, selectBox, this.data.nomRequestFields.creditLocationId, (cpe, sce) => this.creditLocationIdSelectionChanged(cpe, sce));\r\n DataGridHooks.configureSelectBox(e, selectBox, this.data.nomRequestFields.creditLocationId, (cpe, sb) => this.creditLocationIdDataSource(cpe, sb));\r\n\r\n if (e.column.dataField === this.data.nomRequestFields.fuelNominationRequestLocationId && selectBox) {\r\n if (e.data.nominationGroupId) {\r\n selectBox.option({\r\n dataSource: {\r\n store: this.buildFuelLocations(e.data)\r\n }\r\n });\r\n } else {\r\n selectBox.option({\r\n dataSource: {\r\n store: []\r\n }\r\n });\r\n }\r\n }\r\n\r\n if (e.column.dataField === this.data.nomRequestFields.energy && numberBox) {\r\n\r\n numberBox.on('valueChanged', (x) => {\r\n this.energyValue = x.value;\r\n });\r\n\r\n numberBox.on('keyDown', x => {\r\n if (x.event.key !== 'Tab') {\r\n return;\r\n }\r\n\r\n // Timeout required for dxdatagrid to register tab event or else the\r\n // energy value will not be considered changed\r\n setTimeout(() => {\r\n this.energyValue = e.value; // Must be e, because it's the only item with the new value\r\n this.recalculateFuelBasedOnNumberBoxChanges(e);\r\n });\r\n });\r\n\r\n numberBox.on('change', () => {\r\n this.recalculateFuelBasedOnNumberBoxChanges(e);\r\n });\r\n }\r\n }\r\n }\r\n\r\n private recalculateFuelBasedOnNumberBoxChanges(e: any) {\r\n this.currentRowData = e.data;\r\n this.currentRowIndex = e.rowIndex;\r\n\r\n this.recalculateFuel(\r\n false,\r\n this.currentRowIndex,\r\n this.currentRowData.billableServiceOptionId,\r\n this.currentRowData.creditLocationId,\r\n this.currentRowData.debitLocationId,\r\n this.energyValue);\r\n }\r\n\r\n setPathAndRecalculateFuel = (newRecord: boolean, newValue: number): void => {\r\n // TODO - JOE - this method is doing a bit too much. Moreover, if we have the nomGroup why do we need new/current record logic?\r\n const nomGroup = _.find(this.data.nomGroups, {id: newValue});\r\n let updateObj: any;\r\n if (newRecord) {\r\n updateObj = this.currentRowData;\r\n updateObj.nominationGroupId = newValue; // For now, until we clean this up set the 'updateObj' to have the new nominationGroupId so that we can fetch the new receipt locations.\r\n } else {\r\n updateObj = { nominationGroupId: nomGroup.id };\r\n updateObj.fuelNominationRequest = this.currentRowData.fuelNominationRequest;\r\n }\r\n\r\n const receiptLocations = this.buildReceiptLocations(updateObj);\r\n\r\n if (receiptLocations.length === 1) {\r\n updateObj.debitLocationId = receiptLocations[0].id;\r\n }\r\n const deliveryLocations = this.buildDeliveryLocations(this.currentRowData);\r\n if (deliveryLocations.length === 1) {\r\n updateObj.creditLocationId = deliveryLocations[0].id;\r\n }\r\n const fuelLocations = this.buildFuelLocations(this.currentRowData);\r\n if (fuelLocations.length === 1) {\r\n updateObj.fuelNominationRequest.locationId = fuelLocations[0].id;\r\n } else if (!_.isNil(updateObj.debitLocationId)) {\r\n updateObj.fuelNominationRequest.locationId = updateObj.debitLocationId;\r\n }\r\n\r\n if (!newRecord) {\r\n this.dataGrid.instance.getDataSource().store().update(this.currentRowData['key'], updateObj);\r\n }\r\n\r\n this.recalculateFuel(newRecord, this.currentRowIndex, this.currentRowData.billableServiceOptionId, updateObj.creditLocationId, updateObj.debitLocationId, this.energyValue);\r\n\r\n // Trigger the onCellUpdated logic in common-hub.\r\n setTimeout(() => this.dataGrid.instance.saveEditData());\r\n setTimeout(() => this.dataGrid.instance.repaintRows([this.currentRowIndex]));\r\n };\r\n\r\n epsqConversion(valIn: number, status: string): string {\r\n if (valIn === undefined) {\r\n return \"\";\r\n }\r\n if (valIn == null) {\r\n return \"\";\r\n }\r\n if (valIn === -1 && status === \"Passed\") {\r\n return \"updating\";\r\n }\r\n if (valIn === -1 && status !== \"Passed\") {\r\n return \"\";\r\n }\r\n return valIn.toString();\r\n }\r\n\r\n onRowInserting = (e): void => {\r\n this.commonImpl.onRowInserting(e, this.data, this.dataGrid);\r\n };\r\n\r\n onRowInserted = (e): void => {\r\n this.commonImpl.onCellUpdating(e, this.data, this.dataGrid, null, false).then(() => {});\r\n };\r\n\r\n onRowUpdating = (e): void => {\r\n e.cancel = new Promise(async (resolve) => {\r\n await this.commonImpl.onCellUpdating(e, this.data, this.dataGrid, null, true);\r\n resolve(false);\r\n });\r\n };\r\n\r\n onCellValidating = (e): void => {\r\n this.commonImpl.onCellValidating(e, this.data);\r\n this.cdr.detectChanges();\r\n };\r\n\r\n isRowEditable = (row): boolean => {\r\n return !this.isViewOnly() && (row && row.data);\r\n };\r\n\r\n\r\n isColumnVisible = (dataField: string): boolean => {\r\n // TransportationRank is always hidden for non-CGL pipelines\r\n if (dataField === this.data.nomRequestFields.transportationRank && !this.isCapacityAllocationMethodCgl) {\r\n return false;\r\n }\r\n\r\n if (this.data.lastSearchParams.nomGroupId) {\r\n const nomGroup = _.find(this.data.hubNomGroups, x => x.id === this.data.lastSearchParams.nomGroupId);\r\n if (nomGroup) {\r\n if (nomGroup.businessRight === BusinessRight.TboTransportation.name) {\r\n switch (dataField) {\r\n case this.data.nomRequestFields.transportationRank:\r\n case this.data.nomRequestFields.receiptRank:\r\n case this.data.nomRequestFields.deliveryRank:\r\n case this.data.nomRequestFields.packageId:\r\n case this.data.nomRequestFields.bidPrice:\r\n case this.data.nomRequestFields.fuelNominationRequestLocationId:\r\n case this.data.nomRequestFields.fuelNominationRequestFuel:\r\n case this.data.nomRequestFields.zeroTaxRated:\r\n case 'creditLocationId':\r\n case 'debitLocationId':\r\n return false;\r\n default:\r\n return true;\r\n }\r\n } else {\r\n return !(dataField === 'tboCreditLocationId' || dataField === 'tboDebitLocationId');\r\n\r\n }\r\n }\r\n return true;\r\n }\r\n return true;\r\n };\r\n\r\n isCellEditable = (row, dataField: string): boolean => {\r\n if (this.isRowEditable(row)) {\r\n switch (dataField) {\r\n case this.data.nomRequestFields.statusCode:\r\n case this.data.nomRequestFields.fuelNominationRequestFuel:\r\n // Always read-only.\r\n return false;\r\n\r\n case this.data.nomRequestFields.billableServiceOptionId:\r\n case this.data.nomRequestFields.nominationGroupId:\r\n // Editable if Incomplete or New.\r\n return row.data.statusCode === HubStatuses.incomplete || row.data.statusCode === HubStatuses.new;\r\n\r\n case this.data.nomRequestFields.debitLocationId:\r\n case this.data.nomRequestFields.creditLocationId:\r\n case this.data.nomRequestFields.packageId:\r\n case this.data.nomRequestFields.zeroTaxRated:\r\n // Editable if Incomplete, New, Saved, Failed.\r\n return row.data.statusCode === HubStatuses.incomplete || row.data.statusCode === HubStatuses.new || row.data.statusCode === HubStatuses.saved || row.data.statusCode === HubStatuses.failed;\r\n\r\n case this.data.nomRequestFields.bidPrice:\r\n // If applicable, editable if Incomplete, New, Saved, Failed.\r\n if (row.data.statusCode === HubStatuses.incomplete || row.data.statusCode === HubStatuses.new || row.data.statusCode === HubStatuses.saved || row.data.statusCode === HubStatuses.failed) {\r\n if (row.data.billableServiceOptionId) {\r\n const billableServiceOption = this.getBillableServiceOption(row.data.billableServiceOptionId);\r\n return !_.isNil(billableServiceOption) && billableServiceOption.isBiddable;\r\n } else {\r\n return false;\r\n }\r\n } else {\r\n return false;\r\n }\r\n\r\n case this.data.nomRequestFields.fuelNominationRequestLocationId:\r\n // If applicable, editable if Incomplete, New, Saved, Failed.\r\n if (row.data.statusCode === HubStatuses.incomplete || row.data.statusCode === HubStatuses.new || row.data.statusCode === HubStatuses.saved || row.data.statusCode === HubStatuses.failed) {\r\n if (row.data.billableServiceOptionId) {\r\n const billableServiceOption = this.getBillableServiceOption(row.data.billableServiceOptionId);\r\n return !_.isNil(billableServiceOption) && billableServiceOption.billableServiceType !== BillableServices.it;\r\n } else {\r\n return true;\r\n }\r\n } else {\r\n return false;\r\n }\r\n\r\n case this.data.nomRequestFields.startGasDayDate:\r\n case this.data.nomRequestFields.endGasDayEndDate:\r\n const gasDayCycle = GasDayCycle.forCode(this.data.lastSearchParams.gasDay, this.data.lastSearchParams.gasCycleCode, this.data.gasCycles);\r\n if (NominationRequestLogic.isAdjustment(gasDayCycle, this.data)) {\r\n return false;\r\n }\r\n return this.data.lastSearchParams.gasCycleCode === GasCycle.TimelyCycleCode; // Dates are only editable if the last search param is Timely.\r\n\r\n default:\r\n // Always editable.\r\n return true;\r\n }\r\n } else {\r\n return false;\r\n }\r\n };\r\n\r\n editorPreparing = (e: any): void => {\r\n if (e.parentType === 'dataRow' && e.dataField !== undefined) { // undefined data field is the check box column.\r\n e.cancel = !this.isCellEditable(e.row, e.dataField);\r\n this.commonImpl.editorPreparing(e, this.data, this.dataGrid);\r\n }\r\n };\r\n\r\n editorPrepared = (e: any): void => {\r\n this.commonImpl.editorPrepared(e, this.data, this.dataGrid);\r\n };\r\n\r\n updateReceiptLocationAndRecalculateFuel(newRecord: boolean, e): void {\r\n const row = this.currentRowData;\r\n this.recalculateFuel(newRecord, this.currentRowIndex, row.billableServiceOptionId, row.creditLocationId, e.value, row.energy);\r\n }\r\n\r\n /**\r\n * @deprecated use updateZeroTaxRated\r\n */\r\n\r\n setZeroTaxRated(e: any, newRecord: boolean): void {\r\n const row = this.currentRowData;\r\n const deliveryLocationId = row.creditLocationId;\r\n const location = _.find(this.data.locations, loc => loc.id === deliveryLocationId);\r\n let isZeroTaxRated: boolean = false;\r\n\r\n if ( !_.isNil(location) && location.accountingLocationParameters.isExport ) {\r\n const nominationGroup = _.find(this.data.validTransportNomGroups, ng => ng.id === row.nominationGroupId);\r\n isZeroTaxRated = nominationGroup.isZeroTaxRated;\r\n }\r\n\r\n const transp = new TransportationNominationRequest();\r\n transp.zeroTaxRated = isZeroTaxRated;\r\n\r\n if (newRecord) {\r\n row.zeroTaxRated = isZeroTaxRated;\r\n } else {\r\n this.dataGrid.instance.getDataSource().store().update(this.currentRowData['key'], transp);\r\n }\r\n }\r\n\r\n /**\r\n * @deprecated use updateFuel\r\n */\r\n private recalculateFuel(newRecord: boolean, rowIndex: number, billableServiceOptionId: number, creditLocationId: number,\r\n debitLocationId: number, energy: number): void {\r\n if (rowIndex == null || billableServiceOptionId == null || billableServiceOptionId <= 0 || creditLocationId == null || debitLocationId == null || energy == null) {\r\n return;\r\n }\r\n const gasDay = this.data.searchParams.gasDay;\r\n const billableServiceOption = this.getBillableServiceOption(billableServiceOptionId);\r\n\r\n const serviceCalls: Observable[] = [\r\n this.fuelRatioService.queryFuel(gasDay, billableServiceOption.billableServiceType, creditLocationId, debitLocationId, energy)\r\n ];\r\n\r\n forkJoin(serviceCalls).subscribe(response => {\r\n let updateObj: any;\r\n if (newRecord) {\r\n updateObj = this.currentRowData;\r\n } else {\r\n updateObj = { };\r\n updateObj.fuelNominationRequest = this.currentRowData.fuelNominationRequest;\r\n }\r\n if (updateObj.fuelNominationRequest) {\r\n updateObj.fuelNominationRequest.fuel = response[0];\r\n }\r\n this.dataGrid.instance.getDataSource().store().update(this.currentRowData['key'], updateObj);\r\n });\r\n }\r\n\r\n onInitNewRow = (e) => {\r\n this.commonImpl.onInitNewRow(e, this.data, this.dataGrid);\r\n\r\n const request = e.data;\r\n request.bidPrice = null;\r\n request.packageId = null;\r\n\r\n // TransportationRank is hidden for non-CGL pipelines but shown for CGL. Init to null for CGL to force user to set value.\r\n request.transportationRank = this.isCapacityAllocationMethodCgl ? null : 999;\r\n\r\n this.energyValue = 0;\r\n\r\n request.debitNominationGroupId = request.creditNominationGroupId = this.data.lastSearchParams.nomGroupId;\r\n request.fuelNominationRequest = new FuelNominationRequest();\r\n\r\n if (this.data.selectedNomGroup.businessRight === BusinessRight.TboTransportation.name) {\r\n request.receiptRank = request.deliveryRank = request.transportationRank = 999;\r\n request.fuelNominationRequest.fuel = 0; // set this to something so that it doesn't trigger required field\r\n request.fuelNominationRequest.locationId = 0; // set this to something so that it doesn't trigger required field\r\n }\r\n\r\n setTimeout(() => this.dataGrid.instance.editCell(0, this.data.nomRequestFields.billableServiceOptionId));\r\n };\r\n\r\n hasRowChanged = (r1, r2): boolean => {\r\n return r1.statusCode !== r2.statusCode ||\r\n r1.billableServiceOptionId !== r2.billableServiceOptionId ||\r\n r1.nominationGroupId !== r2.nominationGroupId ||\r\n r1.transportationRank !== r2.transportationRank ||\r\n r1.debitLocationId !== r2.debitLocationId ||\r\n r1.creditLocationId !== r2.creditLocationId ||\r\n r1.receiptRank !== r2.receiptRank ||\r\n r1.deliveryRank !== r2.deliveryRank ||\r\n r1.energy !== r2.energy ||\r\n r1.packageId !== r2.packageId ||\r\n r1.bidPrice !== r2.bidPrice ||\r\n r1.fuelNominationRequest.locationId !== r2.fuelNominationRequest.locationId ||\r\n r1.fuelNominationRequest.fuel !== r2.fuelNominationRequest.fuel ||\r\n r1.zeroTaxRated !== r2.zeroTaxRated ||\r\n r1.startGasDayCycleCode !== r2.startGasDayCycleCode ||\r\n r1.startGasDayDate.valueOf() !== r2.startGasDayDate.valueOf() ||\r\n r1.endGasDayEndDate.valueOf() !== r2.endGasDayEndDate.valueOf();\r\n };\r\n\r\n clearGridEdits = () => {\r\n // IE needs this in a timeout, Chrome does not.\r\n window.setTimeout(() => {\r\n this.commonImpl.clearGridEdits(this.dataGrid);\r\n });\r\n };\r\n\r\n removeIncompleteRows() {\r\n this.commonImpl.removeIncompleteRows(this.dataGrid);\r\n }\r\n\r\n calculateFilterExpression(value, selectedFilterOperations, target) {\r\n const column = this as any;\r\n return [[TransportHubComponent.getStatus, \"=\", \"New\"], \"or\", column.defaultCalculateFilterExpression.apply(this, arguments)];\r\n }\r\n\r\n nominationGroupHeaderFilter(data) {\r\n data.dataSource.postProcess = (results) => {\r\n results = [];\r\n const nominationGroups = _.uniq(_.map(this.data.transportationNominationRequests, x => x.nominationGroupId));\r\n const intersectedNomGroups = _.filter(this.data.allNomGroups, (ng: NominationGroup) => _.some(nominationGroups, x => x === ng.id));\r\n _.forEach(intersectedNomGroups, x => {\r\n results.push({text: x.mnemonic, value: x.mnemonic });\r\n });\r\n return _.sortBy(results, value => value.value);\r\n };\r\n }\r\n\r\n filter() {\r\n if (!this.dataGrid.instance.getDataSource()) { return; }\r\n if (this.data.transportFilter.length > 0) {\r\n this.dataGrid.instance.filter(this.data.transportFilter);\r\n }\r\n }\r\n\r\n selectSavedRequests(requestsToSelect) {\r\n this.dataGrid.instance.selectRows(requestsToSelect, true);\r\n }\r\n\r\n deselectNewDuplicateKeyRequests(requestsToSelect) {\r\n this.dataGrid.instance.deselectRows(requestsToSelect);\r\n }\r\n\r\n deselectExpiredKeyRequests(requestsToSelect) {\r\n this.dataGrid.instance.deselectRows(requestsToSelect);\r\n }\r\n\r\n addRecord() {\r\n this.added = true;\r\n this.commonImpl.addRecord(this.dataGrid);\r\n this.data.newRowAdded = true;\r\n }\r\n\r\n onCellClick(e) {\r\n this.commonImpl.onCellClick(e, this.dataGrid);\r\n }\r\n\r\n public hasUndoRecord(rowData: any): boolean {\r\n return this.commonImpl.hasUndoRecord(rowData);\r\n }\r\n\r\n public onUndoClick(e: any, rowData: any): void {\r\n this.commonImpl.undoRowEdit(this.dataGrid, rowData);\r\n }\r\n\r\n onKeyDown(e: any, columnPosition: Array) {\r\n this.commonImpl.onKeyDown(e, this.dataGrid, this.isCellEditable);\r\n }\r\n\r\n isDisabled(): boolean {\r\n return this.commonImpl.isDisabled(this.dataGrid);\r\n }\r\n\r\n isDeleteDisabled(): boolean {\r\n return this.commonImpl.isDeleteDisabled(this.dataGrid);\r\n }\r\n\r\n isViewOnly(): boolean {\r\n return this.commonImpl.isViewOnly(this.data);\r\n }\r\n\r\n get describeNumberOfRecords(): string {\r\n return this.commonImpl.describeNumberOfRecords(this.data.transportationNominationRequests, this.dataGrid);\r\n }\r\n\r\n cellTemplate = (cellElement: HTMLElement, cellInfo) => {\r\n if (cellInfo.column.caption === \"Status\") {\r\n if (!_.isNil(cellInfo.data.statusMessage) && cellInfo.data.statusMessage.length > 0) {\r\n cellElement.addEventListener('mousemove', () => {\r\n cellElement.setAttribute('title', cellInfo.data.statusMessage);\r\n });\r\n }\r\n }\r\n\r\n this.commonImpl.cellTemplate(cellElement, cellInfo, this.dataGrid);\r\n\r\n if (cellInfo.column.caption === \"Account\") {\r\n const nomGroup = _.find(this.data.validTransportNomGroups, x => x.id === cellInfo.data.nominationGroupId);\r\n if (_.isNil(nomGroup) && !_.isNil(cellInfo.data.nominationGroupId)) {\r\n let updateObj: any;\r\n updateObj = { nominationGroupId: cellInfo.data.nominationGroupId };\r\n this.nominationNomGroupEnrichmentService.enrich(updateObj, 'nominationGroupId', 'nominationGroup').subscribe(updateObj2 => {\r\n cellElement.innerText = updateObj2.nominationGroupMnemonic;\r\n });\r\n }\r\n }\r\n };\r\n\r\n editCellTemplate = (cellElement: HTMLElement, cellInfo) => {\r\n this.commonImpl.editCellTemplate(cellElement, cellInfo, this.dataGrid, this.data);\r\n };\r\n\r\n validateForBidPrice = (e): boolean => {\r\n const key = e.validator.option(\"validationGroup.key\"); // Get the key of your row\r\n const grid = this.dataGrid.instance; // Get the grid instance\r\n const rowOptions = grid.getVisibleRows()[grid.getRowIndexByKey(key)];\r\n\r\n const rowIndex = rowOptions.rowIndex;\r\n\r\n const billableServiceOptionId = grid.cellValue(rowIndex, 'billableServiceOptionId');\r\n const billableServiceOption = this.getBillableServiceOption(billableServiceOptionId);\r\n\r\n if (billableServiceOption && billableServiceOption.isBiddable) {\r\n const bidPrice = grid.cellValue(rowIndex, 'bidPrice');\r\n return (bidPrice !== null);\r\n } else {\r\n return true;\r\n }\r\n };\r\n\r\n private validateForFuelColumns(e, dataField: string): boolean {\r\n const key = e.validator.option(\"validationGroup.key\"); // Get the key of your row\r\n const grid = this.dataGrid.instance; // Get the grid instance\r\n const rowOptions = grid.getVisibleRows()[grid.getRowIndexByKey(key)];\r\n\r\n const rowIndex = rowOptions.rowIndex;\r\n\r\n const billableServiceOptionId = grid.cellValue(rowIndex, 'billableServiceOptionId');\r\n const billableServiceOption = this.getBillableServiceOption(billableServiceOptionId);\r\n\r\n if (_.isNil(billableServiceOption) || billableServiceOption.billableServiceType === 'TBO') {\r\n return true;\r\n }\r\n\r\n const fuelColumn = grid.cellValue(rowIndex, dataField);\r\n return (fuelColumn !== null);\r\n }\r\n\r\n validateForFuelLocation = (e): boolean => {\r\n return this.validateForFuelColumns(e, 'fuelNominationRequestLocationId');\r\n };\r\n\r\n validateForFuel = (e): boolean => {\r\n return this.validateForFuelColumns(e, 'fuelNominationRequestFuel');\r\n };\r\n\r\n public formatGasDayCycle = (date: Date, cycleCode: string) => {\r\n return this.commonImpl.formatGasDayCycle(date, cycleCode, this.data.gasCycles);\r\n };\r\n\r\n // \r\n\r\n /**\r\n * Refactored Methods\r\n */\r\n\r\n private creditLocationIdSelectionChanged(cellPreparedEvent: any, selectionChangedEvent: any): void {\r\n const changeExistingRecordPropertyFunction = (existingRecord, selectedItem) => existingRecord.creditLocationId = selectedItem.id;\r\n\r\n const updateRecordPropertiesFunction = (existingRecord, updateRecord) => [\r\n this.updateFuel(existingRecord, updateRecord),\r\n this.updateZeroTaxRated(existingRecord, updateRecord)\r\n ];\r\n\r\n this.handleSelectionChanged(cellPreparedEvent, selectionChangedEvent, changeExistingRecordPropertyFunction, updateRecordPropertiesFunction);\r\n }\r\n\r\n private creditLocationIdDataSource(cellPreparedEvent: any, selectBox: any): void {\r\n if (cellPreparedEvent.data.nominationGroupId) {\r\n selectBox.option({\r\n dataSource: {\r\n store: this.buildDeliveryLocations(cellPreparedEvent.data)\r\n }\r\n });\r\n } else {\r\n selectBox.option({\r\n dataSource: {\r\n store: []\r\n }\r\n });\r\n }\r\n }\r\n\r\n private handleSelectionChanged(\r\n cellPreparedEvent: any,\r\n selectionChangedEvent: any,\r\n changeExistingRecordPropertyFunction: (existingRecord: TransportationNominationRequest, selectedItem: TSelectedItemType) => void,\r\n updateRecordPropertiesFunction: (existingRecord: TransportationNominationRequest, updateRecord: TransportationNominationRequest) => Observable[]\r\n ): void {\r\n if (_.isNil(selectionChangedEvent.selectedItem)) {\r\n return;\r\n }\r\n\r\n // Set Current Row Indicators\r\n this.currentRowData = cellPreparedEvent.data;\r\n this.currentRowIndex = cellPreparedEvent.rowIndex;\r\n\r\n // Set Existing Record and Update Record\r\n const isNewRecord = cellPreparedEvent.data['key'] <= 0;\r\n const existingRecord = cellPreparedEvent.data;\r\n const updateRecord = isNewRecord ? cellPreparedEvent.data : new TransportationNominationRequest();\r\n\r\n // Change the property on the Existing Record to reflect value from select box\r\n changeExistingRecordPropertyFunction(existingRecord, selectionChangedEvent.selectedItem);\r\n\r\n // Required method calls to update DataGrid and set proper location for focus\r\n const refreshDataGrid = () => {\r\n // Bug 146357 - for some reason the dataGrid is still updating for new records and the repaint is occurring too fast, therefore needed\r\n // to add the timeout back in for repaint rows. Tried using the promise from the saveEditData() but still not working\r\n // properly. It's unfortunate that the timeout needs to be added back but it's so that we can focus on other tasks.\r\n setTimeout(() => this.dataGrid.instance.repaintRows([cellPreparedEvent.rowIndex]));\r\n this.commonImpl.delayFocusCellElement(cellPreparedEvent.rowIndex, cellPreparedEvent.columnIndex, this.dataGrid);\r\n };\r\n\r\n // Perform Updates\r\n forkJoin(updateRecordPropertiesFunction(existingRecord, updateRecord))\r\n .subscribe(() => {\r\n // DevExtreme Promise does not have a finally method, so we need to handle both the onFulFilled and onRejected method\r\n // onFulFilled - means that you're updating a record where the key exists in the data source\r\n // onRejected - means that no record with the data key exists (new records)\r\n this.dataGrid.instance.getDataSource().store().update(cellPreparedEvent.data['key'], updateRecord)\r\n .then(\r\n () => refreshDataGrid(),\r\n () => refreshDataGrid());\r\n });\r\n }\r\n\r\n private updateFuel(existingRecord: TransportationNominationRequest, updateRecord: TransportationNominationRequest): Observable {\r\n if (_.isNil(existingRecord.billableServiceOptionId) ||\r\n _.isNil(existingRecord.debitLocationId) ||\r\n _.isNil(existingRecord.creditLocationId) ||\r\n _.isNil(existingRecord.energy) ||\r\n existingRecord.billableServiceOptionId <= 0) {\r\n return of(0);\r\n }\r\n\r\n const gasDay = this.data.searchParams.gasDay;\r\n const billableServiceOption = this.getBillableServiceOption(existingRecord.billableServiceOptionId);\r\n\r\n return this.fuelRatioService\r\n .queryFuel(gasDay, billableServiceOption.billableServiceType, existingRecord.creditLocationId, existingRecord.debitLocationId, existingRecord.energy)\r\n .pipe(\r\n tap(requiredFuel => {\r\n // If the FuelNominationRequest property is Nil, then we need to copy from the existing record to preserve\r\n // the other FuelNominationRequest properties. This situation is when we update a record, where an anonymous\r\n // object is passed into this method which does not contain a FuelNominationRequestProperty.\r\n if (_.isNil(updateRecord.fuelNominationRequest)) {\r\n updateRecord.fuelNominationRequest = existingRecord.fuelNominationRequest;\r\n }\r\n\r\n updateRecord.fuelNominationRequest.fuel = requiredFuel;\r\n })\r\n );\r\n }\r\n\r\n private updateZeroTaxRated(existingRecord: TransportationNominationRequest, updateRecord: TransportationNominationRequest): Observable {\r\n let zeroTaxRated: boolean = false;\r\n\r\n const location = _.find(this.data.locations, loc => loc.id === existingRecord.creditLocationId);\r\n if (!_.isNil(location) && location.accountingLocationParameters.isExport) {\r\n const nominationGroup = _.find(this.data.validTransportNomGroups, ng => ng.id === existingRecord.nominationGroupId);\r\n zeroTaxRated = nominationGroup.isZeroTaxRated;\r\n }\r\n\r\n updateRecord.zeroTaxRated = zeroTaxRated;\r\n\r\n return of(zeroTaxRated);\r\n }\r\n\r\n /**\r\n * Transportation Nomination Request has special sorting requirement where any new records regardless of search\r\n * criteria will always be displayed at the top. Any modified record will be sorted based on it's old value to\r\n * prevent the row from changing to another position due to sorting (as a result, any modified records do not\r\n * follow the sort logic).\r\n */\r\n\r\n statusSortValue = (rowData: TransportationNominationRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getSortStringValue(this.data.nomRequestFields.statusCode, recordData.statusCode, rowData, this.dataGrid.instance);\r\n };\r\n\r\n tosSortValue = (rowData: TransportationNominationRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getBillableServiceSortValue(this.data.nomRequestFields.billableServiceOptionId, recordData.billableServiceOptionId, this.data.billableServiceOptions, rowData, this.dataGrid.instance);\r\n };\r\n\r\n nomGroupSortValue = (rowData: TransportationNominationRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getNomGroupSortValue(this.data.lastSearchParams.gasDay, this.data.nomRequestFields.nominationGroupId, recordData.nominationGroupId, recordData.nominationGroupMnemonic, rowData, this.dataGrid.instance);\r\n };\r\n\r\n transportationRankSortValue = (rowData: TransportationNominationRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getSortNumberValue(this.data.nomRequestFields.transportationRank, recordData.transportationRank, rowData, this.dataGrid.instance);\r\n };\r\n\r\n\r\n debitLocationSortValue = (rowData: TransportationNominationRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getLocationSortValue(this.data.nomRequestFields.debitLocationId, recordData.debitLocationId, recordData.debitLocationName, rowData, this.dataGrid.instance);\r\n };\r\n\r\n receiptRankSortValue = (rowData: TransportationNominationRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getSortNumberValue(this.data.nomRequestFields.receiptRank, recordData.receiptRank, rowData, this.dataGrid.instance);\r\n };\r\n\r\n creditLocationSortValue = (rowData: TransportationNominationRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getLocationSortValue(this.data.nomRequestFields.creditLocationId, recordData.creditLocationId, recordData.creditLocationName, rowData, this.dataGrid.instance);\r\n };\r\n\r\n deliveryRankSortValue = (rowData: TransportationNominationRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getSortNumberValue(this.data.nomRequestFields.deliveryRank, recordData.deliveryRank, rowData, this.dataGrid.instance);\r\n };\r\n\r\n nomQtySortValue = (rowData: TransportationNominationRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getSortNumberValue(this.data.nomRequestFields.energy, recordData.energy, rowData, this.dataGrid.instance);\r\n };\r\n\r\n packageIdSortValue = (rowData: TransportationNominationRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getSortStringValue(this.data.nomRequestFields.packageId, recordData.packageId, rowData, this.dataGrid.instance);\r\n };\r\n\r\n bidPriceSortValue = (rowData: TransportationNominationRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getSortNumberValue(this.data.nomRequestFields.bidPrice, recordData.bidPrice, rowData, this.dataGrid.instance);\r\n };\r\n\r\n fuelLocationSortValue = (rowData: TransportationNominationRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getLocationSortValue(this.data.nomRequestFields.fuelNominationRequestLocationId, recordData.fuelNominationRequest.locationId, recordData.fuelNominationRequest.name, rowData, this.dataGrid.instance);\r\n };\r\n\r\n fuelQtySortValue = (rowData: TransportationNominationRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getSortNumberValue(this.data.nomRequestFields.fuelNominationRequestFuel, recordData.fuelNominationRequest.fuel, rowData, this.dataGrid.instance);\r\n };\r\n\r\n taxZeroRatedSortValue = (rowData: TransportationNominationRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getSortBooleanValue(this.data.nomRequestFields.zeroTaxRated, recordData.zeroTaxRated, rowData, this.dataGrid.instance);\r\n };\r\n\r\n beginDateSortValue = (rowData: TransportationNominationRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getSortDateValue(this.data.nomRequestFields.startGasDayDate, recordData.startGasDayDate, rowData, this.dataGrid.instance);\r\n };\r\n\r\n endDateSortValue = (rowData: TransportationNominationRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getSortDateValue(this.data.nomRequestFields.endGasDayEndDate, recordData.endGasDayEndDate, rowData, this.dataGrid.instance);\r\n };\r\n\r\n gasCycleSortValue = (rowData: TransportationNominationRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getSortStringValue(this.data.nomRequestFields.startGasDayCycleCode, recordData.startGasDayCycleCode, rowData, this.dataGrid.instance);\r\n };\r\n\r\n updateSelectedRows = (keysToAdd: Array, keysToRemove: Array) => {\r\n this.commonImpl.updateSelectedRows(this.dataGrid, keysToAdd, keysToRemove);\r\n };\r\n\r\n // \r\n}\r\n","
\r\n
\r\n {{getTransactionType()}} - Number of records found: {{getRowCount()}}\r\n
\r\n Nominations\r\n | \r\n Export CSV\r\n | \r\n PDF\r\n
\r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n","import * as dx from \"devextreme/core/renderer\";\r\nimport * as _ from 'lodash';\r\nimport {AfterViewInit, ChangeDetectorRef, Component, Input, OnInit, ViewChild} from '@angular/core';\r\nimport {BooleanAsYesNoPipe} from \"@shared/pipes/boolean-as-yes-no/boolean-as-yes-no.pipe\";\r\nimport {FileService} from \"@shared/services/webapp/file-service/file.service\";\r\nimport {TitleTransferReportModel} from \"../title-transfer-report.component\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {SortingService} from \"../../nomination-requests/sorting-service/sorting.service\";\r\nimport {TitleTransferReportDto} from \"@shared/services/nomination/title-transfer-report/title-transfer-report.service\";\r\nimport {TitleTransferReportComponent} from \"../title-transfer-report.component\";\r\nimport {NominationSystemService} from \"@shared/services/nomination/nomination-system/nomination-system.service\";\r\nimport {DateTime} from \"@model/date-time\";\r\nimport {NominationLocationEnrichmentService} from \"@shared/services/nomination/nomination-location-enrichment/nomination-location-enrichment.service\";\r\nimport {NominationNomGroupEnrichmentService} from \"@shared/services/nomination/nomination-nom-group-enrichment/nomination-nom-group-enrichment.service\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {GasDayCycle} from \"@model/gas-day-cycle\";\r\nimport {GasCycleLogic} from \"app/shared/classes/gas-cycle.logic\";\r\nimport {Router} from \"@angular/router\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\n\r\n\r\n@Component({\r\n selector: 'app-title-transfer-report-grid',\r\n templateUrl: './title-transfer-report-grid.component.html',\r\n styleUrls: ['./title-transfer-report-grid.component.css']\r\n})\r\n\r\nexport class TitleTransferReportGridComponent implements OnInit, AfterViewInit {\r\n private sortingService: SortingService;\r\n private currentTime: string;\r\n\r\n @Input() data: TitleTransferReportModel;\r\n @Input() dataSource: TitleTransferReportModel;\r\n @Input() selectedRows: TitleTransferReportDto[];\r\n @Input() transactionType: string;\r\n @Input() showTypeHeader: boolean;\r\n @Input() gridId: string;\r\n @ViewChild(DxDataGridComponent)\r\n public dataGrid: DxDataGridComponent;\r\n\r\n constructor(public fileService: FileService,\r\n private nominationNomGroupEnrichmentService: NominationNomGroupEnrichmentService,\r\n private nominationLocationEnrichmentService: NominationLocationEnrichmentService,\r\n private nominationSystemService: NominationSystemService,\r\n public titleTransferReportComponent: TitleTransferReportComponent,\r\n private router: Router,\r\n public cdr: ChangeDetectorRef,\r\n private sessionService: SessionService) {\r\n this.sortingService = new SortingService();\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.cdr.detectChanges();\r\n }\r\n\r\n packageIdSortValue = (rowData: TitleTransferReportDto) => {\r\n return this.sortingService.getBlankOnBottomSortValue('packageId', rowData.packageId, rowData, this.dataGrid.instance);\r\n };\r\n\r\n counterPartyPackageIdSortValue = (rowData: TitleTransferReportDto) => {\r\n return this.sortingService.getBlankOnBottomSortValue('counterPartyPackageId', rowData.counterPartyPackageId, rowData, this.dataGrid.instance);\r\n };\r\n\r\n getTransactionType() {\r\n return this.transactionType;\r\n }\r\n\r\n getRowCount() {\r\n return this.transactionType === 'Buy'\r\n ? this.data.buyTransfers ? this.data.buyTransfers.length : 0\r\n : this.data.sellTransfers ? this.data.sellTransfers.length : 0;\r\n }\r\n\r\n getAccountName(account): string {\r\n if (!account) {\r\n return 'All';\r\n }\r\n\r\n return account.mnemonic;\r\n }\r\n\r\n getLocationName(location): string {\r\n if (!location) {\r\n return 'All';\r\n }\r\n\r\n return location.name;\r\n }\r\n\r\n exportCsvClicked() {\r\n const yesNoPipe = new BooleanAsYesNoPipe();\r\n\r\n this.nominationSystemService.applicationServerTimes().subscribe(result => {\r\n this.currentTime = DateTime.parse(result.serverTime).format(\"YYYY-MMM-DD hh:mm\");\r\n\r\n const enterprise = _.find(this.data.enterprises, x => x.id === this.data.lastSearchParams.enterpriseId);\r\n const account = _.find(this.data.nomGroups, x => x.id === this.data.lastSearchParams.nomGroupId);\r\n const location = _.find(this.data.locations, x => x.id === this.data.lastSearchParams.locationId);\r\n\r\n const filename = 'TitleTransfer_' + enterprise.mnemonic + '_' + this.data.lastSearchParams.gasDay + '.csv';\r\n\r\n const csvData = new Array();\r\n\r\n const gasCycle = GasCycleLogic.buildGasCycleForRequest(this.data.gasDayCycleStatuses, this.data.lastSearchParams.gasCycleCode);\r\n\r\n csvData.push(['Start gas day:', this.data.lastSearchParams.gasDay.toDisplayDateTimeFormat()]);\r\n csvData.push(['Cycle (CCT):', gasCycle.name]);\r\n\r\n csvData.push(['Customer:', enterprise.shortName + ' (' + enterprise.mnemonic + ')']);\r\n csvData.push(['Account:', this.getAccountName(account)]);\r\n csvData.push(['Location:', this.getLocationName(location)]);\r\n csvData.push(['Mismatched only:', yesNoPipe.transform(this.data.lastSearchParams.mismatchedOnly)]);\r\n csvData.push(['Created On:', this.currentTime]);\r\n csvData.push([]);\r\n csvData.push(['Account', 'Status', 'Location', 'Other Account', 'Package Id', 'Qty',\r\n 'Begin Date', 'Begin Time', 'Begin Cycle', 'End Date', 'End Time', 'Submitted By',\r\n 'Counter Party Pkg Id', 'Counter Party Qty', 'Counter Party Begin Date', 'Counter Party Begin Time', 'Counter Party Begin Cycle',\r\n 'Counter Party End Date', 'Counter Party End Time', 'Counter Party Submitted By']);\r\n\r\n const buyTransfersCsvData = _.sortBy(this.data.buyTransfers, ['locationName', 'debitNomGroupMnemonic']);\r\n _.forEach(buyTransfersCsvData, (value: any) => {\r\n csvData.push([value.creditNomGroupMnemonic, value.status, value.locationName, value.debitNomGroupMnemonic,\r\n value.packageId, value.quantity, this.formatBeginDate(value.startGasDayCycle), this.getGasDayCycleEffectiveTime(value.startGasDayCycle), this.getGasDayCycleCode(value.startGasDayCycle),\r\n this.formatEndDate(value.endGasDayCycle), this.getGasDayCycleEndTime(value.endGasDayCycle), value.submittedByUserFullName, value.counterPartyPackageId, value.counterPartyQuantity,\r\n this.formatBeginDate(value.counterPartyStartGasDayCycle), this.getGasDayCycleEffectiveTime(value.counterPartyStartGasDayCycle), this.getGasDayCycleCode(value.counterPartyStartGasDayCycle),\r\n this.formatEndDate(value.counterPartyEndGasDayCycle), this.getGasDayCycleEndTime(value.counterPartyEndGasDayCycle), value.counterPartySubmittedByUserFullName, 'Buy']);\r\n });\r\n\r\n const sellTransfersCsvData = _.sortBy(this.data.sellTransfers, ['locationName', 'creditNomGroupMnemonic']);\r\n _.forEach(sellTransfersCsvData, (value: any) => {\r\n csvData.push([value.debitNomGroupMnemonic, value.status, value.locationName, value.creditNomGroupMnemonic,\r\n value.packageId, value.quantity, this.formatBeginDate(value.startGasDayCycle), this.getGasDayCycleEffectiveTime(value.startGasDayCycle), this.getGasDayCycleCode(value.startGasDayCycle),\r\n this.formatEndDate(value.endGasDayCycle), this.getGasDayCycleEndTime(value.endGasDayCycle), value.submittedByUserFullName, value.counterPartyPackageId, value.counterPartyQuantity,\r\n this.formatBeginDate(value.counterPartyStartGasDayCycle), this.getGasDayCycleEffectiveTime(value.counterPartyStartGasDayCycle), this.getGasDayCycleCode(value.counterPartyStartGasDayCycle),\r\n this.formatEndDate(value.counterPartyEndGasDayCycle), this.getGasDayCycleEndTime(value.counterPartyEndGasDayCycle), value.counterPartySubmittedByUserFullName, 'Sell']);\r\n });\r\n\r\n this.fileService.parseArrayToCsv(filename, csvData);\r\n });\r\n }\r\n\r\n nominationsClicked() {\r\n const params = {\r\n customerId: this.data.searchParams.enterpriseId,\r\n gasDay: this.data.searchParams.gasDay,\r\n gasCycleCode: this.data.searchParams.gasCycleCode,\r\n nomGroupId: _.isNil(this.data.searchParams.nomGroupId) ? _.find(this.data.nomGroups, ng => ng.isPrimaryHub).id : this.data.searchParams.nomGroupId\r\n };\r\n const code = this.sessionService.getPipeline().code;\r\n this.router.navigate(['/app', code, 'nominationrequests'], {\r\n queryParams: params\r\n }).then(() => {});\r\n }\r\n\r\n formatBeginDate(value: any) {\r\n if (value === null) return null;\r\n return GasDay.from(value.gasDayDate).toCsvFormat();\r\n }\r\n\r\n formatEndDate(value: any) {\r\n if (value === null) return null;\r\n return GasDay.from(value.nextGasDayDate).toCsvFormat();\r\n }\r\n\r\n getGasDayCycleEffectiveTime(value: GasDayCycle): string {\r\n if (value) {\r\n return value.gasFlowEffectiveTime;\r\n }\r\n return '';\r\n }\r\n\r\n getGasDayCycleEndTime(value: GasDayCycle): string {\r\n if (value) {\r\n return value.gasDayTime;\r\n }\r\n return '';\r\n }\r\n\r\n getGasDayCycleCode(value: GasDayCycle): string {\r\n if (value) {\r\n return value.gasCycleCode;\r\n }\r\n return '';\r\n }\r\n\r\n getPdfClicked() {\r\n this.titleTransferReportComponent.pdfReportClicked();\r\n }\r\n\r\n setSpacerAndCheckboxColumnStyle(e) {\r\n if (e.rowType === 'data' || e.rowType === 'header') {\r\n if (e.column.name === 'spacer') {\r\n e.cellElement.style.backgroundColor = \"#f5f5f5\";\r\n e.cellElement.style.borderBottomStyle = 'hidden';\r\n e.cellElement.style.borderTopStyle = 'hidden';\r\n }\r\n }\r\n\r\n if (e.rowType === \"data\" && e.column.command === 'select' && (e.data.status !== 'Mismatched' || _.isNil(e.data.counterPartyNomRequestId))) {\r\n const cellElement = dx(e.cellElement);\r\n const selectBox = cellElement.find('.dx-select-checkbox');\r\n selectBox.css(\"display\", \"none\");\r\n }\r\n }\r\n\r\n selectAllCheckboxHandler(e: any) {\r\n const disabledKeys = _.filter(this.selectedRows, x => x.status !== 'Mismatched' || _.isNil(x.counterPartyNomRequestId));\r\n\r\n // this logic is here so that when you have a mix of disabled rows and all selectable rows are selected, we treat the select all as a proper de-select all\r\n // if we didn't have this here, the select all box in that case will act as a partial selection and upon click will to try to perform a select all always\r\n if (disabledKeys.length > 0 && _.isEqual(e.currentSelectedRowKeys, disabledKeys)) {\r\n e.component.deselectAll();\r\n } else if (disabledKeys.length > 0) {\r\n e.component.deselectRows(disabledKeys);\r\n }\r\n\r\n // adding this because bindings don't seem to work properly all the time when switching between page and tab views\r\n if (this.transactionType === 'Buy') {\r\n this.data.selectedBuys = this.selectedRows;\r\n this.data.hasSelectedBuys = this.selectedRows && this.selectedRows.length > 0;\r\n } else {\r\n this.data.selectedSells = this.selectedRows;\r\n this.data.hasSelectedSells = this.selectedRows && this.selectedRows.length > 0;\r\n }\r\n }\r\n}\r\n","import {AfterViewInit, ChangeDetectorRef, Component, Input, OnInit, ViewChild} from '@angular/core';\r\nimport {TitleTransferReportModel} from \"../title-transfer-report.component\";\r\nimport {TitleTransferReportGridComponent} from \"app/gcts/nomination/title-transfer-report/title-transfer-report-grid/title-transfer-report-grid.component\";\r\n\r\n@Component({\r\n selector: 'app-title-transfer-report-full',\r\n templateUrl: './title-transfer-report-full.component.html',\r\n styleUrls: ['./title-transfer-report-full.component.css']\r\n})\r\nexport class TitleTransferReportFullComponent implements OnInit, AfterViewInit {\r\n @Input() data: TitleTransferReportModel;\r\n\r\n @ViewChild('BuyGridComponent') buyTransactionsGrid: TitleTransferReportGridComponent;\r\n @ViewChild('SellGridComponent') sellTransactionsGrid: TitleTransferReportGridComponent;\r\n\r\n constructor(public cdr: ChangeDetectorRef) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.cdr.detectChanges();\r\n }\r\n}\r\n","\r\n\r\n","\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n","import {AfterViewInit, ChangeDetectorRef, Component, Input, OnInit, ViewChild} from '@angular/core';\r\nimport {TitleTransferReportModel} from \"../title-transfer-report.component\";\r\nimport {TitleTransferReportGridComponent} from \"../title-transfer-report-grid/title-transfer-report-grid.component\";\r\n\r\n@Component({\r\n selector: 'app-title-transfer-report-tab',\r\n templateUrl: './title-transfer-report-tab.component.html',\r\n styleUrls: ['./title-transfer-report-tab.component.css']\r\n})\r\n\r\nexport class TitleTransferReportTabComponent implements OnInit, AfterViewInit {\r\n @Input() data: TitleTransferReportModel;\r\n\r\n @ViewChild('BuyGridComponent') buyTransactionsGrid: TitleTransferReportGridComponent;\r\n @ViewChild('SellGridComponent') sellTransactionsGrid: TitleTransferReportGridComponent;\r\n\r\n tabs = [{id: 0, title: \"Buy\", template: \"template1\"},\r\n {id: 1, title: \"Sell\", template: \"template2\"}];\r\n\r\n constructor(public cdr: ChangeDetectorRef) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.cdr.detectChanges();\r\n }\r\n}\r\n","
\r\n
\r\n\r\n
\r\n Number of energy imbalance instructions: {{data.energyImbalanceInstructions.length}}\r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n Gas
Cycle\r\n
\r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n
\r\n
\r\n","import * as _ from 'lodash';\r\nimport {\r\n AfterViewInit, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {HubComponentBase} from \"../hub-component.interface\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {\r\n IEnergyImbalanceInstruction,\r\n INominationRequestsModel,\r\n IUndoRecord\r\n} from \"@shared/services/nomination/nomination-request/nomination-request.interface\";\r\nimport {CommonHubService, UndoRowArgs} from \"../common-hub.service\";\r\nimport {GasDayCycle} from \"@model/gas-day-cycle\";\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {GasCycle} from \"@model/gas-cycle\";\r\nimport {HubStatuses} from \"app/gcts/nomination/nomination-requests/nomination-requests.model\";\r\nimport {NominationNomGroupEnrichmentService} from \"@shared/services/nomination/nomination-nom-group-enrichment/nomination-nom-group-enrichment.service\";\r\n\r\n@Component({\r\n selector: 'app-energy-imbalance',\r\n templateUrl: './energy-imbalance.component.html',\r\n styleUrls: ['./energy-imbalance.component.css']\r\n})\r\nexport class EnergyImbalanceComponent extends HubComponentBase implements OnInit, AfterViewInit {\r\n @Input() data: INominationRequestsModel;\r\n @Input() undos: Array;\r\n @Output() undoRow: EventEmitter = new EventEmitter();\r\n @Output() selectionChanged: EventEmitter = new EventEmitter();\r\n @ViewChild(DxDataGridComponent) public dataGrid: DxDataGridComponent;\r\n public commonImpl: CommonHubService;\r\n public canDisableSubmitButton = false;\r\n private editCellStyle = \"editable-cell\";\r\n\r\n integerOnlyColumnIndexes: Array = [6, 7];\r\n\r\n constructor(public cdr: ChangeDetectorRef, private nominationNomGroupEnrichmentService: NominationNomGroupEnrichmentService) {\r\n super();\r\n this.commonImpl = new CommonHubService(this.undoRow, this.selectionChanged, this.hasRowChanged, this.isCellEditable, nominationNomGroupEnrichmentService);\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.cdr.detectChanges(); // https://stackoverflow.com/questions/34364880/expression-has-changed-after-it-was-checked\r\n this.commonImpl.onNgAfterViewInit(this.undos);\r\n this.commonImpl.updateSelectedRows(this.dataGrid, this.data.deliverySelections, []);\r\n }\r\n\r\n onCellPrepared(e) {\r\n if (e.rowType === 'data') {\r\n const cellElement = e.cellElement;\r\n const numberEditorElement = cellElement.find('.dx-numberbox');\r\n const numberBox = numberEditorElement.data('dxNumberBox');\r\n\r\n if ((e.column.dataField === \"packQuantity\" || e.column.dataField === \"draftQuantity\") && numberBox) {\r\n numberBox.on('keyDown', (x) => {\r\n this.commonImpl.filterOutNonIntegerKeys(x);\r\n });\r\n }\r\n }\r\n }\r\n\r\n onContentReady() {\r\n if (this.data.balanceHubSelectedRowKeys.length > 0) {\r\n this.filter();\r\n }\r\n }\r\n\r\n public allowUpdating(): boolean {\r\n return !GasCycle.isStsCycle(this.data.lastSearchParams.gasCycleCode);\r\n }\r\n\r\n isDisabled(): boolean {\r\n return this.data.nominationDeadlinePassed;\r\n }\r\n\r\n clearGridEdits = () => {\r\n // IE needs this in a timeout, Chrome does not.\r\n window.setTimeout(() => {\r\n this.dataGrid.instance.clearSelection();\r\n });\r\n };\r\n\r\n deselectNewDuplicateKeyRequests(requestsToSelect: any) {\r\n }\r\n\r\n deselectExpiredKeyRequests(requestsToSelect: any) {\r\n }\r\n\r\n filter() {\r\n if (this.data.energyFilter.length > 0 && !!this.dataGrid.instance) {\r\n this.dataGrid.instance.filter(this.data.energyFilter);\r\n }\r\n }\r\n\r\n isDeleteDisabled(): boolean {\r\n return false;\r\n }\r\n\r\n isViewOnly(): boolean {\r\n return this.commonImpl.isViewOnly(this.data);\r\n }\r\n\r\n removeIncompleteRows() {\r\n\r\n }\r\n\r\n selectSavedRequests(requestsToSelect) {\r\n this.dataGrid.instance.selectRows(requestsToSelect, true);\r\n }\r\n\r\n editorPreparing = (e: any): void => {\r\n if (e.parentType === 'dataRow' && e.dataField !== undefined) { // undefined data field is the check box column.\r\n e.cancel = !this.isCellEditable(e.row, e.dataField);\r\n }\r\n if (!e.cancel) {\r\n\r\n }\r\n };\r\n\r\n editorPrepared = (e: any): void => {\r\n if (e.dataField === 'packQuantity' || e.dataField === 'draftQuantity' || e.dataField === 'rank') {\r\n e.editorElement.classlist.add(this.editCellStyle);\r\n }\r\n };\r\n\r\n onCellUpdated = (event): void => {\r\n window.setTimeout(() => event.component.selectRows([event.key], true));\r\n\r\n // Set Gas Cycle, Begin Date, End Date to match the search parameters.\r\n const store = this.dataGrid.instance.getDataSource().store();\r\n store.byKey(event.key).then((record) => {\r\n const gasCycle = _.find(this.data.gasCycles, cycle => cycle.code === this.data.lastSearchParams.gasCycleCode);\r\n const startGasDay = this.data.lastSearchParams.gasDay.toDate;\r\n const endGasDay = this.data.lastSearchParams.gasDay.toDate;\r\n if (gasCycle.isStandingNomAllowed) {\r\n startGasDay.setDate(1);\r\n endGasDay.setMonth(startGasDay.getMonth() + 1);\r\n endGasDay.setDate(0);\r\n }\r\n record.startGasDayCycle = GasDayCycle.for(GasDay.from(startGasDay), gasCycle);\r\n record.endGasDayCycle = GasDayCycle.for(GasDay.from(endGasDay), gasCycle);\r\n // TODO - JOE - The following assignments of startGasDay & endGasDay looks suspect and causes the Energy Imbalance submit to fail because it's assigning\r\n // 'startGasDay' to be a GasDay object, but the underlying DTO expects it to be a string.\r\n // When we remediate this tab to use the 'startGasDayDate' and 'endGasDayEndDate' properties, clean this up.\r\n /*\r\n record.startGasDay = record.startGasDayCycle.gasDay;\r\n record.endGasDay = record.endGasDayCycle.gasDay;\r\n */\r\n record.startGasCycleId = gasCycle.id;\r\n });\r\n };\r\n\r\n onRowValidating = (e): void => {\r\n if (!!e.oldData && e.oldData.status === HubStatuses.incomplete && e.brokenRules.length === 0) {\r\n e.oldData.status = HubStatuses.revised;\r\n } else if (!!e.oldData && e.oldData.status === HubStatuses.complete && e.brokenRules.length === 0) {\r\n e.oldData.status = HubStatuses.revised;\r\n } else if (e.brokenRules.length > 0) {\r\n e.oldData.status = HubStatuses.incomplete;\r\n }\r\n };\r\n\r\n isCellEditable = (row, dataField: string): boolean => {\r\n if (this.isDisabled()) {\r\n return false;\r\n } else {\r\n switch (dataField) {\r\n case 'packQuantity':\r\n return (row.data.packOrDraft !== 'Draft');\r\n\r\n case 'draftQuantity':\r\n return (row.data.packOrDraft === 'Draft');\r\n\r\n case 'rank':\r\n return true;\r\n\r\n default:\r\n return false;\r\n }\r\n }\r\n };\r\n\r\n onCellClick(e) {\r\n this.commonImpl.onCellClick(e, this.dataGrid);\r\n }\r\n\r\n onKeyDown(e: any, columnPosition: Array) {\r\n this.commonImpl.onKeyDown(e, this.dataGrid, this.isCellEditable);\r\n }\r\n\r\n undoButtonCellTemplate = (cellElement, cellInfo) => {\r\n // this.commonImpl.undoButtonCellTemplate(cellElement, cellInfo, this.dataGrid);\r\n };\r\n\r\n undoButtonEditCellTemplate = (cellElement, cellInfo) => {\r\n // this.commonImpl.undoButtonCellTemplate(cellElement, cellInfo, this.dataGrid);\r\n };\r\n\r\n hasRowChanged = (r1: IEnergyImbalanceInstruction, r2: IEnergyImbalanceInstruction): boolean => {\r\n const rowChanged = r1.draftQuantity !== r2.draftQuantity ||\r\n r1.packQuantity !== r2.packQuantity ||\r\n r1.rank !== r2.rank;\r\n return rowChanged;\r\n };\r\n\r\n cellTemplate = (cellElement, cellInfo) => {\r\n const $cellElement = cellElement;\r\n if (cellInfo.column.caption === \"Status\" && cellInfo.data.status === 'FailedForDuplicateRank') {\r\n cellElement.style.color = \"red\";\r\n cellElement.innerText = \"Incomplete\";\r\n cellElement.addEventListener('mousemove', () => {\r\n cellElement.setAttribute('title', cellInfo.data.statusMessage);\r\n });\r\n } else {\r\n this.commonImpl.cellTemplate(cellElement, cellInfo, this.dataGrid);\r\n if (cellInfo.column) {\r\n switch (cellInfo.column.caption) {\r\n case 'Pack Qty':\r\n if (cellInfo.data.packOrDraft !== 'Draft' && !this.isDisabled() && this.allowUpdating()) {\r\n $cellElement.addClass(this.editCellStyle);\r\n }\r\n break;\r\n\r\n case 'Draft Qty':\r\n if (cellInfo.data.packOrDraft === 'Draft' && !this.isDisabled() && this.allowUpdating()) {\r\n $cellElement.addClass(this.editCellStyle);\r\n }\r\n break;\r\n\r\n case 'Rank':\r\n if (!this.isDisabled() && this.allowUpdating()) {\r\n $cellElement.addClass(this.editCellStyle);\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n };\r\n\r\n editCellTemplate = (cellElement, cellInfo) => {\r\n this.commonImpl.editCellTemplate(cellElement, cellInfo, this.dataGrid, this.data);\r\n };\r\n\r\n public validatePackQty = e => {\r\n return e.data.packOrDraft === 'Draft' || (e.data.packOrDraft === 'Pack' && !_.isNil(e.value));\r\n };\r\n\r\n public validateDraftQty = e => {\r\n return e.data.packOrDraft === 'Pack' || (e.data.packOrDraft === 'Draft' && !_.isNil(e.value));\r\n };\r\n}\r\n","import * as _ from 'lodash';\r\nimport { EventEmitter, Input, Output, Renderer2, ViewChild, Directive } from \"@angular/core\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {AuthorizableQuantityTask} from \"./authorizable-quantity-task\";\r\nimport {TransportationSummaryModel} from \"./transportation-summary-model\";\r\nimport {DataGridHelpers} from \"@model/datagrid-helpers\";\r\nimport {AuthorizableQuantity} from \"app/shared/services/nomination/nomination-transaction/nomination-transaction.models\";\r\n\r\nexport interface TransportationSummaryGrid {\r\n copy(): void;\r\n resetSortOrder(): void;\r\n}\r\n\r\n@Directive()\r\nexport abstract class BaseTransportationSummaryGrid {\r\n private editCellStyle = \"editable-cell\";\r\n private summaryCellStyle = 'summary-row-background-color';\r\n private innerCellStyle = \"innerCell\";\r\n\r\n @Input() model: TransportationSummaryModel;\r\n @Output() onDataChanged = new EventEmitter();\r\n @ViewChild(DxDataGridComponent) transportationDataGrid: DxDataGridComponent;\r\n\r\n protected constructor(\r\n protected renderer: Renderer2) {\r\n }\r\n\r\n public onRowValidating(e: any): void {\r\n if (!!e.newData && e.brokenRules.length > 0) {\r\n this.model.hasValidationErrors = true;\r\n return;\r\n }\r\n\r\n this.model.hasValidationErrors = false;\r\n }\r\n\r\n public copy(): void {\r\n // For performance tuning, we use BeginUpdate and EndUpdate to prevent the datagrid from\r\n // rendering while we copy the nom qty into the auth qty. For the EndUpdate, we do need\r\n // to wrap it in a setTimeout for it to behave properly.\r\n this.transportationDataGrid.instance.beginUpdate();\r\n\r\n // Seb - The copying is done for all tabs in one go, as the ViewChild\r\n // in the tabs doesn't resolve until the tab is clicked. I assume this is\r\n // because behind the scenes, they have the contents of the unclicked tab\r\n // in an ng*if, which doesn't create the viewchild until it is visible\r\n const copyableQuantities = _.concat(this.model.transportationSearchResults, this.model.nonTransportationSearchResults);\r\n AuthorizableQuantityTask.copyNominatedQuantityToAuthorizedQuantity(copyableQuantities);\r\n\r\n setTimeout(() => {\r\n this.transportationDataGrid.instance.endUpdate();\r\n // This refresh fixes a bug with the column count at the top not refreshing\r\n this.transportationDataGrid.instance.refresh();\r\n this.modelDataChanged();\r\n });\r\n }\r\n\r\n public onSummaryCellPrepared(e): void {\r\n if (e.rowType === \"data\") {\r\n if (e.column.dataField === 'authorizedQuantity') {\r\n this.model.isReadOnlyMode ? this.removeEditableCellStyle(e) : this.addEditableCellStyle(e) ;\r\n\r\n// let tst1 = e.getCellElement();\r\n // let dxEditorInstance = null;\r\n // dxEditorInstance = e.cellElement.editorElement.dxNumberBox('instance');\r\n // const currentValue = dxEditorInstance.option(\"value\")\r\n // dxEditorInstance.on('input', (event) => this.checkForValueChanging(event, e, currentValue));\r\n }\r\n } else if (e.rowType === 'group') {\r\n this.renderer.addClass(e.cellElement, this.summaryCellStyle);\r\n }\r\n }\r\n\r\n checkForValueChanging(inputEvent: any, editorPreparedEvent: any, oldValue: any): void {\r\n const newValue = inputEvent.component.option(\"value\");\r\n if (oldValue !== newValue) this.model.modelDirty = true;\r\n }\r\n\r\n public onDetailsCellPrepared(e): void {\r\n if (e.rowType === \"data\") {\r\n if (e.column.dataField === 'authorizedQuantity') {\r\n if (!this.model.isReadOnlyMode) {\r\n this.renderer.removeClass(e.cellElement, this.innerCellStyle);\r\n this.addEditableCellStyle(e);\r\n } else {\r\n this.renderer.removeClass(e.cellElement, this.editCellStyle);\r\n this.renderer.addClass(e.cellElement, this.innerCellStyle);\r\n }\r\n }\r\n }\r\n }\r\n\r\n editorPrepared = (e: any): void => {\r\n /*if (e.dataField === 'authorizedQuantity') {\r\n let dxEditorInstance = null;\r\n dxEditorInstance = e.editorElement.dxNumberBox('instance');\r\n dxEditorInstance.option('valueChangeEvent', 'input change');\r\n const currentValue = dxEditorInstance.option(\"value\")\r\n dxEditorInstance.on('valueChanged', (event) => this.checkForValueChanging(event, e, currentValue));\r\n }*/\r\n\r\n this.renderer.addClass(e.editorElement, this.editCellStyle);\r\n };\r\n\r\n public editorPreparing(event: any): void {\r\n DataGridHelpers.highlightCellOnFocus(event);\r\n\r\n if (event.parentType !== 'dataRow') { return; }\r\n\r\n // // Disable editing if we are showing detail rows\r\n // event.cancel = !this.isCellEditable(event.row, event.dataField);\r\n // if (this.hasMoreThanOneDetail(event)) {\r\n // event.cancel = true;\r\n // return;\r\n // }\r\n\r\n\r\n\r\n if (event.parentType === 'dataRow') {\r\n\r\n DataGridHelpers.filterOutArrowKeys(event);\r\n\r\n if (event.dataField === 'authorizedQuantity') {\r\n const currentValue = event.editorOptions.value;\r\n event.editorOptions.valueChangeEvent = 'input change';\r\n const nativeHandler = event.editorOptions.onValueChanged;\r\n event.editorOptions.onValueChanged = (e) => {\r\n nativeHandler(e);\r\n this.checkForValueChanging(e, event, currentValue);\r\n };\r\n }\r\n }\r\n\r\n this.tryToDisableEditing(event);\r\n }\r\n\r\n public authQtyMustBeInteger(e): boolean {\r\n return e.value % 1 === 0;\r\n }\r\n\r\n public onRowUpdated(): void {\r\n this.modelDataChanged();\r\n }\r\n\r\n protected addEditableCellStyle(e: any): void {\r\n this.renderer.addClass(e.cellElement, this.editCellStyle);\r\n }\r\n\r\n protected removeEditableCellStyle(e: any): void {\r\n this.renderer.removeClass(e.cellElement, this.editCellStyle);\r\n }\r\n\r\n protected tryToDisableEditing(event: any): void {\r\n if (this.model.isReadOnlyMode) {\r\n event.editorOptions.disabled = true;\r\n event.cancel = true;\r\n return;\r\n }\r\n }\r\n\r\n detailsEditorPreparing = (event: any): void => {\r\n DataGridHelpers.highlightCellOnFocus(event);\r\n this.tryToDisableEditing(event);\r\n };\r\n\r\n validateAuthQtyLessThanOrEqualToNomQtyForSummaries = (e): boolean => {\r\n return this.validateLessThan(e, () => e.validator.option('validationGroup').oldData.nominatedQuantity);\r\n };\r\n\r\n validateAuthQtyGreaterThanOrEqualToScheduledEpsq = (e): boolean => {\r\n // TODO: Pull this into a centralized location\r\n const key = e.validator.option(\"validationGroup.key\");\r\n const grid = this.transportationDataGrid.instance; // Get the grid instance\r\n const rowOptions = grid.getVisibleRows()[grid.getRowIndexByKey(key)];\r\n\r\n const authorizedValue = _.isNil(e.value) ? undefined : +e.value;\r\n const scheduledEpsq = rowOptions.data['scheduledEpsq'];\r\n const isValid = AuthorizableQuantityTask.isAuthorizedValueValidComparedToEpsq(authorizedValue, scheduledEpsq);\r\n\r\n if (isValid) { return true; }\r\n\r\n e.rule.message =\r\n `Authorized Quantity cannot be below EPSQ of ${scheduledEpsq}.`;\r\n return false;\r\n };\r\n\r\n protected validateLessThan(e, delegate): boolean {\r\n const nominatedQuantity = delegate();\r\n if (_.isNil(nominatedQuantity)) { return false; }\r\n return e.value <= nominatedQuantity;\r\n }\r\n\r\n protected onKeyDown(e: any): void {\r\n // Attempt to edit the authorized quantity when tab is pressed\r\n if (!e || e.keyCode !== 9) { return; }\r\n if (this.transportationDataGrid) {\r\n // Focus on the first editable line, i.e. non-group line, in the DataGrid\r\n const datagrid = this.transportationDataGrid.instance;\r\n const rows = datagrid.getVisibleRows();\r\n let rowToEditIndex = 0;\r\n for (const row of rows) {\r\n if (row.rowType === \"data\") {\r\n rowToEditIndex = row.rowIndex;\r\n break;\r\n }\r\n }\r\n datagrid.editCell(rowToEditIndex, 'authorizedQuantity');\r\n datagrid.focus();\r\n }\r\n }\r\n\r\n protected modelDataChanged(): void {\r\n this.onDataChanged.emit();\r\n }\r\n}\r\n","
\r\n
\r\n Number of transportation transactions found: {{model.searchResultsCount}}\r\n Total Nom Qty: {{model.totalNomQty | numberFormat : true}}\r\n Total {{getSQText()}}: {{model.totalTcplQty | numberFormat : true}}\r\n\r\n
0\" class=\"pull-right\">\r\n Export CSV\r\n | \r\n PDF\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n Totals:\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n Path
Rank\r\n
\r\n\r\n
\r\n {{data.value ? 'Y' : 'N'}}\r\n
\r\n \r\n
\r\n","import {from} from 'rxjs';\r\nimport {Component, OnInit, Renderer2} from '@angular/core';\r\nimport {BaseTransportationSummaryGrid} from \"../base-transportation-summary-grid\";\r\nimport {TransportationSummaryCsvBuilderService} from \"app/shared/services/nomination/transportation-summary-csv-builder/transportation-summary-csv-builder.service\";\r\nimport {TransportationSummaryGrid} from \"../transportation-summary-grid\";\r\nimport {UserService} from \"app/shared/services/webapp/user/user-service\";\r\nimport {TransportationSummaryComponent} from \"app/gcts/nomination/transportation-summary/transportation-summary.component\";\r\nimport {SimpleGasDayCycleStatus} from \"@model/simple-gas-day-cycle-status\";\r\n\r\n@Component({\r\n selector: 'app-transportation-summary-grid',\r\n templateUrl: './transportation-summary-grid.component.html',\r\n styleUrls: ['./transportation-summary-grid.component.css']\r\n})\r\nexport class TransportationSummaryGridComponent extends BaseTransportationSummaryGrid implements OnInit, TransportationSummaryGrid {\r\n\r\n resetSortOrder(): void {\r\n if (this.transportationDataGrid) {\r\n this.transportationDataGrid.instance.clearSorting();\r\n this.transportationDataGrid.instance.columnOption('Customer Account', {sortOrder: 'asc', sortIndex: 0});\r\n this.transportationDataGrid.instance.columnOption('Account', {sortOrder: 'asc', sortIndex: 1});\r\n this.transportationDataGrid.instance.columnOption('Receipt Location', {sortOrder: 'asc', sortIndex: 2});\r\n this.transportationDataGrid.instance.columnOption('Delivery Location', {sortOrder: 'asc', sortIndex: 3});\r\n }\r\n }\r\n\r\n saveEditData(): void {\r\n if (this.transportationDataGrid) from(this.transportationDataGrid.instance.saveEditData());\r\n }\r\n\r\n constructor(\r\n private transportationSummaryCsvBuilderService: TransportationSummaryCsvBuilderService,\r\n private transportationSummaryComponent: TransportationSummaryComponent,\r\n private userService: UserService,\r\n renderer: Renderer2) {\r\n super(renderer);\r\n }\r\n\r\n ngOnInit() {\r\n this.model.userIsInternal = !this.userService.user.isExternalUser;\r\n }\r\n\r\n getPdfClicked() {\r\n this.transportationSummaryComponent.pdfReportClicked();\r\n }\r\n\r\n exportCsvClicked = () =>\r\n this.transportationSummaryCsvBuilderService.build(\r\n \"Transportation Summary\",\r\n this.model.transportationSearchResults,\r\n this.model.searchParams.gasDay,\r\n this.model.isSentToMCAForCapacityAllocation,\r\n this.model.userIsInternal,\r\n this.model.gasDayCycleStatus\r\n );\r\n\r\n getSQText() : string {\r\n return SimpleGasDayCycleStatus.getSQText(this.model.gasDayCycleStatus);\r\n }\r\n}\r\n","
\r\n
\r\n Number of non-transportation transactions found: {{model.nonTransportationResultsCount}}\r\n Total Nom Qty: {{model.totalNomQty | numberFormat : true}}\r\n Total {{getSQText()}}: {{model.totalTcplQty | numberFormat : true}}\r\n
0\" class=\"pull-right\">\r\n Export CSV\r\n | \r\n PDF\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n Totals:\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n {{data.value ? 'Y' : 'N'}}\r\n
\r\n \r\n
\r\n","\r\nimport {from, Observable} from 'rxjs';\r\nimport {Component, OnInit, Renderer2} from \"@angular/core\";\r\nimport {BaseTransportationSummaryGrid} from \"../base-transportation-summary-grid\";\r\nimport {TransportationSummaryGrid} from \"app/gcts/nomination/transportation-summary/transportation-summary-grid\";\r\nimport {NonTransportationSummaryCsvBuilderService} from \"app/shared/services/nomination/transportation-summary-csv-builder/non-transportation-summary-csv-builder.service\";\r\nimport {UserService} from \"app/shared/services/webapp/user/user-service\";\r\nimport {TransportationSummaryComponent} from \"app/gcts/nomination/transportation-summary/transportation-summary.component\";\r\nimport {SimpleGasDayCycleStatus} from \"@model/simple-gas-day-cycle-status\";\r\n\r\n\r\n@Component({\r\n selector: 'app-non-transportation-summary-grid',\r\n templateUrl: './non-transportation-summary-grid.component.html',\r\n styleUrls: ['./non-transportation-summary-grid.component.css']\r\n})\r\n\r\nexport class NonTransportationSummaryGridComponent extends BaseTransportationSummaryGrid implements OnInit, TransportationSummaryGrid {\r\n saveEditData(): void {\r\n if (this.transportationDataGrid) from(this.transportationDataGrid.instance.saveEditData());\r\n }\r\n\r\n resetSortOrder(): void {\r\n if (this.transportationDataGrid) {\r\n this.transportationDataGrid.instance.clearSorting();\r\n this.transportationDataGrid.instance.columnOption('From Account', {sortOrder: 'asc', sortIndex: 0});\r\n this.transportationDataGrid.instance.columnOption('To Account', {sortOrder: 'asc', sortIndex: 1});\r\n this.transportationDataGrid.instance.columnOption('Location', {sortOrder: 'asc', sortIndex: 2});\r\n }\r\n }\r\n\r\n constructor(\r\n private nonTransportationSummaryCsvBuilderService: NonTransportationSummaryCsvBuilderService,\r\n private transportationSummaryComponent: TransportationSummaryComponent,\r\n private userService: UserService,\r\n renderer: Renderer2) {\r\n super(renderer);\r\n }\r\n\r\n ngOnInit() {\r\n this.model.userIsInternal = !this.userService.user.isExternalUser;\r\n }\r\n\r\n exportCsvClicked = () => {\r\n this.nonTransportationSummaryCsvBuilderService.build(\r\n \"Non-Transportation Summary\",\r\n this.model.nonTransportationSearchResults,\r\n this.model.searchParams.gasDay,\r\n this.model.isSentToMCAForCapacityAllocation,\r\n this.model.userIsInternal,\r\n this.model.gasDayCycleStatus\r\n );\r\n };\r\n\r\n getPdfClicked() {\r\n this.transportationSummaryComponent.pdfReportClicked();\r\n }\r\n\r\n getSQText() : string {\r\n return SimpleGasDayCycleStatus.getSQText(this.model.gasDayCycleStatus);\r\n }\r\n}\r\n","
\r\n\r\n
\r\n \r\n {{ showTitleTransferMismatches ? '-' : '+' }} Counterparty Mismatches\r\n \r\n
\r\n\r\n
\r\n \r\n\r\n \r\n \r\n\r\n \r\n\r\n \r\n
\r\n \r\n
\r\n {{ row.data.numberOfMismatchedBuys }}\r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n {{ row.data.numberOfMismatchedSells }}\r\n
\r\n
\r\n\r\n \r\n
\r\n\r\n
\r\n","import {Component, Input} from \"@angular/core\";\r\nimport {INominationRequestsModel} from \"@shared/services/nomination/nomination-request/nomination-request.interface\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\n\r\n@Component({\r\n selector: 'app-title-transfer-mismatches',\r\n templateUrl: './title-transfer-mismatches.component.html',\r\n styleUrls: ['./title-transfer-mismatches.component.css']\r\n})\r\n\r\nexport class TitleTransferMismatchesComponent {\r\n @Input() data: INominationRequestsModel;\r\n @Input() height: number;\r\n\r\n public showTitleTransferMismatches: boolean = true;\r\n\r\n constructor(private sessionService: SessionService) { }\r\n\r\n public toggleTitleTransferMismatchesClicked(): void {\r\n this.showTitleTransferMismatches = !this.showTitleTransferMismatches;\r\n }\r\n\r\n getPipelineCode(): string {\r\n return this.sessionService.getPipeline().code;\r\n }\r\n\r\n}\r\n","import {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {ImbalanceTradeRequest} from \"@model/models/imbalance-trade-request\";\r\nimport {IImbalanceTradeRequestsModel} from \"@shared/services/nomination/ImbalanceTradeRequests/imbalance-trade-requests.interface\";\r\nimport {NominationGroup} from \"@shared/services/nomination/nomination-nom-group/nomination-nom-group.service\";\r\nimport * as _ from \"lodash\";\r\nimport {HubStatuses} from \"app/gcts/nomination/nomination-requests/nomination-requests.model\";\r\n\r\nexport interface IImbalanceTradeRequestComponent {\r\n dataGrid: DxDataGridComponent;\r\n canDisableSubmitButton: boolean;\r\n clearGridEdits: () => void;\r\n filter(): void;\r\n selectSavedRequests(requestsToSelect: any): void;\r\n deselectNewDuplicateKeyRequests(requestsToSelect: any): void;\r\n deselectExpiredKeyRequests(requestsToDeselect: any): void;\r\n removeIncompleteRows(): void;\r\n isDisabled(): boolean;\r\n getNomGroupIdFor(nominationGroupId) : NominationGroup;\r\n applyStatusColumnTemplate(cellElement: HTMLElement, cellInfo): void\r\n}\r\n\r\nexport abstract class ImbalanceTradeRequestComponentBase implements IImbalanceTradeRequestComponent {\r\n abstract dataGrid: DxDataGridComponent;\r\n abstract canDisableSubmitButton: boolean;\r\n abstract clearGridEdits: () => void;\r\n abstract data: IImbalanceTradeRequestsModel;\r\n\r\n abstract filter(): void;\r\n abstract selectSavedRequests(requestsToSelect: any): void;\r\n abstract deselectNewDuplicateKeyRequests(requestsToSelect: any): void;\r\n abstract deselectExpiredKeyRequests(requestsToDeselect: any): void;\r\n abstract removeIncompleteRows(): void;\r\n abstract isViewOnly(): boolean;\r\n\r\n public getNomGroupIdFor(nominationGroupId) : NominationGroup{\r\n return _.find(this.data.counterPartyNomGroups, x => x.id === nominationGroupId);\r\n }\r\n\r\n public applyStatusColumnTemplate(cellElement: HTMLElement, cellInfo): void{\r\n cellElement.style.textAlign = \"center\";\r\n if (cellInfo.data.statusCode === HubStatuses.mismatched) {\r\n cellElement.style.backgroundColor = \"yellow\";\r\n }\r\n\r\n if (cellInfo.data.statusCode === HubStatuses.failed) {\r\n cellElement.style.backgroundColor = \"red\";\r\n }\r\n\r\n if (!_.isNil(cellInfo.data.message) && cellInfo.data.message.length > 0) {\r\n cellElement.addEventListener('mousemove', () => {\r\n cellElement.setAttribute('title', cellInfo.data.message);\r\n });\r\n }\r\n }\r\n\r\n isDisabled(): boolean {\r\n return false;\r\n }\r\n}\r\n\r\nexport interface IImbalanceTradeRequestQueryResult {\r\n queryDateTime: Date;\r\n requests: ImbalanceTradeRequest[];\r\n}\r\n","import * as dx from \"devextreme/core/renderer\";\r\nimport {EventEmitter} from '@angular/core';\r\nimport * as _ from 'lodash';\r\nimport {GasDay} from \"@model/gas-day\";\r\nimport {DxDataGridComponent} from \"devextreme-angular\";\r\nimport {TransactionTypes} from \"@shared/services/nomination/nomination-request/nomination-request.service\";\r\nimport {DataGridHelpers} from \"@model/datagrid-helpers\";\r\nimport {\r\n IUndoRecord\r\n} from '@shared/services/nomination/nomination-request/nomination-request.interface';\r\nimport {BaseDatagridHandler} from \"@model/base-datagrid-handlers\";\r\nimport {NominationGroup} from \"@shared/services/nomination/nomination-nom-group/nomination-nom-group.service\";\r\n\r\nimport {IDateDisplayFormat} from \"@shared/interfaces/date-display-format\";\r\nimport {IImbalanceTradeRequestsModel} from \"@shared/services/nomination/ImbalanceTradeRequests/imbalance-trade-requests.interface\";\r\nimport {ImbalanceTradeRequestsComponent} from \"app/gcts/nomination/imbalance-trade-requests/imbalance-trade-requests.component\";\r\nimport {ImbalanceTradeRequest} from \"@model/models/imbalance-trade-request\";\r\nimport {HubStatuses} from \"app/gcts/nomination/nomination-requests/nomination-requests.model\";\r\nimport {ImbalanceTradeRequestsLogic} from \"app/gcts/nomination/imbalance-trade-requests/imbalance-trade-requests-logic\";\r\nimport CheckBox from 'devextreme/ui/check_box';\r\nimport {ImbalanceTradeRequestsModel} from \"app/gcts/nomination/imbalance-trade-requests/imbalance-trade-requests-model\";\r\n\r\nexport class UndoRowArgs {\r\n constructor(public key: number, public undos: Array) {\r\n }\r\n}\r\n\r\nexport class CommonImbalanceTradeService extends BaseDatagridHandler {\r\n private static nextNewRowKey = -1;\r\n public dateEditorFormat: IDateDisplayFormat;\r\n private rowWasEdited = false;\r\n private readonly columnAlignmentMap = null;\r\n\r\n constructor(\r\n protected undoRow: EventEmitter,\r\n protected selectionChanged: EventEmitter,\r\n protected hasRowChanged: (r1: any, r2: any) => boolean,\r\n protected isCellEditable: (row, dataField: string) => boolean\r\n ) {\r\n\r\n super(undoRow);\r\n\r\n this.dateEditorFormat = {\r\n formatter: this.dateEditorFormatter,\r\n parser: this.dateEditorParser\r\n };\r\n\r\n this.columnAlignmentMap = {\r\n statusCode: 'center',\r\n creditNominationGroupId: 'left',\r\n debitNominationGroupId: 'left',\r\n debitLocationId: 'left',\r\n creditLocationId: 'left',\r\n debitLocationName: 'left',\r\n creditLocationName: 'left',\r\n status: 'center',\r\n locationName: 'left',\r\n energy: 'right',\r\n };\r\n }\r\n\r\n onNgAfterViewInit = (undos: Array) => {\r\n this.undos = undos;\r\n };\r\n\r\n clearGridEdits = (dataGrid: DxDataGridComponent) => {\r\n // Clear undo history.\r\n this.rowWasEdited = false;\r\n // Clear any previously selected checkboxes.\r\n dataGrid.instance.clearSelection();\r\n // clear oldData <--event data does not get cleared with the item above.\r\n dataGrid.instance.cancelEditData();\r\n this.rowWasEdited = false;\r\n };\r\n\r\n cellTemplate = (cellElement, cellInfo, dataGrid: DxDataGridComponent) => {\r\n this.cellTemplateCommon(cellElement, cellInfo);\r\n\r\n this.displayCellTemplateDefault(cellElement, cellInfo, dataGrid, false);\r\n\r\n this.customDisplayFormattingForColumns(cellElement, cellInfo);\r\n };\r\n\r\n editCellTemplate = (cellElement, cellInfo, dataGrid: DxDataGridComponent, model: IImbalanceTradeRequestsModel) => {\r\n const $cellElement = dx(cellElement);\r\n this.cellTemplateCommon(cellElement, cellInfo);\r\n if (model.disableNomReqEntries || $cellElement.attr('isreadonly') === 'TRUE') {\r\n let container: any;\r\n // This keeps text in a read-only cell from jogging to the left by a pixel.\r\n container = document.createElement('span');\r\n container.style.padding = '1px';\r\n $cellElement.append(container);\r\n this.displayCellTemplateDefault(container, cellInfo, dataGrid, true);\r\n } else {\r\n // This derives from the code from the data grid that creates the default template for\r\n // the cell. See ui.data_grid.editing.js, line 70.\r\n const $editor = dx(document.createElement('div'));\r\n $cellElement.append($editor);\r\n cellInfo.component._controllers.editing.getController('editorFactory').createEditor($editor, Object.assign({}, cellInfo.column, {\r\n value: cellInfo.value,\r\n setValue: cellInfo.setValue,\r\n row: cellInfo.row,\r\n parentType: 'dataRow',\r\n width: null,\r\n readOnly: !cellInfo.setValue,\r\n id: cellInfo.id\r\n }));\r\n }\r\n };\r\n\r\n cellTemplateCommon = (cellElement: HTMLElement, cellInfo) => {\r\n const $cellElement = dx(cellElement);\r\n\r\n // Set an attribute for read-only columns so they can\r\n // be targeted by the CSS.\r\n const isReadOnly = !cellInfo.column.allowEditing || !this.isCellEditable(cellInfo.row, cellInfo.column.dataField);\r\n $cellElement.attr('isreadonly', isReadOnly ? 'TRUE' : 'FALSE');\r\n\r\n // Set an attribute to indicate if this is the current row so it\r\n // can be targeted by the CSS.\r\n const rowKey = cellInfo.key;\r\n $cellElement.attr('iscurrentrow', rowKey === this.currentRowKey ? 'TRUE' : 'FALSE');\r\n $cellElement.parent().attr('iscurrentrow', rowKey === this.currentRowKey ? 'TRUE' : 'FALSE');\r\n\r\n // If this is the status column, set an attribute to indicate what the status of the row is.\r\n if (cellInfo.column.caption === \"Status\") {\r\n $cellElement.attr('status', cellInfo.value);\r\n }\r\n\r\n if (cellInfo.column.caption === \"Status\" && cellInfo.value === \"Passed\" && cellInfo.row.data.statusMessage.length > 0) {\r\n $cellElement.attr('amended', 'TRUE');\r\n }\r\n\r\n const alignment = this.columnAlignmentMap[cellInfo.column.dataField];\r\n cellElement.style.textAlign = alignment;\r\n if (alignment === 'right') {\r\n cellElement.style.paddingRight = '7px';\r\n }\r\n };\r\n\r\n displayCellTemplateDefault = (cellElement, cellInfo, dataGrid: DxDataGridComponent, inEditCellTemplate: boolean) => {\r\n const isDataTextEmpty = !cellInfo.text && cellInfo.rowType === \"data\";\r\n const text = isDataTextEmpty ? \" \" : cellInfo.text;\r\n if (cellInfo.column.encodeHtml && !isDataTextEmpty) {\r\n cellElement.textContent = text;\r\n } else {\r\n cellElement.innerHTML = text;\r\n }\r\n if (inEditCellTemplate) {\r\n this.applyInternetExplorerFocusCellHack(cellElement, cellInfo, dataGrid);\r\n }\r\n };\r\n\r\n isInternetExplorer = (): boolean => {\r\n return window.navigator.userAgent.indexOf(\"MSIE \") > 0 || !!window.navigator.userAgent.match(/Trident.*rv\\:11\\./);\r\n };\r\n applyInternetExplorerFocusCellHack = (container, cellInfo, dataGrid: DxDataGridComponent) => {\r\n if (!!dataGrid && this.isInternetExplorer()) {\r\n // Hack for an IE bug. If we're setting the template for a cell in edit mode,\r\n // the focus rectangle is display at about 60% of the height that it should be.\r\n // We work around this by explicitly setting the height of the cell.\r\n const currentCell = this.getCurrentCell(dataGrid);\r\n if (cellInfo.rowIndex === currentCell.rowIndex && cellInfo.columnIndex === currentCell.columnIndex) {\r\n const $rowEl = dx((dataGrid.instance.getRowElement(cellInfo.rowIndex) as Array)[0]);\r\n const $container = dx(container);\r\n $container.css('height', $rowEl.height());\r\n $container.css('display', 'inline-block');\r\n }\r\n }\r\n };\r\n\r\n editorPreparing = (e: any, data: IImbalanceTradeRequestsModel, dataGrid: DxDataGridComponent): void => {\r\n const that = this;\r\n super.onEditorPreparing(e, dataGrid, this.isCellEditable);\r\n\r\n if (!!e.dataField && e.parentType === \"dataRow\") {\r\n e.editorOptions.onFocusIn = function(args) {\r\n const input = args.element.querySelector(\"input\");\r\n\r\n // ie 11 workaround\r\n const selectEvent = document.createEvent(\"Event\");\r\n selectEvent.initEvent(\"select\", false, true);\r\n input.dispatchEvent(selectEvent);\r\n input.style.textAlign = that.columnAlignmentMap[e.dataField];\r\n };\r\n\r\n // Adjust column editor pop-up (dxo-lookup) widths\r\n if (data.columnEditorPopupWidths.has(e.dataField)) {\r\n e.editorOptions.onOpened = function (arg) {\r\n const popupInstance = arg.component._popup;\r\n const width = data.columnEditorPopupWidths.get(e.dataField);\r\n popupInstance.option('width', width);\r\n popupInstance.off(\"optionChanged\", (args) => that.optionChangedHandler(args, width));\r\n popupInstance.on(\"optionChanged\", (args) => that.optionChangedHandler(args, width));\r\n };\r\n }\r\n }\r\n };\r\n\r\n optionChangedHandler = (args: any, width: number) => {\r\n // It is odd that this handler is required. I have seen the drop-down re-size on it's own (e.g. try scrolling when the drop down is open).\r\n // Moreover, their support group also has this handler in their post.\r\n // https://www.devexpress.com/Support/Center/Question/Details/T484722/datagrid-how-to-set-the-drop-down-width-in-a-lookup-column\r\n if (args.name === \"width\" && args.value < width) {\r\n args.component.option(\"width\", width);\r\n }\r\n };\r\n\r\n validateGasDay = (e, model: IImbalanceTradeRequestsModel): boolean => {\r\n if (!e.newData.gasDay) {\r\n return true;\r\n }\r\n const { max, min } = ImbalanceTradeRequestsLogic.getStartGasDayDateMinAndMax(e.oldData, model);\r\n const gasDay = GasDay.from(e.newData.startGasDayDate);\r\n\r\n return gasDay.isInRangeOf(GasDay.from(min), GasDay.from(max));\r\n };\r\n\r\n\r\n onCellValidating = (e, model: IImbalanceTradeRequestsModel): void => {\r\n if (this.rowInitialized(e) && e.isValid) {\r\n e.isValid = this.validateGasDay(e, model);\r\n }\r\n\r\n if (!e.isValid) {\r\n return;\r\n }\r\n\r\n if(!model.newRowAdded && !_.isEmpty(e.newData.energy)) {\r\n model.isEditingRowValid = true;\r\n }\r\n\r\n if (!!e.newData && e.newData.statusCode === HubStatuses.incomplete && e.brokenRules.length === 0) {\r\n e.newData.statusCode = HubStatuses.new;\r\n model.isEditingRowValid = true;\r\n model.isEditingRowValid = true;\r\n } else if (!!e.oldData && e.oldData.statusCode === HubStatuses.incomplete && e.brokenRules.length === 0) {\r\n e.oldData.statusCode = HubStatuses.new;\r\n model.isEditingRowValid = true;\r\n } else if (!!e.oldData && e.oldData.statusCode === HubStatuses.new && e.brokenRules.length > 0) {\r\n e.oldData.statusCode = HubStatuses.incomplete;\r\n model.isEditingRowValid = false;\r\n }\r\n };\r\n\r\n onRowInserting = (e, data: IImbalanceTradeRequestsModel, dataGrid: DxDataGridComponent): void => {\r\n // Do Nothing. However, if there is any common logic on Row Insert, please put here.\r\n };\r\n\r\n onSelectionChanged = (e, data: IImbalanceTradeRequestsModel) => {\r\n\r\n // no need to continue if there are no row currently selected\r\n if (_.isEmpty(e.currentSelectedRowKeys)) return;\r\n\r\n const currentSelectedRowData = _.find(e.selectedRowsData, {key: e.currentSelectedRowKeys[0]});\r\n\r\n // if there's nothing allowed to be selected deselect\r\n if(_.isNil(data.selectableRequests)\r\n || data.selectableRequests.length === 0 // there aren't any requests allowed to be selected.\r\n || _.isNil(currentSelectedRowData // should never happen\r\n || e.currentSelectedRowKeys === -1) // this means its a new row\r\n || !_.some(data.selectableRequests, {id: currentSelectedRowData.id})) // Can't find the request in the allowable requests list\r\n {\r\n e.component.deselectRows(e.currentSelectedRowKeys);\r\n return;\r\n }\r\n\r\n this.selectionChanged.emit(e);\r\n };\r\n\r\n onCellPrepared = (e, data: IImbalanceTradeRequestsModel, dataGrid: DxDataGridComponent): void => {\r\n\r\n if (e.rowType === 'data' || e.rowType === 'header') {\r\n if (e.column.name === 'spacer') {\r\n e.cellElement.style.backgroundColor = \"#f5f5f5\";\r\n e.cellElement.style.borderBottomStyle = 'hidden';\r\n e.cellElement.style.borderTopStyle = 'hidden';\r\n }\r\n }\r\n\r\n // turn off the select box for rows that aren't allowed\r\n if(e.column.command === 'select' && e.rowType === 'data'){\r\n\r\n if(data.selectableRequestIds.indexOf(e.data.id) === -1) {\r\n const instance = CheckBox.getInstance(e.cellElement.querySelector('.dx-select-checkbox'));\r\n\r\n if(!_.isNil(instance)) {\r\n instance.option(\"disabled\", true);\r\n instance.option(\"visible\", false);\r\n }\r\n }\r\n }\r\n\r\n if (e.rowType === 'data') {\r\n if(!data.newRowAdded && !data.isEditing) return; // don't allow selection if we're not editing\r\n if(e.row.key !== data.editRowKey) return; // this should stop them from selecting another row\r\n\r\n const cellElement = dx(e.cellElement),\r\n numberEditorElement = cellElement.find('.dx-numberbox'),\r\n numberBox = numberEditorElement.data('dxNumberBox');\r\n\r\n // Nom Qty\r\n if (e.column.dataField === data.imbalanceTradeRequestFields.energy && numberBox) {\r\n numberBox.on('keyDown', (x) => {\r\n this.filterOutNonIntegerKeys(x);\r\n });\r\n }\r\n }\r\n };\r\n\r\n onCounterPartyEnergyDisplay(rowData){\r\n if(_.isNil(rowData.counterPartyEnergy)) return \"\";\r\n if(rowData.counterPartyEnergy === 0 && rowData.statusCode !== 'Matched' && !rowData.counterPartySubmittedBy) return \"\";\r\n\r\n return rowData.counterPartyEnergy;\r\n }\r\n\r\n onEnergyDisplay(rowData) {\r\n if (_.isNil(rowData.energy)) return \"\";\r\n if (rowData.energy === 0 && rowData.statusCode !== 'Matched' && !rowData.submittedByUserFullName) return \"\";\r\n\r\n return rowData.energy;\r\n }\r\n\r\n onGasDayDisplay(rowData){\r\n if(!_.isNil(rowData.gasDay)) {\r\n const gasDay = GasDay.from(rowData.gasDay);\r\n return gasDay.toDisplayFormatAll();\r\n }\r\n }\r\n\r\n onCounterPartyGasDayDisplay(rowData){\r\n if(!_.isNil(rowData.counterPartyGasDay)) {\r\n const gasDay = GasDay.from(rowData.counterPartyGasDay);\r\n return gasDay.toDisplayFormatAll();\r\n }\r\n }\r\n\r\n public onCellHoverChanged = (e): void => {\r\n if(e.rowType !== \"data\") return;\r\n if(e.displayValue !== null) e.cellElement.title = e.displayValue;\r\n };\r\n\r\n public hasUndoRecord(rowData: any): boolean {\r\n // Instead of checking if an undo record exists, we will toggle the undo button based\r\n // on whether or not it has an id or if it has a status code of 'Revised'.\r\n if (!rowData.data.id || rowData.data.statusCode === 'Revised') {\r\n return true;\r\n }\r\n\r\n // Instead of checking if an undo record exists, we will toggle the undo button based\r\n // on the status code of the record. Passed means there are no modifications to the\r\n // record.\r\n if (rowData.data.statusCode === 'Passed') {\r\n return false;\r\n }\r\n\r\n // Only check the undo objs for failed and saved records, because whenever quantities\r\n // are modified, their status does not change to 'Revised'.\r\n const undoObjs = _.filter(this.undos, x => x.key === rowData.key);\r\n return undoObjs.length > 0 && this.hasRowChanged(undoObjs[0].data, rowData.data);\r\n }\r\n\r\n public undoRowEdit(dataGrid: DxDataGridComponent, rowData: any): void {\r\n // There are 2 states for a new row\r\n // (1) the user is in the middle of setting the values for a new row. This means the row hasn't been added\r\n // to the datagrid datasource yet (this is where the isNewRow property will be found)\r\n // (2) the user has entered all the required values for the new row and the row lost focus at least once. This\r\n // means the row has been added to the datagrid data source (this is where the key will be less than zero)\r\n const isEditingNewRow = rowData.row.hasOwnProperty('isNewRow') && rowData.row['isNewRow'];\r\n const isNewRowAddedToDataGrid = rowData.key < 0;\r\n\r\n if (isEditingNewRow || isNewRowAddedToDataGrid) {\r\n // New, unsaved record; just get rid of it.\r\n dataGrid.editing.texts.confirmDeleteMessage = ''; // Turns off the confirmation message.\r\n\r\n // Using cancelEditData() instead of deleteRow() because of the changes made to the dxDataGrid by DevExpress\r\n // Reference: https://www.devexpress.com/Support/Center/Question/Details/T758752/datagrid-the-deleterow-method-does-nothing-if-the-widget-is-in-edit-mode\r\n dataGrid.instance.cancelEditData();\r\n\r\n if (isNewRowAddedToDataGrid) {\r\n dataGrid.instance.deleteRow(rowData.rowIndex); // new row was added to the datagrid's data source, so we will need to remove it\r\n }\r\n } else {\r\n const undoObj = _.find(this.undos, item => item.key === rowData.key);\r\n if (undoObj) {\r\n // Handle this in the parent component.\r\n this.undoRow.emit(new UndoRowArgs(rowData.key, this.undos));\r\n rowData.component.deselectRows([rowData.key]);\r\n }\r\n }\r\n }\r\n\r\n editorPrepared = (e: any, data: IImbalanceTradeRequestsModel): void => {\r\n if (e.parentType === 'dataRow') {\r\n let dxEditorInstance = null;\r\n\r\n switch (e.dataField) {\r\n case data.imbalanceTradeRequestFields.creditLocationId:\r\n break;\r\n case data.imbalanceTradeRequestFields.debitNominationGroupId:\r\n break;\r\n case data.imbalanceTradeRequestFields.energy:\r\n dxEditorInstance = dx(e.editorElement).dxNumberBox('instance');\r\n break;\r\n }\r\n\r\n if (dxEditorInstance) {\r\n dxEditorInstance.option('valueChangeEvent', 'keydown keyup');\r\n dxEditorInstance.on('valueChanged', (vce) => {\r\n e.setValue(vce.value);\r\n e.component.getController('validating').validate().then((result: boolean) => {\r\n data.isEditingRowValid = result;\r\n });\r\n });\r\n }\r\n }\r\n };\r\n\r\n onCellUpdating = async (event, data: IImbalanceTradeRequestsModel, dataGrid: DxDataGridComponent, isReceiptHub: boolean, performCellUpdate = true): Promise => {\r\n ImbalanceTradeRequestsComponent.createUndoRecord(event.key, event.oldData, this.undos);\r\n\r\n await event.component.selectRows([event.key], true);\r\n\r\n const store = dataGrid.instance.getDataSource().store();\r\n const record = await store.byKey(event.key);\r\n // We use store.update rather than modify the record itself so that the code that\r\n // keeps the transport records in the three hubs synchronized will run.\r\n\r\n // On edit, a passed row becomes a template for a new row.\r\n const updateObj: any = { };\r\n\r\n // Both rowInserted and rowUpdated call this function, but we only need to perform the cell custom update on the later.\r\n if (performCellUpdate) {\r\n this.customOnCellUpdated(event, data, updateObj, record);\r\n }\r\n if (Object.keys(updateObj).length > 0) {\r\n await store.update(event.key, updateObj);\r\n }\r\n\r\n return;\r\n };\r\n\r\n public filterOutNonIntegerKeys = (e) => {\r\n DataGridHelpers.filterOutNonIntegerKeys(e);\r\n };\r\n\r\n addRecord(dataGrid, data: IImbalanceTradeRequestsModel): void {\r\n if(data.isEditing || data.newRowAdded) return; // this means we're already editing and shouldn't start again\r\n\r\n data.newRowAdded = true;\r\n data.isEditing = true;\r\n data.isEditingRowValid = false;\r\n\r\n dataGrid.instance.addRow();\r\n }\r\n\r\n onInitNewRow = (e: any, data: IImbalanceTradeRequestsModel, dataGrid: DxDataGridComponent) => {\r\n const previousRowIndex = this.getPreviousRowIndex(dataGrid);\r\n this.currentRowKey = CommonImbalanceTradeService.nextNewRowKey--;\r\n\r\n const gasDay = data.searchParams.gasDay;\r\n\r\n const currentRowData = e.data;\r\n currentRowData['key'] = this.currentRowKey;\r\n currentRowData.statusCode = HubStatuses.incomplete;\r\n currentRowData.enterpriseId = data.lastSearchParams.customerId;\r\n\r\n currentRowData.isEditingRowValid = false;\r\n currentRowData.isEditing = true;\r\n data.isEditing = true;\r\n\r\n // Gas Day field\r\n currentRowData.gasDay = gasDay.toDate;\r\n\r\n // Force immediate validation. This is to smooth out a grid bug where sometimes validation is called immediately\r\n // and sometimes it isn't. Obviously, validation shouldn't happen right away, but the users want to see the\r\n // red borders so it's obvious what has to be filled in.\r\n dataGrid.instance.closeEditCell();\r\n\r\n // Unpaint the previously focused row.\r\n window.setTimeout(() => {\r\n dataGrid.instance.repaintRows([previousRowIndex + 1]); // + 1 because the new row shifted the old one down.\r\n });\r\n };\r\n\r\n canAddNewRow = (dataGrid: DxDataGridComponent, data: IImbalanceTradeRequestsModel): boolean => {\r\n if(this.isDisabled(dataGrid)) return false;\r\n if(!data.previousGasDayCycleStatuses.isGasDayAllocated()) return false;\r\n return data.isUserRoleModifyAllowed();\r\n };\r\n\r\n // Add functionality is disabled while we're currently editing a new row.\r\n isDisabled = (dataGrid: DxDataGridComponent): boolean => {\r\n return false;\r\n };\r\n\r\n isDeleteDisabled = (dataGrid: DxDataGridComponent): boolean => {\r\n return false;\r\n };\r\n\r\n isViewOnly = (data: IImbalanceTradeRequestsModel): boolean => {\r\n return false;\r\n if (!data) return true;\r\n\r\n return data.isReadOnlyMode;\r\n };\r\n\r\n removeIncompleteRows(dataGrid: DxDataGridComponent) {\r\n if (!!(dataGrid.instance)) {\r\n if (!!(dataGrid.instance.getVisibleRows().find(req => (req.data as ImbalanceTradeRequest).statusCode === HubStatuses.incomplete))) {\r\n dataGrid.editing.texts.confirmDeleteMessage = '';\r\n dataGrid.instance.deleteRow(0);\r\n }\r\n }\r\n }\r\n\r\n dateEditorFormatter = (dateTime: Date): string => {\r\n return GasDay.from(dateTime).toDisplayDateTimeFormat();\r\n };\r\n\r\n dateEditorParser = (value: string): Date => {\r\n try {\r\n return GasDay.parse(value, true).toDate;\r\n } catch (e) {\r\n return new Date(NaN);\r\n }\r\n };\r\n\r\n describeNumberOfRecords(data: ImbalanceTradeRequest[], dataGrid: DxDataGridComponent): string {\r\n\r\n if (!!data) {\r\n const lengthOfRealRecords = data.length;\r\n\r\n const lengthOfVisibleRecords = (dataGrid == null || dataGrid.instance == null || !dataGrid.instance.hasOwnProperty('getVisibleRows')) ?\r\n lengthOfRealRecords :\r\n _.filter(dataGrid.instance.getVisibleRows(), x => (x.data as ImbalanceTradeRequest).statusCode !== HubStatuses.incomplete).length;\r\n if (lengthOfRealRecords === lengthOfVisibleRecords) {\r\n return lengthOfRealRecords.toString();\r\n }\r\n return lengthOfVisibleRecords + ' of ' + lengthOfRealRecords;\r\n }\r\n\r\n return '';\r\n }\r\n\r\n public getDataForSort = (rowData) => {\r\n // If there is an undo object, sort by the original value.\r\n // This way the row won't move around during an edit.\r\n const undoObjs = this.undos.filter(item => item.key === rowData.key);\r\n if (undoObjs.length > 0) {\r\n return undoObjs[0].data;\r\n } else {\r\n return rowData;\r\n }\r\n };\r\n\r\n public updateSelectedRows = (dataGrid: DxDataGridComponent, keysToAdd: Array, keysToRemove: Array) => {\r\n dataGrid.instance.selectRows(keysToAdd, true);\r\n dataGrid.instance.deselectRows(keysToRemove);\r\n };\r\n\r\n /**\r\n * Afer upgrading DevExtreme to the latest version, whenever a datagrid row is repainted, we would lose focus on particular items\r\n * such as the drop down box when the user selected an item. Attempted to remove the repaint datagrid row because it seems like a\r\n * poor design to have to repaint the row but ran into a lot of issues (mainly due to how we've implemented the datagrid).\r\n *\r\n * Finally, came across this solution which will focus the cell based on the rowIndex and columnIndex. We need to use a timeout because\r\n * the code that is performing the repaint of the datagrid row is also wrapped in a timeout. In my opinion, we shouldn't really need to\r\n * use the TimeOut. The Nomination Request page should really be refactored due to it's sheer complexity, some unnecessary code, and pieced\r\n * meal code.\r\n */\r\n public delayFocusCellElement(rowIndex: number, columnIndex: number, dataGrid: DxDataGridComponent): void {\r\n setTimeout(() => {\r\n this.focusCellElement(rowIndex, columnIndex, dataGrid);\r\n });\r\n }\r\n\r\n public focusCellElement(rowIndex: number, columnIndex: number, dataGrid: DxDataGridComponent): void {\r\n const focusCellElement = dataGrid.instance.getCellElement(rowIndex, columnIndex);\r\n dataGrid.instance.focus(focusCellElement);\r\n }\r\n\r\n public isImbalanceTradeRequestCellEditable(row, dataField: string, data: IImbalanceTradeRequestsModel): boolean {\r\n switch(dataField){\r\n case 'energy':\r\n case 'debitNominationGroupId':\r\n case 'creditNominationGroupId':\r\n case 'debitLocationId':\r\n case 'creditLocationId':\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n private customDisplayFormattingForColumns(cellElement: HTMLElement, cellInfo: any) {\r\n\r\n }\r\n\r\n private customOnCellUpdated(event: any, data: IImbalanceTradeRequestsModel, updateObj: any, existingRecord: any) {\r\n\r\n }\r\n\r\n rowInitialized = (e): boolean => (e.newData && e.newData.gasDay && e.oldData && e.oldData.gasDay);\r\n\r\n\r\n\r\n // todo: this is for editing\r\n public prepareLocation(e, selectBox, data: IImbalanceTradeRequestsModel, dataGrid: DxDataGridComponent) {\r\n if (selectBox) {\r\n selectBox.option({\r\n dataSource: {\r\n store: data.locations,\r\n paginate: true,\r\n pageSize: 10,\r\n sort: { getter: \"name\", desc: false }\r\n }\r\n });\r\n }\r\n }\r\n\r\n public prepareNominationGroup(e, selectBox, dataGrid: DxDataGridComponent, data: IImbalanceTradeRequestsModel) {\r\n if (selectBox) {\r\n selectBox.option({\r\n dataSource: {\r\n store: data.counterPartyNomGroups,\r\n paginate: true,\r\n pageSize: 10\r\n }\r\n });\r\n }\r\n }\r\n\r\n editClicked(cellInfo: any, data: IImbalanceTradeRequestsModel, dataGrid) {\r\n data.clearMessages();\r\n\r\n if(data.isEditing || data.newRowAdded) return; // this means we're already editing and shouldn't start again\r\n\r\n data.isEditingRowValid = true;\r\n data.isEditing = true;\r\n data.editRowKey = cellInfo.data.id;\r\n\r\n cellInfo.data.isEditing = true;\r\n\r\n cellInfo.row.data.isEditing = true;\r\n cellInfo.component.editRow(cellInfo.rowIndex);\r\n\r\n setTimeout(() => {\r\n dataGrid.instance.editCell(cellInfo.rowIndex, \"energy\");\r\n const field = dataGrid.instance.getCellElement(cellInfo.rowIndex, \"energy\");\r\n DataGridHelpers.highlightCellElement(field);\r\n });\r\n }\r\n\r\n public baseSaveClicked(cellInfo: any, data: IImbalanceTradeRequestsModel, dataGrid: DxDataGridComponent) {\r\n data.clearMessages();\r\n\r\n dataGrid.instance.saveEditData().then(() => {\r\n data.saveRecord(cellInfo.row.data);\r\n dataGrid.instance.clearSelection();\r\n });\r\n }\r\n\r\n //Edits can be done in any status.\r\n public shouldShowEditButton(imbalanceTradeRequest: ImbalanceTradeRequest, data: IImbalanceTradeRequestsModel) : boolean {\r\n return !imbalanceTradeRequest.isCounterPartyRequest\r\n && data.isUserRoleModifyAllowed();\r\n }\r\n\r\n shouldShowDeleteButton(imbalanceTradeRequest: ImbalanceTradeRequest, data: IImbalanceTradeRequestsModel): boolean{\r\n return (imbalanceTradeRequest.statusCode === 'Mismatched' || imbalanceTradeRequest.statusCode === 'New' || imbalanceTradeRequest.statusCode === 'Failed')\r\n && !imbalanceTradeRequest.isCounterPartyRequest\r\n && data.isUserRoleModifyAllowed();\r\n }\r\n}\r\n","import {GasDay} from \"@model/gas-day\";\r\nimport {MinAndMax} from \"@model/min-and-max\";\r\nimport {GasMonth} from \"@model/gas-month\";\r\nimport {IImbalanceTradeRequest} from \"@model/models/imbalance-trade-request\";\r\nimport {IImbalanceTradeRequestsModel} from \"@shared/services/nomination/ImbalanceTradeRequests/imbalance-trade-requests.interface\";\r\nimport * as _ from \"lodash\";\r\n\r\nexport class ImbalanceTradeRequestsLogic{\r\n public static getStartGasDayDateMinAndMax(updateNomRequest: IImbalanceTradeRequest, model: IImbalanceTradeRequestsModel): MinAndMax {\r\n const endGasDayDate = updateNomRequest.gasDay.previous().toDate;\r\n\r\n const minStartGasDayDate = _.max([model.minGasDay.toDate, GasMonth.fromGasDay(GasDay.from(endGasDayDate)).start().toDate]);\r\n const maxStartGasDayDate = _.min([endGasDayDate, model.maxGasDay.toDate]);\r\n\r\n return new MinAndMax(minStartGasDayDate, maxStartGasDayDate);\r\n }\r\n}\r\n","
\r\n
\r\n\r\n
\r\n Number of buy requests: {{describeNumberOfRecords}}\r\n \r\n Add\r\n \r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n\r\n \r\n\r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n","import {AfterViewInit, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport * as dx from \"devextreme/core/renderer\";\r\nimport {\r\n IUndoRecord\r\n} from \"@shared/services/nomination/nomination-request/nomination-request.interface\";\r\nimport {UndoRowArgs} from \"app/gcts/nomination/nomination-requests/common-hub.service\";\r\nimport {SortingService} from \"app/gcts/nomination/nomination-requests/sorting-service/sorting.service\";\r\nimport {NominationNomGroupEnrichmentService} from \"@shared/services/nomination/nomination-nom-group-enrichment/nomination-nom-group-enrichment.service\";\r\nimport {IImbalanceTradeRequestsModel} from \"@shared/services/nomination/ImbalanceTradeRequests/imbalance-trade-requests.interface\";\r\nimport {DxDataGridComponent} from 'devextreme-angular';\r\nimport {ImbalanceTradeRequestComponentBase} from \"app/gcts/nomination/imbalance-trade-requests/imbalance-trade-component.interface\";\r\nimport {CommonImbalanceTradeService} from \"app/gcts/nomination/imbalance-trade-requests/common-imbalance-trade.service\";\r\nimport * as _ from 'lodash';\r\nimport {ImbalanceTradeRequest} from \"@model/models/imbalance-trade-request\";\r\nimport {TransactionTypes} from \"@shared/services/nomination/nomination-request/nomination-request.service\";\r\n\r\n@Component({\r\n selector: 'app-buy-imbalance-trade-requests',\r\n templateUrl: './buy-imbalance-trade-requests.component.html',\r\n styleUrls: ['./buy-imbalance-trade-requests.component.css']\r\n})\r\nexport class BuyImbalanceTradeRequestsComponent extends ImbalanceTradeRequestComponentBase implements OnInit, AfterViewInit {\r\n\r\n @Input() data: IImbalanceTradeRequestsModel;\r\n @Input() undos: Array;\r\n @Output() undoRow: EventEmitter = new EventEmitter();\r\n @Output() selectionChanged: EventEmitter = new EventEmitter();\r\n @Output() onDisableTabs: EventEmitter = new EventEmitter();\r\n @Output() onEnableTabs: EventEmitter = new EventEmitter();\r\n\r\n @ViewChild(DxDataGridComponent)\r\n public dataGrid: DxDataGridComponent;\r\n public commonImpl: CommonImbalanceTradeService;\r\n public canDisableSubmitButton = true;\r\n private sortingService: SortingService;\r\n public isEditingRowValid: boolean;\r\n\r\n integerOnlyColumnIndexes: Array = [10];\r\n\r\n constructor(public cdr: ChangeDetectorRef,\r\n private nominationNomGroupEnrichmentService: NominationNomGroupEnrichmentService) {\r\n super();\r\n this.commonImpl = new CommonImbalanceTradeService(this.undoRow, this.selectionChanged, this.hasRowChanged, this.isCellEditable);\r\n this.sortingService = new SortingService();\r\n }\r\n\r\n ngOnInit() {\r\n // Grid field - select box sizes\r\n this.data.columnEditorPopupWidths = new Map([\r\n [this.data.imbalanceTradeRequestFields.creditLocationId, 200],\r\n [this.data.imbalanceTradeRequestFields.debitNominationGroupId, 300],\r\n [this.data.imbalanceTradeRequestFields.energy, 200]\r\n ]);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.cdr.detectChanges(); // https://stackoverflow.com/questions/34364880/expression-has-changed-after-it-was-checked\r\n this.commonImpl.onNgAfterViewInit(this.undos);\r\n }\r\n\r\n onContentReady(e) {\r\n e.component.columnOption(\"command:edit\", \"visible\", false);\r\n }\r\n\r\n onCellPrepared = (e) => {\r\n this.commonImpl.onCellPrepared(e, this.data, this.dataGrid);\r\n\r\n if (e.rowType === 'data') {\r\n const cellElement = dx(e.cellElement);\r\n const selectBoxEditorElement = cellElement.find('.dx-selectbox');\r\n const selectBox = selectBoxEditorElement.data('dxSelectBox');\r\n const numberEditorElement = cellElement.find('.dx-numberbox');\r\n const numberBox = numberEditorElement.data('dxNumberBox');\r\n\r\n switch (e.column.dataField) {\r\n case 'creditLocationId':\r\n this.commonImpl.prepareLocation(e, selectBox, this.data, this.dataGrid);\r\n break;\r\n case 'debitNominationGroupId':\r\n this.commonImpl.prepareNominationGroup(e, selectBox, this.dataGrid, this.data);\r\n break;\r\n case 'energy':\r\n if (numberBox) {\r\n numberBox.on('keyDown', (x) => {\r\n this.commonImpl.filterOutNonIntegerKeys(x);\r\n });\r\n\r\n numberBox.on('valueChanged', (x) => {\r\n x.value = _.trim(x.value);\r\n });\r\n numberBox.focus();\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n };\r\n\r\n onSelectionChanged = (e) => {\r\n this.commonImpl.onSelectionChanged(e, this.data);\r\n };\r\n\r\n onRowInserting = (e): void => {\r\n this.commonImpl.onRowInserting(e, this.data, this.dataGrid);\r\n };\r\n\r\n onRowInserted = (e): void => {\r\n this.commonImpl.onCellUpdating(e, this.data, this.dataGrid, true, false).then(() => {});\r\n };\r\n\r\n onRowUpdating = (e): void => {\r\n this.commonImpl.onCellUpdating(e, this.data, this.dataGrid, true, true).then(() => {});\r\n };\r\n\r\n onCellValidating = (e): void => {\r\n this.commonImpl.onCellValidating(e, this.data);\r\n this.cdr.detectChanges();\r\n };\r\n\r\n onEditingStart(e):void{\r\n const rowIndex = e.component.getRowIndexByKey(e.key);\r\n\r\n if(e.dataField === 'energy' && e.parentType === 'dataRow'){\r\n e.component.editCellStyle.backgroundColor = '#60a5eb';\r\n e.component.editCell(rowIndex, 'energy');\r\n return;\r\n }\r\n }\r\n\r\n isCellEditable = (row, dataField: string): boolean => {\r\n switch (dataField) {\r\n case 'creditLocationId':\r\n case 'debitNominationGroupId':\r\n return (this.data.newRowAdded || this.data.isEditing) && this.data.editRowKey == row.data.id && row.data.statusCode != \"Matched\";\r\n case 'energy':\r\n return (this.data.newRowAdded || this.data.isEditing) && this.data.editRowKey == row.data.id;\r\n\r\n }\r\n return this.commonImpl.isImbalanceTradeRequestCellEditable(row, dataField, this.data);\r\n };\r\n\r\n editorPreparing = (e: any): void => {\r\n if (e.parentType === 'dataRow' && e.dataField !== undefined) { // undefined data field is the check box column.\r\n e.cancel = !this.isCellEditable(e.row, e.dataField);\r\n this.commonImpl.editorPreparing(e, this.data, this.dataGrid);\r\n }\r\n };\r\n\r\n editorPrepared = (e: any): void => {\r\n this.commonImpl.editorPrepared(e, this.data);\r\n };\r\n\r\n onInitNewRow = (e) => {\r\n this.commonImpl.onInitNewRow(e, this.data, this.dataGrid);\r\n\r\n const request = e.data;\r\n\r\n request.creditNominationGroupId = this.data.lastSearchParams.nomGroupId;\r\n request.transactionType = TransactionTypes.ImbalanceTradeBuy;\r\n\r\n setTimeout(() => this.dataGrid.instance.editCell(0, \"creditLocationId\"));\r\n };\r\n\r\n hasRowChanged = (r1, r2): boolean => {\r\n const rowChanged =\r\n r1.statusCode !== r2.statusCode ||\r\n r1.creditLocationId !== r2.creditLocationId ||\r\n r1.debitNominationGroupId !== r2.debitNominationGroupId ||\r\n r1.energy !== r2.energy;\r\n return rowChanged;\r\n };\r\n\r\n clearGridEdits = () => {\r\n // IE needs this in a timeout, Chrome does not.\r\n window.setTimeout(() => {\r\n this.commonImpl.clearGridEdits(this.dataGrid);\r\n });\r\n };\r\n\r\n filter(): void {\r\n // implementation for abstract method; do nothing\r\n }\r\n\r\n selectSavedRequests(requestsToSelect) {\r\n // implementation for abstract method; do nothing\r\n }\r\n\r\n deselectNewDuplicateKeyRequests(requestsToSelect) {\r\n this.dataGrid.instance.deselectRows(requestsToSelect);\r\n }\r\n\r\n deselectExpiredKeyRequests(requestsToSelect) {\r\n this.dataGrid.instance.deselectRows(requestsToSelect);\r\n }\r\n\r\n addRecord() {\r\n if (_.isNil(this.dataGrid) || _.isNil(this.dataGrid.instance)) return;\r\n\r\n this.commonImpl.addRecord(this.dataGrid, this.data);\r\n this.disableTabs();\r\n }\r\n\r\n onCellClick(e) {\r\n this.commonImpl.onCellClick(e, this.dataGrid);\r\n }\r\n\r\n onKeyDown(e: any, columnPosition: Array) {\r\n this.commonImpl.onKeyDown(e, this.dataGrid, this.isCellEditable);\r\n }\r\n\r\n canAddNewRow(): boolean {\r\n return this.commonImpl.canAddNewRow(this.dataGrid, this.data);\r\n }\r\n\r\n shouldShowEditButton(imbalanceTradeRequest: ImbalanceTradeRequest) : boolean {\r\n return this.commonImpl.shouldShowEditButton(imbalanceTradeRequest, this.data);\r\n }\r\n\r\n shouldShowDeleteButton(imbalanceTradeRequest: ImbalanceTradeRequest): boolean{\r\n return this.commonImpl.shouldShowDeleteButton(imbalanceTradeRequest, this.data);\r\n }\r\n\r\n deleteClicked(imbalanceTradeRequest: ImbalanceTradeRequest): void{\r\n this.data.deleteRecord(imbalanceTradeRequest);\r\n }\r\n\r\n public editClicked(cellInfo: any): void {\r\n this.commonImpl.editClicked(cellInfo, this.data, this.dataGrid);\r\n\r\n this.disableTabs();\r\n }\r\n\r\n private disableTabs(): void {\r\n this.onDisableTabs.emit();\r\n }\r\n\r\n private enableTabs(): void {\r\n this.onEnableTabs.emit();\r\n }\r\n\r\n public saveClicked(cellInfo: any): void {\r\n this.commonImpl.baseSaveClicked(cellInfo, this.data, this.dataGrid);\r\n }\r\n\r\n isViewOnly(): boolean {\r\n return this.commonImpl.isViewOnly(this.data);\r\n }\r\n\r\n removeIncompleteRows() {\r\n this.commonImpl.removeIncompleteRows(this.dataGrid);\r\n }\r\n\r\n get describeNumberOfRecords(): string {\r\n return this.commonImpl.describeNumberOfRecords(this.data.buyImbalanceTradeRequests, this.dataGrid);\r\n }\r\n\r\n public onUndoClick(e, cellInfo: any): void {\r\n if (_.isNil(this.dataGrid) || _.isNil(this.dataGrid.instance)) return;\r\n this.dataGrid.instance.cancelEditData();\r\n\r\n this.commonImpl.undoRowEdit(this.dataGrid, cellInfo);\r\n // need this one for the save button\r\n cellInfo.row.data.isEditing = false;\r\n\r\n this.data.editRowKey = null;\r\n this.data.isEditing = false;\r\n this.data.newRowAdded = false;\r\n this.data.clearMessages();\r\n this.enableTabs();\r\n }\r\n\r\n cellTemplate = (cellElement: HTMLElement, cellInfo) => {\r\n this.cellTemplateCommon(cellElement, cellInfo, false);\r\n };\r\n\r\n editCellTemplate = (cellElement: HTMLElement, cellInfo) => {\r\n this.cellTemplateCommon(cellElement, cellInfo, true);\r\n };\r\n\r\n cellTemplateCommon = (cellElement: HTMLElement, cellInfo, fromEdit) => {\r\n const $cellElement = dx(cellElement);\r\n\r\n if (cellInfo.column.caption === \"Status\") {\r\n this.applyStatusColumnTemplate(cellElement, cellInfo);\r\n }\r\n\r\n if (cellInfo.column.caption === \"Gas Day\") {\r\n $cellElement.attr('isreadonly', 'TRUE');\r\n }\r\n\r\n if (!_.isNil(cellInfo.data.statusMessage) && cellInfo.data.statusMessage.length > 0) {\r\n cellElement.addEventListener('mousemove', () => {\r\n cellElement.setAttribute('title', cellInfo.data.statusMessage);\r\n });\r\n }\r\n\r\n if (cellInfo.column.dataField === \"creditLocationId\") {\r\n $cellElement.attr('hideBorder', 'TRUE');\r\n }\r\n if (cellInfo.column.dataField === \"energy\") {\r\n $cellElement.attr('hideBorder', 'TRUE');\r\n $cellElement.attr('applyEditHighlight', 'TRUE');\r\n }\r\n\r\n if (cellInfo.column.dataField === 'creditNominationGroupId') {\r\n\r\n const nomGroup = this.getNomGroupIdFor(cellInfo.data.creditNominationGroupId);\r\n\r\n if (_.isNil(nomGroup) && !_.isNil(cellInfo.data.creditNominationGroupId)) {\r\n let updateObj: any;\r\n updateObj = {creditNominationGroupId: cellInfo.data.creditNominationGroupId};\r\n this.nominationNomGroupEnrichmentService.enrich(updateObj, 'creditNominationGroupId', 'nominationGroup').subscribe(updateObj2 => {\r\n $cellElement.append(updateObj2.nominationGroupMnemonic);\r\n cellElement.style.textAlign = 'left';\r\n });\r\n\r\n } else {\r\n $cellElement.append(nomGroup.mnemonic);\r\n cellElement.style.textAlign = 'left';\r\n }\r\n $cellElement.attr('isreadonly', 'TRUE');\r\n } else if(cellInfo.column.dataField === \"debitNominationGroupId\"){\r\n const nomGroup = this.getNomGroupIdFor(cellInfo.data.debitNominationGroupId);\r\n if (_.isNil(nomGroup) && _.isNil(cellInfo.data.debitNominationGroupId) && !fromEdit)\r\n this.commonImpl.cellTemplate(cellElement, cellInfo, this.dataGrid);\r\n else if (_.isNil(nomGroup) && _.isNil(cellInfo.data.debitNominationGroupId) && fromEdit) {\r\n // this is for the new values. nothing exists yet.\r\n this.commonImpl.editCellTemplate(cellElement, cellInfo, this.dataGrid, this.data);\r\n }\r\n else if(!_.isNil(nomGroup) && !_.isNil(cellInfo.data.debitNominationGroupId) && fromEdit) {\r\n this.commonImpl.editCellTemplate(cellElement, cellInfo, this.dataGrid, this.data);\r\n }\r\n else if (_.isNil(nomGroup) && !_.isNil(cellInfo.data.debitNominationGroupId)) {\r\n let updateObj: any;\r\n updateObj = {debitNominationGroupId: cellInfo.data.debitNominationGroupId};\r\n this.nominationNomGroupEnrichmentService.enrich(updateObj, 'debitNominationGroupId', 'nominationGroup').subscribe(updateObj2 => {\r\n $cellElement.append(updateObj2.nominationGroupMnemonic);\r\n cellElement.style.textAlign = 'left';\r\n });\r\n\r\n } else {\r\n $cellElement.append(nomGroup.mnemonic);\r\n cellElement.style.textAlign = 'left';\r\n }\r\n\r\n }\r\n\r\n else if (fromEdit) {\r\n this.commonImpl.editCellTemplate(cellElement, cellInfo, this.dataGrid, this.data);\r\n } else {\r\n this.commonImpl.cellTemplate(cellElement, cellInfo, this.dataGrid);\r\n }\r\n };\r\n\r\n statusSortValue = (rowData: ImbalanceTradeRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getSortStringValue('statusCode', recordData.statusCode, rowData, this.dataGrid.instance);\r\n };\r\n\r\n nomGroupSortValue = (rowData: ImbalanceTradeRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getNomGroupSortValue(this.data.lastSearchParams.gasDay, \"creditNominationGroupId\", recordData.nominationGroupId, recordData.nominationGroupMnemonic, rowData, this.dataGrid.instance);\r\n };\r\n\r\n locationSortValue = (rowData: ImbalanceTradeRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getLocationSortValue('creditLocationId', recordData.locationId, recordData.locationName, rowData, this.dataGrid.instance);\r\n };\r\n\r\n qtySortValue = (rowData: ImbalanceTradeRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getSortNumberValue('energy', recordData.energy, rowData, this.dataGrid.instance);\r\n };\r\n\r\n gasDaySortValue = (rowData: ImbalanceTradeRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getSortDateValue('gasDay', recordData.gasDay, rowData, this.dataGrid.instance);\r\n };\r\n\r\n submittedBySortValue = (rowData: ImbalanceTradeRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getSortStringValue('submittedBy', recordData.submittedBy, rowData, this.dataGrid.instance);\r\n };\r\n\r\n counterPartySortValue = (rowData: ImbalanceTradeRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getCounterPartySortValue('counterPartyId', recordData.counterPartyId, recordData.counterPartyName, rowData, this.dataGrid.instance);\r\n };\r\n\r\n counterPartyQuantitySortValue = (rowData: ImbalanceTradeRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getSortNumberValue('counterPartyEnergy', recordData.counterPartyEnergy, rowData, this.dataGrid.instance);\r\n };\r\n\r\n counterPartyGasDaySortValue = (rowData: ImbalanceTradeRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getSortDateValue('counterPartyGasDay', recordData.counterPartyGasDay, rowData, this.dataGrid.instance);\r\n };\r\n\r\n counterPartySubmittedBySortValue = (rowData: ImbalanceTradeRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getSortStringValue('counterPartySubmittedBy', recordData.counterPartySubmittedBy, rowData, this.dataGrid.instance);\r\n };\r\n\r\n\r\n}\r\n","
\r\n
\r\n\r\n
\r\n Number of sell requests: {{describeNumberOfRecords}}\r\n \r\n Add\r\n \r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n \r\n\r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n","import {AfterViewInit, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport * as dx from \"devextreme/core/renderer\";\r\nimport { IUndoRecord } from \"@shared/services/nomination/nomination-request/nomination-request.interface\";\r\nimport {UndoRowArgs} from \"app/gcts/nomination/nomination-requests/common-hub.service\";\r\nimport {SortingService} from \"app/gcts/nomination/nomination-requests/sorting-service/sorting.service\";\r\nimport {NominationNomGroupEnrichmentService} from \"@shared/services/nomination/nomination-nom-group-enrichment/nomination-nom-group-enrichment.service\";\r\nimport {IImbalanceTradeRequestsModel} from \"@shared/services/nomination/ImbalanceTradeRequests/imbalance-trade-requests.interface\";\r\nimport { DxDataGridComponent } from 'devextreme-angular';\r\nimport {ImbalanceTradeRequestComponentBase} from \"app/gcts/nomination/imbalance-trade-requests/imbalance-trade-component.interface\";\r\nimport {CommonImbalanceTradeService} from \"app/gcts/nomination/imbalance-trade-requests/common-imbalance-trade.service\";\r\nimport * as _ from 'lodash';\r\nimport {ImbalanceTradeRequest} from \"@model/models/imbalance-trade-request\";\r\nimport {TransactionTypes} from \"@shared/services/nomination/nomination-request/nomination-request.service\";\r\n\r\n\r\n@Component({\r\n selector: 'app-sell-imbalance-trade-requests',\r\n templateUrl: './sell-imbalance-trade-requests.component.html',\r\n styleUrls: ['./sell-imbalance-trade-requests.component.css']\r\n})\r\nexport class SellImbalanceTradeRequestsComponent extends ImbalanceTradeRequestComponentBase implements OnInit, AfterViewInit {\r\n\r\n @Input() data: IImbalanceTradeRequestsModel;\r\n @Input() undos: Array;\r\n @Output() undoRow: EventEmitter = new EventEmitter();\r\n @Output() selectionChanged: EventEmitter = new EventEmitter();\r\n @Output() onDisableTabs: EventEmitter = new EventEmitter();\r\n @Output() onEnableTabs: EventEmitter = new EventEmitter();\r\n\r\n @ViewChild(DxDataGridComponent)\r\n public dataGrid: DxDataGridComponent;\r\n public commonImpl: CommonImbalanceTradeService;\r\n public canDisableSubmitButton = true;\r\n private sortingService: SortingService;\r\n public isEditingRowValid: boolean;\r\n\r\n integerOnlyColumnIndexes: Array = [10];\r\n\r\n constructor(public cdr: ChangeDetectorRef,\r\n private nominationNomGroupEnrichmentService: NominationNomGroupEnrichmentService) {\r\n super();\r\n this.commonImpl = new CommonImbalanceTradeService(this.undoRow, this.selectionChanged, this.hasRowChanged, this.isCellEditable);\r\n this.sortingService = new SortingService();\r\n }\r\n\r\n ngOnInit() {\r\n // Grid field - select box sizes\r\n this.data.columnEditorPopupWidths = new Map([\r\n [this.data.imbalanceTradeRequestFields.creditLocationId, 200],\r\n [this.data.imbalanceTradeRequestFields.creditNominationGroupId, 300],\r\n [this.data.imbalanceTradeRequestFields.energy, 200]\r\n ]);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.cdr.detectChanges(); // https://stackoverflow.com/questions/34364880/expression-has-changed-after-it-was-checked\r\n this.commonImpl.onNgAfterViewInit(this.undos);\r\n }\r\n\r\n onContentReady(e) {\r\n e.component.columnOption(\"command:edit\", \"visible\", false);\r\n }\r\n\r\n onCellPrepared = (e) => {\r\n this.commonImpl.onCellPrepared(e, this.data, this.dataGrid);\r\n\r\n if (e.rowType === 'data') {\r\n const cellElement = dx(e.cellElement);\r\n const selectBoxEditorElement = cellElement.find('.dx-selectbox');\r\n const selectBox = selectBoxEditorElement.data('dxSelectBox');\r\n const numberEditorElement = cellElement.find('.dx-numberbox');\r\n const numberBox = numberEditorElement.data('dxNumberBox');\r\n\r\n switch (e.column.dataField) {\r\n case 'creditLocationId':\r\n this.commonImpl.prepareLocation(e, selectBox, this.data, this.dataGrid);\r\n break;\r\n case 'debitNominationGroupId':\r\n this.commonImpl.prepareNominationGroup(e, selectBox, this.dataGrid, this.data);\r\n break;\r\n case 'energy':\r\n if (numberBox) {\r\n numberBox.on('keyDown', (x) => {\r\n this.commonImpl.filterOutNonIntegerKeys(x);\r\n });\r\n\r\n numberBox.on('valueChanged', (x) => {\r\n x.value = _.trim(x.value);\r\n });\r\n numberBox.style.backgroundColor = \"#60a5eb\";\r\n numberBox.focus();\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n };\r\n\r\n onSelectionChanged = (e) => {\r\n this.commonImpl.onSelectionChanged(e, this.data)\r\n };\r\n\r\n onRowInserting = (e): void => {\r\n this.commonImpl.onRowInserting(e, this.data, this.dataGrid);\r\n };\r\n\r\n onRowInserted = (e): void => {\r\n this.commonImpl.onCellUpdating(e, this.data, this.dataGrid, true, false).then(() => {});\r\n };\r\n\r\n onRowUpdating = (e): void => {\r\n this.commonImpl.onCellUpdating(e, this.data, this.dataGrid, true, true).then(() => {});\r\n };\r\n\r\n onCellValidating = (e): void => {\r\n this.commonImpl.onCellValidating(e, this.data);\r\n this.cdr.detectChanges();\r\n };\r\n\r\n onEditingStart(e):void{\r\n const rowIndex = e.component.getRowIndexByKey(e.key);\r\n\r\n if(e.dataField === 'energy' && e.parentType === 'dataRow'){\r\n e.component.editCellStyle.backgroundColor = '#60a5eb';\r\n e.component.editCell(rowIndex, 'energy')\r\n return;\r\n }\r\n }\r\n isCellEditable = (row, dataField: string): boolean => {\r\n switch (dataField) {\r\n case 'creditLocationId':\r\n case 'creditNominationGroupId':\r\n return (this.data.newRowAdded || this.data.isEditing) && this.data.editRowKey == row.data.id && row.data.statusCode != \"Matched\";\r\n case 'energy':\r\n return (this.data.newRowAdded || this.data.isEditing) && this.data.editRowKey == row.data.id;\r\n\r\n }\r\n return this.commonImpl.isImbalanceTradeRequestCellEditable(row, dataField, this.data);\r\n };\r\n\r\n\r\n editorPreparing = (e: any): void => {\r\n if (e.parentType === 'dataRow' && e.dataField !== undefined) { // undefined data field is the check box column.\r\n e.cancel = !this.isCellEditable(e.row, e.dataField);\r\n this.commonImpl.editorPreparing(e, this.data, this.dataGrid);\r\n }\r\n };\r\n\r\n editorPrepared = (e: any): void => {\r\n this.commonImpl.editorPrepared(e, this.data);\r\n };\r\n\r\n onInitNewRow = (e) => {\r\n this.commonImpl.onInitNewRow(e, this.data, this.dataGrid);\r\n\r\n const request = e.data;\r\n\r\n request.debitNominationGroupId = this.data.lastSearchParams.nomGroupId;\r\n request.transactionType = TransactionTypes.ImbalanceTradeSell;\r\n\r\n setTimeout(() => this.dataGrid.instance.editCell(0, \"debitLocationId\"));\r\n };\r\n\r\n hasRowChanged = (r1, r2): boolean => {\r\n const rowChanged =\r\n r1.statusCode !== r2.statusCode ||\r\n r1.debitLocationId !== r2.debitLocationId ||\r\n r1.creditNominationGroupId !== r2.creditNominationGroupId ||\r\n r1.energy !== r2.energy;\r\n return rowChanged;\r\n };\r\n\r\n clearGridEdits = () => {\r\n // IE needs this in a timeout, Chrome does not.\r\n window.setTimeout(() => {\r\n this.commonImpl.clearGridEdits(this.dataGrid);\r\n });\r\n };\r\n\r\n filter(): void {\r\n // implementation for abstract method; do nothing\r\n }\r\n\r\n selectSavedRequests(requestsToSelect) {\r\n // implementation for abstract method; do nothing\r\n }\r\n\r\n deselectNewDuplicateKeyRequests(requestsToSelect) {\r\n this.dataGrid.instance.deselectRows(requestsToSelect);\r\n }\r\n\r\n deselectExpiredKeyRequests(requestsToSelect) {\r\n this.dataGrid.instance.deselectRows(requestsToSelect);\r\n }\r\n\r\n addRecord() {\r\n if (_.isNil(this.dataGrid) || _.isNil(this.dataGrid.instance)) return;\r\n\r\n this.commonImpl.addRecord(this.dataGrid, this.data);\r\n this.disableTabs();\r\n }\r\n\r\n onCellClick(e) {\r\n this.commonImpl.onCellClick(e, this.dataGrid);\r\n }\r\n\r\n onKeyDown(e: any, columnPosition: Array) {\r\n this.commonImpl.onKeyDown(e, this.dataGrid, this.isCellEditable);\r\n }\r\n\r\n canAddNewRow(): boolean {\r\n return this.commonImpl.canAddNewRow(this.dataGrid, this.data);\r\n }\r\n\r\n isDisabled(): boolean {\r\n return this.commonImpl.isDisabled(this.dataGrid);\r\n }\r\n\r\n shouldShowEditButton(imbalanceTradeRequest: ImbalanceTradeRequest) : boolean {\r\n return this.commonImpl.shouldShowEditButton(imbalanceTradeRequest, this.data);\r\n }\r\n\r\n shouldShowDeleteButton(imbalanceTradeRequest: ImbalanceTradeRequest): boolean{\r\n return this.commonImpl.shouldShowDeleteButton(imbalanceTradeRequest, this.data);\r\n }\r\n\r\n deleteClicked(imbalanceTradeRequest: ImbalanceTradeRequest): void{\r\n this.data.deleteRecord(imbalanceTradeRequest);\r\n }\r\n\r\n public editClicked(cellInfo: any): void {\r\n this.commonImpl.editClicked(cellInfo, this.data, this.dataGrid);\r\n\r\n this.disableTabs();\r\n }\r\n\r\n private disableTabs(): void {\r\n this.onDisableTabs.emit();\r\n }\r\n\r\n private enableTabs(): void {\r\n this.onEnableTabs.emit();\r\n }\r\n\r\n public saveClicked(cellInfo: any): void {\r\n this.commonImpl.baseSaveClicked(cellInfo, this.data, this.dataGrid);\r\n }\r\n\r\n isViewOnly(): boolean {\r\n return this.commonImpl.isViewOnly(this.data);\r\n }\r\n\r\n removeIncompleteRows() {\r\n this.commonImpl.removeIncompleteRows(this.dataGrid);\r\n }\r\n\r\n get describeNumberOfRecords(): string {\r\n return this.commonImpl.describeNumberOfRecords(this.data.sellImbalanceTradeRequests, this.dataGrid);\r\n }\r\n\r\n public onUndoClick(e, cellInfo: any): void {\r\n if (_.isNil(this.dataGrid) || _.isNil(this.dataGrid.instance)) return;\r\n this.dataGrid.instance.cancelEditData();\r\n\r\n this.commonImpl.undoRowEdit(this.dataGrid, cellInfo);\r\n\r\n //need this one for the save button\r\n cellInfo.row.data.isEditing = false;\r\n\r\n this.data.editRowKey = null;\r\n this.data.isEditing = false;\r\n this.data.newRowAdded = false;\r\n this.data.clearMessages();\r\n this.enableTabs();\r\n }\r\n\r\n cellTemplate = (cellElement: HTMLElement, cellInfo) => {\r\n this.cellTemplateCommon(cellElement, cellInfo, false);\r\n };\r\n\r\n editCellTemplate = (cellElement: HTMLElement, cellInfo) => {\r\n this.cellTemplateCommon(cellElement, cellInfo, true);\r\n };\r\n\r\n cellTemplateCommon = (cellElement: HTMLElement, cellInfo, fromEdit) => {\r\n const $cellElement = dx(cellElement);\r\n if (cellInfo.column.caption === \"Status\") {\r\n this.applyStatusColumnTemplate(cellElement, cellInfo);\r\n }\r\n\r\n if (cellInfo.column.caption === \"Gas Day\") {\r\n $cellElement.attr('isreadonly', 'TRUE');\r\n }\r\n if (!_.isNil(cellInfo.data.statusMessage) && cellInfo.data.statusMessage.length > 0) {\r\n cellElement.addEventListener('mousemove', () => {\r\n cellElement.setAttribute('title', cellInfo.data.statusMessage);\r\n });\r\n }\r\n if (cellInfo.column.dataField === \"creditLocationId\") {\r\n $cellElement.attr('hideBorder', 'TRUE');\r\n }\r\n if (cellInfo.column.dataField === \"energy\") {\r\n $cellElement.attr('hideBorder', 'TRUE');\r\n $cellElement.attr('applyEditHighlight', 'TRUE');\r\n }\r\n\r\n if (cellInfo.column.dataField === 'debitNominationGroupId') {\r\n\r\n const nomGroup = this.getNomGroupIdFor(cellInfo.data.debitNominationGroupId);\r\n\r\n if (_.isNil(nomGroup) && !_.isNil(cellInfo.data.debitNominationGroupId)) {\r\n let updateObj: any;\r\n updateObj = {debitNominationGroupId: cellInfo.data.debitNominationGroupId};\r\n this.nominationNomGroupEnrichmentService.enrich(updateObj, 'debitNominationGroupId', 'nominationGroup').subscribe(updateObj2 => {\r\n $cellElement.append(updateObj2.nominationGroupMnemonic);\r\n cellElement.style.textAlign = 'left';\r\n });\r\n\r\n } else {\r\n $cellElement.append(nomGroup.mnemonic);\r\n cellElement.style.textAlign = 'left';\r\n }\r\n $cellElement.attr('isreadonly', 'TRUE');\r\n } else if(cellInfo.column.dataField === \"creditNominationGroupId\"){\r\n const nomGroup = this.getNomGroupIdFor(cellInfo.data.creditNominationGroupId);\r\n if (_.isNil(nomGroup) && _.isNil(cellInfo.data.creditNominationGroupId) && !fromEdit)\r\n this.commonImpl.cellTemplate(cellElement, cellInfo, this.dataGrid);\r\n else if (_.isNil(nomGroup) && _.isNil(cellInfo.data.creditNominationGroupId) && fromEdit) {\r\n //this is for the new values. nothing exists yet.\r\n this.commonImpl.editCellTemplate(cellElement, cellInfo, this.dataGrid, this.data);\r\n }\r\n else if(!_.isNil(nomGroup) && !_.isNil(cellInfo.data.creditNominationGroupId) && fromEdit) {\r\n this.commonImpl.editCellTemplate(cellElement, cellInfo, this.dataGrid, this.data);\r\n }\r\n else if (_.isNil(nomGroup) && !_.isNil(cellInfo.data.creditNominationGroupId)) {\r\n let updateObj: any;\r\n updateObj = {creditNominationGroupId: cellInfo.data.creditNominationGroupId};\r\n this.nominationNomGroupEnrichmentService.enrich(updateObj, 'creditNominationGroupId', 'nominationGroup').subscribe(updateObj2 => {\r\n $cellElement.append(updateObj2.nominationGroupMnemonic);\r\n cellElement.style.textAlign = 'left';\r\n });\r\n\r\n } else {\r\n $cellElement.append(nomGroup.mnemonic);\r\n cellElement.style.textAlign = 'left';\r\n }\r\n\r\n }\r\n\r\n else if (fromEdit) {\r\n this.commonImpl.editCellTemplate(cellElement, cellInfo, this.dataGrid, this.data);\r\n } else {\r\n this.commonImpl.cellTemplate(cellElement, cellInfo, this.dataGrid);\r\n }\r\n };\r\n\r\n statusSortValue = (rowData: ImbalanceTradeRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getSortStringValue('statusCode', recordData.statusCode, rowData, this.dataGrid.instance);\r\n };\r\n\r\n nomGroupSortValue = (rowData: ImbalanceTradeRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getNomGroupSortValue(this.data.lastSearchParams.gasDay, \"creditNominationGroupId\", recordData.nominationGroupId, recordData.nominationGroupMnemonic, rowData, this.dataGrid.instance);\r\n };\r\n\r\n locationSortValue = (rowData: ImbalanceTradeRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getLocationSortValue('creditLocationId', recordData.locationId, recordData.locationName, rowData, this.dataGrid.instance);\r\n };\r\n\r\n qtySortValue = (rowData: ImbalanceTradeRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getSortNumberValue('energy', recordData.energy, rowData, this.dataGrid.instance);\r\n };\r\n\r\n gasDaySortValue = (rowData: ImbalanceTradeRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getSortDateValue('gasDay', recordData.gasDay, rowData, this.dataGrid.instance);\r\n };\r\n\r\n submittedBySortValue = (rowData: ImbalanceTradeRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getSortStringValue('submittedBy', recordData.submittedBy, rowData, this.dataGrid.instance);\r\n };\r\n\r\n counterPartySortValue = (rowData: ImbalanceTradeRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getCounterPartySortValue('counterPartyId', recordData.counterPartyId, recordData.counterPartyName, rowData, this.dataGrid.instance);\r\n };\r\n\r\n counterPartyQuantitySortValue = (rowData: ImbalanceTradeRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getSortNumberValue('counterPartyEnergy', recordData.counterPartyEnergy, rowData, this.dataGrid.instance);\r\n };\r\n\r\n counterPartyGasDaySortValue = (rowData: ImbalanceTradeRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getSortDateValue('counterPartyGasDay', recordData.counterPartyGasDay, rowData, this.dataGrid.instance);\r\n };\r\n\r\n counterPartySubmittedBySortValue = (rowData: ImbalanceTradeRequest) => {\r\n const recordData = this.commonImpl.getDataForSort(rowData);\r\n return this.sortingService.getSortStringValue('counterPartySubmittedBy', recordData.counterPartySubmittedBy, rowData, this.dataGrid.instance);\r\n };\r\n updateSelectedRows = (keysToAdd: Array, keysToRemove: Array) => {\r\n this.commonImpl.updateSelectedRows(this.dataGrid, keysToAdd, keysToRemove);\r\n };\r\n}\r\n","import {GasDay} from \"@model/gas-day\";\r\n\r\nexport interface IImbalanceTradeLocationBalance {\r\n locationId: number;\r\n locationName: string;\r\n openingBalance: number;\r\n currentBalance: number;\r\n}\r\n\r\nexport class ImbalanceTradeLocationBalance implements IImbalanceTradeLocationBalance {\r\n locationId: number;\r\n locationName: string;\r\n openingBalance: number;\r\n currentBalance: number;\r\n}\r\n\r\nexport class ImbalanceTradeLocationBalances {\r\n locationBalances: ImbalanceTradeLocationBalance[];\r\n queryDateTime: Date;\r\n gasDay: GasDay;\r\n isGasDayClosed: boolean;\r\n}\r\n","
\r\n\r\n
\r\n \r\n {{title}}\r\n \r\n
\r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n {{data.data.locationName}}\r\n
\r\n
\r\n \r\n
\r\n {{balanceConversion(data.data.currentBalance)}}\r\n
\r\n
\r\n \r\n\r\n
\r\n","import {Component, Input, OnInit} from '@angular/core';\r\nimport {ImbalanceTradeLocationBalance, ImbalanceTradeLocationBalances} from \"@model/models/imbalance-trade-location-balance\";\r\nimport {NumberFormatPipe} from \"@shared/pipes/number-format/number-format.pipe\";\r\n\r\n@Component({\r\n selector: 'app-imbalance-trade-location-balances',\r\n templateUrl: './imbalance-trade-location-balances.component.html',\r\n styleUrls: ['./imbalance-trade-location-balances.component.css']\r\n})\r\nexport class ImbalanceTradeLocationBalancesComponent implements OnInit {\r\n\r\n @Input() data: ImbalanceTradeLocationBalances = new ImbalanceTradeLocationBalances();\r\n @Input() title: string = \"Balances\";\r\n @Input() balancesRequireRefresh: boolean = false;\r\n\r\n private numberPipe: NumberFormatPipe;\r\n\r\n constructor() {\r\n this.numberPipe = new NumberFormatPipe();\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n balanceConversion(currentBalance: number): string {\r\n if (this.balancesRequireRefresh === true && this.data.isGasDayClosed === true) {\r\n return \"updating\";\r\n }\r\n\r\n if (currentBalance === undefined || currentBalance == null) {\r\n return \"\";\r\n }\r\n\r\n return this.numberPipe.transform(currentBalance, false, true);\r\n }\r\n}\r\n","import {NgModule} from '@angular/core';\r\nimport {NominationRequestsComponent} from './nomination-requests/nomination-requests.component';\r\nimport {SharedModule} from \"@shared/shared.module\";\r\nimport {FormsModule} from \"@angular/forms\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {\r\n DxDataGridModule, DxListModule, DxPopupModule, DxTabPanelModule, DxTagBoxModule, DxCheckBoxModule,\r\n DxValidatorModule, DxTooltipModule\r\n} from \"devextreme-angular\";\r\nimport {AutoBalanceEventsComponent} from \"./auto-balance-events/auto-balance-events.component\";\r\nimport {GasDayMonitorComponent} from './gasday-monitor/gasday-monitor.component';\r\nimport {ReceiptHubComponent} from './nomination-requests/receipt-hub/receipt-hub.component';\r\nimport {TransportationSummaryComponent} from './transportation-summary/transportation-summary.component';\r\nimport {DeliveryHubComponent} from \"./nomination-requests/delivery-hub/delivery-hub.component\";\r\nimport {TransportHubComponent} from './nomination-requests/transport-hub/transport-hub.component';\r\nimport {HubBalanceComponent} from './nomination-requests/hub-balance/hub-balance.component';\r\nimport {ConfirmationMonitorComponent} from './confirmation-monitor/confirmation-monitor.component';\r\nimport {ConfirmationDetailsComponent} from './confirmation-details/confirmation-details.component';\r\nimport {AccountSummaryComponent} from './account-summary/account-summary.component';\r\nimport {ConfirmationHistoryComponent} from './confirmation-history/confirmation-history.component';\r\nimport {NominationRequestsPageViewComponent} from './nomination-requests/nomination-requests-page-view/nomination-requests-page-view.component';\r\nimport {NominationRequestsTabViewComponent} from \"./nomination-requests/nomination-requests-tab-view/nomination-requests-tab-view.component\";\r\nimport {ConfirmationEventHistoryComponent} from './confirmation-event-history/confirmation-event-history.component';\r\nimport {NominationExceptionsComponent} from './nomination-exceptions/nomination-exceptions.component';\r\nimport {StorageLimitMaintenanceComponent} from './storage-limit-maintenance/storage-limit-maintenance.component';\r\nimport {InjectionsTabComponent} from './storage-limit-maintenance/injections-tab/injections-tab.component';\r\nimport {TitleTransferReportComponent} from './title-transfer-report/title-transfer-report.component';\r\nimport {TitleTransferReportGridComponent} from './title-transfer-report/title-transfer-report-grid/title-transfer-report-grid.component';\r\nimport {TitleTransferReportFullComponent} from './title-transfer-report/title-transfer-report-full/title-transfer-report-full.component';\r\nimport {TitleTransferReportTabComponent} from './title-transfer-report/title-transfer-report-tab/title-transfer-report-tab.component';\r\nimport {PoolingTabComponent} from \"./storage-limit-maintenance/pooling-tab/pooling-tab.component\";\r\nimport {WithdrawalTabComponent} from './storage-limit-maintenance/withdrawal-tab/withdrawal-tab.component';\r\nimport {EnergyImbalanceComponent} from './nomination-requests/energy-imbalance/energy-imbalance.component';\r\nimport {AutoBalanceDetailsComponent} from \"./auto-balance-details/auto-balance-details.component\";\r\nimport { TransportationSummaryGridComponent } from './transportation-summary/transportation-summary-grid/transportation-summary-grid.component';\r\nimport { TransportationSummaryTabViewComponent } from './transportation-summary/transportation-summary-tab-view/transportation-summary-tab-view.component';\r\nimport { NonTransportationSummaryGridComponent } from './transportation-summary/non-transportation-summary-grid/non-transportation-summary-grid.component';\r\nimport { UploadNominationRequestsComponent } from './nomination-requests/upload-nomination-requests/upload-nomination-requests.component';\r\nimport {AppRoutingModule} from \"app/app.routes\";\r\nimport { TitleTransferWaiversComponent } from './title-transfer-waivers/title-transfer-waivers.component';\r\nimport {ConfirmationResponseComponent} from \"./confirmation-response/confirmation-response.component\";\r\nimport {ResetCycleDialogComponent} from \"./gasday-monitor/reset-cycle-dialog.component\";\r\nimport {PendingStsNominationsComponent} from \"./gasday-monitor/pending-sts-nominations/pending-sts-nominations.component\";\r\nimport {ScheduledQuantityAdjustmentsComponent} from \"app/gcts/nomination/scheduled-quantity-adjustments/scheduled-quantity-adjustments.component\";\r\nimport {ImbalanceTransferTransactionsComponent} from \"app/gcts/nomination/imbalance-transfer-transactions/imbalance-transfer-transactions.component\";\r\nimport {MinimumItBidRateComponent} from \"app/gcts/nomination/minimum-it-bid-rate/minimum-it-bid-rate.component\";\r\nimport {CustodyTransferReportComponent} from \"app/gcts/nomination/custody-transfer-report/custody-transfer-report.component\";\r\nimport {BfpDailyTransportationSummaryComponent} from \"app/gcts/nomination/bfp-daily-transportation-summary/bfp-daily-transportation-summary.component\";\r\nimport { ContractUtilizationComponent } from './contract-utilization/contract-utilization.component';\r\nimport {UhfTabComponent} from \"app/gcts/nomination/storage-limit-maintenance/uhf-tab/uhf-tab.component\";\r\nimport {ITBidFloorAverageReportComponent} from \"app/gcts/nomination/it-bid-floor-average-report/it-bid-floor-average-report.component\";\r\nimport {TitleTransferMismatchesComponent} from \"app/gcts/nomination/nomination-requests/title-transfer-mismatches/title-transfer-mismatches.component\";\r\nimport {UploadConfirmationRequestQuickResponseComponent} from \"app/gcts/nomination/edi-test-harness/upload-confirmation-request-quick-response/upload-confirmation-request-quick-response.component\";\r\nimport {UploadConfirmationRequestResponseComponent} from \"app/gcts/nomination/edi-test-harness/upload-confirmation-request-response/upload-confirmation-request-response.component\";\r\nimport {UploadEdiTestFileModalComponent} from \"app/gcts/nomination/edi-test-harness/upload-edi-test-file-modal/upload-edi-test-file-modal.component\";\r\nimport { ImbalanceTradeRequestsComponent } from 'app/gcts/nomination/imbalance-trade-requests/imbalance-trade-requests.component';\r\nimport { ImbalanceTradeRequestsPageViewComponent } from 'app/gcts/nomination/imbalance-trade-requests/imbalance-trade-requests-page-view/imbalance-trade-requests-page-view.component';\r\nimport { ImbalanceTradeRequestsTabViewComponent } from 'app/gcts/nomination/imbalance-trade-requests/imbalance-trade-requests-tab-view/imbalance-trade-requests-tab-view.component';\r\nimport { BuyImbalanceTradeRequestsComponent } from 'app/gcts/nomination/imbalance-trade-requests/buy-imbalance-trade-requests/buy-imbalance-trade-requests.component';\r\nimport { SellImbalanceTradeRequestsComponent } from './imbalance-trade-requests/sell-imbalance-trade-requests/sell-imbalance-trade-requests.component';\r\nimport { ImbalanceTradeLocationBalancesComponent } from './imbalance-trade-requests/imbalance-trade-location-balances/imbalance-trade-location-balances.component';\r\nimport { AvailableCapacityComponent } from './available-capacity/available-capacity.component';\r\nimport { CapacityAllocationSummaryComponent } from './capacity-allocation-summary/capacity-allocation-summary.component';\r\nimport { CapacityAllocationSummaryTabViewComponent } from './capacity-allocation-summary/capacity-allocation-summary-tab-view/capacity-allocation-summary-tab-view.component';\r\nimport { TransportationCapacityAllocationSummaryGridComponent } from './capacity-allocation-summary/transportation-capacity-allocation-summary-grid/transportation-capacity-allocation-summary-grid.component';\r\nimport { TransferCapacityAllocationSummaryGridComponent } from './capacity-allocation-summary/transfer-capacity-allocation-summary-grid/transfer-capacity-allocation-summary-grid.component';\r\nimport { CapacityAllocationDetailsComponent } from 'app/gcts/nomination/capacity-allocation-details/capacity-allocation-details.component';\r\nimport { CapacityAllocationDetailsAggregatePaneComponent } from 'app/gcts/nomination/capacity-allocation-details/capacity-allocation-details-aggregate-pane/capacity-allocation-details-aggregate-pane.component';\r\nimport { CapacityAllocationDetailsAggregateDetailsComponent } from \"app/gcts/nomination/capacity-allocation-details/capacity-allocation-details-aggregate-details/capacity-allocation-details-aggregate-details.component\";\r\nimport { CapacityAllocationDetailsTransactionPaneComponent } from 'app/gcts/nomination/capacity-allocation-details/capacity-allocation-details-transaction-pane/capacity-allocation-details-transaction-pane.component';\r\nimport { CapacityAllocationDetailsTransactionDetailsComponent } from \"app/gcts/nomination/capacity-allocation-details/capacity-allocation-details-transaction-details/capacity-allocation-details-transaction-details.component\";\r\nimport {CapacityAllocationSegmentOrderComponent} from \"app/gcts/nomination/capacity-allocation-segment-order/capacity-allocation-segment-order.component\";\r\n@NgModule({\r\n imports: [\r\n AppRoutingModule,\r\n DxDataGridModule,\r\n DxValidatorModule,\r\n DxPopupModule,\r\n DxTabPanelModule,\r\n DxTagBoxModule,\r\n DxTooltipModule,\r\n CommonModule,\r\n FormsModule,\r\n SharedModule,\r\n DxListModule,\r\n DxCheckBoxModule\r\n ],\r\n declarations: [\r\n AutoBalanceEventsComponent,\r\n AutoBalanceDetailsComponent,\r\n NominationRequestsComponent,\r\n GasDayMonitorComponent,\r\n ReceiptHubComponent,\r\n TransportationSummaryComponent,\r\n DeliveryHubComponent,\r\n TransportHubComponent,\r\n HubBalanceComponent,\r\n TitleTransferMismatchesComponent,\r\n ConfirmationMonitorComponent,\r\n ConfirmationDetailsComponent,\r\n AccountSummaryComponent,\r\n NominationRequestsPageViewComponent,\r\n NominationRequestsTabViewComponent,\r\n ConfirmationHistoryComponent,\r\n ConfirmationEventHistoryComponent,\r\n NominationExceptionsComponent,\r\n StorageLimitMaintenanceComponent,\r\n InjectionsTabComponent,\r\n TitleTransferReportComponent,\r\n TitleTransferReportGridComponent,\r\n TitleTransferReportFullComponent,\r\n TitleTransferReportTabComponent,\r\n PoolingTabComponent,\r\n WithdrawalTabComponent,\r\n UhfTabComponent,\r\n EnergyImbalanceComponent,\r\n TransportationSummaryGridComponent,\r\n TransportationSummaryTabViewComponent,\r\n NonTransportationSummaryGridComponent,\r\n UploadNominationRequestsComponent,\r\n TitleTransferWaiversComponent,\r\n ConfirmationResponseComponent,\r\n ResetCycleDialogComponent,\r\n PendingStsNominationsComponent,\r\n ScheduledQuantityAdjustmentsComponent,\r\n ImbalanceTransferTransactionsComponent,\r\n MinimumItBidRateComponent,\r\n CustodyTransferReportComponent,\r\n BfpDailyTransportationSummaryComponent,\r\n ITBidFloorAverageReportComponent,\r\n ContractUtilizationComponent,\r\n UploadConfirmationRequestQuickResponseComponent,\r\n UploadConfirmationRequestResponseComponent,\r\n UploadEdiTestFileModalComponent,\r\n ImbalanceTradeRequestsComponent,\r\n ImbalanceTradeRequestsPageViewComponent,\r\n ImbalanceTradeRequestsTabViewComponent,\r\n BuyImbalanceTradeRequestsComponent,\r\n SellImbalanceTradeRequestsComponent,\r\n ImbalanceTradeLocationBalancesComponent,\r\n AvailableCapacityComponent,\r\n CapacityAllocationSummaryComponent,\r\n CapacityAllocationSummaryTabViewComponent,\r\n TransportationCapacityAllocationSummaryGridComponent,\r\n TransferCapacityAllocationSummaryGridComponent,\r\n CapacityAllocationDetailsComponent,\r\n CapacityAllocationDetailsAggregatePaneComponent,\r\n CapacityAllocationDetailsAggregateDetailsComponent,\r\n CapacityAllocationDetailsTransactionPaneComponent,\r\n CapacityAllocationDetailsTransactionDetailsComponent,\r\n CapacityAllocationSegmentOrderComponent,\r\n ]\r\n})\r\nexport class NominationModule {\r\n}\r\n","import {NgModule} from '@angular/core';\r\nimport {SharedModule} from '@shared/shared.module';\r\nimport {FormsModule} from '@angular/forms';\r\nimport {CommonModule} from '@angular/common';\r\nimport {DxDataGridModule} from 'devextreme-angular';\r\nimport {LoadLocationsComponent} from './load-locations/load-locations.component';\r\nimport {LoadLocationParametersComponent} from './load-location-parameters/load-location-parameters.component';\r\nimport { LoadLocationRelationshipsComponent } from './load-location-relationships/load-location-relationships.component';\r\nimport { LoadLbaLocationTolerancesComponent } from './load-lba-location-tolerances/load-lba-location-tolerances.component';\r\nimport { LoadOmvRelationshipsComponent } from './load-omv-relationships/load-omv-relationships.component';\r\n\r\n@NgModule({\r\n imports: [\r\n DxDataGridModule,\r\n CommonModule,\r\n FormsModule,\r\n SharedModule\r\n ],\r\n declarations: [\r\n LoadLocationsComponent,\r\n LoadLocationParametersComponent,\r\n LoadLocationRelationshipsComponent,\r\n LoadLbaLocationTolerancesComponent,\r\n LoadOmvRelationshipsComponent]\r\n})\r\n\r\nexport class ManageLocationModule {}\r\n","import {NgModule} from \"@angular/core\";\r\n\r\nimport {SharedModule} from \"@shared/shared.module\";\r\nimport {AccountContractSummaryReportComponent} from \"app/gcts/contracts/account-contract-summary-report/account-contract-summary-report.components\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {FormsModule} from \"@angular/forms\";\r\nimport {\r\n DevExtremeModule,\r\n DxCheckBoxModule,\r\n DxDataGridModule,\r\n DxListModule,\r\n DxPopupModule,\r\n DxSelectBoxModule,\r\n DxTabPanelModule,\r\n DxTagBoxModule,\r\n DxTooltipModule,\r\n DxValidatorModule\r\n} from \"devextreme-angular\";\r\nimport {AccountContractSummaryTransportationComponent} from \"app/gcts/contracts/account-contract-summary-report/account-contract-summary-transportation/account-contract-summary-transportation.component\";\r\nimport {AccountContractSummaryParkAndLoanComponent} from \"app/gcts/contracts/account-contract-summary-report/account-contract-summary-parkandloan/account-contract-summary-parkandloan.component\";\r\nimport {ContractsAwaitingProcessingComponent} from \"app/gcts/contracts/contracts-awaiting-processing/contracts-awaiting-processing.component\";\r\nimport {AccountsComponent} from \"app/gcts/contracts/accounts/accounts.component\";\r\nimport {AppRoutingModule} from \"app/app.routes\";\r\nimport { EditAccountComponent } from './accounts/edit-account/edit-account.component';\r\nimport { EditContractComponent } from './accounts/edit-contract/edit-contract.component';\r\nimport { UnlinkContractComponent } from './accounts/unlink-contract/unlink-contract.component';\r\nimport {TemporaryAssignmentComponent} from \"app/gcts/contracts/temporary-assignment/temporary-assignment.component\";\r\nimport { ContractDemandEnergyComponent } from './contract-demand-energy/contract-demand-energy.component';\r\nimport { CoverPageDetailComponent } from './cover-page-detail/cover-page-detail.component';\r\nimport { CoverPageContactsComponent } from './cover-page-contacts/cover-page-contacts.component';\r\nimport {ContractPricingComponent} from \"app/gcts/contracts/contract-pricing/contract-pricing.component\";\r\nimport {CustomerCertifiedGasParametersComponent} from \"app/gcts/contracts/customer-certified-gas-parameters/customer-certified-gas-parameters.component\";\r\nimport { LoadContractsComponent } from './load-contracts/load-contracts.component';\r\nimport {ShipperHubType} from \"app/gcts/contracts/accounts/shipperHubType\";\r\nimport {CustomerAccountParametersComponent} from \"app/gcts/contracts/customer-account-parameters/customer-account-parameters.component\";\r\n\r\n@NgModule({\r\n imports: [\r\n AppRoutingModule,\r\n SharedModule,\r\n CommonModule,\r\n FormsModule,\r\n DxDataGridModule,\r\n DxValidatorModule,\r\n DxPopupModule,\r\n DxTabPanelModule,\r\n DxTagBoxModule,\r\n DxTooltipModule,\r\n DxListModule,\r\n DxCheckBoxModule,\r\n DxSelectBoxModule,\r\n DevExtremeModule\r\n ],\r\n declarations: [\r\n AccountContractSummaryReportComponent,\r\n AccountContractSummaryTransportationComponent,\r\n AccountContractSummaryParkAndLoanComponent,\r\n ContractsAwaitingProcessingComponent,\r\n AccountsComponent,\r\n EditAccountComponent,\r\n EditContractComponent,\r\n UnlinkContractComponent,\r\n TemporaryAssignmentComponent,\r\n ContractDemandEnergyComponent,\r\n CoverPageDetailComponent,\r\n CoverPageContactsComponent,\r\n ContractPricingComponent,\r\n CustomerCertifiedGasParametersComponent,\r\n LoadContractsComponent,\r\n CustomerAccountParametersComponent,\r\n ],\r\n providers: [\r\n ShipperHubType\r\n ]\r\n})\r\nexport class AccountsModule {}\r\n","import {NgModule} from \"@angular/core\";\r\nimport {SharedModule} from \"@shared/shared.module\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {FormsModule} from \"@angular/forms\";\r\nimport {DxCheckBoxModule, DxDataGridModule, DxListModule, DxPopupModule, DxTabPanelModule, DxTagBoxModule, DxTooltipModule, DxValidatorModule} from \"devextreme-angular\";\r\nimport {CreditExposureReportComponent} from \"app/gcts/credit/credit-exposure-report/credit-exposure-report.component\";\r\nimport {CreditOverageReportComponent} from \"app/gcts/credit/credit-overage-report/credit-overage-report.component\";\r\nimport {CreditReportArchiveRetrievalComponent} from \"app/gcts/credit/credit-report-archive-retrieval/credit-report-archive-retrieval.component\";\r\n\r\n@NgModule({\r\n imports: [\r\n SharedModule,\r\n CommonModule,\r\n FormsModule,\r\n DxDataGridModule,\r\n DxValidatorModule,\r\n DxPopupModule,\r\n DxTabPanelModule,\r\n DxTagBoxModule,\r\n DxTooltipModule,\r\n DxListModule,\r\n DxCheckBoxModule\r\n ],\r\n declarations: [\r\n CreditExposureReportComponent,\r\n CreditOverageReportComponent,\r\n CreditReportArchiveRetrievalComponent\r\n ]\r\n})\r\nexport class CreditModule {}\r\n","import {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {FormsModule} from '@angular/forms';\r\n\r\nimport {AppRoutingModule} from '../app.routes';\r\nimport {SharedModule} from '@shared/shared.module';\r\nimport {AdministrationModule} from './administration/administration.module';\r\nimport {FlowingGasModule} from './flowinggas/flowinggas.module';\r\nimport {InvoicingModule} from './invoicing/invoicing.module';\r\nimport {ReportingModule} from './reporting/reporting.module';\r\n\r\nimport {AssumeIdentityComponent} from './assume-identity/assume-identity.component';\r\nimport {HealthComponent} from './health/health.component';\r\nimport {HomeComponent} from './home/home.component';\r\nimport {GctsComponent} from './gcts.component';\r\nimport {TestPageComponent} from './test-page/test-page.component';\r\n\r\nimport {EditHomeComponent} from './home/edit-home/edit-home.component';\r\nimport {DxButtonModule, DxPopupModule, DxTemplateModule} from 'devextreme-angular';\r\nimport {NominationModule} from './nomination/nomination.module';\r\nimport {ManageLocationModule} from './managelocation/managelocation.module';\r\nimport {NgbTimepickerModule, NgbDatepickerModule} from '@ng-bootstrap/ng-bootstrap';\r\nimport {AccountsModule} from \"app/gcts/contracts/accounts.module\";\r\nimport {CreditModule} from \"app/gcts/credit/credit.module\";\r\nimport { ProductionSetupComponent } from './production-setup/production-setup.component';\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n AppRoutingModule,\r\n SharedModule,\r\n AdministrationModule,\r\n AccountsModule,\r\n CreditModule,\r\n FlowingGasModule,\r\n InvoicingModule,\r\n NominationModule,\r\n ManageLocationModule,\r\n ReportingModule,\r\n NgbDatepickerModule,\r\n NgbTimepickerModule,\r\n DxPopupModule,\r\n DxButtonModule,\r\n DxTemplateModule\r\n ],\r\n declarations: [\r\n GctsComponent,\r\n AssumeIdentityComponent,\r\n HealthComponent,\r\n HomeComponent,\r\n TestPageComponent,\r\n EditHomeComponent,\r\n ProductionSetupComponent\r\n ]\r\n})\r\nexport class GctsModule {\r\n}\r\n","import {Component, Inject, OnInit} from '@angular/core';\r\nimport {NavigationEnd, Router} from \"@angular/router\";\r\nimport {GoogleAnalyticsService} from \"@shared/services/webapp/analytics/google-analytics.service\";\r\nimport {UserService} from \"@shared/services/webapp/user/user-service\";\r\nimport {AppService} from \"@shared/services/webapp/app/app.service\";\r\nimport DataGrid from \"devextreme/ui/data_grid\";\r\nimport { OKTA_AUTH } from '@okta/okta-angular';\r\nimport { OktaAuth } from '@okta/okta-auth-js';\r\nimport {concatMap} from \"rxjs/operators\";\r\nimport {SessionService} from \"@shared/services/webapp/session/session.service\";\r\nimport {PipelineInitService} from \"@shared/services/shared/pipeline-init.service\";\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.css']\r\n})\r\nexport class AppComponent implements OnInit{\r\n\r\n public isAuthenticated = false;\r\n\r\n constructor(\r\n public router: Router,\r\n private appService: AppService,\r\n private userService: UserService,\r\n private analyticsService: GoogleAnalyticsService,\r\n private sessionService : SessionService,\r\n private pipelineInitService : PipelineInitService,\r\n @Inject(OKTA_AUTH) private oktaAuth: OktaAuth) {\r\n DataGrid.defaultOptions({\r\n device: { deviceType: \"desktop\" },\r\n options: {\r\n // Here go the DataGrid options\r\n sorting: {showSortIndexes: false}\r\n }\r\n });\r\n // Subscribe to router events and send page views to Google Analytics\r\n this.router.events.subscribe(event => {\r\n if (event instanceof NavigationEnd) {\r\n }\r\n });\r\n }\r\n public ngOnInit(): void {\r\n const urlParams = new URLSearchParams(window.location.search);\r\n\r\n // Check for the logoff redirect\r\n const state = urlParams.get('state');\r\n const isLogoffRedirect = state === 'app-logoff';\r\n\r\n if (isLogoffRedirect) {\r\n this.router.navigate(['/login']);\r\n return;\r\n }\r\n\r\n // Check for search string route Hint\r\n const routeHint = urlParams.get('routeHint');\r\n if (routeHint && routeHint !== '') {\r\n localStorage.setItem('routeHint', routeHint);\r\n }\r\n\r\n // Retrieve the route hint\r\n const routeName = localStorage.getItem('routeHint');\r\n\r\n const isLoginRedirect = this.oktaAuth.isLoginRedirect();\r\n if (isLoginRedirect) {\r\n this.oktaAuth.token.parseFromUrl().then((res) => {\r\n const tokens = res.tokens;\r\n this.oktaAuth.tokenManager.setTokens(tokens);\r\n this.oktaAuth.authStateManager.updateAuthState().then(() => {\r\n this.isAuthenticated = true;\r\n this.redirectToHome();\r\n });\r\n }).catch((err) => {\r\n // Catch error from OAuth\r\n console.error(err);\r\n });\r\n } else {\r\n // Check the current authenticated state\r\n const authState = this.oktaAuth.authStateManager.getAuthState();\r\n // No authentication state found, redirect to Okta\r\n if (authState === undefined || authState === null) {\r\n this.oktaAuth.signInWithRedirect();\r\n }\r\n this.isAuthenticated = authState.isAuthenticated;\r\n // Redirect to dashboard if already authenticated\r\n if (this.isAuthenticated) {\r\n // Route to GCTS SecurityToken request\r\n\r\n // Check for the router hint\r\n if (routeName) {\r\n localStorage.removeItem('routeHint');\r\n this.router.navigate(routeName.split('/'));\r\n } else {\r\n this.redirectToHome();\r\n }\r\n } else {\r\n // Enable the following line to automatically redirect to\r\n // Okta for authentication\r\n this.oktaAuth.signInWithRedirect();\r\n }\r\n }\r\n }\r\n\r\n private redirectToHome() {\r\n // get user data first before redirecting because we need to know the pipeline they have access to\r\n this.userService.getUser().pipe(\r\n // this will set the user pipeline\r\n concatMap(() => this.pipelineInitService.loadSessionPipeline())\r\n ).toPromise()\r\n .then(() => this.router.navigate(['']).then(() => {}));\r\n }\r\n}\r\n","\r\n
\r\n \r\n \r\n
\r\n","import {Injectable} from '@angular/core';\r\nimport {ErrorHandler} from \"@angular/core\";\r\nimport {LoggingService} from \"@shared/services/nomination/logging/logging.service\";\r\nimport {first} from \"rxjs/operators\";\r\n\r\n@Injectable()\r\nexport class ErrorHandlerService implements ErrorHandler {\r\n\r\n // directly injecting appservice is creating a circular dependency (presumably you need this error handler\r\n // to create the app service, which is needed to create this error handler...\r\n\r\n // so inject the injector and pull the appservice when its eventually needed\r\n constructor(private loggingService: LoggingService) {\r\n }\r\n\r\n handleError(error: any): void {\r\n this.loggingService.log(error).pipe(\r\n first())\r\n .subscribe(() => {}); // Fire Error Asynchronously\r\n\r\n // TODO: I think this is used to handle javascript errors? Do we need this anymore?\r\n if (console) console.log(error);\r\n if (console) console.log(error.toString());\r\n if (console) console.log(error);\r\n }\r\n}\r\n","import {BrowserModule} from '@angular/platform-browser';\r\nimport {APP_INITIALIZER, ErrorHandler, NgModule} from '@angular/core';\r\nimport {FormsModule} from '@angular/forms';\r\nimport {HttpClientModule} from \"@angular/common/http\";\r\nimport {AppRoutingModule} from './app.routes';\r\nimport {SharedModule} from \"@shared/shared.module\";\r\nimport {GctsModule} from \"./gcts/gcts.module\";\r\nimport {AppComponent} from './app.component';\r\nimport {ForbiddenComponent} from \"./forbidden/forbidden.component\";\r\nimport {NotFoundComponent} from \"./not-found/not-found.component\";\r\nimport {ConfigService} from \"@shared/services/webapp/configuration/configuration.service\";\r\nimport {ErrorHandlerService} from \"@shared/services/error-handler/error-handler.service\";\r\nimport {HealthCheckComponent} from \"./health-check/health-check.component\";\r\nimport {ServiceUnavailableComponent} from \"app/service-unavailable/service-unavailable.component\";\r\nimport {PipelineInitService} from \"@shared/services/shared/pipeline-init.service\";\r\nimport {OktaAuthModule, OKTA_CONFIG} from '@okta/okta-angular';\r\nimport {OktaAuth} from '@okta/okta-auth-js';\r\n\r\n@NgModule({\r\n providers: [\r\n ConfigService,\r\n {\r\n provide: APP_INITIALIZER,\r\n useFactory: loadSessionPipeline,\r\n deps: [ConfigService, PipelineInitService],\r\n multi: true\r\n },\r\n {\r\n provide: ErrorHandler,\r\n useClass: ErrorHandlerService\r\n },\r\n {\r\n provide: OKTA_CONFIG,\r\n useFactory: configureOkta,\r\n deps: [ConfigService]\r\n }\r\n ],\r\n imports: [\r\n BrowserModule,\r\n FormsModule,\r\n HttpClientModule,\r\n AppRoutingModule,\r\n SharedModule,\r\n GctsModule,\r\n OktaAuthModule,\r\n ],\r\n declarations: [\r\n AppComponent,\r\n ForbiddenComponent,\r\n HealthCheckComponent,\r\n NotFoundComponent,\r\n ServiceUnavailableComponent\r\n ],\r\n bootstrap: [AppComponent]\r\n})\r\nexport class AppModule {\r\n}\r\n\r\nexport function loadSessionPipeline(configurationService: ConfigService, pipelineInitService: PipelineInitService) {\r\n return (): Promise => {\r\n return pipelineInitService.loadSessionPipeline().toPromise();\r\n };\r\n}\r\n\r\nexport function configureOkta(configurationService: ConfigService) {\r\n const oktaConfig = {\r\n issuer: configurationService.oktaIssuer,\r\n redirectUri: window.location.origin,\r\n clientId: configurationService.oktaClientId,\r\n postLogoutRedirectUri: window.location.origin + \"?state=app-logoff\"\r\n };\r\n return { oktaAuth: new OktaAuth(oktaConfig) };\r\n}\r\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from 'app/app.module';\r\nimport { environment } from './environments/environment';\r\nimport {APP_CONFIG_TOKEN} from \"@shared/services/webapp/configuration/configuration.service\";\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\n/*\r\n// old way of doing it\r\nif (!/localhost/.test(document.location.host)) {\r\n enableProdMode();\r\n}\r\n*/\r\n\r\n// need to load in our dynamic config data before we bootstrap the angular app\r\n// this is so that the config data is available to Okta as well as our config service\r\n// see https://developer.okta.com/blog/2022/02/24/angular-async-config\r\nfetch(environment.config_file)\r\n .then(async res => {\r\n const configData = await res.json();\r\n platformBrowserDynamic([\r\n { provide: APP_CONFIG_TOKEN, useValue: configData }\r\n ])\r\n .bootstrapModule(AppModule)\r\n .catch(err => console.log(err));\r\n })\r\n .catch(err => console.log(err));\r\n","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"zn8P\";"]}