text/microsoft-resx
2.0
System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
17, 17
select t.Id as TeamId, t.Name as TeamName, p."Name" + ISNULL(': ' + parent."Name", '') as "ProjectFullName", sc."Name" as ScenarioName,sc."ExpectedGrossMargin",sc."CalculatedGrossMargin",sc."StartDate",sc."EndDate",sc."Status",sc."TDDirectCosts",sc."BUDirectCosts",sc."ExpectedGrossMargin_LM",sc."CalculatedGrossMargin_LM",sc."TDDirectCosts_LM",sc."BUDirectCosts_LM",sc."Actuals_BUDirectCosts",sc."Actuals_BUDirectCosts_LM",sc."ProjectedExpense",sc."GrowthScenario",sc."CostSavings",sc."CostSavingsStartDate",sc."CostSavingsEndDate",sc."ProjectedRevenue",
p."Priority",p."IsRevenueGenerating",p."Deadline",p."ParentProjectId",
parent."Name" as ParentProjectName
from Scenario sc
inner join Project p on p."Id" = sc."ParentId"
inner join Team2Project t2p on t2p.ProjectId = p.Id
inner join Team t on t.Id = t2p.TeamId
left join Project parent on parent."Id" = p."ParentProjectId"
where sc.Type <> 9 and sc.Status = 1
PERhdGFTZXQgTmFtZT0ic3FsRGF0YVNvdXJjZTEiPjxWaWV3IE5hbWU9IkN1c3RvbVNxbFF1ZXJ5Ij48RmllbGQgTmFtZT0iVGVhbUlkIiBUeXBlPSJHdWlkIiAvPjxGaWVsZCBOYW1lPSJUZWFtTmFtZSIgVHlwZT0iU3RyaW5nIiAvPjxGaWVsZCBOYW1lPSJQcm9qZWN0RnVsbE5hbWUiIFR5cGU9IlN0cmluZyIgLz48RmllbGQgTmFtZT0iU2NlbmFyaW9OYW1lIiBUeXBlPSJTdHJpbmciIC8+PEZpZWxkIE5hbWU9IkV4cGVjdGVkR3Jvc3NNYXJnaW4iIFR5cGU9IkRlY2ltYWwiIC8+PEZpZWxkIE5hbWU9IkNhbGN1bGF0ZWRHcm9zc01hcmdpbiIgVHlwZT0iRGVjaW1hbCIgLz48RmllbGQgTmFtZT0iU3RhcnREYXRlIiBUeXBlPSJEYXRlVGltZSIgLz48RmllbGQgTmFtZT0iRW5kRGF0ZSIgVHlwZT0iRGF0ZVRpbWUiIC8+PEZpZWxkIE5hbWU9IlN0YXR1cyIgVHlwZT0iSW50MzIiIC8+PEZpZWxkIE5hbWU9IlRERGlyZWN0Q29zdHMiIFR5cGU9IkRlY2ltYWwiIC8+PEZpZWxkIE5hbWU9IkJVRGlyZWN0Q29zdHMiIFR5cGU9IkRlY2ltYWwiIC8+PEZpZWxkIE5hbWU9IkV4cGVjdGVkR3Jvc3NNYXJnaW5fTE0iIFR5cGU9IkRlY2ltYWwiIC8+PEZpZWxkIE5hbWU9IkNhbGN1bGF0ZWRHcm9zc01hcmdpbl9MTSIgVHlwZT0iRGVjaW1hbCIgLz48RmllbGQgTmFtZT0iVEREaXJlY3RDb3N0c19MTSIgVHlwZT0iRGVjaW1hbCIgLz48RmllbGQgTmFtZT0iQlVEaXJlY3RDb3N0c19MTSIgVHlwZT0iRGVjaW1hbCIgLz48RmllbGQgTmFtZT0iQWN0dWFsc19CVURpcmVjdENvc3RzIiBUeXBlPSJEZWNpbWFsIiAvPjxGaWVsZCBOYW1lPSJBY3R1YWxzX0JVRGlyZWN0Q29zdHNfTE0iIFR5cGU9IkRlY2ltYWwiIC8+PEZpZWxkIE5hbWU9IlByb2plY3RlZEV4cGVuc2UiIFR5cGU9IkRlY2ltYWwiIC8+PEZpZWxkIE5hbWU9Ikdyb3d0aFNjZW5hcmlvIiBUeXBlPSJCb29sZWFuIiAvPjxGaWVsZCBOYW1lPSJDb3N0U2F2aW5ncyIgVHlwZT0iRGVjaW1hbCIgLz48RmllbGQgTmFtZT0iQ29zdFNhdmluZ3NTdGFydERhdGUiIFR5cGU9IkRhdGVUaW1lIiAvPjxGaWVsZCBOYW1lPSJDb3N0U2F2aW5nc0VuZERhdGUiIFR5cGU9IkRhdGVUaW1lIiAvPjxGaWVsZCBOYW1lPSJQcm9qZWN0ZWRSZXZlbnVlIiBUeXBlPSJEZWNpbWFsIiAvPjxGaWVsZCBOYW1lPSJQcmlvcml0eSIgVHlwZT0iSW50MzIiIC8+PEZpZWxkIE5hbWU9IklzUmV2ZW51ZUdlbmVyYXRpbmciIFR5cGU9IkJvb2xlYW4iIC8+PEZpZWxkIE5hbWU9IkRlYWRsaW5lIiBUeXBlPSJEYXRlVGltZSIgLz48RmllbGQgTmFtZT0iUGFyZW50UHJvamVjdElkIiBUeXBlPSJHdWlkIiAvPjxGaWVsZCBOYW1lPSJQYXJlbnRQcm9qZWN0TmFtZSIgVHlwZT0iU3RyaW5nIiAvPjwvVmlldz48L0RhdGFTZXQ+
using System;
using System.Web;
using System.Linq;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.IO;
using System.Xml;
using DevExpress.Data.Filtering;
List<GroupField> _sortinParams = new List<GroupField>();
const string SortedColumnSuffix_Ascending = " ▼";
const string SortedColumnSuffix_Descending = " ▲";
private void ReportBase_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e) {
if (this.Parameters.Any<DevExpress.Data.IParameter>(t=>t.Name == "__RPT_BASE_PARAM_SORT_FIELD") &&
this.Parameters.Any<DevExpress.Data.IParameter>(t=>t.Name == "__RPT_BASE_PARAM_SORT_DIR"))
{
var keysXml = (string)this.Parameters["__RPT_BASE_PARAM_SORT_FIELD"].Value;
var valuesXml = (string)this.Parameters["__RPT_BASE_PARAM_SORT_DIR"].Value;
if (!string.IsNullOrWhiteSpace(keysXml) && !string.IsNullOrWhiteSpace(valuesXml))
{
var keys = Deserialize<List<string>>(keysXml);
var values = Deserialize<List<bool>>(valuesXml);
if (keys != null && values != null && keys.Count > 0 && keys.Count == values.Count)
for (var i=0; i<keys.Count; i++)
{
_sortinParams.Add(new GroupField(keys[i], values[i] ? XRColumnSortOrder.Ascending : XRColumnSortOrder.Descending));
}
}
Detail.SortFields.Clear();
Detail.SortFields.AddRange(_sortinParams.ToArray());
}
}
private void ReportBase_DataSourceDemanded(object sender, System.EventArgs e) {
List<CriteriaOperator> operators = new List<CriteriaOperator>();
var val = System.Web.HttpContext.Current;
if (val != null)
{
var session = val.Session;
}
// setup param default values here
DateTime? dateFrom = DateTime.Today.AddMonths(-6);
DateTime? dateTo = DateTime.Today.AddMonths(6);
Guid[] teams = new Guid[0];
decimal ProjectedRevenue = 0;
// get param values if not empty
if (this.Parameters["StartDate"] != null && this.Parameters["StartDate"].RawValue != null)
{
dateFrom = (DateTime)this.Parameters["StartDate"].Value;
}
if (this.Parameters["EndDate"] != null && this.Parameters["EndDate"].RawValue != null)
{
dateTo = (DateTime)this.Parameters["EndDate"].Value;
}
if (this.Parameters["Team"] != null)
{
teams = (Guid[])this.Parameters["Team"].Value;
}
if (this.Parameters["Cost"] != null)
{
ProjectedRevenue=(decimal)this.Parameters["Cost"].Value;
}
// build filter operators using for not default values
if (dateFrom.HasValue)
{
operators.Add(new BinaryOperator("EndDate", dateFrom.Value, BinaryOperatorType.GreaterOrEqual));
}
if (dateTo.HasValue)
{
operators.Add(new BinaryOperator("EndDate", dateTo.Value.AddDays(1), BinaryOperatorType.Less));
}
if (teams.Length > 0)
{
operators.Add(new InOperator("TeamId", teams));
}
if (ProjectedRevenue > 0)
{
operators.Add(new BinaryOperator("BUDirectCosts", ProjectedRevenue, BinaryOperatorType.GreaterOrEqual));
}
// convert filter operators to filterstring
GroupOperator collection = new GroupOperator(GroupOperatorType.And, operators);
this.FilterString = collection.ToString();
}
public void HeaderCell_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e)
{
XRLabel headerCell = sender as XRLabel;
string fieldName = (string)headerCell.Tag;
GroupField sort = _sortinParams.Find(sortField => sortField.FieldName == fieldName);
// рисуем иконку направления сортировки, если это поле перечислено в _sortinParams сво-ве
headerCell.Text = headerCell.Text.Replace(SortedColumnSuffix_Ascending, "");
headerCell.Text = headerCell.Text.Replace(SortedColumnSuffix_Descending, "");
if (sort != null)
{
headerCell.Text += (sort.SortOrder == XRColumnSortOrder.Ascending)
? SortedColumnSuffix_Ascending
: SortedColumnSuffix_Descending;
}
headerCell.NavigateUrl = String.Format("javascript:void('{0}')", headerCell.Tag);
}
public T Deserialize<T>(string input) where T : class
{
System.Xml.Serialization.XmlSerializer ser = new System.Xml.Serialization.XmlSerializer(typeof(T));
using (StringReader sr = new StringReader(input))
return (T)ser.Deserialize(sr);
}