Explorar el Código

Verbesserungen & Start Import

Arne Diekmann hace 5 años
padre
commit
f1ff9c02b4

+ 20 - 2
GreenTree.Strohrmann.ERP.Web/Controllers/CraftController.cs

@@ -1,5 +1,6 @@
 using System;
 using System;
 using System.Collections.Generic;
 using System.Collections.Generic;
+using System.Globalization;
 using System.Linq;
 using System.Linq;
 using System.Net.Http;
 using System.Net.Http;
 using System.Threading.Tasks;
 using System.Threading.Tasks;
@@ -292,6 +293,22 @@ namespace GreenTree.Strohrmann.ERP.Web.Controllers
             return Ok(result);
             return Ok(result);
         }
         }
 
 
+        // POST: CraftController/GetMaterialUnit
+        [HttpPost]
+        public ActionResult GetMaterialUnit(CraftMaterialModel craftMaterialModel)
+        {
+            if (craftMaterialModel == null)
+                return Ok(0);
+
+            if (craftMaterialModel.MaterialId == default)
+                return Ok(0);
+
+            var material = _eRPDbContext.Materials.Find(craftMaterialModel.MaterialId);
+            var result = material.DefaultUnit.ShortName;
+
+            return Ok(result);
+        }
+
         #endregion
         #endregion
 
 
         #region Helper
         #region Helper
@@ -305,8 +322,9 @@ namespace GreenTree.Strohrmann.ERP.Web.Controllers
                 _eRPDbContext.Employees
                 _eRPDbContext.Employees
                     .ToList()
                     .ToList()
                     .Select(e => new EmployeeModel(e)),
                     .Select(e => new EmployeeModel(e)),
-                e => e.Id, e => String.Format("{0} {1} ({2} - {3:n0}€ / Std.)",
-                    e.Firstname, e.Lastname, e.EmployeeDegree.Name, e.EmployeeDegree.Value));
+                e => e.Id, e => String.Format("{0} {1} ({2} - {3:n0}{4} / Std.)",
+                    e.Firstname, e.Lastname, e.EmployeeDegree.Name, e.EmployeeDegree.Value, 
+                    CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol));
         }
         }
 
 
         /// <summary>
         /// <summary>

+ 20 - 1
GreenTree.Strohrmann.ERP.Web/Models/Business/CraftMaterialModel.cs

@@ -56,7 +56,25 @@ namespace GreenTree.Strohrmann.ERP.Web.Models.Business
         /// The amount of the material
         /// The amount of the material
         /// </summary>
         /// </summary>
         [Display(Name = "Menge")]
         [Display(Name = "Menge")]
-        public float Amount { get; set; }
+        public float Amount
+        {
+            get
+            {
+                return String.IsNullOrEmpty(AmountText)
+                    ? 0
+                    : Convert.ToSingle(AmountText.Replace('.', ','));
+            }
+            set
+            {
+                AmountText = value.ToString();
+            }
+        }
+
+        /// <summary>
+        /// The amount of the material as text
+        /// </summary>
+        [Display(Name = "Menge")]
+        public string AmountText { get; set; }
 
 
         /// <summary>
         /// <summary>
         /// The material calculation factor
         /// The material calculation factor
@@ -104,6 +122,7 @@ namespace GreenTree.Strohrmann.ERP.Web.Models.Business
 
 
             CraftId = craftMaterial.CraftId;
             CraftId = craftMaterial.CraftId;
             MaterialId = craftMaterial.MaterialId;
             MaterialId = craftMaterial.MaterialId;
+            Material = new MaterialModel(craftMaterial.Material);
             Amount = craftMaterial.Amount;
             Amount = craftMaterial.Amount;
             MaterialText = craftMaterial.Material.Name;
             MaterialText = craftMaterial.Material.Name;
             CalculationFactor = craftMaterial.CalculationFactor;
             CalculationFactor = craftMaterial.CalculationFactor;

