Files
WMS-Api/src/WMS.Web.Domain/Entitys/InStock.cs
2023-12-15 14:04:26 +08:00

176 lines
5.1 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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;
}
}
}