using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using WMS.Web.Core;
using WMS.Web.Core.Internal.Results;
using WMS.Web.Domain.Values;
namespace WMS.Web.Domain.Entitys
{
///
/// 老ops箱信息头
///
[Serializable]
[Table("t_ops_box")]
public class Box : EntityBase
{
///
/// ID
///
public override int Id { get; set; }
///
/// 对应老OPS的箱ID
///
public int OpsBoxId { get; set; }
///
/// 箱编号(老OPS生成的箱号)
///
public string BoxBillNo { get; set; }
///
/// 供应商Id
///
public int SupplierId { get; set; } = 0;
///
/// 组织Id
///
public int OrgId { get; set; } = 0;
///
/// 完成装箱时间
///
public DateTime CompleteCartonTime { get; set; } = DateTime.Now;
///
/// 完成装箱用户
///
public string CompleteCartonUser { get; set; }
///
/// 箱子创建用户
///
public string CreateUser { get; set; }
///
/// 创建时间(对应老OPS的创建时间)
///
public DateTime CreateTime { get; set; } = DateTime.Now;
///
/// 明细
///
public List Details { get; set; } = new List();
//移出
public Result Out(List<(int MaterialId, decimal Qty, List SerialNumbers)> list)
{
foreach (var l in list)
{
var d = this.Details.FirstOrDefault(f => f.MaterialId == l.MaterialId);
if (d == null) return Result.ReFailure(ResultCodes.BoxMateriaNoData);
d.Qty = d.Qty - l.Qty;
if (d.Qty <= 0) this.Details.Remove(d);
//foreach (var s in l.SerialNumbers) d.SerialNumbers.Remove(s);
}
return Result.ReSuccess();
}
//移入
public Result In(List<(int MaterialId, decimal Qty, List SerialNumbers)> list)
{
foreach (var l in list)
{
var d = this.Details.FirstOrDefault(f => f.MaterialId == l.MaterialId);
if (d == null)
{
this.Details.Add(new BoxDetails()
{
MaterialId = l.MaterialId,
Qty = l.Qty,
//SerialNumbers=l.SerialNumbers
});
continue;
}
d.Qty = d.Qty + l.Qty;
//d.SerialNumbers.AddRange(l.SerialNumbers);
}
return Result.ReSuccess();
}
//移入
public Result TakeStock(int materialId, decimal qty)
{
var d = this.Details.FirstOrDefault(f => f.MaterialId == materialId);
if (d == null)
{
this.Details.Add(new BoxDetails()
{
MaterialId = materialId,
Qty = qty
});
}
return Result.ReSuccess();
}
///
/// 出入库回退上架
///
///
///
///
public Result BackRecordUp(int materialId, decimal qty)
{
var d = this.Details.FirstOrDefault(f => f.MaterialId == materialId);
if (d == null)
{
this.Details.Add(new BoxDetails()
{
MaterialId = materialId,
Qty = qty
});
}
else
{
d.Qty = qty;
}
return Result.ReSuccess();
}
///
/// 出入库回退下架
///
///
///
///
public Result BackRecordDown(int materialId, decimal qty)
{
var d = this.Details.FirstOrDefault(f => f.MaterialId == materialId);
if (d != null)
d.Qty = (d.Qty - qty) > 0 ? (d.Qty - qty) : 0;
return Result.ReSuccess();
}
}
}