Provance.ITAssetManagement.Report.AssignedSoftwareTitles.ReportRdl (ReportResource)

Element properties:

TypeReportResource
File NameProvance.ITAssetManagement.Report.AssignedSoftwareTitles.rdl
AccessibilityPublic

Source Code:

<ReportResource ID="Provance.ITAssetManagement.Report.AssignedSoftwareTitles.ReportRdl" Accessibility="Public" FileName="Provance.ITAssetManagement.Report.AssignedSoftwareTitles.rdl" HasNullStream="false" MIMEType="application/octet-stream"/>

File Content: Provance.ITAssetManagement.Report.AssignedSoftwareTitles.rdl

<?xml version="1.0" encoding="utf-8"?>

<Report xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner" xmlns="http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition">
<DataSources>
<DataSource Name="DWDataMart">
<DataSourceReference>DWDataMart</DataSourceReference>
<rd:DataSourceID>9671bad6-9c4c-452a-8464-24e286f5be25</rd:DataSourceID>
<rd:SecurityType>None</rd:SecurityType>
</DataSource>
</DataSources>
<DataSets>
<DataSet Name="LT_Report">
<Fields>
<Field Name="XML_F52E2B61_18A1_11d1_B105_00805F49916B">
<DataField>XML_F52E2B61-18A1-11d1-B105-00805F49916B</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
</Fields>
<Query>
<DataSourceName>DWDataMart</DataSourceName>
<CommandType>StoredProcedure</CommandType>
<CommandText>ReportDisplayStringGet</CommandText>
<QueryParameters>
<QueryParameter Name="@ManagementPackSystemName">
<Value>Provance.ServiceManager.Itam.Software.Reports</Value>
</QueryParameter>
<QueryParameter Name="@ReportSystemName">
<Value>Provance.ITAssetManagement.Report.AssignedSoftwareTitles</Value>
</QueryParameter>
<QueryParameter Name="@LanguageCode">
<Value>=Code.GetReportLocLanguageCode()</Value>
</QueryParameter>
<QueryParameter Name="@Scope">
<Value>%</Value>
</QueryParameter>
</QueryParameters>
<rd:UseGenericDesigner>true</rd:UseGenericDesigner>
</Query>
</DataSet>
<DataSet Name="SoftwareAdminSettings">
<Fields>
<Field Name="LicenceComplianceExceededPercentage">
<DataField>LicenceComplianceExceededPercentage</DataField>
<rd:TypeName>System.Int32</rd:TypeName>
</Field>
<Field Name="LicenseComplianceCloseToExceededPercentage">
<DataField>LicenseComplianceCloseToExceededPercentage</DataField>
<rd:TypeName>System.Int32</rd:TypeName>
</Field>
<Field Name="LicenseComplianceUnderUsedPercentage">
<DataField>LicenseComplianceUnderUsedPercentage</DataField>
<rd:TypeName>System.Int32</rd:TypeName>
</Field>
</Fields>
<Query>
<DataSourceName>DWDataMart</DataSourceName>
<CommandText>SELECT DISTINCT TOP 1 LicenceComplianceExceededPercentage, LicenseComplianceCloseToExceededPercentage, LicenseComplianceUnderUsedPercentage
FROM SoftwareAdminSettingsDim
WHERE IsDeleted = 0
--AND SourceId = @SourceId
</CommandText>
<rd:UseGenericDesigner>true</rd:UseGenericDesigner>
</Query>
</DataSet>
<DataSet Name="PublisherParameterDisplayName">
<Fields>
<Field Name="DisplayName">
<DataField>DisplayName</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
</Fields>
<Query>
<DataSourceName>DWDataMart</DataSourceName>
<CommandText>SELECT A.DisplayName
FROM CompanyDimvw A
WHERE A.CompanyDimKey = @Publisher
AND A.IsDeleted = 0
</CommandText>
<QueryParameters>
<QueryParameter Name="@Publisher">
<Value>=Parameters!PublisherId.Value</Value>
</QueryParameter>
</QueryParameters>
<rd:UseGenericDesigner>true</rd:UseGenericDesigner>
</Query>
</DataSet>
<DataSet Name="SoftwareTitleParameterDisplayName">
<Fields>
<Field Name="DisplayName">
<DataField>DisplayName</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
</Fields>
<Query>
<DataSourceName>DWDataMart</DataSourceName>
<CommandText>select A.DisplayName
FROM SoftwareTitleDimvw A
WHERE A.SoftwareTitleDimKey = @SoftwareTitle
AND A.IsDeleted = 0
</CommandText>
<QueryParameters>
<QueryParameter Name="@SoftwareTitle">
<Value>=Parameters!SoftwareTitleId.Value</Value>
</QueryParameter>
<QueryParameter Name="@ObjectStatusPendingDelete">
<Value>System.ConfigItem.ObjectStatusEnum.PendingDelete</Value>
</QueryParameter>
</QueryParameters>
<rd:UseGenericDesigner>true</rd:UseGenericDesigner>
</Query>
</DataSet>
<DataSet Name="HardwareAssetParameterDisplayName">
<Fields>
<Field Name="DisplayName">
<DataField>DisplayName</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
</Fields>
<Query>
<DataSourceName>DWDataMart</DataSourceName>
<CommandText>SELECT A.DisplayName
FROM HardwareAssetDimvw A
WHERE A.HardwareAssetDimKey = @HardwareAsset
AND A.IsDeleted = 0
</CommandText>
<QueryParameters>
<QueryParameter Name="@HardwareAsset">
<Value>=Parameters!HardwareAssetId.Value</Value>
</QueryParameter>
</QueryParameters>
<rd:UseGenericDesigner>true</rd:UseGenericDesigner>
</Query>
</DataSet>
<DataSet Name="UserParameterDisplayName">
<Fields>
<Field Name="DisplayName">
<DataField>DisplayName</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
</Fields>
<Query>
<DataSourceName>DWDataMart</DataSourceName>
<CommandText>SELECT A.DisplayName
FROM UserDimvw A
WHERE A.UserDimKey = @User
AND A.IsDeleted = 0
</CommandText>
<QueryParameters>
<QueryParameter Name="@User">
<Value>=Parameters!UserId.Value</Value>
</QueryParameter>
</QueryParameters>
<rd:UseGenericDesigner>true</rd:UseGenericDesigner>
</Query>
</DataSet>
<DataSet Name="SoftwareTitleUsage">
<Fields>
<Field Name="AssetAssigned">
<DataField>AssetAssigned</DataField>
<rd:TypeName>System.Int32</rd:TypeName>
</Field>
<Field Name="SoftwareTitleId">
<DataField>SoftwareTitleId</DataField>
<rd:TypeName>System.Int32</rd:TypeName>
</Field>
<Field Name="AssignmentSet">
<DataField>AssignmentSet</DataField>
<rd:TypeName>System.Int32</rd:TypeName>
</Field>
<Field Name="LicensedQuantity">
<DataField>LicensedQuantity</DataField>
<rd:TypeName>System.Int32</rd:TypeName>
</Field>
<Field Name="TotalAssigned">
<DataField>TotalAssigned</DataField>
<rd:TypeName>System.Int32</rd:TypeName>
</Field>
<Field Name="HardwareAsset">
<DataField>HardwareAsset</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="TotalInstalled">
<DataField>TotalInstalled</DataField>
<rd:TypeName>System.Int32</rd:TypeName>
</Field>
<Field Name="UserAssigned">
<DataField>UserAssigned</DataField>
<rd:TypeName>System.Int32</rd:TypeName>
</Field>
<Field Name="UserId">
<DataField>UserId</DataField>
<rd:TypeName>System.Int32</rd:TypeName>
</Field>
<Field Name="UserName">
<DataField>UserName</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="VersionInstalledCount">
<DataField>VersionInstalledCount</DataField>
<rd:TypeName>System.Int32</rd:TypeName>
</Field>
<Field Name="SoftwareTitle">
<DataField>SoftwareTitle</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="AllocationQuantity">
<DataField>AllocationQuantity</DataField>
<rd:TypeName>System.Int32</rd:TypeName>
</Field>
<Field Name="HardwareAssetId">
<DataField>HardwareAssetId</DataField>
<rd:TypeName>System.Int32</rd:TypeName>
</Field>
<Field Name="AssignmentState">
<Value>=Code.CalculateRollupAllocationStatus(Fields!MinPercentage.Value, Fields!MaxPercentage.Value, Parameters!ExceededPercentage.Value, Parameters!ClosePercentage.Value, Parameters!UnderPercentage.Value)</Value>
</Field>
<Field Name="MaxPercentage">
<DataField>MaxPercentage</DataField>
<rd:TypeName>System.Int32</rd:TypeName>
</Field>
<Field Name="PublisherId">
<DataField>PublisherId</DataField>
<rd:TypeName>System.Int32</rd:TypeName>
</Field>
<Field Name="MinPercentage">
<DataField>MinPercentage</DataField>
<rd:TypeName>System.Int32</rd:TypeName>
</Field>
</Fields>
<Query>
<DataSourceName>DWDataMart</DataSourceName>
<CommandText>create table #temp
(
SoftwareTitleId int,
SoftwareTitle varchar(256),
TotalAssigned int,
TotalInstalled int,
AssetAssigned int,
UserAssigned int,
HardwareAsset varchar(256),
UserName varchar(256),
UserId int,
VersionInstalledCount int,
LicensedQuantity int,
AllocationQuantity int,
AssignmentSet int,
HardwareAssetId int,
PublisherId int,
MaxPercentage int,
MinPercentage int
)

INSERT INTO #temp(AssetAssigned,AssignmentSet,HardwareAsset,HardwareAssetId,UserAssigned,UserName,UserId,
VersionInstalledCount,SoftwareTitle,LicensedQuantity,SoftwareTitleId,AllocationQuantity,PublisherId)

