feat: add GetVATRate RPC and corresponding query handler for VAT rate retrieval
This commit is contained in:
@@ -0,0 +1,6 @@
|
||||
namespace FrontOffice.BFF.Application.UserOrderCQ.Queries.GetVATRate;
|
||||
|
||||
/// <summary>
|
||||
/// دریافت نرخ مالیات بر ارزش افزوده
|
||||
/// </summary>
|
||||
public record GetVATRateQuery : IRequest<GetVATRateResponseDto>;
|
||||
+61
@@ -0,0 +1,61 @@
|
||||
using CMSMicroservice.Protobuf.Protos.Configuration;
|
||||
|
||||
namespace FrontOffice.BFF.Application.UserOrderCQ.Queries.GetVATRate;
|
||||
|
||||
/// <summary>
|
||||
/// هندلر دریافت نرخ مالیات بر ارزش افزوده
|
||||
/// </summary>
|
||||
public class GetVATRateQueryHandler : IRequestHandler<GetVATRateQuery, GetVATRateResponseDto>
|
||||
{
|
||||
private readonly IApplicationContractContext _context;
|
||||
|
||||
public GetVATRateQueryHandler(IApplicationContractContext context)
|
||||
{
|
||||
_context = context;
|
||||
}
|
||||
|
||||
public async Task<GetVATRateResponseDto> Handle(GetVATRateQuery request, CancellationToken cancellationToken)
|
||||
{
|
||||
// Default values
|
||||
var response = new GetVATRateResponseDto
|
||||
{
|
||||
VatRate = 0.09, // 9% default
|
||||
VatPercentage = 9,
|
||||
IsEnabled = true
|
||||
};
|
||||
|
||||
try
|
||||
{
|
||||
// دریافت نرخ مالیات از تنظیمات سیستم
|
||||
// Scope: VAT = 4
|
||||
var rateConfig = await _context.Configuration.GetConfigurationByKeyAsync(
|
||||
new GetConfigurationByKeyRequest { Key = "VAT.Rate" },
|
||||
cancellationToken: cancellationToken);
|
||||
|
||||
if (rateConfig != null && !string.IsNullOrEmpty(rateConfig.Value))
|
||||
{
|
||||
if (double.TryParse(rateConfig.Value, out var rate))
|
||||
{
|
||||
response.VatRate = rate;
|
||||
response.VatPercentage = (int)(rate * 100);
|
||||
}
|
||||
}
|
||||
|
||||
// دریافت وضعیت فعال بودن مالیات
|
||||
var enabledConfig = await _context.Configuration.GetConfigurationByKeyAsync(
|
||||
new GetConfigurationByKeyRequest { Key = "VAT.IsEnabled" },
|
||||
cancellationToken: cancellationToken);
|
||||
|
||||
if (enabledConfig != null && !string.IsNullOrEmpty(enabledConfig.Value))
|
||||
{
|
||||
response.IsEnabled = bool.TryParse(enabledConfig.Value, out var enabled) && enabled;
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
// در صورت خطا، مقادیر پیشفرض برگردانده میشود
|
||||
}
|
||||
|
||||
return response;
|
||||
}
|
||||
}
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
namespace FrontOffice.BFF.Application.UserOrderCQ.Queries.GetVATRate;
|
||||
|
||||
/// <summary>
|
||||
/// پاسخ نرخ مالیات بر ارزش افزوده
|
||||
/// </summary>
|
||||
public class GetVATRateResponseDto
|
||||
{
|
||||
/// <summary>
|
||||
/// نرخ مالیات (مثلاً 0.09 = 9%)
|
||||
/// </summary>
|
||||
public double VatRate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// درصد مالیات (مثلاً 9)
|
||||
/// </summary>
|
||||
public int VatPercentage { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// آیا مالیات فعال است
|
||||
/// </summary>
|
||||
public bool IsEnabled { get; set; }
|
||||
}
|
||||
@@ -4,6 +4,7 @@ using FrontOffice.BFF.Application.UserOrderCQ.Commands.UpdateUserOrder;
|
||||
using FrontOffice.BFF.Application.UserOrderCQ.Commands.DeleteUserOrder;
|
||||
using FrontOffice.BFF.Application.UserOrderCQ.Queries.GetUserOrder;
|
||||
using FrontOffice.BFF.Application.UserOrderCQ.Queries.GetAllUserOrderByFilter;
|
||||
using FrontOffice.BFF.Application.UserOrderCQ.Queries.GetVATRate;
|
||||
using FrontOffice.BFF.Application.UserOrderCQ.Commands.SubmitShopBuyOrder;
|
||||
using FrontOffice.BFF.UserOrder.Protobuf.Protos.UserOrder;
|
||||
|
||||
@@ -40,4 +41,9 @@ public class UserOrderService : UserOrderContract.UserOrderContractBase
|
||||
{
|
||||
return await _dispatchRequestToCQRS.Handle<SubmitShopBuyOrderRequest, SubmitShopBuyOrderCommand, SubmitShopBuyOrderResponse>(request, context);
|
||||
}
|
||||
|
||||
public override async Task<GetVATRateResponse> GetVATRate(Empty request, ServerCallContext context)
|
||||
{
|
||||
return await _dispatchRequestToCQRS.Handle<Empty, GetVATRateQuery, GetVATRateResponse>(request, context);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,6 +48,12 @@ service UserOrderContract
|
||||
body: "*"
|
||||
};
|
||||
};
|
||||
// دریافت نرخ مالیات بر ارزش افزوده
|
||||
rpc GetVATRate(google.protobuf.Empty) returns (GetVATRateResponse){
|
||||
option (google.api.http) = {
|
||||
get: "/GetVATRate"
|
||||
};
|
||||
};
|
||||
}
|
||||
message CreateNewUserOrderRequest
|
||||
{
|
||||
@@ -217,3 +223,11 @@ message SubmitShopBuyOrderResponse
|
||||
sfixed32 nanos = 2;
|
||||
}
|
||||
|
||||
// پاسخ نرخ مالیات بر ارزش افزوده
|
||||
message GetVATRateResponse
|
||||
{
|
||||
double vat_rate = 1; // نرخ مالیات (مثلاً 0.09 = 9%)
|
||||
int32 vat_percentage = 2; // درصد مالیات (مثلاً 9)
|
||||
bool is_enabled = 3; // آیا مالیات فعال است
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user