瀏覽代碼

Merge branch 'master' of https://greentreestudios.de/Git/GreenTree.Nachtragsmanagement

Arne Diekmann 8 年之前
父節點
當前提交
82a2b67299

+ 1 - 1
GreenTree.Nachtragsmanagement.Web.Framework/Authorization/FunctionAuthorizeAttribute.cs

@@ -66,7 +66,7 @@ namespace GreenTree.Nachtragsmanagement.Web.Framework.Authorization
             else
                 dbUser.CurrentRole = role;
 
-            _userHelper.ToCookies(dbUser, DateTime.Now.AddHours(2), true);
+            _userHelper.ToCookies(dbUser, DateTime.Now.AddHours(8), true);
 
             foreach (var function in dbUser.CurrentRole.Functions)
             {

+ 102 - 5
GreenTree.Nachtragsmanagement.Web/Controllers/AppendixController.cs

@@ -146,6 +146,7 @@ namespace GreenTree.Nachtragsmanagement.Web.Controllers
                 generator.CustomizeGroupColumnSummary += new CustomizeColumnGroupSummaryEventHandler(generator_CustomizeGroupColumnSummary);
                 generator.CustomizeTotalColumnSummary += new CustomizeColumnTotalSummaryEventHandler(generator_CustomizeTotalColumnSummary);
                 generator.PageSummaryGetResult += new SummaryGetResultHandler(generator_PageSummaryGetResult);
+                generator.TotalSummaryGetResult += new SummaryGetResultHandler(generator_TotalSummaryGetResult);
 
                 var report = generator.GenerateMVCReport(gridViewState, appendixModels, "Nachtragsliste");
 
@@ -173,11 +174,15 @@ namespace GreenTree.Nachtragsmanagement.Web.Controllers
                     {
                         case "xlsx":
                             settings.TotalSummary["OfferingValue"].DisplayFormat = "{0:c2}";
+                            settings.TotalSummary["Percentage"].DisplayFormat = "{0:p2}";
+                            settings.TotalSummary["PercentageValue"].DisplayFormat = "{0:c2}";
                             settings.TotalSummary["NegotiationValue"].DisplayFormat = "{0:c2}";
                             settings.TotalSummary["Description"].DisplayFormat = "Anzahl = {0:n0}";
                             return GridViewExtension.ExportToXlsx(settings, appendixModels);
                         case "xls":
                             settings.TotalSummary["OfferingValue"].DisplayFormat = "{0:c2}";
+                            settings.TotalSummary["Percentage"].DisplayFormat = "{0:p2}";
+                            settings.TotalSummary["PercentageValue"].DisplayFormat = "{0:c2}";
                             settings.TotalSummary["NegotiationValue"].DisplayFormat = "{0:c2}";
                             settings.TotalSummary["Description"].DisplayFormat = "Anzahl = {0:n0}";
                             return GridViewExtension.ExportToXls(settings, appendixModels);
@@ -192,9 +197,14 @@ namespace GreenTree.Nachtragsmanagement.Web.Controllers
             else
                 return new EmptyResult();
         }
-
         private decimal accumulatedCustomSummaryOfferingValue = 0;
+        private decimal accumulatedCustomSummaryPercentage = 0;
+        private decimal accumulatedCustomSummaryPercentageValue = 0;
         private decimal accumulatedCustomSummaryNegotiationValue = 0;
+        private decimal accumulatedRelationOfferingToNegotiationSum = 0;
+        private int accumulatedRelationOfferingToNegotiationCount = 0;
+        private decimal accumulatedRelationOfferingToDeviationsSum = 0;
+        private int accumulatedRelationOfferingToDeviationsCount = 0;
         private decimal accumulatedCustomSummaryCount = 0;
 
         /// <summary>
@@ -206,27 +216,104 @@ namespace GreenTree.Nachtragsmanagement.Web.Controllers
         {
             var label = (XRLabel)source;
 
+            if (label.Tag.ToString() == "Description")
+            {
+                accumulatedCustomSummaryCount += e.CalculatedValues.Count;
+                e.Result = accumulatedCustomSummaryCount;
+            }
+
             if (label.Tag.ToString() == "OfferingValue")
             {
                 accumulatedCustomSummaryOfferingValue += e.CalculatedValues.OfType<decimal>().Sum();
                 e.Result = accumulatedCustomSummaryOfferingValue;
             }
 
+            if (label.Tag.ToString() == "Percentage")
+            {
+                accumulatedCustomSummaryPercentage += e.CalculatedValues.OfType<decimal>().Sum();
+                e.Result = accumulatedCustomSummaryPercentage /
+                    (accumulatedCustomSummaryCount == 0 ? 1 : accumulatedCustomSummaryCount);
+            }
+
+            if (label.Tag.ToString() == "PercentageValue")
+            {
+                accumulatedCustomSummaryPercentageValue += e.CalculatedValues.OfType<decimal>().Sum();
+                e.Result = accumulatedCustomSummaryPercentageValue;
+            }
+
             if (label.Tag.ToString() == "NegotiationValue")
             {
                 accumulatedCustomSummaryNegotiationValue += e.CalculatedValues.OfType<decimal>().Sum();
                 e.Result = accumulatedCustomSummaryNegotiationValue;
             }
 
-            if (label.Tag.ToString() == "Description")
+            if (label.Tag.ToString() == "RelationOfferingToNegotiation")
             {
-                accumulatedCustomSummaryCount += e.CalculatedValues.Count;
-                e.Result = accumulatedCustomSummaryCount;
+                var nonNull = e.CalculatedValues
+                    .OfType<decimal?>()
+                    .Where(d => d.HasValue)
+                    .ToList();
+
+                accumulatedRelationOfferingToNegotiationSum += nonNull.Sum(d => d.Value);
+                accumulatedRelationOfferingToNegotiationCount += nonNull.Count;
+
+                e.Result = accumulatedRelationOfferingToNegotiationSum / 
+                    (accumulatedRelationOfferingToNegotiationCount == 0 ? 1 : accumulatedRelationOfferingToNegotiationCount);
+            }
+
+            if (label.Tag.ToString() == "RelationOfferingToDeviations")
+            {
+                var nonNull = e.CalculatedValues
+                    .OfType<decimal?>()
+                    .Where(d => d.HasValue)
+                    .ToList();
+
+                accumulatedRelationOfferingToDeviationsSum += nonNull.Sum(d => d.Value);
+                accumulatedRelationOfferingToDeviationsCount += nonNull.Count;
+
+                e.Result = accumulatedRelationOfferingToDeviationsSum /
+                    (accumulatedRelationOfferingToDeviationsCount == 0 ? 1 : accumulatedRelationOfferingToDeviationsCount);
             }
 
             e.Handled = true;
         }
 
+        /// <summary>
+        /// Set custom summary result for full report
+        /// </summary>
+        /// <param name="source"></param>
+        /// <param name="e"></param>
+        private void generator_TotalSummaryGetResult(object source, SummaryGetResultEventArgs e)
+        {
+            var label = (XRLabel)source;
+
+            if (label.Tag.ToString() == "PercentageValue")
+            {
+                e.Result = accumulatedCustomSummaryPercentageValue;
+                e.Handled = true;
+            }
+
+            if (label.Tag.ToString() == "NegotiationValue")
+            {
+                e.Result = accumulatedCustomSummaryNegotiationValue;
+                e.Handled = true;
+            }
+
+            if (label.Tag.ToString() == "RelationOfferingToNegotiation")
+            {
+                e.Result = accumulatedRelationOfferingToNegotiationSum /
+                    (accumulatedRelationOfferingToNegotiationCount == 0 ? 1 : accumulatedRelationOfferingToNegotiationCount);
+                e.Handled = true;
+            }
+
+            if (label.Tag.ToString() == "RelationOfferingToDeviations")
+            {
+                e.Result = accumulatedRelationOfferingToDeviationsSum /
+                    (accumulatedRelationOfferingToDeviationsCount == 0 ? 1 : accumulatedRelationOfferingToDeviationsCount);
+                e.Handled = true;
+            }
+        }
+
         /// <summary>
         /// Customize formatting
         /// </summary>
@@ -263,12 +350,14 @@ namespace GreenTree.Nachtragsmanagement.Web.Controllers
                 if (column.FieldName == "SiteCustomNumber") { column.IsVisible = false; column.IsDetail = true; }
                 if (column.FieldName == "UserDescription") { column.IsVisible = false; column.IsDetail = true; }
                 if (column.FieldName == "OfferingValue") { column.ColumnWidth = 80; }
-                if (column.FieldName == "NegotiationValue") { column.ColumnWidth = 80; }
+                if (column.FieldName == "NegotiationValue") { column.ColumnWidth = 60; }
                 if (column.FieldName == "DeviationDescription") { column.ColumnWidth = 40; }
                 if (column.FieldName == "RelationOfferingToNegotiation") { column.ColumnWidth = 50; }
                 if (column.FieldName == "RelationOfferingToDeviations") { column.ColumnWidth = 50; }
                 if (column.FieldName == "StateDescription") { column.ColumnWidth = 70; }
                 if (column.FieldName == "CategoryValuesDescription") { column.IsVisible = false; column.IsDetail = true; }
+                if (column.FieldName == "OrderNumber") { column.IsVisible = false; column.IsDetail = true; }
+                if (column.FieldName == "OrderDate") { column.IsVisible = false; column.IsDetail = true; }
                 if (column.FieldName == "OrderInvoiceCreatedDescription") { column.ColumnWidth = 45; }
                 if (column.FieldName == "Comment") { column.IsVisible = false; column.IsDetail = true; }
             }
