complete Integration FOC and Material Price Endpoints

This commit is contained in:
dibakor 2026-07-26 15:43:14 +06:00
parent 16dcf2351f
commit 13b1739ab1
5 changed files with 184 additions and 101 deletions

View File

@ -10,7 +10,7 @@ public class IntegrationBillingDocumentRequest
{
[Required(ErrorMessage = "Invoice/Billing document number is required.")]
[StringLength(50, ErrorMessage = "Invoice/Billing document number cannot exceed 50 characters.")]
public string InvoiceBillingDocumentNumber { get; set; } = string.Empty;
public string BillingDocumentNumber { get; set; } = string.Empty;
[Required(ErrorMessage = "Billing date is required.")]
[DataType(DataType.Date)]

View File

@ -1,17 +1,22 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
namespace OnlineSalesAutoCrop.CoreAPI.Models.Requests.Integrations;
public class IntegrationMaterialFreeGoodsRequest
{
public IntegrationMaterialFreeGoodsRequest()
{
Slabs = new List<IntegrationMaterialFreeGoodItemRequest>();
}
[Required(ErrorMessage = "SalesOrg is required.")]
[StringLength(4, MinimumLength = 1, ErrorMessage = "SalesOrg must be between 1 and 4 characters.")]
[StringLength(10, MinimumLength = 1, ErrorMessage = "SalesOrg must be between 1 and 10 characters.")]
public string SalesOrg { get; set; }
[Required(ErrorMessage = "DistributionChannel is required.")]
[StringLength(2, MinimumLength = 1, ErrorMessage = "DistributionChannel must be between 1 and 2 characters.")]
[StringLength(5, MinimumLength = 1, ErrorMessage = "DistributionChannel must be between 1 and 5 characters.")]
public string DistributionChannel { get; set; }
[StringLength(13, MinimumLength = 1, ErrorMessage = "CustomerNumber must be between 1 and 13 characters.")]
@ -20,29 +25,27 @@ public class IntegrationMaterialFreeGoodsRequest
[StringLength(2, MinimumLength = 1, ErrorMessage = "CustomerPriceGroup must be between 1 and 2 characters.")]
public string? CustomerPriceGroup { get; set; }
[Required(ErrorMessage = "MaterialCode is required.")]
[StringLength(10, MinimumLength = 1, ErrorMessage = "MaterialCode must be between 1 and 10 characters.")]
public string MaterialCode { get; set; }
public string? MaterialCode { get; set; }
public IList<IntegrationMaterialFreeGoodItemRequest> Slabs { get; set; }
}
[Required(ErrorMessage = "MinOrderQuantity is required.")]
public class IntegrationMaterialFreeGoodItemRequest
{
[Range(0.001, 9999999999999.999, ErrorMessage = "MinOrderQuantity must be greater than 0.")]
public decimal MinOrderQuantity { get; set; }
public decimal? MinOrderQuantity { get; set; }
[Required(ErrorMessage = "ForQuantity is required.")]
[Range(0.001, 9999999999999.999, ErrorMessage = "ForQuantity must be greater than 0.")]
public decimal ForQuantity { get; set; }
public decimal? ForQuantity { get; set; }
[Required(ErrorMessage = "UnitOfMeasure is required.")]
[StringLength(3, MinimumLength = 1, ErrorMessage = "UnitOfMeasure must be between 1 and 3 characters.")]
public string UnitOfMeasure { get; set; }
public string? UnitOfMeasure { get; set; }
[Required(ErrorMessage = "FreeQuantity is required.")]
[Range(0.001, 9999999999999.999, ErrorMessage = "FreeQuantity must be greater than 0.")]
public decimal FreeQuantity { get; set; }
public decimal? FreeQuantity { get; set; }
[Required(ErrorMessage = "FocUnitOfMeasure is required.")]
[StringLength(3, MinimumLength = 1, ErrorMessage = "FocUnitOfMeasure must be between 1 and 3 characters.")]
public string FocUnitOfMeasure { get; set; }
public string? FocUnitOfMeasure { get; set; }
[Required(ErrorMessage = "ValidFrom is required.")]
public DateOnly ValidFrom { get; set; }
@ -54,7 +57,6 @@ public class IntegrationMaterialFreeGoodsRequest
public string? Status { get; set; } // NULL = Active, X = Inactive
}
public class GetMaterialFreeGoodsByFilterRequest
{
[Required(ErrorMessage = "SalesOrg is required.")]

View File

@ -88,4 +88,7 @@ public class GetMaterialPriceByCodeRequest
[StringLength(10, ErrorMessage = "Customer Group Code cannot exceed 10 characters.")]
public string? CustomerGroupCode { get; set; }
[StringLength(10, ErrorMessage = "Distributor Channel Code cannot exceed 10 characters.")]
public string? DistributorChannelCode { get; set; }
}

View File

@ -290,10 +290,21 @@ public class IntegrationService : IIntegrationService
{
IntegrationMaterialPriceResponse meterialPrice = await GetMaterialPriceByCodeAndConditionTypeAsync(tc,
new GetMaterialPriceByCodeRequest() { MaterialCode = request.MaterialCode, ConditionType = request.ConditionType,
SalesOrg=request.SalesOrg, CustomerNumber = request.CustomerNumber,CustomerGroupCode = request.CustomerGroupCode });
SalesOrg=request.SalesOrg, CustomerNumber = request.CustomerNumber,CustomerGroupCode = request.CustomerGroupCode,
DistributorChannelCode = request.DistributionChannel});
if (meterialPrice != null && !string.IsNullOrWhiteSpace(meterialPrice.MaterialCode))
{
DeleteMaterialPriceByCodeAndConditionType(tc,
new GetMaterialPriceByCodeRequest()
{
MaterialCode = request.MaterialCode,
ConditionType = request.ConditionType,
SalesOrg = request.SalesOrg,
CustomerNumber = request.CustomerNumber,
CustomerGroupCode = request.CustomerGroupCode,
DistributorChannelCode = request.DistributionChannel
});
UpdateMaterialPrice(tc, request);
response.IsUpdated = true;
}
@ -363,6 +374,16 @@ public class IntegrationService : IIntegrationService
if (meterialFreeGoods != null && !string.IsNullOrWhiteSpace(meterialFreeGoods.MaterialCode))
{
DeleteMaterialFreeGoodsByFilter(tc,
new GetMaterialFreeGoodsByFilterRequest()
{
SalesOrg = request.SalesOrg,
DistributionChannel = request.DistributionChannel,
CustomerPriceGroup = request.CustomerPriceGroup,
MaterialCode = request.MaterialCode,
CustomerNumber = request.CustomerNumber
});
UpdateMaterialFreeGoods(tc, request);
response.IsUpdated = true;
}
@ -1129,7 +1150,8 @@ public class IntegrationService : IIntegrationService
SqlHelperExtension.CreateInParam("@MaterialCode", SqlDbType.NVarChar, request.MaterialCode),
SqlHelperExtension.CreateInParam("@ConditionType", SqlDbType.NVarChar, request.ConditionType),
SqlHelperExtension.CreateInParam("@CustomerNumber", SqlDbType.NVarChar, string.IsNullOrWhiteSpace(request.CustomerNumber)? null : request.CustomerNumber ),
SqlHelperExtension.CreateInParam("@CustomerGroup", SqlDbType.NVarChar, string.IsNullOrWhiteSpace(request.CustomerGroupCode)? null : request.CustomerGroupCode )
SqlHelperExtension.CreateInParam("@CustomerGroup", SqlDbType.NVarChar, string.IsNullOrWhiteSpace(request.CustomerGroupCode)? null : request.CustomerGroupCode ),
SqlHelperExtension.CreateInParam("@DistributorChannelCode", SqlDbType.NVarChar, string.IsNullOrWhiteSpace(request.DistributorChannelCode)? null : request.DistributorChannelCode )
];
using (IDataReader dr = await tc.ExecuteReaderSpAsync("dbo.GetMaterialPriceByMaterialCodeAndConditionType", parameterValues: p))
@ -1165,46 +1187,60 @@ public class IntegrationService : IIntegrationService
return response;
}
private bool CreateMaterialPrice(TransactionContext tc, IntegrationMaterialPriceRequest request)
private bool DeleteMaterialPriceByCodeAndConditionType(TransactionContext tc, GetMaterialPriceByCodeRequest request)
{
bool response = false;
DataTable dtSlabs = new DataTable();
dtSlabs.Columns.Add("ScaleValue", typeof(decimal));
dtSlabs.Columns.Add("ValidFrom", typeof(DateTime));
dtSlabs.Columns.Add("ValidTo", typeof(DateTime));
dtSlabs.Columns.Add("Status", typeof(bool));
dtSlabs.Columns.Add("ConditionValue", typeof(decimal));
foreach (var item in request.Slabs)
{
DataRow dr = dtSlabs.NewRow();
dr["ScaleQty"] = item.ScaleValue;
dr["ValidFrom"] = item.ValidFrom;
dr["ValidTo"] = item.ValidTo;
dr["Status"] = item.Status;
dr["ConditionValue"] = item.ConditionValue;
dtSlabs.Rows.Add(dr);
}
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("@CustomerGroupCode", SqlDbType.NVarChar, request.CustomerGroupCode),
SqlHelperExtension.CreateInParam("@MaterialCode", SqlDbType.NVarChar, request.MaterialCode),
SqlHelperExtension.CreateInParam("@ConditionType", SqlDbType.NVarChar, request.ConditionType),
SqlHelperExtension.CreateInParam("@CalculationType", SqlDbType.NVarChar, request.CalculationType),
SqlHelperExtension.CreateInParam("@PricingUnit", SqlDbType.NVarChar, request.PricingUnit),
SqlHelperExtension.CreateInParam("@UnitOfMeasure", SqlDbType.NVarChar, request.UnitOfMeasure),
SqlHelperExtension.CreateInParam("@DiscountSlabItemType",SqlDbType.Structured, dtSlabs),
SqlHelperExtension.CreateInParam("@SalesOrg", SqlDbType.NVarChar, request.SalesOrg),
SqlHelperExtension.CreateInParam("@MaterialCode", SqlDbType.NVarChar, request.MaterialCode),
SqlHelperExtension.CreateInParam("@ConditionType", SqlDbType.NVarChar, request.ConditionType),
SqlHelperExtension.CreateInParam("@CustomerNumber", SqlDbType.NVarChar, string.IsNullOrWhiteSpace(request.CustomerNumber)? null : request.CustomerNumber ),
SqlHelperExtension.CreateInParam("@CustomerGroup", SqlDbType.NVarChar, string.IsNullOrWhiteSpace(request.CustomerGroupCode)? null : request.CustomerGroupCode ),
SqlHelperExtension.CreateInParam("@DistributorChannelCode", SqlDbType.NVarChar, string.IsNullOrWhiteSpace(request.DistributorChannelCode)? null : request.DistributorChannelCode )
];
_ = tc.ExecuteNonQuerySp(spName: "dbo.InsertIntegrationMaterialPrice", parameterValues: p);
_ = tc.ExecuteNonQuerySp("dbo.DeleteMaterialPriceByMaterialCodeAndConditionType", parameterValues: p);
}
catch (Exception ex)
{
throw DBCustomError.GenerateCustomError(ex);
}
return response;
}
private bool CreateMaterialPrice(TransactionContext tc, IntegrationMaterialPriceRequest request)
{
bool response = false;
try
{
foreach (var item in request.Slabs)
{
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("@CustomerGroupCode", SqlDbType.NVarChar, request.CustomerGroupCode),
SqlHelperExtension.CreateInParam("@MaterialCode", SqlDbType.NVarChar, request.MaterialCode),
SqlHelperExtension.CreateInParam("@ConditionType", SqlDbType.NVarChar, request.ConditionType),
SqlHelperExtension.CreateInParam("@CalculationType", SqlDbType.NVarChar, request.CalculationType),
SqlHelperExtension.CreateInParam("@PricingUnit", SqlDbType.NVarChar, request.PricingUnit),
SqlHelperExtension.CreateInParam("@UnitOfMeasure", SqlDbType.NVarChar, request.UnitOfMeasure),
SqlHelperExtension.CreateInParam("@ScaleValue", SqlDbType.NVarChar, item.ScaleValue),
SqlHelperExtension.CreateInParam("@ValidFrom", SqlDbType.DateTime, item.ValidFrom),
SqlHelperExtension.CreateInParam("@ValidTo", SqlDbType.DateTime, item.ValidTo),
SqlHelperExtension.CreateInParam("@Status", SqlDbType.NVarChar, item.Status),
SqlHelperExtension.CreateInParam("@ConditionValue", SqlDbType.Decimal, item.ConditionValue)
];
_ = tc.ExecuteNonQuerySp(spName: "dbo.InsertIntegrationMaterialPrice", parameterValues: p);
}
response = true;
}
catch (Exception)
@ -1219,28 +1255,30 @@ public class IntegrationService : IIntegrationService
{
bool returnValue = false;
try
{
SqlParameter[] p =
[
SqlHelperExtension.CreateInParam("@SalesOrg", SqlDbType.NVarChar, request.SalesOrg),
SqlHelperExtension.CreateInParam("@DistributionChannel", SqlDbType.NVarChar, request.DistributionChannel),
SqlHelperExtension.CreateInParam("@CustomerNumber", SqlDbType.NVarChar, string.IsNullOrWhiteSpace(request.CustomerNumber) ? null : request.CustomerNumber),
SqlHelperExtension.CreateInParam("@CustomerGroupCode", SqlDbType.NVarChar, request.CustomerGroupCode),
SqlHelperExtension.CreateInParam("@MaterialCode", SqlDbType.NVarChar, request.MaterialCode),
SqlHelperExtension.CreateInParam("@ConditionType", SqlDbType.NVarChar, request.ConditionType),
SqlHelperExtension.CreateInParam("@CalculationType", SqlDbType.NVarChar, request.CalculationType),
SqlHelperExtension.CreateInParam("@PricingUnit", SqlDbType.NVarChar, request.PricingUnit),
SqlHelperExtension.CreateInParam("@UnitOfMeasure", SqlDbType.NVarChar, request.UnitOfMeasure),
//SqlHelperExtension.CreateInParam("@ValidFrom", SqlDbType.DateTime, request.ValidFrom),
//SqlHelperExtension.CreateInParam("@ValidTo", SqlDbType.DateTime, request.ValidTo),
//SqlHelperExtension.CreateInParam("@Status", SqlDbType.NVarChar, request.Status),
//SqlHelperExtension.CreateInParam("@ConditionValue", SqlDbType.Decimal, request.ConditionValue)
];
foreach (var item in request.Slabs)
{
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("@CustomerGroupCode", SqlDbType.NVarChar, request.CustomerGroupCode),
SqlHelperExtension.CreateInParam("@MaterialCode", SqlDbType.NVarChar, request.MaterialCode),
SqlHelperExtension.CreateInParam("@ConditionType", SqlDbType.NVarChar, request.ConditionType),
SqlHelperExtension.CreateInParam("@CalculationType", SqlDbType.NVarChar, request.CalculationType),
SqlHelperExtension.CreateInParam("@PricingUnit", SqlDbType.NVarChar, request.PricingUnit),
SqlHelperExtension.CreateInParam("@UnitOfMeasure", SqlDbType.NVarChar, request.UnitOfMeasure),
SqlHelperExtension.CreateInParam("@ScaleValue", SqlDbType.NVarChar, item.ScaleValue),
SqlHelperExtension.CreateInParam("@ValidFrom", SqlDbType.DateTime, item.ValidFrom),
SqlHelperExtension.CreateInParam("@ValidTo", SqlDbType.DateTime, item.ValidTo),
SqlHelperExtension.CreateInParam("@Status", SqlDbType.NVarChar, item.Status),
SqlHelperExtension.CreateInParam("@ConditionValue", SqlDbType.Decimal, item.ConditionValue)
];
_ = tc.ExecuteNonQuerySp(spName: "dbo.UpdateIntegrationMaterialPrice", parameterValues: p);
_ = tc.ExecuteNonQuerySp(spName: "dbo.UpdateIntegrationMaterialPrice", parameterValues: p);
}
returnValue = true;
}
@ -1306,7 +1344,9 @@ public class IntegrationService : IIntegrationService
return response;
}
private bool CreateMaterialFreeGoods(TransactionContext tc, IntegrationMaterialFreeGoodsRequest request)
private bool DeleteMaterialFreeGoodsByFilter(
TransactionContext tc, GetMaterialFreeGoodsByFilterRequest request)
{
bool response = false;
@ -1316,20 +1356,49 @@ public class IntegrationService : IIntegrationService
[
SqlHelperExtension.CreateInParam("@SalesOrg", SqlDbType.NVarChar, request.SalesOrg),
SqlHelperExtension.CreateInParam("@DistributionChannel", SqlDbType.NVarChar, request.DistributionChannel),
SqlHelperExtension.CreateInParam("@CustomerNumber", SqlDbType.NVarChar, (object?)request.CustomerNumber ?? DBNull.Value),
SqlHelperExtension.CreateInParam("@CustomerNumber", SqlDbType.NVarChar, request.CustomerNumber),
SqlHelperExtension.CreateInParam("@CustomerPriceGroup", SqlDbType.NVarChar, request.CustomerPriceGroup),
SqlHelperExtension.CreateInParam("@MaterialCode", SqlDbType.NVarChar, request.MaterialCode),
SqlHelperExtension.CreateInParam("@MinOrderQuantity", SqlDbType.Decimal, request.MinOrderQuantity),
SqlHelperExtension.CreateInParam("@ForQuantity", SqlDbType.Decimal, request.ForQuantity),
SqlHelperExtension.CreateInParam("@UnitOfMeasure", SqlDbType.NVarChar, request.UnitOfMeasure),
SqlHelperExtension.CreateInParam("@FreeQuantity", SqlDbType.Decimal, request.FreeQuantity),
SqlHelperExtension.CreateInParam("@FocUnitOfMeasure", SqlDbType.NVarChar, request.FocUnitOfMeasure),
SqlHelperExtension.CreateInParam("@ValidFrom", SqlDbType.Date, request.ValidFrom),
SqlHelperExtension.CreateInParam("@ValidTo", SqlDbType.Date, request.ValidTo),
SqlHelperExtension.CreateInParam("@Status", SqlDbType.NVarChar, (object?)request.Status ?? DBNull.Value),
SqlHelperExtension.CreateInParam("@MaterialCode", SqlDbType.NVarChar, request.MaterialCode)
];
_ = tc.ExecuteNonQuerySp("dbo.DeleteMaterialFOCByFilter", parameterValues: p);
response = true;
}
catch (Exception ex)
{
throw DBCustomError.GenerateCustomError(ex);
}
return response;
}
private bool CreateMaterialFreeGoods(TransactionContext tc, IntegrationMaterialFreeGoodsRequest request)
{
bool response = false;
try
{
foreach (var item in request.Slabs)
{
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),
SqlHelperExtension.CreateInParam("@MinOrderQuantity", SqlDbType.Decimal, item.MinOrderQuantity),
SqlHelperExtension.CreateInParam("@ForQuantity", SqlDbType.Decimal, item.ForQuantity),
SqlHelperExtension.CreateInParam("@UnitOfMeasure", SqlDbType.NVarChar, item.UnitOfMeasure),
SqlHelperExtension.CreateInParam("@FreeQuantity", SqlDbType.Decimal, item.FreeQuantity),
SqlHelperExtension.CreateInParam("@FocUnitOfMeasure", SqlDbType.NVarChar, item.FocUnitOfMeasure),
SqlHelperExtension.CreateInParam("@ValidFrom", SqlDbType.Date, item.ValidFrom),
SqlHelperExtension.CreateInParam("@ValidTo", SqlDbType.Date, item.ValidTo),
SqlHelperExtension.CreateInParam("@Status", SqlDbType.NVarChar, item.Status),
];
_ = tc.ExecuteNonQuerySp(spName: "dbo.InsertIntegrationMaterialFreeGoods", parameterValues: p);
}
_ = tc.ExecuteNonQuerySp(spName: "dbo.InsertIntegrationMaterialFreeGoods", parameterValues: p);
response = true;
}
@ -1347,24 +1416,27 @@ public class IntegrationService : IIntegrationService
try
{
SqlParameter[] p =
[
SqlHelperExtension.CreateInParam("@SalesOrg", SqlDbType.NVarChar, request.SalesOrg),
SqlHelperExtension.CreateInParam("@DistributionChannel", SqlDbType.NVarChar, request.DistributionChannel),
SqlHelperExtension.CreateInParam("@CustomerNumber", SqlDbType.NVarChar, string.IsNullOrWhiteSpace(request.CustomerNumber)? null : request.CustomerNumber ),
SqlHelperExtension.CreateInParam("@CustomerPriceGroup", SqlDbType.NVarChar, request.CustomerPriceGroup),
SqlHelperExtension.CreateInParam("@MaterialCode", SqlDbType.NVarChar, request.MaterialCode),
SqlHelperExtension.CreateInParam("@MinOrderQuantity", SqlDbType.Decimal, request.MinOrderQuantity),
SqlHelperExtension.CreateInParam("@ForQuantity", SqlDbType.Decimal, request.ForQuantity),
SqlHelperExtension.CreateInParam("@UnitOfMeasure", SqlDbType.NVarChar, request.UnitOfMeasure),
SqlHelperExtension.CreateInParam("@FreeQuantity", SqlDbType.Decimal, request.FreeQuantity),
SqlHelperExtension.CreateInParam("@FocUnitOfMeasure", SqlDbType.NVarChar, request.FocUnitOfMeasure),
SqlHelperExtension.CreateInParam("@ValidFrom", SqlDbType.Date, request.ValidFrom),
SqlHelperExtension.CreateInParam("@ValidTo", SqlDbType.Date, request.ValidTo),
SqlHelperExtension.CreateInParam("@Status", SqlDbType.NVarChar, (object?)request.Status ?? DBNull.Value)
];
foreach (var item in request.Slabs)
{
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),
SqlHelperExtension.CreateInParam("@MinOrderQuantity", SqlDbType.Decimal, item.MinOrderQuantity),
SqlHelperExtension.CreateInParam("@ForQuantity", SqlDbType.Decimal, item.ForQuantity),
SqlHelperExtension.CreateInParam("@UnitOfMeasure", SqlDbType.NVarChar, item.UnitOfMeasure),
SqlHelperExtension.CreateInParam("@FreeQuantity", SqlDbType.Decimal, item.FreeQuantity),
SqlHelperExtension.CreateInParam("@FocUnitOfMeasure", SqlDbType.NVarChar, item.FocUnitOfMeasure),
SqlHelperExtension.CreateInParam("@ValidFrom", SqlDbType.Date, item.ValidFrom),
SqlHelperExtension.CreateInParam("@ValidTo", SqlDbType.Date, item.ValidTo),
SqlHelperExtension.CreateInParam("@Status", SqlDbType.NVarChar, item.Status ),
];
_ = tc.ExecuteNonQuerySp(spName: "dbo.UpdateIntegrationMaterialFreeGoods", parameterValues: p);
_ = tc.ExecuteNonQuerySp(spName: "dbo.UpdateIntegrationMaterialFreeGoods", parameterValues: p);
}
returnValue = true;
}
@ -1484,7 +1556,7 @@ public class IntegrationService : IIntegrationService
try
{
CreateBillingDocument(tc, request);
response.InvoiceBillingDocumentNumber = request.InvoiceBillingDocumentNumber;
response.InvoiceBillingDocumentNumber = request.BillingDocumentNumber;
response.BillingDate = request.BillingDate;
tc.End();
}
@ -1556,7 +1628,7 @@ public class IntegrationService : IIntegrationService
SqlParameter[] p =
[
SqlHelperExtension.CreateInParam("@BillingNumber", SqlDbType.NVarChar, request.InvoiceBillingDocumentNumber),
SqlHelperExtension.CreateInParam("@BillingNumber", SqlDbType.NVarChar, request.BillingDocumentNumber),
SqlHelperExtension.CreateInParam("@SalesOrderNo", SqlDbType.NVarChar, request.SalesOrderReferenceNumber),
SqlHelperExtension.CreateInParam("@BillingDate", SqlDbType.DateTime, request.BillingDate),
SqlHelperExtension.CreateInParam("@DeliveryNumber", SqlDbType.NVarChar, request.DeliveryReferenceNumber),

View File

@ -210,6 +210,12 @@ namespace OnlineSalesAutoCrop.CoreAPI.Controllers
MaterialFreeGoodsByReqResponse response = new MaterialFreeGoodsByReqResponse();
try
{
if(request.Slabs == null || request.Slabs?.Count==0)
{
response.ReturnMessage.Add($"At least one slab must be sent.");
response.ReturnStatus = StatusCodes.Status400BadRequest;
return StatusCode(StatusCodes.Status400BadRequest, response);
}
response = await _integrationService.UpsertMaterialFreeGoodsAsync(request);
if (!response.IsUpdated)
{
@ -333,14 +339,14 @@ namespace OnlineSalesAutoCrop.CoreAPI.Controllers
try
{
response = await _integrationService.SaveBillingDocumentAsync(request);
response.ReturnMessage.Add($"Successfully Save the Billing for Billing Documnet No :{request.InvoiceBillingDocumentNumber} " +
response.ReturnMessage.Add($"Successfully Save the Billing for Billing Documnet No :{request.BillingDocumentNumber} " +
$"And BillingDate : {request.BillingDate} ");
response.ReturnStatus = StatusCodes.Status201Created;
return StatusCode(StatusCodes.Status201Created, response);
}
catch (Exception ex)
{
string msg = $"Exception Occur in Billing for Billing Documnet No :{request.InvoiceBillingDocumentNumber} " +
string msg = $"Exception Occur in Billing for Billing Documnet No :{request.BillingDocumentNumber} " +
$"And BillingDate : {request.BillingDate} ";
_logger.LogError(exception: ex, msg);
response.ReturnStatus = StatusCodes.Status500InternalServerError;