SELECT DISTINCT U.AssetAssigned, U.AssignmentSet, U.HardwareAsset, U.HardwareAssetDimKey, U.UserAssigned,
U.UserName, U.UserId, U.VersionInstalledCount, U.SoftwareTitle, U.LicensedQuantity,
U.SoftwareTitleDimKey, X.AllocationQuantity, U.PublisherId
FROM (
SELECT A.SoftwareAssignmentSetDimKey AS AssignmentSet, B.Quantity AS UserAssigned, E.DisplayName AS UserName, E.UserDimKey AS UserId,
F.DisplayName AS HardwareAsset, G.Quantity AS AssetAssigned, F.HardwareAssetDimKey,
SUM(K.InstalledCount) AS VersionInstalledCount, AC.DisplayName AS SoftwareTitle, AC.TotalLicenseQuantity as LicensedQuantity, AC.SoftwareTitleDimKey,
L.CompanyDimKey AS PublisherId
FROM SoftwareAssignmentSetAssignmentFactvw A
INNER JOIN SoftwareAssignmentSetDimvw AA ON A.SoftwareAssignmentSetDimKey = AA.SoftwareAssignmentSetDimKey
AND AA.IsDeleted = 0
AND (AA.ObjectStatus IS NULL OR AA.ObjectStatus &lt;&gt; @ObjectStatusPendingDelete)
INNER JOIN SoftwareTitleAssignmentSetFactvw AB ON AA.SoftwareAssignmentSetDimKey = AB.SoftwareTitleHasAssignmentSet_SoftwareAssignmentSetDimKey
AND AB.DeletedDate IS NULL
INNER JOIN SoftwareTitleDimvw AC ON AB.SoftwareTitleDimKey = AC.SoftwareTitleDimKey
AND AC.IsDeleted = 0
AND (AC.ObjectStatus IS NULL OR AC.ObjectStatus &lt;&gt; @ObjectStatusPendingDelete)
INNER JOIN SoftwareAssignmentDimvw B ON A.AssignmentSetContainsAssignment_SoftwareAssignmentDimKey = B.SoftwareAssignmentDimKey
AND B.IsDeleted = 0
AND (B.ObjectStatus IS NULL OR B.ObjectStatus &lt;&gt; @ObjectStatusPendingDelete)
INNER JOIN SoftwareAssignmentConfigItemTargetFactvw C ON B.SoftwareAssignmentDimKey = C.SoftwareAssignmentDimKey
AND C.DeletedDate IS NULL
INNER JOIN ConfigItemDimvw D ON C.AssignmentIsForTarget_ConfigItemDimKey = D.ConfigItemDimKey
AND D.IsDeleted = 0
AND (D.ObjectStatus IS NULL OR D.ObjectStatus &lt;&gt; @ObjectStatusPendingDelete)
INNER JOIN UserDimvw E ON D.EntityDimKey = E.EntityDimKey
AND D.IsDeleted = 0
AND (D.ObjectStatus IS NULL OR D.ObjectStatus &lt;&gt; @ObjectStatusPendingDelete)
LEFT OUTER JOIN SystemUserDimvw EA ON E.EntityDimKey = EA.EntityDimKey
LEFT OUTER JOIN (SELECT HAO.HardwareAssetOwnedBySystemUser_SystemUserDimKey AS SystemUserDimKey,
HAO.HardwareAssetDimKey, HA.DisplayName, HA.EntityDimKey
FROM HardwareAssetOwnerFactvw HAO
INNER JOIN HardwareAssetDimvw HA ON HAO.HardwareAssetDimKey = HA.HardwareAssetDimKey
AND HA.IsDeleted = 0
AND (HA.ObjectStatus IS NULL OR HA.ObjectStatus &lt;&gt; @ObjectStatusPendingDelete)
AND HA.LifecycleStatus NOT IN (@LifecycleDisposed, @LifecycleReturned)
WHERE HAO.DeletedDate IS NULL ) F ON EA.SystemUserDimKey = F.SystemUserDimKey
LEFT OUTER JOIN ConfigItemDimvw FA ON F.EntityDimKey = FA.EntityDimKey
AND FA.IsDeleted = 0
AND (FA.ObjectStatus IS NULL OR FA.ObjectStatus &lt;&gt; @ObjectStatusPendingDelete)
LEFT OUTER JOIN (SELECT SAC.AssignmentIsForTarget_ConfigItemDimKey, SASA.SoftwareAssignmentSetDimKey,
SA.Quantity
FROM SoftwareAssignmentConfigItemTargetFactvw SAC
INNER JOIN SoftwareAssignmentDimvw SA ON SAC.SoftwareAssignmentDimKey = SA.SoftwareAssignmentDimKey
AND SA.IsDeleted = 0
AND (SA.ObjectStatus IS NULL OR SA.ObjectStatus &lt;&gt; @ObjectStatusPendingDelete)
INNER JOIN SoftwareAssignmentSetAssignmentFactvw SASA ON SA.SoftwareAssignmentDimKey = SASA.AssignmentSetContainsAssignment_SoftwareAssignmentDimKey
AND SASA.DeletedDate IS NULL
WHERE SAC.DeletedDate IS NULL ) G ON FA.ConfigItemDimKey = G.AssignmentIsForTarget_ConfigItemDimKey
AND A.SoftwareAssignmentSetDimKey = G.SoftwareAssignmentSetDimKey
LEFT OUTER JOIN HardwareAssetComputerFactvw I ON F.HardwareAssetDimKey = I.HardwareAssetDimKey
AND I.DeletedDate IS NULL
LEFT OUTER JOIN ComputerDimvw J ON I.HardwareAssetReferencesConfigItem_ComputerDimKey = J.ComputerDimKey
AND J.IsDeleted = 0
AND (J.ObjectStatus IS NULL OR J.ObjectStatus &lt;&gt; @ObjectStatusPendingDelete)
LEFT OUTER JOIN (SELECT DISI.ComputerDimKey, SV.DisplayName, STV.SoftwareTitleDimKey, COUNT(SV.SoftwareVersionDimKey) AS InstalledCount
FROM SoftwareTitleVersionFactvw STV
INNER JOIN SoftwareVersionDimvw SV ON STV.SoftwareTitleHasSoftwareVersion_SoftwareVersionDimKey = SV.SoftwareVersionDimKey
AND SV.IsDeleted = 0
AND (SV.ObjectStatus IS NULL OR SV.ObjectStatus &lt;&gt; @ObjectStatusPendingDelete)
INNER JOIN VersionDiscoveredItemFactvw SVDI ON SV.SoftwareVersionDimKey = SVDI.SoftwareVersionDimKey
AND SVDI.DeletedDate IS NULL
INNER JOIN SoftwareItemDimvw SI ON SVDI.SoftwareVersionReferencesDiscoveredSoftwareItem_SoftwareItemDimKey = SI.SoftwareItemDimKey
AND SI.IsDeleted = 0
AND (SI.ObjectStatus IS NULL OR SI.ObjectStatus &lt;&gt; @ObjectStatusPendingDelete)
INNER JOIN DeviceInstalledSoftwareItemFactvw DISI ON SI.SoftwareItemDimKey = DISI.DeviceHasSoftwareItemInstalled_SoftwareItemDimKey
AND DISI.DeletedDate IS NULL
WHERE STV.DeletedDate IS NULL
GROUP BY DISI.ComputerDimKey, SV.DisplayName, STV.SoftwareTitleDimKey
) K ON AB.SoftwareTitleDimKey = K.SoftwareTitleDimKey
AND J.ComputerDimKey = K.ComputerDimKey
LEFT OUTER JOIN PublisherSoftwareTitleFactvw L ON AC.SoftwareTitleDimKey = L.PublisherHasSoftwareTitle_SoftwareTitleDimKey
AND L.DeletedDate IS NULL
GROUP BY A.SoftwareAssignmentSetDimKey, B.Quantity, E.DisplayName, E.UserDimKey,
F.DisplayName, G.Quantity, F.HardwareAssetDimKey,
AC.DisplayName, AC.AvailableQuantity, AC.SoftwareTitleDimKey,
L.CompanyDimKey, AC.TotalLicenseQuantity

UNION


SELECT A.SoftwareAssignmentSetDimKey AS AssignmentSet, G.Quantity AS UserAssigned,F.DisplayName AS UserName,F.UserId AS UserId,
E.DisplayName AS HardwareAsset, B.Quantity AS AssetAssigned, E.HardwareAssetDimKey,
SUM(K.InstalledCount) AS VersionInstalledCount, AC.DisplayName AS SoftwareTitle, AC.TotalLicenseQuantity as LicensedQuantity, AC.SoftwareTitleDimKey,
L.CompanyDimKey AS PublisherId
FROM SoftwareAssignmentSetAssignmentFactvw A
INNER JOIN SoftwareAssignmentSetDimvw AA ON A.SoftwareAssignmentSetDimKey = AA.SoftwareAssignmentSetDimKey
AND AA.IsDeleted = 0
AND (AA.ObjectStatus IS NULL OR AA.ObjectStatus &lt;&gt; @ObjectStatusPendingDelete)
INNER JOIN SoftwareTitleAssignmentSetFactvw AB ON AA.SoftwareAssignmentSetDimKey = AB.SoftwareTitleHasAssignmentSet_SoftwareAssignmentSetDimKey
AND AB.DeletedDate IS NULL
INNER JOIN SoftwareTitleDimvw AC ON AB.SoftwareTitleDimKey = AC.SoftwareTitleDimKey
AND AC.IsDeleted = 0
AND (AC.ObjectStatus IS NULL OR AC.ObjectStatus &lt;&gt; @ObjectStatusPendingDelete)
INNER JOIN SoftwareAssignmentDimvw B ON A.AssignmentSetContainsAssignment_SoftwareAssignmentDimKey = B.SoftwareAssignmentDimKey
AND B.IsDeleted = 0
AND (B.ObjectStatus IS NULL OR B.ObjectStatus &lt;&gt; @ObjectStatusPendingDelete)
INNER JOIN SoftwareAssignmentConfigItemTargetFactvw C ON B.SoftwareAssignmentDimKey = C.SoftwareAssignmentDimKey
AND C.DeletedDate IS NULL
INNER JOIN ConfigItemDimvw D ON C.AssignmentIsForTarget_ConfigItemDimKey = D.ConfigItemDimKey
INNER JOIN HardwareAssetDimvw E ON D.EntityDimKey = E.EntityDimKey
AND E.IsDeleted = 0
AND (E.ObjectStatus IS NULL OR E.ObjectStatus &lt;&gt; @ObjectStatusPendingDelete)
AND E.LifecycleStatus NOT IN (@LifecycleDisposed, @LifecycleReturned)
LEFT OUTER JOIN (SELECT HAO.HardwareAssetOwnedBySystemUser_SystemUserDimKey AS SystemUserDimKey,
HAO.HardwareAssetDimKey, SU.DisplayName, SU.EntityDimKey, U.UserDimKey AS UserId
FROM HardwareAssetOwnerFactvw HAO
INNER JOIN SystemUserDim SU ON HAO.HardwareAssetOwnedBySystemUser_SystemUserDimKey = SU.SystemUserDimKey
AND SU.IsDeleted=0
AND (SU.ObjectStatus IS NULL OR SU.ObjectStatus &lt;&gt; @ObjectStatusPendingDelete)
INNER JOIN UserDim U ON SU.EntityDimKey = U.EntityDimKey
WHERE HAO.DeletedDate IS NULL) F ON E.HardwareAssetDimKey = F.HardwareAssetDimKey
LEFT OUTER JOIN ConfigItemDimvw FA ON F.EntityDimKey = FA.EntityDimKey
AND FA.IsDeleted = 0
AND (FA.ObjectStatus IS NULL OR FA.ObjectStatus &lt;&gt; @ObjectStatusPendingDelete)
LEFT OUTER JOIN (SELECT SAC.AssignmentIsForTarget_ConfigItemDimKey, SASA.SoftwareAssignmentSetDimKey,
SA.Quantity
FROM SoftwareAssignmentConfigItemTargetFactvw SAC
INNER JOIN SoftwareAssignmentDimvw SA ON SAC.SoftwareAssignmentDimKey = SA.SoftwareAssignmentDimKey
AND SA.IsDeleted = 0
AND (SA.ObjectStatus IS NULL OR SA.ObjectStatus &lt;&gt; @ObjectStatusPendingDelete)
INNER JOIN SoftwareAssignmentSetAssignmentFactvw SASA ON SA.SoftwareAssignmentDimKey = SASA.AssignmentSetContainsAssignment_SoftwareAssignmentDimKey
AND SASA.DeletedDate IS NULL
WHERE SAC.DeletedDate IS NULL ) G ON FA.ConfigItemDimKey = G.AssignmentIsForTarget_ConfigItemDimKey
AND A.SoftwareAssignmentSetDimKey = G.SoftwareAssignmentSetDimKey
LEFT OUTER JOIN HardwareAssetComputerFactvw I ON E.HardwareAssetDimKey = I.HardwareAssetDimKey
AND I.DeletedDate IS NULL
LEFT OUTER JOIN ComputerDimvw J ON I.HardwareAssetReferencesConfigItem_ComputerDimKey = J.ComputerDimKey
AND J.IsDeleted = 0
AND (J.ObjectStatus IS NULL OR J.ObjectStatus &lt;&gt; @ObjectStatusPendingDelete)
LEFT OUTER JOIN (SELECT DISI.ComputerDimKey, SV.DisplayName, STV.SoftwareTitleDimKey, COUNT(SV.SoftwareVersionDimKey) AS InstalledCount
FROM SoftwareTitleVersionFactvw STV
INNER JOIN SoftwareVersionDimvw SV ON STV.SoftwareTitleHasSoftwareVersion_SoftwareVersionDimKey = SV.SoftwareVersionDimKey
AND SV.IsDeleted = 0
AND (SV.ObjectStatus IS NULL OR SV.ObjectStatus &lt;&gt; @ObjectStatusPendingDelete)
INNER JOIN VersionDiscoveredItemFactvw SVDI ON SV.SoftwareVersionDimKey = SVDI.SoftwareVersionDimKey
AND SVDI.DeletedDate IS NULL
INNER JOIN SoftwareItemDimvw SI ON SVDI.SoftwareVersionReferencesDiscoveredSoftwareItem_SoftwareItemDimKey = SI.SoftwareItemDimKey
AND SI.IsDeleted = 0
AND (SI.ObjectStatus IS NULL OR SI.ObjectStatus &lt;&gt; @ObjectStatusPendingDelete)
INNER JOIN DeviceInstalledSoftwareItemFactvw DISI ON SI.SoftwareItemDimKey = DISI.DeviceHasSoftwareItemInstalled_SoftwareItemDimKey
AND DISI.DeletedDate IS NULL
WHERE STV.DeletedDate IS NULL
GROUP BY DISI.ComputerDimKey, SV.DisplayName, STV.SoftwareTitleDimKey
) K ON AB.SoftwareTitleDimKey = K.SoftwareTitleDimKey
AND J.ComputerDimKey = K.ComputerDimKey
LEFT OUTER JOIN PublisherSoftwareTitleFactvw L ON AC.SoftwareTitleDimKey = L.PublisherHasSoftwareTitle_SoftwareTitleDimKey
AND L.DeletedDate IS NULL
GROUP BY A.SoftwareAssignmentSetDimKey, G.Quantity,F.DisplayName,F.UserId,
E.DisplayName, B.Quantity, E.HardwareAssetDimKey,
AC.DisplayName, AC.TotalLicenseQuantity, AC.SoftwareTitleDimKey,
L.CompanyDimKey

) U
LEFT OUTER JOIN SoftwareTitleAllocationSetFactvw Z ON U.SoftwareTitleDimKey = Z.SoftwareTitleDimKey
AND Z.DeletedDate IS NULL
LEFT OUTER JOIN SoftwareAllocationSetDimvw Y ON Z.SoftwareTitleHasAllocationSet_SoftwareAllocationSetDimKey = Y.SoftwareAllocationSetDimKey
AND Y.IsDeleted = 0
AND (Y.ObjectStatus IS NULL OR Y.ObjectStatus &lt;&gt; @ObjectStatusPendingDelete)
LEFT OUTER JOIN (SELECT SASA.SoftwareAllocationSetDimKey, SUM(SAD.Quantity) AS AllocationQuantity
FROM SoftwareAllocationSetAllocationFactvw SASA
INNER JOIN SoftwareAllocationDimvw SAD ON SASA.AllocationSetContainsAllocation_SoftwareAllocationDimKey = SAD.SoftwareAllocationDimKey
AND SAD.IsDeleted = 0
AND (SAD.ObjectStatus IS NULL OR SAD.ObjectStatus &lt;&gt; @ObjectStatusPendingDelete)
WHERE SASA.DeletedDate IS NULL
GROUP BY SASA.SoftwareAllocationSetDimKey) X ON Y.SoftwareAllocationSetDimKey = X.SoftwareAllocationSetDimKey
WHERE (U.AssetAssigned IS NOT NULL OR U.HardwareAsset IS NULL)