@@ -280,7 +369,11 @@ namespace GreenTree.Nachtragsmanagement.Web.Controllers
         private void generator_CustomizeGroupColumnSummary(object source, ColumnSummaryCreationEventArgs e)
         {
             if (e.FieldName == "OfferingValue") { e.Summary.FormatString = "Angeb. ∑ = {0:c2}"; }
+            if (e.FieldName == "Percentage") { e.Summary.FormatString = "Bew. Ø = {0:p2}"; }
+            if (e.FieldName == "PercentageValue") { e.Summary.FormatString = "Ang. Bew. ∑ = {0:c2}"; }
             if (e.FieldName == "NegotiationValue") { e.Summary.FormatString = "Verhand. ∑ = {0:c2}"; }
+            if (e.FieldName == "RelationOfferingToNegotiation") { e.Summary.FormatString = "Verh. Quo. Ø = {0:p2}"; }
+            if (e.FieldName == "RelationOfferingToDeviations") { e.Summary.FormatString = "Fak. Ang. zu VA Ø = {0:n2}"; }
             if (e.FieldName == "Description") { e.Summary.FormatString = "Alle = {0:n0}"; }
         }
 
@@ -290,7 +383,11 @@ namespace GreenTree.Nachtragsmanagement.Web.Controllers
         private void generator_CustomizeTotalColumnSummary(object source, ColumnSummaryCreationEventArgs e)
         {
             if (e.FieldName == "OfferingValue") { e.Summary.FormatString = "{0:c2}"; }
+            if (e.FieldName == "Percentage") { e.Summary.FormatString = "{0:p2}"; }
+            if (e.FieldName == "PercentageValue") { e.Summary.FormatString = "{0:c2}"; }
             if (e.FieldName == "NegotiationValue") { e.Summary.FormatString = "{0:c2}"; }
+            if (e.FieldName == "RelationOfferingToNegotiation") { e.Summary.FormatString = "{0:p2}"; }
+            if (e.FieldName == "RelationOfferingToDeviations") { e.Summary.FormatString = "{0:n2}"; }
             if (e.FieldName == "Description") { e.Summary.FormatString = "Alle = {0:n0}"; }
         }
 

