_CraftMaterialPartial.cshtml 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. @model GreenTree.Strohrmann.ERP.Web.Models.Business.CraftMaterialModel
  2. @{
  3. var id = Model != null && !String.IsNullOrEmpty(Model.DictIdentifier) ? Model.DictIdentifier : Html.RandomId();
  4. }
  5. <script type="text/javascript">
  6. @{
  7. <text>
  8. function recalculateMaterialValue_@id (input) {
  9. if (input != null && input.name == "CraftMaterials[@id].Value") {
  10. $.ajax({
  11. method: "POST",
  12. url: "@Url.Action("CalculateMaterialCalculationFactor", "Craft")",
  13. data: {
  14. MaterialId: $("select[name='CraftMaterials[@id].MaterialId']").val(),
  15. Amount: $("input[name='CraftMaterials[@id].Amount']").val().replace('.', ','),
  16. Value: $("input[name='CraftMaterials[@id].Value']").val()
  17. },
  18. success: function (data) {
  19. $("input[name='CraftMaterials[@id].CalculationFactor']").val(data);
  20. calculateMaterialAggregation();
  21. },
  22. error: function (msg) {
  23. }
  24. });
  25. } else {
  26. $.ajax({
  27. method: "POST",
  28. url: "@Url.Action("CalculateMaterialValue", "Craft")",
  29. data: {
  30. MaterialId: $("select[name='CraftMaterials[@id].MaterialId']").val(),
  31. Amount: $("input[name='CraftMaterials[@id].Amount']").val().replace('.', ','),
  32. CalculationFactor: $("input[name='CraftMaterials[@id].CalculationFactor']").val()
  33. },
  34. success: function (data) {
  35. $("input[name='CraftMaterials[@id].Value']").val(data);
  36. calculateMaterialAggregation();
  37. },
  38. error: function (msg) {
  39. }
  40. });
  41. }
  42. }
  43. </text>
  44. }
  45. </script>
  46. <div class="row align-items-start">
  47. <input type="hidden" asp-for="Index" name="CraftMaterials[@id].Index" />
  48. <input type="hidden" asp-for="DictIdentifier" name="CraftMaterials[@id].DictIdentifier" value="@id" />
  49. <div class="form-group col-md-3">
  50. @if (Model == null || (Model != null && (!Model.Index.HasValue || Model.Index == 0)))
  51. {
  52. <label asp-for="MaterialId" class="control-label"></label>
  53. }
  54. <select asp-items='(IEnumerable<SelectListItem>)ViewData["AvailableMaterials"]'
  55. name="CraftMaterials[@id].MaterialId" class="form-control"
  56. onchange="calculateMaterialAggregation(); recalculateMaterialValue_@id (this);">
  57. </select>
  58. @Html.ValidationMessage(String.Format("CraftMaterials[{0}].MaterialId", id), new { @class = "text-danger" })
  59. </div>
  60. <div class="form-group col-md-2">
  61. @if (Model == null || (Model != null && (!Model.Index.HasValue || Model.Index == 0)))
  62. {
  63. <label asp-for="Amount" class="control-label"></label>
  64. }
  65. <div class="input-group">
  66. <div class="input-group-prepend">
  67. <span class="input-group-text">Stk.</span>
  68. </div>
  69. <input name="CraftMaterials[@id].Amount" type="number" min="0.00" step="0.50" class="form-control"
  70. id="CraftMaterials[@id].Amount"
  71. value="@Model.Amount.ToString("G29")"
  72. onchange="calculateMaterialAggregation(); recalculateMaterialValue_@id (this);" />
  73. </div>
  74. @Html.ValidationMessage(String.Format("CraftMaterials[{0}].Amount", id), new { @class = "text-danger" })
  75. </div>
  76. <div class="form-group col-md-3">
  77. @if (Model == null || (Model != null && (!Model.Index.HasValue || Model.Index == 0)))
  78. {
  79. <label asp-for="CalculationFactor" class="control-label"></label>
  80. }
  81. <div class="input-group">
  82. <div class="input-group-prepend">
  83. <span class="input-group-text">%</span>
  84. </div>
  85. <input asp-for="CalculationFactor" name="CraftMaterials[@id].CalculationFactor"
  86. type="number" min="0" step="5"
  87. value="@((Model == null ? 120m : Model.CalculationFactor * 100m).TrimEnd().ToString().Replace(',','.'))"
  88. class="form-control" data-aggregation="materialCalculationFactor"
  89. onchange="calculateMaterialAggregation(); recalculateMaterialValue_@id (this);" />
  90. </div>
  91. @Html.ValidationMessage(String.Format("CraftMaterials[{0}].CalculationFactor", id), new { @class = "text-danger" })
  92. </div>
  93. <div class="form-group col-md-3">
  94. @if (Model == null || (Model != null && (!Model.Index.HasValue || Model.Index == 0)))
  95. {
  96. <label asp-for="Value" class="control-label"></label>
  97. }
  98. <div class="input-group">
  99. <div class="input-group-prepend">
  100. <span class="input-group-text">€</span>
  101. </div>
  102. <input asp-for="Value" name="CraftMaterials[@id].Value" type="number" min="0.00" step="1" class="form-control"
  103. data-aggregation="materialValue"
  104. onchange="calculateMaterialAggregation(); recalculateMaterialValue_@id (this);"/>
  105. </div>
  106. @Html.ValidationMessage(String.Format("CraftMaterials[{0}].Value", id), new { @class = "text-danger" })
  107. </div>
  108. <div class="form-group col-md-1 pl-1">
  109. @if (Model != null && Model.Index > 0)
  110. {
  111. <button type="button" class="btn btn-danger" aria-label="Entfernen"
  112. onclick="$(this).closest('.row').remove(); calculateMaterialAggregation();">
  113. <span class="fas fa-trash"></span>
  114. </button>
  115. }
  116. </div>
  117. </div>