+ 71 - 73
GreenTree.Strohrmann.ERP.Web/Views/Craft/Create.cshtml

@@ -126,79 +126,77 @@
                 </div>
                 </div>
             </div>
             </div>
             <div class="card bg-light mt-3">
             <div class="card bg-light mt-3">
-                <div class="card bg-light">
-                    <div class="card-header pb-1">
-                        <h6 class="float-left">Materialien</h6>
-                        <a class="float-right" href="#" onclick="addCraftMaterialPartial()">Hinzufügen</a>
-                    </div>
-                    <div id="craftmateriallist" class="card-body">
-                        @if (Model != null && Model.CraftMaterials != null)
-				        {
-                            @foreach (var item in Model.CraftMaterials)
-					        {
-                                @await Html.PartialAsync("_CraftMaterialPartial", item.Value)
-					        }
-				        }
-				        else
-				        {
-                            @await Html.PartialAsync("_CraftMaterialPartial")
-				        }
-                    </div>
-                    <div class="card-footer">
-                        <div class="row">
-                            <div class="col-3">
-                                <h5 class="mb-0">
-                                    <span class="badge badge-info">
-                                        <span class="fa fa-hashtag" aria-label="Anzahl"> </span>
-                                        @if (Model != null && Model.CraftMaterials != null)
-				                        {
-                                            <span id="aggMaterialCount">
-                                                @Model.CraftMaterials.Values.Count
-                                            </span>
-				                        }
-				                        else
-				                        {
-                                            <span id="aggMaterialCount">1</span>
-				                        }
-                                    </span>
-                                </h5>
-                            </div>
-                            <div class="col-2">
-                            </div>
-                            <div class="col-3">
-                                <h5 class="mb-0">
-                                    <span class="badge badge-info">
-                                        <img height="14" src="~/img/icon-average-48.png" alt="Durchschnitt" title="Durchschnitt" />
-                                        @if (Model != null && Model.CraftMaterials != null)
-				                        {
-                                            <span id="aggMaterialCalculationFactorAvg">
-                                                @String.Format("{0} %", Model.CraftMaterials.Values.Average(m => m.CalculationFactor))
-                                            </span>
-				                        }
-				                        else
-				                        {
-                                            <span id="aggMaterialCalculationFactorAvg"> -</span>
-				                        }
-                                    </span>
-                                </h5>
-                            </div>
-                            <div class="col-4">
-                                <h5 class="mb-0">
-                                    <span class="badge badge-info">
-                                        <img height="14" src="~/img/icon-sigma-48.png" alt="Summe" title="Summe" />
-                                        @if (Model != null && Model.CraftMaterials != null)
-				                        {
-                                            <span id="aggMaterialValueSum">
-                                                @String.Format("{0} €", Model.CraftMaterials.Values.Sum(m => m.Value))
-                                            </span>
-				                        }
-				                        else
-				                        {
-                                            <span id="aggMaterialValueSum"> -</span>
-				                        }
-                                    </span>
-                                </h5>
-                            </div>
+                <div class="card-header pb-1">
+                    <h6 class="float-left">Materialien</h6>
+                    <a class="float-right" href="#" onclick="addCraftMaterialPartial()">Hinzufügen</a>
+                </div>
+                <div id="craftmateriallist" class="card-body">
+                    @if (Model != null && Model.CraftMaterials != null)
+				    {
+                        @foreach (var item in Model.CraftMaterials)
+					    {
+                            @await Html.PartialAsync("_CraftMaterialPartial", item.Value)
+					    }
+				    }
+				    else
+				    {
+                        @await Html.PartialAsync("_CraftMaterialPartial")
+				    }
+                </div>
+                <div class="card-footer">
+                    <div class="row">
+                        <div class="col-3">
+                            <h5 class="mb-0">
+                                <span class="badge badge-info">
+                                    <span class="fa fa-hashtag" aria-label="Anzahl"> </span>
+                                    @if (Model != null && Model.CraftMaterials != null)
+				                    {
+                                        <span id="aggMaterialCount">
+                                            @Model.CraftMaterials.Values.Count
+                                        </span>
+				                    }
+				                    else
+				                    {
+                                        <span id="aggMaterialCount">1</span>
+				                    }
+                                </span>
+                            </h5>
+                        </div>
+                        <div class="col-2">
+                        </div>
+                        <div class="col-3">
+                            <h5 class="mb-0">
+                                <span class="badge badge-info">
+                                    <img height="14" src="~/img/icon-average-48.png" alt="Durchschnitt" title="Durchschnitt" />
+                                    @if (Model != null && Model.CraftMaterials != null)
+				                    {
+                                        <span id="aggMaterialCalculationFactorAvg">
+                                            @String.Format("{0} %", Model.CraftMaterials.Values.Average(m => m.CalculationFactor))
+                                        </span>
+				                    }
+				                    else
+				                    {
+                                        <span id="aggMaterialCalculationFactorAvg"> -</span>
+				                    }
+                                </span>
+                            </h5>
+                        </div>
+                        <div class="col-4">
+                            <h5 class="mb-0">
+                                <span class="badge badge-info">
+                                    <img height="14" src="~/img/icon-sigma-48.png" alt="Summe" title="Summe" />
+                                    @if (Model != null && Model.CraftMaterials != null)
+				                    {
+                                        <span id="aggMaterialValueSum">
+                                            @String.Format("{0} €", Model.CraftMaterials.Values.Sum(m => m.Value))
+                                        </span>
+				                    }
+				                    else
+				                    {
+                                        <span id="aggMaterialValueSum"> -</span>
+				                    }
+                                </span>
+                            </h5>
                         </div>
                         </div>
                     </div>
                     </div>
                 </div>
                 </div>

