inactive all previous slab based on condition

This commit is contained in:
dibakor 2026-07-28 14:57:24 +06:00
parent 240cb8ba2a
commit 8b5af20539
2 changed files with 46 additions and 5 deletions

View File

@ -73,4 +73,7 @@ public class GetMaterialFreeGoodsByFilterRequest
[Required(ErrorMessage = "MaterialCode is required.")] [Required(ErrorMessage = "MaterialCode is required.")]
[StringLength(10, MinimumLength = 1, ErrorMessage = "MaterialCode must be between 1 and 10 characters.")] [StringLength(10, MinimumLength = 1, ErrorMessage = "MaterialCode must be between 1 and 10 characters.")]
public string MaterialCode { get; set; } public string MaterialCode { get; set; }
public DateTime? ValidFrom { get; set; }
public DateTime? ValidTo { get; set; }
} }

View File

@ -395,13 +395,21 @@ public class IntegrationService : IIntegrationService
using TransactionContext tc = await TransactionContext.BeginAsync(_settings.DefaultConnection.ConnectionNode, true); using TransactionContext tc = await TransactionContext.BeginAsync(_settings.DefaultConnection.ConnectionNode, true);
try try
{ {
DateTime? fromValid = null;
DateTime? toValid = null;
if (request.Slabs != null && request.Slabs.Count > 0)
{
fromValid =Convert.ToDateTime( request.Slabs.Max(x => x.ValidFrom));
toValid = Convert.ToDateTime(request.Slabs.Max(x => x.ValidTo));
}
IntegrationMaterialFreeGoodsResponse meterialFreeGoods = await GetMaterialFreeGoodsByFilterAsync(tc, IntegrationMaterialFreeGoodsResponse meterialFreeGoods = await GetMaterialFreeGoodsByFilterAsync(tc,
new GetMaterialFreeGoodsByFilterRequest() { SalesOrg = request.SalesOrg, DistributionChannel = request.DistributionChannel, new GetMaterialFreeGoodsByFilterRequest() { SalesOrg = request.SalesOrg, DistributionChannel = request.DistributionChannel,
CustomerPriceGroup = request.CustomerPriceGroup,MaterialCode = request.MaterialCode, CustomerNumber = request.CustomerNumber }); CustomerPriceGroup = request.CustomerPriceGroup,MaterialCode = request.MaterialCode, CustomerNumber = request.CustomerNumber,
ValidFrom = fromValid, ValidTo= toValid});
if (meterialFreeGoods != null && !string.IsNullOrWhiteSpace(meterialFreeGoods.MaterialCode)) InActiveMaterialFreeGoodsByFilter(tc,
{
DeleteMaterialFreeGoodsByFilter(tc,
new GetMaterialFreeGoodsByFilterRequest() new GetMaterialFreeGoodsByFilterRequest()
{ {
SalesOrg = request.SalesOrg, SalesOrg = request.SalesOrg,
@ -411,6 +419,8 @@ public class IntegrationService : IIntegrationService
CustomerNumber = request.CustomerNumber CustomerNumber = request.CustomerNumber
}); });
if (meterialFreeGoods != null && !string.IsNullOrWhiteSpace(meterialFreeGoods.MaterialCode))
{
UpdateMaterialFreeGoods(tc, request); UpdateMaterialFreeGoods(tc, request);
response.IsUpdated = true; response.IsUpdated = true;
} }
@ -1397,7 +1407,9 @@ public class IntegrationService : IIntegrationService
SqlHelperExtension.CreateInParam("@DistributionChannel", SqlDbType.NVarChar, request.DistributionChannel), SqlHelperExtension.CreateInParam("@DistributionChannel", SqlDbType.NVarChar, request.DistributionChannel),
SqlHelperExtension.CreateInParam("@CustomerNumber", SqlDbType.NVarChar, request.CustomerNumber), SqlHelperExtension.CreateInParam("@CustomerNumber", SqlDbType.NVarChar, request.CustomerNumber),
SqlHelperExtension.CreateInParam("@CustomerPriceGroup", SqlDbType.NVarChar, request.CustomerPriceGroup), SqlHelperExtension.CreateInParam("@CustomerPriceGroup", SqlDbType.NVarChar, request.CustomerPriceGroup),
SqlHelperExtension.CreateInParam("@MaterialCode", SqlDbType.NVarChar, request.MaterialCode) SqlHelperExtension.CreateInParam("@MaterialCode", SqlDbType.NVarChar, request.MaterialCode),
SqlHelperExtension.CreateInParam("@ValidFrom", SqlDbType.NVarChar, request.ValidFrom),
SqlHelperExtension.CreateInParam("@ValidTo", SqlDbType.NVarChar, request.ValidTo),
]; ];
using (IDataReader dr = await tc.ExecuteReaderSpAsync("dbo.GetAllMaterialFreeGoodsForUpdate", parameterValues: p)) using (IDataReader dr = await tc.ExecuteReaderSpAsync("dbo.GetAllMaterialFreeGoodsForUpdate", parameterValues: p))
@ -1460,6 +1472,32 @@ public class IntegrationService : IIntegrationService
return response; return response;
} }
private bool InActiveMaterialFreeGoodsByFilter(
TransactionContext tc, GetMaterialFreeGoodsByFilterRequest request)
{
bool response = false;
try
{
SqlParameter[] p =
[
SqlHelperExtension.CreateInParam("@SalesOrg", SqlDbType.NVarChar, request.SalesOrg),
SqlHelperExtension.CreateInParam("@DistributionChannel", SqlDbType.NVarChar, request.DistributionChannel),
SqlHelperExtension.CreateInParam("@CustomerNumber", SqlDbType.NVarChar, request.CustomerNumber),
SqlHelperExtension.CreateInParam("@CustomerPriceGroup", SqlDbType.NVarChar, request.CustomerPriceGroup),
SqlHelperExtension.CreateInParam("@MaterialCode", SqlDbType.NVarChar, request.MaterialCode)
];
_ = tc.ExecuteNonQuerySp("dbo.InActiveMaterialFOCByFilter", parameterValues: p);
response = true;
}
catch (Exception ex)
{
throw DBCustomError.GenerateCustomError(ex);
}
return response;
}
private bool CreateMaterialFreeGoods(TransactionContext tc, IntegrationMaterialFreeGoodsRequest request) private bool CreateMaterialFreeGoods(TransactionContext tc, IntegrationMaterialFreeGoodsRequest request)
{ {
bool response = false; bool response = false;