Compare commits

..

No commits in common. "31f411d3192055dbce5c31afc5e929b91613ada0" and "f3ac82acb22b3da1b72fe0824a8a77175f0c0d9c" have entirely different histories.

2 changed files with 364 additions and 383 deletions

View File

@ -3,104 +3,98 @@
@using Nop.Core.Domain.Tax; @using Nop.Core.Domain.Tax;
@using Nop.Core.Domain.Catalog; @using Nop.Core.Domain.Catalog;
<div class="card-body">
<div class="form-group row">
<div class="col-md-12" style="overflow-x: auto;">
@foreach (var item in Model.Items)
{
<script> <script>
function calculateTotalGlobal(itemId, maxQuantity) { $(function() {
//var isMeasurable = $('#pvIsMeasurable'+itemId).is(':checked'); toggleOrderItemEdit@(item.Id)(false);
// Attach event listeners for automatic calculation
setupAutoCalculation@(item.Id)();
});
</script>
var isMeasurable = $('#pvIsMeasurable'+itemId).val().toLowerCase() === 'true'; <script>
// Function to automatically calculate and update total price
function calculateTotal@(item.Id)() {
// Get values
@* var isMeasurable = ($('#pvIsMeasurable@(item.Id)').val()).toLowerCase() === "true"; *@
var isMeasurable = $($('#pvIsMeasurable@(item.Id)')).is(':checked');
console.log(isMeasurable); console.log(isMeasurable);
console.log($('#pvIsMeasurable'+itemId)); console.log(($('#pvIsMeasurable@(item.Id)')));
console.log($('#pvIsMeasurable'+itemId).val()); console.log(($('#pvIsMeasurable@(item.Id)').val()));
console.log($('#pvIsMeasurable'+itemId).val().toLowerCase()); console.log(($('#pvIsMeasurable@(item.Id)').val()).toLowerCase());
console.log($('#pvNetWeight'+itemId).val());
var netWeight = parseFloat($('#pvNetWeight'+itemId).val()) || 0;
var unitPriceInclTax = parseFloat($('#pvUnitPriceInclTax'+itemId).val()) || 0; var netWeight = parseFloat($('#pvNetWeight@(item.Id)').val()) || 0;
var unitPriceExclTax = parseFloat($('#pvUnitPriceExclTax'+itemId).val()) || 0;
var quantity = parseInt($('#pvQuantity'+itemId).val()) || 0;
var discountInclTax = parseFloat($('#pvDiscountInclTax'+itemId).val()) || 0;
var discountExclTax = parseFloat($('#pvDiscountExclTax'+itemId).val()) || 0;
if (quantity > maxQuantity || quantity < 0) { var unitPriceInclTax = parseFloat($('#pvUnitPriceInclTax@(item.Id)').val()) || 0;
if (quantity > maxQuantity) quantity = maxQuantity; else quantity = 0; var unitPriceExclTax = parseFloat($('#pvUnitPriceExclTax@(item.Id)').val()) || 0;
$('#pvQuantity' + itemId).val(quantity); var quantity = parseFloat($('#pvQuantity@(item.Id)').val()) || 0;
} var discountInclTax = parseFloat($('#pvDiscountInclTax@(item.Id)').val()) || 0;
var discountExclTax = parseFloat($('#pvDiscountExclTax@(item.Id)').val()) || 0;
if (unitPriceInclTax < 0) {
unitPriceInclTax = 0;
$('#pvUnitPriceInclTax' + itemId).val(unitPriceInclTax);
}
// Calculate totals // Calculate totals
var totalInclTax = (unitPriceInclTax * (isMeasurable ? netWeight : quantity)) - discountInclTax; var totalInclTax = (unitPriceInclTax * (isMeasurable ? netWeight : quantity)) - discountInclTax;
var totalExclTax = (unitPriceExclTax * (isMeasurable ? netWeight : quantity)) - discountExclTax; var totalExclTax = (unitPriceExclTax * (isMeasurable ? netWeight : quantity)) - discountExclTax;
// Update total price fields // Update total price fields
$('#pvPriceInclTax'+itemId).val(totalInclTax.toFixed(0)); $('#pvPriceInclTax@(item.Id)').val(totalInclTax.toFixed(0));
$('#pvPriceExclTax'+itemId).val(totalExclTax.toFixed(0)); $('#pvPriceExclTax@(item.Id)').val(totalExclTax.toFixed(0));
} }
// Function to setup event listeners for automatic calculation // Function to setup event listeners for automatic calculation
function setupAutoCalculationGlobal(itemId) { function setupAutoCalculation@(item.Id)() {
// Attach change and input events to all relevant fields // Attach change and input events to all relevant fields
$('#pvUnitPriceInclTax'+itemId+', #pvUnitPriceExclTax'+itemId+', #pvQuantity'+itemId+', #pvDiscountInclTax'+itemId+', #pvDiscountExclTax'+itemId).on('input change', function() { $('#pvUnitPriceInclTax@(item.Id), #pvUnitPriceExclTax@(item.Id), #pvQuantity@(item.Id), #pvDiscountInclTax@(item.Id), #pvDiscountExclTax@(item.Id)').on('input change', function() {
calculateTotalGlobal(itemId); calculateTotal@(item.Id)();
}); });
} }
function toggleOrderItemEditGlobal(editMode, itemId) { function toggleOrderItemEdit@(item.Id)(editMode) {
if (editMode) { if (editMode) {
$('#pnlEditPvUnitPrice'+itemId).showElement(); $('#pnlEditPvUnitPrice@(item.Id)').showElement();
$('#pnlEditPvQuantity'+itemId).showElement(); $('#pnlEditPvQuantity@(item.Id)').showElement();
$('#pnlEditPvDiscount'+itemId).showElement(); $('#pnlEditPvDiscount@(item.Id)').showElement();
$('#pnlEditPvPrice'+itemId).showElement(); $('#pnlEditPvPrice@(item.Id)').showElement();
$('#btnSaveOrderItem'+itemId).showElement(); $('#btnSaveOrderItem@(item.Id)').showElement();
$('#btnCancelOrderItem'+itemId).showElement(); $('#btnCancelOrderItem@(item.Id)').showElement();
$('#pvUnitPriceInclTax'+itemId).prop("disabled", false); $('#pvUnitPriceInclTax@(item.Id)').prop("disabled", false);
$('#pvUnitPriceExclTax'+itemId).prop("disabled", false); $('#pvUnitPriceExclTax@(item.Id)').prop("disabled", false);
$('#pvQuantity'+itemId).prop("disabled", false); $('#pvQuantity@(item.Id)').prop("disabled", false);
$('#pvDiscountInclTax'+itemId).prop("disabled", true); $('#pvDiscountInclTax@(item.Id)').prop("disabled", false);
$('#pvDiscountExclTax'+itemId).prop("disabled", true); $('#pvDiscountExclTax@(item.Id)').prop("disabled", false);
$('#pvPriceInclTax'+itemId).prop("disabled", true); $('#pvPriceInclTax@(item.Id)').prop("disabled", false);
$('#pvPriceExclTax'+itemId).prop("disabled", true); $('#pvPriceExclTax@(item.Id)').prop("disabled", false);
$('#btnEditOrderItem'+itemId).hideElement(); $('#btnEditOrderItem@(item.Id)').hideElement();
$('#btnDeleteOrderItem'+itemId).hideElement(); $('#btnDeleteOrderItem@(item.Id)').hideElement();
} else { } else {
$('#pnlEditPvUnitPrice'+itemId).hideElement(); $('#pnlEditPvUnitPrice@(item.Id)').hideElement();
$('#pnlEditPvQuantity'+itemId).hideElement(); $('#pnlEditPvQuantity@(item.Id)').hideElement();
$('#pnlEditPvDiscount'+itemId).hideElement(); $('#pnlEditPvDiscount@(item.Id)').hideElement();
$('#pnlEditPvPrice'+itemId).hideElement(); $('#pnlEditPvPrice@(item.Id)').hideElement();
$('#btnSaveOrderItem'+itemId).hideElement(); $('#btnSaveOrderItem@(item.Id)').hideElement();
$('#btnCancelOrderItem'+itemId).hideElement(); $('#btnCancelOrderItem@(item.Id)').hideElement();
$('#pvUnitPriceInclTax'+itemId).prop("disabled", true); $('#pvUnitPriceInclTax@(item.Id)').prop("disabled", true);
$('#pvUnitPriceExclTax'+itemId).prop("disabled", true); $('#pvUnitPriceExclTax@(item.Id)').prop("disabled", true);
$('#pvQuantity'+itemId).prop("disabled", true); $('#pvQuantity@(item.Id)').prop("disabled", true);
$('#pvDiscountInclTax'+itemId).prop("disabled", true); $('#pvDiscountInclTax@(item.Id)').prop("disabled", true);
$('#pvDiscountExclTax'+itemId).prop("disabled", true); $('#pvDiscountExclTax@(item.Id)').prop("disabled", true);
$('#pvPriceInclTax'+itemId).prop("disabled", true); $('#pvPriceInclTax@(item.Id)').prop("disabled", true);
$('#pvPriceExclTax'+itemId).prop("disabled", true); $('#pvPriceExclTax@(item.Id)').prop("disabled", true);
$('#btnEditOrderItem'+itemId).showElement(); $('#btnEditOrderItem@(item.Id)').showElement();
$('#btnDeleteOrderItem'+itemId).showElement(); $('#btnDeleteOrderItem@(item.Id)').showElement();
} }
} }
</script> </script>
<div class="card-body">
<div class="form-group row">
<div class="col-md-12" style="overflow-x: auto;">
@foreach (var item in Model.ItemExtendeds)
{
<script>
$(function() {
toggleOrderItemEditGlobal(false, @(item.Id));
setupAutoCalculationGlobal(@(item.Id), @(item.ProductStockQuantity + item.ProductIncomingQuantity));
});
</script>
} }
<table class="table table-hover table-bordered"> <table class="table table-hover table-bordered">
@ -120,10 +114,10 @@
} }
<thead> <thead>
<tr> <tr>
@* <th> <th>
@T("Admin.Orders.Products.Picture") @T("Admin.Orders.Products.Picture")
</th> </th>
*@ <th> <th>
@T("Admin.Orders.Products.ProductName") @T("Admin.Orders.Products.ProductName")
</th> </th>
@if (Model.HasDownloadableProducts) @if (Model.HasDownloadableProducts)
@ -136,16 +130,16 @@
@T("Admin.Orders.Products.Price") @T("Admin.Orders.Products.Price")
</th> </th>
<th> <th>
@T("Admin.Orders.Products.Quantity") @T("FruitBank.IsMeasurable")
</th> </th>
<th> <th>
@T("FruitBank.StockQuantity") @T("FruitBank.StockQuantity")
</th> </th>
<th> <th>
@T("FruitBank.NetWeight") @T("Admin.Orders.Products.Quantity")
</th> </th>
<th> <th>
@T("FruitBank.IsMeasurable") @T("FruitBank.NetWeight")
</th> </th>
@* <th> @* <th>
@T("Admin.Orders.Products.Discount") @T("Admin.Orders.Products.Discount")
@ -165,10 +159,10 @@
@foreach (var item in Model.ItemExtendeds) @foreach (var item in Model.ItemExtendeds)
{ {
<tr> <tr>
@* <td class="text-center preview"> <td class="text-center preview">
<img src="@item.PictureThumbnailUrl" alt="" title="" /> <img src="@item.PictureThumbnailUrl" alt="" title="" />
</td> </td>
*@ <td style="width: 25%;" class="text-left"> <td style="width: 25%;" class="text-left">
<em><a asp-controller="Product" asp-action="Edit" asp-route-id="@item.ProductId">@item.ProductName</a></em> <em><a asp-controller="Product" asp-action="Edit" asp-route-id="@item.ProductId">@item.ProductName</a></em>
@if (!string.IsNullOrEmpty(item.AttributeInfo)) @if (!string.IsNullOrEmpty(item.AttributeInfo))
{ {
@ -234,7 +228,7 @@
} }
</td> </td>
} }
<td style="width: 13%;" class="text-center"> <td style="width: 15%;" class="text-center">
@if (Model.AllowCustomersToSelectTaxDisplayType) @if (Model.AllowCustomersToSelectTaxDisplayType)
{ {
<div>@Html.Raw(item.UnitPriceInclTax)</div> <div>@Html.Raw(item.UnitPriceInclTax)</div>
@ -264,8 +258,7 @@
@T("Admin.Orders.Products.Edit.InclTax") @T("Admin.Orders.Products.Edit.InclTax")
</div> </div>
<div class="col-md-7"> <div class="col-md-7">
<input name="pvUnitPriceInclTax@(item.Id)" type="text" value="@(item.UnitPriceInclTaxValue)" id="pvUnitPriceInclTax@(item.Id)" <input name="pvUnitPriceInclTax@(item.Id)" type="text" value="@item.UnitPriceInclTaxValue" id="pvUnitPriceInclTax@(item.Id)" class="form-control input-sm" />
class="form-control input-sm" />
</div> </div>
</div> </div>
@* <div class="form-group row"> @* <div class="form-group row">
@ -279,8 +272,16 @@
*@ </div> *@ </div>
</td> </td>
<td style="width: 8%;" class="text-center"> <td style="width: 80px;" class="text-center">
<div>@(item.Quantity) kt.</div> <div><input type="checkbox" name="pvIsMeasurable@(item.Id)" id="pvIsMeasurable@(item.Id)" @(item.IsMeasurable ? " checked" : "") disabled /></div>
</td>
<td style="width: 80px;" class="text-center">
<div>@($"{item.ProductStockQuantity}{(item.ProductIncomingQuantity > 0 ? " (+"+item.ProductIncomingQuantity + ")" : string.Empty)}")</div>
</td>
<td style="width: 10%;" class="text-center">
<div>@item.Quantity</div>
<div id="pnlEditPvQuantity@(item.Id)"> <div id="pnlEditPvQuantity@(item.Id)">
<div class="form-group row"> <div class="form-group row">
<div class="col-md-8 offset-md-2"> <div class="col-md-8 offset-md-2">
@ -292,26 +293,8 @@
</td> </td>
<td style="width: 80px;" class="text-center"> <td style="width: 80px;" class="text-center">
<div> @* <div name="pvNetWeight@(item.Id)" id="pvNetWeight@(item.Id)">@item.NetWeight</div> *@
<span>@($"{item.ProductStockQuantity} kt.")</span><span>@($"{(item.ProductIncomingQuantity > 0 ? " (+" + item.ProductIncomingQuantity + ")" : string.Empty)}")</span> <div><input name="pvNetWeight@(item.Id)" id="pvNetWeight@(item.Id)" value='@item.NetWeight' disabled /></div>
</div>
</td>
<td style="width: 100px;" class="text-center">
<span>@(item.NetWeight) kg.</span>
<input type="hidden" name="pvNetWeight@(item.Id)" id="pvNetWeight@(item.Id)" value="@(item.NetWeight)" disabled />
</td>
<td style="width: 80px;" class="text-center">
@if(item.IsMeasurable)
{
<span class="badge badge-warning" disabled>Yes</span>
}
else
{
<span class="badge badge-secondary" disabled>No</span>
}
<input type="hidden" name="pvIsMeasurable@(item.Id)" id="pvIsMeasurable@(item.Id)" value="@(item.IsMeasurable.ToString())" disabled />
</td> </td>
@* <td style="width: 15%;" class="text-center"> @* <td style="width: 15%;" class="text-center">
@ -387,8 +370,7 @@
@T("Admin.Orders.Products.Edit.InclTax") @T("Admin.Orders.Products.Edit.InclTax")
</div> </div>
<div class="col-md-7"> <div class="col-md-7">
<input name="pvPriceInclTax@(item.Id)" disabled type="text" value="@item.SubTotalInclTaxValue" id="pvPriceInclTax@(item.Id)" <input name="pvPriceInclTax@(item.Id)" disabled type="text" value="@item.SubTotalInclTaxValue" id="pvPriceInclTax@(item.Id)" class="form-control input-sm" />
class="form-control input-sm" />
</div> </div>
</div> </div>
@* <div class="form-group row"> @* <div class="form-group row">
@ -403,8 +385,8 @@
</td> </td>
@if (!Model.IsLoggedInAsVendor) @if (!Model.IsLoggedInAsVendor)
{ {
<td style="width: 17%;" class="text-center"> <td style="width: 15%;" class="text-center">
<button type="submit" class="btn btn-default" name="btnEditOrderItem@(item.Id)" onclick="toggleOrderItemEditGlobal(true, @(item.Id));return false;" id="btnEditOrderItem@(item.Id)"> <button type="submit" class="btn btn-default" name="btnEditOrderItem@(item.Id)" onclick="toggleOrderItemEdit@(item.Id)(true);return false;" id="btnEditOrderItem@(item.Id)">
<i class="fas fa-pencil"></i> <i class="fas fa-pencil"></i>
@T("Admin.Common.Edit") @T("Admin.Common.Edit")
</button> </button>
@ -421,7 +403,7 @@
</button> </button>
<nop-action-confirmation asp-button-id="@("btnSaveOrderItem" + item.Id)" /> <nop-action-confirmation asp-button-id="@("btnSaveOrderItem" + item.Id)" />
<button type="submit" class="btn btn-default" name="btnCancelOrderItem@(item.Id)" onclick="toggleOrderItemEditGlobal(false,@(item.Id));return false;" id="btnCancelOrderItem@(item.Id)"> <button type="submit" class="btn btn-default" name="btnCancelOrderItem@(item.Id)" onclick="toggleOrderItemEdit@(item.Id)(false);return false;" id="btnCancelOrderItem@(item.Id)">
<i class="fas fa-times"></i> <i class="fas fa-times"></i>
@T("Admin.Common.Cancel") @T("Admin.Common.Cancel")
</button> </button>

View File

@ -178,7 +178,7 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Factories
orderModelExtended.IsMeasured = orderDto.IsMeasured; orderModelExtended.IsMeasured = orderDto.IsMeasured;
orderModelExtended.IsMeasurable = orderDto.IsMeasurable; orderModelExtended.IsMeasurable = orderDto.IsMeasurable;
orderModelExtended.DateOfReceipt = orderDto.DateOfReceipt; orderModelExtended.DateOfReceipt = orderDto.DateOfReceipt;
orderModelExtended.OrderTotal = !orderDto.IsComplete && orderDto.IsMeasurable ? "kalkuláció alatt..." : orderModelExtended.OrderTotal; orderModelExtended.OrderTotal = !orderDto.IsComplete && orderDto.IsMeasurable ? "Kalkuláció alatt..." : orderModelExtended.OrderTotal;
orderModelExtended.CustomerCompany = orderDto.Customer.Company; orderModelExtended.CustomerCompany = orderDto.Customer.Company;
} }
@ -210,7 +210,6 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Factories
orderItemModelExtended.NetWeight = (decimal)orderItemDto.NetWeight; orderItemModelExtended.NetWeight = (decimal)orderItemDto.NetWeight;
orderItemModelExtended.ProductStockQuantity = orderItemDto.ProductDto!.StockQuantity; orderItemModelExtended.ProductStockQuantity = orderItemDto.ProductDto!.StockQuantity;
orderItemModelExtended.ProductIncomingQuantity = orderItemDto.ProductDto.IncomingQuantity; orderItemModelExtended.ProductIncomingQuantity = orderItemDto.ProductDto.IncomingQuantity;
//orderItemModelExtended.SubTotalInclTax = !orderDto.IsComplete && orderItemDto.IsMeasurable ? "kalkuláció alatt..." : orderItemModelExtended.SubTotalInclTax;
orderModelExtended.ItemExtendeds ??= new List<OrderItemModelExtended>(); orderModelExtended.ItemExtendeds ??= new List<OrderItemModelExtended>();
orderModelExtended.ItemExtendeds.Add(orderItemModelExtended); orderModelExtended.ItemExtendeds.Add(orderItemModelExtended);