+ 71 - 73
GreenTree.Strohrmann.ERP.Web/Views/Craft/Edit.cshtml

@@ -128,79 +128,77 @@
                 </div>
                 </div>
             </div>
             </div>
             <div class="card bg-light mt-3">
             <div class="card bg-light mt-3">
-                <div class="card bg-light">
-                    <div class="card-header pb-1">
-                        <h6 class="float-left">Materialien</h6>
-                        <a class="float-right" href="#" onclick="addCraftMaterialPartial()">Hinzufügen</a>
-                    </div>
-                    <div id="craftmateriallist" class="card-body">
-                        @if (Model != null && Model.CraftMaterials != null)
-				        {
-                            @foreach (var item in Model.CraftMaterials)
-					        {
-                                @await Html.PartialAsync("_CraftMaterialPartial", item.Value)
-					        }
-				        }
-				        else
-				        {
-                            @await Html.PartialAsync("_CraftMaterialPartial")
-				        }
-                    </div>
-                    <div class="card-footer">
-                        <div class="row">
-                            <div class="col-3">
-                                <h5 class="mb-0">
-                                    <span class="badge badge-info">
-                                        <span class="fa fa-hashtag" aria-label="Anzahl"> </span>
-                                        @if (Model != null && Model.CraftMaterials != null)
-				                        {
-                                            <span id="aggMaterialCount">
-                                                @Model.CraftMaterials.Values.Count
-                                            </span>
-				                        }
-				                        else
-				                        {
-                                            <span id="aggMaterialCount">1</span>
-				                        }
-                                    </span>
-                                </h5>
-                            </div>
-                            <div class="col-2">
-                            </div>
-                            <div class="col-3">
-                                <h5 class="mb-0">
-                                    <span class="badge badge-info">
-                                        <img height="14" src="~/img/icon-average-48.png" alt="Durchschnitt" title="Durchschnitt" />
-                                        @if (Model != null && Model.CraftMaterials != null)
-				                        {
-                                            <span id="aggMaterialCalculationFactorAvg">
-                                                @String.Format("{0:G29} %", Model.CraftMaterials.Values.Average(m => m.CalculationFactor))
-                                            </span>
-				                        }
-				                        else
-				                        {
-                                            <span id="aggMaterialCalculationFactorAvg"> -</span>
-				                        }
-                                    </span>
-                                </h5>
-                            </div>
-                            <div class="col-4">
-                                <h5 class="mb-0">
-                                    <span class="badge badge-info">
-                                        <img height="14" src="~/img/icon-sigma-48.png" alt="Summe" title="Summe" />
-                                        @if (Model != null && Model.CraftMaterials != null)
-				                        {
-                                            <span id="aggMaterialValueSum">
-                                                @String.Format("{0} €", Model.CraftMaterials.Values.Sum(m => m.Value))
-                                            </span>
-				                        }
-				                        else
-				                        {
-                                            <span id="aggMaterialValueSum"> -</span>
-				                        }
-                                    </span>
-                                </h5>
-                            </div>
+                <div class="card-header pb-1">
+                    <h6 class="float-left">Materialien</h6>
+                    <a class="float-right" href="#" onclick="addCraftMaterialPartial()">Hinzufügen</a>
+                </div>
+                <div id="craftmateriallist" class="card-body">
+                    @if (Model != null && Model.CraftMaterials != null)
+				    {
+                        @foreach (var item in Model.CraftMaterials)
+					    {
+                            @await Html.PartialAsync("_CraftMaterialPartial", item.Value)
+					    }
+				    }
+				    else
+				    {
+                        @await Html.PartialAsync("_CraftMaterialPartial")
+				    }
+                </div>
+                <div class="card-footer">
+                    <div class="row">
+                        <div class="col-3">
+                            <h5 class="mb-0">
+                                <span class="badge badge-info">
+                                    <span class="fa fa-hashtag" aria-label="Anzahl"> </span>
+                                    @if (Model != null && Model.CraftMaterials != null)
+				                    {
+                                        <span id="aggMaterialCount">
+                                            @Model.CraftMaterials.Values.Count
+                                        </span>
+				                    }
+				                    else
+				                    {
+                                        <span id="aggMaterialCount">1</span>
+				                    }
+                                </span>
+                            </h5>
+                        </div>
+                        <div class="col-2">
+                        </div>
+                        <div class="col-3">
+                            <h5 class="mb-0">
+                                <span class="badge badge-info">
+                                    <img height="14" src="~/img/icon-average-48.png" alt="Durchschnitt" title="Durchschnitt" />
+                                    @if (Model != null && Model.CraftMaterials != null)
+				                    {
+                                        <span id="aggMaterialCalculationFactorAvg">
+                                            @String.Format("{0:G29} %", Model.CraftMaterials.Values.Average(m => m.CalculationFactor))
+                                        </span>
+				                    }
+				                    else
+				                    {
+                                        <span id="aggMaterialCalculationFactorAvg"> -</span>
+				                    }
+                                </span>
+                            </h5>
+                        </div>
+                        <div class="col-4">
+                            <h5 class="mb-0">
+                                <span class="badge badge-info">
+                                    <img height="14" src="~/img/icon-sigma-48.png" alt="Summe" title="Summe" />
+                                    @if (Model != null && Model.CraftMaterials != null)
+				                    {
+                                        <span id="aggMaterialValueSum">
+                                            @String.Format("{0} €", Model.CraftMaterials.Values.Sum(m => m.Value))
+                                        </span>
+				                    }
+				                    else
+				                    {
+                                        <span id="aggMaterialValueSum"> -</span>
+				                    }
+                                </span>
+                            </h5>
                         </div>
                         </div>
                     </div>
                     </div>
                 </div>
                 </div>

