diff --git a/src/FrontOffice.Main/Pages/DiscountStore/Cart.razor b/src/FrontOffice.Main/Pages/DiscountStore/Cart.razor index 84af3d8..28da840 100644 --- a/src/FrontOffice.Main/Pages/DiscountStore/Cart.razor +++ b/src/FrontOffice.Main/Pages/DiscountStore/Cart.razor @@ -135,9 +135,16 @@ @FormatPrice(DiscountCart.TotalDiscount)- تومان } + @if (VAT.IsEnabled) + { + + مالیات ارزش افزوده (@VAT.VatPercentage%): + @FormatPrice(VatAmount)+ تومان + + } حداقل پرداخت: - @FormatPrice(DiscountCart.FinalPrice) تومان + @FormatPrice(TotalWithVat) تومان @@ -165,10 +172,17 @@ @FormatPrice(DiscountCart.TotalDiscount)- تومان } + @if (VAT.IsEnabled) + { + + مالیات بر ارزش افزوده (@VAT.VatPercentage%): + @FormatPrice(VatAmount)+ تومان + + } حداقل مبلغ پرداخت درگاه: - @FormatPrice(DiscountCart.FinalPrice) تومان + @FormatPrice(TotalWithVat) تومان مبلغ دقیق پرداخت در مرحله تسویه مشخص خواهد شد. diff --git a/src/FrontOffice.Main/Pages/DiscountStore/Cart.razor.cs b/src/FrontOffice.Main/Pages/DiscountStore/Cart.razor.cs index 256e9cb..d53ea46 100644 --- a/src/FrontOffice.Main/Pages/DiscountStore/Cart.razor.cs +++ b/src/FrontOffice.Main/Pages/DiscountStore/Cart.razor.cs @@ -6,6 +6,7 @@ namespace FrontOffice.Main.Pages.DiscountStore; public partial class Cart : IDisposable { [Inject] private DiscountCartService DiscountCart { get; set; } = default!; + [Inject] private VATService VAT { get; set; } = default!; protected override async Task OnInitializedAsync() { @@ -44,6 +45,18 @@ public partial class Cart : IDisposable Navigation.NavigateTo(RouteConstants.DiscountStore.Checkout); } + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + await VAT.LoadAsync(); + StateHasChanged(); + } + } + + private long VatAmount => VAT.CalculateVAT(DiscountCart.FinalPrice); + private long TotalWithVat => DiscountCart.FinalPrice + VatAmount; + private static string FormatPrice(long price) => $"{price:N0} "; private static string GetImageUrl(string? imageUrl) diff --git a/src/FrontOffice.Main/Pages/DiscountStore/Checkout.razor b/src/FrontOffice.Main/Pages/DiscountStore/Checkout.razor index 185d7c8..beba9e2 100644 --- a/src/FrontOffice.Main/Pages/DiscountStore/Checkout.razor +++ b/src/FrontOffice.Main/Pages/DiscountStore/Checkout.razor @@ -118,7 +118,7 @@ - مالیات بر ارزش افزوده (۱۰٪): + مالیات بر ارزش افزوده (@VAT.VatPercentage٪): @FormatPrice(VatAmount)+ تومان diff --git a/src/FrontOffice.Main/Pages/DiscountStore/Checkout.razor.cs b/src/FrontOffice.Main/Pages/DiscountStore/Checkout.razor.cs index 11e971b..4036725 100644 --- a/src/FrontOffice.Main/Pages/DiscountStore/Checkout.razor.cs +++ b/src/FrontOffice.Main/Pages/DiscountStore/Checkout.razor.cs @@ -10,6 +10,7 @@ public partial class Checkout [Inject] private DiscountCartService DiscountCart { get; set; } = default!; [Inject] private DiscountOrderService DiscountOrderService { get; set; } = default!; [Inject] private UserAddressContract.UserAddressContractClient UserAddressContract { get; set; } = default!; + [Inject] private VATService VAT { get; set; } = default!; private List _addresses = new(); private CustomerAddressModel? _selectedAddress; @@ -18,13 +19,11 @@ public partial class Checkout private string? _notes; private bool _placing; - private const decimal VAT_RATE = 0.10m; - /// مبلغ درگاه قبل از مالیات (جمع کل - اعتبار) private long NetGatewayAmount => DiscountCart.TotalPrice - DiscountCart.TotalDiscount; - /// مالیات بر ارزش افزوده ۱۰٪ - private long VatAmount => (long)(NetGatewayAmount * VAT_RATE); + /// مالیات بر ارزش افزوده + private long VatAmount => VAT.CalculateVAT(NetGatewayAmount); /// مبلغ نهایی قابل پرداخت (شامل VAT) private long FinalGatewayAmount => NetGatewayAmount + VatAmount; @@ -33,6 +32,7 @@ public partial class Checkout protected override async Task OnInitializedAsync() { + await VAT.LoadAsync(); await DiscountCart.EnsureInitializedAsync(); await LoadAddresses(); } diff --git a/src/FrontOffice.Main/Pages/DiscountStore/OrderDetail.razor b/src/FrontOffice.Main/Pages/DiscountStore/OrderDetail.razor index a58aed3..528843c 100644 --- a/src/FrontOffice.Main/Pages/DiscountStore/OrderDetail.razor +++ b/src/FrontOffice.Main/Pages/DiscountStore/OrderDetail.razor @@ -163,6 +163,14 @@ else } + @if (VAT.IsEnabled) + { + + مالیات بر ارزش افزوده (@VAT.VatPercentage%): + @FormatPrice(OrderVatAmount)+ + + } + diff --git a/src/FrontOffice.Main/Pages/DiscountStore/OrderDetail.razor.cs b/src/FrontOffice.Main/Pages/DiscountStore/OrderDetail.razor.cs index 4c57dac..bcffac9 100644 --- a/src/FrontOffice.Main/Pages/DiscountStore/OrderDetail.razor.cs +++ b/src/FrontOffice.Main/Pages/DiscountStore/OrderDetail.razor.cs @@ -12,12 +12,28 @@ public partial class OrderDetail public string? PaymentResult { get; set; } [Inject] private DiscountOrderService DiscountOrderService { get; set; } = default!; + [Inject] private VATService VAT { get; set; } = default!; private DiscountOrderDetail? _order; private bool _loading = true; private string? _paymentMessage; private MudBlazor.Severity _paymentSeverity; + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + await VAT.LoadAsync(); + StateHasChanged(); + } + } + + /// مبلغ قبل از مالیات (جمع کل - اعتبار) + private long PreVatGateway => _order is null ? 0 : (_order.TotalPrice - _order.DiscountBalanceUsed); + + /// مالیات بر ارزش افزوده + private long OrderVatAmount => VAT.CalculateVAT(PreVatGateway); + protected override async Task OnInitializedAsync() { // نمایش پیام نتیجه پرداخت (بعد از بازگشت از درگاه) diff --git a/src/FrontOffice.Main/Pages/DiscountStore/ProductDetail.razor b/src/FrontOffice.Main/Pages/DiscountStore/ProductDetail.razor index d7b473c..db89b9e 100644 --- a/src/FrontOffice.Main/Pages/DiscountStore/ProductDetail.razor +++ b/src/FrontOffice.Main/Pages/DiscountStore/ProductDetail.razor @@ -67,10 +67,34 @@ قیمت محصول: - + @($"{_product.Price:N0}") تومان + @if (VAT.IsEnabled) + { + + مالیات ارزش افزوده (@VAT.VatPercentage%): + + @($"{VAT.CalculateVAT(_product.Price):N0}") تومان + + + + قیمت با مالیات: + + @($"{VAT.AddVAT(_product.Price):N0}") تومان + + + } + else + { + + قیمت نهایی: + + @($"{_product.Price:N0}") تومان + + + } @if (_product.MaxDiscountPercent > 0) { diff --git a/src/FrontOffice.Main/Pages/DiscountStore/ProductDetail.razor.cs b/src/FrontOffice.Main/Pages/DiscountStore/ProductDetail.razor.cs index fd90d66..5d09884 100644 --- a/src/FrontOffice.Main/Pages/DiscountStore/ProductDetail.razor.cs +++ b/src/FrontOffice.Main/Pages/DiscountStore/ProductDetail.razor.cs @@ -9,6 +9,7 @@ public partial class ProductDetail [Inject] private DiscountProductService DiscountProductService { get; set; } = default!; [Inject] private DiscountCartService DiscountCartService { get; set; } = default!; + [Inject] private VATService VAT { get; set; } = default!; private DiscountProductDetail? _product; private string _selectedImage = string.Empty; @@ -21,6 +22,15 @@ public partial class ProductDetail await LoadProductAsync(); } + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + await VAT.LoadAsync(); + StateHasChanged(); + } + } + private async Task LoadProductAsync() { _loading = true; diff --git a/src/FrontOffice.Main/Pages/DiscountStore/Products.razor b/src/FrontOffice.Main/Pages/DiscountStore/Products.razor index 6d1da72..5630c14 100644 --- a/src/FrontOffice.Main/Pages/DiscountStore/Products.razor +++ b/src/FrontOffice.Main/Pages/DiscountStore/Products.razor @@ -103,7 +103,10 @@ @p.Title - @FormatPrice(p.Price) + + @FormatPrice(p.Price) + (+ ارزش افزوده) +