* Further improvements to generate PackList

This commit is contained in:
2025-05-17 18:36:11 +02:00
parent bc28c5d63d
commit 6ab3960e50
20 changed files with 671 additions and 191 deletions

View File

@@ -0,0 +1,30 @@
namespace SytelineSaAppEfDataModel.Dtos;
public class ItemCustDto
{
public string Item { get; set; }
public string CustNum { get; set; }
public int CustItemSeq { get; set; }
public string CustItem { get; set; }
public int? PurchYtd { get; set; }
public decimal? OrderYtd { get; set; }
public decimal? ShipYtd { get; set; }
public decimal? OrderPtd { get; set; }
public string UM { get; set; }
public int? DuePeriod { get; set; }
public byte NoteExistsFlag { get; set; }
public DateTime RecordDate { get; set; }
public Guid RowPointer { get; set; }
public string CreatedBy { get; set; }
public string UpdatedBy { get; set; }
public DateTime CreateDate { get; set; }
public byte InWorkflow { get; set; }
public int? Rank { get; set; }
public string EndUser { get; set; }
public string Uf_FKR_CustItem2 { get; set; }
public string Uf_KOD_EAN13 { get; set; }
public string Uf_Paleta_BROSE { get; set; }
public string Uf_Pojemnik_BROSE { get; set; }
public string Uf_Paleta_BROSE_Pokrywa { get; set; }
public string Uf_RewizjaRysunku { get; set; }
}

View File

@@ -9,5 +9,5 @@ public class WzRowMeyleDto
public int? Quantity { get; set; }
public int? PalletNumber { get; set; }
public string WzNumber { get; set; }
public string PartNumber { get; set; }
public string? PartNumber { get; set; }
}

View File

@@ -0,0 +1,30 @@
namespace SytelineSaAppEfDataModel.Entities;
public class ItemCust
{
public string Item { get; set; }
public string CustNum { get; set; }
public int CustItemSeq { get; set; }
public string CustItem { get; set; }
public int? PurchYtd { get; set; }
public decimal? OrderYtd { get; set; }
public decimal? ShipYtd { get; set; }
public decimal? OrderPtd { get; set; }
public string UM { get; set; }
public int? DuePeriod { get; set; }
public byte NoteExistsFlag { get; set; }
public DateTime RecordDate { get; set; }
public Guid RowPointer { get; set; }
public string CreatedBy { get; set; }
public string UpdatedBy { get; set; }
public DateTime CreateDate { get; set; }
public byte InWorkflow { get; set; }
public int? Rank { get; set; }
public string EndUser { get; set; }
public string Uf_FKR_CustItem2 { get; set; }
public string Uf_KOD_EAN13 { get; set; }
public string Uf_Paleta_BROSE { get; set; }
public string Uf_Pojemnik_BROSE { get; set; }
public string Uf_Paleta_BROSE_Pokrywa { get; set; }
public string Uf_RewizjaRysunku { get; set; }
}

View File

@@ -9,7 +9,7 @@ public class WzRowMeyle
public int? Quantity { get; set; }
public int? PalletNumber { get; set; }
public string WzNumber { get; set; }
public string PartNumber { get; set; }
public string? PartNumber { get; set; }
// Navigation property
public WzHeader Header { get; set; }

View File

@@ -23,6 +23,7 @@ namespace SytelineSaAppEfDataModel
CreateMap<WzClient, WzClientDto>().ReverseMap();
CreateMap<WzHeader, WzHeaderDto>().ReverseMap();
CreateMap<WzRowMeyle, WzRowMeyleDto>().ReverseMap();
CreateMap<ItemCust, ItemCustDto>().ReverseMap();
}
}
}

View File

