Compare commits
1 Commits
master
...
feature/Pi
| Author | SHA1 | Date | |
|---|---|---|---|
| a08ec285f6 |
@@ -4,6 +4,7 @@ using DelforSenders.Models;
|
||||
using DelforSenders.Services;
|
||||
using FaKrosnoEfDataModel.Dtos;
|
||||
using SytelineSaAppEfDataModel.Dtos;
|
||||
using Action = DelforSenders.Enums.Action;
|
||||
|
||||
namespace DelforSenders.Core;
|
||||
|
||||
@@ -32,6 +33,7 @@ public class App(IAppService service, IClientFactory clientFactory, IValidator v
|
||||
IList<ItemMapperModel> itemMappers = service.GetItemMappers();
|
||||
IList<OrderMapperModel> orderMappers = service.GetOrderMappers();
|
||||
IList<CustomerMapperModel> customerMappers = service.GetCustomerMappers();
|
||||
IList<ItemQuantityMapper> itemQuantityMappers = service.GetItemQuantityMappers();
|
||||
IList<EdiCustomerOrderDto> ediCustomerOrders = new List<EdiCustomerOrderDto>();
|
||||
|
||||
IEnumerable<ScheduleOrderDto> scheduleOrders = await service.GetScheduleOrders(lastUpdateDate.Value);
|
||||
@@ -43,6 +45,7 @@ public class App(IAppService service, IClientFactory clientFactory, IValidator v
|
||||
{
|
||||
logger.LogInfo($"{scheduleOrder.ID} - Rozpoczęcie procesowania zamówienia");
|
||||
|
||||
MapItemQuantityIfNeeded(scheduleOrder, itemQuantityMappers);
|
||||
MapItemNumberIfNeeded(scheduleOrder, itemMappers);
|
||||
MapOrderNumberIfNeeded(scheduleOrder, orderMappers);
|
||||
|
||||
@@ -203,6 +206,66 @@ public class App(IAppService service, IClientFactory clientFactory, IValidator v
|
||||
return false;
|
||||
}
|
||||
|
||||
private static void MapItemQuantityIfNeeded(ScheduleOrderDto scheduleOrder,
|
||||
IList<ItemQuantityMapper> itemQuantityMappers)
|
||||
{
|
||||
if (itemQuantityMappers.All(x => x.OrderNumber != scheduleOrder.PONum)) return;
|
||||
|
||||
foreach (ScheduleOrderDetailDto scheduleOrderDetail in scheduleOrder.ScheduleOrderDetails)
|
||||
{
|
||||
if (itemQuantityMappers.FirstOrDefault(x =>
|
||||
x.Item == scheduleOrderDetail.Sh_productCode && x.OrderNumber == scheduleOrder.PONum) is
|
||||
{ } mapper)
|
||||
{
|
||||
switch (mapper.Action)
|
||||
{
|
||||
case Action.Add:
|
||||
{
|
||||
foreach (ScheduleOrderDetailDetailDto scheduleOrderDetailDetailDto in scheduleOrderDetail
|
||||
.ScheduleOrderDetailDetails)
|
||||
{
|
||||
scheduleOrderDetailDetailDto.Qty += mapper.Modifier;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case Action.Distract:
|
||||
{
|
||||
foreach (ScheduleOrderDetailDetailDto scheduleOrderDetailDetailDto in scheduleOrderDetail
|
||||
.ScheduleOrderDetailDetails)
|
||||
{
|
||||
scheduleOrderDetailDetailDto.Qty -= mapper.Modifier;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case Action.Multiply:
|
||||
{
|
||||
foreach (ScheduleOrderDetailDetailDto scheduleOrderDetailDetailDto in scheduleOrderDetail
|
||||
.ScheduleOrderDetailDetails)
|
||||
{
|
||||
scheduleOrderDetailDetailDto.Qty *= mapper.Modifier;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case Action.Divide:
|
||||
{
|
||||
foreach (ScheduleOrderDetailDetailDto scheduleOrderDetailDetailDto in scheduleOrderDetail
|
||||
.ScheduleOrderDetailDetails)
|
||||
{
|
||||
scheduleOrderDetailDetailDto.Qty /= mapper.Modifier;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void MapItemNumberIfNeeded(ScheduleOrderDto scheduleOrder, IList<ItemMapperModel> itemMappers)
|
||||
{
|
||||
foreach (ScheduleOrderDetailDto scheduleOrderDetail in scheduleOrder.ScheduleOrderDetails)
|
||||
|
||||
9
DelforSender/Enums/Action.cs
Normal file
9
DelforSender/Enums/Action.cs
Normal file
@@ -0,0 +1,9 @@
|
||||
namespace DelforSenders.Enums;
|
||||
|
||||
public enum Action
|
||||
{
|
||||
Add,
|
||||
Distract,
|
||||
Multiply,
|
||||
Divide
|
||||
}
|
||||
5
DelforSender/Models/ItemQuantityMapper.cs
Normal file
5
DelforSender/Models/ItemQuantityMapper.cs
Normal file
@@ -0,0 +1,5 @@
|
||||
using Action = DelforSenders.Enums.Action;
|
||||
|
||||
namespace DelforSenders.Models;
|
||||
|
||||
public record ItemQuantityMapper(string OrderNumber,string Item, Action Action, int Modifier);
|
||||
@@ -158,6 +158,14 @@ public class AppService(IRestClient restClient, IConfiguration configuration, IE
|
||||
|
||||
return customerMappers;
|
||||
}
|
||||
|
||||
public IList<ItemQuantityMapper> GetItemQuantityMappers()
|
||||
{
|
||||
var itemQuantityMappers = configuration.GetSection("ItemQuantityMAppers").Get<List<ItemQuantityMapper>>() ??
|
||||
new List<ItemQuantityMapper>();
|
||||
|
||||
return itemQuantityMappers;
|
||||
}
|
||||
|
||||
public async Task GenerateAndSendEmail()
|
||||
{
|
||||
|
||||
@@ -15,6 +15,7 @@ public interface IAppService
|
||||
IList<ItemMapperModel> GetItemMappers();
|
||||
IList<OrderMapperModel> GetOrderMappers();
|
||||
IList<CustomerMapperModel> GetCustomerMappers();
|
||||
IList<ItemQuantityMapper> GetItemQuantityMappers();
|
||||
Task<bool> SaveOrders(IList<EdiCustomerOrderDto> ediCustomerOrders);
|
||||
Task<bool> SaveEdiCustomerOrderImport(IList<EdiCustomerOrderImportDto> ediCustomerOrderImports);
|
||||
Task<bool> SaveLog(EdiLogDto ediLog);
|
||||
|
||||
@@ -41,6 +41,16 @@
|
||||
"OrderNumber": "0092190784",
|
||||
"Recipient": 27,
|
||||
"NewOrderNumber": "92190784"
|
||||
},
|
||||
{
|
||||
"OrderNumber": "000098459753",
|
||||
"Recipient": 37,
|
||||
"NewOrderNumber": "98459753"
|
||||
},
|
||||
{
|
||||
"OrderNumber": "0092188648",
|
||||
"Recipient": 27,
|
||||
"NewOrderNumber": "92188648"
|
||||
}
|
||||
],
|
||||
"CustomerMappers": [
|
||||
@@ -51,6 +61,14 @@
|
||||
"CustomerSequenceNumber": 1
|
||||
}
|
||||
],
|
||||
"ItemQuantityMappers": [
|
||||
{
|
||||
"OrderNumber": "000098459753",
|
||||
"Item": "FA33590.97A",
|
||||
"Action": "Multiply",
|
||||
"Modifier": 100
|
||||
}
|
||||
],
|
||||
"Customers": [
|
||||
{
|
||||
"TpCode": "000254206547900919",
|
||||
|
||||
Reference in New Issue
Block a user