Warehouses #1

Merged
trent merged 159 commits from Warehouses into master 2026-01-10 20:24:17 +00:00
9 changed files with 55 additions and 38 deletions
Showing only changes of commit 8cfded48ae - Show all commits

View File

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

View File

@@ -259,7 +259,7 @@
private async Task ExportXls() private async Task ExportXls()
{ {
int count = WzRowsMarelli.Count(x => x.PalletNumber == null); int count = WzRowsMarelli.Count(x => x.PalletNumber == null);
_isValid = true;
_isValid = count == 0; _isValid = count == 0;
_isValid = _isValid && !string.IsNullOrWhiteSpace(EmailAddresses); _isValid = _isValid && !string.IsNullOrWhiteSpace(EmailAddresses);

View File

@@ -8,4 +8,5 @@ public class WzClientDto
public DateTime CreatedDate { get; set; } public DateTime CreatedDate { get; set; }
public string Name { get; set; } public string Name { get; set; }
public string ShortName { get; set; } public string ShortName { get; set; }
public string? LogoBase64 { get; set; }
} }

View File

@@ -8,4 +8,5 @@ public class WzHeaderDto
public string? EmailAddresses { get; set; } public string? EmailAddresses { get; set; }
public string? WzNumbers { get; set; } public string? WzNumbers { get; set; }
public IEnumerable<WzRowMeyleDto> WzRowsMeyle { get; set; } = new List<WzRowMeyleDto>(); public IEnumerable<WzRowMeyleDto> WzRowsMeyle { get; set; } = new List<WzRowMeyleDto>();
public IEnumerable<WzRowMarelliDto> WzRowsMarelli { get; set; } = new List<WzRowMarelliDto>();
} }

View File

@@ -8,4 +8,5 @@ public class WzClient
public DateTime CreatedDate { get; set; } public DateTime CreatedDate { get; set; }
public string Name { get; set; } public string Name { get; set; }
public string ShortName { get; set; } public string ShortName { get; set; }
public byte[]? Logo { get; set; }
} }

View File

@@ -20,7 +20,8 @@ namespace SytelineSaAppEfDataModel
CreateMap<UserName, UserNameDto>().ReverseMap(); CreateMap<UserName, UserNameDto>().ReverseMap();
CreateMap<EdiUser, EdiUserDto>().ReverseMap(); CreateMap<EdiUser, EdiUserDto>().ReverseMap();
CreateMap<MaterialTransaction, MaterialTransactionDto>().ReverseMap(); CreateMap<MaterialTransaction, MaterialTransactionDto>().ReverseMap();
CreateMap<WzClient, WzClientDto>().ReverseMap(); CreateMap<WzClient, WzClientDto>().ForMember(dest => dest.LogoBase64,
opt => opt.MapFrom(src => src.Logo != null ? Convert.ToBase64String(src.Logo) : null)).ReverseMap();
CreateMap<WzHeader, WzHeaderDto>().ReverseMap(); CreateMap<WzHeader, WzHeaderDto>().ReverseMap();
CreateMap<WzRowMeyle, WzRowMeyleDto>().ReverseMap(); CreateMap<WzRowMeyle, WzRowMeyleDto>().ReverseMap();
CreateMap<ItemCust, ItemCustDto>().ReverseMap(); CreateMap<ItemCust, ItemCustDto>().ReverseMap();

View File

@@ -8,5 +8,6 @@ public interface IWzHeaderService
Task<IEnumerable<WzHeaderDto>> GetByCustomerNumber(string customerNumber, int customerSequence); Task<IEnumerable<WzHeaderDto>> GetByCustomerNumber(string customerNumber, int customerSequence);
Task CreateHeader(WzHeaderDto wzHeader); Task CreateHeader(WzHeaderDto wzHeader);
Task<WzHeaderDto> GetById(Guid id); Task<WzHeaderDto> GetById(Guid id);
Task<WzHeaderDto> GetByIdMarelli(Guid id);
Task AddEmailsToWzHeader(Guid id, string emailAddresses); Task AddEmailsToWzHeader(Guid id, string emailAddresses);
} }

View File

@@ -38,6 +38,18 @@ public class WzHeaderService(SytelineSaAppDbContext context, IMapper mapper) : I
return wzHeader; return wzHeader;
} }
public async Task<WzHeaderDto> GetByIdMarelli(Guid id)
{
var entity = await context.WzHeaders.FindAsync(id);
var items = await context.WzRowsMareli.Where(x => x.FKHeader == id).Select(x => mapper.Map<WzRowMarelliDto>(x))
.ToListAsync();
WzHeaderDto wzHeader = mapper.Map<WzHeaderDto>(entity);
wzHeader.WzRowsMarelli = items;
return wzHeader;
}
public async Task AddEmailsToWzHeader(Guid id, string emailAddresses) public async Task AddEmailsToWzHeader(Guid id, string emailAddresses)
{ {
var entity = await context.WzHeaders.FindAsync(id); var entity = await context.WzHeaders.FindAsync(id);

View File

@@ -959,6 +959,10 @@ namespace SytelineSaAppEfDataModel
.HasColumnName("ShortName") .HasColumnName("ShortName")
.HasMaxLength(30) .HasMaxLength(30)
.IsRequired(false); .IsRequired(false);
entity.Property(e => e.Logo)
.HasColumnType("VARBINARY(MAX)")
.IsRequired(false);
}); });
modelBuilder.Entity<WzRowMeyle>(entity => modelBuilder.Entity<WzRowMeyle>(entity =>