update A
SET A.TotalAssigned = B.Assigned,
A.TotalInstalled = B.Installed
FROM #temp A
INNER JOIN (SELECT UserGroup.SoftwareTitleId, SUM(UserGroup.Installed) AS Installed,
SUM(UserGroup.AssetAssigned) + SUM(UserGroup.UserAssigned) AS Assigned
FROM (
SELECT A.SoftwareTitleId, SUM(IsNull(A.VersionInstalledCount,0)) AS Installed,
SUM(IsNull(A.AssetAssigned,0)) AS AssetAssigned, A.UserName, Max(IsNull(A.UserAssigned,0)) AS UserAssigned
FROM #temp A
GROUP BY A.SoftwareTitleId, A.UserName ) As UserGroup
GROUP BY UserGroup.SoftwareTitleId
) B ON A.SoftwareTitleId = B.SoftwareTitleId


UPDATE A
SET A.MaxPercentage = B.MaxPercentage,
A.MinPercentage = B.MinPercentage
FROM #temp A
INNER JOIN (
SELECT MAX(Percentage) AS MaxPercentage, MIN(Percentage) AS MinPercentage, SoftwareTitleId
FROM (
SELECT CASE
WHEN Installed &lt;&gt; 0 AND Assigned &lt;&gt; 0 THEN
(Installed*100)/(Assigned)
WHEN Assigned = 0 AND Installed &lt;&gt; 0 THEN
100
WHEN Installed = 0 AND Assigned &lt;&gt; 0 THEN
0
ELSE
0
END AS Percentage,
SoftwareTitleId, UserName
FROM (
SELECT A.SoftwareTitleId, SUM(IsNull(A.VersionInstalledCount,0)) AS Installed,
SUM(IsNull(A.AssetAssigned,0)) + Max(IsNull(A.UserAssigned,0)) AS Assigned, A.UserName
FROM #temp A
GROUP BY A.SoftwareTitleId, A.UserName ) AS UserGroup
) AS UserPercentages
Group BY UserPercentages.SoftwareTitleId ) B ON A.SoftwareTitleId = B.SoftwareTitleId


