Warehouses #1
@@ -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));
|
||||
|
||||
@@ -259,7 +259,7 @@
|
||||
private async Task ExportXls()
|
||||
{
|
||||
int count = WzRowsMarelli.Count(x => x.PalletNumber == null);
|
||||
|
||||
_isValid = true;
|
||||
_isValid = count == 0;
|
||||
_isValid = _isValid && !string.IsNullOrWhiteSpace(EmailAddresses);
|
||||
|
||||
|
||||
@@ -8,4 +8,5 @@ public class WzClientDto
|
||||
public DateTime CreatedDate { get; set; }
|
||||
public string Name { get; set; }
|
||||
public string ShortName { get; set; }
|
||||
public string? LogoBase64 { get; set; }
|
||||
}
|
||||
@@ -8,4 +8,5 @@ public class WzHeaderDto
|
||||
public string? EmailAddresses { get; set; }
|
||||
public string? WzNumbers { get; set; }
|
||||
public IEnumerable<WzRowMeyleDto> WzRowsMeyle { get; set; } = new List<WzRowMeyleDto>();
|
||||
public IEnumerable<WzRowMarelliDto> WzRowsMarelli { get; set; } = new List<WzRowMarelliDto>();
|
||||
}
|
||||
@@ -8,4 +8,5 @@ public class WzClient
|
||||
public DateTime CreatedDate { get; set; }
|
||||
public string Name { get; set; }
|
||||
public string ShortName { get; set; }
|
||||
public byte[]? Logo { get; set; }
|
||||
}
|
||||
@@ -20,7 +20,8 @@ namespace SytelineSaAppEfDataModel
|
||||
CreateMap<UserName, UserNameDto>().ReverseMap();
|
||||
CreateMap<EdiUser, EdiUserDto>().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<WzRowMeyle, WzRowMeyleDto>().ReverseMap();
|
||||
CreateMap<ItemCust, ItemCustDto>().ReverseMap();
|
||||
|
||||
@@ -8,5 +8,6 @@ public interface IWzHeaderService
|
||||
Task<IEnumerable<WzHeaderDto>> GetByCustomerNumber(string customerNumber, int customerSequence);
|
||||
Task CreateHeader(WzHeaderDto wzHeader);
|
||||
Task<WzHeaderDto> GetById(Guid id);
|
||||
Task<WzHeaderDto> GetByIdMarelli(Guid id);
|
||||
Task AddEmailsToWzHeader(Guid id, string emailAddresses);
|
||||
}
|
||||
@@ -38,6 +38,18 @@ public class WzHeaderService(SytelineSaAppDbContext context, IMapper mapper) : I
|
||||
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)
|
||||
{
|
||||
var entity = await context.WzHeaders.FindAsync(id);
|
||||
|
||||
@@ -959,6 +959,10 @@ namespace SytelineSaAppEfDataModel
|
||||
.HasColumnName("ShortName")
|
||||
.HasMaxLength(30)
|
||||
.IsRequired(false);
|
||||
|
||||
entity.Property(e => e.Logo)
|
||||
.HasColumnType("VARBINARY(MAX)")
|
||||
.IsRequired(false);
|
||||
});
|
||||
|
||||
modelBuilder.Entity<WzRowMeyle>(entity =>
|
||||
|
||||
Reference in New Issue
Block a user