@actschurch/ccms-sdk 0.0.32 → 0.0.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/models/accourses/ModelView/RegistrationListView.d.ts +2 -0
- package/dist/models/accourses/ModelView/RegistrationListView.d.ts.map +1 -1
- package/dist/models/accourses/ModelView/RegistrationNoteFileRequests.d.ts +16 -0
- package/dist/models/accourses/ModelView/RegistrationNoteFileRequests.d.ts.map +1 -1
- package/dist/models/accourses/ModelView/RegistrationSessionModelView.d.ts +2 -0
- package/dist/models/accourses/ModelView/RegistrationSessionModelView.d.ts.map +1 -1
- package/dist/models/accourses/ModelView/RegistrationSessionNoteModelView.d.ts +41 -0
- package/dist/models/accourses/ModelView/RegistrationSessionNoteModelView.d.ts.map +1 -0
- package/dist/models/accourses/ModelView/RegistrationSessionNoteModelView.js +2 -0
- package/dist/models/accourses/ModelView/RegistrationSessionNoteModelView.js.map +1 -0
- package/dist/models/accourses/ModelView/index.d.ts +1 -0
- package/dist/models/accourses/ModelView/index.d.ts.map +1 -1
- package/dist/models/accourses/ModelView/index.js +1 -0
- package/dist/models/accourses/ModelView/index.js.map +1 -1
- package/dist/models/accourses/RegistrationSessionNote.d.ts +32 -0
- package/dist/models/accourses/RegistrationSessionNote.d.ts.map +1 -0
- package/dist/models/accourses/RegistrationSessionNote.js +2 -0
- package/dist/models/accourses/RegistrationSessionNote.js.map +1 -0
- package/dist/models/accourses/index.d.ts +1 -0
- package/dist/models/accourses/index.d.ts.map +1 -1
- package/dist/models/accourses/index.js +1 -0
- package/dist/models/accourses/index.js.map +1 -1
- package/dist/models/ai/AiBudgetAnalytics.d.ts +150 -0
- package/dist/models/ai/AiBudgetAnalytics.d.ts.map +1 -0
- package/dist/models/ai/AiBudgetAnalytics.js +13 -0
- package/dist/models/ai/AiBudgetAnalytics.js.map +1 -0
- package/dist/models/ai/index.d.ts +1 -0
- package/dist/models/ai/index.d.ts.map +1 -1
- package/dist/models/ai/index.js +1 -0
- package/dist/models/ai/index.js.map +1 -1
- package/dist/models/applicationcatalogue/AppDistribution.d.ts +284 -0
- package/dist/models/applicationcatalogue/AppDistribution.d.ts.map +1 -0
- package/dist/models/applicationcatalogue/AppDistribution.js +39 -0
- package/dist/models/applicationcatalogue/AppDistribution.js.map +1 -0
- package/dist/models/applicationcatalogue/index.d.ts +1 -0
- package/dist/models/applicationcatalogue/index.d.ts.map +1 -1
- package/dist/models/applicationcatalogue/index.js +1 -0
- package/dist/models/applicationcatalogue/index.js.map +1 -1
- package/dist/models/budgets/Budget.d.ts +12 -0
- package/dist/models/budgets/Budget.d.ts.map +1 -1
- package/dist/models/budgets/BudgetAmountInputType.d.ts +17 -0
- package/dist/models/budgets/BudgetAmountInputType.d.ts.map +1 -0
- package/dist/models/budgets/BudgetAmountInputType.js +2 -0
- package/dist/models/budgets/BudgetAmountInputType.js.map +1 -0
- package/dist/models/budgets/BudgetAnalyticsV3.d.ts +180 -0
- package/dist/models/budgets/BudgetAnalyticsV3.d.ts.map +1 -0
- package/dist/models/budgets/BudgetAnalyticsV3.js +5 -0
- package/dist/models/budgets/BudgetAnalyticsV3.js.map +1 -0
- package/dist/models/budgets/BudgetCategory.d.ts +23 -0
- package/dist/models/budgets/BudgetCategory.d.ts.map +1 -0
- package/dist/models/budgets/BudgetCategory.js +2 -0
- package/dist/models/budgets/BudgetCategory.js.map +1 -0
- package/dist/models/budgets/BudgetChangeRequest.d.ts +28 -0
- package/dist/models/budgets/BudgetChangeRequest.d.ts.map +1 -0
- package/dist/models/budgets/BudgetChangeRequest.js +2 -0
- package/dist/models/budgets/BudgetChangeRequest.js.map +1 -0
- package/dist/models/budgets/BudgetChangeRequestType.d.ts +16 -0
- package/dist/models/budgets/BudgetChangeRequestType.d.ts.map +1 -0
- package/dist/models/budgets/BudgetChangeRequestType.js +2 -0
- package/dist/models/budgets/BudgetChangeRequestType.js.map +1 -0
- package/dist/models/budgets/BudgetForecast.d.ts +151 -0
- package/dist/models/budgets/BudgetForecast.d.ts.map +1 -0
- package/dist/models/budgets/BudgetForecast.js +9 -0
- package/dist/models/budgets/BudgetForecast.js.map +1 -0
- package/dist/models/budgets/BudgetItem.d.ts +2 -0
- package/dist/models/budgets/BudgetItem.d.ts.map +1 -1
- package/dist/models/budgets/BudgetRelease.d.ts +22 -0
- package/dist/models/budgets/BudgetRelease.d.ts.map +1 -0
- package/dist/models/budgets/BudgetRelease.js +2 -0
- package/dist/models/budgets/BudgetRelease.js.map +1 -0
- package/dist/models/budgets/BudgetReleaseValueType.d.ts +17 -0
- package/dist/models/budgets/BudgetReleaseValueType.d.ts.map +1 -0
- package/dist/models/budgets/BudgetReleaseValueType.js +2 -0
- package/dist/models/budgets/BudgetReleaseValueType.js.map +1 -0
- package/dist/models/budgets/BudgetSetting.d.ts +19 -0
- package/dist/models/budgets/BudgetSetting.d.ts.map +1 -1
- package/dist/models/budgets/BudgetTransaction.d.ts +3 -0
- package/dist/models/budgets/BudgetTransaction.d.ts.map +1 -1
- package/dist/models/budgets/ModelView/BudgetAlertModelView.d.ts +29 -0
- package/dist/models/budgets/ModelView/BudgetAlertModelView.d.ts.map +1 -0
- package/dist/models/budgets/ModelView/BudgetAlertModelView.js +2 -0
- package/dist/models/budgets/ModelView/BudgetAlertModelView.js.map +1 -0
- package/dist/models/budgets/ModelView/BudgetAnalyticsMatrix.d.ts +25 -0
- package/dist/models/budgets/ModelView/BudgetAnalyticsMatrix.d.ts.map +1 -0
- package/dist/models/budgets/ModelView/BudgetAnalyticsMatrix.js +9 -0
- package/dist/models/budgets/ModelView/BudgetAnalyticsMatrix.js.map +1 -0
- package/dist/models/budgets/ModelView/BudgetAnalyticsRow.d.ts +20 -0
- package/dist/models/budgets/ModelView/BudgetAnalyticsRow.d.ts.map +1 -0
- package/dist/models/budgets/ModelView/BudgetAnalyticsRow.js +2 -0
- package/dist/models/budgets/ModelView/BudgetAnalyticsRow.js.map +1 -0
- package/dist/models/budgets/ModelView/BudgetApprovalModelView.d.ts +24 -0
- package/dist/models/budgets/ModelView/BudgetApprovalModelView.d.ts.map +1 -0
- package/dist/models/budgets/ModelView/BudgetApprovalModelView.js +2 -0
- package/dist/models/budgets/ModelView/BudgetApprovalModelView.js.map +1 -0
- package/dist/models/budgets/ModelView/BudgetCategoryModelView.d.ts +22 -0
- package/dist/models/budgets/ModelView/BudgetCategoryModelView.d.ts.map +1 -0
- package/dist/models/budgets/ModelView/BudgetCategoryModelView.js +2 -0
- package/dist/models/budgets/ModelView/BudgetCategoryModelView.js.map +1 -0
- package/dist/models/budgets/ModelView/BudgetChangeRequestModelView.d.ts +30 -0
- package/dist/models/budgets/ModelView/BudgetChangeRequestModelView.d.ts.map +1 -0
- package/dist/models/budgets/ModelView/BudgetChangeRequestModelView.js +2 -0
- package/dist/models/budgets/ModelView/BudgetChangeRequestModelView.js.map +1 -0
- package/dist/models/budgets/ModelView/BudgetCheckResult.d.ts +4 -0
- package/dist/models/budgets/ModelView/BudgetCheckResult.d.ts.map +1 -1
- package/dist/models/budgets/ModelView/BudgetDashboardOverview.d.ts +4 -3
- package/dist/models/budgets/ModelView/BudgetDashboardOverview.d.ts.map +1 -1
- package/dist/models/budgets/ModelView/BudgetModelView.d.ts +21 -0
- package/dist/models/budgets/ModelView/BudgetModelView.d.ts.map +1 -1
- package/dist/models/budgets/ModelView/BudgetMyOverview.d.ts +46 -0
- package/dist/models/budgets/ModelView/BudgetMyOverview.d.ts.map +1 -0
- package/dist/models/budgets/ModelView/BudgetMyOverview.js +2 -0
- package/dist/models/budgets/ModelView/BudgetMyOverview.js.map +1 -0
- package/dist/models/budgets/ModelView/BudgetSummary.d.ts +4 -0
- package/dist/models/budgets/ModelView/BudgetSummary.d.ts.map +1 -1
- package/dist/models/budgets/ModelView/BudgetTransactionModelView.d.ts +43 -0
- package/dist/models/budgets/ModelView/BudgetTransactionModelView.d.ts.map +1 -0
- package/dist/models/budgets/ModelView/BudgetTransactionModelView.js +2 -0
- package/dist/models/budgets/ModelView/BudgetTransactionModelView.js.map +1 -0
- package/dist/models/budgets/ModelView/BudgetUserRef.d.ts +14 -0
- package/dist/models/budgets/ModelView/BudgetUserRef.d.ts.map +1 -0
- package/dist/models/budgets/ModelView/BudgetUserRef.js +2 -0
- package/dist/models/budgets/ModelView/BudgetUserRef.js.map +1 -0
- package/dist/models/budgets/ModelView/CreateBudgetCategoryViewModel.d.ts +14 -0
- package/dist/models/budgets/ModelView/CreateBudgetCategoryViewModel.d.ts.map +1 -0
- package/dist/models/budgets/ModelView/CreateBudgetCategoryViewModel.js +2 -0
- package/dist/models/budgets/ModelView/CreateBudgetCategoryViewModel.js.map +1 -0
- package/dist/models/budgets/ModelView/CreateBudgetChangeRequestViewModel.d.ts +12 -0
- package/dist/models/budgets/ModelView/CreateBudgetChangeRequestViewModel.d.ts.map +1 -0
- package/dist/models/budgets/ModelView/CreateBudgetChangeRequestViewModel.js +2 -0
- package/dist/models/budgets/ModelView/CreateBudgetChangeRequestViewModel.js.map +1 -0
- package/dist/models/budgets/ModelView/CreateBudgetFromProjectViewModel.d.ts +32 -0
- package/dist/models/budgets/ModelView/CreateBudgetFromProjectViewModel.d.ts.map +1 -0
- package/dist/models/budgets/ModelView/CreateBudgetFromProjectViewModel.js +9 -0
- package/dist/models/budgets/ModelView/CreateBudgetFromProjectViewModel.js.map +1 -0
- package/dist/models/budgets/ModelView/CreateBudgetItemViewModel.d.ts +2 -0
- package/dist/models/budgets/ModelView/CreateBudgetItemViewModel.d.ts.map +1 -1
- package/dist/models/budgets/ModelView/CreateBudgetViewModel.d.ts +5 -0
- package/dist/models/budgets/ModelView/CreateBudgetViewModel.d.ts.map +1 -1
- package/dist/models/budgets/ModelView/DecideBudgetChangeRequestViewModel.d.ts +11 -0
- package/dist/models/budgets/ModelView/DecideBudgetChangeRequestViewModel.d.ts.map +1 -0
- package/dist/models/budgets/ModelView/DecideBudgetChangeRequestViewModel.js +2 -0
- package/dist/models/budgets/ModelView/DecideBudgetChangeRequestViewModel.js.map +1 -0
- package/dist/models/budgets/ModelView/GenerateReleasesViewModel.d.ts +15 -0
- package/dist/models/budgets/ModelView/GenerateReleasesViewModel.d.ts.map +1 -0
- package/dist/models/budgets/ModelView/GenerateReleasesViewModel.js +2 -0
- package/dist/models/budgets/ModelView/GenerateReleasesViewModel.js.map +1 -0
- package/dist/models/budgets/ModelView/ImportBudgetItemsViewModel.d.ts +35 -0
- package/dist/models/budgets/ModelView/ImportBudgetItemsViewModel.d.ts.map +1 -0
- package/dist/models/budgets/ModelView/ImportBudgetItemsViewModel.js +10 -0
- package/dist/models/budgets/ModelView/ImportBudgetItemsViewModel.js.map +1 -0
- package/dist/models/budgets/ModelView/ReassignBudgetViewModel.d.ts +12 -0
- package/dist/models/budgets/ModelView/ReassignBudgetViewModel.d.ts.map +1 -0
- package/dist/models/budgets/ModelView/ReassignBudgetViewModel.js +2 -0
- package/dist/models/budgets/ModelView/ReassignBudgetViewModel.js.map +1 -0
- package/dist/models/budgets/ModelView/UpdateBudgetCategoryViewModel.d.ts +15 -0
- package/dist/models/budgets/ModelView/UpdateBudgetCategoryViewModel.d.ts.map +1 -0
- package/dist/models/budgets/ModelView/UpdateBudgetCategoryViewModel.js +2 -0
- package/dist/models/budgets/ModelView/UpdateBudgetCategoryViewModel.js.map +1 -0
- package/dist/models/budgets/ModelView/UpdateBudgetItemViewModel.d.ts +2 -0
- package/dist/models/budgets/ModelView/UpdateBudgetItemViewModel.d.ts.map +1 -1
- package/dist/models/budgets/ModelView/UpdateBudgetSettingViewModel.d.ts +8 -0
- package/dist/models/budgets/ModelView/UpdateBudgetSettingViewModel.d.ts.map +1 -1
- package/dist/models/budgets/ModelView/UpdateBudgetViewModel.d.ts +7 -0
- package/dist/models/budgets/ModelView/UpdateBudgetViewModel.d.ts.map +1 -1
- package/dist/models/budgets/ModelView/UpsertBudgetReleaseViewModel.d.ts +12 -0
- package/dist/models/budgets/ModelView/UpsertBudgetReleaseViewModel.d.ts.map +1 -0
- package/dist/models/budgets/ModelView/UpsertBudgetReleaseViewModel.js +2 -0
- package/dist/models/budgets/ModelView/UpsertBudgetReleaseViewModel.js.map +1 -0
- package/dist/models/budgets/ModelView/index.d.ts +18 -0
- package/dist/models/budgets/ModelView/index.d.ts.map +1 -1
- package/dist/models/budgets/ModelView/index.js +18 -0
- package/dist/models/budgets/ModelView/index.js.map +1 -1
- package/dist/models/budgets/index.d.ts +8 -0
- package/dist/models/budgets/index.d.ts.map +1 -1
- package/dist/models/budgets/index.js +9 -0
- package/dist/models/budgets/index.js.map +1 -1
- package/dist/models/common/BulkDelete.d.ts +21 -0
- package/dist/models/common/BulkDelete.d.ts.map +1 -0
- package/dist/models/common/BulkDelete.js +12 -0
- package/dist/models/common/BulkDelete.js.map +1 -0
- package/dist/models/common/index.d.ts +2 -0
- package/dist/models/common/index.d.ts.map +1 -1
- package/dist/models/common/index.js +1 -0
- package/dist/models/common/index.js.map +1 -1
- package/dist/models/communication/AppPushTemplate.d.ts +3 -0
- package/dist/models/communication/AppPushTemplate.d.ts.map +1 -1
- package/dist/models/communication/ModelView/AppTemplateModelView.d.ts +40 -0
- package/dist/models/communication/ModelView/AppTemplateModelView.d.ts.map +1 -1
- package/dist/models/identity/ModelView/UserPushDeviceViewModel.d.ts +2 -0
- package/dist/models/identity/ModelView/UserPushDeviceViewModel.d.ts.map +1 -1
- package/dist/models/users/ModelView/UserPushDeviceViewModel.d.ts +2 -0
- package/dist/models/users/ModelView/UserPushDeviceViewModel.d.ts.map +1 -1
- package/dist/react/hooks/services/useAiServices.d.ts +6 -1
- package/dist/react/hooks/services/useAiServices.d.ts.map +1 -1
- package/dist/react/hooks/services/useAiServices.js +7 -0
- package/dist/react/hooks/services/useAiServices.js.map +1 -1
- package/dist/react/hooks/services/useApplicationCatalogueServices.d.ts +7 -1
- package/dist/react/hooks/services/useApplicationCatalogueServices.d.ts.map +1 -1
- package/dist/react/hooks/services/useApplicationCatalogueServices.js +8 -0
- package/dist/react/hooks/services/useApplicationCatalogueServices.js.map +1 -1
- package/dist/react/hooks/services/useBudgetsServices.d.ts +13 -1
- package/dist/react/hooks/services/useBudgetsServices.d.ts.map +1 -1
- package/dist/react/hooks/services/useBudgetsServices.js +30 -0
- package/dist/react/hooks/services/useBudgetsServices.js.map +1 -1
- package/dist/services/accounselling/CareCaseService.d.ts +16 -0
- package/dist/services/accounselling/CareCaseService.d.ts.map +1 -1
- package/dist/services/accounselling/CareCaseService.js +25 -0
- package/dist/services/accounselling/CareCaseService.js.map +1 -1
- package/dist/services/accounselling/CareRequestService.d.ts +19 -1
- package/dist/services/accounselling/CareRequestService.d.ts.map +1 -1
- package/dist/services/accounselling/CareRequestService.js +27 -0
- package/dist/services/accounselling/CareRequestService.js.map +1 -1
- package/dist/services/accounselling/CareSessionService.d.ts +17 -1
- package/dist/services/accounselling/CareSessionService.d.ts.map +1 -1
- package/dist/services/accounselling/CareSessionService.js +25 -0
- package/dist/services/accounselling/CareSessionService.js.map +1 -1
- package/dist/services/accourses/ACCourseService.d.ts +6 -0
- package/dist/services/accourses/ACCourseService.d.ts.map +1 -1
- package/dist/services/accourses/ACCourseService.js +13 -0
- package/dist/services/accourses/ACCourseService.js.map +1 -1
- package/dist/services/accourses/FacilitatorService.d.ts +6 -0
- package/dist/services/accourses/FacilitatorService.d.ts.map +1 -1
- package/dist/services/accourses/FacilitatorService.js +13 -0
- package/dist/services/accourses/FacilitatorService.js.map +1 -1
- package/dist/services/accourses/RegistrationService.d.ts +22 -1
- package/dist/services/accourses/RegistrationService.d.ts.map +1 -1
- package/dist/services/accourses/RegistrationService.js +78 -0
- package/dist/services/accourses/RegistrationService.js.map +1 -1
- package/dist/services/ai/AiBudgetAnalyticsService.d.ts +40 -0
- package/dist/services/ai/AiBudgetAnalyticsService.d.ts.map +1 -0
- package/dist/services/ai/AiBudgetAnalyticsService.js +63 -0
- package/dist/services/ai/AiBudgetAnalyticsService.js.map +1 -0
- package/dist/services/ai/index.d.ts +3 -0
- package/dist/services/ai/index.d.ts.map +1 -1
- package/dist/services/ai/index.js +3 -0
- package/dist/services/ai/index.js.map +1 -1
- package/dist/services/applicationcatalogue/AppDistributionService.d.ts +142 -0
- package/dist/services/applicationcatalogue/AppDistributionService.d.ts.map +1 -0
- package/dist/services/applicationcatalogue/AppDistributionService.js +251 -0
- package/dist/services/applicationcatalogue/AppDistributionService.js.map +1 -0
- package/dist/services/applicationcatalogue/index.d.ts +8 -1
- package/dist/services/applicationcatalogue/index.d.ts.map +1 -1
- package/dist/services/applicationcatalogue/index.js +4 -1
- package/dist/services/applicationcatalogue/index.js.map +1 -1
- package/dist/services/budgets/BudgetAlertService.d.ts +4 -3
- package/dist/services/budgets/BudgetAlertService.d.ts.map +1 -1
- package/dist/services/budgets/BudgetAlertService.js +2 -1
- package/dist/services/budgets/BudgetAlertService.js.map +1 -1
- package/dist/services/budgets/BudgetAmountInputTypeService.d.ts +16 -0
- package/dist/services/budgets/BudgetAmountInputTypeService.d.ts.map +1 -0
- package/dist/services/budgets/BudgetAmountInputTypeService.js +19 -0
- package/dist/services/budgets/BudgetAmountInputTypeService.js.map +1 -0
- package/dist/services/budgets/BudgetAnomalyService.d.ts +36 -0
- package/dist/services/budgets/BudgetAnomalyService.d.ts.map +1 -0
- package/dist/services/budgets/BudgetAnomalyService.js +54 -0
- package/dist/services/budgets/BudgetAnomalyService.js.map +1 -0
- package/dist/services/budgets/BudgetApprovalService.d.ts +4 -4
- package/dist/services/budgets/BudgetApprovalService.d.ts.map +1 -1
- package/dist/services/budgets/BudgetApprovalService.js +1 -1
- package/dist/services/budgets/BudgetApprovalService.js.map +1 -1
- package/dist/services/budgets/BudgetCategoryService.d.ts +30 -0
- package/dist/services/budgets/BudgetCategoryService.d.ts.map +1 -0
- package/dist/services/budgets/BudgetCategoryService.js +57 -0
- package/dist/services/budgets/BudgetCategoryService.js.map +1 -0
- package/dist/services/budgets/BudgetChangeRequestService.d.ts +40 -0
- package/dist/services/budgets/BudgetChangeRequestService.d.ts.map +1 -0
- package/dist/services/budgets/BudgetChangeRequestService.js +74 -0
- package/dist/services/budgets/BudgetChangeRequestService.js.map +1 -0
- package/dist/services/budgets/BudgetChangeRequestTypeService.d.ts +16 -0
- package/dist/services/budgets/BudgetChangeRequestTypeService.d.ts.map +1 -0
- package/dist/services/budgets/BudgetChangeRequestTypeService.js +19 -0
- package/dist/services/budgets/BudgetChangeRequestTypeService.js.map +1 -0
- package/dist/services/budgets/BudgetDashboardService.d.ts +29 -2
- package/dist/services/budgets/BudgetDashboardService.d.ts.map +1 -1
- package/dist/services/budgets/BudgetDashboardService.js +47 -1
- package/dist/services/budgets/BudgetDashboardService.js.map +1 -1
- package/dist/services/budgets/BudgetForecastService.d.ts +57 -0
- package/dist/services/budgets/BudgetForecastService.d.ts.map +1 -0
- package/dist/services/budgets/BudgetForecastService.js +87 -0
- package/dist/services/budgets/BudgetForecastService.js.map +1 -0
- package/dist/services/budgets/BudgetItemService.d.ts +9 -1
- package/dist/services/budgets/BudgetItemService.d.ts.map +1 -1
- package/dist/services/budgets/BudgetItemService.js +14 -0
- package/dist/services/budgets/BudgetItemService.js.map +1 -1
- package/dist/services/budgets/BudgetReleaseService.d.ts +33 -0
- package/dist/services/budgets/BudgetReleaseService.d.ts.map +1 -0
- package/dist/services/budgets/BudgetReleaseService.js +63 -0
- package/dist/services/budgets/BudgetReleaseService.js.map +1 -0
- package/dist/services/budgets/BudgetReleaseValueTypeService.d.ts +16 -0
- package/dist/services/budgets/BudgetReleaseValueTypeService.d.ts.map +1 -0
- package/dist/services/budgets/BudgetReleaseValueTypeService.js +19 -0
- package/dist/services/budgets/BudgetReleaseValueTypeService.js.map +1 -0
- package/dist/services/budgets/BudgetReportService.d.ts +34 -0
- package/dist/services/budgets/BudgetReportService.d.ts.map +1 -0
- package/dist/services/budgets/BudgetReportService.js +55 -0
- package/dist/services/budgets/BudgetReportService.js.map +1 -0
- package/dist/services/budgets/BudgetService.d.ts +16 -1
- package/dist/services/budgets/BudgetService.d.ts.map +1 -1
- package/dist/services/budgets/BudgetService.js +35 -0
- package/dist/services/budgets/BudgetService.js.map +1 -1
- package/dist/services/budgets/BudgetTransactionService.d.ts +11 -1
- package/dist/services/budgets/BudgetTransactionService.d.ts.map +1 -1
- package/dist/services/budgets/BudgetTransactionService.js +21 -0
- package/dist/services/budgets/BudgetTransactionService.js.map +1 -1
- package/dist/services/budgets/index.d.ts +38 -0
- package/dist/services/budgets/index.d.ts.map +1 -1
- package/dist/services/budgets/index.js +28 -0
- package/dist/services/budgets/index.js.map +1 -1
- package/dist/services/communication/EmailService.d.ts +11 -0
- package/dist/services/communication/EmailService.d.ts.map +1 -1
- package/dist/services/communication/EmailService.js +17 -0
- package/dist/services/communication/EmailService.js.map +1 -1
- package/dist/services/communication/PushNotificationService.d.ts +24 -0
- package/dist/services/communication/PushNotificationService.d.ts.map +1 -1
- package/dist/services/communication/PushNotificationService.js +38 -0
- package/dist/services/communication/PushNotificationService.js.map +1 -1
- package/dist/services/communication/SmsService.d.ts +11 -0
- package/dist/services/communication/SmsService.d.ts.map +1 -1
- package/dist/services/communication/SmsService.js +17 -0
- package/dist/services/communication/SmsService.js.map +1 -1
- package/dist/services/task-portal/models/index.d.ts +1 -0
- package/dist/services/task-portal/models/index.d.ts.map +1 -1
- package/dist/services/users/UserPushDeviceService.d.ts +11 -0
- package/dist/services/users/UserPushDeviceService.d.ts.map +1 -1
- package/dist/services/users/UserPushDeviceService.js +17 -0
- package/dist/services/users/UserPushDeviceService.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BudgetCategoryService
|
|
3
|
+
* Budget sections ("Sound", "Catering", …) of a budget (nested route).
|
|
4
|
+
* Feeds the bottom-up estimated total: Σ effective section totals + Σ uncategorized items.
|
|
5
|
+
* Route: api/budgets/{budgetId}/categories
|
|
6
|
+
*/
|
|
7
|
+
export class BudgetCategoryService {
|
|
8
|
+
constructor(http, config) {
|
|
9
|
+
this.http = http;
|
|
10
|
+
this.servicePath = config?.servicePath ?? BudgetCategoryService.DEFAULT_SERVICE_PATH;
|
|
11
|
+
}
|
|
12
|
+
buildUrl(budgetId, path) {
|
|
13
|
+
const base = `${this.servicePath}/api/budgets/${budgetId}/categories`;
|
|
14
|
+
const url = path ? `${base}/${path}` : base;
|
|
15
|
+
return url.startsWith('/') ? url : '/' + url;
|
|
16
|
+
}
|
|
17
|
+
/** All sections of a budget with computed figures (itemCount / itemsTotal / effectiveTotal). */
|
|
18
|
+
async getByBudget(budgetId) {
|
|
19
|
+
const response = await this.getByBudgetRaw(budgetId);
|
|
20
|
+
return response.data ?? [];
|
|
21
|
+
}
|
|
22
|
+
getByBudgetRaw(budgetId) {
|
|
23
|
+
return this.http.get(this.buildUrl(budgetId));
|
|
24
|
+
}
|
|
25
|
+
/** Add a section (one name per budget, case-insensitive). */
|
|
26
|
+
async create(budgetId, body) {
|
|
27
|
+
const response = await this.createRaw(budgetId, body);
|
|
28
|
+
if (!response.data)
|
|
29
|
+
throw new Error(`Failed to create section for budget ${budgetId}`);
|
|
30
|
+
return response.data;
|
|
31
|
+
}
|
|
32
|
+
createRaw(budgetId, body) {
|
|
33
|
+
return this.http.post(this.buildUrl(budgetId), body);
|
|
34
|
+
}
|
|
35
|
+
/** Update a section (partial; clearPlannedAmount nulls the lump amount). */
|
|
36
|
+
async update(budgetId, categoryId, body) {
|
|
37
|
+
const response = await this.updateRaw(budgetId, categoryId, body);
|
|
38
|
+
if (!response.data)
|
|
39
|
+
throw new Error(`Failed to update budget section ${categoryId}`);
|
|
40
|
+
return response.data;
|
|
41
|
+
}
|
|
42
|
+
updateRaw(budgetId, categoryId, body) {
|
|
43
|
+
return this.http.put(this.buildUrl(budgetId, String(categoryId)), body);
|
|
44
|
+
}
|
|
45
|
+
/** NULL-OUT delete — returns how many items were uncategorized. */
|
|
46
|
+
async delete(budgetId, categoryId) {
|
|
47
|
+
const response = await this.deleteRaw(budgetId, categoryId);
|
|
48
|
+
if (!response.success)
|
|
49
|
+
throw new Error(`Failed to delete budget section ${categoryId}`);
|
|
50
|
+
return response.data ?? 0;
|
|
51
|
+
}
|
|
52
|
+
deleteRaw(budgetId, categoryId) {
|
|
53
|
+
return this.http.delete(this.buildUrl(budgetId, String(categoryId)));
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
BudgetCategoryService.DEFAULT_SERVICE_PATH = 'budgets';
|
|
57
|
+
//# sourceMappingURL=BudgetCategoryService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BudgetCategoryService.js","sourceRoot":"","sources":["../../../src/services/budgets/BudgetCategoryService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BudgetChangeRequestService
|
|
3
|
+
* Manager-raised requests to change an APPROVED budget; BudgetAdmins decide.
|
|
4
|
+
* Routes: api/budgets/{budgetId}/change-requests (create),
|
|
5
|
+
* api/budget-change-requests (+ /mine, /{id}/approve, /{id}/reject)
|
|
6
|
+
*/
|
|
7
|
+
import { HttpClient } from '../../core/HttpClient';
|
|
8
|
+
import type { ResponseData } from '../../models/common';
|
|
9
|
+
import { ServiceConfig } from '../types';
|
|
10
|
+
import { BudgetChangeRequestModelView, CreateBudgetChangeRequestViewModel, DecideBudgetChangeRequestViewModel } from '../../models/budgets';
|
|
11
|
+
/** Query filter for GET api/budget-change-requests (and /mine). */
|
|
12
|
+
export interface BudgetChangeRequestFilter {
|
|
13
|
+
/** 0 Pending / 1 Approved / -2 Rejected */
|
|
14
|
+
statusId?: number;
|
|
15
|
+
budgetId?: number;
|
|
16
|
+
}
|
|
17
|
+
export declare class BudgetChangeRequestService {
|
|
18
|
+
private static readonly DEFAULT_SERVICE_PATH;
|
|
19
|
+
private readonly http;
|
|
20
|
+
private readonly servicePath;
|
|
21
|
+
constructor(http: HttpClient, config?: ServiceConfig);
|
|
22
|
+
private buildUrl;
|
|
23
|
+
private buildFilteredUrl;
|
|
24
|
+
/** Raise a change request against an approved budget (managers). */
|
|
25
|
+
create(budgetId: number, body: CreateBudgetChangeRequestViewModel): Promise<BudgetChangeRequestModelView>;
|
|
26
|
+
createRaw(budgetId: number, body: CreateBudgetChangeRequestViewModel): Promise<ResponseData<BudgetChangeRequestModelView>>;
|
|
27
|
+
/** Admin review queue, optionally filtered by status and/or budget. */
|
|
28
|
+
getAll(filter?: BudgetChangeRequestFilter): Promise<BudgetChangeRequestModelView[]>;
|
|
29
|
+
getAllRaw(filter?: BudgetChangeRequestFilter): Promise<ResponseData<BudgetChangeRequestModelView[]>>;
|
|
30
|
+
/** The calling user's own change requests (any authenticated user). */
|
|
31
|
+
getMine(filter?: BudgetChangeRequestFilter): Promise<BudgetChangeRequestModelView[]>;
|
|
32
|
+
getMineRaw(filter?: BudgetChangeRequestFilter): Promise<ResponseData<BudgetChangeRequestModelView[]>>;
|
|
33
|
+
/** Approve a Pending request — APPLIES the amendment + re-arms thresholds (BudgetAdmin). */
|
|
34
|
+
approve(id: number, body?: DecideBudgetChangeRequestViewModel): Promise<BudgetChangeRequestModelView>;
|
|
35
|
+
approveRaw(id: number, body?: DecideBudgetChangeRequestViewModel): Promise<ResponseData<BudgetChangeRequestModelView>>;
|
|
36
|
+
/** Reject a Pending request — comments are REQUIRED (BudgetAdmin). */
|
|
37
|
+
reject(id: number, body: DecideBudgetChangeRequestViewModel): Promise<BudgetChangeRequestModelView>;
|
|
38
|
+
rejectRaw(id: number, body: DecideBudgetChangeRequestViewModel): Promise<ResponseData<BudgetChangeRequestModelView>>;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=BudgetChangeRequestService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BudgetChangeRequestService.d.ts","sourceRoot":"","sources":["../../../src/services/budgets/BudgetChangeRequestService.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EACL,4BAA4B,EAC5B,kCAAkC,EAClC,kCAAkC,EACnC,MAAM,sBAAsB,CAAC;AAE9B,mEAAmE;AACnE,MAAM,WAAW,yBAAyB;IACxC,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,0BAA0B;IACrC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAa;IACzD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;IAClC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;gBAEzB,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,aAAa;IAKpD,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,gBAAgB;IASxB,oEAAoE;IAC9D,MAAM,CACV,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,kCAAkC,GACvC,OAAO,CAAC,4BAA4B,CAAC;IAKxC,SAAS,CACP,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,kCAAkC,GACvC,OAAO,CAAC,YAAY,CAAC,4BAA4B,CAAC,CAAC;IAOtD,uEAAuE;IACjE,MAAM,CAAC,MAAM,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,4BAA4B,EAAE,CAAC;IAIzF,SAAS,CAAC,MAAM,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,YAAY,CAAC,4BAA4B,EAAE,CAAC,CAAC;IAMpG,uEAAuE;IACjE,OAAO,CAAC,MAAM,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,4BAA4B,EAAE,CAAC;IAI1F,UAAU,CAAC,MAAM,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,YAAY,CAAC,4BAA4B,EAAE,CAAC,CAAC;IAMrG,4FAA4F;IACtF,OAAO,CACX,EAAE,EAAE,MAAM,EACV,IAAI,CAAC,EAAE,kCAAkC,GACxC,OAAO,CAAC,4BAA4B,CAAC;IAKxC,UAAU,CACR,EAAE,EAAE,MAAM,EACV,IAAI,CAAC,EAAE,kCAAkC,GACxC,OAAO,CAAC,YAAY,CAAC,4BAA4B,CAAC,CAAC;IAOtD,sEAAsE;IAChE,MAAM,CACV,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,kCAAkC,GACvC,OAAO,CAAC,4BAA4B,CAAC;IAKxC,SAAS,CACP,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,kCAAkC,GACvC,OAAO,CAAC,YAAY,CAAC,4BAA4B,CAAC,CAAC;CAMvD"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BudgetChangeRequestService
|
|
3
|
+
* Manager-raised requests to change an APPROVED budget; BudgetAdmins decide.
|
|
4
|
+
* Routes: api/budgets/{budgetId}/change-requests (create),
|
|
5
|
+
* api/budget-change-requests (+ /mine, /{id}/approve, /{id}/reject)
|
|
6
|
+
*/
|
|
7
|
+
export class BudgetChangeRequestService {
|
|
8
|
+
constructor(http, config) {
|
|
9
|
+
this.http = http;
|
|
10
|
+
this.servicePath = config?.servicePath ?? BudgetChangeRequestService.DEFAULT_SERVICE_PATH;
|
|
11
|
+
}
|
|
12
|
+
buildUrl(path) {
|
|
13
|
+
const url = `${this.servicePath}/${path}`;
|
|
14
|
+
return url.startsWith('/') ? url : '/' + url;
|
|
15
|
+
}
|
|
16
|
+
buildFilteredUrl(path, filter) {
|
|
17
|
+
const params = new URLSearchParams();
|
|
18
|
+
if (filter?.statusId !== undefined)
|
|
19
|
+
params.append('statusId', String(filter.statusId));
|
|
20
|
+
if (filter?.budgetId !== undefined)
|
|
21
|
+
params.append('budgetId', String(filter.budgetId));
|
|
22
|
+
const qs = params.toString();
|
|
23
|
+
const url = this.buildUrl(path);
|
|
24
|
+
return qs ? `${url}?${qs}` : url;
|
|
25
|
+
}
|
|
26
|
+
/** Raise a change request against an approved budget (managers). */
|
|
27
|
+
async create(budgetId, body) {
|
|
28
|
+
const response = await this.createRaw(budgetId, body);
|
|
29
|
+
if (!response.data)
|
|
30
|
+
throw new Error(`Failed to create change request for budget ${budgetId}`);
|
|
31
|
+
return response.data;
|
|
32
|
+
}
|
|
33
|
+
createRaw(budgetId, body) {
|
|
34
|
+
return this.http.post(this.buildUrl(`api/budgets/${budgetId}/change-requests`), body);
|
|
35
|
+
}
|
|
36
|
+
/** Admin review queue, optionally filtered by status and/or budget. */
|
|
37
|
+
async getAll(filter) {
|
|
38
|
+
const response = await this.getAllRaw(filter);
|
|
39
|
+
return response.data ?? [];
|
|
40
|
+
}
|
|
41
|
+
getAllRaw(filter) {
|
|
42
|
+
return this.http.get(this.buildFilteredUrl('api/budget-change-requests', filter));
|
|
43
|
+
}
|
|
44
|
+
/** The calling user's own change requests (any authenticated user). */
|
|
45
|
+
async getMine(filter) {
|
|
46
|
+
const response = await this.getMineRaw(filter);
|
|
47
|
+
return response.data ?? [];
|
|
48
|
+
}
|
|
49
|
+
getMineRaw(filter) {
|
|
50
|
+
return this.http.get(this.buildFilteredUrl('api/budget-change-requests/mine', filter));
|
|
51
|
+
}
|
|
52
|
+
/** Approve a Pending request — APPLIES the amendment + re-arms thresholds (BudgetAdmin). */
|
|
53
|
+
async approve(id, body) {
|
|
54
|
+
const response = await this.approveRaw(id, body);
|
|
55
|
+
if (!response.data)
|
|
56
|
+
throw new Error(`Failed to approve change request ${id}`);
|
|
57
|
+
return response.data;
|
|
58
|
+
}
|
|
59
|
+
approveRaw(id, body) {
|
|
60
|
+
return this.http.put(this.buildUrl(`api/budget-change-requests/${id}/approve`), body ?? {});
|
|
61
|
+
}
|
|
62
|
+
/** Reject a Pending request — comments are REQUIRED (BudgetAdmin). */
|
|
63
|
+
async reject(id, body) {
|
|
64
|
+
const response = await this.rejectRaw(id, body);
|
|
65
|
+
if (!response.data)
|
|
66
|
+
throw new Error(`Failed to reject change request ${id}`);
|
|
67
|
+
return response.data;
|
|
68
|
+
}
|
|
69
|
+
rejectRaw(id, body) {
|
|
70
|
+
return this.http.put(this.buildUrl(`api/budget-change-requests/${id}/reject`), body);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
BudgetChangeRequestService.DEFAULT_SERVICE_PATH = 'budgets';
|
|
74
|
+
//# sourceMappingURL=BudgetChangeRequestService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BudgetChangeRequestService.js","sourceRoot":"","sources":["../../../src/services/budgets/BudgetChangeRequestService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BudgetChangeRequestTypeService
|
|
3
|
+
* Service for BudgetChangeRequestType lookup CRUD operations
|
|
4
|
+
* (1 IncreaseAmount).
|
|
5
|
+
*/
|
|
6
|
+
import { CrudService } from '../base/CrudService';
|
|
7
|
+
import type { HttpClient } from '../../core/HttpClient';
|
|
8
|
+
import type { ServiceConfig } from '../types';
|
|
9
|
+
import type { BudgetChangeRequestType } from '../../models/budgets';
|
|
10
|
+
/** Service for BudgetChangeRequestType CRUD operations */
|
|
11
|
+
export declare class BudgetChangeRequestTypeService extends CrudService<BudgetChangeRequestType, Partial<BudgetChangeRequestType>, Partial<BudgetChangeRequestType>> {
|
|
12
|
+
private static readonly DEFAULT_SERVICE_PATH;
|
|
13
|
+
private static readonly BASE_PATH;
|
|
14
|
+
constructor(http: HttpClient, config?: ServiceConfig);
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=BudgetChangeRequestTypeService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BudgetChangeRequestTypeService.d.ts","sourceRoot":"","sources":["../../../src/services/budgets/BudgetChangeRequestTypeService.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAEpE,0DAA0D;AAC1D,qBAAa,8BAA+B,SAAQ,WAAW,CAC7D,uBAAuB,EACvB,OAAO,CAAC,uBAAuB,CAAC,EAChC,OAAO,CAAC,uBAAuB,CAAC,CACjC;IACC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAa;IACzD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAqC;gBAE1D,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,aAAa;CAOrD"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BudgetChangeRequestTypeService
|
|
3
|
+
* Service for BudgetChangeRequestType lookup CRUD operations
|
|
4
|
+
* (1 IncreaseAmount).
|
|
5
|
+
*/
|
|
6
|
+
import { CrudService } from '../base/CrudService';
|
|
7
|
+
/** Service for BudgetChangeRequestType CRUD operations */
|
|
8
|
+
export class BudgetChangeRequestTypeService extends CrudService {
|
|
9
|
+
constructor(http, config) {
|
|
10
|
+
super(http, {
|
|
11
|
+
servicePath: config?.servicePath ?? BudgetChangeRequestTypeService.DEFAULT_SERVICE_PATH,
|
|
12
|
+
basePath: BudgetChangeRequestTypeService.BASE_PATH,
|
|
13
|
+
endpoints: config?.endpoints,
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
BudgetChangeRequestTypeService.DEFAULT_SERVICE_PATH = 'budgets';
|
|
18
|
+
BudgetChangeRequestTypeService.BASE_PATH = 'api/budget-change-request-types';
|
|
19
|
+
//# sourceMappingURL=BudgetChangeRequestTypeService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BudgetChangeRequestTypeService.js","sourceRoot":"","sources":["../../../src/services/budgets/BudgetChangeRequestTypeService.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAKlD,0DAA0D;AAC1D,MAAM,OAAO,8BAA+B,SAAQ,WAInD;IAIC,YAAY,IAAgB,EAAE,MAAsB;QAClD,KAAK,CAAC,IAAI,EAAE;YACV,WAAW,EAAE,MAAM,EAAE,WAAW,IAAI,8BAA8B,CAAC,oBAAoB;YACvF,QAAQ,EAAE,8BAA8B,CAAC,SAAS;YAClD,SAAS,EAAE,MAAM,EAAE,SAAS;SAC7B,CAAC,CAAC;IACL,CAAC;;AATuB,mDAAoB,GAAG,SAAS,CAAC;AACjC,wCAAS,GAAG,iCAAiC,CAAC"}
|
|
@@ -1,11 +1,24 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* BudgetDashboardService
|
|
3
|
-
* Org-wide budget dashboard: consumption overview
|
|
3
|
+
* Org-wide budget dashboard: consumption overview, unbudgeted spend queue,
|
|
4
|
+
* the manager-scoped my-overview and grouped analytics (+ matrix).
|
|
4
5
|
* Route: api/budget-dashboard
|
|
5
6
|
*/
|
|
6
7
|
import { HttpClient } from '../../core/HttpClient';
|
|
8
|
+
import type { ResponseData } from '../../models/common';
|
|
7
9
|
import { ServiceConfig } from '../types';
|
|
8
|
-
import { BudgetDashboardOverview, BudgetTransactionPage } from '../../models/budgets';
|
|
10
|
+
import { BudgetDashboardOverview, BudgetTransactionPage, BudgetMyOverview, BudgetAnalyticsRow, BudgetAnalyticsMatrix } from '../../models/budgets';
|
|
11
|
+
/** Query for GET api/budget-dashboard/analytics. */
|
|
12
|
+
export interface BudgetAnalyticsQuery {
|
|
13
|
+
/** department | location | project | user (default department) */
|
|
14
|
+
groupBy?: string;
|
|
15
|
+
/** yyyyMMddHHmmss period start */
|
|
16
|
+
from?: number;
|
|
17
|
+
/** yyyyMMddHHmmss period end */
|
|
18
|
+
to?: number;
|
|
19
|
+
/** Restrict to one BudgetType */
|
|
20
|
+
typeId?: number;
|
|
21
|
+
}
|
|
9
22
|
export declare class BudgetDashboardService {
|
|
10
23
|
private static readonly DEFAULT_SERVICE_PATH;
|
|
11
24
|
private static readonly BASE_PATH;
|
|
@@ -17,5 +30,19 @@ export declare class BudgetDashboardService {
|
|
|
17
30
|
getOverview(): Promise<BudgetDashboardOverview>;
|
|
18
31
|
/** One page of the unbudgeted spend queue. */
|
|
19
32
|
getUnbudgeted(page?: number, pageSize?: number): Promise<BudgetTransactionPage>;
|
|
33
|
+
/** The BudgetManager-scoped dashboard: my budgets, alerts and open change requests. */
|
|
34
|
+
getMyOverview(): Promise<BudgetMyOverview>;
|
|
35
|
+
getMyOverviewRaw(): Promise<ResponseData<BudgetMyOverview>>;
|
|
36
|
+
/**
|
|
37
|
+
* Grouped analytics: groupBy=department|location|project|user|supplier.
|
|
38
|
+
*
|
|
39
|
+
* from/to (yyyyMMddHHmmss) slice SPEND only — allocated and released-to-date are budget-side
|
|
40
|
+
* figures, not time series, and are always whole-of-budget.
|
|
41
|
+
*/
|
|
42
|
+
getAnalytics(query?: BudgetAnalyticsQuery): Promise<BudgetAnalyticsRow[]>;
|
|
43
|
+
getAnalyticsRaw(query?: BudgetAnalyticsQuery): Promise<ResponseData<BudgetAnalyticsRow[]>>;
|
|
44
|
+
/** Cross-dimension spend matrix: rows/cols ∈ department|location|project (must differ). */
|
|
45
|
+
getMatrix(rows?: string, cols?: string): Promise<BudgetAnalyticsMatrix>;
|
|
46
|
+
getMatrixRaw(rows?: string, cols?: string): Promise<ResponseData<BudgetAnalyticsMatrix>>;
|
|
20
47
|
}
|
|
21
48
|
//# sourceMappingURL=BudgetDashboardService.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BudgetDashboardService.d.ts","sourceRoot":"","sources":["../../../src/services/budgets/BudgetDashboardService.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"BudgetDashboardService.d.ts","sourceRoot":"","sources":["../../../src/services/budgets/BudgetDashboardService.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACtB,MAAM,sBAAsB,CAAC;AAE9B,oDAAoD;AACpD,MAAM,WAAW,oBAAoB;IACnC,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kCAAkC;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gCAAgC;IAChC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,iCAAiC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAa;IACzD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAA0B;IAC3D,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAEtB,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,aAAa;IAMpD,OAAO,CAAC,QAAQ;IAKhB,qFAAqF;IAC/E,WAAW,IAAI,OAAO,CAAC,uBAAuB,CAAC;IAMrD,8CAA8C;IACxC,aAAa,CAAC,IAAI,SAAI,EAAE,QAAQ,SAAK,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAQ5E,uFAAuF;IACjF,aAAa,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAKhD,gBAAgB,IAAI,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;IAI3D;;;;;OAKG;IACG,YAAY,CAAC,KAAK,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAI/E,eAAe,CAAC,KAAK,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,YAAY,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAW1F,2FAA2F;IACrF,SAAS,CAAC,IAAI,SAAe,EAAE,IAAI,SAAa,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAKvF,YAAY,CAAC,IAAI,SAAe,EAAE,IAAI,SAAa,GAAG,OAAO,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC;CAInG"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* BudgetDashboardService
|
|
3
|
-
* Org-wide budget dashboard: consumption overview
|
|
3
|
+
* Org-wide budget dashboard: consumption overview, unbudgeted spend queue,
|
|
4
|
+
* the manager-scoped my-overview and grouped analytics (+ matrix).
|
|
4
5
|
* Route: api/budget-dashboard
|
|
5
6
|
*/
|
|
6
7
|
export class BudgetDashboardService {
|
|
@@ -27,6 +28,51 @@ export class BudgetDashboardService {
|
|
|
27
28
|
throw new Error('Unbudgeted transactions not available');
|
|
28
29
|
return response.data;
|
|
29
30
|
}
|
|
31
|
+
/** The BudgetManager-scoped dashboard: my budgets, alerts and open change requests. */
|
|
32
|
+
async getMyOverview() {
|
|
33
|
+
const response = await this.getMyOverviewRaw();
|
|
34
|
+
if (!response.data)
|
|
35
|
+
throw new Error('Budget my-overview not available');
|
|
36
|
+
return response.data;
|
|
37
|
+
}
|
|
38
|
+
getMyOverviewRaw() {
|
|
39
|
+
return this.http.get(this.buildUrl('my-overview'));
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Grouped analytics: groupBy=department|location|project|user|supplier.
|
|
43
|
+
*
|
|
44
|
+
* from/to (yyyyMMddHHmmss) slice SPEND only — allocated and released-to-date are budget-side
|
|
45
|
+
* figures, not time series, and are always whole-of-budget.
|
|
46
|
+
*/
|
|
47
|
+
async getAnalytics(query) {
|
|
48
|
+
const response = await this.getAnalyticsRaw(query);
|
|
49
|
+
return response.data ?? [];
|
|
50
|
+
}
|
|
51
|
+
getAnalyticsRaw(query) {
|
|
52
|
+
const params = new URLSearchParams();
|
|
53
|
+
if (query?.groupBy !== undefined)
|
|
54
|
+
params.append('groupBy', query.groupBy);
|
|
55
|
+
if (query?.from !== undefined)
|
|
56
|
+
params.append('from', String(query.from));
|
|
57
|
+
if (query?.to !== undefined)
|
|
58
|
+
params.append('to', String(query.to));
|
|
59
|
+
if (query?.typeId !== undefined)
|
|
60
|
+
params.append('typeId', String(query.typeId));
|
|
61
|
+
const qs = params.toString();
|
|
62
|
+
const url = this.buildUrl('analytics');
|
|
63
|
+
return this.http.get(qs ? `${url}?${qs}` : url);
|
|
64
|
+
}
|
|
65
|
+
/** Cross-dimension spend matrix: rows/cols ∈ department|location|project (must differ). */
|
|
66
|
+
async getMatrix(rows = 'department', cols = 'location') {
|
|
67
|
+
const response = await this.getMatrixRaw(rows, cols);
|
|
68
|
+
if (!response.data)
|
|
69
|
+
throw new Error('Budget analytics matrix not available');
|
|
70
|
+
return response.data;
|
|
71
|
+
}
|
|
72
|
+
getMatrixRaw(rows = 'department', cols = 'location') {
|
|
73
|
+
const params = new URLSearchParams({ rows, cols });
|
|
74
|
+
return this.http.get(`${this.buildUrl('analytics/matrix')}?${params.toString()}`);
|
|
75
|
+
}
|
|
30
76
|
}
|
|
31
77
|
BudgetDashboardService.DEFAULT_SERVICE_PATH = 'budgets';
|
|
32
78
|
BudgetDashboardService.BASE_PATH = 'api/budget-dashboard';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BudgetDashboardService.js","sourceRoot":"","sources":["../../../src/services/budgets/BudgetDashboardService.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"BudgetDashboardService.js","sourceRoot":"","sources":["../../../src/services/budgets/BudgetDashboardService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BudgetForecastService
|
|
3
|
+
*
|
|
4
|
+
* Forecasting: where each budget is HEADED. Every figure is deterministic — computed by the
|
|
5
|
+
* backend from the ledger, not by a model.
|
|
6
|
+
*
|
|
7
|
+
* Note the scoping: a BudgetManager may read the forecast of a budget they own or manage
|
|
8
|
+
* (a manager learning their budget runs out three weeks early is the most valuable thing in
|
|
9
|
+
* this feature), but the org-wide rollups are Admin/BudgetAdmin only.
|
|
10
|
+
*/
|
|
11
|
+
import { HttpClient } from '../../core/HttpClient';
|
|
12
|
+
import type { ResponseData } from '../../models/common';
|
|
13
|
+
import { ServiceConfig } from '../types';
|
|
14
|
+
import { BudgetForecast, BudgetForecastOverview, BudgetForecastSnapshot, BudgetTrendsView, BudgetVarianceView, BudgetCashflowView } from '../../models/budgets';
|
|
15
|
+
export declare class BudgetForecastService {
|
|
16
|
+
private static readonly DEFAULT_SERVICE_PATH;
|
|
17
|
+
private readonly http;
|
|
18
|
+
private readonly servicePath;
|
|
19
|
+
constructor(http: HttpClient, config?: ServiceConfig);
|
|
20
|
+
private buildUrl;
|
|
21
|
+
/** One budget's forecast: series, projection, risk, confidence. */
|
|
22
|
+
getForecast(budgetId: number): Promise<BudgetForecast | null>;
|
|
23
|
+
getForecastRaw(budgetId: number): Promise<ResponseData<BudgetForecast>>;
|
|
24
|
+
/**
|
|
25
|
+
* How the forecast itself has MOVED — the nightly snapshot history. A projected overrun
|
|
26
|
+
* that has doubled in a fortnight is a different story from one that has been stable.
|
|
27
|
+
*/
|
|
28
|
+
getHistory(budgetId: number): Promise<BudgetForecastSnapshot[]>;
|
|
29
|
+
getHistoryRaw(budgetId: number): Promise<ResponseData<BudgetForecastSnapshot[]>>;
|
|
30
|
+
/** The org's forward position: at-risk budgets, projected overrun, runway ranking. */
|
|
31
|
+
getOverview(): Promise<BudgetForecastOverview | null>;
|
|
32
|
+
getOverviewRaw(): Promise<ResponseData<BudgetForecastOverview>>;
|
|
33
|
+
/** Monthly spend over time. budgetId scopes it; from/to are yyyyMMddHHmmss stamps. */
|
|
34
|
+
getTrends(params?: {
|
|
35
|
+
budgetId?: number;
|
|
36
|
+
from?: number;
|
|
37
|
+
to?: number;
|
|
38
|
+
}): Promise<BudgetTrendsView | null>;
|
|
39
|
+
getTrendsRaw(params?: {
|
|
40
|
+
budgetId?: number;
|
|
41
|
+
from?: number;
|
|
42
|
+
to?: number;
|
|
43
|
+
}): Promise<ResponseData<BudgetTrendsView>>;
|
|
44
|
+
/** Plan vs actual for one budget, by category or allocation. */
|
|
45
|
+
getVariance(budgetId: number, dimension?: 'category' | 'allocation'): Promise<BudgetVarianceView | null>;
|
|
46
|
+
getVarianceRaw(budgetId: number, dimension?: 'category' | 'allocation'): Promise<ResponseData<BudgetVarianceView>>;
|
|
47
|
+
/** Released vs spent by month across EVERY budget — the org cashflow view. */
|
|
48
|
+
getCashflow(params?: {
|
|
49
|
+
from?: number;
|
|
50
|
+
to?: number;
|
|
51
|
+
}): Promise<BudgetCashflowView | null>;
|
|
52
|
+
getCashflowRaw(params?: {
|
|
53
|
+
from?: number;
|
|
54
|
+
to?: number;
|
|
55
|
+
}): Promise<ResponseData<BudgetCashflowView>>;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=BudgetForecastService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BudgetForecastService.d.ts","sourceRoot":"","sources":["../../../src/services/budgets/BudgetForecastService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,sBAAsB,EACtB,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,sBAAsB,CAAC;AAE9B,qBAAa,qBAAqB;IAChC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAa;IACzD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;IAClC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;gBAEzB,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,aAAa;IAKpD,OAAO,CAAC,QAAQ;IAKhB,mEAAmE;IAC7D,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAInE,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;IAIvE;;;OAGG;IACG,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAIrE,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,sBAAsB,EAAE,CAAC,CAAC;IAIhF,sFAAsF;IAChF,WAAW,IAAI,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC;IAI3D,cAAc,IAAI,OAAO,CAAC,YAAY,CAAC,sBAAsB,CAAC,CAAC;IAI/D,sFAAsF;IAChF,SAAS,CAAC,MAAM,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAI7G,YAAY,CAAC,MAAM,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;IASjH,gEAAgE;IAC1D,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,GAAE,UAAU,GAAG,YAAyB,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAI1H,cAAc,CACZ,QAAQ,EAAE,MAAM,EAChB,SAAS,GAAE,UAAU,GAAG,YAAyB,GAChD,OAAO,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC;IAM5C,8EAA8E;IACxE,WAAW,CAAC,MAAM,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAI9F,cAAc,CAAC,MAAM,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC;CAOnG"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BudgetForecastService
|
|
3
|
+
*
|
|
4
|
+
* Forecasting: where each budget is HEADED. Every figure is deterministic — computed by the
|
|
5
|
+
* backend from the ledger, not by a model.
|
|
6
|
+
*
|
|
7
|
+
* Note the scoping: a BudgetManager may read the forecast of a budget they own or manage
|
|
8
|
+
* (a manager learning their budget runs out three weeks early is the most valuable thing in
|
|
9
|
+
* this feature), but the org-wide rollups are Admin/BudgetAdmin only.
|
|
10
|
+
*/
|
|
11
|
+
export class BudgetForecastService {
|
|
12
|
+
constructor(http, config) {
|
|
13
|
+
this.http = http;
|
|
14
|
+
this.servicePath = config?.servicePath ?? BudgetForecastService.DEFAULT_SERVICE_PATH;
|
|
15
|
+
}
|
|
16
|
+
buildUrl(path) {
|
|
17
|
+
const url = `${this.servicePath}/api/${path}`;
|
|
18
|
+
return url.startsWith('/') ? url : '/' + url;
|
|
19
|
+
}
|
|
20
|
+
/** One budget's forecast: series, projection, risk, confidence. */
|
|
21
|
+
async getForecast(budgetId) {
|
|
22
|
+
const response = await this.getForecastRaw(budgetId);
|
|
23
|
+
return response.data ?? null;
|
|
24
|
+
}
|
|
25
|
+
getForecastRaw(budgetId) {
|
|
26
|
+
return this.http.get(this.buildUrl(`budgets/${budgetId}/forecast`));
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* How the forecast itself has MOVED — the nightly snapshot history. A projected overrun
|
|
30
|
+
* that has doubled in a fortnight is a different story from one that has been stable.
|
|
31
|
+
*/
|
|
32
|
+
async getHistory(budgetId) {
|
|
33
|
+
const response = await this.getHistoryRaw(budgetId);
|
|
34
|
+
return response.data ?? [];
|
|
35
|
+
}
|
|
36
|
+
getHistoryRaw(budgetId) {
|
|
37
|
+
return this.http.get(this.buildUrl(`budgets/${budgetId}/forecast/history`));
|
|
38
|
+
}
|
|
39
|
+
/** The org's forward position: at-risk budgets, projected overrun, runway ranking. */
|
|
40
|
+
async getOverview() {
|
|
41
|
+
const response = await this.getOverviewRaw();
|
|
42
|
+
return response.data ?? null;
|
|
43
|
+
}
|
|
44
|
+
getOverviewRaw() {
|
|
45
|
+
return this.http.get(this.buildUrl('budget-dashboard/forecast'));
|
|
46
|
+
}
|
|
47
|
+
/** Monthly spend over time. budgetId scopes it; from/to are yyyyMMddHHmmss stamps. */
|
|
48
|
+
async getTrends(params) {
|
|
49
|
+
const response = await this.getTrendsRaw(params);
|
|
50
|
+
return response.data ?? null;
|
|
51
|
+
}
|
|
52
|
+
getTrendsRaw(params) {
|
|
53
|
+
const query = new URLSearchParams();
|
|
54
|
+
if (params?.budgetId != null)
|
|
55
|
+
query.set('budgetId', String(params.budgetId));
|
|
56
|
+
if (params?.from != null)
|
|
57
|
+
query.set('from', String(params.from));
|
|
58
|
+
if (params?.to != null)
|
|
59
|
+
query.set('to', String(params.to));
|
|
60
|
+
const qs = query.toString();
|
|
61
|
+
return this.http.get(this.buildUrl(`budget-dashboard/trends${qs ? `?${qs}` : ''}`));
|
|
62
|
+
}
|
|
63
|
+
/** Plan vs actual for one budget, by category or allocation. */
|
|
64
|
+
async getVariance(budgetId, dimension = 'category') {
|
|
65
|
+
const response = await this.getVarianceRaw(budgetId, dimension);
|
|
66
|
+
return response.data ?? null;
|
|
67
|
+
}
|
|
68
|
+
getVarianceRaw(budgetId, dimension = 'category') {
|
|
69
|
+
return this.http.get(this.buildUrl(`budget-dashboard/variance?budgetId=${budgetId}&dimension=${dimension}`));
|
|
70
|
+
}
|
|
71
|
+
/** Released vs spent by month across EVERY budget — the org cashflow view. */
|
|
72
|
+
async getCashflow(params) {
|
|
73
|
+
const response = await this.getCashflowRaw(params);
|
|
74
|
+
return response.data ?? null;
|
|
75
|
+
}
|
|
76
|
+
getCashflowRaw(params) {
|
|
77
|
+
const query = new URLSearchParams();
|
|
78
|
+
if (params?.from != null)
|
|
79
|
+
query.set('from', String(params.from));
|
|
80
|
+
if (params?.to != null)
|
|
81
|
+
query.set('to', String(params.to));
|
|
82
|
+
const qs = query.toString();
|
|
83
|
+
return this.http.get(this.buildUrl(`budget-dashboard/cashflow${qs ? `?${qs}` : ''}`));
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
BudgetForecastService.DEFAULT_SERVICE_PATH = 'budgets';
|
|
87
|
+
//# sourceMappingURL=BudgetForecastService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BudgetForecastService.js","sourceRoot":"","sources":["../../../src/services/budgets/BudgetForecastService.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,8 +4,9 @@
|
|
|
4
4
|
* Route: api/budgets/{budgetId}/items
|
|
5
5
|
*/
|
|
6
6
|
import { HttpClient } from '../../core/HttpClient';
|
|
7
|
+
import type { ResponseData } from '../../models/common';
|
|
7
8
|
import { ServiceConfig } from '../types';
|
|
8
|
-
import { BudgetItem, CreateBudgetItemViewModel, UpdateBudgetItemViewModel } from '../../models/budgets';
|
|
9
|
+
import { BudgetItem, CreateBudgetItemViewModel, UpdateBudgetItemViewModel, ImportBudgetItemsViewModel, ImportBudgetItemsResult } from '../../models/budgets';
|
|
9
10
|
export declare class BudgetItemService {
|
|
10
11
|
private static readonly DEFAULT_SERVICE_PATH;
|
|
11
12
|
private readonly http;
|
|
@@ -20,5 +21,12 @@ export declare class BudgetItemService {
|
|
|
20
21
|
update(budgetId: number, budgetItemId: number, body: UpdateBudgetItemViewModel): Promise<BudgetItem>;
|
|
21
22
|
/** Delete a planned line item. */
|
|
22
23
|
delete(budgetId: number, budgetItemId: number): Promise<boolean>;
|
|
24
|
+
/**
|
|
25
|
+
* Spreadsheet import — rows already parsed and column-mapped CLIENT-SIDE
|
|
26
|
+
* (SheetJS); the server never sees the file. Strict all-or-nothing: any
|
|
27
|
+
* invalid row fails the whole import with rowErrors.
|
|
28
|
+
*/
|
|
29
|
+
import(budgetId: number, body: ImportBudgetItemsViewModel): Promise<ImportBudgetItemsResult>;
|
|
30
|
+
importRaw(budgetId: number, body: ImportBudgetItemsViewModel): Promise<ResponseData<ImportBudgetItemsResult>>;
|
|
23
31
|
}
|
|
24
32
|
//# sourceMappingURL=BudgetItemService.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BudgetItemService.d.ts","sourceRoot":"","sources":["../../../src/services/budgets/BudgetItemService.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EACL,UAAU,EACV,yBAAyB,EACzB,yBAAyB,EAC1B,MAAM,sBAAsB,CAAC;AAE9B,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAa;IACzD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;IAClC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;gBAEzB,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,aAAa;IAKpD,OAAO,CAAC,QAAQ;IAMhB,0CAA0C;IACpC,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAK1D,+BAA+B;IACzB,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,UAAU,CAAC;IAMpF,4CAA4C;IACtC,MAAM,CACV,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,yBAAyB,GAC9B,OAAO,CAAC,UAAU,CAAC;IAMtB,kCAAkC;IAC5B,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"BudgetItemService.d.ts","sourceRoot":"","sources":["../../../src/services/budgets/BudgetItemService.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EACL,UAAU,EACV,yBAAyB,EACzB,yBAAyB,EACzB,0BAA0B,EAC1B,uBAAuB,EACxB,MAAM,sBAAsB,CAAC;AAE9B,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAa;IACzD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;IAClC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;gBAEzB,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,aAAa;IAKpD,OAAO,CAAC,QAAQ;IAMhB,0CAA0C;IACpC,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAK1D,+BAA+B;IACzB,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,UAAU,CAAC;IAMpF,4CAA4C;IACtC,MAAM,CACV,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,yBAAyB,GAC9B,OAAO,CAAC,UAAU,CAAC;IAMtB,kCAAkC;IAC5B,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKtE;;;;OAIG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,0BAA0B,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAKlG,SAAS,CACP,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,0BAA0B,GAC/B,OAAO,CAAC,YAAY,CAAC,uBAAuB,CAAC,CAAC;CAGlD"}
|
|
@@ -37,6 +37,20 @@ export class BudgetItemService {
|
|
|
37
37
|
const response = await this.http.delete(this.buildUrl(budgetId, String(budgetItemId)));
|
|
38
38
|
return response.success;
|
|
39
39
|
}
|
|
40
|
+
/**
|
|
41
|
+
* Spreadsheet import — rows already parsed and column-mapped CLIENT-SIDE
|
|
42
|
+
* (SheetJS); the server never sees the file. Strict all-or-nothing: any
|
|
43
|
+
* invalid row fails the whole import with rowErrors.
|
|
44
|
+
*/
|
|
45
|
+
async import(budgetId, body) {
|
|
46
|
+
const response = await this.importRaw(budgetId, body);
|
|
47
|
+
if (!response.data)
|
|
48
|
+
throw new Error(`Failed to import items for budget ${budgetId}`);
|
|
49
|
+
return response.data;
|
|
50
|
+
}
|
|
51
|
+
importRaw(budgetId, body) {
|
|
52
|
+
return this.http.post(this.buildUrl(budgetId, 'import'), body);
|
|
53
|
+
}
|
|
40
54
|
}
|
|
41
55
|
BudgetItemService.DEFAULT_SERVICE_PATH = 'budgets';
|
|
42
56
|
//# sourceMappingURL=BudgetItemService.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BudgetItemService.js","sourceRoot":"","sources":["../../../src/services/budgets/BudgetItemService.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"BudgetItemService.js","sourceRoot":"","sources":["../../../src/services/budgets/BudgetItemService.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAaH,MAAM,OAAO,iBAAiB;IAK5B,YAAY,IAAgB,EAAE,MAAsB;QAClD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,WAAW,GAAG,MAAM,EAAE,WAAW,IAAI,iBAAiB,CAAC,oBAAoB,CAAC;IACnF,CAAC;IAEO,QAAQ,CAAC,QAAgB,EAAE,IAAa;QAC9C,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,WAAW,gBAAgB,QAAQ,QAAQ,CAAC;QACjE,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC5C,OAAO,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC;IAC/C,CAAC;IAED,0CAA0C;IAC1C,KAAK,CAAC,WAAW,CAAC,QAAgB;QAChC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAe,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC5E,OAAO,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC;IAC7B,CAAC;IAED,+BAA+B;IAC/B,KAAK,CAAC,MAAM,CAAC,QAAgB,EAAE,IAA+B;QAC5D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAa,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;QACjF,IAAI,CAAC,QAAQ,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,QAAQ,EAAE,CAAC,CAAC;QACpF,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAED,4CAA4C;IAC5C,KAAK,CAAC,MAAM,CACV,QAAgB,EAChB,YAAoB,EACpB,IAA+B;QAE/B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAa,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACtG,IAAI,CAAC,QAAQ,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,YAAY,EAAE,CAAC,CAAC;QACpF,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAED,kCAAkC;IAClC,KAAK,CAAC,MAAM,CAAC,QAAgB,EAAE,YAAoB;QACjD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC7F,OAAO,QAAQ,CAAC,OAAO,CAAC;IAC1B,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,MAAM,CAAC,QAAgB,EAAE,IAAgC;QAC7D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACtD,IAAI,CAAC,QAAQ,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,QAAQ,EAAE,CAAC,CAAC;QACrF,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IACD,SAAS,CACP,QAAgB,EAChB,IAAgC;QAEhC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAA0B,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;IAC1F,CAAC;;AA5DuB,sCAAoB,GAAG,SAAS,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BudgetReleaseService
|
|
3
|
+
* Monthly cashflow release schedule of a budget (nested route). ADVISORY only —
|
|
4
|
+
* releases inform approvers, they never block procurement.
|
|
5
|
+
* Route: api/budgets/{budgetId}/releases
|
|
6
|
+
*/
|
|
7
|
+
import { HttpClient } from '../../core/HttpClient';
|
|
8
|
+
import type { ResponseData } from '../../models/common';
|
|
9
|
+
import { ServiceConfig } from '../types';
|
|
10
|
+
import { BudgetRelease, GenerateReleasesViewModel, UpsertBudgetReleaseViewModel } from '../../models/budgets';
|
|
11
|
+
export declare class BudgetReleaseService {
|
|
12
|
+
private static readonly DEFAULT_SERVICE_PATH;
|
|
13
|
+
private readonly http;
|
|
14
|
+
private readonly servicePath;
|
|
15
|
+
constructor(http: HttpClient, config?: ServiceConfig);
|
|
16
|
+
private buildUrl;
|
|
17
|
+
/** The budget's release schedule rows (ordered by periodStart). */
|
|
18
|
+
getByBudget(budgetId: number): Promise<BudgetRelease[]>;
|
|
19
|
+
getByBudgetRaw(budgetId: number): Promise<ResponseData<BudgetRelease[]>>;
|
|
20
|
+
/** Materialize the schedule from a rule (1 Percent / 2 FixedAmount per month). */
|
|
21
|
+
generate(budgetId: number, body: GenerateReleasesViewModel): Promise<BudgetRelease[]>;
|
|
22
|
+
generateRaw(budgetId: number, body: GenerateReleasesViewModel): Promise<ResponseData<BudgetRelease[]>>;
|
|
23
|
+
/** Create or replace a single release month (admin edits). */
|
|
24
|
+
upsert(budgetId: number, body: UpsertBudgetReleaseViewModel): Promise<BudgetRelease>;
|
|
25
|
+
upsertRaw(budgetId: number, body: UpsertBudgetReleaseViewModel): Promise<ResponseData<BudgetRelease>>;
|
|
26
|
+
/** Update an existing release row. */
|
|
27
|
+
update(budgetId: number, releaseId: number, body: UpsertBudgetReleaseViewModel): Promise<BudgetRelease>;
|
|
28
|
+
updateRaw(budgetId: number, releaseId: number, body: UpsertBudgetReleaseViewModel): Promise<ResponseData<BudgetRelease>>;
|
|
29
|
+
/** Delete a release row. */
|
|
30
|
+
delete(budgetId: number, releaseId: number): Promise<boolean>;
|
|
31
|
+
deleteRaw(budgetId: number, releaseId: number): Promise<ResponseData<void>>;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=BudgetReleaseService.d.ts.map
|