|
|
@ -1,7 +1,5 @@ |
|
|
|
using System; |
|
|
|
using System.ComponentModel.DataAnnotations; |
|
|
|
using Magicodes.ExporterAndImporter.Core; |
|
|
|
using Magicodes.ExporterAndImporter.Excel; |
|
|
|
using Win.Sfs.SettleAccount.Enums; |
|
|
|
|
|
|
|
namespace Win.Sfs.SettleAccount.Reports; |
|
|
@ -121,18 +119,6 @@ public class SaSeEdiCompareDiff |
|
|
|
/// </summary>
|
|
|
|
[Display(Name = "替换厂内物料号")] |
|
|
|
public string ReplaceFactoryPartCode { get; set; } |
|
|
|
/// <summary>
|
|
|
|
/// 是否替换了厂内零件号
|
|
|
|
/// </summary>
|
|
|
|
public bool IsReplace { get; set; } |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 结算、发运、Eid对比明细
|
|
|
|
/// </summary>
|
|
|
|
[ExcelExporter(MaxRowNumberOnASheet = 500_000)] |
|
|
|
public class SaSeEdiCompareDetailExport |
|
|
|
{ |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>
|
|
|
@ -144,426 +130,30 @@ public interface ISaSeEdiCompareDetailExport |
|
|
|
/// 类别
|
|
|
|
/// </summary>
|
|
|
|
[Display(Name = "类别")] |
|
|
|
[ExporterHeader(DisplayName = "类别")] |
|
|
|
[ValueMapping("有结算有发运(有EDI数据)", 1)] |
|
|
|
[ValueMapping("有结算有发运(无EDI数据)", 2)] |
|
|
|
[ValueMapping("有结算无发运(有EDI数据)", 3)] |
|
|
|
[ValueMapping("有结算无发运(无EDI数据)", 4)] |
|
|
|
[ValueMapping("无结算有发运(有EDI数据)", 5)] |
|
|
|
[ValueMapping("无结算有发运(无EDI数据)", 6)] |
|
|
|
public EnumSaSeEdiCompareCategory Category { get; set; } |
|
|
|
/// <summary>
|
|
|
|
/// 零件描述
|
|
|
|
/// </summary>
|
|
|
|
[Display(Name = "零件描述")] |
|
|
|
[ExporterHeader(DisplayName = "物料描述")] |
|
|
|
public string PartCodeDesc { get; set; } |
|
|
|
/// <summary>
|
|
|
|
/// 替换厂内零件号
|
|
|
|
/// </summary>
|
|
|
|
[Display(Name = "替换厂内零件号")] |
|
|
|
[ExporterHeader(DisplayName = "替换厂内零件号")] |
|
|
|
public string ReplaceFactoryPartCode { get; set; } |
|
|
|
/// <summary>
|
|
|
|
/// 结算数量
|
|
|
|
/// </summary>
|
|
|
|
[Display(Name = "结算数量")] |
|
|
|
[ExporterHeader(DisplayName = "结算数量")] |
|
|
|
public decimal SAQty { get; set; } |
|
|
|
/// <summary>
|
|
|
|
/// 发货数量
|
|
|
|
/// </summary>
|
|
|
|
[Display(Name = "发货数量")] |
|
|
|
[ExporterHeader(DisplayName = "WMS发货数量")] |
|
|
|
public decimal SEQty { get; set; } |
|
|
|
/// <summary>
|
|
|
|
/// Edi数量
|
|
|
|
/// </summary>
|
|
|
|
[Display(Name = "Edi数量")] |
|
|
|
[ExporterHeader(DisplayName = "Edi数量")] |
|
|
|
public decimal EdiQty { get; set; } |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// JisBBAC结算、发运、Eid对比明细
|
|
|
|
/// </summary>
|
|
|
|
public class SaSeEdiCompareDetailExportJisBBAC : SaSeEdiCompareDetailExport, ISaSeEdiCompareDetailExport |
|
|
|
{ |
|
|
|
/// <summary>
|
|
|
|
/// 类别
|
|
|
|
/// </summary>
|
|
|
|
[Display(Name = "类别")] |
|
|
|
[ExporterHeader(DisplayName = "类别")] |
|
|
|
[ValueMapping("有结算有发运(有EDI数据)", 1)] |
|
|
|
[ValueMapping("有结算有发运(无EDI数据)", 2)] |
|
|
|
[ValueMapping("有结算无发运(有EDI数据)", 3)] |
|
|
|
[ValueMapping("有结算无发运(无EDI数据)", 4)] |
|
|
|
[ValueMapping("无结算有发运(有EDI数据)", 5)] |
|
|
|
[ValueMapping("无结算有发运(无EDI数据)", 6)] |
|
|
|
public EnumSaSeEdiCompareCategory Category { get; set; } |
|
|
|
[Display(Name = "WMS多发")] |
|
|
|
[ExporterHeader(DisplayName = "WMS多发")] |
|
|
|
[ValueMapping("", 0)] |
|
|
|
[ValueMapping("WMS多发", 1)] |
|
|
|
public EnumWMSSend WMSSend |
|
|
|
{ |
|
|
|
get |
|
|
|
{ |
|
|
|
return (Category, SaSeQty < 0) switch |
|
|
|
{ |
|
|
|
(EnumSaSeEdiCompareCategory.HaveSaHaveSeHaveEdi, true) => EnumWMSSend.WMSRepeat, |
|
|
|
(EnumSaSeEdiCompareCategory.HaveSaHaveSeNotHaveEdi, true) => EnumWMSSend.WMSRepeat, |
|
|
|
_ => EnumWMSSend.None |
|
|
|
}; |
|
|
|
} |
|
|
|
} |
|
|
|
[Display(Name = "价格信息")] |
|
|
|
[ExporterHeader(DisplayName = "价格信息")] |
|
|
|
[ValueMapping("有价格信息", true)] |
|
|
|
[ValueMapping("无价格信息", false)] |
|
|
|
public bool IsHavePrice => FixPrice != null && FixPrice != 0; |
|
|
|
/// <summary>
|
|
|
|
/// 交货单号
|
|
|
|
/// </summary>
|
|
|
|
[Display(Name = "交货单号")] |
|
|
|
[ExporterHeader(DisplayName = "交货单号")] |
|
|
|
public string WmsBillNum { get; set; } |
|
|
|
/// <summary>
|
|
|
|
/// 发货日期
|
|
|
|
/// </summary>
|
|
|
|
[Display(Name = "发货日期")] |
|
|
|
[ExporterHeader(DisplayName = "发货日期")] |
|
|
|
public DateTime? ShippingDate { get; set; } |
|
|
|
/// <summary>
|
|
|
|
/// 生产码
|
|
|
|
/// </summary>
|
|
|
|
[Display(Name = "生产码")] |
|
|
|
[ExporterHeader(DisplayName = "订单生产码")] |
|
|
|
public string PN { get; set; } |
|
|
|
/// <summary>
|
|
|
|
/// 日顺序号
|
|
|
|
/// </summary>
|
|
|
|
[Display(Name = "日顺序号")] |
|
|
|
[ExporterHeader(DisplayName = "日顺序号")] |
|
|
|
public string SeqNumber { get; set; } |
|
|
|
/// <summary>
|
|
|
|
/// PJIS日顺序号
|
|
|
|
/// </summary>
|
|
|
|
[Display(Name = "PJIS日顺序号")] |
|
|
|
[ExporterHeader(DisplayName = "PJIS日顺序号")] |
|
|
|
public string PJISSeqNumber { get; set; } |
|
|
|
/// <summary>
|
|
|
|
/// 客户物料号
|
|
|
|
/// </summary>
|
|
|
|
[Display(Name = "客户物料号")] |
|
|
|
[ExporterHeader(DisplayName = "客户物料号")] |
|
|
|
public string CustomerPartCode { get; set; } |
|
|
|
/// <summary>
|
|
|
|
/// 物料描述
|
|
|
|
/// </summary>
|
|
|
|
[Display(Name = "物料描述")] |
|
|
|
[ExporterHeader(DisplayName = "物料描述")] |
|
|
|
public string PartCodeDesc { get; set; } |
|
|
|
/// <summary>
|
|
|
|
/// 厂内物料号
|
|
|
|
/// </summary>
|
|
|
|
[Display(Name = "厂内物料号")] |
|
|
|
[ExporterHeader(DisplayName = "厂内物料号")] |
|
|
|
public string FactoryPartCode { get; set; } |
|
|
|
/// <summary>
|
|
|
|
/// 替换厂内物料号
|
|
|
|
/// </summary>
|
|
|
|
[Display(Name = "替换厂内物料号")] |
|
|
|
[ExporterHeader(DisplayName = "替换厂内物料号")] |
|
|
|
public string ReplaceFactoryPartCode { get; set; } |
|
|
|
/// <summary>
|
|
|
|
/// 客户下线时间
|
|
|
|
/// </summary>
|
|
|
|
[Display(Name = "客户下线时间")] |
|
|
|
[ExporterHeader(DisplayName = "客户下线时间")] |
|
|
|
public DateTime? CustomerOfflineTime { get; set; } |
|
|
|
/// <summary>
|
|
|
|
/// 小总成号
|
|
|
|
/// </summary>
|
|
|
|
[Display(Name = "小总成号")] |
|
|
|
[ExporterHeader(DisplayName = "小总成号")] |
|
|
|
public string AssemblyCode { get; set; } |
|
|
|
/// <summary>
|
|
|
|
/// 注塑码
|
|
|
|
/// </summary>
|
|
|
|
[Display(Name = "注塑码")] |
|
|
|
[ExporterHeader(DisplayName = "注塑码")] |
|
|
|
public string InjectionCode { get; set; } |
|
|
|
/// <summary>
|
|
|
|
/// 结算数量
|
|
|
|
/// </summary>
|
|
|
|
[Display(Name = "结算数量")] |
|
|
|
[ExporterHeader(DisplayName = "结算数量")] |
|
|
|
public decimal SAQty { get; set; } |
|
|
|
/// <summary>
|
|
|
|
/// 发货数量
|
|
|
|
/// </summary>
|
|
|
|
[Display(Name = "发货数量")] |
|
|
|
[ExporterHeader(DisplayName = "WMS发货数量")] |
|
|
|
public decimal SEQty { get; set; } |
|
|
|
/// <summary>
|
|
|
|
/// Edi数量
|
|
|
|
/// </summary>
|
|
|
|
[Display(Name = "Edi数量")] |
|
|
|
[ExporterHeader(DisplayName = "Edi数量")] |
|
|
|
public decimal EdiQty { get; set; } |
|
|
|
/// <summary>
|
|
|
|
/// 结算与WMS发货量差
|
|
|
|
/// </summary>
|
|
|
|
[ExporterHeader(DisplayName = "结算与WMS发货量差")] |
|
|
|
public decimal SaSeQty => SAQty - SEQty; |
|
|
|
/// <summary>
|
|
|
|
/// 结算与EDI量差
|
|
|
|
/// </summary>
|
|
|
|
[ExporterHeader(DisplayName = "结算与EDI量差")] |
|
|
|
public decimal SaEdiQty => SAQty - EdiQty; |
|
|
|
/// <summary>
|
|
|
|
/// WMS发货与EDI数量差
|
|
|
|
/// </summary>
|
|
|
|
[ExporterHeader(DisplayName = "WMS发货与EDI数量差")] |
|
|
|
public decimal SeEdiQty => SEQty - EdiQty; |
|
|
|
[Display(Name = "是否完全匹配")] |
|
|
|
[ExporterHeader(DisplayName = "是否完全匹配")] |
|
|
|
[ValueMapping("是", true)] |
|
|
|
[ValueMapping("否", false)] |
|
|
|
public bool MateType => SaSeQty == 0 && SaEdiQty == 0 && SeEdiQty == 0; |
|
|
|
/// <summary>
|
|
|
|
/// 定价
|
|
|
|
/// </summary>
|
|
|
|
[Display(Name = "定价")] |
|
|
|
[ExporterHeader(DisplayName = "定价")] |
|
|
|
public virtual decimal? FixPrice { get; set; } |
|
|
|
/// <summary>
|
|
|
|
/// ERP销售库位
|
|
|
|
/// </summary>
|
|
|
|
[Display(Name = "ERP销售库位")] |
|
|
|
[ExporterHeader(DisplayName = "ERP销售库位")] |
|
|
|
public string ToErpLocCode { get; set; } |
|
|
|
/// <summary>
|
|
|
|
/// WMS发货库位
|
|
|
|
/// </summary>
|
|
|
|
[Display(Name = "WMS发货库位")] |
|
|
|
[ExporterHeader(DisplayName = "WMS发货库位")] |
|
|
|
public string ToLocCode { get; set; } |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// JisHBPO结算、发运、Eid对比明细
|
|
|
|
/// </summary>
|
|
|
|
public class SaSeEdiCompareDetailExportJisHBPO : SaSeEdiCompareDetailExport, ISaSeEdiCompareDetailExport |
|
|
|
{ |
|
|
|
/// <summary>
|
|
|
|
/// 类别
|
|
|
|
/// </summary>
|
|
|
|
[Display(Name = "类别")] |
|
|
|
[ExporterHeader(DisplayName = "类别")] |
|
|
|
[ValueMapping("有结算有发运(有EDI数据)", 1)] |
|
|
|
[ValueMapping("有结算有发运(无EDI数据)", 2)] |
|
|
|
[ValueMapping("有结算无发运(有EDI数据)", 3)] |
|
|
|
[ValueMapping("有结算无发运(无EDI数据)", 4)] |
|
|
|
[ValueMapping("无结算有发运(有EDI数据)", 5)] |
|
|
|
[ValueMapping("无结算有发运(无EDI数据)", 6)] |
|
|
|
public EnumSaSeEdiCompareCategory Category { get; set; } |
|
|
|
[Display(Name = "WMS多发")] |
|
|
|
[ExporterHeader(DisplayName = "WMS多发")] |
|
|
|
[ValueMapping("", 0)] |
|
|
|
[ValueMapping("WMS多发", 1)] |
|
|
|
public EnumWMSSend WMSSend |
|
|
|
{ |
|
|
|
get |
|
|
|
{ |
|
|
|
return (Category, SaSeQty < 0) switch |
|
|
|
{ |
|
|
|
(EnumSaSeEdiCompareCategory.HaveSaHaveSeHaveEdi, true) => EnumWMSSend.WMSRepeat, |
|
|
|
(EnumSaSeEdiCompareCategory.HaveSaHaveSeNotHaveEdi, true) => EnumWMSSend.WMSRepeat, |
|
|
|
_ => EnumWMSSend.None |
|
|
|
}; |
|
|
|
} |
|
|
|
} |
|
|
|
[Display(Name = "价格信息")] |
|
|
|
[ExporterHeader(DisplayName = "价格信息")] |
|
|
|
[ValueMapping("有价格信息", true)] |
|
|
|
[ValueMapping("无价格信息", false)] |
|
|
|
public bool IsHavePrice => FixPrice != null && FixPrice != 0; |
|
|
|
/// <summary>
|
|
|
|
/// 交货单号
|
|
|
|
/// </summary>
|
|
|
|
[Display(Name = "交货单号")] |
|
|
|
[ExporterHeader(DisplayName = "交货单号")] |
|
|
|
public string WmsBillNum { get; set; } |
|
|
|
/// <summary>
|
|
|
|
/// 发货日期
|
|
|
|
/// </summary>
|
|
|
|
[Display(Name = "发货日期")] |
|
|
|
[ExporterHeader(DisplayName = "发货日期")] |
|
|
|
public DateTime? ShippingDate { get; set; } |
|
|
|
/// <summary>
|
|
|
|
/// 生产码
|
|
|
|
/// </summary>
|
|
|
|
[Display(Name = "生产码")] |
|
|
|
[ExporterHeader(DisplayName = "订单生产码")] |
|
|
|
public string PN { get; set; } |
|
|
|
/// <summary>
|
|
|
|
/// 日顺序号
|
|
|
|
/// </summary>
|
|
|
|
[Display(Name = "日顺序号")] |
|
|
|
[ExporterHeader(DisplayName = "日顺序号")] |
|
|
|
public string SeqNumber { get; set; } |
|
|
|
/// <summary>
|
|
|
|
/// PJIS日顺序号
|
|
|
|
/// </summary>
|
|
|
|
[Display(Name = "PJIS日顺序号")] |
|
|
|
[ExporterHeader(DisplayName = "PJIS日顺序号")] |
|
|
|
public string PJISSeqNumber { get; set; } |
|
|
|
/// <summary>
|
|
|
|
/// 客户物料号
|
|
|
|
/// </summary>
|
|
|
|
[Display(Name = "客户物料号")] |
|
|
|
[ExporterHeader(DisplayName = "客户物料号")] |
|
|
|
public string CustomerPartCode { get; set; } |
|
|
|
/// <summary>
|
|
|
|
/// 物料描述
|
|
|
|
/// </summary>
|
|
|
|
[Display(Name = "物料描述")] |
|
|
|
[ExporterHeader(DisplayName = "物料描述")] |
|
|
|
public string PartCodeDesc { get; set; } |
|
|
|
/// <summary>
|
|
|
|
/// 厂内物料号
|
|
|
|
/// </summary>
|
|
|
|
[Display(Name = "厂内物料号")] |
|
|
|
[ExporterHeader(DisplayName = "厂内物料号")] |
|
|
|
public string FactoryPartCode { get; set; } |
|
|
|
/// <summary>
|
|
|
|
/// 替换厂内物料号
|
|
|
|
/// </summary>
|
|
|
|
[Display(Name = "替换厂内物料号")] |
|
|
|
[ExporterHeader(DisplayName = "替换厂内物料号")] |
|
|
|
public string ReplaceFactoryPartCode { get; set; } |
|
|
|
/// <summary>
|
|
|
|
/// 客户下线时间
|
|
|
|
/// </summary>
|
|
|
|
[Display(Name = "客户下线时间")] |
|
|
|
[ExporterHeader(DisplayName = "客户下线时间")] |
|
|
|
public DateTime? CustomerOfflineTime { get; set; } |
|
|
|
/// <summary>
|
|
|
|
/// 小总成号
|
|
|
|
/// </summary>
|
|
|
|
[Display(Name = "小总成号")] |
|
|
|
[ExporterHeader(DisplayName = "小总成号")] |
|
|
|
public string AssemblyCode { get; set; } |
|
|
|
/// <summary>
|
|
|
|
/// 注塑码
|
|
|
|
/// </summary>
|
|
|
|
[Display(Name = "注塑码")] |
|
|
|
[ExporterHeader(DisplayName = "注塑码")] |
|
|
|
public string InjectionCode { get; set; } |
|
|
|
/// <summary>
|
|
|
|
/// 结算数量
|
|
|
|
/// </summary>
|
|
|
|
[Display(Name = "结算数量")] |
|
|
|
[ExporterHeader(DisplayName = "结算数量")] |
|
|
|
public decimal SAQty { get; set; } |
|
|
|
/// <summary>
|
|
|
|
/// 发货数量
|
|
|
|
/// </summary>
|
|
|
|
[Display(Name = "发货数量")] |
|
|
|
[ExporterHeader(DisplayName = "WMS发货数量")] |
|
|
|
public decimal SEQty { get; set; } |
|
|
|
/// <summary>
|
|
|
|
/// Edi数量
|
|
|
|
/// </summary>
|
|
|
|
[Display(Name = "Edi数量")] |
|
|
|
[ExporterHeader(DisplayName = "Edi数量")] |
|
|
|
public decimal EdiQty { get; set; } |
|
|
|
/// <summary>
|
|
|
|
/// 结算与EDI量差
|
|
|
|
/// </summary>
|
|
|
|
[ExporterHeader(DisplayName = "结算与WMS发货量差")] |
|
|
|
public decimal SaSeQty => SAQty - SEQty; |
|
|
|
/// <summary>
|
|
|
|
/// 结算与EDI量差
|
|
|
|
/// </summary>
|
|
|
|
[ExporterHeader(DisplayName = "结算与EDI量差")] |
|
|
|
public decimal SaEdiQty => SAQty - EdiQty; |
|
|
|
/// <summary>
|
|
|
|
/// WMS发货与EDI数量差
|
|
|
|
/// </summary>
|
|
|
|
[ExporterHeader(DisplayName = "WMS发货与EDI数量差")] |
|
|
|
public decimal SeEdiQty => SEQty - EdiQty; |
|
|
|
[Display(Name = "是否完全匹配")] |
|
|
|
[ExporterHeader(DisplayName = "是否完全匹配")] |
|
|
|
[ValueMapping("是", true)] |
|
|
|
[ValueMapping("否", false)] |
|
|
|
public bool MateType => SaSeQty == 0 && SaEdiQty == 0 && SeEdiQty == 0; |
|
|
|
/// <summary>
|
|
|
|
/// 定价
|
|
|
|
/// </summary>
|
|
|
|
[Display(Name = "定价")] |
|
|
|
[ExporterHeader(DisplayName = "定价")] |
|
|
|
public virtual decimal? FixPrice { get; set; } |
|
|
|
/// <summary>
|
|
|
|
/// ERP销售库位
|
|
|
|
/// </summary>
|
|
|
|
[Display(Name = "ERP销售库位")] |
|
|
|
[ExporterHeader(DisplayName = "ERP销售库位")] |
|
|
|
public string ToErpLocCode { get; set; } |
|
|
|
/// <summary>
|
|
|
|
/// WMS发货库位
|
|
|
|
/// </summary>
|
|
|
|
[Display(Name = "WMS发货库位")] |
|
|
|
[ExporterHeader(DisplayName = "WMS发货库位")] |
|
|
|
public string ToLocCode { get; set; } |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// PUB结算与发运对比汇总
|
|
|
|
/// </summary>
|
|
|
|
[ExcelExporter(MaxRowNumberOnASheet = 500_000)] |
|
|
|
public class SaSeEdiCompareSumExport |
|
|
|
{ |
|
|
|
/// <summary>
|
|
|
|
/// 厂内物料号
|
|
|
|
/// </summary>
|
|
|
|
[Display(Name = "厂内物料号")] |
|
|
|
[ExporterHeader(DisplayName = "LU")] |
|
|
|
public string FactoryPartCode { get; set; } |
|
|
|
/// <summary>
|
|
|
|
/// 物料描述
|
|
|
|
/// </summary>
|
|
|
|
[Display(Name = "物料描述")] |
|
|
|
[ExporterHeader(DisplayName = "物料描述")] |
|
|
|
public string PartCodeDesc { get; set; } |
|
|
|
/// <summary>
|
|
|
|
/// 结算数量
|
|
|
|
/// </summary>
|
|
|
|
[Display(Name = "结算数量")] |
|
|
|
[ExporterHeader(DisplayName = "结算数量")] |
|
|
|
public decimal SAQty { get; set; } |
|
|
|
/// <summary>
|
|
|
|
/// 发货数量
|
|
|
|
/// </summary>
|
|
|
|
[Display(Name = "发货数量")] |
|
|
|
[ExporterHeader(DisplayName = "WMS发货数量")] |
|
|
|
public decimal SEQty { get; set; } |
|
|
|
/// <summary>
|
|
|
|
/// Edi数量
|
|
|
|
/// </summary>
|
|
|
|
[Display(Name = "Edi数量")] |
|
|
|
[ExporterHeader(DisplayName = "Edi数量")] |
|
|
|
public decimal EdiQty { get; set; } |
|
|
|
/// <summary>
|
|
|
|
/// 结算与EDI量差
|
|
|
|
/// </summary>
|
|
|
|
[ExporterHeader(DisplayName = "结算与EDI量差")] |
|
|
|
public decimal SaEdiQty => SAQty - EdiQty; |
|
|
|
/// <summary>
|
|
|
|
/// WMS发货与EDI数量差
|
|
|
|
/// </summary>
|
|
|
|
[ExporterHeader(DisplayName = "WMS发货与EDI数量差")] |
|
|
|
public decimal SeEdiQty => SEQty - EdiQty; |
|
|
|
} |
|
|
|