+ 55 - 0
GreenTree.Nachtragsmanagement.Web/Controllers/DeviationController.cs

@@ -186,6 +186,7 @@ namespace GreenTree.Nachtragsmanagement.Web.Controllers
                             settings.TotalSummary["Value"].DisplayFormat = "{0:c2}";
                             settings.TotalSummary["Percentage"].DisplayFormat = "{0:p0}";
                             settings.TotalSummary["PercentageValue"].DisplayFormat = "{0:c2}";
+                            settings.TotalSummary["StatusDescription"].DisplayFormat = "{0:c2}";
                             settings.TotalSummary["DaysReceiptToAppendixOffering"].DisplayFormat = "Schnitt = {0:n0}";
                             settings.TotalSummary["SiteDescription"].DisplayFormat = "Anzahl = {0:n0}";
                             settings.TotalSummary["DisturbanceValuesDescription"].DisplayFormat = "{0:c2}";
@@ -194,6 +195,7 @@ namespace GreenTree.Nachtragsmanagement.Web.Controllers
                             settings.TotalSummary["Value"].DisplayFormat = "{0:c2}";
                             settings.TotalSummary["Percentage"].DisplayFormat = "{0:p0}";
                             settings.TotalSummary["PercentageValue"].DisplayFormat = "{0:c2}";
