/// <summary> /// 物料扫码出库 /// </summary> /// <returns></returns> public ResultModel MaterialOutput(dynamic data) { try { DateTime newDT = DateTime.Now; string documentNo = MmsHelper.GetOrderNumber("WMS_BN_BillMain", "BillCode", "QTCK", "", ""); WMS_BN_BillMain bMainModel = new WMS_BN_BillMain() { ID = Convert.ToInt32(new WMS_BN_BillMainService().GetNewKey("ID", "Maxplus")), BillCode = documentNo, BillType = 7, IsEnable = 1, ContractCode = data["mainData"]["ContractCode"], ProjectName = data["mainData"]["ProjectName"], WarehouseCode = data["mainData"]["WarehouseCode"], WarehouseName = data["mainData"]["WarehouseName"], ApproveState = data["mainData"]["ApproveState"], ApprovePerson = data["mainData"]["UserName"], ApproveDate = newDT, CreatePerson = data["userData"]["UserName"], CreateTime = newDT, ModifyPerson = data["userData"]["UserName"], ModifyTime = newDT }; WMS_BN_BillDetail bDetailModel = new WMS_BN_BillDetail() { BillCode = documentNo, IsEnable = 1, InventoryCode = data["detailData"]["InventoryCode"], InventoryName = data["detailData"]["InventoryName"], Specs = data["detailData"]["Specs"], Unit = data["detailData"]["Unit"], MateNum = data["detailData"]["MateNum"] == null ? null : Convert.ToDouble(data["detailData"]["MateNum"]), ConfirmNum = data["detailData"]["ConfirmNum"] == null ? null : Convert.ToDouble(data["detailData"]["ConfirmNum"]), CreatePerson = data["userData"]["UserName"], CreateTime = newDT, ModifyPerson = data["userData"]["UserName"], ModifyTime = newDT, PBillCode = data["detailData"]["PBillCode"] }; db.UseTransaction(true); int tempA = db.Sql(GetInsertSQL(bMainModel)).Execute(); var realStocks = db.Sql(string.Format(@"SELECT * FROM dbo.WMS_BN_RealStock WHERE IsEnable = 1 AND WarehouseCode = '{0}' AND InventoryCode = '{1}' ORDER BY BatchCode", bMainModel.WarehouseCode, bDetailModel.InventoryCode)).QueryMany <WMS_BN_RealStock>(); WMS_BN_RealStock realStock = null; if (realStocks.Count <= 0) { throw new Exception(@"仓库没有物料!"); } else { var num = Convert.ToInt32(bDetailModel.ConfirmNum ?? 1); foreach (var item in realStocks) { if (item.RealStock == null) { throw new Exception(@"仓库物料数量异常!"); } else { if ((item.RealStock ?? 0) < num) { } else { realStock = item; bDetailModel.BatchCode = item.BatchCode; break; } } } if (string.IsNullOrEmpty(bDetailModel.BatchCode)) { throw new Exception(@"仓库物料数量不够,无法出库!"); } } int tempB = db.Sql(GetInsertSQL(bDetailModel)).Execute(); string sql = GetUpdateSQL(nameof(WMS_BN_RealStock), new KeyValuePair <string, object>("ID", realStock.ID), new { RealStock = realStock.RealStock - bDetailModel.ConfirmNum, TotalStock = realStock.TotalStock - bDetailModel.ConfirmNum, ModifyPerson = bDetailModel.ModifyPerson, ModifyTime = bDetailModel.ModifyTime, }); int tempC = db.Sql(sql).Execute(); bool result = tempA > 0 && tempB > 0 && tempC > 0; if (result) { db.Commit(); } else { db.Rollback(); } return(new ResultModel() { Result = result, Msg = result ? @"成功!" : "失败!" }); } catch (Exception ex) { db.Rollback(); return(new ResultModel() { Result = false, Msg = ex.Message }); } }
//自动生成出入库单 public int PostBuild(string billCode, out string msg) { msg = string.Empty; var rowsAffected = 0; string sql = String.Format(@" select MAX(t1.BillState) as BillState,t2.WarehouseCode,max(t2.WarehouseName) as WarehouseName,t2.InventoryCode,max(t2.InventoryName) as InventoryName,sum(t2.DValue) as DValue from WMS_BN_TakeStockMain as t1 inner join WMS_BN_TakeStockDetail as t2 on t1.BillCode=t2.BillCode where t1.BillCode='{0}' group by t2.WarehouseCode,t2.Inventorycode", billCode); var list = db.Sql(sql).QueryMany <dynamic>(); var res = list[1].DValue; if (list[0].BillState == 2) { msg = "已锁定的数据不能重复提交!"; return(0); } db.UseTransaction(true); foreach (var item in list) { res = item.DValue; WMS_BN_BillMain master = new WMS_BN_BillMain(); if (item.DValue > 0) { master.BillType = 6; master.WarehouseCode = item.WarehouseCode; master.WarehouseName = item.WarehouseName; master.Remark = "盘盈入库"; } else if (item.DValue < 0) { master.BillType = 7; master.WarehouseCode = item.WarehouseCode; master.WarehouseName = item.WarehouseName; master.Remark = "盘亏出库"; } else { continue; } var sc = new sys_codeService().Getsys_codeByTypeAndID("BillType", Convert.ToInt16(master.BillType)); master.BillCode = MmsHelper.GetOrderNumber("WMS_BN_BillMain", "BillCode", sc.Description, "", ""); master.CreateTime = DateTime.Now; master.CreatePerson = MmsHelper.GetUserName(); rowsAffected = db.Sql(@"insert into WMS_BN_BillMain (BillCode,BillType,WarehouseCode,WarehouseName,Remark, CreatePerson,CreateTime) values(@0,@1,@2,@3,@4,@5,@6)", master.BillCode, master.BillType, master.WarehouseCode, master.WarehouseName, master.Remark, master.CreatePerson, master.CreateTime).Execute(); if (rowsAffected < 0) { db.Rollback(); return(rowsAffected); } var detailList = (from p in list where p.WarehouseCode == item.WarehouseCode select p).ToList(); foreach (var it in detailList) { WMS_BN_BillDetail detail = new WMS_BN_BillDetail(); detail.PBillCode = billCode; detail.BillCode = master.BillCode; detail.InventoryCode = it.InventoryCode; detail.InventoryName = it.InventoryName; detail.MateNum = Math.Abs(item.DValue); detail.ConfirmNum = Math.Abs(item.DValue); rowsAffected = db.Insert <WMS_BN_BillDetail>("WMS_BN_BillDetail", detail) .AutoMap(x => x.ID) .Execute(); if (rowsAffected < 0) { db.Rollback(); return(rowsAffected); } } } sql = string.Format(@"update WMS_BN_TakeStockMain set BillState='2' where BillCode='{0}'", billCode); rowsAffected = db.Sql(sql).Execute(); if (rowsAffected < 0) { db.Rollback(); return(rowsAffected); } msg = "操作成功!"; db.Commit(); return(rowsAffected); }
public int PostBuild(string billCode, out string msg) { msg = string.Empty; int rowsAffected = 0; db.UseTransaction(true); string sql = string.Format(@"select a.BillCode,a.Remark, a.InWarehouseCode,a.InWarehouseName,a.OutWarehouseCode,a.OutWarehouseName, b.InventoryCode,b.InventoryName,b.ConfirmNum,b.Unit from WMS_BN_TransfersMain a left join WMS_BN_TransfersDetail b on a.BillCode=b.BillCode where a.IsEnable=1 and b.IsEnable=1 and b.BillCode='{0}'", billCode); var list = db.Sql(sql).QueryMany <dynamic>(); if (list.Count <= 0) { msg = "没有数据!"; return(0); } //foreach (var item in list) //{ WMS_BN_BillMain master = new WMS_BN_BillMain(); var sc = new sys_codeService().Getsys_codeByTypeAndID("BillType", 7); master.BillCode = MmsHelper.GetOrderNumber("WMS_BN_BillMain", "BillCode", sc.Description, "", ""); master.BillType = 7; master.WarehouseCode = list[0].OutWarehouseCode; master.WarehouseName = list[0].OutWarehouseName; master.Remark = list[0].Remark; master.CreateTime = DateTime.Now; master.CreatePerson = MmsHelper.GetUserName(); master.ApproveState = "1"; rowsAffected = db.Sql(@"insert into WMS_BN_BillMain (ID,BillCode,BillType,WarehouseCode,WarehouseName,Remark,ApproveState, CreatePerson,CreateTime) values(((select MAX(id)+1 from WMS_BN_BillMain)),@0,@1,@2,@3,@4,@5,@6,@7)", master.BillCode, master.BillType, master.WarehouseCode, master.WarehouseName, master.Remark, master.ApproveState, master.CreatePerson, master.CreateTime).Execute(); if (rowsAffected < 0) { db.Rollback(); return(rowsAffected); } //var detailList = (from p in list where p.OutWarehouseID == item.OutWarehouseID select p).ToList(); //var detailList = (from p in list where p.OutWarehouseID == item.OutWarehouseID select p).ToList(); foreach (var it in list) { WMS_BN_BillDetail detail = new WMS_BN_BillDetail(); detail.PBillCode = billCode; detail.BillCode = master.BillCode; detail.InventoryCode = it.InventoryCode; detail.InventoryName = it.InventoryName; detail.MateNum = it.ConfirmNum; detail.ConfirmNum = it.ConfirmNum; rowsAffected = db.Insert <WMS_BN_BillDetail>("WMS_BN_BillDetail", detail) .AutoMap(x => x.ID) .Execute(); if (rowsAffected < 0) { db.Rollback(); return(rowsAffected); } } sc = new sys_codeService().Getsys_codeByTypeAndID("BillType", 6); master.BillCode = MmsHelper.GetOrderNumber("WMS_BN_BillMain", "BillCode", sc.Description, "", ""); master.BillType = 6; master.WarehouseCode = list[0].InWarehouseCode; master.WarehouseName = list[0].InWarehouseName; master.Remark = list[0].Remark; master.CreateTime = DateTime.Now; master.CreatePerson = MmsHelper.GetUserName(); master.ApproveState = "1"; rowsAffected = db.Sql(@"insert into WMS_BN_BillMain (ID,BillCode,BillType,WarehouseCode,WarehouseName,Remark,ApproveState, CreatePerson,CreateTime) values(((select MAX(id)+1 from WMS_BN_BillMain)),@0,@1,@2,@3,@4,@5,@6,@7)", master.BillCode, master.BillType, master.WarehouseCode, master.WarehouseName, master.Remark, master.ApproveState, master.CreatePerson, master.CreateTime).Execute(); if (rowsAffected < 0) { db.Rollback(); return(rowsAffected); } //detailList = (from p in list where p.InWarehouseID == item.InWarehouseID select p).ToList(); foreach (var it in list) { WMS_BN_BillDetail detail = new WMS_BN_BillDetail(); detail.PBillCode = billCode; detail.BillCode = master.BillCode; detail.InventoryCode = it.InventoryCode; detail.InventoryName = it.InventoryName; detail.MateNum = it.ConfirmNum; detail.ConfirmNum = it.ConfirmNum; rowsAffected = db.Insert <WMS_BN_BillDetail>("WMS_BN_BillDetail", detail) .AutoMap(x => x.ID) .Execute(); if (rowsAffected < 0) { db.Rollback(); return(rowsAffected); } } //} sql = string.Format(@"update WMS_BN_TransfersMain set ApproveState='2',ApprovePerson='{0}',ApproveTime='{1}' where BillCode='{2}'", MmsHelper.GetUserName(), DateTime.Now, billCode); rowsAffected = db.Sql(sql).Execute(); if (rowsAffected < 0) { db.Rollback(); return(rowsAffected); } msg = "操作成功!"; db.Commit(); return(rowsAffected); }