* Added Excel generation for Marelli

* Added Logo
This commit is contained in:
2025-09-30 21:18:34 +02:00
parent f6cc62d6c8
commit 8cfded48ae
9 changed files with 55 additions and 38 deletions

View File

@@ -89,14 +89,14 @@ public class ExcelGeneratorController(IWzHeaderService wzHeaderService, IMateria
workbook.SaveAs(stream);
stream.Position = 0;
SendEmail(stream, wzHeader);
SendEmail(stream, wzHeader, "Meyle");
}
[HttpGet("generate-marelli")]
public async Task GeneratePackListForMarelli(Guid packListId)
{
WzHeaderDto wzHeader = await wzHeaderService.GetById(packListId);
MaterialTransactionDto? materialTransaction = await materialTransactionService.GetByWzNumber(wzHeader.WzRowsMeyle.First().WzNumber);
WzHeaderDto wzHeader = await wzHeaderService.GetByIdMarelli(packListId);
MaterialTransactionDto? materialTransaction = await materialTransactionService.GetByWzNumber(wzHeader.WzRowsMarelli.First().WzNumber);
using ExcelEngine excelEngine = new ExcelEngine();
IApplication application = excelEngine.Excel;
@@ -109,33 +109,28 @@ public class ExcelGeneratorController(IWzHeaderService wzHeaderService, IMateria
boldFontStyle.Font.Bold = true;
var mainHeaders = new List<string>
{ "Numer zamówienia Meyle", "Meyle Numer", "Ilość w dostawie", "Numer Palety", "Nr Wz", "Nr Partii" };
worksheet["B1"].Value = "Packing List";
worksheet["B1"].CellStyle = boldFontStyle;
{ "", "ColliNr", "Magneti Marelli Sales nr", "Engineer number", "Quantity", "Order nr", "Supplier Comments" };
worksheet["B3"].Value = "Supplier Name";
worksheet.Range["A1:B1"].Merge();
worksheet.Range["A1"].Text = "PACKING LIST";
worksheet.Range["A1"].CellStyle = boldFontStyle;
worksheet["A3"].Value = "Supplier Name";
worksheet["A3"].CellStyle = boldFontStyle;
worksheet["B3"].Value = "FA KROSNO";
worksheet["B3"].CellStyle = boldFontStyle;
worksheet["D3"].Value = "FA KROSNO";
worksheet["D3"].CellStyle = boldFontStyle;
worksheet["B4"].Value = "Packing List nr";
worksheet["A4"].Value = "Packing List nr";
worksheet["A4"].CellStyle = boldFontStyle;
worksheet["B4"].Value = string.Join(", ", wzHeader.WzRowsMeyle.Select(x => x.WzNumber).Distinct());
worksheet["B4"].CellStyle = boldFontStyle;
worksheet["B6"].Value = "Related delivery note";
worksheet["B6"].CellStyle = boldFontStyle;
worksheet["A6"].Value = "Date";
worksheet["A6"].CellStyle = boldFontStyle;
worksheet["D6"].Value = string.Join(", ", wzHeader.WzRowsMeyle.Select(x => x.WzNumber).Distinct());
worksheet["D6"].CellStyle = boldFontStyle;
worksheet["B9"].Value = "Forwarder";
worksheet["B9"].CellStyle = boldFontStyle;
worksheet["B10"].Value = "Date";
worksheet["B10"].CellStyle = boldFontStyle;
worksheet["D10"].DateTime = materialTransaction?.CreateDate ?? DateTime.Now;
worksheet["B6"].DateTime = materialTransaction?.CreateDate ?? DateTime.Now;
int currentRow = 12;
@@ -148,14 +143,15 @@ public class ExcelGeneratorController(IWzHeaderService wzHeaderService, IMateria
currentRow++;
foreach (var wzRow in wzHeader.WzRowsMeyle)
foreach (var wzRow in wzHeader.WzRowsMarelli.Where(x => x.PalletNumber != null))
{
worksheet.Range[$"A{currentRow}"].Text = wzRow.OrderNumber;
worksheet.Range[$"B{currentRow}"].Text = wzRow.ItemNumber;
worksheet.Range[$"C{currentRow}"].Number = (double)wzRow.Quantity!;
worksheet.Range[$"D{currentRow}"].Number = (double)wzRow.PalletNumber!;
worksheet.Range[$"E{currentRow}"].Text = wzRow.WzNumber;
worksheet.Range[$"F{currentRow}"].Text = wzRow.PartNumber;
worksheet.Range[$"A{currentRow}"].Text = "MIX";
worksheet.Range[$"B{currentRow}"].Number = (double)wzRow.PalletNumber!;
worksheet.Range[$"C{currentRow}"].Text = wzRow.ItemNumber;
worksheet.Range[$"D{currentRow}"].Text = wzRow.EngineerNumber;
worksheet.Range[$"E{currentRow}"].Number = (double)wzRow.Quantity!;
worksheet.Range[$"F{currentRow}"].Text = wzRow.OrderNumber;
worksheet.Range[$"G{currentRow}"].Text = wzRow.WzNumber;
currentRow++;
}
@@ -169,7 +165,7 @@ public class ExcelGeneratorController(IWzHeaderService wzHeaderService, IMateria
workbook.SaveAs(stream);
stream.Position = 0;
SendEmail(stream, wzHeader);
SendEmail(stream, wzHeader, "Marelli Magneti");
}
private static string GetColumnLetter(int columnIndex)
@@ -184,7 +180,7 @@ public class ExcelGeneratorController(IWzHeaderService wzHeaderService, IMateria
return columnName;
}
private void SendEmail(MemoryStream stream, WzHeaderDto wzHeader)
private void SendEmail(MemoryStream stream, WzHeaderDto wzHeader, string client)
{
IConfigurationSection smtpSettings = configuration.GetSection("EmailSettings");
string smtpHost = smtpSettings["SmtpServer"] ?? string.Empty;
@@ -194,9 +190,9 @@ public class ExcelGeneratorController(IWzHeaderService wzHeaderService, IMateria
string fromEmail = smtpSettings["SenderEmail"] ?? string.Empty;
List<string> toEmail = wzHeader.EmailAddresses?.Split(',')?.ToList() ??
(smtpSettings["RecipientEmail"] ?? string.Empty).Split(',').ToList();
string subject = "MEYLE: Packing List";
string subject = $"{client}: Packing List";
string body =
$"W załączeniu znajduje się Packing List dla klienta MEYLE wygenerowany {DateTime.Now:dd.MM.yyyy HH:mm:ss}";
$"W załączeniu znajduje się Packing List dla klienta ${client} wygenerowany {DateTime.Now:dd.MM.yyyy HH:mm:ss}";
using var mailMessage = new MailMessage();
mailMessage.From = new MailAddress(fromEmail);
@@ -204,7 +200,7 @@ public class ExcelGeneratorController(IWzHeaderService wzHeaderService, IMateria
mailMessage.Body = body;
mailMessage.IsBodyHtml = false;
mailMessage.Attachments.Add(new Attachment(stream, $"PackingList_Meyle_{DateTime.Now:yyyyMMddHHmmss}.xlsx",
mailMessage.Attachments.Add(new Attachment(stream, $"PackingList_{client}_{DateTime.Now:yyyyMMddHHmmss}.xlsx",
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"));
toEmail.ForEach(x => mailMessage.To.Add(x));