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.")]
[StringLength(10, MinimumLength = 1, ErrorMessage = "MaterialCode must be between 1 and 10 characters.")]
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);
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,
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))
{
DeleteMaterialFreeGoodsByFilter(tc,
InActiveMaterialFreeGoodsByFilter(tc,
new GetMaterialFreeGoodsByFilterRequest()
{
SalesOrg = request.SalesOrg,
@ -411,6 +419,8 @@ public class IntegrationService : IIntegrationService
CustomerNumber = request.CustomerNumber
});
if (meterialFreeGoods != null && !string.IsNullOrWhiteSpace(meterialFreeGoods.MaterialCode))
{
UpdateMaterialFreeGoods(tc, request);
response.IsUpdated = true;
}
@ -1397,7 +1407,9 @@ public class IntegrationService : IIntegrationService
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)
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))
@ -1460,6 +1472,32 @@ public class IntegrationService : IIntegrationService
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)
{
bool response = false;