-- SCHEMA: ob --------------------------------------------- -- TABLES --------------------------------------------- --------------------------------------------- -- ob.AccountVariabilityOverride ------------------ --------------------------------------------- CREATE TABLE [ob].[AccountVariabilityOverride] ( [AccountVariabilityOverrideID] int NOT NULL, [DepartmentAssignment] nvarchar(800) NOT NULL, [AccountAssignment] nvarchar(800) NOT NULL, [PrecedentOrder] int NOT NULL, [Variability] decimal NOT NULL, PRIMARY KEY ([AccountVariabilityOverrideID]) ); GO ALTER TABLE [ob].[AccountVariabilityOverride] ADD CONSTRAINT [DF__AccountVa__Depar__0EB4746A] DEFAULT ('') FOR [DepartmentAssignment]; GO ALTER TABLE [ob].[AccountVariabilityOverride] ADD CONSTRAINT [DF__AccountVa__Accou__0FA898A3] DEFAULT ('') FOR [AccountAssignment]; GO ALTER TABLE [ob].[AccountVariabilityOverride] ADD CONSTRAINT [DF__AccountVa__Prece__109CBCDC] DEFAULT ((0)) FOR [PrecedentOrder]; GO ALTER TABLE [ob].[AccountVariabilityOverride] ADD CONSTRAINT [DF__AccountVa__Varia__1190E115] DEFAULT ((0)) FOR [Variability]; GO --------------------------------------------- --------------------------------------------- -- ob.AssumptionImportHistory ------------------ --------------------------------------------- CREATE TABLE [ob].[AssumptionImportHistory] ( [HistoryGUID] uniqueidentifier NOT NULL, [BudgetModelType] nvarchar(30) NOT NULL, [DataCategory] nvarchar(50) NOT NULL, [ModelSection] nvarchar(100) NOT NULL, [AssumptionType] nvarchar(100) NOT NULL, [Models] nvarchar(max) NOT NULL, [IsDetailedLevel] bit NULL, [LineItems] nvarchar(max) NOT NULL, [Status] tinyint NOT NULL, PRIMARY KEY ([HistoryGUID]) ); GO ALTER TABLE [ob].[AssumptionImportHistory] ADD CONSTRAINT [FK_AssumptionImportHistory_SystemCenterImportHistory] FOREIGN KEY ([HistoryGUID]) REFERENCES [dbo].[SystemCenterImportHistory] ([HistoryGUID]); GO ALTER TABLE [ob].[AssumptionImportHistory] ADD CONSTRAINT [CK_AssumptionImportHistory_Status] CHECK ([Status]=(3) OR [Status]=(2) OR [Status]=(1) OR [Status]=(0)); GO ALTER TABLE [ob].[AssumptionImportHistory] ADD CONSTRAINT [DF_AssumptionImportHistory_IsDetailedLevel] DEFAULT (NULL) FOR [IsDetailedLevel]; GO ALTER TABLE [ob].[AssumptionImportHistory] ADD CONSTRAINT [DF_AssumptionImportHistory_Status] DEFAULT ((0)) FOR [Status]; GO ALTER TABLE [ob].[AssumptionImportHistory] ADD CONSTRAINT [DF_AssumptionImportHistory_BudgetModelType] DEFAULT ('') FOR [BudgetModelType]; GO ALTER TABLE [ob].[AssumptionImportHistory] ADD CONSTRAINT [DF_AssumptionImportHistory_DataCategory] DEFAULT ('') FOR [DataCategory]; GO ALTER TABLE [ob].[AssumptionImportHistory] ADD CONSTRAINT [DF_AssumptionImportHistory_ModelSection] DEFAULT ('') FOR [ModelSection]; GO ALTER TABLE [ob].[AssumptionImportHistory] ADD CONSTRAINT [DF_AssumptionImportHistory_AssumptionType] DEFAULT ('') FOR [AssumptionType]; GO ALTER TABLE [ob].[AssumptionImportHistory] ADD CONSTRAINT [DF_AssumptionImportHistory_Models] DEFAULT ('') FOR [Models]; GO ALTER TABLE [ob].[AssumptionImportHistory] ADD CONSTRAINT [DF_AssumptionImportHistory_LineItems] DEFAULT ('') FOR [LineItems]; GO --------------------------------------------- --------------------------------------------- -- ob.DefaultMethodList ------------------ --------------------------------------------- CREATE TABLE [ob].[DefaultMethodList] ( [ListID] int NOT NULL, [ListName] nvarchar(200) NOT NULL, [Template] nvarchar(100) NOT NULL, [IncludeGlobal] bit NOT NULL, [IsDynamic] bit NOT NULL, [DescriptionOfDynamic] nvarchar(200) NOT NULL, PRIMARY KEY ([ListID]) ); GO ALTER TABLE [ob].[DefaultMethodList] ADD CONSTRAINT [DF_DefaultMethodList_ListName] DEFAULT ('') FOR [ListName]; GO ALTER TABLE [ob].[DefaultMethodList] ADD CONSTRAINT [DF_DefaultMethodList_Template] DEFAULT ('') FOR [Template]; GO ALTER TABLE [ob].[DefaultMethodList] ADD CONSTRAINT [DF_DefaultMethodList_IncludeGlobal] DEFAULT ((0)) FOR [IncludeGlobal]; GO ALTER TABLE [ob].[DefaultMethodList] ADD CONSTRAINT [DF_DefaultMethodList_IsDynamic] DEFAULT ((0)) FOR [IsDynamic]; GO ALTER TABLE [ob].[DefaultMethodList] ADD CONSTRAINT [DF_DefaultMethodList_DescriptionOfDynamic] DEFAULT ('') FOR [DescriptionOfDynamic]; GO --------------------------------------------- --------------------------------------------- -- ob.DefaultMethodListItem ------------------ --------------------------------------------- CREATE TABLE [ob].[DefaultMethodListItem] ( [ListItemID] int NOT NULL, [ListItemName] nvarchar(200) NOT NULL, [SortOrder] int NOT NULL, [ListID] int NOT NULL, [IsDynamic] bit NOT NULL, [DescriptionOfDynamic] nvarchar(200) NOT NULL, PRIMARY KEY ([ListItemID]) ); GO ALTER TABLE [ob].[DefaultMethodListItem] ADD CONSTRAINT [FK__DefaultMe__ListI__561CDE04] FOREIGN KEY ([ListID]) REFERENCES [ob].[DefaultMethodList] ([ListID]); GO ALTER TABLE [ob].[DefaultMethodListItem] ADD CONSTRAINT [DF_DefaultMethodListItem_ListItemName] DEFAULT ('') FOR [ListItemName]; GO ALTER TABLE [ob].[DefaultMethodListItem] ADD CONSTRAINT [DF_DefaultMethodListItem_SortOrder] DEFAULT ((0)) FOR [SortOrder]; GO ALTER TABLE [ob].[DefaultMethodListItem] ADD CONSTRAINT [DF_DefaultMethodListItem_ListID] DEFAULT ((0)) FOR [ListID]; GO ALTER TABLE [ob].[DefaultMethodListItem] ADD CONSTRAINT [DF_DefaultMethodListItem_IsDynamic] DEFAULT ((0)) FOR [IsDynamic]; GO ALTER TABLE [ob].[DefaultMethodListItem] ADD CONSTRAINT [DF_DefaultMethodListItem_DescriptionOfDynamic] DEFAULT ('') FOR [DescriptionOfDynamic]; GO --------------------------------------------- --------------------------------------------- -- ob.DimAccountPH ------------------ --------------------------------------------- CREATE TABLE [ob].[DimAccountPH] ( [AccountPHID] int NOT NULL, [Name] nvarchar(200) NOT NULL, [MemberGUID] uniqueidentifier NOT NULL, [HistoryItemGUID] uniqueidentifier NOT NULL, [Version] timestamp NOT NULL, [TransactionID] int NOT NULL, PRIMARY KEY ([AccountPHID]) ); CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [ob].[DimAccountPH] ([MemberGUID]); GO ALTER TABLE [ob].[DimAccountPH] ADD CONSTRAINT [DF__DimAccoun__Histo__0EF1A5F3] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO ALTER TABLE [ob].[DimAccountPH] ADD CONSTRAINT [DF__DimOBAccou__Name__1B351F42] DEFAULT ('') FOR [Name]; GO ALTER TABLE [ob].[DimAccountPH] ADD CONSTRAINT [DF__OB_DimAccountPH_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO ALTER TABLE [ob].[DimAccountPH] ADD CONSTRAINT [DF__DimOBAcco__Membe__1C29437B] DEFAULT (newid()) FOR [MemberGUID]; GO --------------------------------------------- --------------------------------------------- -- ob.DimAdjustmentCategory ------------------ --------------------------------------------- CREATE TABLE [ob].[DimAdjustmentCategory] ( [HistoryItemGUID] uniqueidentifier NOT NULL, [AdjustmentCategoryID] int NOT NULL, [Name] nvarchar(200) NOT NULL, [Description] nvarchar(200) NOT NULL, [AdjustmentCategoryRollup] nvarchar(200) NOT NULL, [BudgetConfigGUID] uniqueidentifier NOT NULL, [TransactionID] int NOT NULL, [MemberGUID] uniqueidentifier NOT NULL, PRIMARY KEY ([AdjustmentCategoryID]) ); GO ALTER TABLE [ob].[DimAdjustmentCategory] ADD CONSTRAINT [DF__DimAdjust__Budge__2405942C] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [BudgetConfigGUID]; GO ALTER TABLE [ob].[DimAdjustmentCategory] ADD CONSTRAINT [DF__DimAdjustm__Name__21292781] DEFAULT ('') FOR [Name]; GO ALTER TABLE [ob].[DimAdjustmentCategory] ADD CONSTRAINT [DF__DimAdjust__Descr__221D4BBA] DEFAULT ('') FOR [Description]; GO ALTER TABLE [ob].[DimAdjustmentCategory] ADD CONSTRAINT [DF__DimAdjust__Adjus__23116FF3] DEFAULT ('') FOR [AdjustmentCategoryRollup]; GO ALTER TABLE [ob].[DimAdjustmentCategory] ADD CONSTRAINT [DF__DimAdjust__Trans__24F9B865] DEFAULT ((0)) FOR [TransactionID]; GO ALTER TABLE [ob].[DimAdjustmentCategory] ADD CONSTRAINT [DF__DimAdjust__Membe__25EDDC9E] DEFAULT (newid()) FOR [MemberGUID]; GO ALTER TABLE [ob].[DimAdjustmentCategory] ADD CONSTRAINT [DF__DimAdjust__Histo__1F40DF0F] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO --------------------------------------------- --------------------------------------------- -- ob.DimDepartmentalBudget ------------------ --------------------------------------------- CREATE TABLE [ob].[DimDepartmentalBudget] ( [MemberGUID] uniqueidentifier NOT NULL, [DepartmentalBudgetID] int NOT NULL, [Name] nvarchar(458) NOT NULL, [DepartmentID] int NOT NULL, [DepartmentName] nvarchar(203) NOT NULL, [SystemID] smallint NOT NULL, [System] nvarchar(100) NOT NULL, [EntityID] int NOT NULL, [Entity] nvarchar(100) NOT NULL, [DepartmentRollup1ID] smallint NOT NULL, [DepartmentRollup1] nvarchar(100) NOT NULL, [DepartmentRollup2ID] smallint NOT NULL, [DepartmentRollup2] nvarchar(100) NOT NULL, [DepartmentRollup3ID] smallint NOT NULL, [DepartmentRollup3] nvarchar(100) NOT NULL, [DepartmentRollup4ID] int NOT NULL, [DepartmentRollup4] nvarchar(100) NOT NULL, [DepartmentRollup5ID] smallint NOT NULL, [DepartmentRollup5] nvarchar(100) NOT NULL, [DepartmentRollup6ID] smallint NOT NULL, [DepartmentRollup6] nvarchar(100) NOT NULL, [ResearchDepartmentCategoryID] int NOT NULL, [ResearchDepartmentCategoryName] nvarchar(100) NOT NULL, [Admin] nvarchar(400) NOT NULL, [Finance] nvarchar(400) NOT NULL, [VicePresident] nvarchar(400) NOT NULL, [Director] nvarchar(400) NOT NULL, [Manager] nvarchar(400) NOT NULL, [BaseYear] float NOT NULL, [BaseYear1] float NOT NULL, [StartYear] float NOT NULL, [NumberofYears] float NOT NULL, [MonthsLoaded] nvarchar(200) NOT NULL, [OBActivePlans] nvarchar(200) NOT NULL, [BudgetStatus] nvarchar(100) NOT NULL, [OpenDate] date NOT NULL, [LastModified] nvarchar(200) NOT NULL, [WorkedHrsperUOSProjection] float NOT NULL, [WorkedHrsperUOSBudget] float NOT NULL, [FTEApprovalOverride] nvarchar(100) NOT NULL, [FrameworkID] int NOT NULL, [LootID] int NOT NULL, [HourTypeFixed] nvarchar(200) NOT NULL, [HourType] nvarchar(200) NOT NULL, [TargetType] nvarchar(200) NOT NULL, [IsVariable] bit NOT NULL, [VariableProjectionMethod] nvarchar(200) NOT NULL, [ContractLaborSkillMix] nvarchar(200) NOT NULL, [EntitySortOrder] int NOT NULL, [SystemSortOrder] int NOT NULL, [DepartmentRollup1SortOrder] int NOT NULL, [DepartmentRollup2SortOrder] int NOT NULL, [DepartmentRollup3SortOrder] int NOT NULL, [DepartmentRollup4SortOrder] int NOT NULL, [DepartmentRollup5SortOrder] int NOT NULL, [DepartmentRollup6SortOrder] int NOT NULL, [ResearchDepartmentCategorySortOrder] int NOT NULL, [HasAttachments] nvarchar(200) NOT NULL, [HideNotSpecified] nvarchar(400) NOT NULL, [GMTestFWName] nvarchar(450) NOT NULL, [GMTestFWDateCreated] nvarchar(200) NOT NULL, [TransactionID] int NOT NULL, [HistoryItemGUID] uniqueidentifier NOT NULL, [Version] timestamp NOT NULL, [MRVicePresident] nvarchar(400) NOT NULL, [MRDirector] nvarchar(400) NOT NULL, [MRManager] nvarchar(400) NOT NULL, [ReadOnly] nvarchar(400) NOT NULL, [WriteDeny] nvarchar(400) NOT NULL, [EntityDefaultWorkWeekID] int NOT NULL, [OBDirector] nvarchar(400) NOT NULL, [OBManager] nvarchar(400) NOT NULL, [OBVicePresident] nvarchar(400) NOT NULL, [SecureGroupID] int NOT NULL, [DepartmentCode] nvarchar(100) NOT NULL, [VariablehrsperUOSActualYTD] float NOT NULL, [VariablehrsperUOStargetCurrentYr] float NOT NULL, [VariablehrsperUOS] float NOT NULL, [VariablehrsperUOStarget] float NOT NULL, [BudgetedFixedFTEs] float NOT NULL, [BudgetedVariableFTEs] float NOT NULL, [UOSchangeyy] float NOT NULL, [ExcessofRevandExpchangeyy] float NOT NULL, PRIMARY KEY ([DepartmentalBudgetID]) ); CREATE UNIQUE NONCLUSTERED INDEX [IX_DepartmentID] ON [ob].[DimDepartmentalBudget] ([DepartmentID]); CREATE NONCLUSTERED INDEX [IX_DepartmentalBudgetID] ON [ob].[DimDepartmentalBudget] ([DepartmentalBudgetID]); CREATE NONCLUSTERED INDEX [IX_MemberGUID] ON [ob].[DimDepartmentalBudget] ([MemberGUID]); GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__Entit__11ECDB15] DEFAULT ((0)) FOR [EntityID]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__OBAct__7DF62CF7] DEFAULT ('') FOR [OBActivePlans]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__Budge__068B72F8] DEFAULT ('Draft') FOR [BudgetStatus]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__OpenD__7EEA5130] DEFAULT ('') FOR [OpenDate]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__LastM__7B19C04C] DEFAULT ('') FOR [LastModified]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__Worke__077F9731] DEFAULT ((0)) FOR [WorkedHrsperUOSProjection]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__Worke__0873BB6A] DEFAULT ((0)) FOR [WorkedHrsperUOSBudget]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__FTEAp__0B502815] DEFAULT ('None') FOR [FTEApprovalOverride]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__Frame__0C3401BF] DEFAULT ((0)) FOR [FrameworkID]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__LootI__0E1C4A31] DEFAULT ((0)) FOR [LootID]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__HourT__71591BAD] DEFAULT ('') FOR [HourTypeFixed]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__HourT__4F20D1DE] DEFAULT ('') FOR [HourType]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__Secur__64849E34] DEFAULT ((0)) FOR [SecureGroupID]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__Targe__03C9A447] DEFAULT ('') FOR [TargetType]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__IsVar__6CB396CA] DEFAULT ((0)) FOR [IsVariable]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__Varia__06A610F2] DEFAULT ('') FOR [VariableProjectionMethod]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__Contr__05B1ECB9] DEFAULT ('') FOR [ContractLaborSkillMix]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__Entit__486CE00A] DEFAULT ((0)) FOR [EntitySortOrder]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__Syste__49610443] DEFAULT ((0)) FOR [SystemSortOrder]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__OBDir__6A46CDD4] DEFAULT ('') FOR [OBDirector]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__Depar__4A55287C] DEFAULT ((0)) FOR [DepartmentRollup1SortOrder]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__OBMan__6B3AF20D] DEFAULT ('') FOR [OBManager]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__Depar__4B494CB5] DEFAULT ((0)) FOR [DepartmentRollup2SortOrder]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__OBVic__6C2F1646] DEFAULT ('') FOR [OBVicePresident]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__Depar__4C3D70EE] DEFAULT ((0)) FOR [DepartmentRollup3SortOrder]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__Depar__4D319527] DEFAULT ((0)) FOR [DepartmentRollup4SortOrder]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__Depar__4E25B960] DEFAULT ((0)) FOR [DepartmentRollup5SortOrder]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__Depar__4F19DD99] DEFAULT ((0)) FOR [DepartmentRollup6SortOrder]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__Resea__43A82AED] DEFAULT ((0)) FOR [ResearchDepartmentCategorySortOrder]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__HasAt__7A259C13] DEFAULT ('') FOR [HasAttachments]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__HideN__1F9F094A] DEFAULT ('') FOR [HideNotSpecified]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__GMTes__6A243E74] DEFAULT ('') FOR [GMTestFWName]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__GMTes__6B1862AD] DEFAULT ('') FOR [GMTestFWDateCreated]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__MRVic__74A1FEB1] DEFAULT ('') FOR [MRVicePresident]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__OB_DimDepartmentalBudget_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__MRDir__7966B3CE] DEFAULT ('') FOR [MRDirector]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__MRMan__7E2B68EB] DEFAULT ('') FOR [MRManager]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__ReadO__03101999] DEFAULT ('') FOR [ReadOnly]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__Write__04043DD2] DEFAULT ('') FOR [WriteDeny]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF_DimOBPlan_HistoryItemGUID] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__Depar__2B61FAC8] DEFAULT ('') FOR [DepartmentCode]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__Varia__2C1889E4] DEFAULT ((0)) FOR [VariablehrsperUOSActualYTD]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__Varia__2D0CAE1D] DEFAULT ((0)) FOR [VariablehrsperUOStargetCurrentYr]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__Varia__2E00D256] DEFAULT ((0)) FOR [VariablehrsperUOS]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__Varia__2EF4F68F] DEFAULT ((0)) FOR [VariablehrsperUOStarget]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__Budge__2FE91AC8] DEFAULT ((0)) FOR [BudgetedFixedFTEs]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__Budge__30DD3F01] DEFAULT ((0)) FOR [BudgetedVariableFTEs]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__UOSch__31D1633A] DEFAULT ((0)) FOR [UOSchangeyy]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__Exces__32C58773] DEFAULT ((0)) FOR [ExcessofRevandExpchangeyy]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF_OBDIMDEPARTMENTALBUDGETMEMBERGUID] DEFAULT (newid()) FOR [MemberGUID]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepartm__Name__0D2825F8] DEFAULT ('') FOR [Name]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF_DimDepartmentalBudget_DepartmentID] DEFAULT ((0)) FOR [DepartmentID]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__Depar__0F106E6A] DEFAULT ('') FOR [DepartmentName]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__Syste__100492A3] DEFAULT ((0)) FOR [SystemID]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__Syste__10F8B6DC] DEFAULT ('') FOR [System]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__Entit__12E0FF4E] DEFAULT ('') FOR [Entity]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__Depar__13D52387] DEFAULT ((0)) FOR [DepartmentRollup1ID]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__Depar__14C947C0] DEFAULT ('') FOR [DepartmentRollup1]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__Depar__15BD6BF9] DEFAULT ((0)) FOR [DepartmentRollup2ID]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__Depar__16B19032] DEFAULT ('') FOR [DepartmentRollup2]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__Depar__17A5B46B] DEFAULT ((0)) FOR [DepartmentRollup3ID]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__Depar__1899D8A4] DEFAULT ('') FOR [DepartmentRollup3]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__Entit__489A2A98] DEFAULT ((0)) FOR [EntityDefaultWorkWeekID]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__Depar__198DFCDD] DEFAULT ((0)) FOR [DepartmentRollup4ID]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__Depar__1A822116] DEFAULT ('') FOR [DepartmentRollup4]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__Depar__1B76454F] DEFAULT ((0)) FOR [DepartmentRollup5ID]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__Depar__1C6A6988] DEFAULT ('') FOR [DepartmentRollup5]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__Depar__1D5E8DC1] DEFAULT ((0)) FOR [DepartmentRollup6ID]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__Depar__1E52B1FA] DEFAULT ('') FOR [DepartmentRollup6]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__Resea__41BFE27B] DEFAULT ((0)) FOR [ResearchDepartmentCategoryID]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__Resea__42B406B4] DEFAULT ('') FOR [ResearchDepartmentCategoryName]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__Admin__1DB6C0D8] DEFAULT ('') FOR [Admin]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__Finan__1EAAE511] DEFAULT ('') FOR [Finance]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__ViceP__00D299A2] DEFAULT ('') FOR [VicePresident]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__Direc__783D53A1] DEFAULT ('') FOR [Director]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__Manag__7C0DE485] DEFAULT ('') FOR [Manager]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__BaseY__76550B2F] DEFAULT ((0)) FOR [BaseYear]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__BaseY__05974EBF] DEFAULT ((0)) FOR [BaseYear1]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__Start__09179DF2] DEFAULT ((0)) FOR [StartYear]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__Numbe__0A0BC22B] DEFAULT ((3)) FOR [NumberofYears]; GO ALTER TABLE [ob].[DimDepartmentalBudget] ADD CONSTRAINT [DF__DimDepart__Month__7D0208BE] DEFAULT ('') FOR [MonthsLoaded]; GO --------------------------------------------- --------------------------------------------- -- ob.DimDepartmentalBudgetPH ------------------ --------------------------------------------- CREATE TABLE [ob].[DimDepartmentalBudgetPH] ( [MemberGUID] uniqueidentifier NOT NULL, [DepartmentalBudgetPHID] tinyint NOT NULL, [Name] nvarchar(100) NOT NULL, [IsConstant] bit NOT NULL, [Version] timestamp NOT NULL, [HistoryItemGUID] uniqueidentifier NOT NULL, [TransactionID] int NOT NULL, PRIMARY KEY ([DepartmentalBudgetPHID]) ); CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [ob].[DimDepartmentalBudgetPH] ([MemberGUID]); GO ALTER TABLE [ob].[DimDepartmentalBudgetPH] ADD CONSTRAINT [DF_DimDepartmentalBudgetPH_MemberGUID] DEFAULT (newid()) FOR [MemberGUID]; GO ALTER TABLE [ob].[DimDepartmentalBudgetPH] ADD CONSTRAINT [DF_DimDepartmentalBudgetPH_IsConstant] DEFAULT ((0)) FOR [IsConstant]; GO ALTER TABLE [ob].[DimDepartmentalBudgetPH] ADD CONSTRAINT [DF__OB_DimDepartmentalBudgetPH_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO ALTER TABLE [ob].[DimDepartmentalBudgetPH] ADD CONSTRAINT [DF_DimDepartmentalBudgetPH_HistoryItemGUID] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO ALTER TABLE [ob].[DimDepartmentalBudgetPH] ADD CONSTRAINT [DF_OBDIMDEPARTMENTALBUDGETPHNAME] DEFAULT ('') FOR [Name]; GO --------------------------------------------- --------------------------------------------- -- ob.DimFinancialReporting ------------------ --------------------------------------------- CREATE TABLE [ob].[DimFinancialReporting] ( [MemberGUID] uniqueidentifier NOT NULL, [HistoryItemGUID] uniqueidentifier NOT NULL, [Statement] nvarchar(100) NOT NULL, [Section] nvarchar(100) NOT NULL, [LineName] nvarchar(100) NOT NULL, [IsMappable] nvarchar(100) NOT NULL, [ConsolidatedFinancialReportingID] int NOT NULL, [ConsolidatedIsInverted] bit NOT NULL, [ConsolidatedInversion] int NOT NULL, [Name] varchar(4000) NOT NULL, [StatementMappabilityFilterParameter] varchar(4000) NOT NULL, [ConsolidatedFinancialReporting] varchar(4000) NOT NULL, [ConsolidatedFinancialReportingSortOrder] int NOT NULL, [IsExpense] bit NOT NULL, [IsRequired] bit NOT NULL, [IsVolume] bit NOT NULL, [IsFTERollup] bit NOT NULL, [IsEditable] bit NOT NULL, [DisplayFormat] nvarchar(200) NOT NULL, [SortOrder] int NOT NULL, [FinancialReportingID] int NOT NULL, [ProjectionMethod] nvarchar(100) NOT NULL, [SpreadMethod] nvarchar(100) NOT NULL, [ToBeDeleted] bit NOT NULL, PRIMARY KEY ([FinancialReportingID]) ); CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [ob].[DimFinancialReporting] ([MemberGUID]); GO ALTER TABLE [ob].[DimFinancialReporting] ADD CONSTRAINT [DF__DimFinanc__Finan__012DFA15] DEFAULT ((0)) FOR [FinancialReportingID]; GO ALTER TABLE [ob].[DimFinancialReporting] ADD CONSTRAINT [DF__DimFinanci__Name__1FB3E619] DEFAULT ('') FOR [Name]; GO ALTER TABLE [ob].[DimFinancialReporting] ADD CONSTRAINT [DF__DimFinanc__State__20A80A52] DEFAULT ('') FOR [StatementMappabilityFilterParameter]; GO ALTER TABLE [ob].[DimFinancialReporting] ADD CONSTRAINT [DF__DimFinanc__Conso__219C2E8B] DEFAULT ('') FOR [ConsolidatedFinancialReporting]; GO ALTER TABLE [ob].[DimFinancialReporting] ADD CONSTRAINT [DF__DimFinanc__Conso__229052C4] DEFAULT ((0)) FOR [ConsolidatedFinancialReportingSortOrder]; GO ALTER TABLE [ob].[DimFinancialReporting] ADD CONSTRAINT [DF__DimFinanc__IsExp__68303DB3] DEFAULT ((0)) FOR [IsExpense]; GO ALTER TABLE [ob].[DimFinancialReporting] ADD CONSTRAINT [DF__DimFinanc__IsReq__41D8B7FD] DEFAULT ((0)) FOR [IsRequired]; GO ALTER TABLE [ob].[DimFinancialReporting] ADD CONSTRAINT [DF__DimFinanc__IsVol__42CCDC36] DEFAULT ((0)) FOR [IsVolume]; GO ALTER TABLE [ob].[DimFinancialReporting] ADD CONSTRAINT [DF__DimFinanc__IsFTE__43C1006F] DEFAULT ((0)) FOR [IsFTERollup]; GO ALTER TABLE [ob].[DimFinancialReporting] ADD CONSTRAINT [DF__DimFinanc__IsEdi__44B524A8] DEFAULT ((1)) FOR [IsEditable]; GO ALTER TABLE [ob].[DimFinancialReporting] ADD CONSTRAINT [DF__DimFinanc__Displ__57E03511] DEFAULT ('') FOR [DisplayFormat]; GO ALTER TABLE [ob].[DimFinancialReporting] ADD CONSTRAINT [DF__DimFinanc__ToBeD__28645F72] DEFAULT ((0)) FOR [ToBeDeleted]; GO ALTER TABLE [ob].[DimFinancialReporting] ADD CONSTRAINT [DF__DimFinanc__SortO__2A045BC8] DEFAULT ((0)) FOR [SortOrder]; GO ALTER TABLE [ob].[DimFinancialReporting] ADD CONSTRAINT [DF__DimFinanc__Proje__66A68310] DEFAULT ('Annualized') FOR [ProjectionMethod]; GO ALTER TABLE [ob].[DimFinancialReporting] ADD CONSTRAINT [DF__DimFinanc__Sprea__679AA749] DEFAULT ('Projected') FOR [SpreadMethod]; GO ALTER TABLE [ob].[DimFinancialReporting] ADD CONSTRAINT [DF__DimFinanc__Membe__7D5ECE15] DEFAULT (newid()) FOR [MemberGUID]; GO ALTER TABLE [ob].[DimFinancialReporting] ADD CONSTRAINT [DF__DimFinanc__State__7F471687] DEFAULT ('') FOR [Statement]; GO ALTER TABLE [ob].[DimFinancialReporting] ADD CONSTRAINT [DF__DimFinanc__Secti__003B3AC0] DEFAULT ('') FOR [Section]; GO ALTER TABLE [ob].[DimFinancialReporting] ADD CONSTRAINT [DF__DimFinanc__Histo__7E52F24E] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO ALTER TABLE [ob].[DimFinancialReporting] ADD CONSTRAINT [DF__DimFinanc__LineN__012F5EF9] DEFAULT ('') FOR [LineName]; GO ALTER TABLE [ob].[DimFinancialReporting] ADD CONSTRAINT [DF__DimFinanc__IsMap__0317A76B] DEFAULT ('') FOR [IsMappable]; GO ALTER TABLE [ob].[DimFinancialReporting] ADD CONSTRAINT [DF__DimFinanc__Conso__040BCBA4] DEFAULT ((0)) FOR [ConsolidatedFinancialReportingID]; GO ALTER TABLE [ob].[DimFinancialReporting] ADD CONSTRAINT [DF__DimFinanc__Conso__04FFEFDD] DEFAULT ((0)) FOR [ConsolidatedIsInverted]; GO --------------------------------------------- --------------------------------------------- -- ob.DimFinancialReportingPH ------------------ --------------------------------------------- CREATE TABLE [ob].[DimFinancialReportingPH] ( [FinancialReportingPHID] int NOT NULL, [Name] nvarchar(200) NOT NULL, [MemberGUID] uniqueidentifier NOT NULL, [HistoryItemGUID] uniqueidentifier NOT NULL, PRIMARY KEY ([FinancialReportingPHID]) ); CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [ob].[DimFinancialReportingPH] ([MemberGUID]); GO ALTER TABLE [ob].[DimFinancialReportingPH] ADD CONSTRAINT [DF__DimFinanci__Name__171EA018] DEFAULT ('') FOR [Name]; GO ALTER TABLE [ob].[DimFinancialReportingPH] ADD CONSTRAINT [DF__DimFinanc__Membe__1812C451] DEFAULT (newid()) FOR [MemberGUID]; GO ALTER TABLE [ob].[DimFinancialReportingPH] ADD CONSTRAINT [DF__DimFinanc__Histo__1906E88A] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO --------------------------------------------- --------------------------------------------- -- ob.DimGlobalStatisticRollup ------------------ --------------------------------------------- CREATE TABLE [ob].[DimGlobalStatisticRollup] ( [StatisticRollupID] int NOT NULL, [Name] nvarchar(200) NOT NULL, [MemberGUID] uniqueidentifier NOT NULL, [TransactionID] int NOT NULL, PRIMARY KEY ([StatisticRollupID]) ); CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [ob].[DimGlobalStatisticRollup] ([MemberGUID]); GO ALTER TABLE [ob].[DimGlobalStatisticRollup] ADD CONSTRAINT [DF__DimStatist__Name__1823A86D] DEFAULT ('') FOR [Name]; GO ALTER TABLE [ob].[DimGlobalStatisticRollup] ADD CONSTRAINT [DF__OB_DimGlobalStatisticRollup_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO ALTER TABLE [ob].[DimGlobalStatisticRollup] ADD CONSTRAINT [DF__DimStatis__Membe__1917CCA6] DEFAULT (newid()) FOR [MemberGUID]; GO --------------------------------------------- --------------------------------------------- -- ob.DimGlobalStatisticsPlanPH ------------------ --------------------------------------------- CREATE TABLE [ob].[DimGlobalStatisticsPlanPH] ( [OBGlobalStatsPlanPHID] int NOT NULL, [Name] nvarchar(200) NOT NULL, [MemberGUID] uniqueidentifier NOT NULL, [HistoryItemGUID] uniqueidentifier NOT NULL, [TransactionID] int NOT NULL, PRIMARY KEY ([OBGlobalStatsPlanPHID]) ); CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [ob].[DimGlobalStatisticsPlanPH] ([MemberGUID]); GO ALTER TABLE [ob].[DimGlobalStatisticsPlanPH] ADD CONSTRAINT [DF__OB_DimGlobalStatisticsPlanPH_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO ALTER TABLE [ob].[DimGlobalStatisticsPlanPH] ADD CONSTRAINT [DF__DimOBGloba__Name__37082240] DEFAULT ('') FOR [Name]; GO ALTER TABLE [ob].[DimGlobalStatisticsPlanPH] ADD CONSTRAINT [DF__DimOBGlob__Membe__37FC4679] DEFAULT (newid()) FOR [MemberGUID]; GO ALTER TABLE [ob].[DimGlobalStatisticsPlanPH] ADD CONSTRAINT [DF__DimOBGlob__Histo__38F06AB2] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO --------------------------------------------- --------------------------------------------- -- ob.DimOBAllocation ------------------ --------------------------------------------- CREATE TABLE [ob].[DimOBAllocation] ( [OBAllocationID] int NOT NULL, [Name] nvarchar(200) NOT NULL, [MemberGUID] uniqueidentifier NOT NULL, [HistoryItemGUID] uniqueidentifier NOT NULL, [TransactionID] int NOT NULL, [Type] nvarchar(100) NOT NULL, [AlwaysUseBasis] bit NOT NULL, [OBAllocationBasisID] int NOT NULL, [ExecutionOrder] smallint NOT NULL, PRIMARY KEY ([OBAllocationID]) ); CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [ob].[DimOBAllocation] ([MemberGUID]); GO ALTER TABLE [ob].[DimOBAllocation] ADD CONSTRAINT [DF__DimOBAlloc__Name__4679AAA0] DEFAULT ('') FOR [Name]; GO ALTER TABLE [ob].[DimOBAllocation] ADD CONSTRAINT [DF__DimOBAllo__Membe__476DCED9] DEFAULT (newid()) FOR [MemberGUID]; GO ALTER TABLE [ob].[DimOBAllocation] ADD CONSTRAINT [DF__DimOBAllo__Trans__4956174B] DEFAULT ((0)) FOR [TransactionID]; GO ALTER TABLE [ob].[DimOBAllocation] ADD CONSTRAINT [DF__DimOBAlloc__Type__4A4A3B84] DEFAULT ('') FOR [Type]; GO ALTER TABLE [ob].[DimOBAllocation] ADD CONSTRAINT [DF__DimOBAllo__Histo__4861F312] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO ALTER TABLE [ob].[DimOBAllocation] ADD CONSTRAINT [DF__DimOBAllo__Alway__60397CA3] DEFAULT ((0)) FOR [AlwaysUseBasis]; GO ALTER TABLE [ob].[DimOBAllocation] ADD CONSTRAINT [DF__DimOBAllo__Alloc__70F9F451] DEFAULT ((0)) FOR [OBAllocationBasisID]; GO ALTER TABLE [ob].[DimOBAllocation] ADD CONSTRAINT [DF__DimOBAllo__Execu__7BC101FA] DEFAULT ((0)) FOR [ExecutionOrder]; GO --------------------------------------------- --------------------------------------------- -- ob.DimOBAllocationBasis ------------------ --------------------------------------------- CREATE TABLE [ob].[DimOBAllocationBasis] ( [OBAllocationBasisID] int NOT NULL, [Name] nvarchar(200) NOT NULL, [MemberGUID] uniqueidentifier NOT NULL, [HistoryItemGUID] uniqueidentifier NOT NULL, [TransactionID] int NOT NULL, [Category] nvarchar(100) NOT NULL, [OBForecastDetailID] int NOT NULL, PRIMARY KEY ([OBAllocationBasisID]) ); CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [ob].[DimOBAllocationBasis] ([MemberGUID]); GO ALTER TABLE [ob].[DimOBAllocationBasis] ADD CONSTRAINT [DF__DimOBAllo__OBFor__1149F5AE] DEFAULT ((0)) FOR [OBForecastDetailID]; GO ALTER TABLE [ob].[DimOBAllocationBasis] ADD CONSTRAINT [DF__DimOBAllo__Histo__667C65DE] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO ALTER TABLE [ob].[DimOBAllocationBasis] ADD CONSTRAINT [DF__DimOBAlloc__Name__64941D6C] DEFAULT ('') FOR [Name]; GO ALTER TABLE [ob].[DimOBAllocationBasis] ADD CONSTRAINT [DF__DimOBAllo__Membe__658841A5] DEFAULT (newid()) FOR [MemberGUID]; GO ALTER TABLE [ob].[DimOBAllocationBasis] ADD CONSTRAINT [DF__DimOBAllo__Trans__67708A17] DEFAULT ((0)) FOR [TransactionID]; GO ALTER TABLE [ob].[DimOBAllocationBasis] ADD CONSTRAINT [DF__DimOBAllo__Categ__6864AE50] DEFAULT ('Not Specified') FOR [Category]; GO --------------------------------------------- --------------------------------------------- -- ob.DimOBExceptions ------------------ --------------------------------------------- CREATE TABLE [ob].[DimOBExceptions] ( [OBExceptionsID] int NOT NULL, [Name] nvarchar(200) NOT NULL, [MemberGUID] uniqueidentifier NOT NULL, [HistoryItemGUID] uniqueidentifier NOT NULL, [TransactionID] int NOT NULL, [Severity] nvarchar(100) NOT NULL, [Model] nvarchar(100) NOT NULL, [ViewName] nvarchar(100) NOT NULL, [SortOrder] smallint NOT NULL, [Description] nvarchar(max) NOT NULL, [Resolution] nvarchar(max) NOT NULL, [FullName] nvarchar(303) NOT NULL, [CustomActionGUID] uniqueidentifier NOT NULL, [SystemCenterLink] nvarchar(400) NOT NULL, [IsClientException] bit NOT NULL, PRIMARY KEY ([OBExceptionsID]) ); CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [ob].[DimOBExceptions] ([MemberGUID]); GO ALTER TABLE [ob].[DimOBExceptions] ADD CONSTRAINT [DF_ob_DimOBExceptions_SystemCenterLink] DEFAULT ('') FOR [SystemCenterLink]; GO ALTER TABLE [ob].[DimOBExceptions] ADD CONSTRAINT [DF_ob_DimOBExceptions_IsClientException] DEFAULT ((1)) FOR [IsClientException]; GO ALTER TABLE [ob].[DimOBExceptions] ADD CONSTRAINT [DF__DimOBExce__Descr__21A8E3FB] DEFAULT ('') FOR [Description]; GO ALTER TABLE [ob].[DimOBExceptions] ADD CONSTRAINT [DF__DimOBExce__Resol__229D0834] DEFAULT ('') FOR [Resolution]; GO ALTER TABLE [ob].[DimOBExceptions] ADD CONSTRAINT [DF__DimOBExce__Histo__68C30A55] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO ALTER TABLE [ob].[DimOBExceptions] ADD CONSTRAINT [DF_ob_DimOBExceptions_CustomActionGUID] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [CustomActionGUID]; GO ALTER TABLE [ob].[DimOBExceptions] ADD CONSTRAINT [DF__DimOBExcep__Name__66DAC1E3] DEFAULT ('') FOR [Name]; GO ALTER TABLE [ob].[DimOBExceptions] ADD CONSTRAINT [DF__DimOBExce__Membe__67CEE61C] DEFAULT (newid()) FOR [MemberGUID]; GO ALTER TABLE [ob].[DimOBExceptions] ADD CONSTRAINT [DF__DimOBExce__Trans__69B72E8E] DEFAULT ((0)) FOR [TransactionID]; GO ALTER TABLE [ob].[DimOBExceptions] ADD CONSTRAINT [DF__DimOBExce__Sever__6AAB52C7] DEFAULT ('') FOR [Severity]; GO ALTER TABLE [ob].[DimOBExceptions] ADD CONSTRAINT [DF__DimOBExce__Model__6B9F7700] DEFAULT ('') FOR [Model]; GO ALTER TABLE [ob].[DimOBExceptions] ADD CONSTRAINT [DF__DimOBExce__ViewN__6C939B39] DEFAULT ('') FOR [ViewName]; GO ALTER TABLE [ob].[DimOBExceptions] ADD CONSTRAINT [DF__DimOBExce__SortO__6D87BF72] DEFAULT ((0)) FOR [SortOrder]; GO --------------------------------------------- --------------------------------------------- -- ob.DimOBForecastDetail ------------------ --------------------------------------------- CREATE TABLE [ob].[DimOBForecastDetail] ( [OBForecastDetailID] int NOT NULL, [Name] nvarchar(200) NOT NULL, [MemberGUID] uniqueidentifier NOT NULL, [HistoryItemGUID] uniqueidentifier NOT NULL, [TransactionID] int NOT NULL, [Category] nvarchar(200) NOT NULL, [DriverID] int NOT NULL, [IsSalaryDriver] bit NOT NULL, [IsRevenueDriver] bit NOT NULL, [AccountID] int NOT NULL, [UnitTypeID] int NOT NULL, [SortOrder] int NOT NULL, [SecondaryAccountID] int NOT NULL, [UnitType] nvarchar(200) NOT NULL, [Driver] nvarchar(200) NOT NULL, [Account] nvarchar(103) NOT NULL, [SecondaryAccount] nvarchar(103) NOT NULL, [Code] nvarchar(100) NOT NULL, [ForecastDetailRollup] nvarchar(200) NOT NULL, [VolumeTarget] nvarchar(200) NOT NULL, [IsMROnly] bit NOT NULL, [IsVariable] bit NOT NULL, PRIMARY KEY ([OBForecastDetailID]) ); GO ALTER TABLE [ob].[DimOBForecastDetail] ADD CONSTRAINT [DF__DimOBFore__Histo__2D11D9EA] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO ALTER TABLE [ob].[DimOBForecastDetail] ADD CONSTRAINT [DF__DimOBFore__Accou__2322540F] DEFAULT ((0)) FOR [AccountID]; GO ALTER TABLE [ob].[DimOBForecastDetail] ADD CONSTRAINT [DF__DimOBForec__Code__27B46107] DEFAULT ('') FOR [Code]; GO ALTER TABLE [ob].[DimOBForecastDetail] ADD CONSTRAINT [DF__DimOBFore__Volum__2821092A] DEFAULT ('Not Specified') FOR [VolumeTarget]; GO ALTER TABLE [ob].[DimOBForecastDetail] ADD CONSTRAINT [DF__DimOBForec__Name__2B299178] DEFAULT ('') FOR [Name]; GO ALTER TABLE [ob].[DimOBForecastDetail] ADD CONSTRAINT [DF__DimOBFore__Membe__2C1DB5B1] DEFAULT (newid()) FOR [MemberGUID]; GO ALTER TABLE [ob].[DimOBForecastDetail] ADD CONSTRAINT [DF__DimOBFore__Trans__2E05FE23] DEFAULT ((0)) FOR [TransactionID]; GO ALTER TABLE [ob].[DimOBForecastDetail] ADD CONSTRAINT [DF__DimOBFore__Categ__2EFA225C] DEFAULT ('') FOR [Category]; GO ALTER TABLE [ob].[DimOBForecastDetail] ADD CONSTRAINT [DF__DimOBFore__Drive__3F7B6E3F] DEFAULT ((0)) FOR [DriverID]; GO ALTER TABLE [ob].[DimOBForecastDetail] ADD CONSTRAINT [DF__DimOBFore__IsMRO__421912B3] DEFAULT ((0)) FOR [IsMROnly]; GO ALTER TABLE [ob].[DimOBForecastDetail] ADD CONSTRAINT [DF__DimOBFore__SortO__45ED38B6] DEFAULT ((0)) FOR [SortOrder]; GO ALTER TABLE [ob].[DimOBForecastDetail] ADD CONSTRAINT [DF__DimOBFore__IsVar__46CA4FE5] DEFAULT ((0)) FOR [IsVariable]; GO ALTER TABLE [ob].[DimOBForecastDetail] ADD CONSTRAINT [DF__DimOBFore__Forec__4B697A10] DEFAULT ('Not Specified') FOR [ForecastDetailRollup]; GO ALTER TABLE [ob].[DimOBForecastDetail] ADD CONSTRAINT [DF__DimOBFore__IsSal__56DEC1DB] DEFAULT ((0)) FOR [IsSalaryDriver]; GO ALTER TABLE [ob].[DimOBForecastDetail] ADD CONSTRAINT [DF__DimOBFore__IsRev__57D2E614] DEFAULT ((0)) FOR [IsRevenueDriver]; GO ALTER TABLE [ob].[DimOBForecastDetail] ADD CONSTRAINT [DF__DimOBFore__UnitT__6AFDF67D] DEFAULT ((0)) FOR [UnitTypeID]; GO ALTER TABLE [ob].[DimOBForecastDetail] ADD CONSTRAINT [DF__DimOBFore__Secon__6E6609BB] DEFAULT ((0)) FOR [SecondaryAccountID]; GO ALTER TABLE [ob].[DimOBForecastDetail] ADD CONSTRAINT [DF__DimOBFore__UnitT__6F5A2DF4] DEFAULT ('') FOR [UnitType]; GO ALTER TABLE [ob].[DimOBForecastDetail] ADD CONSTRAINT [DF__DimOBFore__Drive__704E522D] DEFAULT ('') FOR [Driver]; GO ALTER TABLE [ob].[DimOBForecastDetail] ADD CONSTRAINT [DF__DimOBFore__Accou__71427666] DEFAULT ('') FOR [Account]; GO ALTER TABLE [ob].[DimOBForecastDetail] ADD CONSTRAINT [DF__DimOBFore__Secon__72369A9F] DEFAULT ('') FOR [SecondaryAccount]; GO --------------------------------------------- --------------------------------------------- -- ob.DimOBForecastDetailPH ------------------ --------------------------------------------- CREATE TABLE [ob].[DimOBForecastDetailPH] ( [OBForecastDetailPHID] int NOT NULL, [Name] nvarchar(200) NOT NULL, [MemberGUID] uniqueidentifier NOT NULL, [HistoryItemGUID] uniqueidentifier NOT NULL, [TransactionID] int NOT NULL, PRIMARY KEY ([OBForecastDetailPHID]) ); CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [ob].[DimOBForecastDetailPH] ([MemberGUID]); GO ALTER TABLE [ob].[DimOBForecastDetailPH] ADD CONSTRAINT [DF__DimOBForec__Name__021D5A44] DEFAULT ('') FOR [Name]; GO ALTER TABLE [ob].[DimOBForecastDetailPH] ADD CONSTRAINT [DF__DimOBFore__Membe__03117E7D] DEFAULT (newid()) FOR [MemberGUID]; GO ALTER TABLE [ob].[DimOBForecastDetailPH] ADD CONSTRAINT [DF__DimOBFore__Trans__04F9C6EF] DEFAULT ((0)) FOR [TransactionID]; GO ALTER TABLE [ob].[DimOBForecastDetailPH] ADD CONSTRAINT [DF__DimOBFore__Histo__0405A2B6] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO --------------------------------------------- --------------------------------------------- -- ob.DimOBGlobalStatistics ------------------ --------------------------------------------- CREATE TABLE [ob].[DimOBGlobalStatistics] ( [OBGlobalStatisticID] int NOT NULL, [MemberGUID] uniqueidentifier NOT NULL, [HistoryItemGUID] uniqueidentifier NOT NULL, [TransactionID] int NOT NULL, [AccountDescription] nvarchar(100) NOT NULL, [AccountCode] nvarchar(100) NOT NULL, [DepartmentCode] nvarchar(100) NOT NULL, [AccountID] int NOT NULL, [DepartmentID] int NOT NULL, [Account] nvarchar(103) NOT NULL, [Department] nvarchar(203) NOT NULL, [OBForecastDetailID] int NOT NULL, [LOSLinkID] int NOT NULL, [OBForecastDetail] nvarchar(200) NOT NULL, [LOSLink] nvarchar(103) NOT NULL, [PatientClass] nvarchar(100) NOT NULL, [OBPayor] nvarchar(100) NOT NULL, [OBPayorGroup] nvarchar(100) NOT NULL, [OBUnitsFinancialReportingName] varchar(200) NOT NULL, [OBUnitsFinancialReportingLineName] nvarchar(100) NOT NULL, [FillinSection] nvarchar(120) NOT NULL, [Name] nvarchar(304) NOT NULL, PRIMARY KEY ([OBGlobalStatisticID]) ); CREATE UNIQUE NONCLUSTERED INDEX [NCU_AccountID_DepartmentID] ON [ob].[DimOBGlobalStatistics] ([DepartmentID], [AccountID]); CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [ob].[DimOBGlobalStatistics] ([MemberGUID]); GO ALTER TABLE [ob].[DimOBGlobalStatistics] ADD CONSTRAINT [DF__DimOBGlob__Patie__0AB9C654] DEFAULT ('') FOR [PatientClass]; GO ALTER TABLE [ob].[DimOBGlobalStatistics] ADD CONSTRAINT [DF__DimOBGlob__OBPay__0BADEA8D] DEFAULT ('') FOR [OBPayor]; GO ALTER TABLE [ob].[DimOBGlobalStatistics] ADD CONSTRAINT [DF__DimOBGlob__OBPay__0CA20EC6] DEFAULT ('') FOR [OBPayorGroup]; GO ALTER TABLE [ob].[DimOBGlobalStatistics] ADD CONSTRAINT [DF__DimOBGlob__OBUni__0D9632FF] DEFAULT ('') FOR [OBUnitsFinancialReportingName]; GO ALTER TABLE [ob].[DimOBGlobalStatistics] ADD CONSTRAINT [DF__DimOBGlob__Histo__15646D8B] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO ALTER TABLE [ob].[DimOBGlobalStatistics] ADD CONSTRAINT [DF__DimOBGlob__OBUni__0E8A5738] DEFAULT ('') FOR [OBUnitsFinancialReportingLineName]; GO ALTER TABLE [ob].[DimOBGlobalStatistics] ADD CONSTRAINT [DF__DimOBGlob__Accou__1272F247] DEFAULT ('') FOR [Account]; GO ALTER TABLE [ob].[DimOBGlobalStatistics] ADD CONSTRAINT [DF__DimOBGlob__Depar__13671680] DEFAULT ('') FOR [Department]; GO ALTER TABLE [ob].[DimOBGlobalStatistics] ADD CONSTRAINT [DF__DimOBGlob__Membe__14704952] DEFAULT (newid()) FOR [MemberGUID]; GO ALTER TABLE [ob].[DimOBGlobalStatistics] ADD CONSTRAINT [DF__DimOBGlob__Trans__165891C4] DEFAULT ((0)) FOR [TransactionID]; GO ALTER TABLE [ob].[DimOBGlobalStatistics] ADD CONSTRAINT [DF__DimOBGlob__Accou__1B1D46E1] DEFAULT ('') FOR [AccountDescription]; GO ALTER TABLE [ob].[DimOBGlobalStatistics] ADD CONSTRAINT [DF__DimOBGlob__Accou__1C116B1A] DEFAULT ('') FOR [AccountCode]; GO ALTER TABLE [ob].[DimOBGlobalStatistics] ADD CONSTRAINT [DF__DimOBGlob__Depar__1D058F53] DEFAULT ('') FOR [DepartmentCode]; GO ALTER TABLE [ob].[DimOBGlobalStatistics] ADD CONSTRAINT [DF__DimOBGlob__Accou__20D62037] DEFAULT ((0)) FOR [AccountID]; GO ALTER TABLE [ob].[DimOBGlobalStatistics] ADD CONSTRAINT [DF__DimOBGlob__Depar__21CA4470] DEFAULT ((0)) FOR [DepartmentID]; GO ALTER TABLE [ob].[DimOBGlobalStatistics] ADD CONSTRAINT [DF__DimOBGlob__OBFor__33BED779] DEFAULT ((0)) FOR [OBForecastDetailID]; GO ALTER TABLE [ob].[DimOBGlobalStatistics] ADD CONSTRAINT [DF__DimOBGlob__LOSLi__34B2FBB2] DEFAULT ((0)) FOR [LOSLinkID]; GO ALTER TABLE [ob].[DimOBGlobalStatistics] ADD CONSTRAINT [DF__DimOBGlob__OBFor__7498769D] DEFAULT ('') FOR [OBForecastDetail]; GO ALTER TABLE [ob].[DimOBGlobalStatistics] ADD CONSTRAINT [DF__DimOBGlob__LOSLi__758C9AD6] DEFAULT ('') FOR [LOSLink]; GO --------------------------------------------- --------------------------------------------- -- ob.DimOBGlobalStatisticsPH ------------------ --------------------------------------------- CREATE TABLE [ob].[DimOBGlobalStatisticsPH] ( [OBGlobalStatisticsPHID] int NOT NULL, [Name] nvarchar(200) NOT NULL, [MemberGUID] uniqueidentifier NOT NULL, [HistoryItemGUID] uniqueidentifier NOT NULL, [TransactionID] int NOT NULL, PRIMARY KEY ([OBGlobalStatisticsPHID]) ); CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [ob].[DimOBGlobalStatisticsPH] ([MemberGUID]); GO ALTER TABLE [ob].[DimOBGlobalStatisticsPH] ADD CONSTRAINT [DF__DimOBGloba__Name__296B6638] DEFAULT ('') FOR [Name]; GO ALTER TABLE [ob].[DimOBGlobalStatisticsPH] ADD CONSTRAINT [DF__DimOBGlob__Membe__2A5F8A71] DEFAULT (newid()) FOR [MemberGUID]; GO ALTER TABLE [ob].[DimOBGlobalStatisticsPH] ADD CONSTRAINT [DF__DimOBGlob__Trans__2C47D2E3] DEFAULT ((0)) FOR [TransactionID]; GO ALTER TABLE [ob].[DimOBGlobalStatisticsPH] ADD CONSTRAINT [DF__DimOBGlob__Histo__2B53AEAA] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO --------------------------------------------- --------------------------------------------- -- ob.DimOBGlobalStatisticsPlan ------------------ --------------------------------------------- CREATE TABLE [ob].[DimOBGlobalStatisticsPlan] ( [OBGlobalStatisticsPlanID] int NOT NULL, [MemberGUID] uniqueidentifier NOT NULL, [HistoryItemGUID] uniqueidentifier NOT NULL, [TransactionID] int NOT NULL, [Name] nvarchar(1000) NOT NULL, [BaseYear] float NOT NULL, [MonthsLoaded] float NOT NULL, [EntityID] int NOT NULL, [SecureGroupID] int NOT NULL, [StartYear] float NOT NULL, [NumberofYears] float NOT NULL, [Entity] nvarchar(100) NOT NULL, [LootID] int NOT NULL, [IsDeleted] bit NOT NULL, [FrameworkID] int NOT NULL, PRIMARY KEY ([OBGlobalStatisticsPlanID]) ); CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [ob].[DimOBGlobalStatisticsPlan] ([MemberGUID]); GO ALTER TABLE [ob].[DimOBGlobalStatisticsPlan] ADD CONSTRAINT [DF__DimOBGlob__Membe__080A726D] DEFAULT (newid()) FOR [MemberGUID]; GO ALTER TABLE [ob].[DimOBGlobalStatisticsPlan] ADD CONSTRAINT [DF__DimOBGlob__Trans__09F2BADF] DEFAULT ((0)) FOR [TransactionID]; GO ALTER TABLE [ob].[DimOBGlobalStatisticsPlan] ADD CONSTRAINT [DF__DimOBGlob__Start__1489509E] DEFAULT ((0)) FOR [StartYear]; GO ALTER TABLE [ob].[DimOBGlobalStatisticsPlan] ADD CONSTRAINT [DF__DimOBGlob__Numbe__157D74D7] DEFAULT ((3)) FOR [NumberofYears]; GO ALTER TABLE [ob].[DimOBGlobalStatisticsPlan] ADD CONSTRAINT [DF__DimOBGlob__Entit__23176717] DEFAULT ('') FOR [Entity]; GO ALTER TABLE [ob].[DimOBGlobalStatisticsPlan] ADD CONSTRAINT [DF__DimOBGlob__Entit__76EAD363] DEFAULT ((0)) FOR [EntityID]; GO ALTER TABLE [ob].[DimOBGlobalStatisticsPlan] ADD CONSTRAINT [DF__DimOBGlob__LootI__240B8B50] DEFAULT ((0)) FOR [LootID]; GO ALTER TABLE [ob].[DimOBGlobalStatisticsPlan] ADD CONSTRAINT [DF__DimOBGlob__IsDel__24FFAF89] DEFAULT ((0)) FOR [IsDeleted]; GO ALTER TABLE [ob].[DimOBGlobalStatisticsPlan] ADD CONSTRAINT [DF__DimOBGlob__Histo__08FE96A6] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO ALTER TABLE [ob].[DimOBGlobalStatisticsPlan] ADD CONSTRAINT [DF_OBDIMOBGLOBALSTATISTICSPLANSECUREGROUPID] DEFAULT ((2)) FOR [SecureGroupID]; GO ALTER TABLE [ob].[DimOBGlobalStatisticsPlan] ADD CONSTRAINT [DF__DimOBGloba__Name__5569E407] DEFAULT ('') FOR [Name]; GO ALTER TABLE [ob].[DimOBGlobalStatisticsPlan] ADD CONSTRAINT [DF__DimOBGlob__BaseY__5DFF2A08] DEFAULT ((0)) FOR [BaseYear]; GO ALTER TABLE [ob].[DimOBGlobalStatisticsPlan] ADD CONSTRAINT [DF__DimOBGlob__Month__61CFBAEC] DEFAULT ((0)) FOR [MonthsLoaded]; GO ALTER TABLE [ob].[DimOBGlobalStatisticsPlan] ADD CONSTRAINT [DF__DimOBGlob__Frame__6578C26D] DEFAULT ((0)) FOR [FrameworkID]; GO --------------------------------------------- --------------------------------------------- -- ob.DimOBReimbursementPlan ------------------ --------------------------------------------- CREATE TABLE [ob].[DimOBReimbursementPlan] ( [OBReimbursementPlanID] int NOT NULL, [MemberGUID] uniqueidentifier NOT NULL, [HistoryItemGUID] uniqueidentifier NOT NULL, [FrameworkID] tinyint NOT NULL, [TransactionID] int NOT NULL, [NameCalc] nvarchar(450) NOT NULL, [BaseYear] float NOT NULL, [EntityID] int NOT NULL, [StartYear] nvarchar(200) NOT NULL, [NumberofYears] float NOT NULL, [LootID] int NOT NULL, [Entity] nvarchar(100) NOT NULL, [EntitySortOrder] int NOT NULL, [Name] nvarchar(1000) NOT NULL, [SecureGroupID] int NOT NULL, [MonthsLoaded] nvarchar(400) NOT NULL, PRIMARY KEY ([OBReimbursementPlanID]) ); CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [ob].[DimOBReimbursementPlan] ([MemberGUID]); GO ALTER TABLE [ob].[DimOBReimbursementPlan] ADD CONSTRAINT [DF__DimOBReim__Start__1E12BAD8] DEFAULT ('') FOR [StartYear]; GO ALTER TABLE [ob].[DimOBReimbursementPlan] ADD CONSTRAINT [DF__DimOBReim__Numbe__1F06DF11] DEFAULT ((3)) FOR [NumberofYears]; GO ALTER TABLE [ob].[DimOBReimbursementPlan] ADD CONSTRAINT [DF__DimOBReim__NameN__22F836DD] DEFAULT ('') FOR [Name]; GO ALTER TABLE [ob].[DimOBReimbursementPlan] ADD CONSTRAINT [DF__DimOBReim__Membe__28BD620F] DEFAULT (newid()) FOR [MemberGUID]; GO ALTER TABLE [ob].[DimOBReimbursementPlan] ADD CONSTRAINT [DF__DimOBReim__LootI__29C464A6] DEFAULT ((0)) FOR [LootID]; GO ALTER TABLE [ob].[DimOBReimbursementPlan] ADD CONSTRAINT [DF__DimOBReim__Entit__2AB888DF] DEFAULT ('') FOR [Entity]; GO ALTER TABLE [ob].[DimOBReimbursementPlan] ADD CONSTRAINT [DF__DimOBReim__Entit__2BACAD18] DEFAULT ((0)) FOR [EntitySortOrder]; GO ALTER TABLE [ob].[DimOBReimbursementPlan] ADD CONSTRAINT [DF__DimOBReim__Frame__2E763B65] DEFAULT ((0)) FOR [FrameworkID]; GO ALTER TABLE [ob].[DimOBReimbursementPlan] ADD CONSTRAINT [DF__OB_DimOBReimbursementPlan_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO ALTER TABLE [ob].[DimOBReimbursementPlan] ADD CONSTRAINT [DF__DimOBReim__Secur__38FD51EC] DEFAULT ((0)) FOR [SecureGroupID]; GO ALTER TABLE [ob].[DimOBReimbursementPlan] ADD CONSTRAINT [DF__DimOBReim__Entit__16F0BBFD] DEFAULT ((0)) FOR [EntityID]; GO ALTER TABLE [ob].[DimOBReimbursementPlan] ADD CONSTRAINT [DF__DimOBReim__Histo__29B18648] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO ALTER TABLE [ob].[DimOBReimbursementPlan] ADD CONSTRAINT [DF__DimOBReim__NameC__72B98475] DEFAULT ('New Plan') FOR [NameCalc]; GO ALTER TABLE [ob].[DimOBReimbursementPlan] ADD CONSTRAINT [DF__DimOBReim__BaseY__73ADA8AE] DEFAULT ((0)) FOR [BaseYear]; GO ALTER TABLE [ob].[DimOBReimbursementPlan] ADD CONSTRAINT [DF__DimOBReim__Month__7EFC6437] DEFAULT ('') FOR [MonthsLoaded]; GO --------------------------------------------- --------------------------------------------- -- ob.DimOBReimbursementPlanPH ------------------ --------------------------------------------- CREATE TABLE [ob].[DimOBReimbursementPlanPH] ( [OBReimbursementPlanPHID] int NOT NULL, [Name] nvarchar(200) NOT NULL, [MemberGUID] uniqueidentifier NOT NULL, [HistoryItemGUID] uniqueidentifier NOT NULL, [TransactionID] int NOT NULL, PRIMARY KEY ([OBReimbursementPlanPHID]) ); CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [ob].[DimOBReimbursementPlanPH] ([MemberGUID]); GO ALTER TABLE [ob].[DimOBReimbursementPlanPH] ADD CONSTRAINT [DF__DimOBReimb__Name__1D4BAF63] DEFAULT ('') FOR [Name]; GO ALTER TABLE [ob].[DimOBReimbursementPlanPH] ADD CONSTRAINT [DF__DimOBReim__Membe__1E3FD39C] DEFAULT (newid()) FOR [MemberGUID]; GO ALTER TABLE [ob].[DimOBReimbursementPlanPH] ADD CONSTRAINT [DF__OB_DimOBReimbursementPlanPH_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO ALTER TABLE [ob].[DimOBReimbursementPlanPH] ADD CONSTRAINT [DF__DimOBReim__Histo__1F33F7D5] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO --------------------------------------------- --------------------------------------------- -- ob.DimOBServiceLinePlan ------------------ --------------------------------------------- CREATE TABLE [ob].[DimOBServiceLinePlan] ( [OBServiceLinePlanID] int NOT NULL, [EntityID] int NOT NULL, [MemberGUID] uniqueidentifier NOT NULL, [HistoryItemGUID] uniqueidentifier NOT NULL, [TransactionID] int NOT NULL, [BaseYear] nvarchar(200) NOT NULL, [MonthsLoaded] nvarchar(200) NOT NULL, [StartYear] float NOT NULL, [NumberofYears] float NOT NULL, [FrameworkID] int NOT NULL, [LootID] int NOT NULL, [IsDeleted] bit NOT NULL, [Entity] nvarchar(100) NOT NULL, [EntitySortOrder] int NOT NULL, [SecureGroupID] int NOT NULL, [Name] nvarchar(1000) NOT NULL, [OtherVolumeBudgetYear] float NOT NULL, [OutpatientVolumeProjectedYear] float NOT NULL, [OutpatientVolumeBudgetYear] float NOT NULL, [ObservationVolumeBudgetYear] float NOT NULL, [EDVolumeProjectedYear] float NOT NULL, [ObservationVolumeProjectedYear] float NOT NULL, [EDVolumeBudgetYear] float NOT NULL, [InpatientVolumeBudgetYear] float NOT NULL, [ClinicVolumeBudgetYear] float NOT NULL, [OtherVolumeProjectedYear] float NOT NULL, [ClinicVolumeProjectedYear] float NOT NULL, [InpatientVolumeProjectedYear] float NOT NULL, PRIMARY KEY ([OBServiceLinePlanID]) ); CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [ob].[DimOBServiceLinePlan] ([MemberGUID]); GO ALTER TABLE [ob].[DimOBServiceLinePlan] ADD CONSTRAINT [DF__DimOBServ__Histo__159BD9BA] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO ALTER TABLE [ob].[DimOBServiceLinePlan] ADD CONSTRAINT [DF__DimOBServ__Membe__14A7B581] DEFAULT (newid()) FOR [MemberGUID]; GO ALTER TABLE [ob].[DimOBServiceLinePlan] ADD CONSTRAINT [DF__DimOBServ__Trans__168FFDF3] DEFAULT ((0)) FOR [TransactionID]; GO ALTER TABLE [ob].[DimOBServiceLinePlan] ADD CONSTRAINT [DF__DimOBServ__Start__194E05BB] DEFAULT ((0)) FOR [StartYear]; GO ALTER TABLE [ob].[DimOBServiceLinePlan] ADD CONSTRAINT [DF__DimOBServ__Numbe__1A4229F4] DEFAULT ((3)) FOR [NumberofYears]; GO ALTER TABLE [ob].[DimOBServiceLinePlan] ADD CONSTRAINT [DF__DimOBServ__Frame__3165866E] DEFAULT ((0)) FOR [FrameworkID]; GO ALTER TABLE [ob].[DimOBServiceLinePlan] ADD CONSTRAINT [DF__DimOBServ__Entit__13B39148] DEFAULT ((0)) FOR [EntityID]; GO ALTER TABLE [ob].[DimOBServiceLinePlan] ADD CONSTRAINT [DF__DimOBServ__LootI__3259AAA7] DEFAULT ((0)) FOR [LootID]; GO ALTER TABLE [ob].[DimOBServiceLinePlan] ADD CONSTRAINT [DF__DimOBServ__IsDel__334DCEE0] DEFAULT ((0)) FOR [IsDeleted]; GO ALTER TABLE [ob].[DimOBServiceLinePlan] ADD CONSTRAINT [DF__DimOBServ__Other__33B9ABAC] DEFAULT ((0)) FOR [OtherVolumeBudgetYear]; GO ALTER TABLE [ob].[DimOBServiceLinePlan] ADD CONSTRAINT [DF__DimOBServ__Entit__3441F319] DEFAULT ('') FOR [Entity]; GO ALTER TABLE [ob].[DimOBServiceLinePlan] ADD CONSTRAINT [DF__DimOBServ__Outpa__34ADCFE5] DEFAULT ((0)) FOR [OutpatientVolumeProjectedYear]; GO ALTER TABLE [ob].[DimOBServiceLinePlan] ADD CONSTRAINT [DF__DimOBServ__Entit__35361752] DEFAULT ((0)) FOR [EntitySortOrder]; GO ALTER TABLE [ob].[DimOBServiceLinePlan] ADD CONSTRAINT [DF__DimOBServ__Outpa__35A1F41E] DEFAULT ((0)) FOR [OutpatientVolumeBudgetYear]; GO ALTER TABLE [ob].[DimOBServiceLinePlan] ADD CONSTRAINT [DF__DimOBServ__Secur__362A3B8B] DEFAULT ((0)) FOR [SecureGroupID]; GO ALTER TABLE [ob].[DimOBServiceLinePlan] ADD CONSTRAINT [DF__DimOBServ__Obser__36961857] DEFAULT ((0)) FOR [ObservationVolumeBudgetYear]; GO ALTER TABLE [ob].[DimOBServiceLinePlan] ADD CONSTRAINT [DF__DimOBServ__EDVol__378A3C90] DEFAULT ((0)) FOR [EDVolumeProjectedYear]; GO ALTER TABLE [ob].[DimOBServiceLinePlan] ADD CONSTRAINT [DF__DimOBServ__Obser__387E60C9] DEFAULT ((0)) FOR [ObservationVolumeProjectedYear]; GO ALTER TABLE [ob].[DimOBServiceLinePlan] ADD CONSTRAINT [DF__DimOBServ__EDVol__39728502] DEFAULT ((0)) FOR [EDVolumeBudgetYear]; GO ALTER TABLE [ob].[DimOBServiceLinePlan] ADD CONSTRAINT [DF__DimOBServ__Inpat__3A66A93B] DEFAULT ((0)) FOR [InpatientVolumeBudgetYear]; GO ALTER TABLE [ob].[DimOBServiceLinePlan] ADD CONSTRAINT [DF__DimOBServ__Clini__3B5ACD74] DEFAULT ((0)) FOR [ClinicVolumeBudgetYear]; GO ALTER TABLE [ob].[DimOBServiceLinePlan] ADD CONSTRAINT [DF__DimOBServ__Other__3C4EF1AD] DEFAULT ((0)) FOR [OtherVolumeProjectedYear]; GO ALTER TABLE [ob].[DimOBServiceLinePlan] ADD CONSTRAINT [DF__DimOBServ__Clini__3D4315E6] DEFAULT ((0)) FOR [ClinicVolumeProjectedYear]; GO ALTER TABLE [ob].[DimOBServiceLinePlan] ADD CONSTRAINT [DF__DimOBServ__NameN__3DAC2D19] DEFAULT ('') FOR [Name]; GO ALTER TABLE [ob].[DimOBServiceLinePlan] ADD CONSTRAINT [DF__DimOBServ__Inpat__3E373A1F] DEFAULT ((0)) FOR [InpatientVolumeProjectedYear]; GO ALTER TABLE [ob].[DimOBServiceLinePlan] ADD CONSTRAINT [DF__DimOBServ__BaseY__426E8031] DEFAULT ('') FOR [BaseYear]; GO ALTER TABLE [ob].[DimOBServiceLinePlan] ADD CONSTRAINT [DF__DimOBServ__Month__4362A46A] DEFAULT ('') FOR [MonthsLoaded]; GO --------------------------------------------- --------------------------------------------- -- ob.DimOBServiceLinePlanPH ------------------ --------------------------------------------- CREATE TABLE [ob].[DimOBServiceLinePlanPH] ( [OBServiceLinePlanPHID] int NOT NULL, [Name] nvarchar(200) NOT NULL, [MemberGUID] uniqueidentifier NOT NULL, [HistoryItemGUID] uniqueidentifier NOT NULL, [TransactionID] int NOT NULL, PRIMARY KEY ([OBServiceLinePlanPHID]) ); CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [ob].[DimOBServiceLinePlanPH] ([MemberGUID]); CREATE UNIQUE NONCLUSTERED INDEX [NCU_Name] ON [ob].[DimOBServiceLinePlanPH] ([Name]); GO ALTER TABLE [ob].[DimOBServiceLinePlanPH] ADD CONSTRAINT [DF__DimOBServi__Name__41262194] DEFAULT ('') FOR [Name]; GO ALTER TABLE [ob].[DimOBServiceLinePlanPH] ADD CONSTRAINT [DF__DimOBServ__Membe__421A45CD] DEFAULT (newid()) FOR [MemberGUID]; GO ALTER TABLE [ob].[DimOBServiceLinePlanPH] ADD CONSTRAINT [DF__DimOBServ__Trans__44028E3F] DEFAULT ((0)) FOR [TransactionID]; GO ALTER TABLE [ob].[DimOBServiceLinePlanPH] ADD CONSTRAINT [DF__DimOBServ__Histo__430E6A06] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO --------------------------------------------- --------------------------------------------- -- ob.DimOBSnapshot ------------------ --------------------------------------------- CREATE TABLE [ob].[DimOBSnapshot] ( [OBSnapshotID] int NOT NULL, [Name] nvarchar(200) NOT NULL, [MemberGUID] uniqueidentifier NOT NULL, [HistoryItemGUID] uniqueidentifier NOT NULL, [TransactionID] int NOT NULL, [Category] nvarchar(100) NOT NULL, [Date] nvarchar(100) NOT NULL, PRIMARY KEY ([OBSnapshotID]) ); CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [ob].[DimOBSnapshot] ([MemberGUID]); CREATE UNIQUE NONCLUSTERED INDEX [UK_DimOBSnapshot_CategoryName] ON [ob].[DimOBSnapshot] ([Category], [Name]); GO ALTER TABLE [ob].[DimOBSnapshot] ADD CONSTRAINT [DF__DimOBSnap__Histo__6CE96C4B] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO ALTER TABLE [ob].[DimOBSnapshot] ADD CONSTRAINT [DF__DimOBSnaps__Name__6B0123D9] DEFAULT ('') FOR [Name]; GO ALTER TABLE [ob].[DimOBSnapshot] ADD CONSTRAINT [DF__DimOBSnap__Membe__6BF54812] DEFAULT (newid()) FOR [MemberGUID]; GO ALTER TABLE [ob].[DimOBSnapshot] ADD CONSTRAINT [DF__DimOBSnap__Trans__6DDD9084] DEFAULT ((0)) FOR [TransactionID]; GO ALTER TABLE [ob].[DimOBSnapshot] ADD CONSTRAINT [DF__DimOBSnap__Categ__6ED1B4BD] DEFAULT ('Auto') FOR [Category]; GO ALTER TABLE [ob].[DimOBSnapshot] ADD CONSTRAINT [DF__DimOBSnaps__Date__6FC5D8F6] DEFAULT ('') FOR [Date]; GO --------------------------------------------- --------------------------------------------- -- ob.DimSpread ------------------ --------------------------------------------- CREATE TABLE [ob].[DimSpread] ( [SpreadID] int NOT NULL, [Name] nvarchar(200) NOT NULL, [MemberGUID] uniqueidentifier NOT NULL, [TransactionID] int NOT NULL, [IsBuiltIn] bit NOT NULL, [SortOrder] int NOT NULL, [Category] nvarchar(100) NOT NULL, PRIMARY KEY ([SpreadID]) ); CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [ob].[DimSpread] ([MemberGUID]); GO ALTER TABLE [ob].[DimSpread] ADD CONSTRAINT [DF__OB_DimSpread_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO ALTER TABLE [ob].[DimSpread] ADD CONSTRAINT [DF__DimSpread__Name__36DD39B7] DEFAULT ('') FOR [Name]; GO ALTER TABLE [ob].[DimSpread] ADD CONSTRAINT [DF__DimSpread__Membe__37D15DF0] DEFAULT (newid()) FOR [MemberGUID]; GO ALTER TABLE [ob].[DimSpread] ADD CONSTRAINT [DF_DimSpread_Category] DEFAULT ('') FOR [Category]; GO ALTER TABLE [ob].[DimSpread] ADD CONSTRAINT [DF__DimSpread__IsBui__7A6BEDED] DEFAULT ((0)) FOR [IsBuiltIn]; GO ALTER TABLE [ob].[DimSpread] ADD CONSTRAINT [DF__DimSpread__SortO__7B601226] DEFAULT ((0)) FOR [SortOrder]; GO --------------------------------------------- --------------------------------------------- -- ob.FactAccountSnapshot ------------------ --------------------------------------------- CREATE TABLE [ob].[FactAccountSnapshot] ( [RowID] int NOT NULL, [AccountID] int NOT NULL, [DataTypeID] tinyint NOT NULL, [FiscalYearID] smallint NOT NULL, [DepartmentalBudgetID] int NOT NULL, [OBSnapshotID] int NOT NULL, [TimeClassID] tinyint NOT NULL, [UnitTypeID] tinyint NOT NULL, [Month01] decimal NOT NULL, [Month02] decimal NOT NULL, [Month03] decimal NOT NULL, [Month04] decimal NOT NULL, [Month05] decimal NOT NULL, [Month06] decimal NOT NULL, [Month07] decimal NOT NULL, [Month08] decimal NOT NULL, [Month09] decimal NOT NULL, [Month10] decimal NOT NULL, [Month11] decimal NOT NULL, [Month12] decimal NOT NULL, [MonthsLoaded] int NOT NULL, [Total] decimal NOT NULL, [Yearly] decimal NOT NULL, [YTD] decimal NOT NULL, [IsDeleted] bit NOT NULL, [HistoryItemGUID] uniqueidentifier NOT NULL, [Version] timestamp NOT NULL, [TransactionID] int NOT NULL, PRIMARY KEY ([RowID]) ); CREATE UNIQUE CLUSTERED INDEX [CU_Base] ON [ob].[FactAccountSnapshot] ([OBSnapshotID], [DepartmentalBudgetID], [FiscalYearID], [TimeClassID], [UnitTypeID], [AccountID], [IsDeleted], [DataTypeID]); CREATE UNIQUE NONCLUSTERED INDEX [NCU_Score] ON [ob].[FactAccountSnapshot] ([OBSnapshotID], [DepartmentalBudgetID], [FiscalYearID], [TimeClassID], [UnitTypeID], [AccountID], [IsDeleted], [DataTypeID]); CREATE NONCLUSTERED INDEX [NCNU_DepartmentalBudget_OBSnapshotID] ON [ob].[FactAccountSnapshot] ([DepartmentalBudgetID], [OBSnapshotID]); GO ALTER TABLE [ob].[FactAccountSnapshot] ADD CONSTRAINT [FK__FactAccou__Accou__7672D685] FOREIGN KEY ([AccountID]) REFERENCES [fw].[DimAccount] ([AccountID]); GO ALTER TABLE [ob].[FactAccountSnapshot] ADD CONSTRAINT [FK__FactAccou__DataT__785B1EF7] FOREIGN KEY ([DataTypeID]) REFERENCES [fw].[DimDataType] ([DataTypeID]); GO ALTER TABLE [ob].[FactAccountSnapshot] ADD CONSTRAINT [FK__FactAccou__Depar__7C2BAFDB] FOREIGN KEY ([DepartmentalBudgetID]) REFERENCES [ob].[DimDepartmentalBudget] ([DepartmentalBudgetID]); GO ALTER TABLE [ob].[FactAccountSnapshot] ADD CONSTRAINT [FK__FactAccou__Fisca__7A436769] FOREIGN KEY ([FiscalYearID]) REFERENCES [fw].[DimFiscalYear] ([FiscalYearID]); GO ALTER TABLE [ob].[FactAccountSnapshot] ADD CONSTRAINT [FK__FactAccou__OBSna__7E13F84D] FOREIGN KEY ([OBSnapshotID]) REFERENCES [ob].[DimOBSnapshot] ([OBSnapshotID]); GO ALTER TABLE [ob].[FactAccountSnapshot] ADD CONSTRAINT [FK__FactAccou__TimeC__01E48931] FOREIGN KEY ([TimeClassID]) REFERENCES [fw].[DimTimeClass] ([TimeClassID]); GO ALTER TABLE [ob].[FactAccountSnapshot] ADD CONSTRAINT [FK__FactAccou__UnitT__03CCD1A3] FOREIGN KEY ([UnitTypeID]) REFERENCES [fw].[DimUnitType] ([UnitTypeID]); GO ALTER TABLE [ob].[FactAccountSnapshot] ADD CONSTRAINT [DF__FactAccou__TimeC__00F064F8] DEFAULT ((0)) FOR [TimeClassID]; GO ALTER TABLE [ob].[FactAccountSnapshot] ADD CONSTRAINT [DF__FactAccou__UnitT__02D8AD6A] DEFAULT ((0)) FOR [UnitTypeID]; GO ALTER TABLE [ob].[FactAccountSnapshot] ADD CONSTRAINT [DF__FactAccou__Histo__14F75DA5] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO ALTER TABLE [ob].[FactAccountSnapshot] ADD CONSTRAINT [DF__FactAccou__Month__04C0F5DC] DEFAULT ((0)) FOR [Month01]; GO ALTER TABLE [ob].[FactAccountSnapshot] ADD CONSTRAINT [DF__FactAccou__Month__05B51A15] DEFAULT ((0)) FOR [Month02]; GO ALTER TABLE [ob].[FactAccountSnapshot] ADD CONSTRAINT [DF__FactAccou__Month__06A93E4E] DEFAULT ((0)) FOR [Month03]; GO ALTER TABLE [ob].[FactAccountSnapshot] ADD CONSTRAINT [DF__FactAccou__Month__079D6287] DEFAULT ((0)) FOR [Month04]; GO ALTER TABLE [ob].[FactAccountSnapshot] ADD CONSTRAINT [DF__FactAccou__Month__089186C0] DEFAULT ((0)) FOR [Month05]; GO ALTER TABLE [ob].[FactAccountSnapshot] ADD CONSTRAINT [DF__FactAccou__Month__0985AAF9] DEFAULT ((0)) FOR [Month06]; GO ALTER TABLE [ob].[FactAccountSnapshot] ADD CONSTRAINT [DF__FactAccou__Month__0A79CF32] DEFAULT ((0)) FOR [Month07]; GO ALTER TABLE [ob].[FactAccountSnapshot] ADD CONSTRAINT [DF__FactAccou__Month__0B6DF36B] DEFAULT ((0)) FOR [Month08]; GO ALTER TABLE [ob].[FactAccountSnapshot] ADD CONSTRAINT [DF__FactAccou__Month__0C6217A4] DEFAULT ((0)) FOR [Month09]; GO ALTER TABLE [ob].[FactAccountSnapshot] ADD CONSTRAINT [DF__FactAccou__Month__0D563BDD] DEFAULT ((0)) FOR [Month10]; GO ALTER TABLE [ob].[FactAccountSnapshot] ADD CONSTRAINT [DF__FactAccou__Month__0E4A6016] DEFAULT ((0)) FOR [Month11]; GO ALTER TABLE [ob].[FactAccountSnapshot] ADD CONSTRAINT [DF__FactAccou__Month__0F3E844F] DEFAULT ((0)) FOR [Month12]; GO ALTER TABLE [ob].[FactAccountSnapshot] ADD CONSTRAINT [DF__FactAccou__Month__1032A888] DEFAULT ((0)) FOR [MonthsLoaded]; GO ALTER TABLE [ob].[FactAccountSnapshot] ADD CONSTRAINT [DF__FactAccou__Total__1126CCC1] DEFAULT ((0)) FOR [Total]; GO ALTER TABLE [ob].[FactAccountSnapshot] ADD CONSTRAINT [DF__FactAccou__Yearl__121AF0FA] DEFAULT ((0)) FOR [Yearly]; GO ALTER TABLE [ob].[FactAccountSnapshot] ADD CONSTRAINT [DF__FactAccount__YTD__130F1533] DEFAULT ((0)) FOR [YTD]; GO ALTER TABLE [ob].[FactAccountSnapshot] ADD CONSTRAINT [DF__FactAccou__IsDel__1403396C] DEFAULT ((0)) FOR [IsDeleted]; GO ALTER TABLE [ob].[FactAccountSnapshot] ADD CONSTRAINT [DF__FactAccou__Trans__15EB81DE] DEFAULT ((0)) FOR [TransactionID]; GO ALTER TABLE [ob].[FactAccountSnapshot] ADD CONSTRAINT [DF__FactAccou__DataT__7766FABE] DEFAULT ((0)) FOR [DataTypeID]; GO ALTER TABLE [ob].[FactAccountSnapshot] ADD CONSTRAINT [DF__FactAccou__Fisca__794F4330] DEFAULT ((0)) FOR [FiscalYearID]; GO ALTER TABLE [ob].[FactAccountSnapshot] ADD CONSTRAINT [DF__FactAccou__Depar__7B378BA2] DEFAULT ((0)) FOR [DepartmentalBudgetID]; GO ALTER TABLE [ob].[FactAccountSnapshot] ADD CONSTRAINT [DF__FactAccou__OBSna__7D1FD414] DEFAULT ((0)) FOR [OBSnapshotID]; GO --------------------------------------------- --------------------------------------------- -- ob.FactAccountSubtableVarSnapshot ------------------ --------------------------------------------- CREATE TABLE [ob].[FactAccountSubtableVarSnapshot] ( [RowID] int NOT NULL, [AccountID] int NOT NULL, [AdjustmentCategoryID] int NOT NULL, [AssumptionID] int NOT NULL, [FiscalYearID] smallint NOT NULL, [DepartmentalBudgetID] int NOT NULL, [TimeClassID] tinyint NOT NULL, [UnitTypeID] tinyint NOT NULL, [OBSnapshotID] int NOT NULL, [Comment] nvarchar(2000) NOT NULL, [Comment_Comment] nvarchar(max) NOT NULL, [Comment_Formula] nvarchar(max) NOT NULL, [Month01] decimal NOT NULL, [Month02] decimal NOT NULL, [Month03] decimal NOT NULL, [Month04] decimal NOT NULL, [Month05] decimal NOT NULL, [Month06] decimal NOT NULL, [Month07] decimal NOT NULL, [Month08] decimal NOT NULL, [Month09] decimal NOT NULL, [Month10] decimal NOT NULL, [Month11] decimal NOT NULL, [Month12] decimal NOT NULL, [Total] decimal NULL, [Yearly] decimal NOT NULL, [IsDeleted] bit NOT NULL, [HistoryItemGUID] uniqueidentifier NOT NULL, [Version] timestamp NOT NULL, [TransactionID] int NOT NULL, PRIMARY KEY ([RowID]) ); GO ALTER TABLE [ob].[FactAccountSubtableVarSnapshot] ADD CONSTRAINT [FK_FactAccountSubtableVarSnapshot_OBSnapshotID] FOREIGN KEY ([OBSnapshotID]) REFERENCES [ob].[DimOBSnapshot] ([OBSnapshotID]); GO ALTER TABLE [ob].[FactAccountSubtableVarSnapshot] ADD CONSTRAINT [DF__FactAccou__Comme__001E04C8] DEFAULT ('') FOR [Comment_Comment]; GO ALTER TABLE [ob].[FactAccountSubtableVarSnapshot] ADD CONSTRAINT [DF__FactAccou__Comme__01122901] DEFAULT ('d') FOR [Comment_Formula]; GO ALTER TABLE [ob].[FactAccountSubtableVarSnapshot] ADD CONSTRAINT [DF__FactAccou__Month__02064D3A] DEFAULT ((0)) FOR [Month01]; GO ALTER TABLE [ob].[FactAccountSubtableVarSnapshot] ADD CONSTRAINT [DF__FactAccou__Month__02FA7173] DEFAULT ((0)) FOR [Month02]; GO ALTER TABLE [ob].[FactAccountSubtableVarSnapshot] ADD CONSTRAINT [DF__FactAccou__Month__03EE95AC] DEFAULT ((0)) FOR [Month03]; GO ALTER TABLE [ob].[FactAccountSubtableVarSnapshot] ADD CONSTRAINT [DF__FactAccou__Month__04E2B9E5] DEFAULT ((0)) FOR [Month04]; GO ALTER TABLE [ob].[FactAccountSubtableVarSnapshot] ADD CONSTRAINT [DF__FactAccou__Month__05D6DE1E] DEFAULT ((0)) FOR [Month05]; GO ALTER TABLE [ob].[FactAccountSubtableVarSnapshot] ADD CONSTRAINT [DF__FactAccou__Month__06CB0257] DEFAULT ((0)) FOR [Month06]; GO ALTER TABLE [ob].[FactAccountSubtableVarSnapshot] ADD CONSTRAINT [DF__FactAccou__Month__07BF2690] DEFAULT ((0)) FOR [Month07]; GO ALTER TABLE [ob].[FactAccountSubtableVarSnapshot] ADD CONSTRAINT [DF__FactAccou__Month__08B34AC9] DEFAULT ((0)) FOR [Month08]; GO ALTER TABLE [ob].[FactAccountSubtableVarSnapshot] ADD CONSTRAINT [DF__FactAccou__Month__09A76F02] DEFAULT ((0)) FOR [Month09]; GO ALTER TABLE [ob].[FactAccountSubtableVarSnapshot] ADD CONSTRAINT [DF__FactAccou__Month__0A9B933B] DEFAULT ((0)) FOR [Month10]; GO ALTER TABLE [ob].[FactAccountSubtableVarSnapshot] ADD CONSTRAINT [DF__FactAccou__Month__0B8FB774] DEFAULT ((0)) FOR [Month11]; GO ALTER TABLE [ob].[FactAccountSubtableVarSnapshot] ADD CONSTRAINT [DF__FactAccou__Month__0C83DBAD] DEFAULT ((0)) FOR [Month12]; GO ALTER TABLE [ob].[FactAccountSubtableVarSnapshot] ADD CONSTRAINT [DF__FactAccou__Yearl__0D77FFE6] DEFAULT ((0)) FOR [Yearly]; GO ALTER TABLE [ob].[FactAccountSubtableVarSnapshot] ADD CONSTRAINT [DF__FactAccou__IsDel__0E6C241F] DEFAULT ((0)) FOR [IsDeleted]; GO ALTER TABLE [ob].[FactAccountSubtableVarSnapshot] ADD CONSTRAINT [DF__FactAccou__Trans__10546C91] DEFAULT ((0)) FOR [TransactionID]; GO ALTER TABLE [ob].[FactAccountSubtableVarSnapshot] ADD CONSTRAINT [DF__FactAccou__Histo__0F604858] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO ALTER TABLE [ob].[FactAccountSubtableVarSnapshot] ADD CONSTRAINT [DF__FactAccou__Fisca__7D41981D] DEFAULT ((0)) FOR [FiscalYearID]; GO ALTER TABLE [ob].[FactAccountSubtableVarSnapshot] ADD CONSTRAINT [DF__FactAccou__OBSna__7E35BC56] DEFAULT ((0)) FOR [OBSnapshotID]; GO ALTER TABLE [ob].[FactAccountSubtableVarSnapshot] ADD CONSTRAINT [DF__FactAccou__Comme__7F29E08F] DEFAULT ('') FOR [Comment]; GO --------------------------------------------- --------------------------------------------- -- ob.FactAccountVarSnapshot ------------------ --------------------------------------------- CREATE TABLE [ob].[FactAccountVarSnapshot] ( [RowID] int NOT NULL, [AccountID] int NOT NULL, [AssumptionID] int NOT NULL, [FiscalMonthID] tinyint NOT NULL, [FiscalYearID] smallint NOT NULL, [DepartmentalBudgetID] int NOT NULL, [RowNumberID] int NOT NULL, [TimeClassID] tinyint NOT NULL, [UnitTypeID] tinyint NOT NULL, [OBSnapshotID] int NOT NULL, [Amount] decimal NOT NULL, [Amount_Comment] nvarchar(max) NOT NULL, [Amount_Formula] nvarchar(max) NOT NULL, [Comment] nvarchar(2000) NOT NULL, [Comment_Comment] nvarchar(max) NOT NULL, [Comment_Formula] nvarchar(max) NOT NULL, [TextValue] nvarchar(2000) NOT NULL, [TextValue_Comment] nvarchar(max) NOT NULL, [TextValue_Formula] nvarchar(max) NOT NULL, [IsDeleted] bit NOT NULL, [HistoryItemGUID] uniqueidentifier NOT NULL, [Version] timestamp NOT NULL, [TransactionID] int NOT NULL, PRIMARY KEY ([RowID]) ); GO ALTER TABLE [ob].[FactAccountVarSnapshot] ADD CONSTRAINT [FK_FactAccountVarSnapshot_OBSnapshotID] FOREIGN KEY ([OBSnapshotID]) REFERENCES [ob].[DimOBSnapshot] ([OBSnapshotID]); GO ALTER TABLE [ob].[FactAccountVarSnapshot] ADD CONSTRAINT [DF__FactAccou__Histo__4D9284FB] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO ALTER TABLE [ob].[FactAccountVarSnapshot] ADD CONSTRAINT [DF__FactAccou__Fisca__412CAE16] DEFAULT ((0)) FOR [FiscalMonthID]; GO ALTER TABLE [ob].[FactAccountVarSnapshot] ADD CONSTRAINT [DF__FactAccou__Fisca__4220D24F] DEFAULT ((0)) FOR [FiscalYearID]; GO ALTER TABLE [ob].[FactAccountVarSnapshot] ADD CONSTRAINT [DF__FactAccou__OBSna__4314F688] DEFAULT ((0)) FOR [OBSnapshotID]; GO ALTER TABLE [ob].[FactAccountVarSnapshot] ADD CONSTRAINT [DF__FactAccou__Amoun__44091AC1] DEFAULT ((0)) FOR [Amount]; GO ALTER TABLE [ob].[FactAccountVarSnapshot] ADD CONSTRAINT [DF__FactAccou__Amoun__44FD3EFA] DEFAULT ('') FOR [Amount_Comment]; GO ALTER TABLE [ob].[FactAccountVarSnapshot] ADD CONSTRAINT [DF__FactAccou__Amoun__45F16333] DEFAULT ('d') FOR [Amount_Formula]; GO ALTER TABLE [ob].[FactAccountVarSnapshot] ADD CONSTRAINT [DF__FactAccou__Comme__46E5876C] DEFAULT ('') FOR [Comment]; GO ALTER TABLE [ob].[FactAccountVarSnapshot] ADD CONSTRAINT [DF__FactAccou__Comme__47D9ABA5] DEFAULT ('') FOR [Comment_Comment]; GO ALTER TABLE [ob].[FactAccountVarSnapshot] ADD CONSTRAINT [DF__FactAccou__Comme__48CDCFDE] DEFAULT ('d') FOR [Comment_Formula]; GO ALTER TABLE [ob].[FactAccountVarSnapshot] ADD CONSTRAINT [DF__FactAccou__TextV__49C1F417] DEFAULT ('') FOR [TextValue]; GO ALTER TABLE [ob].[FactAccountVarSnapshot] ADD CONSTRAINT [DF__FactAccou__TextV__4AB61850] DEFAULT ('') FOR [TextValue_Comment]; GO ALTER TABLE [ob].[FactAccountVarSnapshot] ADD CONSTRAINT [DF__FactAccou__TextV__4BAA3C89] DEFAULT ('d') FOR [TextValue_Formula]; GO ALTER TABLE [ob].[FactAccountVarSnapshot] ADD CONSTRAINT [DF__FactAccou__IsDel__4C9E60C2] DEFAULT ((0)) FOR [IsDeleted]; GO ALTER TABLE [ob].[FactAccountVarSnapshot] ADD CONSTRAINT [DF__FactAccou__Trans__4E86A934] DEFAULT ((0)) FOR [TransactionID]; GO --------------------------------------------- --------------------------------------------- -- ob.FactAssumptionByAccount ------------------ --------------------------------------------- CREATE TABLE [ob].[FactAssumptionByAccount] ( [RowID] int NOT NULL, [GlobalAssumptionGUID] uniqueidentifier NOT NULL, [AccountID] int NOT NULL, [Month01] decimal NULL, [Month02] decimal NULL, [Month03] decimal NULL, [Month04] decimal NULL, [Month05] decimal NULL, [Month06] decimal NULL, [Month07] decimal NULL, [Month08] decimal NULL, [Month09] decimal NULL, [Month10] decimal NULL, [Month11] decimal NULL, [Month12] decimal NULL, PRIMARY KEY ([RowID]) ); GO ALTER TABLE [ob].[FactAssumptionByAccount] ADD CONSTRAINT [FK_FactAssumptionByAccount_GlobalAssumption] FOREIGN KEY ([GlobalAssumptionGUID]) REFERENCES [dbo].[GlobalAssumption] ([GlobalAssumptionGUID]); GO ALTER TABLE [ob].[FactAssumptionByAccount] ADD CONSTRAINT [DF_FactAssumptionByAccount_GlobalAssumptionGUID] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [GlobalAssumptionGUID]; GO ALTER TABLE [ob].[FactAssumptionByAccount] ADD CONSTRAINT [DF_FactAssumptionByAccount_AccountID] DEFAULT ((0)) FOR [AccountID]; GO --------------------------------------------- --------------------------------------------- -- ob.FactAssumptionByAccountFRLineNameDetail ------------------ --------------------------------------------- CREATE TABLE [ob].[FactAssumptionByAccountFRLineNameDetail] ( [RowID] int NOT NULL, [GlobalAssumptionGUID] uniqueidentifier NOT NULL, [FinancialReportingID] int NOT NULL, [AccountID] int NOT NULL, [Month01] decimal NULL, [Month02] decimal NULL, [Month03] decimal NULL, [Month04] decimal NULL, [Month05] decimal NULL, [Month06] decimal NULL, [Month07] decimal NULL, [Month08] decimal NULL, [Month09] decimal NULL, [Month10] decimal NULL, [Month11] decimal NULL, [Month12] decimal NULL, PRIMARY KEY ([RowID]) ); GO ALTER TABLE [ob].[FactAssumptionByAccountFRLineNameDetail] ADD CONSTRAINT [FK_FactAssumptionByAccountFRLineNameDetail_GlobalAssumption] FOREIGN KEY ([GlobalAssumptionGUID]) REFERENCES [dbo].[GlobalAssumption] ([GlobalAssumptionGUID]); GO ALTER TABLE [ob].[FactAssumptionByAccountFRLineNameDetail] ADD CONSTRAINT [DF_FactAssumptionByAccountFRLineNameDetail_GlobalAssumptionGUID] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [GlobalAssumptionGUID]; GO ALTER TABLE [ob].[FactAssumptionByAccountFRLineNameDetail] ADD CONSTRAINT [DF_FactAssumptionByAccountFRLineNameDetail_FinancialReportingID] DEFAULT ((0)) FOR [FinancialReportingID]; GO ALTER TABLE [ob].[FactAssumptionByAccountFRLineNameDetail] ADD CONSTRAINT [DF_FactAssumptionByAccountFRLineNameDetail_AccountID] DEFAULT ((0)) FOR [AccountID]; GO --------------------------------------------- --------------------------------------------- -- ob.FactAssumptionByAccountFRLineNameRollup ------------------ --------------------------------------------- CREATE TABLE [ob].[FactAssumptionByAccountFRLineNameRollup] ( [RowID] int NOT NULL, [GlobalAssumptionGUID] uniqueidentifier NOT NULL, [PHSectionGUID] uniqueidentifier NOT NULL, [FinancialReportingID] int NOT NULL, [Month01] decimal NULL, [Month02] decimal NULL, [Month03] decimal NULL, [Month04] decimal NULL, [Month05] decimal NULL, [Month06] decimal NULL, [Month07] decimal NULL, [Month08] decimal NULL, [Month09] decimal NULL, [Month10] decimal NULL, [Month11] decimal NULL, [Month12] decimal NULL, PRIMARY KEY ([RowID]) ); GO ALTER TABLE [ob].[FactAssumptionByAccountFRLineNameRollup] ADD CONSTRAINT [FK_FactAssumptionByAccountFRLineNameRollup_GlobalAssumption] FOREIGN KEY ([GlobalAssumptionGUID]) REFERENCES [dbo].[GlobalAssumption] ([GlobalAssumptionGUID]); GO ALTER TABLE [ob].[FactAssumptionByAccountFRLineNameRollup] ADD CONSTRAINT [DF_FactAssumptionByAccountFRLineNameRollup_GlobalAssumptionGUID] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [GlobalAssumptionGUID]; GO ALTER TABLE [ob].[FactAssumptionByAccountFRLineNameRollup] ADD CONSTRAINT [DF_FactAssumptionByAccountFRLineNameRollup_PHSectionGUID] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [PHSectionGUID]; GO ALTER TABLE [ob].[FactAssumptionByAccountFRLineNameRollup] ADD CONSTRAINT [DF_FactAssumptionByAccountFRLineNameRollup_FinancialReportingID] DEFAULT ((0)) FOR [FinancialReportingID]; GO --------------------------------------------- --------------------------------------------- -- ob.FactAssumptionByChargeCode ------------------ --------------------------------------------- CREATE TABLE [ob].[FactAssumptionByChargeCode] ( [RowID] int NOT NULL, [GlobalAssumptionGUID] uniqueidentifier NOT NULL, [ChargeCodeID] int NOT NULL, [Month01] decimal NULL, [Month02] decimal NULL, [Month03] decimal NULL, [Month04] decimal NULL, [Month05] decimal NULL, [Month06] decimal NULL, [Month07] decimal NULL, [Month08] decimal NULL, [Month09] decimal NULL, [Month10] decimal NULL, [Month11] decimal NULL, [Month12] decimal NULL, PRIMARY KEY ([RowID]) ); GO ALTER TABLE [ob].[FactAssumptionByChargeCode] ADD CONSTRAINT [FK_FactAssumptionByChargeCode_GlobalAssumption] FOREIGN KEY ([GlobalAssumptionGUID]) REFERENCES [dbo].[GlobalAssumption] ([GlobalAssumptionGUID]); GO ALTER TABLE [ob].[FactAssumptionByChargeCode] ADD CONSTRAINT [DF_FactAssumptionByChargeCode_GlobalAssumptionGUID] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [GlobalAssumptionGUID]; GO ALTER TABLE [ob].[FactAssumptionByChargeCode] ADD CONSTRAINT [DF_FactAssumptionByChargeCode_ChargeCodeID] DEFAULT ((0)) FOR [ChargeCodeID]; GO --------------------------------------------- --------------------------------------------- -- ob.FactAssumptionByChargeCodeRollup ------------------ --------------------------------------------- CREATE TABLE [ob].[FactAssumptionByChargeCodeRollup] ( [RowID] int NOT NULL, [GlobalAssumptionGUID] uniqueidentifier NOT NULL, [PHSectionGUID] uniqueidentifier NOT NULL, [Month01] decimal NULL, [Month02] decimal NULL, [Month03] decimal NULL, [Month04] decimal NULL, [Month05] decimal NULL, [Month06] decimal NULL, [Month07] decimal NULL, [Month08] decimal NULL, [Month09] decimal NULL, [Month10] decimal NULL, [Month11] decimal NULL, [Month12] decimal NULL, PRIMARY KEY ([RowID]) ); GO ALTER TABLE [ob].[FactAssumptionByChargeCodeRollup] ADD CONSTRAINT [FK_FactAssumptionByChargeCodeRollup_GlobalAssumption] FOREIGN KEY ([GlobalAssumptionGUID]) REFERENCES [dbo].[GlobalAssumption] ([GlobalAssumptionGUID]); GO ALTER TABLE [ob].[FactAssumptionByChargeCodeRollup] ADD CONSTRAINT [DF_FactAssumptionByChargeCodeRollup_GlobalAssumptionGUID] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [GlobalAssumptionGUID]; GO ALTER TABLE [ob].[FactAssumptionByChargeCodeRollup] ADD CONSTRAINT [DF_FactAssumptionByChargeCodeRollup_PHSectionGUID] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [PHSectionGUID]; GO --------------------------------------------- --------------------------------------------- -- ob.FactAssumptionByJobCode ------------------ --------------------------------------------- CREATE TABLE [ob].[FactAssumptionByJobCode] ( [RowID] int NOT NULL, [GlobalAssumptionGUID] uniqueidentifier NOT NULL, [JobCodeGroupID] int NOT NULL, [JobCodeID] int NOT NULL, [Month01] decimal NULL, [Month02] decimal NULL, [Month03] decimal NULL, [Month04] decimal NULL, [Month05] decimal NULL, [Month06] decimal NULL, [Month07] decimal NULL, [Month08] decimal NULL, [Month09] decimal NULL, [Month10] decimal NULL, [Month11] decimal NULL, [Month12] decimal NULL, PRIMARY KEY ([RowID]) ); GO ALTER TABLE [ob].[FactAssumptionByJobCode] ADD CONSTRAINT [FK_FactAssumptionByJobCode_GlobalAssumption] FOREIGN KEY ([GlobalAssumptionGUID]) REFERENCES [dbo].[GlobalAssumption] ([GlobalAssumptionGUID]); GO ALTER TABLE [ob].[FactAssumptionByJobCode] ADD CONSTRAINT [DF_FactAssumptionByJobCode_GlobalAssumptionGUID] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [GlobalAssumptionGUID]; GO ALTER TABLE [ob].[FactAssumptionByJobCode] ADD CONSTRAINT [DF_FactAssumptionByJobCode_JobCodeGroupID] DEFAULT ((0)) FOR [JobCodeGroupID]; GO ALTER TABLE [ob].[FactAssumptionByJobCode] ADD CONSTRAINT [DF_FactAssumptionByJobCode_JobCodeID] DEFAULT ((0)) FOR [JobCodeID]; GO --------------------------------------------- --------------------------------------------- -- ob.FactAssumptionByJobCodeGroup ------------------ --------------------------------------------- CREATE TABLE [ob].[FactAssumptionByJobCodeGroup] ( [RowID] int NOT NULL, [GlobalAssumptionGUID] uniqueidentifier NOT NULL, [PHSectionGUID] uniqueidentifier NOT NULL, [JobCodeGroupID] int NOT NULL, [Month01] decimal NULL, [Month02] decimal NULL, [Month03] decimal NULL, [Month04] decimal NULL, [Month05] decimal NULL, [Month06] decimal NULL, [Month07] decimal NULL, [Month08] decimal NULL, [Month09] decimal NULL, [Month10] decimal NULL, [Month11] decimal NULL, [Month12] decimal NULL, PRIMARY KEY ([RowID]) ); GO ALTER TABLE [ob].[FactAssumptionByJobCodeGroup] ADD CONSTRAINT [FK_FactAssumptionByJobCodeGroup_GlobalAssumption] FOREIGN KEY ([GlobalAssumptionGUID]) REFERENCES [dbo].[GlobalAssumption] ([GlobalAssumptionGUID]); GO ALTER TABLE [ob].[FactAssumptionByJobCodeGroup] ADD CONSTRAINT [DF_FactAssumptionByJobCodeGroup_GlobalAssumptionGUID] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [GlobalAssumptionGUID]; GO ALTER TABLE [ob].[FactAssumptionByJobCodeGroup] ADD CONSTRAINT [DF_FactAssumptionByJobCodeGroup_PHSectionGUID] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [PHSectionGUID]; GO ALTER TABLE [ob].[FactAssumptionByJobCodeGroup] ADD CONSTRAINT [DF_FactAssumptionByJobCodeGroup_JobCodeGroupID] DEFAULT ((0)) FOR [JobCodeGroupID]; GO --------------------------------------------- --------------------------------------------- -- ob.FactAssumptionByPHSection ------------------ --------------------------------------------- CREATE TABLE [ob].[FactAssumptionByPHSection] ( [RowID] int NOT NULL, [GlobalAssumptionGUID] uniqueidentifier NOT NULL, [PHSectionGUID] uniqueidentifier NOT NULL, [Month01] decimal NULL, [Month02] decimal NULL, [Month03] decimal NULL, [Month04] decimal NULL, [Month05] decimal NULL, [Month06] decimal NULL, [Month07] decimal NULL, [Month08] decimal NULL, [Month09] decimal NULL, [Month10] decimal NULL, [Month11] decimal NULL, [Month12] decimal NULL, PRIMARY KEY ([RowID]) ); GO ALTER TABLE [ob].[FactAssumptionByPHSection] ADD CONSTRAINT [FK_FactAssumptionByPHSection_GlobalAssumption] FOREIGN KEY ([GlobalAssumptionGUID]) REFERENCES [dbo].[GlobalAssumption] ([GlobalAssumptionGUID]); GO ALTER TABLE [ob].[FactAssumptionByPHSection] ADD CONSTRAINT [DF_FactAssumptionByPHSection_GlobalAssumptionGUID] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [GlobalAssumptionGUID]; GO ALTER TABLE [ob].[FactAssumptionByPHSection] ADD CONSTRAINT [DF_FactAssumptionByPHSection_PHSectionGUID] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [PHSectionGUID]; GO --------------------------------------------- --------------------------------------------- -- ob.FactCDMSnapshot ------------------ --------------------------------------------- CREATE TABLE [ob].[FactCDMSnapshot] ( [RowID] int NOT NULL, [OBSnapshotID] int NOT NULL, [UnitTypeID] tinyint NOT NULL, [ChargeCodeID] int NOT NULL, [DataTypeID] tinyint NOT NULL, [FiscalYearID] smallint NOT NULL, [DepartmentalBudgetID] int NOT NULL, [OBForecastDetailID] int NOT NULL, [PatientClassID] int NOT NULL, [TimeClassID] tinyint NOT NULL, [Month01] decimal NOT NULL, [Month02] decimal NOT NULL, [Month03] decimal NOT NULL, [Month04] decimal NOT NULL, [Month05] decimal NOT NULL, [Month06] decimal NOT NULL, [Month07] decimal NOT NULL, [Month08] decimal NOT NULL, [Month09] decimal NOT NULL, [Month10] decimal NOT NULL, [Month11] decimal NOT NULL, [Month12] decimal NOT NULL, [Yearly] decimal NOT NULL, [YTD] decimal NOT NULL, [Total] decimal NOT NULL, [IsDeleted] bit NOT NULL, [HistoryItemGUID] uniqueidentifier NOT NULL, [Version] timestamp NOT NULL, [TransactionID] int NOT NULL, PRIMARY KEY ([RowID]) ); CREATE UNIQUE CLUSTERED INDEX [CU_Base] ON [ob].[FactCDMSnapshot] ([OBSnapshotID], [DepartmentalBudgetID], [FiscalYearID], [TimeClassID], [PatientClassID], [UnitTypeID], [ChargeCodeID], [OBForecastDetailID], [IsDeleted], [DataTypeID]); CREATE UNIQUE NONCLUSTERED INDEX [NCU_Score] ON [ob].[FactCDMSnapshot] ([OBSnapshotID], [DepartmentalBudgetID], [FiscalYearID], [TimeClassID], [PatientClassID], [UnitTypeID], [ChargeCodeID], [OBForecastDetailID], [IsDeleted], [DataTypeID]); GO ALTER TABLE [ob].[FactCDMSnapshot] ADD CONSTRAINT [FK__FactCDMSn__Charg__2C6FBFDA] FOREIGN KEY ([ChargeCodeID]) REFERENCES [fw].[DimChargeCode] ([ChargeCodeID]); GO ALTER TABLE [ob].[FactCDMSnapshot] ADD CONSTRAINT [FK__FactCDMSn__DataT__2E58084C] FOREIGN KEY ([DataTypeID]) REFERENCES [fw].[DimDataType] ([DataTypeID]); GO ALTER TABLE [ob].[FactCDMSnapshot] ADD CONSTRAINT [FK__FactCDMSn__Depar__32289930] FOREIGN KEY ([DepartmentalBudgetID]) REFERENCES [ob].[DimDepartmentalBudget] ([DepartmentalBudgetID]); GO ALTER TABLE [ob].[FactCDMSnapshot] ADD CONSTRAINT [FK__FactCDMSn__Fisca__304050BE] FOREIGN KEY ([FiscalYearID]) REFERENCES [fw].[DimFiscalYear] ([FiscalYearID]); GO ALTER TABLE [ob].[FactCDMSnapshot] ADD CONSTRAINT [FK__FactCDMSn__OBFor__3410E1A2] FOREIGN KEY ([OBForecastDetailID]) REFERENCES [ob].[DimOBForecastDetail] ([OBForecastDetailID]); GO ALTER TABLE [ob].[FactCDMSnapshot] ADD CONSTRAINT [FK__FactCDMSn__OBSna__289F2EF6] FOREIGN KEY ([OBSnapshotID]) REFERENCES [ob].[DimOBSnapshot] ([OBSnapshotID]); GO ALTER TABLE [ob].[FactCDMSnapshot] ADD CONSTRAINT [FK__FactCDMSn__Patie__35F92A14] FOREIGN KEY ([PatientClassID]) REFERENCES [fw].[DimPatientClass] ([PatientClassID]); GO ALTER TABLE [ob].[FactCDMSnapshot] ADD CONSTRAINT [FK__FactCDMSn__TimeC__37E17286] FOREIGN KEY ([TimeClassID]) REFERENCES [fw].[DimTimeClass] ([TimeClassID]); GO ALTER TABLE [ob].[FactCDMSnapshot] ADD CONSTRAINT [FK__FactCDMSn__UnitT__2A877768] FOREIGN KEY ([UnitTypeID]) REFERENCES [fw].[DimUnitType] ([UnitTypeID]); GO ALTER TABLE [ob].[FactCDMSnapshot] ADD CONSTRAINT [DF__FactCDMSn__OBSna__27AB0ABD] DEFAULT ((0)) FOR [OBSnapshotID]; GO ALTER TABLE [ob].[FactCDMSnapshot] ADD CONSTRAINT [DF__FactCDMSn__UnitT__2993532F] DEFAULT ((0)) FOR [UnitTypeID]; GO ALTER TABLE [ob].[FactCDMSnapshot] ADD CONSTRAINT [DF__FactCDMSn__Charg__2B7B9BA1] DEFAULT ((0)) FOR [ChargeCodeID]; GO ALTER TABLE [ob].[FactCDMSnapshot] ADD CONSTRAINT [DF__FactCDMSn__DataT__2D63E413] DEFAULT ((0)) FOR [DataTypeID]; GO ALTER TABLE [ob].[FactCDMSnapshot] ADD CONSTRAINT [DF__FactCDMSn__Fisca__2F4C2C85] DEFAULT ((0)) FOR [FiscalYearID]; GO ALTER TABLE [ob].[FactCDMSnapshot] ADD CONSTRAINT [DF__FactCDMSn__Depar__313474F7] DEFAULT ((0)) FOR [DepartmentalBudgetID]; GO ALTER TABLE [ob].[FactCDMSnapshot] ADD CONSTRAINT [DF__FactCDMSn__OBFor__331CBD69] DEFAULT ((0)) FOR [OBForecastDetailID]; GO ALTER TABLE [ob].[FactCDMSnapshot] ADD CONSTRAINT [DF__FactCDMSn__Patie__350505DB] DEFAULT ((0)) FOR [PatientClassID]; GO ALTER TABLE [ob].[FactCDMSnapshot] ADD CONSTRAINT [DF__FactCDMSn__TimeC__36ED4E4D] DEFAULT ((0)) FOR [TimeClassID]; GO ALTER TABLE [ob].[FactCDMSnapshot] ADD CONSTRAINT [DF__FactCDMSn__Month__38D596BF] DEFAULT ((0)) FOR [Month01]; GO ALTER TABLE [ob].[FactCDMSnapshot] ADD CONSTRAINT [DF__FactCDMSn__Month__39C9BAF8] DEFAULT ((0)) FOR [Month02]; GO ALTER TABLE [ob].[FactCDMSnapshot] ADD CONSTRAINT [DF__FactCDMSn__Month__3ABDDF31] DEFAULT ((0)) FOR [Month03]; GO ALTER TABLE [ob].[FactCDMSnapshot] ADD CONSTRAINT [DF__FactCDMSn__Month__3BB2036A] DEFAULT ((0)) FOR [Month04]; GO ALTER TABLE [ob].[FactCDMSnapshot] ADD CONSTRAINT [DF__FactCDMSn__Month__3CA627A3] DEFAULT ((0)) FOR [Month05]; GO ALTER TABLE [ob].[FactCDMSnapshot] ADD CONSTRAINT [DF__FactCDMSn__Month__3D9A4BDC] DEFAULT ((0)) FOR [Month06]; GO ALTER TABLE [ob].[FactCDMSnapshot] ADD CONSTRAINT [DF__FactCDMSn__Month__3E8E7015] DEFAULT ((0)) FOR [Month07]; GO ALTER TABLE [ob].[FactCDMSnapshot] ADD CONSTRAINT [DF__FactCDMSn__Month__3F82944E] DEFAULT ((0)) FOR [Month08]; GO ALTER TABLE [ob].[FactCDMSnapshot] ADD CONSTRAINT [DF__FactCDMSn__Month__4076B887] DEFAULT ((0)) FOR [Month09]; GO ALTER TABLE [ob].[FactCDMSnapshot] ADD CONSTRAINT [DF__FactCDMSn__Month__416ADCC0] DEFAULT ((0)) FOR [Month10]; GO ALTER TABLE [ob].[FactCDMSnapshot] ADD CONSTRAINT [DF__FactCDMSn__Month__425F00F9] DEFAULT ((0)) FOR [Month11]; GO ALTER TABLE [ob].[FactCDMSnapshot] ADD CONSTRAINT [DF__FactCDMSn__Month__43532532] DEFAULT ((0)) FOR [Month12]; GO ALTER TABLE [ob].[FactCDMSnapshot] ADD CONSTRAINT [DF__FactCDMSn__Yearl__4447496B] DEFAULT ((0)) FOR [Yearly]; GO ALTER TABLE [ob].[FactCDMSnapshot] ADD CONSTRAINT [DF__FactCDMSnap__YTD__453B6DA4] DEFAULT ((0)) FOR [YTD]; GO ALTER TABLE [ob].[FactCDMSnapshot] ADD CONSTRAINT [DF__FactCDMSn__Total__462F91DD] DEFAULT ((0)) FOR [Total]; GO ALTER TABLE [ob].[FactCDMSnapshot] ADD CONSTRAINT [DF__FactCDMSn__IsDel__4723B616] DEFAULT ((0)) FOR [IsDeleted]; GO ALTER TABLE [ob].[FactCDMSnapshot] ADD CONSTRAINT [DF__FactCDMSn__Trans__490BFE88] DEFAULT ((0)) FOR [TransactionID]; GO ALTER TABLE [ob].[FactCDMSnapshot] ADD CONSTRAINT [DF__FactCDMSn__Histo__4817DA4F] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO --------------------------------------------- --------------------------------------------- -- ob.FactCDMVarSnapshot ------------------ --------------------------------------------- CREATE TABLE [ob].[FactCDMVarSnapshot] ( [RowID] int NOT NULL, [AssumptionID] int NOT NULL, [ChargeCodeID] int NOT NULL, [DataTypeID] tinyint NOT NULL, [FiscalMonthID] tinyint NOT NULL, [FiscalYearID] smallint NOT NULL, [DepartmentalBudgetID] int NOT NULL, [OBForecastDetailID] int NOT NULL, [PatientClassID] int NOT NULL, [TimeClassID] tinyint NOT NULL, [UnitTypeID] tinyint NOT NULL, [OBSnapshotID] int NOT NULL, [Amount] decimal NOT NULL, [Amount_Comment] nvarchar(max) NOT NULL, [Amount_Formula] nvarchar(max) NOT NULL, [Comment] nvarchar(2000) NOT NULL, [TextValue] nvarchar(2000) NOT NULL, [TextValue_Comment] nvarchar(max) NOT NULL, [TextValue_Formula] nvarchar(max) NOT NULL, [IsDeleted] bit NOT NULL, [HistoryItemGUID] uniqueidentifier NOT NULL, [Version] timestamp NOT NULL, [TransactionID] int NOT NULL, PRIMARY KEY ([RowID]) ); GO ALTER TABLE [ob].[FactCDMVarSnapshot] ADD CONSTRAINT [FK_FactCDMVarSnapshot_OBSnapshotID] FOREIGN KEY ([OBSnapshotID]) REFERENCES [ob].[DimOBSnapshot] ([OBSnapshotID]); GO ALTER TABLE [ob].[FactCDMVarSnapshot] ADD CONSTRAINT [DF__FactCDMVa__Fisca__516315DF] DEFAULT ((0)) FOR [FiscalMonthID]; GO ALTER TABLE [ob].[FactCDMVarSnapshot] ADD CONSTRAINT [DF__FactCDMVa__Fisca__52573A18] DEFAULT ((0)) FOR [FiscalYearID]; GO ALTER TABLE [ob].[FactCDMVarSnapshot] ADD CONSTRAINT [DF__FactCDMVa__OBSna__534B5E51] DEFAULT ((0)) FOR [OBSnapshotID]; GO ALTER TABLE [ob].[FactCDMVarSnapshot] ADD CONSTRAINT [DF__FactCDMVa__Amoun__543F828A] DEFAULT ((0)) FOR [Amount]; GO ALTER TABLE [ob].[FactCDMVarSnapshot] ADD CONSTRAINT [DF__FactCDMVa__Amoun__5533A6C3] DEFAULT ('') FOR [Amount_Comment]; GO ALTER TABLE [ob].[FactCDMVarSnapshot] ADD CONSTRAINT [DF__FactCDMVa__Amoun__5627CAFC] DEFAULT ('d') FOR [Amount_Formula]; GO ALTER TABLE [ob].[FactCDMVarSnapshot] ADD CONSTRAINT [DF__FactCDMVa__Comme__571BEF35] DEFAULT ('') FOR [Comment]; GO ALTER TABLE [ob].[FactCDMVarSnapshot] ADD CONSTRAINT [DF__FactCDMVa__TextV__5810136E] DEFAULT ('') FOR [TextValue]; GO ALTER TABLE [ob].[FactCDMVarSnapshot] ADD CONSTRAINT [DF__FactCDMVa__TextV__590437A7] DEFAULT ('') FOR [TextValue_Comment]; GO ALTER TABLE [ob].[FactCDMVarSnapshot] ADD CONSTRAINT [DF__FactCDMVa__TextV__59F85BE0] DEFAULT ('d') FOR [TextValue_Formula]; GO ALTER TABLE [ob].[FactCDMVarSnapshot] ADD CONSTRAINT [DF__FactCDMVa__IsDel__5AEC8019] DEFAULT ((0)) FOR [IsDeleted]; GO ALTER TABLE [ob].[FactCDMVarSnapshot] ADD CONSTRAINT [DF__FactCDMVa__Trans__5CD4C88B] DEFAULT ((0)) FOR [TransactionID]; GO ALTER TABLE [ob].[FactCDMVarSnapshot] ADD CONSTRAINT [DF__FactCDMVa__Histo__5BE0A452] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO --------------------------------------------- --------------------------------------------- -- ob.FactDepartmentBudgetExceptions ------------------ --------------------------------------------- CREATE TABLE [ob].[FactDepartmentBudgetExceptions] ( [RowID] int NOT NULL, [DepartmentalBudgetID] int NOT NULL, [OBExceptionsID] int NOT NULL, [Detail] nvarchar(2000) NOT NULL, [Acknowledged] bit NOT NULL, [IsDeleted] bit NOT NULL, [HistoryItemGUID] uniqueidentifier NOT NULL, [Version] timestamp NOT NULL, [TransactionID] int NOT NULL, PRIMARY KEY ([RowID]) ); GO ALTER TABLE [ob].[FactDepartmentBudgetExceptions] ADD CONSTRAINT [FK__FactDepar__Depar__761D0573] FOREIGN KEY ([DepartmentalBudgetID]) REFERENCES [ob].[DimDepartmentalBudget] ([DepartmentalBudgetID]); GO ALTER TABLE [ob].[FactDepartmentBudgetExceptions] ADD CONSTRAINT [FK__FactDepar__OBExc__78054DE5] FOREIGN KEY ([OBExceptionsID]) REFERENCES [ob].[DimOBExceptions] ([OBExceptionsID]); GO ALTER TABLE [ob].[FactDepartmentBudgetExceptions] ADD CONSTRAINT [DF__FactDepar__Histo__7BD5DEC9] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO ALTER TABLE [ob].[FactDepartmentBudgetExceptions] ADD CONSTRAINT [DF__FactDepar__Depar__7528E13A] DEFAULT ((0)) FOR [DepartmentalBudgetID]; GO ALTER TABLE [ob].[FactDepartmentBudgetExceptions] ADD CONSTRAINT [DF__FactDepar__OBExc__771129AC] DEFAULT ((0)) FOR [OBExceptionsID]; GO ALTER TABLE [ob].[FactDepartmentBudgetExceptions] ADD CONSTRAINT [DF__FactDepar__Detai__78F9721E] DEFAULT ('') FOR [Detail]; GO ALTER TABLE [ob].[FactDepartmentBudgetExceptions] ADD CONSTRAINT [DF__FactDepar__Ackno__79ED9657] DEFAULT ((0)) FOR [Acknowledged]; GO ALTER TABLE [ob].[FactDepartmentBudgetExceptions] ADD CONSTRAINT [DF__FactDepar__IsDel__7AE1BA90] DEFAULT ((0)) FOR [IsDeleted]; GO ALTER TABLE [ob].[FactDepartmentBudgetExceptions] ADD CONSTRAINT [DF__FactDepar__Trans__7CCA0302] DEFAULT ((0)) FOR [TransactionID]; GO --------------------------------------------- --------------------------------------------- -- ob.FactDepartmentPrimaryStatisticConfigurationSubTableMap ------------------ --------------------------------------------- CREATE TABLE [ob].[FactDepartmentPrimaryStatisticConfigurationSubTableMap] ( [RowID] int NOT NULL, [DepartmentalBudgetPHID] tinyint NOT NULL, [AccountPHID] int NOT NULL, [RowExpanded] int NOT NULL, [CellGUID] uniqueidentifier NOT NULL, [MeasureGUID] uniqueidentifier NOT NULL, [IsUserMapped] bit NOT NULL, [OBDepartmentalBudgetPHIndex] int NOT NULL, [IsDeleted] bit NOT NULL, [HistoryItemGUID] uniqueidentifier NOT NULL, [Version] timestamp NOT NULL, [TransactionID] int NOT NULL, [OBAccountPHIndex] int NOT NULL, PRIMARY KEY ([RowID]) ); CREATE UNIQUE CLUSTERED INDEX [CU_Base] ON [ob].[FactDepartmentPrimaryStatisticConfigurationSubTableMap] ([IsDeleted], [AccountPHID], [OBAccountPHIndex], [DepartmentalBudgetPHID], [OBDepartmentalBudgetPHIndex], [RowID]); GO ALTER TABLE [ob].[FactDepartmentPrimaryStatisticConfigurationSubTableMap] ADD CONSTRAINT [DF__FactDepar__Histo__656E6F02] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO ALTER TABLE [ob].[FactDepartmentPrimaryStatisticConfigurationSubTableMap] ADD CONSTRAINT [DF__FactDepar__OBAcc__0E3B7A6B] DEFAULT ((0)) FOR [OBAccountPHIndex]; GO ALTER TABLE [ob].[FactDepartmentPrimaryStatisticConfigurationSubTableMap] ADD CONSTRAINT [DF__FactDepar__CellG__5FB595AC] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [CellGUID]; GO ALTER TABLE [ob].[FactDepartmentPrimaryStatisticConfigurationSubTableMap] ADD CONSTRAINT [DF__FactDepar__Measu__60A9B9E5] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [MeasureGUID]; GO ALTER TABLE [ob].[FactDepartmentPrimaryStatisticConfigurationSubTableMap] ADD CONSTRAINT [DF__FactDepar__RowEx__5EC17173] DEFAULT ((0)) FOR [RowExpanded]; GO ALTER TABLE [ob].[FactDepartmentPrimaryStatisticConfigurationSubTableMap] ADD CONSTRAINT [DF__FactDepar__IsUse__619DDE1E] DEFAULT ((1)) FOR [IsUserMapped]; GO ALTER TABLE [ob].[FactDepartmentPrimaryStatisticConfigurationSubTableMap] ADD CONSTRAINT [DF__FactDepar__OBDep__62920257] DEFAULT ((0)) FOR [OBDepartmentalBudgetPHIndex]; GO ALTER TABLE [ob].[FactDepartmentPrimaryStatisticConfigurationSubTableMap] ADD CONSTRAINT [DF__FactDepar__IsDel__647A4AC9] DEFAULT ((0)) FOR [IsDeleted]; GO ALTER TABLE [ob].[FactDepartmentPrimaryStatisticConfigurationSubTableMap] ADD CONSTRAINT [DF__FactDepar__Trans__6662933B] DEFAULT ((0)) FOR [TransactionID]; GO --------------------------------------------- --------------------------------------------- -- ob.FactGlobalStatisticExceptions ------------------ --------------------------------------------- CREATE TABLE [ob].[FactGlobalStatisticExceptions] ( [RowID] int NOT NULL, [OBGlobalStatisticsPlanID] int NOT NULL, [OBExceptionsID] int NOT NULL, [Acknowledged] bit NOT NULL, [Detail] nvarchar(2000) NOT NULL, [IsDeleted] bit NOT NULL, [HistoryItemGUID] uniqueidentifier NOT NULL, [Version] timestamp NOT NULL, [TransactionID] int NOT NULL, PRIMARY KEY ([RowID]) ); GO ALTER TABLE [ob].[FactGlobalStatisticExceptions] ADD CONSTRAINT [FK__FactGloba__OBExc__0B1C1B0C] FOREIGN KEY ([OBExceptionsID]) REFERENCES [ob].[DimOBExceptions] ([OBExceptionsID]); GO ALTER TABLE [ob].[FactGlobalStatisticExceptions] ADD CONSTRAINT [FK__FactGloba__OBGlo__0933D29A] FOREIGN KEY ([OBGlobalStatisticsPlanID]) REFERENCES [ob].[DimOBGlobalStatisticsPlan] ([OBGlobalStatisticsPlanID]); GO ALTER TABLE [ob].[FactGlobalStatisticExceptions] ADD CONSTRAINT [DF__FactGloba__OBGlo__083FAE61] DEFAULT ((0)) FOR [OBGlobalStatisticsPlanID]; GO ALTER TABLE [ob].[FactGlobalStatisticExceptions] ADD CONSTRAINT [DF__FactGloba__OBExc__0A27F6D3] DEFAULT ((0)) FOR [OBExceptionsID]; GO ALTER TABLE [ob].[FactGlobalStatisticExceptions] ADD CONSTRAINT [DF__FactGloba__Ackno__0C103F45] DEFAULT ((0)) FOR [Acknowledged]; GO ALTER TABLE [ob].[FactGlobalStatisticExceptions] ADD CONSTRAINT [DF__FactGloba__Detai__0D04637E] DEFAULT ('') FOR [Detail]; GO ALTER TABLE [ob].[FactGlobalStatisticExceptions] ADD CONSTRAINT [DF__FactGloba__IsDel__0DF887B7] DEFAULT ((0)) FOR [IsDeleted]; GO ALTER TABLE [ob].[FactGlobalStatisticExceptions] ADD CONSTRAINT [DF__FactGloba__Trans__0FE0D029] DEFAULT ((0)) FOR [TransactionID]; GO ALTER TABLE [ob].[FactGlobalStatisticExceptions] ADD CONSTRAINT [DF__FactGloba__Histo__0EECABF0] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO --------------------------------------------- --------------------------------------------- -- ob.FactGlobalStatisticsLink ------------------ --------------------------------------------- CREATE TABLE [ob].[FactGlobalStatisticsLink] ( [RowID] int NOT NULL, [DepartmentalBudgetID] int NOT NULL, [OBGlobalStatisticsPlanID] int NOT NULL, [IsDeleted] bit NOT NULL, [Version] timestamp NOT NULL, PRIMARY KEY ([RowID]) ); GO ALTER TABLE [ob].[FactGlobalStatisticsLink] ADD CONSTRAINT [DF_FactGlobalStatisticsLink_DepartmentalBudgetID] DEFAULT ((0)) FOR [DepartmentalBudgetID]; GO ALTER TABLE [ob].[FactGlobalStatisticsLink] ADD CONSTRAINT [DF_FactGlobalStatisticsLink_OBGlobalStatisticsPlanID] DEFAULT ((0)) FOR [OBGlobalStatisticsPlanID]; GO ALTER TABLE [ob].[FactGlobalStatisticsLink] ADD CONSTRAINT [DF_FactGlobalStatisticsLink_IsDeleted] DEFAULT ((0)) FOR [IsDeleted]; GO --------------------------------------------- --------------------------------------------- -- ob.FactGlobalStatisticsSnapshot ------------------ --------------------------------------------- CREATE TABLE [ob].[FactGlobalStatisticsSnapshot] ( [RowID] int NOT NULL, [DataTypeID] tinyint NOT NULL, [FiscalYearID] smallint NOT NULL, [OBGlobalStatisticID] int NOT NULL, [OBGlobalStatisticsPlanID] int NOT NULL, [OBSnapshotID] int NOT NULL, [TimeClassID] tinyint NOT NULL, [UnitTypeID] tinyint NOT NULL, [Month01] decimal NOT NULL, [Month02] decimal NOT NULL, [Month03] decimal NOT NULL, [Month04] decimal NOT NULL, [Month05] decimal NOT NULL, [Month06] decimal NOT NULL, [Month07] decimal NOT NULL, [Month08] decimal NOT NULL, [Month09] decimal NOT NULL, [Month10] decimal NOT NULL, [Month11] decimal NOT NULL, [Month12] decimal NOT NULL, [MonthsLoaded] int NOT NULL, [Total] decimal NOT NULL, [Yearly] decimal NOT NULL, [YTD] decimal NOT NULL, [IsDeleted] bit NOT NULL, [HistoryItemGUID] uniqueidentifier NOT NULL, [Version] timestamp NOT NULL, [TransactionID] int NOT NULL, PRIMARY KEY ([RowID]) ); CREATE UNIQUE CLUSTERED INDEX [CU_Base] ON [ob].[FactGlobalStatisticsSnapshot] ([OBSnapshotID], [OBGlobalStatisticsPlanID], [FiscalYearID], [TimeClassID], [OBGlobalStatisticID], [UnitTypeID], [IsDeleted], [DataTypeID]); CREATE UNIQUE NONCLUSTERED INDEX [NCU_Score] ON [ob].[FactGlobalStatisticsSnapshot] ([OBSnapshotID], [OBGlobalStatisticsPlanID], [FiscalYearID], [TimeClassID], [OBGlobalStatisticID], [UnitTypeID], [IsDeleted], [DataTypeID]); GO ALTER TABLE [ob].[FactGlobalStatisticsSnapshot] ADD CONSTRAINT [FK__FactGloba__DataT__19BC12C2] FOREIGN KEY ([DataTypeID]) REFERENCES [fw].[DimDataType] ([DataTypeID]); GO ALTER TABLE [ob].[FactGlobalStatisticsSnapshot] ADD CONSTRAINT [FK__FactGloba__Fisca__1BA45B34] FOREIGN KEY ([FiscalYearID]) REFERENCES [fw].[DimFiscalYear] ([FiscalYearID]); GO ALTER TABLE [ob].[FactGlobalStatisticsSnapshot] ADD CONSTRAINT [FK__FactGloba__OBGlo__1D8CA3A6] FOREIGN KEY ([OBGlobalStatisticID]) REFERENCES [ob].[DimOBGlobalStatistics] ([OBGlobalStatisticID]); GO ALTER TABLE [ob].[FactGlobalStatisticsSnapshot] ADD CONSTRAINT [FK__FactGloba__OBGlo__1F74EC18] FOREIGN KEY ([OBGlobalStatisticsPlanID]) REFERENCES [ob].[DimOBGlobalStatisticsPlan] ([OBGlobalStatisticsPlanID]); GO ALTER TABLE [ob].[FactGlobalStatisticsSnapshot] ADD CONSTRAINT [FK__FactGloba__OBSna__215D348A] FOREIGN KEY ([OBSnapshotID]) REFERENCES [ob].[DimOBSnapshot] ([OBSnapshotID]); GO ALTER TABLE [ob].[FactGlobalStatisticsSnapshot] ADD CONSTRAINT [FK__FactGloba__TimeC__23457CFC] FOREIGN KEY ([TimeClassID]) REFERENCES [fw].[DimTimeClass] ([TimeClassID]); GO ALTER TABLE [ob].[FactGlobalStatisticsSnapshot] ADD CONSTRAINT [FK__FactGloba__UnitT__252DC56E] FOREIGN KEY ([UnitTypeID]) REFERENCES [fw].[DimUnitType] ([UnitTypeID]); GO ALTER TABLE [ob].[FactGlobalStatisticsSnapshot] ADD CONSTRAINT [DF__FactGloba__DataT__18C7EE89] DEFAULT ((0)) FOR [DataTypeID]; GO ALTER TABLE [ob].[FactGlobalStatisticsSnapshot] ADD CONSTRAINT [DF__FactGloba__Fisca__1AB036FB] DEFAULT ((0)) FOR [FiscalYearID]; GO ALTER TABLE [ob].[FactGlobalStatisticsSnapshot] ADD CONSTRAINT [DF__FactGloba__OBGlo__1C987F6D] DEFAULT ((0)) FOR [OBGlobalStatisticID]; GO ALTER TABLE [ob].[FactGlobalStatisticsSnapshot] ADD CONSTRAINT [DF__FactGloba__OBGlo__1E80C7DF] DEFAULT ((0)) FOR [OBGlobalStatisticsPlanID]; GO ALTER TABLE [ob].[FactGlobalStatisticsSnapshot] ADD CONSTRAINT [DF__FactGloba__OBSna__20691051] DEFAULT ((0)) FOR [OBSnapshotID]; GO ALTER TABLE [ob].[FactGlobalStatisticsSnapshot] ADD CONSTRAINT [DF__FactGloba__TimeC__225158C3] DEFAULT ((0)) FOR [TimeClassID]; GO ALTER TABLE [ob].[FactGlobalStatisticsSnapshot] ADD CONSTRAINT [DF__FactGloba__UnitT__2439A135] DEFAULT ((0)) FOR [UnitTypeID]; GO ALTER TABLE [ob].[FactGlobalStatisticsSnapshot] ADD CONSTRAINT [DF__FactGloba__Month__2621E9A7] DEFAULT ((0)) FOR [Month01]; GO ALTER TABLE [ob].[FactGlobalStatisticsSnapshot] ADD CONSTRAINT [DF__FactGloba__Month__27160DE0] DEFAULT ((0)) FOR [Month02]; GO ALTER TABLE [ob].[FactGlobalStatisticsSnapshot] ADD CONSTRAINT [DF__FactGloba__Month__280A3219] DEFAULT ((0)) FOR [Month03]; GO ALTER TABLE [ob].[FactGlobalStatisticsSnapshot] ADD CONSTRAINT [DF__FactGloba__Histo__36585170] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO ALTER TABLE [ob].[FactGlobalStatisticsSnapshot] ADD CONSTRAINT [DF__FactGloba__Month__28FE5652] DEFAULT ((0)) FOR [Month04]; GO ALTER TABLE [ob].[FactGlobalStatisticsSnapshot] ADD CONSTRAINT [DF__FactGloba__Month__29F27A8B] DEFAULT ((0)) FOR [Month05]; GO ALTER TABLE [ob].[FactGlobalStatisticsSnapshot] ADD CONSTRAINT [DF__FactGloba__Month__2AE69EC4] DEFAULT ((0)) FOR [Month06]; GO ALTER TABLE [ob].[FactGlobalStatisticsSnapshot] ADD CONSTRAINT [DF__FactGloba__Month__2BDAC2FD] DEFAULT ((0)) FOR [Month07]; GO ALTER TABLE [ob].[FactGlobalStatisticsSnapshot] ADD CONSTRAINT [DF__FactGloba__Month__2CCEE736] DEFAULT ((0)) FOR [Month08]; GO ALTER TABLE [ob].[FactGlobalStatisticsSnapshot] ADD CONSTRAINT [DF__FactGloba__Month__2DC30B6F] DEFAULT ((0)) FOR [Month09]; GO ALTER TABLE [ob].[FactGlobalStatisticsSnapshot] ADD CONSTRAINT [DF__FactGloba__Month__2EB72FA8] DEFAULT ((0)) FOR [Month10]; GO ALTER TABLE [ob].[FactGlobalStatisticsSnapshot] ADD CONSTRAINT [DF__FactGloba__Month__2FAB53E1] DEFAULT ((0)) FOR [Month11]; GO ALTER TABLE [ob].[FactGlobalStatisticsSnapshot] ADD CONSTRAINT [DF__FactGloba__Month__309F781A] DEFAULT ((0)) FOR [Month12]; GO ALTER TABLE [ob].[FactGlobalStatisticsSnapshot] ADD CONSTRAINT [DF__FactGloba__Month__31939C53] DEFAULT ((0)) FOR [MonthsLoaded]; GO ALTER TABLE [ob].[FactGlobalStatisticsSnapshot] ADD CONSTRAINT [DF__FactGloba__Total__3287C08C] DEFAULT ((0)) FOR [Total]; GO ALTER TABLE [ob].[FactGlobalStatisticsSnapshot] ADD CONSTRAINT [DF__FactGloba__Yearl__337BE4C5] DEFAULT ((0)) FOR [Yearly]; GO ALTER TABLE [ob].[FactGlobalStatisticsSnapshot] ADD CONSTRAINT [DF__FactGlobalS__YTD__347008FE] DEFAULT ((0)) FOR [YTD]; GO ALTER TABLE [ob].[FactGlobalStatisticsSnapshot] ADD CONSTRAINT [DF__FactGloba__IsDel__35642D37] DEFAULT ((0)) FOR [IsDeleted]; GO ALTER TABLE [ob].[FactGlobalStatisticsSnapshot] ADD CONSTRAINT [DF__FactGloba__Trans__374C75A9] DEFAULT ((0)) FOR [TransactionID]; GO --------------------------------------------- --------------------------------------------- -- ob.FactProviderSnapshot ------------------ --------------------------------------------- CREATE TABLE [ob].[FactProviderSnapshot] ( [RowID] int NOT NULL, [OBSnapshotID] int NOT NULL, [DataTypeID] tinyint NOT NULL, [FiscalYearID] smallint NOT NULL, [DepartmentalBudgetID] int NOT NULL, [OBForecastDetailID] int NOT NULL, [ProviderID] int NOT NULL, [TimeClassID] tinyint NOT NULL, [UnitTypeID] tinyint NOT NULL, [Month01] decimal NOT NULL, [Month02] decimal NOT NULL, [Month03] decimal NOT NULL, [Month04] decimal NOT NULL, [Month05] decimal NOT NULL, [Month06] decimal NOT NULL, [Month07] decimal NOT NULL, [Month08] decimal NOT NULL, [Month09] decimal NOT NULL, [Month10] decimal NOT NULL, [Month11] decimal NOT NULL, [Month12] decimal NOT NULL, [Yearly] decimal NOT NULL, [Total] decimal NOT NULL, [YTD] decimal NOT NULL, [MonthsLoaded] int NOT NULL, [IsDeleted] bit NOT NULL, [HistoryItemGUID] uniqueidentifier NOT NULL, [Version] timestamp NOT NULL, [TransactionID] int NOT NULL, PRIMARY KEY ([RowID]) ); CREATE UNIQUE CLUSTERED INDEX [CU_Base] ON [ob].[FactProviderSnapshot] ([OBSnapshotID], [DepartmentalBudgetID], [FiscalYearID], [TimeClassID], [ProviderID], [OBForecastDetailID], [UnitTypeID], [IsDeleted], [DataTypeID]); CREATE UNIQUE NONCLUSTERED INDEX [NCU_Score] ON [ob].[FactProviderSnapshot] ([OBSnapshotID], [DepartmentalBudgetID], [FiscalYearID], [TimeClassID], [ProviderID], [OBForecastDetailID], [UnitTypeID], [IsDeleted], [DataTypeID]); GO ALTER TABLE [ob].[FactProviderSnapshot] ADD CONSTRAINT [FK__FactProvi__DataT__4EC4D7DE] FOREIGN KEY ([DataTypeID]) REFERENCES [fw].[DimDataType] ([DataTypeID]); GO ALTER TABLE [ob].[FactProviderSnapshot] ADD CONSTRAINT [FK__FactProvi__Depar__529568C2] FOREIGN KEY ([DepartmentalBudgetID]) REFERENCES [ob].[DimDepartmentalBudget] ([DepartmentalBudgetID]); GO ALTER TABLE [ob].[FactProviderSnapshot] ADD CONSTRAINT [FK__FactProvi__Fisca__50AD2050] FOREIGN KEY ([FiscalYearID]) REFERENCES [fw].[DimFiscalYear] ([FiscalYearID]); GO ALTER TABLE [ob].[FactProviderSnapshot] ADD CONSTRAINT [FK__FactProvi__OBFor__547DB134] FOREIGN KEY ([OBForecastDetailID]) REFERENCES [ob].[DimOBForecastDetail] ([OBForecastDetailID]); GO ALTER TABLE [ob].[FactProviderSnapshot] ADD CONSTRAINT [FK__FactProvi__OBSna__4CDC8F6C] FOREIGN KEY ([OBSnapshotID]) REFERENCES [ob].[DimOBSnapshot] ([OBSnapshotID]); GO ALTER TABLE [ob].[FactProviderSnapshot] ADD CONSTRAINT [FK__FactProvi__Provi__5665F9A6] FOREIGN KEY ([ProviderID]) REFERENCES [fw].[DimProvider] ([ProviderID]); GO ALTER TABLE [ob].[FactProviderSnapshot] ADD CONSTRAINT [FK__FactProvi__TimeC__584E4218] FOREIGN KEY ([TimeClassID]) REFERENCES [fw].[DimTimeClass] ([TimeClassID]); GO ALTER TABLE [ob].[FactProviderSnapshot] ADD CONSTRAINT [FK__FactProvi__UnitT__5A368A8A] FOREIGN KEY ([UnitTypeID]) REFERENCES [fw].[DimUnitType] ([UnitTypeID]); GO ALTER TABLE [ob].[FactProviderSnapshot] ADD CONSTRAINT [DF__FactProvi__OBSna__4BE86B33] DEFAULT ((0)) FOR [OBSnapshotID]; GO ALTER TABLE [ob].[FactProviderSnapshot] ADD CONSTRAINT [DF__FactProvi__DataT__4DD0B3A5] DEFAULT ((0)) FOR [DataTypeID]; GO ALTER TABLE [ob].[FactProviderSnapshot] ADD CONSTRAINT [DF__FactProvi__Fisca__4FB8FC17] DEFAULT ((0)) FOR [FiscalYearID]; GO ALTER TABLE [ob].[FactProviderSnapshot] ADD CONSTRAINT [DF__FactProvi__Depar__51A14489] DEFAULT ((0)) FOR [DepartmentalBudgetID]; GO ALTER TABLE [ob].[FactProviderSnapshot] ADD CONSTRAINT [DF__FactProvi__OBFor__53898CFB] DEFAULT ((0)) FOR [OBForecastDetailID]; GO ALTER TABLE [ob].[FactProviderSnapshot] ADD CONSTRAINT [DF__FactProvi__Provi__5571D56D] DEFAULT ((0)) FOR [ProviderID]; GO ALTER TABLE [ob].[FactProviderSnapshot] ADD CONSTRAINT [DF__FactProvi__TimeC__575A1DDF] DEFAULT ((0)) FOR [TimeClassID]; GO ALTER TABLE [ob].[FactProviderSnapshot] ADD CONSTRAINT [DF__FactProvi__UnitT__59426651] DEFAULT ((0)) FOR [UnitTypeID]; GO ALTER TABLE [ob].[FactProviderSnapshot] ADD CONSTRAINT [DF__FactProvi__Month__5B2AAEC3] DEFAULT ((0)) FOR [Month01]; GO ALTER TABLE [ob].[FactProviderSnapshot] ADD CONSTRAINT [DF__FactProvi__Month__5C1ED2FC] DEFAULT ((0)) FOR [Month02]; GO ALTER TABLE [ob].[FactProviderSnapshot] ADD CONSTRAINT [DF__FactProvi__Month__5D12F735] DEFAULT ((0)) FOR [Month03]; GO ALTER TABLE [ob].[FactProviderSnapshot] ADD CONSTRAINT [DF__FactProvi__Month__5E071B6E] DEFAULT ((0)) FOR [Month04]; GO ALTER TABLE [ob].[FactProviderSnapshot] ADD CONSTRAINT [DF__FactProvi__Month__5EFB3FA7] DEFAULT ((0)) FOR [Month05]; GO ALTER TABLE [ob].[FactProviderSnapshot] ADD CONSTRAINT [DF__FactProvi__Month__5FEF63E0] DEFAULT ((0)) FOR [Month06]; GO ALTER TABLE [ob].[FactProviderSnapshot] ADD CONSTRAINT [DF__FactProvi__Month__60E38819] DEFAULT ((0)) FOR [Month07]; GO ALTER TABLE [ob].[FactProviderSnapshot] ADD CONSTRAINT [DF__FactProvi__Month__61D7AC52] DEFAULT ((0)) FOR [Month08]; GO ALTER TABLE [ob].[FactProviderSnapshot] ADD CONSTRAINT [DF__FactProvi__Month__62CBD08B] DEFAULT ((0)) FOR [Month09]; GO ALTER TABLE [ob].[FactProviderSnapshot] ADD CONSTRAINT [DF__FactProvi__Month__63BFF4C4] DEFAULT ((0)) FOR [Month10]; GO ALTER TABLE [ob].[FactProviderSnapshot] ADD CONSTRAINT [DF__FactProvi__Month__64B418FD] DEFAULT ((0)) FOR [Month11]; GO ALTER TABLE [ob].[FactProviderSnapshot] ADD CONSTRAINT [DF__FactProvi__Month__65A83D36] DEFAULT ((0)) FOR [Month12]; GO ALTER TABLE [ob].[FactProviderSnapshot] ADD CONSTRAINT [DF__FactProvi__Yearl__669C616F] DEFAULT ((0)) FOR [Yearly]; GO ALTER TABLE [ob].[FactProviderSnapshot] ADD CONSTRAINT [DF__FactProvi__Histo__6B61168C] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO ALTER TABLE [ob].[FactProviderSnapshot] ADD CONSTRAINT [DF__FactProvi__Total__679085A8] DEFAULT ((0)) FOR [Total]; GO ALTER TABLE [ob].[FactProviderSnapshot] ADD CONSTRAINT [DF__FactProvide__YTD__6884A9E1] DEFAULT ((0)) FOR [YTD]; GO ALTER TABLE [ob].[FactProviderSnapshot] ADD CONSTRAINT [DF__FactProvi__Month__6978CE1A] DEFAULT ((0)) FOR [MonthsLoaded]; GO ALTER TABLE [ob].[FactProviderSnapshot] ADD CONSTRAINT [DF__FactProvi__IsDel__6A6CF253] DEFAULT ((0)) FOR [IsDeleted]; GO ALTER TABLE [ob].[FactProviderSnapshot] ADD CONSTRAINT [DF__FactProvi__Trans__6C553AC5] DEFAULT ((0)) FOR [TransactionID]; GO --------------------------------------------- --------------------------------------------- -- ob.FactProviderVarSnapshot ------------------ --------------------------------------------- CREATE TABLE [ob].[FactProviderVarSnapshot] ( [RowID] int NOT NULL, [AssumptionID] int NOT NULL, [FiscalMonthID] tinyint NOT NULL, [FiscalYearID] smallint NOT NULL, [DepartmentalBudgetID] int NOT NULL, [OBForecastDetailID] int NOT NULL, [ProviderID] int NOT NULL, [TimeClassID] tinyint NOT NULL, [UnitTypeID] tinyint NOT NULL, [OBSnapshotID] int NOT NULL, [Amount] decimal NOT NULL, [Amount_Comment] nvarchar(max) NOT NULL, [Amount_Formula] nvarchar(max) NOT NULL, [TextValue] nvarchar(2000) NOT NULL, [TextValue_Comment] nvarchar(max) NOT NULL, [TextValue_Formula] nvarchar(max) NOT NULL, [IsDeleted] bit NOT NULL, [HistoryItemGUID] uniqueidentifier NOT NULL, [Version] timestamp NOT NULL, [TransactionID] int NOT NULL, PRIMARY KEY ([RowID]) ); GO ALTER TABLE [ob].[FactProviderVarSnapshot] ADD CONSTRAINT [FK_FactProviderVarSnapshot_OBSnapshotID] FOREIGN KEY ([OBSnapshotID]) REFERENCES [ob].[DimOBSnapshot] ([OBSnapshotID]); GO ALTER TABLE [ob].[FactProviderVarSnapshot] ADD CONSTRAINT [DF__FactProvi__Histo__693A9F70] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO ALTER TABLE [ob].[FactProviderVarSnapshot] ADD CONSTRAINT [DF__FactProvi__Fisca__5FB13536] DEFAULT ((0)) FOR [FiscalMonthID]; GO ALTER TABLE [ob].[FactProviderVarSnapshot] ADD CONSTRAINT [DF__FactProvi__Fisca__60A5596F] DEFAULT ((0)) FOR [FiscalYearID]; GO ALTER TABLE [ob].[FactProviderVarSnapshot] ADD CONSTRAINT [DF__FactProvi__OBSna__61997DA8] DEFAULT ((0)) FOR [OBSnapshotID]; GO ALTER TABLE [ob].[FactProviderVarSnapshot] ADD CONSTRAINT [DF__FactProvi__Amoun__628DA1E1] DEFAULT ((0)) FOR [Amount]; GO ALTER TABLE [ob].[FactProviderVarSnapshot] ADD CONSTRAINT [DF__FactProvi__Amoun__6381C61A] DEFAULT ('') FOR [Amount_Comment]; GO ALTER TABLE [ob].[FactProviderVarSnapshot] ADD CONSTRAINT [DF__FactProvi__Amoun__6475EA53] DEFAULT ('d') FOR [Amount_Formula]; GO ALTER TABLE [ob].[FactProviderVarSnapshot] ADD CONSTRAINT [DF__FactProvi__TextV__656A0E8C] DEFAULT ('') FOR [TextValue]; GO ALTER TABLE [ob].[FactProviderVarSnapshot] ADD CONSTRAINT [DF__FactProvi__TextV__665E32C5] DEFAULT ('') FOR [TextValue_Comment]; GO ALTER TABLE [ob].[FactProviderVarSnapshot] ADD CONSTRAINT [DF__FactProvi__TextV__675256FE] DEFAULT ('d') FOR [TextValue_Formula]; GO ALTER TABLE [ob].[FactProviderVarSnapshot] ADD CONSTRAINT [DF__FactProvi__IsDel__68467B37] DEFAULT ((0)) FOR [IsDeleted]; GO ALTER TABLE [ob].[FactProviderVarSnapshot] ADD CONSTRAINT [DF__FactProvi__Trans__6A2EC3A9] DEFAULT ((0)) FOR [TransactionID]; GO --------------------------------------------- --------------------------------------------- -- ob.FactReimbursementAccountSnapshot ------------------ --------------------------------------------- CREATE TABLE [ob].[FactReimbursementAccountSnapshot] ( [RowID] int NOT NULL, [OBSnapshotID] int NOT NULL, [AccountID] int NOT NULL, [DataTypeID] tinyint NOT NULL, [FiscalYearID] smallint NOT NULL, [OBReimbursementPlanID] int NOT NULL, [PatientReimbursementGroupID] int NOT NULL, [TimeClassID] tinyint NOT NULL, [UnitTypeID] tinyint NOT NULL, [Month01] decimal NOT NULL, [Month02] decimal NOT NULL, [Month03] decimal NOT NULL, [Month04] decimal NOT NULL, [Month05] decimal NOT NULL, [Month06] decimal NOT NULL, [Month07] decimal NOT NULL, [Month08] decimal NOT NULL, [Month09] decimal NOT NULL, [Month10] decimal NOT NULL, [Month11] decimal NOT NULL, [Month12] decimal NOT NULL, [YTD] decimal NOT NULL, [Yearly] decimal NOT NULL, [Total] decimal NOT NULL, [MonthsLoaded] int NOT NULL, [IsDeleted] bit NOT NULL, [HistoryItemGUID] uniqueidentifier NOT NULL, [Version] timestamp NOT NULL, [TransactionID] int NOT NULL, PRIMARY KEY ([RowID]) ); CREATE UNIQUE CLUSTERED INDEX [CU_Base] ON [ob].[FactReimbursementAccountSnapshot] ([OBSnapshotID], [OBReimbursementPlanID], [FiscalYearID], [TimeClassID], [PatientReimbursementGroupID], [AccountID], [UnitTypeID], [IsDeleted], [DataTypeID]); CREATE UNIQUE NONCLUSTERED INDEX [NCU_Score] ON [ob].[FactReimbursementAccountSnapshot] ([OBSnapshotID], [OBReimbursementPlanID], [FiscalYearID], [TimeClassID], [PatientReimbursementGroupID], [AccountID], [UnitTypeID], [IsDeleted], [DataTypeID]); GO ALTER TABLE [ob].[FactReimbursementAccountSnapshot] ADD CONSTRAINT [FK__FactReimb__Accou__720E141B] FOREIGN KEY ([AccountID]) REFERENCES [fw].[DimAccount] ([AccountID]); GO ALTER TABLE [ob].[FactReimbursementAccountSnapshot] ADD CONSTRAINT [FK__FactReimb__DataT__73F65C8D] FOREIGN KEY ([DataTypeID]) REFERENCES [fw].[DimDataType] ([DataTypeID]); GO ALTER TABLE [ob].[FactReimbursementAccountSnapshot] ADD CONSTRAINT [FK__FactReimb__Fisca__75DEA4FF] FOREIGN KEY ([FiscalYearID]) REFERENCES [fw].[DimFiscalYear] ([FiscalYearID]); GO ALTER TABLE [ob].[FactReimbursementAccountSnapshot] ADD CONSTRAINT [FK__FactReimb__OBRei__77C6ED71] FOREIGN KEY ([OBReimbursementPlanID]) REFERENCES [ob].[DimOBReimbursementPlan] ([OBReimbursementPlanID]); GO ALTER TABLE [ob].[FactReimbursementAccountSnapshot] ADD CONSTRAINT [FK__FactReimb__OBSna__7025CBA9] FOREIGN KEY ([OBSnapshotID]) REFERENCES [ob].[DimOBSnapshot] ([OBSnapshotID]); GO ALTER TABLE [ob].[FactReimbursementAccountSnapshot] ADD CONSTRAINT [FK__FactReimb__Patie__79AF35E3] FOREIGN KEY ([PatientReimbursementGroupID]) REFERENCES [fw].[DimPatientReimbursementGroup] ([PatientReimbursementGroupID]); GO ALTER TABLE [ob].[FactReimbursementAccountSnapshot] ADD CONSTRAINT [FK__FactReimb__TimeC__7B977E55] FOREIGN KEY ([TimeClassID]) REFERENCES [fw].[DimTimeClass] ([TimeClassID]); GO ALTER TABLE [ob].[FactReimbursementAccountSnapshot] ADD CONSTRAINT [FK__FactReimb__UnitT__7D7FC6C7] FOREIGN KEY ([UnitTypeID]) REFERENCES [fw].[DimUnitType] ([UnitTypeID]); GO ALTER TABLE [ob].[FactReimbursementAccountSnapshot] ADD CONSTRAINT [DF__FactReimb__Month__005C3372] DEFAULT ((0)) FOR [Month03]; GO ALTER TABLE [ob].[FactReimbursementAccountSnapshot] ADD CONSTRAINT [DF__FactReimb__Month__015057AB] DEFAULT ((0)) FOR [Month04]; GO ALTER TABLE [ob].[FactReimbursementAccountSnapshot] ADD CONSTRAINT [DF__FactReimb__Month__02447BE4] DEFAULT ((0)) FOR [Month05]; GO ALTER TABLE [ob].[FactReimbursementAccountSnapshot] ADD CONSTRAINT [DF__FactReimb__Month__0338A01D] DEFAULT ((0)) FOR [Month06]; GO ALTER TABLE [ob].[FactReimbursementAccountSnapshot] ADD CONSTRAINT [DF__FactReimb__Month__042CC456] DEFAULT ((0)) FOR [Month07]; GO ALTER TABLE [ob].[FactReimbursementAccountSnapshot] ADD CONSTRAINT [DF__FactReimb__Month__0520E88F] DEFAULT ((0)) FOR [Month08]; GO ALTER TABLE [ob].[FactReimbursementAccountSnapshot] ADD CONSTRAINT [DF__FactReimb__Month__06150CC8] DEFAULT ((0)) FOR [Month09]; GO ALTER TABLE [ob].[FactReimbursementAccountSnapshot] ADD CONSTRAINT [DF__FactReimb__Month__07093101] DEFAULT ((0)) FOR [Month10]; GO ALTER TABLE [ob].[FactReimbursementAccountSnapshot] ADD CONSTRAINT [DF__FactReimb__Month__07FD553A] DEFAULT ((0)) FOR [Month11]; GO ALTER TABLE [ob].[FactReimbursementAccountSnapshot] ADD CONSTRAINT [DF__FactReimb__Month__08F17973] DEFAULT ((0)) FOR [Month12]; GO ALTER TABLE [ob].[FactReimbursementAccountSnapshot] ADD CONSTRAINT [DF__FactReimbur__YTD__09E59DAC] DEFAULT ((0)) FOR [YTD]; GO ALTER TABLE [ob].[FactReimbursementAccountSnapshot] ADD CONSTRAINT [DF__FactReimb__Yearl__0AD9C1E5] DEFAULT ((0)) FOR [Yearly]; GO ALTER TABLE [ob].[FactReimbursementAccountSnapshot] ADD CONSTRAINT [DF__FactReimb__Total__0BCDE61E] DEFAULT ((0)) FOR [Total]; GO ALTER TABLE [ob].[FactReimbursementAccountSnapshot] ADD CONSTRAINT [DF__FactReimb__Month__0CC20A57] DEFAULT ((0)) FOR [MonthsLoaded]; GO ALTER TABLE [ob].[FactReimbursementAccountSnapshot] ADD CONSTRAINT [DF__FactReimb__Histo__0EAA52C9] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO ALTER TABLE [ob].[FactReimbursementAccountSnapshot] ADD CONSTRAINT [DF__FactReimb__IsDel__0DB62E90] DEFAULT ((0)) FOR [IsDeleted]; GO ALTER TABLE [ob].[FactReimbursementAccountSnapshot] ADD CONSTRAINT [DF__FactReimb__Trans__0F9E7702] DEFAULT ((0)) FOR [TransactionID]; GO ALTER TABLE [ob].[FactReimbursementAccountSnapshot] ADD CONSTRAINT [DF__FactReimb__OBSna__6F31A770] DEFAULT ((0)) FOR [OBSnapshotID]; GO ALTER TABLE [ob].[FactReimbursementAccountSnapshot] ADD CONSTRAINT [DF__FactReimb__Accou__7119EFE2] DEFAULT ((0)) FOR [AccountID]; GO ALTER TABLE [ob].[FactReimbursementAccountSnapshot] ADD CONSTRAINT [DF__FactReimb__DataT__73023854] DEFAULT ((0)) FOR [DataTypeID]; GO ALTER TABLE [ob].[FactReimbursementAccountSnapshot] ADD CONSTRAINT [DF__FactReimb__Fisca__74EA80C6] DEFAULT ((0)) FOR [FiscalYearID]; GO ALTER TABLE [ob].[FactReimbursementAccountSnapshot] ADD CONSTRAINT [DF__FactReimb__OBRei__76D2C938] DEFAULT ((0)) FOR [OBReimbursementPlanID]; GO ALTER TABLE [ob].[FactReimbursementAccountSnapshot] ADD CONSTRAINT [DF__FactReimb__Patie__78BB11AA] DEFAULT ((0)) FOR [PatientReimbursementGroupID]; GO ALTER TABLE [ob].[FactReimbursementAccountSnapshot] ADD CONSTRAINT [DF__FactReimb__TimeC__7AA35A1C] DEFAULT ((0)) FOR [TimeClassID]; GO ALTER TABLE [ob].[FactReimbursementAccountSnapshot] ADD CONSTRAINT [DF__FactReimb__UnitT__7C8BA28E] DEFAULT ((0)) FOR [UnitTypeID]; GO ALTER TABLE [ob].[FactReimbursementAccountSnapshot] ADD CONSTRAINT [DF__FactReimb__Month__7E73EB00] DEFAULT ((0)) FOR [Month01]; GO ALTER TABLE [ob].[FactReimbursementAccountSnapshot] ADD CONSTRAINT [DF__FactReimb__Month__7F680F39] DEFAULT ((0)) FOR [Month02]; GO --------------------------------------------- --------------------------------------------- -- ob.FactReimbursementExceptions ------------------ --------------------------------------------- CREATE TABLE [ob].[FactReimbursementExceptions] ( [RowID] int NOT NULL, [OBReimbursementPlanID] int NOT NULL, [OBExceptionsID] int NOT NULL, [Acknowledged] bit NOT NULL, [Detail] nvarchar(2000) NOT NULL, [IsDeleted] bit NOT NULL, [HistoryItemGUID] uniqueidentifier NOT NULL, [Version] timestamp NOT NULL, [TransactionID] int NOT NULL, PRIMARY KEY ([RowID]) ); GO ALTER TABLE [ob].[FactReimbursementExceptions] ADD CONSTRAINT [FK__FactReimb__OBExc__1599A97F] FOREIGN KEY ([OBExceptionsID]) REFERENCES [ob].[DimOBExceptions] ([OBExceptionsID]); GO ALTER TABLE [ob].[FactReimbursementExceptions] ADD CONSTRAINT [FK__FactReimb__OBRei__13B1610D] FOREIGN KEY ([OBReimbursementPlanID]) REFERENCES [ob].[DimOBReimbursementPlan] ([OBReimbursementPlanID]); GO ALTER TABLE [ob].[FactReimbursementExceptions] ADD CONSTRAINT [DF__FactReimb__OBRei__12BD3CD4] DEFAULT ((0)) FOR [OBReimbursementPlanID]; GO ALTER TABLE [ob].[FactReimbursementExceptions] ADD CONSTRAINT [DF__FactReimb__OBExc__14A58546] DEFAULT ((0)) FOR [OBExceptionsID]; GO ALTER TABLE [ob].[FactReimbursementExceptions] ADD CONSTRAINT [DF__FactReimb__Ackno__168DCDB8] DEFAULT ((0)) FOR [Acknowledged]; GO ALTER TABLE [ob].[FactReimbursementExceptions] ADD CONSTRAINT [DF__FactReimb__Detai__1781F1F1] DEFAULT ('') FOR [Detail]; GO ALTER TABLE [ob].[FactReimbursementExceptions] ADD CONSTRAINT [DF__FactReimb__IsDel__1876162A] DEFAULT ((0)) FOR [IsDeleted]; GO ALTER TABLE [ob].[FactReimbursementExceptions] ADD CONSTRAINT [DF__FactReimb__Trans__1A5E5E9C] DEFAULT ((0)) FOR [TransactionID]; GO ALTER TABLE [ob].[FactReimbursementExceptions] ADD CONSTRAINT [DF__FactReimb__Histo__196A3A63] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO --------------------------------------------- --------------------------------------------- -- ob.FactReimbursementPayorSnapshot ------------------ --------------------------------------------- CREATE TABLE [ob].[FactReimbursementPayorSnapshot] ( [RowID] int NOT NULL, [OBSnapshotID] int NOT NULL, [FiscalYearID] smallint NOT NULL, [OBForecastDetailID] int NOT NULL, [OBReimbursementPlanID] int NOT NULL, [PatientReimbursementGroupID] int NOT NULL, [PayorID] int NOT NULL, [PayorGroupID] int NOT NULL, [TimeClassID] tinyint NOT NULL, [UnitTypeID] tinyint NOT NULL, [DataTypeID] tinyint NOT NULL, [Month01] decimal NOT NULL, [Month02] decimal NOT NULL, [Month03] decimal NOT NULL, [Month04] decimal NOT NULL, [Month05] decimal NOT NULL, [Month06] decimal NOT NULL, [Month07] decimal NOT NULL, [Month08] decimal NOT NULL, [Month09] decimal NOT NULL, [Month10] decimal NOT NULL, [Month11] decimal NOT NULL, [Month12] decimal NOT NULL, [MonthsLoaded] int NOT NULL, [YTD] decimal NOT NULL, [Yearly] decimal NOT NULL, [Total] decimal NOT NULL, [IsDeleted] bit NOT NULL, [HistoryItemGUID] uniqueidentifier NOT NULL, [Version] timestamp NOT NULL, [TransactionID] int NOT NULL, PRIMARY KEY ([RowID]) ); CREATE UNIQUE CLUSTERED INDEX [CU_Base] ON [ob].[FactReimbursementPayorSnapshot] ([OBSnapshotID], [OBReimbursementPlanID], [FiscalYearID], [TimeClassID], [PatientReimbursementGroupID], [OBForecastDetailID], [PayorGroupID], [PayorID], [UnitTypeID], [IsDeleted], [DataTypeID]); CREATE UNIQUE NONCLUSTERED INDEX [NCU_Score] ON [ob].[FactReimbursementPayorSnapshot] ([OBSnapshotID], [OBReimbursementPlanID], [FiscalYearID], [TimeClassID], [PatientReimbursementGroupID], [OBForecastDetailID], [PayorGroupID], [PayorID], [UnitTypeID], [IsDeleted], [DataTypeID]); GO ALTER TABLE [ob].[FactReimbursementPayorSnapshot] ADD CONSTRAINT [FK__FactReimb__DataT__249993E8] FOREIGN KEY ([DataTypeID]) REFERENCES [fw].[DimDataType] ([DataTypeID]); GO ALTER TABLE [ob].[FactReimbursementPayorSnapshot] ADD CONSTRAINT [FK__FactReimb__Fisca__15575058] FOREIGN KEY ([FiscalYearID]) REFERENCES [fw].[DimFiscalYear] ([FiscalYearID]); GO ALTER TABLE [ob].[FactReimbursementPayorSnapshot] ADD CONSTRAINT [FK__FactReimb__OBFor__173F98CA] FOREIGN KEY ([OBForecastDetailID]) REFERENCES [ob].[DimOBForecastDetail] ([OBForecastDetailID]); GO ALTER TABLE [ob].[FactReimbursementPayorSnapshot] ADD CONSTRAINT [FK__FactReimb__OBRei__1927E13C] FOREIGN KEY ([OBReimbursementPlanID]) REFERENCES [ob].[DimOBReimbursementPlan] ([OBReimbursementPlanID]); GO ALTER TABLE [ob].[FactReimbursementPayorSnapshot] ADD CONSTRAINT [FK__FactReimb__OBSna__136F07E6] FOREIGN KEY ([OBSnapshotID]) REFERENCES [ob].[DimOBSnapshot] ([OBSnapshotID]); GO ALTER TABLE [ob].[FactReimbursementPayorSnapshot] ADD CONSTRAINT [FK__FactReimb__Patie__1B1029AE] FOREIGN KEY ([PatientReimbursementGroupID]) REFERENCES [fw].[DimPatientReimbursementGroup] ([PatientReimbursementGroupID]); GO ALTER TABLE [ob].[FactReimbursementPayorSnapshot] ADD CONSTRAINT [FK__FactReimb__Payor__1CF87220] FOREIGN KEY ([PayorID]) REFERENCES [fw].[DimPayor] ([PayorID]); GO ALTER TABLE [ob].[FactReimbursementPayorSnapshot] ADD CONSTRAINT [FK__FactReimb__Payor__1EE0BA92] FOREIGN KEY ([PayorGroupID]) REFERENCES [fw].[DimPayorGroup] ([PayorGroupID]); GO ALTER TABLE [ob].[FactReimbursementPayorSnapshot] ADD CONSTRAINT [FK__FactReimb__TimeC__20C90304] FOREIGN KEY ([TimeClassID]) REFERENCES [fw].[DimTimeClass] ([TimeClassID]); GO ALTER TABLE [ob].[FactReimbursementPayorSnapshot] ADD CONSTRAINT [FK__FactReimb__UnitT__22B14B76] FOREIGN KEY ([UnitTypeID]) REFERENCES [fw].[DimUnitType] ([UnitTypeID]); GO ALTER TABLE [ob].[FactReimbursementPayorSnapshot] ADD CONSTRAINT [DF__FactReimb__OBSna__127AE3AD] DEFAULT ((0)) FOR [OBSnapshotID]; GO ALTER TABLE [ob].[FactReimbursementPayorSnapshot] ADD CONSTRAINT [DF__FactReimb__Fisca__14632C1F] DEFAULT ((0)) FOR [FiscalYearID]; GO ALTER TABLE [ob].[FactReimbursementPayorSnapshot] ADD CONSTRAINT [DF__FactReimb__OBFor__164B7491] DEFAULT ((0)) FOR [OBForecastDetailID]; GO ALTER TABLE [ob].[FactReimbursementPayorSnapshot] ADD CONSTRAINT [DF__FactReimb__Histo__35C41FEA] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO ALTER TABLE [ob].[FactReimbursementPayorSnapshot] ADD CONSTRAINT [DF__FactReimb__OBRei__1833BD03] DEFAULT ((0)) FOR [OBReimbursementPlanID]; GO ALTER TABLE [ob].[FactReimbursementPayorSnapshot] ADD CONSTRAINT [DF__FactReimb__Patie__1A1C0575] DEFAULT ((0)) FOR [PatientReimbursementGroupID]; GO ALTER TABLE [ob].[FactReimbursementPayorSnapshot] ADD CONSTRAINT [DF__FactReimb__Payor__1C044DE7] DEFAULT ((0)) FOR [PayorID]; GO ALTER TABLE [ob].[FactReimbursementPayorSnapshot] ADD CONSTRAINT [DF__FactReimb__Payor__1DEC9659] DEFAULT ((0)) FOR [PayorGroupID]; GO ALTER TABLE [ob].[FactReimbursementPayorSnapshot] ADD CONSTRAINT [DF__FactReimb__TimeC__1FD4DECB] DEFAULT ((0)) FOR [TimeClassID]; GO ALTER TABLE [ob].[FactReimbursementPayorSnapshot] ADD CONSTRAINT [DF__FactReimb__UnitT__21BD273D] DEFAULT ((0)) FOR [UnitTypeID]; GO ALTER TABLE [ob].[FactReimbursementPayorSnapshot] ADD CONSTRAINT [DF__FactReimb__DataT__23A56FAF] DEFAULT ((0)) FOR [DataTypeID]; GO ALTER TABLE [ob].[FactReimbursementPayorSnapshot] ADD CONSTRAINT [DF__FactReimb__Month__258DB821] DEFAULT ((0)) FOR [Month01]; GO ALTER TABLE [ob].[FactReimbursementPayorSnapshot] ADD CONSTRAINT [DF__FactReimb__Month__2681DC5A] DEFAULT ((0)) FOR [Month02]; GO ALTER TABLE [ob].[FactReimbursementPayorSnapshot] ADD CONSTRAINT [DF__FactReimb__Month__27760093] DEFAULT ((0)) FOR [Month03]; GO ALTER TABLE [ob].[FactReimbursementPayorSnapshot] ADD CONSTRAINT [DF__FactReimb__Month__286A24CC] DEFAULT ((0)) FOR [Month04]; GO ALTER TABLE [ob].[FactReimbursementPayorSnapshot] ADD CONSTRAINT [DF__FactReimb__Month__295E4905] DEFAULT ((0)) FOR [Month05]; GO ALTER TABLE [ob].[FactReimbursementPayorSnapshot] ADD CONSTRAINT [DF__FactReimb__Month__2A526D3E] DEFAULT ((0)) FOR [Month06]; GO ALTER TABLE [ob].[FactReimbursementPayorSnapshot] ADD CONSTRAINT [DF__FactReimb__Month__2B469177] DEFAULT ((0)) FOR [Month07]; GO ALTER TABLE [ob].[FactReimbursementPayorSnapshot] ADD CONSTRAINT [DF__FactReimb__Month__2C3AB5B0] DEFAULT ((0)) FOR [Month08]; GO ALTER TABLE [ob].[FactReimbursementPayorSnapshot] ADD CONSTRAINT [DF__FactReimb__Month__2D2ED9E9] DEFAULT ((0)) FOR [Month09]; GO ALTER TABLE [ob].[FactReimbursementPayorSnapshot] ADD CONSTRAINT [DF__FactReimb__Month__2E22FE22] DEFAULT ((0)) FOR [Month10]; GO ALTER TABLE [ob].[FactReimbursementPayorSnapshot] ADD CONSTRAINT [DF__FactReimb__Month__2F17225B] DEFAULT ((0)) FOR [Month11]; GO ALTER TABLE [ob].[FactReimbursementPayorSnapshot] ADD CONSTRAINT [DF__FactReimb__Month__300B4694] DEFAULT ((0)) FOR [Month12]; GO ALTER TABLE [ob].[FactReimbursementPayorSnapshot] ADD CONSTRAINT [DF__FactReimb__Month__30FF6ACD] DEFAULT ((0)) FOR [MonthsLoaded]; GO ALTER TABLE [ob].[FactReimbursementPayorSnapshot] ADD CONSTRAINT [DF__FactReimbur__YTD__31F38F06] DEFAULT ((0)) FOR [YTD]; GO ALTER TABLE [ob].[FactReimbursementPayorSnapshot] ADD CONSTRAINT [DF__FactReimb__Yearl__32E7B33F] DEFAULT ((0)) FOR [Yearly]; GO ALTER TABLE [ob].[FactReimbursementPayorSnapshot] ADD CONSTRAINT [DF__FactReimb__Total__33DBD778] DEFAULT ((0)) FOR [Total]; GO ALTER TABLE [ob].[FactReimbursementPayorSnapshot] ADD CONSTRAINT [DF__FactReimb__IsDel__34CFFBB1] DEFAULT ((0)) FOR [IsDeleted]; GO ALTER TABLE [ob].[FactReimbursementPayorSnapshot] ADD CONSTRAINT [DF__FactReimb__Trans__36B84423] DEFAULT ((0)) FOR [TransactionID]; GO --------------------------------------------- --------------------------------------------- -- ob.FactReportAccountWithStaffingDetail ------------------ --------------------------------------------- CREATE TABLE [ob].[FactReportAccountWithStaffingDetail] ( [RowID] bigint NOT NULL, [DepartmentalBudgetID] int NOT NULL, [AccountID] int NOT NULL, [JobCodeID] int NOT NULL, [PayCodeGroupID] int NOT NULL, [FiscalYearID] smallint NOT NULL, [TimeClassID] tinyint NOT NULL, [UnitTypeID] tinyint NOT NULL, [Month01] decimal NOT NULL, [Month02] decimal NOT NULL, [Month03] decimal NOT NULL, [Month04] decimal NOT NULL, [Month05] decimal NOT NULL, [Month06] decimal NOT NULL, [Month07] decimal NOT NULL, [Month08] decimal NOT NULL, [Month09] decimal NOT NULL, [Month10] decimal NOT NULL, [Month11] decimal NOT NULL, [Month12] decimal NOT NULL, [YTD] decimal NOT NULL, [Total] decimal NOT NULL, [ModifiedAt] datetime NOT NULL, PRIMARY KEY ([RowID]) ); CREATE CLUSTERED INDEX [IX_FactReportAccountWithStaffingDetail_Clustered] ON [ob].[FactReportAccountWithStaffingDetail] ([DepartmentalBudgetID]); GO ALTER TABLE [ob].[FactReportAccountWithStaffingDetail] ADD CONSTRAINT [DF__FactRepor__Month__229C6EA7] DEFAULT ((0)) FOR [Month11]; GO ALTER TABLE [ob].[FactReportAccountWithStaffingDetail] ADD CONSTRAINT [DF__FactRepor__Month__239092E0] DEFAULT ((0)) FOR [Month12]; GO ALTER TABLE [ob].[FactReportAccountWithStaffingDetail] ADD CONSTRAINT [DF__FactReportA__YTD__2484B719] DEFAULT ((0)) FOR [YTD]; GO ALTER TABLE [ob].[FactReportAccountWithStaffingDetail] ADD CONSTRAINT [DF__FactRepor__Total__2578DB52] DEFAULT ((0)) FOR [Total]; GO ALTER TABLE [ob].[FactReportAccountWithStaffingDetail] ADD CONSTRAINT [DF__FactRepor__Modif__266CFF8B] DEFAULT (getdate()) FOR [ModifiedAt]; GO ALTER TABLE [ob].[FactReportAccountWithStaffingDetail] ADD CONSTRAINT [DF__FactRepor__Depar__126606DE] DEFAULT ((0)) FOR [DepartmentalBudgetID]; GO ALTER TABLE [ob].[FactReportAccountWithStaffingDetail] ADD CONSTRAINT [DF__FactRepor__Accou__135A2B17] DEFAULT ((0)) FOR [AccountID]; GO ALTER TABLE [ob].[FactReportAccountWithStaffingDetail] ADD CONSTRAINT [DF__FactRepor__JobCo__144E4F50] DEFAULT ((0)) FOR [JobCodeID]; GO ALTER TABLE [ob].[FactReportAccountWithStaffingDetail] ADD CONSTRAINT [DF__FactRepor__PayCo__15427389] DEFAULT ((0)) FOR [PayCodeGroupID]; GO ALTER TABLE [ob].[FactReportAccountWithStaffingDetail] ADD CONSTRAINT [DF__FactRepor__Fisca__163697C2] DEFAULT ((0)) FOR [FiscalYearID]; GO ALTER TABLE [ob].[FactReportAccountWithStaffingDetail] ADD CONSTRAINT [DF__FactRepor__TimeC__172ABBFB] DEFAULT ((0)) FOR [TimeClassID]; GO ALTER TABLE [ob].[FactReportAccountWithStaffingDetail] ADD CONSTRAINT [DF__FactRepor__UnitT__181EE034] DEFAULT ((0)) FOR [UnitTypeID]; GO ALTER TABLE [ob].[FactReportAccountWithStaffingDetail] ADD CONSTRAINT [DF__FactRepor__Month__1913046D] DEFAULT ((0)) FOR [Month01]; GO ALTER TABLE [ob].[FactReportAccountWithStaffingDetail] ADD CONSTRAINT [DF__FactRepor__Month__1A0728A6] DEFAULT ((0)) FOR [Month02]; GO ALTER TABLE [ob].[FactReportAccountWithStaffingDetail] ADD CONSTRAINT [DF__FactRepor__Month__1AFB4CDF] DEFAULT ((0)) FOR [Month03]; GO ALTER TABLE [ob].[FactReportAccountWithStaffingDetail] ADD CONSTRAINT [DF__FactRepor__Month__1BEF7118] DEFAULT ((0)) FOR [Month04]; GO ALTER TABLE [ob].[FactReportAccountWithStaffingDetail] ADD CONSTRAINT [DF__FactRepor__Month__1CE39551] DEFAULT ((0)) FOR [Month05]; GO ALTER TABLE [ob].[FactReportAccountWithStaffingDetail] ADD CONSTRAINT [DF__FactRepor__Month__1DD7B98A] DEFAULT ((0)) FOR [Month06]; GO ALTER TABLE [ob].[FactReportAccountWithStaffingDetail] ADD CONSTRAINT [DF__FactRepor__Month__1ECBDDC3] DEFAULT ((0)) FOR [Month07]; GO ALTER TABLE [ob].[FactReportAccountWithStaffingDetail] ADD CONSTRAINT [DF__FactRepor__Month__1FC001FC] DEFAULT ((0)) FOR [Month08]; GO ALTER TABLE [ob].[FactReportAccountWithStaffingDetail] ADD CONSTRAINT [DF__FactRepor__Month__20B42635] DEFAULT ((0)) FOR [Month09]; GO ALTER TABLE [ob].[FactReportAccountWithStaffingDetail] ADD CONSTRAINT [DF__FactRepor__Month__21A84A6E] DEFAULT ((0)) FOR [Month10]; GO --------------------------------------------- --------------------------------------------- -- ob.FactReportFinancialStatement ------------------ --------------------------------------------- CREATE TABLE [ob].[FactReportFinancialStatement] ( [RowID] bigint NOT NULL, [DepartmentalBudgetID] int NOT NULL, [DepartmentID] int NOT NULL, [AccountID] int NOT NULL, [FinancialReportingID] int NOT NULL, [FiscalYearID] smallint NOT NULL, [TimeClassID] tinyint NOT NULL, [Month01] decimal NOT NULL, [Month02] decimal NOT NULL, [Month03] decimal NOT NULL, [Month04] decimal NOT NULL, [Month05] decimal NOT NULL, [Month06] decimal NOT NULL, [Month07] decimal NOT NULL, [Month08] decimal NOT NULL, [Month09] decimal NOT NULL, [Month10] decimal NOT NULL, [Month11] decimal NOT NULL, [Month12] decimal NOT NULL, [YTD] decimal NOT NULL, [Yearly] decimal NOT NULL, [Total] decimal NOT NULL, [SnapshotID] int NOT NULL, [ModifiedAt] datetime NOT NULL, PRIMARY KEY ([RowID]) ); CREATE CLUSTERED INDEX [IX_FactReportFinancialStatement_Clustered] ON [ob].[FactReportFinancialStatement] ([FiscalYearID]); CREATE NONCLUSTERED INDEX [IDX_FactReportFinancialStatement_AllKeys] ON [ob].[FactReportFinancialStatement] ([DepartmentalBudgetID], [SnapshotID], [TimeClassID], [FiscalYearID], [FinancialReportingID], [AccountID]); GO ALTER TABLE [ob].[FactReportFinancialStatement] ADD CONSTRAINT [FK_FactReportFinancialStatement_SnapshotID] FOREIGN KEY ([SnapshotID]) REFERENCES [ob].[DimOBSnapshot] ([OBSnapshotID]); GO ALTER TABLE [ob].[FactReportFinancialStatement] ADD CONSTRAINT [DF__FactRepor__Depar__3EE3A79A] DEFAULT ((0)) FOR [DepartmentalBudgetID]; GO ALTER TABLE [ob].[FactReportFinancialStatement] ADD CONSTRAINT [DF__FactRepor__Depar__3FD7CBD3] DEFAULT ((0)) FOR [DepartmentID]; GO ALTER TABLE [ob].[FactReportFinancialStatement] ADD CONSTRAINT [DF__FactRepor__Accou__40CBF00C] DEFAULT ((0)) FOR [AccountID]; GO ALTER TABLE [ob].[FactReportFinancialStatement] ADD CONSTRAINT [DF__FactRepor__Finan__41C01445] DEFAULT ((0)) FOR [FinancialReportingID]; GO ALTER TABLE [ob].[FactReportFinancialStatement] ADD CONSTRAINT [DF__FactRepor__Fisca__42B4387E] DEFAULT ((0)) FOR [FiscalYearID]; GO ALTER TABLE [ob].[FactReportFinancialStatement] ADD CONSTRAINT [DF__FactRepor__TimeC__43A85CB7] DEFAULT ((0)) FOR [TimeClassID]; GO ALTER TABLE [ob].[FactReportFinancialStatement] ADD CONSTRAINT [DF__FactRepor__Month__449C80F0] DEFAULT ((0)) FOR [Month01]; GO ALTER TABLE [ob].[FactReportFinancialStatement] ADD CONSTRAINT [DF__FactRepor__Month__4590A529] DEFAULT ((0)) FOR [Month02]; GO ALTER TABLE [ob].[FactReportFinancialStatement] ADD CONSTRAINT [DF__FactRepor__Month__4684C962] DEFAULT ((0)) FOR [Month03]; GO ALTER TABLE [ob].[FactReportFinancialStatement] ADD CONSTRAINT [DF__FactRepor__Month__4778ED9B] DEFAULT ((0)) FOR [Month04]; GO ALTER TABLE [ob].[FactReportFinancialStatement] ADD CONSTRAINT [DF__FactRepor__Month__486D11D4] DEFAULT ((0)) FOR [Month05]; GO ALTER TABLE [ob].[FactReportFinancialStatement] ADD CONSTRAINT [DF__FactRepor__Month__4961360D] DEFAULT ((0)) FOR [Month06]; GO ALTER TABLE [ob].[FactReportFinancialStatement] ADD CONSTRAINT [DF__FactRepor__Month__4A555A46] DEFAULT ((0)) FOR [Month07]; GO ALTER TABLE [ob].[FactReportFinancialStatement] ADD CONSTRAINT [DF__FactRepor__Month__4B497E7F] DEFAULT ((0)) FOR [Month08]; GO ALTER TABLE [ob].[FactReportFinancialStatement] ADD CONSTRAINT [DF__FactRepor__Month__4C3DA2B8] DEFAULT ((0)) FOR [Month09]; GO ALTER TABLE [ob].[FactReportFinancialStatement] ADD CONSTRAINT [DF__FactRepor__Month__4D31C6F1] DEFAULT ((0)) FOR [Month10]; GO ALTER TABLE [ob].[FactReportFinancialStatement] ADD CONSTRAINT [DF__FactRepor__Month__4E25EB2A] DEFAULT ((0)) FOR [Month11]; GO ALTER TABLE [ob].[FactReportFinancialStatement] ADD CONSTRAINT [DF__FactRepor__Month__4F1A0F63] DEFAULT ((0)) FOR [Month12]; GO ALTER TABLE [ob].[FactReportFinancialStatement] ADD CONSTRAINT [DF__FactReportF__YTD__500E339C] DEFAULT ((0)) FOR [YTD]; GO ALTER TABLE [ob].[FactReportFinancialStatement] ADD CONSTRAINT [DF__FactRepor__Yearl__510257D5] DEFAULT ((0)) FOR [Yearly]; GO ALTER TABLE [ob].[FactReportFinancialStatement] ADD CONSTRAINT [DF__FactRepor__Total__51F67C0E] DEFAULT ((0)) FOR [Total]; GO ALTER TABLE [ob].[FactReportFinancialStatement] ADD CONSTRAINT [DF__FactRepor__Snaps__52EAA047] DEFAULT ((0)) FOR [SnapshotID]; GO ALTER TABLE [ob].[FactReportFinancialStatement] ADD CONSTRAINT [DF__FactRepor__Modif__53DEC480] DEFAULT (getdate()) FOR [ModifiedAt]; GO --------------------------------------------- --------------------------------------------- -- ob.FactReportFinancialStatement_Pivoted ------------------ --------------------------------------------- CREATE TABLE [ob].[FactReportFinancialStatement_Pivoted] ( [RowID] bigint NOT NULL, [TimeClassID] tinyint NOT NULL, [FiscalYearID] smallint NOT NULL, [DepartmentalBudgetID] int NOT NULL, [FinancialReportingID] int NOT NULL, [AccountID] int NOT NULL, [SnapshotID] int NOT NULL, [Amount] decimal NOT NULL, [Total] decimal NOT NULL, [Yearly] decimal NOT NULL, [YTD] decimal NOT NULL, [MaxValue] decimal NOT NULL, [MaxValueYTD] decimal NOT NULL, [FiscalMonthID] tinyint NOT NULL, PRIMARY KEY ([RowID]) ); CREATE CLUSTERED INDEX [IX_FactReportFinancialStatement_Pivoted_Clustered] ON [ob].[FactReportFinancialStatement_Pivoted] ([FiscalYearID]); CREATE NONCLUSTERED INDEX [IDX_FactReportFinancialStatement_Pivoted_AllKeys] ON [ob].[FactReportFinancialStatement_Pivoted] ([DepartmentalBudgetID], [SnapshotID], [TimeClassID], [FiscalYearID], [FiscalMonthID], [FinancialReportingID], [AccountID]); GO ALTER TABLE [ob].[FactReportFinancialStatement_Pivoted] ADD CONSTRAINT [FK_FactReportFinancialStatement_Pivoted_SnapshotID] FOREIGN KEY ([SnapshotID]) REFERENCES [ob].[DimOBSnapshot] ([OBSnapshotID]); GO ALTER TABLE [ob].[FactReportFinancialStatement_Pivoted] ADD CONSTRAINT [DF__FactRepor__TimeC__41AC9C5A] DEFAULT ((0)) FOR [TimeClassID]; GO ALTER TABLE [ob].[FactReportFinancialStatement_Pivoted] ADD CONSTRAINT [DF__FactRepor__Fisca__42A0C093] DEFAULT ((0)) FOR [FiscalYearID]; GO ALTER TABLE [ob].[FactReportFinancialStatement_Pivoted] ADD CONSTRAINT [DF__FactRepor__Depar__4394E4CC] DEFAULT ((0)) FOR [DepartmentalBudgetID]; GO ALTER TABLE [ob].[FactReportFinancialStatement_Pivoted] ADD CONSTRAINT [DF__FactRepor__Finan__44890905] DEFAULT ((0)) FOR [FinancialReportingID]; GO ALTER TABLE [ob].[FactReportFinancialStatement_Pivoted] ADD CONSTRAINT [DF__FactRepor__Accou__457D2D3E] DEFAULT ((0)) FOR [AccountID]; GO ALTER TABLE [ob].[FactReportFinancialStatement_Pivoted] ADD CONSTRAINT [DF__FactRepor__Snaps__46715177] DEFAULT ((0)) FOR [SnapshotID]; GO ALTER TABLE [ob].[FactReportFinancialStatement_Pivoted] ADD CONSTRAINT [DF__FactRepor__Amoun__476575B0] DEFAULT ((0)) FOR [Amount]; GO ALTER TABLE [ob].[FactReportFinancialStatement_Pivoted] ADD CONSTRAINT [DF__FactRepor__Total__485999E9] DEFAULT ((0)) FOR [Total]; GO ALTER TABLE [ob].[FactReportFinancialStatement_Pivoted] ADD CONSTRAINT [DF__FactRepor__Yearl__494DBE22] DEFAULT ((0)) FOR [Yearly]; GO ALTER TABLE [ob].[FactReportFinancialStatement_Pivoted] ADD CONSTRAINT [DF__FactReportF__YTD__4A41E25B] DEFAULT ((0)) FOR [YTD]; GO ALTER TABLE [ob].[FactReportFinancialStatement_Pivoted] ADD CONSTRAINT [DF__FactRepor__MaxVa__4B360694] DEFAULT ((0)) FOR [MaxValue]; GO ALTER TABLE [ob].[FactReportFinancialStatement_Pivoted] ADD CONSTRAINT [DF__FactRepor__MaxVa__4C2A2ACD] DEFAULT ((0)) FOR [MaxValueYTD]; GO ALTER TABLE [ob].[FactReportFinancialStatement_Pivoted] ADD CONSTRAINT [DF__FactRepor__Fisca__4D1E4F06] DEFAULT ((0)) FOR [FiscalMonthID]; GO --------------------------------------------- --------------------------------------------- -- ob.FactReportingMonthlySnapshot ------------------ --------------------------------------------- CREATE TABLE [ob].[FactReportingMonthlySnapshot] ( [RowID] int NOT NULL, [OBSnapshotID] int NOT NULL, [FiscalYearID] smallint NOT NULL, [DepartmentalBudgetID] int NOT NULL, [FinancialReportingID] int NOT NULL, [TimeClassID] tinyint NOT NULL, [Month01] decimal NOT NULL, [Month02] decimal NOT NULL, [Month03] decimal NOT NULL, [Month04] decimal NOT NULL, [Month05] decimal NOT NULL, [Month06] decimal NOT NULL, [Month07] decimal NOT NULL, [Month08] decimal NOT NULL, [Month09] decimal NOT NULL, [Month10] decimal NOT NULL, [Month11] decimal NOT NULL, [Month12] decimal NOT NULL, [YTD] decimal NOT NULL, [Yearly] decimal NOT NULL, [Total] decimal NOT NULL, [IsDeleted] bit NOT NULL, [HistoryItemGUID] uniqueidentifier NOT NULL, [Version] timestamp NOT NULL, [TransactionID] int NOT NULL, PRIMARY KEY ([RowID]) ); CREATE UNIQUE CLUSTERED INDEX [CU_Base] ON [ob].[FactReportingMonthlySnapshot] ([OBSnapshotID], [DepartmentalBudgetID], [FiscalYearID], [TimeClassID], [FinancialReportingID], [IsDeleted]); CREATE UNIQUE NONCLUSTERED INDEX [NCU_Score] ON [ob].[FactReportingMonthlySnapshot] ([OBSnapshotID], [DepartmentalBudgetID], [FiscalYearID], [TimeClassID], [FinancialReportingID], [IsDeleted]); CREATE NONCLUSTERED INDEX [NCNU_DepartmentalBudget_OBSnapshotID] ON [ob].[FactReportingMonthlySnapshot] ([DepartmentalBudgetID], [OBSnapshotID]); GO ALTER TABLE [ob].[FactReportingMonthlySnapshot] ADD CONSTRAINT [FK__FactRepor__Depar__3E5965EB] FOREIGN KEY ([DepartmentalBudgetID]) REFERENCES [ob].[DimDepartmentalBudget] ([DepartmentalBudgetID]); GO ALTER TABLE [ob].[FactReportingMonthlySnapshot] ADD CONSTRAINT [FK__FactRepor__Finan__4041AE5D] FOREIGN KEY ([FinancialReportingID]) REFERENCES [ob].[DimFinancialReporting] ([FinancialReportingID]); GO ALTER TABLE [ob].[FactReportingMonthlySnapshot] ADD CONSTRAINT [FK__FactRepor__Fisca__3C711D79] FOREIGN KEY ([FiscalYearID]) REFERENCES [fw].[DimFiscalYear] ([FiscalYearID]); GO ALTER TABLE [ob].[FactReportingMonthlySnapshot] ADD CONSTRAINT [FK__FactRepor__OBSna__3A88D507] FOREIGN KEY ([OBSnapshotID]) REFERENCES [ob].[DimOBSnapshot] ([OBSnapshotID]); GO ALTER TABLE [ob].[FactReportingMonthlySnapshot] ADD CONSTRAINT [FK__FactRepor__TimeC__4229F6CF] FOREIGN KEY ([TimeClassID]) REFERENCES [fw].[DimTimeClass] ([TimeClassID]); GO ALTER TABLE [ob].[FactReportingMonthlySnapshot] ADD CONSTRAINT [DF__FactRepor__OBSna__3994B0CE] DEFAULT ((0)) FOR [OBSnapshotID]; GO ALTER TABLE [ob].[FactReportingMonthlySnapshot] ADD CONSTRAINT [DF__FactRepor__Fisca__3B7CF940] DEFAULT ((0)) FOR [FiscalYearID]; GO ALTER TABLE [ob].[FactReportingMonthlySnapshot] ADD CONSTRAINT [DF__FactRepor__Depar__3D6541B2] DEFAULT ((0)) FOR [DepartmentalBudgetID]; GO ALTER TABLE [ob].[FactReportingMonthlySnapshot] ADD CONSTRAINT [DF__FactRepor__Finan__3F4D8A24] DEFAULT ((0)) FOR [FinancialReportingID]; GO ALTER TABLE [ob].[FactReportingMonthlySnapshot] ADD CONSTRAINT [DF__FactRepor__TimeC__4135D296] DEFAULT ((0)) FOR [TimeClassID]; GO ALTER TABLE [ob].[FactReportingMonthlySnapshot] ADD CONSTRAINT [DF__FactRepor__Month__431E1B08] DEFAULT ((0)) FOR [Month01]; GO ALTER TABLE [ob].[FactReportingMonthlySnapshot] ADD CONSTRAINT [DF__FactRepor__Month__44123F41] DEFAULT ((0)) FOR [Month02]; GO ALTER TABLE [ob].[FactReportingMonthlySnapshot] ADD CONSTRAINT [DF__FactRepor__Month__4506637A] DEFAULT ((0)) FOR [Month03]; GO ALTER TABLE [ob].[FactReportingMonthlySnapshot] ADD CONSTRAINT [DF__FactRepor__Month__45FA87B3] DEFAULT ((0)) FOR [Month04]; GO ALTER TABLE [ob].[FactReportingMonthlySnapshot] ADD CONSTRAINT [DF__FactRepor__Month__46EEABEC] DEFAULT ((0)) FOR [Month05]; GO ALTER TABLE [ob].[FactReportingMonthlySnapshot] ADD CONSTRAINT [DF__FactRepor__Month__47E2D025] DEFAULT ((0)) FOR [Month06]; GO ALTER TABLE [ob].[FactReportingMonthlySnapshot] ADD CONSTRAINT [DF__FactRepor__Month__48D6F45E] DEFAULT ((0)) FOR [Month07]; GO ALTER TABLE [ob].[FactReportingMonthlySnapshot] ADD CONSTRAINT [DF__FactRepor__Month__49CB1897] DEFAULT ((0)) FOR [Month08]; GO ALTER TABLE [ob].[FactReportingMonthlySnapshot] ADD CONSTRAINT [DF__FactRepor__Month__4ABF3CD0] DEFAULT ((0)) FOR [Month09]; GO ALTER TABLE [ob].[FactReportingMonthlySnapshot] ADD CONSTRAINT [DF__FactRepor__Month__4BB36109] DEFAULT ((0)) FOR [Month10]; GO ALTER TABLE [ob].[FactReportingMonthlySnapshot] ADD CONSTRAINT [DF__FactRepor__Month__4CA78542] DEFAULT ((0)) FOR [Month11]; GO ALTER TABLE [ob].[FactReportingMonthlySnapshot] ADD CONSTRAINT [DF__FactRepor__Month__4D9BA97B] DEFAULT ((0)) FOR [Month12]; GO ALTER TABLE [ob].[FactReportingMonthlySnapshot] ADD CONSTRAINT [DF__FactReporti__YTD__4E8FCDB4] DEFAULT ((0)) FOR [YTD]; GO ALTER TABLE [ob].[FactReportingMonthlySnapshot] ADD CONSTRAINT [DF__FactRepor__Yearl__4F83F1ED] DEFAULT ((0)) FOR [Yearly]; GO ALTER TABLE [ob].[FactReportingMonthlySnapshot] ADD CONSTRAINT [DF__FactRepor__Total__50781626] DEFAULT ((0)) FOR [Total]; GO ALTER TABLE [ob].[FactReportingMonthlySnapshot] ADD CONSTRAINT [DF__FactRepor__IsDel__516C3A5F] DEFAULT ((0)) FOR [IsDeleted]; GO ALTER TABLE [ob].[FactReportingMonthlySnapshot] ADD CONSTRAINT [DF__FactRepor__Trans__535482D1] DEFAULT ((0)) FOR [TransactionID]; GO ALTER TABLE [ob].[FactReportingMonthlySnapshot] ADD CONSTRAINT [DF__FactRepor__Histo__52605E98] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO --------------------------------------------- --------------------------------------------- -- ob.FactServiceLineExceptions ------------------ --------------------------------------------- CREATE TABLE [ob].[FactServiceLineExceptions] ( [RowID] int NOT NULL, [OBServiceLinePlanID] int NOT NULL, [OBExceptionsID] int NOT NULL, [Acknowledged] bit NOT NULL, [Detail] nvarchar(2000) NOT NULL, [IsDeleted] bit NOT NULL, [HistoryItemGUID] uniqueidentifier NOT NULL, [Version] timestamp NOT NULL, [TransactionID] int NOT NULL, PRIMARY KEY ([RowID]) ); GO ALTER TABLE [ob].[FactServiceLineExceptions] ADD CONSTRAINT [FK__FactServi__OBExc__201737F2] FOREIGN KEY ([OBExceptionsID]) REFERENCES [ob].[DimOBExceptions] ([OBExceptionsID]); GO ALTER TABLE [ob].[FactServiceLineExceptions] ADD CONSTRAINT [FK__FactServi__OBSer__1E2EEF80] FOREIGN KEY ([OBServiceLinePlanID]) REFERENCES [ob].[DimOBServiceLinePlan] ([OBServiceLinePlanID]); GO ALTER TABLE [ob].[FactServiceLineExceptions] ADD CONSTRAINT [DF__FactServi__Histo__23E7C8D6] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO ALTER TABLE [ob].[FactServiceLineExceptions] ADD CONSTRAINT [DF__FactServi__OBSer__1D3ACB47] DEFAULT ((0)) FOR [OBServiceLinePlanID]; GO ALTER TABLE [ob].[FactServiceLineExceptions] ADD CONSTRAINT [DF__FactServi__OBExc__1F2313B9] DEFAULT ((0)) FOR [OBExceptionsID]; GO ALTER TABLE [ob].[FactServiceLineExceptions] ADD CONSTRAINT [DF__FactServi__Ackno__210B5C2B] DEFAULT ((0)) FOR [Acknowledged]; GO ALTER TABLE [ob].[FactServiceLineExceptions] ADD CONSTRAINT [DF__FactServi__Detai__21FF8064] DEFAULT ('') FOR [Detail]; GO ALTER TABLE [ob].[FactServiceLineExceptions] ADD CONSTRAINT [DF__FactServi__IsDel__22F3A49D] DEFAULT ((0)) FOR [IsDeleted]; GO ALTER TABLE [ob].[FactServiceLineExceptions] ADD CONSTRAINT [DF__FactServi__Trans__24DBED0F] DEFAULT ((0)) FOR [TransactionID]; GO --------------------------------------------- --------------------------------------------- -- ob.FactServiceLineSnapshot ------------------ --------------------------------------------- CREATE TABLE [ob].[FactServiceLineSnapshot] ( [RowID] int NOT NULL, [DataTypeID] tinyint NOT NULL, [FiscalYearID] smallint NOT NULL, [ModelingServiceLineID] int NOT NULL, [OBForecastDetailID] int NOT NULL, [OBSnapshotID] int NOT NULL, [OBServiceLinePlanID] int NOT NULL, [TimeClassID] tinyint NOT NULL, [UnitTypeID] tinyint NOT NULL, [Month01] decimal NOT NULL, [Month02] decimal NOT NULL, [Month03] decimal NOT NULL, [Month04] decimal NOT NULL, [Month05] decimal NOT NULL, [Month06] decimal NOT NULL, [Month07] decimal NOT NULL, [Month08] decimal NOT NULL, [Month09] decimal NOT NULL, [Month10] decimal NOT NULL, [Month11] decimal NOT NULL, [Month12] decimal NOT NULL, [Yearly] decimal NOT NULL, [YTD] decimal NOT NULL, [Total] decimal NOT NULL, [IsDeleted] bit NOT NULL, [HistoryItemGUID] uniqueidentifier NOT NULL, [Version] timestamp NOT NULL, [TransactionID] int NOT NULL, PRIMARY KEY ([RowID]) ); CREATE UNIQUE CLUSTERED INDEX [CU_Base] ON [ob].[FactServiceLineSnapshot] ([OBSnapshotID], [OBServiceLinePlanID], [FiscalYearID], [TimeClassID], [ModelingServiceLineID], [OBForecastDetailID], [UnitTypeID], [IsDeleted], [DataTypeID]); CREATE UNIQUE NONCLUSTERED INDEX [NCU_Score] ON [ob].[FactServiceLineSnapshot] ([OBSnapshotID], [OBServiceLinePlanID], [FiscalYearID], [TimeClassID], [ModelingServiceLineID], [OBForecastDetailID], [UnitTypeID], [IsDeleted], [DataTypeID]); GO ALTER TABLE [ob].[FactServiceLineSnapshot] ADD CONSTRAINT [FK__FactServi__DataT__572513B5] FOREIGN KEY ([DataTypeID]) REFERENCES [fw].[DimDataType] ([DataTypeID]); GO ALTER TABLE [ob].[FactServiceLineSnapshot] ADD CONSTRAINT [FK__FactServi__Fisca__590D5C27] FOREIGN KEY ([FiscalYearID]) REFERENCES [fw].[DimFiscalYear] ([FiscalYearID]); GO ALTER TABLE [ob].[FactServiceLineSnapshot] ADD CONSTRAINT [FK__FactServi__Model__5AF5A499] FOREIGN KEY ([ModelingServiceLineID]) REFERENCES [fw].[DimModelingServiceLine] ([ModelingServiceLineID]); GO ALTER TABLE [ob].[FactServiceLineSnapshot] ADD CONSTRAINT [FK__FactServi__OBFor__5CDDED0B] FOREIGN KEY ([OBForecastDetailID]) REFERENCES [ob].[DimOBForecastDetail] ([OBForecastDetailID]); GO ALTER TABLE [ob].[FactServiceLineSnapshot] ADD CONSTRAINT [FK__FactServi__OBSer__60AE7DEF] FOREIGN KEY ([OBServiceLinePlanID]) REFERENCES [ob].[DimOBServiceLinePlan] ([OBServiceLinePlanID]); GO ALTER TABLE [ob].[FactServiceLineSnapshot] ADD CONSTRAINT [FK__FactServi__OBSna__5EC6357D] FOREIGN KEY ([OBSnapshotID]) REFERENCES [ob].[DimOBSnapshot] ([OBSnapshotID]); GO ALTER TABLE [ob].[FactServiceLineSnapshot] ADD CONSTRAINT [FK__FactServi__TimeC__6296C661] FOREIGN KEY ([TimeClassID]) REFERENCES [fw].[DimTimeClass] ([TimeClassID]); GO ALTER TABLE [ob].[FactServiceLineSnapshot] ADD CONSTRAINT [FK__FactServi__UnitT__647F0ED3] FOREIGN KEY ([UnitTypeID]) REFERENCES [fw].[DimUnitType] ([UnitTypeID]); GO ALTER TABLE [ob].[FactServiceLineSnapshot] ADD CONSTRAINT [DF__FactServi__Histo__74B5769C] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO ALTER TABLE [ob].[FactServiceLineSnapshot] ADD CONSTRAINT [DF__FactServi__DataT__5630EF7C] DEFAULT ((0)) FOR [DataTypeID]; GO ALTER TABLE [ob].[FactServiceLineSnapshot] ADD CONSTRAINT [DF__FactServi__Fisca__581937EE] DEFAULT ((0)) FOR [FiscalYearID]; GO ALTER TABLE [ob].[FactServiceLineSnapshot] ADD CONSTRAINT [DF__FactServi__Model__5A018060] DEFAULT ((0)) FOR [ModelingServiceLineID]; GO ALTER TABLE [ob].[FactServiceLineSnapshot] ADD CONSTRAINT [DF__FactServi__OBFor__5BE9C8D2] DEFAULT ((0)) FOR [OBForecastDetailID]; GO ALTER TABLE [ob].[FactServiceLineSnapshot] ADD CONSTRAINT [DF__FactServi__OBSna__5DD21144] DEFAULT ((0)) FOR [OBSnapshotID]; GO ALTER TABLE [ob].[FactServiceLineSnapshot] ADD CONSTRAINT [DF__FactServi__OBSer__5FBA59B6] DEFAULT ((0)) FOR [OBServiceLinePlanID]; GO ALTER TABLE [ob].[FactServiceLineSnapshot] ADD CONSTRAINT [DF__FactServi__TimeC__61A2A228] DEFAULT ((0)) FOR [TimeClassID]; GO ALTER TABLE [ob].[FactServiceLineSnapshot] ADD CONSTRAINT [DF__FactServi__UnitT__638AEA9A] DEFAULT ((0)) FOR [UnitTypeID]; GO ALTER TABLE [ob].[FactServiceLineSnapshot] ADD CONSTRAINT [DF__FactServi__Month__6573330C] DEFAULT ((0)) FOR [Month01]; GO ALTER TABLE [ob].[FactServiceLineSnapshot] ADD CONSTRAINT [DF__FactServi__Month__66675745] DEFAULT ((0)) FOR [Month02]; GO ALTER TABLE [ob].[FactServiceLineSnapshot] ADD CONSTRAINT [DF__FactServi__Month__675B7B7E] DEFAULT ((0)) FOR [Month03]; GO ALTER TABLE [ob].[FactServiceLineSnapshot] ADD CONSTRAINT [DF__FactServi__Month__684F9FB7] DEFAULT ((0)) FOR [Month04]; GO ALTER TABLE [ob].[FactServiceLineSnapshot] ADD CONSTRAINT [DF__FactServi__Month__6943C3F0] DEFAULT ((0)) FOR [Month05]; GO ALTER TABLE [ob].[FactServiceLineSnapshot] ADD CONSTRAINT [DF__FactServi__Month__6A37E829] DEFAULT ((0)) FOR [Month06]; GO ALTER TABLE [ob].[FactServiceLineSnapshot] ADD CONSTRAINT [DF__FactServi__Month__6B2C0C62] DEFAULT ((0)) FOR [Month07]; GO ALTER TABLE [ob].[FactServiceLineSnapshot] ADD CONSTRAINT [DF__FactServi__Month__6C20309B] DEFAULT ((0)) FOR [Month08]; GO ALTER TABLE [ob].[FactServiceLineSnapshot] ADD CONSTRAINT [DF__FactServi__Month__6D1454D4] DEFAULT ((0)) FOR [Month09]; GO ALTER TABLE [ob].[FactServiceLineSnapshot] ADD CONSTRAINT [DF__FactServi__Month__6E08790D] DEFAULT ((0)) FOR [Month10]; GO ALTER TABLE [ob].[FactServiceLineSnapshot] ADD CONSTRAINT [DF__FactServi__Month__6EFC9D46] DEFAULT ((0)) FOR [Month11]; GO ALTER TABLE [ob].[FactServiceLineSnapshot] ADD CONSTRAINT [DF__FactServi__Month__6FF0C17F] DEFAULT ((0)) FOR [Month12]; GO ALTER TABLE [ob].[FactServiceLineSnapshot] ADD CONSTRAINT [DF__FactServi__Yearl__70E4E5B8] DEFAULT ((0)) FOR [Yearly]; GO ALTER TABLE [ob].[FactServiceLineSnapshot] ADD CONSTRAINT [DF__FactService__YTD__71D909F1] DEFAULT ((0)) FOR [YTD]; GO ALTER TABLE [ob].[FactServiceLineSnapshot] ADD CONSTRAINT [DF__FactServi__Total__72CD2E2A] DEFAULT ((0)) FOR [Total]; GO ALTER TABLE [ob].[FactServiceLineSnapshot] ADD CONSTRAINT [DF__FactServi__IsDel__73C15263] DEFAULT ((0)) FOR [IsDeleted]; GO ALTER TABLE [ob].[FactServiceLineSnapshot] ADD CONSTRAINT [DF__FactServi__Trans__75A99AD5] DEFAULT ((0)) FOR [TransactionID]; GO --------------------------------------------- --------------------------------------------- -- ob.FactStaffingPCSnapshot ------------------ --------------------------------------------- CREATE TABLE [ob].[FactStaffingPCSnapshot] ( [RowID] int NOT NULL, [DataTypeID] tinyint NOT NULL, [EmployeeID] int NOT NULL, [FiscalYearID] smallint NOT NULL, [JobCodeID] int NOT NULL, [DepartmentalBudgetID] int NOT NULL, [OBSnapshotID] int NOT NULL, [PayCodeID] smallint NOT NULL, [PayCodeGroupID] int NOT NULL, [TimeClassID] tinyint NOT NULL, [UnitTypeID] tinyint NOT NULL, [Month01] decimal NOT NULL, [Month02] decimal NOT NULL, [Month03] decimal NOT NULL, [Month04] decimal NOT NULL, [Month05] decimal NOT NULL, [Month06] decimal NOT NULL, [Month07] decimal NOT NULL, [Month08] decimal NOT NULL, [Month09] decimal NOT NULL, [Month10] decimal NOT NULL, [Month11] decimal NOT NULL, [Month12] decimal NOT NULL, [MonthsLoaded] int NOT NULL, [Total] decimal NOT NULL, [Yearly] decimal NOT NULL, [YTD] decimal NOT NULL, [IsDeleted] bit NOT NULL, [HistoryItemGUID] uniqueidentifier NOT NULL, [Version] timestamp NOT NULL, [TransactionID] int NOT NULL, PRIMARY KEY ([RowID]) ); CREATE UNIQUE CLUSTERED INDEX [CU_Base] ON [ob].[FactStaffingPCSnapshot] ([OBSnapshotID], [DepartmentalBudgetID], [TimeClassID], [FiscalYearID], [JobCodeID], [EmployeeID], [PayCodeGroupID], [PayCodeID], [UnitTypeID], [IsDeleted], [DataTypeID]); CREATE UNIQUE NONCLUSTERED INDEX [NCU_Score] ON [ob].[FactStaffingPCSnapshot] ([OBSnapshotID], [DepartmentalBudgetID], [TimeClassID], [FiscalYearID], [JobCodeID], [EmployeeID], [PayCodeGroupID], [PayCodeID], [UnitTypeID], [IsDeleted], [DataTypeID]); GO ALTER TABLE [ob].[FactStaffingPCSnapshot] ADD CONSTRAINT [FK__FactStaff__DataT__3B1D068D] FOREIGN KEY ([DataTypeID]) REFERENCES [fw].[DimDataType] ([DataTypeID]); GO ALTER TABLE [ob].[FactStaffingPCSnapshot] ADD CONSTRAINT [FK__FactStaff__Depar__42BE2855] FOREIGN KEY ([DepartmentalBudgetID]) REFERENCES [ob].[DimDepartmentalBudget] ([DepartmentalBudgetID]); GO ALTER TABLE [ob].[FactStaffingPCSnapshot] ADD CONSTRAINT [FK__FactStaff__Emplo__3D054EFF] FOREIGN KEY ([EmployeeID]) REFERENCES [fw].[DimEmployee] ([EmployeeID]); GO ALTER TABLE [ob].[FactStaffingPCSnapshot] ADD CONSTRAINT [FK__FactStaff__Fisca__3EED9771] FOREIGN KEY ([FiscalYearID]) REFERENCES [fw].[DimFiscalYear] ([FiscalYearID]); GO ALTER TABLE [ob].[FactStaffingPCSnapshot] ADD CONSTRAINT [FK__FactStaff__JobCo__40D5DFE3] FOREIGN KEY ([JobCodeID]) REFERENCES [fw].[DimJobCode] ([JobCodeID]); GO ALTER TABLE [ob].[FactStaffingPCSnapshot] ADD CONSTRAINT [FK__FactStaff__OBSna__44A670C7] FOREIGN KEY ([OBSnapshotID]) REFERENCES [ob].[DimOBSnapshot] ([OBSnapshotID]); GO ALTER TABLE [ob].[FactStaffingPCSnapshot] ADD CONSTRAINT [FK__FactStaff__PayCo__468EB939] FOREIGN KEY ([PayCodeGroupID]) REFERENCES [fw].[DimPayCodeGroup] ([PayCodeGroupID]); GO ALTER TABLE [ob].[FactStaffingPCSnapshot] ADD CONSTRAINT [FK__FactStaff__TimeC__487701AB] FOREIGN KEY ([TimeClassID]) REFERENCES [fw].[DimTimeClass] ([TimeClassID]); GO ALTER TABLE [ob].[FactStaffingPCSnapshot] ADD CONSTRAINT [FK__FactStaff__UnitT__4A5F4A1D] FOREIGN KEY ([UnitTypeID]) REFERENCES [fw].[DimUnitType] ([UnitTypeID]); GO ALTER TABLE [ob].[FactStaffingPCSnapshot] ADD CONSTRAINT [DF__FactStaff__DataT__3A28E254] DEFAULT ((0)) FOR [DataTypeID]; GO ALTER TABLE [ob].[FactStaffingPCSnapshot] ADD CONSTRAINT [DF__FactStaff__Emplo__3C112AC6] DEFAULT ((0)) FOR [EmployeeID]; GO ALTER TABLE [ob].[FactStaffingPCSnapshot] ADD CONSTRAINT [DF__FactStaff__Fisca__3DF97338] DEFAULT ((0)) FOR [FiscalYearID]; GO ALTER TABLE [ob].[FactStaffingPCSnapshot] ADD CONSTRAINT [DF__FactStaff__JobCo__3FE1BBAA] DEFAULT ((0)) FOR [JobCodeID]; GO ALTER TABLE [ob].[FactStaffingPCSnapshot] ADD CONSTRAINT [DF__FactStaff__Depar__41CA041C] DEFAULT ((0)) FOR [DepartmentalBudgetID]; GO ALTER TABLE [ob].[FactStaffingPCSnapshot] ADD CONSTRAINT [DF__FactStaff__OBSna__43B24C8E] DEFAULT ((0)) FOR [OBSnapshotID]; GO ALTER TABLE [ob].[FactStaffingPCSnapshot] ADD CONSTRAINT [DF__FactStaff__PayCo__459A9500] DEFAULT ((0)) FOR [PayCodeGroupID]; GO ALTER TABLE [ob].[FactStaffingPCSnapshot] ADD CONSTRAINT [DF__FactStaff__TimeC__4782DD72] DEFAULT ((0)) FOR [TimeClassID]; GO ALTER TABLE [ob].[FactStaffingPCSnapshot] ADD CONSTRAINT [DF__FactStaff__UnitT__496B25E4] DEFAULT ((0)) FOR [UnitTypeID]; GO ALTER TABLE [ob].[FactStaffingPCSnapshot] ADD CONSTRAINT [DF__FactStaff__Month__4B536E56] DEFAULT ((0)) FOR [Month01]; GO ALTER TABLE [ob].[FactStaffingPCSnapshot] ADD CONSTRAINT [DF__FactStaff__Month__4C47928F] DEFAULT ((0)) FOR [Month02]; GO ALTER TABLE [ob].[FactStaffingPCSnapshot] ADD CONSTRAINT [DF__FactStaff__Month__4D3BB6C8] DEFAULT ((0)) FOR [Month03]; GO ALTER TABLE [ob].[FactStaffingPCSnapshot] ADD CONSTRAINT [DF__FactStaff__Month__4E2FDB01] DEFAULT ((0)) FOR [Month04]; GO ALTER TABLE [ob].[FactStaffingPCSnapshot] ADD CONSTRAINT [DF__FactStaff__Month__4F23FF3A] DEFAULT ((0)) FOR [Month05]; GO ALTER TABLE [ob].[FactStaffingPCSnapshot] ADD CONSTRAINT [DF__FactStaff__Month__50182373] DEFAULT ((0)) FOR [Month06]; GO ALTER TABLE [ob].[FactStaffingPCSnapshot] ADD CONSTRAINT [DF__FactStaff__Month__510C47AC] DEFAULT ((0)) FOR [Month07]; GO ALTER TABLE [ob].[FactStaffingPCSnapshot] ADD CONSTRAINT [DF__FactStaff__Month__52006BE5] DEFAULT ((0)) FOR [Month08]; GO ALTER TABLE [ob].[FactStaffingPCSnapshot] ADD CONSTRAINT [DF__FactStaff__Month__52F4901E] DEFAULT ((0)) FOR [Month09]; GO ALTER TABLE [ob].[FactStaffingPCSnapshot] ADD CONSTRAINT [DF__FactStaff__Month__53E8B457] DEFAULT ((0)) FOR [Month10]; GO ALTER TABLE [ob].[FactStaffingPCSnapshot] ADD CONSTRAINT [DF__FactStaff__Month__54DCD890] DEFAULT ((0)) FOR [Month11]; GO ALTER TABLE [ob].[FactStaffingPCSnapshot] ADD CONSTRAINT [DF__FactStaff__Month__55D0FCC9] DEFAULT ((0)) FOR [Month12]; GO ALTER TABLE [ob].[FactStaffingPCSnapshot] ADD CONSTRAINT [DF__FactStaff__Month__56C52102] DEFAULT ((0)) FOR [MonthsLoaded]; GO ALTER TABLE [ob].[FactStaffingPCSnapshot] ADD CONSTRAINT [DF__FactStaff__Total__57B9453B] DEFAULT ((0)) FOR [Total]; GO ALTER TABLE [ob].[FactStaffingPCSnapshot] ADD CONSTRAINT [DF__FactStaff__Yearl__58AD6974] DEFAULT ((0)) FOR [Yearly]; GO ALTER TABLE [ob].[FactStaffingPCSnapshot] ADD CONSTRAINT [DF__FactStaffin__YTD__59A18DAD] DEFAULT ((0)) FOR [YTD]; GO ALTER TABLE [ob].[FactStaffingPCSnapshot] ADD CONSTRAINT [DF__FactStaff__IsDel__5A95B1E6] DEFAULT ((0)) FOR [IsDeleted]; GO ALTER TABLE [ob].[FactStaffingPCSnapshot] ADD CONSTRAINT [DF__FactStaff__Trans__5C7DFA58] DEFAULT ((0)) FOR [TransactionID]; GO ALTER TABLE [ob].[FactStaffingPCSnapshot] ADD CONSTRAINT [DF__FactStaff__Histo__5B89D61F] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO --------------------------------------------- --------------------------------------------- -- ob.FactStaffingPCVarSnapshot ------------------ --------------------------------------------- CREATE TABLE [ob].[FactStaffingPCVarSnapshot] ( [RowID] bigint NOT NULL, [AssumptionID] int NOT NULL, [EmployeeID] int NOT NULL, [FiscalMonthID] tinyint NOT NULL, [FiscalYearID] smallint NOT NULL, [JobCodeID] int NOT NULL, [DepartmentalBudgetID] int NOT NULL, [PayCodeGroupID] int NOT NULL, [TimeClassID] tinyint NOT NULL, [UnitTypeID] tinyint NOT NULL, [OBSnapshotID] int NOT NULL, [Amount] decimal NOT NULL, [Amount_Comment] nvarchar(max) NOT NULL, [Amount_Formula] nvarchar(max) NOT NULL, [Comment] nvarchar(2000) NOT NULL, [Comment_Comment] nvarchar(max) NOT NULL, [Comment_Formula] nvarchar(max) NOT NULL, [TextValue] nvarchar(2000) NOT NULL, [TextValue_Comment] nvarchar(max) NOT NULL, [TextValue_Formula] nvarchar(max) NOT NULL, [IsDeleted] bit NOT NULL, [HistoryItemGUID] uniqueidentifier NOT NULL, [Version] timestamp NOT NULL, [TransactionID] int NOT NULL, PRIMARY KEY ([RowID]) ); GO ALTER TABLE [ob].[FactStaffingPCVarSnapshot] ADD CONSTRAINT [FK_FactStaffingPCVarSnapshot_OBSnapshotID] FOREIGN KEY ([OBSnapshotID]) REFERENCES [ob].[DimOBSnapshot] ([OBSnapshotID]); GO ALTER TABLE [ob].[FactStaffingPCVarSnapshot] ADD CONSTRAINT [DF__FactStaff__Histo__79710739] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO ALTER TABLE [ob].[FactStaffingPCVarSnapshot] ADD CONSTRAINT [DF__FactStaff__Fisca__6D0B3054] DEFAULT ((0)) FOR [FiscalMonthID]; GO ALTER TABLE [ob].[FactStaffingPCVarSnapshot] ADD CONSTRAINT [DF__FactStaff__Fisca__6DFF548D] DEFAULT ((0)) FOR [FiscalYearID]; GO ALTER TABLE [ob].[FactStaffingPCVarSnapshot] ADD CONSTRAINT [DF__FactStaff__OBSna__6EF378C6] DEFAULT ((0)) FOR [OBSnapshotID]; GO ALTER TABLE [ob].[FactStaffingPCVarSnapshot] ADD CONSTRAINT [DF__FactStaff__Amoun__6FE79CFF] DEFAULT ((0)) FOR [Amount]; GO ALTER TABLE [ob].[FactStaffingPCVarSnapshot] ADD CONSTRAINT [DF__FactStaff__Amoun__70DBC138] DEFAULT ('') FOR [Amount_Comment]; GO ALTER TABLE [ob].[FactStaffingPCVarSnapshot] ADD CONSTRAINT [DF__FactStaff__Amoun__71CFE571] DEFAULT ('d') FOR [Amount_Formula]; GO ALTER TABLE [ob].[FactStaffingPCVarSnapshot] ADD CONSTRAINT [DF__FactStaff__Comme__72C409AA] DEFAULT ('') FOR [Comment]; GO ALTER TABLE [ob].[FactStaffingPCVarSnapshot] ADD CONSTRAINT [DF__FactStaff__Comme__73B82DE3] DEFAULT ('') FOR [Comment_Comment]; GO ALTER TABLE [ob].[FactStaffingPCVarSnapshot] ADD CONSTRAINT [DF__FactStaff__Comme__74AC521C] DEFAULT ('d') FOR [Comment_Formula]; GO ALTER TABLE [ob].[FactStaffingPCVarSnapshot] ADD CONSTRAINT [DF__FactStaff__TextV__75A07655] DEFAULT ('') FOR [TextValue]; GO ALTER TABLE [ob].[FactStaffingPCVarSnapshot] ADD CONSTRAINT [DF__FactStaff__TextV__76949A8E] DEFAULT ('') FOR [TextValue_Comment]; GO ALTER TABLE [ob].[FactStaffingPCVarSnapshot] ADD CONSTRAINT [DF__FactStaff__TextV__7788BEC7] DEFAULT ('d') FOR [TextValue_Formula]; GO ALTER TABLE [ob].[FactStaffingPCVarSnapshot] ADD CONSTRAINT [DF__FactStaff__IsDel__787CE300] DEFAULT ((0)) FOR [IsDeleted]; GO ALTER TABLE [ob].[FactStaffingPCVarSnapshot] ADD CONSTRAINT [DF__FactStaff__Trans__7A652B72] DEFAULT ((0)) FOR [TransactionID]; GO --------------------------------------------- --------------------------------------------- -- ob.FactStagedDSChargeCodeCost ------------------ --------------------------------------------- CREATE TABLE [ob].[FactStagedDSChargeCodeCost] ( [RowID] int NOT NULL, [DepartmentID] int NOT NULL, [FiscalYearID] int NOT NULL, [FiscalMonthID] int NOT NULL, [TimeClassID] int NOT NULL, [FinancialCostComponentID] int NOT NULL, [ChargeCodeID] int NOT NULL, [Units] decimal NOT NULL, [Cost] decimal NOT NULL, [Charge] decimal NOT NULL, [IsDeleted] bit NOT NULL, [HistoryItemGUID] uniqueidentifier NOT NULL, [Version] timestamp NOT NULL, [TransactionID] int NULL, [ServiceLineID] int NOT NULL, [AgeCohortID] int NOT NULL, [PatientClassID] int NOT NULL, [MedicalSurgicalID] int NOT NULL, PRIMARY KEY ([RowID]) ); GO ALTER TABLE [ob].[FactStagedDSChargeCodeCost] ADD CONSTRAINT [DF__FactStage__Servi__0EDF5CF3] DEFAULT ((0)) FOR [ServiceLineID]; GO ALTER TABLE [ob].[FactStagedDSChargeCodeCost] ADD CONSTRAINT [DF__FactStage__AgeCo__0FD3812C] DEFAULT ((0)) FOR [AgeCohortID]; GO ALTER TABLE [ob].[FactStagedDSChargeCodeCost] ADD CONSTRAINT [DF__FactStage__Patie__10C7A565] DEFAULT ((0)) FOR [PatientClassID]; GO ALTER TABLE [ob].[FactStagedDSChargeCodeCost] ADD CONSTRAINT [DF__FactStage__Medic__11BBC99E] DEFAULT ((0)) FOR [MedicalSurgicalID]; GO ALTER TABLE [ob].[FactStagedDSChargeCodeCost] ADD CONSTRAINT [DF__FactStage__Depar__6276CAD0] DEFAULT ((0)) FOR [DepartmentID]; GO ALTER TABLE [ob].[FactStagedDSChargeCodeCost] ADD CONSTRAINT [DF__FactStage__Fisca__645F1342] DEFAULT ((0)) FOR [FiscalYearID]; GO ALTER TABLE [ob].[FactStagedDSChargeCodeCost] ADD CONSTRAINT [DF__FactStage__Fisca__6553377B] DEFAULT ((0)) FOR [FiscalMonthID]; GO ALTER TABLE [ob].[FactStagedDSChargeCodeCost] ADD CONSTRAINT [DF__FactStage__TimeC__66475BB4] DEFAULT ((0)) FOR [TimeClassID]; GO ALTER TABLE [ob].[FactStagedDSChargeCodeCost] ADD CONSTRAINT [DF__FactStage__Finan__673B7FED] DEFAULT ((0)) FOR [FinancialCostComponentID]; GO ALTER TABLE [ob].[FactStagedDSChargeCodeCost] ADD CONSTRAINT [DF__FactStage__Charg__682FA426] DEFAULT ((0)) FOR [ChargeCodeID]; GO ALTER TABLE [ob].[FactStagedDSChargeCodeCost] ADD CONSTRAINT [DF__FactStage__Units__6923C85F] DEFAULT ((0)) FOR [Units]; GO ALTER TABLE [ob].[FactStagedDSChargeCodeCost] ADD CONSTRAINT [DF__FactStaged__Cost__6A17EC98] DEFAULT ((0)) FOR [Cost]; GO ALTER TABLE [ob].[FactStagedDSChargeCodeCost] ADD CONSTRAINT [DF__FactStage__Charg__6B0C10D1] DEFAULT ((0)) FOR [Charge]; GO ALTER TABLE [ob].[FactStagedDSChargeCodeCost] ADD CONSTRAINT [DF__FactStage__IsDel__6C00350A] DEFAULT ((0)) FOR [IsDeleted]; GO ALTER TABLE [ob].[FactStagedDSChargeCodeCost] ADD CONSTRAINT [DF__FactStage__Histo__6CF45943] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO ALTER TABLE [ob].[FactStagedDSChargeCodeCost] ADD CONSTRAINT [DF__FactStage__Trans__6DE87D7C] DEFAULT ((0)) FOR [TransactionID]; GO --------------------------------------------- --------------------------------------------- -- ob.FlexDriver ------------------ --------------------------------------------- CREATE TABLE [ob].[FlexDriver] ( [FlexDriverGUID] uniqueidentifier NOT NULL, [Name] nvarchar(100) NOT NULL, [ScoreDatatableGUID] uniqueidentifier NOT NULL, [ParentDriverGUID] uniqueidentifier NOT NULL, [IsParentDriverFlexed] bit NOT NULL, [SortOrder] smallint NOT NULL, [Tier] smallint NOT NULL, [MeasureType] tinyint NOT NULL, [IsSameJobCode] bit NOT NULL, [IsSamePayCodeGroup] bit NOT NULL, PRIMARY KEY ([FlexDriverGUID]) ); GO ALTER TABLE [ob].[FlexDriver] ADD CONSTRAINT [DF__FlexDrive__Paren__34A51328] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [ParentDriverGUID]; GO ALTER TABLE [ob].[FlexDriver] ADD CONSTRAINT [DF__FlexDrive__IsPar__35993761] DEFAULT ((0)) FOR [IsParentDriverFlexed]; GO ALTER TABLE [ob].[FlexDriver] ADD CONSTRAINT [DF__FlexDrive__SortO__368D5B9A] DEFAULT ((0)) FOR [SortOrder]; GO ALTER TABLE [ob].[FlexDriver] ADD CONSTRAINT [DF__FlexDriver__Tier__37817FD3] DEFAULT ((0)) FOR [Tier]; GO ALTER TABLE [ob].[FlexDriver] ADD CONSTRAINT [DF__FlexDrive__IsSam__3FCCAD11] DEFAULT ((0)) FOR [IsSameJobCode]; GO ALTER TABLE [ob].[FlexDriver] ADD CONSTRAINT [DF__FlexDrive__IsSam__40C0D14A] DEFAULT ((0)) FOR [IsSamePayCodeGroup]; GO ALTER TABLE [ob].[FlexDriver] ADD CONSTRAINT [DF__FlexDrive__FlexD__598BB3BD] DEFAULT (newid()) FOR [FlexDriverGUID]; GO ALTER TABLE [ob].[FlexDriver] ADD CONSTRAINT [DF__FlexDriver__Name__5A7FD7F6] DEFAULT ('') FOR [Name]; GO ALTER TABLE [ob].[FlexDriver] ADD CONSTRAINT [DF__FlexDrive__Score__5B73FC2F] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [ScoreDatatableGUID]; GO ALTER TABLE [ob].[FlexDriver] ADD CONSTRAINT [DF__FlexDrive__Measu__632AF7E7] DEFAULT ((0)) FOR [MeasureType]; GO --------------------------------------------- --------------------------------------------- -- ob.FlexDriverAccountAssignment ------------------ --------------------------------------------- CREATE TABLE [ob].[FlexDriverAccountAssignment] ( [FlexDriverAccountAssignmentID] int NOT NULL, [FlexDriverGUID] uniqueidentifier NOT NULL, [AccountAssignment] nvarchar(400) NOT NULL, PRIMARY KEY ([FlexDriverAccountAssignmentID]) ); GO ALTER TABLE [ob].[FlexDriverAccountAssignment] ADD CONSTRAINT [FK__FlexDrive__FlexD__28B43D8F] FOREIGN KEY ([FlexDriverGUID]) REFERENCES [ob].[FlexDriver] ([FlexDriverGUID]); GO ALTER TABLE [ob].[FlexDriverAccountAssignment] ADD CONSTRAINT [DF__FlexDrive__FlexD__5E5068DA] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [FlexDriverGUID]; GO ALTER TABLE [ob].[FlexDriverAccountAssignment] ADD CONSTRAINT [DF__FlexDrive__Accou__6038B14C] DEFAULT ('') FOR [AccountAssignment]; GO --------------------------------------------- --------------------------------------------- -- ob.FlexDriverPayrollAssignment ------------------ --------------------------------------------- CREATE TABLE [ob].[FlexDriverPayrollAssignment] ( [FlexDriverPayrollAssignmentID] int NOT NULL, [FlexDriverGUID] uniqueidentifier NOT NULL, [JobCodeAssignment] nvarchar(400) NOT NULL, [PayCodeGroupAssignment] nvarchar(400) NOT NULL, PRIMARY KEY ([FlexDriverPayrollAssignmentID]) ); GO ALTER TABLE [ob].[FlexDriverPayrollAssignment] ADD CONSTRAINT [FK__FlexDrive__FlexD__29A861C8] FOREIGN KEY ([FlexDriverGUID]) REFERENCES [ob].[FlexDriver] ([FlexDriverGUID]); GO ALTER TABLE [ob].[FlexDriverPayrollAssignment] ADD CONSTRAINT [DF__FlexDrive__FlexD__63151DF7] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [FlexDriverGUID]; GO ALTER TABLE [ob].[FlexDriverPayrollAssignment] ADD CONSTRAINT [DF__FlexDrive__JobCo__64FD6669] DEFAULT ('') FOR [JobCodeAssignment]; GO ALTER TABLE [ob].[FlexDriverPayrollAssignment] ADD CONSTRAINT [DF__FlexDrive__PayCo__65F18AA2] DEFAULT ('') FOR [PayCodeGroupAssignment]; GO --------------------------------------------- --------------------------------------------- -- ob.FlexDriverProviderForecastAssignment ------------------ --------------------------------------------- CREATE TABLE [ob].[FlexDriverProviderForecastAssignment] ( [FlexDriverProviderForecastAssignmentID] int NOT NULL, [FlexDriverGUID] uniqueidentifier NOT NULL, [ProviderAssignment] nvarchar(400) NULL, [ForecastDetailAssignment] nvarchar(400) NULL, PRIMARY KEY ([FlexDriverProviderForecastAssignmentID]) ); GO ALTER TABLE [ob].[FlexDriverProviderForecastAssignment] ADD CONSTRAINT [FK__FlexDrive__FlexD__23B61DD2] FOREIGN KEY ([FlexDriverGUID]) REFERENCES [ob].[FlexDriver] ([FlexDriverGUID]); GO ALTER TABLE [ob].[FlexDriverProviderForecastAssignment] ADD CONSTRAINT [DF__FlexDrive__FlexD__20D9B127] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [FlexDriverGUID]; GO ALTER TABLE [ob].[FlexDriverProviderForecastAssignment] ADD CONSTRAINT [DF__FlexDrive__Provi__21CDD560] DEFAULT ('') FOR [ProviderAssignment]; GO ALTER TABLE [ob].[FlexDriverProviderForecastAssignment] ADD CONSTRAINT [DF__FlexDrive__Forec__22C1F999] DEFAULT ('') FOR [ForecastDetailAssignment]; GO --------------------------------------------- --------------------------------------------- -- ob.JobCodeReconciliationTarget ------------------ --------------------------------------------- CREATE TABLE [ob].[JobCodeReconciliationTarget] ( [TargetGuid] uniqueidentifier NOT NULL, [EntityID] int NOT NULL, [FiscalMonthID] tinyint NOT NULL, [FiscalYearID] smallint NOT NULL, [TimeClassID] tinyint NOT NULL, [UnitTypeID] tinyint NOT NULL, [JobCodeID] int NOT NULL, [Amount] decimal NOT NULL, PRIMARY KEY ([TargetGuid]) ); GO ALTER TABLE [ob].[JobCodeReconciliationTarget] ADD CONSTRAINT [FK__JobCodeRe__Entit__1D428AE3] FOREIGN KEY ([EntityID]) REFERENCES [fw].[DimEntity] ([EntityID]); GO ALTER TABLE [ob].[JobCodeReconciliationTarget] ADD CONSTRAINT [FK__JobCodeRe__Fisca__1F2AD355] FOREIGN KEY ([FiscalMonthID]) REFERENCES [fw].[DimFiscalMonth] ([FiscalMonthID]); GO ALTER TABLE [ob].[JobCodeReconciliationTarget] ADD CONSTRAINT [FK__JobCodeRe__Fisca__21131BC7] FOREIGN KEY ([FiscalYearID]) REFERENCES [fw].[DimFiscalYear] ([FiscalYearID]); GO ALTER TABLE [ob].[JobCodeReconciliationTarget] ADD CONSTRAINT [FK__JobCodeRe__JobCo__26CBF51D] FOREIGN KEY ([JobCodeID]) REFERENCES [fw].[DimJobCode] ([JobCodeID]); GO ALTER TABLE [ob].[JobCodeReconciliationTarget] ADD CONSTRAINT [FK__JobCodeRe__TimeC__22FB6439] FOREIGN KEY ([TimeClassID]) REFERENCES [fw].[DimTimeClass] ([TimeClassID]); GO ALTER TABLE [ob].[JobCodeReconciliationTarget] ADD CONSTRAINT [FK__JobCodeRe__UnitT__24E3ACAB] FOREIGN KEY ([UnitTypeID]) REFERENCES [fw].[DimUnitType] ([UnitTypeID]); GO ALTER TABLE [ob].[JobCodeReconciliationTarget] ADD CONSTRAINT [DF__JobCodeRe__Targe__1B5A4271] DEFAULT (newid()) FOR [TargetGuid]; GO ALTER TABLE [ob].[JobCodeReconciliationTarget] ADD CONSTRAINT [DF__JobCodeRe__Fisca__1E36AF1C] DEFAULT ((0)) FOR [FiscalMonthID]; GO ALTER TABLE [ob].[JobCodeReconciliationTarget] ADD CONSTRAINT [DF__JobCodeRe__Fisca__201EF78E] DEFAULT ((0)) FOR [FiscalYearID]; GO ALTER TABLE [ob].[JobCodeReconciliationTarget] ADD CONSTRAINT [DF__JobCodeRe__TimeC__22074000] DEFAULT ((0)) FOR [TimeClassID]; GO ALTER TABLE [ob].[JobCodeReconciliationTarget] ADD CONSTRAINT [DF__JobCodeRe__UnitT__23EF8872] DEFAULT ((0)) FOR [UnitTypeID]; GO ALTER TABLE [ob].[JobCodeReconciliationTarget] ADD CONSTRAINT [DF__JobCodeRe__JobCo__25D7D0E4] DEFAULT ((0)) FOR [JobCodeID]; GO ALTER TABLE [ob].[JobCodeReconciliationTarget] ADD CONSTRAINT [DF__JobCodeRe__Amoun__27C01956] DEFAULT ((0)) FOR [Amount]; GO ALTER TABLE [ob].[JobCodeReconciliationTarget] ADD CONSTRAINT [DF__JobCodeRe__Entit__1C4E66AA] DEFAULT ((0)) FOR [EntityID]; GO --------------------------------------------- --------------------------------------------- -- ob.PayCodeReconciliationTarget ------------------ --------------------------------------------- CREATE TABLE [ob].[PayCodeReconciliationTarget] ( [TargetGuid] uniqueidentifier NOT NULL, [EntityID] int NOT NULL, [FiscalMonthID] tinyint NOT NULL, [FiscalYearID] smallint NOT NULL, [TimeClassID] tinyint NOT NULL, [UnitTypeID] tinyint NOT NULL, [PayCodeGroupID] int NOT NULL, [Amount] decimal NOT NULL, PRIMARY KEY ([TargetGuid]) ); GO ALTER TABLE [ob].[PayCodeReconciliationTarget] ADD CONSTRAINT [FK__PayCodeRe__Entit__183DDEA4] FOREIGN KEY ([EntityID]) REFERENCES [fw].[DimEntity] ([EntityID]); GO ALTER TABLE [ob].[PayCodeReconciliationTarget] ADD CONSTRAINT [FK__PayCodeRe__Fisca__1A262716] FOREIGN KEY ([FiscalMonthID]) REFERENCES [fw].[DimFiscalMonth] ([FiscalMonthID]); GO ALTER TABLE [ob].[PayCodeReconciliationTarget] ADD CONSTRAINT [FK__PayCodeRe__Fisca__1C0E6F88] FOREIGN KEY ([FiscalYearID]) REFERENCES [fw].[DimFiscalYear] ([FiscalYearID]); GO ALTER TABLE [ob].[PayCodeReconciliationTarget] ADD CONSTRAINT [FK__PayCodeRe__PayCo__21C748DE] FOREIGN KEY ([PayCodeGroupID]) REFERENCES [fw].[DimPayCodeGroup] ([PayCodeGroupID]); GO ALTER TABLE [ob].[PayCodeReconciliationTarget] ADD CONSTRAINT [FK__PayCodeRe__TimeC__1DF6B7FA] FOREIGN KEY ([TimeClassID]) REFERENCES [fw].[DimTimeClass] ([TimeClassID]); GO ALTER TABLE [ob].[PayCodeReconciliationTarget] ADD CONSTRAINT [FK__PayCodeRe__UnitT__1FDF006C] FOREIGN KEY ([UnitTypeID]) REFERENCES [fw].[DimUnitType] ([UnitTypeID]); GO ALTER TABLE [ob].[PayCodeReconciliationTarget] ADD CONSTRAINT [DF__PayCodeRe__Targe__16559632] DEFAULT (newid()) FOR [TargetGuid]; GO ALTER TABLE [ob].[PayCodeReconciliationTarget] ADD CONSTRAINT [DF__PayCodeRe__Fisca__193202DD] DEFAULT ((0)) FOR [FiscalMonthID]; GO ALTER TABLE [ob].[PayCodeReconciliationTarget] ADD CONSTRAINT [DF__PayCodeRe__Fisca__1B1A4B4F] DEFAULT ((0)) FOR [FiscalYearID]; GO ALTER TABLE [ob].[PayCodeReconciliationTarget] ADD CONSTRAINT [DF__PayCodeRe__TimeC__1D0293C1] DEFAULT ((0)) FOR [TimeClassID]; GO ALTER TABLE [ob].[PayCodeReconciliationTarget] ADD CONSTRAINT [DF__PayCodeRe__UnitT__1EEADC33] DEFAULT ((0)) FOR [UnitTypeID]; GO ALTER TABLE [ob].[PayCodeReconciliationTarget] ADD CONSTRAINT [DF__PayCodeRe__PayCo__20D324A5] DEFAULT ((0)) FOR [PayCodeGroupID]; GO ALTER TABLE [ob].[PayCodeReconciliationTarget] ADD CONSTRAINT [DF__PayCodeRe__Amoun__22BB6D17] DEFAULT ((0)) FOR [Amount]; GO ALTER TABLE [ob].[PayCodeReconciliationTarget] ADD CONSTRAINT [DF__PayCodeRe__Entit__1749BA6B] DEFAULT ((0)) FOR [EntityID]; GO --------------------------------------------- --------------------------------------------- -- ob.PayrollVariabilityOverride ------------------ --------------------------------------------- CREATE TABLE [ob].[PayrollVariabilityOverride] ( [DepartmentAssignment] nvarchar(400) NOT NULL, [JobCodeAssignment] nvarchar(400) NOT NULL, [PayCodeGroupAssignment] nvarchar(400) NOT NULL, [Variability] decimal NOT NULL, [PrecedentOrder] int NOT NULL, [PayrollVariabilityOverrideID] int NOT NULL, PRIMARY KEY ([PayrollVariabilityOverrideID]) ); GO ALTER TABLE [ob].[PayrollVariabilityOverride] ADD CONSTRAINT [DF__PayrollVa__Depar__6F7AF4DC] DEFAULT ('') FOR [DepartmentAssignment]; GO ALTER TABLE [ob].[PayrollVariabilityOverride] ADD CONSTRAINT [DF__PayrollVa__JobCo__706F1915] DEFAULT ('') FOR [JobCodeAssignment]; GO ALTER TABLE [ob].[PayrollVariabilityOverride] ADD CONSTRAINT [DF__PayrollVa__PayCo__71633D4E] DEFAULT ('') FOR [PayCodeGroupAssignment]; GO ALTER TABLE [ob].[PayrollVariabilityOverride] ADD CONSTRAINT [DF__PayrollVa__Varia__72576187] DEFAULT ((0)) FOR [Variability]; GO ALTER TABLE [ob].[PayrollVariabilityOverride] ADD CONSTRAINT [DF__PayrollVa__Prece__734B85C0] DEFAULT ((0)) FOR [PrecedentOrder]; GO --------------------------------------------- --------------------------------------------- -- ob.PayrollVariabilityOverrideCache ------------------ --------------------------------------------- CREATE TABLE [ob].[PayrollVariabilityOverrideCache] ( [DepartmentID] int NOT NULL, [JobCodeID] int NOT NULL, [PayCodeGroupID] int NOT NULL, [Variability] decimal NOT NULL, [IsForAllPayCodeGroups] bit NOT NULL, PRIMARY KEY ([DepartmentID], [JobCodeID], [PayCodeGroupID]) ); GO ALTER TABLE [ob].[PayrollVariabilityOverrideCache] ADD CONSTRAINT [FK_OB_PayrollVariabilityOverrideCache_DimDepartment] FOREIGN KEY ([DepartmentID]) REFERENCES [fw].[DimDepartment] ([DepartmentID]); GO ALTER TABLE [ob].[PayrollVariabilityOverrideCache] ADD CONSTRAINT [FK_OB_PayrollVariabilityOverrideCache_DimJobCode] FOREIGN KEY ([JobCodeID]) REFERENCES [fw].[DimJobCode] ([JobCodeID]); GO ALTER TABLE [ob].[PayrollVariabilityOverrideCache] ADD CONSTRAINT [FK_OB_PayrollVariabilityOverrideCache_DimPayCodeGroup] FOREIGN KEY ([PayCodeGroupID]) REFERENCES [fw].[DimPayCodeGroup] ([PayCodeGroupID]); GO ALTER TABLE [ob].[PayrollVariabilityOverrideCache] ADD CONSTRAINT [DF__PayrollVa__IsFor__0E911584] DEFAULT ((0)) FOR [IsForAllPayCodeGroups]; GO --------------------------------------------- --------------------------------------------- -- ob.ReconciliationTarget ------------------ --------------------------------------------- CREATE TABLE [ob].[ReconciliationTarget] ( [TargetGuid] uniqueidentifier NOT NULL, [EntityID] int NOT NULL, [FiscalMonthID] tinyint NOT NULL, [FiscalYearID] smallint NOT NULL, [FinancialReportingID] int NOT NULL, [TimeClassID] tinyint NOT NULL, [Amount] decimal NOT NULL, PRIMARY KEY ([TargetGuid]) ); GO ALTER TABLE [ob].[ReconciliationTarget] ADD CONSTRAINT [FK__Reconcili__Entit__22E3F39B] FOREIGN KEY ([EntityID]) REFERENCES [fw].[DimEntity] ([EntityID]); GO ALTER TABLE [ob].[ReconciliationTarget] ADD CONSTRAINT [FK__Reconcili__Finan__289CCCF1] FOREIGN KEY ([FinancialReportingID]) REFERENCES [ob].[DimFinancialReporting] ([FinancialReportingID]); GO ALTER TABLE [ob].[ReconciliationTarget] ADD CONSTRAINT [FK__Reconcili__Fisca__24CC3C0D] FOREIGN KEY ([FiscalMonthID]) REFERENCES [fw].[DimFiscalMonth] ([FiscalMonthID]); GO ALTER TABLE [ob].[ReconciliationTarget] ADD CONSTRAINT [FK__Reconcili__Fisca__26B4847F] FOREIGN KEY ([FiscalYearID]) REFERENCES [fw].[DimFiscalYear] ([FiscalYearID]); GO ALTER TABLE [ob].[ReconciliationTarget] ADD CONSTRAINT [FK__Reconcili__TimeC__2A851563] FOREIGN KEY ([TimeClassID]) REFERENCES [fw].[DimTimeClass] ([TimeClassID]); GO ALTER TABLE [ob].[ReconciliationTarget] ADD CONSTRAINT [DF__Reconcili__Targe__20FBAB29] DEFAULT (newid()) FOR [TargetGuid]; GO ALTER TABLE [ob].[ReconciliationTarget] ADD CONSTRAINT [DF__Reconcili__Fisca__23D817D4] DEFAULT ((0)) FOR [FiscalMonthID]; GO ALTER TABLE [ob].[ReconciliationTarget] ADD CONSTRAINT [DF__Reconcili__Fisca__25C06046] DEFAULT ((0)) FOR [FiscalYearID]; GO ALTER TABLE [ob].[ReconciliationTarget] ADD CONSTRAINT [DF__Reconcili__Finan__27A8A8B8] DEFAULT ((0)) FOR [FinancialReportingID]; GO ALTER TABLE [ob].[ReconciliationTarget] ADD CONSTRAINT [DF__Reconcili__TimeC__2990F12A] DEFAULT ((0)) FOR [TimeClassID]; GO ALTER TABLE [ob].[ReconciliationTarget] ADD CONSTRAINT [DF__Reconcili__Amoun__2B79399C] DEFAULT ((0)) FOR [Amount]; GO ALTER TABLE [ob].[ReconciliationTarget] ADD CONSTRAINT [DF__Reconcili__Entit__21EFCF62] DEFAULT ((0)) FOR [EntityID]; GO --------------------------------------------- --------------------------------------------- -- ob.StatisticsEntityReconciliationTarget ------------------ --------------------------------------------- CREATE TABLE [ob].[StatisticsEntityReconciliationTarget] ( [TargetGuid] uniqueidentifier NOT NULL, [EntityID] int NOT NULL, [FiscalMonthID] tinyint NOT NULL, [FiscalYearID] smallint NOT NULL, [TimeClassID] tinyint NOT NULL, [UnitTypeID] tinyint NOT NULL, [AccountID] int NOT NULL, [Amount] decimal NOT NULL, PRIMARY KEY ([TargetGuid]) ); GO ALTER TABLE [ob].[StatisticsEntityReconciliationTarget] ADD CONSTRAINT [FK__Statistic__Accou__50C22EE9] FOREIGN KEY ([AccountID]) REFERENCES [fw].[DimAccount] ([AccountID]); GO ALTER TABLE [ob].[StatisticsEntityReconciliationTarget] ADD CONSTRAINT [FK__Statistic__Entit__4738C4AF] FOREIGN KEY ([EntityID]) REFERENCES [fw].[DimEntity] ([EntityID]); GO ALTER TABLE [ob].[StatisticsEntityReconciliationTarget] ADD CONSTRAINT [FK__Statistic__Fisca__49210D21] FOREIGN KEY ([FiscalMonthID]) REFERENCES [fw].[DimFiscalMonth] ([FiscalMonthID]); GO ALTER TABLE [ob].[StatisticsEntityReconciliationTarget] ADD CONSTRAINT [FK__Statistic__Fisca__4B095593] FOREIGN KEY ([FiscalYearID]) REFERENCES [fw].[DimFiscalYear] ([FiscalYearID]); GO ALTER TABLE [ob].[StatisticsEntityReconciliationTarget] ADD CONSTRAINT [FK__Statistic__TimeC__4CF19E05] FOREIGN KEY ([TimeClassID]) REFERENCES [fw].[DimTimeClass] ([TimeClassID]); GO ALTER TABLE [ob].[StatisticsEntityReconciliationTarget] ADD CONSTRAINT [FK__Statistic__UnitT__4ED9E677] FOREIGN KEY ([UnitTypeID]) REFERENCES [fw].[DimUnitType] ([UnitTypeID]); GO ALTER TABLE [ob].[StatisticsEntityReconciliationTarget] ADD CONSTRAINT [DF__Statistic__Targe__45507C3D] DEFAULT (newid()) FOR [TargetGuid]; GO ALTER TABLE [ob].[StatisticsEntityReconciliationTarget] ADD CONSTRAINT [DF__Statistic__Fisca__482CE8E8] DEFAULT ((0)) FOR [FiscalMonthID]; GO ALTER TABLE [ob].[StatisticsEntityReconciliationTarget] ADD CONSTRAINT [DF__Statistic__Fisca__4A15315A] DEFAULT ((0)) FOR [FiscalYearID]; GO ALTER TABLE [ob].[StatisticsEntityReconciliationTarget] ADD CONSTRAINT [DF__Statistic__TimeC__4BFD79CC] DEFAULT ((0)) FOR [TimeClassID]; GO ALTER TABLE [ob].[StatisticsEntityReconciliationTarget] ADD CONSTRAINT [DF__Statistic__UnitT__4DE5C23E] DEFAULT ((0)) FOR [UnitTypeID]; GO ALTER TABLE [ob].[StatisticsEntityReconciliationTarget] ADD CONSTRAINT [DF__Statistic__Accou__4FCE0AB0] DEFAULT ((0)) FOR [AccountID]; GO ALTER TABLE [ob].[StatisticsEntityReconciliationTarget] ADD CONSTRAINT [DF__Statistic__Amoun__51B65322] DEFAULT ((0)) FOR [Amount]; GO ALTER TABLE [ob].[StatisticsEntityReconciliationTarget] ADD CONSTRAINT [DF__Statistic__Entit__4644A076] DEFAULT ((0)) FOR [EntityID]; GO --------------------------------------------- --------------------------------------------- -- ob.SystemSetting ------------------ --------------------------------------------- CREATE TABLE [ob].[SystemSetting] ( [SystemSettingID] int NOT NULL, [Name] nvarchar(100) NOT NULL, [Description] nvarchar(400) NOT NULL, [Value] nvarchar(max) NOT NULL, [IsEditable] bit NOT NULL, [ColumnType] int NOT NULL, [DefaultValue] nvarchar(100) NOT NULL, [IsEncrypted] bit NOT NULL, PRIMARY KEY ([SystemSettingID]) ); GO ALTER TABLE [ob].[SystemSetting] ADD CONSTRAINT [DF_SYSTEMSETTING_VALUE] DEFAULT ('') FOR [Value]; GO ALTER TABLE [ob].[SystemSetting] ADD CONSTRAINT [DF__SystemSett__Name__5E065017] DEFAULT ('') FOR [Name]; GO ALTER TABLE [ob].[SystemSetting] ADD CONSTRAINT [DF__SystemSet__Descr__5EFA7450] DEFAULT ('') FOR [Description]; GO ALTER TABLE [ob].[SystemSetting] ADD CONSTRAINT [DF__SystemSet__IsEdi__60E2BCC2] DEFAULT ((0)) FOR [IsEditable]; GO ALTER TABLE [ob].[SystemSetting] ADD CONSTRAINT [DF__SystemSet__Colum__61D6E0FB] DEFAULT ((0)) FOR [ColumnType]; GO ALTER TABLE [ob].[SystemSetting] ADD CONSTRAINT [DF__SystemSet__Defau__62CB0534] DEFAULT ('') FOR [DefaultValue]; GO ALTER TABLE [ob].[SystemSetting] ADD CONSTRAINT [DF__SystemSet__IsEnc__6AA45E82] DEFAULT ((0)) FOR [IsEncrypted]; GO --------------------------------------------- --------------------------------------------- -- VIEWS --------------------------------------------- -- ob.viewAllocationBasis /************************************************************ ** Author: Joel Gerber ** Create Date: 7/29/2014 ** Description: Displays the basis values for each allocation and department ** Last Modified: 2014-07-29 ** GM Release: 2014.4 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 2014-09-05 JG Changing the way basis is linked to allocations ** 2 2014-09-11 JG Filter out deleted rows ** 3 2014-09-22 JG Adding Department Mapping Basis Views ** 4 2015-01-28 MS Adding support for YTD-driven basis ** 5 2015-08-06 CB D-02673 Added unittypeid to factaccount joins *************************************************************/ CREATE view [ob].[viewAllocationBasis] AS /** Account Basis for Account Mapping***************************************************/ select DepartmentLevel.OBAllocationID, DepartmentLevel.OBAllocationBasisID, DepartmentLevel.DepartmentalBudgetID, DepartmentLevel.DepartmentID, DepartmentLevel.Total as BasisValue, ROUND(coalesce (DepartmentLevel.Total/NULLIF(AllocationLevel.Total,0),0),4) as BasisPercentage from (select al.OBAllocationID, al.OBAllocationBasisID, db.DepartmentalBudgetID, db.DepartmentID, SUM(Total) as Total from [clientob].[FactAllocationBasis] ab inner join [ob].[DimOBAllocation] al on al.OBAllocationBasisID=ab.OBAllocationBasisID inner join (select distinct DepartmentTargetID, OBAllocationID from [clientob].[FactAllocationAccountMapping] where IsDeleted=0) dm on al.OBAllocationID=dm.OBAllocationID inner join [ob].[DimDepartmentalBudget] db on dm.DepartmentTargetID=db.DepartmentID inner join [clientob].[FactAccount] fa on db.DepartmentalBudgetID=fa.DepartmentalBudgetID and ab.AccountID=fa.AccountID and ab.UnitTypeID=fa.UnitTypeID inner join [ob].[DimOBAllocationBasis] dab on ab.OBAllocationBasisID=dab.OBAllocationBasisID where dab.OBForecastDetailID<>100 --YTD and TimeClassID=2 and FiscalYearID=(select Setting+1 from [dbo].[DBSetting] where Name='OB_Current_Year') and Total<>0 and ab.IsDeleted=0 group by al.OBAllocationID, db.DepartmentalBudgetID, al.OBAllocationBasisID, db.DepartmentID) as DepartmentLevel inner join (select al.OBAllocationID, SUM(Total) as Total from [clientob].[FactAllocationBasis] ab inner join [ob].[DimOBAllocation] al on al.OBAllocationBasisID=ab.OBAllocationBasisID inner join (select distinct DepartmentTargetID, OBAllocationID from [clientob].[FactAllocationAccountMapping] where IsDeleted=0) dm on al.OBAllocationID=dm.OBAllocationID inner join [ob].[DimDepartmentalBudget] db on dm.DepartmentTargetID=db.DepartmentID inner join [clientob].[FactAccount] fa on db.DepartmentalBudgetID=fa.DepartmentalBudgetID and ab.AccountID=fa.AccountID and ab.UnitTypeID=fa.UnitTypeID inner join [ob].[DimOBAllocationBasis] dab on ab.OBAllocationBasisID=dab.OBAllocationBasisID where dab.OBForecastDetailID<>100 --YTD and TimeClassID=2 and FiscalYearID=(select Setting+1 from [dbo].[DBSetting] where Name='OB_Current_Year') and Total<>0 and ab.IsDeleted=0 group by al.OBAllocationID) as AllocationLevel on DepartmentLevel.OBAllocationID=AllocationLevel.OBAllocationID UNION ALL /** Account Basis for Department Mapping***************************************************/ select DepartmentLevel.OBAllocationID, DepartmentLevel.OBAllocationBasisID, DepartmentLevel.DepartmentalBudgetID, DepartmentLevel.DepartmentID, DepartmentLevel.Total as BasisValue, ROUND(coalesce (DepartmentLevel.Total/NULLIF(AllocationLevel.Total,0),0),4) as BasisPercentage from (select al.OBAllocationID, al.OBAllocationBasisID, db.DepartmentalBudgetID, db.DepartmentID, SUM(Total) as Total from [clientob].[FactAllocationBasis] ab inner join [ob].[DimOBAllocation] al on al.OBAllocationBasisID=ab.OBAllocationBasisID inner join (select distinct DepartmentTargetID, OBAllocationID from [clientob].[FactAllocationDepartmentMapping] where IsDeleted=0) dm on al.OBAllocationID=dm.OBAllocationID inner join [ob].[DimDepartmentalBudget] db on dm.DepartmentTargetID=db.DepartmentID inner join [clientob].[FactAccount] fa on db.DepartmentalBudgetID=fa.DepartmentalBudgetID and ab.AccountID=fa.AccountID and ab.UnitTypeID=fa.UnitTypeID inner join [ob].[DimOBAllocationBasis] dab on ab.OBAllocationBasisID=dab.OBAllocationBasisID where dab.OBForecastDetailID<>100 --YTD and TimeClassID=2 and FiscalYearID=(select Setting+1 from [dbo].[DBSetting] where Name='OB_Current_Year') and Total<>0 and ab.IsDeleted=0 group by al.OBAllocationID, db.DepartmentalBudgetID, al.OBAllocationBasisID, db.DepartmentID) as DepartmentLevel inner join (select al.OBAllocationID, SUM(Total) as Total from [clientob].[FactAllocationBasis] ab inner join [ob].[DimOBAllocation] al on al.OBAllocationBasisID=ab.OBAllocationBasisID inner join (select distinct DepartmentTargetID, OBAllocationID from [clientob].[FactAllocationDepartmentMapping] where IsDeleted=0) dm on al.OBAllocationID=dm.OBAllocationID inner join [ob].[DimDepartmentalBudget] db on dm.DepartmentTargetID=db.DepartmentID inner join [clientob].[FactAccount] fa on db.DepartmentalBudgetID=fa.DepartmentalBudgetID and ab.AccountID=fa.AccountID and ab.UnitTypeID=fa.UnitTypeID inner join [ob].[DimOBAllocationBasis] dab on ab.OBAllocationBasisID=dab.OBAllocationBasisID where dab.OBForecastDetailID<>100 --YTD and TimeClassID=2 and FiscalYearID=(select Setting+1 from [dbo].[DBSetting] where Name='OB_Current_Year') and Total<>0 and ab.IsDeleted=0 group by al.OBAllocationID) as AllocationLevel on DepartmentLevel.OBAllocationID=AllocationLevel.OBAllocationID UNION ALL /** Financial Reporting Basis for Account Mapping***************************************************/ select DepartmentLevel.OBAllocationID, DepartmentLevel.OBAllocationBasisID, DepartmentLevel.DepartmentalBudgetID, DepartmentLevel.DepartmentID, DepartmentLevel.Total as BasisValue, ROUND(coalesce (DepartmentLevel.Total/NULLIF(AllocationLevel.Total,0),0),4) as BasisPercentage from (select al.OBAllocationID, al.OBAllocationBasisID, db.DepartmentalBudgetID, db.DepartmentID, SUM(Total) as Total from [clientob].[FactAllocationFinancialReportingBasis] ab inner join [ob].[DimOBAllocation] al on al.OBAllocationBasisID=ab.OBAllocationBasisID inner join (select distinct DepartmentTargetID, OBAllocationID from [clientob].[FactAllocationAccountMapping] where IsDeleted=0) dm on al.OBAllocationID=dm.OBAllocationID inner join [ob].[DimDepartmentalBudget] db on dm.DepartmentTargetID=db.DepartmentID inner join [clientob].[FactReportingMonthly] fa on db.DepartmentalBudgetID=fa.DepartmentalBudgetID and ab.FinancialReportingID=fa.FinancialReportingID inner join [ob].[DimOBAllocationBasis] dab on ab.OBAllocationBasisID=dab.OBAllocationBasisID where dab.OBForecastDetailID<>100 --YTD and TimeClassID=2 and FiscalYearID=(select Setting+1 from [dbo].[DBSetting] where Name='OB_Current_Year') and Total<>0 and ab.IsDeleted=0 group by al.OBAllocationID, al.OBAllocationBasisID, db.DepartmentalBudgetID, db.DepartmentID) as DepartmentLevel inner join (select al.OBAllocationID, SUM(Total) as Total from [clientob].[FactAllocationFinancialReportingBasis] ab inner join [ob].[DimOBAllocation] al on al.OBAllocationBasisID=ab.OBAllocationBasisID inner join (select distinct DepartmentTargetID, OBAllocationID from [clientob].[FactAllocationAccountMapping] where IsDeleted=0) dm on al.OBAllocationID=dm.OBAllocationID inner join [ob].[DimDepartmentalBudget] db on dm.DepartmentTargetID=db.DepartmentID inner join [clientob].[FactReportingMonthly] fa on db.DepartmentalBudgetID=fa.DepartmentalBudgetID and ab.FinancialReportingID=fa.FinancialReportingID inner join [ob].[DimOBAllocationBasis] dab on ab.OBAllocationBasisID=dab.OBAllocationBasisID where dab.OBForecastDetailID<>100 --YTD and TimeClassID=2 and FiscalYearID=(select Setting+1 from [dbo].[DBSetting] where Name='OB_Current_Year') and Total<>0 and ab.IsDeleted=0 group by al.OBAllocationID) as AllocationLevel on DepartmentLevel.OBAllocationID=AllocationLevel.OBAllocationID UNION ALL /** Financial Reporting Basis for Department Mapping***************************************************/ select DepartmentLevel.OBAllocationID, DepartmentLevel.OBAllocationBasisID, DepartmentLevel.DepartmentalBudgetID, DepartmentLevel.DepartmentID, DepartmentLevel.Total as BasisValue, ROUND(coalesce (DepartmentLevel.Total/NULLIF(AllocationLevel.Total,0),0),4) as BasisPercentage from (select al.OBAllocationID, al.OBAllocationBasisID, db.DepartmentalBudgetID, db.DepartmentID, SUM(Total) as Total from [clientob].[FactAllocationFinancialReportingBasis] ab inner join [ob].[DimOBAllocation] al on al.OBAllocationBasisID=ab.OBAllocationBasisID inner join (select distinct DepartmentTargetID, OBAllocationID from [clientob].[FactAllocationDepartmentMapping] where IsDeleted=0) dm on al.OBAllocationID=dm.OBAllocationID inner join [ob].[DimDepartmentalBudget] db on dm.DepartmentTargetID=db.DepartmentID inner join [clientob].[FactReportingMonthly] fa on db.DepartmentalBudgetID=fa.DepartmentalBudgetID and ab.FinancialReportingID=fa.FinancialReportingID inner join [ob].[DimOBAllocationBasis] dab on ab.OBAllocationBasisID=dab.OBAllocationBasisID where dab.OBForecastDetailID<>100 --YTD and TimeClassID=2 and FiscalYearID=(select Setting+1 from [dbo].[DBSetting] where Name='OB_Current_Year') and Total<>0 and ab.IsDeleted=0 group by al.OBAllocationID, al.OBAllocationBasisID, db.DepartmentalBudgetID, db.DepartmentID) as DepartmentLevel inner join (select al.OBAllocationID, SUM(Total) as Total from [clientob].[FactAllocationFinancialReportingBasis] ab inner join [ob].[DimOBAllocation] al on al.OBAllocationBasisID=ab.OBAllocationBasisID inner join (select distinct DepartmentTargetID, OBAllocationID from [clientob].[FactAllocationDepartmentMapping] where IsDeleted=0) dm on al.OBAllocationID=dm.OBAllocationID inner join [ob].[DimDepartmentalBudget] db on dm.DepartmentTargetID=db.DepartmentID inner join [clientob].[FactReportingMonthly] fa on db.DepartmentalBudgetID=fa.DepartmentalBudgetID and ab.FinancialReportingID=fa.FinancialReportingID inner join [ob].[DimOBAllocationBasis] dab on ab.OBAllocationBasisID=dab.OBAllocationBasisID where dab.OBForecastDetailID<>100 --YTD and TimeClassID=2 and FiscalYearID=(select Setting+1 from [dbo].[DBSetting] where Name='OB_Current_Year') and Total<>0 and ab.IsDeleted=0 group by al.OBAllocationID) as AllocationLevel on DepartmentLevel.OBAllocationID=AllocationLevel.OBAllocationID UNION ALL /** Custom Basis ***************************************************/ select DepartmentLevel.OBAllocationID, DepartmentLevel.OBAllocationBasisID, DepartmentLevel.DepartmentalBudgetID, DepartmentLevel.DepartmentID, DepartmentLevel.Total as BasisValue, ROUND(coalesce (DepartmentLevel.Total/NULLIF(AllocationLevel.Total,0),0),4) as BasisPercentage from (select al.OBAllocationID, al.OBAllocationBasisID, db.DepartmentalBudgetID, db.DepartmentID, sum(BasisValue) as Total from [clientob].[FactAllocationCustomBasis] cb inner join [ob].[DimOBAllocation] al on al.OBAllocationBasisID=cb.OBAllocationBasisID inner join [ob].[DimDepartmentalBudget] db on cb.DepartmentTargetID=db.DepartmentID where cb.isdeleted=0 group by al.OBAllocationID, al.OBAllocationBasisID, db.DepartmentalBudgetID, db.DepartmentID) as DepartmentLevel inner join (select al.OBAllocationID, sum(BasisValue) as Total from [clientob].[FactAllocationCustomBasis] cb inner join [ob].[DimOBAllocation] al on al.OBAllocationBasisID=cb.OBAllocationBasisID inner join [ob].[DimDepartmentalBudget] db on cb.DepartmentTargetID=db.DepartmentID where BasisValue>0 and cb.isdeleted=0 group by al.OBAllocationID) as AllocationLevel on DepartmentLevel.OBAllocationID=AllocationLevel.OBAllocationID UNION ALL /** YTD Account Basis for Account Mapping***************************************************/ select DepartmentLevel.OBAllocationID, DepartmentLevel.OBAllocationBasisID, DepartmentLevel.DepartmentalBudgetID, DepartmentLevel.DepartmentID, DepartmentLevel.Total as BasisValue, ROUND(coalesce (DepartmentLevel.Total/NULLIF(AllocationLevel.Total,0),0),4) as BasisPercentage from (select al.OBAllocationID, al.OBAllocationBasisID, db.DepartmentalBudgetID, db.DepartmentID, SUM(YTD) as Total from [clientob].[FactAllocationBasis] ab inner join [ob].[DimOBAllocation] al on al.OBAllocationBasisID=ab.OBAllocationBasisID inner join (select distinct DepartmentTargetID, OBAllocationID from [clientob].[FactAllocationAccountMapping] where IsDeleted=0) dm on al.OBAllocationID=dm.OBAllocationID inner join [ob].[DimDepartmentalBudget] db on dm.DepartmentTargetID=db.DepartmentID inner join [clientob].[FactAccount] fa on db.DepartmentalBudgetID=fa.DepartmentalBudgetID and ab.AccountID=fa.AccountID and ab.UnitTypeID=fa.UnitTypeID inner join [ob].[DimOBAllocationBasis] dab on ab.OBAllocationBasisID=dab.OBAllocationBasisID where dab.OBForecastDetailID=100 --YTD and TimeClassID=1 and FiscalYearID=(select Setting from [dbo].[DBSetting] where Name='OB_Current_Year') and YTD<>0 and ab.IsDeleted=0 group by al.OBAllocationID, db.DepartmentalBudgetID, al.OBAllocationBasisID, db.DepartmentID) as DepartmentLevel inner join (select al.OBAllocationID, SUM(YTD) as Total from [clientob].[FactAllocationBasis] ab inner join [ob].[DimOBAllocation] al on al.OBAllocationBasisID=ab.OBAllocationBasisID inner join (select distinct DepartmentTargetID, OBAllocationID from [clientob].[FactAllocationAccountMapping] where IsDeleted=0) dm on al.OBAllocationID=dm.OBAllocationID inner join [ob].[DimDepartmentalBudget] db on dm.DepartmentTargetID=db.DepartmentID inner join [clientob].[FactAccount] fa on db.DepartmentalBudgetID=fa.DepartmentalBudgetID and ab.AccountID=fa.AccountID and ab.UnitTypeID=fa.UnitTypeID inner join [ob].[DimOBAllocationBasis] dab on ab.OBAllocationBasisID=dab.OBAllocationBasisID where dab.OBForecastDetailID=100 --YTD and TimeClassID=1 and FiscalYearID=(select Setting from [dbo].[DBSetting] where Name='OB_Current_Year') and YTD<>0 and ab.IsDeleted=0 group by al.OBAllocationID) as AllocationLevel on DepartmentLevel.OBAllocationID=AllocationLevel.OBAllocationID UNION ALL /** YTD Account Basis for Department Mapping***************************************************/ select DepartmentLevel.OBAllocationID, DepartmentLevel.OBAllocationBasisID, DepartmentLevel.DepartmentalBudgetID, DepartmentLevel.DepartmentID, DepartmentLevel.Total as BasisValue, ROUND(coalesce (DepartmentLevel.Total/NULLIF(AllocationLevel.Total,0),0),4) as BasisPercentage from (select al.OBAllocationID, al.OBAllocationBasisID, db.DepartmentalBudgetID, db.DepartmentID, SUM(YTD) as Total from [clientob].[FactAllocationBasis] ab inner join [ob].[DimOBAllocation] al on al.OBAllocationBasisID=ab.OBAllocationBasisID inner join (select distinct DepartmentTargetID, OBAllocationID from [clientob].[FactAllocationDepartmentMapping] where IsDeleted=0) dm on al.OBAllocationID=dm.OBAllocationID inner join [ob].[DimDepartmentalBudget] db on dm.DepartmentTargetID=db.DepartmentID inner join [clientob].[FactAccount] fa on db.DepartmentalBudgetID=fa.DepartmentalBudgetID and ab.AccountID=fa.AccountID and ab.UnitTypeID=fa.UnitTypeID inner join [ob].[DimOBAllocationBasis] dab on ab.OBAllocationBasisID=dab.OBAllocationBasisID where dab.OBForecastDetailID=100 --YTD and TimeClassID=1 and FiscalYearID=(select Setting from [dbo].[DBSetting] where Name='OB_Current_Year') and YTD<>0 and ab.IsDeleted=0 group by al.OBAllocationID, db.DepartmentalBudgetID, al.OBAllocationBasisID, db.DepartmentID) as DepartmentLevel inner join (select al.OBAllocationID, SUM(YTD) as Total from [clientob].[FactAllocationBasis] ab inner join [ob].[DimOBAllocation] al on al.OBAllocationBasisID=ab.OBAllocationBasisID inner join (select distinct DepartmentTargetID, OBAllocationID from [clientob].[FactAllocationDepartmentMapping] where IsDeleted=0) dm on al.OBAllocationID=dm.OBAllocationID inner join [ob].[DimDepartmentalBudget] db on dm.DepartmentTargetID=db.DepartmentID inner join [clientob].[FactAccount] fa on db.DepartmentalBudgetID=fa.DepartmentalBudgetID and ab.AccountID=fa.AccountID and ab.UnitTypeID=fa.UnitTypeID inner join [ob].[DimOBAllocationBasis] dab on ab.OBAllocationBasisID=dab.OBAllocationBasisID where dab.OBForecastDetailID=100 --YTD and TimeClassID=1 and FiscalYearID=(select Setting from [dbo].[DBSetting] where Name='OB_Current_Year') and YTD<>0 and ab.IsDeleted=0 group by al.OBAllocationID) as AllocationLevel on DepartmentLevel.OBAllocationID=AllocationLevel.OBAllocationID UNION ALL /** YTD Financial Reporting Basis for Account Mapping***************************************************/ select DepartmentLevel.OBAllocationID, DepartmentLevel.OBAllocationBasisID, DepartmentLevel.DepartmentalBudgetID, DepartmentLevel.DepartmentID, DepartmentLevel.Total as BasisValue, ROUND(coalesce (DepartmentLevel.Total/NULLIF(AllocationLevel.Total,0),0),4) as BasisPercentage from (select al.OBAllocationID, al.OBAllocationBasisID, db.DepartmentalBudgetID, db.DepartmentID, SUM(YTD) as Total from [clientob].[FactAllocationFinancialReportingBasis] ab inner join [ob].[DimOBAllocation] al on al.OBAllocationBasisID=ab.OBAllocationBasisID inner join (select distinct DepartmentTargetID, OBAllocationID from [clientob].[FactAllocationAccountMapping] where IsDeleted=0) dm on al.OBAllocationID=dm.OBAllocationID inner join [ob].[DimDepartmentalBudget] db on dm.DepartmentTargetID=db.DepartmentID inner join [clientob].[FactReportingMonthly] fa on db.DepartmentalBudgetID=fa.DepartmentalBudgetID and ab.FinancialReportingID=fa.FinancialReportingID inner join [ob].[DimOBAllocationBasis] dab on ab.OBAllocationBasisID=dab.OBAllocationBasisID where dab.OBForecastDetailID=100 --YTD and TimeClassID=1 and FiscalYearID=(select Setting from [dbo].[DBSetting] where Name='OB_Current_Year') and YTD<>0 and ab.IsDeleted=0 group by al.OBAllocationID, al.OBAllocationBasisID, db.DepartmentalBudgetID, db.DepartmentID) as DepartmentLevel inner join (select al.OBAllocationID, SUM(YTD) as Total from [clientob].[FactAllocationFinancialReportingBasis] ab inner join [ob].[DimOBAllocation] al on al.OBAllocationBasisID=ab.OBAllocationBasisID inner join (select distinct DepartmentTargetID, OBAllocationID from [clientob].[FactAllocationAccountMapping] where IsDeleted=0) dm on al.OBAllocationID=dm.OBAllocationID inner join [ob].[DimDepartmentalBudget] db on dm.DepartmentTargetID=db.DepartmentID inner join [clientob].[FactReportingMonthly] fa on db.DepartmentalBudgetID=fa.DepartmentalBudgetID and ab.FinancialReportingID=fa.FinancialReportingID inner join [ob].[DimOBAllocationBasis] dab on ab.OBAllocationBasisID=dab.OBAllocationBasisID where dab.OBForecastDetailID=100 --YTD and TimeClassID=1 and FiscalYearID=(select Setting from [dbo].[DBSetting] where Name='OB_Current_Year') and YTD<>0 and ab.IsDeleted=0 group by al.OBAllocationID) as AllocationLevel on DepartmentLevel.OBAllocationID=AllocationLevel.OBAllocationID UNION ALL /** YTD Financial Reporting Basis for Department Mapping***************************************************/ select DepartmentLevel.OBAllocationID, DepartmentLevel.OBAllocationBasisID, DepartmentLevel.DepartmentalBudgetID, DepartmentLevel.DepartmentID, DepartmentLevel.Total as BasisValue, ROUND(coalesce (DepartmentLevel.Total/NULLIF(AllocationLevel.Total,0),0),4) as BasisPercentage from (select al.OBAllocationID, al.OBAllocationBasisID, db.DepartmentalBudgetID, db.DepartmentID, SUM(YTD) as Total from [clientob].[FactAllocationFinancialReportingBasis] ab inner join [ob].[DimOBAllocation] al on al.OBAllocationBasisID=ab.OBAllocationBasisID inner join (select distinct DepartmentTargetID, OBAllocationID from [clientob].[FactAllocationDepartmentMapping] where IsDeleted=0) dm on al.OBAllocationID=dm.OBAllocationID inner join [ob].[DimDepartmentalBudget] db on dm.DepartmentTargetID=db.DepartmentID inner join [clientob].[FactReportingMonthly] fa on db.DepartmentalBudgetID=fa.DepartmentalBudgetID and ab.FinancialReportingID=fa.FinancialReportingID inner join [ob].[DimOBAllocationBasis] dab on ab.OBAllocationBasisID=dab.OBAllocationBasisID where dab.OBForecastDetailID=100 --YTD and TimeClassID=1 and FiscalYearID=(select Setting from [dbo].[DBSetting] where Name='OB_Current_Year') and YTD<>0 and ab.IsDeleted=0 group by al.OBAllocationID, al.OBAllocationBasisID, db.DepartmentalBudgetID, db.DepartmentID) as DepartmentLevel inner join (select al.OBAllocationID, SUM(YTD) as Total from [clientob].[FactAllocationFinancialReportingBasis] ab inner join [ob].[DimOBAllocation] al on al.OBAllocationBasisID=ab.OBAllocationBasisID inner join (select distinct DepartmentTargetID, OBAllocationID from [clientob].[FactAllocationDepartmentMapping] where IsDeleted=0) dm on al.OBAllocationID=dm.OBAllocationID inner join [ob].[DimDepartmentalBudget] db on dm.DepartmentTargetID=db.DepartmentID inner join [clientob].[FactReportingMonthly] fa on db.DepartmentalBudgetID=fa.DepartmentalBudgetID and ab.FinancialReportingID=fa.FinancialReportingID inner join [ob].[DimOBAllocationBasis] dab on ab.OBAllocationBasisID=dab.OBAllocationBasisID where dab.OBForecastDetailID=100 --YTD and TimeClassID=1 and FiscalYearID=(select Setting from [dbo].[DBSetting] where Name='OB_Current_Year') and YTD<>0 and ab.IsDeleted=0 group by al.OBAllocationID) as AllocationLevel on DepartmentLevel.OBAllocationID=AllocationLevel.OBAllocationID GO --------------------------------------------- -- ob.viewAllocationValues create view [ob].[viewAllocationValues] as /***************************************************************************************** ** Author: Joel Gerber ** Create Date: 7/29/2014 ** Description: Displays the source and target departments and accounts and their allocation values ** Last Modified: 2014-07-29 ** GM Release: 2014.4 ***************************************************************************************** ** Change History ***************************************************************************************** ** CID Date Author WI Description ** 1 2014-09-04 JG Add the department filter ** 2 2014-09-11 JG Add the reversal ** 3 2014-09-22 JG Add ability to use a default (not specified) account for the department mapping ** 4 2014-09-24 JG Only reverse if reverse is being used ** 5 2014-09-25 JG Changing allocation to pull the allocation percentage ** 6 2014-09-26 JG Adding isReverse flag for reporting purposes ** 7 2014-09-30 JG Allowing non-dollars to be allocated ** 8 2015-02-17 JG Adding an isDeleted Filter to the filter table ** 9 2015-09-02 cbb D-03357 Backing out CID 7 because the model does not support non-dollar unittypes ** 10 2016-02-10 cbb B-11086 Adding execution order *****************************************************************************************/ --Account Mapping (Reverse) select aa.OBAllocationID, dm.ExecutionOrder, -- CID 10 fa.DepartmentalBudgetID as DepartmentalBudgetSourceID, aa.DepartmentSourceID, aa.AccountSourceID, db2.DepartmentalBudgetID as DepartmentalBudgetTargetID, aa.DepartmentID as DepartmentTargetID, aa.AccountID as AccountTargetID, fa.FiscalYearID, fa.TimeClassId, fa.UnitTypeID, fa.DataTypeID, 1 as isReverse, -aa.AllocationPercentage as AllocationPercentage, -fa.Month01*aa.AllocationPercentage as Month01, -fa.Month02*aa.AllocationPercentage as Month02, -fa.Month03*aa.AllocationPercentage as Month03, -fa.Month04*aa.AllocationPercentage as Month04, -fa.Month05*aa.AllocationPercentage as Month05, -fa.Month06*aa.AllocationPercentage as Month06, -fa.Month07*aa.AllocationPercentage as Month07, -fa.Month08*aa.AllocationPercentage as Month08, -fa.Month09*aa.AllocationPercentage as Month09, -fa.Month10*aa.AllocationPercentage as Month10, -fa.Month11*aa.AllocationPercentage as Month11, -fa.Month12*aa.AllocationPercentage as Month12, -fa.Total*aa.AllocationPercentage as Total from [clientob].[FactAccount] fa inner join [ob].[DimDepartmentalBudget] db on fa.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [clientob].[FactAllocationAccountMapping] aa on db.DepartmentID=aa.DepartmentSourceID and fa.AccountID=aa.AccountSourceID inner join [ob].[DimOBAllocation] dm on aa.OBAllocationID=dm.OBAllocationID -- CID 10 inner join [ob].[DimDepartmentalBudget] db2 on db2.DepartmentID=aa.DepartmentID where TimeClassID=2 and FiscalYearID=(select Setting+1 from [dbo].[DBSetting] where Name='OB_Current_Year') /*** CID9 Start****************************************************************/ and fa.UnitTypeID=34 /*** CID9 END******************************************************************/ and fa.Total<>0 and aa.IsDeleted=0 /*** CI4 Start - If reverse department is not specified, don't do anything ***/ and aa.DepartmentID<>0 /*** CI4 END******************************************************************/ UNION ALL --Account Mapping (Direct) select aa.OBAllocationID, dm.ExecutionOrder, -- CID 10 fa.DepartmentalBudgetID as DepartmentalBudgetSourceID, aa.DepartmentSourceID, aa.AccountSourceID, db2.DepartmentalBudgetID as DepartmentalBudgetTargetID, aa.DepartmentTargetID, aa.AccountTargetID, fa.FiscalYearID, fa.TimeClassId, fa.UnitTypeID, fa.DataTypeID, 0 as isReverse, aa.AllocationPercentage, fa.Month01*aa.AllocationPercentage as Month01, fa.Month02*aa.AllocationPercentage as Month02, fa.Month03*aa.AllocationPercentage as Month03, fa.Month04*aa.AllocationPercentage as Month04, fa.Month05*aa.AllocationPercentage as Month05, fa.Month06*aa.AllocationPercentage as Month06, fa.Month07*aa.AllocationPercentage as Month07, fa.Month08*aa.AllocationPercentage as Month08, fa.Month09*aa.AllocationPercentage as Month09, fa.Month10*aa.AllocationPercentage as Month10, fa.Month11*aa.AllocationPercentage as Month11, fa.Month12*aa.AllocationPercentage as Month12, fa.Total*aa.AllocationPercentage as Total from [clientob].[FactAccount] fa inner join [ob].[DimDepartmentalBudget] db on fa.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [clientob].[FactAllocationAccountMapping] aa on db.DepartmentID=aa.DepartmentSourceID and fa.AccountID=aa.AccountSourceID inner join [ob].[DimOBAllocation] dm on aa.OBAllocationID=dm.OBAllocationID -- CID 10 inner join [ob].[DimDepartmentalBudget] db2 on db2.DepartmentID=aa.DepartmentTargetID where TimeClassID=2 and FiscalYearID=(select Setting+1 from [dbo].[DBSetting] where Name='OB_Current_Year') /*** CID9 Start****************************************************************/ and fa.UnitTypeID=34 /*** CID9 END******************************************************************/ and fa.Total<>0 and aa.IsDeleted=0 UNION ALL --Department Mapping (Reverse) select da.OBAllocationID, dm.ExecutionOrder, -- CID 10 fa.DepartmentalBudgetID as DepartmentalBudgetSourceID, da.DepartmentSourceID, fa.AccountID as AccountSourceID, db2.DepartmentalBudgetID as DepartmentalBudgetTargetID, da.DepartmentID as DepartmentTargetID, /*** START CID 3 ***********************************************/ ra.AccountID as AccountTargetID, /*** END CID 3 *************************************************/ fa.FiscalYearID, fa.TimeClassId, fa.UnitTypeID, fa.DataTypeID, 1 as isReverse, -da.AllocationPercentage as AllocationPercentage, -fa.Month01*da.AllocationPercentage as Month01, -fa.Month02*da.AllocationPercentage as Month02, -fa.Month03*da.AllocationPercentage as Month03, -fa.Month04*da.AllocationPercentage as Month04, -fa.Month05*da.AllocationPercentage as Month05, -fa.Month06*da.AllocationPercentage as Month06, -fa.Month07*da.AllocationPercentage as Month07, -fa.Month08*da.AllocationPercentage as Month08, -fa.Month09*da.AllocationPercentage as Month09, -fa.Month10*da.AllocationPercentage as Month10, -fa.Month11*da.AllocationPercentage as Month11, -fa.Month12*da.AllocationPercentage as Month12, -fa.Total*da.AllocationPercentage as Total from [clientob].[FactAccount] fa inner join [ob].[DimDepartmentalBudget] db on fa.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [clientob].[FactAllocationDepartmentMapping] da on db.DepartmentID=da.DepartmentSourceID inner join [ob].[DimOBAllocation] dm on da.OBAllocationID=dm.OBAllocationID -- CID 10 inner join [ob].[DimDepartmentalBudget] db2 on db2.DepartmentID=da.DepartmentID inner join [fw].[DimAccount] acc on fa.AccountID=acc.AccountID /*** START CID 3 ***********************************************/ inner join [fw].[DimAccount] ra on ra.AccountID= case when da.AccountID=0 then fa.AccountID else da.AccountID end /*** END CID 3 *************************************************/ inner join [clientob].[FactAllocationDepartmentMappingFilter] daf on daf.OBAllocationID=da.OBAllocationID and daf.FinancialReportingID=acc.OBDollarsFinancialReportingID where fa.TimeClassID=2 and fa.FiscalYearID=(select Setting+1 from [dbo].[DBSetting] where Name='OB_Current_Year') and fa.Total<>0 /*** CID9 Start****************************************************************/ and fa.UnitTypeID=34 /*** CID9 END******************************************************************/ and da.IsDeleted=0 /*** CI4 Start - If reverse department is not specified, don't do anything ***/ and da.DepartmentID<>0 /*** CI4 END******************************************************************/ /*** CID8 Start****************************************************************/ and daf.IsDeleted=0 /*** CID8 END******************************************************************/ UNION ALL --Department Mapping (Direct) select da.OBAllocationID, dm.ExecutionOrder, fa.DepartmentalBudgetID as DepartmentalBudgetSourceID, da.DepartmentSourceID, fa.AccountID as AccountSourceID, db2.DepartmentalBudgetID as DepartmentalBudgetTargetID, da.DepartmentTargetID, /*** START CID 3 ***********************************************/ ta.AccountID as AccountTargetID, /*** END CID 3 *************************************************/ fa.FiscalYearID, fa.TimeClassId, fa.UnitTypeID, fa.DataTypeID, 0 as isReverse, da.AllocationPercentage, fa.Month01*da.AllocationPercentage as Month01, fa.Month02*da.AllocationPercentage as Month02, fa.Month03*da.AllocationPercentage as Month03, fa.Month04*da.AllocationPercentage as Month04, fa.Month05*da.AllocationPercentage as Month05, fa.Month06*da.AllocationPercentage as Month06, fa.Month07*da.AllocationPercentage as Month07, fa.Month08*da.AllocationPercentage as Month08, fa.Month09*da.AllocationPercentage as Month09, fa.Month10*da.AllocationPercentage as Month10, fa.Month11*da.AllocationPercentage as Month11, fa.Month12*da.AllocationPercentage as Month12, fa.Total*da.AllocationPercentage as Total from [clientob].[FactAccount] fa inner join [ob].[DimDepartmentalBudget] db on fa.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [clientob].[FactAllocationDepartmentMapping] da on db.DepartmentID=da.DepartmentSourceID inner join [ob].[DimOBAllocation] dm on da.OBAllocationID=dm.OBAllocationID -- CID 10 inner join [ob].[DimDepartmentalBudget] db2 on db2.DepartmentID=da.DepartmentTargetID inner join [fw].[DimAccount] acc on fa.AccountID=acc.AccountID /*** START CID 3 ***********************************************/ inner join [fw].[DimAccount] ta on ta.AccountID= case when da.AccountTargetID=0 then fa.AccountID else da.AccountTargetID end /*** END CID 3 *************************************************/ inner join [clientob].[FactAllocationDepartmentMappingFilter] daf on daf.OBAllocationID=da.OBAllocationID and daf.FinancialReportingID=acc.OBDollarsFinancialReportingID where fa.TimeClassID=2 and fa.FiscalYearID=(select Setting+1 from [dbo].[DBSetting] where Name='OB_Current_Year') and fa.Total<>0 /*** CID9 Start****************************************************************/ and fa.UnitTypeID=34 /*** CID9 END******************************************************************/ and da.IsDeleted=0 /*** CID8 Start****************************************************************/ and daf.IsDeleted=0 /*** CID8 END******************************************************************/ GO --------------------------------------------- -- ob.viewBudgetPlanStatus create view ob.viewBudgetPlanStatus as select d.DepartmentID, d.IsOB as IsDepartmentOB, d.IsActive as IsDepartmentActive, d.IsVariable as IsDepartmentVariable, cast(max(case when b.MemberGUID is null or p.PlanGUID is null then 0 else 1 end) as bit) as IsBudgetCreated, cast(max(case when isnull(mt.Name, 'n/a') = 'GM Blank' then 0 else 1 end) as bit) as IsBudgetActive from fw.DimDepartment d left join ob.DimDepartmentalBudget b on d.DepartmentID = b.DepartmentID left join dbo.XPlan p on p.PlanGUID = b.MemberGUID and p.IsDeletedPlan = 0 left join dbo.EMFModelTemplate mt on mt.ModelTemplateGUID = p.ModelTemplateGUID group by d.DepartmentID, d.IsOB, d.IsActive, d.IsVariable GO --------------------------------------------- -- ob.viewDimAccountPH CREATE VIEW [ob].[viewDimAccountPH] AS SELECT grp5927549978BB41F1B481CF9F6F7BFE67.[AccountPHID] ,grp5927549978BB41F1B481CF9F6F7BFE67.[Name] ,grp5927549978BB41F1B481CF9F6F7BFE67.[MemberGUID] , [grp5927549978BB41F1B481CF9F6F7BFE67].[Version], [grp5927549978BB41F1B481CF9F6F7BFE67].[HistoryItemGUID]FROM [ob].[DimAccountPH] grp5927549978BB41F1B481CF9F6F7BFE67 (readuncommitted) GO --------------------------------------------- -- ob.viewDimAdjustmentCategory --Last Modified 1/6/2017 4:38 PM CREATE VIEW [ob].[viewDimAdjustmentCategory] AS SELECT grp0A9648AA978144AAA3E1A68E63558EDE.[AdjustmentCategoryID] ,grp0A9648AA978144AAA3E1A68E63558EDE.[Name] ,grp0A9648AA978144AAA3E1A68E63558EDE.[Description] ,grp0A9648AA978144AAA3E1A68E63558EDE.[AdjustmentCategoryRollup] ,grp0A9648AA978144AAA3E1A68E63558EDE.[BudgetConfigGUID] ,grp0A9648AA978144AAA3E1A68E63558EDE.[TransactionID] ,grp0A9648AA978144AAA3E1A68E63558EDE.[MemberGUID] ,grp0A9648AA978144AAA3E1A68E63558EDE.[HistoryItemGUID] FROM [ob].[DimAdjustmentCategory] grp0A9648AA978144AAA3E1A68E63558EDE (readuncommitted) GO --------------------------------------------- -- ob.viewDimDepartmentalBudget CREATE VIEW [ob].[viewDimDepartmentalBudget] AS SELECT [FrameworkID], COALESCE([Name],'') as [Name], [LootID], [DepartmentalBudgetID], [DepartmentID], COALESCE([DepartmentName],'') as [DepartmentName], [SystemID], COALESCE([System],'') as [System], [SystemSortOrder], [EntityID], COALESCE([Entity],'') as [Entity], [EntitySortOrder], [DepartmentRollup1ID], COALESCE([DepartmentRollup1],'') as [DepartmentRollup1], [DepartmentRollup1SortOrder], [DepartmentRollup2ID], COALESCE([DepartmentRollup2],'') as [DepartmentRollup2], [DepartmentRollup2SortOrder], [DepartmentRollup3ID], COALESCE([DepartmentRollup3],'') as [DepartmentRollup3], [DepartmentRollup3SortOrder], [DepartmentRollup4ID], [GMTestFWName], [GMTestFWDateCreated], COALESCE([DepartmentRollup4],'') as [DepartmentRollup4], [DepartmentRollup4SortOrder], [BaseYear], [DepartmentRollup5ID], COALESCE([DepartmentRollup5],'') as [DepartmentRollup5], [Director], [DepartmentRollup5SortOrder], [DepartmentRollup6ID], [HasAttachments], [LastModified], COALESCE([DepartmentRollup6],'') as [DepartmentRollup6], [DepartmentRollup6SortOrder], [Manager], [MonthsLoaded], [ResearchDepartmentCategoryID], COALESCE([ResearchDepartmentCategoryName],'') as [ResearchDepartmentCategoryName], [OBActivePlans], [OpenDate], [ResearchDepartmentCategorySortOrder], [IsVariable], [MemberGUID], [VicePresident], [HistoryItemGUID], [BaseYear1], [BudgetStatus], [WorkedHrsperUOSProjection], [WorkedHrsperUOSBudget], [FTEApprovalOverride], [HourType], [TargetType], [Admin], [Finance], [ContractLaborSkillMix], [StartYear], [NumberofYears], [VariableProjectionMethod], [HideNotSpecified], [HourTypeFixed], [MRVicePresident], [MRDirector], [MRManager], [ReadOnly], [WriteDeny], [EntityDefaultWorkWeekID], [OBDirector], [OBManager], [OBVicePresident], [SecureGroupID], [VariablehrsperUOS], [VariablehrsperUOStarget], [BudgetedFixedFTEs], [BudgetedVariableFTEs], [UOSchangeyy], [ExcessofRevandExpchangeyy], [VariablehrsperUOSActualYTD], [VariablehrsperUOStargetCurrentYr], COALESCE([DepartmentCode],'') as [DepartmentCode] ,[Version] FROM [ob].[DimDepartmentalBudget] (readuncommitted) GO --------------------------------------------- -- ob.viewDimDepartmentalBudgetPH_auto CREATE VIEW [ob].[viewDimDepartmentalBudgetPH_auto] AS SELECT grpD3537B4CDBAB409B91F013D18B84C17C.[MemberGUID] ,grpD3537B4CDBAB409B91F013D18B84C17C.[DepartmentalBudgetPHID] ,grpD3537B4CDBAB409B91F013D18B84C17C.[Name] ,grpD3537B4CDBAB409B91F013D18B84C17C.[IsConstant] , [grpD3537B4CDBAB409B91F013D18B84C17C].[Version], [grpD3537B4CDBAB409B91F013D18B84C17C].[HistoryItemGUID]FROM [ob].[DimDepartmentalBudgetPH] grpD3537B4CDBAB409B91F013D18B84C17C (readuncommitted) GO --------------------------------------------- -- ob.viewDimDepartmentalBudget_source CREATE VIEW [ob].[viewDimDepartmentalBudget_source] AS SELECT grp3321230B396444078881D601D47C5275.[DepartmentalBudgetID] ,grp3321230B396444078881D601D47C5275.[MemberGUID] ,grp3321230B396444078881D601D47C5275.[HistoryItemGUID] ,2 AS [FrameworkID] ,ISNULL([DEPT].[Name], 'Not Specified') as [Name] ,ISNULL([DEPT].[Name], 'Not Specified') as [DepartmentName] ,ISNULL([DEPT].[SystemID], 0) as [SystemID] ,ISNULL([DEPT].[System], 'Not Specified') as [System] ,ISNULL([DEPT].[SystemSortOrder], 0) as [SystemSortOrder] ,ISNULL([DEPT].[EntityID], 0) as [EntityID] ,ISNULL([DEPT].[Entity], 'Not Specified') as [Entity] ,ISNULL([DEPT].[EntitySortOrder], 0) as [EntitySortOrder] ,ISNULL([DEPT].[DepartmentRollup1ID], 0) as [DepartmentRollup1ID] ,ISNULL([DEPT].[DepartmentRollup1], 'Not Specified') as [DepartmentRollup1] ,ISNULL([DEPT].[DepartmentRollup1SortOrder], 0) as [DepartmentRollup1SortOrder] ,ISNULL([DEPT].[DepartmentRollup2ID], 0) as [DepartmentRollup2ID] ,ISNULL([DEPT].[DepartmentRollup2], 'Not Specified') as [DepartmentRollup2] ,ISNULL([DEPT].[DepartmentRollup2SortOrder], 0) as [DepartmentRollup2SortOrder] ,ISNULL([DEPT].[DepartmentRollup3ID], 0) as [DepartmentRollup3ID] ,ISNULL([DEPT].[DepartmentRollup3], 'Not Specified') as [DepartmentRollup3] ,ISNULL([DEPT].[DepartmentRollup3SortOrder], 0) as [DepartmentRollup3SortOrder] ,ISNULL([DEPT].[DepartmentRollup4ID], 0) as [DepartmentRollup4ID] ,ISNULL([DEPT].[DepartmentRollup4], 'Not Specified') as [DepartmentRollup4] ,ISNULL([DEPT].[DepartmentRollup4SortOrder], 0) as [DepartmentRollup4SortOrder] ,ISNULL([DEPT].[DepartmentRollup5ID], 0) as [DepartmentRollup5ID] ,ISNULL([DEPT].[DepartmentRollup5], 'Not Specified') as [DepartmentRollup5] ,ISNULL([DEPT].[DepartmentRollup5SortOrder], 0) as [DepartmentRollup5SortOrder] ,ISNULL([DEPT].[DepartmentRollup6ID], 0) as [DepartmentRollup6ID] ,ISNULL([DEPT].[DepartmentRollup6], 'Not Specified') as [DepartmentRollup6] ,ISNULL([DEPT].[DepartmentRollup6SortOrder], 0) as [DepartmentRollup6SortOrder] ,ISNULL([DEPT].[ResearchDepartmentCategoryID], 0) as [ResearchDepartmentCategoryID] ,ISNULL([DEPT].[ResearchDepartmentCategoryName], 'Not Specified') as [ResearchDepartmentCategoryName] ,ISNULL([DEPT].[ResearchDepartmentCategorySortOrder], 0) as [ResearchDepartmentCategorySortOrder] ,ISNULL([DEPT].[IsVariable], 0) as [IsVariable] ,ISNULL([DEPT].[WorkWeekID], 0) as [EntityDefaultWorkWeekID] ,ISNULL([DEPT].[SecureGroupID], 0) as [SecureGroupID] ,ISNULL([DEPT].[DepartmentCode], 'Not Specified') as [DepartmentCode] ,ISNULL([DimXP].[PlanID], 0) as [LootID] , [grp3321230B396444078881D601D47C5275].[Version]FROM [ob].[DimDepartmentalBudget] grp3321230B396444078881D601D47C5275 (readuncommitted) INNER JOIN [fw].[viewDimDepartment] [DEPT] on [DEPT].[DepartmentID] = [grp3321230B396444078881D601D47C5275].[DepartmentID] INNER JOIN [fw].[viewDimXPlan_auto] [DimXP] on [DimXP].[MemberGUID] = [grp3321230B396444078881D601D47C5275].[MemberGUID] GO --------------------------------------------- -- ob.viewDimExceptions CREATE VIEW [ob].[viewDimExceptions] AS SELECT grpE6761F5FBF9A400B9432BFA871B53805.[OBExceptionsID] ,grpE6761F5FBF9A400B9432BFA871B53805.[Name] ,grpE6761F5FBF9A400B9432BFA871B53805.[Severity] ,grpE6761F5FBF9A400B9432BFA871B53805.[Model] ,grpE6761F5FBF9A400B9432BFA871B53805.[SortOrder] ,grpE6761F5FBF9A400B9432BFA871B53805.[ViewName] ,grpE6761F5FBF9A400B9432BFA871B53805.[TransactionID] ,grpE6761F5FBF9A400B9432BFA871B53805.[MemberGUID] ,grpE6761F5FBF9A400B9432BFA871B53805.[HistoryItemGUID] ,grpE6761F5FBF9A400B9432BFA871B53805.[Description] ,grpE6761F5FBF9A400B9432BFA871B53805.[Resolution] ,coalesce(grpE6761F5FBF9A400B9432BFA871B53805.[FullName],'') as [FullName] FROM [ob].[DimOBExceptions] grpE6761F5FBF9A400B9432BFA871B53805 (readuncommitted) GO --------------------------------------------- -- ob.viewDimFinancialReporting CREATE VIEW [ob].[viewDimFinancialReporting] AS SELECT [FinancialReportingID], [Statement], [Section], [LineName], COALESCE([Name],'') as [Name], [IsMappable], [SortOrder], [ConsolidatedFinancialReportingID], [ConsolidatedIsInverted], COALESCE([StatementMappabilityFilterParameter],'') as [StatementMappabilityFilterParameter], COALESCE([ConsolidatedFinancialReporting],'') as [ConsolidatedFinancialReporting], [ConsolidatedFinancialReportingSortOrder], [ConsolidatedInversion], [DisplayFormat], [IsExpense], [IsRequired], [IsVolume], [IsFTERollup], [IsEditable], [MemberGUID], [HistoryItemGUID], COALESCE([ProjectionMethod],'') as [ProjectionMethod], COALESCE([SpreadMethod],'') as [SpreadMethod] FROM [ob].[DimFinancialReporting] (readuncommitted) GO --------------------------------------------- -- ob.viewDimFinancialReportingPH CREATE VIEW [ob].[viewDimFinancialReportingPH] AS SELECT grp6BAC2BD76D3C4C249EA077E4A3B60870.[FinancialReportingPHID] ,grp6BAC2BD76D3C4C249EA077E4A3B60870.[Name] ,grp6BAC2BD76D3C4C249EA077E4A3B60870.[MemberGUID] ,grp6BAC2BD76D3C4C249EA077E4A3B60870.[HistoryItemGUID] FROM [ob].[DimFinancialReportingPH] grp6BAC2BD76D3C4C249EA077E4A3B60870 (readuncommitted) GO --------------------------------------------- -- ob.viewDimFinancialReporting_source CREATE VIEW [ob].[viewDimFinancialReporting_source] AS SELECT grp54CF5FA828E84C28B9227B92B8090EEE.[FinancialReportingID] ,grp54CF5FA828E84C28B9227B92B8090EEE.[ConsolidatedInversion] ,grp54CF5FA828E84C28B9227B92B8090EEE.[MemberGUID] ,grp54CF5FA828E84C28B9227B92B8090EEE.[HistoryItemGUID] ,grp54CF5FA828E84C28B9227B92B8090EEE.[ProjectionMethod] ,grp54CF5FA828E84C28B9227B92B8090EEE.[SpreadMethod] ,[grp54CF5FA828E84C28B9227B92B8090EEE].[Statement] + ' - ' + [grp54CF5FA828E84C28B9227B92B8090EEE].[Section] + ' - ' + [grp54CF5FA828E84C28B9227B92B8090EEE].[LineName] AS [Name] ,[grp54CF5FA828E84C28B9227B92B8090EEE].[Statement] + ' - ' + [grp54CF5FA828E84C28B9227B92B8090EEE].[IsMappable] AS [StatementMappabilityFilterParameter] ,ISNULL([CONSFINREP].[Name], 'Not Specified') as [ConsolidatedFinancialReporting] ,ISNULL([CONSFINREP].[SortOrder], 0) as [ConsolidatedFinancialReportingSortOrder] FROM [ob].[DimFinancialReporting] grp54CF5FA828E84C28B9227B92B8090EEE (readuncommitted) INNER JOIN [fw].[viewDimConsolidatedFinancialReporting] [CONSFINREP] on [CONSFINREP].[ConsolidatedFinancialReportingID] = [grp54CF5FA828E84C28B9227B92B8090EEE].[ConsolidatedFinancialReportingID] GO --------------------------------------------- -- ob.viewDimGlobalStatisticRollup CREATE VIEW [ob].[viewDimGlobalStatisticRollup] AS SELECT grp720F3737CE7D4C0691B695FFCF7BA929.[StatisticRollupID] ,grp720F3737CE7D4C0691B695FFCF7BA929.[Name] ,grp720F3737CE7D4C0691B695FFCF7BA929.[MemberGUID] FROM [ob].[DimGlobalStatisticRollup] grp720F3737CE7D4C0691B695FFCF7BA929 (readuncommitted) GO --------------------------------------------- -- ob.viewDimGlobalStatisticsPlanPH CREATE VIEW [ob].[viewDimGlobalStatisticsPlanPH] AS SELECT grpC6B7D58A47914B2BB0BDDE89ABBD2900.[OBGlobalStatsPlanPHID] ,grpC6B7D58A47914B2BB0BDDE89ABBD2900.[Name] ,grpC6B7D58A47914B2BB0BDDE89ABBD2900.[MemberGUID] ,grpC6B7D58A47914B2BB0BDDE89ABBD2900.[HistoryItemGUID] FROM [ob].[DimGlobalStatisticsPlanPH] grpC6B7D58A47914B2BB0BDDE89ABBD2900 (readuncommitted) GO --------------------------------------------- -- ob.viewDimOBAllocation --Last Modified 2/26/2016 5:46 PM CREATE VIEW [ob].[viewDimOBAllocation] AS SELECT grpF4D7BA87C3AB4F3DAB5E69F8990EBBFB.[OBAllocationID] ,grpF4D7BA87C3AB4F3DAB5E69F8990EBBFB.[Name] ,grpF4D7BA87C3AB4F3DAB5E69F8990EBBFB.[Type] ,grpF4D7BA87C3AB4F3DAB5E69F8990EBBFB.[OBAllocationBasisID] ,grpF4D7BA87C3AB4F3DAB5E69F8990EBBFB.[AlwaysUseBasis] ,grpF4D7BA87C3AB4F3DAB5E69F8990EBBFB.[TransactionID] ,grpF4D7BA87C3AB4F3DAB5E69F8990EBBFB.[MemberGUID] ,grpF4D7BA87C3AB4F3DAB5E69F8990EBBFB.[HistoryItemGUID] ,grpF4D7BA87C3AB4F3DAB5E69F8990EBBFB.[ExecutionOrder] ,ISNULL([OBALLOCATIONBASIS].[Name], 'Not Specified') as [AllocationBasisName] FROM [ob].[DimOBAllocation] grpF4D7BA87C3AB4F3DAB5E69F8990EBBFB (readuncommitted) INNER JOIN [ob].[viewDimOBAllocationBasis] [OBALLOCATIONBASIS] on [OBALLOCATIONBASIS].[OBAllocationBasisID] = [grpF4D7BA87C3AB4F3DAB5E69F8990EBBFB].[OBAllocationBasisID] GO --------------------------------------------- -- ob.viewDimOBAllocationBasis CREATE VIEW [ob].[viewDimOBAllocationBasis] AS SELECT grpC089980B2C6046C1842FCC918B7F4A76.[OBAllocationBasisID] ,grpC089980B2C6046C1842FCC918B7F4A76.[Name] ,grpC089980B2C6046C1842FCC918B7F4A76.[TransactionID] ,grpC089980B2C6046C1842FCC918B7F4A76.[OBForecastDetailID] ,grpC089980B2C6046C1842FCC918B7F4A76.[MemberGUID] ,grpC089980B2C6046C1842FCC918B7F4A76.[HistoryItemGUID] ,grpC089980B2C6046C1842FCC918B7F4A76.[Category] FROM [ob].[DimOBAllocationBasis] grpC089980B2C6046C1842FCC918B7F4A76 (readuncommitted) GO --------------------------------------------- -- ob.viewDimOBForecastDetail CREATE VIEW [ob].[viewDimOBForecastDetail] AS SELECT [OBForecastDetailID], [Category], [Name], [SortOrder], [UnitTypeID], COALESCE([UnitType],'') as [UnitType], [DriverID], COALESCE([Driver],'') as [Driver], [IsSalaryDriver], [IsRevenueDriver], [AccountID], COALESCE([Account],'') as [Account], [SecondaryAccountID], COALESCE([SecondaryAccount],'') as [SecondaryAccount], [TransactionID], [MemberGUID], [HistoryItemGUID], [Code], [ForecastDetailRollup], [VolumeTarget], [IsMROnly], [IsVariable] FROM [ob].[DimOBForecastDetail] (readuncommitted) GO --------------------------------------------- -- ob.viewDimOBForecastDetailDriver CREATE VIEW [ob].[viewDimOBForecastDetailDriver] as select OBForecastDetailID as OBForecastDetailDriverSelectionID, Name, MemberGUID, HistoryItemGUID, TransactionID from [ob].[DimOBForecastDetail] GO --------------------------------------------- -- ob.viewDimOBForecastDetailDriver_auto CREATE VIEW [ob].[viewDimOBForecastDetailDriver_auto] AS SELECT grp95352FFAD8B04CA0A70AE8BBCB6CF67D.[OBForecastDetailDriverSelectionID] ,grp95352FFAD8B04CA0A70AE8BBCB6CF67D.[Name] ,grp95352FFAD8B04CA0A70AE8BBCB6CF67D.[HistoryItemGUID] ,grp95352FFAD8B04CA0A70AE8BBCB6CF67D.[MemberGUID] ,grp95352FFAD8B04CA0A70AE8BBCB6CF67D.[TransactionID] FROM [ob].[viewDimOBForecastDetailDriver] grp95352FFAD8B04CA0A70AE8BBCB6CF67D GO --------------------------------------------- -- ob.viewDimOBForecastDetailPH CREATE VIEW [ob].[viewDimOBForecastDetailPH] AS SELECT grp73D1EC9F68144CC1BCDC23C23514DA13.[OBForecastDetailPHID] ,grp73D1EC9F68144CC1BCDC23C23514DA13.[Name] ,grp73D1EC9F68144CC1BCDC23C23514DA13.[MemberGUID] ,grp73D1EC9F68144CC1BCDC23C23514DA13.[HistoryItemGUID] ,grp73D1EC9F68144CC1BCDC23C23514DA13.[TransactionID] FROM [ob].[DimOBForecastDetailPH] grp73D1EC9F68144CC1BCDC23C23514DA13 (readuncommitted) GO --------------------------------------------- -- ob.viewDimOBForecastDetail_source CREATE VIEW [ob].[viewDimOBForecastDetail_source] AS SELECT grpEEE051AAC24A4A73A3160CBD21350A21.[OBForecastDetailID] ,grpEEE051AAC24A4A73A3160CBD21350A21.[TransactionID] ,grpEEE051AAC24A4A73A3160CBD21350A21.[MemberGUID] ,grpEEE051AAC24A4A73A3160CBD21350A21.[HistoryItemGUID] ,ISNULL([UNITTYPE].[Name], 'Not Specified') as [UnitType] ,ISNULL([viewDimOBFor].[Name], 'Not Specified') as [Driver] ,ISNULL([ACCT].[Name], 'Not Specified') as [Account] ,ISNULL([ACCT_1].[Name], 'Not Specified') as [SecondaryAccount] FROM [ob].[DimOBForecastDetail] grpEEE051AAC24A4A73A3160CBD21350A21 (readuncommitted) INNER JOIN [fw].[viewDimUnitType] [UNITTYPE] on [UNITTYPE].[UnitTypeID] = [grpEEE051AAC24A4A73A3160CBD21350A21].[UnitTypeID] INNER JOIN [ob].[viewDimOBForecastDetailDriver_auto] [viewDimOBFor] on [viewDimOBFor].[OBForecastDetailDriverSelectionID] = [grpEEE051AAC24A4A73A3160CBD21350A21].[DriverID] INNER JOIN [fw].[viewDimAccount] [ACCT] on [ACCT].[AccountID] = [grpEEE051AAC24A4A73A3160CBD21350A21].[AccountID] INNER JOIN [fw].[viewDimAccount] [ACCT_1] on [ACCT_1].[AccountID] = [grpEEE051AAC24A4A73A3160CBD21350A21].[SecondaryAccountID] GO --------------------------------------------- -- ob.viewDimOBGlobalStatistics CREATE VIEW [ob].[viewDimOBGlobalStatistics] AS SELECT COALESCE([Name],'') as [Name], [OBGlobalStatisticID], [TransactionID], [MemberGUID], [HistoryItemGUID], COALESCE([AccountDescription],'') as [AccountDescription], COALESCE([AccountCode],'') as [AccountCode], [AccountID], COALESCE([DepartmentCode],'') as [DepartmentCode], COALESCE([Account],'') as [Account], [DepartmentID], COALESCE([Department],'') as [Department], [OBForecastDetailID], COALESCE([OBForecastDetail],'') as [OBForecastDetail], [LOSLinkID], COALESCE([LOSLink],'') as [LOSLink], COALESCE([PatientClass],'') as [PatientClass], COALESCE([OBPayor],'') as [OBPayor], COALESCE([OBPayorGroup],'') as [OBPayorGroup], COALESCE([OBUnitsFinancialReportingName],'') as [OBUnitsFinancialReportingName], COALESCE([OBUnitsFinancialReportingLineName],'') as [OBUnitsFinancialReportingLineName], COALESCE([FillinSection],'') as [FillinSection] FROM [ob].[DimOBGlobalStatistics] (readuncommitted) GO --------------------------------------------- -- ob.viewDimOBGlobalStatisticsPH CREATE VIEW [ob].[viewDimOBGlobalStatisticsPH] AS SELECT grp859651793B9E4DC5A841C41AD656A89C.[OBGlobalStatisticsPHID] ,grp859651793B9E4DC5A841C41AD656A89C.[Name] ,grp859651793B9E4DC5A841C41AD656A89C.[MemberGUID] ,grp859651793B9E4DC5A841C41AD656A89C.[HistoryItemGUID] ,grp859651793B9E4DC5A841C41AD656A89C.[TransactionID] FROM [ob].[DimOBGlobalStatisticsPH] grp859651793B9E4DC5A841C41AD656A89C (readuncommitted) GO --------------------------------------------- -- ob.viewDimOBGlobalStatisticsPlan CREATE VIEW [ob].[viewDimOBGlobalStatisticsPlan] AS SELECT [OBGlobalStatisticsPlanID], [Name], [EntityID], COALESCE([Entity],'') as [Entity], [LootID], [IsDeleted], [HistoryItemGUID], [MemberGUID], [TransactionID], [SecureGroupID], [BaseYear], [MonthsLoaded], [StartYear], [NumberofYears], [FrameworkID] FROM [ob].[DimOBGlobalStatisticsPlan] (readuncommitted) GO --------------------------------------------- -- ob.viewDimOBGlobalStatisticsPlan_source CREATE VIEW [ob].[viewDimOBGlobalStatisticsPlan_source] AS SELECT grp5CAD0D676A7C4C8D80A34AAB99E6C79D.[OBGlobalStatisticsPlanID] ,grp5CAD0D676A7C4C8D80A34AAB99E6C79D.[HistoryItemGUID] ,grp5CAD0D676A7C4C8D80A34AAB99E6C79D.[MemberGUID] ,grp5CAD0D676A7C4C8D80A34AAB99E6C79D.[TransactionID] ,grp5CAD0D676A7C4C8D80A34AAB99E6C79D.[SecureGroupID] ,2 AS [FrameworkID] ,ISNULL([ENT].[Name], 'Not Specified') as [Entity] ,ISNULL([DimXP].[PlanID], 0) as [LootID] ,ISNULL([DimXP].[IsDeleted], 0) as [IsDeleted] FROM [ob].[DimOBGlobalStatisticsPlan] grp5CAD0D676A7C4C8D80A34AAB99E6C79D (readuncommitted) INNER JOIN [fw].[viewDimEntity] [ENT] on [ENT].[EntityID] = [grp5CAD0D676A7C4C8D80A34AAB99E6C79D].[EntityID] INNER JOIN [fw].[viewDimXPlan_auto] [DimXP] on [DimXP].[MemberGUID] = [grp5CAD0D676A7C4C8D80A34AAB99E6C79D].[MemberGUID] GO --------------------------------------------- -- ob.viewDimOBGlobalStatistics_source CREATE VIEW [ob].[viewDimOBGlobalStatistics_source] AS SELECT grpEDB4F13AA36044A48FFB77C37AFA87F5.[Name] ,grpEDB4F13AA36044A48FFB77C37AFA87F5.[OBGlobalStatisticID] ,grpEDB4F13AA36044A48FFB77C37AFA87F5.[TransactionID] ,grpEDB4F13AA36044A48FFB77C37AFA87F5.[MemberGUID] ,grpEDB4F13AA36044A48FFB77C37AFA87F5.[HistoryItemGUID] ,grpEDB4F13AA36044A48FFB77C37AFA87F5.[FillinSection] ,ISNULL([ACCT].[Description], 'Not Specified') as [AccountDescription] ,ISNULL([ACCT].[AccountCode], 'Not Specified') as [AccountCode] ,ISNULL([ACCT].[Name], 'Not Specified') as [Account] ,ISNULL([ACCT].[PatientClass], 'Not Specified') as [PatientClass] ,ISNULL([ACCT].[OBPayor], 'Not Specified') as [OBPayor] ,ISNULL([ACCT].[OBPayorGroup], 'Not Specified') as [OBPayorGroup] ,ISNULL([ACCT].[OBUnitsFinancialReporting], 'Not Specified') as [OBUnitsFinancialReportingName] ,ISNULL([ACCT].[OBUnitsFinancialReportingLineName], 'Not Specified') as [OBUnitsFinancialReportingLineName] ,ISNULL([ACCT_1].[Name], 'Not Specified') as [LOSLink] ,ISNULL([DEPT].[DepartmentCode], 'Not Specified') as [DepartmentCode] ,ISNULL([DEPT].[Name], 'Not Specified') as [Department] ,ISNULL([OBFORECASTDETAIL].[Name], 'Not Specified') as [OBForecastDetail] FROM [ob].[DimOBGlobalStatistics] grpEDB4F13AA36044A48FFB77C37AFA87F5 (readuncommitted) INNER JOIN [fw].[viewDimAccount] [ACCT] on [ACCT].[AccountID] = [grpEDB4F13AA36044A48FFB77C37AFA87F5].[AccountID] INNER JOIN [fw].[viewDimAccount] [ACCT_1] on [ACCT_1].[AccountID] = [grpEDB4F13AA36044A48FFB77C37AFA87F5].[LOSLinkID] INNER JOIN [fw].[viewDimDepartment] [DEPT] on [DEPT].[DepartmentID] = [grpEDB4F13AA36044A48FFB77C37AFA87F5].[DepartmentID] INNER JOIN [ob].[viewDimOBForecastDetail] [OBFORECASTDETAIL] on [OBFORECASTDETAIL].[OBForecastDetailID] = [grpEDB4F13AA36044A48FFB77C37AFA87F5].[OBForecastDetailID] GO --------------------------------------------- -- ob.viewDimOBReimbursementPlan CREATE VIEW [ob].[viewDimOBReimbursementPlan] AS SELECT [OBReimbursementPlanID], [Name], [MemberGUID], [HistoryItemGUID], [LootID], [FrameworkID], [EntityID], COALESCE([Entity],'') as [Entity], [EntitySortOrder], [NameCalc], [BaseYear], [StartYear], [NumberofYears], [SecureGroupID], [MonthsLoaded] FROM [ob].[DimOBReimbursementPlan] (readuncommitted) GO --------------------------------------------- -- ob.viewDimOBReimbursementPlanPH CREATE VIEW [ob].[viewDimOBReimbursementPlanPH] AS SELECT grpAC3B5D29356247F5BDDFCFC8D09E9F17.[OBReimbursementPlanPHID] ,grpAC3B5D29356247F5BDDFCFC8D09E9F17.[Name] ,grpAC3B5D29356247F5BDDFCFC8D09E9F17.[MemberGUID] ,grpAC3B5D29356247F5BDDFCFC8D09E9F17.[HistoryItemGUID] FROM [ob].[DimOBReimbursementPlanPH] grpAC3B5D29356247F5BDDFCFC8D09E9F17 (readuncommitted) GO --------------------------------------------- -- ob.viewDimOBReimbursementPlan_source CREATE VIEW [ob].[viewDimOBReimbursementPlan_source] AS SELECT grpBCD22BB1EBDC4C07A9DB2AB6AB061F79.[OBReimbursementPlanID] ,grpBCD22BB1EBDC4C07A9DB2AB6AB061F79.[MemberGUID] ,grpBCD22BB1EBDC4C07A9DB2AB6AB061F79.[HistoryItemGUID] ,2 AS [FrameworkID] ,ISNULL([DimXP].[PlanID], 0) as [LootID] ,ISNULL([ENT].[Name], 'Not Specified') as [Entity] ,ISNULL([ENT].[SortOrder], 0) as [EntitySortOrder] ,ISNULL([ENT].[SecureGroupID], 0) as [SecureGroupID] FROM [ob].[DimOBReimbursementPlan] grpBCD22BB1EBDC4C07A9DB2AB6AB061F79 (readuncommitted) INNER JOIN [fw].[viewDimXPlan_auto] [DimXP] on [DimXP].[MemberGUID] = [grpBCD22BB1EBDC4C07A9DB2AB6AB061F79].[MemberGUID] INNER JOIN [fw].[viewDimEntity] [ENT] on [ENT].[EntityID] = [grpBCD22BB1EBDC4C07A9DB2AB6AB061F79].[EntityID] GO --------------------------------------------- -- ob.viewDimOBServiceLinePlan CREATE VIEW [ob].[viewDimOBServiceLinePlan] AS SELECT [OBServiceLinePlanID], [EntityID], [Name], [FrameworkID], [LootID], [IsDeleted], COALESCE([Entity],'') as [Entity], [EntitySortOrder], [SecureGroupID], [TransactionID], [MemberGUID], [HistoryItemGUID], [BaseYear], [MonthsLoaded], [StartYear], [NumberofYears], [InpatientVolumeBudgetYear], [ClinicVolumeBudgetYear], [ClinicVolumeProjectedYear], [EDVolumeBudgetYear], [EDVolumeProjectedYear], [InpatientVolumeProjectedYear], [ObservationVolumeBudgetYear], [ObservationVolumeProjectedYear], [OtherVolumeBudgetYear], [OtherVolumeProjectedYear], [OutpatientVolumeBudgetYear], [OutpatientVolumeProjectedYear] FROM [ob].[DimOBServiceLinePlan] (readuncommitted) GO --------------------------------------------- -- ob.viewDimOBServiceLinePlanPH CREATE VIEW [ob].[viewDimOBServiceLinePlanPH] AS SELECT grpCA35C88C6A9A4080B0FF5FBA968C28A7.[OBServiceLinePlanPHID] ,grpCA35C88C6A9A4080B0FF5FBA968C28A7.[Name] ,grpCA35C88C6A9A4080B0FF5FBA968C28A7.[MemberGUID] ,grpCA35C88C6A9A4080B0FF5FBA968C28A7.[HistoryItemGUID] ,grpCA35C88C6A9A4080B0FF5FBA968C28A7.[TransactionID] FROM [ob].[DimOBServiceLinePlanPH] grpCA35C88C6A9A4080B0FF5FBA968C28A7 (readuncommitted) GO --------------------------------------------- -- ob.viewDimOBServiceLinePlan_source CREATE VIEW [ob].[viewDimOBServiceLinePlan_source] AS SELECT grp69AF13389B5C41B5A4367BD2A516074B.[OBServiceLinePlanID] ,grp69AF13389B5C41B5A4367BD2A516074B.[TransactionID] ,grp69AF13389B5C41B5A4367BD2A516074B.[MemberGUID] ,grp69AF13389B5C41B5A4367BD2A516074B.[HistoryItemGUID] ,2 AS [FrameworkID] ,ISNULL([ENT].[Name], 'Not Specified') as [Entity] ,ISNULL([ENT].[SortOrder], 0) as [EntitySortOrder] ,ISNULL([ENT].[SecureGroupID], 0) as [SecureGroupID] ,ISNULL([DimXP].[PlanID], 0) as [LootID] ,ISNULL([DimXP].[IsDeleted], 0) as [IsDeleted] FROM [ob].[DimOBServiceLinePlan] grp69AF13389B5C41B5A4367BD2A516074B (readuncommitted) INNER JOIN [fw].[viewDimEntity] [ENT] on [ENT].[EntityID] = [grp69AF13389B5C41B5A4367BD2A516074B].[EntityID] INNER JOIN [fw].[viewDimXPlan_auto] [DimXP] on [DimXP].[MemberGUID] = [grp69AF13389B5C41B5A4367BD2A516074B].[MemberGUID] GO --------------------------------------------- -- ob.viewDimOBSnapshot CREATE VIEW [ob].[viewDimOBSnapshot] AS SELECT grp39C103E65DEC41F09D8D6D4E85A82692.[OBSnapshotID] ,grp39C103E65DEC41F09D8D6D4E85A82692.[Name] ,grp39C103E65DEC41F09D8D6D4E85A82692.[TransactionID] ,grp39C103E65DEC41F09D8D6D4E85A82692.[MemberGUID] ,grp39C103E65DEC41F09D8D6D4E85A82692.[HistoryItemGUID] ,grp39C103E65DEC41F09D8D6D4E85A82692.[Category] ,grp39C103E65DEC41F09D8D6D4E85A82692.[Date] FROM [ob].[DimOBSnapshot] grp39C103E65DEC41F09D8D6D4E85A82692 (readuncommitted) GO --------------------------------------------- -- ob.viewDimSpread --Last Modified 5/25/2018 10:33 AM CREATE VIEW [ob].[viewDimSpread] AS SELECT grp70A27E28D45145339A6384110B97E4B3.[SpreadID] ,grp70A27E28D45145339A6384110B97E4B3.[Name] ,grp70A27E28D45145339A6384110B97E4B3.[MemberGUID] ,grp70A27E28D45145339A6384110B97E4B3.[IsBuiltIn] ,grp70A27E28D45145339A6384110B97E4B3.[SortOrder] ,coalesce(grp70A27E28D45145339A6384110B97E4B3.[Category],'') as [Category] FROM [ob].[DimSpread] grp70A27E28D45145339A6384110B97E4B3 (readuncommitted) GO --------------------------------------------- -- ob.viewExceptionsDepartmentBudgetAccountsNotBudgeted CREATE VIEW [ob].[viewExceptionsDepartmentBudgetAccountsNotBudgeted] AS SELECT DB.[DepartmentalBudgetID], DB.[Name] AS Model, 'Has ' + CAST(CAST(SUM(FA.[Total]) AS DECIMAL(16,2)) AS NVARCHAR(100)) + ' current year ' + UT.[Name] + ' for Account ' + ACC.[Name] + ' but does not have a budget.' AS [Detail] FROM [clientob].[FactAccount] AS FA INNER JOIN [fw].[DimUnitType] AS UT ON FA.[UnitTypeID] = UT.[UnitTypeID] INNER JOIN [fw].[DimAccount] AS ACC ON ACC.[AccountID] = FA.[AccountID] INNER JOIN [ob].[DimDepartmentalBudget] AS DB ON DB.[DepartmentalBudgetID] = FA.[DepartmentalBudgetID] WHERE 1=1 AND FA.[IsDeleted] IN (0, 1) AND FA.[FiscalYearID] = (SELECT TOP 1 CAST([Setting] AS INT) FROM [dbo].[DBSetting] WHERE [DBSettingGUID] = '9c921c27-f3e4-4616-b3fd-925a75870b62') AND FA.[TimeClassID] = 1 -- Actual AND FA.[Total] <> 0 AND ACC.[AccountID] <> 0 AND NOT (ACC.[OBIsDefined] = 1 AND ACC.[OBAccountPHID] = 0 AND ACC.[OBStatModelSectionID] = 0) AND UT.[UnitTypeID] IN (34, 51, 140) -- Dollars, Volume and Hours (contract labor) AND DB.[OBActivePlans] = '1' AND NOT EXISTS ( SELECT 1 FROM [clientob].[FactAccount] AS FA2 WHERE 1 = 1 AND FA2.[DepartmentalBudgetID] = FA.[DepartmentalBudgetID] AND FA2.[AccountID] = FA.[AccountID] AND FA2.[UnitTypeID] = FA.[UnitTypeID] AND FA2.[TimeClassID] = 2 -- Budgeted AND FA2.[FiscalYearID] = FA.[FiscalYearID] + 1 AND FA2.[IsDeleted] IN (0, 1) AND FA2.[Total] <> 0 ) GROUP BY DB.[DepartmentalBudgetID], DB.[Name], UT.[Name], ACC.[Name] GO --------------------------------------------- -- ob.viewExceptionsDepartmentBudgetActiveButNoHistory /************************************************************ ** Author: akowalski ** Create Date: 2015-01-18 ** Description: Displays all budgets that are set to active but have no current year activity ** Last Modified: 2015-01-18 ** GM Release: 2015.2 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** ** *************************************************************/ create view [ob].[viewExceptionsDepartmentBudgetActiveButNoHistory] as select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Is set to Active but no current year account activity' as Detail from [ob].[DimDepartmentalBudget] db with (readuncommitted) where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and db.DepartmentalBudgetID not in ( select fct1.DepartmentalBudgetID from [clientob].[FactAccount] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db1 with (readuncommitted) on fct1.DepartmentalBudgetID=db1.DepartmentalBudgetID and fct1.FiscalYearID=db1.BaseYear where fct1.TimeClassID in (1,2) and fct1.Total<>0 and DataTypeID=4 ) GO --------------------------------------------- -- ob.viewExceptionsDepartmentBudgetContractLaborDollarsWithoutHours /************************************************************ ** Author: mschmitz ** Create Date: 2015-01-18 ** Description: Checks for departmental budgets that have contract labor dollars without hours in historic time periods ** Last Modified: 2016-11-30 ** GM Release: 2015.2 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 2016-11-30 srk D-04692 Updated exception report to look for historic time periods where there are dollars but no hours, ** instead of looking for budgeted dollars without hours. It works similar the job code with dollars ** but no hours exception now. ** *************************************************************/ CREATE VIEW [ob].[viewExceptionsDepartmentBudgetContractLaborDollarsWithoutHours] AS SELECT DISTINCT db.DepartmentalBudgetID, db.Name as Model, 'Has dollars but no hours for contract labor account ' + DA.Name + ' in ' + tc.name + ' '+ cast(FA.FiscalYearID as char(4)) as 'Detail' FROM [clientob].[FactAccount] FA with (readuncommitted) INNER JOIN [ob].[DimDepartmentalBudget] DB with (readuncommitted) on DB.DepartmentalBudgetID=FA.DepartmentalBudgetID INNER JOIN [fw].[DimAccount] DA with (readuncommitted) on DA.AccountID = FA.AccountID INNER JOIN [data].[ScoreFillin_Account] SFA on FA.AccountID = SFA.AccountID INNER JOIN [ob].[DimAccountPH] PH on SFA.PlaceholderSectionMemberGUID = PH.MemberGUID INNER JOIN [fw].[DimTimeClass] TC on FA.TimeClassID = TC.TimeClassID and PH.Name = 'Staffing - Contract Labor' WHERE 1=1 and FA.UnitTypeID=34 and FA.Total != 0 and FA.DataTypeID = 4 -- Input and FA.TimeClassID = 1 -- Budget and FA.FiscalYearID <= (SELECT DBS.Setting from [dbo].[DBSetting] DBS where DBS.Name = 'OB_Current_Year') and not exists ( SELECT top 1 1 FROM [clientob].[FactAccount] FA1 with (readuncommitted) WHERE 1=1 and FA1.UnitTypeID in ( 51 --hours ,146 --nonproductive ,147 --differential ,148 --productive ) and FA1.DepartmentalBudgetID=FA.DepartmentalBudgetID and FA1.AccountID = FA.AccountID and FA1.FiscalYearID = FA.FiscalYearID and FA1.DataTypeID = 4 -- Input and FA1.TimeClassID = 1 -- Actual and FA1.Total != 0 ) GO --------------------------------------------- -- ob.viewExceptionsDepartmentBudgetDataWithoutDimensionMembers /************************************************************ ** Author: jgerber ** Create Date: 2014-09-17 ** Description: Checks for dept budget data that does not have dimension members ** Last Modified: 2014-09-17 ** GM Release: 2014.4 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** *************************************************************/ create view [ob].[viewExceptionsDepartmentBudgetDataWithoutDimensionMembers] as --***Fact Account********************************************* -- Department Dimension select Distinct 0 as DepartmentalBudgetID, 'Not Specified' as Model, 'Has General Ledger data for a Department that no longer exists' as Detail from [clientob].[FactAccount] data with (readuncommitted) left join ob.DimDepartmentalBudget db with (readuncommitted) on db.DepartmentalBudgetID = data.DepartmentalBudgetID where db.MemberGUID is null UNION ALL -- Account Dimension select Distinct db.DepartmentalBudgetID, db.Name as Model, 'Has General Ledger data for an Account that no longer exists' as Detail from [clientob].[FactAccount] data with (readuncommitted) inner join ob.DimDepartmentalBudget db with (readuncommitted) on db.DepartmentalBudgetID = data.DepartmentalBudgetID left join [fw].[DimAccount] dim with (readuncommitted) on dim.AccountID = data.AccountID where dim.MemberGUID is null UNION ALL --***Fact Staffing PC********************************************* -- Department Dimension select Distinct 0 as DepartmentalBudgetID, 'Not Specified' as Model, 'Has Staffing data for a Department that no longer exists' as Detail from [clientob].[FactStaffingPC] data with (readuncommitted) left join ob.DimDepartmentalBudget db with (readuncommitted) on db.DepartmentalBudgetID = data.DepartmentalBudgetID where db.MemberGUID is null Union ALL -- Job Code Dimension select Distinct db.DepartmentalBudgetID, db.Name as Model, 'Has Staffing data for a Job Code that no longer exists' as Detail from [clientob].[FactStaffingPC] data with (readuncommitted) inner join ob.DimDepartmentalBudget db with (readuncommitted) on db.DepartmentalBudgetID = data.DepartmentalBudgetID left join [fw].[DimJobCode] dim with (readuncommitted) on dim.JobCodeID = data.JobCodeID where dim.MemberGUID is null Union ALL -- Pay Code Dimension select Distinct db.DepartmentalBudgetID, db.Name as Model, 'Has Staffing data for a Pay Code that no longer exists' as Detail from [clientob].[FactStaffingPC] data with (readuncommitted) inner join ob.DimDepartmentalBudget db with (readuncommitted) on db.DepartmentalBudgetID = data.DepartmentalBudgetID left join [fw].[DimPayCode] dim with (readuncommitted) on dim.PayCodeID = data.PayCodeID where dim.MemberGUID is null Union ALL -- Pay Code Group Dimension select Distinct db.DepartmentalBudgetID, db.Name as Model, 'Has Staffing data for a Pay Code Group that no longer exists' as Detail from [clientob].[FactStaffingPC] data with (readuncommitted) inner join ob.DimDepartmentalBudget db with (readuncommitted) on db.DepartmentalBudgetID = data.DepartmentalBudgetID left join [fw].[DimPayCodeGroup] dim with (readuncommitted) on dim.PayCodeGroupID = data.PayCodeGroupID where dim.MemberGUID is null Union ALL -- Employee Dimension select Distinct db.DepartmentalBudgetID, db.Name as Model, 'Has Staffing data for a Employee that no longer exists' as Detail from [clientob].[FactStaffingPC] data with (readuncommitted) inner join ob.DimDepartmentalBudget db with (readuncommitted) on db.DepartmentalBudgetID = data.DepartmentalBudgetID left join [fw].[DimEmployee] dim with (readuncommitted) on dim.EmployeeID = data.EmployeeID where dim.MemberGUID is null UNION ALL --***Fact Provider********************************************* -- Department Dimension select Distinct 0 as DepartmentalBudgetID, 'Not Specified' as Model, 'Has Provider data for a Department that no longer exists' as Detail from [clientob].[FactProvider] data with (readuncommitted) left join ob.DimDepartmentalBudget db with (readuncommitted) on db.DepartmentalBudgetID = data.DepartmentalBudgetID where db.MemberGUID is null UNION ALL -- Provider Dimension select Distinct db.DepartmentalBudgetID, db.Name as Model, 'Has Provider data for a Provider that no longer exists' as Detail from [clientob].[FactProvider] data with (readuncommitted) inner join ob.DimDepartmentalBudget db with (readuncommitted) on db.DepartmentalBudgetID = data.DepartmentalBudgetID left join [fw].[DimProvider] dim with (readuncommitted) on dim.ProviderID = data.ProviderID where dim.MemberGUID is null UNION ALL -- Forecast Detail Dimension select Distinct db.DepartmentalBudgetID, db.Name as Model, 'Has Provider data for a Forecast Detail that no longer exists' as Detail from [clientob].[FactProvider] data with (readuncommitted) inner join ob.DimDepartmentalBudget db with (readuncommitted) on db.DepartmentalBudgetID = data.DepartmentalBudgetID left join [ob].[DimOBForecastDetail] dim with (readuncommitted) on dim.OBForecastDetailID = data.OBForecastDetailID where dim.MemberGUID is null UNION ALL --***Fact Charge Code********************************************* -- Department Dimension select Distinct 0 as DepartmentalBudgetID, 'Not Specified' as Model, 'Has Charge Code data for a Department that no longer exists' as Detail from [clientob].[FactCDM] data with (readuncommitted) left join ob.DimDepartmentalBudget db with (readuncommitted) on db.DepartmentalBudgetID = data.DepartmentalBudgetID where db.MemberGUID is null UNION ALL -- Charge Code Dimension select Distinct db.DepartmentalBudgetID, db.Name as Model, 'Has Charge Code data for a Charge Code that no longer exists' as Detail from [clientob].[FactCDM] data with (readuncommitted) inner join ob.DimDepartmentalBudget db with (readuncommitted) on db.DepartmentalBudgetID = data.DepartmentalBudgetID left join [fw].[DimChargeCode] dim with (readuncommitted) on dim.ChargeCodeID = data.ChargeCodeID where dim.MemberGUID is null UNION ALL --***Fact Reporting********************************************* -- Department Dimension select Distinct 0 as DepartmentalBudgetID, 'Not Specified' as Model, 'Has Financial Reporting data for a Department that no longer exists' as Detail from [clientob].[FactReportingMonthly] data with (readuncommitted) left join ob.DimDepartmentalBudget db with (readuncommitted) on db.DepartmentalBudgetID = data.DepartmentalBudgetID where db.MemberGUID is null UNION ALL -- Financial Reporting Dimension select Distinct db.DepartmentalBudgetID, db.Name as Model, 'Has Financial Reporting data for a Line Item that no longer exists' as Detail from [clientob].[FactReportingMonthly] data with (readuncommitted) inner join ob.DimDepartmentalBudget db with (readuncommitted) on db.DepartmentalBudgetID = data.DepartmentalBudgetID left join [ob].[DimFinancialReporting] dim with (readuncommitted) on dim.FinancialReportingID = data.FinancialReportingID where dim.MemberGUID is null GO --------------------------------------------- -- ob.viewExceptionsDepartmentBudgetDollarsWithoutHours /************************************************************ ** Author: mschmitz ** Create Date: 2015-01-18 ** Description: Checks for job code/pay code group combos that have dollars but not hours in historic time periods ** Last Modified: 08/01/2017 ** GM Release: 2017.2 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 08/04/2015 CBB D-03150 Issues with false positives - Rebuilt using structure from BudgetHoursWithoutDollars ** 2 09/19/2016 BL D-04355 Filter out "Dollars Only" Productive Class from exception ** 3 10/26/2016 GF B-13254 Refactored for performance ** 4 2017-02-10 akk D-05381 Adding productive non-fte unit type to hours subquery ** 5 08/01/2017 vyaremko D-06199 Filter out inactive departments *************************************************************/ CREATE VIEW [ob].[viewExceptionsDepartmentBudgetDollarsWithoutHours] AS SELECT DISTINCT DB.[DepartmentalBudgetID] AS [DepartmentalBudgetID], DB.[Name] AS [Model], 'Has dollars in pay code group ' + PCG.[Name] + ' but no hours for job code ' + JC.[Name] + ' in ' + TC.[Name] + ' ' + cast(st.FiscalYearID as char(4)) AS [Detail] ,TC.[Name] ,ST.[FiscalYearID] FROM [clientob].[FactStaffingPC] AS ST WITH (READUNCOMMITTED) INNER JOIN [ob].[DimDepartmentalBudget] AS DB WITH (READUNCOMMITTED) ON DB.[DepartmentalBudgetID] = ST.[DepartmentalBudgetID] INNER JOIN [fw].[DimJobCode] AS JC WITH (READUNCOMMITTED) ON JC.[JobCodeID] = ST.[JobCodeID] INNER JOIN [fw].[DimPayCodeGroup] AS PCG WITH (READUNCOMMITTED) ON PCG.[PayCodeGroupID] = ST.[PayCodeGroupID] INNER JOIN [fw].[DimTimeClass] AS TC WITH (READUNCOMMITTED) ON TC.[TimeClassID] = ST.[TimeClassID] WHERE 1=1 AND ST.[UnitTypeID] = 34 AND PCG.[ProductiveClassID] <> 4 AND ST.[Total] != 0 AND DB.[OBActivePlans] = '1' AND NOT EXISTS( SELECT 1 FROM [clientob].[FactStaffingPC] AS H WITH (READUNCOMMITTED) WHERE 1=1 AND H.[UnitTypeID] IN ( 51 --hours ,146 --nonproductive ,147 --differential ,148 --productive ,52 --productive non-fte ) AND H.[DepartmentalBudgetID] = ST.[DepartmentalBudgetID] AND H.[DataTypeID] = ST.[DataTypeID] AND H.[FiscalYearID] = ST.[FiscalYearID] AND H.[JobCodeID] = ST.[JobCodeID] AND H.[PayCodeGroupID] = ST.[PayCodeGroupID] AND H.[TimeClassID] = ST.[TimeClassID] AND H.[Total] != 0 ); GO --------------------------------------------- -- ob.viewExceptionsDepartmentBudgetDuplicateFillins /************************************************************ ** Author: dmoldawer ** Create Date: 2014-03-21 ** Description: Finds all duplicate fillins in the OB Departmental Budget model for the Account, Employee, Job Code, and Pay Code Group dimensions ** Last Modified: 2013-10-07 ** GM Release: 2014.4 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 2014-10-07 JG Renaming and adding to the exception summary report ** *************************************************************/ create view [ob].[viewExceptionsDepartmentBudgetDuplicateFillins] as --ACCOUNTS --CHECK IF EXCLUSIVE FILLINS EXIST IN OTHER SECTIONS select DB.DepartmentalBudgetID, DB.Name as Model, DIM.Name + ' in section ' + PH.Name + ' is also in another section' as Detail from ob.DimDepartmentalBudget DB with (readuncommitted) inner join XPlan X with (readuncommitted) on DB.MemberGUID = X.PlanGUID inner join data.ScoreFillin_Account FI with (readuncommitted) on DB.MemberGUID = FI.ModelGUID inner join fw.DimAccount DIM with (readuncommitted) on FI.AccountID = DIM.AccountID inner join ob.DimAccountPH PH with (readuncommitted) on FI.AccountPHID = PH.AccountPHID inner join ( select distinct DB.DepartmentalBudgetID, FI1.AccountID from ob.DimDepartmentalBudget DB with (readuncommitted) inner join XPlan X with (readuncommitted) on DB.MemberGUID = X.PlanGUID inner join MEPHSection ME with (readuncommitted) on X.ModelTemplateGUID = ME.ModelTemplateGUID inner join data.ScoreFillin_Account FI1 with (readuncommitted) on DB.MemberGUID = FI1.ModelGUID and ME.PHSectionMemberGUID = FI1.PlaceholderSectionMemberGUID where exists (select 1 from data.ScoreFillin_Account FI2 with (readuncommitted) inner join XPlan X with (readuncommitted) on fi2.modelguid = X.PlanGUID inner join MEPHSection ME2 with (readuncommitted) on X.ModelTemplateGUID = ME2.ModelTemplateGUID and FI2.PlaceholderSectionMemberGUID=ME2.PHSectionMemberGUID where FI2.ModelGUID = FI1.ModelGUID and FI2.FillinMemberGUID = FI1.FillinMemberGUID and FI2.FillinGUID != FI1.FillinGUID and ME2.ExclusivityGroup=me.ExclusivityGroup) and ME.IsExclusive = 1 ) DUPES on DB.DepartmentalBudgetID = DUPES.DepartmentalBudgetID and DIM.AccountID = DUPES.AccountID and PH.AccountPHID<>0 union all --EMPLOYEE -- CHECK IF FILLINS EXISTS IN BOTH VARIABLE AND FIXED select DB.DepartmentalBudgetID, DB.Name as Model, DIM.Name + ' in section ' + PH1.Name + ' is also in another section' as Detail from ob.DimDepartmentalBudget DB with (readuncommitted) inner join data.ScoreFillin_Employee FI1 with (readuncommitted) on DB.MemberGUID = FI1.ModelGUID inner join fw.DimEmployeePH PH1 with (readuncommitted) on FI1.EmployeePHID = PH1.EmployeePHID inner join fw.DimEmployee DIM with (readuncommitted) on FI1.EmployeeID = DIM.EmployeeID where PH1.Name in('Staffing - Employee (Fixed)', 'Staffing - Employee (Variable)') and exists (select 1 from data.ScoreFillin_Employee FI2 with (readuncommitted) inner join fw.DimEmployeePH PH2 with (readuncommitted) on FI2.EmployeePHID = PH2.EmployeePHID where PH2.Name in('Staffing - Employee (Fixed)', 'Staffing - Employee (Variable)') and FI1.ModelGUID = FI2.ModelGUID and FI1.EmployeeID = FI2.EmployeeID and FI1.EmployeePHID != FI2.EmployeePHID ) union all --JOB CODE -- CHECK IF FILLINS EXISTS IN BOTH VARIABLE AND FIXED select DB.DepartmentalBudgetID, DB.Name as Model, DIM.Name + ' in section ' + PH1.Name + ' is also in another section' as Detail from ob.DimDepartmentalBudget DB with (readuncommitted) inner join data.ScoreFillin_JobCode FI1 with (readuncommitted) on DB.MemberGUID = FI1.ModelGUID inner join fw.DimJobCodePH PH1 with (readuncommitted) on FI1.JobCodePHID= PH1.JobCodePHID inner join fw.DimJobCode DIM with (readuncommitted) on FI1.JobCodeID = DIM.JobCodeID where PH1.Name in('Staffing - Job Code (Fixed)', 'Staffing - Job Code (Variable)') and exists (select 1 from data.ScoreFillin_JobCode FI2 with (readuncommitted) inner join fw.DimJobCodePH PH2 with (readuncommitted) on FI2.JobCodePHID = PH2.JobCodePHID where PH2.Name in('Staffing - Job Code (Fixed)', 'Staffing - Job Code (Variable)') and FI1.ModelGUID = FI2.ModelGUID and FI1.JobCodeID = FI2.JobCodeID and FI1.JobCodePHID != FI2.JobCodePHID ) union all --OB FINANCIAL REPORTING -- CHECK IF FINANCIAL REPORTING SHOWS UP IN MORE THAN ONE SECTION select DB.DepartmentalBudgetID, DB.Name as Model, DIM.Name + ' in section ' + PH.Name + ' is also in another section' as Detail from ob.DimDepartmentalBudget DB with (readuncommitted) inner join data.ScoreFillin_OBFinancialReporting FI1 with (readuncommitted) on DB.MemberGUID = FI1.ModelGUID inner join ob.DimFinancialReportingPH PH with (readuncommitted) on FI1.FinancialReportingPHID= PH.FinancialReportingPHID inner join ob.DimFinancialReporting DIM with (readuncommitted) on FI1.FinancialReportingID = DIM.FinancialReportingID where exists (select 1 from data.ScoreFillin_FinancialReporting FI2 with (readuncommitted) where FI1.ModelGUID = FI2.ModelGUID and FI1.FinancialReportingID= FI2.FinancialReportingID and FI1.FinancialReportingPHID!= FI2.FinancialReportingPHID ) and PH.FinancialReportingPHID<>0 union all --PAY CODE GROUP --CHECK IF EXCLUSIVE FILLINS EXIST IN OTHER SECTIONS select DB.DepartmentalBudgetID, DB.Name as Model, DIM.Name + ' in section ' + PH.Name + ' is also in another section' as Detail from ob.DimDepartmentalBudget DB with (readuncommitted) inner join data.ScoreFillin_PayCodeGroup FI with (readuncommitted) on DB.MemberGUID = FI.ModelGUID inner join fw.DimPayCodeGroupPH PH with (readuncommitted) on FI.PayCodeGroupPHID = PH.PayCodeGroupPHID inner join fw.DimPayCodeGroup DIM with (readuncommitted) on FI.PayCodeGroupID = DIM.PayCodeGroupID inner join ( select distinct DB.DepartmentalBudgetID, FI1.PayCodeGroupID from ob.DimDepartmentalBudget DB with (readuncommitted) inner join XPlan X with (readuncommitted) on DB.MemberGUID = X.PlanGUID inner join MEPHSection ME with (readuncommitted) on X.ModelTemplateGUID = ME.ModelTemplateGUID inner join data.ScoreFillin_PayCodeGroup FI1 with (readuncommitted) on DB.MemberGUID = FI1.ModelGUID and ME.PHSectionMemberGUID = FI1.PlaceholderSectionMemberGUID where exists(select 1 from data.ScoreFillin_Account FI2 with (readuncommitted) where FI2.ModelGUID = FI1.ModelGUID and FI2.FillinMemberGUID = FI1.FillinMemberGUID and FI2.FillinGUID != FI1.FillinGUID) and ME.IsExclusive = 1 ) DUPES on DB.DepartmentalBudgetID = DUPES.DepartmentalBudgetID and DIM.PayCodeGroupID = DUPES.PayCodeGroupID and PH.PayCodeGroupPHID<>0 union all --PROVIDER -- CHECK IF PROVIDER SHOWS UP IN MORE THAN ONE SECTION select DB.DepartmentalBudgetID, DB.Name as Model, DIM.Name + ' in section ' + PH.Name + ' is also in another section' as Detail from ob.DimDepartmentalBudget DB with (readuncommitted) inner join data.ScoreFillin_Provider FI1 with (readuncommitted) on DB.MemberGUID = FI1.ModelGUID inner join fw.DimProviderPH PH with (readuncommitted) on FI1.ProviderPHID= PH.ProviderPHID inner join fw.DimProvider DIM with (readuncommitted) on FI1.ProviderID = DIM.ProviderID where exists (select 1 from data.ScoreFillin_Provider FI2 with (readuncommitted) where FI1.ModelGUID = FI2.ModelGUID and FI1.ProviderID = FI2.ProviderID and FI1.ProviderPHID != FI2.ProviderPHID ) and PH.ProviderPHID<>0 GO --------------------------------------------- -- ob.viewExceptionsDepartmentBudgetExpenseAdjustmentsNoComments /************************************************************ ** Author: akowalski ** Create Date: 2015-01-18 ** Description: Displays all non-staffing expense accounts that have manager adjustments but no comments ** Last Modified: 2017-02-27 ** GM Release: 2015.2 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 2017-02-27 srk D-05574 Added isdeleted <> 1 flag, and made fiscal year parameter dynamic based on dbsetting. ** *************************************************************/ CREATE view [ob].[viewExceptionsDepartmentBudgetExpenseAdjustmentsNoComments] as /******* fixed monthly adjustments ******/ -- Projected select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Non-Staffing Expense Account ' + sf.FillinMemberName + ' has a monthly Projection adjustment but no comments' as Detail from [clientob].[FactAccountVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_Account] sf with (readuncommitted) on fct1.AccountID=sf.AccountID and sf.ModelGUID=db.MemberGUID inner join [clientob].[FactAccountVar] fct2 with (readuncommitted) on fct1.AccountID=fct2.AccountID and fct1.DepartmentalBudgetID=fct2.DepartmentalBudgetID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and sf.AccountPHID in ('9', --Expenses - Non-Staffing '10') --Expenses - Zero Based and fct1.Amount<>0 and fct1.AssumptionID=38 -- Fixed Adjustment and fct2.AssumptionID=30 -- Comment and fct2.Comment='' and fct1.TimeClassID=12 and fct1.FiscalYearID = (SELECT dbs.Setting from [dbo].[DBSetting] dbs where dbs.Name = 'OB_Current_Year') and fct1.IsDeleted <> 1 union all -- Budget select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Non-Staffing Expense Account ' + sf.FillinMemberName + ' has a monthly Budget adjustment but no comments' as Detail from [clientob].[FactAccountVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_Account] sf with (readuncommitted) on fct1.AccountID=sf.AccountID and sf.ModelGUID=db.MemberGUID inner join [clientob].[FactAccountVar] fct2 with (readuncommitted) on fct1.AccountID=fct2.AccountID and fct1.DepartmentalBudgetID=fct2.DepartmentalBudgetID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and sf.AccountPHID in ('9', --Expenses - Non-Staffing '10') --Expenses - Zero Based and fct1.Amount<>0 and fct1.AssumptionID=38 -- Fixed Adjustment and fct2.AssumptionID=30 -- Comment and fct2.Comment='' and fct1.TimeClassID=2 and fct1.FiscalYearID = (SELECT dbs.Setting + 1 from [dbo].[DBSetting] dbs where dbs.Name = 'OB_Current_Year') and fct1.IsDeleted <> 1 union all -- Baseline Budget select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Non-Staffing Expense Account ' + sf.FillinMemberName + ' has a Baseline Budget adjustment but no comments' as Detail from [clientob].[FactAccountVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_Account] sf with (readuncommitted) on fct1.AccountID=sf.AccountID and sf.ModelGUID=db.MemberGUID inner join [clientob].[FactAccountVar] fct2 with (readuncommitted) on fct1.AccountID=fct2.AccountID and fct1.DepartmentalBudgetID=fct2.DepartmentalBudgetID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and sf.AccountPHID in ('9', --Expenses - Non-Staffing '10') --Expenses - Zero Based and fct1.Amount<>0 and fct1.AssumptionID=38 -- Fixed Adjustment and fct2.AssumptionID=30 -- Comment and fct2.Comment='' and fct1.TimeClassID=18 and fct1.FiscalYearID = (SELECT dbs.Setting + 1 from [dbo].[DBSetting] dbs where dbs.Name = 'OB_Current_Year') and fct1.IsDeleted <> 1 union all /******* Fixed Annual Adjustments ******/ -- Projected select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Non-Staffing Expense Account ' + sf.FillinMemberName + ' has a yearly-level Projection adjustment but no comments' as Detail from [clientob].[FactAccountVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_Account] sf with (readuncommitted) on fct1.AccountID=sf.AccountID and sf.ModelGUID=db.MemberGUID inner join [clientob].[FactAccountVar] fct2 with (readuncommitted) on fct1.AccountID=fct2.AccountID and fct1.DepartmentalBudgetID=fct2.DepartmentalBudgetID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and sf.AccountPHID in ('9', --Expenses - Non-Staffing '10') --Expenses - Zero Based and fct1.Amount<>0 and fct1.AssumptionID=18 -- Adjustment and fct2.AssumptionID=30 -- Comment and fct2.Comment='' and fct1.TimeClassID=12 and fct1.FiscalYearID = (SELECT dbs.Setting from [dbo].[DBSetting] dbs where dbs.Name = 'OB_Current_Year') and fct1.IsDeleted <> 1 union all -- Budget select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Non-Staffing Expense Account ' + sf.FillinMemberName + ' has a yearly-level Budget adjustment but no comments' as Detail from [clientob].[FactAccountVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_Account] sf with (readuncommitted) on fct1.AccountID=sf.AccountID and sf.ModelGUID=db.MemberGUID inner join [clientob].[FactAccountVar] fct2 with (readuncommitted) on fct1.AccountID=fct2.AccountID and fct1.DepartmentalBudgetID=fct2.DepartmentalBudgetID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and sf.AccountPHID in ('9', --Expenses - Non-Staffing '10') --Expenses - Zero Based and fct1.Amount<>0 and fct1.AssumptionID=18 -- Adjustment and fct2.AssumptionID=30 -- Comment and fct2.Comment='' and fct1.TimeClassID=2 and fct1.FiscalYearID = (SELECT dbs.Setting + 1 from [dbo].[DBSetting] dbs where dbs.Name = 'OB_Current_Year') and fct1.IsDeleted <> 1 union all /******* Subtable Adjustments ******/ -- Projected select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Non-Staffing Expense Account ' + sf.FillinMemberName + ' has a subtable Projection adjustment with no comment' as Detail from [clientob].[FactAccountSubtableVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_Account] sf with (readuncommitted) on fct1.AccountID=sf.AccountID and sf.ModelGUID=db.MemberGUID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and sf.AccountPHID in ('9', --Expenses - Non-Staffing '10') --Expenses - Zero Based and fct1.Total<>0 and fct1.AssumptionID=18 and fct1.Comment='' and fct1.TimeClassID=12 and fct1.FiscalYearID = (SELECT dbs.Setting from [dbo].[DBSetting] dbs where dbs.Name = 'OB_Current_Year') and fct1.IsDeleted <> 1 union all -- Budget select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Non-Staffing Expense Account ' + sf.FillinMemberName + ' has a subtable Budget adjustment with no comment' as Detail from [clientob].[FactAccountSubtableVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_Account] sf with (readuncommitted) on fct1.AccountID=sf.AccountID and sf.ModelGUID=db.MemberGUID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and sf.AccountPHID in ('9', --Expenses - Non-Staffing '10') --Expenses - Zero Based and fct1.Total<>0 and fct1.AssumptionID=18 and fct1.Comment='' and fct1.TimeClassID=2 and fct1.FiscalYearID = (SELECT dbs.Setting + 1 from [dbo].[DBSetting] dbs where dbs.Name = 'OB_Current_Year') and fct1.IsDeleted <> 1 GO --------------------------------------------- -- ob.viewExceptionsDepartmentBudgetFillinCacheIssues /************************************************************ ** Author: akowalski ** Create Date: 2014-05-13 ** Description: Checks for fill-ins in Score Fill-ins but not in Cache tables or PH Index doesnt Match ** Last Modified: 2014-08-14 ** GM Release: 2014.4 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 2014-08-14 akk D-02122 Filtering out not specified department budget ** 2 2016-02-26 mholov D-03407 Filtering out 'GM Blank' model template ** 3 2016-08-10 kf B-12543 FP - System Center Exception Management - Initial Framework *************************************************************/ CREATE view [ob].[viewExceptionsDepartmentBudgetFillinCacheIssues] as --Fill-ins in Score Fill-ins but not in Cache tables or PH Index doesnt Match --Account select DB.DepartmentalBudgetID, DB.Name as Model, 'The fill-in cache for Account ' + DIM.Name + ' out of sync' as Detail from ob.DimDepartmentalBudget DB with (readuncommitted) inner join ScoreFillin SF with (readuncommitted) on DB.MemberGUID = SF.ModelGUID left join data.ScoreFillin_Account FI with (readuncommitted) on SF.ModelGUID = FI.ModelGUID and sf.PlaceholderSectionMemberGUID=fi.PlaceholderSectionMemberGUID and sf.FillinMemberGUID=FI.FillinMemberGUID and sf.PlaceholderIndex=FI.PlaceholderIndex inner join fw.DimAccount DIM with (readuncommitted) on SF.FillinMemberGUID = DIM.MemberGUID inner join XPlan P on DB.MemberGUID = P.PlanGUID where FI.FillinMemberGUID is null --==================== BEGIN CID 1 ===================== and db.departmentalbudgetid<>0 --===================== END CID 1 ====================== and P.ModelTemplateGUID <> '7F792F1F-F32A-4053-9907-534A2D736D45' union all --Job Code select DB.DepartmentalBudgetID, DB.Name as Model, 'The fill-in cache for Job Code ' + DIM.Name + ' out of sync' as Detail from ob.DimDepartmentalBudget DB with (readuncommitted) inner join ScoreFillin SF with (readuncommitted) on DB.MemberGUID = SF.ModelGUID left join data.ScoreFillin_JobCode FI with (readuncommitted) on SF.ModelGUID = FI.ModelGUID and sf.PlaceholderSectionMemberGUID=fi.PlaceholderSectionMemberGUID and sf.FillinMemberGUID=FI.FillinMemberGUID and sf.PlaceholderIndex=FI.PlaceholderIndex inner join fw.DimJobCode DIM with (readuncommitted) on SF.FillinMemberGUID = DIM.MemberGUID inner join XPlan P on DB.MemberGUID = P.PlanGUID where FI.FillinMemberGUID is null --==================== BEGIN CID 1 ===================== and db.departmentalbudgetid<>0 --===================== END CID 1 ====================== and P.ModelTemplateGUID <> '7F792F1F-F32A-4053-9907-534A2D736D45' union all --Employee select DB.DepartmentalBudgetID, DB.Name as Model, 'The fill-in cache for Employee ' + DIM.Name + ' out of sync' as Detail from ob.DimDepartmentalBudget DB with (readuncommitted) inner join ScoreFillin SF with (readuncommitted) on DB.MemberGUID = SF.ModelGUID left join data.ScoreFillin_Employee FI with (readuncommitted) on SF.ModelGUID = FI.ModelGUID and sf.PlaceholderSectionMemberGUID=fi.PlaceholderSectionMemberGUID and sf.FillinMemberGUID=FI.FillinMemberGUID and sf.PlaceholderIndex=FI.PlaceholderIndex inner join fw.DimEmployee DIM with (readuncommitted) on SF.FillinMemberGUID = DIM.MemberGUID inner join XPlan P on DB.MemberGUID = P.PlanGUID where FI.FillinMemberGUID is null --==================== BEGIN CID 1 ===================== and db.departmentalbudgetid<>0 --===================== END CID 1 ====================== and P.ModelTemplateGUID <> '7F792F1F-F32A-4053-9907-534A2D736D45' union all --Pay Code Group select DB.DepartmentalBudgetID, DB.Name as Model, 'The fill-in cache for Pay Code Group ' + DIM.Name + ' out of sync' as Detail from ob.DimDepartmentalBudget DB with (readuncommitted) inner join ScoreFillin SF with (readuncommitted) on DB.MemberGUID = SF.ModelGUID left join data.ScoreFillin_PayCodeGroup FI with (readuncommitted) on SF.ModelGUID = FI.ModelGUID and sf.PlaceholderSectionMemberGUID=fi.PlaceholderSectionMemberGUID and sf.FillinMemberGUID=FI.FillinMemberGUID and sf.PlaceholderIndex=FI.PlaceholderIndex inner join fw.DimPayCodeGroup DIM with (readuncommitted) on SF.FillinMemberGUID = DIM.MemberGUID inner join XPlan P on DB.MemberGUID = P.PlanGUID where FI.FillinMemberGUID is null --==================== BEGIN CID 1 ===================== and db.departmentalbudgetid<>0 --===================== END CID 1 ====================== and P.ModelTemplateGUID <> '7F792F1F-F32A-4053-9907-534A2D736D45' union all --Provider select DB.DepartmentalBudgetID, DB.Name as Model, 'The fill-in cache for Provider ' + DIM.Name + ' out of sync' as Detail from ob.DimDepartmentalBudget DB with (readuncommitted) inner join ScoreFillin SF with (readuncommitted) on DB.MemberGUID = SF.ModelGUID left join data.ScoreFillin_Provider FI with (readuncommitted) on SF.ModelGUID = FI.ModelGUID and sf.PlaceholderSectionMemberGUID=fi.PlaceholderSectionMemberGUID and sf.FillinMemberGUID=FI.FillinMemberGUID and sf.PlaceholderIndex=FI.PlaceholderIndex inner join fw.DimProvider DIM with (readuncommitted) on SF.FillinMemberGUID = DIM.MemberGUID inner join XPlan P on DB.MemberGUID = P.PlanGUID where FI.FillinMemberGUID is null --==================== BEGIN CID 1 ===================== and db.departmentalbudgetid<>0 --===================== END CID 1 ====================== and P.ModelTemplateGUID <> '7F792F1F-F32A-4053-9907-534A2D736D45' union all --Charge Code select DB.DepartmentalBudgetID, DB.Name as Model, 'The fill-in cache for Charge Code ' + DIM.Name + ' out of sync' as Detail from ob.DimDepartmentalBudget DB with (readuncommitted) inner join ScoreFillin SF with (readuncommitted) on DB.MemberGUID = SF.ModelGUID left join data.ScoreFillin_ChargeCode FI with (readuncommitted) on SF.ModelGUID = FI.ModelGUID and sf.PlaceholderSectionMemberGUID=fi.PlaceholderSectionMemberGUID and sf.FillinMemberGUID=FI.FillinMemberGUID and sf.PlaceholderIndex=FI.PlaceholderIndex inner join fw.DimChargeCode DIM with (readuncommitted) on SF.FillinMemberGUID = DIM.MemberGUID inner join XPlan P on DB.MemberGUID = P.PlanGUID where FI.FillinMemberGUID is null --==================== BEGIN CID 1 ===================== and db.departmentalbudgetid<>0 --===================== END CID 1 ====================== and P.ModelTemplateGUID <> '7F792F1F-F32A-4053-9907-534A2D736D45' union all --OB Forecast Detail select DB.DepartmentalBudgetID, DB.Name as Model, 'The fill-in cache for OB Forecast Detail ' + DIM.Name + ' out of sync' as Detail from ob.DimDepartmentalBudget DB with (readuncommitted) inner join ScoreFillin SF with (readuncommitted) on DB.MemberGUID = SF.ModelGUID left join data.ScoreFillin_OBForecastDetail FI with (readuncommitted) on SF.ModelGUID = FI.ModelGUID and sf.PlaceholderSectionMemberGUID=fi.PlaceholderSectionMemberGUID and sf.FillinMemberGUID=FI.FillinMemberGUID and sf.PlaceholderIndex=FI.PlaceholderIndex inner join ob.DimOBForecastDetail DIM with (readuncommitted) on SF.FillinMemberGUID = DIM.MemberGUID inner join XPlan P on DB.MemberGUID = P.PlanGUID where FI.FillinMemberGUID is null --==================== BEGIN CID 1 ===================== and db.departmentalbudgetid<>0 --===================== END CID 1 ====================== and P.ModelTemplateGUID <> '7F792F1F-F32A-4053-9907-534A2D736D45' union all --OB Departmental Budget select DB.DepartmentalBudgetID, DB.Name as Model, 'The fill-in cache for OB Departmental Budget ' + DIM.Name + ' out of sync' as Detail from ob.DimDepartmentalBudget DB with (readuncommitted) inner join ScoreFillin SF with (readuncommitted) on DB.MemberGUID = SF.ModelGUID left join data.ScoreFillin_OBDepartmentalBudget FI with (readuncommitted) on SF.ModelGUID = FI.ModelGUID and sf.PlaceholderSectionMemberGUID=fi.PlaceholderSectionMemberGUID and sf.FillinMemberGUID=FI.FillinMemberGUID and sf.PlaceholderIndex=FI.PlaceholderIndex inner join ob.DimDepartmentalBudget DIM with (readuncommitted) on SF.FillinMemberGUID = DIM.MemberGUID inner join XPlan P on DB.MemberGUID = P.PlanGUID where FI.FillinMemberGUID is null --==================== BEGIN CID 1 ===================== and db.departmentalbudgetid<>0 --===================== END CID 1 ====================== and P.ModelTemplateGUID <> '7F792F1F-F32A-4053-9907-534A2D736D45' union all --Fiscal Year select DB.DepartmentalBudgetID, DB.Name as Model, 'The fill-in cache for Fiscal Year ' + DIM.Name + ' out of sync' as Detail from ob.DimDepartmentalBudget DB with (readuncommitted) inner join ScoreFillin SF with (readuncommitted) on DB.MemberGUID = SF.ModelGUID left join data.ScoreFillin_FiscalYear FI with (readuncommitted) on SF.ModelGUID = FI.ModelGUID and sf.PlaceholderSectionMemberGUID=fi.PlaceholderSectionMemberGUID and sf.FillinMemberGUID=FI.FillinMemberGUID and sf.PlaceholderIndex=FI.PlaceholderIndex inner join fw.DimFiscalYear DIM with (readuncommitted) on SF.FillinMemberGUID = DIM.MemberGUID inner join XPlan P on DB.MemberGUID = P.PlanGUID where FI.FillinMemberGUID is null --==================== BEGIN CID 1 ===================== and db.departmentalbudgetid<>0 --===================== END CID 1 ====================== and P.ModelTemplateGUID <> '7F792F1F-F32A-4053-9907-534A2D736D45' union all --OB Financial Reporting select DB.DepartmentalBudgetID, DB.Name as Model, 'The fill-in cache for Financial Reporting ' + DIM.Name + ' out of sync' as Detail from ob.DimDepartmentalBudget DB with (readuncommitted) inner join ScoreFillin SF with (readuncommitted) on DB.MemberGUID = SF.ModelGUID left join data.ScoreFillin_OBFinancialReporting FI with (readuncommitted) on SF.ModelGUID = FI.ModelGUID and sf.PlaceholderSectionMemberGUID=fi.PlaceholderSectionMemberGUID and sf.FillinMemberGUID=FI.FillinMemberGUID and sf.PlaceholderIndex=FI.PlaceholderIndex inner join ob.DimFinancialReporting DIM with (readuncommitted) on SF.FillinMemberGUID = DIM.MemberGUID inner join XPlan P on DB.MemberGUID = P.PlanGUID where FI.FillinMemberGUID is null --==================== BEGIN CID 1 ===================== and db.departmentalbudgetid<>0 --===================== END CID 1 ====================== and P.ModelTemplateGUID <> '7F792F1F-F32A-4053-9907-534A2D736D45' GO --------------------------------------------- -- ob.viewExceptionsDepartmentBudgetFillinInSubListButNotInFullList /************************************************************ ** Author: dmoldawer ** Create Date: 2014-03-21 ** Description: Checks if Employee and Job Code fillins exist in Fixed or Variable sections but not the All section in the OB Departmental Budget model ** Last Modified: 2013-03-21 ** GM Release: 2014.3 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** ** *************************************************************/ CREATE view [ob].[viewExceptionsDepartmentBudgetFillinInSubListButNotInFullList] as --EMPLOYEE --CHECK IF FILLINS EXISTS IN 'Staffing - Employee (Fixed)' OR 'Staffing - Employee (Variable)' BUT NOT 'Staffing - Employee (All)' select DB.DepartmentalBudgetID, DB.Name as Model, DIM.Name + ' is in ' + PH1.Name + ' but not in Employee (All)' as Detail from ob.DimDepartmentalBudget DB with (readuncommitted) inner join data.ScoreFillin_Employee FI1 with (readuncommitted) on DB.MemberGUID = FI1.ModelGUID inner join fw.DimEmployeePH PH1 with (readuncommitted) on FI1.EmployeePHID = PH1.EmployeePHID inner join fw.DimEmployee DIM with (readuncommitted) on FI1.EmployeeID = DIM.EmployeeID where PH1.Name in('Staffing - Employee (Fixed)', 'Staffing - Employee (Variable)') and not exists (select 1 from data.ScoreFillin_Employee FI2 with (readuncommitted) inner join fw.DimEmployeePH PH2 with (readuncommitted) on FI2.EmployeePHID = PH2.EmployeePHID where PH2.Name = 'Staffing - Employee (All)' and FI1.ModelGUID = FI2.ModelGUID and FI1.EmployeeID = FI2.EmployeeID ) union all --JOB CODE -- CHECK IF FILLINS EXISTS IN 'Staffing - Job Code (Fixed)' OR 'Staffing - Job Code (Variable)' BUT NOT 'Staffing - Job Code (All)' select DB.DepartmentalBudgetID, DB.Name as Model, DIM.Name + ' is in ' + PH1.Name + ' but not in Job Code (All)' as Detail from ob.DimDepartmentalBudget DB with (readuncommitted) inner join data.ScoreFillin_JobCode FI1 with (readuncommitted) on DB.MemberGUID = FI1.ModelGUID inner join fw.DimJobCodePH PH1 with (readuncommitted) on FI1.JobCodePHID= PH1.JobCodePHID inner join fw.DimJobCode DIM with (readuncommitted) on FI1.JobCodeID = DIM.JobCodeID where PH1.Name in('Staffing - Job Code (Fixed)', 'Staffing - Job Code (Variable)') and not exists (select 1 from data.ScoreFillin_JobCode FI2 with (readuncommitted) inner join fw.DimJobCodePH PH2 with (readuncommitted) on FI2.JobCodePHID = PH2.JobCodePHID where PH2.Name = 'Staffing - Job Code (All)' and FI1.ModelGUID = FI2.ModelGUID and FI1.JobCodeID = FI2.JobCodeID ) GO --------------------------------------------- -- ob.viewExceptionsDepartmentBudgetFillinsExceedingMaxCount /************************************************************ ** Author: dmoldawer ** Create Date: 2014-03-21 ** Description: Checks fillin counts > expansion count in the OB Departmental Budget model ** Last Modified: 2017-12-19 ** GM Release: 2014.3 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 2016-12-27 srk D-04955 Provider Global ID and PH Section join updates ** 2 2017-12-19 vyaremko D-06345 Use counts from main/base template *************************************************************/ CREATE VIEW [ob].[viewExceptionsDepartmentBudgetFillinsExceedingMaxCount] AS -- ACCOUNT select distinct DB.DepartmentalBudgetID, DB.Name as Model, 'Has ' + cast( ( select COUNT(*) from data.ScoreFillin_Account FI with (readuncommitted) inner join ob.DimAccountPH PH with (readuncommitted) on FI.AccountPHID = PH.AccountPHID inner join dbo.MEPHSection S with (readuncommitted) on s.PHSectionMemberGUID = ph.MemberGUID where DB.MemberGUID = FI.ModelGUID and S.FriendlyName = SE.GlobalID and S.ModelTemplateGUID = MT.ModelTemplateGUID ) as varchar(10)) + ' Accounts in section ' + SE.GlobalID + ' with maximum ' + cast(SE.[Count] as varchar(10)) as Detail from XPlan X with (readuncommitted) inner join ob.DimDepartmentalBudget DB with (readuncommitted) on X.PlanGUID = DB.MemberGUID inner join EMFModelTemplate MT with (readuncommitted) on X.ModelTemplateGUID = MT.ModelTemplateGUID left join MEScoreExpansionProfile EPC with (readuncommitted) on EPC.ChildModelTemplateGUID = MT.ModelTemplateGUID inner join EMFModelTemplateWorksheet WS with (readuncommitted) on WS.ModelTemplateGUID = COALESCE(EPC.ParentModelTemplateGUID, MT.ModelTemplateGUID) inner join MEExcelCell EC with (readuncommitted) on WS.WorksheetGUID = EC.ExcelSheetGUID inner join MEScoreExpansion SE with (readuncommitted) on EC.ExcelCellGUID = SE.ExcelCellGUID where ( select COUNT(*) from data.ScoreFillin_Account FI with (readuncommitted) inner join ob.DimAccountPH PH with (readuncommitted) on FI.AccountPHID = PH.AccountPHID inner join dbo.MEPHSection S with (readuncommitted) on s.PHSectionMemberGUID = ph.MemberGUID where DB.MemberGUID = FI.ModelGUID and S.FriendlyName = SE.GlobalID and S.ModelTemplateGUID = MT.ModelTemplateGUID ) > SE.[Count] union all --EMPLOYEE select distinct DB.DepartmentalBudgetID, DB.Name as Model, 'Has ' + cast( ( select COUNT(*) from data.ScoreFillin_Employee FI with (readuncommitted) inner join fw.DimEmployeePH PH with (readuncommitted) on FI.EmployeePHID = PH.EmployeePHID inner join dbo.MEPHSection S with (readuncommitted) on s.PHSectionMemberGUID = ph.MemberGUID where DB.MemberGUID = FI.ModelGUID and S.FriendlyName = SE.GlobalID and S.ModelTemplateGUID = MT.ModelTemplateGUID ) as varchar(10)) + ' Employees in section ' + SE.GlobalID + ' with maximum ' + cast(SE.[Count] as varchar(10)) as Detail from XPlan X with (readuncommitted) inner join ob.DimDepartmentalBudget DB with (readuncommitted) on X.PlanGUID = DB.MemberGUID inner join EMFModelTemplate MT with (readuncommitted) on X.ModelTemplateGUID = MT.ModelTemplateGUID left join MEScoreExpansionProfile EPC with (readuncommitted) on EPC.ChildModelTemplateGUID = MT.ModelTemplateGUID inner join EMFModelTemplateWorksheet WS with (readuncommitted) on WS.ModelTemplateGUID = COALESCE(EPC.ParentModelTemplateGUID, MT.ModelTemplateGUID) inner join MEExcelCell EC with (readuncommitted) on WS.WorksheetGUID = EC.ExcelSheetGUID inner join MEScoreExpansion SE with (readuncommitted) on EC.ExcelCellGUID = SE.ExcelCellGUID where ( select COUNT(*) from data.ScoreFillin_Employee FI with (readuncommitted) inner join fw.DimEmployeePH PH with (readuncommitted) on FI.EmployeePHID = PH.EmployeePHID inner join dbo.MEPHSection S with (readuncommitted) on s.PHSectionMemberGUID = ph.MemberGUID where DB.MemberGUID = FI.ModelGUID and S.FriendlyName = SE.GlobalID and S.ModelTemplateGUID = MT.ModelTemplateGUID ) > SE.[Count] union all --JOB CODE select distinct DB.DepartmentalBudgetID, DB.Name as Model, 'Has ' + cast( ( select COUNT(*) from data.ScoreFillin_JobCode FI with (readuncommitted) inner join fw.DimJobCodePH PH with (readuncommitted) on FI.JobCodePHID = PH.JobCodePHID inner join dbo.MEPHSection S with (readuncommitted) on s.PHSectionMemberGUID = ph.MemberGUID where DB.MemberGUID = FI.ModelGUID and S.FriendlyName = SE.GlobalID and S.ModelTemplateGUID = MT.ModelTemplateGUID ) as varchar(10)) + ' Job Codes in section ' + SE.GlobalID + ' with maximum ' + cast(SE.[Count] as varchar(10)) as Detail from XPlan X with (readuncommitted) inner join ob.DimDepartmentalBudget DB with (readuncommitted) on X.PlanGUID = DB.MemberGUID inner join EMFModelTemplate MT with (readuncommitted) on X.ModelTemplateGUID = MT.ModelTemplateGUID left join MEScoreExpansionProfile EPC with (readuncommitted) on EPC.ChildModelTemplateGUID = MT.ModelTemplateGUID inner join EMFModelTemplateWorksheet WS with (readuncommitted) on WS.ModelTemplateGUID = COALESCE(EPC.ParentModelTemplateGUID, MT.ModelTemplateGUID) inner join MEExcelCell EC with (readuncommitted) on WS.WorksheetGUID = EC.ExcelSheetGUID inner join MEScoreExpansion SE with (readuncommitted) on EC.ExcelCellGUID = SE.ExcelCellGUID where ( select COUNT(*) from data.ScoreFillin_JobCode FI with (readuncommitted) inner join fw.DimJobCodePH PH with (readuncommitted) on FI.JobCodePHID = PH.JobCodePHID inner join dbo.MEPHSection S with (readuncommitted) on s.PHSectionMemberGUID = ph.MemberGUID where DB.MemberGUID = FI.ModelGUID and S.FriendlyName = SE.GlobalID and S.ModelTemplateGUID = MT.ModelTemplateGUID ) > SE.[Count] union all --OB FINANCIAL REPORTING select distinct DB.DepartmentalBudgetID, DB.Name as Model, 'Has ' + cast( ( select COUNT(*) from data.ScoreFillin_OBFinancialReporting FI with (readuncommitted) inner join ob.DimFinancialReportingPH PH with (readuncommitted) on FI.FinancialReportingPHID = PH.FinancialReportingPHID inner join dbo.MEPHSection S with (readuncommitted) on s.PHSectionMemberGUID = ph.MemberGUID where DB.MemberGUID = FI.ModelGUID and S.FriendlyName = SE.GlobalID and S.ModelTemplateGUID = MT.ModelTemplateGUID ) as varchar(10)) + ' Financial Reporting Lines in section ' + SE.GlobalID + ' with maximum ' + cast(SE.[Count] as varchar(10)) as Detail from XPlan X with (readuncommitted) inner join ob.DimDepartmentalBudget DB with (readuncommitted) on X.PlanGUID = DB.MemberGUID inner join EMFModelTemplate MT with (readuncommitted) on X.ModelTemplateGUID = MT.ModelTemplateGUID left join MEScoreExpansionProfile EPC with (readuncommitted) on EPC.ChildModelTemplateGUID = MT.ModelTemplateGUID inner join EMFModelTemplateWorksheet WS with (readuncommitted) on WS.ModelTemplateGUID = COALESCE(EPC.ParentModelTemplateGUID, MT.ModelTemplateGUID) inner join MEExcelCell EC with (readuncommitted) on WS.WorksheetGUID = EC.ExcelSheetGUID inner join MEScoreExpansion SE with (readuncommitted) on EC.ExcelCellGUID = SE.ExcelCellGUID where ( select COUNT(*) from data.ScoreFillin_OBFinancialReporting FI with (readuncommitted) inner join ob.DimFinancialReportingPH PH with (readuncommitted) on FI.FinancialReportingPHID = PH.FinancialReportingPHID inner join dbo.MEPHSection S with (readuncommitted) on s.PHSectionMemberGUID = ph.MemberGUID where DB.MemberGUID = FI.ModelGUID and S.FriendlyName = SE.GlobalID and S.ModelTemplateGUID = MT.ModelTemplateGUID ) > SE.[Count] union all --PAY CODE GROUP select distinct DB.DepartmentalBudgetID, DB.Name as Model, 'Has ' + cast( ( select COUNT(*) from data.ScoreFillin_PayCodeGroup FI with (readuncommitted) inner join fw.DimPayCodeGroupPH PH with (readuncommitted) on FI.PayCodeGroupPHID = PH.PayCodeGroupPHID inner join dbo.MEPHSection S with (readuncommitted) on s.PHSectionMemberGUID = ph.MemberGUID where DB.MemberGUID = FI.ModelGUID and S.FriendlyName = SE.GlobalID and S.ModelTemplateGUID = MT.ModelTemplateGUID ) as varchar(10)) + ' Pay Code Groups in section ' + SE.GlobalID + ' with maximum ' + cast(SE.[Count] as varchar(10)) as Detail from XPlan X with (readuncommitted) inner join ob.DimDepartmentalBudget DB with (readuncommitted) on X.PlanGUID = DB.MemberGUID inner join EMFModelTemplate MT with (readuncommitted) on X.ModelTemplateGUID = MT.ModelTemplateGUID left join MEScoreExpansionProfile EPC with (readuncommitted) on EPC.ChildModelTemplateGUID = MT.ModelTemplateGUID inner join EMFModelTemplateWorksheet WS with (readuncommitted) on WS.ModelTemplateGUID = COALESCE(EPC.ParentModelTemplateGUID, MT.ModelTemplateGUID) inner join MEExcelCell EC with (readuncommitted) on WS.WorksheetGUID = EC.ExcelSheetGUID inner join MEScoreExpansion SE with (readuncommitted) on EC.ExcelCellGUID = SE.ExcelCellGUID where ( select COUNT(*) from data.ScoreFillin_PayCodeGroup FI with (readuncommitted) inner join fw.DimPayCodeGroupPH PH with (readuncommitted) on FI.PayCodeGroupPHID = PH.PayCodeGroupPHID inner join dbo.MEPHSection S with (readuncommitted) on s.PHSectionMemberGUID = ph.MemberGUID where DB.MemberGUID = FI.ModelGUID and S.FriendlyName = SE.GlobalID and S.ModelTemplateGUID = MT.ModelTemplateGUID ) > SE.[Count] union all --PROVIDER select distinct DB.DepartmentalBudgetID, DB.Name as Model, 'Has ' + cast( ( select COUNT(*) from data.ScoreFillin_Provider FI with (readuncommitted) inner join fw.DimProviderPH PH with (readuncommitted) on FI.ProviderPHID = PH.ProviderPHID inner join dbo.MEPHSection S with (readuncommitted) on s.PHSectionMemberGUID = ph.MemberGUID where DB.MemberGUID = FI.ModelGUID and S.FriendlyName = SE.GlobalID and S.ModelTemplateGUID = MT.ModelTemplateGUID ) as varchar(10)) + ' Providers in section ' + SE.GlobalID + ' with maximum ' + cast(SE.[Count] as varchar(10) ) as Detail from XPlan X with (readuncommitted) inner join ob.DimDepartmentalBudget DB with (readuncommitted) on X.PlanGUID = DB.MemberGUID inner join EMFModelTemplate MT with (readuncommitted) on X.ModelTemplateGUID = MT.ModelTemplateGUID left join MEScoreExpansionProfile EPC with (readuncommitted) on EPC.ChildModelTemplateGUID = MT.ModelTemplateGUID inner join EMFModelTemplateWorksheet WS with (readuncommitted) on WS.ModelTemplateGUID = COALESCE(EPC.ParentModelTemplateGUID, MT.ModelTemplateGUID) inner join MEExcelCell EC with (readuncommitted) on WS.WorksheetGUID = EC.ExcelSheetGUID inner join MEScoreExpansion SE with (readuncommitted) on EC.ExcelCellGUID = SE.ExcelCellGUID where ( select COUNT(*) from data.ScoreFillin_Provider FI with (readuncommitted) inner join fw.DimProviderPH PH with (readuncommitted) on FI.ProviderPHID = PH.ProviderPHID inner join dbo.MEPHSection S with (readuncommitted) on s.PHSectionMemberGUID = ph.MemberGUID where DB.MemberGUID = FI.ModelGUID and S.FriendlyName = SE.GlobalID and S.ModelTemplateGUID = MT.ModelTemplateGUID ) > SE.[Count] GO --------------------------------------------- -- ob.viewExceptionsDepartmentBudgetHoursWithoutDollars /************************************************************ ** Author: akowalski ** Create Date: 2014-09-19 ** Description: Checks for job code/pay code group combos that have hours but not dollars in all time periods ** Last Modified: 2017-11-15 ** GM Release: 2014.4 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 10/26/2016 GF B-13254 Refactored for performance ** 2 06/26/2017 cbb D06077 added filter jobcodeid<>0 ** 3 11/15/2017 apukii D-06542 added filter PayCodeGroupID<>0 *************************************************************/ CREATE VIEW [ob].[viewExceptionsDepartmentBudgetHoursWithoutDollars] AS SELECT DISTINCT db.DepartmentalBudgetID, db.Name as Model, 'Has hours in pay code group ' + pcg.name + ' but no dollars for job code ' + jc.name + ' in ' + tc.name + ' ' + cast(st.FiscalYearID as char(4)) as Detail ,tc.Name ,st.FiscalYearID FROM clientob.FactStaffingPC st with (readuncommitted) INNER JOIN ob.DimDepartmentalBudget db with (readuncommitted) on db.DepartmentalBudgetID=st.DepartmentalBudgetID INNER JOIN [fw].[DimJobCode] jc with (readuncommitted) on jc.JobCodeID=st.JobCodeID INNER JOIN [fw].[DimPayCodeGroup] pcg with (readuncommitted) on pcg.PayCodeGroupID=st.PayCodeGroupID INNER JOIN [fw].[DimTimeClass] tc with (readuncommitted) on tc.TimeClassID=st.TimeClassID WHERE st.UnitTypeID in ( 51 --hours ,146 --nonproductive ,147 --differential ,148 --productive ) and pcg.ProductiveClassID<>4 and st.Total <> 0 and jc.JobCodeID <> 0 and pcg.PayCodeGroupID <> 0 and not exists( SELECT top 1 1 FROM clientob.FactStaffingPC d with (readuncommitted) WHERE 1=1 and d.UnitTypeID = 34 and d.DepartmentalBudgetID=st.DepartmentalBudgetID and d.DataTypeID=st.DataTypeID and d.FiscalYearID=st.FiscalYearID and d.JobCodeID=st.JobCodeID and d.PayCodeGroupID=st.PayCodeGroupID and d.TimeClassID=st.timeclassID and d.Total != 0 ) GO --------------------------------------------- -- ob.viewExceptionsDepartmentBudgetInactiveButYTDActivity /************************************************************ ** Author: akowalski ** Create Date: 2015-01-18 ** Description: Displays all department budgets set to inactive but have YTD actuals ** Last Modified: 2015-01-18 ** GM Release: 2015.2 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** ** *************************************************************/ create view [ob].[viewExceptionsDepartmentBudgetInactiveButYTDActivity] as select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Is set to Inactive but has YTD account activity' as Detail from [clientob].[FactAccount] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID and fct1.FiscalYearID=db.BaseYear where db.DepartmentalBudgetID<>0 and OBActivePlans=0 and TimeClassID=1 and fct1.Total<>0 GO --------------------------------------------- -- ob.viewExceptionsDepartmentBudgetInvalidBenefitConfigurations /************************************************************ ** Author: mschmitz ** Create Date: 2015-01-18 ** Description: Checks for budgets that have benefit accounts configured as % of Salaries or $ per FTE but do not have either Salaries or FTEs in the department ** Last Modified: 2015-01-18 ** GM Release: 2015.2 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** ** *************************************************************/ CREATE VIEW [ob].[viewExceptionsDepartmentBudgetInvalidBenefitConfigurations] AS SELECT DISTINCT FMETHOD.DepartmentalBudgetID, B.Name AS 'Model', 'Has benefits budgeted as a % of Salaries but there are no benefit-driving salaries in this department.' as 'Detail' FROM [clientob].[FactAccountVar] FMETHOD with (readuncommitted) INNER JOIN [ob].[DimDepartmentalBudget] B ON FMETHOD.DepartmentalBudgetID=B.DepartmentalBudgetID WHERE FMETHOD.AssumptionID = '220' --Forecast Method - Benefits AND FMETHOD.TextValue = '% of Salaries' --Filter to include only departments that do not have job codes filled in with benefits-driving pay code groups AND NOT EXISTS ( SELECT DISTINCT B2.DepartmentalBudgetID FROM [ob].[DimDepartmentalBudget] B2 with (readuncommitted) INNER JOIN [dbo].[XPlan] X ON B2.MemberGUID = X.PlanGUID INNER JOIN [data].[ScoreFillin_PayCodeGroup] SFPCG with (readuncommitted) ON SFPCG.ModelGUID = B2.MemberGUID INNER JOIN [fw].[DimPayCodeGroup] PCG with (readuncommitted) ON PCG.MemberGUID = SFPCG.FillinMemberGUID INNER JOIN [data].[ScoreFillin_JobCode] SFJC with (readuncommitted) ON SFJC.ModelGUID = B2.MemberGUID INNER JOIN [fw].[DimJobCode] JC with (readuncommitted) ON JC.MemberGUID = SFJC.FillinMemberGUID WHERE PCG.IsExcludedFromBenefits=0 AND PCG.PayCodeGroupID<>0 AND JC.JobCodeID<>0 AND FMETHOD.DepartmentalBudgetID=B2.DepartmentalBudgetID ) UNION ALL SELECT DISTINCT FMETHOD.DepartmentalBudgetID, B.Name AS 'Model', 'Has benefits budgeted as $ per FTE but there are no benefit-driving FTEs in this department.' as 'Detail' FROM [clientob].[FactAccountVar] FMETHOD with (readuncommitted) INNER JOIN [ob].[DimDepartmentalBudget] B ON FMETHOD.DepartmentalBudgetID=B.DepartmentalBudgetID WHERE FMETHOD.AssumptionID = '220' --Forecast Method - Benefits AND FMETHOD.TextValue = '$ per FTE' --Filter to include only departments that do not have job codes filled in with benefits-driving pay code groups AND NOT EXISTS ( SELECT DISTINCT B2.DepartmentalBudgetID FROM [ob].[DimDepartmentalBudget] B2 with (readuncommitted) INNER JOIN [dbo].[XPlan] X ON B2.MemberGUID = X.PlanGUID INNER JOIN [data].[ScoreFillin_PayCodeGroup] SFPCG with (readuncommitted) ON SFPCG.ModelGUID = B2.MemberGUID INNER JOIN [fw].[DimPayCodeGroup] PCG with (readuncommitted) ON PCG.MemberGUID = SFPCG.FillinMemberGUID INNER JOIN [data].[ScoreFillin_JobCode] SFJC with (readuncommitted) ON SFJC.ModelGUID = B2.MemberGUID INNER JOIN [fw].[DimJobCode] JC with (readuncommitted) ON JC.MemberGUID = SFJC.FillinMemberGUID WHERE PCG.IsExcludedFromBenefits=0 AND PCG.PayCodeGroupID<>0 AND JC.JobCodeID<>0 AND FMETHOD.DepartmentalBudgetID=B2.DepartmentalBudgetID ) GO --------------------------------------------- -- ob.viewExceptionsDepartmentBudgetInvalidDeductionSetups /********************************************************************************************************************************* ** Author: mschmitz ** Create Date: 2015-01-19 ** Description: Checks for budgets that have contract labor dollars budgeted without hours ** Last Modified: 2016-11-30 ** GM Release: 2015.2 ********************************************************************************************************************************** ** Change History ********************************************************************************************************************************** ** CID Date Author WI Description ** 1 2016-11-30 srk D-04897 Updated view to include only 'Deductions' placeholder section and ** ignore 'Deductions - Reimbursement' section because this section does not ** require gross charges in the same department. Deductions in the Reimbursement section ** are pushed from the Reimbursement model. ** *********************************************************************************************************************************/ CREATE VIEW [ob].[viewExceptionsDepartmentBudgetInvalidDeductionSetups] AS select distinct dB.DepartmentalBudgetID, dB.Name as Model, 'Is set to drive deductions by '+ ac.Textvalue+ ' but has no gross charge accounts in the model' as Detail from [data].[ScoreFillin_Account] sf1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on sf1.ModelGUID=DB.MemberGUID inner join [ob].[DimAccountPH] ph1 with (readuncommitted) on sf1.PlaceholderSectionMemberGUID=ph1.MemberGUID inner join [fw].[DimAccount] a with (readuncommitted) on sf1.AccountID=a.AccountID and a.OBModelSectionName = 'Deductions' inner join [clientob].[FactAccountVar] ac with (readuncommitted) on sf1.AccountID=ac.AccountID and ac.DepartmentalBudgetID=db.DepartmentalBudgetID where 1=1 and ph1.Name = 'Deductions' and (ac.TextValue like '%charges' or ac.TextValue = 'Default') and ac.AssumptionID=631 --'Deductions as a percent of' and ac.TimeClassID=12 and ac.FiscalYearID = (SELECT DBS.Setting from [dbo].[DBSetting] DBS where DBS.Name = 'OB_Current_Year') and not exists ( select top 1 1 from [data].[ScoreFillin_Account] SF with (readuncommitted) inner join [ob].[DimAccountPH] ph with (readuncommitted) on ph.MemberGUID=sf.PlaceholderSectionMemberGUID and ph.Name like 'Gross Charges%' where db.MemberGUID=SF.ModelGUID and SF.AccountID<>0 ) and db.DepartmentalBudgetID<>0 Union all -- check for accounts using default on Global Methods tab /********* Assumptions 1. Deductions are only ever filled in to the section that matches the patient class set on account in order to pull the global setting 2. Doesn't check if you have gross charges for the specific patient class selected 3. Doesn't check payor specific *************/ select distinct dB.DepartmentalBudgetID, dB.Name as Model, 'Is globally set to drive deductions by '+ fct2.Textvalue+ ' but has no gross charge accounts in the model' as Detail from [data].[ScoreFillin_Account] sf1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on sf1.ModelGUID=DB.MemberGUID inner join [ob].[DimAccountPH] ph1 with (readuncommitted) on sf1.PlaceholderSectionMemberGUID=ph1.MemberGUID inner join [fw].[DimAccount] a with (readuncommitted) on sf1.AccountID=a.AccountID and a.OBModelSectionName = 'Deductions' inner join [clientob].[FactAccountVar] fct1 with (readuncommitted) on sf1.AccountID=fct1.AccountID and fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [clientob].[FactAccountRollupVar] fct2 with (readuncommitted) on a.PatientClassID=fct2.PatientClassID and DB.DepartmentalBudgetID=fct2.DepartmentalBudgetID and fct1.AssumptionID=fct2.AssumptionID where 1=1 and ph1.Name = 'Deductions' and fct1.AssumptionID=631 --Volume Driver and fct1.TextValue='Global Default' and fct1.TimeClassID=12 and fct1.FiscalYearID = (SELECT DBS.Setting from [dbo].[DBSetting] DBS where DBS.Name = 'OB_Current_Year') and (fct2.TextValue like '%charges' or fct2.TextValue = 'Default') and not exists ( select top 1 1 from [data].[ScoreFillin_Account] SF with (readuncommitted) inner join [ob].[DimAccountPH] ph with (readuncommitted) on ph.MemberGUID=sf.PlaceholderSectionMemberGUID and ph.Name like 'Gross Charges%' where db.MemberGUID=SF.ModelGUID and SF.AccountID<>0 ) and db.DepartmentalBudgetID<>0 GO --------------------------------------------- -- ob.viewExceptionsDepartmentBudgetInvalidDropdownSelection /************************************************************ ** Author: akowalski ** Create Date: 2014-05-13 ** Description: Finds any text boxes that saved a value of blank that will cause #n/a errors in the model ** Last Modified: 2016-12-05 ** GM Release: 2014.3 ********************************************************************************************************* ** Change History ************************************************************** ** CID Date Author WI Description ** 1 2015-06-15 BL Filter out Not Specified Members (false positives) ** 2 2016-12-05 SK D-04790 When there are no different pay code groups, false positives need to be filtered for the differential hours and wage rates methodologies *********************************************************************************************************/ CREATE view [ob].[viewExceptionsDepartmentBudgetInvalidDropdownSelection] as --Accounts select Distinct DB.DepartmentalBudgetID, DB.Name as Model, 'Account ' + Dim.Name + ' has an invalid drop-down box selection' as Detail from clientob.factaccountvar fct with (readuncommitted) inner join ob.DimDepartmentalBudget DB with (readuncommitted) on fct.DepartmentalBudgetID=db.DepartmentalBudgetID inner join fw.DimAccount DIM with (readuncommitted) on fct.AccountID = DIM.AccountID where fct.UnitTypeID=141 --CID 1 -- and DIM.AccountID<>0 and TextValue_Formula='x' and TextValue='' Union all -- Job Codes select distinct DB.DepartmentalBudgetID, DB.Name as Model, 'Job Code ' + Dim.Name + ' has an invalid drop-down box selection' as Detail from clientob.FactStaffingPCVar fct with (readuncommitted) inner join ob.DimDepartmentalBudget DB with (readuncommitted) on fct.DepartmentalBudgetID=db.DepartmentalBudgetID inner join fw.DimJobCode DIM with (readuncommitted) on fct.JobCodeID = DIM.JobCodeID inner join [fw].[DimPayCodeGroup] pcg on fct.PayCodeGroupID = pcg.PayCodeGroupID INNER JOIN [fw].[DimAssumption] DA on fct.AssumptionID = DA.AssumptionID where fct.UnitTypeID=141 --CID 1 -- and DIM.JobCodeID<>0 and TextValue_Formula='x' and TextValue='' and EmployeeID=0 -- CID 2 -- and not ( (select count(1) from [fw].[DimPayCodeGroup] pcg1 where PCG1.ProductiveClassID = 5) = 0 and DA.Name in ('Differential Hours Methodology', 'Differential Rate Methodology') ) -- CID 2 -- Union all -- Providers select Distinct DB.DepartmentalBudgetID, DB.Name as Model, 'Provider ' + Dim.Name + ' has an invalid drop-down box selection' as Detail from clientob.FactProviderVar fct with (readuncommitted) inner join ob.DimDepartmentalBudget DB with (readuncommitted) on fct.DepartmentalBudgetID=db.DepartmentalBudgetID inner join fw.DimProvider DIM with (readuncommitted) on fct.ProviderID = DIM.ProviderID where fct.UnitTypeID=141 --CID 1 -- and DIM.ProviderID<>0 and TextValue_Formula='x' and TextValue='' union all -- Employees select Distinct DB.DepartmentalBudgetID, DB.Name as Model, 'Employee ' + Dim.Name + ' has an invalid drop-down box selection' as Detail from clientob.FactStaffingPCVar fct with (readuncommitted) inner join ob.DimDepartmentalBudget DB with (readuncommitted) on fct.DepartmentalBudgetID=db.DepartmentalBudgetID inner join fw.DimEmployee DIM with (readuncommitted) on fct.EmployeeID = DIM.EmployeeID where fct.UnitTypeID=141 --CID 1 -- and DIM.EmployeeID<>0 and TextValue_Formula='x' and TextValue='' and DIM.EmployeeID<>0 union all -- Global Methods select Distinct DB.DepartmentalBudgetID, DB.Name as Model, 'Global Method ' + Dim.LineName + ' has an invalid drop-down box selection' as Detail from clientob.FactAccountRollupVar fct with (readuncommitted) inner join ob.DimDepartmentalBudget DB with (readuncommitted) on fct.DepartmentalBudgetID=db.DepartmentalBudgetID inner join ob.DimFinancialReporting DIM with (readuncommitted) on fct.FinancialReportingID=DIM.FinancialReportingID where fct.UnitTypeID=141 --CID 1 -- and DIM.FinancialReportingID<>0 and TextValue_Formula='x' and TextValue='' GO --------------------------------------------- -- ob.viewExceptionsDepartmentBudgetInvalidGrossChargesSetups CREATE view [ob].[viewExceptionsDepartmentBudgetInvalidGrossChargesSetups] as /************************************************************ ** Author: akowalski ** Create Date: 2014-05-13 ** Description: Find mismatches between how the gross charge accounts are setup and what information is available in the model ** Last Modified: 2016-11-30 ** GM Release: 2015.2 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 2015-01-19 akk D-02448 Updating charge code section to look at global methods tab in addition to account level ** 2 2016-11-23 cbb D-03536 Provider - remove false positives when global methods are set to provider allocation ** 3 2016-11-30 srk D-04844 Updated first two unions to flag exceptions that don't have a primary revenue driver in the primary stat config screen *************************************************************/ SELECT DISTINCT dB.DepartmentalBudgetID, dB.Name as Model, 'Is set to drive charges by '+ ac.Textvalue+ ' but has no statistics in the model' as Detail from clientob.FactAccountVar ac with (readuncommitted) inner join fw.DimAssumption ASS with (readuncommitted) on ASS.AssumptionID=AC.AssumptionID inner join ob.DimDepartmentalBudget DB with (readuncommitted) on ac.DepartmentalBudgetID=db.DepartmentalBudgetID where 1=1 and ac.TextValue like '%UOS%' and ass.Name='Volume Driver' and ac.TimeClassID = 12 and ac.FiscalYearID = (SELECT DBS.Setting from [dbo].[DBSetting] DBS where DBS.Name = 'OB_Current_Year') and not exists ( select top 1 1 from data.ScoreFillin_Account SF with (readuncommitted) inner join ob.DimAccountPH ph with (readuncommitted) on ph.MemberGUID=sf.PlaceholderSectionMemberGUID and (ph.Name like 'Statistics%' or ph.Name like 'Global Stat%') INNER JOIN [ob].[viewFactDepartmentPrimaryStatisticConfiguration] PSC with (readuncommitted) on PSC.DepartmentalBudgetID = DB.DepartmentalBudgetID AND PSC.AccountID = SF.AccountID where db.MemberGUID=SF.ModelGUID and SF.AccountID<>0 AND PSC.Revenue = 1 ) and db.DepartmentalBudgetID<>0 Union all -- check for accounts using default on Global Methods tab /********* Assumptions 1. Gross Charges are only ever filled in to the section that matches the patient class set on account in order to pull the global setting 2. Doesn't check if you have stats for the specific patient class selected 3. Doesn't check payor specific *************/ SELECT DISTINCT dB.DepartmentalBudgetID, dB.Name as Model, 'Is set to drive charges by '+ fct2.Textvalue+ ' but has no statistics in the model' as Detail from [data].[ScoreFillin_Account] sf1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on sf1.ModelGUID=DB.MemberGUID inner join [ob].[DimAccountPH] ph1 with (readuncommitted) on sf1.PlaceholderSectionMemberGUID=ph1.MemberGUID inner join clientob.FactAccountVar fct1 with (readuncommitted) on sf1.AccountID=fct1.AccountID and fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [fw].[DimAccount] a with (readuncommitted) on sf1.AccountID=a.AccountID inner join [clientob].[FactAccountRollupVar] fct2 with (readuncommitted) on a.PatientClassID=fct2.PatientClassID and DB.DepartmentalBudgetID=fct2.DepartmentalBudgetID and fct1.AssumptionID=fct2.AssumptionID inner join [ob].[DimFinancialReporting] fr with (readuncommitted) on fct2.FinancialReportingID=fr.FinancialReportingID and fr.MemberGUID='e02a8750-bc0f-47ac-922b-60e4ffd3c1e5' where 1=1 and ph1.Name like 'Gross Charge%' and fct1.AssumptionID=184 --Volume Driver and fct1.TextValue='Global Default' and fct2.TextValue like '%UOS%' and fct1.TimeClassID = 12 and fct1.FiscalYearID = (SELECT DBS.Setting from [dbo].[DBSetting] DBS where DBS.Name = 'OB_Current_Year') and not exists ( select top 1 1 from data.ScoreFillin_Account SF with (readuncommitted) inner join ob.DimAccountPH ph with (readuncommitted) on ph.MemberGUID=sf.PlaceholderSectionMemberGUID and (ph.Name like 'Statistics%' or ph.Name like 'Global Stat%') INNER JOIN [ob].[viewFactDepartmentPrimaryStatisticConfiguration] PSC with (readuncommitted) on PSC.DepartmentalBudgetID = DB.DepartmentalBudgetID AND PSC.AccountID = SF.AccountID where 1=1 and db.MemberGUID=SF.ModelGUID and SF.AccountID<>0 and PSC.Revenue = 1 ) and db.DepartmentalBudgetID<>0 union all SELECT DISTINCT dB.DepartmentalBudgetID, dB.Name as Model, 'Is set to drive charges by '+ ac.Textvalue+ ' but has no charge codes in the model' as Detail from clientob.FactAccountVar ac with (readuncommitted) inner join fw.DimAssumption ASS with (readuncommitted) on ASS.AssumptionID=AC.AssumptionID inner join ob.DimDepartmentalBudget DB with (readuncommitted) on ac.DepartmentalBudgetID=db.DepartmentalBudgetID where 1=1 and TextValue like '%CDM%' and ass.Name='Volume Driver' and ac.TimeClassID = 12 and ac.FiscalYearID = (SELECT DBS.Setting from [dbo].[DBSetting] DBS where DBS.Name = 'OB_Current_Year') and not exists ( select top 1 1 from data.ScoreFillin_ChargeCode SF with (readuncommitted) inner join fw.DimChargeCodePH PH with (readuncommitted) on ph.MemberGUID=sf.PlaceholderSectionMemberGUID where 1=1 and db.MemberGUID=SF.ModelGUID and sf.ChargeCodeID<>0 ) and db.DepartmentalBudgetID<>0 Union all SELECT DISTINCT dB.DepartmentalBudgetID, dB.Name as Model, 'Is set to drive charges by '+ ac.Textvalue+ ' but has no providers in the model' as Detail from clientob.FactAccountVar ac with (readuncommitted) inner join fw.DimAssumption ASS with (readuncommitted) on ASS.AssumptionID=AC.AssumptionID inner join ob.DimDepartmentalBudget DB with (readuncommitted) on ac.DepartmentalBudgetID=db.DepartmentalBudgetID where 1=1 and TextValue like '%Provider%' and ass.Name='Volume Driver' and ac.TimeClassID = 12 and ac.FiscalYearID = (SELECT DBS.Setting from [dbo].[DBSetting] DBS where DBS.Name = 'OB_Current_Year') and not exists ( select top 1 1 from data.ScoreFillin_Provider SF with (readuncommitted) inner join fw.DimProviderPH PH with (readuncommitted) on ph.MemberGUID=sf.PlaceholderSectionMemberGUID where 1=1 and db.MemberGUID=SF.ModelGUID and sf.ProviderID<>0 ) and db.DepartmentalBudgetID<>0 union all --=============== BEGIN CID 1 ======================== SELECT DISTINCT dB.DepartmentalBudgetID, dB.Name as Model, 'Is calculating revenue by charge code in section ' + substring(ph.Name,16,100) + ' but has no gross charge accounts configured to be impacted' as Detail from data.ScoreFillin_ChargeCode SF with (readuncommitted) inner join [fw].[DimChargeCodePH] ph with (readuncommitted) on SF.ChargeCodePHID=ph.ChargeCodePHID inner join ob.DimDepartmentalBudget DB with (readuncommitted) on SF.ModelGUID=db.MemberGUID and not exists ( select top 1 1 from clientob.FactAccountVar fct1 with (readuncommitted) inner join [fw].[DimAccount] a on fct1.AccountID=a.AccountID and a.PatientClass=substring(ph.Name,16,100) where 1=1 and db.MemberGUID=SF.ModelGUID and DB.DepartmentalBudgetID=fct1.DepartmentalBudgetID and TextValue like '%CDM%' and fct1.AssumptionID=184 --Volume Driver and fct1.TimeClassID = 12 and fct1.FiscalYearID = (SELECT DBS.Setting from [dbo].[DBSetting] DBS where DBS.Name = 'OB_Current_Year') ) and not exists ( select top 1 1 from clientob.FactAccountRollupVar fct1 with (readuncommitted) inner join [fw].[DimPatientClass] pc on fct1.patientclassid=pc.PatientClassID and pc.Name=substring(ph.Name,16,100) inner join [ob].[DimFinancialReporting] fr with (readuncommitted) on fct1.FinancialReportingID=fr.FinancialReportingID and fr.MemberGUID='e02a8750-bc0f-47ac-922b-60e4ffd3c1e5' inner join [clientob].[FactAccountVar] fct2 with (readuncommitted) on fct2.DepartmentalBudgetID=fct1.DepartmentalBudgetID and fct1.AssumptionID=fct2.AssumptionID inner join [fw].[DimAccount] a on fct2.AccountID=a.AccountID and pc.PatientClassID=a.PatientClassID inner join [data].[ScoreFillin_Account] sf on a.AccountID=sf.AccountID and DB.MemberGUID=sf.ModelGUID where 1=1 and db.MemberGUID = SF.ModelGUID and DB.DepartmentalBudgetID = fct1.DepartmentalBudgetID and fct1.TextValue like '%CDM%' and fct1.AssumptionID = 184 --Volume Driver and fct2.TextValue = 'Global Default' and fct1.TimeClassID = 12 and fct1.FiscalYearID = (SELECT DBS.Setting from [dbo].[DBSetting] DBS where DBS.Name = 'OB_Current_Year') and sf.AccountPHID in ( '468', --'Gross Charges - Clinic', '467', --'Gross Charges - ED', '14', --'Gross Charges - Inpatient', '466', --'Gross Charges - Observation', '16', --'Gross Charges - Other', '18'--'Gross Charges - Outpatient' ) ) and sf.ChargeCodeID<>0 and db.DepartmentalBudgetID<>0 --=============== END CID 1 ======================== union all --=============== BEGIN CID 2 ======================== SELECT DISTINCT DepartmentalBudgetID = dB.DepartmentalBudgetID, Model = dB.Name, Detail = 'Is calculating revenue by provider but has no gross charge accounts configured to be impacted' from data.ScoreFillin_Provider SF with (readuncommitted) inner join [fw].[DimProviderPH] ph on SF.PlaceholderSectionMemberGUID = ph.MemberGUID inner join ob.DimDepartmentalBudget DB with (readuncommitted) on SF.ModelGUID=db.MemberGUID and not exists ( select top 1 1 from clientob.FactAccountVar AC with (readuncommitted) inner join fw.DimAssumption ASS with (readuncommitted) on ASS.AssumptionID=AC.AssumptionID where 1=1 and DB.DepartmentalBudgetID = AC.DepartmentalBudgetID and ac.TextValue = 'Provider Charge Allocation' and ass.Name = 'Volume Driver' and ac.TimeClassID = 12 and ac.FiscalYearID = (SELECT DBS.Setting from [dbo].[DBSetting] DBS where DBS.Name = 'OB_Current_Year') ) and not exists ( select top 1 1 from clientob.FactAccountRollupVar fct1 with (readuncommitted) inner join [clientob].[FactAccountVar] fct2 with (readuncommitted) on fct2.DepartmentalBudgetID=fct1.DepartmentalBudgetID and fct1.AssumptionID=fct2.AssumptionID inner join [fw].[DimAccount] a with (readuncommitted) on fct2.AccountID=a.AccountID and fct1.PatientClassID=a.PatientClassID inner join [data].[ScoreFillin_Account] sf with (readuncommitted) on a.AccountID=sf.AccountID and DB.MemberGUID=sf.ModelGUID where 1=1 and db.MemberGUID=SF.ModelGUID and DB.DepartmentalBudgetID=fct1.DepartmentalBudgetID and fct1.TextValue = 'Provider Charge Allocation' and fct1.AssumptionID = 184 --Volume Driver and fct2.TextValue = 'Global Default' and fct1.TimeClassID = 12 and fct1.FiscalYearID = (SELECT DBS.Setting from [dbo].[DBSetting] DBS where DBS.Name = 'OB_Current_Year') and sf.AccountPHID in ( '468', --'Gross Charges - Clinic', '467', --'Gross Charges - ED', '14', --'Gross Charges - Inpatient', '466', --'Gross Charges - Observation', '16', --'Gross Charges - Other', '18'--'Gross Charges - Outpatient' ) ) and sf.ProviderID<>0 and db.DepartmentalBudgetID<>0 --=============== END CID 2 ======================== GO --------------------------------------------- -- ob.viewExceptionsDepartmentBudgetInvalidSpreadSelections /************************************************************ ** Author: akowalski ** Create Date: 2015-01-18 ** Description: Displays any spread methods that will not match anything on the spreads tab ** Last Modified: 2015-01-18 ** GM Release: 2015.2 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** ** *************************************************************/ create view [ob].[viewExceptionsDepartmentBudgetInvalidSpreadSelections] as -- account select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Has an invalid spread setting for account ' + sf.FillinMemberName + 'in section ' + ph.Name as Detail from [clientob].[FactAccountVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_Account] sf with (readuncommitted) on fct1.AccountID=sf.AccountID and sf.ModelGUID=db.MemberGUID inner join [ob].[DimAccountPH] ph with (readuncommitted) on ph.AccountPHID=sf.AccountPHID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and fct1.AssumptionID=116 --Spread Method and fct1.TimeClassID=2 and fct1.TextValue not in ( -- hard coded spreads select val as name from [dbo].[ConvertCSValuesToTable] ('Default,Projected,Current Year Budget,Last Year Actual,Annualized,Actual-Budget,Rolling 12,Seasonalization,Act-Bud Var,Even,Days in Month,Budget UOS,Projected UOS,Budget Inpatient UOS,Budget Outpatient UOS,Budget Other UOS,Budget IP and OP UOS,Last Year Worked Hours,Current Year Worked Hours,Next Year Worked Hours,Hours in Month,Gross Revenue,Hours,Salaries,Quarterly,Volume Driver,Zero Based',',') union all -- global spreads select fct1.Name from [clientob].[FactGlobalSpreads] fct1 inner join [ob].[DimSpread] dim1 on fct1.SpreadID=dim1.SpreadID where dim1.IsBuiltIn=0 union all -- department specific spreads select Text from [clientob].[FactSpreadVar] fct2 where fct2.AssumptionID=117 --Spread Name and fct2.DepartmentalBudgetID<>0 and db.DepartmentalBudgetID=fct2.DepartmentalBudgetID ) union all -- Job Code dollars only select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Has an invalid spread setting for Job Code ' + sf.FillinMemberName + ' in section ' + ph.Name as Detail from [clientob].[FactStaffingPCVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_JobCode] sf with (readuncommitted) on fct1.JobCodeID=sf.JobCodeID and sf.ModelGUID=db.MemberGUID inner join [fw].[DimPayCodeGroup] ph with (readuncommitted) on fct1.PayCodeGroupid=ph.PayCodeGroupID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and fct1.AssumptionID=116 --Spread Method and fct1.PayCodeGroupID<>0 and fct1.TimeClassID=2 and fct1.TextValue not in ( -- hard coded spreads select val as name from [dbo].[ConvertCSValuesToTable] ('Default,Projected,Current Year Budget,Last Year Actual,Annualized,Actual-Budget,Rolling 12,Seasonalization,Act-Bud Var,Even,Days in Month,Budget UOS,Projected UOS,Budget Inpatient UOS,Budget Outpatient UOS,Budget Other UOS,Budget IP and OP UOS,Last Year Worked Hours,Current Year Worked Hours,Next Year Worked Hours,Hours in Month,Gross Revenue,Hours,Salaries,Quarterly,Volume Driver,Zero Based',',') union all -- global spreads select fct1.Name from [clientob].[FactGlobalSpreads] fct1 inner join [ob].[DimSpread] dim1 on fct1.SpreadID=dim1.SpreadID where dim1.IsBuiltIn=0 union all -- department specific spreads select Text from [clientob].[FactSpreadVar] fct2 where fct2.AssumptionID=117 --Spread Name and fct2.DepartmentalBudgetID<>0 and db.DepartmentalBudgetID=fct2.DepartmentalBudgetID ) union all -- charge code volume spread select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Has an invalid volume spread setting for Charge Code ' + sf.FillinMemberName + ' in section ' + pc.Name as Detail from [clientob].[FactCDMVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_ChargeCode] sf with (readuncommitted) on fct1.ChargeCodeID=sf.ChargeCodeID and sf.ModelGUID=db.MemberGUID inner join [fw].[DimPatientClass] pc with (readuncommitted) on pc.PatientClassID=fct1.PatientClassID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and fct1.ChargeCodeID<>0 and fct1.AssumptionID=116 --Spread Method and fct1.TimeClassID=2 and fct1.TextValue not in ( -- hard coded spreads select val as name from [dbo].[ConvertCSValuesToTable] ('Default,Projected,Current Year Budget,Last Year Actual,Annualized,Actual-Budget,Rolling 12,Seasonalization,Act-Bud Var,Even,Days in Month,Budget UOS,Projected UOS,Budget Inpatient UOS,Budget Outpatient UOS,Budget Other UOS,Budget IP and OP UOS,Last Year Worked Hours,Current Year Worked Hours,Next Year Worked Hours,Hours in Month,Gross Revenue,Hours,Salaries,Quarterly,Volume Driver,Zero Based',',') union all -- global spreads select fct1.Name from [clientob].[FactGlobalSpreads] fct1 inner join [ob].[DimSpread] dim1 on fct1.SpreadID=dim1.SpreadID where dim1.IsBuiltIn=0 union all -- department specific spreads select Text from [clientob].[FactSpreadVar] fct2 where fct2.AssumptionID=117 --Spread Name and fct2.DepartmentalBudgetID<>0 and db.DepartmentalBudgetID=fct2.DepartmentalBudgetID ) union all /************* Provider overrides ********************/ -- Budget vol/rev select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Has an invalid spread setting for Provider ' + sf.FillinMemberName + ' for forecast detail ' + fd.Name as Detail from [clientob].[FactProviderVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_Provider] sf with (readuncommitted) on fct1.ProviderID=sf.ProviderID and sf.ModelGUID=db.MemberGUID inner join [ob].[DimOBForecastDetail] fd with (readuncommitted) on fct1.OBForecastDetailID=fd.OBForecastDetailID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and fct1.ProviderID<>0 and fct1.AssumptionID=116 --Spread Method and fct1.TimeClassID=2 and fct1.TextValue not in ( -- hard coded spreads select val as name from [dbo].[ConvertCSValuesToTable] ('Default,Projected,Current Year Budget,Last Year Actual,Annualized,Actual-Budget,Rolling 12,Seasonalization,Act-Bud Var,Even,Days in Month,Budget UOS,Projected UOS,Budget Inpatient UOS,Budget Outpatient UOS,Budget Other UOS,Budget IP and OP UOS,Last Year Worked Hours,Current Year Worked Hours,Next Year Worked Hours,Hours in Month,Gross Revenue,Hours,Salaries,Quarterly,Volume Driver,Zero Based',',') union all -- global spreads select fct1.Name from [clientob].[FactGlobalSpreads] fct1 inner join [ob].[DimSpread] dim1 on fct1.SpreadID=dim1.SpreadID where dim1.IsBuiltIn=0 union all -- department specific spreads select Text from [clientob].[FactSpreadVar] fct2 where fct2.AssumptionID=117 --Spread Name and fct2.DepartmentalBudgetID<>0 and db.DepartmentalBudgetID=fct2.DepartmentalBudgetID ) union all -- Budget comp select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Has an invalid spread setting for Provider ' + sf.FillinMemberName + ' for forecast detail ' + fd.Name as Detail from [clientob].[FactProviderVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_Provider] sf with (readuncommitted) on fct1.ProviderID=sf.ProviderID and sf.ModelGUID=db.MemberGUID inner join [ob].[DimOBForecastDetail] fd with (readuncommitted) on fct1.OBForecastDetailID=fd.OBForecastDetailID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and fct1.ProviderID<>0 and fct1.AssumptionID=107 --Projection Method and fct1.TimeClassID=2 and fct1.TextValue not in ( -- hard coded spreads select val as name from [dbo].[ConvertCSValuesToTable] ('Default,Projected,Current Year Budget,Last Year Actual,Annualized,Actual-Budget,Rolling 12,Seasonalization,Act-Bud Var,Even,Days in Month,Budget UOS,Projected UOS,Budget Inpatient UOS,Budget Outpatient UOS,Budget Other UOS,Budget IP and OP UOS,Last Year Worked Hours,Current Year Worked Hours,Next Year Worked Hours,Hours in Month,Gross Revenue,Hours,Salaries,Quarterly,Volume Driver,Zero Based',',') union all -- global spreads select fct1.Name from [clientob].[FactGlobalSpreads] fct1 inner join [ob].[DimSpread] dim1 on fct1.SpreadID=dim1.SpreadID where dim1.IsBuiltIn=0 union all -- department specific spreads select Text from [clientob].[FactSpreadVar] fct2 where fct2.AssumptionID=117 --Spread Name and fct2.DepartmentalBudgetID<>0 and db.DepartmentalBudgetID=fct2.DepartmentalBudgetID ) GO --------------------------------------------- -- ob.viewExceptionsDepartmentBudgetInvalidVariableExpenseConfigurations /************************************************************ ** Author: akowalski ** Create Date: 2014-08-27 ** Description: Finds departments with variable job codes or accounts with no statistics configured to drive them ** Last Modified: 2017-02-27 ** GM Release: 2014.4 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 2016-11-29 srk D-04844 In templates >2016.3, stat driver assumptions are not stored in var tables. ** these need to be pulled directly from the primary statistic table. ** 2 2016-02-27 srk D-05529 Fixed join on department ID. *************************************************************/ CREATE view [ob].[viewExceptionsDepartmentBudgetInvalidVariableExpenseConfigurations] as --INVALID STAFFING DRIVER CONFIGURATION SELECT DISTINCT DB.DepartmentalBudgetID, DB.Name as Model, 'Has variable job codes but no statistic accounts configured as staffing drivers' as Detail FROM [data].[ScoreFillin_JobCode] SF1 with (readuncommitted) INNER JOIN ob.DimDepartmentalBudget DB with (readuncommitted) on DB.MemberGUID=SF1.ModelGUID INNER JOIN [fw].[DimDepartment] DD with (readuncommitted) on DB.DepartmentID=DD.DepartmentID WHERE 1=1 AND SF1.PlaceholderSectionMemberGUID='ae9287bc-5f5f-408f-afdf-146cae3272ae' --Staffing - Job Code (Variable) AND DD.IsVariable=1 AND NOT EXISTS ( SELECT top 1 1 from data.ScoreFillin_Account SF with (readuncommitted) INNER JOIN ob.DimAccountPH PH with (readuncommitted) on PH.MemberGUID=sf.PlaceholderSectionMemberGUID AND (ph.Name like 'Statistics%' OR ph.Name like 'Global Stat%') INNER JOIN [ob].[viewFactDepartmentPrimaryStatisticConfiguration] PSC with (readuncommitted) on PSC.DepartmentalBudgetID = DB.DepartmentalBudgetID AND PSC.AccountID = SF.AccountID WHERE DB.MemberGUID=SF.ModelGUID AND SF.AccountID<>0 AND PSC.Staffing = 1 --Staffing Driver ) union all --INVALID NON-STAFFING EXPENSE DRIVER CONFIGURATION SELECT DISTINCT DB.DepartmentalBudgetID, DB.Name as Model, 'Has variable expense accounts but no statistic accounts configured as expense account drivers' as Detail FROM [data].[ScoreFillin_Account] SF1 with (readuncommitted) INNER JOIN ob.DimDepartmentalBudget DB with (readuncommitted) on DB.MemberGUID=SF1.ModelGUID INNER JOIN [fw].[DimDepartment] DD with (readuncommitted) on DB.DepartmentID=DD.DepartmentID --CID 2 INNER JOIN [fw].[DimAccount] DA on SF1.AccountID=DA.AccountID WHERE 1=1 AND SF1.PlaceholderSectionMemberGUID='aa2a181f-d126-4b47-ac88-dba1445508a7' --Expenses - Non-Staffing AND DD.IsVariable=1 AND DA.Variability=1 AND NOT EXISTS ( SELECT top 1 1 from data.ScoreFillin_Account SF with (readuncommitted) INNER JOIN ob.DimAccountPH PH with (readuncommitted) on PH.MemberGUID=SF.PlaceholderSectionMemberGUID AND (PH.Name like 'Statistics%' or PH.Name like 'Global Stat%') INNER JOIN [ob].[viewFactDepartmentPrimaryStatisticConfiguration] PSC with (readuncommitted) on PSC.DepartmentalBudgetID = DB.DepartmentalBudgetID AND PSC.AccountID = SF.AccountID WHERE db.MemberGUID=SF.ModelGUID AND SF.AccountID<>0 AND PSC.NonStaffingExpense = 1 --Non-Staffing Expense Driver ) GO --------------------------------------------- -- ob.viewExceptionsDepartmentBudgetMissingGlobalStatisticConfigurations /************************************************************ ** Author: akowalski ** Create Date: 2014-09-19 ** Description: Checks statistics filled into department budgets where there is a global statistic model associated with the department ** Last Modified: 2014-09-19 ** GM Release: 2014.4 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** ** *************************************************************/ create view ob.viewExceptionsDepartmentBudgetMissingGlobalStatisticConfigurations as select Distinct dB.DepartmentalBudgetID, dB.Name as Model, a.Name + ' appears as a statistic in the model but has no global statistic configured' as Detail from data.ScoreFillin_Account SF with (readuncommitted) inner join ob.DimDepartmentalBudget DB with (readuncommitted) on DB.MemberGUID=SF.ModelGUID inner join [fw].[DimDepartment] d with (readuncommitted) on DB.DepartmentID=d.DepartmentID inner join [fw].[DimAccount] a with (readuncommitted) on sf.AccountID=a.AccountID inner join ob.DimAccountPH ph with (readuncommitted) on ph.MemberGUID=sf.PlaceholderSectionMemberGUID left outer join [ob].[DimOBGlobalStatistics] gs with (readuncommitted) on gs.AccountID=a.AccountID and gs.DepartmentID=d.DepartmentID where (ph.Name like 'Statistics%' or ph.Name like 'Global Stat%') and gs.Name is null and db.DepartmentalBudgetID<>0 and d.OBGlobalStatisticsPlanID<>0 and a.IsGlobal=0 union all select Distinct dB.DepartmentalBudgetID, dB.Name as Model, a.Name + ' appears as a statistic in the department model but is not filled into the global statistic model' as Detail from data.ScoreFillin_Account SF with (readuncommitted) inner join ob.DimDepartmentalBudget DB with (readuncommitted) on DB.MemberGUID=SF.ModelGUID inner join [fw].[DimDepartment] d with (readuncommitted) on DB.DepartmentID=d.DepartmentID inner join [fw].[DimAccount] a with (readuncommitted) on sf.AccountID=a.AccountID inner join ob.DimAccountPH ph with (readuncommitted) on ph.MemberGUID=sf.PlaceholderSectionMemberGUID inner join [ob].[DimOBGlobalStatistics] gs with (readuncommitted) on gs.AccountID=a.AccountID and gs.DepartmentID=d.DepartmentID inner join [ob].[DimOBGlobalStatisticsPlan] gsp with (readuncommitted) on gsp.OBGlobalStatisticsPlanID=d.OBGlobalStatisticsPlanID left outer join [data].[ScoreFillin_OBGlobalStatistics] sf2 with (readuncommitted) on sf2.ModelGUID=gsp.MemberGUID and sf2.FillinMemberGUID=gs.MemberGUID where (ph.Name like 'Statistics%' or ph.Name like 'Global Stat%') and sf2.FillinGUID is null and db.DepartmentalBudgetID<>0 and d.OBGlobalStatisticsPlanID<>0 and a.IsGlobal=0 union all select Distinct dB.DepartmentalBudgetID, dB.Name as Model, a.Name + ' appears as a statistic in the department model but is not configured in the global stats to department mapping table' as Detail from data.ScoreFillin_Account SF with (readuncommitted) inner join ob.DimDepartmentalBudget DB with (readuncommitted) on DB.MemberGUID=SF.ModelGUID inner join [fw].[DimDepartment] d with (readuncommitted) on DB.DepartmentID=d.DepartmentID inner join [fw].[DimAccount] a with (readuncommitted) on sf.AccountID=a.AccountID inner join ob.DimAccountPH ph with (readuncommitted) on ph.MemberGUID=sf.PlaceholderSectionMemberGUID inner join [ob].[DimOBGlobalStatisticsPlan] gsp with (readuncommitted) on gsp.OBGlobalStatisticsPlanID=d.OBGlobalStatisticsPlanID inner join [ob].[DimOBGlobalStatistics] gs with (readuncommitted) on gs.AccountID=a.AccountID and gs.DepartmentID=0 left outer join [clientob].[FactGlobalStatisticsDeptMapping] fct with (readuncommitted) on fct.OBGlobalStatisticsPlanID=gsp.OBGlobalStatisticsPlanID and d.DepartmentID=fct.DepartmentID and fct.OBGlobalStatisticID=gs.OBGlobalStatisticID where (ph.Name like 'Statistics%' or ph.Name like 'Global Stat%') and fct.RowID is null and db.DepartmentalBudgetID<>0 and d.OBGlobalStatisticsPlanID<>0 and a.IsGlobal=1 GO --------------------------------------------- -- ob.viewExceptionsDepartmentBudgetMissingNotSpecifiedFillins /************************************************************ ** Author: dmoldawer ** Create Date: 2014-03-21 ** Description: Finds all missing not specified fillins in the OB Departmental Budget model for the Account, Employee, Job Code, OB Financial Reporting, Pay Code Group, and Provider dimensions ** Last Modified: 2013-03-21 ** GM Release: 2014.3 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** ** *************************************************************/ CREATE view [ob].[viewExceptionsDepartmentBudgetMissingNotSpecifiedFillins] as select DB.DepartmentalBudgetID, DB.Name as Model, 'Is Missing the Not Specified Employee' as Detail from ob.DimDepartmentalBudget DB with (readuncommitted) where not exists(select 1 from data.ScoreFillin_Employee FI with (readuncommitted) where FI.ModelGUID = DB.MemberGUID and FI.EmployeeID = 0 and FI.EmployeePHID = 0) and DB.DepartmentalBudgetID != 0 and db.obactiveplans=1 union all select DB.DepartmentalBudgetID, DB.Name as Model, 'Is Missing the Not Specified Job Code' as Detail from ob.DimDepartmentalBudget DB with (readuncommitted) where not exists(select 1 from data.ScoreFillin_JobCode FI with (readuncommitted) where FI.ModelGUID = DB.MemberGUID and FI.JobCodeID = 0 and FI.JobCodePHID = 0) and DB.DepartmentalBudgetID != 0 and db.obactiveplans=1 union all select DB.DepartmentalBudgetID, DB.Name as Model, 'Is Missing the Not Specified Pay Code Group' as Detail from ob.DimDepartmentalBudget DB with (readuncommitted) where not exists(select 1 from data.ScoreFillin_PayCodeGroup FI with (readuncommitted) where FI.ModelGUID = DB.MemberGUID and FI.PayCodeGroupID = 0 and FI.PayCodeGroupPHID = 0) and DB.DepartmentalBudgetID != 0 and db.obactiveplans=1 GO --------------------------------------------- -- ob.viewExceptionsDepartmentBudgetMissingPayrollToAccountCrosswalkConfigurations /************************************************************ ** Author: mschmitz ** Create Date: 2015-01-18 ** Description: Checks for job code/pay code group combos that have dollars budgeted but no matching GL account in the payroll to account crosswalk ** Last Modified: 2016-11-25 ** GM Release: 2017.1 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 2016-11-25 vyaremko D-04954 ** *************************************************************/ CREATE VIEW ob.viewExceptionsDepartmentBudgetMissingPayrollToAccountCrosswalkConfigurations AS SELECT DISTINCT F.DepartmentalBudgetID, B.Name AS 'Model', CASE F.UnitTypeID WHEN 34 THEN 'Has ' + PCG.Name +' dollars budgeted to ' + JC.Name + ' but this payroll combination is not mapped to a GL account' WHEN 51 THEN 'Has ' + PCG.Name +' hours budgeted to ' + JC.Name + ' but this payroll combination is not mapped to a GL account' END AS 'Detail' FROM [clientob].[FactStaffingPC] F with (readuncommitted) INNER JOIN [ob].[DimDepartmentalBudget] B with (readuncommitted) ON F.DepartmentalBudgetID = B.DepartmentalBudgetID INNER JOIN [fw].[DimPayCodeGroup] PCG with (readuncommitted) ON F.PayCodeGroupID = PCG.PayCodeGroupID INNER JOIN [fw].[DimJobCode] JC with (readuncommitted) ON F.JobCodeID = JC.JobCodeID WHERE F.Total <> 0 AND F.UnitTypeID in (34, 51) AND F.DataTypeID = 3 AND NOT EXISTS ( SELECT 1 FROM [clientob].[FactPayrollToAccountCrosswalk] X with (readuncommitted) WHERE ( (X.JobCodeID = F.JobCodeID AND X.PayCodeGroupID = F.PayCodeGroupID) --pay code group and job code specific OR (X.JobCodeID = F.JobCodeID AND X.PayCodeGroupID = 0) --job code specific OR (X.JobCodeID = 0 AND X.PayCodeGroupID = F.PayCodeGroupID) --pay code group specific ) AND X.UnitTypeID = F.UnitTypeID AND X.IsDeleted = 0 ) GO --------------------------------------------- -- ob.viewExceptionsDepartmentBudgetMissingPrimaryStatisticConfigurations /************************************************************ ** Author: akowalski ** Create Date: 2014-08-27 ** Description: Find mismatches between what is configured in the department primary statistic table and what is actually filled into the model ** Last Modified: 2014-08-27 ** GM Release: 2014.4 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 2014-12-1 blewis D-02439 Report should exclude inactive departments and fixed departments without gross charges ** *************************************************************/ CREATE view [ob].[viewExceptionsDepartmentBudgetMissingPrimaryStatisticConfigurations] as select Distinct dB.DepartmentalBudgetID, dB.Name as Model, a.Name + ' appears as a statistic in the model but is not configured in the driver statistic table' as Detail from data.ScoreFillin_Account SF with (readuncommitted) inner join ob.DimDepartmentalBudget DB with (readuncommitted) on DB.MemberGUID=SF.ModelGUID --*********************CID 1 ******************************* inner join [fw].[DimDepartment] d with (readuncommitted) on DB.DepartmentID=DB.DepartmentID --*********************CID 1 ******************************* inner join [fw].[DimAccount] a with (readuncommitted) on sf.AccountID=a.AccountID inner join ob.DimAccountPH ph with (readuncommitted) on ph.MemberGUID=sf.PlaceholderSectionMemberGUID left outer join [client].[FactDepartmentPrimaryStatisticConfiguration] ps with (readuncommitted) on DB.DepartmentID=ps.DepartmentID and a.AccountID=ps.AccountID where (ph.Name like 'Statistics%' or ph.Name like 'Global Stat%') and ps.RowID is null and db.DepartmentalBudgetID<>0 --*********************CID 1 ******************************* and d.IsVariable=1 and d.IsActive=1 --*********************CID 1 ******************************* union all select Distinct dB.DepartmentalBudgetID, dB.Name as Model, a.Name + ' appears in the driver statistic table but does not appear in the model' as Detail from [client].[FactDepartmentPrimaryStatisticConfiguration] ps with (readuncommitted) inner join ob.DimDepartmentalBudget DB with (readuncommitted) on ps.DepartmentID=db.DepartmentID --*********************CID 1 ******************************* inner join [fw].[DimDepartment] d with (readuncommitted) on DB.DepartmentID=DB.DepartmentID --*********************CID 1 ******************************* inner join [fw].[DimAccount] a with (readuncommitted) on ps.AccountID=a.AccountID cross join [ob].[DimAccountPH] ph with (readuncommitted) left outer join data.ScoreFillin_Account SF with (readuncommitted) on a.AccountID=SF.AccountID and DB.MemberGUID=SF.ModelGUID where (ph.Name like 'Statistics%' or ph.Name like 'Global Stat%') and sf.RowID is null and db.DepartmentalBudgetID<>0 --*********************CID 1 ******************************* and d.IsVariable=1 and d.IsActive=1 --*********************CID 1 ******************************* --Fixed Departments with Charges (Section Unioned for CID 1) union all select Distinct dB.DepartmentalBudgetID, dB.Name as Model, a.Name + ' appears as a statistic in the model but is not configured in the driver statistic table' as Detail from data.ScoreFillin_Account SF with (readuncommitted) inner join ob.DimDepartmentalBudget DB with (readuncommitted) on DB.MemberGUID=SF.ModelGUID inner join [fw].[DimDepartment] d with (readuncommitted) on DB.DepartmentID=DB.DepartmentID inner join [fw].[DimAccount] a with (readuncommitted) on sf.AccountID=a.AccountID inner join ob.DimAccountPH ph with (readuncommitted) on ph.MemberGUID=sf.PlaceholderSectionMemberGUID left outer join [client].[FactDepartmentPrimaryStatisticConfiguration] ps with (readuncommitted) on DB.DepartmentID=ps.DepartmentID and a.AccountID=ps.AccountID where (ph.Name like 'Statistics%' or ph.Name like 'Global Stat%') and ps.RowID is null and db.DepartmentalBudgetID<>0 and d.IsVariable=0 and d.IsActive=1 --Only Include Fixed Departments with Charges and DB.MemberGUID IN(SELECT sfa.[ModelGUID] FROM [data].[ScoreFillin_Account] sfa inner join [ob].[DimAccountPH] aph on sfa.AccountPHID=aph.AccountPHID where aph.Name like 'Gross Charges%') union all select Distinct dB.DepartmentalBudgetID, dB.Name as Model, a.Name + ' appears in the driver statistic table but does not appear in the model' as Detail from [client].[FactDepartmentPrimaryStatisticConfiguration] ps with (readuncommitted) inner join ob.DimDepartmentalBudget DB with (readuncommitted) on ps.DepartmentID=db.DepartmentID inner join [fw].[DimDepartment] d with (readuncommitted) on DB.DepartmentID=DB.DepartmentID inner join [fw].[DimAccount] a with (readuncommitted) on ps.AccountID=a.AccountID cross join [ob].[DimAccountPH] ph with (readuncommitted) left outer join data.ScoreFillin_Account SF with (readuncommitted) on a.AccountID=SF.AccountID and DB.MemberGUID=SF.ModelGUID where (ph.Name like 'Statistics%' or ph.Name like 'Global Stat%') and sf.RowID is null and db.DepartmentalBudgetID<>0 and d.IsVariable=0 and d.IsActive=1 --Only Include Fixed Departments with Charges and DB.MemberGUID IN(SELECT sfa.[ModelGUID] FROM [data].[ScoreFillin_Account] sfa inner join [ob].[DimAccountPH] aph on sfa.AccountPHID=aph.AccountPHID where aph.Name like 'Gross Charges%') GO --------------------------------------------- -- ob.viewExceptionsDepartmentBudgetMissingProductivityStandards /************************************************************ ** Author: akowalski ** Create Date: 2014-08-27 ** Description: Finds departments with variable job codes but no productivity standard specified ** Last Modified: 2014-08-27 ** GM Release: 2014.4 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 2016-02-01 CBB/BL(assist) D-03585 exclude plans if template setting is projected ** *************************************************************/ create view [ob].[viewExceptionsDepartmentBudgetMissingProductivityStandards] as select Distinct dB.DepartmentalBudgetID, dB.Name as Model, 'Has variable job codes but no productivity standard specified for the current year projection' as Detail from [data].[ScoreFillin_JobCode] sf1 with (readuncommitted) inner join ob.DimDepartmentalBudget DB with (readuncommitted) on DB.MemberGUID=sf1.ModelGUID inner join [fw].[DimDepartment] d with (readuncommitted) on DB.DepartmentID=d.DepartmentID --CID 1 begin inner join [dbo].[XPlan] x on DB.MemberGUID=x.PlanGUID inner join [dbo].[TemplateSettings] ts on x.ModelTemplateGUID=ts.TemplateGUID --CID 1 end where sf1.PlaceholderSectionMemberGUID='ae9287bc-5f5f-408f-afdf-146cae3272ae' --Staffing - Job Code (Variable) and d.IsVariable=1 and db.OBActivePlans=1 and (db.WorkedHrsperUOSProjection=0) --CID 1 begin and ts.SettingID='GlobalDefaults_Staffing_HrsperUOS_ProjectedOrSupplied' and ts.Value='Supplied' --CID 1 end union all select Distinct dB.DepartmentalBudgetID, dB.Name as Model, 'Has variable job codes but no productivity standard specified for next year''s budget' as Detail from [data].[ScoreFillin_JobCode] sf1 with (readuncommitted) inner join ob.DimDepartmentalBudget DB with (readuncommitted) on DB.MemberGUID=sf1.ModelGUID inner join [fw].[DimDepartment] d with (readuncommitted) on DB.DepartmentID=d.DepartmentID --CID 1 begin inner join [dbo].[XPlan] x on DB.MemberGUID=x.PlanGUID inner join [dbo].[TemplateSettings] ts on x.ModelTemplateGUID=ts.TemplateGUID --CID 1 end where sf1.PlaceholderSectionMemberGUID='ae9287bc-5f5f-408f-afdf-146cae3272ae' --Staffing - Job Code (Variable) and d.IsVariable=1 and DB.OBActivePlans=1 and (db.WorkedHrsperUOSBudget=0) --CID 1 begin and ts.SettingID='GlobalDefaults_Staffing_HrsperUOS_ProjectedOrSupplied' and ts.Value='Supplied' --CID 1 end GO --------------------------------------------- -- ob.viewExceptionsDepartmentBudgetMissingProviderBenefitAccounts CREATE view [ob].[viewExceptionsDepartmentBudgetMissingProviderBenefitAccounts] as select distinct DB.DepartmentalBudgetID, DB.Name as Model, 'Is forecasting provider benefit type ' + fd.Name + ' but has no benefit accounts filled into the model' as Detail from ob.DimDepartmentalBudget DB with (readuncommitted) inner join [data].[ScoreFillin_OBForecastDetail] sf on db.memberguid=sf.ModelGUID and OBForecastDetailPHID=18 --Provider - Benefits inner join [ob].[DimOBForecastDetail] fd on sf.OBForecastDetailID=fd.OBForecastDetailID inner join [data].[ScoreFillin_Provider] sfp with (readuncommitted) on sfp.ProviderPHID<>0 and db.MemberGUID=sfp.modelguid and sfp.ProviderID<>0 where not exists (select 1 from data.ScoreFillin_Account FI with (readuncommitted) where FI.ModelGUID = DB.MemberGUID and FI.AccountID<>0 and FI.AccountPHID = 7 /*Benefits*/) and DB.DepartmentalBudgetID != 0 and db.obactiveplans=1 GO --------------------------------------------- -- ob.viewExceptionsDepartmentBudgetMissingProviderDeductionAccounts /************************************************************ ** Author: bparrott ** Create Date: 2015-01-18 ** Description: Budgets that are forecasting deductions by provider, but do not have the associated deductions accounts filled-in to the model. ** Last Modified: ** GM Release: 2015.2 *************************************************************/ Create view [ob].[viewExceptionsDepartmentBudgetMissingProviderDeductionAccounts] as select distinct DB.DepartmentalBudgetID, DB.Name as Model, 'Is forecasting provider deduction type ' + fd.Name + ' but has no deduction accounts filled into the model' as Detail from ob.DimDepartmentalBudget DB with (readuncommitted) inner join [data].[ScoreFillin_OBForecastDetail] sf on db.memberguid=sf.ModelGUID and OBForecastDetailPHID=5 --Provider - Deductions inner join [ob].[DimOBForecastDetail] fd on sf.OBForecastDetailID=fd.OBForecastDetailID inner join [data].[ScoreFillin_Provider] sfp with (readuncommitted) on sfp.ProviderPHID<>0 and db.MemberGUID=sfp.modelguid and sfp.ProviderID<>0 where not exists (select 1 from data.ScoreFillin_Account FI with (readuncommitted) where FI.ModelGUID = DB.MemberGUID and FI.AccountID<>0 and FI.AccountPHID = 4 /*Deductions*/) and DB.DepartmentalBudgetID != 0 and db.obactiveplans=1 GO --------------------------------------------- -- ob.viewExceptionsDepartmentBudgetMissingSelfFillin /************************************************************ ** Author: akowalski ** Create Date: 2014-05-13 ** Description: Displays any department budgets that are missing their self fill-in ** Last Modified: 2014-05-13 ** GM Release: 2014.3 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 2016-08-10 kf B-12543 FP - System Center Exception Management - Initial Framework *************************************************************/ CREATE view [ob].[viewExceptionsDepartmentBudgetMissingSelfFillin] as select Distinct DB.DepartmentalBudgetID, DB.Name as Model, 'Department Budget ' + db.Name + ' is missing the self-fill-in' as Detail from ob.DimDepartmentalBudget DB with (readuncommitted) left outer join data.ScoreFillin_OBDepartmentalBudget sf with (readuncommitted) on db.MemberGUID=sf.ModelGUID and PlaceholderSectionMemberGUID='58106837-6396-47A4-9876-05DD97C9224E' where sf.FillinGUID is null and db.DepartmentalBudgetID<>0 and db.obactiveplans=1 GO --------------------------------------------- -- ob.viewExceptionsDepartmentBudgetMissingXPlanRecords /************************************************************ ** Author: akowalski ** Create Date: 2014-09-22 ** Description: Checks for poorly created plans (plans with a dimension record but no xplan record) ** Last Modified: 2014-09-22 ** GM Release: 2014.4 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** ** *************************************************************/ create view ob.viewExceptionsDepartmentBudgetMissingXPlanRecords as select Distinct db.DepartmentalBudgetID, d.Name as Model, 'Department Budget record exists in the ob.dimdepartmentalbudget table but not in xplan' as Detail from [ob].[DimDepartmentalBudget] db left outer join [fw].[DimDepartment] d on db.DepartmentID=d.DepartmentID left outer join [dbo].[XPlan] xp on DB.MemberGUID=xp.PlanGUID where xp.Name is null GO --------------------------------------------- -- ob.viewExceptionsDepartmentBudgetModelToReconciliationTargetComparision CREATE view [ob].[viewExceptionsDepartmentBudgetModelToReconciliationTargetComparision] as /************************************************************ ** Author: akowalski ** Create Date: 2014-06-12 ** Description: Compares the post-model refresh financial statement results with the target financial statement values specified using the reconciliation tool ** Last Modified: 2014-06-12 ** GM Release: 2014.3 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 2016-12-14 srk D-04952 Case statement for detail description *************************************************************/ select 0 as DepartmentalBudgetID, 'Not Specified' as Model, fr.Name + ' has value ' + cast(round(src.Amount,0) as varchar(25)) + ' for Entity: ' + e.Name + ' but should have ' + cast(round(trgt.Amount,0) as varchar(25)) + ' in ' + tc.Name + ' ' + cast(src.fiscalyearid as varchar(4)) + case when src.fiscalmonthid = 0 then '' else ' in Month ' + m.name END as Detail from [ob].[viewFactReportingMonthlyTargetComparision] src inner join [ob].[ReconciliationTarget] trgt on trgt.EntityID=src.EntityID and trgt.FiscalYearID=src.FiscalYearID and trgt.TimeClassID=src.TimeClassID and trgt.FinancialReportingID=src.FinancialReportingID and trgt.FiscalMonthID=src.FiscalMonthID inner join [ob].[DimFinancialReporting] fr on src.FinancialReportingID=fr.FinancialReportingID inner join [fw].[DimEntity] e on src.EntityID=e.EntityID inner join [fw].[DimTimeClass] tc on src.TimeClassID=tc.TimeClassID inner join [fw].[DimFiscalMonth] m on src.FiscalMonthID=m.FiscalMonthID where round(trgt.Amount,-2)<>round(src.Amount,-2) and round(trgt.Amount,-1)<>round(src.Amount,-1) GO --------------------------------------------- -- ob.viewExceptionsDepartmentBudgetNoReviewerAssignments /************************************************************ ** Author: akowalski ** Create Date: 2015-01-18 ** Description: Displays all non-staffing expense accounts that have manager adjustments but no comments ** Last Modified: 2015-01-18 ** GM Release: 2015.2 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** ** *************************************************************/ create view [ob].[viewExceptionsDepartmentBudgetNoReviewerAssignments] as select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Has no reviewers configured' as Detail from [ob].[DimDepartmentalBudget] db inner join [dbo].[XPlan] xp on db.MemberGUID=xp.PlanGUID where xp.PlanTypeGUID='05512126-3eb6-4da4-af6e-bc2bc2724b8b' and db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and not exists(select 1 from [dbo].[viewS3RoleAssignmentDetail] ra where lootGroupID like 'DEPT|%' and ra.RoleName like 'OB - %' and xp.CachedLootID=ra.LootID ) GO --------------------------------------------- -- ob.viewExceptionsDepartmentBudgetOrphanedData /************************************************************************* ** Author: akowalski ** Create Date: 2014-05-13 ** Description: Checks for nonzero data that will not show up in the model because a fillin is missing ** Last Modified: 2014-05-13 ** GM Release: 2014.3 *************************************************************************** ** Change History *************************************************************************** ** CID Date Author WI Description ** 1 2016-12-27 srk D-05208 Filtering out inactive providers ** 2 2016-12-29 srk D-05186 Filtering out prior year budget timeclass **************************************************************************/ CREATE view [ob].[viewExceptionsDepartmentBudgetOrphanedData] as -- Account data select Distinct db.DepartmentalBudgetID, db.Name as Model, 'Has data in Account ' + dim.Name+ ' but it is not filled in' as Detail from clientob.FactAccount data with (readuncommitted) inner join ob.DimDepartmentalBudget db with (readuncommitted) on db.DepartmentalBudgetID = data.DepartmentalBudgetID inner join fw.DimAccount dim with (readuncommitted) on dim.AccountID = data.AccountID left outer join ScoreFillin sf with (readuncommitted) on db.MemberGUID=sf.ModelGUID and dim.MemberGUID=sf.FillinMemberGUID and sf.PlaceholderSectionMemberGUID<>'77A0029B-F072-4ED6-8BFC-89BCFD6ED049' --not specified where sf.FillinGUID is null and data.Total <> 0 and --CID 2 ((( data.FiscalYearID>= (select s.setting-1 from [dbo].[DBSetting] s where Name = 'OB_Current_Year') --Actual Data and data.timeclassid = 1 ) or ( data.FiscalYearID = (select s.setting from [dbo].[DBSetting] s where Name = 'OB_Current_Year') --Budget Data for Current Year and data.timeclassid = 2 ) or ( data.FiscalYearID = (select s.setting+1 from [dbo].[DBSetting] s where Name = 'OB_Current_Year') --Budget Data for Next Year and data.timeclassid = 2 ))) --CID 2 and db.DepartmentalBudgetID<>0 and dim.AccountID<>0 and not (dim.OBIsDefined=1 and dim.OBAccountPHID=0 and dim.OBStatModelSectionID=0) and db.obactiveplans=1 UNION ALL --Job Code Data select Distinct db.DepartmentalBudgetID, db.Name as Model, 'Has data in Job Code ' + dim.Name+ ' but it is not filled in' as Detail from clientob.FactStaffingPC data with (readuncommitted) inner join ob.DimDepartmentalBudget db with (readuncommitted) on db.DepartmentalBudgetID = data.DepartmentalBudgetID inner join fw.DimJobCode dim with (readuncommitted) on dim.JobCodeID = data.JobCodeID left outer join ScoreFillin sf with (readuncommitted) on db.MemberGUID=sf.ModelGUID and dim.MemberGUID=sf.FillinMemberGUID and sf.PlaceholderSectionMemberGUID<>'26FE98B4-987C-403B-84E3-6630F96001F9' --not specified where sf.FillinGUID is null and data.Total <> 0 and --CID 2 ((( data.FiscalYearID>= (select s.setting-1 from [dbo].[DBSetting] s where Name = 'OB_Current_Year') --Actual Data and data.timeclassid = 1 ) or ( data.FiscalYearID = (select s.setting from [dbo].[DBSetting] s where Name = 'OB_Current_Year') --Budget Data for Current Year and data.timeclassid = 2 ) or ( data.FiscalYearID = (select s.setting+1 from [dbo].[DBSetting] s where Name = 'OB_Current_Year') --Budget Data for Next Year and data.timeclassid = 2 ))) --CID 2 and db.DepartmentalBudgetID<>0 and dim.JobCodeID<>0 and db.obactiveplans=1 UNION ALL --Pay Code Group select Distinct db.DepartmentalBudgetID, db.Name as Model, 'Has data in Pay Code Group ' + dim.Name+ ' but it is not filled in' as Detail from clientob.FactStaffingPC data with (readuncommitted) inner join ob.DimDepartmentalBudget db with (readuncommitted) on db.DepartmentalBudgetID = data.DepartmentalBudgetID inner join fw.DimPayCodeGroup dim with (readuncommitted) on dim.PayCodeGroupID = data.PayCodeGroupID left outer join ScoreFillin sf with (readuncommitted) on db.MemberGUID=sf.ModelGUID and dim.MemberGUID=sf.FillinMemberGUID and sf.PlaceholderSectionMemberGUID<>'119D96CF-81AF-4D69-A671-5E5B23F9F9DD' --not specified where sf.FillinGUID is null and data.Total <> 0 and --CID 2 ((( data.FiscalYearID>= (select s.setting-1 from [dbo].[DBSetting] s where Name = 'OB_Current_Year') --Actual Data and data.timeclassid = 1 ) or ( data.FiscalYearID = (select s.setting from [dbo].[DBSetting] s where Name = 'OB_Current_Year') --Budget Data for Current Year and data.timeclassid = 2 ) or ( data.FiscalYearID = (select s.setting+1 from [dbo].[DBSetting] s where Name = 'OB_Current_Year') --Budget Data for Next Year and data.timeclassid = 2 ))) --CID 2 and db.DepartmentalBudgetID<>0 and dim.PayCodeGroupID<>0 and db.obactiveplans=1 UNION ALL --Employee select Distinct db.DepartmentalBudgetID, db.Name as Model, 'Has data for Employee ' + dim.Name+ ' but it is not filled in' as Detail from clientob.FactStaffingPC data with (readuncommitted) inner join ob.DimDepartmentalBudget db with (readuncommitted) on db.DepartmentalBudgetID = data.DepartmentalBudgetID inner join fw.DimEmployee dim with (readuncommitted) on dim.EmployeeID = data.EmployeeID left outer join ScoreFillin sf with (readuncommitted) on db.MemberGUID=sf.ModelGUID and dim.MemberGUID=sf.FillinMemberGUID and sf.PlaceholderSectionMemberGUID<>'A3882825-3889-4669-BA58-886F984F739F' --not specified inner join DBSetting s with (readuncommitted) on s.Name='OB_Employee_Detail' and s.Setting='1' where sf.FillinGUID is null and data.Total <> 0 and --CID 2 ((( data.FiscalYearID>= (select s.setting-1 from [dbo].[DBSetting] s where Name = 'OB_Current_Year') --Actual Data and data.timeclassid = 1 ) or ( data.FiscalYearID = (select s.setting from [dbo].[DBSetting] s where Name = 'OB_Current_Year') --Budget Data for Current Year and data.timeclassid = 2 ) or ( data.FiscalYearID = (select s.setting+1 from [dbo].[DBSetting] s where Name = 'OB_Current_Year') --Budget Data for Next Year and data.timeclassid = 2 ))) --CID 2 and db.DepartmentalBudgetID<>0 and dim.EmployeeID<>0 and db.obactiveplans=1 UNION ALL --Provider Data select Distinct db.DepartmentalBudgetID, db.Name as Model, 'Has data for Provider ' + dim.Name+ ' but it is not filled in' as Detail from clientob.FactProvider data with (readuncommitted) inner join ob.DimDepartmentalBudget db with (readuncommitted) on db.DepartmentalBudgetID = data.DepartmentalBudgetID inner join fw.DimProvider dim with (readuncommitted) on dim.ProviderID = data.ProviderID left outer join ScoreFillin sf with (readuncommitted) on db.MemberGUID=sf.ModelGUID and dim.MemberGUID=sf.FillinMemberGUID and sf.PlaceholderSectionMemberGUID<>'93524AAB-C5E0-428F-81DE-6AD7ED5CE0CC' --not specified where sf.FillinGUID is null and data.Total <> 0 and --CID 2 ((( data.FiscalYearID>= (select s.setting-1 from [dbo].[DBSetting] s where Name = 'OB_Current_Year') --Actual Data and data.timeclassid = 1 ) or ( data.FiscalYearID = (select s.setting from [dbo].[DBSetting] s where Name = 'OB_Current_Year') --Budget Data for Current Year and data.timeclassid = 2 ) or ( data.FiscalYearID = (select s.setting+1 from [dbo].[DBSetting] s where Name = 'OB_Current_Year') --Budget Data for Next Year and data.timeclassid = 2 ))) --CID 2 and db.DepartmentalBudgetID<>0 and dim.ProviderID<>0 -- CID 1 and dim.OBIsActive = 1 -- CID 1 and db.obactiveplans=1 UNION ALL --Charge Code Data select Distinct db.DepartmentalBudgetID, db.Name as Model, 'Has data for Charge Code ' + dim.Name+ ' but it is not filled in' as Detail from clientob.FactCDM data with (readuncommitted) inner join ob.DimDepartmentalBudget db with (readuncommitted) on db.DepartmentalBudgetID = data.DepartmentalBudgetID inner join fw.DimChargeCode dim with (readuncommitted) on dim.ChargeCodeID = data.ChargeCodeID left outer join ScoreFillin sf with (readuncommitted) on db.MemberGUID=sf.ModelGUID and dim.MemberGUID=sf.FillinMemberGUID and sf.PlaceholderSectionMemberGUID<>'9482496E-5ABF-452A-884D-BF874AABF0DC' --not specified where sf.FillinGUID is null and data.Total <> 0 and --CID 2 ((( data.FiscalYearID>= (select s.setting-1 from [dbo].[DBSetting] s where Name = 'OB_Current_Year') --Actual Data and data.timeclassid = 1 ) or ( data.FiscalYearID = (select s.setting from [dbo].[DBSetting] s where Name = 'OB_Current_Year') --Budget Data for Current Year and data.timeclassid = 2 ) or ( data.FiscalYearID = (select s.setting+1 from [dbo].[DBSetting] s where Name = 'OB_Current_Year') --Budget Data for Next Year and data.timeclassid = 2 ))) --CID 2 and db.DepartmentalBudgetID<>0 and dim.ChargeCodeID<>0 and db.obactiveplans=1 GO --------------------------------------------- -- ob.viewExceptionsDepartmentBudgetOverriddenCalculations /************************************************************ ** Author: akowalski ** Create Date: 2015-01-18 ** Description: Displays all instances of the use of the override option ** Last Modified: 2015-01-18 ** GM Release: 2015.2 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** ** *************************************************************/ create view [ob].[viewExceptionsDepartmentBudgetOverriddenCalculations] as /************* Account overrides ********************/ -- Projected select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Is Overriding the Projection calculations for Account ' + sf.FillinMemberName + ' in section ' + ph.Name as Detail from [clientob].[FactAccountVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_Account] sf with (readuncommitted) on fct1.AccountID=sf.AccountID and sf.ModelGUID=db.MemberGUID inner join [ob].[DimAccountPH] ph with (readuncommitted) on ph.AccountPHID=sf.AccountPHID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and fct1.TextValue='Override' and fct1.TimeClassID=12 union all -- Budget select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Is Overriding the Budget calculations for Account ' + sf.FillinMemberName + ' in section ' + ph.Name as Detail from [clientob].[FactAccountVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_Account] sf with (readuncommitted) on fct1.AccountID=sf.AccountID and sf.ModelGUID=db.MemberGUID inner join [ob].[DimAccountPH] ph with (readuncommitted) on ph.AccountPHID=sf.AccountPHID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and fct1.TextValue='Override' and fct1.TimeClassID=2 union all /************* Job Code overrides ********************/ -- Projected select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Is Overriding the Projection calculations for Job Code ' + sf.FillinMemberName + ' in section ' + ph.Name as Detail from [clientob].[FactStaffingPCVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_JobCode] sf with (readuncommitted) on fct1.JobCodeID=sf.JobCodeID and sf.ModelGUID=db.MemberGUID inner join [fw].[DimJobCodePH] ph with (readuncommitted) on ph.JobCodePHID=sf.JobCodePHID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and fct1.TextValue like '%Override%' and fct1.UnitTypeID=141 and sf.JobCodePHID in ('2', --Staffing - Job Code (Fixed) '52') --Staffing - Job Code (Variable) and fct1.TimeClassID=12 union all -- Budget select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Is Overriding the Budget calculations for Job Code ' + sf.FillinMemberName + ' in section ' + ph.Name as Detail from [clientob].[FactStaffingPCVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_JobCode] sf with (readuncommitted) on fct1.JobCodeID=sf.JobCodeID and sf.ModelGUID=db.MemberGUID inner join [fw].[DimJobCodePH] ph with (readuncommitted) on ph.JobCodePHID=sf.JobCodePHID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and fct1.TextValue like '%Override%' and fct1.UnitTypeID=141 and sf.JobCodePHID in ('2', --Staffing - Job Code (Fixed) '52') --Staffing - Job Code (Variable) and fct1.TimeClassID=2 union all -- Baseline Budget select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Is Overriding the Budget calculations for Job Code ' + sf.FillinMemberName + ' in section ' + ph.Name as Detail from [clientob].[FactStaffingPCVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_JobCode] sf with (readuncommitted) on fct1.JobCodeID=sf.JobCodeID and sf.ModelGUID=db.MemberGUID inner join [fw].[DimJobCodePH] ph with (readuncommitted) on ph.JobCodePHID=sf.JobCodePHID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and fct1.TextValue like '%Override%' and fct1.UnitTypeID=141 and sf.JobCodePHID in ('2', --Staffing - Job Code (Fixed) '52') --Staffing - Job Code (Variable) and fct1.TimeClassID=18 union all -- Projected select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Is Overriding the Projection calculations for Job Code ' + sf.FillinMemberName + ' in section ' + ph.Name as Detail from [clientob].[FactStaffingPCVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_JobCode] sf with (readuncommitted) on fct1.JobCodeID=sf.JobCodeID and sf.ModelGUID=db.MemberGUID inner join [data].[ScoreFillin_PayCodeGroup] sf2 with (readuncommitted) on fct1.PayCodeGroupID=sf2.PayCodeGroupID and sf2.ModelGUID=db.MemberGUID inner join [fw].[DimPayCodeGroupPH] ph with (readuncommitted) on sf2.PayCodeGroupPHID=ph.PayCodeGroupPHID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and fct1.TextValue='Override' and fct1.UnitTypeID=141 and sf2.PayCodeGroupID<>0 and fct1.TimeClassID=12 union all -- Budget select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Is Overriding the Budget calculations for Job Code ' + sf.FillinMemberName + ' in section ' + ph.Name as Detail from [clientob].[FactStaffingPCVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_JobCode] sf with (readuncommitted) on fct1.JobCodeID=sf.JobCodeID and sf.ModelGUID=db.MemberGUID inner join [data].[ScoreFillin_PayCodeGroup] sf2 with (readuncommitted) on fct1.PayCodeGroupID=sf2.PayCodeGroupID and sf2.ModelGUID=db.MemberGUID inner join [fw].[DimPayCodeGroupPH] ph with (readuncommitted) on sf2.PayCodeGroupPHID=ph.PayCodeGroupPHID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and fct1.TextValue='Override' and fct1.UnitTypeID=141 and sf2.PayCodeGroupID<>0 and fct1.TimeClassID=2 union all /************* Employee overrides ********************/ -- Projected select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Is Overriding the Projection calculations for Employee ' + sf.FillinMemberName + ' in section Employee Wage Rate' as Detail from [clientob].[FactStaffingPCVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_Employee] sf with (readuncommitted) on fct1.EmployeeID=sf.EmployeeID and sf.ModelGUID=db.MemberGUID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and fct1.TextValue='Override' and fct1.UnitTypeID=141 and fct1.EmployeeID<>0 and fct1.TimeClassID=12 union all -- Budget select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Is Overriding the Projection calculations for Employee ' + sf.FillinMemberName + ' in section Employee Wage Rate' as Detail from [clientob].[FactStaffingPCVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_Employee] sf with (readuncommitted) on fct1.EmployeeID=sf.EmployeeID and sf.ModelGUID=db.MemberGUID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and fct1.TextValue='Override' and fct1.UnitTypeID=141 and fct1.EmployeeID<>0 and fct1.TimeClassID=2 union all /************* Charge Code overrides ********************/ -- Projected select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Is Overriding the Projection calculations for Charge Code ' + sf.FillinMemberName + ' in section ' + pc.Name as Detail from [clientob].[FactCDMVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_ChargeCode] sf with (readuncommitted) on fct1.ChargeCodeID=sf.ChargeCodeID and sf.ModelGUID=db.MemberGUID inner join [fw].[DimPatientClass] pc with (readuncommitted) on pc.PatientClassID=fct1.PatientClassID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and fct1.ChargeCodeID<>0 and fct1.TextValue='Override' and fct1.UnitTypeID=141 and fct1.TimeClassID=12 union all -- Budget select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Is Overriding the Budget calculations for Charge Code ' + sf.FillinMemberName + ' in section ' + pc.Name as Detail from [clientob].[FactCDMVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_ChargeCode] sf with (readuncommitted) on fct1.ChargeCodeID=sf.ChargeCodeID and sf.ModelGUID=db.MemberGUID inner join [fw].[DimPatientClass] pc with (readuncommitted) on pc.PatientClassID=fct1.PatientClassID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and fct1.ChargeCodeID<>0 and fct1.TextValue='Override' and fct1.UnitTypeID=141 and fct1.TimeClassID=2 union all /************* Provider overrides ********************/ -- Projected select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Is Overriding the Projection calculations for Provider ' + sf.FillinMemberName + ' for forecast detail ' + fd.Name as Detail from [clientob].[FactProviderVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_Provider] sf with (readuncommitted) on fct1.ProviderID=sf.ProviderID and sf.ModelGUID=db.MemberGUID inner join [ob].[DimOBForecastDetail] fd with (readuncommitted) on fct1.OBForecastDetailID=fd.OBForecastDetailID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and fct1.ProviderID<>0 and fct1.TextValue='Override' and fct1.UnitTypeID=141 and fct1.TimeClassID=12 union all -- Budget select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Is Overriding the Budget calculations for Provider ' + sf.FillinMemberName + ' for forecast detail ' + fd.Name as Detail from [clientob].[FactProviderVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_Provider] sf with (readuncommitted) on fct1.ProviderID=sf.ProviderID and sf.ModelGUID=db.MemberGUID inner join [ob].[DimOBForecastDetail] fd with (readuncommitted) on fct1.OBForecastDetailID=fd.OBForecastDetailID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and fct1.ProviderID<>0 and fct1.TextValue='Override' and fct1.UnitTypeID=141 and fct1.TimeClassID=2 GO --------------------------------------------- -- ob.viewExceptionsDepartmentBudgetOverrideProjectionOrSpread /************************************************************ ** Author: akowalski ** Create Date: 2015-01-18 ** Description: Displays all instances of overriding the default projection or spread methods ** Last Modified: 2015-01-18 ** GM Release: 2015.2 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** ** *************************************************************/ create view [ob].[viewExceptionsDepartmentBudgetOverrideProjectionOrSpread] as /************* Account overrides ********************/ -- Projected select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Is overriding the default projection method for Account ' + sf.FillinMemberName + ' in section ' + ph.Name as Detail from [clientob].[FactAccountVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_Account] sf with (readuncommitted) on fct1.AccountID=sf.AccountID and sf.ModelGUID=db.MemberGUID inner join [ob].[DimAccountPH] ph with (readuncommitted) on ph.AccountPHID=sf.AccountPHID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and fct1.TextValue<>'Default' and fct1.AssumptionID=107 --Projection Method and fct1.TimeClassID=12 union all -- Budget select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Is overriding the default spread method for Account ' + sf.FillinMemberName + ' in section ' + ph.Name as Detail from [clientob].[FactAccountVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_Account] sf with (readuncommitted) on fct1.AccountID=sf.AccountID and sf.ModelGUID=db.MemberGUID inner join [ob].[DimAccountPH] ph with (readuncommitted) on ph.AccountPHID=sf.AccountPHID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and fct1.TextValue<>'Default' and fct1.AssumptionID=116 --Spread Method and fct1.TimeClassID=2 union all -- Contract Labor Dollars select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Is overriding the default projection method for Account ' + sf.FillinMemberName + ' in section Contract Labor Dollars' as Detail from [clientob].[FactAccountVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_Account] sf with (readuncommitted) on fct1.AccountID=sf.AccountID and sf.ModelGUID=db.MemberGUID inner join [ob].[DimAccountPH] ph with (readuncommitted) on ph.AccountPHID=sf.AccountPHID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and fct1.TextValue<>'Default' and fct1.AssumptionID=625 --Dollars Method and sf.AccountPHID=6 --Staffing - Contract Labor and fct1.TimeClassID=12 union all /************* Job Code overrides ********************/ -- Fixed projection select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Is overriding the default projection method for Job Code ' + sf.FillinMemberName + ' in section ' + ph.Name as Detail from [clientob].[FactStaffingPCVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_JobCode] sf with (readuncommitted) on fct1.JobCodeID=sf.JobCodeID and sf.ModelGUID=db.MemberGUID inner join [fw].[DimJobCodePH] ph with (readuncommitted) on ph.JobCodePHID=sf.JobCodePHID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and fct1.TextValue<>'Default' and fct1.EmployeeID=0 and fct1.PayCodeGroupID=0 and fct1.JobCodeID<>0 and fct1.AssumptionID=116 --Spread Method (template is mapped wrong) and sf.JobCodePHID in ('2', --Staffing - Job Code (Fixed) '52') --Staffing - Job Code (Variable) and fct1.TimeClassID=12 union all -- variable projection select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Is overriding the default projection method for Job Code ' + sf.FillinMemberName + ' in section ' + ph.Name as Detail from [clientob].[FactStaffingPCVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_JobCode] sf with (readuncommitted) on fct1.JobCodeID=sf.JobCodeID and sf.ModelGUID=db.MemberGUID inner join [fw].[DimJobCodePH] ph with (readuncommitted) on ph.JobCodePHID=sf.JobCodePHID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and fct1.TextValue<>'Default' and fct1.EmployeeID=0 and fct1.PayCodeGroupID=0 and fct1.JobCodeID<>0 and fct1.AssumptionID=81 --Non-Productive FTE Adjustment (template is mapped wrong) and sf.JobCodePHID in ('2', --Staffing - Job Code (Fixed) '52') --Staffing - Job Code (Variable) and fct1.TimeClassID=12 union all -- hr/uos projection select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Is overriding the default projection method for Hrs per UOS Target' as Detail from [clientob].[FactStaffingPCVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [fw].[DimAssumption] ass with (readuncommitted) on ass.AssumptionID=fct1.AssumptionID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and fct1.TextValue<>'Default' and fct1.EmployeeID=0 and fct1.PayCodeGroupID=0 and ass.Name='Productive Hrs per UOS Projection Method' and fct1.TimeClassID=12 union all -- hr/uos spread select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Is overriding the default budget method for Hrs per UOS Target' as Detail from [clientob].[FactStaffingPCVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [fw].[DimAssumption] ass with (readuncommitted) on ass.AssumptionID=fct1.AssumptionID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and fct1.TextValue<>'Default' and fct1.EmployeeID=0 and fct1.PayCodeGroupID=0 and ass.Name='Productive Hrs per UOS Projection Method' and fct1.TimeClassID=2 union all -- skill mix projection select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Is overriding the default projection method for Skill Mix' as Detail from [clientob].[FactStaffingPCVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [fw].[DimAssumption] ass with (readuncommitted) on ass.AssumptionID=fct1.AssumptionID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and fct1.TextValue<>'Default' and fct1.EmployeeID=0 and fct1.PayCodeGroupID=0 and ass.Name='Skill Mix Projection Method' and fct1.TimeClassID=12 union all -- skill mix spread select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Is overriding the default budget method for Skill Mix' as Detail from [clientob].[FactStaffingPCVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [fw].[DimAssumption] ass with (readuncommitted) on ass.AssumptionID=fct1.AssumptionID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and fct1.TextValue<>'Default' and fct1.EmployeeID=0 and fct1.PayCodeGroupID=0 and ass.Name='Skill Mix Projection Method' and fct1.TimeClassID=2 union all -- Projected hrs distribution select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Is overriding the Hours Distribution calculations for Job Code ' + sf.FillinMemberName + ' in section ' + ph.Name as Detail from [clientob].[FactStaffingPCVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_JobCode] sf with (readuncommitted) on fct1.JobCodeID=sf.JobCodeID and sf.ModelGUID=db.MemberGUID inner join [data].[ScoreFillin_PayCodeGroup] sf2 with (readuncommitted) on fct1.PayCodeGroupID=sf2.PayCodeGroupID and sf2.ModelGUID=db.MemberGUID inner join [fw].[DimPayCodeGroupPH] ph with (readuncommitted) on sf2.PayCodeGroupPHID=ph.PayCodeGroupPHID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and fct1.TextValue<>'Default' and fct1.AssumptionID=627 --Hours Method and sf2.PayCodeGroupID<>0 and fct1.TimeClassID=1 union all -- Projected wage rate select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Is overriding the Wage Rate calculations for Job Code ' + sf.FillinMemberName + ' in section ' + ph.Name as Detail from [clientob].[FactStaffingPCVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_JobCode] sf with (readuncommitted) on fct1.JobCodeID=sf.JobCodeID and sf.ModelGUID=db.MemberGUID inner join [data].[ScoreFillin_PayCodeGroup] sf2 with (readuncommitted) on fct1.PayCodeGroupID=sf2.PayCodeGroupID and sf2.ModelGUID=db.MemberGUID inner join [fw].[DimPayCodeGroupPH] ph with (readuncommitted) on sf2.PayCodeGroupPHID=ph.PayCodeGroupPHID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and fct1.TextValue<>'Default' and fct1.AssumptionID=625 --Dollars Method and sf2.PayCodeGroupID<>0 and fct1.TimeClassID=1 union all -- Projected dollars only select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Is overriding the default projection method for Job Code ' + sf.FillinMemberName + ' in section ' + ph.Name as Detail from [clientob].[FactStaffingPCVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_JobCode] sf with (readuncommitted) on fct1.JobCodeID=sf.JobCodeID and sf.ModelGUID=db.MemberGUID inner join [fw].[DimPayCodeGroup] ph with (readuncommitted) on fct1.PayCodeGroupid=ph.PayCodeGroupID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and fct1.TextValue<>'Default' and fct1.AssumptionID=107 --Projection Method and fct1.PayCodeGroupID<>0 and fct1.TimeClassID=12 union all -- Budget dollars only select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Is overriding the default spread method for Job Code ' + sf.FillinMemberName + ' in section ' + ph.Name as Detail from [clientob].[FactStaffingPCVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_JobCode] sf with (readuncommitted) on fct1.JobCodeID=sf.JobCodeID and sf.ModelGUID=db.MemberGUID inner join [fw].[DimPayCodeGroup] ph with (readuncommitted) on fct1.PayCodeGroupid=ph.PayCodeGroupID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and fct1.TextValue<>'Default' and fct1.AssumptionID=116 --Spread Method and fct1.PayCodeGroupID<>0 and fct1.TimeClassID=2 union all /************* Employee overrides ********************/ -- Projected select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Is overriding the default projection method for Employee ' + sf.FillinMemberName + ' in section Employee Wage Rate' as Detail from [clientob].[FactStaffingPCVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_Employee] sf with (readuncommitted) on fct1.EmployeeID=sf.EmployeeID and sf.ModelGUID=db.MemberGUID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and fct1.TextValue<>'Default' and fct1.AssumptionID=116 --Spread Method (this is wrong in the template) and fct1.JobCodeID=0 and fct1.PayCodeGroupID=0 and fct1.EmployeeID<>0 and fct1.TimeClassID=12 union all /************* Charge Code overrides ********************/ -- Projected volume select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Is Overriding the volume projection method for Charge Code ' + sf.FillinMemberName + ' in section ' + pc.Name as Detail from [clientob].[FactCDMVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_ChargeCode] sf with (readuncommitted) on fct1.ChargeCodeID=sf.ChargeCodeID and sf.ModelGUID=db.MemberGUID inner join [fw].[DimPatientClass] pc with (readuncommitted) on pc.PatientClassID=fct1.PatientClassID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and fct1.ChargeCodeID<>0 and fct1.TextValue<>'Default' and fct1.AssumptionID=634 --Rate Projection Method (this is wrong in the template) and fct1.TimeClassID=12 union all -- Projected rate select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Is Overriding the rate projection method for Charge Code ' + sf.FillinMemberName + ' in section ' + pc.Name as Detail from [clientob].[FactCDMVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_ChargeCode] sf with (readuncommitted) on fct1.ChargeCodeID=sf.ChargeCodeID and sf.ModelGUID=db.MemberGUID inner join [fw].[DimPatientClass] pc with (readuncommitted) on pc.PatientClassID=fct1.PatientClassID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and fct1.ChargeCodeID<>0 and fct1.TextValue<>'Default' and fct1.AssumptionID=632 --Volume Projection Method (this is wrong in the template) and fct1.TimeClassID=12 union all -- Budget select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Is Overriding the volume spread method for Charge Code ' + sf.FillinMemberName + ' in section ' + pc.Name as Detail from [clientob].[FactCDMVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_ChargeCode] sf with (readuncommitted) on fct1.ChargeCodeID=sf.ChargeCodeID and sf.ModelGUID=db.MemberGUID inner join [fw].[DimPatientClass] pc with (readuncommitted) on pc.PatientClassID=fct1.PatientClassID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and fct1.ChargeCodeID<>0 and fct1.TextValue<>'Default' and fct1.AssumptionID=116 --Spread Method and fct1.TimeClassID=2 union all /************* Provider overrides ********************/ -- Projected select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Is Overriding the default projection method for Provider ' + sf.FillinMemberName + ' for forecast detail ' + fd.Name as Detail from [clientob].[FactProviderVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_Provider] sf with (readuncommitted) on fct1.ProviderID=sf.ProviderID and sf.ModelGUID=db.MemberGUID inner join [ob].[DimOBForecastDetail] fd with (readuncommitted) on fct1.OBForecastDetailID=fd.OBForecastDetailID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and fct1.ProviderID<>0 and fct1.TextValue_Formula='x' and fct1.AssumptionID=107 --Projection Method and fct1.TimeClassID=12 union all -- Budget vol/rev select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Is Overriding the default spread method for Provider ' + sf.FillinMemberName + ' for forecast detail ' + fd.Name as Detail from [clientob].[FactProviderVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_Provider] sf with (readuncommitted) on fct1.ProviderID=sf.ProviderID and sf.ModelGUID=db.MemberGUID inner join [ob].[DimOBForecastDetail] fd with (readuncommitted) on fct1.OBForecastDetailID=fd.OBForecastDetailID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and fct1.ProviderID<>0 and fct1.TextValue_Formula='x' and fct1.AssumptionID=116 --Spread Method and fct1.TimeClassID=2 union all -- Budget comp select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Is Overriding the default spread method for Provider ' + sf.FillinMemberName + ' for forecast detail ' + fd.Name as Detail from [clientob].[FactProviderVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_Provider] sf with (readuncommitted) on fct1.ProviderID=sf.ProviderID and sf.ModelGUID=db.MemberGUID inner join [ob].[DimOBForecastDetail] fd with (readuncommitted) on fct1.OBForecastDetailID=fd.OBForecastDetailID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and fct1.ProviderID<>0 and fct1.TextValue_Formula='x' and fct1.AssumptionID=107 --Projection Method and fct1.TimeClassID=2 GO --------------------------------------------- -- ob.viewExceptionsDepartmentBudgetPlansNotInWorkflow /************************************************************ ** Author: jgerber ** Create Date: 2014-10-07 ** Description: Finds all departmental budgets without workflows ** Last Modified: 2014-11-18 ** GM Release: 2015.2 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 2014-10-07 JG Renaming and adding to the exception summary report ** 2 2014-11-18 cbecker D-02416 Filtering out not specified departmental budget ** *************************************************************/ CREATE view [ob].[viewExceptionsDepartmentBudgetPlansNotInWorkflow] as select ob.DepartmentalBudgetID, ob.Name as Model, 'Has a departmental budget but does not have an associated workflow.' as Detail from ob.viewDimDepartmentalBudget OB where not exists( select 1 from ob.viewDimDepartmentalBudget P inner join WFToken T on T.EntityGUID = P.MemberGUID inner join WFWorkflowMap WF on WF.WorkflowMapGUID = T.WorkflowMapGUID where WF.Name like 'OB%' and P.MemberGUID = OB.MemberGUID ) and OB.DepartmentalBudgetID<>0 GO --------------------------------------------- -- ob.viewExceptionsDepartmentBudgetPotentiallyInvalidGrossChargesSetups /************************************************************ ** Author: akowalski ** Create Date: 2014-08-27 ** Description: Find mismatches between how the gross charge accounts are setup and what information is available in the model but may produce some false positives ** Last Modified: 2016-11-30 ** GM Release: 2014.4 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 2016-11-30 srk D-04844 Updated first two unions to flag exceptions that don't have a primary revenue driver in the primary stat config screen ** *************************************************************/ CREATE view [ob].[viewExceptionsDepartmentBudgetPotentiallyInvalidGrossChargesSetups] as select Distinct dB.DepartmentalBudgetID, dB.Name as Model, 'Has ' + a.PatientClass + ' Gross Charges and is set to drive charges by '+ ac.Textvalue+ ' but has no ' + a.PatientClass + ' statistics in the model' as Detail from [clientob].[FactAccountVar] ac with (readuncommitted) inner join [fw].[DimAssumption] ASS with (readuncommitted) on ASS.AssumptionID=AC.AssumptionID inner join [ob].[DimDepartmentalBudget] DB with (readuncommitted) on ac.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [fw].[DimAccount] a with (readuncommitted) on ac.AccountID=a.AccountID where 1=1 and TextValue like '%UOS%' and ass.Name='Volume Driver' and ac.TimeClassID = 12 and ac.FiscalYearID = (SELECT DBS.Setting from [dbo].[DBSetting] DBS where DBS.Name = 'OB_Current_Year') and not exists ( select top 1 1 from [data].[ScoreFillin_Account] SF with (readuncommitted) inner join [ob].[DimAccountPH] ph with (readuncommitted) on ph.MemberGUID=sf.PlaceholderSectionMemberGUID and (ph.Name like 'Statistics%' or ph.Name like 'Global Stat%') inner join [fw].[DimAccount] a2 on SF.AccountID=a2.AccountID INNER JOIN [ob].[viewFactDepartmentPrimaryStatisticConfiguration] PSC with (readuncommitted) on PSC.DepartmentalBudgetID = DB.DepartmentalBudgetID AND PSC.AccountID = SF.AccountID where 1=1 and db.MemberGUID=SF.ModelGUID and SF.AccountID<>0 and a.PatientClassID=a2.PatientClassID and PSC.Revenue = 1 ) and db.DepartmentalBudgetID<>0 Union all select Distinct dB.DepartmentalBudgetID, dB.Name as Model, 'Has ' + a.PatientClass + ' Gross Charges and is set to drive charges by '+ fct2.Textvalue+ ' but has no ' + a.PatientClass + ' statistics in the model' as Detail from [data].[ScoreFillin_Account] sf1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on sf1.ModelGUID=DB.MemberGUID inner join [ob].[DimAccountPH] ph1 with (readuncommitted) on sf1.PlaceholderSectionMemberGUID=ph1.MemberGUID inner join [clientob].[FactAccountVar] fct1 with (readuncommitted) on sf1.AccountID=fct1.AccountID and fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [fw].[DimAccount] a with (readuncommitted) on sf1.AccountID=a.AccountID inner join [clientob].[FactAccountRollupVar] fct2 with (readuncommitted) on a.PatientClassID=fct2.PatientClassID and DB.DepartmentalBudgetID=fct2.DepartmentalBudgetID and fct1.AssumptionID=fct2.AssumptionID inner join [ob].[DimFinancialReporting] fr with (readuncommitted) on fct2.FinancialReportingID=fr.FinancialReportingID and fr.MemberGUID='e02a8750-bc0f-47ac-922b-60e4ffd3c1e5' where 1=1 and ph1.Name like 'Gross Charge%' and fct1.AssumptionID=184 --Volume Driver and fct1.TextValue='Global Default' and fct2.TextValue like '%UOS%' and fct1.TimeClassID = 12 and fct1.FiscalYearID = (SELECT DBS.Setting from [dbo].[DBSetting] DBS where DBS.Name = 'OB_Current_Year') and not exists ( select top 1 1 from [data].[ScoreFillin_Account] SF with (readuncommitted) inner join [ob].[DimAccountPH] ph with (readuncommitted) on ph.MemberGUID=sf.PlaceholderSectionMemberGUID and (ph.Name like 'Statistics%' or ph.Name like 'Global Stat%') inner join [fw].[DimAccount] a2 on SF.AccountID=a2.AccountID INNER JOIN [ob].[viewFactDepartmentPrimaryStatisticConfiguration] PSC with (readuncommitted) on PSC.DepartmentalBudgetID = DB.DepartmentalBudgetID where 1=1 and db.MemberGUID=SF.ModelGUID and SF.AccountID<>0 and a.PatientClassID=a2.PatientClassID and PSC.Revenue = 1 ) and db.DepartmentalBudgetID<>0 GO --------------------------------------------- -- ob.viewExceptionsDepartmentBudgetProjectedBudgetVarianceTooHigh /************************************************************ ** Author: akowalski ** Create Date: 2015-01-18 ** Description: Displays financial statement lines who have a greater than 50% change from projection to budget time ** Last Modified: 2015-01-18 ** GM Release: 2015.2 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** ** *************************************************************/ create view [ob].[viewExceptionsDepartmentBudgetProjectedBudgetVarianceTooHigh] as select DB.DepartmentalBudgetID, dB.Name as Model, 'Has Projected to Budgeted Variance of '+ cast(100*(Sum(Budgeted)- SUM(Projected))/SUM(Projected) as nvarchar)+'% in '+ DIM.Name as Detail from (select FR.DepartmentalBudgetID, FR.FinancialReportingID, case when TimeClassID=2 and FiscalYearID= (select s.Setting +1 from [dbo].[DBSetting] s where Name = 'OB_Current_Year') then Total else 0 END As Budgeted, case when TimeClassID=12 and FiscalYearID= (select s.Setting from [dbo].[DBSetting] s where Name = 'OB_Current_Year') then Total else 0 END As Projected from clientob.FactReportingMonthly FR with (readuncommitted) where TimeClassID in (2,12)) as Agg inner join ob.DimDepartmentalBudget DB with (readuncommitted) on AGG.DepartmentalBudgetID=db.DepartmentalBudgetID inner join ob.DimFinancialReporting DIM with (readuncommitted) on DIM.financialreportingID=AGG.FinancialReportingID where dim.Statement='IS' group by DB.DepartmentalBudgetID, dB.Name , dim.Name having SUM(projected)<>0 and case when SUM(projected)<>0 then abs((Sum(Budgeted)- SUM(Projected))/SUM(Projected)) end > 0.5 GO --------------------------------------------- -- ob.viewExceptionsDepartmentBudgetProjectedEqualYTD /************************************************************ ** Author: akowalski ** Create Date: 2014-05-13 ** Description: Compares Projected total and YTD to determine of the anything is being projected in the non-closed months, indicates potential errors ** Last Modified: 2014-05-13 ** GM Release: 2014.3 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** ** *************************************************************/ CREATE view [ob].[viewExceptionsDepartmentBudgetProjectedEqualYTD] as -- Account Data select Distinct DB.DepartmentalBudgetID, DB.Name as Model, 'Has projected = YTD for Account: ' + Dim.Name + ' in section ' + PH.Name as Detail from clientob.FactAccount fct with (readuncommitted) inner join ob.DimDepartmentalBudget db with (readuncommitted) on db.DepartmentalBudgetID=fct.DepartmentalBudgetID inner join fw.DimAccount DIM with (readuncommitted) on fct.AccountID = DIM.AccountID inner join data.ScoreFillin_Account SF with (readuncommitted) on DB.MemberGUID = SF.ModelGUID and dim.MemberGUID=sf.FillinMemberGUID inner join ob.DimAccountPH PH with (readuncommitted) on SF.PlaceholderSectionMemberGUID= PH.MemberGUID where fct.datatypeid=3 and fct.YTD=fct.Total and fct.TimeClassID=12 and fct.Total<>0 and fct.MonthsLoaded<>12 union all -- Staffing Data select Distinct DB.DepartmentalBudgetID, DB.Name as Model, 'Has projected dollars = YTD for Pay Code Group "' + pcg.Name + '" of Job Code ' + dim.Name as Detail from clientob.FactStaffingPC fct with (readuncommitted) inner join ob.DimDepartmentalBudget db with (readuncommitted) on db.DepartmentalBudgetID=fct.DepartmentalBudgetID inner join fw.DimJobCode DIM with (readuncommitted) on fct.JobCodeID = DIM.JobCodeID inner join fw.DimPayCodeGroup pcg with (readuncommitted) on fct.PayCodeGroupID=pcg.PayCodeGroupID where fct.datatypeid=3 and fct.YTD=fct.Total and fct.TimeClassID=12 and fct.Total<>0 and fct.UnitTypeID=34 and fct.MonthsLoaded<>12 union all -- Provider Data select Distinct DB.DepartmentalBudgetID, DB.Name as Model, 'Has projected = YTD for forecast detail "' + fd.Name + '" of Provider ' + dim.Name as Detail from clientob.FactProvider fct with (readuncommitted) inner join ob.DimDepartmentalBudget db with (readuncommitted) on db.DepartmentalBudgetID=fct.DepartmentalBudgetID inner join fw.DimProvider DIM with (readuncommitted) on fct.ProviderID = DIM.ProviderID inner join ob.DimOBForecastDetail fd with (readuncommitted) on fct.OBForecastDetailID=fd.OBForecastDetailID where fct.datatypeid=3 and fct.YTD=fct.Total and fct.TimeClassID=12 and fct.Total<>0 and fct.MonthsLoaded<>12 union all -- Charge Code Data select Distinct DB.DepartmentalBudgetID, DB.Name as Model, 'Has projected dollars = YTD for charge code ' + dim.Name as Detail from clientob.FactCDM fct with (readuncommitted) inner join ob.DimDepartmentalBudget db with (readuncommitted) on db.DepartmentalBudgetID=fct.DepartmentalBudgetID inner join fw.DimChargeCode DIM with (readuncommitted) on fct.ChargeCodeID = DIM.ChargeCodeID where fct.datatypeid=3 and fct.YTD=fct.Total and fct.TimeClassID=12 and fct.Total<>0 and fct.UnitTypeID=34 and fct.MonthsLoaded<>12 GO --------------------------------------------- -- ob.viewExceptionsDepartmentBudgetProviderCompToAccount /*********************************************************************************************************************************************** ** Author: dmoldawer ** Create Date: 2014-03-21 ** Description: If forecast detail category starts with provider compensation, needs to have account fillin to Staffing GL Accounts section ** Last Modified: 2017-03-22 ** GM Release: 2014.4 ************************************************************************************************************************************************* ** Change History ************************************************************************************************************************************************* ** CID Date Author WI Description ** 1 2014-09-04 akk D-02183 Removing false positives for unmapped items and budgets with no providers ** 2 2017-01-11 srk D-05145 Updated second part of the script (after the first union) to check for mid-levels only because it is looking for secondary accounts on the forecast dimension. Also included a check for Staffing - Hours Accounts. ** 3 2017-03-22 srk D-05711 Removed 'Provider - Benefits' from this exception view because it only needs to look for comp exceptions ************************************************************************************************************************************************/ CREATE view [ob].[viewExceptionsDepartmentBudgetProviderCompToAccount] as select distinct DB.DepartmentalBudgetID, DB.Name as Model, 'Account ' + A.Name + ' is configured to receive Physician data from provider comp type ' + OBFD.Name + ' but is not filled in' as Detail from ob.DimDepartmentalBudget DB with (readuncommitted) cross join ob.DimOBForecastDetail OBFD with (readuncommitted) inner join fw.DimAccount A with (readuncommitted) on OBFD.AccountID = A.AccountID inner join ob.DimAccountPH PH with (readuncommitted) on PH.Name = 'Staffing - GL Accounts' -- Physician Account inner join [data].[ScoreFillin_Provider] sfp with (readuncommitted) on sfp.ProviderPHID<>0 and db.MemberGUID=sfp.modelguid --CID 2 BEGIN-- inner join [fw].[DimProvider] dp on sfp.FillinMemberGUID = dp.MemberGUID and dp.Type = 'Physician' --CID 2 END-- where 1=1 and OBFD.Category in ('Provider Compensation - Production Earning Tiers','Provider Compensation - Other Pay','Provider Compensation - Guarantee') -- Only Dollars and not exists(select 1 from data.ScoreFillin_Account FI with (readuncommitted) where FI.ModelGUID = DB.MemberGUID and FI.AccountID = A.AccountID and FI.AccountPHID = PH.AccountPHID) and DB.DepartmentalBudgetID != 0 and db.obactiveplans=1 and A.AccountID<>0 UNION ALL select distinct DB.DepartmentalBudgetID, DB.Name as Model, 'Account ' + A.Name + ' is configured to receive Mid-Level Physician data from provider comp type ' + OBFD.Name + ' but is not filled in' as Detail from ob.DimDepartmentalBudget DB with (readuncommitted) cross join ob.DimOBForecastDetail OBFD with (readuncommitted) inner join fw.DimAccount A with (readuncommitted) on OBFD.SecondaryAccountID = A.AccountID -- Mid-Level Account inner join ob.DimAccountPH PH with (readuncommitted) on PH.Name = 'Staffing - GL Accounts' inner join [data].[ScoreFillin_Provider] sfp with (readuncommitted) on sfp.ProviderPHID<>0 and db.MemberGUID=sfp.modelguid --CID 2 BEGIN-- inner join [fw].[DimProvider] dp on sfp.FillinMemberGUID = dp.MemberGUID and dp.Type <> 'Physician' --CID 2 END-- where 1=1 and OBFD.Category in ('Provider Compensation - Production Earning Tiers','Provider Compensation - Other Pay','Provider Compensation - Guarantee') -- Only Dollars and not exists(select 1 from data.ScoreFillin_Account FI with (readuncommitted) where FI.ModelGUID = DB.MemberGUID and FI.AccountID = A.AccountID and FI.AccountPHID = PH.AccountPHID) and DB.DepartmentalBudgetID != 0 and db.obactiveplans=1 and A.AccountID<>0 --CID 2 BEGIN -- INCLUDING HOURS ACCOUNTS-- UNION ALL select distinct DB.DepartmentalBudgetID, DB.Name as Model, 'Account ' + A.Name + ' is configured to receive Physician hours data from provider comp type ' + OBFD.Name + ' but is not filled in' as Detail from ob.DimDepartmentalBudget DB with (readuncommitted) cross join ob.DimOBForecastDetail OBFD with (readuncommitted) inner join fw.DimAccount A with (readuncommitted) on OBFD.AccountID = A.AccountID inner join ob.DimAccountPH PH with (readuncommitted) on PH.Name = 'Staffing - Hours Accounts' -- Physician Account inner join [data].[ScoreFillin_Provider] sfp with (readuncommitted) on sfp.ProviderPHID<>0 and db.MemberGUID=sfp.modelguid --CID 2 BEGIN-- inner join [fw].[DimProvider] dp on sfp.FillinMemberGUID = dp.MemberGUID and dp.Type = 'Physician' --CID 2 END-- where 1=1 and OBFD.Category in ('Provider Compensation - Hours') -- Only Hours and not exists(select 1 from data.ScoreFillin_Account FI with (readuncommitted) where FI.ModelGUID = DB.MemberGUID and FI.AccountID = A.AccountID and FI.AccountPHID = PH.AccountPHID) and DB.DepartmentalBudgetID != 0 and db.obactiveplans=1 and A.AccountID<>0 UNION ALL select distinct DB.DepartmentalBudgetID, DB.Name as Model, 'Account ' + A.Name + ' is configured to receive Mid-Level Physician hours data from provider comp type ' + OBFD.Name + ' but is not filled in' as Detail from ob.DimDepartmentalBudget DB with (readuncommitted) cross join ob.DimOBForecastDetail OBFD with (readuncommitted) inner join fw.DimAccount A with (readuncommitted) on OBFD.SecondaryAccountID = A.AccountID -- Mid-Level Account inner join ob.DimAccountPH PH with (readuncommitted) on PH.Name = 'Staffing - Hours Accounts' inner join [data].[ScoreFillin_Provider] sfp with (readuncommitted) on sfp.ProviderPHID<>0 and db.MemberGUID=sfp.modelguid --CID 2 BEGIN-- inner join [fw].[DimProvider] dp on sfp.FillinMemberGUID = dp.MemberGUID and dp.Type <> 'Physician' --CID 2 END-- where 1=1 and OBFD.Category in ('Provider Compensation - Hours') -- Only Hours and not exists(select 1 from data.ScoreFillin_Account FI with (readuncommitted) where FI.ModelGUID = DB.MemberGUID and FI.AccountID = A.AccountID and FI.AccountPHID = PH.AccountPHID) and DB.DepartmentalBudgetID != 0 and db.obactiveplans=1 and A.AccountID<>0 --CID 2 END -- INCLUDING HOURS ACCOUNTS-- GO --------------------------------------------- -- ob.viewExceptionsDepartmentBudgetProviderDeductionsMissingRevenue /************************************************************ ** Author: bparrott ** Create Date: 2015-01-18 ** Description: Budgets that have providers with data in a driven volume but no data in the driver volume. This causes the driven volume to not project or budget. ** Last Modified: ** GM Release: 2015.2 *************************************************************/ Create view [ob].[viewExceptionsDepartmentBudgetProviderDeductionsMissingRevenue] as select distinct db.departmentalbudgetid, db.name As Model, 'Provider' + prov.Name + ' has deductions but no revenue' As Detail from [ob].[DimDepartmentalBudget] DB inner join [data].[ScoreFillin_OBForecastDetail] fd on fd.OBForecastDetailID=fd.OBForecastDetailID and OBForecastDetailID=5 inner join [data].[ScoreFillin_Provider] sfp with (readuncommitted) on sfp.ProviderPHID<>0 and db.MemberGUID=sfp.modelguid and sfp.ProviderID<>0 inner join [fw].[DimProvider] prov on prov.ProviderID = sfp.providerid inner join [ob].[DimOBForecastDetail] ofd on ofd.OBForecastDetailID=fd.OBForecastDetailID and DriverID in (47,50) inner join [clientob].[FactProvider] fp on fp.ProviderID=prov.ProviderID where fp.Total <>0 and fp.TimeClassID in (1,2) and DataTypeID=4 and DB.DepartmentalBudgetID != 0 and db.obactiveplans=1 GO --------------------------------------------- -- ob.viewExceptionsDepartmentBudgetProviderDrivenVolumesMissingDriver /************************************************************ ** Author: bparrott ** Create Date: 2015-01-18 ** Description: Budgets that have providers with data in a driven volume but no data in the driver volume. This causes the driven volume to not project or budget. ** Last Modified: ** GM Release: 2015.2 *************************************************************/ Create view [ob].[viewExceptionsDepartmentBudgetProviderDrivenVolumesMissingDriver] as select distinct db.departmentalbudgetid, db.name As Model, 'Provider' + prov.Name + ' has driven but no volume' As Detail from [ob].[DimDepartmentalBudget] DB inner join [data].[ScoreFillin_OBForecastDetail] fd on fd.OBForecastDetailID=fd.OBForecastDetailID and OBForecastDetailID=3 inner join [data].[ScoreFillin_Provider] sfp with (readuncommitted) on sfp.ProviderPHID<>0 and db.MemberGUID=sfp.modelguid and sfp.ProviderID<>0 inner join [fw].[DimProvider] prov on prov.ProviderID = sfp.providerid inner join [ob].[DimOBForecastDetail] ofd on ofd.OBForecastDetailID=fd.OBForecastDetailID and DriverID <> 0 inner join [clientob].[FactProvider] fp on fp.ProviderID=prov.ProviderID where fp.Total <>0 and fp.TimeClassID in (1,2) and DataTypeID=4 and DB.DepartmentalBudgetID != 0 and db.obactiveplans=1 GO --------------------------------------------- -- ob.viewExceptionsDepartmentBudgetProviderFTEGreaterThan1 /************************************************************ ** Author: bparrott ** Create Date: 2015-01-18 ** Description: Providers whose total FTE across all departments is greater than 1. This usually indicates an oversubscription of a provider to one or more departments. ** Last Modified: ** GM Release: 2015.2 ************************************************************* ** Change History ************************************************************** ** CID Date Author WI Description ** 1 2018-01-02 sdominsk D-06353 Added additional grouping on year/timeclass and use the working hours table to convert FTEs to hours, total them, then convert total back to FTEs. *************************************************************/ CREATE view [ob].[viewExceptionsDepartmentBudgetProviderFTEGreaterThan1] as select Distinct DB.DepartmentalBudgetID, DB.Name as Model, 'Provider ' + prov.Name + ' has ' + Cast(TotalFTE as varchar(100)) + ' which is greater than 1 for all departments' As Detail from ob.DimDepartmentalBudget DB with (readuncommitted) cross join ob.DimOBForecastDetail OBFD with (readuncommitted) inner join [data].[ScoreFillin_Provider] sfp with (readuncommitted) on sfp.ProviderPHID<>0 and db.MemberGUID=sfp.modelguid inner join ( select fte.FiscalYearID, TimeClassID, ProviderID, SUM(fte.Month01*WorkH.Month01+fte.Month02*workH.Month02+fte.Month03*workH.Month03+fte.Month04*workH.Month04+fte.Month05*workH.Month05+fte.Month06*workH.Month06+fte.Month07*workH.Month07+fte.Month08*workH.Month08+fte.Month09*workH.Month09+fte.Month10*workH.Month10+fte.Month11*workH.Month11+fte.Month12*workH.Month12) /SUM(WorkH.Month01+workH.Month02+workH.Month03+workH.Month04+workH.Month05+workH.Month06+workH.Month07+workH.Month08+workH.Month09+workH.Month10+workH.Month11+workH.Month12) as TotalFTE from [clientob].[FactProvider] fte inner join ob.DimDepartmentalBudget as DBi with (readuncommitted) on dbi.DepartmentalBudgetID = fte.DepartmentalBudgetID inner join fw.DimEntity as DEi with (readuncommitted) on DBi.EntityID = DEi.EntityID inner join [client].[FactWorkingHoursPerMonth] WorkH on WorkH.FiscalYearID = fte.FiscalYearID and WorkH.WorkWeekID = DEi.WorkWeekID where OBForecastDetailID=1001 group by Providerid,fte.FiscalYearID,TimeClassID ) rollup on sfp.ProviderID=rollup.ProviderID inner join [fw].[DimProvider] prov on prov.ProviderID = sfp.ProviderID where DB.DepartmentalBudgetID != 0 and db.obactiveplans=1 and TotalFTE > 1 GO --------------------------------------------- -- ob.viewExceptionsDepartmentBudgetProviderProductionEarningsMissingDriver /************************************************************ ** Author: bparrott ** Create Date: 2015-01-18 ** Description: Budgets that have providers with data in a driven volume but no data in the driver volume. This causes the driven volume to not project or budget. ** Last Modified: ** GM Release: 2015.2 *************************************************************/ Create view [ob].[viewExceptionsDepartmentBudgetProviderProductionEarningsMissingDriver] as select distinct db.departmentalbudgetid, db.name As Model, 'Provider' + prov.Name + ' has productive earnings tiers but no volumes' As Detail from [ob].[DimDepartmentalBudget] DB inner join [data].[ScoreFillin_OBForecastDetail] fd on fd.OBForecastDetailID=fd.OBForecastDetailID inner join [data].[ScoreFillin_Provider] sfp with (readuncommitted) on sfp.ProviderPHID<>0 and db.MemberGUID=sfp.modelguid and sfp.ProviderID<>0 inner join [fw].[DimProvider] prov on prov.ProviderID = sfp.providerid inner join [clientob].[FactProvider] fp on fp.ProviderID=prov.ProviderID and fp.TimeClassID in (2,12) where prov.OBTier1Threshold <> 0 and fp.Total =0 and DB.DepartmentalBudgetID != 0 and db.obactiveplans=1 UNION select distinct db.departmentalbudgetid, db.name As Model, 'Provider' + prov.Name + ' has productive earnings tiers but no volumes' As Detail from [ob].[DimDepartmentalBudget] DB inner join [data].[ScoreFillin_OBForecastDetail] fd on fd.OBForecastDetailID=fd.OBForecastDetailID inner join [data].[ScoreFillin_Provider] sfp with (readuncommitted) on sfp.ProviderPHID<>0 and db.MemberGUID=sfp.modelguid and sfp.ProviderID<>0 inner join ob.DimobForecastDetail ob on ob.OBForecastDetailID=fd.OBForecastDetailID and OB.IsSalaryDriver=1 inner join [fw].[DimProvider] prov on prov.ProviderID = sfp.providerid inner join [clientob].[FactProvider] fp on fp.ProviderID=prov.ProviderID and fp.TimeClassID in (2,12) where prov.OBTier1Threshold <> 0 and fp.Total =0 and DB.DepartmentalBudgetID != 0 and db.obactiveplans=1 GO --------------------------------------------- -- ob.viewExceptionsDepartmentBudgetProviderRevenueMissingDriverVolume /************************************************************ ** Author: bparrott ** Create Date: 2015-01-18 ** Description: Budgets that have providers with data in a driven volume but no data in the driver volume. This causes the driven volume to not project or budget. ** Last Modified: ** GM Release: 2015.2 *************************************************************/ Create view [ob].[viewExceptionsDepartmentBudgetProviderRevenueMissingDriverVolume] as select distinct db.departmentalbudgetid, db.name As Model, 'Provider' + prov.Name + ' has revenue but no volumes' As Detail from [ob].[DimDepartmentalBudget] DB inner join [data].[ScoreFillin_OBForecastDetail] fd on fd.OBForecastDetailID=fd.OBForecastDetailID and OBForecastDetailID=4 inner join [data].[ScoreFillin_Provider] sfp with (readuncommitted) on sfp.ProviderPHID<>0 and db.MemberGUID=sfp.modelguid and sfp.ProviderID<>0 inner join [fw].[DimProvider] prov on prov.ProviderID = sfp.providerid inner join [ob].[DimOBForecastDetail] ofd on ofd.OBForecastDetailID=fd.OBForecastDetailID and DriverID in (47,50) inner join [clientob].[FactProvider] fp on fp.ProviderID=prov.ProviderID where fp.Total <>0 and fp.TimeClassID in (1,2) and DataTypeID=4 and DB.DepartmentalBudgetID != 0 and db.obactiveplans=1 GO --------------------------------------------- -- ob.viewExceptionsDepartmentBudgetRegularPCGNoHoursNoDollars /************************************************************ ** Author: mschmitz ** Create Date: 2015-01-18 ** Description: Checks for budgets that have zero YTD 'Regular' hours/dollars but have non-zero values in other pay code groups which depend on the Regular type having non-zero values ** Last Modified: 2015-01-18 ** GM Release: 2015.2 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** ** *************************************************************/ CREATE VIEW [ob].[viewExceptionsDepartmentBudgetRegularPCGNoHoursNoDollars] AS SELECT DISTINCT B.DepartmentalBudgetID, B.Name as 'Model', 'Has non-regular YTD hours/dollars for job code '+JC.name+' but no regular YTD hours/dollars for this job code. The model will be unable to project the non-regular dollars.' as 'Detail' FROM ( --Non-zero OTHER YTD dollars SELECT top (2147483647) OTH.DepartmentalBudgetID, OTH.JobCodeID, OTH.PayCodeGroupID, OTH.UnitTypeID FROM [clientob].[FactStaffingPC] OTH with (readuncommitted) WHERE OTH.UnitTypeID in ('34','51','146','147','148') AND OTH.DataTypeID=4 AND OTH.TimeClassID=1 AND OTH.FiscalYearID IN (SELECT Setting from [dbo].[DBSetting] with (readuncommitted) WHERE Name like 'OB_Current_Year') AND OTH.PayCodeGroupID NOT IN (SELECT PCGD.PayCodeGroupID FROM [fw].[DimPayCodeGroup] PCGD with (readuncommitted) WHERE PCGD.ProductiveClassID = 4) --Exclude Dollars Only AND OTH.PayCodeGroupID NOT IN (--Exludes the first Productive pay code group member SELECT DISTINCT SFOTH.PayCodeGroupID FROM [data].[ScoreFillin_PayCodeGroup] SFOTH with (readuncommitted) WHERE SFOTH.PlaceholderSectionMemberGUID = 'c0294680-5658-454f-90fd-7bfc686131aa' AND SFOTH.PlaceholderIndex=0 ) AND OTH.YTD<>0 GROUP BY OTH.DepartmentalBudgetID, OTH.JobCodeID, OTH.PayCodeGroupID, OTH.UnitTypeID HAVING SUM(OTH.YTD)<>0 ) OTHER INNER JOIN ( --Zero REGULAR YTD dollars SELECT top (2147483647) REG.DepartmentalBudgetID, REG.JobCodeID, REG.UnitTypeID FROM [clientob].[FactStaffingPC] REG with (readuncommitted) WHERE REG.UnitTypeID in ('34','51','146','147','148') AND REG.DataTypeID=4 AND REG.TimeClassID=1 AND REG.FiscalYearID IN (SELECT Setting from [dbo].[DBSetting] with (readuncommitted) WHERE Name like 'OB_Current_Year') AND REG.PayCodeGroupID IN (--Includes the first Productive pay code group member SELECT DISTINCT SFREG.PayCodeGroupID FROM [data].[ScoreFillin_PayCodeGroup] SFREG with (readuncommitted) WHERE SFREG.PlaceholderSectionMemberGUID = 'c0294680-5658-454f-90fd-7bfc686131aa' AND SFREG.PlaceholderIndex=0 ) GROUP BY REG.DepartmentalBudgetID, REG.JobCodeID, REG.UnitTypeID HAVING SUM(REG.YTD)=0 ) REGULAR ON OTHER.DepartmentalBudgetID=REGULAR.DepartmentalBudgetID AND OTHER.JobCodeID=REGULAR.JobCodeID AND OTHER.UnitTypeID=REGULAR.UnitTypeID INNER JOIN [ob].[DimDepartmentalBudget] B with (readuncommitted) ON REGULAR.DepartmentalBudgetID = B.DepartmentalBudgetID INNER JOIN [fw].[DimJobCode] JC with (readuncommitted) ON REGULAR.JobCodeID=JC.JobCodeID GO --------------------------------------------- -- ob.viewExceptionsDepartmentBudgetStaffingAdjustmentsNoComments /************************************************************ ** Author: akowalski ** Create Date: 2015-01-18 ** Description: Displays all job codes that have manager adjustments but no comments ** Last Modified: 2017-02-27 ** GM Release: 2015.2 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 2017-02-27 srk D-05574 Adding isdeleted filter and making fiscal year parameter dynamic ** *************************************************************/ CREATE view [ob].[viewExceptionsDepartmentBudgetStaffingAdjustmentsNoComments] as /********************************************************************************** ************** Fixed Job Code Adjustments *************************************** **********************************************************************************/ /******* Monthly FTE adjustments ******/ -- Projected select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Fixed Job Code ' + sf.FillinMemberName + ' has a monthly FTE Projection adjustment but no comments' as Detail from [clientob].[FactStaffingPCVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_JobCode] sf with (readuncommitted) on fct1.JobCodeID=sf.JobCodeID and sf.ModelGUID=db.MemberGUID inner join [clientob].[FactStaffingPCVar] fct2 with (readuncommitted) on fct1.JobCodeID=fct2.JobCodeID and fct1.DepartmentalBudgetID=fct2.DepartmentalBudgetID and fct1.PayCodeGroupID=fct2.PayCodeGroupID and fct1.EmployeeID=fct2.EmployeeID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and sf.JobCodePHID=2 --Staffing - Job Code (Fixed) and fct1.JobCodeID<>0 and fct1.PayCodeGroupID=0 and fct1.EmployeeID=0 and fct1.Amount<>0 and fct1.AssumptionID=620 -- Productive Adjustment and fct2.AssumptionID=30 -- Comment and fct2.Comment='' and fct1.TimeClassID=12 and fct1.FiscalYearID = (SELECT dbs.Setting from [dbo].[DBSetting] dbs where dbs.Name = 'OB_Current_Year') and fct1.IsDeleted <> 1 union all -- Budget select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Fixed Job Code ' + sf.FillinMemberName + ' has a monthly FTE Budget adjustment but no comments' as Detail from [clientob].[FactStaffingPCVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_JobCode] sf with (readuncommitted) on fct1.JobCodeID=sf.JobCodeID and sf.ModelGUID=db.MemberGUID inner join [clientob].[FactStaffingPCVar] fct2 with (readuncommitted) on fct1.JobCodeID=fct2.JobCodeID and fct1.DepartmentalBudgetID=fct2.DepartmentalBudgetID and fct1.PayCodeGroupID=fct2.PayCodeGroupID and fct1.EmployeeID=fct2.EmployeeID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and sf.JobCodePHID=2 --Staffing - Job Code (Fixed) and fct1.JobCodeID<>0 and fct1.PayCodeGroupID=0 and fct1.EmployeeID=0 and fct1.Amount<>0 and fct1.AssumptionID=620 -- Productive Adjustment and fct2.AssumptionID=30 -- Comment and fct2.Comment='' and fct1.TimeClassID=2 and fct1.FiscalYearID = (SELECT dbs.Setting + 1 from [dbo].[DBSetting] dbs where dbs.Name = 'OB_Current_Year') and fct1.IsDeleted <> 1 union all /******* Annual FTE Adjustments ******/ -- Projected select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Fixed Job Code ' + sf.FillinMemberName + ' has a yearly-level FTE Projection adjustment but no comments' as Detail from [clientob].[FactStaffingPCVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_JobCode] sf with (readuncommitted) on fct1.JobCodeID=sf.JobCodeID and sf.ModelGUID=db.MemberGUID inner join [clientob].[FactStaffingPCVar] fct2 with (readuncommitted) on fct1.JobCodeID=fct2.JobCodeID and fct1.DepartmentalBudgetID=fct2.DepartmentalBudgetID and fct1.PayCodeGroupID=fct2.PayCodeGroupID and fct1.EmployeeID=fct2.EmployeeID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and sf.JobCodePHID=2 --Staffing - Job Code (Fixed) and fct1.JobCodeID<>0 and fct1.PayCodeGroupID=0 and fct1.EmployeeID=0 and fct1.Amount<>0 and fct1.AssumptionID=18 -- Adjustment and fct2.AssumptionID=30 -- Comment and fct2.Comment='' and fct1.TimeClassID=12 and fct1.FiscalYearID = (SELECT dbs.Setting from [dbo].[DBSetting] dbs where dbs.Name = 'OB_Current_Year') and fct1.IsDeleted <> 1 union all -- Budget select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Fixed Job Code ' + sf.FillinMemberName + ' has a yearly-level FTE Budget adjustment but no comments' as Detail from [clientob].[FactStaffingPCVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_JobCode] sf with (readuncommitted) on fct1.JobCodeID=sf.JobCodeID and sf.ModelGUID=db.MemberGUID inner join [clientob].[FactStaffingPCVar] fct2 with (readuncommitted) on fct1.JobCodeID=fct2.JobCodeID and fct1.DepartmentalBudgetID=fct2.DepartmentalBudgetID and fct1.PayCodeGroupID=fct2.PayCodeGroupID and fct1.EmployeeID=fct2.EmployeeID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and sf.JobCodePHID=2 --Staffing - Job Code (Fixed) and fct1.JobCodeID<>0 and fct1.PayCodeGroupID=0 and fct1.EmployeeID=0 and fct1.Amount<>0 and fct1.AssumptionID=18 -- Adjustment and fct2.AssumptionID=30 -- Comment and fct2.Comment='' and fct1.TimeClassID=2 and fct1.FiscalYearID = (SELECT dbs.Setting + 1 from [dbo].[DBSetting] dbs where dbs.Name = 'OB_Current_Year') and fct1.IsDeleted <> 1 union all /******* Non-productive % ******/ -- Projected select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Fixed Job Code ' + sf.FillinMemberName + ' has a Non-Productive Percent Projection adjustment but no comments' as Detail from [clientob].[FactStaffingPCVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_JobCode] sf with (readuncommitted) on fct1.JobCodeID=sf.JobCodeID and sf.ModelGUID=db.MemberGUID inner join [clientob].[FactStaffingPCVar] fct2 with (readuncommitted) on fct1.JobCodeID=fct2.JobCodeID and fct1.DepartmentalBudgetID=fct2.DepartmentalBudgetID and fct1.PayCodeGroupID=fct2.PayCodeGroupID and fct1.EmployeeID=fct2.EmployeeID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and sf.JobCodePHID=2 --Staffing - Job Code (Fixed) and fct1.JobCodeID<>0 and fct1.PayCodeGroupID=0 and fct1.EmployeeID=0 and fct1.Amount<>0 and fct1.AssumptionID=155 -- Non-Productive Mix and fct2.AssumptionID=30 -- Comment and fct2.Comment='' and fct1.TimeClassID=12 and fct1.FiscalYearID = (SELECT dbs.Setting from [dbo].[DBSetting] dbs where dbs.Name = 'OB_Current_Year') and fct1.IsDeleted <> 1 union all -- Projected select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Fixed Job Code ' + sf.FillinMemberName + ' has a Non-Productive Percent Budget adjustment but no comments' as Detail from [clientob].[FactStaffingPCVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_JobCode] sf with (readuncommitted) on fct1.JobCodeID=sf.JobCodeID and sf.ModelGUID=db.MemberGUID inner join [clientob].[FactStaffingPCVar] fct2 with (readuncommitted) on fct1.JobCodeID=fct2.JobCodeID and fct1.DepartmentalBudgetID=fct2.DepartmentalBudgetID and fct1.PayCodeGroupID=fct2.PayCodeGroupID and fct1.EmployeeID=fct2.EmployeeID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and sf.JobCodePHID=2 --Staffing - Job Code (Fixed) and fct1.JobCodeID<>0 and fct1.PayCodeGroupID=0 and fct1.EmployeeID=0 and fct1.Amount<>0 and fct1.AssumptionID=155 -- Non-Productive Mix and fct2.AssumptionID=30 -- Comment and fct2.Comment='' and fct1.TimeClassID=2 and fct1.FiscalYearID = (SELECT dbs.Setting from [dbo].[DBSetting] dbs where dbs.Name = 'OB_Current_Year') and fct1.IsDeleted <> 1 union all -- Baseline Budget select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Fixed Job Code ' + sf.FillinMemberName + ' has a Non-Productive Percent Baseline Budget adjustment but no comments' as Detail from [clientob].[FactStaffingPCVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_JobCode] sf with (readuncommitted) on fct1.JobCodeID=sf.JobCodeID and sf.ModelGUID=db.MemberGUID inner join [clientob].[FactStaffingPCVar] fct2 with (readuncommitted) on fct1.JobCodeID=fct2.JobCodeID and fct1.DepartmentalBudgetID=fct2.DepartmentalBudgetID and fct1.PayCodeGroupID=fct2.PayCodeGroupID and fct1.EmployeeID=fct2.EmployeeID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and sf.JobCodePHID=2 --Staffing - Job Code (Fixed) and fct1.JobCodeID<>0 and fct1.PayCodeGroupID=0 and fct1.EmployeeID=0 and fct1.Amount<>0 and fct1.AssumptionID=155 -- Non-Productive Mix and fct2.AssumptionID=30 -- Comment and fct2.Comment='' and fct1.TimeClassID=18 and fct1.FiscalYearID = (SELECT dbs.Setting + 1 from [dbo].[DBSetting] dbs where dbs.Name = 'OB_Current_Year') and fct1.IsDeleted <> 1 union all /********************************************************************************** ************** Employee Adjustments *************************************** **********************************************************************************/ /******* Monthly FTE adjustments ******/ -- Projected select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Employee ' + sf.FillinMemberName + ' has a monthly FTE Projection adjustment but no comments' as Detail from [clientob].[FactStaffingPCVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_Employee] sf with (readuncommitted) on fct1.EmployeeID=sf.EmployeeID and sf.ModelGUID=db.MemberGUID inner join [clientob].[FactStaffingPCVar] fct2 with (readuncommitted) on fct1.JobCodeID=fct2.JobCodeID and fct1.DepartmentalBudgetID=fct2.DepartmentalBudgetID and fct1.PayCodeGroupID=fct2.PayCodeGroupID and fct1.EmployeeID=fct2.EmployeeID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and sf.EmployeePHID=202 --Staffing - Employee (Fixed) and fct1.JobCodeID=0 and fct1.PayCodeGroupID=0 and fct1.EmployeeID<>0 and fct1.Amount<>0 and fct1.AssumptionID=620 -- Productive Adjustment and fct2.AssumptionID=30 -- Comment and fct2.Comment='' and fct1.TimeClassID=12 and fct1.FiscalYearID = (SELECT dbs.Setting from [dbo].[DBSetting] dbs where dbs.Name = 'OB_Current_Year') and fct1.IsDeleted <> 1 union all -- Budget select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Employee ' + sf.FillinMemberName + ' has a monthly FTE Budget adjustment but no comments' as Detail from [clientob].[FactStaffingPCVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_Employee] sf with (readuncommitted) on fct1.EmployeeID=sf.EmployeeID and sf.ModelGUID=db.MemberGUID inner join [clientob].[FactStaffingPCVar] fct2 with (readuncommitted) on fct1.JobCodeID=fct2.JobCodeID and fct1.DepartmentalBudgetID=fct2.DepartmentalBudgetID and fct1.PayCodeGroupID=fct2.PayCodeGroupID and fct1.EmployeeID=fct2.EmployeeID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and sf.EmployeePHID=202 --Staffing - Employee (Fixed) and fct1.JobCodeID=0 and fct1.PayCodeGroupID=0 and fct1.EmployeeID<>0 and fct1.Amount<>0 and fct1.AssumptionID=620 -- Productive Adjustment and fct2.AssumptionID=30 -- Comment and fct2.Comment='' and fct1.TimeClassID=2 and fct1.FiscalYearID = (SELECT dbs.Setting + 1 from [dbo].[DBSetting] dbs where dbs.Name = 'OB_Current_Year') and fct1.IsDeleted <> 1 union all /******* Annual FTE Adjustments ******/ -- Projected select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Employee ' + sf.FillinMemberName + ' has a yearly-level FTE Projection adjustment but no comments' as Detail from [clientob].[FactStaffingPCVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_Employee] sf with (readuncommitted) on fct1.EmployeeID=sf.EmployeeID and sf.ModelGUID=db.MemberGUID inner join [clientob].[FactStaffingPCVar] fct2 with (readuncommitted) on fct1.JobCodeID=fct2.JobCodeID and fct1.DepartmentalBudgetID=fct2.DepartmentalBudgetID and fct1.PayCodeGroupID=fct2.PayCodeGroupID and fct1.EmployeeID=fct2.EmployeeID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and sf.EmployeePHID=202 --Staffing - Employee (Fixed) and fct1.JobCodeID=0 and fct1.PayCodeGroupID=0 and fct1.EmployeeID<>0 and fct1.Amount<>0 and fct1.AssumptionID=18 -- Adjustment and fct2.AssumptionID=30 -- Comment and fct2.Comment='' and fct1.TimeClassID=12 and fct1.FiscalYearID = (SELECT dbs.Setting from [dbo].[DBSetting] dbs where dbs.Name = 'OB_Current_Year') and fct1.IsDeleted <> 1 union all -- Budget select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Employee ' + sf.FillinMemberName + ' has a yearly-level FTE Budget adjustment but no comments' as Detail from [clientob].[FactStaffingPCVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_Employee] sf with (readuncommitted) on fct1.EmployeeID=sf.EmployeeID and sf.ModelGUID=db.MemberGUID inner join [clientob].[FactStaffingPCVar] fct2 with (readuncommitted) on fct1.JobCodeID=fct2.JobCodeID and fct1.DepartmentalBudgetID=fct2.DepartmentalBudgetID and fct1.PayCodeGroupID=fct2.PayCodeGroupID and fct1.EmployeeID=fct2.EmployeeID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and sf.EmployeePHID=202 --Staffing - Employee (Fixed) and fct1.JobCodeID=0 and fct1.PayCodeGroupID=0 and fct1.EmployeeID<>0 and fct1.Amount<>0 and fct1.AssumptionID=18 -- Adjustment and fct2.AssumptionID=30 -- Comment and fct2.Comment='' and fct1.TimeClassID=2 and fct1.FiscalYearID = (SELECT dbs.Setting + 1 from [dbo].[DBSetting] dbs where dbs.Name = 'OB_Current_Year') and fct1.IsDeleted <> 1 union all /********************************************************************************** ************** Variable Job Code Adjustments *************************************** **********************************************************************************/ /******* Monthly FTE adjustments ******/ -- Projected select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Variable Job Code ' + sf.FillinMemberName + ' has a monthly FTE Projection adjustment but no comments' as Detail from [clientob].[FactStaffingPCVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_JobCode] sf with (readuncommitted) on fct1.JobCodeID=sf.JobCodeID and sf.ModelGUID=db.MemberGUID inner join [clientob].[FactStaffingPCVar] fct2 with (readuncommitted) on fct1.JobCodeID=fct2.JobCodeID and fct1.DepartmentalBudgetID=fct2.DepartmentalBudgetID and fct1.PayCodeGroupID=fct2.PayCodeGroupID and fct1.EmployeeID=fct2.EmployeeID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and sf.JobCodePHID=52 --Staffing - Job Code (Variable) and fct1.JobCodeID<>0 and fct1.PayCodeGroupID=0 and fct1.EmployeeID=0 and fct1.Amount<>0 and fct1.AssumptionID=620 -- Productive Adjustment and fct2.AssumptionID=30 -- Comment and fct2.Comment='' and fct1.TimeClassID=12 and fct1.FiscalYearID = (SELECT dbs.Setting from [dbo].[DBSetting] dbs where dbs.Name = 'OB_Current_Year') and fct1.IsDeleted <> 1 union all -- Budget select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Variable Job Code ' + sf.FillinMemberName + ' has a monthly FTE Budget adjustment but no comments' as Detail from [clientob].[FactStaffingPCVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_JobCode] sf with (readuncommitted) on fct1.JobCodeID=sf.JobCodeID and sf.ModelGUID=db.MemberGUID inner join [clientob].[FactStaffingPCVar] fct2 with (readuncommitted) on fct1.JobCodeID=fct2.JobCodeID and fct1.DepartmentalBudgetID=fct2.DepartmentalBudgetID and fct1.PayCodeGroupID=fct2.PayCodeGroupID and fct1.EmployeeID=fct2.EmployeeID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and sf.JobCodePHID=52 --Staffing - Job Code (Variable) and fct1.JobCodeID<>0 and fct1.PayCodeGroupID=0 and fct1.EmployeeID=0 and fct1.Amount<>0 and fct1.AssumptionID=620 -- Productive Adjustment and fct2.AssumptionID=30 -- Comment and fct2.Comment='' and fct1.TimeClassID=2 and fct1.FiscalYearID = (SELECT dbs.Setting + 1 from [dbo].[DBSetting] dbs where dbs.Name = 'OB_Current_Year') and fct1.IsDeleted <> 1 union all /******* Non-productive % ******/ -- Projected select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Variable Job Code ' + sf.FillinMemberName + ' has a Non-Productive Percent Projection adjustment but no comments' as Detail from [clientob].[FactStaffingPCVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_JobCode] sf with (readuncommitted) on fct1.JobCodeID=sf.JobCodeID and sf.ModelGUID=db.MemberGUID inner join [clientob].[FactStaffingPCVar] fct2 with (readuncommitted) on fct1.JobCodeID=fct2.JobCodeID and fct1.DepartmentalBudgetID=fct2.DepartmentalBudgetID and fct1.PayCodeGroupID=fct2.PayCodeGroupID and fct1.EmployeeID=fct2.EmployeeID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and sf.JobCodePHID=52 --Staffing - Job Code (Variable) and fct1.JobCodeID<>0 and fct1.PayCodeGroupID=0 and fct1.EmployeeID=0 and fct1.Amount<>0 and fct1.AssumptionID=155 -- Non-Productive Mix and fct2.AssumptionID=30 -- Comment and fct2.Comment='' and fct1.TimeClassID=12 and fct1.FiscalYearID = (SELECT dbs.Setting from [dbo].[DBSetting] dbs where dbs.Name = 'OB_Current_Year') and fct1.IsDeleted <> 1 union all -- Projected select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Variable Job Code ' + sf.FillinMemberName + ' has a Non-Productive Percent Budget adjustment but no comments' as Detail from [clientob].[FactStaffingPCVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_JobCode] sf with (readuncommitted) on fct1.JobCodeID=sf.JobCodeID and sf.ModelGUID=db.MemberGUID inner join [clientob].[FactStaffingPCVar] fct2 with (readuncommitted) on fct1.JobCodeID=fct2.JobCodeID and fct1.DepartmentalBudgetID=fct2.DepartmentalBudgetID and fct1.PayCodeGroupID=fct2.PayCodeGroupID and fct1.EmployeeID=fct2.EmployeeID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and sf.JobCodePHID=52 --Staffing - Job Code (Variable) and fct1.JobCodeID<>0 and fct1.PayCodeGroupID=0 and fct1.EmployeeID=0 and fct1.Amount<>0 and fct1.AssumptionID=155 -- Non-Productive Mix and fct2.AssumptionID=30 -- Comment and fct2.Comment='' and fct1.TimeClassID=2 and fct1.FiscalYearID = (SELECT dbs.Setting from [dbo].[DBSetting] dbs where dbs.Name = 'OB_Current_Year') and fct1.IsDeleted <> 1 union all -- Baseline Budget select Distinct db.DepartmentalBudgetID as DepartmentalBudgetID, db.Name as Model, 'Variable Job Code ' + sf.FillinMemberName + ' has a Non-Productive Percent Baseline Budget adjustment but no comments' as Detail from [clientob].[FactStaffingPCVar] fct1 with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on fct1.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [data].[ScoreFillin_JobCode] sf with (readuncommitted) on fct1.JobCodeID=sf.JobCodeID and sf.ModelGUID=db.MemberGUID inner join [clientob].[FactStaffingPCVar] fct2 with (readuncommitted) on fct1.JobCodeID=fct2.JobCodeID and fct1.DepartmentalBudgetID=fct2.DepartmentalBudgetID and fct1.PayCodeGroupID=fct2.PayCodeGroupID and fct1.EmployeeID=fct2.EmployeeID where db.DepartmentalBudgetID<>0 and db.OBActivePlans=1 and sf.JobCodePHID=52 --Staffing - Job Code (Variable) and fct1.JobCodeID<>0 and fct1.PayCodeGroupID=0 and fct1.EmployeeID=0 and fct1.Amount<>0 and fct1.AssumptionID=155 -- Non-Productive Mix and fct2.AssumptionID=30 -- Comment and fct2.Comment='' and fct1.TimeClassID=18 and fct1.FiscalYearID = (SELECT dbs.Setting + 1 from [dbo].[DBSetting] dbs where dbs.Name = 'OB_Current_Year') and fct1.IsDeleted <> 1 GO --------------------------------------------- -- ob.viewExceptionsDepartmentBudgetUnfilledInPayrollAccounts /************************************************************ ** Author: dmoldawer ** Create Date: 2014-03-21 ** Description: Checks payroll accounts crosswalk for unfilled-in accounts ** Last Modified: 2017-02-10 ** GM Release: 2017.2 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 2017-02-10 akk D-05027 Adding hours to view and making it work with all crosswalk types ** *************************************************************/ CREATE view [ob].[viewExceptionsDepartmentBudgetUnfilledInPayrollAccounts] as ---- Exceptions for Dollars Option 3b (and the overrides of 3a) select DB.DepartmentalBudgetID, db.name as Model, 'Account ' + DA.Name + ' is configured to receive salary data from Pay Code Group ' + DPG.Name + ' and Job Code ' + DJC.Name + ' but is not filled in to the department' as detail from ob.DimDepartmentalBudget DB with (readuncommitted) cross join clientob.FactPayrollToAccountCrosswalk CW with (readuncommitted) inner join fw.DimAccount DA with (readuncommitted) on CW.AccountID = DA.AccountID inner join fw.DimJobCode DJC with (readuncommitted) on CW.JobCodeID = DJC.JobCodeID inner join fw.DimPayCodeGroup DPG with (readuncommitted) on CW.PayCodeGroupID = DPG.PayCodeGroupID inner join data.ScoreFillin_PayCodeGroup FPG with (readuncommitted) on CW.PayCodeGroupID = FPG.PayCodeGroupID and FPG.ModelGUID = DB.MemberGUID inner join data.ScoreFillin_JobCode FJC with (readuncommitted) on CW.JobCodeID = FJC.JobCodeID and FJC.ModelGUID = DB.MemberGUID and fjc.JobCodePHID=53 --job code (all) where db.obactiveplans=1 and not exists (select 1 from data.ScoreFillin_Account FI with (readuncommitted) inner join ob.DimAccountPH PH with (readuncommitted) on FI.AccountPHID = PH.AccountPHID and cw.AccountID=FI.AccountID where FI.ModelGUID = DB.MemberGUID and PH.Name = 'Staffing - GL Accounts' ) and CW.PayCodeGroupID<>0 and CW.JobCodeID<>0 and CW.UnitTypeID=34 --dollars union all ---- Exceptions for Dollars Option 2 select DB.DepartmentalBudgetID, db.name as Model, 'Account ' + DA.Name + ' is configured to receive salary data from Job Code ' + DJC.Name + ' but is not filled in to the department' as detail from ob.DimDepartmentalBudget DB with (readuncommitted) cross join clientob.FactPayrollToAccountCrosswalk CW with (readuncommitted) inner join fw.DimAccount DA with (readuncommitted) on CW.AccountID = DA.AccountID inner join fw.DimJobCode DJC with (readuncommitted) on CW.JobCodeID = DJC.JobCodeID inner join fw.DimPayCodeGroup DPG with (readuncommitted) on CW.PayCodeGroupID = DPG.PayCodeGroupID inner join data.ScoreFillin_JobCode FJC with (readuncommitted) on CW.JobCodeID = FJC.JobCodeID and FJC.ModelGUID = DB.MemberGUID and fjc.JobCodePHID=53 --job code (all) where db.obactiveplans=1 and not exists (select 1 from data.ScoreFillin_Account FI with (readuncommitted) inner join ob.DimAccountPH PH with (readuncommitted) on FI.AccountPHID = PH.AccountPHID and cw.AccountID=FI.AccountID where FI.ModelGUID = DB.MemberGUID and PH.Name = 'Staffing - GL Accounts' ) and CW.PayCodeGroupID=0 and CW.JobCodeID<>0 and CW.UnitTypeID=34 --dollars union all ---- Exceptions for Dollars Option 1 and the defaults for 3a select DB.DepartmentalBudgetID, db.name as Model, 'Account ' + DA.Name + ' is configured to receive salary data from Pay Code Group ' + DPG.Name + ' but is not filled in to the department' as detail from ob.DimDepartmentalBudget DB with (readuncommitted) cross join clientob.FactPayrollToAccountCrosswalk CW with (readuncommitted) inner join fw.DimAccount DA with (readuncommitted) on CW.AccountID = DA.AccountID inner join fw.DimJobCode DJC with (readuncommitted) on CW.JobCodeID = DJC.JobCodeID inner join fw.DimPayCodeGroup DPG with (readuncommitted) on CW.PayCodeGroupID = DPG.PayCodeGroupID inner join data.ScoreFillin_PayCodeGroup FPG with (readuncommitted) on CW.PayCodeGroupID = FPG.PayCodeGroupID and FPG.ModelGUID = DB.MemberGUID where db.obactiveplans=1 and not exists (select 1 from data.ScoreFillin_Account FI with (readuncommitted) inner join ob.DimAccountPH PH with (readuncommitted) on FI.AccountPHID = PH.AccountPHID and cw.AccountID=FI.AccountID where FI.ModelGUID = DB.MemberGUID and PH.Name = 'Staffing - GL Accounts' ) and exists (select 1 from [data].[ScoreFillin_JobCode] FI with (readuncommitted) where FI.ModelGUID = DB.MemberGUID and FI.PlaceholderSectionMemberGUID='e9ce521d-6953-4636-94cd-b36798515385' -- Job Code (All) and FI.JobCodeID<>0 ) and CW.PayCodeGroupID<>0 and CW.JobCodeID=0 and CW.UnitTypeID=34 --dollars union all ---- Exceptions for Hours Option 3b (and the overrides of 3a) select DB.DepartmentalBudgetID, db.name as Model, 'Account ' + DA.Name + ' is configured to receive hours data from Pay Code Group ' + DPG.Name + ' and Job Code ' + DJC.Name + ' but is not filled in to the department' as detail from ob.DimDepartmentalBudget DB with (readuncommitted) cross join clientob.FactPayrollToAccountCrosswalk CW with (readuncommitted) inner join fw.DimAccount DA with (readuncommitted) on CW.AccountID = DA.AccountID inner join fw.DimJobCode DJC with (readuncommitted) on CW.JobCodeID = DJC.JobCodeID inner join fw.DimPayCodeGroup DPG with (readuncommitted) on CW.PayCodeGroupID = DPG.PayCodeGroupID inner join data.ScoreFillin_PayCodeGroup FPG with (readuncommitted) on CW.PayCodeGroupID = FPG.PayCodeGroupID and FPG.ModelGUID = DB.MemberGUID inner join data.ScoreFillin_JobCode FJC with (readuncommitted) on CW.JobCodeID = FJC.JobCodeID and FJC.ModelGUID = DB.MemberGUID and fjc.JobCodePHID=53 --job code (all) where db.obactiveplans=1 and not exists (select 1 from data.ScoreFillin_Account FI with (readuncommitted) inner join ob.DimAccountPH PH with (readuncommitted) on FI.AccountPHID = PH.AccountPHID and cw.AccountID=FI.AccountID where FI.ModelGUID = DB.MemberGUID and PH.Name = 'Staffing - Hours Accounts' ) and CW.PayCodeGroupID<>0 and CW.JobCodeID<>0 and CW.UnitTypeID=51 -- hours union all ---- Exceptions for Hours Option 2 select DB.DepartmentalBudgetID, db.name as Model, 'Account ' + DA.Name + ' is configured to receive hours data from Job Code ' + DJC.Name + ' but is not filled in to the department' as detail from ob.DimDepartmentalBudget DB with (readuncommitted) cross join clientob.FactPayrollToAccountCrosswalk CW with (readuncommitted) inner join fw.DimAccount DA with (readuncommitted) on CW.AccountID = DA.AccountID inner join fw.DimJobCode DJC with (readuncommitted) on CW.JobCodeID = DJC.JobCodeID inner join fw.DimPayCodeGroup DPG with (readuncommitted) on CW.PayCodeGroupID = DPG.PayCodeGroupID inner join data.ScoreFillin_JobCode FJC with (readuncommitted) on CW.JobCodeID = FJC.JobCodeID and FJC.ModelGUID = DB.MemberGUID and fjc.JobCodePHID=53 --job code (all) where db.obactiveplans=1 and not exists (select 1 from data.ScoreFillin_Account FI with (readuncommitted) inner join ob.DimAccountPH PH with (readuncommitted) on FI.AccountPHID = PH.AccountPHID and cw.AccountID=FI.AccountID where FI.ModelGUID = DB.MemberGUID and PH.Name = 'Staffing - Hours Accounts' ) and CW.PayCodeGroupID=0 and CW.JobCodeID<>0 and CW.UnitTypeID=51 -- hours union all ---- Exceptions for Hours Option 1 and the defaults for 3a select DB.DepartmentalBudgetID, db.name as Model, 'Account ' + DA.Name + ' is configured to receive hours data from Pay Code Group ' + DPG.Name + ' but is not filled in to the department' as detail from ob.DimDepartmentalBudget DB with (readuncommitted) cross join clientob.FactPayrollToAccountCrosswalk CW with (readuncommitted) inner join fw.DimAccount DA with (readuncommitted) on CW.AccountID = DA.AccountID inner join fw.DimJobCode DJC with (readuncommitted) on CW.JobCodeID = DJC.JobCodeID inner join fw.DimPayCodeGroup DPG with (readuncommitted) on CW.PayCodeGroupID = DPG.PayCodeGroupID inner join data.ScoreFillin_PayCodeGroup FPG with (readuncommitted) on CW.PayCodeGroupID = FPG.PayCodeGroupID and FPG.ModelGUID = DB.MemberGUID where db.obactiveplans=1 and not exists (select 1 from data.ScoreFillin_Account FI with (readuncommitted) inner join ob.DimAccountPH PH with (readuncommitted) on FI.AccountPHID = PH.AccountPHID and cw.AccountID=FI.AccountID where FI.ModelGUID = DB.MemberGUID and PH.Name = 'Staffing - Hours Accounts' ) and exists (select 1 from [data].[ScoreFillin_JobCode] FI with (readuncommitted) where FI.ModelGUID = DB.MemberGUID and FI.PlaceholderSectionMemberGUID='e9ce521d-6953-4636-94cd-b36798515385' -- Job Code (All) and FI.JobCodeID<>0 ) and CW.PayCodeGroupID<>0 and CW.JobCodeID=0 and CW.UnitTypeID=51 -- hours GO --------------------------------------------- -- ob.viewExceptionsDepartmentBudgetUnmappedProviderForecastItems /************************************************************ ** Author: akowalski ** Create Date: 2014-05-13 ** Description: Displays any provider comp forecast details that are not mapped to an account (which will prevent them from impacting the income statement) ** Last Modified: 2014-05-13 ** GM Release: 2014.3 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 7/8/16 vyaremko B-11627 Adding filter for 'Hours' and 'FTEs' ** 2 8/1/16 vyaremko B-11627 Exclude 'FTEs' from exception report ** *************************************************************/ CREATE VIEW [ob].[viewExceptionsDepartmentBudgetUnmappedProviderForecastItems] AS SELECT DISTINCT db.[DepartmentalBudgetID], db.[Name] AS Model, 'Forecast detail ' + fd.[Name] + ' does not have an GL account associated with it for Physician Providers' as Detail FROM [ob].[DimDepartmentalBudget] AS db WITH (READUNCOMMITTED) INNER JOIN [data].[ScoreFillin_Provider] AS sf WITH (READUNCOMMITTED) ON db.[MemberGUID] = sf.[ModelGUID] AND sf.[PlaceholderSectionMemberGUID] <> '93524AAB-C5E0-428F-81DE-6AD7ED5CE0CC' --not specified CROSS JOIN [ob].[DimOBForecastDetail] AS fd WITH (READUNCOMMITTED) WHERE (fd.[Category] LIKE 'Provider Comp%') AND ((fd.[AccountID] = 0) OR (fd.[Account] = '0 - Not Specified')) AND ( ((fd.[Category] <> 'Provider Compensation - FTEs') AND (fd.[Category] <> 'Provider Compensation - Hours')) OR ((fd.[Category] = 'Provider Compensation - Hours') AND EXISTS(SELECT 1 FROM [dbo].[SystemCenterStep] AS scs WHERE scs.[GlobalID] = 'HourstoAccountMappings' AND (CAST(scs.[PropertyXML].query('//IsHoursChecked/text()') AS NVARCHAR(5)) = 'True'))) ) AND (db.[DepartmentalBudgetID] <> 0) UNION ALL SELECT DISTINCT db.[DepartmentalBudgetID], db.[Name] as Model, 'Forecast detail ' + fd.[Name] + ' does not have an GL account associated with it for Non-Physician Providers' AS Detail FROM [ob].[DimDepartmentalBudget] AS db WITH (READUNCOMMITTED) INNER JOIN [data].[ScoreFillin_Provider] AS sf WITH (READUNCOMMITTED) ON db.[MemberGUID] = sf.[ModelGUID] AND sf.[PlaceholderSectionMemberGUID] <> '93524AAB-C5E0-428F-81DE-6AD7ED5CE0CC' --not specified CROSS JOIN [ob].[DimOBForecastDetail] AS fd WITH (READUNCOMMITTED) WHERE (fd.[Category] LIKE 'Provider Comp%') AND ((fd.[SecondaryAccountID] = 0) OR (fd.[SecondaryAccount] = '0 - Not Specified')) AND ( ((fd.[Category] <> 'Provider Compensation - FTEs') AND (fd.[Category] <> 'Provider Compensation - Hours')) OR ((fd.[Category] = 'Provider Compensation - Hours') AND EXISTS(SELECT 1 FROM [dbo].[SystemCenterStep] AS scs WHERE scs.[GlobalID] = 'HourstoAccountMappings' AND (CAST(scs.[PropertyXML].query('//IsHoursChecked/text()') AS NVARCHAR(5)) = 'True'))) ) AND (db.[DepartmentalBudgetID] <> 0) GO --------------------------------------------- -- ob.viewExceptionsGlobalStatsAccountsNotBudgeted /************************************************************ ** Author: jgerber ** Create Date: 2015-01-18 ** Description: Finds any accounts that have YTD data but don't have a budget ** Last Modified: 2015-01-18 ** GM Release: 2015.2 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** ** *************************************************************/ create view [ob].[viewExceptionsGlobalStatsAccountsNotBudgeted] as select db.OBGlobalStatisticsPlanID, db.Name as Model, 'Has '+cast(cast(Sum(Total) as decimal(16,2)) as nvarchar(100))+' current year '+ut.Name+' for Global Statistic '+acc.Name+' but does not have a budget' as Detail from [clientob].[FactGlobalStatistics] fa inner join [fw].[DimUnitType] ut on fa.UnitTypeID=ut.UnitTypeID inner join [ob].[DimOBGlobalStatistics] acc on acc.OBGlobalStatisticID=fa.OBGlobalStatisticID inner join [ob].[DimOBGlobalStatisticsPlan] db on db.OBGlobalStatisticsPlanID=fa.OBGlobalStatisticsPlanID where FiscalYearID = (select Setting from [dbo].[DBSetting] where DBSettingGUID='9c921c27-f3e4-4616-b3fd-925a75870b62') and TimeClassID=1 and Total<>0 and acc.OBGlobalStatisticID<>0 and ut.UnitTypeID in (34,51,140) --Dollars, Volume, and Hours (contract labor) and not exists (select 1 from [clientob].[FactGlobalStatistics] fa2 where FiscalYearID = (select Setting+1 from [dbo].[DBSetting] where DBSettingGUID='9c921c27-f3e4-4616-b3fd-925a75870b62') and TimeClassID=2 and Total<>0 and fa2.OBGlobalStatisticsPlanID=fa.OBGlobalStatisticsPlanID and fa2.OBGlobalStatisticID=fa.OBGlobalStatisticID and fa2.UnitTypeID=fa.UnitTypeID) group by db.OBGlobalStatisticsPlanID, db.Name, ut.Name, acc.Name GO --------------------------------------------- -- ob.viewExceptionsGlobalStatsAllocationsNot100Pct /************************************************************ ** Author: jgerber ** Create Date: 2015-01-18 ** Description: Checks for any reportable global stat being allocated any differently than 100% ** Last Modified: 08/22/2017 ** GM Release: 2015.2 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 08/22/2017 vyaremko 05689 Ignore deleted records ** *************************************************************/ CREATE VIEW [ob].[viewExceptionsGlobalStatsAllocationsNot100Pct] AS SELECT DISTINCT GSP.[OBGlobalStatisticsPlanID] AS [OBGlobalStatisticsPlanID], GSP.[Name] AS [Model], 'Has an allocation of '+ CAST(CAST([TotalAllocation] * 100 AS DECIMAL(6,2)) AS NVARCHAR(10)) + '% for Global Statistic: ' + GS.[Name] AS [Detail] FROM [ob].[DimOBGlobalStatisticsPlan] AS GSP INNER JOIN ( SELECT [OBGlobalStatisticsPlanID], [OBGlobalStatisticID], SUM([Allocation]) AS [TotalAllocation] FROM [clientob].[FactGlobalStatisticsDeptMapping] WHERE [IsReportable] = 1 AND [IsDeleted] = 0 GROUP BY [OBGlobalStatisticsPlanID], [OBGlobalStatisticID] ) AS ROLLUP ON GSP.[OBGlobalStatisticsPlanID] = ROLLUP.[OBGlobalStatisticsPlanID] INNER JOIN [ob].[DimOBGlobalStatistics] AS GS ON GS.[OBGlobalStatisticID] = ROLLUP.[OBGlobalStatisticID] WHERE [TotalAllocation] <> 1; GO --------------------------------------------- -- ob.viewExceptionsGlobalStatsDataWithoutDimensionMembers /************************************************************ ** Author: jgerber ** Create Date: 2014-09-18 ** Description: Checks for global stat data that does not have dimension members ** Last Modified: 2014-09-18 ** GM Release: 2014.4 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** *************************************************************/ create view [ob].[viewExceptionsGlobalStatsDataWithoutDimensionMembers] as --***Fact Global Statistics********************************************* -- Department Dimension select Distinct 0 as OBGlobalStatisticsPlanID, 'Not Specified' as Model, 'Has Global Statistics data for a Global Statistics Plan that no longer exists' as Detail from [clientob].[FactGlobalStatistics] data with (readuncommitted) left join [ob].[DimOBGlobalStatisticsPlan] db with (readuncommitted) on db.OBGlobalStatisticsPlanID = data.OBGlobalStatisticsPlanID where db.MemberGUID is null UNION ALL -- Global Statistics Dimension select Distinct db.OBGlobalStatisticsPlanID, db.Name as Model, 'Has Global Statistics data for a Global Statistic that no longer exists' as Detail from [clientob].[FactGlobalStatistics] data with (readuncommitted) inner join[ob].[DimOBGlobalStatisticsPlan] db with (readuncommitted) on db.OBGlobalStatisticsPlanID = data.OBGlobalStatisticsPlanID left join [ob].[DimOBGlobalStatistics] dim with (readuncommitted) on dim.OBGlobalStatisticID = data.OBGlobalStatisticID where dim.MemberGUID is null GO --------------------------------------------- -- ob.viewExceptionsGlobalStatsDepartmentAllocationOrphanedData /************************************************************ ** Author: jgerber ** Create Date: 2015-01-18 ** Description: Checks for global stat allocations that don't have dimension members ** Last Modified: 2015-01-18 ** GM Release: 2015.2 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** ** *************************************************************/ create view [ob].[viewExceptionsGlobalStatsDepartmentAllocationOrphanedData] as -- Department Dimension select Distinct 0 as OBGlobalStatisticsPlanID, 'Not Specified' as Model, 'Has a Global Statistics Allocation for a Departmental Budget Plan that no longer exists' as Detail from [clientob].[viewFactGlobalStatisticMapping] data with (readuncommitted) left join [ob].[DimDepartmentalBudget] db with (readuncommitted) on db.DepartmentalBudgetID = data.DepartmentalBudgetID where db.MemberGUID is null UNION ALL -- Account Dimension select Distinct dep.OBGlobalStatisticsPlanID, db.Name as Model, 'Has a Global Statistics Allocation for an Account that no longer exists' as Detail from [clientob].[viewFactGlobalStatisticMapping] data with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on db.DepartmentalBudgetID = data.DepartmentalBudgetID inner join [fw].[DimDepartment] dep with (readuncommitted) on dep.DepartmentID=db.DepartmentID left join [fw].[DimAccount] dim with (readuncommitted) on dim.AccountID = data.AccountID where dim.MemberGUID is null UNION ALL -- Global Statistics Dimension select Distinct dep.OBGlobalStatisticsPlanID, db.Name as Model, 'Has a Global Statistics Allocation for a Global Statistic that no longer exists' as Detail from [clientob].[viewFactGlobalStatisticMapping] data with (readuncommitted) inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on db.DepartmentalBudgetID = data.DepartmentalBudgetID inner join [fw].[DimDepartment] dep with (readuncommitted) on dep.DepartmentID=db.DepartmentID left join [ob].[DimOBGlobalStatistics] dim with (readuncommitted) on dim.AccountID = data.AccountID and dim.DepartmentID=data.DepartmentID where dim.MemberGUID is null GO --------------------------------------------- -- ob.viewExceptionsGlobalStatsDuplicateFillins /************************************************************ ** Author: jgerber ** Create Date: 2015-01-18 ** Description: Finds all duplicate fillins in the OB Global Statistics model for the Account and Globals Statistics dimensions ** Last Modified: 2015-01-18 ** GM Release: 2015.2 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** ** *************************************************************/ create view [ob].[viewExceptionsGlobalStatsDuplicateFillins] as --ACCOUNTS --CHECK IF EXCLUSIVE FILLINS EXIST IN OTHER SECTIONS select DB.OBGlobalStatisticsPlanID, DB.Name as Model, DIM.Name + ' in section ' + PH.Name + ' is also in another section' as Detail from ob.DimOBGlobalStatisticsPlan DB with (readuncommitted) inner join XPlan X with (readuncommitted) on DB.MemberGUID = X.PlanGUID inner join data.ScoreFillin_Account FI with (readuncommitted) on DB.MemberGUID = FI.ModelGUID inner join fw.DimAccount DIM with (readuncommitted) on FI.AccountID = DIM.AccountID inner join ob.DimAccountPH PH with (readuncommitted) on FI.AccountPHID = PH.AccountPHID inner join ( select distinct DB.OBGlobalStatisticsPlanID, FI1.AccountID from [ob].[DimOBGlobalStatisticsPlan] DB with (readuncommitted) inner join XPlan X with (readuncommitted) on DB.MemberGUID = X.PlanGUID inner join MEPHSection ME with (readuncommitted) on X.ModelTemplateGUID = ME.ModelTemplateGUID inner join data.ScoreFillin_Account FI1 with (readuncommitted) on DB.MemberGUID = FI1.ModelGUID and ME.PHSectionMemberGUID = FI1.PlaceholderSectionMemberGUID where exists (select 1 from data.ScoreFillin_Account FI2 with (readuncommitted) inner join XPlan X with (readuncommitted) on fi2.modelguid = X.PlanGUID inner join MEPHSection ME2 with (readuncommitted) on X.ModelTemplateGUID = ME2.ModelTemplateGUID and FI2.PlaceholderSectionMemberGUID=ME2.PHSectionMemberGUID where FI2.ModelGUID = FI1.ModelGUID and FI2.FillinMemberGUID = FI1.FillinMemberGUID and FI2.FillinGUID != FI1.FillinGUID and ME2.ExclusivityGroup=me.ExclusivityGroup) and ME.IsExclusive = 1 ) DUPES on DB.OBGlobalStatisticsPlanID = DUPES.OBGlobalStatisticsPlanID and DIM.AccountID = DUPES.AccountID and PH.AccountPHID<>0 union all --GLOBAL STATISTICS -- CHECK IF FILLINS EXISTS IN BOTH VARIABLE AND FIXED select DB.OBGlobalStatisticsPlanID, DB.Name as Model, DIM.Name + ' in section ' + PH.Name + ' is also in another section' as Detail from ob.DimOBGlobalStatisticsPlan DB with (readuncommitted) inner join XPlan X with (readuncommitted) on DB.MemberGUID = X.PlanGUID inner join [data].[ScoreFillin_OBGlobalStatistics] FI with (readuncommitted) on DB.MemberGUID = FI.ModelGUID inner join [ob].[DimOBGlobalStatistics] DIM with (readuncommitted) on FI.OBGlobalStatisticID = DIM.OBGlobalStatisticID inner join [ob].[DimOBGlobalStatisticsPH] PH with (readuncommitted) on FI.OBGlobalStatisticsPHID = PH.OBGlobalStatisticsPHID inner join ( select distinct DB.OBGlobalStatisticsPlanID, FI1.OBGlobalStatisticID from [ob].[DimOBGlobalStatisticsPlan] DB with (readuncommitted) inner join XPlan X with (readuncommitted) on DB.MemberGUID = X.PlanGUID inner join MEPHSection ME with (readuncommitted) on X.ModelTemplateGUID = ME.ModelTemplateGUID inner join data.ScoreFillin_OBGlobalStatistics FI1 with (readuncommitted) on DB.MemberGUID = FI1.ModelGUID and ME.PHSectionMemberGUID = FI1.PlaceholderSectionMemberGUID where exists (select 1 from data.ScoreFillin_OBGlobalStatistics FI2 with (readuncommitted) inner join XPlan X with (readuncommitted) on fi2.modelguid = X.PlanGUID inner join MEPHSection ME2 with (readuncommitted) on X.ModelTemplateGUID = ME2.ModelTemplateGUID and FI2.PlaceholderSectionMemberGUID=ME2.PHSectionMemberGUID where FI2.ModelGUID = FI1.ModelGUID and FI2.FillinMemberGUID = FI1.FillinMemberGUID and FI2.FillinGUID != FI1.FillinGUID and ME2.ExclusivityGroup=me.ExclusivityGroup) and ME.IsExclusive = 1 ) DUPES on DB.OBGlobalStatisticsPlanID = DUPES.OBGlobalStatisticsPlanID and DIM.OBGlobalStatisticID = DUPES.OBGlobalStatisticID and PH.OBGlobalStatisticsPHID<>0 GO --------------------------------------------- -- ob.viewExceptionsGlobalStatsFillinCacheIssues /************************************************************ ** Author: jgerber ** Create Date: 2015-01-18 ** Description: Checks for fill-ins in Score Fill-ins but not in Cache tables or PH Index doesnt Match ** Last Modified: 2015-01-18 ** GM Release: 2015.2 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 2016-02-26 mholov D-03407 Filtering out 'GM Blank' model template ** 2 2016-08-10 kf B-12543 FP - System Center Exception Management - Initial Framework *************************************************************/ CREATE view [ob].[viewExceptionsGlobalStatsFillinCacheIssues] as --Account select DB.OBGlobalStatisticsPlanID, DB.Name as Model, 'The fill-in cache for Account ' + DIM.Name + ' out of sync' as Detail from [ob].[DimOBGlobalStatisticsPlan] DB with (readuncommitted) inner join ScoreFillin SF with (readuncommitted) on DB.MemberGUID = SF.ModelGUID left join data.ScoreFillin_Account FI with (readuncommitted) on SF.ModelGUID = FI.ModelGUID and sf.PlaceholderSectionMemberGUID=fi.PlaceholderSectionMemberGUID and sf.FillinMemberGUID=FI.FillinMemberGUID and sf.PlaceholderIndex=FI.PlaceholderIndex inner join fw.DimAccount DIM with (readuncommitted) on SF.FillinMemberGUID = DIM.MemberGUID inner join XPlan P on DB.MemberGUID = P.PlanGUID where FI.FillinMemberGUID is null and db.OBGlobalStatisticsPlanID<>0 and P.ModelTemplateGUID <> '7F792F1F-F32A-4053-9907-534A2D736D45'--GM Blank union all select DB.OBGlobalStatisticsPlanID, DB.Name as Model, 'The fill-in cache for Account ' + DIM.Name + ' out of sync' as Detail from [ob].[DimOBGlobalStatisticsPlan] DB with (readuncommitted) inner join data.ScoreFillin_Account FI with (readuncommitted) on DB.MemberGUID = FI.ModelGUID left join ScoreFillin SF with (readuncommitted) on FI.ModelGUID = SF.ModelGUID and sf.PlaceholderSectionMemberGUID=fi.PlaceholderSectionMemberGUID and sf.FillinMemberGUID=FI.FillinMemberGUID and sf.PlaceholderIndex=FI.PlaceholderIndex inner join fw.DimAccount DIM with (readuncommitted) on FI.FillinMemberGUID = DIM.MemberGUID inner join XPlan P on DB.MemberGUID = P.PlanGUID where SF.FillinMemberGUID is null and db.OBGlobalStatisticsPlanID<>0 and P.ModelTemplateGUID <> '7F792F1F-F32A-4053-9907-534A2D736D45'--GM Blank union all --Global Statistics select DB.OBGlobalStatisticsPlanID, DB.Name as Model, 'The fill-in cache for Global Statistic ' + DIM.Name + ' out of sync' as Detail from ob.DimOBGlobalStatisticsPlan DB with (readuncommitted) inner join ScoreFillin SF with (readuncommitted) on DB.MemberGUID = SF.ModelGUID left join [data].[ScoreFillin_OBGlobalStatistics] FI with (readuncommitted) on SF.ModelGUID = FI.ModelGUID and sf.PlaceholderSectionMemberGUID=fi.PlaceholderSectionMemberGUID and sf.FillinMemberGUID=FI.FillinMemberGUID and sf.PlaceholderIndex=FI.PlaceholderIndex inner join [ob].[DimOBGlobalStatistics] DIM with (readuncommitted) on SF.FillinMemberGUID = DIM.MemberGUID inner join XPlan P on DB.MemberGUID = P.PlanGUID where FI.FillinMemberGUID is null and db.OBGlobalStatisticsPlanID<>0 and P.ModelTemplateGUID <> '7F792F1F-F32A-4053-9907-534A2D736D45'--GM Blank union all select DB.OBGlobalStatisticsPlanID, DB.Name as Model, 'The fill-in cache for Global Statistic ' + DIM.Name + ' out of sync' as Detail from ob.DimOBGlobalStatisticsPlan DB with (readuncommitted) inner join [data].[ScoreFillin_OBGlobalStatistics] FI with (readuncommitted) on DB.MemberGUID = FI.ModelGUID left join ScoreFillin SF with (readuncommitted) on FI.ModelGUID = SF.ModelGUID and sf.PlaceholderSectionMemberGUID=fi.PlaceholderSectionMemberGUID and sf.FillinMemberGUID=FI.FillinMemberGUID and sf.PlaceholderIndex=FI.PlaceholderIndex inner join [ob].[DimOBGlobalStatistics] DIM with (readuncommitted) on FI.FillinMemberGUID = DIM.MemberGUID inner join XPlan P on DB.MemberGUID = P.PlanGUID where SF.FillinMemberGUID is null and db.OBGlobalStatisticsPlanID<>0 and P.ModelTemplateGUID <> '7F792F1F-F32A-4053-9907-534A2D736D45'--GM Blank union all --Global Statistics Plan select DB.OBGlobalStatisticsPlanID, DB.Name as Model, 'The fill-in cache for Global Statistics Plan ' + DIM.Name + ' out of sync' as Detail from ob.DimOBGlobalStatisticsPlan DB with (readuncommitted) inner join ScoreFillin SF with (readuncommitted) on DB.MemberGUID = SF.ModelGUID left join [data].[ScoreFillin_OBGlobalStatisticsPlan] FI with (readuncommitted) on SF.ModelGUID = FI.ModelGUID and sf.PlaceholderSectionMemberGUID=fi.PlaceholderSectionMemberGUID and sf.FillinMemberGUID=FI.FillinMemberGUID and sf.PlaceholderIndex=FI.PlaceholderIndex inner join [ob].[DimOBGlobalStatisticsPlan] DIM with (readuncommitted) on SF.FillinMemberGUID = DIM.MemberGUID inner join XPlan P on DB.MemberGUID = P.PlanGUID where FI.FillinMemberGUID is null and db.OBGlobalStatisticsPlanID<>0 and P.ModelTemplateGUID <> '7F792F1F-F32A-4053-9907-534A2D736D45'--GM Blank union all select DB.OBGlobalStatisticsPlanID, DB.Name as Model, 'The fill-in cache for Global Statistics Plan ' + DIM.Name + ' out of sync' as Detail from ob.DimOBGlobalStatisticsPlan DB with (readuncommitted) inner join [data].[ScoreFillin_OBGlobalStatisticsPlan] FI with (readuncommitted) on DB.MemberGUID = FI.ModelGUID left join ScoreFillin SF with (readuncommitted) on FI.ModelGUID = SF.ModelGUID and sf.PlaceholderSectionMemberGUID=fi.PlaceholderSectionMemberGUID and sf.FillinMemberGUID=FI.FillinMemberGUID and sf.PlaceholderIndex=FI.PlaceholderIndex inner join [ob].[DimOBGlobalStatisticsPlan] DIM with (readuncommitted) on FI.FillinMemberGUID = DIM.MemberGUID inner join XPlan P on DB.MemberGUID = P.PlanGUID where SF.FillinMemberGUID is null and db.OBGlobalStatisticsPlanID<>0 and P.ModelTemplateGUID <> '7F792F1F-F32A-4053-9907-534A2D736D45'--GM Blank union all --Fiscal Year select DB.OBGlobalStatisticsPlanID, DB.Name as Model, 'The fill-in cache for Fiscal Year ' + DIM.Name + ' out of sync' as Detail from ob.DimOBGlobalStatisticsPlan DB with (readuncommitted) inner join ScoreFillin SF with (readuncommitted) on DB.MemberGUID = SF.ModelGUID left join data.ScoreFillin_FiscalYear FI with (readuncommitted) on SF.ModelGUID = FI.ModelGUID and sf.PlaceholderSectionMemberGUID=fi.PlaceholderSectionMemberGUID and sf.FillinMemberGUID=FI.FillinMemberGUID and sf.PlaceholderIndex=FI.PlaceholderIndex inner join fw.DimFiscalYear DIM with (readuncommitted) on SF.FillinMemberGUID = DIM.MemberGUID inner join XPlan P on DB.MemberGUID = P.PlanGUID where FI.FillinMemberGUID is null and db.OBGlobalStatisticsPlanID<>0 and P.ModelTemplateGUID <> '7F792F1F-F32A-4053-9907-534A2D736D45'--GM Blank UNION ALL select DB.OBGlobalStatisticsPlanID, DB.Name as Model, 'The fill-in cache for Fiscal Year ' + DIM.Name + ' out of sync' as Detail from ob.DimOBGlobalStatisticsPlan DB with (readuncommitted) inner join [data].[ScoreFillin_FiscalYear] FI with (readuncommitted) on DB.MemberGUID = FI.ModelGUID left join ScoreFillin SF with (readuncommitted) on FI.ModelGUID = SF.ModelGUID and sf.PlaceholderSectionMemberGUID=fi.PlaceholderSectionMemberGUID and sf.FillinMemberGUID=FI.FillinMemberGUID and sf.PlaceholderIndex=FI.PlaceholderIndex inner join fw.DimFiscalYear DIM with (readuncommitted) on FI.FillinMemberGUID = DIM.MemberGUID inner join XPlan P on DB.MemberGUID = P.PlanGUID where SF.FillinMemberGUID is null and db.OBGlobalStatisticsPlanID<>0 and P.ModelTemplateGUID <> '7F792F1F-F32A-4053-9907-534A2D736D45'--GM Blank GO --------------------------------------------- -- ob.viewExceptionsGlobalStatsFillinsExceedingMaxCount /************************************************************ ** Author: jgerber ** Create Date: 2015-01-18 ** Description: Finds all max fillin exceptions for Global Statistics ** Last Modified: 2015-01-18 ** GM Release: 2015.2 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** ** *************************************************************/ create view [ob].[viewExceptionsGlobalStatsFillinsExceedingMaxCount] as select DB.OBGlobalStatisticsPlanID, DB.Name as Model, 'Has ' + cast((select COUNT(*) from [data].[ScoreFillin_OBGlobalStatistics] FI with (readuncommitted) inner join [ob].[DimOBGlobalStatisticsPH] PH with (readuncommitted) on FI.OBGlobalStatisticsPHID = PH.OBGlobalStatisticsPHID where DB.MemberGUID = FI.ModelGUID and PH.Name = SE.GlobalID) as varchar(10)) + ' Global Statistics in section ' + SE.GlobalID + ' with maximum ' + cast(SE.[Count] as varchar(10)) as Detail from XPlan X with (readuncommitted) inner join [ob].[DimOBGlobalStatisticsPlan] DB with (readuncommitted) on X.PlanGUID = DB.MemberGUID inner join EMFModelTemplate MT with (readuncommitted) on X.ModelTemplateGUID = MT.ModelTemplateGUID inner join EMFModelTemplateWorksheet WS with (readuncommitted) on MT.ModelTemplateGUID = WS.ModelTemplateGUID inner join MEExcelCell EC with (readuncommitted) on WS.WorksheetGUID = EC.ExcelSheetGUID inner join MEScoreExpansion SE with (readuncommitted) on EC.ExcelCellGUID = SE.ExcelCellGUID where (select COUNT(*) from data.ScoreFillin_OBGlobalStatistics FI with (readuncommitted) inner join ob.DimOBGlobalStatisticsPH PH with (readuncommitted) on FI.OBGlobalStatisticsPHID = PH.OBGlobalStatisticsPHID where DB.MemberGUID = FI.ModelGUID and PH.Name = SE.GlobalID) > SE.[Count] GO --------------------------------------------- -- ob.viewExceptionsGlobalStatsInvalidDropdownSelection /************************************************************ ** Author: jgerber ** Create Date: 2015-01-18 ** Description: Finds any text boxes that saved a value of blank that will cause #n/a errors in the model ** Last Modified: 2015-01-18 ** GM Release: 2015.2 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** ** *************************************************************/ create view [ob].[viewExceptionsGlobalStatsInvalidDropdownSelection] as select Distinct DB.OBGlobalStatisticsPlanID, DB.Name as Model, 'Global Statistic ' + Dim.Name + ' has an invalid drop-down box selection' as Detail from [clientob].[FactGlobalStatisticsVar] fct with (readuncommitted) inner join [ob].[DimOBGlobalStatisticsPlan] DB with (readuncommitted) on fct.OBGlobalStatisticsPlanID=db.OBGlobalStatisticsPlanID inner join [ob].[DimOBGlobalStatistics] DIM with (readuncommitted) on fct.OBGlobalStatisticID = DIM.OBGlobalStatisticID where fct.UnitTypeID=141 and TextValue_Formula='x' and TextValue='' GO --------------------------------------------- -- ob.viewExceptionsGlobalStatsMissingGlobalStatistics /**************************************************************************************************************** ** Author: akowalski ** Create Date: 2014-06-29 ** Description: Detects any statistics loaded into the global statistics import table that will go no where in global statistic sampling ** Last Modified: 2014-08-29 ** GM Release: 2014.4 ****************************************************************************************************************** ** Change History ****************************************************************************************************************** ** CID Date Author WI Description ** 1 2017-01-11 srk D-05373 Commented out a section that is a valid use case ** (departments with some stats that are driven off of history ** but some are global stats depending on the Global Statistics ** dimension setup/mapping) ** *****************************************************************************************************************/ CREATE view [ob].[viewExceptionsGlobalStatsMissingGlobalStatistics] as SELECT distinct GSP.OBGlobalStatisticsPlanID, GSP.Name as Model, 'Has data for Department ' + d.Name + ' and account ' + a.Name + ' but does not have a department-level global statistic configured' as Detail FROM [int].[FactGlobalStatistics] fct with (readuncommitted) inner join fw.DimDepartment d with (readuncommitted) on fct.DepartmentID=d.DepartmentID inner join [fw].[DimAccount] a with (readuncommitted) on a.AccountID=fct.AccountID inner join [ob].[DimOBGlobalStatisticsPlan] gsp with (readuncommitted) on gsp.OBGlobalStatisticsPlanID=d.OBGlobalStatisticsPlanID left outer join [ob].[DimOBGlobalStatistics] gs with (readuncommitted) on gs.AccountID=fct.AccountID and gs.DepartmentID=fct.DepartmentID where a.IsGlobal=0 and gs.Name is null and gsp.OBGlobalStatisticsPlanID<>0 and d.IsOB=1 and d.IsActive=1 and a.IsStat=1 union all SELECT distinct GSP.OBGlobalStatisticsPlanID, GSP.Name as Model, 'Has data for account ' + a.Name + ' but does not have an entity-level global statistic configured' as Detail FROM [int].[FactGlobalStatistics] fct with (readuncommitted) inner join fw.DimDepartment d with (readuncommitted) on fct.DepartmentID=d.DepartmentID inner join [fw].[DimAccount] a with (readuncommitted) on a.AccountID=fct.AccountID inner join [ob].[DimOBGlobalStatisticsPlan] gsp with (readuncommitted) on gsp.OBGlobalStatisticsPlanID=d.OBGlobalStatisticsPlanID left outer join [ob].[DimOBGlobalStatistics] gs with (readuncommitted) on gs.AccountID=fct.AccountID and gs.DepartmentID=0 where a.IsGlobal=1 and gs.Name is null and gsp.OBGlobalStatisticsPlanID<>0 and d.IsOB=1 and d.IsActive=1 and a.IsStat=1 --CID 1 BEGIN-- --union all -- --SELECT -- distinct -- GSP.OBGlobalStatisticsPlanID, -- GSP.Name as Model, -- 'Has data for Department ' + d.Name + ' and account ' + a.Name + ' but does not have a department-level global statistics configured' as Detail --FROM -- [int].[FactStatistic] fct with (readuncommitted) -- inner join fw.DimDepartment d with (readuncommitted) on fct.DepartmentID=d.DepartmentID -- inner join [fw].[DimAccount] a with (readuncommitted) on a.AccountID=fct.AccountID -- inner join [ob].[DimOBGlobalStatisticsPlan] gsp with (readuncommitted) on gsp.OBGlobalStatisticsPlanID=d.OBGlobalStatisticsPlanID -- left outer join [ob].[DimOBGlobalStatistics] gs with (readuncommitted) on gs.AccountID=fct.AccountID and gs.DepartmentID=fct.DepartmentID -- where a.IsGlobal=0 and gs.Name is null -- and gsp.OBGlobalStatisticsPlanID<>0 and d.IsOB=1 and d.IsActive=1 -- and a.IsStat=1 --CID 1 END-- union all SELECT distinct GSP.OBGlobalStatisticsPlanID, GSP.Name as Model, 'Has data for account ' + a.Name + ' but does not have an entity-level global statistic configured' as Detail FROM [int].[FactStatistic] fct with (readuncommitted) inner join fw.DimDepartment d with (readuncommitted) on fct.DepartmentID=d.DepartmentID inner join [fw].[DimAccount] a with (readuncommitted) on a.AccountID=fct.AccountID inner join [ob].[DimOBGlobalStatisticsPlan] gsp with (readuncommitted) on gsp.OBGlobalStatisticsPlanID=d.OBGlobalStatisticsPlanID left outer join [ob].[DimOBGlobalStatistics] gs with (readuncommitted) on gs.AccountID=fct.AccountID and gs.DepartmentID=0 where a.IsGlobal=1 and gs.Name is null and gsp.OBGlobalStatisticsPlanID<>0 and d.IsOB=1 and d.IsActive=1 and a.IsStat=1 GO --------------------------------------------- -- ob.viewExceptionsGlobalStatsMissingSelfFillin /************************************************************ ** Author: jgerber ** Create Date: 2015-01-18 ** Description: Displays any global statistics that are missing their self fill-in ** Last Modified: 2015-01-18 ** GM Release: 2015.2 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 2016-08-10 kf B-12543 FP - System Center Exception Management - Initial Framework *************************************************************/ CREATE view [ob].[viewExceptionsGlobalStatsMissingSelfFillin] as select Distinct DB.OBGlobalStatisticsPlanID, DB.Name as Model, 'Global Statistics Plan ' + db.Name + ' is missing the self-fill-in' as Detail from [ob].[DimOBGlobalStatisticsPlan] DB with (readuncommitted) left outer join [data].[ScoreFillin_OBGlobalStatisticsPlan] sf with (readuncommitted) on db.MemberGUID=sf.ModelGUID and PlaceholderSectionMemberGUID='4c6057f6-854c-410c-9b51-4feb8e70c98e' where sf.FillinGUID is null and db.OBGlobalStatisticsPlanID<>0 GO --------------------------------------------- -- ob.viewExceptionsGlobalStatsOrphanedData /************************************************************ ** Author: akowalski ** Create Date: 2014-09-17 ** Description: Checks for nonzero data that will not show up in the model because a fillin is missing ** Last Modified: 2014-09-17 ** GM Release: 2014.4 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** ** *************************************************************/ Create view [ob].[viewExceptionsGlobalStatsOrphanedData] as -- Stat data select Distinct db.OBGlobalStatisticsPlanID, db.Name as Model, 'Has data in Statistic ' + dim.Name+ ' but it is not filled in' as Detail from [clientob].[FactGlobalStatistics] data with (readuncommitted) inner join [ob].[DimOBGlobalStatisticsPlan] db with (readuncommitted) on db.OBGlobalStatisticsPlanID = data.OBGlobalStatisticsPlanID inner join [ob].[DimOBGlobalStatistics] dim with (readuncommitted) on dim.OBGlobalStatisticID=data.OBGlobalStatisticID left outer join [data].[ScoreFillin_OBGlobalStatistics] sf with (readuncommitted) on db.MemberGUID=sf.ModelGUID and dim.MemberGUID=sf.FillinMemberGUID and sf.PlaceholderSectionMemberGUID<>'b2ac7cce-90f5-47fc-a75e-c695ce64583d' --not specified where sf.FillinGUID is null and data.Total <> 0 and data.FiscalYearID>= (select s.setting-1 from [dbo].[DBSetting] s where Name = 'OB_Current_Year') and db.OBGlobalStatisticsPlanID<>0 and dim.OBGlobalStatisticID<>0 GO --------------------------------------------- -- ob.viewExceptionsGlobalStatsProjectedEqualYTD /************************************************************ ** Author: jgerber ** Create Date: 2015-01-18 ** Description:Compares Projected total and YTD to determine if anything is being projected in the non-closed months, indicates potential errors ** Last Modified: 2015-01-18 ** GM Release: 2015.2 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** ** *************************************************************/ create view [ob].[viewExceptionsGlobalStatsProjectedEqualYTD] as select Distinct DB.OBGlobalStatisticsPlanID, DB.Name as Model, 'Has projected = YTD for Global Statistics: ' + Dim.Name + ' in section ' + PH.Name as Detail from [clientob].[FactGlobalStatistics] fct with (readuncommitted) inner join [ob].[DimOBGlobalStatisticsPlan] db with (readuncommitted) on db.OBGlobalStatisticsPlanID=fct.OBGlobalStatisticsPlanID inner join [ob].[DimOBGlobalStatistics] DIM with (readuncommitted) on fct.OBGlobalStatisticID = DIM.OBGlobalStatisticID inner join [data].[ScoreFillin_OBGlobalStatistics] SF with (readuncommitted) on DB.MemberGUID = SF.ModelGUID and dim.MemberGUID=sf.FillinMemberGUID inner join [ob].[DimOBGlobalStatisticsPH] PH with (readuncommitted) on SF.PlaceholderSectionMemberGUID= PH.MemberGUID where fct.datatypeid=3 and fct.YTD=fct.Total and fct.TimeClassID=12 and fct.Total<>0 and fct.MonthsLoaded<>12 GO --------------------------------------------- -- ob.viewExceptionsInvalidRosterBudgetData CREATE VIEW ob.viewExceptionsInvalidRosterBudgetData AS /**************************************************************************************************** ** Author: cbecker ** Create Date: 2017-02-09 ** Description: Checks for data imported from roster budgeting with no fixed staffing fill-in ** Last Modified: 2017-02-09 ** GM Release: 2017.1.2 **************************************************************************************************** ** Change History **************************************************************************************************** ** CID Date Author WI Description ** ****************************************************************************************************/ SELECT distinct DepartmentCode = ddb.DepartmentCode, DepartmentalBudgetID = ddb.DepartmentalBudgetID, DepartmentalBudget = ddb.Name, JobCodeID = djc.JobCodeID, JobCode = djc.Name, FTEs = SUM(FTEs), Dollars = SUM(Dollars), Detail = case when ddb.DepartmentalBudgetID is null then 'Departmental Budget does not exist' when ddb.OBActivePlans = 0 then 'Departmental Budget has not been activated' when djc.JobCodeID is null then 'Job code does not exist' when sf.PlaceholderSectionMemberGUID is null then 'Job code does not exist in this model' else 'Job code is in the wrong section' end FROM [fp].[RosterBudgetBasisResult] rb left join [fp].[BudgetConfig] bc on rb.BudgetConfigGUID = bc.BudgetConfigGUID left join [ob].[DimDepartmentalBudget] ddb on rb.DepartmentID = ddb.DepartmentID left join [fw].[DimJobCode] djc on rb.JobCodeID = djc.JobCodeID left join [fw].[DimPayCodeGroup] dpcg on rb.PayCodeGroupID = dpcg.PayCodeGroupID left join [data].[ScoreFillin_JobCode] sf on djc.MemberGUID = sf.FillinMemberGUID and ddb.MemberGUID = sf.ModelGUID left join [clientob].[FactStaffingPCNonReporting] fct on ddb.DepartmentalBudgetID = fct.DepartmentalBudgetID and djc.JobCodeID = fct.JobCodeID and dpcg.PayCodeGroupID = fct.PayCodeGroupID and bc.FiscalYearID = fct.FiscalYearID where ddb.DepartmentalBudgetID is null or djc.JobCodeID is null or dpcg.PayCodeGroupID is null and bc.IsActive = 1 GROUP BY ddb.DepartmentCode, ddb.DepartmentalBudgetID, ddb.Name, djc.JobCodeID, djc.Name, ddb.OBActivePlans, sf.PlaceholderSectionMemberGUID GO --------------------------------------------- -- ob.viewExceptionsReimbursementAccountsNotBudgeted /************************************************************ ** Author: blewis ** Create Date: 2015-01-15 ** Description: Finds any text boxes that saved a value of blank that will cause #n/a errors in the model ** Last Modified: 2015-01-15 ** GM Release: 2015.2 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 ** *************************************************************/ CREATE view [ob].[viewExceptionsReimbursementAccountsNotBudgeted] AS select db.OBReimbursementPlanID, db.Name as Model, 'Has '+cast(cast(Sum(Total) as decimal(16,2)) as nvarchar(100))+' current year '+ut.Name+' for Account '+acc.Name+' but does not have a budget' as Detail from [clientob].[FactReimbursementAccount] fa inner join [fw].[DimUnitType] ut on fa.UnitTypeID=ut.UnitTypeID inner join [fw].[DimAccount] acc on acc.AccountID=fa.AccountID inner join [ob].[DimOBReimbursementPlan] db on db.OBReimbursementPlanID=fa.OBReimbursementPlanID where FiscalYearID = (select Setting from [dbo].[DBSetting] where DBSettingGUID='9c921c27-f3e4-4616-b3fd-925a75870b62') and TimeClassID=1 and Total<>0 and acc.AccountID<>0 and not (acc.OBIsDefined=1 and acc.OBAccountPHID=0 and acc.OBStatModelSectionID=0) and db.OBReimbursementPlanID<>0 and ut.UnitTypeID in (34,51,140) --Dollars, Volume, and Hours (contract labor) and not exists (select 1 from [clientob].[FactReimbursementAccount] fa2 where FiscalYearID = (select Setting+1 from [dbo].[DBSetting] where DBSettingGUID='9c921c27-f3e4-4616-b3fd-925a75870b62') and TimeClassID=2 and Total<>0 and fa2.OBReimbursementPlanID=fa.OBReimbursementPlanID and fa2.AccountID=fa.AccountID and fa2.UnitTypeID=fa.UnitTypeID) group by db.OBReimbursementPlanID, db.Name, ut.Name, acc.Name GO --------------------------------------------- -- ob.viewExceptionsReimbursementAllocationsNot100Pct /************************************************************ ** Author: blewis ** Create Date: 2015-01-15 ** Description: Checks that Account Allocation is 100% for each account in Allocation table ** Last Modified: 2015-01-15 ** GM Release: 2015.2 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 ** *************************************************************/ CREATE view [ob].[viewExceptionsReimbursementAllocationsNot100Pct] as SELECT DB.OBReimbursementPlanID, DB.Name as Model, 'Has Budget Allocation Not Equal to 1.0000 for Account: ' + Dim.Name + ' Allocation = ' + Cast(round(SUM(BudgetAllocation),4) as nvarchar(max)) as Detail from [clientob].[FactReimbursementDeptMapping] fct with (readuncommitted) inner join [ob].[DimOBReimbursementPlan] DB with (readuncommitted) on fct.OBReimbursementPlanID=DB.OBReimbursementPlanID inner join [fw].[DimDepartment] md with (readuncommitted) on fct.DepartmentID=md.DepartmentID inner join [ob].[DimDepartmentalBudget] D with (readuncommitted) on md.DepartmentID=D.DepartmentID inner join [fw].[DimAccount] Dim with (readuncommitted) on fct.AccountID=Dim.AccountID Group by fct.AccountID, Dim.Name, DB.OBReimbursementPlanID, DB.Name Having SUM(BudgetAllocation)<>1 Union All SELECT DB.OBReimbursementPlanID, DB.Name as Model, 'Has Projection Allocation Not Equal to 1.0000 for Account: ' + Dim.Name + ' Allocation = ' + Cast(round(SUM(ProjectionAllocation),4) as nvarchar(max)) as Detail from [clientob].[FactReimbursementDeptMapping] fct with (readuncommitted) inner join [ob].[DimOBReimbursementPlan] DB with (readuncommitted) on fct.OBReimbursementPlanID=DB.OBReimbursementPlanID inner join [fw].[DimDepartment] md with (readuncommitted) on fct.DepartmentID=md.DepartmentID inner join [ob].[DimDepartmentalBudget] D with (readuncommitted) on md.DepartmentID=D.DepartmentID inner join [fw].[DimAccount] Dim with (readuncommitted) on fct.AccountID=Dim.AccountID Group by fct.AccountID, Dim.Name, DB.OBReimbursementPlanID, DB.Name Having SUM(ProjectionAllocation)<>1 GO --------------------------------------------- -- ob.viewExceptionsReimbursementDataWithoutDimensionMembers /************************************************************ ** Author: jgerber ** Create Date: 2014-09-18 ** Description: Checks for reimbursement data that does not have dimension members ** Last Modified: 2014-09-18 ** GM Release: 2014.4 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** *************************************************************/ create view [ob].[viewExceptionsReimbursementDataWithoutDimensionMembers] as --***Fact Reimbursement Account********************************************* -- Reimbursement Plan Dimension select Distinct 0 as OBReimbursementPlanID, 'Not Specified' as Model, 'Has Reimbursement Account data for a Reimbursement plan that no longer exists' as Detail from [clientob].[FactReimbursementAccount] data with (readuncommitted) left join [ob].[DimOBReimbursementPlan] db with (readuncommitted) on db.OBReimbursementPlanID = data.OBReimbursementPlanID where db.MemberGUID is null UNION ALL -- Account Dimension select Distinct db.OBReimbursementPlanID, db.Name as Model, 'Has Reimbursement Account data for an Account that no longer exists' as Detail from [clientob].[FactReimbursementAccount] data with (readuncommitted) inner join [ob].[DimOBReimbursementPlan] db with (readuncommitted) on db.OBReimbursementPlanID = data.OBReimbursementPlanID left join [fw].[DimAccount] dim with (readuncommitted) on dim.AccountID = data.AccountID where dim.MemberGUID is null UNION ALL -- Patient Reimbursement Group Dimension select Distinct db.OBReimbursementPlanID, db.Name as Model, 'Has Reimbursement Account data for a Patient Reimbursement Group that no longer exists' as Detail from [clientob].[FactReimbursementAccount] data with (readuncommitted) inner join [ob].[DimOBReimbursementPlan] db with (readuncommitted) on db.OBReimbursementPlanID = data.OBReimbursementPlanID left join [fw].[DimPatientReimbursementGroup] dim with (readuncommitted) on dim.PatientReimbursementGroupID = data.PatientReimbursementGroupID where dim.MemberGUID is null UNION ALL --***Fact Reimbursement ********************************************* -- Reimbursement Plan Dimension select Distinct 0 as OBReimbursementPlanID, 'Not Specified' as Model, 'Has Reimbursement data for a Reimbursement plan that no longer exists' as Detail from [clientob].[FactReimbursement] data with (readuncommitted) left join [ob].[DimOBReimbursementPlan] db with (readuncommitted) on db.OBReimbursementPlanID = data.OBReimbursementPlanID where db.MemberGUID is null UNION ALL -- Forecast Detail Dimension select Distinct db.OBReimbursementPlanID, db.Name as Model, 'Has Reimbursement data for a Forecast Detail that no longer exists' as Detail from [clientob].[FactReimbursement] data with (readuncommitted) inner join [ob].[DimOBReimbursementPlan] db with (readuncommitted) on db.OBReimbursementPlanID = data.OBReimbursementPlanID left join [ob].[DimOBForecastDetail] dim with (readuncommitted) on dim.OBForecastDetailID = data.OBForecastDetailID where dim.MemberGUID is null UNION ALL -- Patient Reimbursement Group Dimension select Distinct db.OBReimbursementPlanID, db.Name as Model, 'Has Reimbursement data for a Patient Reimbursement Group that no longer exists' as Detail from [clientob].[FactReimbursement] data with (readuncommitted) inner join [ob].[DimOBReimbursementPlan] db with (readuncommitted) on db.OBReimbursementPlanID = data.OBReimbursementPlanID left join [fw].[DimPatientReimbursementGroup] dim with (readuncommitted) on dim.PatientReimbursementGroupID = data.PatientReimbursementGroupID where dim.MemberGUID is null UNION ALL -- Payor Group Dimension select Distinct db.OBReimbursementPlanID, db.Name as Model, 'Has Reimbursement data for a Payor Group that no longer exists' as Detail from [clientob].[FactReimbursement] data with (readuncommitted) inner join [ob].[DimOBReimbursementPlan] db with (readuncommitted) on db.OBReimbursementPlanID = data.OBReimbursementPlanID left join [fw].[DimPayorGroup] dim with (readuncommitted) on dim.PayorGroupID = data.PayorGroupID where dim.MemberGUID is null UNION ALL -- Payor Dimension select Distinct db.OBReimbursementPlanID, db.Name as Model, 'Has Reimbursement data for a Payor that no longer exists' as Detail from [clientob].[FactReimbursement] data with (readuncommitted) inner join [ob].[DimOBReimbursementPlan] db with (readuncommitted) on db.OBReimbursementPlanID = data.OBReimbursementPlanID left join [fw].[DimPayor] dim with (readuncommitted) on dim.PayorID = data.PayorID where dim.MemberGUID is null GO --------------------------------------------- -- ob.viewExceptionsReimbursementDuplicateFillins /************************************************************ ** Author: blewis ** Create Date: 2015-01-15 ** Description: Finds all duplicate fillins in the Reimbursement model for the Account, Employee, Job Code, and Pay Code Group dimensions ** Last Modified: 2015-01-15 ** GM Release: 2015.2 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 ** *************************************************************/ CREATE view [ob].[viewExceptionsReimbursementDuplicateFillins] as --ACCOUNTS --CHECK IF EXCLUSIVE FILLINS EXIST IN OTHER SECTIONS select DB.OBReimbursementPlanID, DB.Name as Model, DIM.Name + ' in section ' + PH.Name + ' is also in another section' as Detail from [ob].[DimOBReimbursementPlan] DB with (readuncommitted) inner join XPlan X with (readuncommitted) on DB.MemberGUID = X.PlanGUID inner join data.ScoreFillin_Account FI with (readuncommitted) on DB.MemberGUID = FI.ModelGUID inner join fw.DimAccount DIM with (readuncommitted) on FI.AccountID = DIM.AccountID inner join ob.DimAccountPH PH with (readuncommitted) on FI.AccountPHID = PH.AccountPHID inner join ( select distinct DB.OBReimbursementPlanID, FI1.AccountID from [ob].[DimOBReimbursementPlan] DB with (readuncommitted) inner join XPlan X with (readuncommitted) on DB.MemberGUID = X.PlanGUID inner join MEPHSection ME with (readuncommitted) on X.ModelTemplateGUID = ME.ModelTemplateGUID inner join data.ScoreFillin_Account FI1 with (readuncommitted) on DB.MemberGUID = FI1.ModelGUID and ME.PHSectionMemberGUID = FI1.PlaceholderSectionMemberGUID where exists (select 1 from data.ScoreFillin_Account FI2 with (readuncommitted) inner join XPlan X with (readuncommitted) on fi2.modelguid = X.PlanGUID inner join MEPHSection ME2 with (readuncommitted) on X.ModelTemplateGUID = ME2.ModelTemplateGUID and FI2.PlaceholderSectionMemberGUID=ME2.PHSectionMemberGUID where FI2.ModelGUID = FI1.ModelGUID and FI2.FillinMemberGUID = FI1.FillinMemberGUID and FI2.FillinGUID != FI1.FillinGUID and ME2.ExclusivityGroup=me.ExclusivityGroup) and ME.IsExclusive = 1 ) DUPES on DB.OBReimbursementPlanID = DUPES.OBReimbursementPlanID and DIM.AccountID = DUPES.AccountID and PH.AccountPHID<>0 GO --------------------------------------------- -- ob.viewExceptionsReimbursementEntityAndDepartmentNotEqual /************************************************************ ** Author: blewis ** Create Date: 2015-01-15 ** Description: Show entities where total reimbursement model deductions dont match the final allocated deductions in Dept ** Last Modified: 2015-01-15 ** GM Release: 2015.2 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 ** *************************************************************/ CREATE view [ob].[viewExceptionsReimbursementEntityAndDepartmentNotEqual] as --PROJECTED Select REIMB.OBReimbursementPlanID, REIMB.Model, 'Dept Proj. Budget Amt: ' + FORMAT(DEPT.Total, 'C', 'en-us') + ' Reimb Model Proj. Amt: ' +FORMAT(REIMB.TOTAL, 'C', 'en-us') + ' Department: ' + REIMB.Dept + ' Account: ' + REIMB.Acct as Detail FROM (select rp.OBReimbursementPlanID, rp.Name as Model, db.DepartmentalBudgetID, ma.AccountID, SUM(rm.Month01 + rm.Month02 + rm.Month03 + rm.Month04 + rm.Month05 + rm.Month06 + rm.Month07 + rm.Month08 + rm.Month09 + rm.Month10 + rm.Month11 + rm.Month12) as Total, md.Name as Dept, ma.Name as Acct from [clientob].[viewFactReimbursementMapping] rm inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on rm.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [fw].[DimDepartment] md on db.DepartmentID=md.DepartmentID inner join [fw].[DimAccount] ma with (readuncommitted) on ma.AccountID=rm.AccountID inner join [ob].[DimOBReimbursementPlan] rp with (readuncommitted) on md.OBReimbursementPlanID=rp.OBReimbursementPlanID inner join [data].[ScoreFillin_Account] sf with (readuncommitted) on rm.AccountID=sf.AccountID and rp.MemberGUID=sf.ModelGUID where rm.TimeClassID IN(12) AND rm.FiscalYearID = (select Setting from [dbo].[DBSetting] where DBSettingGUID='9c921c27-f3e4-4616-b3fd-925a75870b62') Group by rp.OBReimbursementPlanID, db.DepartmentalBudgetID, ma.AccountID, rp.Name, md.Name, ma.Name) As REIMB INNER JOIN (select rp.OBReimbursementPlanID, rp.Name as Model, db.DepartmentalBudgetID, ma.AccountID, SUM(rm.Total) as Total, md.Name as Dept, ma.Name as Acct from [clientob].[FactAccount] rm inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on rm.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [fw].[DimDepartment] md on db.DepartmentID=md.DepartmentID inner join [fw].[DimAccount] ma with (readuncommitted) on ma.AccountID=rm.AccountID inner join [ob].[DimOBReimbursementPlan] rp with (readuncommitted) on md.OBReimbursementPlanID=rp.OBReimbursementPlanID inner join [data].[ScoreFillin_Account] sf with (readuncommitted) on rm.AccountID=sf.AccountID and rp.MemberGUID=sf.ModelGUID where rm.TimeClassID IN(12) AND rm.FiscalYearID = (select Setting from [dbo].[DBSetting] where DBSettingGUID='9c921c27-f3e4-4616-b3fd-925a75870b62') Group by rp.OBReimbursementPlanID, db.DepartmentalBudgetID, ma.AccountID, rp.Name, md.Name, ma.Name) AS DEPT ON REIMB.AccountID=DEPT.AccountID AND REIMB.DepartmentalBudgetID=DEPT.DepartmentalBudgetID Where ROUND(DEPT.Total,0)<>ROUND(REIMB.Total,0) UNION ALL --BUDGETED Select REIMB.OBReimbursementPlanID, REIMB.Model, 'Dept Budg. Budget Amt: ' + FORMAT(DEPT.Total, 'C', 'en-us') + ' Reimb Model Budg. Amt: ' +FORMAT(REIMB.TOTAL, 'C', 'en-us') + ' Department: ' + REIMB.Dept + ' Account: ' + REIMB.Acct as Detail FROM (select rp.OBReimbursementPlanID, rp.Name as Model, db.DepartmentalBudgetID, ma.AccountID, SUM(rm.Month01 + rm.Month02 + rm.Month03 + rm.Month04 + rm.Month05 + rm.Month06 + rm.Month07 + rm.Month08 + rm.Month09 + rm.Month10 + rm.Month11 + rm.Month12) as Total, md.Name as Dept, ma.Name as Acct from [clientob].[viewFactReimbursementMapping] rm inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on rm.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [fw].[DimDepartment] md on db.DepartmentID=md.DepartmentID inner join [fw].[DimAccount] ma with (readuncommitted) on ma.AccountID=rm.AccountID inner join [ob].[DimOBReimbursementPlan] rp with (readuncommitted) on md.OBReimbursementPlanID=rp.OBReimbursementPlanID inner join [data].[ScoreFillin_Account] sf with (readuncommitted) on rm.AccountID=sf.AccountID and rp.MemberGUID=sf.ModelGUID where rm.TimeClassID IN(2) AND rm.FiscalYearID = (select Setting + 1 from [dbo].[DBSetting] where DBSettingGUID='9c921c27-f3e4-4616-b3fd-925a75870b62') Group by rp.OBReimbursementPlanID, db.DepartmentalBudgetID, ma.AccountID, rp.Name, md.Name, ma.Name) As REIMB INNER JOIN (select rp.OBReimbursementPlanID, rp.Name as Model, db.DepartmentalBudgetID, ma.AccountID, SUM(rm.Total) as Total, md.Name as Dept, ma.Name as Acct from [clientob].[FactAccount] rm inner join [ob].[DimDepartmentalBudget] db with (readuncommitted) on rm.DepartmentalBudgetID=db.DepartmentalBudgetID inner join [fw].[DimDepartment] md on db.DepartmentID=md.DepartmentID inner join [fw].[DimAccount] ma with (readuncommitted) on ma.AccountID=rm.AccountID inner join [ob].[DimOBReimbursementPlan] rp with (readuncommitted) on md.OBReimbursementPlanID=rp.OBReimbursementPlanID inner join [data].[ScoreFillin_Account] sf with (readuncommitted) on rm.AccountID=sf.AccountID and rp.MemberGUID=sf.ModelGUID where rm.TimeClassID IN(2) AND rm.FiscalYearID = (select Setting + 1 from [dbo].[DBSetting] where DBSettingGUID='9c921c27-f3e4-4616-b3fd-925a75870b62') Group by rp.OBReimbursementPlanID, db.DepartmentalBudgetID, ma.AccountID, rp.Name, md.Name, ma.Name) AS DEPT ON REIMB.AccountID=DEPT.AccountID AND REIMB.DepartmentalBudgetID=DEPT.DepartmentalBudgetID Where ROUND(DEPT.Total,0)<>ROUND(REIMB.Total,0) GO --------------------------------------------- -- ob.viewExceptionsReimbursementFillinCacheIssues /************************************************************ ** Author: blewis ** Create Date: 2015-01-15 ** Description: Checks for fill-ins in Score Fill-ins but not in Cache tables or PH Index doesnt Match ** Last Modified: 2015-01-15 ** GM Release: 2015.2 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 2016-02-26 mholov D-03407 Filtering out 'GM Blank' model template ** 2 2016-08-10 kf B-12543 FP - System Center Exception Management - Initial Framework *************************************************************/ CREATE view [ob].[viewExceptionsReimbursementFillinCacheIssues] as --Fill-ins in Score Fill-ins but not in Cache tables or PH Index doesnt Match --Account select DB.OBReimbursementPlanID, DB.Name as Model, 'The fill-in cache for Account ' + DIM.Name + ' out of sync' as Detail from ob.DimOBReimbursementPlan DB with (readuncommitted) inner join ScoreFillin SF with (readuncommitted) on DB.MemberGUID = SF.ModelGUID left join data.ScoreFillin_Account FI with (readuncommitted) on SF.ModelGUID = FI.ModelGUID and sf.PlaceholderSectionMemberGUID=fi.PlaceholderSectionMemberGUID and sf.FillinMemberGUID=FI.FillinMemberGUID and sf.PlaceholderIndex=FI.PlaceholderIndex inner join fw.DimAccount DIM with (readuncommitted) on SF.FillinMemberGUID = DIM.MemberGUID inner join XPlan P on DB.MemberGUID = P.PlanGUID where FI.FillinMemberGUID is null --==================== BEGIN CID 1 ===================== and db.OBReimbursementPlanID<>0 --===================== END CID 1 ====================== and P.ModelTemplateGUID <> '7F792F1F-F32A-4053-9907-534A2D736D45'--GM Blank union all --Payor select DB.OBReimbursementPlanID, DB.Name as Model, 'The fill-in cache for Payor ' + DIM.Name + ' out of sync' as Detail from ob.DimOBReimbursementPlan DB with (readuncommitted) inner join ScoreFillin SF with (readuncommitted) on DB.MemberGUID = SF.ModelGUID left join data.ScoreFillin_Payor FI with (readuncommitted) on SF.ModelGUID = FI.ModelGUID and sf.PlaceholderSectionMemberGUID=fi.PlaceholderSectionMemberGUID and sf.FillinMemberGUID=FI.FillinMemberGUID and sf.PlaceholderIndex=FI.PlaceholderIndex inner join fw.DimPayor DIM with (readuncommitted) on SF.FillinMemberGUID = DIM.MemberGUID inner join XPlan P on DB.MemberGUID = P.PlanGUID where FI.FillinMemberGUID is null --==================== BEGIN CID 1 ===================== and db.OBReimbursementPlanID<>0 --===================== END CID 1 ====================== and P.ModelTemplateGUID <> '7F792F1F-F32A-4053-9907-534A2D736D45'--GM Blank union all --PayorGroup select DB.OBReimbursementPlanID, DB.Name as Model, 'The fill-in cache for PayorGroup ' + DIM.Name + ' out of sync' as Detail from ob.DimOBReimbursementPlan DB with (readuncommitted) inner join ScoreFillin SF with (readuncommitted) on DB.MemberGUID = SF.ModelGUID left join data.ScoreFillin_PayorGroup FI with (readuncommitted) on SF.ModelGUID = FI.ModelGUID and sf.PlaceholderSectionMemberGUID=fi.PlaceholderSectionMemberGUID and sf.FillinMemberGUID=FI.FillinMemberGUID and sf.PlaceholderIndex=FI.PlaceholderIndex inner join fw.DimPayorGroup DIM with (readuncommitted) on SF.FillinMemberGUID = DIM.MemberGUID inner join XPlan P on DB.MemberGUID = P.PlanGUID where FI.FillinMemberGUID is null --==================== BEGIN CID 1 ===================== and db.OBReimbursementPlanID<>0 --===================== END CID 1 ====================== and P.ModelTemplateGUID <> '7F792F1F-F32A-4053-9907-534A2D736D45'--GM Blank union all --PatientReimbursementGroup select DB.OBReimbursementPlanID, DB.Name as Model, 'The fill-in cache for PatientReimbursementGroup ' + DIM.Name + ' out of sync' as Detail from ob.DimOBReimbursementPlan DB with (readuncommitted) inner join ScoreFillin SF with (readuncommitted) on DB.MemberGUID = SF.ModelGUID left join data.ScoreFillin_PatientReimbursementGroup FI with (readuncommitted) on SF.ModelGUID = FI.ModelGUID and sf.PlaceholderSectionMemberGUID=fi.PlaceholderSectionMemberGUID and sf.FillinMemberGUID=FI.FillinMemberGUID and sf.PlaceholderIndex=FI.PlaceholderIndex inner join fw.DimPatientReimbursementGroup DIM with (readuncommitted) on SF.FillinMemberGUID = DIM.MemberGUID inner join XPlan P on DB.MemberGUID = P.PlanGUID where FI.FillinMemberGUID is null --==================== BEGIN CID 1 ===================== and db.OBReimbursementPlanID<>0 --===================== END CID 1 ====================== and P.ModelTemplateGUID <> '7F792F1F-F32A-4053-9907-534A2D736D45'--GM Blank union all --OB Forecast Detail select DB.OBReimbursementPlanID, DB.Name as Model, 'The fill-in cache for OB Forecast Detail ' + DIM.Name + ' out of sync' as Detail from ob.DimOBReimbursementPlan DB with (readuncommitted) inner join ScoreFillin SF with (readuncommitted) on DB.MemberGUID = SF.ModelGUID left join data.ScoreFillin_OBForecastDetail FI with (readuncommitted) on SF.ModelGUID = FI.ModelGUID and sf.PlaceholderSectionMemberGUID=fi.PlaceholderSectionMemberGUID and sf.FillinMemberGUID=FI.FillinMemberGUID and sf.PlaceholderIndex=FI.PlaceholderIndex inner join ob.DimOBForecastDetail DIM with (readuncommitted) on SF.FillinMemberGUID = DIM.MemberGUID inner join XPlan P on DB.MemberGUID = P.PlanGUID where FI.FillinMemberGUID is null --==================== BEGIN CID 1 ===================== and db.OBReimbursementPlanID<>0 --===================== END CID 1 ====================== and P.ModelTemplateGUID <> '7F792F1F-F32A-4053-9907-534A2D736D45'--GM Blank union all --OB Departmental Budget select DB.OBReimbursementPlanID, DB.Name as Model, 'The fill-in cache for OB Reimbursement Plan ' + DIM.Name + ' out of sync' as Detail from ob.DimOBReimbursementPlan DB with (readuncommitted) inner join ScoreFillin SF with (readuncommitted) on DB.MemberGUID = SF.ModelGUID left join [data].[ScoreFillin_OBReimbursementPlan] FI with (readuncommitted) on SF.ModelGUID = FI.ModelGUID and sf.PlaceholderSectionMemberGUID=fi.PlaceholderSectionMemberGUID and sf.FillinMemberGUID=FI.FillinMemberGUID and sf.PlaceholderIndex=FI.PlaceholderIndex inner join ob.DimOBReimbursementPlan DIM with (readuncommitted) on SF.FillinMemberGUID = DIM.MemberGUID inner join XPlan P on DB.MemberGUID = P.PlanGUID where FI.FillinMemberGUID is null --==================== BEGIN CID 1 ===================== and db.OBReimbursementPlanID<>0 --===================== END CID 1 ====================== and P.ModelTemplateGUID <> '7F792F1F-F32A-4053-9907-534A2D736D45'--GM Blank union all --Fiscal Year select DB.OBReimbursementPlanID, DB.Name as Model, 'The fill-in cache for Fiscal Year ' + DIM.Name + ' out of sync' as Detail from ob.DimOBReimbursementPlan DB with (readuncommitted) inner join ScoreFillin SF with (readuncommitted) on DB.MemberGUID = SF.ModelGUID left join data.ScoreFillin_FiscalYear FI with (readuncommitted) on SF.ModelGUID = FI.ModelGUID and sf.PlaceholderSectionMemberGUID=fi.PlaceholderSectionMemberGUID and sf.FillinMemberGUID=FI.FillinMemberGUID and sf.PlaceholderIndex=FI.PlaceholderIndex inner join fw.DimFiscalYear DIM with (readuncommitted) on SF.FillinMemberGUID = DIM.MemberGUID inner join XPlan P on DB.MemberGUID = P.PlanGUID where FI.FillinMemberGUID is null --==================== BEGIN CID 1 ===================== and db.OBReimbursementPlanID<>0 --===================== END CID 1 ====================== and P.ModelTemplateGUID <> '7F792F1F-F32A-4053-9907-534A2D736D45'--GM Blank GO --------------------------------------------- -- ob.viewExceptionsReimbursementFillinsExceedingMaxCount /************************************************************ ** Author: blewis ** Create Date: 2015-01-15 ** Description: Check Max Counts for Reimbursement Model ** Last Modified: 2015-01-15 ** GM Release: 2015.2 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 ** *************************************************************/ CREATE view [ob].[viewExceptionsReimbursementFillinsExceedingMaxCount] as --ACCOUNT select DB.OBReimbursementPlanID, DB.Name as Model, 'Has ' + cast((select COUNT(*) from data.ScoreFillin_Account FI with (readuncommitted) inner join ob.DimAccountPH PH with (readuncommitted) on FI.AccountPHID = PH.AccountPHID where DB.MemberGUID = FI.ModelGUID and PH.Name = SE.GlobalID) as varchar(10)) + ' Accounts in section ' + SE.GlobalID + ' with maximum ' + cast(SE.[Count] as varchar(10)) as Detail from XPlan X with (readuncommitted) inner join ob.DimOBReimbursementPlan DB with (readuncommitted) on X.PlanGUID = DB.MemberGUID inner join EMFModelTemplate MT with (readuncommitted) on X.ModelTemplateGUID = MT.ModelTemplateGUID inner join EMFModelTemplateWorksheet WS with (readuncommitted) on MT.ModelTemplateGUID = WS.ModelTemplateGUID inner join MEExcelCell EC with (readuncommitted) on WS.WorksheetGUID = EC.ExcelSheetGUID inner join MEScoreExpansion SE with (readuncommitted) on EC.ExcelCellGUID = SE.ExcelCellGUID where (select COUNT(*) from data.ScoreFillin_Account FI with (readuncommitted) inner join ob.DimAccountPH PH with (readuncommitted) on FI.AccountPHID = PH.AccountPHID where DB.MemberGUID = FI.ModelGUID and PH.Name = SE.GlobalID) > SE.[Count] union all --Payor Group select DB.OBReimbursementPlanID, DB.Name as Model, 'Has ' + cast((select COUNT(*) from [data].[ScoreFillin_PayorGroup] FI with (readuncommitted) inner join [fw].[DimPayorGroupPH] PH with (readuncommitted) on FI.PayorGroupPHID = PH.PayorGroupPHID where DB.MemberGUID = FI.ModelGUID and PH.Name = SE.GlobalID) as varchar(10)) + ' Payor Groups in section ' + SE.GlobalID + ' with maximum ' + cast(SE.[Count] as varchar(10)) as Detail from XPlan X with (readuncommitted) inner join ob.DimOBReimbursementPlan DB with (readuncommitted) on X.PlanGUID = DB.MemberGUID inner join EMFModelTemplate MT with (readuncommitted) on X.ModelTemplateGUID = MT.ModelTemplateGUID inner join EMFModelTemplateWorksheet WS with (readuncommitted) on MT.ModelTemplateGUID = WS.ModelTemplateGUID inner join MEExcelCell EC with (readuncommitted) on WS.WorksheetGUID = EC.ExcelSheetGUID inner join MEScoreExpansion SE with (readuncommitted) on EC.ExcelCellGUID = SE.ExcelCellGUID where (select COUNT(*) from data.ScoreFillin_PayorGroup FI with (readuncommitted) inner join fw.DimPayorGroupPH PH with (readuncommitted) on FI.PayorGroupPHID = PH.PayorGroupPHID where DB.MemberGUID = FI.ModelGUID and PH.Name = SE.GlobalID) > SE.[Count] union all --Payor select DB.OBReimbursementPlanID, DB.Name as Model, 'Has ' + cast((select COUNT(*) from [data].[ScoreFillin_Payor] FI with (readuncommitted) inner join [fw].[DimPayorPH] PH with (readuncommitted) on FI.PayorPHID = PH.PayorPHID where DB.MemberGUID = FI.ModelGUID and PH.Name = SE.GlobalID) as varchar(10)) + ' Payor in section ' + SE.GlobalID + ' with maximum ' + cast(SE.[Count] as varchar(10)) as Detail from XPlan X with (readuncommitted) inner join ob.DimOBReimbursementPlan DB with (readuncommitted) on X.PlanGUID = DB.MemberGUID inner join EMFModelTemplate MT with (readuncommitted) on X.ModelTemplateGUID = MT.ModelTemplateGUID inner join EMFModelTemplateWorksheet WS with (readuncommitted) on MT.ModelTemplateGUID = WS.ModelTemplateGUID inner join MEExcelCell EC with (readuncommitted) on WS.WorksheetGUID = EC.ExcelSheetGUID inner join MEScoreExpansion SE with (readuncommitted) on EC.ExcelCellGUID = SE.ExcelCellGUID where (select COUNT(*) from data.ScoreFillin_Payor FI with (readuncommitted) inner join fw.DimPayorPH PH with (readuncommitted) on FI.PayorPHID = PH.PayorPHID where DB.MemberGUID = FI.ModelGUID and PH.Name = SE.GlobalID) > SE.[Count] union all --PatientReimbursementGroup select DB.OBReimbursementPlanID, DB.Name as Model, 'Has ' + cast((select COUNT(*) from [data].[ScoreFillin_PatientReimbursementGroup] FI with (readuncommitted) inner join [fw].[DimPatientReimbursementGroupPH] PH with (readuncommitted) on FI.PatientReimbursementGroupPHID = PH.PatientReimbursementGroupPHID where DB.MemberGUID = FI.ModelGUID and PH.Name = SE.GlobalID) as varchar(10)) + ' Patient Reimbursement Group in section ' + SE.GlobalID + ' with maximum ' + cast(SE.[Count] as varchar(10)) as Detail from XPlan X with (readuncommitted) inner join ob.DimOBReimbursementPlan DB with (readuncommitted) on X.PlanGUID = DB.MemberGUID inner join EMFModelTemplate MT with (readuncommitted) on X.ModelTemplateGUID = MT.ModelTemplateGUID inner join EMFModelTemplateWorksheet WS with (readuncommitted) on MT.ModelTemplateGUID = WS.ModelTemplateGUID inner join MEExcelCell EC with (readuncommitted) on WS.WorksheetGUID = EC.ExcelSheetGUID inner join MEScoreExpansion SE with (readuncommitted) on EC.ExcelCellGUID = SE.ExcelCellGUID where (select COUNT(*) from data.ScoreFillin_PatientReimbursementGroup FI with (readuncommitted) inner join fw.DimPatientReimbursementGroupPH PH with (readuncommitted) on FI.PatientReimbursementGroupPHID = PH.PatientReimbursementGroupPHID where DB.MemberGUID = FI.ModelGUID and PH.Name = SE.GlobalID) > SE.[Count] GO --------------------------------------------- -- ob.viewExceptionsReimbursementInvalidDropdownSelection /************************************************************ ** Author: blewis ** Create Date: 2015-01-15 ** Description: Finds any text boxes that saved a value of blank that will cause #n/a errors in the model ** Last Modified: 2015-01-15 ** GM Release: 2015.2 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 ** *************************************************************/ CREATE view [ob].[viewExceptionsReimbursementInvalidDropdownSelection] as --Accounts select Distinct DB.OBReimbursementPlanID, DB.Name as Model, 'Account ' + Dim.Name + ' has an invalid drop-down box selection' as Detail from [clientob].[FactReimbursementAccountVar] fct with (readuncommitted) inner join ob.DimOBReimbursementPlan DB with (readuncommitted) on fct.OBReimbursementPlanID=db.OBReimbursementPlanID inner join fw.DimAccount DIM with (readuncommitted) on fct.AccountID = DIM.AccountID where fct.UnitTypeID=141 and TextValue_Formula='x' and TextValue='' Union all --Payor select Distinct DB.OBReimbursementPlanID, DB.Name as Model, 'Account ' + Dim.Name + ' has an invalid drop-down box selection' as Detail from [clientob].[FactReimbursementVar] fct with (readuncommitted) inner join ob.DimOBReimbursementPlan DB with (readuncommitted) on fct.OBReimbursementPlanID=db.OBReimbursementPlanID inner join [fw].[DimPayor] DIM with (readuncommitted) on fct.PayorID = DIM.PayorID where fct.UnitTypeID=141 and TextValue_Formula='x' and TextValue='' Union all --PayorGroup select Distinct DB.OBReimbursementPlanID, DB.Name as Model, 'Account ' + Dim.Name + ' has an invalid drop-down box selection' as Detail from [clientob].[FactReimbursementVar] fct with (readuncommitted) inner join ob.DimOBReimbursementPlan DB with (readuncommitted) on fct.OBReimbursementPlanID=db.OBReimbursementPlanID inner join [fw].[DimPayorGroup] DIM with (readuncommitted) on fct.PayorGroupID = DIM.PayorGroupID where fct.UnitTypeID=141 and TextValue_Formula='x' and TextValue='' GO --------------------------------------------- -- ob.viewExceptionsReimbursementMissingDepartmentAllocations CREATE VIEW [ob].[viewExceptionsReimbursementMissingDepartmentAllocations] AS /************************************************************ ** Author: blewis ** Create Date: 2015-01-15 ** Description: Checks for departments mapped to a reimbursement model with no rows in the allocation table ** Last Modified: 2017-08-22 ** GM Release: 2015.2 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 ** 2 08/22/2017 AI/cbb D5967 added fiscal year and timeclass filters *************************************************************/ SELECT DISTINCT rp.OBReimbursementPlanID, rp.NAME AS Model, 'Department missing From Reimbursement Allocation: ' + db.NAME AS Detail FROM [clientob].[FactAccount] fa WITH (READUNCOMMITTED) INNER JOIN [ob].[DimDepartmentalBudget] db WITH (READUNCOMMITTED) ON fa.DepartmentalBudgetID = db.DepartmentalBudgetID INNER JOIN [fw].[DimDepartment] md WITH (READUNCOMMITTED) ON md.DepartmentID = db.DepartmentID INNER JOIN [ob].[DimOBReimbursementPlan] rp WITH (READUNCOMMITTED) ON rp.OBReimbursementPlanID = md.OBReimbursementPlanID INNER JOIN [data].[ScoreFillin_Account] ma WITH (READUNCOMMITTED) ON fa.AccountID = ma.AccountID AND db.MemberGUID = ma.ModelGUID WHERE 1=1 and md.OBReimbursementPlanID <> 0 AND fa.Total <> 0 -- CID 2 begin AND fa.FiscalYearID = (Select Setting from [dbo].[DBSetting] where Name = 'OB_Current_Year') and fa.TimeClassID = 1 -- CID 2 end AND ma.AccountPHID IN ( 4 --Deductions ,484 --Deductions - Charity and Bad Debt ,481 --Deductions - Reimbursement ) AND NOT EXISTS ( SELECT 1 FROM [clientob].[FactReimbursementDeptMapping] FI WITH (READUNCOMMITTED) WHERE FI.DepartmentID = DB.DepartmentID AND FI.OBReimbursementPlanID = rp.OBReimbursementPlanID ) GO --------------------------------------------- -- ob.viewExceptionsReimbursementMissingNotSpecifiedFillins /************************************************************ ** Author: blewis ** Create Date: 2015-01-15 ** Description: Finds missing not specified fill-ins for the Reimbursement Model ** Last Modified: 2015-01-15 ** GM Release: 2015.2 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 2016-08-10 kf B-12543 FP - System Center Exception Management - Initial Framework *************************************************************/ CREATE view [ob].[viewExceptionsReimbursementMissingNotSpecifiedFillins] as select DB.OBReimbursementPlanID, DB.Name as Model, 'Is Missing the Not Specified Payor Fill-in' as Detail from ob.DimOBReimbursementPlan DB with (readuncommitted) where not exists(select 1 from [data].[ScoreFillin_Payor] FI with (readuncommitted) where FI.ModelGUID = DB.MemberGUID and FI.PayorID = 0 and FI.PayorPHID = 0) and DB.OBReimbursementPlanID != 0 union all select DB.OBReimbursementPlanID, DB.Name as Model, 'Is Missing the Not Specified Payor Group Fill-in' as Detail from ob.DimOBReimbursementPlan DB with (readuncommitted) where not exists(select 1 from [data].[ScoreFillin_PayorGroup] FI with (readuncommitted) where FI.ModelGUID = DB.MemberGUID and FI.PayorGroupID = 0 and FI.PayorGroupPHID = 0) and DB.OBReimbursementPlanID != 0 union all select DB.OBReimbursementPlanID, DB.Name as Model, 'Is Missing the Not Specified Patient Reimbursement Group Fill-in' as Detail from ob.DimOBReimbursementPlan DB with (readuncommitted) where not exists(select 1 from [data].[ScoreFillin_PatientReimbursementGroup] FI with (readuncommitted) where FI.ModelGUID = DB.MemberGUID and FI.PatientReimbursementGroupID = 0 and FI.PatientReimbursementGroupPHID = 0) and DB.OBReimbursementPlanID != 0 union all select DB.OBReimbursementPlanID, DB.Name as Model, 'Is Missing the Not Specified OB Forecast Detail Fill-in' as Detail from ob.DimOBReimbursementPlan DB with (readuncommitted) where not exists(select 1 from [data].[ScoreFillin_OBForecastDetail] FI with (readuncommitted) where FI.ModelGUID = DB.MemberGUID and FI.OBForecastDetailID = 0 and FI.OBForecastDetailPHID = 0) and DB.OBReimbursementPlanID != 0 union all select DB.OBReimbursementPlanID, DB.Name as Model, 'Is Missing the Not Specified Account Fill-in' as Detail from ob.DimOBReimbursementPlan DB with (readuncommitted) where not exists(select 1 from [data].[ScoreFillin_Account] FI with (readuncommitted) where FI.ModelGUID = DB.MemberGUID and FI.AccountID = 0 and FI.AccountPHID = 0) and DB.OBReimbursementPlanID != 0 union all select DB.OBReimbursementPlanID, DB.Name as Model, 'Is Missing the Not Specified Fiscal Year Fill-in' as Detail from ob.DimOBReimbursementPlan DB with (readuncommitted) where not exists(select 1 from [data].[ScoreFillin_FiscalYear] FI with (readuncommitted) where FI.ModelGUID = DB.MemberGUID and FI.FiscalYearID = 0 and FI.FiscalYearPHID = 0) and DB.OBReimbursementPlanID != 0 GO --------------------------------------------- -- ob.viewExceptionsReimbursementMissingSelfFillin /************************************************************ ** Author: blewis ** Create Date: 2015-01-15 ** Description: Displays any Reimbusrement Budgets that are missing their self fill-in ** Last Modified: 2015-01-15 ** GM Release: 2015.2 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 2016-08-10 kf B-12543 FP - System Center Exception Management - Initial Framework *************************************************************/ CREATE view [ob].[viewExceptionsReimbursementMissingSelfFillin] as select Distinct DB.OBReimbursementPlanID, DB.Name as Model, 'Reimbursement Budget ' + db.Name + ' is missing the self-fill-in' as Detail from ob.DimOBReimbursementPlan DB with (readuncommitted) left outer join [data].[ScoreFillin_OBReimbursementPlan] sf with (readuncommitted) on db.MemberGUID=sf.ModelGUID and PlaceholderSectionMemberGUID='4f0371d7-3d03-4320-9d83-413eb6105076' where sf.FillinGUID is null and db.OBReimbursementPlanID<>0 GO --------------------------------------------- -- ob.viewExceptionsReimbursementOrphanedData /************************************************************************************************************************************************** ** Author: blewis ** Create Date: 2015-01-15 ** Description: Check For Non Zero Data that will not show in model because a fillin is missing ** Last Modified: 2017-01-12 ** GM Release: 2015.2 **************************************************************************************************************************************************** ** Change History **************************************************************************************************************************************************** ** CID Date Author WI Description ** 1 2017-01-12 srk D-05196 Exception will only display missing dollar accounts because not all volume accounts need to be filled in ** ***************************************************************************************************************************************************/ CREATE view [ob].[viewExceptionsReimbursementOrphanedData] as -- Account data select Distinct db.OBReimbursementPlanID, db.Name as Model, 'Has data in Account ' + dim.Name+ ' but it is not filled in' as Detail from [clientob].[FactReimbursementAccount] data with (readuncommitted) inner join ob.DimOBReimbursementPlan db with (readuncommitted) on db.OBReimbursementPlanID = data.OBReimbursementPlanID inner join fw.DimAccount dim with (readuncommitted) on dim.AccountID = data.AccountID left outer join ScoreFillin sf with (readuncommitted) on db.MemberGUID=sf.ModelGUID and dim.MemberGUID=sf.FillinMemberGUID and sf.PlaceholderSectionMemberGUID<>'77A0029B-F072-4ED6-8BFC-89BCFD6ED049' --not specified where sf.FillinGUID is null and data.Total <> 0 and data.FiscalYearID>= (select s.setting-1 from [dbo].[DBSetting] s where Name = 'OB_Current_Year') and db.OBReimbursementPlanID<>0 and dim.AccountID<>0 and data.UnitTypeID = 34 -- Only Dollars UNION ALL -- OB Forecast Detail select Distinct db.OBReimbursementPlanID, db.Name as Model, 'Has data in for OB Forecast Detail Member ' + dim.Name+ ' but it is not filled in' as Detail from [clientob].[FactReimbursement] data with (readuncommitted) inner join ob.DimOBReimbursementPlan db with (readuncommitted) on db.OBReimbursementPlanID = data.OBReimbursementPlanID inner join [ob].[DimOBForecastDetail] dim with (readuncommitted) on dim.OBForecastDetailID = data.OBForecastDetailID left outer join ScoreFillin sf with (readuncommitted) on db.MemberGUID=sf.ModelGUID and dim.MemberGUID=sf.FillinMemberGUID and sf.PlaceholderSectionMemberGUID<>'45ef7590-f41c-4ea6-911e-03fe33a4e09f' --not specified where sf.FillinGUID is null and data.Total <> 0 and data.FiscalYearID>= (select s.setting-1 from [dbo].[DBSetting] s where Name = 'OB_Current_Year') and data.TimeClassID = 1 and db.OBReimbursementPlanID<>0 and dim.OBForecastDetailID<>0 UNION ALL -- Payor Group select Distinct db.OBReimbursementPlanID, db.Name as Model, 'Has data in for Payor Group ' + dim.Name+ ' but it is not filled in' as Detail from [clientob].[FactReimbursement] data with (readuncommitted) inner join ob.DimOBReimbursementPlan db with (readuncommitted) on db.OBReimbursementPlanID = data.OBReimbursementPlanID inner join [fw].[DimPayorGroup] dim with (readuncommitted) on dim.PayorGroupID = data.PayorGroupID left outer join ScoreFillin sf with (readuncommitted) on db.MemberGUID=sf.ModelGUID and dim.MemberGUID=sf.FillinMemberGUID and sf.PlaceholderSectionMemberGUID<>'2d36244f-b97e-4787-99bd-2d75a499c4d8' --not specified where sf.FillinGUID is null and data.Total <> 0 and data.FiscalYearID>= (select s.setting-1 from [dbo].[DBSetting] s where Name = 'OB_Current_Year') and data.TimeClassID = 1 and db.OBReimbursementPlanID<>0 and dim.PayorGroupID<>0 UNION ALL -- Payor select Distinct db.OBReimbursementPlanID, db.Name as Model, 'Has data in for Payor ' + dim.Name+ ' but it is not filled in' as Detail from [clientob].[FactReimbursement] data with (readuncommitted) inner join ob.DimOBReimbursementPlan db with (readuncommitted) on db.OBReimbursementPlanID = data.OBReimbursementPlanID inner join [fw].[DimPayor] dim with (readuncommitted) on dim.PayorID = data.PayorID left outer join ScoreFillin sf with (readuncommitted) on db.MemberGUID=sf.ModelGUID and dim.MemberGUID=sf.FillinMemberGUID and sf.PlaceholderSectionMemberGUID<>'00000000-0000-0000-0000-000000000000' --not specified where sf.FillinGUID is null and data.Total <> 0 and data.FiscalYearID>= (select s.setting-1 from [dbo].[DBSetting] s where Name = 'OB_Current_Year') and data.TimeClassID = 1 and db.OBReimbursementPlanID<>0 and dim.PayorID<>0 UNION ALL -- PatientReimbursementGroup select Distinct db.OBReimbursementPlanID, db.Name as Model, 'Has data in for Patient Reimbursement Group ' + dim.Name+ ' but it is not filled in' as Detail from [clientob].[FactReimbursement] data with (readuncommitted) inner join ob.DimOBReimbursementPlan db with (readuncommitted) on db.OBReimbursementPlanID = data.OBReimbursementPlanID inner join [fw].[DimPatientReimbursementGroup] dim with (readuncommitted) on dim.PatientReimbursementGroupID = data.PatientReimbursementGroupID left outer join ScoreFillin sf with (readuncommitted) on db.MemberGUID=sf.ModelGUID and dim.MemberGUID=sf.FillinMemberGUID and sf.PlaceholderSectionMemberGUID<>'00000000-0000-0000-0000-000000000000' --not specified where sf.FillinGUID is null and data.Total <> 0 and data.FiscalYearID>= (select s.setting-1 from [dbo].[DBSetting] s where Name = 'OB_Current_Year') and data.TimeClassID = 1 and db.OBReimbursementPlanID<>0 and dim.PatientReimbursementGroupID<>0 UNION ALL -- PatientReimbursementGroup select Distinct db.OBReimbursementPlanID, db.Name as Model, 'Has data in for Patient Reimbursement Group ' + dim.Name+ ' but it is not filled in' as Detail from [clientob].[FactReimbursementAccount] data with (readuncommitted) inner join ob.DimOBReimbursementPlan db with (readuncommitted) on db.OBReimbursementPlanID = data.OBReimbursementPlanID inner join [fw].[DimPatientReimbursementGroup] dim with (readuncommitted) on dim.PatientReimbursementGroupID = data.PatientReimbursementGroupID left outer join ScoreFillin sf with (readuncommitted) on db.MemberGUID=sf.ModelGUID and dim.MemberGUID=sf.FillinMemberGUID and sf.PlaceholderSectionMemberGUID<>'00000000-0000-0000-0000-000000000000' --not specified where sf.FillinGUID is null and data.Total <> 0 and data.FiscalYearID>= (select s.setting-1 from [dbo].[DBSetting] s where Name = 'OB_Current_Year') and data.TimeClassID = 1 and db.OBReimbursementPlanID<>0 and dim.PatientReimbursementGroupID<>0 GO --------------------------------------------- -- ob.viewExceptionsReimbursementProjectedEqualYTD /************************************************************ ** Author: blewis ** Create Date: 2015-01-15 ** Description: Compares Projected total and YTD to determine of the anything is being projected in the non-closed months, indicates potential errors ** Last Modified: 2015-01-15 ** GM Release: 2015.2 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 ** *************************************************************/ CREATE view [ob].[viewExceptionsReimbursementProjectedEqualYTD] as -- Account Data select Distinct DB.OBReimbursementPlanID, DB.Name as Model, 'Has projected = YTD for Account: ' + Dim.Name + ' in section ' + PH.Name as Detail from [clientob].[FactReimbursementAccount] fct with (readuncommitted) inner join ob.DimOBReimbursementPlan db with (readuncommitted) on db.OBReimbursementPlanID=fct.OBReimbursementPlanID inner join fw.DimAccount DIM with (readuncommitted) on fct.AccountID = DIM.AccountID inner join data.ScoreFillin_Account SF with (readuncommitted) on DB.MemberGUID = SF.ModelGUID and dim.MemberGUID=sf.FillinMemberGUID inner join ob.DimAccountPH PH with (readuncommitted) on SF.PlaceholderSectionMemberGUID= PH.MemberGUID where fct.datatypeid=3 and fct.YTD=fct.Total and fct.TimeClassID=12 and fct.Total<>0 and fct.MonthsLoaded<>12 GO --------------------------------------------- -- ob.viewExceptionsRosterBudgetDataNotInModel CREATE VIEW ob.viewExceptionsRosterBudgetDataNotInModel AS /**************************************************************************************************** ** Author: cbecker ** Create Date: 2017-01-23 ** Description: Checks for data imported from roster budgeting with no fixed staffing fill-in ** Last Modified: 2017-01-23 ** GM Release: 2017.1.2 **************************************************************************************************** ** Change History **************************************************************************************************** ** CID Date Author WI Description ** ****************************************************************************************************/ select distinct DepartmentCode = ddb.DepartmentCode, DepartmentalBudgetID = ddb.DepartmentalBudgetID, DepartmentalBudget = ddb.Name, JobCodeID = djc.JobCodeID, JobCode = djc.Name, Detail = case when ddb.DepartmentalBudgetID is null then 'Departmental Budget does not exist' when ddb.OBActivePlans = 0 then 'Departmental Budget has not been activated' when djc.JobCodeID is null then 'Job code does not exist' when sf.PlaceholderSectionMemberGUID is null then 'Job code does not exist in this model' else 'Job code is in the wrong section' end from [fp].[RosterBudgetBasisResult] rb inner join [fp].[BudgetConfig] bc on rb.BudgetConfigGUID = bc.BudgetConfigGUID left join [ob].[DimDepartmentalBudget] ddb on rb.DepartmentID = ddb.DepartmentID left join [fw].[DimJobCode] djc on rb.JobCodeID = djc.JobCodeID left join [fw].[DimPayCodeGroup] dpcg on rb.PayCodeGroupID = dpcg.PayCodeGroupID left join [data].[ScoreFillin_JobCode] sf on djc.MemberGUID = sf.FillinMemberGUID and ddb.MemberGUID = sf.ModelGUID left join [clientob].[FactStaffingPCNonReporting] fct on ddb.DepartmentalBudgetID = fct.DepartmentalBudgetID and djc.JobCodeID = fct.JobCodeID and dpcg.PayCodeGroupID = fct.PayCodeGroupID and bc.FiscalYearID = fct.FiscalYearID where 1=1 and fct.RowID is null and bc.IsActive = 1 GO --------------------------------------------- -- ob.viewExceptionsServiceLineDataWithoutDimensionMembers /************************************************************ ** Author: jgerber ** Create Date: 2014-09-18 ** Description: Checks for SL data that does not have dimension members ** Last Modified: 2014-09-18 ** GM Release: 2014.4 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** *************************************************************/ create view [ob].[viewExceptionsServiceLineDataWithoutDimensionMembers] as --***Fact Service Line********************************************* -- Service Line Plan Dimension select Distinct 0 as OBServiceLinePlanID, 'Not Specified' as Model, 'Has Service Line data for a Service Line plan that no longer exists' as Detail from [clientob].[FactServiceLine] data with (readuncommitted) left join [ob].[DimOBServiceLinePlan] db with (readuncommitted) on db.OBServiceLinePlanID = data.OBServiceLinePlanID where db.MemberGUID is null UNION ALL -- Modeling Service Line Dimension select Distinct db.OBServiceLinePlanID, db.Name as Model, 'Has Service Line data for a Modeling Service Line that no longer exists' as Detail from [clientob].[FactServiceLine] data with (readuncommitted) inner join [ob].[DimOBServiceLinePlan] db with (readuncommitted) on db.OBServiceLinePlanID = data.OBServiceLinePlanID left join [fw].[DimModelingServiceLine] dim with (readuncommitted) on dim.ModelingServiceLineID = data.ModelingServiceLineID where dim.MemberGUID is null UNION ALL -- Forecast Detail Dimension select Distinct db.OBServiceLinePlanID, db.Name as Model, 'Has Service Line data for a Forecast Detail that no longer exists' as Detail from [clientob].[FactServiceLine] data with (readuncommitted) inner join [ob].[DimOBServiceLinePlan] db with (readuncommitted) on db.OBServiceLinePlanID = data.OBServiceLinePlanID left join [ob].[DimOBForecastDetail] dim with (readuncommitted) on dim.OBForecastDetailID = data.OBForecastDetailID where dim.MemberGUID is null GO --------------------------------------------- -- ob.viewExceptionsServiceLineDuplicateFillins /************************************************************ ** Author: cbecker ** Create Date: 2015-01-18 ** Description: Finds all duplicate fillins in the OB Service Line model ** Last Modified: 2015-01-18 ** GM Release: 2015.2 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** ** *************************************************************/ CREATE VIEW [ob].[viewExceptionsServiceLineDuplicateFillins] as --Modeling Service Line select DB.OBServiceLinePlanID ,DB.Name as Model ,DIM.Name + ' in section ' + PH.Name + ' is also in another section' as Detail from [ob].[DimOBServiceLinePlan] DB with (readuncommitted) inner join [data].[ScoreFillin_ModelingServiceLine] FI1 with (readuncommitted) on DB.MemberGUID = FI1.ModelGUID inner join [fw].[DimModelingServiceLinePH] PH with (readuncommitted) on FI1.ModelingServiceLinePHID = PH.ModelingServiceLinePHID inner join [fw].[DimModelingServiceLine] DIM with (readuncommitted) on FI1.ModelingServiceLineID = DIM.ModelingServiceLineID where exists (select 1 from [data].[ScoreFillin_ModelingServiceLine] FI2 with (readuncommitted) where FI1.ModelGUID = FI2.ModelGUID and FI1.ModelingServiceLineID = FI2.ModelingServiceLineID and FI1.ModelingServiceLinePHID != FI2.ModelingServiceLinePHID ) and PH.ModelingServiceLinePHID<>0 union all --Service Line Rollup select DB.OBServiceLinePlanID, DB.Name as Model, DIM.Name + ' in section ' + PH.Name + ' is also in another section' as Detail from [ob].[DimOBServiceLinePlan] DB with (readuncommitted) inner join [data].[ScoreFillin_ServiceLineRollup] FI1 with (readuncommitted) on DB.MemberGUID = FI1.ModelGUID inner join [fw].[DimServiceLineRollupPH] PH with (readuncommitted) on FI1.ServiceLineRollupPHID = PH.ServiceLineRollupPHID inner join [fw].[DimServiceLineRollup] DIM with (readuncommitted) on FI1.ServiceLineRollupID = DIM.ServiceLineRollupID where exists (select 1 from [data].[ScoreFillin_ServiceLineRollup] FI2 with (readuncommitted) where FI1.ModelGUID = FI2.ModelGUID and FI1.ServiceLineRollupID = FI2.ServiceLineRollupID and FI1.ServiceLineRollupPHID != FI2.ServiceLineRollupPHID ) and PH.ServiceLineRollupPHID<>0 GO --------------------------------------------- -- ob.viewExceptionsServiceLineFillinCacheIssues /************************************************************ ** Author: cbecker ** Create Date: 2015-01-18 ** Description: Checks for fill-ins in Score Fill-ins but not in Cache tables or PH Index doesnt Match ** Last Modified: 2015-01-18 ** GM Release: 2015.2 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 2016-02-26 mholov D-03407 Filtering out 'GM Blank' model template ** 2 2016-08-10 kf B-12543 FP - System Center Exception Management - Initial Framework *************************************************************/ CREATE view [ob].[viewExceptionsServiceLineFillinCacheIssues] as --Fill-ins in Score Fill-ins but not in Cache tables or PH Index doesnt Match --Modeling service line select DB.OBServiceLinePlanID, DB.Name as Model, 'The fill-in cache for Account ' + DIM.Name + ' out of sync' as Detail from [ob].[DimOBServiceLinePlan] DB with (readuncommitted) inner join ScoreFillin SF with (readuncommitted) on DB.MemberGUID = SF.ModelGUID left join [data].[ScoreFillin_ModelingServiceLine] FI with (readuncommitted) on SF.ModelGUID = FI.ModelGUID and sf.PlaceholderSectionMemberGUID=fi.PlaceholderSectionMemberGUID and sf.FillinMemberGUID=FI.FillinMemberGUID and sf.PlaceholderIndex=FI.PlaceholderIndex inner join [fw].[DimModelingServiceLine] DIM with (readuncommitted) on SF.FillinMemberGUID = DIM.MemberGUID inner join XPlan P on DB.MemberGUID = P.PlanGUID where FI.FillinMemberGUID is null and db.OBServiceLinePlanID<>0 and P.ModelTemplateGUID <> '7F792F1F-F32A-4053-9907-534A2D736D45'--GM Blank UNION ALL --Service line Rollup select DB.OBServiceLinePlanID, DB.Name as Model, 'The fill-in cache for Service Line Rollup ' + DIM.Name + ' out of sync' as Detail from [ob].[DimOBServiceLinePlan] DB with (readuncommitted) inner join ScoreFillin SF with (readuncommitted) on DB.MemberGUID = SF.ModelGUID left join [data].[ScoreFillin_ServiceLineRollup] FI with (readuncommitted) on SF.ModelGUID = FI.ModelGUID and sf.PlaceholderSectionMemberGUID=fi.PlaceholderSectionMemberGUID and sf.FillinMemberGUID=FI.FillinMemberGUID and sf.PlaceholderIndex=FI.PlaceholderIndex inner join [fw].[DimServiceLineRollup] DIM with (readuncommitted) on SF.FillinMemberGUID = DIM.MemberGUID inner join XPlan P on DB.MemberGUID = P.PlanGUID where FI.FillinMemberGUID is null and db.OBServiceLinePlanID<>0 and P.ModelTemplateGUID <> '7F792F1F-F32A-4053-9907-534A2D736D45'--GM Blank UNION ALL --Fiscal Year select DB.OBServiceLinePlanID, DB.Name as Model, 'The fill-in cache for Fiscal Year ' + DIM.Name + ' out of sync' as Detail from [ob].[DimOBServiceLinePlan] DB with (readuncommitted) inner join ScoreFillin SF with (readuncommitted) on DB.MemberGUID = SF.ModelGUID left join data.ScoreFillin_FiscalYear FI with (readuncommitted) on SF.ModelGUID = FI.ModelGUID and sf.PlaceholderSectionMemberGUID=fi.PlaceholderSectionMemberGUID and sf.FillinMemberGUID=FI.FillinMemberGUID and sf.PlaceholderIndex=FI.PlaceholderIndex inner join fw.DimFiscalYear DIM with (readuncommitted) on SF.FillinMemberGUID = DIM.MemberGUID inner join XPlan P on DB.MemberGUID = P.PlanGUID where FI.FillinMemberGUID is null and db.OBServiceLinePlanID<>0 and P.ModelTemplateGUID <> '7F792F1F-F32A-4053-9907-534A2D736D45'--GM Blank UNION ALL --OBForecast Detail select DB.OBServiceLinePlanID, DB.Name as Model, 'The fill-in cache for Forecast Detail ' --+ DIM.Name + ' out of sync' as Detail from [ob].[DimOBServiceLinePlan] DB with (readuncommitted) inner join ScoreFillin SF with (readuncommitted) on DB.MemberGUID = SF.ModelGUID left join [data].[ScoreFillin_OBForecastDetail] FI with (readuncommitted) on SF.ModelGUID = FI.ModelGUID and sf.PlaceholderSectionMemberGUID=fi.PlaceholderSectionMemberGUID and sf.FillinMemberGUID=FI.FillinMemberGUID and sf.PlaceholderIndex=FI.PlaceholderIndex inner join [ob].[DimOBForecastDetail] DIM with (readuncommitted) on SF.FillinMemberGUID = DIM.MemberGUID inner join XPlan P on DB.MemberGUID = P.PlanGUID where FI.FillinMemberGUID is null and db.OBServiceLinePlanID<>0 and P.ModelTemplateGUID <> '7F792F1F-F32A-4053-9907-534A2D736D45'--GM Blank GO --------------------------------------------- -- ob.viewExceptionsServiceLineFillinsExceedingMaxCount /************************************************************ ** Author: cbecker ** Create Date: 2015-01-18 ** Description: Checks fillin counts > expansion count in the OB Service Line model ** Last Modified: 2015-01-18 ** GM Release: 2015.2 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** ** *************************************************************/ CREATE view [ob].[viewExceptionsServiceLineFillinsExceedingMaxCount] as select DB.OBServiceLinePlanID ,DB.Name as Model ,'Has ' + cast((select COUNT(*) from [data].[ScoreFillin_ModelingServiceLine] FI with (readuncommitted) inner join [fw].[DimModelingServiceLinePH] PH with (readuncommitted) on FI.ModelingServiceLinePHID = PH.ModelingServiceLinePHID where DB.MemberGUID = FI.ModelGUID and PH.Name = SE.GlobalID) as varchar(10)) + ' Service Lines in section ' + SE.GlobalID + ' with maximum ' + cast(SE.[Count] as varchar(10)) as Detail from XPlan X with (readuncommitted) inner join [ob].[DimOBServiceLinePlan] DB with (readuncommitted) on X.PlanGUID = DB.MemberGUID inner join EMFModelTemplate MT with (readuncommitted) on X.ModelTemplateGUID = MT.ModelTemplateGUID inner join EMFModelTemplateWorksheet WS with (readuncommitted) on MT.ModelTemplateGUID = WS.ModelTemplateGUID inner join MEExcelCell EC with (readuncommitted) on WS.WorksheetGUID = EC.ExcelSheetGUID inner join MEScoreExpansion SE with (readuncommitted) on EC.ExcelCellGUID = SE.ExcelCellGUID where (select COUNT(*) from [data].[ScoreFillin_ModelingServiceLine] FI with (readuncommitted) inner join [fw].[DimModelingServiceLinePH] PH with (readuncommitted) on FI.ModelingServiceLinePHID = PH.ModelingServiceLinePHID where DB.MemberGUID = FI.ModelGUID and PH.Name = SE.GlobalID) > SE.[Count] Union all select DB.OBServiceLinePlanID ,DB.Name as Model ,'Has ' + cast((select COUNT(*) from [data].[ScoreFillin_ServiceLineRollup] FI with (readuncommitted) inner join [fw].[DimServiceLineRollupPH] PH with (readuncommitted) on FI.ServiceLineRollupPHID = PH.ServiceLineRollupPHID where DB.MemberGUID = FI.ModelGUID and PH.Name = SE.GlobalID) as varchar(10)) + ' Service Line Rollups in section ' + SE.GlobalID + ' with maximum ' + cast(SE.[Count] as varchar(10)) as Detail from XPlan X with (readuncommitted) inner join [ob].[DimOBServiceLinePlan] DB with (readuncommitted) on X.PlanGUID = DB.MemberGUID inner join EMFModelTemplate MT with (readuncommitted) on X.ModelTemplateGUID = MT.ModelTemplateGUID inner join EMFModelTemplateWorksheet WS with (readuncommitted) on MT.ModelTemplateGUID = WS.ModelTemplateGUID inner join MEExcelCell EC with (readuncommitted) on WS.WorksheetGUID = EC.ExcelSheetGUID inner join MEScoreExpansion SE with (readuncommitted) on EC.ExcelCellGUID = SE.ExcelCellGUID where (select COUNT(*) from [data].[ScoreFillin_ServiceLineRollup] FI with (readuncommitted) inner join [fw].[DimServiceLineRollupPH] PH with (readuncommitted) on FI.ServiceLineRollupPHID = PH.ServiceLineRollupPHID where DB.MemberGUID = FI.ModelGUID and PH.Name = SE.GlobalID) > SE.[Count] GO --------------------------------------------- -- ob.viewExceptionsServiceLineInvalidDropdownSelection /************************************************************ ** Author: cbecker ** Create Date: 2015-01-18 ** Description: Finds any text boxes that saved a value of blank that will cause #n/a errors in the model ** Last Modified: 2015-01-18 ** GM Release: 2015.2 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** ** *************************************************************/ Create view [ob].[viewExceptionsServiceLineInvalidDropdownSelection] as --Service Line select Distinct DB.OBServiceLinePlanID ,DB.Name as Model ,'Service Line ' + Dim.Name + ' has an invalid drop-down box selection' as Detail from [clientob].[FactServiceLineVar] fct with (readuncommitted) inner join [ob].[DimOBServiceLinePlan] DB with (readuncommitted) on fct.OBServiceLinePlanID=db.OBServiceLinePlanID inner join [fw].[DimModelingServiceLine] DIM with (readuncommitted) on fct.ModelingServiceLineID = DIM.ModelingServiceLineID where fct.UnitTypeID=141 and TextValue_Formula='x' and TextValue='' Union all --Service Line Rollup select Distinct DB.OBServiceLinePlanID ,DB.Name as Model ,'Service Line Rollup ' + Dim.Name + ' has an invalid drop-down box selection' as Detail from [clientob].[FactServiceLineRollupVar] fct with (readuncommitted) inner join [ob].[DimOBServiceLinePlan] DB with (readuncommitted) on fct.OBServiceLinePlanID=db.OBServiceLinePlanID inner join [fw].[DimServiceLineRollup] DIM with (readuncommitted) on fct.ServiceLineRollupID = DIM.ServiceLineRollupID where fct.UnitTypeID=141 and TextValue_Formula='x' and TextValue='' GO --------------------------------------------- -- ob.viewExceptionsServiceLineMissingNotSpecifiedFillins /************************************************************ ** Author: cbecker ** Create Date: 2015-01-18 ** Description: Finds all missing not specified fillins in the OB Service Line model ** Last Modified: 2015-01-18 ** GM Release: 2015.2 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** ** *************************************************************/ CREATE view [ob].[viewExceptionsServiceLineMissingNotSpecifiedFillins] AS --Service Line select DB.OBServiceLinePlanID, DB.Name as Model, 'Is Missing the Not Specified Service line' as Detail from [ob].[DimOBServiceLinePlan] DB with (readuncommitted) where not exists(select 1 from [data].[ScoreFillin_ModelingServiceLine] FI with (readuncommitted) where FI.ModelGUID = DB.MemberGUID and FI.ModelingServiceLineID = 0 and FI.ModelingServiceLinePHID = 0) and DB.OBServiceLinePlanID != 0 --and db.obactiveplans=1 Union all --Service Line Rollup select DB.OBServiceLinePlanID, DB.Name as Model, 'Is Missing the Not Specified Service Line Rollup' as Detail from [ob].[DimOBServiceLinePlan] DB with (readuncommitted) where not exists(select 1 from [data].[ScoreFillin_ServiceLineRollup] FI with (readuncommitted) where FI.ModelGUID = DB.MemberGUID and FI.ServiceLineRollupID = 0 and FI.ServiceLineRollupPHID = 0) and DB.OBServiceLinePlanID != 0 --and db.obactiveplans=1 Union all --OBForecastDetail select DB.OBServiceLinePlanID, DB.Name as Model, 'Is Missing the Not Specified OB Forecast Detail' as Detail from [ob].[DimOBServiceLinePlan] DB with (readuncommitted) where not exists(select 1 from [data].[ScoreFillin_OBForecastDetail] FI with (readuncommitted) where FI.ModelGUID = DB.MemberGUID and FI.OBForecastDetailID = 0 and FI.OBForecastDetailPHID = 0) and DB.OBServiceLinePlanID != 0 --and db.obactiveplans=1 Union all --Fiscal Year select DB.OBServiceLinePlanID, DB.Name as Model, 'Is Missing the Not Specified Fiscal Year' as Detail from [ob].[DimOBServiceLinePlan] DB with (readuncommitted) where not exists(select 1 from [data].[ScoreFillin_FiscalYear] FI with (readuncommitted) where FI.ModelGUID = DB.MemberGUID and FI.FiscalYearID = 0 and FI.FiscalYearPHID = 0) and DB.OBServiceLinePlanID != 0 --and db.obactiveplans=1 GO --------------------------------------------- -- ob.viewExceptionsServiceLineMissingSelfFillin /************************************************************ ** Author: cbecker ** Create Date: 2015-01-18 ** Description: Displays any service line models that are missing their self fill-in ** Last Modified: 2015-01-18 ** GM Release: 2015.2 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 2016-08-10 kf B-12543 FP - System Center Exception Management - Initial Framework *************************************************************/ CREATE view [ob].[viewExceptionsServiceLineMissingSelfFillin] as --Modeling service line select Distinct DB.OBServiceLinePlanID ,DB.Name as Model ,'Service line plan ' + db.Name + ' is missing the self-fill-in' as Detail from [ob].[DimOBServiceLinePlan] DB with (readuncommitted) left outer join [data].[ScoreFillin_OBServiceLinePlan] sf with (readuncommitted) on db.MemberGUID=sf.ModelGUID and PlaceholderSectionMemberGUID='811d09b3-431a-42f3-80d2-f100e27a1fdb' where sf.FillinGUID is null and db.OBServiceLinePlanID<>0 GO --------------------------------------------- -- ob.viewExceptionsServiceLineOrphanedData /************************************************************ ** Author: cbecker ** Create Date: 2015-01-18 ** Description: Checks for nonzero data that will not show up in the model because a fillin is missing ** Last Modified: 2015-01-18 ** GM Release: 2015.2 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** ** *************************************************************/ CREATE view [ob].[viewExceptionsServiceLineOrphanedData] as -- Service line select Distinct db.OBServiceLinePlanID , db.Name as Model ,'Has data in Service Line ' + dim.Name+ ' but it is not filled in' as Detail from [clientob].[FactServiceLine] data with (readuncommitted) inner join [ob].[DimOBServiceLinePlan] db with (readuncommitted) on db.OBServiceLinePlanID = data.OBServiceLinePlanID inner join [fw].[DimModelingServiceLine] dim with (readuncommitted) on dim.ModelingServiceLineID = data.ModelingServiceLineID left outer join ScoreFillin sf with (readuncommitted) on db.MemberGUID=sf.ModelGUID and dim.MemberGUID=sf.FillinMemberGUID and sf.PlaceholderSectionMemberGUID<>'d357335b-692a-4149-9d0b-f4fb231536c8' --not specified where sf.FillinGUID is null and data.Total <> 0 and data.FiscalYearID>= (select s.setting-1 from [dbo].[DBSetting] s where Name = 'OB_Current_Year') and db.OBServiceLinePlanID<>0 and dim.ModelingServiceLineID<>0 UNION ALL -- Service line Rollup select Distinct db.OBServiceLinePlanID , db.Name as Model ,'Has data in Service Line ' + dim.Name+ ' but it is not filled in' as Detail from [clientob].[FactServiceLineRollupVar] data with (readuncommitted) inner join [ob].[DimOBServiceLinePlan] db with (readuncommitted) on db.OBServiceLinePlanID = data.OBServiceLinePlanID inner join [fw].[DimServiceLineRollup] dim with (readuncommitted) on dim.ServiceLineRollupID = data.ServiceLineRollupID left outer join ScoreFillin sf with (readuncommitted) on db.MemberGUID=sf.ModelGUID and dim.MemberGUID=sf.FillinMemberGUID and sf.PlaceholderSectionMemberGUID<>'10802ab1-b116-48b5-a280-2b42083ab7bb' --not specified where sf.FillinGUID is null and data.FiscalYearID>= (select s.setting-1 from [dbo].[DBSetting] s where Name = 'OB_Current_Year') and db.OBServiceLinePlanID<>0 and dim.ServiceLineRollupID<>0 GO --------------------------------------------- -- ob.viewExceptionsServiceLineProjectedEqualYTD /************************************************************ ** Author: cbecker ** Create Date: 2015-01-18 ** Description: Compares Projected total and YTD to determine if anything is being projected in the non-closed months, indicates potential errors ** Last Modified: 2015-01-18 ** GM Release: 2015.2 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** ** *************************************************************/ Create view [ob].[viewExceptionsServiceLineProjectedEqualYTD] as select Distinct DB.OBServiceLinePlanID ,DB.Name as Model ,'Has projected = YTD for Service Line: ' + Dim.ServiceLine + ' - ' + dim.MedicalSurgical + ' - ' + dim.AgeCohort + ' in section ' + dim.PatientClass as Detail from [clientob].[FactServiceLine] fct with (readuncommitted) inner join [ob].[DimOBServiceLinePlan] db with (readuncommitted) on db.OBServiceLinePlanID=fct.OBServiceLinePlanID inner join [fw].[DimModelingServiceLine] DIM with (readuncommitted) on fct.ModelingServiceLineID = DIM.ModelingServiceLineID where fct.datatypeid=3 and fct.YTD=fct.Total and fct.TimeClassID=12 and fct.Total<>0 GO --------------------------------------------- -- ob.viewExceptionsServiceLineServiceLinesNotBudgeted /************************************************************ ** Author: cbecker ** Create Date: 2015-01-18 ** Description: Service Lines without a Budget ** Last Modified: 2015-01-18 ** GM Release: 2015.2 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** ** *************************************************************/ Create view ob.viewExceptionsServiceLineServiceLinesNotBudgeted as select db.OBServiceLinePlanID ,db.Name as Model ,'Has '+cast(cast(Sum(Total) as decimal(16,2)) as nvarchar(100))+' current year '+ut.Name+' for Service Line '+acc.Name+' but does not have a budget' as Detail from [clientob].[FactServiceLine] fa inner join [fw].[DimUnitType] ut on fa.UnitTypeID=ut.UnitTypeID inner join [fw].[DimModelingServiceLine] acc on acc.ModelingServiceLineID=fa.ModelingServiceLineID inner join [ob].[DimOBServiceLinePlan] db on db.OBServiceLinePlanID=fa.OBServiceLinePlanID where FiscalYearID = (select Setting from [dbo].[DBSetting] where DBSettingGUID='9c921c27-f3e4-4616-b3fd-925a75870b62') and TimeClassID=1 and Total<>0 and acc.ModelingServiceLineID<>0 and fa.OBServiceLinePlanID<>0 --and not (acc.OBIsDefined=1 and acc.OBAccountPHID=0 and acc.OBStatModelSectionID=0) and ut.UnitTypeID in (34,51,140) --Dollars, Volume, and Hours (contract labor) and not exists (select 1 from [clientob].[FactServiceLine] fa2 where FiscalYearID = (select Setting+1 from [dbo].[DBSetting] where DBSettingGUID='9c921c27-f3e4-4616-b3fd-925a75870b62') and TimeClassID=2 and Total<>0 and fa2.OBServiceLinePlanID=fa.OBServiceLinePlanID and fa2.ModelingServiceLineID=fa.ModelingServiceLineID and fa2.UnitTypeID=fa.UnitTypeID) group by db.OBServiceLinePlanID ,db.Name ,ut.Name ,acc.Name GO --------------------------------------------- -- ob.viewFactDepartmentPrimaryStatisticConfiguration CREATE view ob.viewFactDepartmentPrimaryStatisticConfiguration as select f.RowID, d.DepartmentalBudgetID, f.AccountID, convert(tinyint,f.Revenue) as Revenue, convert(tinyint,f.Staffing) as Staffing, convert(tinyint,f.NonStaffingExpense) as NonStaffingExpense, f.IsDeleted, f.HistoryItemGUID, f.Version, f.TransactionID from [client].[FactDepartmentPrimaryStatisticConfiguration] f inner join [ob].[DimDepartmentalBudget] d on f.DepartmentID=d.DepartmentID GO --------------------------------------------- -- ob.viewFactReportingMonthlyTargetComparision CREATE view ob.viewFactReportingMonthlyTargetComparision as /*************************************************************************************************************************************************************** ** Author: akowalski ** Create Date: NA ** Description: Presents the post-model refresh data in the same format as the reconciliation targets are stored for comparison purposes ** Last Modified: 2014-06-12 ** GM Release: 2014.3 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 2016-12-14 srk D-04952 Removed unnecessary unions with factaccount to simplify the view, updated measure for YTD for current year ****************************************************************************************************************************************************************/ select total.EntityID, total.FiscalMonthID, total.FiscalYearID, total.FinancialReportingID, total.TimeClassID, SUM(total.Amount) as Amount from --------------------FACT REPORTING MONTHLY FOR FULL YEAR------------------------- ( select db.EntityID, 0 as FiscalMonthID, fct.FiscalYearID, fct.FinancialReportingID, fct.TimeClassID, fct.Total as Amount from [clientob].[FactReportingMonthly] fct inner join [ob].[DimDepartmentalBudget] db on db.DepartmentalBudgetID=fct.DepartmentalBudgetID inner join FRLineItem fr on fct.FinancialReportingID=fr.FinancialReportingID and fr.FWDimensionGUID='8F46A3C4-97E7-49B3-82F8-6463B701D77D' where 1=1 and fr.Type=0 and fct.FiscalYearID = (Select DBS.Setting - 1 From [dbo].[DBSetting] DBS where DBS.DBSettingGUID = '9c921c27-f3e4-4616-b3fd-925a75870b62') and fct.TimeClassID = 1 union all select db.EntityID, 0 as FiscalMonthID, fct.FiscalYearID, fct.FinancialReportingID, fct.TimeClassID, fct.YTD as Amount from [clientob].[FactReportingMonthly] fct inner join [ob].[DimDepartmentalBudget] db on db.DepartmentalBudgetID=fct.DepartmentalBudgetID inner join FRLineItem fr on fct.FinancialReportingID=fr.FinancialReportingID and fr.FWDimensionGUID='8F46A3C4-97E7-49B3-82F8-6463B701D77D' where 1=1 and fr.Type=0 and fct.FiscalYearID = (Select DBS.Setting From [dbo].[DBSetting] DBS where DBS.DBSettingGUID = '9c921c27-f3e4-4616-b3fd-925a75870b62') and fct.TimeClassID = 1 union all select db.EntityID, 0 as FiscalMonthID, fct.FiscalYearID, fct.FinancialReportingID, fct.TimeClassID, fct.Total as Amount from [clientob].[FactReportingMonthly] fct inner join [ob].[DimDepartmentalBudget] db on db.DepartmentalBudgetID=fct.DepartmentalBudgetID inner join FRLineItem fr on fct.FinancialReportingID=fr.FinancialReportingID and fr.FWDimensionGUID='8F46A3C4-97E7-49B3-82F8-6463B701D77D' where 1=1 and fr.Type=0 and fct.FiscalYearID = (Select DBS.Setting From [dbo].[DBSetting] DBS where DBS.DBSettingGUID = '9c921c27-f3e4-4616-b3fd-925a75870b62') and fct.TimeClassID = 2 --------------------FACT REPORTING MONTHLY FOR FULL YEAR------------------------- UNION ALL --------------------FACT REPORTING MONTHLY BY MONTH FOR ACTUAL YTD--------------- SELECT pv.EntityID, fm.FiscalMonthID, pv.FiscalYearID, pv.FinancialReportingID, pv.TimeClassID, pv.Amount FROM ( select db.EntityID, fct.FiscalYearID, fct.FinancialReportingID, 1 as TimeClassID, -- only current year historicals will be by month fct.Month01, fct.Month02, fct.Month03, fct.Month04, fct.Month05, fct.Month06, fct.Month07, fct.Month08, fct.Month09, fct.Month10, fct.Month11, fct.Month12 from [clientob].[FactReportingMonthly] fct inner join [ob].[DimDepartmentalBudget] db on db.DepartmentalBudgetID=fct.DepartmentalBudgetID inner join FRLineItem fr on fct.FinancialReportingID=fr.FinancialReportingID and fr.FWDimensionGUID='8F46A3C4-97E7-49B3-82F8-6463B701D77D' where fr.Type=0 and fct.FiscalYearID=(select setting from [dbo].[DBSetting] where Name='OB_Current_Year') -- only current year historicals will be by month and fct.TimeClassID=12 -- only current year historicals will be by month (this is because projection data is stored by month for the YTD portion) ) dta unpivot (Amount for MonthColumnName in (Month01, Month02, Month03, Month04, Month05, Month06, Month07, Month08, Month09, Month10, Month11, Month12)) as pv inner join fw.DimFiscalMonth fm with (readuncommitted) on pv.MonthColumnName = fm.MonthColumnName where fm.FiscalMonthID <= (Select DBS.Setting From [dbo].[DBSetting] DBS where DBS.DBSettingGUID = '14cbd1a1-15e9-411d-9fea-78cecaadf7e7') --------------------FACT REPORTING MONTHLY BY MONTH FOR ACTUAL YTD--------------- ) total group by total.EntityID, total.FiscalMonthID, total.FiscalYearID, total.FinancialReportingID, total.TimeClassID GO --------------------------------------------- -- ob.viewFactReportingMonthlyTargetComparisionDetail CREATE view ob.viewFactReportingMonthlyTargetComparisionDetail as /************************************************************ ** Author: akowalski ** Create Date: NA ** Description: Presents the post-model refresh data in the same format as the financial statement data source for comparison purposes ** Last Modified: 2014-06-12 ** GM Release: 2014.3 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** *************************************************************/ select fct.DepartmentalBudgetID, db.DepartmentID, 0 as AccountID, fct.FinancialReportingID as FinancialReportingID, FiscalYearID, TimeClassID, Month01, Month02, Month03, Month04, Month05, Month06, Month07, Month08, Month09, Month10, Month11, Month12, YTD, Yearly, Total from [clientob].[FactReportingMonthly] fct inner join [ob].[DimDepartmentalBudget] db on db.DepartmentalBudgetID=fct.DepartmentalBudgetID where not (fct.FiscalYearID=(select setting from [dbo].[DBSetting] where Name='OB_Current_Year') -- only current year historicals will be by month and fct.TimeClassID=1) union all select DepartmentalBudgetID, DepartmentID, AccountID, FinancialReportingID, FiscalYearID, TimeClassID, Month01, Month02, Month03, Month04, Month05, Month06, Month07, Month08, Month09, Month10, Month11, Month12, 0 as YTD, 0 as Yearly, (YTD.Month01 + YTD.Month02 + YTD.Month03 + YTD.Month04 + YTD.Month05 + YTD.Month06 + YTD.Month07 + YTD.Month08 + YTD.Month09 + YTD.Month10 + YTD.Month11 + YTD.Month12) as Total from ( select fct.DepartmentalBudgetID, db.DepartmentID, 0 as AccountID, fct.FinancialReportingID as FinancialReportingID, FiscalYearID, 1 as TimeClassID, case when mnth.Setting>=1 then Month01 else 0 end as Month01, case when mnth.Setting>=2 then Month02 else 0 end as Month02, case when mnth.Setting>=3 then Month03 else 0 end as Month03, case when mnth.Setting>=4 then Month04 else 0 end as Month04, case when mnth.Setting>=5 then Month05 else 0 end as Month05, case when mnth.Setting>=6 then Month06 else 0 end as Month06, case when mnth.Setting>=7 then Month07 else 0 end as Month07, case when mnth.Setting>=8 then Month08 else 0 end as Month08, case when mnth.Setting>=9 then Month09 else 0 end as Month09, case when mnth.Setting>=10 then Month10 else 0 end as Month10, case when mnth.Setting>=11 then Month11 else 0 end as Month11, case when mnth.Setting>=12 then Month12 else 0 end as Month12, YTD, Yearly, Total from [clientob].[FactReportingMonthly] fct inner join [ob].[DimDepartmentalBudget] db on db.DepartmentalBudgetID=fct.DepartmentalBudgetID inner join [dbo].[DBSetting] mnth on mnth.name='OB_Months_Loaded' where fct.FiscalYearID=(select setting from [dbo].[DBSetting] where Name='OB_Current_Year') -- only current year historicals will be by month and fct.TimeClassID=12 ) YTD union all select f.DepartmentalBudgetID, d.DepartmentID, a.AccountID, a.OBDollarsFinancialReportingID as FinancialReportingID, FiscalYearID, TimeClassID, Month01, Month02, Month03, Month04, Month05, Month06, Month07, Month08, Month09, Month10, Month11, Month12, YTD, Yearly, Total from [clientob].[FactAccount] f inner join [ob].[DimDepartmentalBudget] d on d.DepartmentalBudgetID = f.DepartmentalBudgetID inner join [fw].[DimDepartment] dep on dep.DepartmentID = d.DepartmentID inner join [fw].[DimAccount] a on a.AccountID = f.AccountID where f.UnitTypeID=34 and d.OBActivePlans=0 GO --------------------------------------------- -- ob.viewFactStaffingPCUnpivoted create View [ob].[viewFactStaffingPCUnpivoted] as select [DepartmentalBudgetID], [PayCodeGroupID], [PayCodeID], [JobCodeID], [EmployeeID], [FiscalYearID], [TimeClassID], [UnitTypeID], [DataTypeID], fm.[FiscalMonthID], [Value] from ( select * from [clientob].[FactStaffingPC] source ) as PIV UNPIVOT ( VALUE for MonthColumnName IN ( [Month01] , [Month02] , [Month03] , [Month04] , [Month05] , [Month06] , [Month07] , [Month08] , [Month09] , [Month10] , [Month11] , [Month12] ) ) as f inner join fw.DimFiscalMonth fm on f.MonthColumnName=fm.MonthColumnName GO --------------------------------------------- -- ob.viewFlexDriver CREATE VIEW ob.viewFlexDriver AS /** Change History ************************************************************** ** CID Date Author WI Description ** 1 2014-09-03 GF Initial Implementation ** 2 2022-06-21 KF JAZZ-39078 PR Metrics Definition - Add Flex Driver for Daily calculations *************************************************************/ select fd.FlexDriverGUID, fd.Name, fd.ScoreDatatableGUID, fd.ParentDriverGUID, fd.IsParentDriverFlexed, fd.SortOrder, fd.Tier, fd.MeasureType, fd.IsSameJobCode, fd.IsSamePayCodeGroup, CAST(s.TimeFrameID as tinyint) TimeFrameID from [ob].[FlexDriver] fd inner join ( select kl.DataTableGUID, MAX(case when a.SQLColumnName = 'DateID' then 2 when a.SQLColumnName = 'PayPeriodID' then 1 else 0 end) as TimeFrameID from [dbo].[ScoreDataTableKeyLink] kl inner join [dbo].[ScoreAttribute] a on a.AttributeGUID = kl.KeyGUID where a.SQLColumnName in ('FiscalMonthID', 'PayPeriodID', 'DateID') GROUP BY kl.DataTableGUID ) s on s.DataTableGUID = fd.ScoreDatatableGUID GO --------------------------------------------- -- ob.viewPayrollVariabilityOverrideCacheForAllPayCodeGroupsGrouped /************************************************************* ** Change History ************************************************************** ** CID Date Author WI Description ** 1 2023-11-21 HV JAZZ-40552 Technical - Jazz - Create views for calculating targets with spreads for variable job-codes for Productive Hours-Standard metric for Pay Period/YTD *************************************************************/ CREATE VIEW ob.viewPayrollVariabilityOverrideCacheForAllPayCodeGroupsGrouped AS SELECT DepartmentID, JobCodeID, MAX(CASE WHEN Variability > 0 THEN 1 ELSE 0 END) as Variability FROM ob.PayrollVariabilityOverrideCache WHERE IsForAllPayCodeGroups = 1 GROUP BY DepartmentID, JobCodeID GO --------------------------------------------- -- ob.viewReconciliationDepartmentalBudgetIncomeStatement CREATE view [ob].[viewReconciliationDepartmentalBudgetIncomeStatement] as select d.EntityID as EntityID , f.DepartmentalBudgetID , d.Name as DepartmentalBudgetName , dep.DepartmentID , f.AccountID , a.OBDollarsFinancialReportingID as [FinancialReportingID] , f.TimeClassID , f.FiscalYearID , f.DataTypeID , f.UnitTypeID , f.[Month01] , f.[Month02] , f.[Month03] , f.[Month04] , f.[Month05] , f.[Month06] , f.[Month07] , f.[Month08] , f.[Month09] , f.[Month10] , f.[Month11] , f.[Month12] , f.[Total] , f.[Yearly] , f.[YTD] from [clientob].[FactAccount] f inner join [ob].[DimDepartmentalBudget] d on d.DepartmentalBudgetID = f.DepartmentalBudgetID inner join [fw].[DimDepartment] dep on dep.DepartmentID = d.DepartmentID inner join [fw].[DimAccount] a on a.AccountID = f.AccountID where f.UnitTypeID=34 GO --------------------------------------------- -- ob.viewReconciliationDepartmentalBudgetStaffing /************************************************************ ** Author: akowalski ** Create Date: NA ** Description: The driving view for Staffing Data Reconciliation Screens in ** Last Modified: 2014-10-15 ** GM Release: 2014.4 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** *************************************************************/ CREATE view [ob].[viewReconciliationDepartmentalBudgetStaffing] AS -- Data that will actually show up in the model SELECT dept.EntityID as EntityID, budget.DepartmentalBudgetID, budget.Name as DepartmentalBudgetName, dept.DepartmentID, d.JobCodeID, pcg.PayCodeGroupID, d.PayCodeID, d.TimeClassID, d.FiscalYearID, d.FiscalMonthID, d.EmployeeID, -- case -- when unittypeID='34' then unittypeID -- when unittypeID<>'34' and pcg.ProductiveClass='Productive' then 148 -- when unittypeID<>'34' and pcg.ProductiveClass='Non-Productive' then 146 -- when unittypeID<>'34' and pcg.ProductiveClass='Differential' then 147 -- else 51 end as UnitTypeID, d.UnitTypeID, dt.DataTypeID, d.Value FROM [int].[FactStaffing] AS d inner join fw.DimDepartment dept on d.[DepartmentID]=dept.DepartmentID inner join ob.DimDepartmentalBudget budget on budget.DepartmentID=dept.DepartmentID inner join fw.DimPayCode pc on pc.PayCodeid = d.PayCodeid inner join fw.DimPayCodeGroup pcg on pcg.PayCodeGroupID = pc.PayCodeGroupID inner join [fw].[DimEmployee] e on e.EmployeeID=d.EmployeeID inner join fw.DimDataType dt on dt.Name='Input' inner join [dbo].[DBSetting] yr on yr.Name='OB_Current_Year' inner join [fw].[DimJobCode] jc on d.JobCodeID=jc.JobCodeID inner join [fw].[DimEntity] ent on dept.EntityID=ent.EntityID where e.IsProvider=0 and pc.PayCodeGroupID<>0 and ((pc.IsDollarsIgnored=0 and d.UnitTypeid=34) or (pc.IsHoursIgnored=0 and d.UnitTypeid<>34)) and d.fiscalyearID > (yr.Setting - 2) and ((jc.IsProvider=0 and ent.OBIsUsingProviderComp=1) or ent.OBIsUsingProviderComp=0) -- Data that's suppressed because of job code configuration union all SELECT dept.EntityID as EntityID, budget.DepartmentalBudgetID, budget.Name as DepartmentalBudgetName, dept.DepartmentID, 0 as JobCodeID, 0 as PayCodeGroupID, d.PayCodeID, d.TimeClassID, d.FiscalYearID, d.FiscalMonthID, d.EmployeeID, d.UnitTypeID, dt.DataTypeID, d.Value FROM [int].[FactStaffing] AS d inner join fw.DimDepartment dept on d.[DepartmentID]=dept.DepartmentID inner join ob.DimDepartmentalBudget budget on budget.DepartmentID=dept.DepartmentID inner join fw.DimPayCode pc on pc.PayCodeid = d.PayCodeid inner join fw.DimPayCodeGroup pcg on pcg.PayCodeGroupID = pc.PayCodeGroupID inner join [fw].[DimEmployee] e on e.EmployeeID=d.EmployeeID inner join fw.DimDataType dt on dt.Name='Input' inner join [dbo].[DBSetting] yr on yr.Name='OB_Current_Year' inner join [fw].[DimJobCode] jc on d.JobCodeID=jc.JobCodeID inner join [fw].[DimEntity] ent on dept.EntityID=ent.EntityID where pc.PayCodeGroupID<>0 and ((pc.IsDollarsIgnored=0 and d.UnitTypeid=34) or (pc.IsHoursIgnored=0 and d.UnitTypeid<>34)) and d.fiscalyearID > (yr.Setting - 2) and (e.IsProvider=1 or (jc.IsProvider=1 and ent.OBIsUsingProviderComp=1)) -- data that's suppressed because of pay code configuration union all SELECT dept.EntityID as EntityID, budget.DepartmentalBudgetID, budget.Name as DepartmentalBudgetName, dept.DepartmentID, 0 as JobCodeID, 0 as PayCodeGroupID, d.PayCodeID, d.TimeClassID, d.FiscalYearID, d.FiscalMonthID, d.EmployeeID, d.UnitTypeID, dt.DataTypeID, d.Value FROM [int].[FactStaffing] AS d inner join fw.DimDepartment dept on d.[DepartmentID]=dept.DepartmentID inner join ob.DimDepartmentalBudget budget on budget.DepartmentID=dept.DepartmentID inner join fw.DimPayCode pc on pc.PayCodeid = d.PayCodeid inner join fw.DimPayCodeGroup pcg on pcg.PayCodeGroupID = pc.PayCodeGroupID inner join [fw].[DimEmployee] e on e.EmployeeID=d.EmployeeID inner join fw.DimDataType dt on dt.Name='Input' inner join [dbo].[DBSetting] yr on yr.Name='OB_Current_Year' inner join [fw].[DimJobCode] jc on d.JobCodeID=jc.JobCodeID inner join [fw].[DimEntity] ent on dept.EntityID=ent.EntityID where e.IsProvider=0 and d.fiscalyearID > (yr.Setting - 2) and ((jc.IsProvider=0 and ent.OBIsUsingProviderComp=1) or ent.OBIsUsingProviderComp=0) and (pc.PayCodeGroupID=0 or (pc.IsDollarsIgnored=1 and d.UnitTypeid=34) or (pc.IsHoursIgnored=1 and d.UnitTypeid<>34)) GO --------------------------------------------- -- ob.viewReconciliationDepartmentalBudgetStatistics create view [ob].[viewReconciliationDepartmentalBudgetStatistics] as select d.EntityID as EntityID , f.DepartmentalBudgetID , d.Name as DepartmentalBudgetName , dep.DepartmentID , f.AccountID , a.PatientClassID , f.TimeClassID , f.FiscalYearID , f.DataTypeID , f.UnitTypeID , f.[Month01] , f.[Month02] , f.[Month03] , f.[Month04] , f.[Month05] , f.[Month06] , f.[Month07] , f.[Month08] , f.[Month09] , f.[Month10] , f.[Month11] , f.[Month12] , f.[Total] , f.[Yearly] , f.[YTD] from [clientob].[FactAccount] f inner join [ob].[DimDepartmentalBudget] d on d.DepartmentalBudgetID = f.DepartmentalBudgetID inner join [fw].[DimDepartment] dep on dep.DepartmentID = d.DepartmentID inner join [fw].[DimAccount] a on a.AccountID = f.AccountID where f.UnitTypeID<>34 and f.UnitTypeID<>0 GO --------------------------------------------- -- ob.viewReconciliationRollingOBDollarsGLOnly CREATE VIEW [ob].[viewReconciliationRollingOBDollarsGLOnly] as select ob.DepartmentalBudgetID as PlanID, ob.Name as PlanName, source.AccountID as AccountID, ma.AccountCode as Account, source.DepartmentID as DepartmentID, md.DepartmentCode as Department, 0 as PatientTypeRollupID, 'n/a' as PatientTypeRollup, ma.OBDollarsFinancialReportingID as FinancialReportingID, ma.OBDollarsFinancialReporting, ut.UnitTypeID as UnitTypeID, ut.Name as UnitType, source.TimeClassID as TimeClassID, source.TimeClassCode as TimeClass, source.FiscalYearID as FiscalYearID, source.FiscalYearCode as FiscalYear, source.FiscalMonthID as FiscalMonthID, source.FiscalMonthCode as FiscalMonthCode, (source.Value * isnull(ma.Inversion, 1)) as Value from int.FactGL source (readuncommitted) Inner Join fw.DimAccount ma (readuncommitted) on ma.AccountID = source.AccountID Inner Join fw.DimDepartment md (readuncommitted) on md.DepartmentID = source.DepartmentID inner join ob.viewDimDepartmentalBudget ob on md.DepartmentID = ob.DepartmentID Inner Join fw.DimUnitType ut (readuncommitted) on ut.Name='Dollars' where md.DepartmentID<>0 Union All select ob.DepartmentalBudgetID as PlanID, ob.Name as PlanName, source.AccountID as AccountID, ma.AccountCode as Account, source.DepartmentID as DepartmentID, md.DepartmentCode as Department, 0 as PatientTypeRollupID, GLRollup as PatientTypeRollup, ma.OBDollarsFinancialReportingID as FinancialReportingID, ma.OBDollarsFinancialReporting , ut.UnitTypeID, ut.name as UnitType, source.TimeClassID as TimeClassID, source.TimeClassCode as TimeClass, source.FiscalYearID as FiscalYearID, source.FiscalYearCode as FiscalYear, source.FiscalMonthID as FiscalMonthID, source.FiscalMonthCode as FiscalMonthCode, source.Value as Value from int.FactStatistic source (readuncommitted) Inner Join fw.DimAccount ma (readuncommitted) on ma.AccountID = source.AccountID and ma.IsStat =1 --inner join fw.DimPatientType PT on PT.PatientTypeID = ma.PatientTypeID --inner join fw.DimPatientTypeRollup PR on PR.PatientTypeRollupID = PT.PatientTypeRollupID Inner Join fw.DimDepartment md (readuncommitted) on md.DepartmentID = source.DepartmentID inner join ob.viewDimDepartmentalBudget ob (readuncommitted) on md.DepartmentID=md.DepartmentID inner join fw.DimUnitType ut on ut.Name ='Volume' where md.DepartmentID<>0 GO --------------------------------------------- -- ob.viewReportAccountSnapshotData /************************************************************ ** Author: Joel Gerber ** Create Date: 2014-03-10 ** Description: Reporting Data View for All OB Snapshot Reports ** Last Modified: 2014-03-10 ** GM Release: NA (Customization) ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** *************************************************************/ create view [ob].[viewReportAccountSnapshotData] as select data.DepartmentalBudgetID, data.AccountID, FiscalYearID, TimeClassID, UnitTypeID, DataTypeID, acc.PatientTypeID, OBSnapshotID, Month01, Month02, Month03, Month04, Month05, Month06, Month07, Month08, Month09, Month10, Month11, Month12, data.MonthsLoaded, YTD, Yearly, Total from ob.FactAccountSnapshot data inner join fw.DimAccount acc on acc.AccountID=data.AccountID where acc.IsGlobal=0 GO --------------------------------------------- -- ob.viewReportAccountWithStaffingDetail create view [ob].[viewReportAccountWithStaffingDetail] as -- Staffing Data ------------------------------------------------------------------------------------------- select DepartmentalBudgetID = vw.DepartmentalBudgetID, AccountID = vw.AccountID, JobCodeID = vw.JobCodeID, PayCodeGroupID = vw.PayCodeGroupID, FiscalYearID = vw.FiscalYearID, TimeClassID = vw.TimeClassID, UnitTypeID = vw.UnitTypeID, Month01 = vw.Month01, Month02 = vw.Month02, Month03 = vw.Month03, Month04 = vw.Month04, Month05 = vw.Month05, Month06 = vw.Month06, Month07 = vw.Month07, Month08 = vw.Month08, Month09 = vw.Month09, Month10 = vw.Month10, Month11 = vw.Month11, Month12 = vw.Month12, YTD = cmb.IsCY*vw.YTD, Total = vw.Total from [ob].[viewReportStaffingtoGLAccount] vw inner join [ob].[viewValidDataTypeTimeClassFiscalYearCombos] cmb on vw.TimeClassID=cmb.TimeClassID and vw.DataTypeID=cmb.DataTypeID and vw.FiscalYearID=cmb.FiscalYearID inner join [clientob].[FactAccount] fct on vw.DepartmentalBudgetID = fct.DepartmentalBudgetID and vw.AccountID = fct.AccountID and vw.FiscalYearID = fct.FiscalYearID and vw.TimeClassID = fct.TimeClassID and vw.UnitTypeID = fct.UnitTypeID and vw.DataTypeID = fct.DataTypeID UNION ALL -- Non-Staffing Account Data ------------------------------------------------------------------------------------------- select DepartmentalBudgetID = fct.DepartmentalBudgetID, AccountID = fct.AccountID, JobCodeID = 0, PayCodeGroupID = 0, FiscalYearID = fct.FiscalYearID, TimeClassID = fct.TimeClassID, UnitTypeID = fct.UnitTypeID, Month01 = fct.Month01, Month02 = fct.Month02, Month03 = fct.Month03, Month04 = fct.Month04, Month05 = fct.Month05, Month06 = fct.Month06, Month07 = fct.Month07, Month08 = fct.Month08, Month09 = fct.Month09, Month10 = fct.Month10, Month11 = fct.Month11, Month12 = fct.Month12, YTD = cmb.IsCY*fct.YTD, Total = fct.Total from [clientob].[FactAccount] fct inner join [ob].[viewValidDataTypeTimeClassFiscalYearCombos] cmb on fct.TimeClassID=cmb.TimeClassID and fct.DataTypeID=cmb.DataTypeID and fct.FiscalYearID=cmb.FiscalYearID where not exists ( select 1 from [ob].[viewReportStaffingtoGLAccount] vw where 1=1 and fct.DepartmentalBudgetID = vw.DepartmentalBudgetID and fct.AccountID = vw.AccountID and fct.FiscalYearID = vw.FiscalYearID and fct.TimeClassID = vw.TimeClassID and fct.UnitTypeID = vw.UnitTypeID and fct.DataTypeID = vw.DataTypeID ) UNION ALL -- GL Data Historical Input Data Discrepancy ------------------------------------------------------------------------------------------- select DepartmentalBudgetID = fct.DepartmentalBudgetID, AccountID = fct.AccountID, JobCodeID = 0, PayCodeGroupID = 0, FiscalYearID = fct.FiscalYearID, TimeClassID = fct.TimeClassID, UnitTypeID = fct.UnitTypeID, Month01 = max(fct.Month01) - sum(vw.Month01), Month02 = max(fct.Month02) - sum(vw.Month02), Month03 = max(fct.Month03) - sum(vw.Month03), Month04 = max(fct.Month04) - sum(vw.Month04), Month05 = max(fct.Month05) - sum(vw.Month05), Month06 = max(fct.Month06) - sum(vw.Month06), Month07 = max(fct.Month07) - sum(vw.Month07), Month08 = max(fct.Month08) - sum(vw.Month08), Month09 = max(fct.Month09) - sum(vw.Month09), Month10 = max(fct.Month10) - sum(vw.Month10), Month11 = max(fct.Month11) - sum(vw.Month11), Month12 = max(fct.Month12) - sum(vw.Month12), YTD = max(cmb.IsCY)*(max(fct.YTD ) - sum(vw.YTD)), Total = max(fct.Total ) - sum(vw.Total) from [clientob].[FactAccount] fct inner join [ob].[viewReportStaffingtoGLAccount] vw on fct.DepartmentalBudgetID = vw.DepartmentalBudgetID and fct.AccountID = vw.AccountID and fct.FiscalYearID = vw.FiscalYearID and fct.TimeClassID = vw.TimeClassID and fct.UnitTypeID = vw.UnitTypeID and fct.DataTypeID = vw.DataTypeID inner join [ob].[viewValidDataTypeTimeClassFiscalYearCombos] cmb on fct.TimeClassID=cmb.TimeClassID and fct.DataTypeID=cmb.DataTypeID and fct.FiscalYearID=cmb.FiscalYearID where 1=1 and (fct.DataTypeID = 4 or fct.TimeClassID = 12) group by fct.DepartmentalBudgetID, fct.AccountID, fct.FiscalYearID, fct.TimeClassID, fct.UnitTypeID having max(fct.Total) <> SUM(vw.Total) GO --------------------------------------------- -- ob.viewReportAccountWithStaffingDetail_Friendly CREATE VIEW [ob].[viewReportAccountWithStaffingDetail_Friendly] As SELECT md.DepartmentCode as [DepartmentCode] , md.Description as [DepartmentDescription] , md.Entity , md.EntityCode , md.DepartmentRollup1 , md.DepartmentRollup2 , md.DepartmentRollup3 , md.DepartmentRollup4 , md.DepartmentRollup5 , md.DepartmentRollup6 , a.AccountCode as [AccountCode] , a.Description as [AccountDescription] , a.GMAccountRollup1 as AccountRollup1 , a.GMAccountRollup2 as AccountRollup2 , a.GMAccountRollup3 as AccountRollup3 , a.GMAccountRollup4 as AccountRollup4 , a.GMAccountRollup5 as AccountRollup5 , a.GMAccountRollup6 as AccountRollup6 , a.[OBDollarsFinancialReportingLineName] as DollarsFinancialReportingLineName , a.[OBUnitsFinancialReportingLineName] as UnitsFinancialReportingLineName , jc.Name as [JobCode] , jcg.Name as [JobCodeGroup] , pcg.Name as [PayCodeGroup] , fy.Name as [FiscalYear] , tc.Name as [TimeClass] , ut.Name as [UnitType] , [Month01] , [Month02] , [Month03] , [Month04] , [Month05] , [Month06] , [Month07] , [Month08] , [Month09] , [Month10] , [Month11] , [Month12] , [YTD] , [Total] FROM [ob].[FactReportAccountWithStaffingDetail] r INNER JOIN [fw].[DimAccount] a on r.AccountID=a.AccountID INNER JOIN [ob].[DimDepartmentalBudget] d on r.DepartmentalBudgetID=d.DepartmentalBudgetID INNER JOIN [fw].[DimDepartment] md on d.DepartmentID=md.DepartmentID INNER JOIN [fw].[DimJobCode] jc on r.JobCodeID=jc.JobCodeID INNER JOIN [fw].[DimJobCodeGroup] jcg on jc.JobCodeGroupID=jcg.JobCodeGroupID INNER JOIN [fw].[DimPayCodeGroup] pcg on r.PayCodeGroupID=pcg.PayCodeGroupID INNER JOIN [fw].[DimUnitType] ut on r.UnitTypeID=ut.UnitTypeID INNER JOIN [fw].[DimTimeClass] tc on r.TimeClassID=tc.TimeClassID INNER JOIN [fw].[DimFiscalYear] fy on r.FiscalYearID=fy.FiscalYearID Where Total <> 0 GO --------------------------------------------- -- ob.viewReportCDMRatios /************************************************************ ** Author: BL ** Create Date: 2014-11-13 ** Description: Service Line to Department CDM Ratios for Reporting ** Last Modified: 2014-11-13 ** GM Release: 2015.2 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 *************************************************************/ Create view [ob].[viewReportCDMRatios] as select CDMRatio.FiscalYearID, B.DepartmentalBudgetID, CDMRatio.ModelingServiceLineID, CDMRatio.ChargeCodeID, ut.UnitTypeID, dt.DataTypeID, MSL.PatientClassID, CDMRatio.CurrentYear as [ProjectedRatio], CDMRatio.NextYear as [BudgetRatio], B.DepartmentalBudgetID as BudgID from [clientob].[FactServiceLinetoDepartmentCDM] CDMRatio inner join [ob].[DimDepartmentalBudget] B on B.DepartmentID = CDMRatio.DepartmentID inner join [fw].[DimDepartment] D on D.DepartmentID = B.DepartmentID inner join [ob].[DimOBServiceLinePlan] SLP on D.OBServiceLinePlanID=SLP.OBServiceLinePlanID inner join [dbo].[DBSetting] DBS on DBS.Name = 'OB_Current_Year' and CDMRatio.FiscalYearID=DBS.Setting inner join [fw].[DimModelingServiceLine] MSL on MSL.ModelingServiceLineID = CDMRatio.ModelingServiceLineID inner join [fw].[DimUnitType] ut on ut.GlobalID='Units' inner join fw.dimdatatype dt on dt.globalid='Input' where CDMRatio.IsDeleted = 0 and NOT (CDMRatio.CurrentYear=0 OR CDMRatio.NextYear=0) GO --------------------------------------------- -- ob.viewReportDepartmentBudgetModelToReconciliationTargetComparisionDetail create view [ob].[viewReportDepartmentBudgetModelToReconciliationTargetComparisionDetail] as /************************************************************ ** Author: akowalski ** Create Date: 2014-06-12 ** Description: Displays the department level detail for model to target comparisions ** Last Modified: 2014-06-12 ** GM Release: 2014.3 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** *************************************************************/ select db.entityid, f.DepartmentID, f.FinancialReportingID, f.TimeClassID, f.FiscalYearID, f.Month01, f.Month02, f.Month03, f.Month04, f.Month05, f.Month06, f.Month07, f.Month08, f.Month09, f.Month10, f.Month11, f.Month12, f.Total, 'Live' as [Type] from [ob].[viewFactReportingMonthlyTargetComparisionDetail] f inner join [ob].[DimDepartmentalBudget] db on f.DepartmentalBudgetID=db.DepartmentalBudgetID union all select db.entityid, f.DepartmentID, f.FinancialReportingID, f.TimeClassID, f.FiscalYearID, f.Month01, f.Month02, f.Month03, f.Month04, f.Month05, f.Month06, f.Month07, f.Month08, f.Month09, f.Month10, f.Month11, f.Month12, f.Total, 'Target' as [Type] from [clientob].[viewReportFinancialStatements] f inner join [ob].[DimDepartmentalBudget] db on f.DepartmentalBudgetID=db.DepartmentalBudgetID GO --------------------------------------------- -- ob.viewReportDepartmentalBudgetExceptionsSummary create view ob.viewReportDepartmentalBudgetExceptionsSummary as /************************************************************ ** Author: akowalski ** Create Date: 2014-04-30 ** Description: Summarized OB department budget exceptions for dashboard ** Last Modified: 2014-04-30 ** GM Release: 2014.3 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 2013-02-19 DK 56588 Adding update statistics command ** *************************************************************/ select e.OBExceptionsID, sum(case when e.Acknowledged=1 then 0 else 1 end) as [Open], sum(case when e.Acknowledged=1 then 1 else 0 end) as Acknowledged from [ob].[FactDepartmentBudgetExceptions] e group by e.OBExceptionsID GO --------------------------------------------- -- ob.viewReportExceptionsDepartmentBudgetExceededProductivityTargets /************************************************************ ** Author: jgerber ** Create Date: 2013-11-17 ** Description: Exception report to show which departments are over their productivity target ** Last Modified: 2014-10-07 ** GM Release: 2015.1 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 2014-10-07 JG Renaming and adding to the exception summary report ** *************************************************************/ create view ob.viewReportExceptionsDepartmentBudgetExceededProductivityTargets as select targ.DepartmentalBudgetID, targ.BudgetName as Model, 'Has '+cast(tot.Amount as Nvarchar(100))+' Hrs/UOS when the target is '+cast(targ.Amount as Nvarchar(100))+' Hrs/UOS for '+targ.TimeClassName+' '+targ.FiscalYearName as Detail from [clientob].[viewFactStaffingPCVar] targ inner join [clientob].[viewFactStaffingPCVar] tot on targ.DepartmentalBudgetID=tot.DepartmentalBudgetID and targ.TimeClassID=tot.TimeClassID and targ.UnitTypeID=tot.UnitTypeID and targ.FiscalYearID=tot.FiscalYearID where targ.AssumptionID=639 --Hours per UOS Target and tot.AssumptionID=640 --Hours per UOS and targ.Amount0 and not exists ( select 1 from [clientob].[FactGlobalStatisticsDeptMapping] dm inner join [ob].[DimOBGlobalStatistics] gsm on dm.OBGlobalStatisticID = gsm.OBGlobalStatisticID where 1=1 and db.DepartmentID = dm.DepartmentID and gsm.AccountID = gs.AccountID and dm.IsDeleted=0 ) GO --------------------------------------------- -- ob.viewReportGLDetail CREATE VIEW ob.viewReportGLDetail AS SELECT B.DepartmentalBudgetID, F.AccountID, F.ComponentID, F.ProjectID, F.FiscalMonthID, F.FiscalYearID, F.ClientCapitalID, F.ClientComponentID, F.ClientDate, F.Amount, F.ItemDescription, F.JournalNumber, F.JournalLineNumber, F.CustomText1, F.CustomText2, F.CustomText3, F.CustomText4, F.CustomText5, F.CustomDate1, F.CustomDate2, F.CustomNumeric1, F.CustomNumeric2, F.AccountID as AcctID, B.DepartmentalBudgetID as BudgID FROM [int].[FactGLDetail] F INNER JOIN [ob].[DimDepartmentalBudget] B ON B.DepartmentID = F.DepartmentID WHERE IsDeleted=0 GO --------------------------------------------- -- ob.viewReportGlobalStatisticsExceptionsSummary Create view ob.viewReportGlobalStatisticsExceptionsSummary as /************************************************************ ** Author: akowalski ** Create Date: 2015-01-09 ** Description: Summarized OB Global Stat exceptions for dashboard ** Last Modified: 2015-01-09 ** GM Release: 2015.2 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** *************************************************************/ select e.OBExceptionsID, sum(case when e.Acknowledged=1 then 0 else 1 end) as [Open], sum(case when e.Acknowledged=1 then 1 else 0 end) as Acknowledged from [ob].[FactGlobalStatisticExceptions] e group by e.OBExceptionsID GO --------------------------------------------- -- ob.viewReportPlanExpansion CREATE VIEW [ob].[viewReportPlanExpansion] AS select vp.PlanTypeName AS plantypename, vp.planguid, fi.*, sd.MemberName, sd.DimensionName from clientob.viewscorefillins AS fi LEFT OUTER JOIN dbo.viewPlans AS vp ON fi.ModelGUID = vp.planguid left join [data].[viewScoreDimensionMember] sd on sd.MemberGUID=fi.PlaceholderSectionMemberGUID where plantypeguid='05512126-3eb6-4da4-af6e-bc2bc2724b8b' GO --------------------------------------------- -- ob.viewReportReimbursementExceptionsSummary Create view ob.viewReportReimbursementExceptionsSummary as /************************************************************ ** Author: akowalski ** Create Date: 2015-01-09 ** Description: Summarized OB Reimbursement exceptions for dashboard ** Last Modified: 2015-01-09 ** GM Release: 2015.2 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** *************************************************************/ select e.OBExceptionsID, sum(case when e.Acknowledged=1 then 0 else 1 end) as [Open], sum(case when e.Acknowledged=1 then 1 else 0 end) as Acknowledged from [ob].[FactReimbursementExceptions] e group by e.OBExceptionsID GO --------------------------------------------- -- ob.viewReportSecurityDetail --insert into DataView values(NEWID(), 'OB Duplicate Fill-Ins', 'dataob.viewReportDupeFillIns', dbo.ZeroGUID(), 0, '', dbo.ZeroGUID(), '') CREATE view [ob].[viewReportSecurityDetail] as select S.* from fw.viewReportSecurityDetail S inner join UserRole UR on UR.Name = S.USERROLE where UR.Category = 'OB' GO --------------------------------------------- -- ob.viewReportServiceLineExceptionsSummary Create view ob.viewReportServiceLineExceptionsSummary as /************************************************************ ** Author: akowalski ** Create Date: 2015-01-09 ** Description: Summarized OB Service Line exceptions for dashboard ** Last Modified: 2015-01-09 ** GM Release: 2015.2 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** *************************************************************/ select e.OBExceptionsID, sum(case when e.Acknowledged=1 then 0 else 1 end) as [Open], sum(case when e.Acknowledged=1 then 1 else 0 end) as Acknowledged from [ob].[FactServiceLineExceptions] e group by e.OBExceptionsID GO --------------------------------------------- -- ob.viewReportStaffingSnapshotData /************************************************************ ** Author: Joel Gerber ** Create Date: 2014-03-21 ** Description: Reporting Staffing Data View for All OB Snapshot Reports ** Last Modified: 2014-03-21 ** GM Release: NA (Customization) ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** *************************************************************/ CREATE view [ob].[viewReportStaffingSnapshotData] as select data.DepartmentalBudgetID, EmployeeID, JobCodeID, PayCodeGroupID, PayCodeID, FiscalYearID, TimeClassID, UnitTypeID, DataTypeID, OBSnapshotID, Month01, Month02, Month03, Month04, Month05, Month06, Month07, Month08, Month09, Month10, Month11, Month12, data.MonthsLoaded, YTD, Yearly, Total from [ob].[FactStaffingPCSnapshot] data GO --------------------------------------------- -- ob.viewReportStaffingtoGLAccount CREATE view [ob].[viewReportStaffingtoGLAccount] as select * from ob.viewReportStaffingtoGLAccount_BothUnique GO --------------------------------------------- -- ob.viewReportStaffingtoGLAccount_BothOverride CREATE view [ob].[viewReportStaffingtoGLAccount_BothOverride] as select data.DepartmentalBudgetID, pax.AccountID, data.JobCodeID, data.PayCodeGroupID, data.FiscalYearID, data.TimeClassID, ut3.UnitTypeID, data.DataTypeID, data.Month01/whpm.Month01 as Month01, data.Month02/whpm.Month02 as Month02, data.Month03/whpm.Month03 as Month03, data.Month04/whpm.Month04 as Month04, data.Month05/whpm.Month05 as Month05, data.Month06/whpm.Month06 as Month06, data.Month07/whpm.Month07 as Month07, data.Month08/whpm.Month08 as Month08, data.Month09/whpm.Month09 as Month09, data.Month10/whpm.Month10 as Month10, data.Month11/whpm.Month11 as Month11, data.Month12/whpm.Month12 as Month12, data.YTD/(case when data.MonthsLoaded = 1 then whpm.Month01 when data.MonthsLoaded = 2 then whpm.Month01 + whpm.Month02 when data.MonthsLoaded = 3 then whpm.Month01 + whpm.Month02 + whpm.Month03 when data.MonthsLoaded = 4 then whpm.Month01 + whpm.Month02 + whpm.Month03 + whpm.Month04 when data.MonthsLoaded = 5 then whpm.Month01 + whpm.Month02 + whpm.Month03 + whpm.Month04 + whpm.Month05 when data.MonthsLoaded = 6 then whpm.Month01 + whpm.Month02 + whpm.Month03 + whpm.Month04 + whpm.Month05 + whpm.Month06 when data.MonthsLoaded = 7 then whpm.Month01 + whpm.Month02 + whpm.Month03 + whpm.Month04 + whpm.Month05 + whpm.Month06 + whpm.Month07 when data.MonthsLoaded = 8 then whpm.Month01 + whpm.Month02 + whpm.Month03 + whpm.Month04 + whpm.Month05 + whpm.Month06 + whpm.Month07 + whpm.Month08 when data.MonthsLoaded = 9 then whpm.Month01 + whpm.Month02 + whpm.Month03 + whpm.Month04 + whpm.Month05 + whpm.Month06 + whpm.Month07 + whpm.Month08 + whpm.Month09 when data.MonthsLoaded = 10 then whpm.Month01 + whpm.Month02 + whpm.Month03 + whpm.Month04 + whpm.Month05 + whpm.Month06 + whpm.Month07 + whpm.Month08 + whpm.Month09 + whpm.Month10 when data.MonthsLoaded = 11 then whpm.Month01 + whpm.Month02 + whpm.Month03 + whpm.Month04 + whpm.Month05 + whpm.Month06 + whpm.Month07 + whpm.Month08 + whpm.Month09 + whpm.Month10 + whpm.Month11 else whpm.MonthYearly end) as YTD, data.Total/whpm.MonthYearly as Total from [clientob].[FactStaffingPC] data with (readuncommitted) inner join [fw].[DimUnitType] ut1 with (readuncommitted) on ut1.UnitTypeID = data.UnitTypeID inner join [fw].[DimUnitType] ut2 with (readuncommitted) on ut2.Name = 'Hours' inner join [fw].[DimUnitType] ut3 with (readuncommitted) on ut3.Name = 'FTEs' inner join [clientob].[FactPayrollToAccountCrosswalk] pax with (readuncommitted) on data.PayCodeGroupID=pax.PayCodeGroupID and data.JobCodeID=pax.JobCodeID and ut2.UnitTypeID = pax.UnitTypeID inner join [client].[FactWorkingHoursPerMonth] whpm with (readuncommitted) on data.FiscalYearID=whpm.FiscalYearID inner join [fw].[DimPayCodeGroup] pcg with (readuncommitted) on pcg.PayCodeGroupID=data.PayCodeGroupID where ut1.Name in('Non-Productive Hours', 'Productive Hours') and pcg.ProductiveClassID in ('2', '3') -- Non-Productive, Productive union all select data.DepartmentalBudgetID, pax.AccountID, data.JobCodeID, data.PayCodeGroupID, data.FiscalYearID, data.TimeClassID, ut3.UnitTypeID, data.DataTypeID, data.Month01/whpm.Month01 as Month01, data.Month02/whpm.Month02 as Month02, data.Month03/whpm.Month03 as Month03, data.Month04/whpm.Month04 as Month04, data.Month05/whpm.Month05 as Month05, data.Month06/whpm.Month06 as Month06, data.Month07/whpm.Month07 as Month07, data.Month08/whpm.Month08 as Month08, data.Month09/whpm.Month09 as Month09, data.Month10/whpm.Month10 as Month10, data.Month11/whpm.Month11 as Month11, data.Month12/whpm.Month12 as Month12, data.YTD/(case when data.MonthsLoaded = 1 then whpm.Month01 when data.MonthsLoaded = 2 then whpm.Month01 + whpm.Month02 when data.MonthsLoaded = 3 then whpm.Month01 + whpm.Month02 + whpm.Month03 when data.MonthsLoaded = 4 then whpm.Month01 + whpm.Month02 + whpm.Month03 + whpm.Month04 when data.MonthsLoaded = 5 then whpm.Month01 + whpm.Month02 + whpm.Month03 + whpm.Month04 + whpm.Month05 when data.MonthsLoaded = 6 then whpm.Month01 + whpm.Month02 + whpm.Month03 + whpm.Month04 + whpm.Month05 + whpm.Month06 when data.MonthsLoaded = 7 then whpm.Month01 + whpm.Month02 + whpm.Month03 + whpm.Month04 + whpm.Month05 + whpm.Month06 + whpm.Month07 when data.MonthsLoaded = 8 then whpm.Month01 + whpm.Month02 + whpm.Month03 + whpm.Month04 + whpm.Month05 + whpm.Month06 + whpm.Month07 + whpm.Month08 when data.MonthsLoaded = 9 then whpm.Month01 + whpm.Month02 + whpm.Month03 + whpm.Month04 + whpm.Month05 + whpm.Month06 + whpm.Month07 + whpm.Month08 + whpm.Month09 when data.MonthsLoaded = 10 then whpm.Month01 + whpm.Month02 + whpm.Month03 + whpm.Month04 + whpm.Month05 + whpm.Month06 + whpm.Month07 + whpm.Month08 + whpm.Month09 + whpm.Month10 when data.MonthsLoaded = 11 then whpm.Month01 + whpm.Month02 + whpm.Month03 + whpm.Month04 + whpm.Month05 + whpm.Month06 + whpm.Month07 + whpm.Month08 + whpm.Month09 + whpm.Month10 + whpm.Month11 else whpm.MonthYearly end) as YTD, data.Total/whpm.MonthYearly as Total from [clientob].[FactStaffingPC] data with (readuncommitted) inner join [fw].[DimUnitType] ut1 with (readuncommitted) on ut1.UnitTypeID = data.UnitTypeID inner join [fw].[DimUnitType] ut2 with (readuncommitted) on ut2.Name = 'Hours' inner join [fw].[DimUnitType] ut3 with (readuncommitted) on ut3.Name = 'FTEs' inner join [clientob].[FactPayrollToAccountCrosswalk] pax with (readuncommitted) on data.PayCodeGroupID=pax.PayCodeGroupID and data.JobCodeID=0 and ut2.UnitTypeID = pax.UnitTypeID inner join [client].[FactWorkingHoursPerMonth] whpm with (readuncommitted) on data.FiscalYearID=whpm.FiscalYearID inner join [fw].[DimPayCodeGroup] pcg with (readuncommitted) on pcg.PayCodeGroupID=data.PayCodeGroupID where ut1.Name in('Non-Productive Hours', 'Productive Hours') and pcg.ProductiveClassID in ('2', '3') -- Non-Productive, Productive and not exists (select 1 from [clientob].[FactPayrollToAccountCrosswalk] pax2 with (readuncommitted) where data.PayCodeGroupID=pax2.PayCodeGroupID and data.JobCodeID=pax2.JobCodeID and ut2.UnitTypeID=pax2.UnitTypeID) union all select data.DepartmentalBudgetID, pax.AccountID, data.JobCodeID, data.PayCodeGroupID, data.FiscalYearID, data.TimeClassID, ut2.UnitTypeID, data.DataTypeID, data.Month01 as Month01, data.Month02 as Month02, data.Month03 as Month03, data.Month04 as Month04, data.Month05 as Month05, data.Month06 as Month06, data.Month07 as Month07, data.Month08 as Month08, data.Month09 as Month09, data.Month10 as Month10, data.Month11 as Month11, data.Month12 as Month12, data.YTD, data.Total from [clientob].[FactStaffingPC] data with (readuncommitted) inner join [fw].[DimUnitType] ut1 with (readuncommitted) on ut1.UnitTypeID = data.UnitTypeID inner join [fw].[DimUnitType] ut2 with (readuncommitted) on ut2.Name = 'Hours' inner join [clientob].[FactPayrollToAccountCrosswalk] pax with (readuncommitted) on data.PayCodeGroupID=pax.PayCodeGroupID and data.JobCodeID=pax.JobCodeID and ut2.UnitTypeID = pax.UnitTypeID inner join [fw].[DimPayCodeGroup] pcg with (readuncommitted) on pcg.PayCodeGroupID=data.PayCodeGroupID where ut1.Name in('Non-Productive Hours', 'Productive Hours') and pcg.ProductiveClassID in ('2', '3') -- Non-Productive, Productive union all select data.DepartmentalBudgetID, pax.AccountID, data.JobCodeID, data.PayCodeGroupID, data.FiscalYearID, data.TimeClassID, ut2.UnitTypeID, data.DataTypeID, data.Month01 as Month01, data.Month02 as Month02, data.Month03 as Month03, data.Month04 as Month04, data.Month05 as Month05, data.Month06 as Month06, data.Month07 as Month07, data.Month08 as Month08, data.Month09 as Month09, data.Month10 as Month10, data.Month11 as Month11, data.Month12 as Month12, data.YTD, data.Total from [clientob].[FactStaffingPC] data with (readuncommitted) inner join [fw].[DimUnitType] ut1 with (readuncommitted) on ut1.UnitTypeID = data.UnitTypeID inner join [fw].[DimUnitType] ut2 with (readuncommitted) on ut2.Name = 'Hours' inner join [clientob].[FactPayrollToAccountCrosswalk] pax with (readuncommitted) on data.PayCodeGroupID=pax.PayCodeGroupID and data.JobCodeID=0 and ut2.UnitTypeID = pax.UnitTypeID inner join [fw].[DimPayCodeGroup] pcg with (readuncommitted) on pcg.PayCodeGroupID=data.PayCodeGroupID where ut1.Name in('Non-Productive Hours', 'Productive Hours') and pcg.ProductiveClassID in ('2', '3') -- Non-Productive, Productive and not exists (select 1 from [clientob].[FactPayrollToAccountCrosswalk] pax2 with (readuncommitted) where data.PayCodeGroupID=pax2.PayCodeGroupID and data.JobCodeID=pax2.JobCodeID and ut2.UnitTypeID=pax2.UnitTypeID) union all select data.DepartmentalBudgetID, pax.AccountID, data.JobCodeID, data.PayCodeGroupID, data.FiscalYearID, data.TimeClassID, data.UnitTypeID, data.DataTypeID, data.Month01 as Month01, data.Month02 as Month02, data.Month03 as Month03, data.Month04 as Month04, data.Month05 as Month05, data.Month06 as Month06, data.Month07 as Month07, data.Month08 as Month08, data.Month09 as Month09, data.Month10 as Month10, data.Month11 as Month11, data.Month12 as Month12, data.YTD, data.Total from [clientob].[FactStaffingPC] data with (readuncommitted) inner join [clientob].[FactPayrollToAccountCrosswalk] pax with (readuncommitted) on data.PayCodeGroupID=pax.PayCodeGroupID and data.JobCodeID=pax.JobCodeID and data.UnitTypeID = pax.UnitTypeID inner join [fw].[DimUnitType] ut1 with (readuncommitted) on pax.UnitTypeID = ut1.UnitTypeID where ut1.Name = 'Dollars' union all select data.DepartmentalBudgetID, pax.AccountID, data.JobCodeID, data.PayCodeGroupID, data.FiscalYearID, data.TimeClassID, data.UnitTypeID, data.DataTypeID, data.Month01 as Month01, data.Month02 as Month02, data.Month03 as Month03, data.Month04 as Month04, data.Month05 as Month05, data.Month06 as Month06, data.Month07 as Month07, data.Month08 as Month08, data.Month09 as Month09, data.Month10 as Month10, data.Month11 as Month11, data.Month12 as Month12, data.YTD, data.Total from [clientob].[FactStaffingPC] data with (readuncommitted) inner join [clientob].[FactPayrollToAccountCrosswalk] pax with (readuncommitted) on data.PayCodeGroupID=pax.PayCodeGroupID and data.JobCodeID=0 and data.UnitTypeID = pax.UnitTypeID inner join [fw].[DimUnitType] ut1 with (readuncommitted) on pax.UnitTypeID = ut1.UnitTypeID where ut1.Name = 'Dollars' and not exists (select 1 from [clientob].[FactPayrollToAccountCrosswalk] pax2 with (readuncommitted) where data.PayCodeGroupID=pax2.PayCodeGroupID and data.JobCodeID=pax2.JobCodeID and data.UnitTypeID=pax2.UnitTypeID) GO --------------------------------------------- -- ob.viewReportStaffingtoGLAccount_BothUnique CREATE view [ob].[viewReportStaffingtoGLAccount_BothUnique] as select data.DepartmentalBudgetID, pax.AccountID, data.JobCodeID, data.PayCodeGroupID, data.FiscalYearID, data.TimeClassID, ut3.UnitTypeID, data.DataTypeID, data.Month01/whpm.Month01 as Month01, data.Month02/whpm.Month02 as Month02, data.Month03/whpm.Month03 as Month03, data.Month04/whpm.Month04 as Month04, data.Month05/whpm.Month05 as Month05, data.Month06/whpm.Month06 as Month06, data.Month07/whpm.Month07 as Month07, data.Month08/whpm.Month08 as Month08, data.Month09/whpm.Month09 as Month09, data.Month10/whpm.Month10 as Month10, data.Month11/whpm.Month11 as Month11, data.Month12/whpm.Month12 as Month12, data.YTD/(case when data.MonthsLoaded = 1 then whpm.Month01 when data.MonthsLoaded = 2 then whpm.Month01 + whpm.Month02 when data.MonthsLoaded = 3 then whpm.Month01 + whpm.Month02 + whpm.Month03 when data.MonthsLoaded = 4 then whpm.Month01 + whpm.Month02 + whpm.Month03 + whpm.Month04 when data.MonthsLoaded = 5 then whpm.Month01 + whpm.Month02 + whpm.Month03 + whpm.Month04 + whpm.Month05 when data.MonthsLoaded = 6 then whpm.Month01 + whpm.Month02 + whpm.Month03 + whpm.Month04 + whpm.Month05 + whpm.Month06 when data.MonthsLoaded = 7 then whpm.Month01 + whpm.Month02 + whpm.Month03 + whpm.Month04 + whpm.Month05 + whpm.Month06 + whpm.Month07 when data.MonthsLoaded = 8 then whpm.Month01 + whpm.Month02 + whpm.Month03 + whpm.Month04 + whpm.Month05 + whpm.Month06 + whpm.Month07 + whpm.Month08 when data.MonthsLoaded = 9 then whpm.Month01 + whpm.Month02 + whpm.Month03 + whpm.Month04 + whpm.Month05 + whpm.Month06 + whpm.Month07 + whpm.Month08 + whpm.Month09 when data.MonthsLoaded = 10 then whpm.Month01 + whpm.Month02 + whpm.Month03 + whpm.Month04 + whpm.Month05 + whpm.Month06 + whpm.Month07 + whpm.Month08 + whpm.Month09 + whpm.Month10 when data.MonthsLoaded = 11 then whpm.Month01 + whpm.Month02 + whpm.Month03 + whpm.Month04 + whpm.Month05 + whpm.Month06 + whpm.Month07 + whpm.Month08 + whpm.Month09 + whpm.Month10 + whpm.Month11 else whpm.MonthYearly end) as YTD, data.Total/whpm.MonthYearly as Total from [clientob].[FactStaffingPC] data with (readuncommitted) inner join [fw].[DimUnitType] ut1 with (readuncommitted) on ut1.UnitTypeID = data.UnitTypeID inner join [fw].[DimUnitType] ut2 with (readuncommitted) on ut2.Name = 'Hours' inner join [fw].[DimUnitType] ut3 with (readuncommitted) on ut3.Name = 'FTEs' inner join [clientob].[FactPayrollToAccountCrosswalk] pax with (readuncommitted) on data.PayCodeGroupID=pax.PayCodeGroupID and data.JobCodeID=pax.JobCodeID and ut2.UnitTypeID = pax.UnitTypeID inner join [client].[FactWorkingHoursPerMonth] whpm with (readuncommitted) on data.FiscalYearID=whpm.FiscalYearID inner join [fw].[DimPayCodeGroup] pcg with (readuncommitted) on pcg.PayCodeGroupID=data.PayCodeGroupID where ut1.Name in('Non-Productive Hours', 'Productive Hours') and pcg.ProductiveClassID in ('2', '3') -- Non-Productive, Productive union all select data.DepartmentalBudgetID, pax.AccountID, data.JobCodeID, data.PayCodeGroupID, data.FiscalYearID, data.TimeClassID, ut2.UnitTypeID, data.DataTypeID, data.Month01 as Month01, data.Month02 as Month02, data.Month03 as Month03, data.Month04 as Month04, data.Month05 as Month05, data.Month06 as Month06, data.Month07 as Month07, data.Month08 as Month08, data.Month09 as Month09, data.Month10 as Month10, data.Month11 as Month11, data.Month12 as Month12, data.YTD, data.Total from [clientob].[FactStaffingPC] data with (readuncommitted) inner join [fw].[DimUnitType] ut1 with (readuncommitted) on ut1.UnitTypeID = data.UnitTypeID inner join [fw].[DimUnitType] ut2 with (readuncommitted) on ut2.Name = 'Hours' inner join [clientob].[FactPayrollToAccountCrosswalk] pax with (readuncommitted) on data.PayCodeGroupID=pax.PayCodeGroupID and data.JobCodeID=pax.JobCodeID and ut2.UnitTypeID = pax.UnitTypeID inner join [fw].[DimPayCodeGroup] pcg with (readuncommitted) on pcg.PayCodeGroupID=data.PayCodeGroupID where ut1.Name in('Non-Productive Hours', 'Productive Hours') and pcg.ProductiveClassID in ('2', '3') -- Non-Productive, Productive union all select data.DepartmentalBudgetID, pax.AccountID, data.JobCodeID, data.PayCodeGroupID, data.FiscalYearID, data.TimeClassID, data.UnitTypeID, data.DataTypeID, data.Month01 as Month01, data.Month02 as Month02, data.Month03 as Month03, data.Month04 as Month04, data.Month05 as Month05, data.Month06 as Month06, data.Month07 as Month07, data.Month08 as Month08, data.Month09 as Month09, data.Month10 as Month10, data.Month11 as Month11, data.Month12 as Month12, data.YTD, data.Total from [clientob].[FactStaffingPC] data with (readuncommitted) inner join [clientob].[FactPayrollToAccountCrosswalk] pax with (readuncommitted) on data.PayCodeGroupID=pax.PayCodeGroupID and data.JobCodeID=pax.JobCodeID and data.UnitTypeID = pax.UnitTypeID inner join [fw].[DimUnitType] ut1 with (readuncommitted) on pax.UnitTypeID = ut1.UnitTypeID where ut1.Name = 'Dollars' GO --------------------------------------------- -- ob.viewReportStaffingtoGLAccount_EachJobCode CREATE view [ob].[viewReportStaffingtoGLAccount_EachJobCode] as select data.DepartmentalBudgetID, pax.AccountID, data.JobCodeID, data.PayCodeGroupID, data.FiscalYearID, data.TimeClassID, ut3.UnitTypeID, data.DataTypeID, data.Month01/whpm.Month01 as Month01, data.Month02/whpm.Month02 as Month02, data.Month03/whpm.Month03 as Month03, data.Month04/whpm.Month04 as Month04, data.Month05/whpm.Month05 as Month05, data.Month06/whpm.Month06 as Month06, data.Month07/whpm.Month07 as Month07, data.Month08/whpm.Month08 as Month08, data.Month09/whpm.Month09 as Month09, data.Month10/whpm.Month10 as Month10, data.Month11/whpm.Month11 as Month11, data.Month12/whpm.Month12 as Month12, data.YTD/(case when data.MonthsLoaded = 1 then whpm.Month01 when data.MonthsLoaded = 2 then whpm.Month01 + whpm.Month02 when data.MonthsLoaded = 3 then whpm.Month01 + whpm.Month02 + whpm.Month03 when data.MonthsLoaded = 4 then whpm.Month01 + whpm.Month02 + whpm.Month03 + whpm.Month04 when data.MonthsLoaded = 5 then whpm.Month01 + whpm.Month02 + whpm.Month03 + whpm.Month04 + whpm.Month05 when data.MonthsLoaded = 6 then whpm.Month01 + whpm.Month02 + whpm.Month03 + whpm.Month04 + whpm.Month05 + whpm.Month06 when data.MonthsLoaded = 7 then whpm.Month01 + whpm.Month02 + whpm.Month03 + whpm.Month04 + whpm.Month05 + whpm.Month06 + whpm.Month07 when data.MonthsLoaded = 8 then whpm.Month01 + whpm.Month02 + whpm.Month03 + whpm.Month04 + whpm.Month05 + whpm.Month06 + whpm.Month07 + whpm.Month08 when data.MonthsLoaded = 9 then whpm.Month01 + whpm.Month02 + whpm.Month03 + whpm.Month04 + whpm.Month05 + whpm.Month06 + whpm.Month07 + whpm.Month08 + whpm.Month09 when data.MonthsLoaded = 10 then whpm.Month01 + whpm.Month02 + whpm.Month03 + whpm.Month04 + whpm.Month05 + whpm.Month06 + whpm.Month07 + whpm.Month08 + whpm.Month09 + whpm.Month10 when data.MonthsLoaded = 11 then whpm.Month01 + whpm.Month02 + whpm.Month03 + whpm.Month04 + whpm.Month05 + whpm.Month06 + whpm.Month07 + whpm.Month08 + whpm.Month09 + whpm.Month10 + whpm.Month11 else whpm.MonthYearly end) as YTD, data.Total/whpm.MonthYearly as Total from [clientob].[FactStaffingPC] data with (readuncommitted) inner join [fw].[DimUnitType] ut1 with (readuncommitted) on ut1.UnitTypeID = data.UnitTypeID inner join [fw].[DimUnitType] ut2 with (readuncommitted) on ut2.Name = 'Hours' inner join [fw].[DimUnitType] ut3 with (readuncommitted) on ut3.Name = 'FTEs' inner join [fw].[DimJobCode] djc with (readuncommitted) on data.JobCodeID = djc.JobCodeID inner join [ob].[DimDepartmentalBudget] ddb with (readuncommitted) on data.DepartmentalBudgetID = ddb.DepartmentalBudgetID inner join [clientob].[FactPayrollToAccountCrosswalk] pax with (readuncommitted) on data.JobCodeID=pax.JobCodeID and ut2.UnitTypeID = pax.UnitTypeID inner join [client].[FactWorkingHoursPerMonth] whpm with (readuncommitted) on data.FiscalYearID = whpm.FiscalYearID and case when djc.WorkWeekOverrideID = -1 and ddb.EntityDefaultWorkWeekID = whpm.WorkWeekID then 1 when djc.WorkWeekOverrideID != -1 and djc.WorkWeekOverrideID = whpm.WorkWeekID then 1 else 0 end = 1 inner join [fw].[DimPayCodeGroup] pcg with (readuncommitted) on pcg.PayCodeGroupID = data.PayCodeGroupID where ut1.Name in('Non-Productive Hours', 'Productive Hours') and pcg.ProductiveClassID in ('2', '3') -- Non-Productive, Productive union all select data.DepartmentalBudgetID, pax.AccountID, data.JobCodeID, data.PayCodeGroupID, data.FiscalYearID, data.TimeClassID, ut2.UnitTypeID, data.DataTypeID, data.Month01 as Month01, data.Month02 as Month02, data.Month03 as Month03, data.Month04 as Month04, data.Month05 as Month05, data.Month06 as Month06, data.Month07 as Month07, data.Month08 as Month08, data.Month09 as Month09, data.Month10 as Month10, data.Month11 as Month11, data.Month12 as Month12, data.YTD, data.Total from [clientob].[FactStaffingPC] data with (readuncommitted) inner join [fw].[DimUnitType] ut1 with (readuncommitted) on ut1.UnitTypeID = data.UnitTypeID inner join [fw].[DimUnitType] ut2 with (readuncommitted) on ut2.Name = 'Hours' inner join [clientob].[FactPayrollToAccountCrosswalk] pax with (readuncommitted) on data.JobCodeID=pax.JobCodeID and ut2.UnitTypeID = pax.UnitTypeID inner join [fw].[DimPayCodeGroup] pcg with (readuncommitted) on pcg.PayCodeGroupID=data.PayCodeGroupID where ut1.Name in('Non-Productive Hours', 'Productive Hours') and pcg.ProductiveClassID in ('2', '3') -- Non-Productive, Productive union all select data.DepartmentalBudgetID, pax.AccountID, data.JobCodeID, data.PayCodeGroupID, data.FiscalYearID, data.TimeClassID, data.UnitTypeID, data.DataTypeID, data.Month01 as Month01, data.Month02 as Month02, data.Month03 as Month03, data.Month04 as Month04, data.Month05 as Month05, data.Month06 as Month06, data.Month07 as Month07, data.Month08 as Month08, data.Month09 as Month09, data.Month10 as Month10, data.Month11 as Month11, data.Month12 as Month12, data.YTD, data.Total from [clientob].[FactStaffingPC] data with (readuncommitted) inner join [clientob].[FactPayrollToAccountCrosswalk] pax with (readuncommitted) on data.JobCodeID=pax.JobCodeID and data.UnitTypeID = pax.UnitTypeID inner join [fw].[DimUnitType] ut1 with (readuncommitted) on pax.UnitTypeID = ut1.UnitTypeID where ut1.Name = 'Dollars' GO --------------------------------------------- -- ob.viewReportStaffingtoGLAccount_EachPayCodeGroup CREATE view [ob].[viewReportStaffingtoGLAccount_EachPayCodeGroup] as select data.DepartmentalBudgetID, pax.AccountID, data.JobCodeID, data.PayCodeGroupID, data.FiscalYearID, data.TimeClassID, ut3.UnitTypeID, data.DataTypeID, data.Month01/whpm.Month01 as Month01, data.Month02/whpm.Month02 as Month02, data.Month03/whpm.Month03 as Month03, data.Month04/whpm.Month04 as Month04, data.Month05/whpm.Month05 as Month05, data.Month06/whpm.Month06 as Month06, data.Month07/whpm.Month07 as Month07, data.Month08/whpm.Month08 as Month08, data.Month09/whpm.Month09 as Month09, data.Month10/whpm.Month10 as Month10, data.Month11/whpm.Month11 as Month11, data.Month12/whpm.Month12 as Month12, data.YTD/(case when data.MonthsLoaded = 1 then whpm.Month01 when data.MonthsLoaded = 2 then whpm.Month01 + whpm.Month02 when data.MonthsLoaded = 3 then whpm.Month01 + whpm.Month02 + whpm.Month03 when data.MonthsLoaded = 4 then whpm.Month01 + whpm.Month02 + whpm.Month03 + whpm.Month04 when data.MonthsLoaded = 5 then whpm.Month01 + whpm.Month02 + whpm.Month03 + whpm.Month04 + whpm.Month05 when data.MonthsLoaded = 6 then whpm.Month01 + whpm.Month02 + whpm.Month03 + whpm.Month04 + whpm.Month05 + whpm.Month06 when data.MonthsLoaded = 7 then whpm.Month01 + whpm.Month02 + whpm.Month03 + whpm.Month04 + whpm.Month05 + whpm.Month06 + whpm.Month07 when data.MonthsLoaded = 8 then whpm.Month01 + whpm.Month02 + whpm.Month03 + whpm.Month04 + whpm.Month05 + whpm.Month06 + whpm.Month07 + whpm.Month08 when data.MonthsLoaded = 9 then whpm.Month01 + whpm.Month02 + whpm.Month03 + whpm.Month04 + whpm.Month05 + whpm.Month06 + whpm.Month07 + whpm.Month08 + whpm.Month09 when data.MonthsLoaded = 10 then whpm.Month01 + whpm.Month02 + whpm.Month03 + whpm.Month04 + whpm.Month05 + whpm.Month06 + whpm.Month07 + whpm.Month08 + whpm.Month09 + whpm.Month10 when data.MonthsLoaded = 11 then whpm.Month01 + whpm.Month02 + whpm.Month03 + whpm.Month04 + whpm.Month05 + whpm.Month06 + whpm.Month07 + whpm.Month08 + whpm.Month09 + whpm.Month10 + whpm.Month11 else whpm.MonthYearly end) as YTD, data.Total/whpm.MonthYearly as Total from [clientob].[FactStaffingPC] data with (readuncommitted) inner join [fw].[DimUnitType] ut1 with (readuncommitted) on ut1.UnitTypeID = data.UnitTypeID inner join [fw].[DimUnitType] ut2 with (readuncommitted) on ut2.Name = 'Hours' inner join [fw].[DimUnitType] ut3 with (readuncommitted) on ut3.Name = 'FTEs' inner join [clientob].[FactPayrollToAccountCrosswalk] pax with (readuncommitted) on data.PayCodeGroupID=pax.PayCodeGroupID and ut2.UnitTypeID = pax.UnitTypeID inner join [client].[FactWorkingHoursPerMonth] whpm with (readuncommitted) on data.FiscalYearID=whpm.FiscalYearID inner join [fw].[DimPayCodeGroup] pcg with (readuncommitted) on pcg.PayCodeGroupID=data.PayCodeGroupID where ut1.Name in('Non-Productive Hours', 'Productive Hours') and pcg.ProductiveClassID in ('2', '3') -- Non-Productive, Productive union all select data.DepartmentalBudgetID, pax.AccountID, data.JobCodeID, data.PayCodeGroupID, data.FiscalYearID, data.TimeClassID, ut2.UnitTypeID, data.DataTypeID, data.Month01 as Month01, data.Month02 as Month02, data.Month03 as Month03, data.Month04 as Month04, data.Month05 as Month05, data.Month06 as Month06, data.Month07 as Month07, data.Month08 as Month08, data.Month09 as Month09, data.Month10 as Month10, data.Month11 as Month11, data.Month12 as Month12, data.YTD, data.Total from [clientob].[FactStaffingPC] data with (readuncommitted) inner join [fw].[DimUnitType] ut1 with (readuncommitted) on ut1.UnitTypeID = data.UnitTypeID inner join [fw].[DimUnitType] ut2 with (readuncommitted) on ut2.Name = 'Hours' inner join [clientob].[FactPayrollToAccountCrosswalk] pax with (readuncommitted) on data.PayCodeGroupID=pax.PayCodeGroupID and ut2.UnitTypeID = pax.UnitTypeID inner join [fw].[DimPayCodeGroup] pcg with (readuncommitted) on pcg.PayCodeGroupID=data.PayCodeGroupID where ut1.Name in('Non-Productive Hours', 'Productive Hours') and pcg.ProductiveClassID in ('2', '3') -- Non-Productive, Productive union all select data.DepartmentalBudgetID, pax.AccountID, data.JobCodeID, data.PayCodeGroupID, data.FiscalYearID, data.TimeClassID, data.UnitTypeID, data.DataTypeID, data.Month01 as Month01, data.Month02 as Month02, data.Month03 as Month03, data.Month04 as Month04, data.Month05 as Month05, data.Month06 as Month06, data.Month07 as Month07, data.Month08 as Month08, data.Month09 as Month09, data.Month10 as Month10, data.Month11 as Month11, data.Month12 as Month12, data.YTD, data.Total from [clientob].[FactStaffingPC] data with (readuncommitted) inner join [clientob].[FactPayrollToAccountCrosswalk] pax with (readuncommitted) on data.PayCodeGroupID=pax.PayCodeGroupID and data.UnitTypeID = pax.UnitTypeID inner join [fw].[DimUnitType] ut1 with (readuncommitted) on pax.UnitTypeID = ut1.UnitTypeID where ut1.Name = 'Dollars' GO --------------------------------------------- -- ob.viewSamplingOBServiceLineRevenueFromFactFinancialServiceLineRevenue /************************************************************ ** Author: Bart Lewis ** Create Date: 4/22/2015 ** Description: Budget Service Line Revenue Sampling View From Import Tables ** Last Modified: 4/22/2015 ** GM Release: 2015.3 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** ** *************************************************************/ Create View [ob].[viewSamplingOBServiceLineRevenueFromFactFinancialServiceLineRevenue] As select [DataTypeID] , [FiscalYearID] , [FiscalMonthID] , [ModelingServiceLineID] , [PayorID] , [PayorGroupID] , [OBForecastDetailID] , [OBServiceLinePlanID] , [TimeClassID] , [UnitTypeID] , [HistoryItemGUID] , [TransactionID] , ISNULL(Month01, 0) [Month01] , ISNULL(Month02, 0) [Month02] , ISNULL(Month03, 0) [Month03] , ISNULL(Month04, 0) [Month04] , ISNULL(Month05, 0) [Month05] , ISNULL(Month06, 0) [Month06] , ISNULL(Month07, 0) [Month07] , ISNULL(Month08, 0) [Month08] , ISNULL(Month09, 0) [Month09] , ISNULL(Month10, 0) [Month10] , ISNULL(Month11, 0) [Month11] , ISNULL(Month12, 0) [Month12] , ISNULL(Month00, 0) [Yearly] , (ISNULL(Month01, 0) +ISNULL(Month02, 0) +ISNULL(Month03, 0) +ISNULL(Month04, 0) +ISNULL(Month05, 0) +ISNULL(Month06, 0) +ISNULL(Month07, 0) +ISNULL(Month08, 0) +ISNULL(Month09, 0) +ISNULL(Month10, 0) +ISNULL(Month11, 0) +ISNULL(Month12, 0) +ISNULL(Month00, 0)) as [Total] from ( SELECT 4 [DataTypeID] , c.[FiscalYearID] , c.[FiscalMonthID] , m.[ModelingServiceLineID] , p.[PayorID] , pg.[PayorGroupID] , ob.[OBForecastDetailID] , slp.[OBServiceLinePlanID] , c.[TimeClassID] , ob.[UnitTypeID] , c.[Value] as [Amount] , fm.[MonthColumnName] , c.[HistoryItemGUID] , c.[TransactionID] FROM [int].[FactFinancialServiceLineRevenue] c inner join [fw].[DimModelingServiceLine] m on c.ServiceLineID=m.ServiceLineID and c.AgeCohortID=m.AgeCohortID and c.MedicalSurgicalID=m.MedicalSurgicalID and c.PatientClassID=m.PatientClassID inner join [fw].[DimForecastDetail] fd on c.ForecastDetailID=fd.ForecastDetailID inner join [ob].[DimOBForecastDetail] ob on ob.OBForecastDetailID=fd.OBForecastDetailID inner join [fw].[DimPayor] p on p.PayorID=c.PayorID inner join [fw].[DimPayorGroup] pg on c.PayorGroupID=pg.PayorGroupID inner join [fw].[DimEntity] e on c.EntityID=e.EntityID inner join [ob].[DimOBServiceLinePlan] slp on e.EntityID=slp.EntityID and slp.IsDeleted=0 inner join [fw].[DimFiscalMonth] fm on c.FiscalMonthID=fm.FiscalMonthID ) as data PIVOT ( SUM(Amount) for MonthColumnName in ([Month01],[Month02],[Month03],[Month04],[Month05],[Month06],[Month07],[Month08],[Month09],[Month10],[Month11],[Month12],[Month00]) ) as pvt GO --------------------------------------------- -- ob.viewSystemCenterAccess create view [ob].[viewSystemCenterAccess] as select s.SectionGUID, s.Name as SectionName, c.CategoryGUID, c.Name as CategoryName, m.ModuleGUID, m.Name as ModuleName, ISNULL(p.ReadValue, 0) ReadValue, ISNULL(p.WriteValue, 0) WriteValue, ISNULL(p.PermissionGUID, '00000000-0000-0000-0000-000000000000') PermissionGUID from SystemCenterSection s inner join SystemCenterCategory c on s.CategoryGUID = c.CategoryGUID inner join SystemCenterModule m on c.ModuleGUID = m.ModuleGUID left join S3SimplePermission p on s.SectionGUID = p.LootID and p.IdentityGUID = (select UserGroupGUID from UserGroup where Name = 'ob - local administrator') where m.Name in('General', 'Operating Budgeting') and s.Name in('Detailed Adjustment Import', 'Budget Import', 'Role Assignments', 'Manage Global Assumptions', 'Budget-Level Assumptions', 'System-Generated Statistics') and c.IsMaintenanceMode = 1 GO --------------------------------------------- -- ob.viewSystemSetting create view ob.viewSystemSetting as select * from ob.SystemSetting where Name not like 'AP%' and Name not like '%ABB%' and Name not like '%APE%' and Description not like '%APE%' GO --------------------------------------------- -- ob.viewValidDataTypeTimeClassFiscalYearCombos CREATE view [ob].[viewValidDataTypeTimeClassFiscalYearCombos] as select DataTypeID = dt.DataTypeID, FiscalYearID = fy.FiscalYearID, TimeClassID = tc.TimeClassID, IsCY = case fy.FiscalYearID when dbs.Setting then 1 else 0 end from [dbo].[DBSetting] dbs with (readuncommitted) cross join [fw].[DimDataType] dt with (readuncommitted) cross join [fw].[DimFiscalYear] fy with (readuncommitted) cross join [fw].[DimTimeClass] tc with (readuncommitted) where 1=1 and dbs.Name = 'OB_Current_Year' and ( (dt.DataTypeID = 4 and fy.FiscalYearID = dbs.Setting-1 and tc.TimeClassID = 1) --PY Actual or (dt.DataTypeID = 4 and fy.FiscalYearID = dbs.Setting and tc.TimeClassID = 1) --CY Actual or (dt.DataTypeID = 4 and fy.FiscalYearID = dbs.Setting and tc.TimeClassID = 2) --CY Budget or (dt.DataTypeID = 3 and fy.FiscalYearID = dbs.Setting and tc.TimeClassID = 12) --CY Projection or (dt.DataTypeID = 3 and fy.FiscalYearID = dbs.Setting+1 and tc.TimeClassID = 18) --BY Baseline or (dt.DataTypeID = 3 and fy.FiscalYearID = dbs.Setting+1 and tc.TimeClassID = 2) --BY Budget ) GO --------------------------------------------- --------------------------------------------- -- PROCEDURES --------------------------------------------- -- ob.procAllocationSampleAll create proc [ob].[procAllocationSampleAll] @isDebugOnly bit = 0 as /********************************************************************************** ** Author: Corey Becker (Donatello) ** Create Date: 2016-02-11 ** Description: Loops through allocation sampling by execution order ** Last Modified: 2016-02-11 ** GM Release: 2016.2 ********************************************************************************** ** Change History ********************************************************************************** ** CID Date Author WI Description ** **********************************************************************************/ ------------------------------------------------------------------------------------------------ ------------------------------- Variable declarations ------------------------------------------ ------------------------------------------------------------------------------------------------ declare @sql as nvarchar(max) = '' ------------------------------------------------------------------------------------------------ ----------------- Delete all existing allocation data for affected departments ----------------- ------------------------------------------------------------------------------------------------ if @isDebugOnly=1 begin set @sql = 'Proc will delete all existing allocation data for affected departments. Preview using this select statement: select fct.* from [clientob].[FactAccount] fct inner join [data].[ScoreFillin_Account] sf on fct.AccountID=sf.AccountID inner join [ob].[DimAccountPH] ph on sf.AccountPHID=ph.AccountPHID inner join [ob].[viewAllocationValues] av on fct.DepartmentalBudgetID=av.DepartmentalBudgetTargetID where 1=1 and ph.Name like ''%Allocated'' and fct.TimeClassID=2 and fct.FiscalYearID=(select Setting+1 from [dbo].[DBSetting] where Name=''OB_Current_Year'') ' print(@sql) end else begin delete fct from [clientob].[FactAccount] fct inner join [data].[ScoreFillin_Account] sf on fct.AccountID=sf.AccountID inner join [ob].[DimAccountPH] ph on sf.AccountPHID=ph.AccountPHID inner join [ob].[viewAllocationValues] av on fct.DepartmentalBudgetID=av.DepartmentalBudgetTargetID where 1=1 and ph.Name like '%Allocated' and fct.TimeClassID=2 and fct.FiscalYearID=(select Setting+1 from [dbo].[DBSetting] where Name='OB_Current_Year') end ------------------------------------------------------------------------------------------------ ------------------- xxx --------------------- ------------------------------------------------------------------------------------------------ declare @currentExecOrder smallint if @isDebugOnly=1 begin print ('Procedure will then run the following: ') declare allocationCursor CURSOR FAST_FORWARD FOR select distinct dm.ExecutionOrder from [ob].[viewDimOBAllocation] dm where OBAllocationID<>0 open allocationCursor; FETCH NEXT FROM allocationCursor into @currentExecOrder WHILE (@@FETCH_STATUS = 0) BEGIN set @sql = 'exec [clientob].[procAllocationSample] @execOrder = '+cast(@currentExecOrder as nvarchar(8)) print(@sql) FETCH NEXT FROM allocationCursor into @currentExecOrder END close allocationCursor; deallocate allocationCursor; end else begin declare allocationCursor CURSOR FAST_FORWARD FOR select distinct dm.ExecutionOrder from [ob].[viewDimOBAllocation] dm where OBAllocationID<>0 open allocationCursor; FETCH NEXT FROM allocationCursor into @currentExecOrder WHILE (@@FETCH_STATUS = 0) BEGIN set @sql = 'exec [clientob].[procAllocationSample] @execOrder = '+cast(@currentExecOrder as nvarchar(8)) exec(@sql) FETCH NEXT FROM allocationCursor into @currentExecOrder END close allocationCursor; deallocate allocationCursor; end ------------------------------------------------------------------------------------------------ ----------------------------------- Invalidate model cache ------------------------------------- ------------------------------------------------------------------------------------------------ if @isDebugOnly=1 begin print('Then model caches are invalidated, if present') end else begin if exists ( select 1 from [dbo].[XPlan] where 1=1 and PlanTypeGUID='05512126-3EB6-4DA4-AF6E-BC2BC2724B8B' and ModelTemplateGUID<>'00000000-0000-0000-0000-000000000000' and IsDeletedPlan=0 and IsModelWorkbookCached=1 ) begin exec [dbo].[procInvalidateModelWorkbookCacheByPlanType] @planTypeGUID = '05512126-3EB6-4DA4-AF6E-BC2BC2724B8B', @source = 'procFactAllocationSample' end end ------------------------------------------------------------------------------------------------ ----------------------------------------- Log Script ------------------------------------------- ------------------------------------------------------------------------------------------------ if @isDebugOnly=1 begin print('Finally, the script is logged') end else begin declare @higuid2 uniqueidentifier exec [dbo].[procLogScript] @desc = 'Allocation Sample All Complete', @higuid = @higuid2 output end return GO --------------------------------------------- -- ob.procBudgetStampOffInsert /************************************************************************************************************************ ** Author: Mike Schmitz ** Create Date: 2014-09-15 ** Description: Populates Budget Data into the Budget Stamp-Off tables ** Last Modified: 2014-09-15 ** GM Release: 2014.4 ************************************************************************************************************************** ** Change History ************************************************************************************************************************** ** CID Date Author WI Description ** 1 8-24-2015 bjl comment out incorrect value filters *************************************************************************************************************************/ CREATE proc [ob].[procBudgetStampOffInsert] as /************** Logging *********************************************************/ declare @higuid uniqueidentifier exec procLogScript 'Operating Budget Stamp-Off Insert' , @higuid output print 'Beginning insert, historyitemguid: ' + cast(@higuid as varchar(36)) /************** Insert **********************************************************/ declare @FiscalYearID int = (select Setting+1 from [dbo].[DBSetting] where Name = 'OB_Current_Year') --FactAccount truncate table [clientob].[FactAccountBudgetStampOff] insert into [clientob].[FactAccountBudgetStampOff] (DepartmentalBudgetID, AccountID, FiscalYearID, TimeClassID, UnitTypeID, Month01, Month02, Month03, Month04, Month05, Month06, Month07, Month08, Month09, Month10, Month11, Month12, Yearly, HistoryItemGUID) select DepartmentalBudgetID, AccountID, FiscalYearID, TimeClassID, UnitTypeID, sum(Month01), sum(Month02), sum(Month03), sum(Month04), sum(Month05), sum(Month06), sum(Month07), sum(Month08), sum(Month09), sum(Month10), sum(Month11), sum(Month12), sum(Yearly), @higuid from [clientob].[FactAccount] where IsDeleted=0 and TimeClassID = '2' and FiscalYearID = @FiscalYearID --CID 1 Begin -- and (Month01<>0 or Month02<>0 or Month03<>0 or Month04<>0 or Month05<>0 or Month06<>0 or Month07<>0 or Month08<>0 or Month09<>0 or Month10<>0 or Month11<>0 or Month12<>0 or Yearly<>0) --CID 1 End group by DepartmentalBudgetID, AccountID, FiscalYearID, TimeClassID, UnitTypeID --FactGlobalStatistics truncate table [clientob].[FactGlobalStatisticsBudgetStampOff] insert into [clientob].[FactGlobalStatisticsBudgetStampOff] (TimeClassID,FiscalYearID,UnitTypeID,OBGlobalStatisticID,OBGlobalStatisticsPlanID,Month01,Month02,Month03,Month04,Month05,Month06,Month07,Month08,Month09,Month10,Month11,Month12,Yearly,HistoryItemGUID) select TimeClassID, FiscalYearID, UnitTypeID, OBGlobalStatisticID, OBGlobalStatisticsPlanID, sum(Month01), sum(Month02), sum(Month03), sum(Month04), sum(Month05), sum(Month06), sum(Month07), sum(Month08), sum(Month09), sum(Month10), sum(Month11), sum(Month12), sum(Yearly), @higuid from [clientob].[FactGlobalStatistics] where IsDeleted=0 and TimeClassID = '2' and FiscalYearID = @FiscalYearID --CID 1 Begin -- and (Month01<>0 or Month02<>0 or Month03<>0 or Month04<>0 or Month05<>0 or Month06<>0 or Month07<>0 or Month08<>0 or Month09<>0 or Month10<>0 or Month11<>0 or Month12<>0 or Yearly<>0) --CID 1 End group by TimeClassID, FiscalYearID, UnitTypeID, OBGlobalStatisticID, OBGlobalStatisticsPlanID --FactReimbursement truncate table [clientob].[FactReimbursementBudgetStampOff] insert into [clientob].[FactReimbursementBudgetStampOff] (FiscalYearID,OBForecastDetailID,OBReimbursementPlanID,PatientReimbursementGroupID,PayorID,PayorGroupID,TimeClassID,UnitTypeID,Month01,Month02,Month03,Month04,Month05,Month06,Month07,Month08,Month09,Month10,Month11,Month12,Yearly,HistoryItemGUID) select FiscalYearID, OBForecastDetailID, OBReimbursementPlanID, PatientReimbursementGroupID, PayorID, PayorGroupID, TimeClassID, UnitTypeID, sum(Month01), sum(Month02), sum(Month03), sum(Month04), sum(Month05), sum(Month06), sum(Month07), sum(Month08), sum(Month09), sum(Month10), sum(Month11), sum(Month12), sum(Yearly), @higuid from [clientob].[FactReimbursement] where IsDeleted=0 and TimeClassID = '2' and FiscalYearID = @FiscalYearID --CID 1 Begin -- and (Month01<>0 or Month02<>0 or Month03<>0 or Month04<>0 or Month05<>0 or Month06<>0 or Month07<>0 or Month08<>0 or Month09<>0 or Month10<>0 or Month11<>0 or Month12<>0 or Yearly<>0) --CID 1 End group by FiscalYearID, OBForecastDetailID, OBReimbursementPlanID, PatientReimbursementGroupID, PayorID, PayorGroupID, TimeClassID, UnitTypeID --FactReimbursementAccount truncate table [clientob].[FactReimbursementAccountBudgetStampOff] insert into [clientob].[FactReimbursementAccountBudgetStampOff] (AccountID,FiscalYearID,OBReimbursementPlanID,PatientReimbursementGroupID,TimeClassID,UnitTypeID,Month01,Month02,Month03,Month04,Month05,Month06,Month07,Month08,Month09,Month10,Month11,Month12,Yearly,HistoryItemGUID) select AccountID, FiscalYearID, OBReimbursementPlanID, PatientReimbursementGroupID, TimeClassID, UnitTypeID, sum(Month01), sum(Month02), sum(Month03), sum(Month04), sum(Month05), sum(Month06), sum(Month07), sum(Month08), sum(Month09), sum(Month10), sum(Month11), sum(Month12), sum(Yearly), @higuid from [clientob].[FactReimbursementAccount] where IsDeleted=0 and TimeClassID = '2' and FiscalYearID = @FiscalYearID --CID 1 Begin -- and (Month01<>0 or Month02<>0 or Month03<>0 or Month04<>0 or Month05<>0 or Month06<>0 or Month07<>0 or Month08<>0 or Month09<>0 or Month10<>0 or Month11<>0 or Month12<>0 or Yearly<>0) --CID 1 End group by AccountID, FiscalYearID, OBReimbursementPlanID, PatientReimbursementGroupID, TimeClassID, UnitTypeID --FactStaffingPC truncate table [clientob].[FactStaffingPCBudgetStampOff] insert into [clientob].[FactStaffingPCBudgetStampOff] (EmployeeID,FiscalYearID,JobCodeID,DepartmentalBudgetID,TimeClassID,PayCodeGroupID,UnitTypeID,Month01,Month02,Month03,Month04,Month05,Month06,Month07,Month08,Month09,Month10,Month11,Month12,Yearly,HistoryItemGUID) select EmployeeID, FiscalYearID, JobCodeID, DepartmentalBudgetID, TimeClassID, PayCodeGroupID, UnitTypeID, sum(Month01), sum(Month02), sum(Month03), sum(Month04), sum(Month05), sum(Month06), sum(Month07), sum(Month08), sum(Month09), sum(Month10), sum(Month11), sum(Month12), sum(Yearly), @higuid from [clientob].[FactStaffingPC] where IsDeleted=0 and TimeClassID = '2' and FiscalYearID = @FiscalYearID --CID 1 Begin -- and (Month01<>0 or Month02<>0 or Month03<>0 or Month04<>0 or Month05<>0 or Month06<>0 or Month07<>0 or Month08<>0 or Month09<>0 or Month10<>0 or Month11<>0 or Month12<>0 or Yearly<>0) --CID 1 End group by EmployeeID, FiscalYearID, JobCodeID, DepartmentalBudgetID, TimeClassID, PayCodeGroupID, UnitTypeID --FactCDM truncate table [clientob].[FactCDMBudgetStampOff] insert into [clientob].[FactCDMBudgetStampOff] (ChargeCodeID,FiscalYearID,DepartmentalBudgetID,OBForecastDetailID,PatientClassID,TimeClassID,UnitTypeID,Month01,Month02,Month03,Month04,Month05,Month06,Month07,Month08,Month09,Month10,Month11,Month12,Yearly,HistoryItemGUID) select ChargeCodeID, FiscalYearID, DepartmentalBudgetID, OBForecastDetailID, PatientClassID, TimeClassID, UnitTypeID, sum(Month01), sum(Month02), sum(Month03), sum(Month04), sum(Month05), sum(Month06), sum(Month07), sum(Month08), sum(Month09), sum(Month10), sum(Month11), sum(Month12), sum(Yearly), @higuid from [clientob].[FactCDM] where IsDeleted=0 and TimeClassID = '2' and FiscalYearID = @FiscalYearID --CID 1 Begin -- and (Month01<>0 or Month02<>0 or Month03<>0 or Month04<>0 or Month05<>0 or Month06<>0 or Month07<>0 or Month08<>0 or Month09<>0 or Month10<>0 or Month11<>0 or Month12<>0 or Yearly<>0) --CID 1 End group by ChargeCodeID, FiscalYearID, DepartmentalBudgetID, OBForecastDetailID, PatientClassID, TimeClassID, UnitTypeID --FactServiceLine truncate table [clientob].[FactServiceLineBudgetStampOff] insert into [clientob].[FactServiceLineBudgetStampOff] (FiscalYearID,ModelingServiceLineID,TimeClassID,UnitTypeID,OBForecastDetailID,OBServiceLinePlanID,Month01,Month02,Month03,Month04,Month05,Month06,Month07,Month08,Month09,Month10,Month11,Month12,Yearly,HistoryItemGUID) select FiscalYearID, ModelingServiceLineID, TimeClassID, UnitTypeID, OBForecastDetailID, OBServiceLinePlanID, sum(Month01), sum(Month02), sum(Month03), sum(Month04), sum(Month05), sum(Month06), sum(Month07), sum(Month08), sum(Month09), sum(Month10), sum(Month11), sum(Month12), sum(Yearly), @higuid from [clientob].[FactServiceLine] where IsDeleted=0 and TimeClassID = '2' and FiscalYearID = @FiscalYearID --CID 1 Begin -- and (Month01<>0 or Month02<>0 or Month03<>0 or Month04<>0 or Month05<>0 or Month06<>0 or Month07<>0 or Month08<>0 or Month09<>0 or Month10<>0 or Month11<>0 or Month12<>0 or Yearly<>0) --CID 1 End group by FiscalYearID, ModelingServiceLineID, TimeClassID, UnitTypeID, OBForecastDetailID, OBServiceLinePlanID --FactProvider truncate table [clientob].[FactProviderBudgetStampOff] insert into [clientob].[FactProviderBudgetStampOff] (FiscalYearID,UnitTypeID,DepartmentalBudgetID,TimeClassID,ProviderID,OBForecastDetailID,Month01,Month02,Month03,Month04,Month05,Month06,Month07,Month08,Month09,Month10,Month11,Month12,Yearly,HistoryItemGUID) select FiscalYearID, UnitTypeID, DepartmentalBudgetID, TimeClassID, ProviderID, OBForecastDetailID, sum(Month01), sum(Month02), sum(Month03), sum(Month04), sum(Month05), sum(Month06), sum(Month07), sum(Month08), sum(Month09), sum(Month10), sum(Month11), sum(Month12), sum(Yearly), @higuid from [clientob].[FactProvider] where IsDeleted=0 and TimeClassID = '2' and FiscalYearID = @FiscalYearID --CID 1 Begin -- and (Month01<>0 or Month02<>0 or Month03<>0 or Month04<>0 or Month05<>0 or Month06<>0 or Month07<>0 or Month08<>0 or Month09<>0 or Month10<>0 or Month11<>0 or Month12<>0 or Yearly<>0) --CID 1 End group by FiscalYearID, UnitTypeID, DepartmentalBudgetID, TimeClassID, ProviderID, OBForecastDetailID RETURN GO --------------------------------------------- -- ob.procBudgetUploadFactAccountSample CREATE procedure ob.procBudgetUploadFactAccountSample @historyItemGUID uniqueidentifier as delete fa from clientob.FactAccount fa where fa.DataTypeID = 3 --output and fa.TimeClassID != 1 --actual and exists( select 1 from clientob.FactAccountNonReporting nr where nr.HistoryItemGUID = @historyItemGUID and nr.AccountID = fa.AccountID and nr.FiscalYearID = fa.FiscalYearID and nr.DepartmentalBudgetID = fa.DepartmentalBudgetID and nr.TimeClassID = fa.TimeClassID and nr.UnitTypeID = fa.UnitTypeID ); insert into clientob.FactAccount (AccountID, DataTypeID, FiscalYearID, DepartmentalBudgetID, TimeClassID, UnitTypeID, Month01, Month02, Month03, Month04, Month05, Month06, Month07, Month08, Month09, Month10, Month11, Month12, Yearly, MonthsLoaded, IsDeleted, TransactionID, HistoryItemGUID) select fa.AccountID, 3 as DataTypeID, fa.FiscalYearID, fa.DepartmentalBudgetID, fa.TimeClassID, fa.UnitTypeID, fa.Month01, fa.Month02, fa.Month03, fa.Month04, fa.Month05, fa.Month06, fa.Month07, fa.Month08, fa.Month09, fa.Month10, fa.Month11, fa.Month12, fa.Yearly, fa.MonthsLoaded, fa.IsDeleted, fa.TransactionID, fa.HistoryItemGUID from clientob.FactAccountNonReporting fa where fa.HistoryItemGUID = @historyItemGUID and fa.DataTypeID = 4 and fa.TimeClassID != 1; GO --------------------------------------------- -- ob.procCAPOperationsToOBSubTable_Transfer CREATE proc [ob].[procCAPOperationsToOBSubTable_Transfer] /**************************************************************************************************** ** Author: cbb ** Create Date: 2017.02.14 ** Description: Transfer capital revenue and expenses to department budget ** Last Modified: 2017.02.14 ** GM Release: 2017.2.0 **************************************************************************************************** ** Change History **************************************************************************************************** ** CID Date Author WI Description ** ****************************************************************************************************/ as begin -------------------------------------------------------------------------------------------------- -- Variables -------------------------------------------------------------------------------------------------- declare @higuid uniqueidentifier declare @currYear int select @currYear = Setting from [dbo].[DBSetting] where Name = 'OB_Current_Year' declare @planRefreshList as nvarchar(max) = '' -------------------------------------------------------------------------------------------------- -- Logging -------------------------------------------------------------------------------------------------- exec procLogScript 'Transfer project pro forma financials to OB sub-table composite' , @higuid output --print 'Beginning update, historyguid: ' + cast(@higuid as varchar(36)) -------------------------------------------------------------------------------------------------- -- Create temp table -------------------------------------------------------------------------------------------------- create table #dataagg ( [TimeClassID] tinyint, [FiscalYearID] smallint, [DepartmentalBudgetID] int, [AccountID] int, [UnitTypeID] tinyint, [AssumptionID] int, [Month01] decimal(19,4), [Month02] decimal(19,4), [Month03] decimal(19,4), [Month04] decimal(19,4), [Month05] decimal(19,4), [Month06] decimal(19,4), [Month07] decimal(19,4), [Month08] decimal(19,4), [Month09] decimal(19,4), [Month10] decimal(19,4), [Month11] decimal(19,4), [Month12] decimal(19,4), [Yearly] decimal(19,4), [Total] decimal(31,4), [Comment] nvarchar(4000), [IsDeleted] bit, [HistoryItemGUID] uniqueidentifier, [TransactionID] int, [AdjustmentCategoryID] int ) -------------------------------------------------------------------------------------------------- -- Populate temp table -------------------------------------------------------------------------------------------------- insert into #dataagg ( [TimeClassID], [FiscalYearID], [DepartmentalBudgetID], [AccountID], [UnitTypeID], [AssumptionID], [Month01], [Month02], [Month03], [Month04], [Month05], [Month06], [Month07], [Month08], [Month09], [Month10], [Month11], [Month12], [Yearly], [Comment], [HistoryItemGUID], [TransactionID], [AdjustmentCategoryID] ) select [TimeClassID] = case fct.FiscalYearID when @currYear then 12 else 2 end, [FiscalYearID] = fct.FiscalYearID, [DepartmentalBudgetID] = ddb.DepartmentalBudgetID, [AccountID] = fd.AccountID, [UnitTypeID] = fct.UnitTypeID, [AssumptionID] = 18, [Month01] = sum(fct.Month01), [Month02] = sum(fct.Month02), [Month03] = sum(fct.Month03), [Month04] = sum(fct.Month04), [Month05] = sum(fct.Month05), [Month06] = sum(fct.Month06), [Month07] = sum(fct.Month07), [Month08] = sum(fct.Month08), [Month09] = sum(fct.Month09), [Month10] = sum(fct.Month10), [Month11] = sum(fct.Month11), [Month12] = sum(fct.Month12), [Yearly] = sum(fct.Yearly), [Comment] = 'Transfer from Capital - Model: ' + dp.Name + ' - Forecast Line: ' + fd.Name, [HistoryItemGUID] = @higuid, [TransactionID] = -99, [AdjustmentCategoryID] = 0 from [clientcap].[FactCAPProjectOperationsMonthly] fct inner join [cap].[viewDimProject] dp on fct.ProjectID = dp.ProjectID inner join [cap].[viewDimForecastDetail] fd on fct.CAPForecastDetailID=fd.CAPForecastDetailID inner join [ob].[viewDimDepartmentalBudget] ddb on dp.DepartmentID = ddb.DepartmentID where 1=1 and fct.IsDeleted = 0 and dp.IncludeinOB = 1 and fd.AccountID > 0 and fct.UnitTypeID = 34 and fct.FiscalYearID in (@currYear, @currYear+1) group by fct.FiscalYearID, ddb.DepartmentalBudgetID, fd.AccountID, dp.Name, fd.Name, fct.UnitTypeID -------------------------------------------------------------------------------------------------- -- Populate temp table - Yearly capital structure -------------------------------------------------------------------------------------------------- insert into #dataagg ( [TimeClassID], [FiscalYearID], [DepartmentalBudgetID], [AccountID], [UnitTypeID], [AssumptionID], [Month01], [Month02], [Month03], [Month04], [Month05], [Month06], [Month07], [Month08], [Month09], [Month10], [Month11], [Month12], [Yearly], [Comment], [HistoryItemGUID], [TransactionID], [AdjustmentCategoryID] ) select [TimeClassID] = case fct.FiscalYearID when @currYear then 12 else 2 end, [FiscalYearID] = fct.FiscalYearID, [DepartmentalBudgetID] = ddb.DepartmentalBudgetID, [AccountID] = fd.AccountID, [UnitTypeID] = fct.UnitTypeID, [AssumptionID] = 18, [Month01] = 0, [Month02] = 0, [Month03] = 0, [Month04] = 0, [Month05] = 0, [Month06] = 0, [Month07] = 0, [Month08] = 0, [Month09] = 0, [Month10] = 0, [Month11] = 0, [Month12] = 0, [Yearly] = sum(fct.Amount), [Comment] = 'Transfer from Capital - Model: ' + dp.Name + ' - Forecast Line: ' + fd.Name, [HistoryItemGUID] = @higuid, [TransactionID] = -99, [AdjustmentCategoryID] = 0 from [clientcap].[FactProjectOperations] fct inner join [cap].[viewDimProject] dp on fct.ProjectID = dp.ProjectID inner join [cap].[viewDimForecastDetail] fd on fct.CAPForecastDetailID=fd.CAPForecastDetailID inner join [ob].[viewDimDepartmentalBudget] ddb on dp.DepartmentID = ddb.DepartmentID where 1=1 and fct.IsDeleted = 0 and dp.IncludeinOB = 1 and fd.AccountID > 0 and fct.UnitTypeID = 34 and fct.FiscalYearID in (@currYear, @currYear+1) group by fct.FiscalYearID, ddb.DepartmentalBudgetID, fd.AccountID, dp.Name, fd.Name, fct.UnitTypeID -------------------------------------------------------------------------------------------------- -- Create dept temp table -------------------------------------------------------------------------------------------------- select tmp.[DepartmentalBudgetID], ddb.MemberGUID, 0 as IsRefreshNeeded into #depts from #dataagg tmp inner join [ob].[DimDepartmentalBudget] ddb on tmp.DepartmentalBudgetID = ddb.DepartmentalBudgetID -------------------------------------------------------------------------------------------------- -- Delete sub-table records no longer present in capital projects -------------------------------------------------------------------------------------------------- update dept set IsRefreshNeeded=1 from #depts dept inner join [clientob].[FactAccountSubtableVar] fctv on fctv.DepartmentalBudgetID = dept.DepartmentalBudgetID left join #dataagg tmp on fctv.TimeClassID = tmp.TimeClassID and fctv.FiscalYearID = tmp.FiscalYearID and fctv.DepartmentalBudgetID = tmp.DepartmentalBudgetID and fctv.AccountID = tmp.AccountID and fctv.UnitTypeID = tmp.UnitTypeID and fctv.AssumptionID = tmp.AssumptionID and fctv.Comment = tmp.Comment and fctv.IsDeleted = tmp.IsDeleted where 1=1 and tmp.TimeClassID is null and ( (fctv.FiscalYearID = @currYear and fctv.TimeClassID = 12) or (fctv.FiscalYearID = @currYear+1 and fctv.TimeClassID = 2) ) and fctv.TransactionID = -99 and fctv.Comment like 'Transfer from Capital - Model: %' delete fctv from [clientob].[FactAccountSubtableVar] fctv left join #dataagg tmp on fctv.TimeClassID = tmp.TimeClassID and fctv.FiscalYearID = tmp.FiscalYearID and fctv.DepartmentalBudgetID = tmp.DepartmentalBudgetID and fctv.AccountID = tmp.AccountID and fctv.UnitTypeID = tmp.UnitTypeID and fctv.AssumptionID = tmp.AssumptionID and fctv.Comment = tmp.Comment and fctv.IsDeleted = tmp.IsDeleted where 1=1 and tmp.TimeClassID is null and ( (fctv.FiscalYearID = @currYear and fctv.TimeClassID = 12) or (fctv.FiscalYearID = @currYear+1 and fctv.TimeClassID = 2) ) and fctv.TransactionID = -99 and fctv.Comment like 'Transfer from Capital - Model: %' -------------------------------------------------------------------------------------------------- -- Update existing sub-table records -------------------------------------------------------------------------------------------------- update dept set IsRefreshNeeded=1 from #depts dept inner join [clientob].[FactAccountSubtableVar] fctv on dept.DepartmentalBudgetID=fctv.DepartmentalBudgetID inner join #dataagg tmp on fctv.TimeClassID = tmp.TimeClassID and fctv.FiscalYearID = tmp.FiscalYearID and fctv.DepartmentalBudgetID = tmp.DepartmentalBudgetID and fctv.AccountID = tmp.AccountID and fctv.UnitTypeID = tmp.UnitTypeID and fctv.AssumptionID = tmp.AssumptionID and fctv.Comment = tmp.Comment and fctv.IsDeleted = tmp.IsDeleted where 1=1 and ( fctv.Month01<>tmp.Month01 or fctv.Month02<>tmp.Month02 or fctv.Month03<>tmp.Month03 or fctv.Month04<>tmp.Month04 or fctv.Month05<>tmp.Month05 or fctv.Month06<>tmp.Month06 or fctv.Month07<>tmp.Month07 or fctv.Month08<>tmp.Month08 or fctv.Month09<>tmp.Month09 or fctv.Month10<>tmp.Month10 or fctv.Month11<>tmp.Month11 or fctv.Month12<>tmp.Month12 or fctv.Yearly<>tmp.Yearly ) update fctv set fctv.Month01=tmp.Month01, fctv.Month02=tmp.Month02, fctv.Month03=tmp.Month03, fctv.Month04=tmp.Month04, fctv.Month05=tmp.Month05, fctv.Month06=tmp.Month06, fctv.Month07=tmp.Month07, fctv.Month08=tmp.Month08, fctv.Month09=tmp.Month09, fctv.Month10=tmp.Month10, fctv.Month11=tmp.Month11, fctv.Month12=tmp.Month12, fctv.Yearly=tmp.Yearly, fctv.HistoryItemGUID = @higuid from [clientob].[FactAccountSubtableVar] fctv inner join #dataagg tmp on fctv.TimeClassID = tmp.TimeClassID and fctv.FiscalYearID = tmp.FiscalYearID and fctv.DepartmentalBudgetID = tmp.DepartmentalBudgetID and fctv.AccountID = tmp.AccountID and fctv.UnitTypeID = tmp.UnitTypeID and fctv.AssumptionID = tmp.AssumptionID and fctv.Comment = tmp.Comment and fctv.IsDeleted = tmp.IsDeleted where 1=1 and ( fctv.Month01<>tmp.Month01 or fctv.Month02<>tmp.Month02 or fctv.Month03<>tmp.Month03 or fctv.Month04<>tmp.Month04 or fctv.Month05<>tmp.Month05 or fctv.Month06<>tmp.Month06 or fctv.Month07<>tmp.Month07 or fctv.Month08<>tmp.Month08 or fctv.Month09<>tmp.Month09 or fctv.Month10<>tmp.Month10 or fctv.Month11<>tmp.Month11 or fctv.Month12<>tmp.Month12 or fctv.Yearly<>tmp.Yearly ) -------------------------------------------------------------------------------------------------- -- Update existing sub-table records -------------------------------------------------------------------------------------------------- update dept set IsRefreshNeeded=1 from #depts dept inner join #dataagg tmp on dept.DepartmentalBudgetID=tmp.DepartmentalBudgetID left join [clientob].[FactAccountSubtableVar] fctv on fctv.TimeClassID = tmp.TimeClassID and fctv.FiscalYearID = tmp.FiscalYearID and fctv.DepartmentalBudgetID = tmp.DepartmentalBudgetID and fctv.AccountID = tmp.AccountID and fctv.UnitTypeID = tmp.UnitTypeID and fctv.AssumptionID = tmp.AssumptionID and fctv.Comment = tmp.Comment and fctv.IsDeleted = tmp.IsDeleted where 1=1 and fctv.TimeClassID is null insert into [clientob].[FactAccountSubtableVar] ( [TimeClassID], [FiscalYearID], [DepartmentalBudgetID], [AccountID], [UnitTypeID], [AssumptionID], [Month01], [Month02], [Month03], [Month04], [Month05], [Month06], [Month07], [Month08], [Month09], [Month10], [Month11], [Month12], [Yearly], [Comment], [HistoryItemGUID], [TransactionID], [AdjustmentCategoryID] ) select tmp.[TimeClassID], tmp.[FiscalYearID], tmp.[DepartmentalBudgetID], tmp.[AccountID], tmp.[UnitTypeID], tmp.[AssumptionID], tmp.[Month01], tmp.[Month02], tmp.[Month03], tmp.[Month04], tmp.[Month05], tmp.[Month06], tmp.[Month07], tmp.[Month08], tmp.[Month09], tmp.[Month10], tmp.[Month11], tmp.[Month12], tmp.[Yearly], tmp.[Comment], tmp.[HistoryItemGUID], tmp.[TransactionID], tmp.[AdjustmentCategoryID] from #dataagg tmp left join [clientob].[FactAccountSubtableVar] fctv on fctv.TimeClassID = tmp.TimeClassID and fctv.FiscalYearID = tmp.FiscalYearID and fctv.DepartmentalBudgetID = tmp.DepartmentalBudgetID and fctv.AccountID = tmp.AccountID and fctv.UnitTypeID = tmp.UnitTypeID and fctv.AssumptionID = tmp.AssumptionID and fctv.Comment = tmp.Comment and fctv.IsDeleted = tmp.IsDeleted where 1=1 and fctv.TimeClassID is null -------------------------------------------------------------------------------------------------- -- Invalidate department models -------------------------------------------------------------------------------------------------- select @planRefreshList = 'PlanGUID in (''' + dbo.straggr(cast(dep.MemberGUID as nvarchar(36)), ''',''', '') + ''')' from #depts dep exec [dbo].[procInvalidateModelWorkbookCacheByWhereClause] @xplanWhereClause = @planRefreshList,@isDebugOnly = 0 -------------------------------------------------------------------------------------------------- -- Clean-up -------------------------------------------------------------------------------------------------- drop table #depts drop table #dataagg end GO --------------------------------------------- -- ob.procClearAllAssumptions CREATE proc [ob].[procClearAllAssumptions] as /************************************************************************************************************************ ** Author: Bart Lewis ** Create Date: 2015-05-12 ** Description: Resets Budget Drop Down Boxes ** Last Modified: 2017-08-08 ** GM Release: 2015.3 ************************************************************************************************************************** ** Change History ************************************************************************************************************************** ** CID Date Author WI Description ** 1 2017-04-05 vyaremko B-15589 Use OB_Budget_IsOpen from [ob].[SystemSetting] instead [dbo].[DBSetting] ** 2 2017-06-06 cbb B-15886 exclude rvu weights and isstatdriver assumptions ** 3 2017-08-08 vyaremko B-16694 Rename 'Is Budget Open' to 'Budget Status' *************************************************************************************************************************/ declare @FiscalYearID int = (select Setting+1 from [dbo].[DBSetting] where Name = 'OB_Current_Year') /************** Logging *********************************************************/ declare @higuid uniqueidentifier declare @Desc nvarchar(200) = 'Reset All Budget Assumptions ' + cast(@FiscalYearID+1 as Nvarchar(4)) + ' Rollover' declare @RVUid nvarchar(15) declare @IncExcid nvarchar(15) select @RVUid = AssumptionID from [fw].[DimAssumption] where MemberGUID = '46c83c8c-fe45-4911-8338-0a2e87474132' select @IncExcid = AssumptionID from [fw].[DimAssumption] where MemberGUID = 'c70bc8dd-f89c-4afa-bbbd-a454ebfc1a0c' exec procLogScript @Desc , @higuid output IF (SELECT TOP 1 [Value] FROM [ob].[SystemSetting] WHERE [Name] = 'Budget Status') = 0 -- Closed BEGIN --Cursor to Delete All Var structures BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; DECLARE @SCHEMA nvarchar(256) DECLARE @FactTableName nvarchar(256) DECLARE @SQL nvarchar(1024) DECLARE @SQL2 nvarchar(1024) DECLARE FactTableCursor CURSOR FOR select t.name, (select name from sys.schemas where schema_id = t.schema_id) from sys.tables t where 1=1 and t.schema_id in ( select schema_id from sys.schemas where name in('ob', 'clientob') ) and t.name like 'fact%' and t.name like '%var%' and t.name not like '%Snapshot' and t.name not in ('FactGlobalSpreads','FactBudgetYearReportingCrosswalk') and t.name not like '%map' order by t.name open FactTableCursor FETCH NEXT FROM FactTableCursor INTO @FactTableName, @SCHEMA WHILE @@FETCH_STATUS = 0 BEGIN --set @SQL = 'truncate table ' + @SCHEMA + '.' + @FactTableName set @SQL = 'Delete from ' + @SCHEMA + '.' + @FactTableName + ' where AssumptionID not in ('+@RVUid +','+@IncExcid +')' set @SQL2='DBCC CHECKIDENT (''' + + @SCHEMA + '.' + @FactTableName + ''', RESEED, 1)' -- print @SQL -- print @SQL2 EXECUTE sp_executesql @SQL EXECUTE sp_executesql @SQL2 FETCH NEXT FROM FactTableCursor INTO @FactTableName, @SCHEMA END CLOSE FactTableCursor DEALLOCATE FactTableCursor --Rebuild Indexes and Update Statistics exec [ob].[procOptimizationRebuildIndexesData] exec [ob].[procOptimizationRebuildIndexesMapping] END END RETURN GO --------------------------------------------- -- ob.procClearAllComments CREATE proc [ob].[procClearAllComments] @IsDebugOnly bit=0 as /************************************************************************************************************************ ** Author: Corey Becker ** Create Date: 2016-06-03 ** Description: Deletes all comments for selected plans ** Last Modified: 2016-06-03 ** GM Release: 2016.3 ************************************************************************************************************************** ** Change History ************************************************************************************************************************** ** CID Date Author WI Description *************************************************************************************************************************/ declare @BudgetYear int select @BudgetYear = Setting+1 from [dbo].[DBSetting] where Name = 'OB_Current_Year' /************** Logging *********************************************************/ declare @higuid uniqueidentifier declare @Desc nvarchar(200) = 'Delete comments for ' + cast(@BudgetYear as Nvarchar(4)) + ' Rollover' exec procLogScript @Desc , @higuid output /********************************************************************************/ --Cursor to Delete All Var structures SET NOCOUNT ON; DECLARE @SCHEMA nvarchar(256) DECLARE @FactTableName nvarchar(256) DECLARE @SQL nvarchar(1024) DECLARE FactTableCursor CURSOR FOR select distinct t.name, s.name from sys.tables t inner join sys.schemas s on s.schema_id = t.schema_id inner join sys.columns c on c.object_id = t.object_id where 1=1 and s.name in ('ob', 'clientob') and t.name like 'fact%' and t.name like '%var%' and t.name not in ('FactGlobalSpreads','FactBudgetYearReportingCrosswalk') and t.name not like '%map' and t.name not like '%snapshot' and c.name in ('TextValue_Formula','TextValue Formula','UnitTypeID') open FactTableCursor FETCH NEXT FROM FactTableCursor INTO @FactTableName, @SCHEMA WHILE @@FETCH_STATUS = 0 begin set @SQL = ' delete from ' + @SCHEMA + '.' + @FactTableName + ' where AssumptionID = 30 DBCC CHECKIDENT (''' + @SCHEMA + '.' + @FactTableName + ''', RESEED, 1) DBCC CHECKIDENT (''' + + @SCHEMA + '.' + @FactTableName + ''', RESEED) ' if @IsDebugOnly=1 begin print @SQL end else begin exec sp_executesql @SQL end fetch next from FactTableCursor into @FactTableName, @SCHEMA end close FactTableCursor deallocate FactTableCursor --Rebuild Indexes and Update Statistics if @IsDebugOnly=0 begin exec [ob].[procOptimizationRebuildIndexesData] exec [ob].[procOptimizationRebuildIndexesMapping] end exec [dbo].[procInvalidateModelWorkbookCacheByPlanType] @planTypeGUID = '05512126-3eb6-4da4-af6e-bc2bc2724b8b', @source = 'Unknown' exec [dbo].[procInvalidateModelWorkbookCacheByPlanType] @planTypeGUID = 'b4d1bae4-194d-4499-b573-be9d56cbd802', @source = 'Unknown' exec [dbo].[procInvalidateModelWorkbookCacheByPlanType] @planTypeGUID = '957dd809-6299-4ec2-81fc-5452df805e8e', @source = 'Unknown' return GO --------------------------------------------- -- ob.procClearAllNumericAssumptionsRollForwardDropDownBoxes CREATE proc [ob].[procClearAllNumericAssumptionsRollForwardDropDownBoxes] as /************************************************************************************************************************ ** Author: Bart Lewis ** Create Date: 2015-05-12 ** Description: Resets All Assumptions except Drop Down Boxes, those are rolled Forward ** Last Modified: 2015-05-12 ** GM Release: 2015.3 ************************************************************************************************************************** ** Change History ************************************************************************************************************************** ** CID Date Author WI Description ** 1 2015-08-18 bjl n/a Correct @ColumnCount critera ** 2 2016-05-20 cbb D-04203 DBCC CHECKIDENT auto reseed instead of at id 1 ** 3 2016-06-06 cbb n/a reseed to 1, then reseed ** 4 2017-04-05 vyaremko B-15589 Use OB_Budget_IsOpen from [ob].[SystemSetting] instead [dbo].[DBSetting] ** 5 2017-06-06 cbb B-15886 add assumption id filters to delete for RVU weight and IsStatDriver and filtered out snapshot var tables ** 6 2017-08-08 vyaremko B-16694 Rename 'Is Budget Open' to 'Budget Status' *************************************************************************************************************************/ declare @FiscalYearID int = (select Setting+1 from [dbo].[DBSetting] where Name = 'OB_Current_Year') /************** Logging *********************************************************/ declare @higuid uniqueidentifier declare @Desc nvarchar(200) = 'Reset Non Text Budget Assumptions ' + cast(@FiscalYearID+1 as Nvarchar(4)) + ' Rollover' -- CID 5 BEGIN declare @RVUid nvarchar(15) declare @IncExcid nvarchar(15) select @RVUid = AssumptionID from [fw].[DimAssumption] where MemberGUID = '46c83c8c-fe45-4911-8338-0a2e87474132' select @IncExcid = AssumptionID from [fw].[DimAssumption] where MemberGUID = 'c70bc8dd-f89c-4afa-bbbd-a454ebfc1a0c' -- CID 5 END exec procLogScript @Desc , @higuid output IF (SELECT TOP 1 [Value] FROM [ob].[SystemSetting] WHERE [Name] = 'Budget Status') = 0 -- Closed BEGIN --Cursor to Delete All Var structures BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; DECLARE @SCHEMA nvarchar(256) DECLARE @FactTableName nvarchar(256) DECLARE @SQL nvarchar(1024) DECLARE @SQL1 nvarchar(1024) DECLARE @SQL2 nvarchar(1024) DECLARE @ColumnCount int --Cursor for Clientob Var Fact Tables with 'TextValue_Formula' or'UnitTypeID' DECLARE FactTableCursor CURSOR FOR select t.name, s.name, Count(c.name) from sys.tables t inner join sys.schemas s on s.schema_id = t.schema_id inner join sys.columns c on c.object_id = t.object_id where t.schema_id in(select schema_id from sys.schemas where name in('ob', 'clientob')) and t.name like 'fact%' and t.name like '%var%' and t.name not like '%snapshot' and t.name not in ('FactGlobalSpreads','FactBudgetYearReportingCrosswalk') and t.name not like '%map' and c.name IN('TextValue_Formula','TextValue Formula','UnitTypeID') Group by t.name, s.name order by t.name open FactTableCursor FETCH NEXT FROM FactTableCursor INTO @FactTableName, @SCHEMA, @ColumnCount WHILE @@FETCH_STATUS = 0 BEGIN --Check if 'TextValue_Formula' or just UnitTypeID Exists on Table If @ColumnCount = 2 Begin set @SQL = 'Delete from ' + @SCHEMA + '.' + @FactTableName + ' where AssumptionID not in ('+@RVUid +','+@IncExcid +') and UnitTypeID<>141 and TextValue_Formula<>''x''' End IF @ColumnCount = 1 Begin set @SQL = 'Delete from ' + @SCHEMA + '.' + @FactTableName + ' where AssumptionID not in ('+@RVUid +','+@IncExcid +') and UnitTypeID<>141' End set @SQL1 = 'Update ' + @SCHEMA + '.' + @FactTableName + ' set FiscalYearID=FiscalYearID + 1 where FiscalYearID<>0' set @SQL2='DBCC CHECKIDENT (''' + + @SCHEMA + '.' + @FactTableName + ''', RESEED,1) DBCC CHECKIDENT (''' + + @SCHEMA + '.' + @FactTableName + ''', RESEED)' --print @SQL --print @SQL2 EXECUTE sp_executesql @SQL EXECUTE sp_executesql @SQL1 EXECUTE sp_executesql @SQL2 FETCH NEXT FROM FactTableCursor INTO @FactTableName, @SCHEMA, @ColumnCount END CLOSE FactTableCursor DEALLOCATE FactTableCursor --Rebuild Indexes and Update Statistics exec [ob].[procOptimizationRebuildIndexesData] exec [ob].[procOptimizationRebuildIndexesMapping] END END RETURN GO --------------------------------------------- -- ob.procClearWorkspace CREATE proc [ob].[procClearWorkspace] @planGUIDList nvarchar(max)='' as /************************************************************************************** ** Author: Corey Becker ** Create Date: 2016-06-03 ** Description: Deletes all content in Workspace section of departmental budgets ** Last Modified: 2016-06-03 ** GM Release: 2016.3 *************************************************************************************** ** Change History *************************************************************************************** ** CID Date Author WI Description **************************************************************************************/ -- Logging ---------------------------------------------------------------------------- declare @higuid uniqueidentifier declare @Desc nvarchar(200) = 'Delete Workspace content in OB Dept Budget models' exec procLogScript @Desc , @higuid output -- Create temp table to hold affected models ------------------------------------------ create Table #Plans(DepartmentalBudgetID int, ModelGUID uniqueidentifier) if (len(@planGUIDList) = 0) begin insert into #Plans (DepartmentalBudgetID, ModelGUID) select dim.DepartmentalBudgetID, dim.MemberGUID from ob.DimDepartmentalBudget dim end else begin insert into #Plans (DepartmentalBudgetID, ModelGUID) select dim.DepartmentalBudgetID, dim.MemberGUID from dbo.ConvertCSGuidsToTable(@planGUIDList, ',') guids inner join ob.DimDepartmentalBudget dim on guids.guid = dim.MemberGUID end -- Delete data ------------------------------------------------------------------------ delete data from [dbo].[MEImprovData] data inner join #Plans pl on data.ModelGUID = pl.ModelGUID -- Invalidate model cache ------------------------------------------------------------- if (len(@planGUIDList) = 0) begin exec [dbo].[procInvalidateModelWorkbookCacheByPlanType] @planTypeGUID = '05512126-3eb6-4da4-af6e-bc2bc2724b8b', @source = 'Unknown' end else begin declare @whereClause nvarchar(max) = 'PlanGUID in ('''+@planGUIDList+''')' exec [dbo].[procInvalidateModelWorkbookCacheByWhereClause] @xplanWhereClause = @whereClause, @isDebugOnly = 0, @source = 'Unknown' end -- Clean-up --------------------------------------------------------------------------- drop table #Plans return GO --------------------------------------------- -- ob.procCreateViewReportStaffingtoGLAccount CREATE proc ob.procCreateViewReportStaffingtoGLAccount @mode nvarchar(100) = 'default' as if (@mode = 'default') begin select @mode = cast(PropertyXML.query('//PayRollToGLLinkDollarsConfiguration/text()') as nvarchar(100)) from [dbo].[SystemCenterStep] where Name = 'Payroll to GL Link Selection' if (@mode is null or @mode = '') return end declare @sql nvarchar(max) set @sql = 'alter view [ob].[viewReportStaffingtoGLAccount] as select * from ob.viewReportStaffingtoGLAccount_' + @mode exec(@sql) GO --------------------------------------------- -- ob.procDataViewRegisterDimensions CREATE proc [ob].[procDataViewRegisterDimensions] @dvguid uniqueidentifier, @isSafeMode bit = 0 --safe mode will skip deletes and only do adds as declare @rdguid uniqueidentifier declare @dvsql nvarchar(200) select @dvsql = replace(replace(SQLViewName, '[', ''), ']', '') from DataView where DataViewGUID = @dvguid --department if (exists (select 1 from sys.columns c inner join sys.views v on v.object_id = c.object_id inner join sys.schemas s on s.schema_id = v.schema_id where s.name + '.' + v.name = @dvsql and c.name = 'DepartmentID')) or (exists (select 1 from sys.columns c inner join sys.tables t on t.object_id = c.object_id inner join sys.schemas s on s.schema_id = t.schema_id where s.name + '.' + t.name = @dvsql and c.name = 'DepartmentID')) begin print @dvsql + ' - Registering DepartmentID' declare @departmentDimGuid uniqueidentifier = (select DimensionGUID from ScoreDimension where GlobalID = 'Department') insert into RESQLReportRegisteredDimension (DataViewGUID, DimensionGUID, HierarchyGUID, SQLColumnNames, KeyColumnName, KeyGUID, IsKeyColumnVisible, KeyJoinType, IsSecured) select @dvguid, d.DimensionGUID, d.DefaultHierarchyGUID, '', 'DepartmentID', d.DefaultKeyGUID, 1, 1, 0 from ScoreDimension d where d.GlobalID = 'Department' and not exists (select 1 from RESQLReportRegisteredDimension ex where ex.DataViewGUID = @dvguid and ex.DimensionGUID = d.DimensionGUID); select @rdguid = rd.RegisteredDimensionGUID from RESQLReportRegisteredDimension rd inner join ScoreDimension d on d.DImensionGUID = rd.DimensionGUID where d.GlobalID = 'Department' and rd.DataViewGUID = @dvguid; insert into RESQLReportRegisteredAttribute (RegisteredDimensionGUID, AttributeGUID, ColumnAlias) select distinct @rdguid, isnull(da.AttributeGUID, a.AttributeGUID), case when a.SQLColumnName = 'Name' then 'Department' when a.SQLColumnName = 'Description' then 'Department Description' else isnull(da.FriendlyName, a.FriendlyName) end from viewScoreAttribute a join ScoreAttributeSetting attrSet on a.DimensionGUID = attrSet.DimensionGUID and a.AttributeGuid = attrSet.AttributeGuid left join viewScoreAttribute da on da.SQLColumnName + 'ID' = a.SQLColumnName and da.DimensionGUID = a.DimensionGUID where a.DimensionGUID = @departmentDimGuid and ( (a.IsHidden = 0 and a.IsLocked = 0 and a.FrameworkID in(0, 2) and a.SQLColumnName not like '%IsDefined') or a.SQLColumnName in('Name', 'DepartmentCode') or attrSet.OBIsUsed = 1 ) and not exists(select 1 from RESQLReportRegisteredAttribute ex where ex.RegisteredDimensionGUID = @rdguid and ex.AttributeGUID = isnull(da.AttributeGUID, a.AttributeGUID)) end --departmental budget if (exists (select 1 from sys.columns c inner join sys.views v on v.object_id = c.object_id inner join sys.schemas s on s.schema_id = v.schema_id where s.name + '.' + v.name = @dvsql and c.name = 'DepartmentalBudgetID')) or (exists (select 1 from sys.columns c inner join sys.tables t on t.object_id = c.object_id inner join sys.schemas s on s.schema_id = t.schema_id where s.name + '.' + t.name = @dvsql and c.name = 'DepartmentalBudgetID')) begin declare @departmentalBudgetDimGuid uniqueidentifier = (select DimensionGUID from ScoreDimension where GlobalID = 'OB Departmental Budget') insert into RESQLReportRegisteredDimension (DataViewGUID, DimensionGUID, HierarchyGUID, SQLColumnNames, KeyColumnName, KeyGUID, IsKeyColumnVisible, KeyJoinType, IsSecured) select @dvguid, d.DimensionGUID, d.DefaultHierarchyGUID, '', 'DepartmentalBudgetID', d.DefaultKeyGUID, 1, 1, 0 from ScoreDimension d where d.GlobalID = 'OB Departmental Budget' and not exists (select 1 from RESQLReportRegisteredDimension ex where ex.DataViewGUID = @dvguid and ex.DimensionGUID = d.DimensionGUID); select @rdguid = rd.RegisteredDimensionGUID from RESQLReportRegisteredDimension rd inner join ScoreDimension d on d.DImensionGUID = rd.DimensionGUID where d.GlobalID = 'OB Departmental Budget' and rd.DataViewGUID = @dvguid; insert into RESQLReportRegisteredAttribute (RegisteredDimensionGUID, AttributeGUID, ColumnAlias) select distinct @rdguid, isnull(da.AttributeGUID, a.AttributeGUID), case when a.SQLColumnName = 'Name' then 'Departmental Budget' else isnull(da.FriendlyName, a.FriendlyName) end from viewScoreAttribute a left join viewScoreAttribute ia on ia.AttributeGUID = a.InferredAttributeGUID left join ScoreAttributeSetting attrSet on ia.DimensionGUID = attrSet.DimensionGUID and ia.AttributeGuid = attrSet.AttributeGuid left join viewScoreAttribute da on da.SQLColumnName + 'ID' = a.SQLColumnName and da.DimensionGUID = a.DimensionGUID where a.DimensionGUID = @departmentalBudgetDimGuid and ( (a.IsHidden = 0 and a.IsLocked = 0 and a.FrameworkID in(0, 5) and a.SQLColumnName not like '%IsDefined') or isnull(attrSet.OBIsUsed, 0) = 1 or a.SQLColumnName in('Name') ) and not exists(select 1 from RESQLReportRegisteredAttribute ex where ex.RegisteredDimensionGUID = @rdguid and ex.AttributeGUID = isnull(da.AttributeGUID, a.AttributeGUID)) end --account if (exists (select 1 from sys.columns c inner join sys.views v on v.object_id = c.object_id inner join sys.schemas s on s.schema_id = v.schema_id where s.name + '.' + v.name = @dvsql and c.name = 'AccountID')) or (exists (select 1 from sys.columns c inner join sys.tables t on t.object_id = c.object_id inner join sys.schemas s on s.schema_id = t.schema_id where s.name + '.' + t.name = @dvsql and c.name = 'AccountID')) begin print @dvsql + ' (' + cast(@dvguid as nvarchar(36)) + ') - Registering AccountID' insert into RESQLReportRegisteredDimension (DataViewGUID, DimensionGUID, HierarchyGUID, SQLColumnNames, KeyColumnName, KeyGUID, IsKeyColumnVisible, KeyJoinType, IsSecured) select @dvguid, d.DimensionGUID, d.DefaultHierarchyGUID, '', 'AccountID', d.DefaultKeyGUID, 1, 1, 0 from ScoreDimension d where d.GlobalID = 'Account' and not exists (select 1 from RESQLReportRegisteredDimension ex where ex.DataViewGUID = @dvguid and ex.DimensionGUID = d.DimensionGUID); select @rdguid = rd.RegisteredDimensionGUID from RESQLReportRegisteredDimension rd inner join ScoreDimension d on d.DImensionGUID = rd.DimensionGUID where d.GlobalID = 'Account' and rd.DataViewGUID = @dvguid; insert into RESQLReportRegisteredAttribute (RegisteredDimensionGUID, AttributeGUID, ColumnAlias) select distinct @rdguid, isnull(da.AttributeGUID, a.AttributeGUID), case when a.SQLColumnName = 'Name' then 'Account' when a.SQLColumnName = 'Description' then 'Account Description' else isnull(da.FriendlyName, a.FriendlyName) end from viewScoreAttribute a left join viewScoreAttribute da on da.SQLColumnName + 'ID' = a.SQLColumnName and da.DimensionGUID = a.DimensionGUID where a.DimensionName = 'Account' and ((a.IsHidden = 0 and a.IsLocked = 0 and a.FrameworkID in(0, 2) and a.SQLColumnName not like '%IsDefined' and a.SQLColumnName not like '%ID' and a.SQLColumnName != 'OBDollarsFinancialReportingCategory') or a.SQLColumnName in('Name', 'AccountCode', 'OBModelSectionName', 'OBUnitsFinancialReporting', 'OBUnitsFinancialReportingLineName', 'OBUnitsFinancialReportingSortOrder', 'OBPayor', 'OBPayorGroup', 'OBUnitType', 'PatientClass') or (@dvsql not like '%statistic%' and a.SQLColumnName in('OBDollarsFinancialReporting', 'OBDollarsFinancialReportingLineName', 'OBDollarsFinancialReportingCategory', 'OBDollarsFinancialReportingSortOrder'))) and not exists(select 1 from RESQLReportRegisteredAttribute ex where ex.RegisteredDimensionGUID = @rdguid and ex.AttributeGUID = isnull(da.AttributeGUID, a.AttributeGUID)) end --job code if (exists (select 1 from sys.columns c inner join sys.views v on v.object_id = c.object_id inner join sys.schemas s on s.schema_id = v.schema_id where s.name + '.' + v.name = @dvsql and c.name = 'JobCodeID')) or (exists (select 1 from sys.columns c inner join sys.tables t on t.object_id = c.object_id inner join sys.schemas s on s.schema_id = t.schema_id where s.name + '.' + t.name = @dvsql and c.name = 'JobCodeID')) begin print @dvsql + ' (' + cast(@dvguid as nvarchar(36)) + ') - Registering JobCodeID' insert into RESQLReportRegisteredDimension (DataViewGUID, DimensionGUID, HierarchyGUID, SQLColumnNames, KeyColumnName, KeyGUID, IsKeyColumnVisible, KeyJoinType, IsSecured) select @dvguid, d.DimensionGUID, d.DefaultHierarchyGUID, '', 'JobCodeID', d.DefaultKeyGUID, 1, 1, 0 from ScoreDimension d where d.GlobalID = 'Job Code' and not exists (select 1 from RESQLReportRegisteredDimension ex where ex.DataViewGUID = @dvguid and ex.DimensionGUID = d.DimensionGUID); select @rdguid = rd.RegisteredDimensionGUID from RESQLReportRegisteredDimension rd inner join ScoreDimension d on d.DImensionGUID = rd.DimensionGUID where d.GlobalID = 'Job Code' and rd.DataViewGUID = @dvguid; insert into RESQLReportRegisteredAttribute (RegisteredDimensionGUID, AttributeGUID, ColumnAlias) select distinct @rdguid, isnull(da.AttributeGUID, a.AttributeGUID), case when a.SQLColumnName = 'Name' then 'Job Code Name' when a.SQLColumnName = 'Description' then 'Job Code Description' else isnull(da.FriendlyName, a.FriendlyName) end from viewScoreAttribute a left join viewScoreAttribute da on da.SQLColumnName + 'ID' = a.SQLColumnName and da.DimensionGUID = a.DimensionGUID where a.DimensionName = 'Job Code' and ((a.IsHidden = 0 and a.IsLocked = 0 and a.FrameworkID in(0, 2) and a.SQLColumnName not like '%IsDefined' and a.SQLColumnName not like '%ID') or a.SQLColumnName in('Name', 'JobCodeGroup')) and not exists(select 1 from RESQLReportRegisteredAttribute ex where ex.RegisteredDimensionGUID = @rdguid and ex.AttributeGUID = isnull(da.AttributeGUID, a.AttributeGUID)) end --pay code if (exists (select 1 from sys.columns c inner join sys.views v on v.object_id = c.object_id inner join sys.schemas s on s.schema_id = v.schema_id where s.name + '.' + v.name = @dvsql and c.name = 'PayCodeID')) or (exists (select 1 from sys.columns c inner join sys.tables t on t.object_id = c.object_id inner join sys.schemas s on s.schema_id = t.schema_id where s.name + '.' + t.name = @dvsql and c.name = 'PayCodeID')) begin print @dvsql + ' (' + cast(@dvguid as nvarchar(36)) + ') - Registering PayCodeID' insert into RESQLReportRegisteredDimension (DataViewGUID, DimensionGUID, HierarchyGUID, SQLColumnNames, KeyColumnName, KeyGUID, IsKeyColumnVisible, KeyJoinType, IsSecured) select @dvguid, d.DimensionGUID, d.DefaultHierarchyGUID, '', 'PayCodeID', d.DefaultKeyGUID, 1, 1, 0 from ScoreDimension d where d.GlobalID = 'Pay Code' and not exists (select 1 from RESQLReportRegisteredDimension ex where ex.DataViewGUID = @dvguid and ex.DimensionGUID = d.DimensionGUID); select @rdguid = rd.RegisteredDimensionGUID from RESQLReportRegisteredDimension rd inner join ScoreDimension d on d.DImensionGUID = rd.DimensionGUID where d.GlobalID = 'Pay Code' and rd.DataViewGUID = @dvguid; insert into RESQLReportRegisteredAttribute (RegisteredDimensionGUID, AttributeGUID, ColumnAlias) select distinct @rdguid, isnull(da.AttributeGUID, a.AttributeGUID), case when a.SQLColumnName = 'Name' then 'Pay Code Name' when a.SQLColumnName = 'Description' then 'Pay Code Description' else isnull(da.FriendlyName, a.FriendlyName) end from viewScoreAttribute a left join viewScoreAttribute da on da.SQLColumnName + 'ID' = a.SQLColumnName and da.DimensionGUID = a.DimensionGUID where a.DimensionName = 'Pay Code' and ((a.IsHidden = 0 and a.IsLocked = 0 and a.FrameworkID in(0, 2) and a.SQLColumnName not like '%IsDefined' and a.SQLColumnName not like '%ID') or a.SQLColumnName in('Name', 'PayCodeGroup')) and not exists(select 1 from RESQLReportRegisteredAttribute ex where ex.RegisteredDimensionGUID = @rdguid and ex.AttributeGUID = isnull(da.AttributeGUID, a.AttributeGUID)) end --pay code group if (exists (select 1 from sys.columns c inner join sys.views v on v.object_id = c.object_id inner join sys.schemas s on s.schema_id = v.schema_id where s.name + '.' + v.name = @dvsql and c.name = 'PayCodeGroupID')) or (exists (select 1 from sys.columns c inner join sys.tables t on t.object_id = c.object_id inner join sys.schemas s on s.schema_id = t.schema_id where s.name + '.' + t.name = @dvsql and c.name = 'PayCodeGroupID')) begin print @dvsql + ' (' + cast(@dvguid as nvarchar(36)) + ') - Registering PayCodeGroupID' insert into RESQLReportRegisteredDimension (DataViewGUID, DimensionGUID, HierarchyGUID, SQLColumnNames, KeyColumnName, KeyGUID, IsKeyColumnVisible, KeyJoinType, IsSecured) select @dvguid, d.DimensionGUID, d.DefaultHierarchyGUID, '', 'PayCodeGroupID', d.DefaultKeyGUID, 1, 1, 0 from ScoreDimension d where d.GlobalID = 'Pay Code Group' and not exists (select 1 from RESQLReportRegisteredDimension ex where ex.DataViewGUID = @dvguid and ex.DimensionGUID = d.DimensionGUID); select @rdguid = rd.RegisteredDimensionGUID from RESQLReportRegisteredDimension rd inner join ScoreDimension d on d.DImensionGUID = rd.DimensionGUID where d.GlobalID = 'Pay Code Group' and rd.DataViewGUID = @dvguid; insert into RESQLReportRegisteredAttribute (RegisteredDimensionGUID, AttributeGUID, ColumnAlias) select distinct @rdguid, isnull(da.AttributeGUID, a.AttributeGUID), case when a.SQLColumnName = 'Name' then 'Pay Code Group' when a.SQLColumnName = 'Description' then 'Pay Code Group Description' else isnull(da.FriendlyName, a.FriendlyName) end from viewScoreAttribute a left join viewScoreAttribute da on da.SQLColumnName + 'ID' = a.SQLColumnName and da.DimensionGUID = a.DimensionGUID where a.DimensionName = 'Pay Code Group' and ((a.IsHidden = 0 and a.IsLocked = 0 and a.FrameworkID in(0, 2) and a.SQLColumnName not like '%IsDefined' and a.SQLColumnName not like '%ID') or a.SQLColumnName in('Name', 'PayClass', 'IsPremium', 'IsOvertime', 'IsAgency', 'IsDirect', 'ProductiveClass')) and not exists(select 1 from RESQLReportRegisteredAttribute ex where ex.RegisteredDimensionGUID = @rdguid and ex.AttributeGUID = isnull(da.AttributeGUID, a.AttributeGUID)) end --employee if (exists (select 1 from sys.columns c inner join sys.views v on v.object_id = c.object_id inner join sys.schemas s on s.schema_id = v.schema_id where s.name + '.' + v.name = @dvsql and c.name = 'EmployeeID')) or (exists (select 1 from sys.columns c inner join sys.tables t on t.object_id = c.object_id inner join sys.schemas s on s.schema_id = t.schema_id where s.name + '.' + t.name = @dvsql and c.name = 'EmployeeID')) begin print @dvsql + ' (' + cast(@dvguid as nvarchar(36)) + ') - Registering EmployeeID' insert into RESQLReportRegisteredDimension (DataViewGUID, DimensionGUID, HierarchyGUID, SQLColumnNames, KeyColumnName, KeyGUID, IsKeyColumnVisible, KeyJoinType, IsSecured) select @dvguid, d.DimensionGUID, d.DefaultHierarchyGUID, '', 'EmployeeID', d.DefaultKeyGUID, 1, 1, 0 from ScoreDimension d where d.GlobalID = 'Employee' and not exists (select 1 from RESQLReportRegisteredDimension ex where ex.DataViewGUID = @dvguid and ex.DimensionGUID = d.DimensionGUID); select @rdguid = rd.RegisteredDimensionGUID from RESQLReportRegisteredDimension rd inner join ScoreDimension d on d.DImensionGUID = rd.DimensionGUID where d.GlobalID = 'Employee' and rd.DataViewGUID = @dvguid; insert into RESQLReportRegisteredAttribute (RegisteredDimensionGUID, AttributeGUID, ColumnAlias) select distinct @rdguid, isnull(da.AttributeGUID, a.AttributeGUID), case when a.SQLColumnName = 'Name' then 'Employee' else isnull(da.FriendlyName, a.FriendlyName) end from viewScoreAttribute a left join viewScoreAttribute da on da.SQLColumnName + 'ID' = a.SQLColumnName and da.DimensionGUID = a.DimensionGUID where a.DimensionName = 'Employee' and ((a.IsHidden = 0 and a.IsLocked = 0 and a.FrameworkID in(0, 2) and a.SQLColumnName not like '%IsDefined' and a.SQLColumnName not like '%ID') or a.SQLColumnName = 'Name') and not exists(select 1 from RESQLReportRegisteredAttribute ex where ex.RegisteredDimensionGUID = @rdguid and ex.AttributeGUID = isnull(da.AttributeGUID, a.AttributeGUID)) end --time class if (exists (select 1 from sys.columns c inner join sys.views v on v.object_id = c.object_id inner join sys.schemas s on s.schema_id = v.schema_id where s.name + '.' + v.name = @dvsql and c.name = 'TimeClassID')) or (exists (select 1 from sys.columns c inner join sys.tables t on t.object_id = c.object_id inner join sys.schemas s on s.schema_id = t.schema_id where s.name + '.' + t.name = @dvsql and c.name = 'TimeClassID')) begin print @dvsql + ' (' + cast(@dvguid as nvarchar(36)) + ') - Registering TimeClassID' insert into RESQLReportRegisteredDimension (DataViewGUID, DimensionGUID, HierarchyGUID, SQLColumnNames, KeyColumnName, KeyGUID, IsKeyColumnVisible, KeyJoinType, IsSecured) select @dvguid, d.DimensionGUID, d.DefaultHierarchyGUID, '', 'TimeClassID', d.DefaultKeyGUID, 1, 1, 0 from ScoreDimension d where d.GlobalID = 'Time Class' and not exists (select 1 from RESQLReportRegisteredDimension ex where ex.DataViewGUID = @dvguid and ex.DimensionGUID = d.DimensionGUID); select @rdguid = rd.RegisteredDimensionGUID from RESQLReportRegisteredDimension rd inner join ScoreDimension d on d.DImensionGUID = rd.DimensionGUID where d.GlobalID = 'Time Class' and rd.DataViewGUID = @dvguid; insert into RESQLReportRegisteredAttribute (RegisteredDimensionGUID, AttributeGUID, ColumnAlias) select distinct @rdguid, isnull(da.AttributeGUID, a.AttributeGUID), case when a.SQLColumnName = 'Name' then 'Time Class' else isnull(da.FriendlyName, a.FriendlyName) end from viewScoreAttribute a left join viewScoreAttribute da on da.SQLColumnName + 'ID' = a.SQLColumnName and da.DimensionGUID = a.DimensionGUID where a.DimensionName = 'Time Class' and ((a.IsHidden = 0 and a.IsLocked = 0 and a.FrameworkID in(2) and a.SQLColumnName not like '%IsDefined' and a.SQLColumnName not like '%ID') or a.SQLColumnName = 'Name') and not exists(select 1 from RESQLReportRegisteredAttribute ex where ex.RegisteredDimensionGUID = @rdguid and ex.AttributeGUID = isnull(da.AttributeGUID, a.AttributeGUID)) end --fiscal year if (exists (select 1 from sys.columns c inner join sys.views v on v.object_id = c.object_id inner join sys.schemas s on s.schema_id = v.schema_id where s.name + '.' + v.name = @dvsql and c.name = 'FiscalYearID')) or (exists (select 1 from sys.columns c inner join sys.tables t on t.object_id = c.object_id inner join sys.schemas s on s.schema_id = t.schema_id where s.name + '.' + t.name = @dvsql and c.name = 'FiscalYearID')) begin print @dvsql + ' (' + cast(@dvguid as nvarchar(36)) + ') - Registering FiscalYearID' insert into RESQLReportRegisteredDimension (DataViewGUID, DimensionGUID, HierarchyGUID, SQLColumnNames, KeyColumnName, KeyGUID, IsKeyColumnVisible, KeyJoinType, IsSecured) select @dvguid, d.DimensionGUID, d.DefaultHierarchyGUID, '', 'FiscalYearID', d.DefaultKeyGUID, 1, 1, 0 from ScoreDimension d where d.GlobalID = 'Fiscal Year' and not exists (select 1 from RESQLReportRegisteredDimension ex where ex.DataViewGUID = @dvguid and ex.DimensionGUID = d.DimensionGUID); select @rdguid = rd.RegisteredDimensionGUID from RESQLReportRegisteredDimension rd inner join ScoreDimension d on d.DImensionGUID = rd.DimensionGUID where d.GlobalID = 'Fiscal Year' and rd.DataViewGUID = @dvguid; insert into RESQLReportRegisteredAttribute (RegisteredDimensionGUID, AttributeGUID, ColumnAlias) select distinct @rdguid, isnull(da.AttributeGUID, a.AttributeGUID), case when a.SQLColumnName = 'Name' then 'Fiscal Year' else isnull(da.FriendlyName, a.FriendlyName) end from viewScoreAttribute a left join viewScoreAttribute da on da.SQLColumnName + 'ID' = a.SQLColumnName and da.DimensionGUID = a.DimensionGUID where a.DimensionName = 'Fiscal Year' and ((a.IsHidden = 0 and a.IsLocked = 0 and a.FrameworkID in(2) and a.SQLColumnName not like '%IsDefined' and a.SQLColumnName not like '%ID') or a.SQLColumnName = 'Name') and not exists(select 1 from RESQLReportRegisteredAttribute ex where ex.RegisteredDimensionGUID = @rdguid and ex.AttributeGUID = isnull(da.AttributeGUID, a.AttributeGUID)) end --fiscal month if (exists (select 1 from sys.columns c inner join sys.views v on v.object_id = c.object_id inner join sys.schemas s on s.schema_id = v.schema_id where s.name + '.' + v.name = @dvsql and c.name = 'FiscalMonthID')) or (exists (select 1 from sys.columns c inner join sys.tables t on t.object_id = c.object_id inner join sys.schemas s on s.schema_id = t.schema_id where s.name + '.' + t.name = @dvsql and c.name = 'FiscalMonthID')) begin print @dvsql + ' (' + cast(@dvguid as nvarchar(36)) + ') - Registering FiscalMonthID' insert into RESQLReportRegisteredDimension (DataViewGUID, DimensionGUID, HierarchyGUID, SQLColumnNames, KeyColumnName, KeyGUID, IsKeyColumnVisible, KeyJoinType, IsSecured) select @dvguid, d.DimensionGUID, d.DefaultHierarchyGUID, '', 'FiscalMonthID', d.DefaultKeyGUID, 1, 1, 0 from ScoreDimension d where d.GlobalID = 'Fiscal Month' and not exists (select 1 from RESQLReportRegisteredDimension ex where ex.DataViewGUID = @dvguid and ex.DimensionGUID = d.DimensionGUID); select @rdguid = rd.RegisteredDimensionGUID from RESQLReportRegisteredDimension rd inner join ScoreDimension d on d.DImensionGUID = rd.DimensionGUID where d.GlobalID = 'Fiscal Month' and rd.DataViewGUID = @dvguid; insert into RESQLReportRegisteredAttribute (RegisteredDimensionGUID, AttributeGUID, ColumnAlias) select distinct @rdguid, isnull(da.AttributeGUID, a.AttributeGUID), case when a.SQLColumnName = 'Name' then 'Fiscal Month' else isnull(da.FriendlyName, a.FriendlyName) end from viewScoreAttribute a left join viewScoreAttribute da on da.SQLColumnName + 'ID' = a.SQLColumnName and da.DimensionGUID = a.DimensionGUID where a.DimensionName = 'Fiscal Month' and ((a.IsHidden = 0 and a.IsLocked = 0 and a.FrameworkID in(2) and a.SQLColumnName not like '%IsDefined' and a.SQLColumnName not like '%ID') or a.SQLColumnName in('Name', 'FiscalMonthCode')) and not exists(select 1 from RESQLReportRegisteredAttribute ex where ex.RegisteredDimensionGUID = @rdguid and ex.AttributeGUID = isnull(da.AttributeGUID, a.AttributeGUID)) end --date if (exists (select 1 from sys.columns c inner join sys.views v on v.object_id = c.object_id inner join sys.schemas s on s.schema_id = v.schema_id where s.name + '.' + v.name = @dvsql and c.name = 'DateID')) or (exists (select 1 from sys.columns c inner join sys.tables t on t.object_id = c.object_id inner join sys.schemas s on s.schema_id = t.schema_id where s.name + '.' + t.name = @dvsql and c.name = 'DateID')) begin print @dvsql + ' (' + cast(@dvguid as nvarchar(36)) + ') - Registering DateID' insert into RESQLReportRegisteredDimension (DataViewGUID, DimensionGUID, HierarchyGUID, SQLColumnNames, KeyColumnName, KeyGUID, IsKeyColumnVisible, KeyJoinType, IsSecured) select @dvguid, d.DimensionGUID, d.DefaultHierarchyGUID, '', 'DateID', d.DefaultKeyGUID, 1, 1, 0 from ScoreDimension d where d.GlobalID = 'Date' and not exists (select 1 from RESQLReportRegisteredDimension ex where ex.DataViewGUID = @dvguid and ex.DimensionGUID = d.DimensionGUID); select @rdguid = rd.RegisteredDimensionGUID from RESQLReportRegisteredDimension rd inner join ScoreDimension d on d.DImensionGUID = rd.DimensionGUID where d.GlobalID = 'Date' and rd.DataViewGUID = @dvguid; insert into RESQLReportRegisteredAttribute (RegisteredDimensionGUID, AttributeGUID, ColumnAlias) select distinct @rdguid, isnull(da.AttributeGUID, a.AttributeGUID), case when a.SQLColumnName = 'Name' then 'Date' else isnull(da.FriendlyName, a.FriendlyName) end from viewScoreAttribute a left join viewScoreAttribute da on da.SQLColumnName + 'ID' = a.SQLColumnName and da.DimensionGUID = a.DimensionGUID where a.DimensionName = 'Date' and ((a.IsHidden = 0 and a.IsLocked = 0 and a.FrameworkID in(2) and a.SQLColumnName not like '%IsDefined' and a.SQLColumnName not like '%ID') or a.SQLColumnName in('Name', 'CalendarDateTime', 'CalendarMonth', 'CalendarMonthName', 'CalendarYear', 'DayNameOfWeek', 'DayNumberOfMonth', 'FiscalYear', 'IsWeekDay')) and not exists(select 1 from RESQLReportRegisteredAttribute ex where ex.RegisteredDimensionGUID = @rdguid and ex.AttributeGUID = isnull(da.AttributeGUID, a.AttributeGUID)) end --unit type if (exists (select 1 from sys.columns c inner join sys.views v on v.object_id = c.object_id inner join sys.schemas s on s.schema_id = v.schema_id where s.name + '.' + v.name = @dvsql and c.name = 'UnitTypeID')) or (exists (select 1 from sys.columns c inner join sys.tables t on t.object_id = c.object_id inner join sys.schemas s on s.schema_id = t.schema_id where s.name + '.' + t.name = @dvsql and c.name = 'UnitTypeID')) begin print @dvsql + ' (' + cast(@dvguid as nvarchar(36)) + ') - Registering UnitTypeID' insert into RESQLReportRegisteredDimension (DataViewGUID, DimensionGUID, HierarchyGUID, SQLColumnNames, KeyColumnName, KeyGUID, IsKeyColumnVisible, KeyJoinType, IsSecured) select @dvguid, d.DimensionGUID, d.DefaultHierarchyGUID, '', 'UnitTypeID', d.DefaultKeyGUID, 1, 1, 0 from ScoreDimension d where d.GlobalID = 'Unit Type' and not exists (select 1 from RESQLReportRegisteredDimension ex where ex.DataViewGUID = @dvguid and ex.DimensionGUID = d.DimensionGUID); select @rdguid = rd.RegisteredDimensionGUID from RESQLReportRegisteredDimension rd inner join ScoreDimension d on d.DImensionGUID = rd.DimensionGUID where d.GlobalID = 'Unit Type' and rd.DataViewGUID = @dvguid; insert into RESQLReportRegisteredAttribute (RegisteredDimensionGUID, AttributeGUID, ColumnAlias) select distinct @rdguid, isnull(da.AttributeGUID, a.AttributeGUID), case when a.SQLColumnName = 'Name' then 'Unit Type' else isnull(da.FriendlyName, a.FriendlyName) end from viewScoreAttribute a left join viewScoreAttribute da on da.SQLColumnName + 'ID' = a.SQLColumnName and da.DimensionGUID = a.DimensionGUID where a.DimensionName = 'Unit Type' and ((a.IsHidden = 0 and a.IsLocked = 0 and a.FrameworkID in(2) and a.SQLColumnName not like '%IsDefined' and a.SQLColumnName not like '%ID') or a.SQLColumnName = 'Name') and not exists(select 1 from RESQLReportRegisteredAttribute ex where ex.RegisteredDimensionGUID = @rdguid and ex.AttributeGUID = isnull(da.AttributeGUID, a.AttributeGUID)) end --provider if (exists (select 1 from sys.columns c inner join sys.views v on v.object_id = c.object_id inner join sys.schemas s on s.schema_id = v.schema_id where s.name + '.' + v.name = @dvsql and c.name = 'ProviderID')) or (exists (select 1 from sys.columns c inner join sys.tables t on t.object_id = c.object_id inner join sys.schemas s on s.schema_id = t.schema_id where s.name + '.' + t.name = @dvsql and c.name = 'ProviderID')) begin print @dvsql + ' (' + cast(@dvguid as nvarchar(36)) + ') - Registering ProviderID' insert into RESQLReportRegisteredDimension (DataViewGUID, DimensionGUID, HierarchyGUID, SQLColumnNames, KeyColumnName, KeyGUID, IsKeyColumnVisible, KeyJoinType, IsSecured) select @dvguid, d.DimensionGUID, d.DefaultHierarchyGUID, '', 'ProviderID', d.DefaultKeyGUID, 1, 1, 0 from ScoreDimension d where d.GlobalID = 'Provider' and not exists (select 1 from RESQLReportRegisteredDimension ex where ex.DataViewGUID = @dvguid and ex.DimensionGUID = d.DimensionGUID); select @rdguid = rd.RegisteredDimensionGUID from RESQLReportRegisteredDimension rd inner join ScoreDimension d on d.DImensionGUID = rd.DimensionGUID where d.GlobalID = 'Provider' and rd.DataViewGUID = @dvguid; insert into RESQLReportRegisteredAttribute (RegisteredDimensionGUID, AttributeGUID, ColumnAlias) select distinct @rdguid, isnull(da.AttributeGUID, a.AttributeGUID), case when a.SQLColumnName = 'Name' then 'Provider' else isnull(da.FriendlyName, a.FriendlyName) end from viewScoreAttribute a left join viewScoreAttribute da on da.SQLColumnName + 'ID' = a.SQLColumnName and da.DimensionGUID = a.DimensionGUID where a.DimensionName = 'Provider' and ((a.IsHidden = 0 and a.IsLocked = 0 and a.FrameworkID in(2) and a.SQLColumnName not like '%IsDefined' and a.SQLColumnName not like '%ID') or a.SQLColumnName in('Name', 'NameFirst', 'NameLast', 'ProviderCode', 'Type', 'WorkWeekOverrideID')) and not exists(select 1 from RESQLReportRegisteredAttribute ex where ex.RegisteredDimensionGUID = @rdguid and ex.AttributeGUID = isnull(da.AttributeGUID, a.AttributeGUID)) end --physician specialty if (exists (select 1 from sys.columns c inner join sys.views v on v.object_id = c.object_id inner join sys.schemas s on s.schema_id = v.schema_id where s.name + '.' + v.name = @dvsql and c.name = 'PhysicianSpecialtyID')) or (exists (select 1 from sys.columns c inner join sys.tables t on t.object_id = c.object_id inner join sys.schemas s on s.schema_id = t.schema_id where s.name + '.' + t.name = @dvsql and c.name = 'PhysicianSpecialtyID')) begin print @dvsql + ' (' + cast(@dvguid as nvarchar(36)) + ') - Registering PhysicianSpecialtyID' insert into RESQLReportRegisteredDimension (DataViewGUID, DimensionGUID, HierarchyGUID, SQLColumnNames, KeyColumnName, KeyGUID, IsKeyColumnVisible, KeyJoinType, IsSecured) select @dvguid, d.DimensionGUID, d.DefaultHierarchyGUID, '', 'PhysicianSpecialtyID', d.DefaultKeyGUID, 1, 1, 0 from ScoreDimension d where d.GlobalID = 'Physician Specialty' and not exists (select 1 from RESQLReportRegisteredDimension ex where ex.DataViewGUID = @dvguid and ex.DimensionGUID = d.DimensionGUID); select @rdguid = rd.RegisteredDimensionGUID from RESQLReportRegisteredDimension rd inner join ScoreDimension d on d.DImensionGUID = rd.DimensionGUID where d.GlobalID = 'Physician Specialty' and rd.DataViewGUID = @dvguid; insert into RESQLReportRegisteredAttribute (RegisteredDimensionGUID, AttributeGUID, ColumnAlias) select distinct @rdguid, isnull(da.AttributeGUID, a.AttributeGUID), case when a.SQLColumnName = 'Name' then 'Physician Specialty' when a.SQLColumnName = 'Description' then 'Physician Specialty Description' else isnull(da.FriendlyName, a.FriendlyName) end from viewScoreAttribute a left join viewScoreAttribute da on da.SQLColumnName + 'ID' = a.SQLColumnName and da.DimensionGUID = a.DimensionGUID where a.DimensionName = 'Physician Specialty' and ((a.IsHidden = 0 and a.IsLocked = 0 and a.SQLColumnName not like '%IsDefined' and a.SQLColumnName not like '%ID' and a.SQLColumnName not in('RVUTarget', 'SpecialtyGroup')) or a.SQLColumnName in('Name', 'PhysicianSpecialtyCode', 'Description')) and not exists(select 1 from RESQLReportRegisteredAttribute ex where ex.RegisteredDimensionGUID = @rdguid and ex.AttributeGUID = isnull(da.AttributeGUID, a.AttributeGUID)) end --OB Forecast Detail if (exists (select 1 from sys.columns c inner join sys.views v on v.object_id = c.object_id inner join sys.schemas s on s.schema_id = v.schema_id where s.name + '.' + v.name = @dvsql and c.name = 'OBForecastDetailID')) or (exists (select 1 from sys.columns c inner join sys.tables t on t.object_id = c.object_id inner join sys.schemas s on s.schema_id = t.schema_id where s.name + '.' + t.name = @dvsql and c.name = 'OBForecastDetailID')) begin print @dvsql + ' (' + cast(@dvguid as nvarchar(36)) + ') - Registering OBForecastDetailID' insert into RESQLReportRegisteredDimension (DataViewGUID, DimensionGUID, HierarchyGUID, SQLColumnNames, KeyColumnName, KeyGUID, IsKeyColumnVisible, KeyJoinType, IsSecured) select @dvguid, d.DimensionGUID, d.DefaultHierarchyGUID, '', 'OBForecastDetailID', d.DefaultKeyGUID, 1, 1, 0 from ScoreDimension d where d.GlobalID = 'OB Forecast Detail' and not exists (select 1 from RESQLReportRegisteredDimension ex where ex.DataViewGUID = @dvguid and ex.DimensionGUID = d.DimensionGUID); select @rdguid = rd.RegisteredDimensionGUID from RESQLReportRegisteredDimension rd inner join ScoreDimension d on d.DImensionGUID = rd.DimensionGUID where d.GlobalID = 'OB Forecast Detail' and rd.DataViewGUID = @dvguid; insert into RESQLReportRegisteredAttribute (RegisteredDimensionGUID, AttributeGUID, ColumnAlias) select distinct @rdguid, isnull(da.AttributeGUID, a.AttributeGUID), case when a.SQLColumnName = 'Name' then 'OB Forecast Detail' else isnull(da.FriendlyName, a.FriendlyName) end from viewScoreAttribute a left join viewScoreAttribute da on da.SQLColumnName + 'ID' = a.SQLColumnName and da.DimensionGUID = a.DimensionGUID where a.DimensionName = 'OB Forecast Detail' and ((a.IsHidden = 0 and a.IsLocked = 0 and a.FrameworkID in(2) and a.SQLColumnName not like '%IsDefined' and a.SQLColumnName not like '%ID') or a.SQLColumnName ='Name') and not exists(select 1 from RESQLReportRegisteredAttribute ex where ex.RegisteredDimensionGUID = @rdguid and ex.AttributeGUID = isnull(da.AttributeGUID, a.AttributeGUID)) end --System declare @systemGUID uniqueidentifier = (select DimensionGUID from dbo.ScoreDimension where GlobalID = 'System') if (exists (select 1 from sys.columns c inner join sys.views v on v.object_id = c.object_id inner join sys.schemas s on s.schema_id = v.schema_id where s.name + '.' + v.name = @dvsql and c.name = 'SystemID')) or (exists (select 1 from sys.columns c inner join sys.tables t on t.object_id = c.object_id inner join sys.schemas s on s.schema_id = t.schema_id where s.name + '.' + t.name = @dvsql and c.name = 'SystemID')) begin print @dvsql + ' (' + cast(@dvguid as nvarchar(36)) + ') - Registering SystemID' insert into RESQLReportRegisteredDimension (DataViewGUID, DimensionGUID, HierarchyGUID, SQLColumnNames, KeyColumnName, KeyGUID, IsKeyColumnVisible, KeyJoinType, IsSecured) select @dvguid, d.DimensionGUID, d.DefaultHierarchyGUID, '', 'SystemID', d.DefaultKeyGUID, 1, 1, 0 from ScoreDimension d where d.GlobalID = 'System' and not exists (select 1 from RESQLReportRegisteredDimension ex where ex.DataViewGUID = @dvguid and ex.DimensionGUID = d.DimensionGUID); select @rdguid = rd.RegisteredDimensionGUID from RESQLReportRegisteredDimension rd inner join ScoreDimension d on d.DimensionGUID = rd.DimensionGUID where d.GlobalID = 'System' and rd.DataViewGUID = @dvguid; insert into RESQLReportRegisteredAttribute (RegisteredDimensionGUID, AttributeGUID, ColumnAlias) select distinct @rdguid, isnull(da.AttributeGUID, a.AttributeGUID), case when a.SQLColumnName = 'Name' then 'System' when a.SQLColumnName = 'Code' then 'System Code' else isnull(da.FriendlyName, a.FriendlyName) end from viewScoreAttribute a left join viewScoreAttribute da on da.SQLColumnName + 'ID' = a.SQLColumnName and da.DimensionGUID = a.DimensionGUID where a.DimensionGUID = @systemGUID and (a.SQLColumnName = 'Name' or a.SQLColumnName = 'Code') and not exists(select 1 from RESQLReportRegisteredAttribute ex where ex.RegisteredDimensionGUID = @rdguid and ex.AttributeGUID = isnull(da.AttributeGUID, a.AttributeGUID)) end --Entity declare @entityGUID uniqueidentifier = (select DimensionGUID from dbo.ScoreDimension where GlobalID = 'Entity') if (exists (select 1 from sys.columns c inner join sys.views v on v.object_id = c.object_id inner join sys.schemas s on s.schema_id = v.schema_id where s.name + '.' + v.name = @dvsql and c.name = 'EntityID')) or (exists (select 1 from sys.columns c inner join sys.tables t on t.object_id = c.object_id inner join sys.schemas s on s.schema_id = t.schema_id where s.name + '.' + t.name = @dvsql and c.name = 'EntityID')) begin print @dvsql + ' (' + cast(@dvguid as nvarchar(36)) + ') - Registering EntityID' insert into RESQLReportRegisteredDimension (DataViewGUID, DimensionGUID, HierarchyGUID, SQLColumnNames, KeyColumnName, KeyGUID, IsKeyColumnVisible, KeyJoinType, IsSecured) select @dvguid, d.DimensionGUID, d.DefaultHierarchyGUID, '', 'EntityID', d.DefaultKeyGUID, 1, 1, 0 from ScoreDimension d where d.GlobalID = 'Entity' and not exists (select 1 from RESQLReportRegisteredDimension ex where ex.DataViewGUID = @dvguid and ex.DimensionGUID = d.DimensionGUID); select @rdguid = rd.RegisteredDimensionGUID from RESQLReportRegisteredDimension rd inner join ScoreDimension d on d.DImensionGUID = rd.DimensionGUID where d.GlobalID = 'Entity' and rd.DataViewGUID = @dvguid; insert into RESQLReportRegisteredAttribute (RegisteredDimensionGUID, AttributeGUID, ColumnAlias) select distinct @rdguid, isnull(da.AttributeGUID, a.AttributeGUID), case when a.SQLColumnName = 'Name' then 'Entity' when a.SQLColumnName = 'Code' then 'Entity Code' else isnull(da.FriendlyName, a.FriendlyName) end from viewScoreAttribute a left join viewScoreAttribute da on da.SQLColumnName + 'ID' = a.SQLColumnName and da.DimensionGUID = a.DimensionGUID where a.DimensionGUID = @entityGUID and (a.SQLColumnName = 'Name' or a.SQLColumnName = 'Code') and not exists(select 1 from RESQLReportRegisteredAttribute ex where ex.RegisteredDimensionGUID = @rdguid and ex.AttributeGUID = isnull(da.AttributeGUID, a.AttributeGUID)) end --Department Rollup 1 declare @departmentRollup1GUID uniqueidentifier = (select DimensionGUID from dbo.ScoreDimension where GlobalID = 'Department Rollup 1') if (exists (select 1 from sys.columns c inner join sys.views v on v.object_id = c.object_id inner join sys.schemas s on s.schema_id = v.schema_id where s.name + '.' + v.name = @dvsql and c.name = 'DepartmentRollup1ID')) or (exists (select 1 from sys.columns c inner join sys.tables t on t.object_id = c.object_id inner join sys.schemas s on s.schema_id = t.schema_id where s.name + '.' + t.name = @dvsql and c.name = 'DepartmentRollup1ID')) begin print @dvsql + ' (' + cast(@dvguid as nvarchar(36)) + ') - Registering DepartmentRollup1ID' insert into RESQLReportRegisteredDimension (DataViewGUID, DimensionGUID, HierarchyGUID, SQLColumnNames, KeyColumnName, KeyGUID, IsKeyColumnVisible, KeyJoinType, IsSecured) select @dvguid, d.DimensionGUID, d.DefaultHierarchyGUID, '', 'DepartmentRollup1ID', d.DefaultKeyGUID, 1, 1, 0 from ScoreDimension d where d.GlobalID = 'Department Rollup 1' and not exists (select 1 from RESQLReportRegisteredDimension ex where ex.DataViewGUID = @dvguid and ex.DimensionGUID = d.DimensionGUID); select @rdguid = rd.RegisteredDimensionGUID from RESQLReportRegisteredDimension rd inner join ScoreDimension d on d.DImensionGUID = rd.DimensionGUID where d.GlobalID = 'Department Rollup 1' and rd.DataViewGUID = @dvguid; insert into RESQLReportRegisteredAttribute (RegisteredDimensionGUID, AttributeGUID, ColumnAlias) select distinct @rdguid, isnull(da.AttributeGUID, a.AttributeGUID), case when a.SQLColumnName = 'Name' then 'Department Rollup 1' when a.SQLColumnName = 'Code' then 'Department Rollup 1 Code' else isnull(da.FriendlyName, a.FriendlyName) end from viewScoreAttribute a left join viewScoreAttribute da on da.SQLColumnName + 'ID' = a.SQLColumnName and da.DimensionGUID = a.DimensionGUID where a.DimensionGUID = @departmentRollup1GUID and (a.SQLColumnName = 'Name' or a.SQLColumnName = 'Code') and not exists(select 1 from RESQLReportRegisteredAttribute ex where ex.RegisteredDimensionGUID = @rdguid and ex.AttributeGUID = isnull(da.AttributeGUID, a.AttributeGUID)) end --Department Rollup 2 declare @departmentRollup2GUID uniqueidentifier = (select DimensionGUID from dbo.ScoreDimension where GlobalID = 'Department Rollup 2') if (exists (select 1 from sys.columns c inner join sys.views v on v.object_id = c.object_id inner join sys.schemas s on s.schema_id = v.schema_id where s.name + '.' + v.name = @dvsql and c.name = 'DepartmentRollup2ID')) or (exists (select 1 from sys.columns c inner join sys.tables t on t.object_id = c.object_id inner join sys.schemas s on s.schema_id = t.schema_id where s.name + '.' + t.name = @dvsql and c.name = 'DepartmentRollup2ID')) begin print @dvsql + ' (' + cast(@dvguid as nvarchar(36)) + ') - Registering DepartmentRollup2ID' insert into RESQLReportRegisteredDimension (DataViewGUID, DimensionGUID, HierarchyGUID, SQLColumnNames, KeyColumnName, KeyGUID, IsKeyColumnVisible, KeyJoinType, IsSecured) select @dvguid, d.DimensionGUID, d.DefaultHierarchyGUID, '', 'DepartmentRollup2ID', d.DefaultKeyGUID, 1, 1, 0 from ScoreDimension d where d.GlobalID = 'Department Rollup 2' and not exists (select 1 from RESQLReportRegisteredDimension ex where ex.DataViewGUID = @dvguid and ex.DimensionGUID = d.DimensionGUID); select @rdguid = rd.RegisteredDimensionGUID from RESQLReportRegisteredDimension rd inner join ScoreDimension d on d.DImensionGUID = rd.DimensionGUID where d.GlobalID = 'Department Rollup 2' and rd.DataViewGUID = @dvguid; insert into RESQLReportRegisteredAttribute (RegisteredDimensionGUID, AttributeGUID, ColumnAlias) select distinct @rdguid, isnull(da.AttributeGUID, a.AttributeGUID), case when a.SQLColumnName = 'Name' then 'Department Rollup 2' when a.SQLColumnName = 'Code' then 'Department Rollup 2 Code' else isnull(da.FriendlyName, a.FriendlyName) end from viewScoreAttribute a left join viewScoreAttribute da on da.SQLColumnName + 'ID' = a.SQLColumnName and da.DimensionGUID = a.DimensionGUID where a.DimensionGUID = @departmentRollup2GUID and (a.SQLColumnName = 'Name' or a.SQLColumnName = 'Code') and not exists(select 1 from RESQLReportRegisteredAttribute ex where ex.RegisteredDimensionGUID = @rdguid and ex.AttributeGUID = isnull(da.AttributeGUID, a.AttributeGUID)) end --Department Rollup 3 declare @departmentRollup3GUID uniqueidentifier = (select DimensionGUID from dbo.ScoreDimension where GlobalID = 'Department Rollup 3') if (exists (select 1 from sys.columns c inner join sys.views v on v.object_id = c.object_id inner join sys.schemas s on s.schema_id = v.schema_id where s.name + '.' + v.name = @dvsql and c.name = 'DepartmentRollup3ID')) or (exists (select 1 from sys.columns c inner join sys.tables t on t.object_id = c.object_id inner join sys.schemas s on s.schema_id = t.schema_id where s.name + '.' + t.name = @dvsql and c.name = 'DepartmentRollup3ID')) begin print @dvsql + ' (' + cast(@dvguid as nvarchar(36)) + ') - Registering DepartmentRollup3ID' insert into RESQLReportRegisteredDimension (DataViewGUID, DimensionGUID, HierarchyGUID, SQLColumnNames, KeyColumnName, KeyGUID, IsKeyColumnVisible, KeyJoinType, IsSecured) select @dvguid, d.DimensionGUID, d.DefaultHierarchyGUID, '', 'DepartmentRollup3ID', d.DefaultKeyGUID, 1, 1, 0 from ScoreDimension d where d.GlobalID = 'Department Rollup 3' and not exists (select 1 from RESQLReportRegisteredDimension ex where ex.DataViewGUID = @dvguid and ex.DimensionGUID = d.DimensionGUID); select @rdguid = rd.RegisteredDimensionGUID from RESQLReportRegisteredDimension rd inner join ScoreDimension d on d.DImensionGUID = rd.DimensionGUID where d.GlobalID = 'Department Rollup 3' and rd.DataViewGUID = @dvguid; insert into RESQLReportRegisteredAttribute (RegisteredDimensionGUID, AttributeGUID, ColumnAlias) select distinct @rdguid, isnull(da.AttributeGUID, a.AttributeGUID), case when a.SQLColumnName = 'Name' then 'Department Rollup 3' when a.SQLColumnName = 'Code' then 'Department Rollup 3 Code' else isnull(da.FriendlyName, a.FriendlyName) end from viewScoreAttribute a left join viewScoreAttribute da on da.SQLColumnName + 'ID' = a.SQLColumnName and da.DimensionGUID = a.DimensionGUID where a.DimensionGUID = @departmentRollup3GUID and (a.SQLColumnName = 'Name' or a.SQLColumnName = 'Code') and not exists(select 1 from RESQLReportRegisteredAttribute ex where ex.RegisteredDimensionGUID = @rdguid and ex.AttributeGUID = isnull(da.AttributeGUID, a.AttributeGUID)) end --Department Rollup 4 declare @departmentRollup4GUID uniqueidentifier = (select DimensionGUID from dbo.ScoreDimension where GlobalID = 'Department Rollup 4') if (exists (select 1 from sys.columns c inner join sys.views v on v.object_id = c.object_id inner join sys.schemas s on s.schema_id = v.schema_id where s.name + '.' + v.name = @dvsql and c.name = 'DepartmentRollup4ID')) or (exists (select 1 from sys.columns c inner join sys.tables t on t.object_id = c.object_id inner join sys.schemas s on s.schema_id = t.schema_id where s.name + '.' + t.name = @dvsql and c.name = 'DepartmentRollup4ID')) begin print @dvsql + ' (' + cast(@dvguid as nvarchar(36)) + ') - Registering DepartmentRollup4ID' insert into RESQLReportRegisteredDimension (DataViewGUID, DimensionGUID, HierarchyGUID, SQLColumnNames, KeyColumnName, KeyGUID, IsKeyColumnVisible, KeyJoinType, IsSecured) select @dvguid, d.DimensionGUID, d.DefaultHierarchyGUID, '', 'DepartmentRollup4ID', d.DefaultKeyGUID, 1, 1, 0 from ScoreDimension d where d.GlobalID = 'Department Rollup 4' and not exists (select 1 from RESQLReportRegisteredDimension ex where ex.DataViewGUID = @dvguid and ex.DimensionGUID = d.DimensionGUID); select @rdguid = rd.RegisteredDimensionGUID from RESQLReportRegisteredDimension rd inner join ScoreDimension d on d.DImensionGUID = rd.DimensionGUID where d.GlobalID = 'Department Rollup 4' and rd.DataViewGUID = @dvguid; insert into RESQLReportRegisteredAttribute (RegisteredDimensionGUID, AttributeGUID, ColumnAlias) select distinct @rdguid, isnull(da.AttributeGUID, a.AttributeGUID), case when a.SQLColumnName = 'Name' then 'Department Rollup 4' when a.SQLColumnName = 'Code' then 'Department Rollup 4 Code' else isnull(da.FriendlyName, a.FriendlyName) end from viewScoreAttribute a left join viewScoreAttribute da on da.SQLColumnName + 'ID' = a.SQLColumnName and da.DimensionGUID = a.DimensionGUID where a.DimensionGUID = @departmentRollup4GUID and (a.SQLColumnName = 'Name' or a.SQLColumnName = 'Code') and not exists(select 1 from RESQLReportRegisteredAttribute ex where ex.RegisteredDimensionGUID = @rdguid and ex.AttributeGUID = isnull(da.AttributeGUID, a.AttributeGUID)) end --Department Rollup 5 declare @departmentRollup5GUID uniqueidentifier = (select DimensionGUID from dbo.ScoreDimension where GlobalID = 'Department Rollup 5') if (exists (select 1 from sys.columns c inner join sys.views v on v.object_id = c.object_id inner join sys.schemas s on s.schema_id = v.schema_id where s.name + '.' + v.name = @dvsql and c.name = 'DepartmentRollup5ID')) or (exists (select 1 from sys.columns c inner join sys.tables t on t.object_id = c.object_id inner join sys.schemas s on s.schema_id = t.schema_id where s.name + '.' + t.name = @dvsql and c.name = 'DepartmentRollup5ID')) begin print @dvsql + ' (' + cast(@dvguid as nvarchar(36)) + ') - Registering DepartmentRollup5ID' insert into RESQLReportRegisteredDimension (DataViewGUID, DimensionGUID, HierarchyGUID, SQLColumnNames, KeyColumnName, KeyGUID, IsKeyColumnVisible, KeyJoinType, IsSecured) select @dvguid, d.DimensionGUID, d.DefaultHierarchyGUID, '', 'DepartmentRollup5ID', d.DefaultKeyGUID, 1, 1, 0 from ScoreDimension d where d.GlobalID = 'Department Rollup 5' and not exists (select 1 from RESQLReportRegisteredDimension ex where ex.DataViewGUID = @dvguid and ex.DimensionGUID = d.DimensionGUID); select @rdguid = rd.RegisteredDimensionGUID from RESQLReportRegisteredDimension rd inner join ScoreDimension d on d.DImensionGUID = rd.DimensionGUID where d.GlobalID = 'Department Rollup 5' and rd.DataViewGUID = @dvguid; insert into RESQLReportRegisteredAttribute (RegisteredDimensionGUID, AttributeGUID, ColumnAlias) select distinct @rdguid, isnull(da.AttributeGUID, a.AttributeGUID), case when a.SQLColumnName = 'Name' then 'Department Rollup 5' when a.SQLColumnName = 'Code' then 'Department Rollup 5 Code' else isnull(da.FriendlyName, a.FriendlyName) end from viewScoreAttribute a left join viewScoreAttribute da on da.SQLColumnName + 'ID' = a.SQLColumnName and da.DimensionGUID = a.DimensionGUID where a.DimensionGUID = @departmentRollup5GUID and (a.SQLColumnName = 'Name' or a.SQLColumnName = 'Code') and not exists(select 1 from RESQLReportRegisteredAttribute ex where ex.RegisteredDimensionGUID = @rdguid and ex.AttributeGUID = isnull(da.AttributeGUID, a.AttributeGUID)) end --Department Rollup 6 declare @departmentRollup6GUID uniqueidentifier = (select DimensionGUID from dbo.ScoreDimension where GlobalID = 'Department Rollup 6') if (exists (select 1 from sys.columns c inner join sys.views v on v.object_id = c.object_id inner join sys.schemas s on s.schema_id = v.schema_id where s.name + '.' + v.name = @dvsql and c.name = 'DepartmentRollup6ID')) or (exists (select 1 from sys.columns c inner join sys.tables t on t.object_id = c.object_id inner join sys.schemas s on s.schema_id = t.schema_id where s.name + '.' + t.name = @dvsql and c.name = 'DepartmentRollup6ID')) begin print @dvsql + ' (' + cast(@dvguid as nvarchar(36)) + ') - Registering DepartmentRollup6ID' insert into RESQLReportRegisteredDimension (DataViewGUID, DimensionGUID, HierarchyGUID, SQLColumnNames, KeyColumnName, KeyGUID, IsKeyColumnVisible, KeyJoinType, IsSecured) select @dvguid, d.DimensionGUID, d.DefaultHierarchyGUID, '', 'DepartmentRollup6ID', d.DefaultKeyGUID, 1, 1, 0 from ScoreDimension d where d.GlobalID = 'Department Rollup 6' and not exists (select 1 from RESQLReportRegisteredDimension ex where ex.DataViewGUID = @dvguid and ex.DimensionGUID = d.DimensionGUID); select @rdguid = rd.RegisteredDimensionGUID from RESQLReportRegisteredDimension rd inner join ScoreDimension d on d.DImensionGUID = rd.DimensionGUID where d.GlobalID = 'Department Rollup 6' and rd.DataViewGUID = @dvguid; insert into RESQLReportRegisteredAttribute (RegisteredDimensionGUID, AttributeGUID, ColumnAlias) select distinct @rdguid, isnull(da.AttributeGUID, a.AttributeGUID), case when a.SQLColumnName = 'Name' then 'Department Rollup 6' when a.SQLColumnName = 'Code' then 'Department Rollup 6 Code' else isnull(da.FriendlyName, a.FriendlyName) end from viewScoreAttribute a left join viewScoreAttribute da on da.SQLColumnName + 'ID' = a.SQLColumnName and da.DimensionGUID = a.DimensionGUID where a.DimensionGUID = @departmentRollup6GUID and (a.SQLColumnName = 'Name' or a.SQLColumnName = 'Code') and not exists(select 1 from RESQLReportRegisteredAttribute ex where ex.RegisteredDimensionGUID = @rdguid and ex.AttributeGUID = isnull(da.AttributeGUID, a.AttributeGUID)) end if (@isSafeMode = 0) begin --ensure settings exist for inferred attributes exec dbo.procScoreAttributeSettingAddMissing --unregister not used attributes delete ra from RESQLReportRegisteredDimension rd inner join RESQLReportRegisteredAttribute ra on ra.RegisteredDimensionGUID = rd.RegisteredDimensionGUID inner join ScoreDimension d on d.DimensionGUID = rd.DimensionGUID inner join ScoreAttributeSetting sas on sas.AttributeGUID = ra.AttributeGUID where d.GlobalID in('Department', 'OB Departmental Bduget') and rd.DataViewGUID = @dvguid and sas.OBIsUsed = 0 and sas.IsCustom = 1 --remove duplicates while (exists(select max(a.registeredattributeguid) from resqlreportregisteredattribute a inner join resqlreportregistereddimension d on d.registereddimensionguid = a.registereddimensionguid where d.DataViewGUID = @dvguid group by d.registereddimensionguid, a.attributeguid having count(*) > 1)) begin delete from resqlreportregisteredattribute where registeredattributeguid in(select max(a.registeredattributeguid) from resqlreportregisteredattribute a inner join resqlreportregistereddimension d on d.registereddimensionguid = a.registereddimensionguid where d.DataViewGUID = @dvguid group by d.registereddimensionguid, a.attributeguid having count(*) > 1) end end GO --------------------------------------------- -- ob.procDataViewRegisterDimensionsAll CREATE proc ob.procDataViewRegisterDimensionsAll as set nocount on declare @dvguid uniqueidentifier declare crsViews cursor fast_forward for select distinct dv.DataViewGUID from DataView dv where dv.Name like 'OB %' open crsViews fetch next from crsViews into @dvguid while (@@fetch_status = 0) begin exec ob.procDataViewRegisterDimensions @dvguid fetch next from crsViews into @dvguid end close crsViews deallocate crsViews GO --------------------------------------------- -- ob.procDeleteDimensionData CREATE PROCEDURE [ob].[procDeleteDimensionData] AS /************************************************************ ** Author: unknown ** Create Date: Unknown ** Description: Deletes all OB dimensions that are specified by the client, used only for GM releases - NEVER RUN ON CLIENT DATABASES ** Last Modified: 2014-10-02 ** GM Release: 2014.4 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 2013-10-02 akk 64597 Adding new dimensions ** 2 2014-02-18 akk D-01495 Filtering out not specified member ** 3 2014-07-22 akk D-01940 Clearing out accountid ** 4 2014-10-02 JG B-02929 Clearing out Snapshot and Allocation dimensions ** 5 2015-02-11 akk Clearing out testing members from OB Forecast Detail ** 6 2015-11-06 akk Deleting global assumptions *************************************************************/ BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; declare @nextid int select @nextid = 1 --==== BEGIN CID 1 ==== -- delete from ob.DimDepartmentalBudget -- DBCC CHECKIDENT ('ob.DimDepartmentalBudget', RESEED, @nextid) --==== BEGIN CID 2 ==== delete from [ob].[DimOBGlobalStatistics] where OBGlobalStatisticID<>0 --==== END CID 2 ==== DBCC CHECKIDENT ('ob.DimOBGlobalStatistics', RESEED, @nextid) --==== BEGIN CID 4 ==== delete from [ob].[DimOBSnapshot] where OBSnapshotID<>0 DBCC CHECKIDENT ('ob.DimOBSnapshot', RESEED, @nextid) delete from [ob].[DimOBAllocation] where OBAllocationID<>0 DBCC CHECKIDENT ('ob.DimOBAllocation', RESEED, @nextid) delete from [ob].[DimOBAllocationBasis] where OBAllocationBasisID<>0 DBCC CHECKIDENT ('ob.DimOBAllocationBasis', RESEED, @nextid) --==== END CID 4 ==== --==== END CID 1 ==== --==== BEGIN CID 3 ==== update [ob].[DimOBForecastDetail] set AccountID=0,SecondaryAccountID=0 exec [dbo].[procScoreDimensionCacheRefresh] '7997659c-8a30-4d1e-86d2-0afb41c9e2fc' --==== END CID 3 ==== --==== BEGIN CID 5 ==== delete from [ob].[DimOBForecastDetail] where Name like '%zzTest%' --==== END CID 5 ==== --==== BEGIN CID 6 ==== delete from [dbo].[GlobalAssumption] --==== END CID 6 ==== --Rebuild Indexes and Update Statistics exec [ob].[procOptimizationRebuildIndexesDimensions] END RETURN GO --------------------------------------------- -- ob.procDeleteExceptionsDataWithoutDimensionMembers /************************************************************ ** Author: jgerber ** Create Date: 2014-09-18 ** Description: Deletes SL data that does not have dimension members ** Last Modified: 2014-09-18 ** GM Release: 2014.4 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** *************************************************************/ create proc [ob].[procDeleteExceptionsDataWithoutDimensionMembers] as --***Fact Account********************************************* -- Department Dimension delete data from [clientob].[FactAccount] data with (readuncommitted) left join ob.DimDepartmentalBudget db with (readuncommitted) on db.DepartmentalBudgetID = data.DepartmentalBudgetID where db.MemberGUID is null -- Account Dimension delete data from [clientob].[FactAccount] data with (readuncommitted) inner join ob.DimDepartmentalBudget db with (readuncommitted) on db.DepartmentalBudgetID = data.DepartmentalBudgetID left join [fw].[DimAccount] dim with (readuncommitted) on dim.AccountID = data.AccountID where dim.MemberGUID is null --***Fact Staffing PC********************************************* -- Department Dimension delete data from [clientob].[FactStaffingPC] data with (readuncommitted) left join ob.DimDepartmentalBudget db with (readuncommitted) on db.DepartmentalBudgetID = data.DepartmentalBudgetID where db.MemberGUID is null -- Job Code Dimension delete data from [clientob].[FactStaffingPC] data with (readuncommitted) inner join ob.DimDepartmentalBudget db with (readuncommitted) on db.DepartmentalBudgetID = data.DepartmentalBudgetID left join [fw].[DimJobCode] dim with (readuncommitted) on dim.JobCodeID = data.JobCodeID where dim.MemberGUID is null -- Pay Code Dimension delete data from [clientob].[FactStaffingPC] data with (readuncommitted) inner join ob.DimDepartmentalBudget db with (readuncommitted) on db.DepartmentalBudgetID = data.DepartmentalBudgetID left join [fw].[DimPayCode] dim with (readuncommitted) on dim.PayCodeID = data.PayCodeID where dim.MemberGUID is null -- Pay Code Group Dimension delete data from [clientob].[FactStaffingPC] data with (readuncommitted) inner join ob.DimDepartmentalBudget db with (readuncommitted) on db.DepartmentalBudgetID = data.DepartmentalBudgetID left join [fw].[DimPayCodeGroup] dim with (readuncommitted) on dim.PayCodeGroupID = data.PayCodeGroupID where dim.MemberGUID is null -- Employee Dimension delete data from [clientob].[FactStaffingPC] data with (readuncommitted) inner join ob.DimDepartmentalBudget db with (readuncommitted) on db.DepartmentalBudgetID = data.DepartmentalBudgetID left join [fw].[DimEmployee] dim with (readuncommitted) on dim.EmployeeID = data.EmployeeID where dim.MemberGUID is null --***Fact Provider********************************************* -- Department Dimension delete data from [clientob].[FactProvider] data with (readuncommitted) left join ob.DimDepartmentalBudget db with (readuncommitted) on db.DepartmentalBudgetID = data.DepartmentalBudgetID where db.MemberGUID is null -- Provider Dimension delete data from [clientob].[FactProvider] data with (readuncommitted) inner join ob.DimDepartmentalBudget db with (readuncommitted) on db.DepartmentalBudgetID = data.DepartmentalBudgetID left join [fw].[DimProvider] dim with (readuncommitted) on dim.ProviderID = data.ProviderID where dim.MemberGUID is null -- Forecast Detail Dimension delete data from [clientob].[FactProvider] data with (readuncommitted) inner join ob.DimDepartmentalBudget db with (readuncommitted) on db.DepartmentalBudgetID = data.DepartmentalBudgetID left join [ob].[DimOBForecastDetail] dim with (readuncommitted) on dim.OBForecastDetailID = data.OBForecastDetailID where dim.MemberGUID is null --***Fact Charge Code********************************************* -- Department Dimension delete data from [clientob].[FactCDM] data with (readuncommitted) left join ob.DimDepartmentalBudget db with (readuncommitted) on db.DepartmentalBudgetID = data.DepartmentalBudgetID where db.MemberGUID is null -- Charge Code Dimension delete data from [clientob].[FactCDM] data with (readuncommitted) inner join ob.DimDepartmentalBudget db with (readuncommitted) on db.DepartmentalBudgetID = data.DepartmentalBudgetID left join [fw].[DimChargeCode] dim with (readuncommitted) on dim.ChargeCodeID = data.ChargeCodeID where dim.MemberGUID is null --***Fact Reporting********************************************* -- Department Dimension delete data from [clientob].[FactReportingMonthly] data with (readuncommitted) left join ob.DimDepartmentalBudget db with (readuncommitted) on db.DepartmentalBudgetID = data.DepartmentalBudgetID where db.MemberGUID is null -- Financial Reporting Dimension delete data from [clientob].[FactReportingMonthly] data with (readuncommitted) inner join ob.DimDepartmentalBudget db with (readuncommitted) on db.DepartmentalBudgetID = data.DepartmentalBudgetID left join [ob].[DimFinancialReporting] dim with (readuncommitted) on dim.FinancialReportingID = data.FinancialReportingID where dim.MemberGUID is null --***Fact Global Statistics********************************************* -- Department Dimension delete data from [clientob].[FactGlobalStatistics] data with (readuncommitted) left join [ob].[DimOBGlobalStatisticsPlan] db with (readuncommitted) on db.OBGlobalStatisticsPlanID = data.OBGlobalStatisticsPlanID where db.MemberGUID is null -- Global Statistics Dimension delete data from [clientob].[FactGlobalStatistics] data with (readuncommitted) inner join[ob].[DimOBGlobalStatisticsPlan] db with (readuncommitted) on db.OBGlobalStatisticsPlanID = data.OBGlobalStatisticsPlanID left join [ob].[DimOBGlobalStatistics] dim with (readuncommitted) on dim.OBGlobalStatisticID = data.OBGlobalStatisticID where dim.MemberGUID is null --***Fact Service Line********************************************* -- Service Line Plan Dimension delete data from [clientob].[FactServiceLine] data with (readuncommitted) left join [ob].[DimOBServiceLinePlan] db with (readuncommitted) on db.OBServiceLinePlanID = data.OBServiceLinePlanID where db.MemberGUID is null -- Modeling Service Line Dimension delete data from [clientob].[FactServiceLine] data with (readuncommitted) inner join [ob].[DimOBServiceLinePlan] db with (readuncommitted) on db.OBServiceLinePlanID = data.OBServiceLinePlanID left join [fw].[DimModelingServiceLine] dim with (readuncommitted) on dim.ModelingServiceLineID = data.ModelingServiceLineID where dim.MemberGUID is null -- Forecast Detail Dimension delete data from [clientob].[FactServiceLine] data with (readuncommitted) inner join [ob].[DimOBServiceLinePlan] db with (readuncommitted) on db.OBServiceLinePlanID = data.OBServiceLinePlanID left join [ob].[DimOBForecastDetail] dim with (readuncommitted) on dim.OBForecastDetailID = data.OBForecastDetailID where dim.MemberGUID is null --***Fact Reimbursement Account********************************************* -- Reimbursement Plan Dimension delete data from [clientob].[FactReimbursementAccount] data with (readuncommitted) left join [ob].[DimOBReimbursementPlan] db with (readuncommitted) on db.OBReimbursementPlanID = data.OBReimbursementPlanID where db.MemberGUID is null -- Account Dimension delete data from [clientob].[FactReimbursementAccount] data with (readuncommitted) inner join [ob].[DimOBReimbursementPlan] db with (readuncommitted) on db.OBReimbursementPlanID = data.OBReimbursementPlanID left join [fw].[DimAccount] dim with (readuncommitted) on dim.AccountID = data.AccountID where dim.MemberGUID is null -- Patient Reimbursement Group Dimension delete data from [clientob].[FactReimbursementAccount] data with (readuncommitted) inner join [ob].[DimOBReimbursementPlan] db with (readuncommitted) on db.OBReimbursementPlanID = data.OBReimbursementPlanID left join [fw].[DimPatientReimbursementGroup] dim with (readuncommitted) on dim.PatientReimbursementGroupID = data.PatientReimbursementGroupID where dim.MemberGUID is null --***Fact Reimbursement ********************************************* -- Reimbursement Plan Dimension delete data from [clientob].[FactReimbursement] data with (readuncommitted) left join [ob].[DimOBReimbursementPlan] db with (readuncommitted) on db.OBReimbursementPlanID = data.OBReimbursementPlanID where db.MemberGUID is null -- Forecast Detail Dimension delete data from [clientob].[FactReimbursement] data with (readuncommitted) inner join [ob].[DimOBReimbursementPlan] db with (readuncommitted) on db.OBReimbursementPlanID = data.OBReimbursementPlanID left join [ob].[DimOBForecastDetail] dim with (readuncommitted) on dim.OBForecastDetailID = data.OBForecastDetailID where dim.MemberGUID is null -- Patient Reimbursement Group Dimension delete data from [clientob].[FactReimbursement] data with (readuncommitted) inner join [ob].[DimOBReimbursementPlan] db with (readuncommitted) on db.OBReimbursementPlanID = data.OBReimbursementPlanID left join [fw].[DimPatientReimbursementGroup] dim with (readuncommitted) on dim.PatientReimbursementGroupID = data.PatientReimbursementGroupID where dim.MemberGUID is null -- Payor Group Dimension delete data from [clientob].[FactReimbursement] data with (readuncommitted) inner join [ob].[DimOBReimbursementPlan] db with (readuncommitted) on db.OBReimbursementPlanID = data.OBReimbursementPlanID left join [fw].[DimPayorGroup] dim with (readuncommitted) on dim.PayorGroupID = data.PayorGroupID where dim.MemberGUID is null -- Payor Dimension delete data from [clientob].[FactReimbursement] data with (readuncommitted) inner join [ob].[DimOBReimbursementPlan] db with (readuncommitted) on db.OBReimbursementPlanID = data.OBReimbursementPlanID left join [fw].[DimPayor] dim with (readuncommitted) on dim.PayorID = data.PayorID where dim.MemberGUID is null RETURN GO --------------------------------------------- -- ob.procDeleteFactData CREATE PROCEDURE [ob].[procDeleteFactData] AS /************************************************************ ** Author: unknown ** Create Date: Unknown ** Description: Deletes all CAP Fact tables - used only for GM releases - NEVER RUN ON CLIENT DATABASES ** Last Modified: 2013-11-07 ** GM Release: 2013-11-19 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 2013-11-07 akk 65765 Filtering out mapping tables from the delete ** *************************************************************/ BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; DECLARE @SCHEMA nvarchar(256) DECLARE @FactTableName nvarchar(256) DECLARE @SQL nvarchar(1024) DECLARE @SQL2 nvarchar(1024) DECLARE FactTableCursor CURSOR FOR --==== BEGIN CID 1 ==== select t.name, (select name from sys.schemas where schema_id = t.schema_id) from sys.tables t where t.schema_id in(select schema_id from sys.schemas where name in('ob', 'clientob') ) and t.name like 'fact%' and t.name not in ('FactGlobalSpreads','FactBudgetYearReportingCrosswalk') and t.name not like '%map' order by t.name --==== END CID 1 ==== open FactTableCursor FETCH NEXT FROM FactTableCursor INTO @FactTableName, @SCHEMA WHILE @@FETCH_STATUS = 0 BEGIN set @SQL = 'truncate table ' + @SCHEMA + '.' + @FactTableName set @SQL2='DBCC CHECKIDENT (''' + + @SCHEMA + '.' + @FactTableName + ''', RESEED, 1)' --print @SQL --print @SQL2 EXECUTE sp_executesql @SQL EXECUTE sp_executesql @SQL2 FETCH NEXT FROM FactTableCursor INTO @FactTableName, @SCHEMA END CLOSE FactTableCursor DEALLOCATE FactTableCursor truncate table [ob].[ReconciliationTarget] truncate table [ob].[JobCodeReconciliationTarget] truncate table [ob].[PayCodeReconciliationTarget] truncate table [ob].[StatisticsEntityReconciliationTarget] --Rebuild Indexes and Update Statistics exec [ob].[procOptimizationRebuildIndexesData] exec [ob].[procOptimizationRebuildIndexesMapping] END RETURN GO --------------------------------------------- -- ob.procDepartmentalBudgetMaintenance CREATE proc [ob].[procDepartmentalBudgetMaintenance] @planGUIDList nvarchar(max), @isForcingRefresh bit = 0 as --/////////////////// DEPRECATED USE SYSTEM CENTER /////////////////// -- declare @budgetSectionGUID uniqueidentifier -- select @budgetSectionGUID = MemberGUID from ob.DimDepartmentalBudgetPH (readuncommitted) where Name = 'Current Budget' -- ----if self placeholder exists, assume this proc is already done and can exit -- if (@isForcingRefresh = 0) begin -- if((select count(*) from ScoreFillin FI (readuncommitted) where FI.ModelGUID in(select cs.[guid] from dbo.ConvertCSGuidsToTable(@planGUIDList, ',') cs) and FI.PlaceholderSectionMemberGUID = @budgetSectionGUID) > 0) begin -- return -- end -- end -- ----set departmental budget self placeholder -- insert into ScoreFillin(ModelGUID, PlaceholderSectionMemberGUID, PlaceholderIndex, FillinMemberGUID, FillinMemberName) -- select -- P.PlanGUID, -- @budgetSectionGUID, -- 0, -- P.PlanGUID, -- P.Name -- from -- XPlan P (readuncommitted) -- where -- P.PlanGUID in(select cs.[guid] from dbo.ConvertCSGuidsToTable(@planGUIDList, ',') cs) -- and not exists(select 1 from ScoreFillin FI (readuncommitted) where FI.ModelGUID = P.PlanGUID and FI.PlaceholderSectionMemberGUID = @budgetSectionGUID) -- ----get year for year fill-ins -- declare @yearSectionGUID uniqueidentifier -- select @yearSectionGUID = MemberGUID from fw.DimFiscalYearPH (readuncommitted) where Name = 'Selected Year' ----set dept budget year fill-ins -- insert into ScoreFillin(ModelGUID, PlaceholderSectionMemberGUID, PlaceholderIndex, FillinMemberGUID, FillinMemberName) -- select -- P.MemberGUID, -- @yearSectionGUID, -- (FY.FiscalYearID - P.BaseYear + 1), -- FY.MemberGUID, -- FY.Name -- from -- ob.DimDepartmentalBudget P (readuncommitted) -- inner join fw.DimFiscalYear FY (readuncommitted) on FY.FiscalYearID = P.BaseYear - 1 or FY.FiscalYearID = P.BaseYear or FY.FiscalYearID = P.BaseYear + 1 -- where -- P.MemberGUID in(select cs.[guid] from dbo.ConvertCSGuidsToTable(@planGUIDList, ',') cs) -- and not exists(select 1 from ScoreFillin FI (readuncommitted) where FI.ModelGUID = P.MemberGUID and FI.PlaceholderSectionMemberGUID = @yearSectionGUID) GO --------------------------------------------- -- ob.procDepartmentalBudgetMaintenanceAll CREATE proc [ob].[procDepartmentalBudgetMaintenanceAll] as declare @planguids nvarchar(max) select @planguids = coalesce(@planguids + ',','') + cast(MemberGUID as nvarchar(128)) from ob.DimDepartmentalBudget (readuncommitted) where MemberGUID not in(select p.PlanGUID from XPlan p (readuncommitted) where p.IsDeletedPlan = 1) exec ob.procDepartmentalBudgetMaintenance @planguids, 1 GO --------------------------------------------- -- ob.procExceptionsDepartmentalBudgetPopulate CREATE PROCEDURE [ob].[procExceptionsDepartmentalBudgetPopulate] @ClearAcknowledged BIT = 0, @OBExceptionsID INT = NULL AS /************************************************************ ** Author: akowalski ** Create Date: 2014-04-30 ** Description: Populates Departmental Budget Exception Table ** Last Modified: 2016-08-02 ** GM Release: 2014.3 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 2014-10-09 JG Adjusting the widget height of the report ** 2 2015-01-08 akk Changing proc to not use view for better performance ** 3 2016-08-02 kf Add @OBExceptionsID parameter, remove cursor ** 4 2016-08-03 kf Remove widgets update ** 5 2016-08-11 kf Remove duplications ** 6 2019-02-21 GF Remove backup of exceptions *************************************************************/ DECLARE @dbname NVARCHAR(1000) = (DB_Name()) --EXEC TempTableBackups.dbo.procBackupTable @dbname, 'FactDepartmentBudgetExceptions', 'ob' -- Logging ************************************************************************ DECLARE @higuid UNIQUEIDENTIFIER EXEC procLogScript 'Updating Department Budget Exceptions', @higuid OUTPUT -- Create new exceptions temp table ******************************************** CREATE TABLE #NewExceptionsToInsert( [OBExceptionsID] [int] NOT NULL DEFAULT ((0)), [DepartmentalBudgetID] [int] NOT NULL DEFAULT ((0)), [Detail] [nvarchar](2000) NOT NULL DEFAULT ('') ) DECLARE @isExecuting BIT = 1 DECLARE @Model NVARCHAR(256) = 'Departmental Budget' DECLARE @ModelIDName NVARCHAR(256) = '[DepartmentalBudgetID]' DECLARE @sqli VARCHAR(MAX) DECLARE @OBExceptionsIDStr VARCHAR(MAX) DECLARE @View NVARCHAR(100) DECLARE @exceptions TABLE (OBExceptionsID INT, ViewName NVARCHAR(100)) INSERT INTO @exceptions (OBExceptionsID, ViewName) SELECT OBExceptionsID, ViewName FROM [ob].[DimOBExceptions] e WHERE e.Model = @Model AND (@OBExceptionsID IS NULL OR e.OBExceptionsID = @OBExceptionsID) DECLARE @Count INT SELECT @Count = COUNT(1) FROM @exceptions WHILE @Count > 0 BEGIN SELECT TOP 1 @OBExceptionsIDStr = OBExceptionsID, @View = ViewName FROM @exceptions SET @sqli = 'INSERT INTO #NewExceptionsToInsert ([OBExceptionsID], ' + @ModelIDName + ', [Detail]) SELECT DISTINCT ' + @OBExceptionsIDStr + ' as OBExceptionsID, e.' + @ModelIDName + ', e.detail FROM ' + @View + ' e' IF @isExecuting = 1 BEGIN EXEC(@sqli) END ELSE BEGIN PRINT @sqli END DELETE FROM @exceptions WHERE OBExceptionsID = @OBExceptionsIDStr SET @Count -= 1 END DECLARE @seedID INT IF(@ClearAcknowledged=1) BEGIN DELETE FROM [ob].[FactDepartmentBudgetExceptions] WHERE (@OBExceptionsID IS NULL OR OBExceptionsID = @OBExceptionsID) SET @seedID = (SELECT MAX(rowid) FROM [ob].[FactDepartmentBudgetExceptions])+1 IF @seedID IS NULL BEGIN SET @seedID=1 END DBCC CHECKIDENT ("ob.FactDepartmentBudgetExceptions", RESEED, @seedID) INSERT INTO [ob].[FactDepartmentBudgetExceptions] ([OBExceptionsID], [DepartmentalBudgetID], [Detail], [Acknowledged], [HistoryItemGuid]) SELECT e.OBExceptionsID, e.DepartmentalBudgetID, e.detail, 0 as Acknowledged, @higuid as HistoryItemGUID FROM #NewExceptionsToInsert e END ELSE BEGIN DELETE FROM [ob].[FactDepartmentBudgetExceptions] WHERE Acknowledged = 0 AND (@OBExceptionsID IS NULL OR OBExceptionsID = @OBExceptionsID) SET @seedID = (SELECT MAX(rowid) FROM [ob].[FactDepartmentBudgetExceptions])+1 IF @seedID IS NULL BEGIN SET @seedID=1 END DBCC CHECKIDENT ("ob.FactDepartmentBudgetExceptions", RESEED, @seedID) INSERT INTO [ob].[FactDepartmentBudgetExceptions] ([OBExceptionsID], [DepartmentalBudgetID], [Detail], [Acknowledged], [HistoryItemGuid]) SELECT e.OBExceptionsID, e.DepartmentalBudgetID, e.detail, 0 as Acknowledged, @higuid as HistoryItemGUID FROM #NewExceptionsToInsert e WHERE NOT EXISTS (SELECT 1 FROM [ob].[FactDepartmentBudgetExceptions] target WHERE e.DepartmentalBudgetID=target.DepartmentalBudgetID AND e.OBExceptionsID=target.OBExceptionsID AND e.detail=target.detail ) END GO --------------------------------------------- -- ob.procExceptionsGlobalStatsPopulate CREATE PROCEDURE [ob].[procExceptionsGlobalStatsPopulate] @ClearAcknowledged BIT = 0, @OBExceptionsID INT = NULL AS /************************************************************ ** Author: akowalski ** Create Date: 2015-01-09 ** Description: Populates Global Stats Exception Table ** Last Modified: 2015-08-02 ** GM Release: 2015.2 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 2016-08-02 kf Add @OBExceptionsID parameter, remove cursor ** 2 2016-08-03 kf Remove widgets update ** 3 2016-08-11 kf Remove duplications ** 4 2019-02-21 GF Remove backup of exceptions *************************************************************/ DECLARE @dbname NVARCHAR(1000) = (DB_Name()) --EXEC TempTableBackups.dbo.procBackupTable @dbname, 'FactGlobalStatisticExceptions', 'ob' -- Logging ************************************************************************ DECLARE @higuid UNIQUEIDENTIFIER EXEC procLogScript 'Updating Global Stats Exceptions' , @higuid OUTPUT -- Create new exceptions temp table ******************************************** CREATE TABLE #NewExceptionsToInsert( [OBExceptionsID] [int] NOT NULL DEFAULT ((0)), [OBGlobalStatisticsPlanID] [int] NOT NULL DEFAULT ((0)), [Detail] [nvarchar](2000) NOT NULL DEFAULT ('') ) DECLARE @isExecuting BIT = 1 DECLARE @Model NVARCHAR(256) = 'Global Statistics' DECLARE @ModelIDName NVARCHAR(256) = '[OBGlobalStatisticsPlanID]' DECLARE @sqli VARCHAR(MAX) DECLARE @OBExceptionsIDStr VARCHAR(MAX) DECLARE @View NVARCHAR(100) DECLARE @exceptions TABLE (OBExceptionsID INT, ViewName NVARCHAR(100)) INSERT INTO @exceptions (OBExceptionsID, ViewName) SELECT OBExceptionsID, ViewName FROM [ob].[DimOBExceptions] e WHERE e.Model = @Model AND (@OBExceptionsID IS NULL OR e.OBExceptionsID = @OBExceptionsID) DECLARE @Count INT SELECT @Count = COUNT(1) FROM @exceptions WHILE @Count > 0 BEGIN SELECT TOP 1 @OBExceptionsIDStr = OBExceptionsID, @View = ViewName FROM @exceptions SET @sqli = 'INSERT INTO #NewExceptionsToInsert ([OBExceptionsID], ' + @ModelIDName + ', [Detail]) SELECT DISTINCT ' + @OBExceptionsIDStr + ' as OBExceptionsID, e.' + @ModelIDName + ', e.detail FROM ' + @View + ' e' IF @isExecuting = 1 BEGIN EXEC(@sqli) END ELSE BEGIN PRINT @sqli END DELETE FROM @exceptions WHERE OBExceptionsID = @OBExceptionsIDStr SET @Count -= 1 END DECLARE @seedID INT IF(@ClearAcknowledged=1) BEGIN DELETE FROM [ob].[FactGlobalStatisticExceptions] WHERE (@OBExceptionsID IS NULL OR OBExceptionsID = @OBExceptionsID) SET @seedID = (SELECT MAX(rowid) FROM [ob].[FactGlobalStatisticExceptions])+1 IF @seedID IS NULL BEGIN SET @seedID=1 END DBCC CHECKIDENT ("ob.FactGlobalStatisticExceptions", RESEED, @seedID) INSERT INTO [ob].[FactGlobalStatisticExceptions] ([OBExceptionsID], [OBGlobalStatisticsPlanID], [Detail], [Acknowledged], [HistoryItemGuid]) SELECT e.OBExceptionsID, e.OBGlobalStatisticsPlanID, e.detail, 0 as Acknowledged, @higuid as HistoryItemGUID FROM #NewExceptionsToInsert e END ELSE BEGIN DELETE FROM [ob].[FactGlobalStatisticExceptions] WHERE Acknowledged = 0 AND (@OBExceptionsID IS NULL OR OBExceptionsID = @OBExceptionsID) SET @seedID = (SELECT MAX(rowid) FROM [ob].[FactGlobalStatisticExceptions])+1 IF @seedID IS NULL BEGIN SET @seedID=1 END DBCC CHECKIDENT ("ob.FactGlobalStatisticExceptions", RESEED, @seedID) INSERT INTO [ob].[FactGlobalStatisticExceptions] ([OBExceptionsID], [OBGlobalStatisticsPlanID], [Detail], [Acknowledged], [HistoryItemGuid]) SELECT e.OBExceptionsID, e.OBGlobalStatisticsPlanID, e.detail, 0 as Acknowledged, @higuid as HistoryItemGUID FROM #NewExceptionsToInsert e WHERE NOT EXISTS (SELECT 1 FROM [ob].[FactGlobalStatisticExceptions] target WHERE e.OBGlobalStatisticsPlanID=target.OBGlobalStatisticsPlanID AND e.OBExceptionsID=target.OBExceptionsID AND e.detail=target.detail ) END GO --------------------------------------------- -- ob.procExceptionsReimbursementPopulate CREATE PROCEDURE [ob].[procExceptionsReimbursementPopulate] @ClearAcknowledged BIT = 0, @OBExceptionsID INT = NULL AS /************************************************************ ** Author: akowalski ** Create Date: 2015-01-09 ** Description: Populates Reimbursement Exception Table ** Last Modified: 2016-08-02 ** GM Release: 2015.2 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 2016-08-02 kf Add @OBExceptionsID parameter, remove cursor ** 2 2016-08-03 kf Remove widgets update ** 3 2016-08-11 kf Remove duplications ** 4 2019-02-21 GF Remove backup of exceptions *************************************************************/ DECLARE @dbname NVARCHAR(1000) = (DB_Name()) --EXEC TempTableBackups.dbo.procBackupTable @dbname, 'FactReimbursementExceptions', 'ob' -- Logging ************************************************************************ DECLARE @higuid UNIQUEIDENTIFIER EXEC procLogScript 'Updating Reimbursement Exceptions' , @higuid OUTPUT -- Create new exceptions temp table ******************************************** CREATE TABLE #NewExceptionsToInsert( [OBExceptionsID] [int] NOT NULL DEFAULT ((0)), [OBReimbursementPlanID] [int] NOT NULL DEFAULT ((0)), [Detail] [nvarchar](2000) NOT NULL DEFAULT ('') ) DECLARE @isExecuting BIT = 1 DECLARE @Model NVARCHAR(256) = 'Reimbursement' DECLARE @ModelIDName NVARCHAR(256) = '[OBReimbursementPlanID]' DECLARE @sqli VARCHAR(MAX) DECLARE @OBExceptionsIDStr VARCHAR(MAX) DECLARE @View NVARCHAR(100) DECLARE @exceptions TABLE (OBExceptionsID INT, ViewName NVARCHAR(100)) INSERT INTO @exceptions (OBExceptionsID, ViewName) SELECT OBExceptionsID, ViewName FROM [ob].[DimOBExceptions] e WHERE e.Model = @Model AND (@OBExceptionsID IS NULL OR e.OBExceptionsID = @OBExceptionsID) DECLARE @Count INT SELECT @Count = COUNT(1) FROM @exceptions WHILE @Count > 0 BEGIN SELECT TOP 1 @OBExceptionsIDStr = OBExceptionsID, @View = ViewName FROM @exceptions SET @sqli = 'INSERT INTO #NewExceptionsToInsert ([OBExceptionsID], ' + @ModelIDName + ', [Detail]) SELECT DISTINCT ' + @OBExceptionsIDStr + ' as OBExceptionsID, e.' + @ModelIDName + ', e.detail FROM ' + @View + ' e' IF @isExecuting = 1 BEGIN EXEC(@sqli) END ELSE BEGIN PRINT @sqli END DELETE FROM @exceptions WHERE OBExceptionsID = @OBExceptionsIDStr SET @Count -= 1 END DECLARE @seedID INT IF(@ClearAcknowledged=1) BEGIN DELETE FROM [ob].[FactReimbursementExceptions] WHERE (@OBExceptionsID IS NULL OR OBExceptionsID = @OBExceptionsID) SET @seedID = (SELECT MAX(rowid) FROM [ob].[FactReimbursementExceptions])+1 IF @seedID IS NULL BEGIN SET @seedID=1 END DBCC CHECKIDENT ("ob.FactReimbursementExceptions", RESEED, @seedID) INSERT INTO [ob].[FactReimbursementExceptions] ([OBExceptionsID], [OBReimbursementPlanID], [Detail], [Acknowledged], [HistoryItemGuid]) SELECT e.OBExceptionsID, e.OBReimbursementPlanID, e.detail, 0 as Acknowledged, @higuid as HistoryItemGUID FROM #NewExceptionsToInsert e END ELSE BEGIN DELETE FROM [ob].[FactReimbursementExceptions] WHERE Acknowledged=0 AND (@OBExceptionsID IS NULL OR OBExceptionsID = @OBExceptionsID) SET @seedID = (SELECT MAX(rowid) FROM [ob].[FactReimbursementExceptions])+1 IF @seedID IS NULL BEGIN SET @seedID=1 END DBCC CHECKIDENT ("ob.FactReimbursementExceptions", RESEED, @seedID) INSERT INTO [ob].[FactReimbursementExceptions] ([OBExceptionsID], [OBReimbursementPlanID], [Detail], [Acknowledged], [HistoryItemGuid]) SELECT e.OBExceptionsID, e.OBReimbursementPlanID, e.detail, 0 as Acknowledged, @higuid as HistoryItemGUID FROM #NewExceptionsToInsert e WHERE NOT EXISTS (SELECT 1 FROM [ob].[FactReimbursementExceptions] target WHERE e.OBReimbursementPlanID=target.OBReimbursementPlanID AND e.OBExceptionsID=target.OBExceptionsID AND e.detail=target.detail ) END GO --------------------------------------------- -- ob.procExceptionsServiceLinePopulate CREATE PROCEDURE [ob].[procExceptionsServiceLinePopulate] @ClearAcknowledged BIT = 0, @OBExceptionsID INT = NULL AS /************************************************************ ** Author: akowalski ** Create Date: 2015-01-09 ** Description: Populates Service Line Exception Table ** Last Modified: 2016-08-02 ** GM Release: 2015.2 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 2016-08-02 kf Add @OBExceptionsID parameter, remove cursor ** 2 2016-08-03 kf Remove widgets update ** 3 2016-08-11 kf Remove duplications ** 4 2019-02-21 GF Remove backup of exceptions *************************************************************/ DECLARE @dbname NVARCHAR(1000) = (DB_Name()) --EXEC TempTableBackups.dbo.procBackupTable @dbname, 'FactServiceLineExceptions', 'ob' -- Logging ************************************************************************ DECLARE @higuid UNIQUEIDENTIFIER EXEC procLogScript 'Updating Service Line Exceptions' , @higuid OUTPUT -- Create new exceptions temp table ******************************************** CREATE TABLE #NewExceptionsToInsert( [OBExceptionsID] [int] NOT NULL DEFAULT ((0)), [OBServiceLinePlanID] [int] NOT NULL DEFAULT ((0)), [Detail] [nvarchar](2000) NOT NULL DEFAULT ('') ) DECLARE @isExecuting BIT = 1 DECLARE @Model NVARCHAR(256) = 'Service Line' DECLARE @ModelIDName NVARCHAR(256) = '[OBServiceLinePlanID]' DECLARE @sqli VARCHAR(MAX) DECLARE @OBExceptionsIDStr VARCHAR(MAX) DECLARE @View NVARCHAR(100) DECLARE @exceptions TABLE (OBExceptionsID INT, ViewName NVARCHAR(100)) INSERT INTO @exceptions (OBExceptionsID, ViewName) SELECT OBExceptionsID, ViewName FROM [ob].[DimOBExceptions] e WHERE e.Model = @Model AND (@OBExceptionsID IS NULL OR e.OBExceptionsID = @OBExceptionsID) DECLARE @Count INT SELECT @Count = COUNT(1) FROM @exceptions WHILE @Count > 0 BEGIN SELECT TOP 1 @OBExceptionsIDStr = OBExceptionsID, @View = ViewName FROM @exceptions SET @sqli = 'INSERT INTO #NewExceptionsToInsert ([OBExceptionsID], ' + @ModelIDName + ', [Detail]) SELECT DISTINCT ' + @OBExceptionsIDStr + ' as OBExceptionsID, e.' + @ModelIDName + ', e.detail FROM ' + @View + ' e' IF @isExecuting = 1 BEGIN EXEC(@sqli) END ELSE BEGIN PRINT @sqli END DELETE FROM @exceptions WHERE OBExceptionsID = @OBExceptionsIDStr SET @Count -= 1 END DECLARE @seedID INT IF(@ClearAcknowledged=1) BEGIN DELETE FROM [ob].[FactServiceLineExceptions] WHERE (@OBExceptionsID IS NULL OR OBExceptionsID = @OBExceptionsID) SET @seedID = (SELECT MAX(rowid) FROM [ob].[FactServiceLineExceptions])+1 IF @seedID IS NULL BEGIN SET @seedID=1 END DBCC CHECKIDENT ("ob.FactServiceLineExceptions", RESEED, @seedID) INSERT INTO [ob].[FactServiceLineExceptions] ([OBExceptionsID], [OBServiceLinePlanID], [Detail], [Acknowledged], [HistoryItemGuid]) SELECT e.OBExceptionsID, e.OBServiceLinePlanID, e.detail, 0 as Acknowledged, @higuid as HistoryItemGUID FROM #NewExceptionsToInsert e END ELSE BEGIN DELETE FROM [ob].[FactServiceLineExceptions] WHERE Acknowledged=0 AND (@OBExceptionsID IS NULL OR OBExceptionsID = @OBExceptionsID) SET @seedID = (SELECT MAX(rowid) FROM [ob].[FactServiceLineExceptions])+1 IF @seedID IS NULL BEGIN SET @seedID=1 END DBCC CHECKIDENT ("ob.FactServiceLineExceptions", RESEED, @seedID) INSERT INTO [ob].[FactServiceLineExceptions] ([OBExceptionsID], [OBServiceLinePlanID], [Detail], [Acknowledged], [HistoryItemGuid]) SELECT e.OBExceptionsID, e.OBServiceLinePlanID, e.detail, 0 as Acknowledged, @higuid as HistoryItemGUID FROM #NewExceptionsToInsert e WHERE NOT EXISTS (SELECT 1 FROM [ob].[FactServiceLineExceptions] target WHERE e.OBServiceLinePlanID=target.OBServiceLinePlanID AND e.OBExceptionsID=target.OBExceptionsID AND e.detail=target.detail ) END GO --------------------------------------------- -- ob.procExceptionsUpdateExplanationDashboardWidget CREATE proc ob.procExceptionsUpdateExplanationDashboardWidget as /************************************************************ ** Author: akowalski ** Create Date: 2015-02-02 ** Description: Updates the exception explanation dashboard widget with the latest information from the dimension ** Last Modified: 2015-02-02 ** GM Release: 2015.2 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** *************************************************************/ DECLARE @isExecuting bit = 1 DECLARE @Model nvarchar(200) DECLARE @Name nvarchar(400) DECLARE @Severity nvarchar(200) DECLARE @Description nvarchar(max) DECLARE @Resolution nvarchar(max) DECLARE @sqli nvarchar(max) = '' DECLARE Models CURSOR FOR select distinct model from [ob].[DimOBExceptions] where OBExceptionsID<>0 order by Model open Models FETCH NEXT FROM Models INTO @Model WHILE (@@FETCH_STATUS = 0) BEGIN SET @sqli = @sqli + '<p><strong><u><font size="3">' + @Model + '</font></u></strong></p>' DECLARE Exceptions CURSOR FOR select Name,Severity,Description,Resolution from [ob].[DimOBExceptions] where OBExceptionsID<>0 and model=@Model order by severity,SortOrder open Exceptions FETCH NEXT FROM Exceptions INTO @Name, @Severity, @Description, @Resolution WHILE (@@FETCH_STATUS = 0) BEGIN SET @sqli = @sqli + '<p><strong><u>' + @Name + '<br></u>Severity:</strong> ' + @Severity + '<br><strong>Description:</strong> ' + @Description + '&nbsp;&nbsp;<br><strong>Resolution:</strong> ' + @Resolution + '</p>' FETCH NEXT FROM Exceptions INTO @Name, @Severity, @Description, @Resolution END CLOSE Exceptions DEALLOCATE Exceptions FETCH NEXT FROM Models INTO @Model END CLOSE Models DEALLOCATE Models SET @sqli = @sqli + '' if @isExecuting = 1 begin update [dbo].[DesktopWidget] set WidgetXML=@sqli where DesktopWidgetGUID='cd85554c-c566-4e02-8a55-57a6075d047e' end else begin print @sqli end RETURN GO --------------------------------------------- -- ob.procFactPayrollToAccountCrosswalkAddMissing create proc ob.procFactPayrollToAccountCrosswalkAddMissing as if (exists(select 1 from ob.SystemSetting where Name = 'Payroll To GL Link Dollars Configuration' and Value = 'BothUnique')) begin ;with groupedRecords as( select jc.JobCodeGroupID, cw.PayCodeGroupID, cw.AccountID, cw.UnitTypeID from [clientob].[FactPayrollToAccountCrosswalk] cw inner join fw.DimJobCode jc on jc.JobCodeID = cw.JobCodeID where cw.UnitTypeID = 34 group by jc.JobCodeGroupID, cw.PayCodeGroupID, cw.AccountID, cw.UnitTypeID ) insert into clientob.FactPayrollToAccountCrosswalk (JobCodeID, PayCodeGroupID, AccountID, UnitTypeID) select jc.JobCodeID, cw.PayCodeGroupID, cw.AccountID, cw.UnitTypeID from groupedRecords cw inner join fw.DimJobCode jc on jc.JobCodeGroupID = cw.JobCodeGroupID where not exists(select 1 from [clientob].[FactPayrollToAccountCrosswalk] ex where ex.JobCodeID = jc.JobCodeID and ex.PayCodeGroupID = cw.PayCodeGroupID and ex.AccountID = cw.AccountID and ex.UnitTypeID = cw.UnitTypeID) end if (exists(select 1 from ob.SystemSetting where Name = 'Payroll To GL Link Hours Configuration' and Value = 'BothUnique')) begin ;with groupedRecords as( select jc.JobCodeGroupID, cw.PayCodeGroupID, cw.AccountID, cw.UnitTypeID from [clientob].[FactPayrollToAccountCrosswalk] cw inner join fw.DimJobCode jc on jc.JobCodeID = cw.JobCodeID where cw.UnitTypeID = 51 group by jc.JobCodeGroupID, cw.PayCodeGroupID, cw.AccountID, cw.UnitTypeID ) insert into clientob.FactPayrollToAccountCrosswalk (JobCodeID, PayCodeGroupID, AccountID, UnitTypeID) select jc.JobCodeID, cw.PayCodeGroupID, cw.AccountID, cw.UnitTypeID from groupedRecords cw inner join fw.DimJobCode jc on jc.JobCodeGroupID = cw.JobCodeGroupID where not exists(select 1 from [clientob].[FactPayrollToAccountCrosswalk] ex where ex.JobCodeID = jc.JobCodeID and ex.PayCodeGroupID = cw.PayCodeGroupID and ex.AccountID = cw.AccountID and ex.UnitTypeID = cw.UnitTypeID) end GO --------------------------------------------- -- ob.procFactReportAccountWithStaffingDetailInsert CREATE proc ob.procFactReportAccountWithStaffingDetailInsert @planGUID uniqueidentifier = '00000000-0000-0000-0000-000000000000' as if (not exists(select 1 from ob.SystemSetting where Name = 'OB Staffing Detail Report Enabled' and Value = '1')) begin return end --get budget to refresh declare @budgetid int if (@planGUID != '00000000-0000-0000-0000-000000000000') begin select @budgetid = DepartmentalBudgetID from ob.viewDimDepartmentalBudget where MemberGUID = @planGUID if (@budgetid is null or @budgetid = 0) begin return end end else begin set @budgetid = 0 end --remove existing data if (@budgetid = 0) begin truncate table [ob].[FactReportAccountWithStaffingDetail] exec dbo.procTableReseedIdentity 'ob', 'FactReportAccountWithStaffingDetail', 1 end else begin delete from [ob].[FactReportAccountWithStaffingDetail] where DepartmentalBudgetID = @budgetid end declare @sql nvarchar(max) set @sql = ' declare @validDataTypeTimeClassFiscalYearCombos table ( DataTypeID tinyint, FiscalYearID int, TimeClassID tinyint, IsCY bit ) insert into @validDataTypeTimeClassFiscalYearCombos select * from [ob].[viewValidDataTypeTimeClassFiscalYearCombos] ' --staffing data set @sql = @sql + ' insert into [ob].[FactReportAccountWithStaffingDetail] (DepartmentalBudgetID, AccountID, JobCodeID, PayCodeGroupID, FiscalYearID, TimeClassID, UnitTypeID, Month01, Month02, Month03, Month04, Month05, Month06, Month07, Month08, Month09, Month10, Month11, Month12, YTD, Total) select DepartmentalBudgetID = vw.DepartmentalBudgetID, AccountID = vw.AccountID, JobCodeID = vw.JobCodeID, PayCodeGroupID = vw.PayCodeGroupID, FiscalYearID = vw.FiscalYearID, TimeClassID = vw.TimeClassID, UnitTypeID = vw.UnitTypeID, Month01 = vw.Month01, Month02 = vw.Month02, Month03 = vw.Month03, Month04 = vw.Month04, Month05 = vw.Month05, Month06 = vw.Month06, Month07 = vw.Month07, Month08 = vw.Month08, Month09 = vw.Month09, Month10 = vw.Month10, Month11 = vw.Month11, Month12 = vw.Month12, YTD = cmb.IsCY*vw.YTD, Total = vw.Total from [ob].[viewReportStaffingtoGLAccount] vw inner join @validDataTypeTimeClassFiscalYearCombos cmb on vw.TimeClassID=cmb.TimeClassID and vw.DataTypeID=cmb.DataTypeID and vw.FiscalYearID=cmb.FiscalYearID inner join [clientob].[FactAccount] fct with (readuncommitted) on vw.DepartmentalBudgetID = fct.DepartmentalBudgetID and vw.AccountID = fct.AccountID and vw.FiscalYearID = fct.FiscalYearID and vw.TimeClassID = fct.TimeClassID and vw.UnitTypeID = fct.UnitTypeID and vw.DataTypeID = fct.DataTypeID ' if (@budgetid != 0) begin set @sql = @sql + ' where vw.DepartmentalBudgetID = ' + cast(@budgetid as nvarchar(16)) end set @sql = @sql + ' option (recompile);' --non-staffing account data set @sql = @sql + ' insert into [ob].[FactReportAccountWithStaffingDetail] (DepartmentalBudgetID, AccountID, JobCodeID, PayCodeGroupID, FiscalYearID, TimeClassID, UnitTypeID, Month01, Month02, Month03, Month04, Month05, Month06, Month07, Month08, Month09, Month10, Month11, Month12, YTD, Total) select DepartmentalBudgetID = fct.DepartmentalBudgetID, AccountID = fct.AccountID, JobCodeID = 0, PayCodeGroupID = 0, FiscalYearID = fct.FiscalYearID, TimeClassID = fct.TimeClassID, UnitTypeID = fct.UnitTypeID, Month01 = fct.Month01, Month02 = fct.Month02, Month03 = fct.Month03, Month04 = fct.Month04, Month05 = fct.Month05, Month06 = fct.Month06, Month07 = fct.Month07, Month08 = fct.Month08, Month09 = fct.Month09, Month10 = fct.Month10, Month11 = fct.Month11, Month12 = fct.Month12, YTD = cmb.IsCY*fct.YTD, Total = fct.Total from [clientob].[FactAccount] fct with (readuncommitted) inner join @validDataTypeTimeClassFiscalYearCombos cmb on fct.TimeClassID=cmb.TimeClassID and fct.DataTypeID=cmb.DataTypeID and fct.FiscalYearID=cmb.FiscalYearID where not exists ( select 1 from [ob].[FactReportAccountWithStaffingDetail] vw where 1=1 and fct.DepartmentalBudgetID = vw.DepartmentalBudgetID and fct.AccountID = vw.AccountID and fct.FiscalYearID = vw.FiscalYearID and fct.TimeClassID = vw.TimeClassID and fct.UnitTypeID = vw.UnitTypeID ) ' if (@budgetid != 0) begin set @sql = @sql + ' and fct.DepartmentalBudgetID = ' + cast(@budgetid as nvarchar(16)) end set @sql = @sql + ' option (recompile);' --GL data historical input data discrepancy set @sql = @sql + ' insert into [ob].[FactReportAccountWithStaffingDetail] (DepartmentalBudgetID, AccountID, JobCodeID, PayCodeGroupID, FiscalYearID, TimeClassID, UnitTypeID, Month01, Month02, Month03, Month04, Month05, Month06, Month07, Month08, Month09, Month10, Month11, Month12, YTD, Total) select DepartmentalBudgetID = fct.DepartmentalBudgetID, AccountID = fct.AccountID, JobCodeID = 0, PayCodeGroupID = 0, FiscalYearID = fct.FiscalYearID, TimeClassID = fct.TimeClassID, UnitTypeID = fct.UnitTypeID, Month01 = max(fct.Month01) - sum(vw.Month01), Month02 = max(fct.Month02) - sum(vw.Month02), Month03 = max(fct.Month03) - sum(vw.Month03), Month04 = max(fct.Month04) - sum(vw.Month04), Month05 = max(fct.Month05) - sum(vw.Month05), Month06 = max(fct.Month06) - sum(vw.Month06), Month07 = max(fct.Month07) - sum(vw.Month07), Month08 = max(fct.Month08) - sum(vw.Month08), Month09 = max(fct.Month09) - sum(vw.Month09), Month10 = max(fct.Month10) - sum(vw.Month10), Month11 = max(fct.Month11) - sum(vw.Month11), Month12 = max(fct.Month12) - sum(vw.Month12), YTD = max(cast(cmb.IsCY as int))*(max(fct.YTD ) - sum(vw.YTD)), Total = max(fct.Total ) - sum(vw.Total) from [clientob].[FactAccount] fct with (readuncommitted) inner join @validDataTypeTimeClassFiscalYearCombos cmb on fct.TimeClassID=cmb.TimeClassID and fct.DataTypeID=cmb.DataTypeID and fct.FiscalYearID=cmb.FiscalYearID inner join [ob].[viewReportStaffingtoGLAccount] vw on fct.DepartmentalBudgetID = vw.DepartmentalBudgetID and fct.AccountID = vw.AccountID and fct.FiscalYearID = vw.FiscalYearID and fct.TimeClassID = vw.TimeClassID and fct.UnitTypeID = vw.UnitTypeID and fct.DataTypeID = vw.DataTypeID where fct.DataTypeID in(4, 12)' if (@budgetid != 0) begin set @sql = @sql + ' and fct.DepartmentalBudgetID = ' + cast(@budgetid as nvarchar(16)) end set @sql = @sql + ' group by fct.DepartmentalBudgetID, fct.AccountID, fct.FiscalYearID, fct.TimeClassID, fct.UnitTypeID having max(fct.Total) <> SUM(vw.Total) option (recompile) ' exec(@sql) GO --------------------------------------------- -- ob.procFactReportFinancialStatementInsert CREATE PROC [ob].[procFactReportFinancialStatementInsert] @planGUID uniqueidentifier WITH RECOMPILE AS set nocount on declare @budgetid int if (@planGUID != '00000000-0000-0000-0000-000000000000') begin select @budgetid = DepartmentalBudgetID from ob.viewDimDepartmentalBudget where MemberGUID = @planGUID if (@budgetid is null or @budgetid = 0) begin return end end else begin exec [ob].[procFactReportFinancialStatementInsertAll] return end delete from [ob].[FactReportFinancialStatement] where DepartmentalBudgetID = @budgetid declare @sql nvarchar(max) set @sql = ' -- GL Dollars insert into [ob].[FactReportFinancialStatement] (DepartmentalBudgetID, DepartmentID, AccountID, FinancialReportingID, FiscalYearID, TimeClassID, Month01, Month02, Month03, Month04, Month05, Month06, Month07, Month08, Month09, Month10, Month11, Month12, YTD, Yearly, Total, SnapshotID) select data.DepartmentalBudgetID, DD.DepartmentID, data.AccountID, acc.OBDollarsFinancialReportingID as FinancialReportingID, FiscalYearID, TimeClassID, Month01, Month02, Month03, Month04, Month05, Month06, Month07, Month08, Month09, Month10, Month11, Month12, YTD, Yearly, Total, 0 as SnapshotID -- current snapshot from clientob.FactAccount data with (readuncommitted) inner join fw.DimAccount acc with (readuncommitted) on acc.AccountID=data.AccountID inner join [ob].[DimDepartmentalBudget] DB with (readuncommitted) on DB.DepartmentalBudgetID = data.DepartmentalBudgetID inner join [fw].[DimDepartment] DD with (readuncommitted) on DD.DepartmentID = DB.DepartmentID inner join [fw].[DimUnitType] ut with (readuncommitted) on data.unittypeID=ut.UnitTypeID and ut.GlobalID=''Dollars'' where acc.IsGlobal=0 {0} option (recompile); -- Statistics insert into [ob].[FactReportFinancialStatement] (DepartmentalBudgetID, DepartmentID, AccountID, FinancialReportingID, FiscalYearID, TimeClassID, Month01, Month02, Month03, Month04, Month05, Month06, Month07, Month08, Month09, Month10, Month11, Month12, YTD, Yearly, Total, SnapshotID) select data.DepartmentalBudgetID, DD.DepartmentID, data.AccountID, acc.OBUnitsFinancialReportingID as FinancialReportingID, FiscalYearID, TimeClassID, Month01, Month02, Month03, Month04, Month05, Month06, Month07, Month08, Month09, Month10, Month11, Month12, YTD, Yearly, Total, 0 as SnapshotID -- current snapshot from clientob.FactAccount data with (readuncommitted) inner join fw.DimAccount acc with (readuncommitted) on acc.AccountID=data.AccountID inner join [ob].[DimDepartmentalBudget] DB with (readuncommitted) on DB.DepartmentalBudgetID = data.DepartmentalBudgetID inner join [fw].[DimDepartment] DD with (readuncommitted) on DD.DepartmentID = DB.DepartmentID inner join [fw].[DimUnitType] ut with (readuncommitted) on data.unittypeID=ut.UnitTypeID and ut.GlobalID<>''Dollars'' where not exists (select 1 from [clientob].[FactGlobalStatisticsDeptMapping] fct with (readuncommitted) inner join [ob].[DimOBGlobalStatistics] gs with (readuncommitted) on fct.OBGlobalStatisticID=gs.OBGlobalStatisticID where fct.IsReportable=0 and gs.AccountID=acc.AccountID and fct.DepartmentID=DD.DepartmentID ) {0} option (recompile); -- Hard Referenced Data insert into [ob].[FactReportFinancialStatement] (DepartmentalBudgetID, DepartmentID, AccountID, FinancialReportingID, FiscalYearID, TimeClassID, Month01, Month02, Month03, Month04, Month05, Month06, Month07, Month08, Month09, Month10, Month11, Month12, YTD, Yearly, Total, SnapshotID) select data.DepartmentalBudgetID, DD.DepartmentID, 0 as AccountID, data.FinancialReportingID as FinancialReportingID, FiscalYearID, TimeClassID, Month01, Month02, Month03, Month04, Month05, Month06, Month07, Month08, Month09, Month10, Month11, Month12, YTD, Yearly, Total, 0 as SnapshotID -- current snapshot from [clientob].[FactReportingMonthly] data with (readuncommitted) inner join [ob].[DimDepartmentalBudget] DB with (readuncommitted) on DB.DepartmentalBudgetID = data.DepartmentalBudgetID inner join [fw].[DimDepartment] DD with (readuncommitted) on DD.DepartmentID = DB.DepartmentID inner join [ob].[DimFinancialReporting] fr with (readuncommitted) on data.FinancialReportingID=fr.FinancialReportingID where fr.Statement=''Stats'' {0} option (recompile); -- GL Dollars (snapshot data) insert into [ob].[FactReportFinancialStatement] (DepartmentalBudgetID, DepartmentID, AccountID, FinancialReportingID, FiscalYearID, TimeClassID, Month01, Month02, Month03, Month04, Month05, Month06, Month07, Month08, Month09, Month10, Month11, Month12, YTD, Yearly, Total, SnapshotID) select data.DepartmentalBudgetID, DD.DepartmentID, data.AccountID, acc.OBDollarsFinancialReportingID as FinancialReportingID, FiscalYearID, TimeClassID, Month01, Month02, Month03, Month04, Month05, Month06, Month07, Month08, Month09, Month10, Month11, Month12, YTD, Yearly, Total, data.OBSnapshotID as SnapshotID from ob.FactAccountSnapshot data with (readuncommitted) inner join fw.DimAccount acc with (readuncommitted) on acc.AccountID=data.AccountID inner join [ob].[DimDepartmentalBudget] DB with (readuncommitted) on DB.DepartmentalBudgetID = data.DepartmentalBudgetID inner join [fw].[DimDepartment] DD with (readuncommitted) on DD.DepartmentID = DB.DepartmentID inner join [fw].[DimUnitType] ut with (readuncommitted) on data.unittypeID=ut.UnitTypeID and ut.GlobalID=''Dollars'' where acc.IsGlobal=0 {0} option (recompile); -- Statistics (snapshot data) insert into [ob].[FactReportFinancialStatement] (DepartmentalBudgetID, DepartmentID, AccountID, FinancialReportingID, FiscalYearID, TimeClassID, Month01, Month02, Month03, Month04, Month05, Month06, Month07, Month08, Month09, Month10, Month11, Month12, YTD, Yearly, Total, SnapshotID) select data.DepartmentalBudgetID, DD.DepartmentID, data.AccountID, acc.OBUnitsFinancialReportingID as FinancialReportingID, FiscalYearID, TimeClassID, Month01, Month02, Month03, Month04, Month05, Month06, Month07, Month08, Month09, Month10, Month11, Month12, YTD, Yearly, Total, data.OBSnapshotID as SnapshotID from ob.FactAccountSnapshot data with (readuncommitted) inner join fw.DimAccount acc with (readuncommitted) on acc.AccountID=data.AccountID inner join [ob].[DimDepartmentalBudget] DB with (readuncommitted) on DB.DepartmentalBudgetID = data.DepartmentalBudgetID inner join [fw].[DimDepartment] DD with (readuncommitted) on DD.DepartmentID = DB.DepartmentID inner join [fw].[DimUnitType] ut with (readuncommitted) on data.unittypeID=ut.UnitTypeID and ut.GlobalID<>''Dollars'' where not exists (select 1 from [clientob].[FactGlobalStatisticsDeptMapping] fct with (readuncommitted) inner join [ob].[DimOBGlobalStatistics] gs with (readuncommitted) on fct.OBGlobalStatisticID=gs.OBGlobalStatisticID where fct.IsReportable=0 and gs.AccountID=acc.AccountID and fct.DepartmentID=DD.DepartmentID ) {0} option (recompile); -- Hard Referenced Data (snapshot data) insert into [ob].[FactReportFinancialStatement] (DepartmentalBudgetID, DepartmentID, AccountID, FinancialReportingID, FiscalYearID, TimeClassID, Month01, Month02, Month03, Month04, Month05, Month06, Month07, Month08, Month09, Month10, Month11, Month12, YTD, Yearly, Total, SnapshotID) select data.DepartmentalBudgetID, DD.DepartmentID, 0 as AccountID, data.FinancialReportingID as FinancialReportingID, FiscalYearID, TimeClassID, Month01, Month02, Month03, Month04, Month05, Month06, Month07, Month08, Month09, Month10, Month11, Month12, YTD, Yearly, Total, data.OBSnapshotID as SnapshotID from [ob].[FactReportingMonthlySnapshot] data with (readuncommitted) inner join [ob].[DimDepartmentalBudget] DB with (readuncommitted) on DB.DepartmentalBudgetID = data.DepartmentalBudgetID inner join [fw].[DimDepartment] DD with (readuncommitted) on DD.DepartmentID = DB.DepartmentID inner join [ob].[DimFinancialReporting] fr with (readuncommitted) on data.FinancialReportingID=fr.FinancialReportingID where fr.Statement=''Stats'' {0} option (recompile); ' select @sql = replace(@sql, '{0}', 'and DB.DepartmentalBudgetID = ' + cast(@budgetid as nvarchar(16))) exec(@sql) delete from [ob].[FactReportFinancialStatement_Pivoted] where DepartmentalBudgetID = @budgetid set @sql = ' insert into [ob].[FactReportFinancialStatement_Pivoted] (TimeClassID, FiscalYearID, DepartmentalBudgetID, FinancialReportingID, AccountID, SnapshotID, Total, Yearly, YTD, Amount, MaxValue, MaxValueYTD, FiscalMonthID) SELECT source.TimeClassID, source.FiscalYearID, source.DepartmentalBudgetID, source.FinancialReportingID, source.AccountID, source.SnapshotID, source.Total, 0 as Yearly, 0 as YTD, 0 as Amount, source.Total as MaxValue, 0 as MaxValueYTD, 0 as FiscalMonthID FROM [ob].[FactReportFinancialStatement] source with (readuncommitted) WHERE source.Total != 0 {0} insert into [ob].[FactReportFinancialStatement_Pivoted] (TimeClassID, FiscalYearID, DepartmentalBudgetID, FinancialReportingID, AccountID, SnapshotID, Total, Yearly, YTD, Amount, MaxValue, MaxValueYTD, FiscalMonthID) SELECT source.TimeClassID, source.FiscalYearID, source.DepartmentalBudgetID, source.FinancialReportingID, source.AccountID, source.SnapshotID, 0 as Total, source.Yearly, 0 as YTD, 0 as Amount, source.Yearly as MaxValue, 0 as MaxValueYTD, 0 as FiscalMonthID FROM [ob].[FactReportFinancialStatement] source with (readuncommitted) WHERE source.Yearly != 0 {0} insert into [ob].[FactReportFinancialStatement_Pivoted] (TimeClassID, FiscalYearID, DepartmentalBudgetID, FinancialReportingID, AccountID, SnapshotID, Total, Yearly, YTD, Amount, MaxValue, MaxValueYTD, FiscalMonthID) SELECT source.TimeClassID, source.FiscalYearID, source.DepartmentalBudgetID, source.FinancialReportingID, source.AccountID, source.SnapshotID, 0 as Total, 0 as Yearly, source.YTD, 0 as Amount, source.YTD as MaxValue, 0 as MaxValueYTD, 0 as FiscalMonthID FROM [ob].[FactReportFinancialStatement] source with (readuncommitted) WHERE source.YTD != 0 {0} insert into [ob].[FactReportFinancialStatement_Pivoted] (TimeClassID, FiscalYearID, DepartmentalBudgetID, FinancialReportingID, AccountID, SnapshotID, Total, Yearly, YTD, Amount, MaxValue, MaxValueYTD, FiscalMonthID) SELECT source.TimeClassID, source.FiscalYearID, source.DepartmentalBudgetID, source.FinancialReportingID, source.AccountID, source.SnapshotID, 0 as Total, 0 as Yearly, 0 as YTD, source.Amount, source.Amount as MaxValue, source.YTD as MaxValueYTD, fm.FiscalMonthID FROM (select * from [ob].[FactReportFinancialStatement] with (readuncommitted)) p unpivot (Amount for MonthColumnName in (Month01, Month02, Month03, Month04, Month05, Month06, Month07, Month08, Month09, Month10, Month11, Month12)) as source inner join fw.DimFiscalMonth fm with (readuncommitted) on source.MonthColumnName = fm.MonthColumnName where (source.Amount != 0 or source.YTD != 0) {0} ' select @sql = replace(@sql, '{0}', 'and source.DepartmentalBudgetID = ' + cast(@budgetid as nvarchar(16))) exec(@sql) GO --------------------------------------------- -- ob.procFactReportFinancialStatementInsertAll CREATE PROC [ob].[procFactReportFinancialStatementInsertAll] @isContinueFromLastRun bit = 0 WITH RECOMPILE AS set nocount on if (@isContinueFromLastRun = 0) begin truncate table [ob].[FactReportFinancialStatement] exec dbo.procTableReseedIdentity 'ob', 'FactReportFinancialStatement', 1 truncate table [ob].[FactReportFinancialStatement_Pivoted] exec dbo.procTableReseedIdentity 'ob', 'FactReportFinancialStatement_Pivoted', 1 end declare @memberGUID uniqueidentifier declare crsBudgets cursor fast_forward for select b.MemberGUID from ob.viewDimDepartmentalBudget b where not exists(select 1 from ob.FactReportFinancialStatement fs where fs.DepartmentalBudgetID = b.DepartmentalBudgetID) open crsBudgets fetch next from crsBudgets into @memberGUID while (@@FETCH_STATUS = 0) begin exec [ob].[procFactReportFinancialStatementInsert] @memberGUID fetch next from crsBudgets into @memberGUID end close crsBudgets deallocate crsBudgets GO --------------------------------------------- -- ob.procFinalizeBudget_SampleToInt_ChargeCode create proc [ob].[procFinalizeBudget_SampleToInt_ChargeCode] @IsDebugOnly bit = 0 /* ****************************************************************************************************** ** Author: Corey Becker ** Create Date: 2016-03-22 ** Description: Copies Charge Code Budget Data into 'int' tables ** Last Modified: 2016-03-22 ** GM Release: 2016.3 ********************************************************************************************************* ** Change History ********************************************************************************************************* ** CID Date Author WI Description ** *********************************************************************************************************/ as begin -------------------------------------------------------------------------------------------------- -- Logging -------------------------------------------------------------------------------------------------- declare @logdesc nvarchar(100) select @logdesc = case @IsDebugOnly when 1 then 'Debug only - Sample Charge Code budget data into int tables' else 'Sample Charge Code budget data into int tables' end declare @higuid uniqueidentifier exec procLogScript @logdesc, @higuid output print 'Beginning sample, historyguid: '+cast(@higuid as varchar(36)) -------------------------------------------------------------------------------------------------- -- Variable declarations -------------------------------------------------------------------------------------------------- declare @year int select @year = dbs.Setting+1 from [dbo].[DBSetting] dbs where dbs.Name = 'OB_Current_Year' declare @sql nvarchar(max) = '' -------------------------------------------------------------------------------------------------- -- Charge Code data -------------------------------------------------------------------------------------------------- SET @sql = ' -- Charge Code data -------------------------------------------------------------------------------------------------- -- Delete Existing DELETE FROM [int].[FactCDM] WHERE 1=1 and FiscalYearID = ' + cast(@year as nvarchar(4)) + ' and TimeClassID = 2 -- Insert Budget data INSERT INTO [int].[FactCDM] ( DepartmentID, DepartmentCode, ChargeCodeID, ChargeCode, FiscalYearID, FiscalYearCode, TimeClassID, TimeClassCode, FiscalMonthID, FiscalMonthCode, PatientClassID, PatientClassCode, ServiceLineID, ServiceLine, AgeCohortID, AgeCohort, MedicalSurgicalID, MedSurg, UnitTypeID, UnitType, Value, IsDeleted, HistoryItemGUID) SELECT DEP.DepartmentID, DEP.DepartmentCode, CC.ChargeCodeID, CC.ChargeCode, BudgetedData.FiscalYearID, BudgetedData.FiscalYearID AS FiscalYearCode, TC.TimeClassID, TC.TimeClassCode, FM.FiscalMonthID, FM.FiscalMonthCode, PAT.PatientClassID, PAT.Code as [PatientClassCode], ''0'' as ServiceLineID, '''' as ServiceLine, ''0'' as AgeCohortID, '''' as AgeCohort, ''0'' as MedicalSurgicalID, '''' as MedSurg, UT.UnitTypeID, UT.Name as [UnitType], Value, ''0'' as IsDeleted, ''' + cast(@higuid as varchar(36)) + ''' as HistoryItemGUID FROM ( SELECT * FROM ( SELECT * FROM [clientob].[FactCDM] fac ) EXPORTDATA UNPIVOT (Value for FiscalMonthCode in ([Month01],[Month02],[Month03],[Month04],[Month05],[Month06],[Month07],[Month08],[Month09],[Month10],[Month11],[Month12])) AS PVT ) BudgetedData INNER JOIN [fw].[DimChargeCode] CC on CC.ChargeCodeID = BudgetedData.ChargeCodeID INNER JOIN [fw].[DimPatientClass] PAT ON PAT.PatientClassID = BudgetedData.PatientClassID INNER JOIN [ob].[DimDepartmentalBudget] Budget on Budget.DepartmentalBudgetID = BudgetedData.DepartmentalBudgetID INNER JOIN [fw].[DimDepartment] dep on dep.DepartmentID = Budget.DepartmentID INNER JOIN [fw].[DimTimeClass] tc on tc.TimeClassID = BudgetedData.TimeClassID INNER JOIN [fw].[DimFiscalMonth] fm on fm.MonthColumnName = BudgetedData.FiscalMonthCode INNER JOIN [fw].[DimUnitType] UT ON UT.UnitTypeID = BudgetedData.UnitTypeID WHERE 1=1 and BudgetedData.Value <> 0 and BudgetedData.TimeClassID = 2 and BudgetedData.IsDeleted = 0 and BudgetedData.FiscalYearID = ' + cast(@year as nvarchar(4)) if @IsDebugOnly=1 begin print(@sql) end else begin exec(@sql) end end --END OF PROCEDURE GO --------------------------------------------- -- ob.procFinalizeBudget_SampleToInt_GL CREATE proc [ob].[procFinalizeBudget_SampleToInt_GL] @IsDebugOnly bit = 0 /* ****************************************************************************************************** ** Author: Corey Becker ** Create Date: 2016-03-22 ** Description: Copies GL Budget Data into 'int' tables ** Last Modified: 2016-12-12 ** GM Release: 2016.3 ********************************************************************************************************* ** Change History ********************************************************************************************************* ** CID Date Author WI Description ** 1 2016-12-12 srk B-13006 Added section to transfer GL Budget Hours *********************************************************************************************************/ as begin -------------------------------------------------------------------------------------------------- -- Logging -------------------------------------------------------------------------------------------------- declare @logdesc nvarchar(100) select @logdesc = case @IsDebugOnly when 1 then 'Debug only - Sample GL budget data into int tables' else 'Sample GL budget data into int tables' end declare @higuid uniqueidentifier exec procLogScript @logdesc, @higuid output print 'Beginning sample, historyguid: '+cast(@higuid as varchar(36)) -------------------------------------------------------------------------------------------------- -- Variable declarations -------------------------------------------------------------------------------------------------- declare @year int select @year = dbs.Setting+1 from [dbo].[DBSetting] dbs where dbs.Name = 'OB_Current_Year' declare @sql nvarchar(max) = '' -------------------------------------------------------------------------------------------------- -- GL Dollars -------------------------------------------------------------------------------------------------- SET @sql = ' -- GL Dollars -------------------------------------------------------------------------------------------------- -- Delete Existing DELETE FROM [int].[FactGL] WHERE 1=1 and FiscalYearID = ' + cast(@year as nvarchar(4)) + ' and TimeClassID = 2 -- Insert Budget data INSERT INTO [int].[FactGL] ( [DepartmentID], [DepartmentCode], [AccountID], [AccountCode], [FiscalYearID], [FiscalYearCode], [TimeClassID], [TimeClassCode], [FiscalMonthID], [FiscalMonthCode], [Value], [IsDeleted], [HistoryItemGUID] ) SELECT dep.DepartmentID, dep.DepartmentCode, acc.AccountID, acc.AccountCode, BudgetedData.FiscalYearID, BudgetedData.FiscalYearID as FiscalYearCode, tc.TimeClassID, tc.TimeClassCode, fm.FiscalMonthID, fm.FiscalMonthCode, acc.inversion*Value as Value, ''0'' as IsDeleted, ''' + cast(@higuid as varchar(36)) + ''' as HistoryItemGUID FROM ( SELECT * FROM ( SELECT * FROM [clientob].[FactAccount] fac WHERE fac.UnitTypeID = 34 --Dollars only ) EXPORTDATA UNPIVOT (Value for FiscalMonthCode in ([Month01],[Month02],[Month03],[Month04],[Month05],[Month06],[Month07],[Month08],[Month09],[Month10],[Month11],[Month12])) AS PVT ) BudgetedData INNER JOIN fw.DimAccount acc on acc.AccountID = BudgetedData.AccountID INNER JOIN ob.DimDepartmentalBudget Budget on Budget.DepartmentalBudgetID = BudgetedData.DepartmentalBudgetID INNER JOIN fw.DimDepartment dep on dep.DepartmentID = Budget.DepartmentID INNER JOIN fw.DimTimeClass tc on tc.TimeClassID = BudgetedData.TimeClassID INNER JOIN fw.DimFiscalMonth fm on fm.MonthColumnName = BudgetedData.FiscalMonthCode WHERE 1=1 and BudgetedData.Value <> 0 and BudgetedData.TimeClassID = 2 and BudgetedData.IsDeleted = 0 and BudgetedData.FiscalYearID = ' + cast(@year as nvarchar(4)) if @IsDebugOnly=1 begin print(@sql) end else begin exec(@sql) end -------------------------------------------------------------------------------------------------- -- Department Stats - Volumes -------------------------------------------------------------------------------------------------- SET @sql = ' -- Department Stats -------------------------------------------------------------------------------------------------- -- Delete Existing DELETE FS FROM [int].[FactStatistic] FS INNER JOIN [fw].[DimAccount] DA ON FS.[AccountID] = DA.[AccountID] WHERE 1=1 and FS.[FiscalYearID] = ' + cast(@year as nvarchar(4)) + ' and FS.[TimeClassID] = 2 and DA.[OBStatUnitTypeID] = 140 -- Volumes Only -- Insert Budget data INSERT INTO [int].[FactStatistic] ( [DepartmentID], [DepartmentCode], [AccountID], [AccountCode], [FiscalYearID], [FiscalYearCode], [TimeClassID], [TimeClassCode], [FiscalMonthID], [FiscalMonthCode], [Value], [IsDeleted], [HistoryItemGUID] ) SELECT dep.DepartmentID, dep.DepartmentCode, acc.AccountID, acc.AccountCode, BudgetedData.FiscalYearID, BudgetedData.FiscalYearID as FiscalYearCode, tc.TimeClassID, tc.TimeClassCode, fm.FiscalMonthID, fm.FiscalMonthCode, acc.inversion*Value as Value, ''0'' as IsDeleted, ''' + cast(@higuid as varchar(36)) + ''' as HistoryItemGUID FROM ( SELECT * FROM ( SELECT * FROM [clientob].[FactAccount] fac WHERE fac.UnitTypeID = 140 --Volumes Only ) EXPORTDATA UNPIVOT (Value for FiscalMonthCode in ([Month01],[Month02],[Month03],[Month04],[Month05],[Month06],[Month07],[Month08],[Month09],[Month10],[Month11],[Month12])) AS PVT ) BudgetedData INNER JOIN fw.DimAccount acc on acc.AccountID = BudgetedData.AccountID INNER JOIN ob.DimDepartmentalBudget Budget on Budget.DepartmentalBudgetID = BudgetedData.DepartmentalBudgetID INNER JOIN fw.DimDepartment dep on dep.DepartmentID = Budget.DepartmentID INNER JOIN fw.DimTimeClass tc on tc.TimeClassID = BudgetedData.TimeClassID INNER JOIN fw.DimFiscalMonth fm on fm.MonthColumnName = BudgetedData.FiscalMonthCode WHERE 1=1 and BudgetedData.Value <> 0 and BudgetedData.TimeClassID = 2 and BudgetedData.IsDeleted = 0 and BudgetedData.FiscalYearID = ' + cast(@year as nvarchar(4)) if @IsDebugOnly=1 begin print(@sql) end else begin exec(@sql) end -------------------------------------------------------------------------------------------------- -- Department Stats - GL Hours -------------------------------------------------------------------------------------------------- SET @sql = ' -- Department Stats -------------------------------------------------------------------------------------------------- -- Delete Existing DELETE FS FROM [int].[FactStatistic] FS INNER JOIN [fw].[DimAccount] DA ON FS.[AccountID] = DA.[AccountID] WHERE 1=1 and FS.[FiscalYearID] = ' + cast(@year as nvarchar(4)) + ' and FS.[TimeClassID] = 2 and DA.[OBStatUnitTypeID] = 51 -- Hours Only -- Insert Budget data INSERT INTO [int].[FactStatistic] ( [DepartmentID], [DepartmentCode], [AccountID], [AccountCode], [FiscalYearID], [FiscalYearCode], [TimeClassID], [TimeClassCode], [FiscalMonthID], [FiscalMonthCode], [Value], [IsDeleted], [HistoryItemGUID] ) SELECT dep.DepartmentID, dep.DepartmentCode, acc.AccountID, acc.AccountCode, BudgetedData.FiscalYearID, BudgetedData.FiscalYearID as FiscalYearCode, tc.TimeClassID, tc.TimeClassCode, fm.FiscalMonthID, fm.FiscalMonthCode, acc.inversion*Value as Value, ''0'' as IsDeleted, ''' + cast(@higuid as varchar(36)) + ''' as HistoryItemGUID FROM ( SELECT * FROM ( SELECT * FROM [clientob].[FactAccount] fac WHERE fac.UnitTypeID = 51 --Hours only ) EXPORTDATA UNPIVOT (Value for FiscalMonthCode in ([Month01],[Month02],[Month03],[Month04],[Month05],[Month06],[Month07],[Month08],[Month09],[Month10],[Month11],[Month12])) AS PVT ) BudgetedData INNER JOIN fw.DimAccount acc on acc.AccountID = BudgetedData.AccountID INNER JOIN ob.DimDepartmentalBudget Budget on Budget.DepartmentalBudgetID = BudgetedData.DepartmentalBudgetID INNER JOIN fw.DimDepartment dep on dep.DepartmentID = Budget.DepartmentID INNER JOIN fw.DimTimeClass tc on tc.TimeClassID = BudgetedData.TimeClassID INNER JOIN fw.DimFiscalMonth fm on fm.MonthColumnName = BudgetedData.FiscalMonthCode WHERE 1=1 and BudgetedData.Value <> 0 and BudgetedData.TimeClassID = 2 and BudgetedData.IsDeleted = 0 and BudgetedData.FiscalYearID = ' + cast(@year as nvarchar(4)) if @IsDebugOnly=1 begin print(@sql) end else begin exec(@sql) end -------------------------------------------------------------------------------------------------- -- Global Stats -------------------------------------------------------------------------------------------------- SET @sql = ' -- Insert Global Stats -------------------------------------------------------------------------------------------------- -- Delete Existing DELETE FROM [int].[FactGlobalStatistics] WHERE 1=1 and FiscalYearID = ' + cast(@year as nvarchar(4)) + ' and TimeClassID = 2 -- Insert Budget data INSERT INTO [int].[FactGlobalStatistics] ( EntityID, EntityCode, DepartmentID, DepartmentCode, AccountID, AccountCode, FiscalYearID, FiscalYearCode, TimeClassID, TimeClassCode, FiscalMonthID, FiscalMonthCode, Value, IsDeleted, HistoryItemGUID ) SELECT ent.EntityID, ent.Code as [EntityCode], ''0'' as DepartmentID, ''0'' as DepartmentCode, acc.AccountID, acc.AccountCode, BudgetedData.FiscalYearID, BudgetedData.FiscalYearID as FiscalYearCode, tc.TimeClassID, tc.TimeClassCode, fm.FiscalMonthID, fm.FiscalMonthCode, acc.inversion*Value as Value, ''0'' as IsDeleted, ''' + cast(@higuid as varchar(36)) + ''' as HistoryItemGUID FROM ( SELECT * FROM ( SELECT * FROM [clientob].[FactGlobalStatistics] fac ) EXPORTDATA UNPIVOT (Value for FiscalMonthCode in ([Month01],[Month02],[Month03],[Month04],[Month05],[Month06],[Month07],[Month08],[Month09],[Month10],[Month11],[Month12])) AS PVT ) BudgetedData INNER JOIN [ob].[DimOBGlobalStatistics] gs on gs.OBGlobalStatisticID = BudgetedData.OBGlobalStatisticID INNER JOIN fw.DimAccount acc on acc.AccountID = GS.AccountID INNER JOIN fw.DimDepartment dep on dep.DepartmentID = GS.DepartmentID INNER JOIN ob.DimOBGlobalStatisticsPlan GSP on GSP.OBGlobalStatisticsPlanID = BudgetedData.OBGlobalStatisticsPlanID INNER JOIN fw.DimEntity ent on GSP.EntityID = ent.EntityID INNER JOIN fw.DimTimeClass tc on tc.TimeClassID = BudgetedData.TimeClassID INNER JOIN fw.DimFiscalMonth fm on fm.MonthColumnName = BudgetedData.FiscalMonthCode WHERE 1=1 and gs.DepartmentID = 0 and BudgetedData.Value <> 0 and BudgetedData.TimeClassID = 2 and BudgetedData.IsDeleted = 0 and BudgetedData.FiscalYearID = ' + cast(@year as nvarchar(4)) if @IsDebugOnly=1 begin print(@sql) end else begin exec(@sql) end end --END OF PROCEDURE GO --------------------------------------------- -- ob.procFinalizeBudget_SampleToInt_Payroll CREATE proc [ob].[procFinalizeBudget_SampleToInt_Payroll] @IsDebugOnly bit = 0 /* ****************************************************************************************************** ** Author: Corey Becker ** Create Date: 2016-03-22 ** Description: Copies Staffing Budget Data into 'int' tables ** Last Modified: 2016-03-22 ** GM Release: 2016.3 ********************************************************************************************************* ** Change History ********************************************************************************************************* ** CID Date Author WI Description ** 1 2/9/2018 sdominsk D-06820 Change filter in where clause for ut.UnitTypeID (added ''147'',''52''). *********************************************************************************************************/ as begin -------------------------------------------------------------------------------------------------- -- Logging -------------------------------------------------------------------------------------------------- declare @logdesc nvarchar(100) select @logdesc = case @IsDebugOnly when 1 then 'Debug only - Sample Payroll budget data into int tables' else 'Sample Payroll budget data into int tables' end declare @higuid uniqueidentifier exec procLogScript @logdesc, @higuid output print 'Beginning sample, historyguid: '+cast(@higuid as varchar(36)) -------------------------------------------------------------------------------------------------- -- Variable declarations -------------------------------------------------------------------------------------------------- declare @year int select @year = dbs.Setting+1 from [dbo].[DBSetting] dbs where dbs.Name = 'OB_Current_Year' declare @sql nvarchar(max) = '' -------------------------------------------------------------------------------------------------- -- Staffing data -------------------------------------------------------------------------------------------------- SET @sql = ' -- Staffing data -------------------------------------------------------------------------------------------------- -- Delete Existing DELETE FROM [int].[FactStaffing] WHERE 1=1 and FiscalYearID = ' + cast(@year as nvarchar(4)) + ' and TimeClassID = 2 -- Insert Budget data INSERT INTO [int].[FactStaffing] ( DepartmentID , DepartmentCode , JobCodeID , JobCode , PayCodeID , PayCode , FiscalYearID , FiscalYearCode , TimeClassID , TimeClassCode , UnitTypeID , UnitType , FiscalMonthID , FiscalMonthCode , Value , IsDeleted , HistoryItemGUID , EmployeeID , EmployeeCode) SELECT dep.DepartmentID , dep.DepartmentCode , jc.JobCodeID , jc.JobCode , pc.PayCodeID , pc.PayCode , BudgetedData.FiscalYearID , BudgetedData.FiscalYearID as FiscalYearCode , tc.TimeClassID , tc.TimeClassCode , case when ut.UnitTypeID = 34 then 34 else 51 end as UnitTypeID , case when ut.Name =''Dollars'' then ''Dollars'' else ''Hours'' end as UnitType , fm.FiscalMonthID , fm.FiscalMonthCode , Value as Value , ''0'' as IsDeleted , ''' + cast(@higuid as varchar(36)) + ''' as HistoryItemGUID , ''0'' as EmployeeID , ''0'' as EmployeeCode FROM ( SELECT * FROM ( SELECT * FROM [clientob].[FactStaffingPC] fac ) EXPORTDATA UNPIVOT (Value for FiscalMonthCode in ([Month01],[Month02],[Month03],[Month04],[Month05],[Month06],[Month07],[Month08],[Month09],[Month10],[Month11],[Month12])) AS PVT ) BudgetedData INNER JOIN [fw].[DimJobCode] jc on jc.JobCodeID = BudgetedData.JobCodeID INNER JOIN [ob].[DimDepartmentalBudget] budget on budget.DepartmentalBudgetID = BudgetedData.DepartmentalBudgetID INNER JOIN [fw].[DimDepartment] dep on dep.DepartmentID = budget.DepartmentID INNER JOIN [fw].[DimTimeClass] tc on tc.TimeClassID = BudgetedData.TimeClassID INNER JOIN [fw].[DimFiscalMonth] fm on fm.MonthColumnName = BudgetedData.FiscalMonthCode INNER JOIN [fw].[DimPayCodeGroup] PCG ON PCG.PayCodeGroupID = BudgetedData.PayCodeGroupID INNER JOIN [fw].[DimPayCode] pc ON pc.PayCodeID = PCG.DefaultPayCodeID INNER JOIN [fw].[DimUnitType] UT ON UT.UnitTypeID = BudgetedData.UnitTypeID WHERE 1=1 and ut.UnitTypeID IN (''34'',''146'',''148'',''147'',''52'') and BudgetedData.Value <> 0 and PCG.PayCodeGroupID<>0 and BudgetedData.TimeClassID = 2 and BudgetedData.IsDeleted = 0 and BudgetedData.FiscalYearID = ' + cast(@year as nvarchar(4)) if @IsDebugOnly=1 begin print(@sql) end else begin exec(@sql) end end --END OF PROCEDURE GO --------------------------------------------- -- ob.procFinalizeBudget_SampleToInt_Provider CREATE proc [ob].[procFinalizeBudget_SampleToInt_Provider] @IsDebugOnly bit = 0 /* ****************************************************************************************************** ** Author: Corey Becker ** Create Date: 2016-03-22 ** Description: Copies Provider Budget Data into 'int' tables ** Last Modified: 2016-03-22 ** GM Release: 2016.3 ********************************************************************************************************* ** Change History ********************************************************************************************************* ** CID Date Author WI Description ** 1 2017-11-22 srk D-04334 Stamp off Provider Hours instead of FTEs ** 2 2019-01-10 ljc B-15790 reverting CID 1. Provider output Hours now mapped *********************************************************************************************************/ as begin -------------------------------------------------------------------------------------------------- -- Logging -------------------------------------------------------------------------------------------------- declare @logdesc nvarchar(100) select @logdesc = case @IsDebugOnly when 1 then 'Debug only - Sample Provider budget data into int tables' else 'Sample Provider budget data into int tables' end declare @higuid uniqueidentifier exec procLogScript @logdesc, @higuid output print 'Beginning sample, historyguid: '+cast(@higuid as varchar(36)) -------------------------------------------------------------------------------------------------- -- Variable declarations -------------------------------------------------------------------------------------------------- declare @year int select @year = dbs.Setting+1 from [dbo].[DBSetting] dbs where dbs.Name = 'OB_Current_Year' declare @sql nvarchar(max) = '' -------------------------------------------------------------------------------------------------- -- Provider data -------------------------------------------------------------------------------------------------- SET @sql = ' -- Provider data -------------------------------------------------------------------------------------------------- -- Delete Existing DELETE FROM [int].[FactImportProvider] WHERE 1=1 and FiscalYearID = ' + cast(@year as nvarchar(4)) + ' and TimeClassID = 2 -- Insert Budget data INSERT INTO [int].[FactImportProvider] ( DepartmentID , DepartmentCode , ProviderID , ProviderCode , FiscalYearID , FiscalYearCode , TimeClassID , TimeClassCode , FiscalMonthID , FiscalMonthCode , OBForecastDetailID , AccountRollup , Value , IsDeleted , HistoryItemGUID ) SELECT D.DepartmentID , D.DepartmentCode , PRO.ProviderID , PRO.ProviderCode , BudgetedData.FiscalYearID , BudgetedData.FiscalYearID as [FiscalYearCode] , TC.TimeClassID , TC.TimeClassCode , FM.FiscalMonthID , FM.FiscalMonthCode , FD.OBForecastDetailID , FD.Name as [AccountRollup] , Value ,''0'' as IsDeleted ,''' + cast(@higuid as varchar(36)) + ''' as HistoryItemGUID FROM ( SELECT * FROM ( SELECT * FROM [clientob].[FactProvider] fac ) EXPORTDATA UNPIVOT (Value for FiscalMonthCode in ([Month01],[Month02],[Month03],[Month04],[Month05],[Month06],[Month07],[Month08],[Month09],[Month10],[Month11],[Month12])) AS PVT ) BudgetedData INNER JOIN [fw].[DimProvider] PRO ON PRO.ProviderID = BudgetedData.ProviderID INNER JOIN [ob].[DimDepartmentalBudget] P ON P.DepartmentalBudgetID = BudgetedData.DepartmentalBudgetID INNER JOIN [fw].[DimDepartment] D ON D.DepartmentID = P.DepartmentID INNER JOIN [fw].[DimTimeClass] tc on tc.TimeClassID = BudgetedData.TimeClassID INNER JOIN [fw].[DimFiscalMonth] fm on fm.MonthColumnName = BudgetedData.FiscalMonthCode INNER JOIN [ob].[DimOBForecastDetail] FD ON FD.OBForecastDetailID = BudgetedData.OBForecastDetailID WHERE 1=1 and BudgetedData.Value <> 0 and BudgetedData.TimeClassID = 2 and BudgetedData.IsDeleted = 0 and BudgetedData.FiscalYearID = ' + cast(@year as nvarchar(4)) if @IsDebugOnly=1 begin print(@sql) end else begin exec(@sql) end end --END OF PROCEDURE GO --------------------------------------------- -- ob.procFinalizeBudget_SampleToInt_Reimbursement CREATE proc [ob].[procFinalizeBudget_SampleToInt_Reimbursement] @IsDebugOnly bit = 0 /* ****************************************************************************************************** ** Author: Corey Becker ** Create Date: 2016-03-22 ** Description: Copies Reimbursement Budget Data into 'int' tables ** Last Modified: 2016-03-22 ** GM Release: 2016.3 ********************************************************************************************************* ** Change History ********************************************************************************************************* ** CID Date Author WI Description ** 1 2016-11-21 srk D-04390 Comment out Payor transfer to avoid duplicaton *********************************************************************************************************/ as begin -------------------------------------------------------------------------------------------------- -- Logging -------------------------------------------------------------------------------------------------- declare @logdesc nvarchar(100) select @logdesc = case @IsDebugOnly when 1 then 'Debug only - Sample Reimbursement budget data into int tables' else 'Sample Reimbursement budget data into int tables' end declare @higuid uniqueidentifier exec procLogScript @logdesc, @higuid output print 'Beginning sample, historyguid: '+cast(@higuid as varchar(36)) -------------------------------------------------------------------------------------------------- -- Variable declarations -------------------------------------------------------------------------------------------------- declare @year int select @year = dbs.Setting+1 from [dbo].[DBSetting] dbs where dbs.Name = 'OB_Current_Year' declare @sql nvarchar(max) = '' -------------------------------------------------------------------------------------------------- -- Payor data -------------------------------------------------------------------------------------------------- SET @sql = ' -- Payor data -------------------------------------------------------------------------------------------------- -- Delete Existing DELETE FROM [int].[FactOBPayor] WHERE 1=1 and FiscalYearID = ' + cast(@year as nvarchar(4)) + ' and TimeClassID = 2 ---- Insert Budget data --INSERT INTO [int].[FactOBPayor] ( -- OBReimbursementPlanID, -- ReimbursementPlan, -- PatientClassID, -- PatientClassCode, -- PayorID, -- PayorCode, -- FiscalYearID, -- FiscalYearCode, -- TimeClassID, -- TimeClassCode, -- FiscalMonthID, -- FiscalMonthCode, -- OBForecastDetailID, -- OBForecastDetailCode, -- CareSettingID, -- CareSettingCode, -- Value, -- IsDeleted, -- HistoryItemGUID) --SELECT -- P.OBReimbursementPlanID, -- P.Name as ReimbursementPlan, -- PAT.PatientClassID, -- PAT.Code as PatientClassCode, -- PAY.PayorID, -- PAY.PayorCode, -- BudgetedData.FiscalYearID, -- BudgetedData.FiscalYearID as FiscalYearCode, -- TC.TimeClassID, -- TC.TimeClassCode, -- fm.FiscalMonthID, -- fm.FiscalMonthCode, -- FD.OBForecastDetailID, -- FD.Code as OBForecastDetail, -- C.CareSettingID, -- C.Code as CareSettingCode, -- Value -- ,''0'' as IsDeleted -- ,''' -- + cast(@higuid as varchar(36)) -- + ''' as HistoryItemGUID --FROM ( -- SELECT * -- FROM ( -- SELECT * -- FROM [clientob].[FactReimbursement] fac -- ) EXPORTDATA -- UNPIVOT (Value for FiscalMonthCode in ([Month01],[Month02],[Month03],[Month04],[Month05],[Month06],[Month07],[Month08],[Month09],[Month10],[Month11],[Month12])) AS PVT --) BudgetedData -- INNER JOIN [fw].[DimPatientReimbursementGroup] PRG on PRG.PatientReimbursementGroupID = BudgetedData.PatientReimbursementGroupID -- INNER JOIN [fw].[DimPatientClass] PAT ON PAT.PatientClassID = PRG.PatientClassID -- INNER JOIN [fw].[DimCareSetting] C ON C.CareSettingID = PRG.CareSettingID -- INNER JOIN [fw].[DimPayor] PAY ON PAY.PayorID = BudgetedData.PayorID -- INNER JOIN [ob].[DimOBReimbursementPlan] P ON P.OBReimbursementPlanID = BudgetedData.OBReimbursementPlanID -- INNER JOIN [fw].[DimTimeClass] tc on tc.TimeClassID = BudgetedData.TimeClassID -- INNER JOIN [fw].[DimFiscalMonth] fm on fm.MonthColumnName = BudgetedData.FiscalMonthCode -- INNER JOIN [ob].[DimOBForecastDetail] FD ON FD.OBForecastDetailID = BudgetedData.OBForecastDetailID --WHERE 1=1 -- and BudgetedData.Value <> 0 -- and BudgetedData.TimeClassID = 2 -- and BudgetedData.IsDeleted = 0 -- and BudgetedData.FiscalYearID = ' + cast(@year as nvarchar(4)) -- -- if @IsDebugOnly=1 -- begin -- print(@sql) -- end -- else -- begin -- exec(@sql) -- end -------------------------------------------------------------------------------------------------- -- Payor group data -------------------------------------------------------------------------------------------------- SET @sql = ' -- Payor group data -------------------------------------------------------------------------------------------------- -- Delete Existing DELETE FROM [int].[FactOBPayorGroup] WHERE 1=1 and FiscalYearID = ' + cast(@year as nvarchar(4)) + ' and TimeClassID = 2 -- Insert Budget data INSERT INTO [int].[FactOBPayorGroup] ( OBReimbursementPlanID, ReimbursementPlan, PatientClassID, PatientClassCode, PayorGroupID, PayorGroupCode, FiscalYearID, FiscalYearCode, TimeClassID, TimeClassCode, FiscalMonthID, FiscalMonthCode, OBForecastDetailID, OBForecastDetailCode, CareSettingID, CareSettingCode, Value, IsDeleted, HistoryItemGUID) SELECT P.OBReimbursementPlanID, P.Name as ReimbursementPlan, PAT.PatientClassID, PAT.Code as PatientClassCode, PAY.PayorGroupID, PAY.PayorGroupCode, BudgetedData.FiscalYearID, BudgetedData.FiscalYearID as FiscalYearCode, TC.TimeClassID, TC.TimeClassCode, fm.FiscalMonthID, fm.FiscalMonthCode, FD.OBForecastDetailID, FD.Code as OBForecastDetail, C.CareSettingID, C.Code as CareSettingCode, Value ,''0'' as IsDeleted ,''' + cast(@higuid as varchar(36)) + ''' as HistoryItemGUID FROM ( SELECT * FROM ( SELECT * FROM [clientob].[FactReimbursement] fac ) EXPORTDATA UNPIVOT (Value for FiscalMonthCode in ([Month01],[Month02],[Month03],[Month04],[Month05],[Month06],[Month07],[Month08],[Month09],[Month10],[Month11],[Month12])) AS PVT ) BudgetedData INNER JOIN [fw].[DimPatientReimbursementGroup] PRG on PRG.PatientReimbursementGroupID = BudgetedData.PatientReimbursementGroupID INNER JOIN [fw].[DimPatientClass] PAT ON PAT.PatientClassID = PRG.PatientClassID INNER JOIN [fw].[DimCareSetting] C ON C.CareSettingID = PRG.CareSettingID INNER JOIN [fw].[DimPayorGroup] PAY ON PAY.PayorGroupID = BudgetedData.PayorGroupID INNER JOIN [ob].[DimOBReimbursementPlan] P ON P.OBReimbursementPlanID = BudgetedData.OBReimbursementPlanID INNER JOIN [fw].[DimTimeClass] tc on tc.TimeClassID = BudgetedData.TimeClassID INNER JOIN [fw].[DimFiscalMonth] fm on fm.MonthColumnName = BudgetedData.FiscalMonthCode INNER JOIN [ob].[DimOBForecastDetail] FD ON FD.OBForecastDetailID = BudgetedData.OBForecastDetailID WHERE 1=1 and BudgetedData.Value <> 0 and BudgetedData.TimeClassID = 2 and BudgetedData.IsDeleted = 0 and BudgetedData.FiscalYearID = ' + cast(@year as nvarchar(4)) if @IsDebugOnly=1 begin print(@sql) end else begin exec(@sql) end end --END OF PROCEDURE GO --------------------------------------------- -- ob.procFinalizeBudget_SampleToInt_SL CREATE proc [ob].[procFinalizeBudget_SampleToInt_SL] @IsDebugOnly bit = 0 /* ****************************************************************************************************** ** Author: Corey Becker ** Create Date: 2016-03-22 ** Description: Copies Service Line Budget Data into 'int' tables ** Last Modified: 2016-03-22 ** GM Release: 2016.3 ********************************************************************************************************* ** Change History ********************************************************************************************************* ** CID Date Author WI Description ** 1 2016-11-21 srk D-04550 Add DepartmentCode and DepartmentID to the Service Line transfer *********************************************************************************************************/ as begin -------------------------------------------------------------------------------------------------- -- Logging -------------------------------------------------------------------------------------------------- declare @logdesc nvarchar(100) select @logdesc = case @IsDebugOnly when 1 then 'Debug only - Sample Service Line budget data into int tables' else 'Sample Service Line budget data into int tables' end declare @higuid uniqueidentifier exec procLogScript @logdesc, @higuid output print 'Beginning sample, historyguid: '+cast(@higuid as varchar(36)) -------------------------------------------------------------------------------------------------- -- Variable declarations -------------------------------------------------------------------------------------------------- declare @year int select @year = dbs.Setting+1 from [dbo].[DBSetting] dbs where dbs.Name = 'OB_Current_Year' declare @sql nvarchar(max) = '' -------------------------------------------------------------------------------------------------- -- Service Line data -------------------------------------------------------------------------------------------------- SET @sql = ' -- Service Line data -------------------------------------------------------------------------------------------------- -- Delete Existing DELETE FROM [int].[FactServiceLine] WHERE 1=1 and FiscalYearID = ' + cast(@year as nvarchar(4)) + ' and TimeClassID = 2 -- Insert Budget data INSERT INTO [int].[FactServiceLine] ( EntityID, EntityCode, DepartmentID, DepartmentCode, PatientClassID, PatientClassCode, ServiceLineID, ServiceLine, AgeCohortID, AgeCohort, MedicalSurgicalID, MedSurg, PayorID, PayorGroupID, FiscalYearID, FiscalYearCode, TimeClassID, TimeClassCode, FiscalMonthID, FiscalMonthCode, OBForecastDetailID, ForecastDetail, Value, IsDeleted, HistoryItemGUID) SELECT E.EntityID, E.Code as [EntityCode], DEPT.DepartmentID, DEPT.DepartmentCode, PAT.PatientClassID, PAT.Code as [PatientClassCode], SL.ServiceLineID, SL.Code as [ServiceLineCode], AGE.AgeCohortID, AGE.Code as [AgeCohort], MED.MedicalSurgicalID, MED.Code as [MedSurg], PAY.PayorID, PAYG.PayorGroupID, BudgetedData.FiscalYearID, BudgetedData.FiscalYearID AS FiscalYearCode, TC.TimeClassID, TC.TimeClassCode, FM.FiscalMonthID, FM.FiscalMonthCode, FD.OBForecastDetailID, FD.Code as [ForecastDetail], Value ,''0'' as IsDeleted ,''' + cast(@higuid as varchar(36)) + ''' as HistoryItemGUID FROM ( SELECT * FROM ( SELECT * FROM [clientob].[FactServiceLine] fac ) EXPORTDATA UNPIVOT (Value for FiscalMonthCode in ([Month01],[Month02],[Month03],[Month04],[Month05],[Month06],[Month07],[Month08],[Month09],[Month10],[Month11],[Month12])) AS PVT ) BudgetedData INNER JOIN [fw].[DimModelingServiceLine] MSL on MSL.ModelingServiceLineID = BudgetedData.ModelingServiceLineID INNER JOIN [fw].[DimServiceLine] SL ON MSL.ServiceLineID = SL.ServiceLineID INNER JOIN [fw].[DimPatientClass] PAT ON PAT.PatientClassID = MSL.PatientClassID INNER JOIN [fw].[DimAgeCohort] AGE ON AGE.AgeCohortID = MSL.AgeCohortID INNER JOIN [fw].[DimMedicalSurgical] MED ON MED.MedicalSurgicalID = MSL.MedicalSurgicalID INNER JOIN [ob].[DimOBServiceLinePlan] P ON P.OBServiceLinePlanID = BudgetedData.OBServiceLinePlanID INNER JOIN [fw].[DimEntity] E on E.EntityID = P.EntityID CROSS APPLY ( SELECT TOP 1 DD.DepartmentCode, DD.DepartmentID from [fw].[DimDepartment] DD where DD.EntityID = E.EntityID ) DEPT INNER JOIN [fw].[DimTimeClass] tc on tc.TimeClassID = BudgetedData.TimeClassID INNER JOIN [fw].[DimFiscalMonth] fm on fm.MonthColumnName = BudgetedData.FiscalMonthCode INNER JOIN [ob].[DimOBForecastDetail] FD ON FD.OBForecastDetailID = BudgetedData.OBForecastDetailID INNER JOIN [fw].[DimPayor] PAY ON PAY.PayorID=0 INNER JOIN [fw].[DimPayorGroup] PAYG ON PAYG.PayorGroupID=0 WHERE 1=1 and BudgetedData.Value <> 0 and BudgetedData.TimeClassID = 2 and BudgetedData.IsDeleted = 0 and BudgetedData.FiscalYearID = ' + cast(@year as nvarchar(4)) if @IsDebugOnly=1 begin print(@sql) end else begin exec(@sql) end end --END OF PROCEDURE GO --------------------------------------------- -- ob.procFinancialReportingSyncBalFromSP CREATE proc [ob].[procFinancialReportingSyncBalFromSP] AS --apply renames update ob set ob.LineName = sp.LineName, ob.Name = sp.Name, ob.DisplayFormat = sp.DisplayFormat, ob.SortOrder = sp.SortOrder, ob.IsExpense = sp.ConsolidatedIsInverted from ob.DimFinancialReporting ob inner join sp.DimFinancialReporting sp on sp.FinancialReportingID = ob.ConsolidatedFinancialReportingID where ob.Statement = 'Bal' --add missing declare @startID int select @startID = MAX(FinancialReportingID) from ob.DimFinancialReporting INSERT INTO ob.DimFinancialReporting (Statement, Section, LineName, IsMappable, ConsolidatedFinancialReportingID, ConsolidatedIsInverted, Name, StatementMappabilityFilterParameter, ConsolidatedFinancialReporting, ConsolidatedFinancialReportingSortOrder, IsRequired, IsVolume, IsFTERollup, IsEditable, DisplayFormat, SortOrder, FinancialReportingID, IsExpense) SELECT spf.Statement, spf.Section, spf.LineName, spf.IsMappable, spf.FinancialReportingID, spf.ConsolidatedIsInverted, spf.Name, spf.StatementMappabilityFilterParameter, spf.ConsolidatedFinancialReporting, spf.ConsolidatedFinancialReportingSortOrder, spf.IsRequired, spf.IsVolume, spf.IsFTERollup, spf.IsEditable, spf.DisplayFormat, spf.SortOrder, @startID + spf.FinancialReportingID, spf.ConsolidatedIsInverted FROM sp.DimFinancialReporting spf WHERE spf.Statement = 'Bal' AND not exists(select 1 from ob.DimFinancialReporting ex where ex.ConsolidatedFinancialReportingID = spf.FinancialReportingID) --reassign accounts tied to invalid update a set a.OBDollarsFinancialReportingID = 0 FROM ob.DimFinancialReporting obf inner join fw.DimAccount a on a.OBDollarsFinancialReportingID = obf.FinancialReportingID WHERE obf.Statement = 'Bal' AND not exists(select 1 from sp.DimFinancialReporting ex where ex.FinancialReportingID = obf.ConsolidatedFinancialReportingID); update a set a.OBUnitsFinancialReportingID = 0 FROM ob.DimFinancialReporting obf inner join fw.DimAccount a on a.OBUnitsFinancialReportingID = obf.FinancialReportingID WHERE obf.Statement = 'Bal' AND not exists(select 1 from sp.DimFinancialReporting ex where ex.FinancialReportingID = obf.ConsolidatedFinancialReportingID); --delete invalid DELETE obf FROM ob.DimFinancialReporting obf WHERE obf.Statement = 'Bal' AND not exists(select 1 from sp.DimFinancialReporting ex where ex.FinancialReportingID = obf.ConsolidatedFinancialReportingID) GO --------------------------------------------- -- ob.procImplDepartmentBudgetClearAssumptionsAndOutputs /************************************************************ ** Author: akowalski ** Create Date: 2014-08-27 ** Description: Deletes all assumptions and output data for the department budget template - NEVER RUN ON LIVE DATABASES ** Last Modified: 2014-08-27 ** GM Release: 2014.4 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 11-24-2014 BL B-03364 Add Clear Non-Reporting to Proc ** *************************************************************/ CREATE proc ob.procImplDepartmentBudgetClearAssumptionsAndOutputs @isExecuting bit = 0 as if (@isExecuting=1) begin declare @dbname nvarchar(1000) = (DB_Name()) /************** Remove var data *******************/ --Remove data from Fact Account Var exec TempTableBackups.dbo.procBackupTable @dbname, 'FactAccountVar', 'clientob' delete fa from [clientob].[FactAccountvar] fa inner join [ob].[DimDepartmentalBudget] db on db.DepartmentalBudgetID=fa.DepartmentalBudgetID inner join [fw].[DimDepartment] d on d.DepartmentID=db.DepartmentID --Remove data from Fact Account Rollup Var exec TempTableBackups.dbo.procBackupTable @dbname, 'FactAccountRollupVar', 'clientob' delete fa from [clientob].[FactAccountRollupvar] fa inner join [ob].[DimDepartmentalBudget] db on db.DepartmentalBudgetID=fa.DepartmentalBudgetID inner join [fw].[DimDepartment] d on d.DepartmentID=db.DepartmentID --Remove data from Fact Staffing PC Var exec TempTableBackups.dbo.procBackupTable @dbname, 'FactStaffingPCVar', 'clientob' delete fs from [clientob].[FactStaffingPCVar] fs inner join [ob].[DimDepartmentalBudget] db on db.DepartmentalBudgetID=fs.DepartmentalBudgetID inner join [fw].[DimDepartment] d on d.DepartmentID=db.DepartmentID --Remove data from Fact CDM Var exec TempTableBackups.dbo.procBackupTable @dbname, 'FactCDMVar', 'clientob' delete fa from [clientob].[FactCDMvar] fa inner join [ob].[DimDepartmentalBudget] db on db.DepartmentalBudgetID=fa.DepartmentalBudgetID inner join [fw].[DimDepartment] d on d.DepartmentID=db.DepartmentID --Remove data from Fact Provider Var exec TempTableBackups.dbo.procBackupTable @dbname, 'FactProviderVar', 'clientob' delete fa from [clientob].[FactProvidervar] fa inner join [ob].[DimDepartmentalBudget] db on db.DepartmentalBudgetID=fa.DepartmentalBudgetID inner join [fw].[DimDepartment] d on d.DepartmentID=db.DepartmentID /************** Remove output data *******************/ --Remove output data from Fact Account exec TempTableBackups.dbo.procBackupTable @dbname, 'FactAccount', 'clientob' delete fa from [clientob].[FactAccount] fa inner join [ob].[DimDepartmentalBudget] db on db.DepartmentalBudgetID=fa.DepartmentalBudgetID inner join [fw].[DimDepartment] d on d.DepartmentID=db.DepartmentID where DataTypeID=3 --Remove output data from Fact Account Non Reporting exec TempTableBackups.dbo.procBackupTable @dbname, 'FactAccountNonReporting', 'clientob' delete fa from [clientob].[FactAccountNonReporting] fa inner join [ob].[DimDepartmentalBudget] db on db.DepartmentalBudgetID=fa.DepartmentalBudgetID inner join [fw].[DimDepartment] d on d.DepartmentID=db.DepartmentID where DataTypeID=3 --Remove output data from Fact Staffing PC exec TempTableBackups.dbo.procBackupTable @dbname, 'FactStaffingPC', 'clientob' delete fs from [clientob].[FactStaffingPC] fs inner join [ob].[DimDepartmentalBudget] db on db.DepartmentalBudgetID=fs.DepartmentalBudgetID inner join [fw].[DimDepartment] d on d.DepartmentID=db.DepartmentID where DataTypeID=3 --Remove output data from Fact CDM exec TempTableBackups.dbo.procBackupTable @dbname, 'FactCDM', 'clientob' delete fa from [clientob].[FactCDM] fa inner join [ob].[DimDepartmentalBudget] db on db.DepartmentalBudgetID=fa.DepartmentalBudgetID inner join [fw].[DimDepartment] d on d.DepartmentID=db.DepartmentID where DataTypeID=3 --Remove output data from Fact Provider exec TempTableBackups.dbo.procBackupTable @dbname, 'FactProvider', 'clientob' delete fa from [clientob].[FactProvider] fa inner join [ob].[DimDepartmentalBudget] db on db.DepartmentalBudgetID=fa.DepartmentalBudgetID inner join [fw].[DimDepartment] d on d.DepartmentID=db.DepartmentID where DataTypeID=3 --Remove output data from Fact Reporting Monthly exec TempTableBackups.dbo.procBackupTable @dbname, 'FactReportingMonthly', 'clientob' delete fa from [clientob].[FactReportingMonthly] fa inner join [ob].[DimDepartmentalBudget] db on db.DepartmentalBudgetID=fa.DepartmentalBudgetID inner join [fw].[DimDepartment] d on d.DepartmentID=db.DepartmentID inner join [ob].[DimFinancialReporting] fr on fr.FinancialReportingID=fa.FinancialReportingID where fr.Statement<>'Standards' /************** Repopulate data from entity models *******************/ exec [clientob].[procSampleCDMBudgetYear] exec [clientob].[procSampleCDMCurrentYear] exec [clientob].[procFactGlobalStatisticMappingSample] exec [clientob].[procFactReimbursementMappingSample] end RETURN GO --------------------------------------------- -- ob.procImplFixInvalidDropDownSelections /************************************************************ ** Author: akowalski ** Create Date: 2014-09-23 ** Description: Fixes any text boxes that saved a value of blank that will cause #n/a errors in the model ** Last Modified: 2014-09-23 ** GM Release: 2014.4 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** ** *************************************************************/ CREATE proc ob.procImplFixInvalidDropDownSelections as --get list of affected plans select distinct db.MemberGUID as PlanGUID into #Plans from [ob].[viewExceptionsDepartmentBudgetInvalidDropdownSelection] e inner join [ob].[DimDepartmentalBudget] db on db.DepartmentalBudgetID=e.DepartmentalBudgetID declare @dbname nvarchar(1000) = (DB_Name()) --Accounts exec TempTableBackups.dbo.procBackupTable @dbname, 'FactAccountVar', 'clientob' update fct set TextValue_Formula='d' from clientob.factaccountvar fct with (readuncommitted) inner join ob.DimDepartmentalBudget DB with (readuncommitted) on fct.DepartmentalBudgetID=db.DepartmentalBudgetID inner join fw.DimAccount DIM with (readuncommitted) on fct.AccountID = DIM.AccountID where fct.UnitTypeID=141 and TextValue_Formula='x' and TextValue='' -- Job Codes exec TempTableBackups.dbo.procBackupTable @dbname, 'FactStaffingPCVar', 'clientob' update fct set TextValue_Formula='d' from clientob.FactStaffingPCVar fct with (readuncommitted) inner join ob.DimDepartmentalBudget DB with (readuncommitted) on fct.DepartmentalBudgetID=db.DepartmentalBudgetID inner join fw.DimJobCode DIM with (readuncommitted) on fct.JobCodeID = DIM.JobCodeID where fct.UnitTypeID=141 and TextValue_Formula='x' and TextValue='' and EmployeeID=0 -- Providers exec TempTableBackups.dbo.procBackupTable @dbname, 'FactProviderVar', 'clientob' update fct set TextValue_Formula='d' from clientob.FactProviderVar fct with (readuncommitted) inner join ob.DimDepartmentalBudget DB with (readuncommitted) on fct.DepartmentalBudgetID=db.DepartmentalBudgetID inner join fw.DimProvider DIM with (readuncommitted) on fct.ProviderID = DIM.ProviderID where fct.UnitTypeID=141 and TextValue_Formula='x' and TextValue='' -- Employees update fct set TextValue_Formula='d' from clientob.FactStaffingPCVar fct with (readuncommitted) inner join ob.DimDepartmentalBudget DB with (readuncommitted) on fct.DepartmentalBudgetID=db.DepartmentalBudgetID inner join fw.DimEmployee DIM with (readuncommitted) on fct.EmployeeID = DIM.EmployeeID where fct.UnitTypeID=141 and TextValue_Formula='x' and TextValue='' and DIM.EmployeeID<>0 -- Global Methods exec TempTableBackups.dbo.procBackupTable @dbname, 'FactAccountRollupVar', 'clientob' update fct set TextValue_Formula='d' from clientob.FactAccountRollupVar fct with (readuncommitted) inner join ob.DimDepartmentalBudget DB with (readuncommitted) on fct.DepartmentalBudgetID=db.DepartmentalBudgetID inner join ob.DimFinancialReporting DIM with (readuncommitted) on fct.FinancialReportingID=DIM.FinancialReportingID where fct.UnitTypeID=141 and TextValue_Formula='x' and TextValue='' -- invalidatae workbook caches for affected plans DECLARE guidlist CURSOR FOR select planguid from #Plans open guidlist declare @sqli varchar(max) DECLARE @planguid nvarchar(256) FETCH NEXT FROM guidlist INTO @planguid WHILE (@@FETCH_STATUS = 0) BEGIN SET @sqli = 'exec [dbo].[procInvalidateModelWorkbookCache] @entityguid = ''' + @planguid + ''', @istemplate = 0,@source=''ob.procImplFixInvalidDropDownSelections''' exec(@sqli) FETCH NEXT FROM guidlist INTO @planguid END CLOSE guidlist DEALLOCATE guidlist RETURN GO --------------------------------------------- -- ob.procImplGlobalStatsClearAssumptionsAndOutputs /************************************************************ ** Author: akowalski ** Create Date: 2014-08-27 ** Description: Deletes all assumptions and output data for the global stats template - NEVER RUN ON LIVE DATABASES ** Last Modified: 2014-08-27 ** GM Release: 2014.4 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** ** *************************************************************/ create proc ob.procImplGlobalStatsClearAssumptionsAndOutputs @isExecuting bit = 0 as if (@isExecuting=1) begin declare @dbname nvarchar(1000) = (DB_Name()) /************** Remove var data *******************/ --Remove data from Fact GlobalStatistics Var exec TempTableBackups.dbo.procBackupTable @dbname, 'FactGlobalStatisticsVar', 'clientob' delete fa from [clientob].[FactGlobalStatisticsVar] fa inner join [ob].[DimOBGlobalStatisticsPlan] db on db.OBGlobalStatisticsPlanID=fa.OBGlobalStatisticsPlanID /************** Remove output data *******************/ --Remove output data from Fact Account exec TempTableBackups.dbo.procBackupTable @dbname, 'FactGlobalStatistics', 'clientob' delete fa from [clientob].[FactGlobalStatistics] fa inner join [ob].[DimOBGlobalStatisticsPlan] db on db.OBGlobalStatisticsPlanID=fa.OBGlobalStatisticsPlanID where DataTypeID=3 end RETURN GO --------------------------------------------- -- ob.procImplReimbursementClearAssumptionsAndOutputs /************************************************************ ** Author: akowalski ** Create Date: 2014-08-27 ** Description: Deletes all assumptions and output data for the reimbursement template - NEVER RUN ON LIVE DATABASES ** Last Modified: 2014-08-27 ** GM Release: 2014.4 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 2014-11-24 bl b-03364 Add Fact ReimbAcct and ReimbAcctNonReporting ** *************************************************************/ CREATE proc ob.procImplReimbursementClearAssumptionsAndOutputs @isExecuting bit = 0 as if (@isExecuting=1) begin declare @dbname nvarchar(1000) = (DB_Name()) /************** Remove var data *******************/ --Remove data from Fact Reimbursement Account Var exec TempTableBackups.dbo.procBackupTable @dbname, 'FactReimbursementAccountVar', 'clientob' delete fa from [clientob].[FactReimbursementAccountVar] fa inner join [ob].[DimOBReimbursementPlan] db on db.OBReimbursementPlanID=fa.OBReimbursementPlanID --Remove data from Fact Reimbursement Var exec TempTableBackups.dbo.procBackupTable @dbname, 'FactReimbursementVar', 'clientob' delete fa from [clientob].[FactReimbursementVar] fa inner join [ob].[DimOBReimbursementPlan] db on db.OBReimbursementPlanID=fa.OBReimbursementPlanID /************** Remove output data *******************/ --Remove output data from Fact Reimbursement exec TempTableBackups.dbo.procBackupTable @dbname, 'FactReimbursement', 'clientob' delete fa from [clientob].[FactReimbursement] fa inner join [ob].[DimOBReimbursementPlan] db on db.OBReimbursementPlanID=fa.OBReimbursementPlanID where DataTypeID=3 --Remove output data from Fact Reimbursement Account exec TempTableBackups.dbo.procBackupTable @dbname, 'FactReimbursement', 'clientob' delete fa from [clientob].[FactReimbursementAccount] fa inner join [ob].[DimOBReimbursementPlan] db on db.OBReimbursementPlanID=fa.OBReimbursementPlanID where DataTypeID=3 --Remove output data from Fact Reimbursement Account NonReporting exec TempTableBackups.dbo.procBackupTable @dbname, 'FactReimbursementAccountNonReporting', 'clientob' delete fa from [clientob].[FactReimbursementAccountNonReporting] fa inner join [ob].[DimOBReimbursementPlan] db on db.OBReimbursementPlanID=fa.OBReimbursementPlanID where DataTypeID=3 end RETURN GO --------------------------------------------- -- ob.procImplServiceLineClearAssumptionsAndOutputs /************************************************************ ** Author: akowalski ** Create Date: 2014-08-27 ** Description: Deletes all assumptions and output data for the service line template - NEVER RUN ON LIVE DATABASES ** Last Modified: 2014-08-27 ** GM Release: 2014.4 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** ** *************************************************************/ create proc ob.procImplServiceLineClearAssumptionsAndOutputs @isExecuting bit = 0 as if (@isExecuting=1) begin declare @dbname nvarchar(1000) = (DB_Name()) /************** Remove var data *******************/ --Remove data from Fact Service Line Var exec TempTableBackups.dbo.procBackupTable @dbname, 'FactServiceLineVar', 'clientob' delete fa from [clientob].[FactServiceLineVar] fa inner join [ob].[DimOBServiceLinePlan] db on db.OBServiceLinePlanID=fa.OBServiceLinePlanID --Remove data from Fact Service Line Rollup Var exec TempTableBackups.dbo.procBackupTable @dbname, 'FactServiceLineRollupVar', 'clientob' delete fa from [clientob].[FactServiceLineRollupVar] fa inner join [ob].[DimOBServiceLinePlan] db on db.OBServiceLinePlanID=fa.OBServiceLinePlanID /************** Remove output data *******************/ --Remove output data from Fact Service Line exec TempTableBackups.dbo.procBackupTable @dbname, 'FactServiceLine', 'clientob' delete fa from [clientob].[FactServiceLine] fa inner join [ob].[DimOBServiceLinePlan] db on db.OBServiceLinePlanID=fa.OBServiceLinePlanID where DataTypeID=3 end RETURN GO --------------------------------------------- -- ob.procLockBudgetModels CREATE PROCEDURE [ob].[procLockBudgetModels] @planGUIDs [dbo].[SqlGuidListTableType] READONLY, @userGroupGUID UNIQUEIDENTIFIER AS BEGIN DECLARE @writeDenyRoleID INT = (select RoleID from UserRole where GlobalID = 'OB - Write Deny') INSERT INTO [dbo].[S3RoleAssignment] (LootGroupID, RoleID, IdentityGUID) SELECT CachedLootID, @writeDenyRoleID, @userGroupGUID FROM @planGUIDs INNER JOIN [dbo].[XPlan] ON PlanGUID = value WHERE CachedLootID NOT IN ( SELECT LootGroupID FROM [dbo].[S3RoleAssignment] ra WHERE RoleID = @writeDenyRoleID AND IdentityGUID = @userGroupGUID ) END GO --------------------------------------------- -- ob.procMissingJobCodeWageRates_Update create proc [ob].[procMissingJobCodeWageRates_Update] @planGUIDList nvarchar(max)='', @IsDebugOnly bit = 0 /************************************************************************************************************************ ** Author: cbecker ** Create Date: 2015-12-02 ** Description: Checks for missing wage rates and sets equal to entity or system average ** Last Modified: 2015-12-02 ** GM Release: 2016.1.1 ************************************************************************************************************************** ** Change History ************************************************************************************************************************** ** CID Date Author WI Description ** 00 0000-00-00 xxx x-00000 xx xx *************************************************************************************************************************/ as begin set nocount on -------------------------------------------------------------------------------------------------- -- Logging -------------------------------------------------------------------------------------------------- declare @higuid uniqueidentifier exec procLogScript 'Update missing job code wage rates' , @higuid output print 'Beginning update, historyguid: ' + cast(@higuid as varchar(36)) -------------------------------------------------------------------------------------------------- -- Backup -------------------------------------------------------------------------------------------------- --declare @dbname nvarchar(1000) = (DB_Name()) --exec TempTableBackups.dbo.procBackupTable @dbname, 'FactStaffingPCVar', 'clientob' -------------------------------------------------------------------------------------------------- -- Declare variables -------------------------------------------------------------------------------------------------- declare @FiscalYearID int select @FiscalYearID = cast(Setting as int) from [dbo].[DBSetting] where DBSettingGUID='9c921c27-f3e4-4616-b3fd-925a75870b62' declare @RegPCG int select @RegPCG = PayCodeGroupID from [fw].[DimPayCodeGroup] where 1=1 and ProductiveClassID = 3 and SortOrder=(select min(sortorder) from [fw].[DimPayCodeGroup] where ProductiveClassID=3) -------------------------------------------------------------------------------------------------- -- Populate Pay Code Group temp table -------------------------------------------------------------------------------------------------- Create Table #PayCodeGroups(PayCodeGroupID int, ProductiveClassID int, PayCodeGroupID2 int) insert into #PayCodeGroups(PayCodeGroupID, ProductiveClassID, PayCodeGroupID2) select PayCodeGroupID, ProductiveClassID, PayCodeGroupID2 = case pcg.ProductiveClassID when 3 then @RegPCG else pcg.PayCodeGroupID end from [fw].[DimPayCodeGroup] pcg where ProductiveClassID in (3, 5) -------------------------------------------------------------------------------------------------- -- Populate plans temp table -------------------------------------------------------------------------------------------------- Create Table #Plans(DepartmentalBudgetID int) if (len(@planGUIDList) = 0) begin -- if no plans provided, we will update job codes for all plans insert into #Plans(DepartmentalBudgetID) select DepartmentalBudgetID from ob.DimDepartmentalBudget end else begin -- if plans are provided, we will only update job codes in specified plans insert into #Plans(DepartmentalBudgetID) select plandim.DepartmentalBudgetID from dbo.ConvertCSGuidsToTable(@planGUIDList, ',') planguids inner join ob.DimDepartmentalBudget plandim on planguids.guid = plandim.MemberGUID end -------------------------------------------------------------------------------------------------- -- Populate job codes temp table -------------------------------------------------------------------------------------------------- create Table #JobCodes(EntityID int, DepartmentalBudgetID int, PayCodeGroupID int, JobCodeID int, Total money) insert into #JobCodes (EntityID, DepartmentalBudgetID, PayCodeGroupID, JobCodeID, Total) select distinct db.EntityID, fct.DepartmentalBudgetID, PayCodeGroupID2, fct.JobCodeID, sum(fct.Total) from [clientob].[FactStaffingPC] fct with (readuncommitted) inner join #Plans pl on fct.DepartmentalBudgetID = pl.DepartmentalBudgetID inner join [ob].[DimDepartmentalBudget] db on pl.DepartmentalBudgetID = db.DepartmentalBudgetID inner join #PayCodeGroups pcg on fct.PayCodeGroupID = pcg.PayCodeGroupID where 1=1 and fct.UnitTypeID = 34 and fct.TimeClassID = 2 and fct.DataTypeID = 3 and fct.FiscalYearID = (@FiscalYearID+1) and (fct.Total = 0 or pcg.ProductiveClassID = 3) group by db.EntityID, fct.DepartmentalBudgetID, pcg.PayCodeGroupID2, fct.JobCodeID having sum(fct.Total) = 0 -------------------------------------------------------------------------------------------------- -- Populate entity average wage temp table -------------------------------------------------------------------------------------------------- create table #EntityAvg (Row int, EntityID int, JobCodeID int, FiscalYearID int, SortOrder int, PayCodeGroupID int, Dollars money, Hours money, Wage money) insert into #EntityAvg (Row, EntityID, JobCodeID, FiscalYearID, SortOrder, PayCodeGroupID, Dollars, Hours, Wage) select Row = ROW_NUMBER() OVER ( partition by jc.EntityID, pc1.JobCodeID, pc1.PayCodeGroupID, pc1.FiscalYearID order by jc.EntityID, pc1.JobCodeID, pc1.PayCodeGroupID, pc1.FiscalYearID desc, fm.SortOrder desc ), EntityID = jc.EntityID, JobCodeID = pc1.JobCodeID, FiscalYearID = pc1.FiscalYearID, SortOrder = fm.SortOrder, PayCodeGroupID = case pc1.PayCodeGroupID when @RegPCG then 0 else pc1.PayCodeGroupID end, Dollars = sum(pc1.Value), Hours = nullif(sum(pc2.Value),0), Wage = coalesce(sum(pc1.Value)/nullif(sum(pc2.Value),0),0) from [ob].[viewFactStaffingPCUnpivoted] pc1 inner join #JobCodes jc on pc1.JobCodeID = jc.JobCodeID --and pc1.DepartmentalBudgetID= jc.DepartmentalBudgetID and pc1.PayCodeGroupID = jc.PayCodeGroupID inner join [ob].[viewFactStaffingPCUnpivoted] pc2 on pc1.DepartmentalBudgetID = pc2.DepartmentalBudgetID and pc1.PayCodeGroupID = pc2.PayCodeGroupID and pc1.JobCodeID = pc2.JobCodeID and pc1.FiscalYearID = pc2.FiscalYearID and pc1.TimeClassID = pc2.TimeClassID and pc1.DataTypeID = pc2.DataTypeID and pc1.FiscalMonthID = pc2.FiscalMonthID inner join [fw].[DimFiscalMonth] fm on pc1.FiscalMonthID = fm.FiscalMonthID where 1=1 and pc1.UnitTypeID = 34 and pc1.Value <> 0 and pc2.Value <> 0 and pc1.TimeClassID = 12 and pc1.DataTypeID = 3 and pc1.FiscalYearID = @FiscalYearID and pc2.UnitTypeID in (147, 148) group by jc.EntityID, pc1.JobCodeID, pc1.FiscalYearID, fm.SortOrder, pc1.PayCodeGroupID -------------------------------------------------------------------------------------------------- -- Populate system average wage temp table -------------------------------------------------------------------------------------------------- create table #SystemAvg (JobCodeID int, PayCodeGroupID int, Wage money) insert into #SystemAvg (JobCodeID, PayCodeGroupID, Wage) select JobCodeID = ea.JobCodeID, PayCodeGroupID = ea.PayCodeGroupID, Wage = coalesce(sum(ea.Dollars)/nullif(sum(ea.Hours),0),0) from #EntityAvg ea where 1=1 and ea.Row = 1 group by JobCodeID, PayCodeGroupID -------------------------------------------------------------------------------------------------- -- Update wage rate annual adjustment -------------------------------------------------------------------------------------------------- if (@IsDebugOnly = 1) begin select distinct Amount = coalesce(ea.Wage, sa.Wage, 0), Amount_Formula = 'x', HistoryItemGUID = @higuid, JobCodeID = fct.JobCodeID, PayCodeGroupID = fct.PayCodeGroupID, DepartmentalBudgetID= fct.DepartmentalBudgetID from [clientob].[FactStaffingPCVar] fct inner join #JobCodes jc on fct.DepartmentalBudgetID = jc.DepartmentalBudgetID inner join #SystemAvg sa on fct.JobCodeID = sa.JobCodeID and fct.PayCodeGroupID = sa.PayCodeGroupID left join #EntityAvg ea on jc.EntityID = ea.EntityID and fct.JobCodeID = ea.JobCodeID and fct.PayCodeGroupID = ea.PayCodeGroupID where 1=1 and ea.Row = 1 and fct.TimeClassID = 2 and fct.UnitTypeID = 159 and fct.FiscalMonthID = 0 and fct.AssumptionID = 18 and fct.FiscalYearID = (@FiscalYearID+1) end else begin update fct set Amount = coalesce(ea.Wage, sa.Wage, 0), Amount_Formula = 'x', HistoryItemGUID = @higuid from [clientob].[FactStaffingPCVar] fct inner join #JobCodes jc on fct.DepartmentalBudgetID = jc.DepartmentalBudgetID inner join #SystemAvg sa on fct.JobCodeID = sa.JobCodeID and fct.PayCodeGroupID = sa.PayCodeGroupID left join #EntityAvg ea on jc.EntityID = ea.EntityID and fct.JobCodeID = ea.JobCodeID and fct.PayCodeGroupID = ea.PayCodeGroupID where 1=1 and ea.Row = 1 and fct.TimeClassID = 2 and fct.UnitTypeID = 159 and fct.FiscalMonthID = 0 and fct.AssumptionID = 18 and fct.FiscalYearID = (@FiscalYearID+1) end -------------------------------------------------------------------------------------------------- -- Clean-up -------------------------------------------------------------------------------------------------- --disable cache for plans if (@planGUIDList = '') begin exec [dbo].[procInvalidateModelWorkbookCacheByPlanType] '05512126-3EB6-4DA4-AF6E-BC2BC2724B8B', 'procMissingJobCodeWageRates_Update' end else begin declare @invalidateWhere nvarchar(max) set @invalidateWhere = 'PlanGUID in(select guid from dbo.ConvertCSGuidsToTable(''' + @planGUIDList + ''','',''))' exec [dbo].[procInvalidateModelWorkbookCacheByWhereClause] @invalidateWhere, 0, 'procMissingJobCodeWageRates_Update' end drop table #Plans drop table #JobCodes drop table #EntityAvg drop table #SystemAvg end GO --------------------------------------------- -- ob.procOBSPSLForecastYr1VoltoOBBaseline create proc [ob].[procOBSPSLForecastYr1VoltoOBBaseline] @planGUIDList nvarchar(max)='', @IsDebugOnly bit = 0 /************************************************************************************************************************ ** Author: cbecker ** Create Date: 2016-04-05 ** Description: B-11790 transfer service line volumes from strategic planning to the OB Service line model ** Last Modified: 2016-04-05 ** GM Release: 2016.2.1 ************************************************************************************************************************** ** Change History ************************************************************************************************************************** ** CID Date Author WI Description ** *************************************************************************************************************************/ as begin -------------------------------------------------------------------------------------------------- -- Logging -------------------------------------------------------------------------------------------------- declare @logdesc nvarchar(100) select @logdesc = case @IsDebugOnly when 1 then 'Debug only - Transfer SP service line volumes from SP forecast year 1 to OB SL baseline' else 'Transfer SP service line volumes from SP forecast year 1 to OB SL baseline' end declare @higuid uniqueidentifier exec procLogScript @logdesc, @higuid output print N'select * from [dbo].[HistoryItem] where HISTORYITEMGUID=''' +cast(@higuid as varchar(36)) +N'''' -------------------------------------------------------------------------------------------------- -- Declare variables -------------------------------------------------------------------------------------------------- declare @budgetyear int select @budgetyear = dbs.Setting+1 from [dbo].[DBSetting] dbs where dbs.Name = 'OB_Current_Year' declare @sql nvarchar(max) = '' -------------------------------------------------------------------------------------------------- -- Populate plans temp table -------------------------------------------------------------------------------------------------- Create Table #Plans(OBServiceLinePlanID int, SPLongRangeServiceLineID int) if (len(@planGUIDList) = 0) begin -- if no plans provided, we will update job codes for all plans insert into #Plans(OBServiceLinePlanID, SPLongRangeServiceLineID) select ob.OBServiceLinePlanID,sp.SPLongRangeServiceLineID from [ob].[DimOBServiceLinePlan] ob inner join [fw].[DimDepartment] dpt on ob.EntityID=dpt.EntityID inner join [sp].[DimSPLongRangeServiceLine] sp on dpt.DepartmentID=sp.EntityID where 1=1 and dpt.IsDepartmentRollup = 1 and sp.ScenarioID = 0 and sp.IsDeleted = 0 and ob.IsDeleted = 0 end else begin -- if plans are provided, we will only update job codes in specified plans insert into #Plans(OBServiceLinePlanID, SPLongRangeServiceLineID) select ob.OBServiceLinePlanID,sp.SPLongRangeServiceLineID from [ob].[DimOBServiceLinePlan] ob inner join dbo.ConvertCSGuidsToTable(@planGUIDList, ',') pg on pg.guid=ob.MemberGUID inner join [fw].[DimDepartment] dpt on ob.EntityID=dpt.EntityID inner join [sp].[DimSPLongRangeServiceLine] sp on dpt.DepartmentID=sp.EntityID where 1=1 and dpt.IsDepartmentRollup = 1 and sp.ScenarioID = 0 and sp.IsDeleted = 0 and ob.IsDeleted = 0 end -------------------------------------------------------------------------------------------------- -- Suppress percentage adjustments -------------------------------------------------------------------------------------------------- set @sql = @sql +' update vr set vr.Amount = -1, vr.Amount_Formula=''x'' --select * from [clientob].[FactServiceLineRollupVar] vr inner join #Plans pl on vr.OBServiceLinePlanID=pl.OBServiceLinePlanID where 1=1 and vr.TimeClassID = 18 --baseline and vr.AssumptionID = 18 --adjustment and vr.FiscalMonthID = 0 --not specified and vr.UnitTypeID = 142 --percentage and vr.DataTypeID = 2 --var and vr.OBForecastDetailID = 36 --volume and vr.FiscalYearID = ' + cast(@budgetyear as nvarchar(4)) + ' --current budget year ' -------------------------------------------------------------------------------------------------- -- Delete existing service line volume adjustments -------------------------------------------------------------------------------------------------- set @sql = @sql +' delete vr --select * from [clientob].[FactServiceLineVar] vr inner join #Plans pl on vr.OBServiceLinePlanID=pl.OBServiceLinePlanID where 1=1 and vr.TimeClassID = 18 --baseline and vr.AssumptionID = 18 --adjustment and vr.FiscalMonthID = 0 --not specified and vr.UnitTypeID = 140 --volume and vr.DataTypeID = 2 --var and vr.OBForecastDetailID = 36 --volume and vr.FiscalYearID = ' + cast(@budgetyear as nvarchar(4)) + ' --current budget year ' -------------------------------------------------------------------------------------------------- -- Insert service line volumes from SP to OB -------------------------------------------------------------------------------------------------- set @sql = @sql +' insert into [clientob].[FactServiceLineVar] ( [AssumptionID], [DataTypeID], [FiscalMonthID], [FiscalYearID], [ModelingServiceLineID], [OBForecastDetailID], [OBServiceLinePlanID], [TimeClassID], [UnitTypeID], [Amount], [IsDeleted], [HistoryItemGUID] ) select AssumptionID = 18, DataTypeID = 2, FiscalMonthID = 0, FiscalYearID = ' + cast(@budgetyear as nvarchar(4)) + ', ModelingServiceLineID = fct.ModelingServiceLineID, OBForecastDetailID = 36, OBServiceLinePlanID = pg.OBServiceLinePlanID, TimeClassID = 18, UnitTypeID = 140, Amount = sum(fct.Amount), IsDeleted = 0, HistoryItemGUID = ''' + cast(@higuid as nvarchar(36)) + ''' from [clientsp].[FactServiceLineRevenue] fct inner join #Plans pg on fct.SPLongRangeServiceLineID = pg.SPLongRangeServiceLineID where 1=1 and fct.TimeClassID = 3 --forecast and fct.DataTypeID = 3 --output and fct.UnitTypeID = 140 --volume and fct.AccountRollupID = 3 --volumes and fct.FiscalYearID = ' + cast(@budgetyear as nvarchar(4)) + ' --current budget year group by fct.ModelingServiceLineID, pg.OBServiceLinePlanID ' -------------------------------------------------------------------------------------------------- -- Run/Print SQL -------------------------------------------------------------------------------------------------- if @IsDebugOnly=1 begin print(@sql) end else begin exec(@sql) end -------------------------------------------------------------------------------------------------- -- Invalidate cache -------------------------------------------------------------------------------------------------- if @IsDebugOnly=1 begin print('Model workbook cache is not invalidated in debug mode.') end else begin if (@planGUIDList = '') begin exec [dbo].[procInvalidateModelWorkbookCacheByPlanType] '957dd809-6299-4ec2-81fc-5452df805e8e', 'procOBSPSLForecastYr1VoltoOBBaseline' end else begin declare @invalidateWhere nvarchar(max) set @invalidateWhere = 'PlanGUID in(select guid from dbo.ConvertCSGuidsToTable(''' + @planGUIDList + ''','',''))' exec [dbo].[procInvalidateModelWorkbookCacheByWhereClause] @invalidateWhere, 0, 'procOBSPSLForecastYr1VoltoOBBaseline' end end -------------------------------------------------------------------------------------------------- -- Clean-up -------------------------------------------------------------------------------------------------- drop table #Plans end GO --------------------------------------------- -- ob.procOBSnapshotInsert CREATE proc [ob].[procOBSnapshotInsert] @SnapshotCategory nvarchar(200)='Auto', @SnapshotName nvarchar(200)='' /************************************************************************************************************************ ** Author: Joel Gerber ** Create Date: 2014-07 ** Description: Saves all the operating budgeting data in snapshot tables with a snapshot ID ** Last Modified: 2017-12-05 ** GM Release: 2014.4 ************************************************************************************************************************** ** Change History ************************************************************************************************************************** ** CID Date Author WI Description ** 1 2014-09-15 JG Adding Provider, Reimbursement, Service Line, and Financial Planning data sources ** 2 2015-09-25 cbb D-03363 Adding joins to dimensions to exclude orphaned data ** 3 2016-02-03 cbb D-03664 Adding missing fact table and dimension deletes ** 4 2017-05-02 cbb B-15664 Refactoring and adding Budget Close category ** 5 2017-05-11 cbb D-05935 fix join on wrong dimension ** 6 2017-06-06 cbb B-15886 add var table snapshots ** 7 2017-11-09 apukii B-17941 add ability to set snapshots name ** 8 2017-11-14 apukii B-17941 modified category limits ** 9 2017-11-20 apukii B-17941 delete snapshots only in case Budget Close ** 10 2017-11-24 apukii B-17941 replaced [fw].[DimForecastDetail] with [ob].[DimOBForecastDetail] for FactProviderVarSnapshot and FactCDMVarSnapshot ** 11 2017-12-05 apukii B-18163 allowed all new snapshots to include var table data *************************************************************************************************************************/ as begin ---------------------------------------------------------------------------------------------------- -- Populate temp table with snapshots to be deleted ---------------------------------------------------------------------------------------------------- ; -- CTE - previous statement must be terminated with a semicolon with oldsnapshots as ( select Category, OBSnapshotID, Num = row_number() over (PARTITION BY Category order by Date desc, OBSnapshotID desc) from [ob].[DimOBSnapshot] ) select OBSnapshotID, Num into #tempOldSnapshotIDs from oldsnapshots where 1=1 and Category = 'Budget Close' and Num > 1 ---------------------------------------------------------------------------------------------------- -- Delete old snapshots ---------------------------------------------------------------------------------------------------- if (select count(OBSnapshotID) from #tempOldSnapshotIDs) > 0 and @SnapshotCategory = 'Budget Close' begin delete fct from [ob].[FactAccountSnapshot] fct inner join #tempOldSnapshotIDs tmp on fct.OBSnapshotID=tmp.OBSnapshotID delete fct from [ob].[FactStaffingPCSnapshot] fct inner join #tempOldSnapshotIDs tmp on fct.OBSnapshotID=tmp.OBSnapshotID delete fct from [ob].[FactReportingMonthlySnapshot] fct inner join #tempOldSnapshotIDs tmp on fct.OBSnapshotID=tmp.OBSnapshotID delete fct from [ob].[FactGlobalStatisticsSnapshot] fct inner join #tempOldSnapshotIDs tmp on fct.OBSnapshotID=tmp.OBSnapshotID delete fct from [ob].[FactServiceLineSnapshot] fct inner join #tempOldSnapshotIDs tmp on fct.OBSnapshotID=tmp.OBSnapshotID delete fct from [ob].[FactCDMSnapshot] fct inner join #tempOldSnapshotIDs tmp on fct.OBSnapshotID=tmp.OBSnapshotID delete fct from [ob].[FactReimbursementPayorSnapshot] fct inner join #tempOldSnapshotIDs tmp on fct.OBSnapshotID=tmp.OBSnapshotID delete fct from [ob].[FactReimbursementAccountSnapshot] fct inner join #tempOldSnapshotIDs tmp on fct.OBSnapshotID=tmp.OBSnapshotID delete fct from [ob].[FactProviderSnapshot] fct inner join #tempOldSnapshotIDs tmp on fct.OBSnapshotID=tmp.OBSnapshotID -- CID 6 BEGIN delete fct from [ob].[FactAccountSubtableVarSnapshot] fct inner join #tempOldSnapshotIDs tmp on fct.OBSnapshotID=tmp.OBSnapshotID delete fct from [ob].[FactAccountVarSnapshot] fct inner join #tempOldSnapshotIDs tmp on fct.OBSnapshotID=tmp.OBSnapshotID delete fct from [ob].[FactCDMVarSnapshot] fct inner join #tempOldSnapshotIDs tmp on fct.OBSnapshotID=tmp.OBSnapshotID delete fct from [ob].[FactProviderVarSnapshot] fct inner join #tempOldSnapshotIDs tmp on fct.OBSnapshotID=tmp.OBSnapshotID delete fct from [ob].[FactStaffingPCVarSnapshot] fct inner join #tempOldSnapshotIDs tmp on fct.OBSnapshotID=tmp.OBSnapshotID -- CID 6 END --dimension delete fct from [ob].[DimOBSnapshot] fct inner join #tempOldSnapshotIDs tmp on fct.OBSnapshotID=tmp.OBSnapshotID end ---------------------------------------------------------------------------------------------------- -- Create new snapshot record ---------------------------------------------------------------------------------------------------- declare @fiscalYear nvarchar(200) = (select top 1 convert(int, Setting) + 1 from [dbo].[DBSetting] where [Name] = 'OB_Current_Year') declare @newSnapDate nvarchar(200) = left(convert(nvarchar,getdate(),120), 16) declare @newSnapName nvarchar(200) select @newSnapName = case @SnapshotName when '' then @newSnapDate else @SnapshotName end select @newSnapName = case @SnapshotCategory when 'Budget Close' then 'Budget Close - FY' + @fiscalYear + ' - ' + @newSnapDate else @newSnapName end insert into [ob].[DimOBSnapshot] (Name, Category, Date) values (@newSnapName, @SnapshotCategory, @newSnapDate) SELECT CAST(SCOPE_IDENTITY() as int); declare @newSnapID varchar(16) select @newSnapID = OBsnapshotID from [ob].[DimOBSnapshot] where 1=1 and Date = @newSnapDate and OBSnapshotID <> 0 ---------------------------------------------------------------------------------------------------- -- FactAccountSnapshot ---------------------------------------------------------------------------------------------------- insert into [ob].[FactAccountSnapshot] ( DepartmentalBudgetID, AccountID, FiscalYearID, TimeClassID, UnitTypeID, DataTypeID, Month01, Month02, Month03, Month04, Month05, Month06, Month07, Month08, Month09, Month10, Month11, Month12, Yearly, Total, MonthsLoaded, YTD, IsDeleted, HistoryItemGUID, OBSnapshotID ) select --select top 100 fct.DepartmentalBudgetID, fct.AccountID, fct.FiscalYearID, fct.TimeClassID, fct.UnitTypeID, fct.DataTypeID, fct.Month01, fct.Month02, fct.Month03, fct.Month04, fct.Month05, fct.Month06, fct.Month07, fct.Month08, fct.Month09, fct.Month10, fct.Month11, fct.Month12, fct.Yearly, fct.Total, fct.MonthsLoaded, fct.YTD, fct.IsDeleted, fct.HistoryItemGUID, @newSnapID as SnapshotID from [clientob].[FactAccount] fct inner join [ob].[DimDepartmentalBudget] dmb on fct.DepartmentalBudgetID=dmb.DepartmentalBudgetID inner join [fw].[DimAccount] dma on fct.AccountID=dma.AccountID ---------------------------------------------------------------------------------------------------- -- FactStaffingPCSnapshot ---------------------------------------------------------------------------------------------------- insert into [ob].[FactStaffingPCSnapshot] ( DepartmentalBudgetID, PayCodeGroupID, JobCodeID, FiscalYearID, TimeClassID, UnitTypeID, DataTypeID, PayCodeID, EmployeeID, Month01, Month02, Month03, Month04, Month05, Month06, Month07, Month08, Month09, Month10, Month11, Month12, Yearly, Total, MonthsLoaded, YTD, IsDeleted, HistoryItemGUID, OBSnapshotID ) select --select top 100 fct.DepartmentalBudgetID, fct.PayCodeGroupID, fct.JobCodeID, fct.FiscalYearID, fct.TimeClassID, fct.UnitTypeID, fct.DataTypeID, fct.PayCodeID, fct.EmployeeID, fct.Month01, fct.Month02, fct.Month03, fct.Month04, fct.Month05, fct.Month06, fct.Month07, fct.Month08, fct.Month09, fct.Month10, fct.Month11, fct.Month12, fct.Yearly, fct.Total, fct.MonthsLoaded, fct.YTD, fct.IsDeleted, fct.HistoryItemGUID, @newSnapID as SnapshotID from [clientob].[FactStaffingPC] fct inner join [ob].[DimDepartmentalBudget] dmb on fct.DepartmentalBudgetID=dmb.DepartmentalBudgetID inner join [fw].[DimPayCodeGroup] dmg on fct.PayCodeGroupID=dmg.PayCodeGroupID inner join [fw].[DimPayCode] dmp on fct.PayCodeID=dmp.PayCodeID inner join [fw].[DimJobCode] dmj on fct.JobCodeID=dmj.JobCodeID inner join [fw].[DimEmployee] dme on fct.EmployeeID=dme.EmployeeID ---------------------------------------------------------------------------------------------------- -- FactReportingMonthlySnapshot ---------------------------------------------------------------------------------------------------- insert into [ob].[FactReportingMonthlySnapshot] ( DepartmentalBudgetID, FinancialReportingID, FiscalYearID, TimeClassID, Month01, Month02, Month03, Month04, Month05, Month06, Month07, Month08, Month09, Month10, Month11, Month12, Yearly, Total, YTD, IsDeleted, HistoryItemGUID, OBSnapshotID ) select --select top 100 fct.DepartmentalBudgetID, fct.FinancialReportingID, fct.FiscalYearID, fct.TimeClassID, fct.Month01, fct.Month02, fct.Month03, fct.Month04, fct.Month05, fct.Month06, fct.Month07, fct.Month08, fct.Month09, fct.Month10, fct.Month11, fct.Month12, fct.Yearly, fct.Total, fct.YTD, fct.IsDeleted, fct.HistoryItemGUID, @newSnapID as SnapshotID from [clientob].[FactReportingMonthly] fct inner join [ob].[DimDepartmentalBudget] dmb on fct.DepartmentalBudgetID=dmb.DepartmentalBudgetID inner join [ob].[DimFinancialReporting] dmf -- CID 5 on fct.FinancialReportingID=dmf.FinancialReportingID ---------------------------------------------------------------------------------------------------- -- FactGlobalStatisticsSnapshot ---------------------------------------------------------------------------------------------------- insert into [ob].[FactGlobalStatisticsSnapshot] ( OBGlobalStatisticsPlanID, OBGlobalStatisticID, FiscalYearID, TimeClassID, UnitTypeID, DataTypeID, Month01, Month02, Month03, Month04, Month05, Month06, Month07, Month08, Month09, Month10, Month11, Month12, Yearly, Total, MonthsLoaded, YTD, IsDeleted, HistoryItemGUID, OBSnapshotID ) select --select top 100 fct.OBGlobalStatisticsPlanID, fct.OBGlobalStatisticID, fct.FiscalYearID, fct.TimeClassID, fct.UnitTypeID, fct.DataTypeID, fct.Month01, fct.Month02, fct.Month03, fct.Month04, fct.Month05, fct.Month06, fct.Month07, fct.Month08, fct.Month09, fct.Month10, fct.Month11, fct.Month12, fct.Yearly, fct.Total, fct.MonthsLoaded, fct.YTD, fct.IsDeleted, fct.HistoryItemGUID, @newSnapID as SnapshotID from [clientob].[FactGlobalStatistics] fct inner join [ob].[DimOBGlobalStatisticsPlan] dmp on fct.OBGlobalStatisticsPlanID=dmp.OBGlobalStatisticsPlanID inner join [ob].[DimOBGlobalStatistics] dmg on fct.OBGlobalStatisticID=dmg.OBGlobalStatisticID ---------------------------------------------------------------------------------------------------- -- FactServiceLineSnapshot ---------------------------------------------------------------------------------------------------- insert into [ob].[FactServiceLineSnapshot] ( OBServiceLinePlanID, ModelingServiceLineID, OBForecastDetailID, DataTypeID, UnitTypeID, FiscalYearID, TimeClassID, Month01, Month02, Month03, Month04, Month05, Month06, Month07, Month08, Month09, Month10, Month11, Month12, Yearly, Total, YTD, IsDeleted, HistoryItemGUID, OBSnapshotID ) select --select top 100 fct.OBServiceLinePlanID, fct.ModelingServiceLineID, fct.OBForecastDetailID, fct.DataTypeID, fct.UnitTypeID, fct.FiscalYearID, fct.TimeClassID, fct.Month01, fct.Month02, fct.Month03, fct.Month04, fct.Month05, fct.Month06, fct.Month07, fct.Month08, fct.Month09, fct.Month10, fct.Month11, fct.Month12, fct.Yearly, fct.Total, fct.YTD, fct.IsDeleted, fct.HistoryItemGUID, @newSnapID as SnapshotID from [clientob].[FactServiceLine] fct inner join [ob].[DimOBServiceLinePlan] dmp on fct.OBServiceLinePlanID=dmp.OBServiceLinePlanID inner join [fw].[DimModelingServiceLine] dmm on fct.ModelingServiceLineID=dmm.ModelingServiceLineID inner join [ob].[DimOBForecastDetail] dmf on fct.OBForecastDetailID=dmf.OBForecastDetailID ---------------------------------------------------------------------------------------------------- -- FactCDMSnapshot ---------------------------------------------------------------------------------------------------- insert into [ob].[FactCDMSnapshot] ( ChargeCodeID, DataTypeID, FiscalYearID, DepartmentalBudgetID, OBForecastDetailID, PatientClassID, TimeClassID, UnitTypeID, Month01, Month02, Month03, Month04, Month05, Month06, Month07, Month08, Month09, Month10, Month11, Month12, Yearly, Total, YTD, IsDeleted, HistoryItemGUID, OBSnapshotID ) select --select top 100 fct.ChargeCodeID, fct.DataTypeID, fct.FiscalYearID, fct.DepartmentalBudgetID, fct.OBForecastDetailID, fct.PatientClassID, fct.TimeClassID, fct.UnitTypeID, fct.Month01, fct.Month02, fct.Month03, fct.Month04, fct.Month05, fct.Month06, fct.Month07, fct.Month08, fct.Month09, fct.Month10, fct.Month11, fct.Month12, fct.Yearly, fct.Total, fct.YTD, fct.IsDeleted, fct.HistoryItemGUID, @newSnapID as SnapshotID from [clientob].[FactCDM] fct inner join [fw].[DimChargeCode] dmc on fct.ChargeCodeID=dmc.ChargeCodeID inner join [ob].[DimDepartmentalBudget] dmd on fct.DepartmentalBudgetID=dmd.DepartmentalBudgetID inner join [ob].[DimOBForecastDetail] dmf on fct.OBForecastDetailID=dmf.OBForecastDetailID ---------------------------------------------------------------------------------------------------- -- FactReimbursementPayorSnapshot ---------------------------------------------------------------------------------------------------- insert into [ob].[FactReimbursementPayorSnapshot] ( DataTypeID, FiscalYearID, OBForecastDetailID, OBReimbursementPlanID, PatientReimbursementGroupID, PayorID, PayorGroupID, TimeClassID, UnitTypeID, Month01, Month02, Month03, Month04, Month05, Month06, Month07, Month08, Month09, Month10, Month11, Month12, Yearly, Total, YTD, MonthsLoaded, IsDeleted, HistoryItemGUID, OBSnapshotID ) select --select top 100 fct.DataTypeID, fct.FiscalYearID, fct.OBForecastDetailID, fct.OBReimbursementPlanID, fct.PatientReimbursementGroupID, fct.PayorID, fct.PayorGroupID, fct.TimeClassID, fct.UnitTypeID, fct.Month01, fct.Month02, fct.Month03, fct.Month04, fct.Month05, fct.Month06, fct.Month07, fct.Month08, fct.Month09, fct.Month10, fct.Month11, fct.Month12, fct.Yearly, fct.Total, fct.YTD, fct.MonthsLoaded, fct.IsDeleted, fct.HistoryItemGUID, @newSnapID as SnapshotID from [clientob].[FactReimbursement] fct inner join [ob].[DimOBForecastDetail] dmf on fct.OBForecastDetailID=dmf.OBForecastDetailID inner join [ob].[DimOBReimbursementPlan] dmr on fct.OBReimbursementPlanID=dmr.OBReimbursementPlanID inner join [fw].[DimPatientReimbursementGroup] dmp on fct.PatientReimbursementGroupID=dmp.PatientReimbursementGroupID inner join [fw].[DimPayor] dmy on fct.PayorID=dmy.PayorID inner join [fw].[DimPayorGroup] dmg on fct.PayorGroupID=dmg.PayorGroupID ---------------------------------------------------------------------------------------------------- -- FactReimbursementAccountSnapshot ---------------------------------------------------------------------------------------------------- insert into [ob].[FactReimbursementAccountSnapshot] ( AccountID, DataTypeID, FiscalYearID, OBReimbursementPlanID, PatientReimbursementGroupID, TimeClassID, UnitTypeID, Month01, Month02, Month03, Month04, Month05, Month06, Month07, Month08, Month09, Month10, Month11, Month12, Yearly, Total, YTD, MonthsLoaded, IsDeleted, HistoryItemGUID, OBSnapshotID ) select --select top 100 fct.AccountID, fct.DataTypeID, fct.FiscalYearID, fct.OBReimbursementPlanID, fct.PatientReimbursementGroupID, fct.TimeClassID, fct.UnitTypeID, fct.Month01, fct.Month02, fct.Month03, fct.Month04, fct.Month05, fct.Month06, fct.Month07, fct.Month08, fct.Month09, fct.Month10, fct.Month11, fct.Month12, fct.Yearly, fct.Total, fct.YTD, fct.MonthsLoaded, fct.IsDeleted, fct.HistoryItemGUID, @newSnapID as SnapshotID from [clientob].[FactReimbursementAccount] fct inner join [fw].[DimAccount] dma on fct.AccountID=dma.AccountID inner join [ob].[DimOBReimbursementPlan] dmr on fct.OBReimbursementPlanID=dmr.OBReimbursementPlanID inner join [fw].[DimPatientReimbursementGroup] dmp on fct.PatientReimbursementGroupID=dmp.PatientReimbursementGroupID ---------------------------------------------------------------------------------------------------- -- FactProviderSnapshot ---------------------------------------------------------------------------------------------------- insert into [ob].[FactProviderSnapshot] ( DataTypeID, FiscalYearID, DepartmentalBudgetID, TimeClassID, UnitTypeID, ProviderID, OBForecastDetailID, Month01, Month02, Month03, Month04, Month05, Month06, Month07, Month08, Month09, Month10, Month11, Month12, Yearly, Total, YTD, MonthsLoaded, IsDeleted, HistoryItemGUID, OBSnapshotID ) select --select top 100 fct.DataTypeID, fct.FiscalYearID, fct.DepartmentalBudgetID, fct.TimeClassID, fct.UnitTypeID, fct.ProviderID, fct.OBForecastDetailID, fct.Month01, fct.Month02, fct.Month03, fct.Month04, fct.Month05, fct.Month06, fct.Month07, fct.Month08, fct.Month09, fct.Month10, fct.Month11, fct.Month12, fct.Yearly, fct.Total, fct.YTD, fct.MonthsLoaded, fct.IsDeleted, fct.HistoryItemGUID, @newSnapID as SnapshotID from [clientob].[FactProvider] fct inner join [ob].[DimDepartmentalBudget] dmd on fct.DepartmentalBudgetID=dmd.DepartmentalBudgetID inner join [fw].[DimProvider] dmp on fct.ProviderID=dmp.ProviderID inner join [ob].[DimOBForecastDetail] dmf on fct.OBForecastDetailID=dmf.OBForecastDetailID ---------------------------------------------------------------------------------------------------- -- FactAccountSubtableVarSnapshot ---------------------------------------------------------------------------------------------------- insert into [ob].[FactAccountSubtableVarSnapshot] ( [AccountID], [AdjustmentCategoryID], [AssumptionID], [FiscalYearID], [DepartmentalBudgetID], [TimeClassID], [UnitTypeID], [Comment], [Comment_Comment], [Comment_Formula], [Month01], [Month02], [Month03], [Month04], [Month05], [Month06], [Month07], [Month08], [Month09], [Month10], [Month11], [Month12], [Yearly], [IsDeleted], [HistoryItemGUID], [OBSnapshotID] ) SELECT fct.[AccountID], fct.[AdjustmentCategoryID], fct.[AssumptionID], fct.[FiscalYearID], fct.[DepartmentalBudgetID], fct.[TimeClassID], fct.[UnitTypeID], fct.[Comment], fct.[Comment_Comment], fct.[Comment_Formula], fct.[Month01], fct.[Month02], fct.[Month03], fct.[Month04], fct.[Month05], fct.[Month06], fct.[Month07], fct.[Month08], fct.[Month09], fct.[Month10], fct.[Month11], fct.[Month12], fct.[Yearly], fct.[IsDeleted], fct.[HistoryItemGUID], @newSnapID as OBSnapshotID FROM [clientob].[FactAccountSubtableVar] fct join [fw].[DimAccount] da on fct.AccountID = da.AccountID join [ob].[DimAdjustmentCategory] dac on fct.AdjustmentCategoryID = dac.AdjustmentCategoryID join [fw].[DimAssumption] das on fct.AssumptionID = das.AssumptionID join [ob].[DimDepartmentalBudget] ddb on fct.DepartmentalBudgetID = ddb.DepartmentalBudgetID ---------------------------------------------------------------------------------------------------- -- FactAccountVarSnapshot ---------------------------------------------------------------------------------------------------- INSERT INTO [ob].[FactAccountVarSnapshot] ( [AccountID], [AssumptionID], [FiscalMonthID], [FiscalYearID], [DepartmentalBudgetID], [RowNumberID], [TimeClassID], [UnitTypeID], [Amount], [Amount_Comment], [Amount_Formula], [Comment], [Comment_Comment], [Comment_Formula], [TextValue], [TextValue_Comment], [TextValue_Formula], [IsDeleted], [HistoryItemGUID], [OBSnapshotID] ) select fct.[AccountID], fct.[AssumptionID], fct.[FiscalMonthID], fct.[FiscalYearID], fct.[DepartmentalBudgetID], fct.[RowNumberID], fct.[TimeClassID], fct.[UnitTypeID], fct.[Amount], fct.[Amount_Comment], fct.[Amount_Formula], fct.[Comment], fct.[Comment_Comment], fct.[Comment_Formula], fct.[TextValue], fct.[TextValue_Comment], fct.[TextValue_Formula], fct.[IsDeleted], fct.[HistoryItemGUID], @newSnapID as [OBSnapshotID] from [clientob].[FactAccountVar] fct join [fw].[DimAccount] da on fct.AccountID = da.AccountID join [fw].[DimAssumption] das on fct.AssumptionID = das.AssumptionID join [ob].[DimDepartmentalBudget] ddb on fct.DepartmentalBudgetID = ddb.DepartmentalBudgetID ---------------------------------------------------------------------------------------------------- -- FactCDMVarSnapshot ---------------------------------------------------------------------------------------------------- INSERT INTO [ob].[FactCDMVarSnapshot] ( [AssumptionID], [ChargeCodeID], [DataTypeID], [FiscalMonthID], [FiscalYearID], [DepartmentalBudgetID], [OBForecastDetailID], [PatientClassID], [TimeClassID], [UnitTypeID], [Amount], [Amount_Comment], [Amount_Formula], [Comment], [TextValue], [TextValue_Comment], [TextValue_Formula], [IsDeleted], [HistoryItemGUID], [OBSnapshotID] ) select fct.[AssumptionID], fct.[ChargeCodeID], fct.[DataTypeID], fct.[FiscalMonthID], fct.[FiscalYearID], fct.[DepartmentalBudgetID], fct.[OBForecastDetailID], fct.[PatientClassID], fct.[TimeClassID], fct.[UnitTypeID], fct.[Amount], fct.[Amount_Comment], fct.[Amount_Formula], fct.[Comment], fct.[TextValue], fct.[TextValue_Comment], fct.[TextValue_Formula], fct.[IsDeleted], fct.[HistoryItemGUID], @newSnapID as [OBSnapshotID] from [clientob].[FactCDMVar] fct join [fw].[DimChargeCode] dcc on fct.ChargeCodeID = dcc.ChargeCodeID join [ob].[DimOBForecastDetail] dfd on fct.OBForecastDetailID = dfd.OBForecastDetailID join [fw].[DimAssumption] das on fct.AssumptionID = das.AssumptionID join [ob].[DimDepartmentalBudget] ddb on fct.DepartmentalBudgetID = ddb.DepartmentalBudgetID join [fw].[DimPatientClass] dpc on fct.PatientClassID = dpc.PatientClassID ---------------------------------------------------------------------------------------------------- -- FactProviderVarSnapshot ---------------------------------------------------------------------------------------------------- INSERT INTO [ob].[FactProviderVarSnapshot] ( [AssumptionID], [FiscalMonthID], [FiscalYearID], [DepartmentalBudgetID], [OBForecastDetailID], [ProviderID], [TimeClassID], [UnitTypeID], [Amount], [Amount_Comment], [Amount_Formula], [TextValue], [TextValue_Comment], [TextValue_Formula], [IsDeleted], [HistoryItemGUID], [OBSnapshotID] ) select fct.[AssumptionID], fct.[FiscalMonthID], fct.[FiscalYearID], fct.[DepartmentalBudgetID], fct.[OBForecastDetailID], fct.[ProviderID], fct.[TimeClassID], fct.[UnitTypeID], fct.[Amount], fct.[Amount_Comment], fct.[Amount_Formula], fct.[TextValue], fct.[TextValue_Comment], fct.[TextValue_Formula], fct.[IsDeleted], fct.[HistoryItemGUID], @newSnapID as [OBSnapshotID] from [clientob].[FactProviderVar] fct join [fw].[DimProvider] dp on fct.ProviderID = dp.ProviderID join [ob].[DimOBForecastDetail] dfd on fct.OBForecastDetailID = dfd.OBForecastDetailID join [fw].[DimAssumption] das on fct.AssumptionID = das.AssumptionID join [ob].[DimDepartmentalBudget] ddb on fct.DepartmentalBudgetID = ddb.DepartmentalBudgetID ---------------------------------------------------------------------------------------------------- -- FactStaffingPCVarSnapshot ---------------------------------------------------------------------------------------------------- INSERT INTO [ob].[FactStaffingPCVarSnapshot] ( [AssumptionID], [EmployeeID], [FiscalMonthID], [FiscalYearID], [JobCodeID], [DepartmentalBudgetID], [PayCodeGroupID], [TimeClassID], [UnitTypeID], [Amount], [Amount_Comment], [Amount_Formula], [Comment], [Comment_Comment], [Comment_Formula], [TextValue], [TextValue_Comment], [TextValue_Formula], [IsDeleted], [HistoryItemGUID], [OBSnapshotID] ) select fct.[AssumptionID], fct.[EmployeeID], fct.[FiscalMonthID], fct.[FiscalYearID], fct.[JobCodeID], fct.[DepartmentalBudgetID], fct.[PayCodeGroupID], fct.[TimeClassID], fct.[UnitTypeID], fct.[Amount], fct.[Amount_Comment], fct.[Amount_Formula], fct.[Comment], fct.[Comment_Comment], fct.[Comment_Formula], fct.[TextValue], fct.[TextValue_Comment], fct.[TextValue_Formula], fct.[IsDeleted], fct.[HistoryItemGUID], @newSnapID as [OBSnapshotID] from [clientob].[FactStaffingPCVar] fct join [fw].[DimEmployee] de on fct.EmployeeID = de.EmployeeID join [fw].[DimJobCode] djc on fct.JobCodeID = djc.JobCodeID join [fw].[DimPayCodeGroup] dpc on fct.PayCodeGroupID = dpc.PayCodeGroupID join [fw].[DimAssumption] das on fct.AssumptionID = das.AssumptionID join [ob].[DimDepartmentalBudget] ddb on fct.DepartmentalBudgetID = ddb.DepartmentalBudgetID ---------------------------------------------------------------------------------------------------- -- End procedure ---------------------------------------------------------------------------------------------------- end RETURN GO --------------------------------------------- -- ob.procOptimizationRebuildIndexesData CREATE PROC [ob].[procOptimizationRebuildIndexesData] @forceExecution BIT = 0 AS /************************************************************ ** Author: akowalski ** Create Date: 2013-02-18 ** Description: Finds all data tables in the OB schemas and rebuilds indexes, for use after large inserts/deletes ** Last Modified: 2017-01-12 ** GM Release: 2013-03-12 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 2013-02-19 DK 56588 Adding update statistics command ** 1 2016-09-09 GF 12897 Include fillin tables ** 2 2017-01-12 VY 05020 Add @forceExecution optional parameter ** 3 2017-01-17 cbb 05447 add missing "(" *************************************************************/ SET NOCOUNT ON; IF @forceExecution = 1 BEGIN DECLARE @SCHEMA nvarchar(256) DECLARE @FactTableName nvarchar(256) DECLARE @SQL nvarchar(1024) DECLARE FactTableCursor CURSOR FOR select t.name, (select name from sys.schemas where schema_id = t.schema_id) from sys.tables t where ( t.schema_id in(select schema_id from sys.schemas where name in('ob', 'clientob')) and (t.name like 'fact%' and t.name not like '%map') or t.schema_id in(select schema_id from sys.schemas where name in('dbo', 'data')) and (t.name like 'scorefillin%') ) and t.object_ID not in ( select distinct t.object_id from sys.tables t inner join sys.indexes i on t.object_id=i.object_id inner join sys.partitions p on t.object_id=p.object_ID and i.index_id=p.index_id where p.data_compression<>0 ) order by t.name open FactTableCursor FETCH NEXT FROM FactTableCursor INTO @FactTableName, @SCHEMA WHILE @@FETCH_STATUS = 0 BEGIN --=================== BEGIN CID 1 ===================== set @SQL = 'alter index all on ' + @SCHEMA + '.' + @FactTableName + ' REBUILD WITH (FILLFACTOR=80) update statistics ' + @SCHEMA + '.' + @FactTableName + ' WITH FULLSCAN' --=================== END CID 1 ======================= --print @SQL EXECUTE sp_executesql @SQL FETCH NEXT FROM FactTableCursor INTO @FactTableName, @SCHEMA END CLOSE FactTableCursor DEALLOCATE FactTableCursor DECLARE FactTableCursor CURSOR FOR select t.name, (select name from sys.schemas where schema_id = t.schema_id) from sys.tables t where t.schema_id in(select schema_id from sys.schemas where name in('ob', 'clientob')) and (t.name like 'fact%' and t.name not like '%map') and t.object_ID not in ( select distinct t.object_id from sys.tables t inner join sys.indexes i on t.object_id=i.object_id inner join sys.partitions p on t.object_id=p.object_ID and i.index_id=p.index_id where p.data_compression=0 ) order by t.name open FactTableCursor FETCH NEXT FROM FactTableCursor INTO @FactTableName, @SCHEMA WHILE @@FETCH_STATUS = 0 BEGIN --=================== BEGIN CID 1 ===================== --begin cid 3 set @SQL = 'alter index all on ' + @SCHEMA + '.' + @FactTableName + ' REBUILD WITH (FILLFACTOR=80,DATA_COMPRESSION = PAGE) update statistics ' + @SCHEMA + '.' + @FactTableName + ' WITH FULLSCAN' --end cid 3 --=================== END CID 1 ======================= --print @SQL EXECUTE sp_executesql @SQL FETCH NEXT FROM FactTableCursor INTO @FactTableName, @SCHEMA END CLOSE FactTableCursor DEALLOCATE FactTableCursor END ELSE BEGIN --Request 'OB Rebuild Indexes' task to rebuild indexes on the next run UPDATE [ob].[SystemSetting] SET [Value] = '1' WHERE [Name] = 'OB_Rebuild_Indexes' END GO --------------------------------------------- -- ob.procOptimizationRebuildIndexesDimensions CREATE proc [ob].[procOptimizationRebuildIndexesDimensions] as /************************************************************ ** Author: akowalski ** Create Date: 2013-02-18 ** Description: Finds all dimension tables in the OB schemas and rebuilds indexes, for after dimension customization. ** Last Modified: 2013-02-18 ** GM Release: 2013-03-12 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 2013-02-19 DK 56588 Adding update statistics command ** *************************************************************/ SET NOCOUNT ON; DECLARE @SCHEMA nvarchar(256) DECLARE @FactTableName nvarchar(256) DECLARE @SQL nvarchar(1024) DECLARE FactTableCursor CURSOR FOR select t.name, (select name from sys.schemas where schema_id = t.schema_id) from sys.tables t where t.schema_id in(select schema_id from sys.schemas where name in('ob', 'clientob')) and t.name like 'dim%' and t.object_ID not in ( select distinct t.object_id from sys.tables t inner join sys.indexes i on t.object_id=i.object_id inner join sys.partitions p on t.object_id=p.object_ID and i.index_id=p.index_id where p.data_compression<>0 ) order by t.name open FactTableCursor FETCH NEXT FROM FactTableCursor INTO @FactTableName, @SCHEMA WHILE @@FETCH_STATUS = 0 BEGIN --=================== BEGIN CID 1 ===================== set @SQL = 'alter index all on ' + @SCHEMA + '.' + @FactTableName + ' REBUILD WITH (FILLFACTOR=80) update statistics ' + @SCHEMA + '.' + @FactTableName + ' WITH FULLSCAN' --=================== END CID 1 ======================= --print @SQL EXECUTE sp_executesql @SQL FETCH NEXT FROM FactTableCursor INTO @FactTableName, @SCHEMA END CLOSE FactTableCursor DEALLOCATE FactTableCursor DECLARE FactTableCursor CURSOR FOR select t.name, (select name from sys.schemas where schema_id = t.schema_id) from sys.tables t where t.schema_id in(select schema_id from sys.schemas where name in('ob', 'clientob')) and t.name like 'dim%' and t.object_ID not in ( select distinct t.object_id from sys.tables t inner join sys.indexes i on t.object_id=i.object_id inner join sys.partitions p on t.object_id=p.object_ID and i.index_id=p.index_id where p.data_compression=0 ) order by t.name open FactTableCursor FETCH NEXT FROM FactTableCursor INTO @FactTableName, @SCHEMA WHILE @@FETCH_STATUS = 0 BEGIN --=================== BEGIN CID 1 ===================== set @SQL = 'alter index all on ' + @SCHEMA + '.' + @FactTableName + ' REBUILD WITH (FILLFACTOR=80,DATA_COMPRESSION = PAGE) update statistics ' + @SCHEMA + '.' + @FactTableName + ' WITH FULLSCAN' --=================== END CID 1 ======================= --print @SQL EXECUTE sp_executesql @SQL FETCH NEXT FROM FactTableCursor INTO @FactTableName, @SCHEMA END CLOSE FactTableCursor DEALLOCATE FactTableCursor RETURN GO --------------------------------------------- -- ob.procOptimizationRebuildIndexesMapping CREATE proc [ob].[procOptimizationRebuildIndexesMapping] as /************************************************************ ** Author: akowalski ** Create Date: 2013-02-18 ** Description: Finds all mapping tables in the OB schemas and rebuilds indexes, for use after publishing. ** Last Modified: 2013-05-03 ** GM Release: 2013-05-14 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 2013-02-19 DK 56588 Adding update statistics command ** 2 2013-05-01 AKK 57940 Adding meexcelcell, emfmodeltemplate, scoremeasure, and emfmodeltemplateworksheet ** 3 2013-05-03 AKK 57940 Adding MEScorePlaceholderLabel ** 4 2016-09-09 GJF 12897 Change fill factor to 100 *************************************************************/ SET NOCOUNT ON; DECLARE @SCHEMA nvarchar(256) DECLARE @FactTableName nvarchar(256) DECLARE @SQL nvarchar(1024) DECLARE FactTableCursor CURSOR FOR select t.name, (select name from sys.schemas where schema_id = t.schema_id) from sys.tables t where t.schema_id in(select schema_id from sys.schemas where name in('ob', 'clientob')) and t.name like 'fact%map' and t.object_ID not in ( select distinct t.object_id from sys.tables t inner join sys.indexes i on t.object_id=i.object_id inner join sys.partitions p on t.object_id=p.object_ID and i.index_id=p.index_id where p.data_compression<>0 ) order by t.name open FactTableCursor FETCH NEXT FROM FactTableCursor INTO @FactTableName, @SCHEMA WHILE @@FETCH_STATUS = 0 BEGIN --=================== BEGIN CID 1 ===================== set @SQL = 'alter index all on ' + @SCHEMA + '.' + @FactTableName + ' REBUILD WITH (FILLFACTOR=100) update statistics ' + @SCHEMA + '.' + @FactTableName + ' WITH FULLSCAN' --=================== END CID 1 ======================= --print @SQL EXECUTE sp_executesql @SQL FETCH NEXT FROM FactTableCursor INTO @FactTableName, @SCHEMA END CLOSE FactTableCursor DEALLOCATE FactTableCursor DECLARE FactTableCursor CURSOR FOR select t.name, (select name from sys.schemas where schema_id = t.schema_id) from sys.tables t where t.schema_id in(select schema_id from sys.schemas where name in('ob', 'clientob')) and t.name like 'fact%map' and t.object_ID not in ( select distinct t.object_id from sys.tables t inner join sys.indexes i on t.object_id=i.object_id inner join sys.partitions p on t.object_id=p.object_ID and i.index_id=p.index_id where p.data_compression=0 ) order by t.name open FactTableCursor FETCH NEXT FROM FactTableCursor INTO @FactTableName, @SCHEMA WHILE @@FETCH_STATUS = 0 BEGIN --=================== BEGIN CID 1 ===================== set @SQL = 'alter index all on ' + @SCHEMA + '.' + @FactTableName + ' REBUILD WITH (FILLFACTOR=100,DATA_COMPRESSION = PAGE) update statistics ' + @SCHEMA + '.' + @FactTableName + ' WITH FULLSCAN' --=================== END CID 1 ======================= --print @SQL EXECUTE sp_executesql @SQL FETCH NEXT FROM FactTableCursor INTO @FactTableName, @SCHEMA END CLOSE FactTableCursor DEALLOCATE FactTableCursor --=================== BEGIN CID 2 ===================== alter index all on dbo.meexcelcell REBUILD WITH (FILLFACTOR=100) update statistics dbo.meexcelcell WITH FULLSCAN alter index all on dbo.emfmodeltemplate REBUILD WITH (FILLFACTOR=100) update statistics dbo.emfmodeltemplate WITH FULLSCAN alter index all on dbo.scoremeasure REBUILD WITH (FILLFACTOR=100) update statistics dbo.scoremeasure WITH FULLSCAN alter index all on dbo.emfmodeltemplateworksheet REBUILD WITH (FILLFACTOR=100) update statistics dbo.emfmodeltemplateworksheet WITH FULLSCAN --=================== END CID 2 ======================= --=================== BEGIN CID 3 ===================== alter index all on dbo.mescoreplaceholderlabel REBUILD WITH (FILLFACTOR=100) update statistics dbo.mescoreplaceholderlabel WITH FULLSCAN --=================== END CID 3 ======================= GO --------------------------------------------- -- ob.procRosterToDeptBudget CREATE proc [ob].[procRosterToDeptBudget] /**************************************************************************************************** ** Author: cbb ** Create Date: 2016.11.15 ** Description: Transfer roster budget to dept budget models ** Last Modified: 2018.01.17 ** GM Release: 2017.1.1 **************************************************************************************************** ** Change History **************************************************************************************************** ** CID Date Author WI Description ** 1 2017.02.06 cbb d05501 filter out dollars for fixed staffing insert ** 2 2017.03.06 srk D-05668 Added issytemset = 0 to the insert fillin sections ** 3 2017.03.20 srk TK-39537 Updated the invalidatecache section to use where by clause ** 4 2017.03.20 srk B-14939 Invalidate cache only for models where data does not tie out between roster tool and staffing tables ** 5 2018.01.17 ljc B-18199 Adding PayCodeGroupID in #JobCodeDept for var table merge ****************************************************************************************************/ as begin -------------------------------------------------------------------------------------------------- -- Variables -------------------------------------------------------------------------------------------------- declare @higuid uniqueidentifier declare @currYear int select @currYear = Setting from [dbo].[DBSetting] where Name = 'OB_Current_Year' declare @IsProjected bit select @IsProjected = IsProjectionHidden from [fp].[BudgetConfig] where IsActive = 1 declare @assumptionID int select @assumptionID = dm.AssumptionID from [fw].[DimAssumption] dm where MemberGUID='8111719b-4232-49df-aced-1f5fe16df5b9' declare @planRefreshList as nvarchar(max) = '' -------------------------------------------------------------------------------------------------- -- Logging -------------------------------------------------------------------------------------------------- exec procLogScript 'Update clientob.FactStaffingPCNonReporting from fp.viewRosterBudgetToStaffingPC' , @higuid output print 'Beginning update, historyguid: ' + cast(@higuid as varchar(36)) -------------------------------------------------------------------------------------------------- -- AGGREGATE ROSTER DATA FOR MERGE -------------------------------------------------------------------------------------------------- --CID 2 -- SELECT -- [DepartmentalBudgetID] -- , [PayCodeGroupID] -- , [PayCodeID] -- , [JobCodeID] -- , [EmployeeID] -- , [FiscalYearID] -- , [TimeClassID] -- , [UnitTypeID] -- , [DataTypeID] -- , SUM([Month01]) AS Month01 -- , SUM([Month02]) AS Month02 -- , SUM([Month03]) AS Month03 -- , SUM([Month04]) AS Month04 -- , SUM([Month05]) AS Month05 -- , SUM([Month06]) AS Month06 -- , SUM([Month07]) AS Month07 -- , SUM([Month08]) AS Month08 -- , SUM([Month09]) AS Month09 -- , SUM([Month10]) AS Month10 -- , SUM([Month11]) AS Month11 -- , SUM([Month12]) AS Month12 -- INTO #RosterAggregate -- FROM [fp].[viewRosterBudgetToStaffingPC] rb -- GROUP BY -- [DepartmentalBudgetID] -- , [PayCodeGroupID] -- , [PayCodeID] -- , [JobCodeID] -- , [EmployeeID] -- , [FiscalYearID] -- , [TimeClassID] -- , [UnitTypeID] -- , [DataTypeID] -- HAVING NOT ( -- SUM([Month01]) = 0 -- AND SUM([Month02]) = 0 -- AND SUM([Month03]) = 0 -- AND SUM([Month04]) = 0 -- AND SUM([Month05]) = 0 -- AND SUM([Month06]) = 0 -- AND SUM([Month07]) = 0 -- AND SUM([Month08]) = 0 -- AND SUM([Month09]) = 0 -- AND SUM([Month10]) = 0 -- AND SUM([Month11]) = 0 -- AND SUM([Month12]) = 0 -- ) --CID 2 SELECT rb.[DepartmentalBudgetID] , rb.[PayCodeGroupID] , rb.[PayCodeID] , rb.[JobCodeID] , rb.[EmployeeID] , rb.[FiscalYearID] , rb.[TimeClassID] , rb.[UnitTypeID] , rb.[DataTypeID] , SUM(RB.[Month01]) as [Month01] , SUM(RB.[Month02]) as [Month02] , SUM(RB.[Month03]) as [Month03] , SUM(RB.[Month04]) as [Month04] , SUM(RB.[Month05]) as [Month05] , SUM(RB.[Month06]) as [Month06] , SUM(RB.[Month07]) as [Month07] , SUM(RB.[Month08]) as [Month08] , SUM(RB.[Month09]) as [Month09] , SUM(RB.[Month10]) as [Month10] , SUM(RB.[Month11]) as [Month11] , SUM(RB.[Month12]) as [Month12] , SUM(ROUND(RB.[Month01],4)) + SUM(ROUND(RB.[Month02],4)) + SUM(ROUND(RB.[Month03],4)) + SUM(ROUND(RB.[Month04],4)) + SUM(ROUND(RB.[Month05],4)) + SUM(ROUND(RB.[Month06],4)) + SUM(ROUND(RB.[Month07],4)) + SUM(ROUND(RB.[Month08],4)) + SUM(ROUND(RB.[Month09],4)) + SUM(ROUND(RB.[Month10],4)) + SUM(ROUND(RB.[Month11],4)) + SUM(ROUND(RB.[Month12],4)) as Total INTO #RosterAggregateInitial FROM [fp].[viewRosterBudgetToStaffingPC] RB WHERE 1=1 GROUP BY rb.[DepartmentalBudgetID] , rb.[PayCodeGroupID] , rb.[PayCodeID] , rb.[JobCodeID] , rb.[EmployeeID] , rb.[FiscalYearID] , rb.[TimeClassID] , rb.[UnitTypeID] , rb.[DataTypeID] --ROSTER AGGREGATE TO INVALIDATE CACHE SELECT rb.[DepartmentalBudgetID] , rb.[PayCodeGroupID] , rb.[PayCodeID] , rb.[JobCodeID] , rb.[EmployeeID] , rb.[FiscalYearID] , rb.[TimeClassID] , rb.[UnitTypeID] , rb.[DataTypeID] , SUM(RB.[Month01]) as [Month01] , SUM(RB.[Month02]) as [Month02] , SUM(RB.[Month03]) as [Month03] , SUM(RB.[Month04]) as [Month04] , SUM(RB.[Month05]) as [Month05] , SUM(RB.[Month06]) as [Month06] , SUM(RB.[Month07]) as [Month07] , SUM(RB.[Month08]) as [Month08] , SUM(RB.[Month09]) as [Month09] , SUM(RB.[Month10]) as [Month10] , SUM(RB.[Month11]) as [Month11] , SUM(RB.[Month12]) as [Month12] INTO #RosterAggregate FROM #RosterAggregateInitial RB LEFT JOIN [clientob].[FactStaffingPC] FS on RB.DepartmentalBudgetID = FS.DepartmentalBudgetID and RB.JobCodeID = FS.JobCodeID and RB.PayCodeGroupID = FS.PayCodeGroupID and RB.UnitTypeID = FS.UnitTypeID and RB.TimeClassID = FS.TimeClassID and RB.FiscalYearID = FS.FiscalYearID and RB.DataTypeID = FS.DataTypeID GROUP BY rb.[DepartmentalBudgetID] , rb.[PayCodeGroupID] , rb.[PayCodeID] , rb.[JobCodeID] , rb.[EmployeeID] , rb.[FiscalYearID] , rb.[TimeClassID] , rb.[UnitTypeID] , rb.[DataTypeID] HAVING ISNULL(ROUND(sum(RB.Total),0),0) <> ISNULL(ROUND(sum(FS.Total),0),0) --CID 2 -------------------------------------------------------------------------------------------------- -- DISTINCT JOB CODE AND DEPARTMENTS FOR VAR TABLE MERGE -------------------------------------------------------------------------------------------------- SELECT distinct [DepartmentalBudgetID], [PayCodeGroupID], --CID 5 Include PayCodeGroupID in JobCode & Departments for var table merge [PayCodeID], [JobCodeID], 0 [EmployeeID], [FiscalYearID], [TimeClassID], 160 as [UnitTypeID], [DataTypeID] INTO #JobCodeDept FROM [fp].[viewRosterBudgetToStaffingPC] rb -------------------------------------------------------------------------------------------------- -- AGGREGATE ROSTER DATA FOR MERGE WITH NO PAY CODE GROUP -------------------------------------------------------------------------------------------------- --CID 2 SELECT rb.[DepartmentalBudgetID] , 0 as [PayCodeGroupID] , rb.[JobCodeID] , rb.[EmployeeID] , rb.[FiscalYearID] , rb.[TimeClassID] , rb.[UnitTypeID] , rb.[DataTypeID] , SUM(RB.[Month01]) as [Month01] , SUM(RB.[Month02]) as [Month02] , SUM(RB.[Month03]) as [Month03] , SUM(RB.[Month04]) as [Month04] , SUM(RB.[Month05]) as [Month05] , SUM(RB.[Month06]) as [Month06] , SUM(RB.[Month07]) as [Month07] , SUM(RB.[Month08]) as [Month08] , SUM(RB.[Month09]) as [Month09] , SUM(RB.[Month10]) as [Month10] , SUM(RB.[Month11]) as [Month11] , SUM(RB.[Month12]) as [Month12] , SUM(ROUND(RB.[Month01],4)) + SUM(ROUND(RB.[Month02],4)) + SUM(ROUND(RB.[Month03],4)) + SUM(ROUND(RB.[Month04],4)) + SUM(ROUND(RB.[Month05],4)) + SUM(ROUND(RB.[Month06],4)) + SUM(ROUND(RB.[Month07],4)) + SUM(ROUND(RB.[Month08],4)) + SUM(ROUND(RB.[Month09],4)) + SUM(ROUND(RB.[Month10],4)) + SUM(ROUND(RB.[Month11],4)) + SUM(ROUND(RB.[Month12],4)) as Total INTO #RosterAggregateNoPCGInitial FROM [fp].[viewRosterBudgetToStaffingPC] RB inner join [fw].[DimPayCodeGroup] pcg on rb.PayCodeGroupID = pcg.PayCodeGroupID where pcg.ProductiveClassID in (2,3) -- CID 1 begin and UnitTypeID <> 34 GROUP BY rb.[DepartmentalBudgetID] , rb.[JobCodeID] , rb.[EmployeeID] , rb.[FiscalYearID] , rb.[TimeClassID] , rb.[UnitTypeID] , rb.[DataTypeID] -- Roster Aggregate No Pay Code Group TO INVALIDATE CACHE SELECT rb.[DepartmentalBudgetID] , 0 as [PayCodeGroupID] , rb.[JobCodeID] , rb.[EmployeeID] , rb.[FiscalYearID] , rb.[TimeClassID] , rb.[UnitTypeID] , rb.[DataTypeID] , SUM(RB.[Month01]) as [Month01] , SUM(RB.[Month02]) as [Month02] , SUM(RB.[Month03]) as [Month03] , SUM(RB.[Month04]) as [Month04] , SUM(RB.[Month05]) as [Month05] , SUM(RB.[Month06]) as [Month06] , SUM(RB.[Month07]) as [Month07] , SUM(RB.[Month08]) as [Month08] , SUM(RB.[Month09]) as [Month09] , SUM(RB.[Month10]) as [Month10] , SUM(RB.[Month11]) as [Month11] , SUM(RB.[Month12]) as [Month12] INTO #RosterAggregateNoPayCodeGroup FROM #RosterAggregateNoPCGInitial RB LEFT JOIN [clientob].[FactStaffingPC] FS on RB.DepartmentalBudgetID = FS.DepartmentalBudgetID and RB.JobCodeID = FS.JobCodeID and RB.PayCodeGroupID = FS.PayCodeGroupID and RB.UnitTypeID = FS.UnitTypeID and RB.TimeClassID = FS.TimeClassID and RB.FiscalYearID = FS.FiscalYearID and RB.DataTypeID = FS.DataTypeID GROUP BY rb.[DepartmentalBudgetID] , rb.[JobCodeID] , rb.[EmployeeID] , rb.[FiscalYearID] , rb.[TimeClassID] , rb.[UnitTypeID] , rb.[DataTypeID] HAVING ISNULL(ROUND(sum(RB.Total),0),0) <> ISNULL(ROUND(sum(FS.Total),0),0) -- SELECT -- DepartmentalBudgetID = [DepartmentalBudgetID], -- PayCodeGroupID = 0, -- JobCodeID = [JobCodeID], -- EmployeeID = [EmployeeID], -- FiscalYearID = [FiscalYearID], -- TimeClassID = [TimeClassID], -- UnitTypeID = [UnitTypeID], -- DataTypeID = [DataTypeID], -- Month01 = SUM([Month01]), -- Month02 = SUM([Month02]), -- Month03 = SUM([Month03]), -- Month04 = SUM([Month04]), -- Month05 = SUM([Month05]), -- Month06 = SUM([Month06]), -- Month07 = SUM([Month07]), -- Month08 = SUM([Month08]), -- Month09 = SUM([Month09]), -- Month10 = SUM([Month10]), -- Month11 = SUM([Month11]), -- Month12 = SUM([Month12]) -- INTO #RosterAggregateNoPayCodeGroup -- FROM [fp].[viewRosterBudgetToStaffingPC] rb -- inner join [fw].[DimPayCodeGroup] pcg -- on rb.PayCodeGroupID = pcg.PayCodeGroupID -- where pcg.ProductiveClassID in (2,3) ---- CID 1 begin -- and UnitTypeID <> 34 ---- CID 2 end -- GROUP BY -- [DepartmentalBudgetID] -- , [JobCodeID] -- , [EmployeeID] -- , [FiscalYearID] -- , [TimeClassID] -- , [UnitTypeID] -- , [DataTypeID] -- HAVING NOT ( -- SUM([Month01]) = 0 -- AND SUM([Month02]) = 0 -- AND SUM([Month03]) = 0 -- AND SUM([Month04]) = 0 -- AND SUM([Month05]) = 0 -- AND SUM([Month06]) = 0 -- AND SUM([Month07]) = 0 -- AND SUM([Month08]) = 0 -- AND SUM([Month09]) = 0 -- AND SUM([Month10]) = 0 -- AND SUM([Month11]) = 0 -- AND SUM([Month12]) = 0 -- ) -- CID 2 -------------------------------------------------------------------------------------------------- -- Job code temp table -------------------------------------------------------------------------------------------------- select distinct DepartmentalBudgetID = ra.DepartmentalBudgetID, ModelGUID = db.MemberGUID, JobCodeID = ra.JobCodeID, JobCodeGUID = jc.MemberGUID into #JobCodes from #RosterAggregateInitial ra inner join [ob].[DimDepartmentalBudget] db on ra.DepartmentalBudgetID = db.DepartmentalBudgetID inner join [fw].[DimJobCode] jc on ra.JobCodeID = jc.JobCodeID CREATE UNIQUE CLUSTERED INDEX BASE ON #JobCodes (ModelGUID, JobCodeID); -------------------------------------------------------------------------------------------------- -- Department temp table -------------------------------------------------------------------------------------------------- select distinct jc.DepartmentalBudgetID, db.MemberGUID into #Departments from #JobCodes jc inner join [ob].[DimDepartmentalBudget] db on jc.DepartmentalBudgetID = db.DepartmentalBudgetID CREATE UNIQUE CLUSTERED INDEX BASE ON #Departments (MemberGUID); select distinct jc.DepartmentalBudgetID, db.MemberGUID into #DepartmentsCache from #RosterAggregate jc inner join [ob].[DimDepartmentalBudget] db on jc.DepartmentalBudgetID = db.DepartmentalBudgetID CREATE UNIQUE CLUSTERED INDEX BASE ON #DepartmentsCache (MemberGUID); -------------------------------------------------------------------------------------------------- -- Insert enable fill-in -------------------------------------------------------------------------------------------------- ; WITH SF AS ( SELECT [FillinGUID], [ModelGUID], [PlaceholderSectionMemberGUID], [FillinMemberGUID], [FillinMemberName], [IsSystemSet] FROM [dbo].[ScoreFillin] WHERE PlaceholderSectionMemberGUID = 'da5abe63-1339-467d-ad83-89824174bc31' ) MERGE SF AS TARGET USING #Departments AS SOURCE ON ( 1=1 AND TARGET.ModelGUID = SOURCE.MemberGUID ) WHEN NOT MATCHED BY TARGET THEN INSERT([FillinGUID], [ModelGUID], [PlaceholderSectionMemberGUID], [FillinMemberGUID], [FillinMemberName], [IsSystemSet]) VALUES(newid(), MemberGUID, 'da5abe63-1339-467d-ad83-89824174bc31', 'fefe375c-656a-4a68-9c60-c5ce63f9919b', 'Enable', 0) WHEN NOT MATCHED BY SOURCE THEN DELETE ; -- end merge -------------------------------------------------------------------------------------------------- -- Refresh fill-in cache table for Forecast Detail dimension -------------------------------------------------------------------------------------------------- exec [dbo].[procScoreFillinTableRefreshByDimension] @dimensionGUID = '7997659c-8a30-4d1e-86d2-0afb41c9e2fc', @isDebug = 0, @whereClause = '' -------------------------------------------------------------------------------------------------- -- Insert missing job code fill-ins -------------------------------------------------------------------------------------------------- INSERT INTO [dbo].[ScoreFillin] ( [FillinGUID], [ModelGUID], [PlaceholderSectionMemberGUID], [PlaceholderIndex], [FillinMemberGUID], [FillinMemberName], [HistoryItemGUID], [IsSystemSet] ) SELECT [FillinGUID] = newid(), [ModelGUID] = db.MemberGUID, [PlaceholderSectionMemberGUID] = smg.SectionMemberGUID, [PlaceholderIndex] = coalesce(fmax.MAXPlaceholderIndex,0)+cast(ROW_NUMBER() over (partition by db.MemberGUID, smg.SectionMemberGUID order by jc.Name) as int), [FillinMemberGUID] = jc.MemberGUID, [FillinMemberName] = jc.Name, [HistoryItemGUID] = @higuid, case when smg.sectionmemberguid = '871804c8-1114-4cfa-b10d-ac401e2c88cb' then 0 else 1 end as [IsSystemSet] -- into #scorefillin_new from #JobCodes jc_temp inner join [ob].[DimDepartmentalBudget] db on jc_temp.DepartmentalBudgetID = db.DepartmentalBudgetID inner join [fw].[DimJobCode] jc on jc_temp.JobCodeID = jc.JobCodeID cross join (select CAST('871804c8-1114-4cfa-b10d-ac401e2c88cb' AS uniqueidentifier) AS SectionMemberGUID UNION ALL select CAST('e9ce521d-6953-4636-94cd-b36798515385' AS uniqueidentifier) AS SectionMemberGUID) smg left join [dbo].[ScoreFillin] sf1 on db.MemberGUID = sf1.ModelGUID and jc.MemberGUID = sf1.FillinMemberGUID inner join ( select ModelGUID, PlaceholderSectionMemberGUID, max(PlaceholderIndex) as MAXPlaceholderIndex from [dbo].[ScoreFillin] sf where PlaceholderSectionMemberGUID in ('871804c8-1114-4cfa-b10d-ac401e2c88cb','e9ce521d-6953-4636-94cd-b36798515385') group by ModelGUID, PlaceholderSectionMemberGUID ) fmax ON fmax.ModelGUID=db.MemberGUID and smg.SectionMemberGUID=fmax.PlaceholderSectionMemberGUID where 1=1 and sf1.FillinMemberName is null -------------------------------------------------------------------------------------------------- -- Refresh fill-in cache table for Forecast Detail dimension -------------------------------------------------------------------------------------------------- exec [dbo].[procScoreFillinTableRefreshByDimension] @dimensionGUID = '99bd1b87-5803-4847-aa83-80c2613aa41b', @isDebug = 0, @whereClause = '' -------------------------------------------------------------------------------------------------- -- Run expansion profile fit update after fill-ins are added -------------------------------------------------------------------------------------------------- exec [dbo].[procMEScoreExpansionProfileFitPlans] @templateGUID = 'c397fa93-f151-4751-ad36-7a34aa7ee3ef', @planGUIDList = NULL, @expansionPadding = 10 -------------------------------------------------------------------------------------------------- -- Update var table settings -------------------------------------------------------------------------------------------------- ; WITH fctv AS ( select DepartmentalBudgetID, PayCodeGroupID, JobCodeID, EmployeeID, FiscalYearID, FiscalMonthID, TimeClassID, UnitTypeID, AssumptionID, Amount, Amount_Formula, HistoryItemGUID, TransactionID from [clientob].[FactStaffingPCVar] where 1=1 --CID 5 and PayCodeGroupID = 0 and UnitTypeID = 160 and AssumptionID = @assumptionID and FiscalYearID >= @currYear and IsDeleted = 0 ) MERGE fctv AS TARGET USING #JobCodeDept AS SOURCE ON ( 1=1 AND TARGET.[DepartmentalBudgetID] = SOURCE.[DepartmentalBudgetID] AND TARGET.[JobCodeID] = SOURCE.[JobCodeID] AND TARGET.[EmployeeID] = SOURCE.[EmployeeID] AND TARGET.[FiscalYearID] = SOURCE.[FiscalYearID] AND TARGET.[TimeClassID] = SOURCE.[TimeClassID] and target.PayCodeGroupID = source.PayCodeGroupID and target.UnitTypeID = source.UnitTypeID and target.AssumptionID = @assumptionID and target.FiscalYearID = source.FiscalYearID ) WHEN NOT MATCHED BY TARGET THEN INSERT(DepartmentalBudgetID, PayCodeGroupID, JobCodeID, EmployeeID, FiscalYearID, FiscalMonthID, TimeClassID, UnitTypeID, AssumptionID, Amount, Amount_Formula, HistoryItemGUID, TransactionID) VALUES(DepartmentalBudgetID, PayCodeGroupID, JobCodeID, 0, FiscalYearID, 0, TimeClassID, 160, @assumptionID, 1, 'x', @higuid, -100) --CID 5 adding PayCodeGroupID WHEN MATCHED AND TARGET.Amount <> 1 THEN UPDATE SET TARGET.Amount = 1, TARGET.Amount_Formula = 'x', TARGET.HistoryItemGUID = @higuid, TARGET.TransactionID = -100 WHEN NOT MATCHED BY SOURCE AND TARGET.TransactionID = -100 THEN DELETE ; -- end merge ; -- end with -------------------------------------------------------------------------------------------------- -- MERGE clientob.FactStaffingPCNonReporting - Fixed staffing -------------------------------------------------------------------------------------------------- with fct as ( select DepartmentalBudgetID, PayCodeGroupID, JobCodeID, EmployeeID, FiscalYearID, TimeClassID, UnitTypeID, DataTypeID, Month01, Month02, Month03, Month04, Month05, Month06, Month07, Month08, Month09, Month10, Month11, Month12, HistoryItemGUID, TransactionID from [clientob].[FactStaffingPCNonReporting] nonr where 1=1 -- and nonr.FiscalYearID >= @currYear and nonr.DataTypeID = 4 and nonr.PayCodeGroupID = 0 ) MERGE fct AS TARGET USING #RosterAggregateNoPCGInitial AS SOURCE ON ( 1=1 AND TARGET.[DepartmentalBudgetID] = SOURCE.[DepartmentalBudgetID] AND TARGET.[PayCodeGroupID] = SOURCE.[PayCodeGroupID] AND TARGET.[JobCodeID] = SOURCE.[JobCodeID] AND TARGET.[EmployeeID] = SOURCE.[EmployeeID] AND TARGET.[FiscalYearID] = SOURCE.[FiscalYearID] AND TARGET.[TimeClassID] = SOURCE.[TimeClassID] AND TARGET.[UnitTypeID] = SOURCE.[UnitTypeID] -- AND TARGET.[DataTypeID] = 4 ) WHEN NOT MATCHED BY TARGET THEN INSERT(DepartmentalBudgetID, PayCodeGroupID, JobCodeID, EmployeeID, FiscalYearID, TimeClassID, UnitTypeID, DataTypeID, Month01, Month02, Month03, Month04, Month05, Month06, Month07, Month08, Month09, Month10, Month11, Month12, HistoryItemGUID, TransactionID) VALUES(DepartmentalBudgetID, PayCodeGroupID, JobCodeID, EmployeeID, FiscalYearID, TimeClassID, UnitTypeID, 4, Month01, Month02, Month03, Month04, Month05, Month06, Month07, Month08, Month09, Month10, Month11, Month12, @higuid, -100) WHEN MATCHED AND ( TARGET.Month01<>SOURCE.Month01 OR TARGET.Month02<>SOURCE.Month02 OR TARGET.Month03<>SOURCE.Month03 OR TARGET.Month04<>SOURCE.Month04 OR TARGET.Month05<>SOURCE.Month05 OR TARGET.Month06<>SOURCE.Month06 OR TARGET.Month07<>SOURCE.Month07 OR TARGET.Month08<>SOURCE.Month08 OR TARGET.Month09<>SOURCE.Month09 OR TARGET.Month10<>SOURCE.Month10 OR TARGET.Month11<>SOURCE.Month11 OR TARGET.Month12<>SOURCE.Month12 ) THEN UPDATE SET TARGET.Month01=SOURCE.Month01, TARGET.Month02=SOURCE.Month02, TARGET.Month03=SOURCE.Month03, TARGET.Month04=SOURCE.Month04, TARGET.Month05=SOURCE.Month05, TARGET.Month06=SOURCE.Month06, TARGET.Month07=SOURCE.Month07, TARGET.Month08=SOURCE.Month08, TARGET.Month09=SOURCE.Month09, TARGET.Month10=SOURCE.Month10, TARGET.Month11=SOURCE.Month11, TARGET.Month12=SOURCE.Month12, TARGET.HistoryItemGUID = @higuid WHEN NOT MATCHED BY SOURCE AND TARGET.TransactionID=-100 THEN DELETE ; -- end merge ; -- end with -------------------------------------------------------------------------------------------------- -- MERGE clientob.FactStaffingPCNonReporting - Wages -------------------------------------------------------------------------------------------------- with fct as ( select DepartmentalBudgetID, PayCodeGroupID, JobCodeID, EmployeeID, FiscalYearID, TimeClassID, UnitTypeID, DataTypeID, Month01, Month02, Month03, Month04, Month05, Month06, Month07, Month08, Month09, Month10, Month11, Month12, HistoryItemGUID, TransactionID from [clientob].[FactStaffingPCNonReporting] nonr where 1=1 and nonr.FiscalYearID >= @currYear and nonr.DataTypeID = 4 and nonr.PayCodeGroupID <> 0 ) MERGE fct AS TARGET USING #RosterAggregateInitial AS SOURCE ON ( 1=1 AND TARGET.[DepartmentalBudgetID] = SOURCE.[DepartmentalBudgetID] AND TARGET.[PayCodeGroupID] = SOURCE.[PayCodeGroupID] AND TARGET.[JobCodeID] = SOURCE.[JobCodeID] AND TARGET.[EmployeeID] = SOURCE.[EmployeeID] AND TARGET.[FiscalYearID] = SOURCE.[FiscalYearID] AND TARGET.[TimeClassID] = SOURCE.[TimeClassID] AND TARGET.[UnitTypeID] = SOURCE.[UnitTypeID] -- AND TARGET.[DataTypeID] = 4 ) WHEN NOT MATCHED BY TARGET THEN INSERT(DepartmentalBudgetID, PayCodeGroupID, JobCodeID, EmployeeID, FiscalYearID, TimeClassID, UnitTypeID, DataTypeID, Month01, Month02, Month03, Month04, Month05, Month06, Month07, Month08, Month09, Month10, Month11, Month12, HistoryItemGUID, TransactionID) VALUES(DepartmentalBudgetID, PayCodeGroupID, JobCodeID, EmployeeID, FiscalYearID, TimeClassID, UnitTypeID, 4, Month01, Month02, Month03, Month04, Month05, Month06, Month07, Month08, Month09, Month10, Month11, Month12, @higuid, -100) WHEN MATCHED AND ( TARGET.Month01<>SOURCE.Month01 OR TARGET.Month02<>SOURCE.Month02 OR TARGET.Month03<>SOURCE.Month03 OR TARGET.Month04<>SOURCE.Month04 OR TARGET.Month05<>SOURCE.Month05 OR TARGET.Month06<>SOURCE.Month06 OR TARGET.Month07<>SOURCE.Month07 OR TARGET.Month08<>SOURCE.Month08 OR TARGET.Month09<>SOURCE.Month09 OR TARGET.Month10<>SOURCE.Month10 OR TARGET.Month11<>SOURCE.Month11 OR TARGET.Month12<>SOURCE.Month12 ) THEN UPDATE SET TARGET.Month01=SOURCE.Month01, TARGET.Month02=SOURCE.Month02, TARGET.Month03=SOURCE.Month03, TARGET.Month04=SOURCE.Month04, TARGET.Month05=SOURCE.Month05, TARGET.Month06=SOURCE.Month06, TARGET.Month07=SOURCE.Month07, TARGET.Month08=SOURCE.Month08, TARGET.Month09=SOURCE.Month09, TARGET.Month10=SOURCE.Month10, TARGET.Month11=SOURCE.Month11, TARGET.Month12=SOURCE.Month12, TARGET.HistoryItemGUID = @higuid WHEN NOT MATCHED BY SOURCE AND TARGET.TransactionID=-100 THEN DELETE ; -- end merge ; -- end with -------------------------------------------------------------------------------------------------- -- MERGE clientob.FactStaffingPC - Fixed staffing -------------------------------------------------------------------------------------------------- with fctw as ( select DepartmentalBudgetID, PayCodeGroupID, JobCodeID, EmployeeID, FiscalYearID, TimeClassID, UnitTypeID, DataTypeID, Month01, Month02, Month03, Month04, Month05, Month06, Month07, Month08, Month09, Month10, Month11, Month12, HistoryItemGUID, TransactionID from [clientob].[FactStaffingPC] fpc where DataTypeID = 3 and PayCodeGroupID = 0 ) MERGE fctw AS TARGET USING #RosterAggregateNoPCGInitial AS SOURCE ON ( 1=1 AND TARGET.[DepartmentalBudgetID] = SOURCE.[DepartmentalBudgetID] AND TARGET.[PayCodeGroupID] = SOURCE.[PayCodeGroupID] AND TARGET.[JobCodeID] = SOURCE.[JobCodeID] AND TARGET.[EmployeeID] = SOURCE.[EmployeeID] AND TARGET.[FiscalYearID] = SOURCE.[FiscalYearID] AND TARGET.[TimeClassID] = SOURCE.[TimeClassID] AND TARGET.[UnitTypeID] = SOURCE.[UnitTypeID] -- AND TARGET.[DataTypeID] = SOURCE.[DataTypeID] ) WHEN NOT MATCHED BY TARGET THEN INSERT(DepartmentalBudgetID, PayCodeGroupID, JobCodeID, EmployeeID, FiscalYearID, TimeClassID, UnitTypeID, DataTypeID, Month01, Month02, Month03, Month04, Month05, Month06, Month07, Month08, Month09, Month10, Month11, Month12, HistoryItemGUID, TransactionID) VALUES(DepartmentalBudgetID, PayCodeGroupID, JobCodeID, EmployeeID, FiscalYearID, TimeClassID, UnitTypeID, 3, Month01, Month02, Month03, Month04, Month05, Month06, Month07, Month08, Month09, Month10, Month11, Month12, @higuid, -100) WHEN MATCHED AND ( TARGET.Month01<>SOURCE.Month01 OR TARGET.Month02<>SOURCE.Month02 OR TARGET.Month03<>SOURCE.Month03 OR TARGET.Month04<>SOURCE.Month04 OR TARGET.Month05<>SOURCE.Month05 OR TARGET.Month06<>SOURCE.Month06 OR TARGET.Month07<>SOURCE.Month07 OR TARGET.Month08<>SOURCE.Month08 OR TARGET.Month09<>SOURCE.Month09 OR TARGET.Month10<>SOURCE.Month10 OR TARGET.Month11<>SOURCE.Month11 OR TARGET.Month12<>SOURCE.Month12 ) THEN UPDATE SET TARGET.Month01=SOURCE.Month01, TARGET.Month02=SOURCE.Month02, TARGET.Month03=SOURCE.Month03, TARGET.Month04=SOURCE.Month04, TARGET.Month05=SOURCE.Month05, TARGET.Month06=SOURCE.Month06, TARGET.Month07=SOURCE.Month07, TARGET.Month08=SOURCE.Month08, TARGET.Month09=SOURCE.Month09, TARGET.Month10=SOURCE.Month10, TARGET.Month11=SOURCE.Month11, TARGET.Month12=SOURCE.Month12, TARGET.HistoryItemGUID = @higuid, TARGET.TransactionID = -100 WHEN NOT MATCHED BY SOURCE AND TARGET.TransactionID = -100 THEN DELETE ; -- end merge ; -- end with -------------------------------------------------------------------------------------------------- -- MERGE clientob.FactStaffingPC - Wages -------------------------------------------------------------------------------------------------- with fctw as ( select DepartmentalBudgetID, PayCodeGroupID, JobCodeID, EmployeeID, FiscalYearID, TimeClassID, UnitTypeID, DataTypeID, Month01, Month02, Month03, Month04, Month05, Month06, Month07, Month08, Month09, Month10, Month11, Month12, HistoryItemGUID, TransactionID from [clientob].[FactStaffingPC] fpc where DataTypeID = 3 and fpc.PayCodeGroupID<>0 ) MERGE fctw AS TARGET USING #RosterAggregateInitial AS SOURCE ON ( 1=1 AND TARGET.[DepartmentalBudgetID] = SOURCE.[DepartmentalBudgetID] AND TARGET.[PayCodeGroupID] = SOURCE.[PayCodeGroupID] AND TARGET.[JobCodeID] = SOURCE.[JobCodeID] AND TARGET.[EmployeeID] = SOURCE.[EmployeeID] AND TARGET.[FiscalYearID] = SOURCE.[FiscalYearID] AND TARGET.[TimeClassID] = SOURCE.[TimeClassID] AND TARGET.[UnitTypeID] = SOURCE.[UnitTypeID] -- AND TARGET.[DataTypeID] = SOURCE.[DataTypeID] ) WHEN NOT MATCHED BY TARGET THEN INSERT(DepartmentalBudgetID, PayCodeGroupID, JobCodeID, EmployeeID, FiscalYearID, TimeClassID, UnitTypeID, DataTypeID, Month01, Month02, Month03, Month04, Month05, Month06, Month07, Month08, Month09, Month10, Month11, Month12, HistoryItemGUID, TransactionID) VALUES(DepartmentalBudgetID, PayCodeGroupID, JobCodeID, EmployeeID, FiscalYearID, TimeClassID, UnitTypeID, 3, Month01, Month02, Month03, Month04, Month05, Month06, Month07, Month08, Month09, Month10, Month11, Month12, @higuid, -100) WHEN MATCHED AND ( TARGET.Month01<>SOURCE.Month01 OR TARGET.Month02<>SOURCE.Month02 OR TARGET.Month03<>SOURCE.Month03 OR TARGET.Month04<>SOURCE.Month04 OR TARGET.Month05<>SOURCE.Month05 OR TARGET.Month06<>SOURCE.Month06 OR TARGET.Month07<>SOURCE.Month07 OR TARGET.Month08<>SOURCE.Month08 OR TARGET.Month09<>SOURCE.Month09 OR TARGET.Month10<>SOURCE.Month10 OR TARGET.Month11<>SOURCE.Month11 OR TARGET.Month12<>SOURCE.Month12 ) THEN UPDATE SET TARGET.Month01=SOURCE.Month01, TARGET.Month02=SOURCE.Month02, TARGET.Month03=SOURCE.Month03, TARGET.Month04=SOURCE.Month04, TARGET.Month05=SOURCE.Month05, TARGET.Month06=SOURCE.Month06, TARGET.Month07=SOURCE.Month07, TARGET.Month08=SOURCE.Month08, TARGET.Month09=SOURCE.Month09, TARGET.Month10=SOURCE.Month10, TARGET.Month11=SOURCE.Month11, TARGET.Month12=SOURCE.Month12, TARGET.HistoryItemGUID = @higuid, TARGET.TransactionID = -100 WHEN NOT MATCHED BY SOURCE AND TARGET.TransactionID = -100 THEN DELETE ; -- end merge ; -- end with -------------------------------------------------------------------------------------------------- -- Invalidate department models -------------------------------------------------------------------------------------------------- --disable cache for plans select @planRefreshList = 'PlanGUID in (''' + dbo.straggr(cast(dep.MemberGUID as nvarchar(36)), ''',''', '') + ''')' from #DepartmentsCache dep if (@planRefreshList <> '') begin exec [dbo].[procInvalidateModelWorkbookCacheByWhereClause] @xplanWhereClause = @planRefreshList,@isDebugOnly = 0, @source = 'Roster Transfer' end -------------------------------------------------------------------------------------------------- -- Clean-up -------------------------------------------------------------------------------------------------- DROP TABLE #RosterAggregateInitial DROP TABLE #RosterAggregate DROP TABLE #RosterAggregateNoPCGInitial DROP TABLE #RosterAggregateNoPayCodeGroup DROP TABLE #Departments DROP TABLE #DepartmentsCache DROP TABLE #JobCodes DROP TABLE #JobCodeDept END GO --------------------------------------------- -- ob.procSLReimbursementRefreshGrossChargesfromDeptBudgets /************************************************************ ** Author: blewis ** Create Date: 2015-04-23 ** Description: Samples Gross Charges from Depts to Severice Line Reimbursement ** Last Modified: 2015-04-31 ** GM Release: 2015.3 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** *************************************************************/ CREATE PROC [ob].[procSLReimbursementRefreshGrossChargesfromDeptBudgets] as DECLARE @HIGuid as Nvarchar(36) = newid() EXEC [dbo].[procLogHistory] @username ='StrataUser' ,@desc ='procSLReimbursementRefreshGrossChargesfromDeptBudgets' ,@cnt =0 ,@higuid =@HIGuid --Refresh Charge Master Table exec [clientob].[procFactChargeMasterRefresh] --Delete Stale Values DELETE FROM [clientob].[FactServiceLineRevenue] WHERE RowID IN( SELECT RowID FROM [clientob].[FactServiceLineRevenue] FSLR WHERE FSLR.PayorID=0 AND FSLR.PayorGroupID=0 AND FSLR.OBForecastDetailID=38 --GROSS CHARGES AND NOT EXISTS(SELECT 1 FROM [clientob].[viewSLReimbursementGrossChargesByServiceLine] VGCSL WHERE VGCSL.DataTypeID=FSLR.DataTypeID AND VGCSL.FiscalYearID=FSLR.FiscalYearID AND VGCSL.ModelingServiceLineID=FSLR.ModelingServiceLineID AND VGCSL.PayorID=FSLR.PayorID AND VGCSL.PayorGroupID=FSLR.PayorGroupID AND VGCSL.OBForecastDetailID=FSLR.OBForecastDetailID AND VGCSL.OBServiceLinePlanID=FSLR.OBServiceLinePlanID AND VGCSL.TimeClassID=FSLR.TimeClassID AND VGCSL.UnitTypeID=FSLR.UnitTypeID) ) --Update Existing Values UPDATE FSLR SET Month01=VGCSL.Month01, Month02=VGCSL.Month02, Month03=VGCSL.Month03, Month04=VGCSL.Month04, Month05=VGCSL.Month05, Month06=VGCSL.Month06, Month07=VGCSL.Month07, Month08=VGCSL.Month08, Month09=VGCSL.Month09, Month10=VGCSL.Month10, Month11=VGCSL.Month11, Month12=VGCSL.Month12 FROM [clientob].[FactServiceLineRevenue] FSLR INNER join [clientob].[viewSLReimbursementGrossChargesByServiceLine] VGCSL on VGCSL.DataTypeID=FSLR.DataTypeID AND VGCSL.FiscalYearID=FSLR.FiscalYearID AND VGCSL.ModelingServiceLineID=FSLR.ModelingServiceLineID AND VGCSL.PayorID=FSLR.PayorID AND VGCSL.PayorGroupID=FSLR.PayorGroupID AND VGCSL.OBForecastDetailID=FSLR.OBForecastDetailID AND VGCSL.OBServiceLinePlanID=FSLR.OBServiceLinePlanID AND VGCSL.TimeClassID=FSLR.TimeClassID AND VGCSL.UnitTypeID=FSLR.UnitTypeID WHERE FSLR.Month01 <> VGCSL.Month01 OR FSLR.Month02 <> VGCSL.Month02 OR FSLR.Month03 <> VGCSL.Month03 OR FSLR.Month04 <> VGCSL.Month04 OR FSLR.Month05 <> VGCSL.Month05 OR FSLR.Month06 <> VGCSL.Month06 OR FSLR.Month07 <> VGCSL.Month07 OR FSLR.Month08 <> VGCSL.Month08 OR FSLR.Month09 <> VGCSL.Month09 OR FSLR.Month10 <> VGCSL.Month10 OR FSLR.Month11 <> VGCSL.Month11 OR FSLR.Month12 <> VGCSL.Month12 --Insert New Rows INSERT INTO [clientob].[FactServiceLineRevenue] ([DataTypeID], [FiscalYearID], [ModelingServiceLineID], [PayorID], [PayorGroupID], [OBForecastDetailID], [OBServiceLinePlanID], [TimeClassID], [UnitTypeID], [Month01], [Month02], [Month03], [Month04], [Month05], [Month06], [Month07], [Month08], [Month09], [Month10], [Month11], [Month12], [Yearly], [YTD], [IsDeleted], [HistoryItemGUID], [TransactionID]) SELECT [DataTypeID] , [FiscalYearID] , [ModelingServiceLineID] , [PayorID] , [PayorGroupID] , [OBForecastDetailID] , [OBServiceLinePlanID] , [TimeClassID] , [UnitTypeID] , [Month01] , [Month02] , [Month03] , [Month04] , [Month05] , [Month06] , [Month07] , [Month08] , [Month09] , [Month10] , [Month11] , [Month12] , 0 as [Yearly] , 0 AS [YTD] , 0 AS [IsDeleted] , @HIGuid as [HistoryItemGUID] , 0 as [TransactionID] FROM [clientob].[viewSLReimbursementGrossChargesByServiceLine] VGCSL WHERE NOT( VGCSL.Month01 = 0 AND VGCSL.Month02 = 0 AND VGCSL.Month03 = 0 AND VGCSL.Month04 = 0 AND VGCSL.Month05 = 0 AND VGCSL.Month06 = 0 AND VGCSL.Month07 = 0 AND VGCSL.Month08 = 0 AND VGCSL.Month09 = 0 AND VGCSL.Month10 = 0 AND VGCSL.Month11 = 0 AND VGCSL.Month12 = 0) AND NOT EXISTS(SELECT 1 FROM [clientob].[FactServiceLineRevenue] FSLR WHERE VGCSL.DataTypeID=FSLR.DataTypeID AND VGCSL.FiscalYearID=FSLR.FiscalYearID AND VGCSL.ModelingServiceLineID=FSLR.ModelingServiceLineID AND VGCSL.PayorID=FSLR.PayorID AND VGCSL.PayorGroupID=FSLR.PayorGroupID AND VGCSL.OBForecastDetailID=FSLR.OBForecastDetailID AND VGCSL.OBServiceLinePlanID=FSLR.OBServiceLinePlanID AND VGCSL.TimeClassID=FSLR.TimeClassID AND VGCSL.UnitTypeID=FSLR.UnitTypeID) GO --------------------------------------------- -- ob.procSampleBudgetStampOffToIntTables create PROC [ob].[procSampleBudgetStampOffToIntTables] AS /* ************************************************************************************************************************ ** Author: Mike Schmitz ** Create Date: 2014-09-19 ** Description: Populates Budget Stamp-Off Data into the fw.int fact tables ** Last Modified: 2016-02-26 ** GM Release: 2014.4 ************************************************************************************************************************** ** Change History ************************************************************************************************************************** ** CID Date Author WI Description ** 1 2/24/15 MJS Remove PayorCode and PayorGroupCode columns from the int.factserviceline insert ** 2 2016-02-26 cbb update staffing data hours to use productive and non-productive *************************************************************************************************************************/ declare @HistoryItemGUID uniqueidentifier = newid() declare @year int = (select Setting+1 from DBSetting where Name = 'OB_Current_Year') ---------<<<<<<<<<<<<<<<< GL Data >>>>>>>>>>>>>>>>>>>>>>--------- DELETE FROM int.factGL WHERE FiscalYearID = @year and TimeClassID = 2 INSERT INTO [int].[FactGL] ([DepartmentID] ,[DepartmentCode] ,[AccountID] ,[AccountCode] ,[FiscalYearID] ,[FiscalYearCode] ,[TimeClassID] ,[TimeClassCode] ,[FiscalMonthID] ,[FiscalMonthCode] ,[Value] ,[IsDeleted] ,[HistoryItemGUID]) SELECT dep.DepartmentID , dep.DepartmentCode , acc.AccountID , acc.AccountCode , BudgetedData.FiscalYearID , BudgetedData.FiscalYearID as FiscalYearCode , tc.TimeClassID , tc.TimeClassCode , fm.FiscalMonthID , fm.FiscalMonthCode , acc.inversion*Value as Value , '0' as IsDeleted , @HistoryItemGUID as HistoryItemGUID FROM ( SELECT * FROM ( SELECT * FROM [clientob].[FactAccountBudgetStampOff] fac WHERE fac.UnitTypeID = 34 --Dollars only ) EXPORTDATA UNPIVOT (Value for FiscalMonthCode in ([Month01],[Month02],[Month03],[Month04],[Month05],[Month06],[Month07],[Month08],[Month09],[Month10],[Month11],[Month12])) AS PVT ) BudgetedData INNER JOIN fw.DimAccount acc on acc.AccountID = BudgetedData.AccountID INNER JOIN ob.DimDepartmentalBudget Budget on Budget.DepartmentalBudgetID = BudgetedData.DepartmentalBudgetID INNER JOIN fw.DimDepartment dep on dep.DepartmentID = Budget.DepartmentID INNER JOIN fw.DimTimeClass tc on tc.TimeClassID = BudgetedData.TimeClassID INNER JOIN fw.DimFiscalMonth fm on fm.MonthColumnName = BudgetedData.FiscalMonthCode WHERE BudgetedData.Value <> 0 ---------<<<<<<<<<<<<<<<< Department Stats Data >>>>>>>>>>>>>>>>>>>>>>--------- DELETE FROM int.factStatistic WHERE FiscalYearID = @year and TimeClassID = 2 INSERT INTO [int].[FactStatistic] ([DepartmentID] ,[DepartmentCode] ,[AccountID] ,[AccountCode] ,[FiscalYearID] ,[FiscalYearCode] ,[TimeClassID] ,[TimeClassCode] ,[FiscalMonthID] ,[FiscalMonthCode] ,[Value] ,[IsDeleted] ,[HistoryItemGUID]) SELECT dep.DepartmentID , dep.DepartmentCode , acc.AccountID , acc.AccountCode , BudgetedData.FiscalYearID , BudgetedData.FiscalYearID as FiscalYearCode , tc.TimeClassID , tc.TimeClassCode , fm.FiscalMonthID , fm.FiscalMonthCode , acc.inversion*Value as Value , '0' as IsDeleted , @HistoryItemGUID as HistoryItemGUID FROM ( SELECT * FROM ( SELECT * FROM [clientob].[FactAccountBudgetStampOff] fac WHERE fac.UnitTypeID = 140 --Volumes only ) EXPORTDATA UNPIVOT (Value for FiscalMonthCode in ([Month01],[Month02],[Month03],[Month04],[Month05],[Month06],[Month07],[Month08],[Month09],[Month10],[Month11],[Month12])) AS PVT ) BudgetedData INNER JOIN fw.DimAccount acc on acc.AccountID = BudgetedData.AccountID INNER JOIN ob.DimDepartmentalBudget Budget on Budget.DepartmentalBudgetID = BudgetedData.DepartmentalBudgetID INNER JOIN fw.DimDepartment dep on dep.DepartmentID = Budget.DepartmentID INNER JOIN fw.DimTimeClass tc on tc.TimeClassID = BudgetedData.TimeClassID INNER JOIN fw.DimFiscalMonth fm on fm.MonthColumnName = BudgetedData.FiscalMonthCode WHERE BudgetedData.Value <> 0 ---------<<<<<<<<<<<<<<<< Global Stats Data >>>>>>>>>>>>>>>>>>>>>>--------- DELETE FROM int.FactGlobalStatistics WHERE FiscalYearID = @year and TimeClassID = 2 INSERT INTO [int].[FactGlobalStatistics] ( EntityID , EntityCode , DepartmentID , DepartmentCode , AccountID , AccountCode , FiscalYearID , FiscalYearCode , TimeClassID , TimeClassCode , FiscalMonthID , FiscalMonthCode , Value , IsDeleted , HistoryItemGUID ) SELECT ent.EntityID , ent.Code as 'EntityCode' , '0' as DepartmentID , '0' as DepartmentCode , acc.AccountID , acc.AccountCode , BudgetedData.FiscalYearID , BudgetedData.FiscalYearID as FiscalYearCode , tc.TimeClassID , tc.TimeClassCode , fm.FiscalMonthID , fm.FiscalMonthCode , acc.inversion*Value as Value , '0' as IsDeleted , @HistoryItemGUID as HistoryItemGUID FROM ( SELECT * FROM ( SELECT * FROM [clientob].[FactGlobalStatisticsBudgetStampOff] fac ) EXPORTDATA UNPIVOT (Value for FiscalMonthCode in ([Month01],[Month02],[Month03],[Month04],[Month05],[Month06],[Month07],[Month08],[Month09],[Month10],[Month11],[Month12])) AS PVT ) BudgetedData INNER JOIN [ob].[DimOBGlobalStatistics] gs on gs.OBGlobalStatisticID = BudgetedData.OBGlobalStatisticID INNER JOIN fw.DimAccount acc on acc.AccountID = GS.AccountID INNER JOIN fw.DimDepartment dep on dep.DepartmentID = GS.DepartmentID INNER JOIN ob.DimOBGlobalStatisticsPlan GSP on GSP.OBGlobalStatisticsPlanID = BudgetedData.OBGlobalStatisticsPlanID INNER JOIN fw.DimEntity ent on GSP.EntityID = ent.EntityID INNER JOIN fw.DimTimeClass tc on tc.TimeClassID = BudgetedData.TimeClassID INNER JOIN fw.DimFiscalMonth fm on fm.MonthColumnName = BudgetedData.FiscalMonthCode WHERE gs.DepartmentID = 0 AND BudgetedData.Value <> 0 ---------<<<<<<<<<<<<<<<< Staffing Data >>>>>>>>>>>>>>>>>>>>>>--------- DELETE FROM int.FactStaffing WHERE FiscalYearID = @year and TimeClassID = 2 INSERT INTO [int].[FactStaffing] ( DepartmentID , DepartmentCode , JobCodeID , JobCode , PayCodeID , PayCode , FiscalYearID , FiscalYearCode , TimeClassID , TimeClassCode , UnitTypeID , UnitType , FiscalMonthID , FiscalMonthCode , Value , IsDeleted , HistoryItemGUID , EmployeeID , EmployeeCode) SELECT dep.DepartmentID , dep.DepartmentCode , jc.JobCodeID , jc.JobCode , pc.PayCodeID , pc.PayCode , BudgetedData.FiscalYearID , BudgetedData.FiscalYearID as FiscalYearCode , tc.TimeClassID , tc.TimeClassCode -- CID 2 Begin , case when ut.UnitTypeID = 34 then 34 else 51 end as UnitTypeID , case when ut.Name ='Dollars' then 'Dollars' else 'Hours' end as UnitType -- CID 2 End , fm.FiscalMonthID , fm.FiscalMonthCode , Value as Value , '0' as IsDeleted , @HistoryItemGUID as HistoryItemGUID , '0' as EmployeeID , '0' as EmployeeCode FROM ( SELECT * FROM ( SELECT * FROM [clientob].[FactStaffingPCBudgetStampOff] fac ) EXPORTDATA UNPIVOT (Value for FiscalMonthCode in ([Month01],[Month02],[Month03],[Month04],[Month05],[Month06],[Month07],[Month08],[Month09],[Month10],[Month11],[Month12])) AS PVT ) BudgetedData INNER JOIN [fw].[DimJobCode] jc on jc.JobCodeID = BudgetedData.JobCodeID INNER JOIN [ob].[DimDepartmentalBudget] budget on budget.DepartmentalBudgetID = BudgetedData.DepartmentalBudgetID INNER JOIN [fw].[DimDepartment] dep on dep.DepartmentID = budget.DepartmentID INNER JOIN [fw].[DimTimeClass] tc on tc.TimeClassID = BudgetedData.TimeClassID INNER JOIN [fw].[DimFiscalMonth] fm on fm.MonthColumnName = BudgetedData.FiscalMonthCode INNER JOIN [fw].[DimPayCodeGroup] PCG ON PCG.PayCodeGroupID = BudgetedData.PayCodeGroupID INNER JOIN [fw].[DimPayCode] pc ON pc.PayCodeID = PCG.DefaultPayCodeID INNER JOIN [fw].[DimUnitType] UT ON UT.UnitTypeID = BudgetedData.UnitTypeID WHERE 1=1 and ut.UnitTypeID IN ('34','146','148') -- CID 2 AND BudgetedData.Value <> 0 and PCG.PayCodeGroupID<>0 -- CID 2 ---------<<<<<<<<<<<<<<<< CDM Data >>>>>>>>>>>>>>>>>>>>>>--------- DELETE FROM int.FactCDM WHERE FiscalYearID = @year and TimeClassID = 2 INSERT INTO [int].[FactCDM] ( DepartmentID, DepartmentCode, ChargeCodeID, ChargeCode, FiscalYearID, FiscalYearCode, TimeClassID, TimeClassCode, FiscalMonthID, FiscalMonthCode, PatientClassID, PatientClassCode, ServiceLineID, ServiceLine, AgeCohortID, AgeCohort, MedicalSurgicalID, MedSurg, UnitTypeID, UnitType, Value, IsDeleted, HistoryItemGUID) SELECT DEP.DepartmentID, DEP.DepartmentCode, CC.ChargeCodeID, CC.ChargeCode, BudgetedData.FiscalYearID, BudgetedData.FiscalYearID AS FiscalYearCode, TC.TimeClassID, TC.TimeClassCode, FM.FiscalMonthID, FM.FiscalMonthCode, PAT.PatientClassID, PAT.Code as 'PatientClassCode', '0' as ServiceLineID, '' as ServiceLine, '0' as AgeCohortID, '' as AgeCohort, '0' as MedicalSurgicalID, '' as MedSurg, UT.UnitTypeID, UT.Name as 'UnitType', Value ,'0' as IsDeleted ,@HistoryItemGUID as HistoryItemGUID FROM ( SELECT * FROM ( SELECT * FROM [clientob].[FactCDMBudgetStampOff] fac ) EXPORTDATA UNPIVOT (Value for FiscalMonthCode in ([Month01],[Month02],[Month03],[Month04],[Month05],[Month06],[Month07],[Month08],[Month09],[Month10],[Month11],[Month12])) AS PVT ) BudgetedData INNER JOIN [fw].[DimChargeCode] CC on CC.ChargeCodeID = BudgetedData.ChargeCodeID INNER JOIN [fw].[DimPatientClass] PAT ON PAT.PatientClassID = BudgetedData.PatientClassID INNER JOIN [ob].[DimDepartmentalBudget] Budget on Budget.DepartmentalBudgetID = BudgetedData.DepartmentalBudgetID INNER JOIN [fw].[DimDepartment] dep on dep.DepartmentID = Budget.DepartmentID INNER JOIN [fw].[DimTimeClass] tc on tc.TimeClassID = BudgetedData.TimeClassID INNER JOIN [fw].[DimFiscalMonth] fm on fm.MonthColumnName = BudgetedData.FiscalMonthCode INNER JOIN [fw].[DimUnitType] UT ON UT.UnitTypeID = BudgetedData.UnitTypeID WHERE BudgetedData.Value <> 0 ---------<<<<<<<<<<<<<<<< Service Line Data >>>>>>>>>>>>>>>>>>>>>>--------- DELETE FROM int.FactServiceLine WHERE FiscalYearID = @year and TimeClassID = 2 INSERT INTO [int].[FactServiceLine] ( EntityID, EntityCode, PatientClassID, PatientClassCode, ServiceLineID, ServiceLine, AgeCohortID, AgeCohort, MedicalSurgicalID, MedSurg, PayorID, PayorGroupID, FiscalYearID, FiscalYearCode, TimeClassID, TimeClassCode, FiscalMonthID, FiscalMonthCode, OBForecastDetailID, ForecastDetail, Value, IsDeleted, HistoryItemGUID) SELECT E.EntityID, E.Code as 'EntityCode', PAT.PatientClassID, PAT.Code as 'PatientClassCode', SL.ServiceLineID, SL.Code as 'ServiceLineCode', AGE.AgeCohortID, AGE.Code as 'AgeCohort', MED.MedicalSurgicalID, MED.Code as 'MedSurg', PAY.PayorID, PAYG.PayorGroupID, BudgetedData.FiscalYearID, BudgetedData.FiscalYearID AS FiscalYearCode, TC.TimeClassID, TC.TimeClassCode, FM.FiscalMonthID, FM.FiscalMonthCode, FD.OBForecastDetailID, FD.Code as 'ForecastDetail', Value ,'0' as IsDeleted ,@HistoryItemGUID as HistoryItemGUID FROM ( SELECT * FROM ( SELECT * FROM [clientob].[FactServiceLineBudgetStampOff] fac ) EXPORTDATA UNPIVOT (Value for FiscalMonthCode in ([Month01],[Month02],[Month03],[Month04],[Month05],[Month06],[Month07],[Month08],[Month09],[Month10],[Month11],[Month12])) AS PVT ) BudgetedData INNER JOIN [fw].[DimModelingServiceLine] MSL on MSL.ModelingServiceLineID = BudgetedData.ModelingServiceLineID INNER JOIN [fw].[DimServiceLine] SL ON MSL.ServiceLineID = SL.ServiceLineID INNER JOIN [fw].[DimPatientClass] PAT ON PAT.PatientClassID = MSL.PatientClassID INNER JOIN [fw].[DimAgeCohort] AGE ON AGE.AgeCohortID = MSL.AgeCohortID INNER JOIN [fw].[DimMedicalSurgical] MED ON MED.MedicalSurgicalID = MSL.MedicalSurgicalID INNER JOIN [ob].[DimOBServiceLinePlan] P ON P.OBServiceLinePlanID = BudgetedData.OBServiceLinePlanID INNER JOIN [fw].[DimEntity] E on E.EntityID = P.EntityID INNER JOIN [fw].[DimTimeClass] tc on tc.TimeClassID = BudgetedData.TimeClassID INNER JOIN [fw].[DimFiscalMonth] fm on fm.MonthColumnName = BudgetedData.FiscalMonthCode INNER JOIN [ob].[DimOBForecastDetail] FD ON FD.OBForecastDetailID = BudgetedData.OBForecastDetailID INNER JOIN [fw].[DimPayor] PAY ON PAY.PayorID=0 INNER JOIN [fw].[DimPayorGroup] PAYG ON PAYG.PayorGroupID=0 WHERE BudgetedData.Value <> 0 ---------<<<<<<<<<<<<<<<< Payor Data >>>>>>>>>>>>>>>>>>>>>>--------- DELETE FROM int.FactOBPayor WHERE FiscalYearID = @year and TimeClassID = 2 INSERT INTO [int].[FactOBPayor] ( OBReimbursementPlanID, ReimbursementPlan, PatientClassID, PatientClassCode, PayorID, PayorCode, FiscalYearID, FiscalYearCode, TimeClassID, TimeClassCode, FiscalMonthID, FiscalMonthCode, OBForecastDetailID, OBForecastDetailCode, CareSettingID, CareSettingCode, Value, IsDeleted, HistoryItemGUID) SELECT P.OBReimbursementPlanID, P.Name as 'ReimbursementPlan', PAT.PatientClassID, PAT.Code as 'PatientClassCode', PAY.PayorID, PAY.PayorCode, BudgetedData.FiscalYearID, BudgetedData.FiscalYearID as 'FiscalYearCode', TC.TimeClassID, TC.TimeClassCode, fm.FiscalMonthID, fm.FiscalMonthCode, FD.OBForecastDetailID, FD.Code as 'OBForecastDetail', C.CareSettingID, C.Code as 'CareSettingCode', Value ,'0' as IsDeleted ,@HistoryItemGUID as 'HistoryItemGUID' FROM ( SELECT * FROM ( SELECT * FROM [clientob].[FactReimbursementBudgetStampOff] fac ) EXPORTDATA UNPIVOT (Value for FiscalMonthCode in ([Month01],[Month02],[Month03],[Month04],[Month05],[Month06],[Month07],[Month08],[Month09],[Month10],[Month11],[Month12])) AS PVT ) BudgetedData INNER JOIN [fw].[DimPatientReimbursementGroup] PRG on PRG.PatientReimbursementGroupID = BudgetedData.PatientReimbursementGroupID INNER JOIN [fw].[DimPatientClass] PAT ON PAT.PatientClassID = PRG.PatientClassID INNER JOIN [fw].[DimCareSetting] C ON C.CareSettingID = PRG.CareSettingID INNER JOIN [fw].[DimPayor] PAY ON PAY.PayorID = BudgetedData.PayorID INNER JOIN [ob].[DimOBReimbursementPlan] P ON P.OBReimbursementPlanID = BudgetedData.OBReimbursementPlanID INNER JOIN [fw].[DimTimeClass] tc on tc.TimeClassID = BudgetedData.TimeClassID INNER JOIN [fw].[DimFiscalMonth] fm on fm.MonthColumnName = BudgetedData.FiscalMonthCode INNER JOIN [ob].[DimOBForecastDetail] FD ON FD.OBForecastDetailID = BudgetedData.OBForecastDetailID WHERE BudgetedData.Value <> 0 ---------<<<<<<<<<<<<<<<< Payor Group Data >>>>>>>>>>>>>>>>>>>>>>--------- DELETE FROM int.FactOBPayorGroup WHERE FiscalYearID = @year and TimeClassID = 2 INSERT INTO [int].[FactOBPayorGroup] ( OBReimbursementPlanID, ReimbursementPlan, PatientClassID, PatientClassCode, PayorGroupID, PayorGroupCode, FiscalYearID, FiscalYearCode, TimeClassID, TimeClassCode, FiscalMonthID, FiscalMonthCode, OBForecastDetailID, OBForecastDetailCode, CareSettingID, CareSettingCode, Value, IsDeleted, HistoryItemGUID) SELECT P.OBReimbursementPlanID, P.Name as 'ReimbursementPlan', PAT.PatientClassID, PAT.Code as 'PatientClassCode', PAY.PayorGroupID, PAY.PayorGroupCode, BudgetedData.FiscalYearID, BudgetedData.FiscalYearID as 'FiscalYearCode', TC.TimeClassID, TC.TimeClassCode, fm.FiscalMonthID, fm.FiscalMonthCode, FD.OBForecastDetailID, FD.Code as 'OBForecastDetail', C.CareSettingID, C.Code as 'CareSettingCode', Value ,'0' as IsDeleted ,@HistoryItemGUID as 'HistoryItemGUID' FROM ( SELECT * FROM ( SELECT * FROM [clientob].[FactReimbursementBudgetStampOff] fac ) EXPORTDATA UNPIVOT (Value for FiscalMonthCode in ([Month01],[Month02],[Month03],[Month04],[Month05],[Month06],[Month07],[Month08],[Month09],[Month10],[Month11],[Month12])) AS PVT ) BudgetedData INNER JOIN [fw].[DimPatientReimbursementGroup] PRG on PRG.PatientReimbursementGroupID = BudgetedData.PatientReimbursementGroupID INNER JOIN [fw].[DimPatientClass] PAT ON PAT.PatientClassID = PRG.PatientClassID INNER JOIN [fw].[DimCareSetting] C ON C.CareSettingID = PRG.CareSettingID INNER JOIN [fw].[DimPayorGroup] PAY ON PAY.PayorGroupID = BudgetedData.PayorGroupID INNER JOIN [ob].[DimOBReimbursementPlan] P ON P.OBReimbursementPlanID = BudgetedData.OBReimbursementPlanID INNER JOIN [fw].[DimTimeClass] tc on tc.TimeClassID = BudgetedData.TimeClassID INNER JOIN [fw].[DimFiscalMonth] fm on fm.MonthColumnName = BudgetedData.FiscalMonthCode INNER JOIN [ob].[DimOBForecastDetail] FD ON FD.OBForecastDetailID = BudgetedData.OBForecastDetailID WHERE BudgetedData.Value <> 0 ---------<<<<<<<<<<<<<<<< Provider Data >>>>>>>>>>>>>>>>>>>>>>--------- DELETE FROM int.FactImportProvider WHERE FiscalYearID = @year and TimeClassID = 2 INSERT INTO [int].[FactImportProvider] ( DepartmentID , DepartmentCode , ProviderID , ProviderCode , FiscalYearID , FiscalYearCode , TimeClassID , TimeClassCode , FiscalMonthID , FiscalMonthCode , OBForecastDetailID , AccountRollup , Value , IsDeleted , HistoryItemGUID ) SELECT D.DepartmentID , D.DepartmentCode , PRO.ProviderID , PRO.ProviderCode , BudgetedData.FiscalYearID , BudgetedData.FiscalYearID as 'FiscalYearCode' , TC.TimeClassID , TC.TimeClassCode , FM.FiscalMonthID , FM.FiscalMonthCode , FD.OBForecastDetailID , FD.Name as 'AccountRollup' , Value ,'0' as IsDeleted ,@HistoryItemGUID as 'HistoryItemGUID' FROM ( SELECT * FROM ( SELECT * FROM [clientob].[FactProviderBudgetStampOff] fac ) EXPORTDATA UNPIVOT (Value for FiscalMonthCode in ([Month01],[Month02],[Month03],[Month04],[Month05],[Month06],[Month07],[Month08],[Month09],[Month10],[Month11],[Month12])) AS PVT ) BudgetedData INNER JOIN [fw].[DimProvider] PRO ON PRO.ProviderID = BudgetedData.ProviderID INNER JOIN [ob].[DimDepartmentalBudget] P ON P.DepartmentalBudgetID = BudgetedData.DepartmentalBudgetID INNER JOIN [fw].[DimDepartment] D ON D.DepartmentID = P.DepartmentID INNER JOIN [fw].[DimTimeClass] tc on tc.TimeClassID = BudgetedData.TimeClassID INNER JOIN [fw].[DimFiscalMonth] fm on fm.MonthColumnName = BudgetedData.FiscalMonthCode INNER JOIN [ob].[DimOBForecastDetail] FD ON FD.OBForecastDetailID = BudgetedData.OBForecastDetailID WHERE BudgetedData.Value <> 0 exec procLogScript 'Sample Budget Stamp-Off to int tables' , @HistoryItemGUID output GO --------------------------------------------- -- ob.procSampleOBSLReimbursementandRunFillins Create Proc [ob].[procSampleOBSLReimbursementandRunFillins] as /************************************************************ ** Author: Bart Lewis ** Create Date: 2015-06-17 ** Description: Sample and Run fillins for OB SL Reimbursement Model ** Last Modified: 2015-06-17 ** GM Release: 2015.3 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 *************************************************************/ exec [ob].[procSampleOBServiceLineRevenue] @PlanGUIDlist ='' exec [ob].[procSampleServiceLineGLDeductionsCharityBadDebt] exec [dbo].[procTERefreshFillins] @planTypeGUID ='957dd809-6299-4ec2-81fc-5452df805e8e' ,@modelTemplateGUID ='f50d79a2-d0b8-4d31-8bc0-1350ea81c46a' ,@placeholderSectionGUIDList ='' ,@IsDebugOnly = 0; GO --------------------------------------------- -- ob.procSampleOBServiceLineRevenue /************************************************************ ** Author: Bart Lewis ** Create Date: 11/18/2014 ** Description: Rolling Service Line Revenue Sampling Proc ** Last Modified: 11/18/2014 ** GM Release: 2015.2.1 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** ** *************************************************************/ CREATE proc [ob].[procSampleOBServiceLineRevenue] @PlanGUIDlist as nvarchar(max) as --declare @PlanGUIDlist as nvarchar(max) declare @isBackingUp bit declare @isUpdatingExisting bit declare @isClearingEntireTarget bit declare @isInsertingNew bit declare @isShowingAggResult bit declare @isShowingSampleData bit declare @targetTableName varchar(64) declare @isClearingTempTables bit declare @isViewingTarget bit declare @isDisablingTriggers bit declare @isInvalidatingModelWorkbookCache bit --set @PlanGUIDlist ='00000000-0000-0000-0000-000000000000' set @isViewingTarget =0 set @isShowingSampleData = 0 set @isClearingEntireTarget = 1 -- Custom Delete set @isBackingUp = 1 set @isShowingAggResult = 0 set @isInsertingNew = 1 set @isUpdatingExisting = 1 set @targetTableName = 'clientob.FactServiceLineRevenue' set @isClearingTempTables = 1 set @isDisablingTriggers = 1 -- prevent history item entry creation set @isInvalidatingModelWorkbookCache = 1 declare @backupTableName varchar(1000) set @backupTableName = 'temptablebackups.dbo.' + REPLACE(REPLACE(cast(DB_NAME() as varchar(32)),'.','_'),' ','_') + '_' + REPLACE(@targetTableName,'.','_') + cast(year(getdate()) as varchar(4)) + '_' + cast(month(getdate()) as varchar(4)) + '_' + cast(day(getdate()) as varchar(4)) + '_' + datename(hh,getdate()) + '_' + datename(mi,getdate()) + '_' + datename(ss,getdate()) + '_' + datename(ms,getdate()) + '_' + datename(ns,getdate()) --****************************************************************************************** --****************************************************************************************** -- Logging --******************************************************************************************* --******************************************************************************************* declare @higuid uniqueidentifier declare @desc nvarchar(4000) set @desc = 'Sampling into ' + @targetTableName set @desc = @desc + ', Inserting=' + cast(@isInsertingNew as varchar(1)) set @desc = @desc + ', Clearing=' + cast(@isClearingEntireTarget as varchar(1)) set @desc = @desc + ', Updating=' + cast(@isUpdatingExisting as varchar(1)) set @desc = @desc + ', BackingUp=' + cast(@isBackingUp as varchar(1)) set @desc = @desc + ', BackupTable=' + @backupTableName print @desc exec procLogScript @desc , @higuid output print 'Beginning sample, historyguid: ' + cast(@higuid as varchar(36)) IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'Temptable') AND type = (N'U')) drop table TempTable if (@PlanGUIDlist='00000000-0000-0000-0000-000000000000' OR @PlanGUIDlist='') begin select MemberGUID, OBServiceLinePlanID into TempTable from [ob].[DimOBServiceLinePlan] end else begin select MemberGUID, OBServiceLinePlanID into TempTable from [ob].[DimOBServiceLinePlan] where MemberGUID in (select c.guid from dbo.ConvertCSGuidsToTable(@planGUIDList, ',') c) end --****************************************************************************************** --****************************************************************************************** print 'Sampling to temp table...' --******************************************************************************************* --******************************************************************************************* SELECT --~FQ_TOP~ source.DataTypeID , source.FiscalYearID , source.ModelingServiceLineID , source.PayorID , source.PayorGroupID , source.OBForecastDetailID , source.OBServiceLinePlanID , source.TimeClassID , source.UnitTypeID , source.Month01 , source.Month02 , source.Month03 , source.Month04 , source.Month05 , source.Month06 , source.Month07 , source.Month08 , source.Month09 , source.Month10 , source.Month11 , source.Month12 into #SampleData FROM [ob].[viewSamplingOBServiceLineRevenueFromFactFinancialServiceLineRevenue] source WHERE not( source.Month01 = 0 and source.Month02 = 0 and source.Month03 = 0 and source.Month04 = 0 and source.Month05 = 0 and source.Month06 = 0 and source.Month07 = 0 and source.Month08 = 0 and source.Month09 = 0 and source.Month10 = 0 and source.Month11 = 0 and source.Month12 = 0) and source.OBServiceLinePlanID <> 0 and source.OBServiceLinePlanID in (select t.OBServiceLinePlanID from TempTable t) ----~SourceFilter~ if @isShowingSampleData = 1 begin --****************************************************************************************** --****************************************************************************************** print 'Showing Sample Data...' --******************************************************************************************* --******************************************************************************************* select top 100 * from #Sampledata end if @isBackingUp = 1 begin --****************************************************************************************** --****************************************************************************************** print 'Backing up target table...' --******************************************************************************************* --******************************************************************************************* declare @sql varchar(max) set @sql = 'select * into ' + @backupTableName + ' from ' + @targetTableName exec (@sql) end if @isDisablingTriggers = 1 begin declare @sql2 varchar(max) set @sql2 = 'ALTER TABLE '+ @targetTableName + ' DISABLE TRIGGER ALL' exec (@sql2) end begin tran print 'Transaction Started' if @isClearingEntireTarget = 1 begin --****************************************************************************************** --****************************************************************************************** print 'Clearing entire target...' --******************************************************************************************* --******************************************************************************************* delete --BEGIN TARGET TABLE NAME --select * from [clientob].[FactServiceLineRevenue] --END TARGET TABLE NAME where ROWID in (select la.ROWID from [clientob].[FactServiceLineRevenue] la inner join [ob].[DimOBServiceLinePlan] lrp on la.OBServiceLinePlanID=lrp.OBServiceLinePlanID --and lrp.IsDeleted=0 where --la.FiscalYearID = Coalesce(@TargetedYearID, FiscalYearID) And la.TimeClassID= Coalesce(@TargetedTimeclassID, TimeClassID) and la.OBServiceLinePlanID in (select t.OBServiceLinePlanID from TempTable t) and la.DataTypeid=4--'Input' ) if @@error <> 0 begin print 'Transaction Rolled Back' rollback return end end --****************************************************************************************** --****************************************************************************************** print 'Aggregating to mapping key level...' --******************************************************************************************* --******************************************************************************************* select --BEGIN INSERT TARGET KEY COLUMNS HERE DataTypeID , FiscalYearID , ModelingServiceLineID , PayorID , PayorGroupID , OBForecastDetailID , OBServiceLinePlanID , TimeClassID , UnitTypeID --END INSERT TARGET KEY COLUMNS HERE --BEGIN INSERT TARGET VALUE COLUMNS HERE , SUM(Month01) as Month01 , SUM(Month02) as Month02 , SUM(Month03) as Month03 , SUM(Month04) as Month04 , SUM(Month05) as Month05 , SUM(Month06) as Month06 , SUM(Month07) as Month07 , SUM(Month08) as Month08 , SUM(Month09) as Month09 , SUM(Month10) as Month10 , SUM(Month11) as Month11 , SUM(Month12) as Month12 --END INSERT TARGET VALUE COLUMNS HERE , @higuid as HistoryItemGUID into #AggSampleData from #SampleData group by --INSERT TARGET COLUMNS HERE DataTypeID , FiscalYearID , ModelingServiceLineID , PayorID , PayorGroupID , OBForecastDetailID , OBServiceLinePlanID , TimeClassID , UnitTypeID --END INSERT TARGET COLUMNS HERE if @@error <> 0 begin print 'Transaction Rolled Back' rollback return end if @isShowingAggResult = 1 begin --****************************************************************************************** --****************************************************************************************** print 'Showing agg result' --******************************************************************************************* --******************************************************************************************* select top 100 * from #AggSampleData end if @isUpdatingExisting =1 begin --****************************************************************************************** --****************************************************************************************** print 'Updating existing rows...' --******************************************************************************************* --******************************************************************************************* update targt set --BEGIN UPDATE TARGET VALUE COLUMNS targt.Month01 = source.Month01, targt.Month02 = source.Month02, targt.Month03 = source.Month03, targt.Month04 = source.Month04, targt.Month05 = source.Month05, targt.Month06 = source.Month06, targt.Month07 = source.Month07, targt.Month08 = source.Month08, targt.Month09 = source.Month09, targt.Month10 = source.Month10, targt.Month11 = source.Month11, targt.Month12 = source.Month12, --END UPDATE TARGET VALUE COLUMNS targt.historyitemguid = source.historyitemguid from #AggSampleData source inner join [clientob].[FactServiceLineRevenue] targt on targt.OBServiceLinePlanID = source.OBServiceLinePlanID and targt.DataTypeID = source.DataTypeID and targt.ModelingServiceLineID = source.ModelingServiceLineID and targt.OBForecastDetailID = source.OBForecastDetailID and targt.PayorGroupID = source.PayorGroupID and targt.PayorID = source.PayorID and targt.UnitTypeID = source.UnitTypeID and targt.TimeClassID = source.TimeClassID and targt.FiscalYearID = source.FiscalYearID where targt.Month01 <> source.Month01 and targt.Month02 <> source.Month02 and targt.Month03 <> source.Month03 and targt.Month04 <> source.Month04 and targt.Month05 <> source.Month05 and targt.Month06 <> source.Month06 and targt.Month07 <> source.Month07 and targt.Month08 <> source.Month08 and targt.Month09 <> source.Month09 and targt.Month10 <> source.Month10 and targt.Month11 <> source.Month11 and targt.Month12 <> source.Month12 if @@error <> 0 begin print 'Transaction Rolled Back' rollback return end end if @isInsertingNew = 1 begin --****************************************************************************************** --****************************************************************************************** print 'Inserting missing rows...' --******************************************************************************************* --******************************************************************************************* insert into [clientob].[FactServiceLineRevenue] ( --BEGIN INSERT TARGET KEY COLUMNS HERE DataTypeID , FiscalYearID , ModelingServiceLineID , PayorID , PayorGroupID , OBForecastDetailID , OBServiceLinePlanID , TimeClassID , UnitTypeID --END INSERT TARGET KEY COLUMNS HERE --BEGIN INSERT TARGET VALUE COLUMNS HERE , Month01 , Month02 , Month03 , Month04 , Month05 , Month06 , Month07 , Month08 , Month09 , Month10 , Month11 , Month12 --END INSERT TARGET VALUE COLUMNS HERE , HistoryItemGUID ) select --BEGIN INSERT TARGET KEY COLUMNS HERE DataTypeID , FiscalYearID , ModelingServiceLineID , PayorID , PayorGroupID , OBForecastDetailID , OBServiceLinePlanID , TimeClassID , UnitTypeID --END INSERT TARGET KEY COLUMNS HERE --BEGIN INSERT TARGET VALUE COLUMNS HERE , Month01 , Month02 , Month03 , Month04 , Month05 , Month06 , Month07 , Month08 , Month09 , Month10 , Month11 , Month12 --END INSERT TARGET VALUE COLUMNS HERE , HistoryItemGUID from #AggSampleData source where not exists ( select 1 from [clientob].[FactServiceLineRevenue] targt where targt.OBServiceLinePlanID = source.OBServiceLinePlanID and targt.DataTypeID = source.DataTypeID and targt.ModelingServiceLineID = source.ModelingServiceLineID and targt.OBForecastDetailID = source.OBForecastDetailID and targt.PayorGroupID = source.PayorGroupID and targt.PayorID = source.PayorID and targt.UnitTypeID = source.UnitTypeID and targt.TimeClassID = source.TimeClassID and targt.FiscalYearID = source.FiscalYearID) if @@error <> 0 begin print 'Transaction Rolled Back' rollback return end end --Drop temp Table drop table TempTable --Delete bad rows? if @@error = 0 begin print 'Transaction Committed' commit end else begin print 'Transaction Rolled Back' rollback end if @isDisablingTriggers = 1 begin set @sql2 = 'ALTER TABLE '+ @targetTableName + ' ENABLE TRIGGER ALL' exec (@sql2) end if @isClearingTempTables = 1 begin --****************************************************************************************** --****************************************************************************************** print 'Clearing temp tables...' --******************************************************************************************* --******************************************************************************************* drop table #SampleData drop table #AggSampleData end if @isViewingTarget = 1 begin select top 100 * from [clientob].[FactServiceLineRevenue] where Month01 <> 0 and Month02 <> 0 and Month03 <> 0 and Month04 <> 0 and Month05 <> 0 and Month06 <> 0 and Month07 <> 0 and Month08 <> 0 and Month09 <> 0 and Month10 <> 0 and Month11 <> 0 and Month12 <> 0 and Yearly<>0 end if @isInvalidatingModelWorkbookCache = 1 begin if (@PlanGUIDlist='00000000-0000-0000-0000-000000000000') begin exec [dbo].[procInvalidateModelWorkbookCacheByPlanType] '957dd809-6299-4ec2-81fc-5452df805e8e', 'OB procSampleFactServiceLineRevenueMonthly' end else begin declare @invalidateWhere nvarchar(max) set @invalidateWhere = 'PlanGUID in(select guid from dbo.ConvertCSGuidsToTable(''' + @PlanGUIDList + ''','',''))' exec [dbo].[procInvalidateModelWorkbookCacheByWhereClause] @invalidateWhere, 0, 'OB procSampleFactServiceLineRevenueMonthly' end end RETURN GO --------------------------------------------- -- ob.procSampleServiceLineGLDeductionsCharityBadDebt /************************************************************ ** Author: blewis ** Create Date: 2015-05-20 ** Description: Samples Charity and Bad Debt Data for SL Reimbursement ** Last Modified: 2015-05-20 ** GM Release: 2015-05-20 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 ** 2 *************************************************************/ CREATE proc [ob].[procSampleServiceLineGLDeductionsCharityBadDebt] as -- Logging ************************************************************************ declare @higuid uniqueidentifier exec procLogScript 'Sampling Charity and Bad Debt into clientob.FactServiceLineAccount' , @higuid output print 'Beginning sample, historyguid: ' + cast(@higuid as varchar(36)) -- Backup ************************************************************************ declare @dbname nvarchar(1000) = (DB_Name()) exec TempTableBackups.dbo.procBackupTable @dbname, 'FactServiceLineAccount', 'clientob' -- Temp table ************************************************************************ select d.OBServiceLinePlanID, 34 as UnitTypeID, f.TimeClassID, 4 as DataTypeID, f.FiscalYearID, f.AccountID, SUM(f.ValueMonth01 * a.Inversion) as Month01, SUM(f.ValueMonth02 * a.Inversion) as Month02, SUM(f.ValueMonth03 * a.Inversion) as Month03, SUM(f.ValueMonth04 * a.Inversion) as Month04, sum(f.ValueMonth05 * a.Inversion) as Month05, SUM(f.ValueMonth06 * a.Inversion) as Month06, SUM(f.ValueMonth07 * a.Inversion) as Month07, SUM(f.ValueMonth08 * a.Inversion) as Month08, SUM(f.ValueMonth09 * a.Inversion) as Month09, SUM(f.ValueMonth10 * a.Inversion) as Month10, sum(f.ValueMonth11 * a.Inversion) as Month11, sum(f.ValueMonth12 * a.Inversion) as Month12, SUM(f.ValueYearly * a.Inversion) as Yearly into #SampleData from [int].[viewFactGLPivoted] f inner join [ob].[DimDepartmentalBudget] db on f.DepartmentID=db.DepartmentID inner join [fw].[DimDepartment] d on d.DepartmentID=db.DepartmentID and OBServiceLinePlanID<>0 inner join [fw].[DimAccount] a on a.AccountID=f.AccountID where f.FiscalYearID>=(select Setting-1 from [dbo].[DBSetting] where Name='OB_Current_Year') and a.PatientClassID IN(Select distinct PatientClassID from [fw].[DimModelingServiceLine] where PatientClassID<>0) and a.OBAccountPHID in ( 4, --Deductions 484, --Deductions - Charity and Bad Debt 481 --Deductions - Reimbursement ) group by d.OBServiceLinePlanID ,f.TimeClassID ,f.FiscalYearID ,f.AccountID -- Remove old data ************************************************************************ delete fct from [clientob].[FactServiceLineAccount] fct inner join [ob].[DimOBServiceLinePlan] pln on fct.OBServiceLinePlanID=pln.OBServiceLinePlanID inner join [data].[ScoreFillin_Account] sf on pln.MemberGUID=sf.ModelGUID where DataTypeID = (select DataTypeID from fw.DimDataType where globalid='Input') and sf.AccountPHID in ( 4, --Deductions 484, --Deductions - Charity and Bad Debt 481 --Deductions - Reimbursement ) -- Aggregating ************************************************************************ declare @monthsLoaded int = clientob.getmonthsloaded() select src.OBServiceLinePlanID, src.UnitTypeID, src.TimeClassID, src.DataTypeID, src.FiscalYearID, src.AccountID, SUM(src.Month01) as Month01, SUM(src.Month02) as Month02, SUM(src.Month03) as Month03, SUM(src.Month04) as Month04, sum(src.Month05) as Month05, SUM(src.Month06) as Month06, SUM(src.Month07) as Month07, SUM(src.Month08) as Month08, SUM(src.Month09) as Month09, SUM(src.Month10) as Month10, sum(src.Month11) as Month11, sum(src.Month12) as Month12, sum(src.Yearly) as Yearly, @monthsLoaded as MonthsLoaded, @higuid as HistoryItemGUID into #AggSampleData from #SampleData src group by src.OBServiceLinePlanID ,src.UnitTypeID ,src.TimeClassID ,src.DataTypeID ,src.FiscalYearID ,src.AccountID -- Update Existing ************************************************************************ update ra set ra.Month01=cons.Month01, ra.Month02=cons.Month02, ra.Month03=cons.Month03, ra.Month04=cons.Month04, ra.Month05=cons.Month05, ra.Month06=cons.Month06, ra.Month07=cons.Month07, ra.Month08=cons.Month08, ra.Month09=cons.Month09, ra.Month10=cons.Month10, ra.Month11=cons.Month11, ra.Month12=cons.Month12, ra.Yearly=cons.Yearly, ra.MonthsLoaded=cons.monthsloaded, ra.historyitemguid=cons.historyitemguid from [clientob].[FactServiceLineAccount] ra inner join #AggSampleData cons ON cons.OBServiceLinePlanID=ra.OBServiceLinePlanID and cons.UnitTypeID=ra.UnitTypeID and cons.TimeClassID=ra.TimeClassID and cons.DataTypeID=ra.DataTypeID and cons.FiscalYearID=ra.FiscalYearID and cons.AccountID=ra.AccountID -- Insert New ************************************************************************ insert into clientob.FactServiceLineAccount( OBServiceLinePlanID, AccountID, FiscalYearID, TimeClassID, UnitTypeID, DataTypeID, Month01, Month02, Month03, Month04, Month05, Month06, Month07, Month08, Month09, Month10, Month11, Month12, Yearly, MonthsLoaded, HistoryItemGUID ) select OBServiceLinePlanID, AccountID, FiscalYearID, TimeClassID, UnitTypeID, DataTypeID, Month01, Month02, Month03, Month04, Month05, Month06, Month07, Month08, Month09, Month10, Month11, Month12, Yearly, MonthsLoaded, HistoryItemGUID from #AggSampleData source where not exists ( select 1 from clientob.FactServiceLineAccount targt where source.OBServiceLinePlanID=targt.OBServiceLinePlanID and source.UnitTypeID=targt.UnitTypeID and source.TimeClassID=targt.TimeClassID and source.DataTypeID=targt.DataTypeID and source.FiscalYearID=targt.FiscalYearID and source.AccountID=targt.AccountID ) ----------------------------------------------------- -------------------disable cache--------------------- ----------------------------------------------------- declare @PlanTypeguid as uniqueidentifier = (select top 1 plantypeguid from PlanType where GlobalID='OB Service Line') exec procInvalidateModelWorkbookCacheByPlanType @PlanTypeguid, 'procSampleServiceLineGLDeductionsCharityBadDebt' -- Clean up drop table #SampleData drop table #AggSampleData GO --------------------------------------------- -- ob.procSendCriticalExceptionNotifications CREATE PROC [ob].[procSendCriticalExceptionNotifications] AS --@recipients_list should be a list of (;) separated e-mail addresses Declare @recipients_list varchar(2000) = (Select Setting from [dbo].[DBSetting] where Name='OBCriticalExceptionNotificationList') --Only send exception notifications when budget is Open DECLARE @IsBudgetOpen BIT = CAST(IIF(EXISTS(SELECT TOP 1 1 FROM [ob].[SystemSetting] WHERE [Name] = 'Budget Status' AND [Value] <> '0'), 1, 0) AS BIT); --Get DB FriendlyName DECLARE @Client varchar(200) = (Select Setting from [dbo].[DBSetting] where Name='FORM_CLIENTNAME') --Get Log In URL DECLARE @LoginURL varchar(200) = (Select Setting from [dbo].[DBSetting] where Name='GENERAL_APPURL') --Get Client Org Pin DECLARE @OrgPIN NVARCHAR(4); DECLARE @DatabaseGUID UNIQUEIDENTIFIER; EXEC dbo.procSMCGetDatabaseGUID @ReturnVal=@DatabaseGUID OUTPUT; DECLARE @SMCServer NVARCHAR(4000) = (SELECT TOP 1 REPLACE(REPLACE(Setting,'[',''),']','') FROM DBSetting WHERE Name='SMC_PRIMARY_SERVER') DECLARE @SMCDatabase NVARCHAR(4000) = (SELECT TOP 1 REPLACE(REPLACE(Setting,'[',''),']','') FROM DBSetting WHERE Name='SMC_PRIMARY_DATABASE') DECLARE @SMCSQL NVARCHAR(4000) = 'SELECT @OrgPIN_OUT=OrgPIN FROM [' + @SMCServer + '].[' + @SMCDatabase + '].[dbo].[viewDatabaseInfo] x WHERE x.DatabaseGUID=''' + CAST(@DatabaseGUID AS NVARCHAR(36)) + '''' EXEC sp_executesql @SMCSQL,N'@OrgPIN_OUT NVARCHAR(4) OUTPUT',@OrgPIN_OUT=@OrgPIN OUTPUT; if @recipients_list = '' begin print 'No recipients provided' return; end if @IsBudgetOpen = 1 begin declare @bodystr varchar(max)=''; declare @dbsubject varchar(300); declare @exception_count int; DECLARE @xml NVARCHAR(MAX); select @exception_count=count(*) from [ob].[FactDepartmentBudgetExceptions] e inner join [ob].[DimOBExceptions] de on e.OBExceptionsID=de.OBExceptionsID where de.Severity like 'Critical%' and Acknowledged=0 and IsDeleted=0; if @exception_count>0 begin set @dbsubject='Alert from '+@@SERVERNAME+'.'+DB_NAME(); --set @bodystr=@bodystr+'# of Critical Exceptions = '+convert(varchar,@exception_count) SET @xml = CAST(( Select Model AS 'td','',Severity AS 'td','', CountA AS 'td' From ( --SCRIPT for Exceptions Counts --Dept select 'Deparment Budget' AS 'Model',de.Severity, count(*) as CountA from [ob].[FactDepartmentBudgetExceptions] be inner join [ob].[DimOBExceptions] de on be.OBExceptionsID=de.OBExceptionsID inner join [ob].[viewDimDepartmentalBudget] db on db.DepartmentalBudgetID=be.DepartmentalBudgetID and db.DepartmentalBudgetID<>0 where be.Acknowledged=0 and IsDeleted=0 Group by de.Severity UNION ALL --Reimb select 'Reimbursement' AS 'Model',de.Severity, count(*) as CountA from [ob].[FactReimbursementExceptions] be inner join [ob].[DimOBExceptions] de on be.OBExceptionsID=de.OBExceptionsID inner join [ob].[viewDimOBReimbursementPlan] db on db.OBReimbursementPlanID=be.OBReimbursementPlanID and db.OBReimbursementPlanID<>0 where be.Acknowledged=0 and IsDeleted=0 Group by de.Severity UNION ALL --Global Stats select 'Global Stats' AS 'Model',de.Severity, count(*) as CountA from [ob].[FactGlobalStatisticExceptions] be inner join [ob].[DimOBExceptions] de on be.OBExceptionsID=de.OBExceptionsID inner join [ob].[viewDimOBGlobalStatisticsPlan] db on db.OBGlobalStatisticsPlanID=be.OBGlobalStatisticsPlanID and db.OBGlobalStatisticsPlanID<>0 where be.Acknowledged=0 and db.IsDeleted=0 Group by de.Severity UNION ALL --Service Line select 'Service Line' AS 'Model',de.Severity, count(*) as CountA from [ob].[FactServiceLineExceptions] be inner join [ob].[DimOBExceptions] de on be.OBExceptionsID=de.OBExceptionsID inner join [ob].[viewDimOBServiceLinePlan] db on db.OBServiceLinePlanID=be.OBServiceLinePlanID and db.OBServiceLinePlanID<>0 where be.Acknowledged=0 and db.IsDeleted=0 Group by de.Severity ) SUB FOR XML PATH('tr'), ELEMENTS ) AS NVARCHAR(MAX)) --Set Client Name, Org Pin, and URL SET @bodystr ='

' + @Client + 'Org Pin:' + @OrgPIN + '

Login to Database

Exception Count by Severity

' SET @bodystr = @bodystr + @xml +'
PlanType Severity Count
' SET @xml = CAST(( --SCRIPT for Critical Data Loss Select Model AS 'td','', FullName AS 'td','', Name AS 'td','', Detail AS 'td' from ( --Dept select 'Deparment Budget' AS Model,de.FullName, db.Name , be.Detail from [ob].[FactDepartmentBudgetExceptions] be inner join [ob].[DimOBExceptions] de on be.OBExceptionsID=de.OBExceptionsID inner join [ob].[viewDimDepartmentalBudget] db on db.DepartmentalBudgetID=be.DepartmentalBudgetID and db.DepartmentalBudgetID<>0 where de.Severity IN('Critical - Data Loss')and be.Acknowledged=0 and IsDeleted=0 UNION ALL --Reimb select 'Reimbursement' AS Model,de.FullName, db.Name , be.Detail from [ob].[FactReimbursementExceptions] be inner join [ob].[DimOBExceptions] de on be.OBExceptionsID=de.OBExceptionsID inner join [ob].[viewDimOBReimbursementPlan] db on db.OBReimbursementPlanID=be.OBReimbursementPlanID and db.OBReimbursementPlanID<>0 where de.Severity IN('Critical - Data Loss')and be.Acknowledged=0 and IsDeleted=0 UNION ALL --Global Stats select 'Global Stats' AS Model,de.FullName, db.Name , be.Detail from [ob].[FactGlobalStatisticExceptions] be inner join [ob].[DimOBExceptions] de on be.OBExceptionsID=de.OBExceptionsID inner join [ob].[viewDimOBGlobalStatisticsPlan] db on db.OBGlobalStatisticsPlanID=be.OBGlobalStatisticsPlanID and db.OBGlobalStatisticsPlanID<>0 where de.Severity IN('Critical - Data Loss')and be.Acknowledged=0 and DB.IsDeleted=0 UNION ALL --Service Line select 'Service Line' AS Model,de.FullName, db.Name , be.Detail from [ob].[FactServiceLineExceptions] be inner join [ob].[DimOBExceptions] de on be.OBExceptionsID=de.OBExceptionsID inner join [ob].[viewDimOBServiceLinePlan] db on db.OBServiceLinePlanID=be.OBServiceLinePlanID and db.OBServiceLinePlanID<>0 where de.Severity IN('Critical - Data Loss')and be.Acknowledged=0 and DB.IsDeleted=0 ) SUB FOR XML PATH('tr'), ELEMENTS ) AS NVARCHAR(MAX)) SET @bodystr = @bodystr + '

Critical - Data Loss

' SET @bodystr = @bodystr + @xml +'
ModelType ExceptionType Department Detail
' EXEC msdb.dbo.sp_send_dbmail @profile_name = 'DatabaseMail', @recipients = @recipients_list, @body = @bodystr, @body_format ='HTML', @subject = @dbsubject; end end GO --------------------------------------------- -- ob.procServiceLineVolumetoReimbursementSample /************************************************************ ** Author: blewis ** Create Date: 2014-08-11 ** Description: Samples Volume from SL model to Reimbursement Model ** Last Modified: 2017-06-06 ** GM Release: 2014.4 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 9/2/2014 BJL Remove the "Output" Filter on Datatype to allow historical Data from SL ** 2 3/6/2015 GJF Skip invalidate for native modeling support ** 3 9/20/2016 GJF B-12949 Add direct call to CDM sample at end, instead of bundling this proc in the custom script ** 4 6/6/2017 SRK D-05890 Moved the proc that updates departmental budget models outside of the IF statement that is used only for Reimbursement ** 5` 10/12/2017 cbb D-06496 added paramter for cdm sampling *************************************************************/ CREATE proc [ob].[procServiceLineVolumetoReimbursementSample] @planGUIDList nvarchar(max)='', @IsCDMSampling bit = 1 as -----------------------------CID 4---------------------------------------- -- Sample CDM, which will trigger a partial refresh if @IsCDMSampling = 1 begin exec [clientob].[procSampleCDMAll] @planGUIDList, 0; end -----------------------------CID 4---------------------------------------- IF((select Max(OBServiceLinePrimaryVolumeAccountID) from [fw].[DimPatientClass]) = 0 ) Begin return End -- Temp plans ******************************************************************** Create Table #Plans(OBServiceLinePlanID int, OBReimbursementPlanID int) if (len(@planGUIDList) = 0) begin -- if no plans provided, we will sample all plans insert into #Plans(OBServiceLinePlanID,OBReimbursementPlanID) select OBServiceLinePlanID, OBReimbursementPlanID from (SELECT DISTINCT MD.OBServiceLinePlanID , MD.OBReimbursementPlanID , SL.MemberGUID FROM [fw].[DimDepartment] MD Inner join [ob].[DimOBServiceLinePlan] SL on md.OBServiceLinePlanID=SL.OBServiceLinePlanID WHERE MD.OBReimbursementPlanID<>0 AND MD.OBServiceLinePlanID<>0) P end else begin insert into #Plans(OBServiceLinePlanID, OBReimbursementPlanID) select plandim.OBServiceLinePlanID , plandim.OBReimbursementPlanID from dbo.ConvertCSGuidsToTable(@planGUIDList, ',') planguids inner join (SELECT DISTINCT MD.OBServiceLinePlanID , MD.OBReimbursementPlanID , SL.MemberGUID FROM [fw].[DimDepartment] MD Inner join [ob].[DimOBServiceLinePlan] SL on md.OBServiceLinePlanID=SL.OBServiceLinePlanID WHERE MD.OBReimbursementPlanID<>0 AND MD.OBServiceLinePlanID<>0) plandim on planguids.guid = plandim.MemberGUID end -- Logging ************************************************************************ declare @higuid uniqueidentifier exec procLogScript 'Sampling into clientob.FactReimbursementAccount' , @higuid output print 'Beginning sample, historyguid: ' + cast(@higuid as varchar(36)) -- Backup ************************************************************************ --declare @dbname nvarchar(1000) = (DB_Name()) --exec TempTableBackups.dbo.procBackupTable @dbname, 'FactReimbursementAccount', 'clientob' -- Temp table ************************************************************************ select src.OBReimbursementPlanID, src.PatientReimbursementGroupID, src.UnitTypeID, src.TimeClassID, src.DataTypeID, src.FiscalYearID, src.AccountID, SUM(src.Month01) as Month01, SUM(src.Month02) as Month02, SUM(src.Month03) as Month03, SUM(src.Month04) as Month04, sum(src.Month05) as Month05, SUM(src.Month06) as Month06, SUM(src.Month07) as Month07, SUM(src.Month08) as Month08, SUM(src.Month09) as Month09, SUM(src.Month10) as Month10, sum(src.Month11) as Month11, sum(src.Month12) as Month12, SUM(src.Yearly) as Yearly into #SampleData from ( SELECT map.[OBReimbursementPlanID] , prg.PatientReimbursementGroupID , fs.[UnitTypeID] , fs.[TimeClassID] , 4 as [DataTypeID] , fs.[FiscalYearID] , pc.[OBServiceLinePrimaryVolumeAccountID] as [AccountID] , [Month01] , [Month02] , [Month03] , [Month04] , [Month05] , [Month06] , [Month07] , [Month08] , [Month09] , [Month10] , [Month11] , [Month12] , [Yearly] FROM [clientob].[FactServiceLine] fs INNER JOIN [fw].[DimModelingServiceLine] ms on fs.ModelingServiceLineID=ms.ModelingServiceLineID INNER JOIN [ob].[DimOBServiceLinePlan] sl ON fs.OBServiceLinePlanID=sl.OBServiceLinePlanID INNER JOIN #Plans map ON sl.OBServiceLinePlanID=map.OBServiceLinePlanID INNER JOIN [ob].[DimOBForecastDetail] fd on fs.OBForecastDetailID=fd.OBForecastDetailID INNER JOIN [fw].[DimPatientReimbursementGroup] prg on ms.PatientClassID=prg.PatientClassID and CareSettingID=0 Inner Join [fw].[DimPatientClass] pc on prg.PatientClassID=pc.PatientClassID Where --==== BEGIN CID 1 ==== --DataTypeID=3 and --==== END CID 1 ==== prg.PatientReimbursementGroupID<>0 and pc.OBServiceLinePrimaryVolumeAccountID<>0 and fd.Name='Volume' ) src group by src.OBReimbursementPlanID,src.PatientReimbursementGroupID,src.UnitTypeID, src.TimeClassID,src.DataTypeID,src.FiscalYearID,src.AccountID -- Remove old data ************************************************************************ delete fct from [clientob].[FactReimbursementAccount] fct where fct.RowID IN( Select RowID from [clientob].[FactReimbursementAccount] fa inner join #SampleData sd on fa.AccountID=sd.AccountID and fa.PatientReimbursementGroupID=sd.PatientReimbursementGroupID) -- Aggregating ************************************************************************ declare @monthsLoaded int = clientob.getmonthsloaded() select src.OBReimbursementPlanID, src.PatientReimbursementGroupID, src.UnitTypeID, src.TimeClassID, src.DataTypeID, src.FiscalYearID, src.AccountID, SUM(src.Month01) as Month01, SUM(src.Month02) as Month02, SUM(src.Month03) as Month03, SUM(src.Month04) as Month04, sum(src.Month05) as Month05, SUM(src.Month06) as Month06, SUM(src.Month07) as Month07, SUM(src.Month08) as Month08, SUM(src.Month09) as Month09, SUM(src.Month10) as Month10, sum(src.Month11) as Month11, sum(src.Month12) as Month12, sum(src.Yearly) as Yearly, @monthsLoaded as MonthsLoaded, @higuid as HistoryItemGUID into #AggSampleData from #SampleData src group by src.OBReimbursementPlanID,src.PatientReimbursementGroupID,src.UnitTypeID, src.TimeClassID,src.DataTypeID,src.FiscalYearID,src.AccountID -- Insert New ************************************************************************ insert into clientob.FactReimbursementAccount( OBReimbursementPlanID, AccountID, FiscalYearID, PatientReimbursementGroupID, TimeClassID, UnitTypeID, DataTypeID, Month01, Month02, Month03, Month04, Month05, Month06, Month07, Month08, Month09, Month10, Month11, Month12, Yearly, MonthsLoaded, HistoryItemGUID ) select OBReimbursementPlanID, AccountID, FiscalYearID, PatientReimbursementGroupID, TimeClassID, UnitTypeID, DataTypeID, Month01, Month02, Month03, Month04, Month05, Month06, Month07, Month08, Month09, Month10, Month11, Month12, Yearly, MonthsLoaded, HistoryItemGUID from #AggSampleData source where not exists ( select 1 from clientob.FactReimbursementAccount targt where source.OBReimbursementPlanID=targt.OBReimbursementPlanID and source.PatientReimbursementGroupID=targt.PatientReimbursementGroupID and source.UnitTypeID=targt.UnitTypeID and source.TimeClassID=targt.TimeClassID and source.DataTypeID=targt.DataTypeID and source.FiscalYearID=targt.FiscalYearID and source.AccountID=targt.AccountID ) -- Clean up drop table #SampleData drop table #AggSampleData Drop table #Plans GO --------------------------------------------- -- ob.procTERefreshFillins_DepartmentalBudgetAll create proc ob.procTERefreshFillins_DepartmentalBudgetAll @isDeleting bit = 0 as if (@isDeleting = 1) begin --delete existing fillins declare @deleteWhere nvarchar(max) select @deleteWhere = 'ModelGUID in(select x.PlanGUID from dbo.XPlan x where x.PlanTypeGUID = ''' + cast(PlanTypeGUID as nvarchar(36)) + ''' and x.IsDeletedPlan = 0)' from [dbo].[PlanType] where GlobalID = 'OB Departmental Budget' declare @deleteCount int select @deleteCount = count(*) from [dbo].[ScoreFillin] where ModelGUID in(select x.PlanGUID from dbo.XPlan x inner join dbo.PlanType pt on pt.PlanTypeGUID = x.PlanTypeGUID where pt.GlobalID = 'OB Departmental Budget' and x.IsDeletedPlan = 0) print 'Deleting...' exec [dbo].[procRollingDeleteOnTable] 'dbo', 'ScoreFillin', 'RowID', '[dbo].[ScoreFillin]', @deleteWhere, @deleteCount, 1, 0 exec [dbo].[procScoreFillinTableRebuildAll] print 'Delete complete.' end --chunk refresh by plan declare @planguid uniqueidentifier select top 1 @planguid = x.PlanGUID from dbo.XPlan x inner join dbo.PlanType pt on pt.PlanTypeGUID = x.PlanTypeGUID where pt.GlobalID = 'OB Departmental Budget' and x.IsDeletedPlan = 0 insert into [dbo].[FillinRefreshRequest] (PlanGUID) select x.PlanGUID from dbo.XPlan x inner join dbo.PlanType pt on pt.PlanTypeGUID = x.PlanTypeGUID where pt.GlobalID = 'OB Departmental Budget' and x.IsDeletedPlan = 0 and x.PlanGUID != @planguid exec [dbo].[procTERefreshFillinsByPlan] @planguid, '', 0 print 'Task created.' GO --------------------------------------------- -- ob.procUpdateMonthsLoaded CREATE proc ob.procUpdateMonthsLoaded as /************************************************************ ** Author: akowalski ** Create Date: 2014-04-10 ** Description: Updates months data loaded on all dimensions and composite tables ** Last Modified: 2015-02-05 ** GM Release: 2014.3 ************************************************************** ** Change History ************************************************************** ** CID Date Author WI Description ** 1 2015-02-05 akozlovskyi Excluded updating of deleted table DimOBAllocationsPlan ** *************************************************************/ Declare @monthsloaded varchar(2) = cast(clientob.GetMonthsLoaded() as varchar(2)) -- Update plan dimensions update [ob].[DimDepartmentalBudget] set MonthsLoaded=@monthsloaded update [ob].[DimOBGlobalStatisticsPlan] set MonthsLoaded=@monthsloaded update [ob].[DimOBReimbursementPlan] set MonthsLoaded=@monthsloaded update [ob].[DimOBServiceLinePlan] set MonthsLoaded=@monthsloaded -- Update composites SET NOCOUNT ON; DECLARE @SCHEMA nvarchar(256) DECLARE @FactTableName nvarchar(256) DECLARE @SQL nvarchar(1024) DECLARE FactTableCursor CURSOR FOR select t.name, (select name from sys.schemas where schema_id = t.schema_id) from sys.tables t where t.schema_id in(select schema_id from sys.schemas where name in('ob', 'clientob')) and (t.name like 'fact%' and t.name not like '%map') order by t.name open FactTableCursor FETCH NEXT FROM FactTableCursor INTO @FactTableName, @SCHEMA WHILE @@FETCH_STATUS = 0 BEGIN if (dbo.ColumnExists(@SCHEMA,@FactTableName,'MonthsLoaded')=1) begin set @SQL = 'update ' + @SCHEMA + '.' + @FactTableName + ' set MonthsLoaded=' + @monthsloaded --print @SQL EXECUTE sp_executesql @SQL end FETCH NEXT FROM FactTableCursor INTO @FactTableName, @SCHEMA END CLOSE FactTableCursor DEALLOCATE FactTableCursor RETURN GO --------------------------------------------- -- ob.procUpdateOBSectionPermissions CREATE PROCEDURE [ob].[procUpdateOBSectionPermissions] AS BEGIN DECLARE @isBudgetOpen BIT = CAST(IIF(EXISTS(SELECT TOP 1 1 FROM [ob].[SystemSetting] WHERE [Name] = 'Budget Status' AND [Value] <> '0'), 1, 0) AS BIT); DECLARE @obModuleGUID UNIQUEIDENTIFIER = '65770F68-4223-43FE-970A-D7F8D8D3931D'; DECLARE @rosterBudgetingCategoryGUID UNIQUEIDENTIFIER = 'DD9DE9F8-01AF-41BE-9144-4CAD060B6E64'; DECLARE @budgetConfigurationCategoryGUID UNIQUEIDENTIFIER = '8EF0D151-FCD6-4D0F-925A-94548AF39102'; DECLARE @featuresCategoryGUID UNIQUEIDENTIFIER = '4F18E245-FB8A-4390-AC5B-B6829543A66B'; DECLARE @obLocalAdminGroupGUID UNIQUEIDENTIFIER = 'F515898A-9D76-4E68-896B-22AF1AA4CB72'; DECLARE @systemCenterMenuItemGUID UNIQUEIDENTIFIER = 'D8C2EEB8-9039-4EC6-81B9-77ABA1F87E01'; DECLARE @systemGeneratedStatisticsGuid UNIQUEIDENTIFIER = 'F1161287-169C-41BD-B548-0A7A6414D24D'; -- Hide all ob sections except 'BeginBudgetPreparation', 'CloseBudget' and categories 'Budget Configurations', 'Roster Budgeting', 'Features' UPDATE permission SET ReadValue = @isBudgetOpen, WriteValue = @isBudgetOpen FROM [dbo].[S3SimplePermission] permission INNER JOIN [dbo].[SystemCenterSection] section ON section.SectionGUID = permission.LootID INNER JOIN [dbo].[SystemCenterCategory] category ON category.CategoryGUID = section.CategoryGUID WHERE category.ModuleGUID = @obModuleGUID AND category.IsMaintenanceMode = 1 AND section.GlobalID NOT IN ('BeginBudgetPreparation', 'CloseBudget') AND category.CategoryGUID NOT IN (@rosterBudgetingCategoryGUID, @budgetConfigurationCategoryGUID, @featuresCategoryGUID) --verify and update access for menu item system center button for users from OB Local Admin Group IF EXISTS(SELECT * FROM S3SimplePermission WHERE LootID = @systemCenterMenuItemGUID AND IdentityGUID = @obLocalAdminGroupGUID) BEGIN IF EXISTS(SELECT * FROM S3SimplePermission WHERE LootID IN (@systemGeneratedStatisticsGuid) and IdentityGUID = @obLocalAdminGroupGUID) UPDATE [dbo].[S3SimplePermission] SET ReadValue = 1, WriteValue = 1 WHERE LootID = @systemCenterMenuItemGUID AND IdentityGUID = @obLocalAdminGroupGUID ELSE -- Hide menu item system center button if OB Local Admin didn't have access for 'Role Assignments' or 'System Generated Statistics' sections UPDATE [dbo].[S3SimplePermission] SET ReadValue = @isBudgetOpen, WriteValue = @isBudgetOpen WHERE LootID = @systemCenterMenuItemGUID AND IdentityGUID = @obLocalAdminGroupGUID END END GO --------------------------------------------- --------------------------------------------- -- FUNCTIONS ---------------------------------------------