+ 11 - 7
GreenTree.Strohrmann.ERP.Web/Views/Craft/_CraftEmployeePartial.cshtml

@@ -5,12 +5,6 @@
 }
 }
 
 
 <script type="text/javascript">
 <script type="text/javascript">
-    $(document).ready(function () {
-        setTimeout(function () {
-            $("input").restrictInput();
-        }, 500);
-    });
-
     @{ 
     @{ 
         <text>
         <text>
 
 
@@ -60,10 +54,20 @@
             <div class="input-group-prepend">
             <div class="input-group-prepend">
                 <span class="input-group-text">Std.</span>
                 <span class="input-group-text">Std.</span>
             </div>
             </div>
+            @*<span class="input-group-prepend">
+                <button type="button" class="quantity-left-minus btn btn-danger btn-number" data-field="">
+                    <span class="fas fa-minus"></span>
+                </button>
+            </span>*@
             <input name="CraftEmployees[@id].AmountText" type="text" class="form-control"
             <input name="CraftEmployees[@id].AmountText" type="text" class="form-control"
                    id="CraftEmployees[@id].AmountText" data-aggregation="employeeAmount" data-restriction="numberOnly"
                    id="CraftEmployees[@id].AmountText" data-aggregation="employeeAmount" data-restriction="numberOnly"
                    value="@(Model == null ? 0.00f : Model.Amount)"
                    value="@(Model == null ? 0.00f : Model.Amount)"
                    onchange="calculateEmployeeAggregation(); recalculateEmployeeValue_@id ();" />
                    onchange="calculateEmployeeAggregation(); recalculateEmployeeValue_@id ();" />
+            @*<span class="input-group-append">
+                <button type="button" class="quantity-left-minus btn btn-success btn-number" data-field="">
+                    <span class="fas fa-plus"></span>
+                </button>
+            </span>*@
         </div>
         </div>
         @Html.ValidationMessage(String.Format("CraftEmployees[{0}].AmountText", id), new { @class = "text-danger" })
         @Html.ValidationMessage(String.Format("CraftEmployees[{0}].AmountText", id), new { @class = "text-danger" })
     </div>
     </div>
@@ -74,7 +78,7 @@
 		}
 		}
         <div class="input-group">
         <div class="input-group">
             <div class="input-group-prepend">
             <div class="input-group-prepend">