select * from #temp
WHERE (@SoftwareId IS NULL OR @SoftwareId &lt; 1 OR #temp.SoftwareTitleId = @SoftwareId)
AND (@HardwareId IS NULL OR @HardwareId &lt; 1 OR #temp.HardwareAssetId = @HardwareId)
AND (@UserId IS NULL OR @UserId &lt; 1 OR #temp.UserId = @UserId)
AND (@PublisherId IS NULL OR @PublisherId &lt; 1 OR #temp.PublisherId = @PublisherId)
order by SoftwareTitle, UserName, HardwareAsset

drop table #temp
</CommandText>
<QueryParameters>
<QueryParameter Name="@ObjectStatusPendingDelete">
<Value>System.ConfigItem.ObjectStatusEnum.PendingDelete</Value>
</QueryParameter>
<QueryParameter Name="@SoftwareId">
<Value>=Parameters!SoftwareTitleId.Value</Value>
</QueryParameter>
<QueryParameter Name="@LifecycleDisposed">
<Value>HardwareAssetLifecycleStatus.Disposed</Value>
</QueryParameter>
<QueryParameter Name="@HardwareId">
<Value>=Parameters!HardwareAssetId.Value</Value>
</QueryParameter>
<QueryParameter Name="@LifecycleReturned">
<Value>HardwareAssetLifecycleStatus.Returned</Value>
</QueryParameter>
<QueryParameter Name="@UserId">
<Value>=Parameters!UserId.Value</Value>
</QueryParameter>
<QueryParameter Name="@PublisherId">
<Value>=Parameters!PublisherId.Value</Value>
</QueryParameter>
</QueryParameters>
<rd:UseGenericDesigner>true</rd:UseGenericDesigner>
</Query>
</DataSet>
</DataSets>
<Body><Script>
<ReportItems>
<Rectangle Name="rectangle2">
<ReportItems>
<Tablix Name="Tablix8">
<TablixBody>
<TablixColumns>
<TablixColumn>
<Width>1.1in</Width>
</TablixColumn>
<TablixColumn>
<Width>4.387in</Width>
</TablixColumn>
</TablixColumns>
<TablixRows>
<TablixRow>
<Height>0.2in</Height>
<TablixCells>
<TablixCell>
<CellContents>
<Textbox Name="textbox52">
<CanGrow>true</CanGrow>
<CanShrink>true</CanShrink>
<DataElementStyle>Element</DataElementStyle>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Code.GetLocTable("LT_Report").GetString("RG", "[ReportGenerated]") &amp; " :"</Value>
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
</Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<ZIndex>1</ZIndex>
<DataElementName>Severity</DataElementName>
<DataElementOutput>NoOutput</DataElementOutput>
<Style></Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="textboxDescription2">
<CanGrow>true</CanGrow>
<CanShrink>true</CanShrink>
<DataElementStyle>Element</DataElementStyle>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Now()</Value>
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
</Style>
</TextRun>
</TextRuns>
<Style></Style>
<TextAlign>Left</TextAlign>
</Style>
</Paragraph>
</Paragraphs>
<ZIndex>2</ZIndex>
<DataElementName>ActualStartDate</DataElementName>
<DataElementOutput>Output</DataElementOutput>
<Style></Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
</TablixCells>
</TablixRow>
<TablixRow>
<Height>0.2in</Height>
<TablixCells>
<TablixCell>
<CellContents>
<Textbox Name="Textbox3">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Code.GetLocTable("LT_Report").GetString("A", "[Software Title]") &amp; " :"</Value>
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
</Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox3</rd:DefaultName>
<Style></Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="Textbox4">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=IIF(IsNothing(Parameters!SoftwareTitleId.Value) OR Parameters!SoftwareTitleId.Value &lt; 1,Code.GetLocTable("LT_Report").GetString("E", "[All]"),First(Fields!DisplayName.Value, "SoftwareTitleParameterDisplayName"))</Value>
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
</Style>
</TextRun>
</TextRuns>
<Style></Style>
<TextAlign>Left</TextAlign>
</Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox4</rd:DefaultName>
<Style></Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
</TablixCells>
</TablixRow>
<TablixRow>
<Height>0.2in</Height>
<TablixCells>
<TablixCell>
<CellContents>
<Textbox Name="Textbox5">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Code.GetLocTable("LT_Report").GetString("B", "[Publisher]") &amp; " :"</Value>
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
</Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox5</rd:DefaultName>
<Style></Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="Textbox6">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=IIF(IsNothing(Parameters!PublisherId.Value) OR Parameters!PublisherId.Value &lt; 1,Code.GetLocTable("LT_Report").GetString("E", "[All]"),First(Fields!DisplayName.Value, "PublisherParameterDisplayName"))</Value>
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
</Style>
</TextRun>
</TextRuns>
<Style></Style>
<TextAlign>Left</TextAlign>
</Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox6</rd:DefaultName>
<Style></Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
</TablixCells>
</TablixRow>
<TablixRow>
<Height>0.2in</Height>
<TablixCells>
<TablixCell>
<CellContents>
<Textbox Name="Textbox7">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Code.GetLocTable("LT_Report").GetString("C", "[User Name]") &amp; " :"</Value>
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
</Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox7</rd:DefaultName>
<Style></Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="Textbox8">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=IIF(IsNothing(Parameters!UserId.Value) OR Parameters!UserId.Value &lt; 1,Code.GetLocTable("LT_Report").GetString("E", "[All]"),First(Fields!DisplayName.Value, "UserParameterDisplayName"))</Value>
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
</Style>
</TextRun>
</TextRuns>
<Style></Style>
<TextAlign>Left</TextAlign>
</Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox8</rd:DefaultName>
<Style></Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
</TablixCells>
</TablixRow>
<TablixRow>
<Height>0.2in</Height>
<TablixCells>
<TablixCell>
<CellContents>
<Textbox Name="Textbox9">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Code.GetLocTable("LT_Report").GetString("D", "[Hardware Asset]") &amp; " :"</Value>
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
</Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox9</rd:DefaultName>
<Style></Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="Textbox10">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=IIF(IsNothing(Parameters!HardwareAssetId.Value) OR Parameters!HardwareAssetId.Value &lt; 1,Code.GetLocTable("LT_Report").GetString("E", "[All]"),First(Fields!DisplayName.Value, "HardwareAssetParameterDisplayName"))</Value>
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
</Style>
</TextRun>
</TextRuns>
<Style></Style>
<TextAlign>Left</TextAlign>
</Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox10</rd:DefaultName>
<Style></Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
</TablixCells>
</TablixRow>
</TablixRows>
</TablixBody>
<TablixColumnHierarchy>
<TablixMembers>
<TablixMember />
<TablixMember />
</TablixMembers>
</TablixColumnHierarchy>
<TablixRowHierarchy>
<TablixMembers>
<TablixMember>
<Group Name="Details7" />
<TablixMembers>
<TablixMember />
<TablixMember />
<TablixMember />
<TablixMember />
<TablixMember />
</TablixMembers>
</TablixMember>
</TablixMembers>
</TablixRowHierarchy>
<KeepTogether>true</KeepTogether>
<DataSetName>LT_Report</DataSetName>
<Top>0.05in</Top>
<Left>0.05in</Left>
<Height>1in</Height>
<Width>5.487in</Width>
<Style></Style>
<Border>
<Style></Style>None</Style>
</Border>
</Style>
</Tablix>
<Rectangle Name="Rectangle1">
<ReportItems>
<Tablix Name="Tablix1">
<TablixBody>
<TablixColumns>
<TablixColumn>
<Width>0.2in</Width>
</TablixColumn>
<TablixColumn>
<Width>2.35417in</Width>
</TablixColumn>
<TablixColumn>
<Width>1.34583in</Width>
</TablixColumn>
</TablixColumns>
<TablixRows>
<TablixRow>
<Height>0.2in</Height>
<TablixCells>
<TablixCell>
<CellContents>
<Image Name="Image2">
<Source>External</Source>
<Value>Exceeded.png</Value>
<Sizing>FitProportional</Sizing>
<Style></Style>
<Border>
<Style></Style>None</Style>
</Border>
<PaddingLeft>1pt</PaddingLeft>
<PaddingRight>1pt</PaddingRight>
<PaddingTop>1pt</PaddingTop>
<PaddingBottom>1pt</PaddingBottom>
</Style>
</Image>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="Textbox31">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Code.GetLocTable("LT_Report").GetString("F", "[Title is under assigned.]")</Value>
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
</Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox31</rd:DefaultName>
<Style></Style>
<Border>
<Color>LightGrey</Color>
<Style></Style>None</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="Textbox11">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>="= " &amp; IIF(Count(Fields!SoftwareTitle.Value, "SoftwareTitleUsage") &gt; 0,
Sum(IIF(Fields!AssignmentState.Value = "Exceeded.png" AND Code.IsNewExceededTitle(Fields!SoftwareTitle.Value),1,0), "SoftwareTitleUsage"),
0)
&amp;
" (" &amp; IIF(Count(Fields!SoftwareTitle.Value, "SoftwareTitleUsage") &gt; 0,
FormatPercent(Sum(IIF(Fields!AssignmentState.Value = "Exceeded.png" AND Code.IsNewExceededTitle(Fields!SoftwareTitle.Value),1,0), "SoftwareTitleUsage")/ CountDistinct(Fields!SoftwareTitle.Value, "SoftwareTitleUsage"),0),
FormatPercent(0,0)) &amp; ")"</Value>
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
</Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox8</rd:DefaultName>
<Style></Style>
<Border>
<Color>LightGrey</Color>
<Style></Style>None</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
</TablixCells>
</TablixRow>
<TablixRow>
<Height>0.2in</Height>
<TablixCells>
<TablixCell>
<CellContents>
<Image Name="Image3">
<Source>External</Source>
<Value>Close.png</Value>
<Sizing>FitProportional</Sizing>
<Style></Style>
<Border>
<Style></Style>None</Style>
</Border>
<PaddingLeft>1pt</PaddingLeft>
<PaddingRight>1pt</PaddingRight>
<PaddingTop>1pt</PaddingTop>
<PaddingBottom>1pt</PaddingBottom>
</Style>
</Image>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="Textbox12">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Code.GetLocTable("LT_Report").GetString("G", "[Title is over assigned or almost under assigned]")</Value>
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
</Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox5</rd:DefaultName>
<Style></Style>
<Border>
<Color>LightGrey</Color>
<Style></Style>None</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="Textbox13">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>="= " &amp; IIF(Count(Fields!SoftwareTitle.Value, "SoftwareTitleUsage") &gt; 0,
Sum(IIF(Fields!AssignmentState.Value = "Close.png" AND Code.IsNewCloseTitle(Fields!SoftwareTitle.Value),1,0), "SoftwareTitleUsage") ,
0) &amp; " ("
&amp; IIF(Count(Fields!SoftwareTitle.Value, "SoftwareTitleUsage") &gt; 0,
FormatPercent(Sum(IIF(Fields!AssignmentState.Value = "Close.png" AND Code.IsNewCloseTitle(Fields!SoftwareTitle.Value),1,0), "SoftwareTitleUsage") / CountDistinct(Fields!SoftwareTitle.Value, "SoftwareTitleUsage"),0),
FormatPercent(0,0)) &amp; ")"</Value>
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
</Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox9</rd:DefaultName>
<Style></Style>
<Border>
<Color>LightGrey</Color>
<Style></Style>None</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
</TablixCells>
</TablixRow>
<TablixRow>
<Height>0.2in</Height>
<TablixCells>
<TablixCell>
<CellContents>
<Image Name="Image4">
<Source>External</Source>
<Value>Good.png</Value>
<Sizing>FitProportional</Sizing>
<Style></Style>
<Border>
<Style></Style>None</Style>
</Border>
<PaddingLeft>1pt</PaddingLeft>
<PaddingRight>1pt</PaddingRight>
<PaddingTop>1pt</PaddingTop>
<PaddingBottom>1pt</PaddingBottom>
</Style>
</Image>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="Textbox26">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Code.GetLocTable("LT_Report").GetString("H", "[Title has a good assignment status]")</Value>
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
</Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox26</rd:DefaultName>
<Style></Style>
<Border>
<Color>LightGrey</Color>
<Style></Style>None</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="Textbox14">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>="= " &amp; IIF(Count(Fields!SoftwareTitle.Value, "SoftwareTitleUsage") &gt; 0,
Sum(IIF(Fields!AssignmentState.Value = "Good.png" AND Code.IsNewGoodTitle(Fields!SoftwareTitle.Value),1,0), "SoftwareTitleUsage") ,
0) &amp; " ("
&amp; IIF(Count(Fields!SoftwareTitle.Value, "SoftwareTitleUsage") &gt; 0,
FormatPercent(Sum(IIF(Fields!AssignmentState.Value = "Good.png" AND Code.IsNewGoodTitle(Fields!SoftwareTitle.Value),1,0), "SoftwareTitleUsage") / CountDistinct(Fields!SoftwareTitle.Value, "SoftwareTitleUsage"),0),
FormatPercent(0,0)) &amp; ")"</Value>
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
</Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox13</rd:DefaultName>
<Style></Style>
<Border>
<Color>LightGrey</Color>
<Style></Style>None</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
</TablixCells>
</TablixRow>
</TablixRows>
</TablixBody>
<TablixColumnHierarchy>
<TablixMembers>
<TablixMember />
<TablixMember />
<TablixMember />
</TablixMembers>
</TablixColumnHierarchy>
<TablixRowHierarchy>
<TablixMembers>
<TablixMember>
<Group Name="Details" />
<TablixMembers>
<TablixMember />
<TablixMember />
<TablixMember />
</TablixMembers>
</TablixMember>
</TablixMembers>
</TablixRowHierarchy>
<DataSetName>LT_Report</DataSetName>
<Left>0.05in</Left>
<Height>0.6in</Height>
<Width>3.9in</Width>
<Style></Style>
<Border>
<Color>LightGrey</Color>
<Style></Style>Solid</Style>
</Border>
</Style>
</Tablix>
</ReportItems>
<KeepTogether>true</KeepTogether>
<Top>0.25in</Top>
<Left>5.725in</Left>
<Height>0.6in</Height>
<Width>4in</Width>
<ZIndex>1</ZIndex>
<Style></Style>
<Border>
<Color>LightGrey</Color>
<Style></Style>None</Style>
</Border>
</Style>
</Rectangle>
</ReportItems>
<DataElementOutput>ContentsOnly</DataElementOutput>
<Top>0.55in</Top>
<Left>0.05in</Left>
<Height>1.1in</Height>
<Width>9.775in</Width>
<Style></Style>
<Border>
<Color>LightGrey</Color>
<Style></Style>None</Style>
</Border>
<BottomBorder>
<Style></Style>Solid</Style>
</BottomBorder>
</Style>
</Rectangle>
<Tablix Name="Tablix2">
<TablixBody>
<TablixColumns>
<TablixColumn>
<Width>1.525in</Width>
</TablixColumn>
<TablixColumn>
<Width>0.8in</Width>
</TablixColumn>
<TablixColumn>
<Width>0.8in</Width>
</TablixColumn>
<TablixColumn>
<Width>0.8in</Width>
</TablixColumn>
<TablixColumn>
<Width>0.8in</Width>
</TablixColumn>
</TablixColumns>
<TablixRows>
<TablixRow>
<Height>0.4in</Height>
<TablixCells>
<TablixCell>
<CellContents>
<Textbox Name="Textbox32">
<CanGrow>true</CanGrow>
<UserSort>
<SortExpression>=Fields!HardwareAsset.Value</SortExpression>
<SortExpressionScope>GroupAsset</SortExpressionScope>
</UserSort>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Code.GetLocTable("LT_Report").GetString("D", "[Hardware Asset]")</Value>
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
<FontWeight>Bold</FontWeight>
<Color>White</Color>
</Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox32</rd:DefaultName>
<Style></Style>
<Border>
<Color>LightGrey</Color>
<Style></Style>None</Style>
</Border>
<BackgroundColor>DimGray</BackgroundColor>
<VerticalAlign>Middle</VerticalAlign>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="Textbox36">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Code.GetLocTable("LT_Report").GetString("I", "[Assigned]")</Value>
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
<FontWeight>Bold</FontWeight>
<Color>White</Color>
</Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox36</rd:DefaultName>
<Style></Style>
<Border>
<Color>LightGrey</Color>
<Style></Style>None</Style>
</Border>
<BackgroundColor>DimGray</BackgroundColor>
<VerticalAlign>Middle</VerticalAlign>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="Textbox34">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Code.GetLocTable("LT_Report").GetString("J", "[Installed]")</Value>
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
<FontWeight>Bold</FontWeight>
<Color>White</Color>
</Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox34</rd:DefaultName>
<Style></Style>
<Border>
<Color>LightGrey</Color>
<Style></Style>None</Style>
</Border>
<BackgroundColor>DimGray</BackgroundColor>
<VerticalAlign>Middle</VerticalAlign>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="Textbox21">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Code.GetLocTable("LT_Report").GetString("L", "[Licensed]")</Value>
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
<FontWeight>Bold</FontWeight>
<Color>White</Color>
</Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox21</rd:DefaultName>
<Style></Style>
<Border>
<Color>LightGrey</Color>
<Style></Style>None</Style>
</Border>
<BackgroundColor>DimGray</BackgroundColor>
<VerticalAlign>Middle</VerticalAlign>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="Textbox23">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Code.GetLocTable("LT_Report").GetString("M", "[Allocated]")</Value>
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
<FontWeight>Bold</FontWeight>
<Color>White</Color>
</Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox23</rd:DefaultName>
<Style></Style>
<Border>
<Color>LightGrey</Color>
<Style></Style>None</Style>
</Border>
<BackgroundColor>DimGray</BackgroundColor>
<VerticalAlign>Middle</VerticalAlign>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
</TablixCells>
</TablixRow>
<TablixRow>
<Height>0.25in</Height>
<TablixCells>
<TablixCell>
<CellContents>
<Textbox Name="Textbox195">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value />
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>1pt</FontSize>
</Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox195</rd:DefaultName>
<Style></Style>
<Border>
<Color>LightGrey</Color>
<Style></Style>None</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>6pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="AssetAssigned1">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Fields!TotalAssigned.Value</Value>
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
</Style>
</TextRun>
</TextRuns>
<Style></Style>
<TextAlign>Center</TextAlign>
</Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>AssetAssigned1</rd:DefaultName>
<ActionInfo>
<Actions>
<Action>
<Drillthrough>
<ReportName>Provance.ITAssetManagement.Report.SoftwareTitleInstallation</ReportName>
<Parameters>
<Parameter Name="SoftwareTitleId">
<Value>=Fields!SoftwareTitleId.Value</Value>
</Parameter>
</Parameters>
</Drillthrough>
</Action>
</Actions>
</ActionInfo>
<Style></Style>
<Border>
<Color>LightGrey</Color>
<Style></Style>None</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>6pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="VersionInstalledCount1">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=IIF(IsNothing(Fields!TotalInstalled.Value) OR Fields!TotalInstalled.Value &lt; 1,"",Fields!TotalInstalled.Value)</Value>
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
</Style>
</TextRun>
</TextRuns>
<Style></Style>
<TextAlign>Center</TextAlign>
</Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>VersionInstalledCount1</rd:DefaultName>
<ActionInfo>
<Actions>
<Action>
<Drillthrough>
<ReportName>Provance.ITAssetManagement.Report.SoftwareTitleInstallation</ReportName>
<Parameters>
<Parameter Name="SoftwareTitleId">
<Value>=Fields!SoftwareTitleId.Value</Value>
</Parameter>
</Parameters>
</Drillthrough>
</Action>
</Actions>
</ActionInfo>
<Style></Style>
<Border>
<Color>LightGrey</Color>
<Style></Style>None</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>6pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="LicensedQuantity1">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=First(Fields!LicensedQuantity.Value)</Value>
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
</Style>
</TextRun>
</TextRuns>
<Style></Style>
<TextAlign>Center</TextAlign>
</Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>LicensedQuantity1</rd:DefaultName>
<ActionInfo>
<Actions>
<Action>
<Drillthrough>
<ReportName>Provance.ITAssetManagement.Report.SoftwareTitleInstallation</ReportName>
<Parameters>
<Parameter Name="SoftwareTitleId">
<Value>=Fields!SoftwareTitleId.Value</Value>
</Parameter>
</Parameters>
</Drillthrough>
</Action>
</Actions>
</ActionInfo>
<Style></Style>
<Border>
<Color>LightGrey</Color>
<Style></Style>None</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>6pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="AllocationQuantity1">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Sum(Fields!AllocationQuantity.Value)</Value>
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
</Style>
</TextRun>
</TextRuns>
<Style></Style>
<TextAlign>Center</TextAlign>
</Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>AllocationQuantity1</rd:DefaultName>
<ActionInfo>
<Actions>
<Action>
<Drillthrough>
<ReportName>Provance.ITAssetManagement.Report.SoftwareTitleInstallation</ReportName>
<Parameters>
<Parameter Name="SoftwareTitleId">
<Value>=Fields!SoftwareTitleId.Value</Value>
</Parameter>
</Parameters>
</Drillthrough>
</Action>
</Actions>
</ActionInfo>
<Style></Style>
<Border>
<Color>LightGrey</Color>
<Style></Style>None</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>6pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
</TablixCells>
</TablixRow>
<TablixRow>
<Height>0.25in</Height>
<TablixCells>
<TablixCell>
<CellContents>
<Textbox Name="Textbox196">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value />
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>1pt</FontSize>
</Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox196</rd:DefaultName>
<Style></Style>
<Border>
<Color>LightGrey</Color>
<Style></Style>None</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>6pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="UserAssigned">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=First(Fields!UserAssigned.Value)</Value>
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
</Style>
</TextRun>
</TextRuns>
<Style></Style>
<TextAlign>Center</TextAlign>
</Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>UserAssigned</rd:DefaultName>
<Style></Style>
<Border>
<Color>LightGrey</Color>
<Style></Style>None</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>6pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="Textbox46">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value />
<Style /></Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox46</rd:DefaultName>
<Style></Style>
<Border>
<Color>LightGrey</Color>
<Style></Style>None</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>6pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="Textbox48">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value />
<Style /></Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox48</rd:DefaultName>
<Style></Style>
<Border>
<Color>LightGrey</Color>
<Style></Style>None</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>6pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="Textbox49">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value />
<Style /></Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox49</rd:DefaultName>
<Style></Style>
<Border>
<Color>LightGrey</Color>
<Style></Style>None</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>6pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
</TablixCells>
</TablixRow>
<TablixRow>
<Height>0.23958in</Height>
<TablixCells>
<TablixCell>
<CellContents>
<Textbox Name="HardwareAsset">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Fields!HardwareAsset.Value</Value>
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
</Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>HardwareAsset</rd:DefaultName>
<ActionInfo>
<Actions>
<Action>
<Drillthrough>
<ReportName>../Report.HardwareAssetManagement.Folder/Provance.ITAssetManagement.Report.SingleAssetReport</ReportName>
<Parameters>
<Parameter Name="hardwareAssetId">
<Value>=Fields!HardwareAssetId.Value</Value>
</Parameter>
</Parameters>
</Drillthrough>
</Action>
</Actions>
</ActionInfo>
<Style></Style>
<Border>
<Color>DimGray</Color>
<Style></Style>None</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="AssetAssigned">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Sum(Fields!AssetAssigned.Value)</Value>
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
</Style>
</TextRun>
</TextRuns>
<Style></Style>
<TextAlign>Center</TextAlign>
</Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>AssetAssigned</rd:DefaultName>
<Style></Style>
<Border>
<Color>DimGray</Color>
<Style></Style>None</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="VersionInstalledCount">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=IIf(IsNothing(Sum(Fields!VersionInstalledCount.Value)), "",Sum(Fields!VersionInstalledCount.Value))</Value>
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
</Style>
</TextRun>
</TextRuns>
<Style></Style>
<TextAlign>Center</TextAlign>
</Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>VersionInstalledCount</rd:DefaultName>
<Style></Style>
<Border>
<Color>DimGray</Color>
<Style></Style>None</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="LicensedQuantity">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value />
<Style /></Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>LicensedQuantity</rd:DefaultName>
<Style></Style>
<Border>
<Color>DimGray</Color>
<Style></Style>None</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="AllocationQuantity">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value />
<Style /></Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>AllocationQuantity</rd:DefaultName>
<Style></Style>
<Border>
<Color>DimGray</Color>
<Style></Style>None</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
</TablixCells>
</TablixRow>
<TablixRow>
<Height>0.03125in</Height>
<TablixCells>
<TablixCell>
<CellContents>
<Textbox Name="Textbox106">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value />
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>1pt</FontSize>
</Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox106</rd:DefaultName>
<Style></Style>
<Border>
<Color>DimGray</Color>
<Style></Style>None</Style>
</Border>
<BottomBorder>
<Style></Style>Dashed</Style>
</BottomBorder>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="Textbox107">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value />
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>1pt</FontSize>
</Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox107</rd:DefaultName>
<Style></Style>
<Border>
<Color>DimGray</Color>
<Style></Style>None</Style>
</Border>
<BottomBorder>
<Style></Style>Dashed</Style>
</BottomBorder>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="Textbox108">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value />
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>1pt</FontSize>
</Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox108</rd:DefaultName>
<Style></Style>
<Border>
<Color>DimGray</Color>
<Style></Style>None</Style>
</Border>
<BottomBorder>
<Style></Style>Dashed</Style>
</BottomBorder>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="Textbox110">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value />
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>1pt</FontSize>
</Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox110</rd:DefaultName>
<Style></Style>
<Border>
<Color>DimGray</Color>
<Style></Style>None</Style>
</Border>
<BottomBorder>
<Style></Style>Dashed</Style>
</BottomBorder>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="Textbox111">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value />
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>1pt</FontSize>
</Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox111</rd:DefaultName>
<Style></Style>
<Border>
<Color>DimGray</Color>
<Style></Style>None</Style>
</Border>
<BottomBorder>
<Style></Style>Dashed</Style>
</BottomBorder>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
</TablixCells>
</TablixRow>
<TablixRow>
<Height>0.03125in</Height>
<TablixCells>
<TablixCell>
<CellContents>
<Textbox Name="Textbox90">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value />
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>1pt</FontSize>
</Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox90</rd:DefaultName>
<Style></Style>
<Border>
<Color>DimGray</Color>
<Style></Style>None</Style>
</Border>
<BottomBorder>
<Style></Style>Solid</Style>
</BottomBorder>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="Textbox91">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value />
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>1pt</FontSize>
</Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox91</rd:DefaultName>
<Style></Style>
<Border>
<Color>DimGray</Color>
<Style></Style>None</Style>
</Border>
<BottomBorder>
<Style></Style>Solid</Style>
</BottomBorder>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="Textbox92">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value />
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>1pt</FontSize>
</Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox92</rd:DefaultName>
<Style></Style>
<Border>
<Color>DimGray</Color>
<Style></Style>None</Style>
</Border>
<BottomBorder>
<Style></Style>Solid</Style>
</BottomBorder>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="Textbox94">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value />
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>1pt</FontSize>
</Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox94</rd:DefaultName>
<Style></Style>
<Border>
<Color>DimGray</Color>
<Style></Style>None</Style>
</Border>
<BottomBorder>
<Style></Style>Solid</Style>
</BottomBorder>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="Textbox95">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value />
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>1pt</FontSize>
</Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox95</rd:DefaultName>
<Style></Style>
<Border>
<Color>DimGray</Color>
<Style></Style>None</Style>
</Border>
<BottomBorder>
<Style></Style>Solid</Style>
</BottomBorder>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
</TablixCells>
</TablixRow>
</TablixRows>
</TablixBody>
<TablixColumnHierarchy>
<TablixMembers>
<TablixMember />
<TablixMember />
<TablixMember />
<TablixMember />
<TablixMember />
</TablixMembers>
</TablixColumnHierarchy>
<TablixRowHierarchy>
<TablixMembers>
<TablixMember>
<TablixHeader>
<Size>0.25in</Size>
<CellContents>
<Textbox Name="Textbox64">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value />
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
<FontWeight>Bold</FontWeight>
<Color>White</Color>
</Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox64</rd:DefaultName>
<Style></Style>
<Border>
<Color>LightGrey</Color>
<Style></Style>None</Style>
</Border>
<BackgroundColor>DimGray</BackgroundColor>
<VerticalAlign>Middle</VerticalAlign>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixHeader>
<TablixMembers>
<TablixMember>
<TablixHeader>
<Size>2.925in</Size>
<CellContents>
<Textbox Name="Textbox50">
<CanGrow>true</CanGrow>
<UserSort>
<SortExpression>=Fields!SoftwareTitle.Value</SortExpression>
<SortExpressionScope>GroupSoftware</SortExpressionScope>
</UserSort>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Code.GetLocTable("LT_Report").GetString("A", "[Software Title]")</Value>
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
<FontWeight>Bold</FontWeight>
<Color>White</Color>
</Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox50</rd:DefaultName>
<Style></Style>
<Border>
<Color>LightGrey</Color>
<Style></Style>None</Style>
</Border>
<BackgroundColor>DimGray</BackgroundColor>
<VerticalAlign>Middle</VerticalAlign>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixHeader>
<TablixMembers>
<TablixMember>
<TablixHeader>
<Size>0.25in</Size>
<CellContents>
<Textbox Name="Textbox112">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value />
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
<FontWeight>Bold</FontWeight>
<Color>White</Color>
</Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox112</rd:DefaultName>
<Style></Style>
<Border>
<Color>LightGrey</Color>
<Style></Style>None</Style>
</Border>
<BackgroundColor>DimGray</BackgroundColor>
<VerticalAlign>Middle</VerticalAlign>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixHeader>
<TablixMembers>
<TablixMember>
<TablixHeader>
<Size>1.525in</Size>
<CellContents>
<Textbox Name="Textbox38">
<CanGrow>true</CanGrow>
<UserSort>
<SortExpression>=Fields!UserName.Value</SortExpression>
<SortExpressionScope>GroupUser</SortExpressionScope>
</UserSort>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Code.GetLocTable("LT_Report").GetString("C", "[User Name]")</Value>
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
<FontWeight>Bold</FontWeight>
<Color>White</Color>
</Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox38</rd:DefaultName>
<Style></Style>
<Border>
<Color>LightGrey</Color>
<Style></Style>None</Style>
</Border>
<BackgroundColor>DimGray</BackgroundColor>
<VerticalAlign>Middle</VerticalAlign>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixHeader>
<TablixMembers>
<TablixMember />
</TablixMembers>
</TablixMember>
</TablixMembers>
</TablixMember>
</TablixMembers>
</TablixMember>
</TablixMembers>
<KeepWithGroup>After</KeepWithGroup>
<RepeatOnNewPage>true</RepeatOnNewPage>
</TablixMember>
<TablixMember>
<Group Name="GroupSoftware">
<GroupExpressions>
<GroupExpression>=Fields!SoftwareTitleId.Value</GroupExpression>
</GroupExpressions>
</Group>
<SortExpressions>
<SortExpression>
<Value>=Fields!SoftwareTitle.Value</Value>
</SortExpression>
</SortExpressions>
<TablixMembers>
<TablixMember>
<TablixHeader>
<Size>0.25in</Size>
<CellContents>
<Image Name="Image5">
<Source>External</Source>
<Value>=Fields!AssignmentState.Value</Value>
<Sizing>FitProportional</Sizing>
<Style></Style>
<Border>
<Style></Style>None</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>6pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Image>
</CellContents>
</TablixHeader>
<TablixMembers>
<TablixMember>
<TablixHeader>
<Size>2.925in</Size>
<CellContents>
<Textbox Name="SoftwareTitle">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Fields!SoftwareTitle.Value</Value>
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
</Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>SoftwareTitle</rd:DefaultName>
<Style></Style>
<Border>
<Style></Style>None</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>6pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixHeader>
<TablixMembers>
<TablixMember>
<TablixHeader>
<Size>0.25in</Size>
<CellContents>
<Textbox Name="Textbox113">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value />
<Style /></Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox113</rd:DefaultName>
<Style></Style>
<Border>
<Style></Style>None</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>6pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixHeader>
<TablixMembers>
<TablixMember>
<TablixHeader>
<Size>1.525in</Size>
<CellContents>
<Textbox Name="Textbox55">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value />
<Style /></Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox55</rd:DefaultName>
<Style></Style>
<Border>
<Style></Style>None</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>6pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixHeader>
</TablixMember>
</TablixMembers>
<KeepWithGroup>After</KeepWithGroup>
</TablixMember>
<TablixMember>
<Group Name="GroupUser">
<GroupExpressions>
<GroupExpression>=Fields!UserName.Value</GroupExpression>
</GroupExpressions>
</Group>
<SortExpressions>
<SortExpression>
<Value>=Fields!UserName.Value</Value>
</SortExpression>
</SortExpressions>
<TablixHeader>
<Size>0.25in</Size>
<CellContents>
<Image Name="Image6">
<Source>External</Source>
<Value>=Code.CalculateAssignmentStatus((Sum(Fields!AssetAssigned.Value) + ReportItems("UserAssigned").Value), IIf(IsNothing(Sum(Fields!VersionInstalledCount.Value)), 0,Sum(Fields!VersionInstalledCount.Value)), First(Fields!LicenceComplianceExceededPercentage.Value, "SoftwareAdminSettings"), First(Fields!LicenseComplianceCloseToExceededPercentage.Value, "SoftwareAdminSettings"), First(Fields!LicenseComplianceUnderUsedPercentage.Value, "SoftwareAdminSettings"))</Value>
<Sizing>FitProportional</Sizing>
<Style></Style>
<Border>
<Style></Style>None</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>6pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Image>
</CellContents>
</TablixHeader>
<TablixMembers>
<TablixMember>
<TablixHeader>
<Size>1.525in</Size>
<CellContents>
<Textbox Name="Group1">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Fields!UserName.Value</Value>
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
</Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Group1</rd:DefaultName>
<Style></Style>
<Border>
<Color>DimGray</Color>
<Style></Style>None</Style>
</Border>
<BottomBorder>
<Style></Style>Dashed</Style>
</BottomBorder>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>6pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixHeader>
<TablixMembers>
<TablixMember>
<KeepWithGroup>After</KeepWithGroup>
</TablixMember>
<TablixMember>
<Group Name="GroupAsset">
<GroupExpressions>
<GroupExpression>=Fields!HardwareAssetId.Value</GroupExpression>
</GroupExpressions>
<Parent>=Fields!HardwareAssetId.Value</Parent>
</Group>
<SortExpressions>
<SortExpression>
<Value>=Fields!HardwareAsset.Value</Value>
</SortExpression>
</SortExpressions>
<Visibility>
<Hidden>=IsNothing(Fields!HardwareAsset.Value)</Hidden>
</Visibility>
</TablixMember>
<TablixMember>
<KeepWithGroup>Before</KeepWithGroup>
</TablixMember>
</TablixMembers>
</TablixMember>
</TablixMembers>
<Visibility>
<Hidden>true</Hidden>
<ToggleItem>SoftwareTitle</ToggleItem>
</Visibility>
</TablixMember>
</TablixMembers>
</TablixMember>
</TablixMembers>
</TablixMember>
<TablixMember>
<TablixHeader>
<Size>0.25in</Size>
<CellContents>
<Textbox Name="Textbox250">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value />
<Style /></Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox250</rd:DefaultName>
<Style></Style>
<Border>
<Style></Style>None</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixHeader>
<TablixMembers>
<TablixMember>
<TablixHeader>
<Size>2.925in</Size>
<CellContents>
<Textbox Name="Textbox88">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value />
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>1pt</FontSize>
</Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox88</rd:DefaultName>
<Style></Style>
<Border>
<Color>DimGray</Color>
<Style></Style>None</Style>
</Border>
<BottomBorder>
<Style></Style>Solid</Style>
</BottomBorder>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixHeader>
<TablixMembers>
<TablixMember>
<TablixHeader>
<Size>0.25in</Size>
<CellContents>
<Textbox Name="Textbox117">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value />
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>1pt</FontSize>
</Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox117</rd:DefaultName>
<Style></Style>
<Border>
<Color>DimGray</Color>
<Style></Style>None</Style>
</Border>
<BottomBorder>
<Style></Style>Solid</Style>
</BottomBorder>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixHeader>
<TablixMembers>
<TablixMember>
<TablixHeader>
<Size>1.525in</Size>
<CellContents>
<Textbox Name="Textbox89">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value />
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>1pt</FontSize>
</Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox89</rd:DefaultName>
<Style></Style>
<Border>
<Color>DimGray</Color>
<Style></Style>None</Style>
</Border>
<BottomBorder>
<Style></Style>Solid</Style>
</BottomBorder>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixHeader>
</TablixMember>
</TablixMembers>
</TablixMember>
</TablixMembers>
</TablixMember>
</TablixMembers>
</TablixMember>
</TablixMembers>
</TablixMember>
</TablixMembers>
</TablixRowHierarchy>
<RepeatColumnHeaders>true</RepeatColumnHeaders>
<FixedColumnHeaders>true</FixedColumnHeaders>
<NoRowsMessage>=Code.GetLocTable("LT_Report").GetString("N", "[No data available.]")</NoRowsMessage>
<DataSetName>SoftwareTitleUsage</DataSetName>
<Top>1.84675in</Top>
<Left>0.1in</Left>
<Height>1.20208in</Height>
<Width>9.675in</Width>
<ZIndex>1</ZIndex>
<Style></Style>
<Border>
<Style></Style>None</Style>
</Border>
</Style>
</Tablix>
<Rectangle Name="Rectangle3">
<ReportItems>
<Rectangle Name="rectReportDescription">
<ReportItems>
<Textbox Name="Textbox2">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Code.GetLocTable("LT_Report").GetString("RD", "The Assigned Software Titles report lists all the software licenses that have been assigned to devices or users. Based on discovery data, it indicates whether or not the software is installed on a device.") &amp; " " &amp; Code.GetLocTable("LT_Report").GetString("RD2", "A colored icon indicates the status of a title, which is based on the proportion of assigned licenses to installed licenses.")</Value>
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
</Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox2</rd:DefaultName>
<Top>0.05in</Top>
<Left>0.05in</Left>
<Height>0.2in</Height>
<Width>9.675in</Width>
<Style></Style>
<Border>
<Style></Style>None</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</ReportItems>
<KeepTogether>true</KeepTogether>
<Top>0.22694in</Top>
<Left>0.05in</Left>
<Height>0.3in</Height>
<Width>9.775in</Width>
<Visibility>
<Hidden>true</Hidden>
<ToggleItem>txtDescriptionToggle</ToggleItem>
</Visibility>
<Style></Style>
<Border>
<Style></Style>None</Style>
</Border>
</Style>
</Rectangle>
<Textbox Name="txtDescriptionToggle">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Code.GetLocTable("LT_Report").GetString("RDL", "[Expand this section to see a full description of this report.]")</Value>
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
</Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<Top>0.00694in</Top>
<Left>0.05in</Left>
<Height>0.2in</Height>
<Width>9.775in</Width>
<ZIndex>1</ZIndex>
<Style></Style>
<Border>
<Style></Style>None</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</ReportItems>
<KeepTogether>true</KeepTogether>
<Height>0.52694in</Height>
<Width>9.875in</Width>
<ZIndex>2</ZIndex>
<Style></Style>
<Border>
<Color>Silver</Color>
<Style></Style>None</Style>
</Border>
<BottomBorder>
<Style></Style>Solid</Style>
</BottomBorder>
<BackgroundColor>Gainsboro</BackgroundColor>
</Style>
</Rectangle>
</ReportItems>
<Height>3.23633in</Height>
<Style /></Style>
</Script></Body>
<ReportParameters>
<ReportParameter Name="LT_Report">
<DataType>String</DataType>
<DefaultValue>
<DataSetReference>
<DataSetName>LT_Report</DataSetName>
<ValueField>XML_F52E2B61_18A1_11d1_B105_00805F49916B</ValueField>
</DataSetReference>
</DefaultValue>
<Hidden>true</Hidden>
</ReportParameter>
<ReportParameter Name="SoftwareTitleId">
<DataType>Integer</DataType>
<Nullable>true</Nullable>
<Prompt>Software Title Id</Prompt>
</ReportParameter>
<ReportParameter Name="HardwareAssetId">
<DataType>Integer</DataType>
<Nullable>true</Nullable>
<Prompt>Hardware Asset Id</Prompt>
</ReportParameter>
<ReportParameter Name="UserId">
<DataType>Integer</DataType>
<Nullable>true</Nullable>
<Prompt>User Id</Prompt>
</ReportParameter>
<ReportParameter Name="PublisherId">
<DataType>Integer</DataType>
<Nullable>true</Nullable>
<Prompt>Publisher Id</Prompt>
</ReportParameter>
<ReportParameter Name="ExceededPercentage">
<DataType>Integer</DataType>
<DefaultValue>
<DataSetReference>
<DataSetName>SoftwareAdminSettings</DataSetName>
<ValueField>LicenceComplianceExceededPercentage</ValueField>
</DataSetReference>
</DefaultValue>
<Prompt xml:space="preserve"> </Prompt>
<Hidden>true</Hidden>
</ReportParameter>
<ReportParameter Name="ClosePercentage">
<DataType>Integer</DataType>
<DefaultValue>
<DataSetReference>
<DataSetName>SoftwareAdminSettings</DataSetName>
<ValueField>LicenseComplianceCloseToExceededPercentage</ValueField>
</DataSetReference>
</DefaultValue>
<Prompt xml:space="preserve"> </Prompt>
<Hidden>true</Hidden>
</ReportParameter>
<ReportParameter Name="UnderPercentage">
<DataType>Integer</DataType>
<DefaultValue>
<DataSetReference>
<DataSetName>SoftwareAdminSettings</DataSetName>
<ValueField>LicenseComplianceUnderUsedPercentage</ValueField>
</DataSetReference>
</DefaultValue>
<Prompt xml:space="preserve"> </Prompt>
<Hidden>true</Hidden>
</ReportParameter>
</ReportParameters>
<Code><Script>Const LocTableStringQuery As String = "R/S[@N='{0}']/text()"

Const TimeZoneParameterName As String = "TimeZone"
Const SD_BaseTypeParameterName As String = "StartDate_BaseType"
Const SD_BaseValueParameterName As String = "StartDate_BaseValue"
Const SD_OffsetTypeParameterName As String = "StartDate_OffsetType"
Const SD_OffsetValueParameterName As String = "StartDate_OffsetValue"
Const ED_BaseTypeParameterName As String = "EndDate_BaseType"
Const ED_BaseValueParameterName As String = "EndDate_BaseValue"
Const ED_OffsetTypeParameterName As String = "EndDate_OffsetType"
Const ED_OffsetValueParameterName As String = "EndDate_OffsetValue"
Const IsRelativeTimeSupported As Boolean = False
Const TimeTypeParameterName As String = "TimeType"
Const TimeWeekMapParameterName As String = "TimeWeekMap"

Dim LocTables As System.Collections.Generic.Dictionary(Of String, Microsoft.EnterpriseManagement.Reporting.XmlStringTable)
Dim ReportTimeZone As Microsoft.EnterpriseManagement.Reporting.TimeZoneCoreInformation
Dim ReportStartDate As DateTime
Dim ReportEndDate As DateTime
Dim ReportTime As Microsoft.EnterpriseManagement.Reporting.ParameterProcessor.RelativeTime
Dim ReportCulture As System.Globalization.CultureInfo
Dim ParameterProcessor As Microsoft.EnterpriseManagement.Reporting.ParameterProcessor
Dim TargetList As String
Dim ExceededTitles As System.Collections.ArrayList
Dim CloseTitles As System.Collections.ArrayList
Dim GoodTitles As System.Collections.ArrayList


Public Function CalculateRollupAllocationStatus(MinPercentage As Integer, MaxPercentage As Integer, ExceededThreshold As Integer, CloseThreshold As Integer, UnderThreshold As Integer) As String
Dim StatusName As String = "Blank.png"

If MaxPercentage &gt;= ExceededThreshold Then
StatusName = "Exceeded.png"
Else If MaxPercentage &gt;= CloseThreshold OR MinPercentage &lt;= UnderThreshold OR MinPercentage = 0
StatusName = "Close.png"
Else
StatusName = "Good.png"
End If

Return StatusName
End Function

Public Function CalculateAssignmentStatus(Assigned As Integer, Installed As Integer, ExceededThreshold As Integer, CloseThreshold As Integer, UnderThreshold As Integer) As String
Dim StatusName As String = "Blank.png"
Dim InstalledPercentage AS Integer

If Not(Installed = 0) AND Not(Assigned = 0) Then
InstalledPercentage = Round(Installed * 100 / Assigned )
Else If Assigned = 0 AND Not(Installed = 0) Then
InstalledPercentage = 100
Else
InstalledPercentage = 0
End If

If InstalledPercentage &gt;= ExceededThreshold Then
StatusName = "Exceeded.png"
Else If InstalledPercentage &gt;= CloseThreshold OR InstalledPercentage &lt;= UnderThreshold OR (Assigned = 0 AND Installed = 0)
StatusName = "Close.png"
Else
StatusName = "Good.png"
End If

Return StatusName
End Function

Public Function IsNewExceededTitle(Title As String) As Boolean
Dim result As Boolean = true

If ExceededTitles Is Nothing Then
ExceededTitles = New System.Collections.ArrayList()
End If

If ExceededTitles.Contains(Title) Then
result = false
Else
ExceededTitles.Add(Title)
End If

return result
End Function

Public Function IsNewCloseTitle(Title As String) As Boolean
Dim result As Boolean = true

If CloseTitles Is Nothing Then
CloseTitles = New System.Collections.ArrayList()
End If

If CloseTitles.Contains(Title) Then
result = false
Else
CloseTitles.Add(Title)
End If

return result
End Function

Public Function IsNewGoodTitle(Title As String) As Boolean
Dim result As Boolean = true

If GoodTitles Is Nothing Then
GoodTitles = New System.Collections.ArrayList()
End If

If GoodTitles.Contains(Title) Then
result = false
Else
GoodTitles.Add(Title)
End If

return result
End Function


Protected Overrides Sub OnInit()
LocTables = new System.Collections.Generic.Dictionary(Of String, Microsoft.EnterpriseManagement.Reporting.XmlStringTable)()
ReportTimeZone = Microsoft.EnterpriseManagement.Reporting.TimeZoneInformation.Current
ReportStartDate = DateTime.MinValue
ReportEndDate = DateTime.MinValue
ReportTime = Nothing
ReportCulture = System.Globalization.CultureInfo.GetCultureInfo(Report.User("Language"))
ParameterProcessor = New Microsoft.EnterpriseManagement.Reporting.ParameterProcessor(ReportCulture)
TargetList =Nothing
End Sub

'Public Function GetCallingManagementGroupId() As String
' Return 'Microsoft.EnterpriseManagement.Reporting.ReportingConfiguration.M'anagementGroupId
'End Function

Public Function GetReportLocLanguageCode() As String
Return ReportCulture.ThreeLetterWindowsLanguageName
End Function

Public Function GetReportLCID() As Integer
Return ReportCulture.LCID
End Function

Public Function GetLocTable(Name As String) As Microsoft.EnterpriseManagement.Reporting.XmlStringTable
Dim LocTable As Microsoft.EnterpriseManagement.Reporting.XmlStringTable

If Not LocTables.TryGetValue(Name, LocTable) Then
LocTable = New Microsoft.EnterpriseManagement.Reporting.XmlStringTable(LocTableStringQuery, Report.Parameters(Name).Value)
LocTables.Add(Name, LocTable)
End If

Return LocTable
End Function

Public Function GetReportTimeZone() As Microsoft.EnterpriseManagement.Reporting.TimeZoneCoreInformation
If IsNothing(ReportTimeZone) Then ReportTimeZone = Microsoft.EnterpriseManagement.Reporting.TimeZoneCoreInformation.FromValueString(Report.Parameters(TimeZoneParameterName).Value)
Return ReportTimeZone
End Function

Public Function ToDbDate(ByVal DateValue As DateTime) As DateTime
return GetReportTimeZone.ToUniversalTime(DateValue)
End Function

Public Function ToReportDate(ByVal DateValue As DateTime) As DateTime
return GetReportTimeZone.ToLocalTime(DateValue)
End Function

Public Function GetReportStartDate() As DateTime
If (ReportStartDate = DateTime.MinValue) Then
If (IsRelativeTimeSupported) Then
ReportStartDate = ParameterProcessor.GetDateTime(ToReportDate(DateTime.UtcNow), Report.Parameters(SD_BaseTypeParameterName).Value, Report.Parameters(SD_BaseValueParameterName).Value, Report.Parameters(SD_OffsetTypeParameterName).Value, Report.Parameters(SD_OffsetValueParameterName).Value, Report.Parameters(TimeTypeParameterName).Value)
Else
ReportStartDate = ParameterProcessor.GetDateTime(ToReportDate(DateTime.UtcNow), Report.Parameters(SD_BaseTypeParameterName).Value, Report.Parameters(SD_BaseValueParameterName).Value, Report.Parameters(SD_OffsetTypeParameterName).Value, Report.Parameters(SD_OffsetValueParameterName).Value)
End if
End If
return ReportStartDate
End Function

Public Function GetReportEndDate() As DateTime
If (ReportEndDate = DateTime.MinValue) Then
If (IsRelativeTimeSupported) Then
ReportEndDate = ParameterProcessor.GetDateTime(ToReportDate(DateTime.UtcNow), Report.Parameters(ED_BaseTypeParameterName).Value, Report.Parameters(ED_BaseValueParameterName).Value, Report.Parameters(ED_OffsetTypeParameterName).Value, Report.Parameters(ED_OffsetValueParameterName).Value, Report.Parameters(TimeTypeParameterName).Value)
If IsBusinessHours(GetReportTimeFilter()) Then ReportEndDate = ReportCulture.Calendar.AddDays(ReportEndDate, 1)
Else
ReportEndDate = ParameterProcessor.GetDateTime(ToReportDate(DateTime.UtcNow), Report.Parameters(ED_BaseTypeParameterName).Value, Report.Parameters(ED_BaseValueParameterName).Value, Report.Parameters(ED_OffsetTypeParameterName).Value, Report.Parameters(ED_OffsetValueParameterName).Value)
End if
End If
return ReportEndDate
End Function

Public Function GetReportTimeFilter() As Microsoft.EnterpriseManagement.Reporting.ParameterProcessor.RelativeTime
If IsNothing(ReportTime) Then ReportTime = New Microsoft.EnterpriseManagement.Reporting.ParameterProcessor.RelativeTime(Report.Parameters(TimeTypeParameterName).Value, Report.Parameters(SD_BaseValueParameterName).Value, Report.Parameters(ED_BaseValueParameterName).Value, CStr(Join(Report.Parameters(TimeWeekMapParameterName).Value, ",")))
return ReportTime
End Function

Public Function IsBusinessHours(Value As Microsoft.EnterpriseManagement.Reporting.ParameterProcessor.RelativeTime) As Boolean
return (Not IsNothing(Value)) And (Value.TimeType = Microsoft.EnterpriseManagement.Reporting.ParameterProcessor.RelativeTimeType.Business)
End Function

Public Function FormatDateTime(Format As String, Value As DateTime) As String
return Value.ToString(Format, ReportCulture)
End Function

Public Function FormatNumber(Format As String, Value As Decimal) As String
return Value.ToString(Format, ReportCulture)
End Function

Public Function FormatString(Format As String, ParamArray Values() as Object) As String
return String.Format(ReportCulture, Format, Values)
End Function

Public Function NullFormatString(Format As String, Value as String) As String
return IIF(String.IsNullOrEmpty(Value), String.Empty, String.Format(ReportCulture, Format, Value))
End Function

Public Function FormatBusinessHours(Format As String, Value As Microsoft.EnterpriseManagement.Reporting.ParameterProcessor.RelativeTime) As String
Dim result As String

If IsBusinessHours(Value) Then

Dim firstDay As DayOfWeek
Dim days As System.Collections.Generic.List(Of String)

firstDay = ReportCulture.DateTimeFormat.FirstDayOfWeek
days = new System.Collections.Generic.List(Of String)()

For loopDay As DayOfWeek = DayOfWeek.Sunday To DayOfWeek.Saturday
Dim day As DayOfWeek
day = CType((CInt(loopDay) + CInt(firstDay)) Mod 7, DayOfWeek)

If value.WeekMap.Contains(day) Then days.Add(ReportCulture.DateTimeFormat.GetAbbreviatedDayName(day))
Next loopDay

result = FormatString(Format, DateTime.Today.Add(Value.StartTime).ToString(ReportCulture.DateTimeFormat.ShortTimePattern), DateTime.Today.Add(Value.EndTime).ToString(ReportCulture.DateTimeFormat.ShortTimePattern), String.Join(",", days.ToArray()))

Else
result = String.Empty
End if

return result
End Function

Public Function BuildXmlValueList(ByVal ValueList() As Object) As String
Return Microsoft.EnterpriseManagement.Reporting.MultiValueParameter.ToXml("Data", "Value", ValueList)
End Function


REM -------------------------------------------------

Dim ReportFormatList As System.Collections.Generic.Dictionary(Of String, IDataFormatter)
Const FormatListParameterName As String = "DataFormat"

REM -------------------------------------------------

Public Interface IDataFormatter
Function FormatData(ByVal Value As String) As String
End Interface

Public Class RankDataFormatter
Implements IDataFormatter

Private Series As System.Collections.Generic.SortedDictionary(Of Decimal, String)
Private Culture As System.Globalization.CultureInfo

Public Sub New(ByVal Config As System.Xml.XmlNode, ByVal ReportCulture As System.Globalization.CultureInfo)
Culture = ReportCulture
Series = New System.Collections.Generic.SortedDictionary(Of Decimal, String)()

For Each SeriesXml As System.Xml.XmlNode In Config.ChildNodes
Series.Add(Decimal.Parse(SeriesXml.Attributes("Rank").Value), SeriesXml.Attributes("Format").Value)
Next
End Sub

Public Function FormatData(ByVal Value As String) As String Implements IDataFormatter.FormatData
Dim Result As String = CDec(Value).ToString("G", Culture)

For Each FormatItem As System.Collections.Generic.KeyValuePair(Of Decimal, String) In Series
Dim RunningValue As Decimal = Math.Round(Value / FormatItem.Key)
If RunningValue &gt; 0 Then
Result = String.Format(Culture, FormatItem.Value, RunningValue.ToString("G", Culture))
Else
Exit For
End If
Next

Return Result
End Function
End Class

Public Class LookupDataFormatter
Implements IDataFormatter

Private MappingTable As System.Collections.Generic.IDictionary(Of String, String)

Public Sub New(ByVal Config As System.Xml.XmlNode)
MappingTable = New System.Collections.Generic.Dictionary(Of String, String)(StringComparer.OrdinalIgnoreCase)
For Each SeriesXml As System.Xml.XmlNode In Config.ChildNodes
MappingTable.Add(Decimal.Parse(SeriesXml.Attributes("Value").Value), SeriesXml.Attributes("Label").Value)
Next
End Sub

Public Function FormatData(ByVal Value As String) As String Implements IDataFormatter.FormatData
Dim Result As String
If MappingTable.ContainsKey(Value) Then
Result = MappingTable(Value)
Else
Result = Value
End If
Return Result
End Function
End Class

Public Function GetReportFormatList() As System.Collections.Generic.Dictionary(Of String, IDataFormatter)
If IsNothing(ReportFormatList) Then
Dim Xml As System.Xml.XmlDocument = New System.Xml.XmlDocument()
Xml.LoadXml(Report.Parameters(FormatListParameterName).Value)

ReportFormatList = New System.Collections.Generic.Dictionary(Of String, IDataFormatter)(StringComparer.OrdinalIgnoreCase)
For Each Node As System.Xml.XmlNode In Xml.DocumentElement.ChildNodes
Dim Formatter As IDataFormatter = Nothing

Select Case Node.Attributes("Type").Value.ToUpper()
Case "RANK"
Formatter = New RankDataFormatter(Node, ReportCulture)
Case "LOOKUP"
Formatter = New LookupDataFormatter(Node)
End Select

If Not IsNothing(Formatter) Then
ReportFormatList.Add(Node.Attributes("Name").Value, Formatter)
End If
Next
End If
Return ReportFormatList
End Function

Public Function FormatData(ByVal FormatName As String, ByVal DataType As String, ByVal Value As String)
Dim FormatList As System.Collections.Generic.Dictionary(Of String, IDataFormatter) = GetReportFormatList()
If Not String.IsNullOrEmpty(FormatName) And Not IsNothing(FormatList) Then
If FormatList.ContainsKey(FormatName) Then
Return FormatList(FormatName).FormatData(Value)
End If
End If

If Not String.IsNullOrEmpty(DataType) Then
If DataType = "DateTime" Then
Return FormatDateTime("g", CDate(Value))
ElseIf DataType.StartsWith("UInt") Then
Return FormatNumber("G", Value)
End If
End If

Return Value
End Function

REM ----------------------------------------

Public Dim CurrentObjectList As String

Public Function InitList(ByRef List As String) As String
List = String.Empty
Return List
End Function

Public Function AddListItem(ByRef List As String, Item as String) As String
List = List + Item
Return List
End Function

Public Function GetObjectList(ByVal OptionsXml As String) As String()
Dim Xml As System.Xml.XmlDocument
Xml = New System.Xml.XmlDocument()
Xml.LoadXml(OptionsXml)

Dim Result As System.Collections.Generic.List(Of String)
Result = New System.Collections.Generic.List(Of String)
For Each ObjectNode As System.Xml.XmlNode In Xml.SelectNodes("/Value/Object")
If Not Result.Contains(ObjectNode.InnerText) Then
Result.Add(ObjectNode.InnerText)
End If
Next

Return Result.ToArray()
End Function
</Script></Code>
<Width>9.875in</Width>
<Page>
<PageHeader>
<Height>0.577in</Height>
<PrintOnFirstPage>true</PrintOnFirstPage>
<PrintOnLastPage>true</PrintOnLastPage>
<ReportItems>
<Textbox Name="Textbox1">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Code.GetLocTable("LT_Report").GetString("RN", "[Assigned Software Titles]")</Value>
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>11pt</FontSize>
<FontWeight>Bold</FontWeight>
</Style>
</TextRun>
</TextRuns>
<Style></Style>
<TextAlign>Left</TextAlign>
</Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox1</rd:DefaultName>
<Height>0.577in</Height>
<Width>5.587in</Width>
<Style></Style>
<Border>
<Style></Style>None</Style>
</Border>
<VerticalAlign>Bottom</VerticalAlign>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
<Image Name="Image1">
<Source>External</Source>
<Value>ReportHeaderR.png</Value>
<Sizing>FitProportional</Sizing>
<Left>5.587in</Left>
<Height>0.577in</Height>
<Width>4.287in</Width>
<ZIndex>1</ZIndex>
<Style></Style>
<Border>
<Style></Style>None</Style>
</Border>
</Style>
</Image>
</ReportItems>
<Style></Style>
<Border>
<Style></Style>None</Style>
</Border>
<BackgroundColor>#bfd0ea</BackgroundColor>
</Style>
</PageHeader>
<PageFooter>
<Height>0.40625in</Height>
<PrintOnFirstPage>true</PrintOnFirstPage>
<PrintOnLastPage>true</PrintOnLastPage>
<ReportItems>
<Textbox Name="textbox25">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Globals!PageNumber &amp; "/" &amp; Globals!TotalPages</Value>
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
</Style>
</TextRun>
</TextRuns>
<Style></Style>
<TextAlign>Right</TextAlign>
</Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>textbox5</rd:DefaultName>
<Top>0.05in</Top>
<Left>8.85in</Left>
<Height>0.2in</Height>
<Width>0.95in</Width>
<Style></Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</ReportItems>
<Style></Style>
<Border>
<Style></Style>None</Style>
</Border>
</Style>
</PageFooter>
<PageHeight>8.5in</PageHeight>
<PageWidth>11in</PageWidth>
<LeftMargin>0.5in</LeftMargin>
<RightMargin>0.5in</RightMargin>
<TopMargin>0.5in</TopMargin>
<BottomMargin>0.5in</BottomMargin>
<Style /></Style>
</Page>
<Language>en-US</Language>
<CodeModules>
<CodeModule>Microsoft.EnterpriseManagement.Reporting.Code, Version=7.0.5000.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35</CodeModule>
<CodeModule>System.Xml, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</CodeModule>
</CodeModules>
<ConsumeContainerWhitespace>true</ConsumeContainerWhitespace>
<rd:ReportID>c149c887-0af1-4cb8-b2b7-057731e8b2ad</rd:ReportID>
<rd:ReportUnitType>Inch</rd:ReportUnitType>
</Report>