176 lines
5.1 KiB
C#
176 lines
5.1 KiB
C#
using System;
|
||
using System.Collections.Generic;
|
||
using System.ComponentModel.DataAnnotations.Schema;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using WMS.Web.Domain.Values;
|
||
|
||
namespace WMS.Web.Domain.Entitys
|
||
{
|
||
/// <summary>
|
||
/// wms入库单
|
||
/// </summary>
|
||
[Serializable]
|
||
[Table("t_wms_instock")]
|
||
public class InStock
|
||
{
|
||
/// <summary>
|
||
/// ID
|
||
/// </summary>
|
||
public int Id { get; set; }
|
||
|
||
/// <summary>
|
||
/// 单据编号
|
||
/// </summary>
|
||
public string BillNo { get; set; }
|
||
/// <summary>
|
||
/// 入库类型
|
||
/// </summary>
|
||
public InstockType Type { get; set; }
|
||
/// <summary>
|
||
/// 出入库方式:1按箱,2按产品
|
||
/// </summary>
|
||
public InventoryInOutMethod Method { get; set; }
|
||
/// <summary>
|
||
/// 创建人
|
||
/// </summary>
|
||
public int CreatorId { get; set; }
|
||
/// <summary>
|
||
/// 创建时间(入库时间)
|
||
/// </summary>
|
||
public DateTime CreateTime { get; set; }
|
||
/// <summary>
|
||
/// 同步成功或者失败
|
||
/// </summary>
|
||
public SyncStatus SuccessSync { get; set; } = SyncStatus.Fail;
|
||
|
||
/// <summary>
|
||
/// 操作人
|
||
/// </summary>
|
||
public int OperateId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 同步时间
|
||
/// </summary>
|
||
public DateTime? SyncTime { get; set; }
|
||
|
||
/// <summary>
|
||
/// 备注
|
||
/// </summary>
|
||
public string Remark { get; set; }
|
||
/// <summary>
|
||
/// 组织ID
|
||
/// </summary>
|
||
public int OrgId { get; set; }
|
||
/// <summary>
|
||
/// 组织编码
|
||
/// </summary>
|
||
public string OrgCode { get; set; }
|
||
/// <summary>
|
||
/// 仓库编码
|
||
/// </summary>
|
||
public string StockCode { get; set; }
|
||
/// <summary>
|
||
/// 仓位ID
|
||
/// </summary>
|
||
public int SubStockId { get; set; }
|
||
|
||
/// <summary>
|
||
/// ERP明细
|
||
/// </summary>
|
||
public List<InStockErpDetails> ErpDetails { get; set; } = new List<InStockErpDetails>();
|
||
|
||
/// <summary>
|
||
/// 明细
|
||
/// </summary>
|
||
public List<InStockDetails> Details { get; set; } = new List<InStockDetails>();
|
||
|
||
/// <summary>
|
||
/// 创建
|
||
/// </summary>
|
||
/// <param name="creatorId"></param>
|
||
public void Create(int creatorId)
|
||
{
|
||
this.CreatorId = creatorId;
|
||
this.CreateTime = DateTime.Now;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 同步金蝶
|
||
/// </summary>
|
||
/// <param name="syncStatus"></param>
|
||
/// <param name="operateId"></param>
|
||
/// <param name="remark"></param>
|
||
public void Sync(SyncStatus syncStatus, int operateId, string remark)
|
||
{
|
||
this.SuccessSync = syncStatus;
|
||
this.Remark = remark;
|
||
this.OperateId = operateId;
|
||
this.SyncTime = DateTime.Now;
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 生成单据号
|
||
/// </summary>
|
||
public void GenerateNo()
|
||
{
|
||
//用户手动输入了 就不自动生成了
|
||
if (!string.IsNullOrEmpty(this.BillNo)) return;
|
||
|
||
if (this.Id.ToString().Length >= 8)
|
||
{
|
||
this.BillNo = "RK" + this.Id.ToString();
|
||
return;
|
||
}
|
||
|
||
string idStr = this.Id.ToString();
|
||
while (true)
|
||
{
|
||
idStr = "0" + idStr;
|
||
if (idStr.Length >= 8) break;
|
||
}
|
||
this.BillNo = "RK" + idStr;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 同步金蝶(成功)
|
||
/// </summary>
|
||
/// <param name="erpDetailId"></param>
|
||
/// <param name="operateId"></param>
|
||
/// <param name="erpBillNo"></param>
|
||
public void SyncSuccess(int erpDetailId, int operateId, string erpBillNo)
|
||
{
|
||
var erpd = this.ErpDetails.Where(s=>s.ErpDetailId==erpDetailId).FirstOrDefault();
|
||
erpd.SuccessSync = SyncStatus.Success;
|
||
erpd.ErpSyncBillNo = erpBillNo;
|
||
|
||
//所有erp明细同步成功才是整个单据成功
|
||
if (this.ErpDetails.Where(w => w.SuccessSync == SyncStatus.Success).Count() == this.Details.Count())
|
||
{
|
||
this.SuccessSync = SyncStatus.Success;
|
||
this.Remark = "";
|
||
}
|
||
this.OperateId = operateId;
|
||
this.SyncTime = DateTime.Now;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 同步金蝶(失败)
|
||
/// </summary>
|
||
/// <param name="remark"></param>
|
||
/// <param name="erpDetailId"></param>
|
||
/// <param name="operateId"></param>
|
||
/// <param name="syncStatus"></param>
|
||
public void SyncFail(string remark, int erpDetailId, int operateId, SyncStatus syncStatus)
|
||
{
|
||
var erpd = this.ErpDetails.FirstOrDefault(w => w.ErpDetailId == erpDetailId);
|
||
erpd.SuccessSync = syncStatus;
|
||
this.SuccessSync = SyncStatus.Fail;
|
||
this.Remark = remark;
|
||
this.OperateId = operateId;
|
||
this.SyncTime = DateTime.Now;
|
||
}
|
||
}
|
||
}
|