-                <span class="input-group-text"></span>
+                <span class="input-group-text">@CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol</span>
             </div>
             </div>
             <input asp-for="Value" name="CraftEmployees[@id].Value" type="number" min="0.00" class="form-control"
             <input asp-for="Value" name="CraftEmployees[@id].Value" type="number" min="0.00" class="form-control"
                    data-aggregation="employeeValue"
                    data-aggregation="employeeValue"

+ 25 - 7
GreenTree.Strohrmann.ERP.Web/Views/Craft/_CraftMaterialPartial.cshtml

@@ -44,7 +44,23 @@
                 }
                 }
             });
             });
 		}
 		}
-	}
+    }
+
+    function getMaterialUnit_@id () {
+        $.ajax({
+            method: "POST",
+            url: "@Url.Action("GetMaterialUnit", "Craft")",
+            data: {
+                MaterialId: $("input[name='CraftMaterials[@id].MaterialId']").val()
+            },
+            success: function (data) {
+                $("#materialUnit_@id").text(data);
+            },
+            error: function (msg) {
+
+            }
+        });
+	} 
 
 
     </text>
     </text>
 }
 }
@@ -67,7 +83,7 @@
             new 
             new 
             { 
             { 
                 name = String.Format("CraftMaterials[{0}].MaterialText", id), 
                 name = String.Format("CraftMaterials[{0}].MaterialText", id), 
-                onblur = String.Format("calculateMaterialAggregation(); recalculateMaterialValue_{0}(this);", id) 
+                onblur = String.Format("calculateMaterialAggregation(); getMaterialUnit_{0}(); recalculateMaterialValue_{0}(this);", id) 
             }
             }
         )
         )
         @Html.ValidationMessage(String.Format("CraftMaterials[{0}].MaterialId", id), new { @class = "text-danger" })
         @Html.ValidationMessage(String.Format("CraftMaterials[{0}].MaterialId", id), new { @class = "text-danger" })