+                            settings.TotalSummary["StatusDescription"].DisplayFormat = "{0:c2}";
                             settings.TotalSummary["DaysReceiptToAppendixOffering"].DisplayFormat = "Schnitt = {0:n0}";
                             settings.TotalSummary["SiteDescription"].DisplayFormat = "Anzahl = {0:n0}";
                             settings.TotalSummary["DisturbanceValuesDescription"].DisplayFormat = "{0:c2}";
@@ -213,6 +215,7 @@ namespace GreenTree.Nachtragsmanagement.Web.Controllers
         private decimal totalCustomSummaryValueDaysReceiptToAppendixOffering = 0;
         private decimal totalCustomSummaryValueDaysReceiptToAppendixOfferingCount = 0;
         private decimal totalCustomSummaryValueDisturbanceValueSum = 0;
+        private decimal totalCustomSummaryPercentageValueZeroStatusSum = 0;
 
         private decimal accumulatedCustomSummaryValueDaysReceiptToAppendixOffering = 0;
         private int accumulatedCustomSummaryValueDaysReceiptToAppendixOfferingCount = 0;
@@ -222,6 +225,9 @@ namespace GreenTree.Nachtragsmanagement.Web.Controllers
         private decimal accumulatedCustomSummaryPercentageValue = 0;
         private decimal accumulatedCustomSummaryValue = 0;
         private decimal accumulatedCustomSummaryCount = 0;
+        private decimal accumulatedCustomSummaryPercentageValueZeroStatusSum = 0;
+        private List<decimal> accumulatedCustomSummaryPercentageValueZeroStatusSumList = new List<decimal>();
+        private int accumulatedCustomSummaryPercentageValueZeroStatusIndex = 0;
 
         /// <summary>
         /// Reset custom summaries for corresponding group type
@@ -238,6 +244,14 @@ namespace GreenTree.Nachtragsmanagement.Web.Controllers
 
             if (e.FieldName == "DisturbanceValuesDescription")
                 totalCustomSummaryValueDisturbanceValueSum = 0;
+
+            if (e.FieldName == "StatusDescription")
+            {
+                totalCustomSummaryPercentageValueZeroStatusSum = 0;
+                accumulatedCustomSummaryPercentageValueZeroStatusSum = 0;
+                accumulatedCustomSummaryPercentageValueZeroStatusSumList.Clear();
+                accumulatedCustomSummaryPercentageValueZeroStatusIndex = 0;
+            }
         }
 
         /// <summary>
@@ -263,6 +277,26 @@ namespace GreenTree.Nachtragsmanagement.Web.Controllers
                 totalCustomSummaryValueDisturbanceValueSum +=
                     Convert.ToDecimal(((XtraReport)source).GetCurrentColumnValue("DisturbanceValueSum"));
             }
+
+            if (e.FieldName == "StatusDescription")
+            {
+                var isZeroValueSum = ((XtraReport)source).GetCurrentColumnValue("IsZeroSummarize");
+
+                if (isZeroValueSum == null || (isZeroValueSum != null && !Convert.ToBoolean(isZeroValueSum)))
+                {
+                    var percentageValue = ((XtraReport)source).GetCurrentColumnValue("PercentageValue");
+
+                    if (percentageValue != null)
+                    {
+                        totalCustomSummaryPercentageValueZeroStatusSum += (decimal)percentageValue;
+                        accumulatedCustomSummaryPercentageValueZeroStatusSumList.Add((decimal)percentageValue);
+                    }
+                    else
+                        accumulatedCustomSummaryPercentageValueZeroStatusSumList.Add(0);
+                }
+                else
+                    accumulatedCustomSummaryPercentageValueZeroStatusSumList.Add(0);
+            }
         }
 
         /// <summary>