@@ -1,9 +1,4 @@
using AutoMapper;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using SytelineSaAppEfDataModel.Dtos;
@@ -22,7 +17,7 @@ namespace SytelineSaAppEfDataModel.Services
.Where(x => x.RowPointer == orderNumber)
.Select(x => mapper.Map<CustomerOrderDto>(x)).FirstOrDefaultAsync();
if (customerOrder == null) return null;
customerOrder.CustomerOrderLines = await context.CustomerOrderLines
.Where(x => x.CoNum == customerOrder.CoNum)
.Select(x => mapper.Map<CustomerOrderLineDto>(x)).ToListAsync();
@@ -33,14 +28,50 @@ namespace SytelineSaAppEfDataModel.Services
.Where(x => x.CoNum == customerOrder.CoNum && x.CoLine == customerOrderLine.CoLine)
.Select(x => mapper.Map<CustomerOrderLineItemDto>(x)).ToListAsync();
}
IList<EdiCustomerOrderTranslateDto> ediCustomerOrderTranslates = await context.EdiCustomerOrderTranslates
.Where(x => x.CoCoNum == customerOrder.CoNum)
.Select(x => mapper.Map<EdiCustomerOrderTranslateDto>(x)).ToListAsync();
customerOrder.EdiCustomerOrderTranslates = ediCustomerOrderTranslates;
return customerOrder;
}
public async Task<CustomerOrderDto?> GetByCoNumber(string orderNumber)
{
CustomerOrderDto? customerOrder = await context.CustomerOrders
.Where(x => x.CoNum == orderNumber)
.Select(x => mapper.Map<CustomerOrderDto>(x)).FirstOrDefaultAsync();
if (customerOrder == null) return null;
customerOrder.CustomerOrderLines = await context.CustomerOrderLines
.Where(x => x.CoNum == customerOrder.CoNum)
.Select(x => mapper.Map<CustomerOrderLineDto>(x)).ToListAsync();
foreach (CustomerOrderLineDto customerOrderLine in customerOrder.CustomerOrderLines)
{
customerOrderLine.CustomerOrderLineItems = await context.CustomerOrderLineItems
.Where(x => x.CoNum == customerOrder.CoNum && x.CoLine == customerOrderLine.CoLine)
.Select(x => mapper.Map<CustomerOrderLineItemDto>(x)).ToListAsync();
}
IList<EdiCustomerOrderTranslateDto> ediCustomerOrderTranslates = await context.EdiCustomerOrderTranslates
.Where(x => x.CoCoNum == customerOrder.CoNum)
.Select(x => mapper.Map<EdiCustomerOrderTranslateDto>(x)).ToListAsync();
customerOrder.EdiCustomerOrderTranslates = ediCustomerOrderTranslates;
return customerOrder;
}
public async Task<IEnumerable<CustomerOrderLineItemDto>?> GetItemsByCoNumber(string customerOrderNumber)
{
List<CustomerOrderLineItemDto> customerOrderLineItems = await context.CustomerOrderLineItems
.Where(x => x.CoNum == customerOrderNumber)
.Select(x => mapper.Map<CustomerOrderLineItemDto>(x)).ToListAsync();
return customerOrderLineItems;
}
}
}
}

View File

@@ -11,5 +11,7 @@ namespace SytelineSaAppEfDataModel.Services
{
Task<IEnumerable<CustomerOrderDto>> GetAll();
Task<CustomerOrderDto?> GetByOrderNumber(Guid orderNumber);
Task<CustomerOrderDto?> GetByCoNumber(string orderNumber);
Task<IEnumerable<CustomerOrderLineItemDto>?> GetItemsByCoNumber(string customerOrderNumber);
}
}

View File

@@ -0,0 +1,8 @@
using SytelineSaAppEfDataModel.Dtos;
namespace SytelineSaAppEfDataModel.Services;
public interface IItemCustService
{
Task<ItemCustDto> GetItem(string itemNumber, string customerNumber);
}

View File

@@ -6,4 +6,6 @@ public interface IWzRowMeyleService
{
Task<IEnumerable<WzRowMeyleDto>> GetAll();
Task CreateRows(IEnumerable<WzRowMeyleDto> rows);
Task<IEnumerable<WzRowMeyleDto>> GetByWzHeaderId(Guid wzHeaderId);
Task UpdateRows(IEnumerable<WzRowMeyleDto> rows);
}

View File

@@ -0,0 +1,17 @@
using AutoMapper;
using SytelineSaAppEfDataModel.Dtos;
namespace SytelineSaAppEfDataModel.Services;
public class ItemCustService(SytelineSaAppDbContext context, IMapper mapper) : IItemCustService
{
public Task<ItemCustDto> GetItem(string itemNumber, string customerNumber)
{
var item = context.ItemCusts
.FirstOrDefault(x => x.Item == itemNumber && x.CustNum == customerNumber);
return item == null
? Task.FromResult<ItemCustDto>(null)
: Task.FromResult(mapper.Map<ItemCustDto>(item));
}
}

View File

@@ -18,4 +18,19 @@ public class WzRowMeyleService(SytelineSaAppDbContext context, IMapper mapper) :
await context.WzRowsMeyle.AddRangeAsync(entities);
await context.SaveChangesAsync();
}
public async Task<IEnumerable<WzRowMeyleDto>> GetByWzHeaderId(Guid wzHeaderId)
{
return await context.WzRowsMeyle
.Where(x => x.FK_Header == wzHeaderId)
.Select(x => mapper.Map<WzRowMeyleDto>(x))
.ToListAsync();
}
public async Task UpdateRows(IEnumerable<WzRowMeyleDto> rows)
{
var entities = mapper.Map<IEnumerable<WzRowMeyle>>(rows);
context.WzRowsMeyle.UpdateRange(entities);
await context.SaveChangesAsync();
}
}

View File

