Merge branch 'master' of https://github.com/trencik91/FA
This commit is contained in:
@@ -26,7 +26,13 @@ public class App(
|
||||
|
||||
IncludedConfiguration includedConfig = configuration.GetSection("Included").Get<IncludedConfiguration>() ??
|
||||
new IncludedConfiguration();
|
||||
|
||||
DateTime closestSendingDate = GetClosestSendingDate(DateTime.Now);
|
||||
|
||||
// scheduleOrdersByPoNumber = scheduleOrdersByPoNumber
|
||||
// .Where(x => !string.IsNullOrWhiteSpace(x.Key) && x.Key == "5500278577")
|
||||
// .ToDictionary(x => x.Key, x => x.Value);
|
||||
|
||||
foreach (KeyValuePair<string, ScheduleOrderDto?> scheduleOrderByPoNumber in scheduleOrdersByPoNumber)
|
||||
{
|
||||
if (scheduleOrderByPoNumber.Value == null) continue;
|
||||
@@ -85,7 +91,8 @@ public class App(
|
||||
out List<MaterialTransactionDto>? materialTransactions);
|
||||
|
||||
IDictionary<DateTime, IList<Item>> itemsToSendByDate = GetItemsToSendByDate(scheduleOrder,
|
||||
scheduleOrder.ScheduleOrderDetails.First(), scheduleOrderDetailDetails, materialTransactions);
|
||||
scheduleOrder.ScheduleOrderDetails.First(), scheduleOrderDetailDetails, materialTransactions,
|
||||
closestSendingDate);
|
||||
|
||||
orderNumbersByWz.TryGetValue(wzByPoNumber.Value.WzNumber, out string? orderNumber);
|
||||
|
||||
@@ -200,23 +207,24 @@ public class App(
|
||||
|
||||
private IDictionary<DateTime, IList<Item>> GetItemsToSendByDate(ScheduleOrderDto scheduleOrder,
|
||||
ScheduleOrderDetailDto scheduleOrderDetail, IList<ScheduleOrderDetailDetailDto> scheduleOrderDetailDetails,
|
||||
List<MaterialTransactionDto>? materialTransactions)
|
||||
List<MaterialTransactionDto>? materialTransactions, DateTime closestSendingDate)
|
||||
{
|
||||
IDictionary<DateTime, IList<Item>> itemsToSendByDate = new Dictionary<DateTime, IList<Item>>();
|
||||
|
||||
Item materialTransactionItem = new Item(scheduleOrder.Recipient.RecipientDesc,
|
||||
scheduleOrderDetail.Sc_productCode, scheduleOrderDetail.Sh_productCode,
|
||||
materialTransactions?.Sum(x => (int?)x.Qty ?? 0) ?? 0, "MAL_TRAN");
|
||||
|
||||
itemsToSendByDate.Add(closestSendingDate, new List<Item> { materialTransactionItem });
|
||||
|
||||
foreach (ScheduleOrderDetailDetailDto scheduleOrderDetailDetail in scheduleOrderDetailDetails)
|
||||
{
|
||||
if (scheduleOrderDetailDetail.Qty <= 0) continue;
|
||||
|
||||
DateTime nextSendDate = GetNextSendDate(scheduleOrderDetailDetail);
|
||||
DateTime nextSendDate = GetNextSendDate(scheduleOrderDetailDetail, closestSendingDate);
|
||||
|
||||
int quantity = scheduleOrderDetailDetail.Qty;
|
||||
|
||||
if (scheduleOrderDetailDetail.QtyType == "83")
|
||||
{
|
||||
nextSendDate = nextSendDate.AddDays(7);
|
||||
quantity += materialTransactions?.Sum(x => (int?)x.Qty ?? 0) ?? 0;
|
||||
}
|
||||
|
||||
Item item = new Item(scheduleOrder.Recipient.RecipientDesc, scheduleOrderDetail.Sc_productCode,
|
||||
scheduleOrderDetail.Sh_productCode, quantity, scheduleOrderDetailDetail.QtyType);
|
||||
|
||||
@@ -233,7 +241,7 @@ public class App(
|
||||
return itemsToSendByDate;
|
||||
}
|
||||
|
||||
private DateTime GetNextSendDate(ScheduleOrderDetailDetailDto scheduleOrderDetailDetail)
|
||||
private DateTime GetNextSendDate(ScheduleOrderDetailDetailDto scheduleOrderDetailDetail, DateTime closestSendingDate)
|
||||
{
|
||||
DateTime ediDate = scheduleOrderDetailDetail.DateFrom;
|
||||
|
||||
@@ -244,6 +252,17 @@ public class App(
|
||||
if (sendingDate.DayOfWeek < DayOfWeek.Thursday)
|
||||
sendingDate = sendingDate.AddDays(-7);
|
||||
|
||||
return sendingDate;
|
||||
return sendingDate <= closestSendingDate ? closestSendingDate : sendingDate;
|
||||
}
|
||||
|
||||
public static DateTime GetClosestSendingDate(DateTime date)
|
||||
{
|
||||
int daysUntilThursday = ((int)DayOfWeek.Thursday - (int)date.DayOfWeek + 7) % 7;
|
||||
if (daysUntilThursday == 0)
|
||||
{
|
||||
daysUntilThursday = 7; // Jeśli dzisiaj jest czwartek, bierzemy następny
|
||||
}
|
||||
|
||||
return date.AddDays(daysUntilThursday);
|
||||
}
|
||||
}
|
||||
@@ -111,7 +111,9 @@ public class ExcelGenerator(IConfiguration configuration)
|
||||
if (index < 0) continue;
|
||||
|
||||
letter = GetColumnLetter(index);
|
||||
worksheet.Range[$"{letter}{currentRow}"].Text = sendDateWithQuantity.Quantity.ToString();
|
||||
worksheet.Range[$"{letter}{currentRow}"].Text = sendDateWithQuantity.Quantity <= 0
|
||||
? null
|
||||
: sendDateWithQuantity.Quantity.ToString();
|
||||
worksheet.Range[$"{letter}{currentRow}"].HorizontalAlignment = ExcelHAlign.HAlignRight;
|
||||
worksheet.Range[$"{letter}{currentRow}"].NumberFormat = "0";
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user