|
|
|
|
@ -26,6 +26,7 @@ using System.Threading.Tasks;
|
|
|
|
|
using System.Windows;
|
|
|
|
|
using System.Windows.Controls;
|
|
|
|
|
using System.Windows.Input;
|
|
|
|
|
using System.Windows.Media.Media3D;
|
|
|
|
|
using System.Windows.Threading;
|
|
|
|
|
using Z.EntityFramework.Plus;
|
|
|
|
|
|
|
|
|
|
@ -2047,6 +2048,9 @@ namespace Khd.Core.Wpf.Form
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
string containerCode = txtOutBox.Text;
|
|
|
|
|
|
|
|
|
|
if (containerCode.Length < 15)
|
|
|
|
|
return;
|
|
|
|
|
if (!string.IsNullOrEmpty(containerCode))
|
|
|
|
|
{
|
|
|
|
|
using var scope = _host.Services.CreateScope();
|
|
|
|
|
@ -2078,8 +2082,11 @@ namespace Khd.Core.Wpf.Form
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
outMaterialNameTxt.Text ="";
|
|
|
|
|
outMaterialSpecTxt.Text = "";
|
|
|
|
|
string barCode = txtOutBarCode.Text;
|
|
|
|
|
string containerCode = txtOutBox.Text;
|
|
|
|
|
if (barCode.Length < 19) return;
|
|
|
|
|
if (!string.IsNullOrEmpty(containerCode))
|
|
|
|
|
{
|
|
|
|
|
if (!string.IsNullOrEmpty(barCode))
|
|
|
|
|
@ -2104,8 +2111,16 @@ namespace Khd.Core.Wpf.Form
|
|
|
|
|
txtOutScan.Text = string.Empty;
|
|
|
|
|
txtOutBarCode.Focus();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
var materialInfo = dbContext.MesBaseMaterialInfo.FirstOrDefault(t => t.MaterialId == wmsRawStock.materialId);
|
|
|
|
|
if (materialInfo != null)
|
|
|
|
|
{
|
|
|
|
|
outMaterialNameTxt.Text = materialInfo.MaterialName;
|
|
|
|
|
outMaterialSpecTxt.Text = materialInfo.MaterialSpec;
|
|
|
|
|
}
|
|
|
|
|
txtOutScan.Text = (mesBaseMaterialInfo.batchFlag == "1" ? (wmsRawStock.totalAmount - wmsRawStock.frozenAmount) : 1).ToString();
|
|
|
|
|
if (mesBaseMaterialInfo.batchFlag == "1")
|
|
|
|
|
{
|
|
|
|
|
@ -2141,125 +2156,143 @@ namespace Khd.Core.Wpf.Form
|
|
|
|
|
/// <param name="e"></param>
|
|
|
|
|
private void OutRawBaseLocaltion_Click(object sender, RoutedEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (!string.IsNullOrEmpty(txtOutBox.Text) && !string.IsNullOrEmpty(txtOutBarCode.Text))
|
|
|
|
|
{
|
|
|
|
|
using var scope = _host.Services.CreateScope();
|
|
|
|
|
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
|
|
|
|
|
var wmsRawStock = dbContext.WmsRawStock
|
|
|
|
|
.FirstOrDefault(t => t.instockBatch == txtOutBarCode.Text && t.palletInfoCode == txtOutBox.Text);
|
|
|
|
|
if (wmsRawStock == null)
|
|
|
|
|
{
|
|
|
|
|
HandyControl.Controls.MessageBox.Error("库存已经被清空!");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
decimal outScan = Convert.ToDecimal(this.txtOutScan.Text);
|
|
|
|
|
if (outScan != 1 && outScan > wmsRawStock.totalAmount - wmsRawStock.frozenAmount)
|
|
|
|
|
{
|
|
|
|
|
HandyControl.Controls.MessageBox.Error("出库数量不能大于库存数量!");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
var wcsTask = dbContext.WcsTask.Where(t => t.containerNo == txtOutBox.Text).FirstOrDefault();
|
|
|
|
|
if (wcsTask == null)
|
|
|
|
|
{
|
|
|
|
|
HandyControl.Controls.MessageBox.Error("出库失败,非CTU出库任务,无法出库!");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
var mesBaseBarcodeInfo = dbContext.MesBaseBarcodeInfo.FirstOrDefault(t => t.barcodeInfo == txtOutBarCode.Text);
|
|
|
|
|
if (mesBaseBarcodeInfo != null)
|
|
|
|
|
{
|
|
|
|
|
WmsRawOutstock? wmsRawOutstock = dbContext.WmsRawOutstock
|
|
|
|
|
.Where(t => t.materialId == mesBaseBarcodeInfo.materialId && t.realOutstockAmount < t.outstockAmount && t.saleOrderId == (mesBaseBarcodeInfo.saleOrderId == null ? 0 : mesBaseBarcodeInfo.saleOrderId)).FirstOrDefault();
|
|
|
|
|
if (wmsRawOutstock != null)
|
|
|
|
|
{
|
|
|
|
|
wmsRawOutstock.realOutstockAmount += outScan;
|
|
|
|
|
if (wmsRawOutstock.outstockAmount == wmsRawOutstock.realOutstockAmount)
|
|
|
|
|
{
|
|
|
|
|
wmsRawOutstock.executeStatus = "2";
|
|
|
|
|
}
|
|
|
|
|
else if (wmsRawOutstock.realOutstockAmount > wmsRawOutstock.outstockAmount)
|
|
|
|
|
{
|
|
|
|
|
HandyControl.Controls.MessageBox.Error("出库数量不能大于申请单数量,当前出库数量为:" + (wmsRawOutstock.realOutstockAmount - outScan) + ",申请单数量为:" + wmsRawOutstock.outstockAmount + "!");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
wmsRawStock.totalAmount -= outScan;
|
|
|
|
|
if (wmsRawStock.totalAmount <= 0)
|
|
|
|
|
{
|
|
|
|
|
dbContext.Remove(wmsRawStock);
|
|
|
|
|
dbContext.Update(wmsRawOutstock);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
dbContext.Update(wmsRawStock);
|
|
|
|
|
dbContext.Update(wmsRawOutstock);
|
|
|
|
|
}
|
|
|
|
|
if (mesBaseBarcodeInfo != null)
|
|
|
|
|
{
|
|
|
|
|
WmsRawOutstockDetail wmsProductOutstockDetail = new WmsRawOutstockDetail()
|
|
|
|
|
{
|
|
|
|
|
rawOutstockDetailId = Global.SnowId.NextId(),
|
|
|
|
|
rawOutstockId = wmsRawOutstock.rawOutstockId,
|
|
|
|
|
materialId = mesBaseBarcodeInfo.materialId,
|
|
|
|
|
createDate = DateTime.Now,
|
|
|
|
|
createBy = "WCS",
|
|
|
|
|
taskCode = wcsTask.objid.ToString(),
|
|
|
|
|
executeStatus = "2",
|
|
|
|
|
locationCode = wcsTask.currPointNo,
|
|
|
|
|
outstockAmount = outScan,
|
|
|
|
|
planAmount = outScan,
|
|
|
|
|
warehouseId = 512,
|
|
|
|
|
materialBarcode = mesBaseBarcodeInfo.barcodeInfo,
|
|
|
|
|
instockBatch = mesBaseBarcodeInfo.batchCode,
|
|
|
|
|
stackAmount = outScan,
|
|
|
|
|
outstockPerson = "WCS",
|
|
|
|
|
outstockTime = DateTime.Now,
|
|
|
|
|
outstockWay = "2",
|
|
|
|
|
materialProductionDate = mesBaseBarcodeInfo.productionDate
|
|
|
|
|
};
|
|
|
|
|
dbContext.WmsRawOutstockDetail.Add(wmsProductOutstockDetail);
|
|
|
|
|
}
|
|
|
|
|
dbContext.SaveChanges();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (mesBaseBarcodeInfo.PurchaseOrderId == null)
|
|
|
|
|
{
|
|
|
|
|
wmsRawStock.totalAmount -= outScan;
|
|
|
|
|
if (wmsRawStock.totalAmount == 0)
|
|
|
|
|
{
|
|
|
|
|
dbContext.WmsRawStock.Remove(wmsRawStock);
|
|
|
|
|
dbContext.SaveChanges();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
dbContext.WmsRawStock.Update(wmsRawStock);
|
|
|
|
|
dbContext.SaveChanges();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
HandyControl.Controls.MessageBox.Error("该条码的销售订单不正确");
|
|
|
|
|
txtOutScan.Text = string.Empty;
|
|
|
|
|
txtOutBarCode.Text = string.Empty;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
OutRaw();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
HandyControl.Controls.MessageBox.Success("出库成功!");
|
|
|
|
|
txtOutScan.Text = string.Empty;
|
|
|
|
|
txtOutBarCode.Text = string.Empty;
|
|
|
|
|
txtOutBarCode.Focus();
|
|
|
|
|
private void OutRaw()
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (!string.IsNullOrEmpty(txtOutBox.Text) && !string.IsNullOrEmpty(txtOutBarCode.Text))
|
|
|
|
|
{
|
|
|
|
|
using var scope = _host.Services.CreateScope();
|
|
|
|
|
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
|
|
|
|
|
var wmsRawStock = dbContext.WmsRawStock
|
|
|
|
|
.FirstOrDefault(t => t.instockBatch == txtOutBarCode.Text && t.palletInfoCode == txtOutBox.Text);
|
|
|
|
|
if (wmsRawStock == null)
|
|
|
|
|
{
|
|
|
|
|
HandyControl.Controls.MessageBox.Error("库存已经被清空!");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
decimal outScan = Convert.ToDecimal(this.txtOutScan.Text);
|
|
|
|
|
if (outScan != 1 && outScan > wmsRawStock.totalAmount - wmsRawStock.frozenAmount)
|
|
|
|
|
{
|
|
|
|
|
HandyControl.Controls.MessageBox.Error("出库数量不能大于库存数量!");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
var wcsTask = dbContext.WcsTask.Where(t => t.containerNo == txtOutBox.Text).FirstOrDefault();
|
|
|
|
|
if (wcsTask == null)
|
|
|
|
|
{
|
|
|
|
|
HandyControl.Controls.MessageBox.Error("出库失败,非CTU出库任务,无法出库!");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
HandyControl.Controls.MessageBox.Error("未查询到该条码信息!");
|
|
|
|
|
var mesBaseBarcodeInfo = dbContext.MesBaseBarcodeInfo.FirstOrDefault(t => t.barcodeInfo == txtOutBarCode.Text);
|
|
|
|
|
if (mesBaseBarcodeInfo != null)
|
|
|
|
|
{
|
|
|
|
|
WmsRawOutstock? wmsRawOutstock = dbContext.WmsRawOutstock
|
|
|
|
|
.Where(t => t.materialId == mesBaseBarcodeInfo.materialId && t.realOutstockAmount < t.outstockAmount && t.saleOrderId == (mesBaseBarcodeInfo.saleOrderId == null ? 0 : mesBaseBarcodeInfo.saleOrderId)).FirstOrDefault();
|
|
|
|
|
if (wmsRawOutstock != null)
|
|
|
|
|
{
|
|
|
|
|
wmsRawOutstock.realOutstockAmount += outScan;
|
|
|
|
|
if (wmsRawOutstock.outstockAmount == wmsRawOutstock.realOutstockAmount)
|
|
|
|
|
{
|
|
|
|
|
wmsRawOutstock.executeStatus = "2";
|
|
|
|
|
}
|
|
|
|
|
else if (wmsRawOutstock.realOutstockAmount > wmsRawOutstock.outstockAmount)
|
|
|
|
|
{
|
|
|
|
|
HandyControl.Controls.MessageBox.Error("出库数量不能大于申请单数量,当前出库数量为:" + (wmsRawOutstock.realOutstockAmount - outScan) + ",申请单数量为:" + wmsRawOutstock.outstockAmount + "!");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
wmsRawStock.totalAmount -= outScan;
|
|
|
|
|
if (wmsRawStock.totalAmount <= 0)
|
|
|
|
|
{
|
|
|
|
|
dbContext.Remove(wmsRawStock);
|
|
|
|
|
dbContext.Update(wmsRawOutstock);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
dbContext.Update(wmsRawStock);
|
|
|
|
|
dbContext.Update(wmsRawOutstock);
|
|
|
|
|
}
|
|
|
|
|
if (mesBaseBarcodeInfo != null)
|
|
|
|
|
{
|
|
|
|
|
WmsRawOutstockDetail wmsProductOutstockDetail = new WmsRawOutstockDetail()
|
|
|
|
|
{
|
|
|
|
|
rawOutstockDetailId = Global.SnowId.NextId(),
|
|
|
|
|
rawOutstockId = wmsRawOutstock.rawOutstockId,
|
|
|
|
|
materialId = mesBaseBarcodeInfo.materialId,
|
|
|
|
|
createDate = DateTime.Now,
|
|
|
|
|
createBy = "WCS",
|
|
|
|
|
taskCode = wcsTask.objid.ToString(),
|
|
|
|
|
executeStatus = "2",
|
|
|
|
|
locationCode = wcsTask.currPointNo,
|
|
|
|
|
outstockAmount = outScan,
|
|
|
|
|
planAmount = outScan,
|
|
|
|
|
warehouseId = 512,
|
|
|
|
|
materialBarcode = mesBaseBarcodeInfo.barcodeInfo,
|
|
|
|
|
instockBatch = mesBaseBarcodeInfo.batchCode,
|
|
|
|
|
stackAmount = outScan,
|
|
|
|
|
outstockPerson = "WCS",
|
|
|
|
|
outstockTime = DateTime.Now,
|
|
|
|
|
outstockWay = "2",
|
|
|
|
|
materialProductionDate = mesBaseBarcodeInfo.productionDate
|
|
|
|
|
};
|
|
|
|
|
dbContext.WmsRawOutstockDetail.Add(wmsProductOutstockDetail);
|
|
|
|
|
}
|
|
|
|
|
dbContext.SaveChanges();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (mesBaseBarcodeInfo.PurchaseOrderId == null)
|
|
|
|
|
{
|
|
|
|
|
wmsRawStock.totalAmount -= outScan;
|
|
|
|
|
if (wmsRawStock.totalAmount == 0)
|
|
|
|
|
{
|
|
|
|
|
dbContext.WmsRawStock.Remove(wmsRawStock);
|
|
|
|
|
dbContext.SaveChanges();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
dbContext.WmsRawStock.Update(wmsRawStock);
|
|
|
|
|
dbContext.SaveChanges();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
HandyControl.Controls.MessageBox.Error("该条码的销售订单不正确");
|
|
|
|
|
txtOutScan.Text = string.Empty;
|
|
|
|
|
txtOutBarCode.Text = string.Empty;
|
|
|
|
|
outMaterialSpecTxt.Text = string.Empty;
|
|
|
|
|
outMaterialNameTxt.Text = string.Empty;
|
|
|
|
|
txtOutBox.Focus();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
HandyControl.Controls.MessageBox.Success("出库成功!");
|
|
|
|
|
txtOutScan.Text = string.Empty;
|
|
|
|
|
txtOutBarCode.Text = string.Empty;
|
|
|
|
|
outMaterialSpecTxt.Text = string.Empty;
|
|
|
|
|
outMaterialNameTxt.Text = string.Empty;
|
|
|
|
|
txtOutBarCode.Focus();
|
|
|
|
|
txtOutBox.Focus();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
HandyControl.Controls.MessageBox.Error("未查询到该条码信息!");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
HandyControl.Controls.MessageBox.Info("请先扫描容器号和条码!");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
catch(Exception ex)
|
|
|
|
|
{
|
|
|
|
|
HandyControl.Controls.MessageBox.Info("请先扫描容器号和条码!");
|
|
|
|
|
MessageBox.Show(ex.Message);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
@ -4029,6 +4062,13 @@ namespace Khd.Core.Wpf.Form
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void OutEnter(object sender, KeyEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
OutRaw();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|