@@ -25,6 +25,8 @@ namespace SytelineSaAppEfDataModel
public DbSet<WzHeader> WzHeaders { get; set; }
public DbSet<WzRowMeyle> WzRowsMeyle { get; set; }
public DbSet<ItemCust> ItemCusts { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
var configuration = new ConfigurationBuilder()
@@ -990,6 +992,149 @@ namespace SytelineSaAppEfDataModel
.HasForeignKey(e => e.FK_Header)
.HasConstraintName("wz_rows_meyle_wz_header_ID_fk");
});
modelBuilder.Entity<ItemCust>(entity =>
{
entity.ToTable("itemcust");
entity.HasKey(e => new { e.Item, e.CustNum, e.CustItemSeq });
entity.Property(e => e.Item)
.HasColumnName("item")
.HasMaxLength(60)
.IsRequired();
entity.Property(e => e.CustNum)
.HasColumnName("cust_num")
.HasMaxLength(14)
.IsRequired();
entity.Property(e => e.CustItemSeq)
.HasColumnName("cust_item_seq")
.HasColumnType("int")
.HasDefaultValueSql("1");
entity.Property(e => e.CustItem)
.HasColumnName("cust_item")
.HasMaxLength(60)
.IsRequired(false);
entity.Property(e => e.PurchYtd)
.HasColumnName("purch_ytd")
.HasDefaultValueSql("0")
.IsRequired(false);
entity.Property(e => e.OrderYtd)
.HasColumnName("order_ytd")
.HasDefaultValueSql("0")
.IsRequired(false);
entity.Property(e => e.ShipYtd)
.HasColumnName("ship_ytd")
.HasDefaultValueSql("0")
.IsRequired(false);
entity.Property(e => e.OrderPtd)
.HasColumnName("order_ptd")
.HasDefaultValueSql("0")
.IsRequired(false);
entity.Property(e => e.UM)
.HasColumnName("u_m")
.HasMaxLength(6)
.IsRequired(false);
entity.Property(e => e.DuePeriod)
.HasColumnName("due_period")
.HasColumnType("smallint")
.IsRequired(false);
entity.Property(e => e.NoteExistsFlag)
.HasColumnName("NoteExistsFlag")
.HasColumnType("tinyint")
.HasDefaultValueSql("0");
entity.Property(e => e.RecordDate)
.HasColumnName("RecordDate")
.HasDefaultValueSql("getdate()");
entity.Property(e => e.RowPointer)
.HasColumnName("RowPointer")
.HasColumnType("uniqueidentifier")
.HasDefaultValueSql("newid()");
entity.Property(e => e.CreatedBy)
.HasColumnName("CreatedBy")
.HasMaxLength(60)
.HasDefaultValueSql("suser_sname()");
entity.Property(e => e.UpdatedBy)
.HasColumnName("UpdatedBy")
.HasMaxLength(60)
.HasDefaultValueSql("suser_sname()");
entity.Property(e => e.CreateDate)
.HasColumnName("CreateDate")
.HasDefaultValueSql("getdate()");
entity.Property(e => e.InWorkflow)
.HasColumnName("InWorkflow")
.HasColumnType("tinyint")
.HasDefaultValueSql("0");
entity.Property(e => e.Rank)
.HasColumnName("rank")
.HasColumnType("int")
.IsRequired(false);
entity.Property(e => e.EndUser)
.HasColumnName("end_user")
.HasMaxLength(60)
.IsRequired(false);
entity.Property(e => e.Uf_FKR_CustItem2)
.HasColumnName("Uf_FKR_CustItem2")
.HasMaxLength(30)
.IsRequired(false);
entity.Property(e => e.Uf_KOD_EAN13)
.HasColumnName("Uf_KOD_EAN13")
.HasMaxLength(13)
.IsRequired(false);
entity.Property(e => e.Uf_Paleta_BROSE)
.HasColumnName("Uf_Paleta_BROSE")
.HasMaxLength(20)
.IsRequired(false);
entity.Property(e => e.Uf_Pojemnik_BROSE)
.HasColumnName("Uf_Pojemnik_BROSE")
.HasMaxLength(20)
.IsRequired(false);
entity.Property(e => e.Uf_Paleta_BROSE_Pokrywa)
.HasColumnName("Uf_Paleta_BROSE_Pokrywa")
.HasMaxLength(30)
.IsRequired(false);
entity.Property(e => e.Uf_RewizjaRysunku)
.HasColumnName("Uf_RewizjaRysunku")
.HasMaxLength(20)
.IsRequired(false);
// Indexes
entity.HasIndex(e => new { e.CustNum, e.Item, e.CustItemSeq })
.HasDatabaseName("IX_itemcust_custitem")
.IsUnique();
entity.HasIndex(e => new { e.CustNum, e.Item, e.CustItem })
.HasDatabaseName("IX_itemcust_custitemci")
.IsUnique();
entity.HasIndex(e => e.RowPointer)
.HasDatabaseName("IX_itemcust_RowPointer")
.IsUnique();
});
}
}
}