using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using Volo.Abp; using Volo.Abp.Domain.Entities.Auditing; using Volo.Abp.Guids; using Win_in.Sfs.Scp.WebApi.Domain.Shared; namespace Win_in.Sfs.Scp.WebApi { /// /// 采购订单主表 /// public class PurchaseOrder: EntityBase { /// /// 订单号(PoNumber) /// [Display(Name = "订单号(PoNumber)")] public string PoNumber { set; get; } /// /// 供应商代码(SupplierCode) /// [Display(Name = "供应商代码(SupplierCode)")] public string SupplierCode { set; get; } /// /// 订单类型(PoType) /// [Display(Name = "订单类型(PoType)")] public string PoType { set; get; } /// /// 订单状态(Status) /// [Display(Name = "订单状态(Status)")] public int Status { set; get; } /// /// 是否寄存订单(IsConsignment) /// [Display(Name = "是否寄存订单(IsConsignment)")] public bool IsConsignment { set; get; } /// /// 订单日期(OrderDate) /// [Display(Name = "订单日期(OrderDate)")] public DateTime OrderDate { set; get; } /// /// 截止日期(DueDate) /// [Display(Name = "截止日期(DueDate)")] public DateTime DueDate { set; get; } /// /// 版本(version) /// [Display(Name = "版本")] public string Version { get; set; } /// /// 税率(TaxRate) /// [Display(Name = "税率(TaxRate)")] public decimal? TaxRate { set; get; } /// /// 联系人(ContactName) /// [Display(Name = "联系人(ContactName)")] public string ContactName { set; get; } /// /// 联系电话(ContactPhone) /// [Display(Name = "联系电话(ContactPhone)")] public string ContactPhone { set; get; } /// /// 备注(Remark) /// [Display(Name = "备注(Remark)")] public string Remark { set; get; } /// /// 地点(Site) /// [Display(Name = "地点(Site)")] public string Site { set; get; } /// /// 公司(Company) /// [Display(Name = "公司(Company)")] public string Company { set; get; } public virtual ICollection Details { get; set; } #region details handler public virtual void AddDetail(IGuidGenerator guidGenerator, PurchaseOrderDetail detail) { Check.NotNull(guidGenerator, nameof(guidGenerator)); Check.NotNull(detail, nameof(PurchaseOrderDetail)); if (IsInDetails(detail.PoNumber,detail.PoLine)) { throw new Exception(detail.PoNumber+ detail.PoLine + "已经在明细中存在!"); } Details.Add(new PurchaseOrderDetail(guidGenerator.Create(),detail.PoNumber, detail.PoLine, detail.PartCode, detail.Uom, detail.OrderQty,detail.StdPackUom, detail.StdPackQty, detail.SupplierPackConvertRate, detail.IsConsignment, detail.LineStatus, detail.Remark)); } public virtual void AddDetails(IGuidGenerator guidGenerator, IEnumerable details) { Check.NotNull(guidGenerator, nameof(guidGenerator)); foreach (var detail in details) { AddDetail(guidGenerator, detail); } } public virtual bool IsInDetails(string ponumber , string poline) { return Details.Any(di => di.PoNumber == ponumber && di.PoLine == poline); } public virtual bool IsInDetails(Guid itemId) { return Details.Any(di => di.Id == itemId); } public virtual bool UpdateDetail(IGuidGenerator guidGenerator, PurchaseOrderDetail detail) { Check.NotNull(detail, nameof(PurchaseOrderDetail)); var item = FindDetail(detail.Id); if (item == null) { AddDetail(guidGenerator, detail); } else { Check.NotNull(item, nameof(PurchaseOrderDetail)); //item.Set(detail.Remark, detail.Enabled); } return true; } public virtual PurchaseOrderDetail FindDetail(Guid itemId) { var item = Details.FirstOrDefault(p => p.Id == itemId); return item; } #endregion } }