@@ -79,11 +95,13 @@
 		}
 		}
         <div class="input-group">
         <div class="input-group">
             <div class="input-group-prepend">
             <div class="input-group-prepend">
-                <span class="input-group-text">Stk.</span>
+                <span id="materialUnit_@id" class="input-group-text">
+                    @(Model == null ? "Stck." : Model.Material.DefaultUnit.ShortName)
+                </span>
             </div>
             </div>
-            <input name="CraftMaterials[@id].Amount" type="number" min="0.00" step="0.50" class="form-control"
-                   id="CraftMaterials[@id].Amount"
-                   value="@(Model == null ? "0.00" : Model.Amount.ToString("G29"))"
+            <input name="CraftMaterials[@id].Amount" type="text" class="form-control"
+                   id="CraftMaterials[@id].Amount" data-restriction="numberOnly"
+                   value="@(Model == null ? 0.00f : Model.Amount)"
                    onchange="calculateMaterialAggregation(); recalculateMaterialValue_@id (this);" />
                    onchange="calculateMaterialAggregation(); recalculateMaterialValue_@id (this);" />
         </div>
         </div>
         @Html.ValidationMessage(String.Format("CraftMaterials[{0}].Amount", id), new { @class = "text-danger" })
         @Html.ValidationMessage(String.Format("CraftMaterials[{0}].Amount", id), new { @class = "text-danger" })
@@ -112,7 +130,7 @@
 		}
 		}
         <div class="input-group">
         <div class="input-group">
             <div class="input-group-prepend">
             <div class="input-group-prepend">
-                <span class="input-group-text"></span>
+                <span class="input-group-text">@CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol</span>
             </div>
             </div>
             <input asp-for="Value" name="CraftMaterials[@id].Value" type="number" min="0.00" step="1" class="form-control" 
             <input asp-for="Value" name="CraftMaterials[@id].Value" type="number" min="0.00" step="1" class="form-control" 
                    data-aggregation="materialValue"
                    data-aggregation="materialValue"

+ 4 - 0
GreenTree.Strohrmann.ERP.Web/Views/Craft/_CraftScriptPartial.cshtml

@@ -1,6 +1,10 @@
 <!-- Craft Views specified JavaScript element -->
 <!-- Craft Views specified JavaScript element -->
 <script type="text/javascript">
 <script type="text/javascript">
 
 
+    $(document).ready(function () {
+        $("input").restrictInput();
+    });
+
 	function calculateEmployeeAggregation() {
 	function calculateEmployeeAggregation() {
         var count = $("input[data-aggregation='employeeAmount']").length;
         var count = $("input[data-aggregation='employeeAmount']").length;
 
 

+ 1 - 0
GreenTree.Strohrmann.ERP.Web/Views/Customer/Index.cshtml

@@ -82,6 +82,7 @@
 
 
 <p>
 <p>
     <a asp-action="Create">Neuen Kunden erstellen</a>
     <a asp-action="Create">Neuen Kunden erstellen</a>
+    <a class="ml-3" asp-action="Import">Kunden importieren</a>
 </p>
 </p>
 
 
 <table id="customersTable" class="table table-striped responsive">
 <table id="customersTable" class="table table-striped responsive">

+ 2 - 1
GreenTree.Strohrmann.ERP.Web/Views/_ViewImports.cshtml

@@ -1,4 +1,5 @@
-@using GreenTree.Strohrmann.ERP.Web
+@using System.Globalization;
+@using GreenTree.Strohrmann.ERP.Web
 @using GreenTree.Strohrmann.ERP.Web.Models
 @using GreenTree.Strohrmann.ERP.Web.Models
 @using GreenTree.Strohrmann.ERP.Web.Extension
 @using GreenTree.Strohrmann.ERP.Web.Extension
 @using GreenTree.Strohrmann.ERP.Web.Models.Business
 @using GreenTree.Strohrmann.ERP.Web.Models.Business