@@ -334,6 +368,19 @@ namespace GreenTree.Nachtragsmanagement.Web.Controllers
                 e.Result = accumulatedCustomSummaryPercentageValue;
             }
 
+            if (label.Tag.ToString() == "StatusDescription")
+            {
+                accumulatedCustomSummaryPercentageValueZeroStatusSum +=
+                    accumulatedCustomSummaryPercentageValueZeroStatusSumList
+                        .Skip(accumulatedCustomSummaryPercentageValueZeroStatusIndex)
+                        .Take(e.CalculatedValues.Count)
+                        .Sum();
+
+                e.Result = accumulatedCustomSummaryPercentageValueZeroStatusSum;
+
+                accumulatedCustomSummaryPercentageValueZeroStatusIndex += e.CalculatedValues.Count;
+            }
+
             e.Handled = true;
         }
 
@@ -360,6 +407,12 @@ namespace GreenTree.Nachtragsmanagement.Web.Controllers
                 e.Result = totalCustomSummaryValueDisturbanceValueSum;
                 e.Handled = true;
             }
+
+            if (label.Tag.ToString() == "StatusDescription")
+            {
+                e.Result = totalCustomSummaryPercentageValueZeroStatusSum;
+                e.Handled = true;
+            }
         }
 
         /// <summary>
@@ -425,6 +478,7 @@ namespace GreenTree.Nachtragsmanagement.Web.Controllers
             if (e.FieldName == "Value") { e.Summary.FormatString = "Schätzung ∑ = {0:c2}"; }
             if (e.FieldName == "Percentage") { e.Summary.FormatString = "Bew. Ø = {0:p0}"; }
             if (e.FieldName == "PercentageValue") { e.Summary.FormatString = "S. Bew. ∑ = {0:c2}"; }
+            if (e.FieldName == "StatusDescription") { e.Summary.FormatString = "S. o. Sta. ∑ = {0:c2}"; }
             if (e.FieldName == "DaysReceiptToAppendixOffering") { e.Summary.FormatString = "Tage VA-NT = {0:n0}"; }
             if (e.FieldName == "DisturbanceValuesDescription") { e.Summary.FormatString = "Kat. ∑ = {0:c2}"; }
         }
@@ -438,6 +492,7 @@ namespace GreenTree.Nachtragsmanagement.Web.Controllers
             if (e.FieldName == "Value") { e.Summary.FormatString = "{0:c2}"; }
             if (e.FieldName == "Percentage") { e.Summary.FormatString = "{0:p0}"; }
             if (e.FieldName == "PercentageValue") { e.Summary.FormatString = "{0:c2}"; }
+            if (e.FieldName == "StatusDescription") { e.Summary.FormatString = "{0:c2}"; }
             if (e.FieldName == "DaysReceiptToAppendixOffering") { e.Summary.FormatString = "{0:n0}"; }
             if (e.FieldName == "DisturbanceValuesDescription") { e.Summary.FormatString = "{0:c2}"; }
         }

+ 1 - 1
GreenTree.Nachtragsmanagement.Web/Controllers/LoginController.cs

@@ -66,7 +66,7 @@ namespace GreenTree.Nachtragsmanagement.Web.Controllers
                 if (model.IsPermanent.HasValue && model.IsPermanent.Value)
                     _userHelper.ToCookies(user, DateTime.Now.AddYears(1));
                 else
-                    _userHelper.ToCookies(user, DateTime.Now.AddHours(2));
+                    _userHelper.ToCookies(user, DateTime.Now.AddHours(8));
 
                 _logger.Debug(
                     String.Format("Login für Benutzer \"{0}\" erfolgreich.", model.Username));