| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using NewPdaSqlServer.DB; |
| | | using NewPdaSqlServer.Dto.service; |
| | | using NewPdaSqlServer.entity; |
| | | using NewPdaSqlServer.util; |
| | | using SqlSugar; |
| | | |
| | | namespace NewPdaSqlServer.service.Warehouse; |
| | | |
| | | public class MesItemQtManager : Repository<MesItemQt> |
| | | { |
| | | //å½å类已ç»ç»§æ¿äº Repository å¢ãå ãæ¥ãæ¹çæ¹æ³ |
| | | /// <summary> |
| | | /// è·åæªå®æçéæåå·å表 |
| | | /// </summary> |
| | | /// <returns>éæåå·å表</returns> |
| | | public List<string> GetPendingQtList() |
| | | { |
| | | return Db.Queryable<MesItemQt>() |
| | | .Where(it => |
| | | (it.Qt015 ?? false) == true && (it.Qt014 ?? false) == false) |
| | | .OrderByDescending(it => it.Qtck) |
| | | .Select(it => it.Qtck) |
| | | .ToList(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// è·åå¾
å¤ççéæåæç»å表 |
| | | /// </summary> |
| | | /// <param name="query">ä»åºæ¥è¯¢åæ°ï¼å
å«ç¨æ·åååæ®å·</param> |
| | | /// <returns>å¾
å¤ççéæåæç»å表</returns> |
| | | public List<MesItemQtDatall> GetPendingQtList(WarehouseQuery query) |
| | | { |
| | | // 仿¥è¯¢åæ°ä¸è·åç¨æ·åååæ®å· |
| | | var c_User = query.userName; |
| | | var p_bill_no = query.billNo; |
| | | |
| | | // æ ¹æ®åæ®å·æ¥è¯¢éæåä¸»è¡¨ä¿¡æ¯ |
| | | var mesItemQt = Db.Queryable<MesItemQt>() |
| | | .Where(it => it.Qtck == p_bill_no) |
| | | .First(); |
| | | |
| | | // å¦ææªæ¾å°éæåï¼æåºå¼å¸¸ |
| | | if (mesItemQt == null) |
| | | { |
| | | throw new Exception($"æªæ¥è¯¢å°æ¤å
¶ä»å
¥åºç³è¯·å {p_bill_no}"); |
| | | } |
| | | |
| | | // æ£æ¥éæåçå®¡æ ¸ç¶æ(Qt015)ï¼æªå®¡æ ¸åæåºå¼å¸¸ |
| | | if (mesItemQt.Qt015 == false) |
| | | { |
| | | throw new Exception($"å
¶ä»åºåºç³è¯·å {p_bill_no} æªå®¡æ ¸ï¼è¯·ç¡®è®¤ï¼"); |
| | | } |
| | | |
| | | // æ£æ¥éæåçå®ç»ç¶æ(Qt014)ï¼å·²å®ç»åæåºå¼å¸¸ |
| | | if (mesItemQt.Qt014 == true) |
| | | { |
| | | throw new Exception($"å
¶ä»åºåºç³è¯·å {p_bill_no} å·²å®ç»ï¼è¯·ç¡®è®¤ï¼"); |
| | | } |
| | | |
| | | // è表æ¥è¯¢è·åæªå®æçæç»å表 |
| | | // å
³èè¡¨ï¼ |
| | | // - MesItemQt: éæå主表(a) |
| | | // - MesItemQtDatall: éæåæç»è¡¨(b) |
| | | // - MesItems: ç©æåºç¡ä¿¡æ¯è¡¨(c) |
| | | var pendingList = Db.Queryable<MesItemQt, MesItemQtDatall, MesItems>( |
| | | (a, b, c) => |
| | | new JoinQueryInfos( |
| | | JoinType.Left, a.Guid == b.QtGuid, // 主表åæç»è¡¨éè¿Guidå
³è |
| | | JoinType.Left, |
| | | b.ItemId == c.Id.ToString())) // æç»è¡¨åç©æè¡¨éè¿ItemIdå
³è |
| | | .Where((a, b, c) => |
| | | a.Qtck == p_bill_no && // å¹é
åæ®å· |
| | | (b.Qd007 ?? 0) - (b.Qd008 ?? 0) > |
| | | 0) // è®¡åæ°éåå»å·²å®ææ°é大äº0çè®°å½(峿ªå®æçè®°å½) |
| | | .OrderBy((a, b, c) => c.ItemNo) // æç©æç¼å·æåº |
| | | .Select((a, b, c) => new MesItemQtDatall |
| | | { |
| | | Qd002 = b.Qd002, // æç»è¡å· |
| | | Qt011 = a.Qt011, // éæåå |
| | | ItemNo = c.ItemNo, // ç©æç¼å· |
| | | Qd007 = b.Qd007 ?? 0, // è®¡åæ°é |
| | | Qd008 = b.Qd008 ?? 0 // 已宿æ°é |
| | | }) |
| | | .ToList(); |
| | | |
| | | return pendingList; |
| | | } |
| | | |
| | | public (WarehouseQuery form, List<MesItemQtDatall> item, string message) |
| | | OutScanBarcode( |
| | | WarehouseQuery query) |
| | | { |
| | | var p_bill_no = query.billNo; |
| | | var p_item_barcode = query.barcode; |
| | | var c_user = query.userName; |
| | | var p_bill_type_id = 200; |
| | | var p_transaction_no = 202; |
| | | |
| | | // æ£æ¥åæ®å·æ¯å¦ä¸ºç©º |
| | | if (string.IsNullOrEmpty(p_bill_no)) |
| | | { |
| | | throw new Exception("请éååæ®å·ï¼"); |
| | | } |
| | | |
| | | // æ£æ¥æ¯å¦é夿«æ |
| | | var existingBarcode = Db.Queryable<MesInvItemOutCDetails>() |
| | | .Where(it => |
| | | it.ItemBarcode == p_item_barcode && it.PbillNo == p_bill_no) |
| | | .Any(); |
| | | |
| | | if (existingBarcode) |
| | | { |
| | | throw new Exception("æ¤æ¡ç å·²ç»æ«ç åºåº,å¿é夿«æï¼"); |
| | | } |
| | | |
| | | // è·åæ¡ç ä¿¡æ¯ |
| | | var barcode = Db.Queryable<MesInvItemBarcodes>() |
| | | .Where(it => it.ItemBarcode == p_item_barcode) |
| | | .First(); |
| | | |
| | | if (barcode == null) |
| | | { |
| | | throw new Exception($"mesä¸ä¸å卿¤æ¡ç ,è¯·æ ¸å¯¹ï¼{p_item_barcode}"); |
| | | } |
| | | |
| | | // è·ååºåä¿¡æ¯ |
| | | var stock = Db.Queryable<MesInvItemStocks>() |
| | | .Where(it => it.ItemBarcode == p_item_barcode && it.Quantity > 0) |
| | | .First(); |
| | | |
| | | if (stock == null) |
| | | { |
| | | throw new Exception($"åºå䏿 æ¤æ¡ç ï¼è¯·æ£æ¥æ¡ç æ¯å¦æªå
¥åºæå·²åºåºï¼{p_item_barcode}"); |
| | | } |
| | | |
| | | |
| | | if (string.IsNullOrEmpty(stock.DepotsCode)) |
| | | { |
| | | throw new Exception($"è°æ¨ä¸çæ¡ç ä¸å¯åæ,请å
å®æè°æ¨åæ®{p_item_barcode}"); |
| | | } |
| | | |
| | | if (stock.DepotsCode is "S006" or "S005") |
| | | { |
| | | throw new Exception($"æ¡ç å¨ä¸è¯åä»ä¸ ä¸å¯åæ{p_item_barcode}"); |
| | | } |
| | | |
| | | // æ£æ¥æ¯å¦å¨å¯åä»ä½ |
| | | // var isDepotSection = Db.Queryable<MesJcDepot>() |
| | | // .Where(it => it.DepotSectionsCode == stock.DepotSectionsCode) |
| | | // .Any(); |
| | | // |
| | | // if (isDepotSection) |
| | | // { |
| | | // throw new Exception($"å¨å¯åä»ä½ä¸çæ¡ç ä¸å¯ç´æ¥æ«ç åæ{p_item_barcode}"); |
| | | // } |
| | | |
| | | // è·åå
¶ä»åºåºåä¿¡æ¯ |
| | | var mesItemQt = Db.Queryable<MesItemQt>() |
| | | .Where(it => it.Qtck == p_bill_no) |
| | | .First(); |
| | | |
| | | if (mesItemQt == null) |
| | | { |
| | | throw new Exception($"å
¶ä»åºåºç³è¯·å {p_bill_no} ä¸åå¨ï¼è¯·ç¡®è®¤ï¼"); |
| | | } |
| | | |
| | | // æ£æ¥ä»åºæ¯å¦ä¸è´ |
| | | if (mesItemQt.Qt011 != stock.DepotsCode) |
| | | { |
| | | throw new Exception( |
| | | $"æ«ç åºè´§ä»åº{stock.DepotsCode}ä¸å
¶ä»åºåºç³è¯·ä»åº{mesItemQt.Qt011}ä¸ä¸è´ï¼è¯·æ ¸å¯¹ï¼"); |
| | | } |
| | | |
| | | // è·ååºåºåæç» |
| | | var qtDetail = Db.Queryable<MesItemQtDatall>() |
| | | .Where(it => |
| | | it.QtGuid == mesItemQt.Guid && |
| | | it.ItemId == stock.ItemId.ToString()) |
| | | .First(); |
| | | |
| | | if (qtDetail == null) |
| | | { |
| | | throw new Exception("æ«ç ç©æéæ¬æ¬¡åºåºç³è¯·ç©æï¼è¯·æ ¸å¯¹ï¼"); |
| | | } |
| | | |
| | | // æ£æ¥å©ä½æ°é |
| | | var remainingQty = (qtDetail.Qd007 ?? 0) - (qtDetail.Qd008 ?? 0); |
| | | if (remainingQty <= 0) |
| | | { |
| | | throw new Exception($"ç³è¯·ç©æ {barcode.ItemNo} å·²åºåºå®æï¼"); |
| | | } |
| | | |
| | | // æ£æ¥æ°éæ¯å¦è¶
åº |
| | | if (stock.Quantity > remainingQty) |
| | | { |
| | | var pendingList = Db |
| | | .Queryable<MesItemQt, MesItemQtDatall, MesItems>( |
| | | (a, b, c) => new JoinQueryInfos( |
| | | JoinType.Left, a.Guid == b.QtGuid, |
| | | JoinType.Left, b.ItemId == c.Id.ToString())) |
| | | .Where((a, b, c) => a.Qtck == p_bill_no && |
| | | (b.Qd007 ?? 0) - (b.Qd008 ?? 0) > 0) |
| | | .OrderBy((a, b, c) => c.ItemNo) |
| | | .Select((a, b, c) => new MesItemQtDatall |
| | | { |
| | | Qd002 = b.Qd002, // æç»è¡å· |
| | | Qt011 = a.Qt011, // éæåå |
| | | ItemNo = c.ItemNo, // ç©æç¼å· |
| | | Qd007 = b.Qd007 ?? 0, // è®¡åæ°é |
| | | Qd008 = b.Qd008 ?? 0 // 已宿æ°é |
| | | }) |
| | | .ToList(); |
| | | |
| | | var message = |
| | | $"è¯·ç¡®è®¤åææ°éï¼ï¼å·²å¸¦åºæ»¡è¶³å
¶ä»åºåºåçåææ°é {remainingQty} 确认å请ç¹å»æ¡ç æå"; |
| | | |
| | | query.itemNo = stock.ItemNo; |
| | | query.Num = stock.Quantity; |
| | | query.Fum = remainingQty; |
| | | |
| | | return (query, pendingList, message); |
| | | } |
| | | |
| | | var mesItemQtDatalls = new List<MesItemQtDatall>(); |
| | | var mess = ""; |
| | | UseTransaction(db => |
| | | { |
| | | var commit = 0; |
| | | |
| | | // æ¥æ¾å½å¤©æ¯å¦å·²åå¨åºåºå |
| | | var existingOut = Db.Queryable<MesInvItemOuts>() |
| | | .Where(it => it.PbillNo == p_bill_no |
| | | // && it.DepotCode == stock.DepotsCode |
| | | && it.DepotId == stock.DepotId |
| | | && it.OutDate.Value.Date.ToString("yyyy-MM-dd") == |
| | | DateTime.Now.Date.ToString("yyyy-MM-dd") |
| | | && it.BillTypeId == p_bill_type_id |
| | | && it.TransactionNo == p_transaction_no |
| | | && it.Status == 0) |
| | | .First(); |
| | | |
| | | Guid outId; |
| | | string outNo; |
| | | |
| | | if (existingOut == null) |
| | | { |
| | | // å建æ°çåºåºå |
| | | outId = Guid.NewGuid(); |
| | | outNo = BillNo.GetBillNo("INV_OUT_OTHER"); |
| | | |
| | | var mesItemQt = Db.Queryable<MesItemQt>() |
| | | .Where(it => it.Qtck == p_bill_no) |
| | | .First(); |
| | | |
| | | var newOut = new MesInvItemOuts |
| | | { |
| | | Guid = outId, |
| | | ItemOutNo = outNo, |
| | | TaskNo = p_bill_no, |
| | | Status = 0, |
| | | CreateBy = c_user, |
| | | CreateDate = DateTime.Now, |
| | | LastupdateBy = c_user, |
| | | LastupdateDate = DateTime.Now, |
| | | BillTypeId = p_bill_type_id, |
| | | TransactionNo = p_transaction_no, |
| | | DepotCode = stock.DepotsCode, |
| | | DepotId = stock.DepotsId.HasValue |
| | | ? (int)stock.DepotsId |
| | | : null, |
| | | OutPart = mesItemQt.Qt012, |
| | | FType = 0, |
| | | WorkNo = p_bill_no, |
| | | OutType = "å
¶ä»åºåº", |
| | | PbillNo = p_bill_no, |
| | | OutDate = DateTime.Now, |
| | | Nflag = 0, |
| | | Reason = mesItemQt.Qt010, |
| | | Remark = mesItemQt.Qt010 |
| | | }; |
| | | |
| | | commit += db.Insertable(newOut).IgnoreColumns(true) |
| | | .ExecuteCommand(); |
| | | } |
| | | else |
| | | { |
| | | outId = existingOut.Guid; |
| | | outNo = existingOut.ItemOutNo; |
| | | } |
| | | |
| | | // è·åéæåæç»ä¿¡æ¯ |
| | | qtDetail = Db.Queryable<MesItemQtDatall>() |
| | | .Where(it => |
| | | it.QtGuid == mesItemQt.Guid && |
| | | it.ItemId == stock.ItemId.ToString()) |
| | | .First(); |
| | | |
| | | if (qtDetail == null) |
| | | { |
| | | throw new Exception($"æªæ¾å°å¯¹åºçéæåæç»ä¿¡æ¯"); |
| | | } |
| | | |
| | | // æ£æ¥æ¯å¦å·²åå¨åºåºç©æè®°å½ |
| | | var existingOutItem = Db.Queryable<MesInvItemOutItems>() |
| | | .Where(it => |
| | | it.ItemOutId == outId && it.ItemId == barcode.ItemId) |
| | | .First(); |
| | | |
| | | if (existingOutItem == null) |
| | | { |
| | | // å建æ°çåºåºç©æè®°å½ |
| | | var newOutItem = new MesInvItemOutItems |
| | | { |
| | | Guid = Guid.NewGuid(), |
| | | ItemOutId = outId, |
| | | ItemNo = qtDetail.Qd002, |
| | | Quantity = stock.Quantity, |
| | | CreateBy = c_user, |
| | | CreateDate = DateTime.Now, |
| | | LastupdateBy = c_user, |
| | | LastupdateDate = DateTime.Now, |
| | | DepotCode = stock.DepotsCode, |
| | | TaskNo = p_bill_no, |
| | | WorkNo = p_bill_no, |
| | | QtOutId = qtDetail.Guid, |
| | | // WorkLine = qtDetail.Id, |
| | | // ErpItemNo = qtDetail.Qd012, |
| | | PbillNo = p_bill_no, |
| | | ItemId = !string.IsNullOrEmpty(qtDetail.ItemId) |
| | | ? long.Parse(qtDetail.ItemId) |
| | | : null, |
| | | FType = 0, |
| | | // Unit = qtDetail.Qd009 |
| | | }; |
| | | |
| | | commit += db.Insertable(newOutItem).IgnoreColumns(true) |
| | | .ExecuteCommand(); |
| | | } |
| | | else |
| | | { |
| | | // æ´æ°å·²åå¨çåºåºç©æè®°å½æ°é |
| | | commit += db.Updateable<MesInvItemOutItems>() |
| | | .SetColumns(it => |
| | | it.Quantity == (it.Quantity ?? 0) + stock.Quantity) |
| | | .Where(it => it.ItemOutId == outId && |
| | | it.ItemId == barcode.ItemId && |
| | | it.QtOutId == qtDetail.Guid) |
| | | .ExecuteCommand(); |
| | | } |
| | | |
| | | // å建åºåºæ¡ç æç»è®°å½ |
| | | var outCDetail = new MesInvItemOutCDetails |
| | | { |
| | | ItemOutId = outId, |
| | | ItemBarcode = stock.ItemBarcode, |
| | | ItemNo = stock.ItemNo, |
| | | LotNo = stock.LotNo, |
| | | Quantity = stock.Quantity, |
| | | ForceOutFlag = 0, |
| | | CreateBy = c_user, |
| | | CreateDate = DateTime.Now, |
| | | LastupdateBy = c_user, |
| | | LastupdateDate = DateTime.Now, |
| | | DepotCode = stock.DepotsCode, |
| | | DepotId = stock.DepotsId.HasValue |
| | | ? (int)stock.DepotsId |
| | | : null, |
| | | // DepotsCode = stock.DepotsCode, |
| | | // DepotSectionsCode = stock.DepotSectionsCode, |
| | | DepotSectionCode = stock.DepotSectionsCode, |
| | | BoardStyle = stock.BoardStyle, |
| | | TaskNo = p_bill_no, |
| | | WorkNo = p_bill_no, |
| | | // WorkLine = qtDetail.Id, |
| | | SuppNo = stock.SuppNo, |
| | | PbillNo = p_bill_no, |
| | | ItemId = !string.IsNullOrEmpty(qtDetail.ItemId) |
| | | ? long.Parse(qtDetail.ItemId) |
| | | : null |
| | | }; |
| | | |
| | | commit += db.Insertable(outCDetail).IgnoreColumns(true) |
| | | .ExecuteCommand(); |
| | | |
| | | |
| | | // æå
¥ä¸å¡æµæ°´è®°å½ |
| | | var business = new MesInvBusiness2 |
| | | { |
| | | Status = 1, |
| | | BillTypeId = p_bill_type_id, |
| | | TransactionCode = p_transaction_no.ToString(), |
| | | BusinessType = 1, |
| | | ItemBarcode = stock.ItemBarcode, |
| | | ItemNo = stock.ItemNo, |
| | | LotNo = stock.LotNo, |
| | | EpFlag = true, |
| | | Quantity = stock.Quantity, |
| | | FromInvDepotsCode = stock.DepotsCode, |
| | | FromInvDepotSectionsCode = stock.DepotSectionsCode, |
| | | Description = "å
¶ä»åºåº", |
| | | CreateBy = c_user, |
| | | CreateDate = DateTime.Now, |
| | | LastupdateBy = c_user, |
| | | LastupdateDate = DateTime.Now, |
| | | TaskNo = p_bill_no, |
| | | BillNo = outNo, |
| | | WorkNo = p_bill_no, |
| | | // WorkLine = qtDetail.Id, |
| | | SuppId = stock.SuppId, |
| | | SuppNo = stock.SuppNo, |
| | | ItemId = !string.IsNullOrEmpty(qtDetail.ItemId) |
| | | ? long.Parse(qtDetail.ItemId) |
| | | : null |
| | | }; |
| | | |
| | | commit += db.Insertable(business).IgnoreColumns(true) |
| | | .ExecuteCommand(); |
| | | |
| | | // å é¤åºåè®°å½ |
| | | commit += db.Deleteable<MesInvItemStocks>() |
| | | .Where(it => it.ItemBarcode == stock.ItemBarcode) |
| | | .ExecuteCommand(); |
| | | |
| | | // æ´æ°éæåæç»å·²å®ææ°é |
| | | commit += db.Updateable<MesItemQtDatall>() |
| | | .SetColumns(it => it.Qd008 == (it.Qd008 ?? 0) + stock.Quantity) |
| | | .Where(it => it.Guid == qtDetail.Guid) |
| | | .ExecuteCommand(); |
| | | |
| | | // æ£æ¥æç»æ¯å¦å®æ,妿宿忴æ°ç¶æ |
| | | if ((qtDetail.Qd007 ?? 0) - (qtDetail.Qd008 ?? 0) == stock.Quantity) |
| | | { |
| | | commit += db.Updateable<MesItemQtDatall>() |
| | | .SetColumns(it => it.Qd011 == 1) |
| | | .Where(it => it.Guid == qtDetail.Guid) |
| | | .ExecuteCommand(); |
| | | } |
| | | |
| | | mesItemQtDatalls = Db |
| | | .Queryable<MesItemQt, MesItemQtDatall, MesItems>( |
| | | (a, b, c) => new JoinQueryInfos( |
| | | JoinType.Left, a.Guid == b.QtGuid, |
| | | JoinType.Left, b.ItemId == c.Id.ToString())) |
| | | .Where((a, b, c) => a.Qtck == p_bill_no && |
| | | (b.Qd007 ?? 0) - (b.Qd008 ?? 0) > 0) |
| | | .OrderBy((a, b, c) => c.ItemNo) |
| | | .Select((a, b, c) => new MesItemQtDatall |
| | | { |
| | | Qd002 = b.Qd002, // æç»è¡å· |
| | | Qt011 = a.Qt011, // éæåå |
| | | ItemNo = c.ItemNo, // ç©æç¼å· |
| | | Qd007 = b.Qd007 ?? 0, // è®¡åæ°é |
| | | Qd008 = b.Qd008 ?? 0 // 已宿æ°é |
| | | }) |
| | | .ToList(); |
| | | |
| | | // å¦ææ²¡æå¾
å¤çæç»ï¼æ´æ°éæåç¶æä¸ºå·²å®æ |
| | | if (CollectionUtil.IsNullOrEmpty(mesItemQtDatalls)) |
| | | { |
| | | db.Updateable<MesItemQt>() |
| | | .SetColumns(it => it.Qt014 == true) |
| | | .Where(it => it.Qtck == p_bill_no) |
| | | .ExecuteCommand(); |
| | | } |
| | | |
| | | // æå»ºè¿åæ¶æ¯ |
| | | mess = $"æ«ç æåï¼æ¡ç {p_item_barcode} æ°é {stock.Quantity} å·²åºåº"; |
| | | |
| | | query.barcode = null; |
| | | query.itemNo = stock.ItemNo; |
| | | query.Num = stock.Quantity; |
| | | query.Fum = null; |
| | | |
| | | if (commit < 5) |
| | | { |
| | | throw new Exception("æ´æ°å¤±è´¥"); |
| | | } |
| | | |
| | | return commit; |
| | | }); |
| | | |
| | | return (query, mesItemQtDatalls, mess); |
| | | } |
| | | |
| | | public (WarehouseQuery form, List<MesItemQtDatall> item, string message) |
| | | PrintQtckBarcode( |
| | | WarehouseQuery query) |
| | | { |
| | | var p_bill_no = query.billNo; |
| | | var p_old_barcode = query.barcode; |
| | | var c_user = query.userName; |
| | | var p_qty = query.Fum; |
| | | var p_bill_type_id = 200; |
| | | var p_transaction_no = 202; |
| | | |
| | | // æ£æ¥åæ®å·æ¯å¦ä¸ºç©º |
| | | if (string.IsNullOrEmpty(p_bill_no)) |
| | | { |
| | | throw new Exception("请éååæ®å·ï¼"); |
| | | } |
| | | |
| | | // æ£æ¥æ°éæ¯å¦ææ |
| | | if (p_qty <= 0) |
| | | { |
| | | throw new Exception("请è¾å
¥æ£ç¡®çåææ°éï¼"); |
| | | } |
| | | |
| | | // è·ååºåæ¡ç ä¿¡æ¯ |
| | | var stock = Db.Queryable<MesInvItemStocks>() |
| | | .Where(it => it.ItemBarcode == p_old_barcode && it.Quantity > 0) |
| | | .First(); |
| | | |
| | | if (stock == null) |
| | | { |
| | | throw new Exception($"åºå䏿 æ¤æ¡ç ï¼è¯·æ£æ¥æ¡ç æ¯å¦æªå
¥åºæå·²åºåºï¼{p_old_barcode}"); |
| | | } |
| | | |
| | | if (string.IsNullOrEmpty(stock.DepotsCode)) |
| | | { |
| | | throw new Exception($"è°æ¨ä¸çæ¡ç ä¸å¯åæ,请å
å®æè°æ¨åæ®{p_old_barcode}"); |
| | | } |
| | | |
| | | if (stock.DepotsCode is "S006" or "S005") |
| | | { |
| | | throw new Exception($"æ¡ç å¨ä¸è¯åä»ä¸ ä¸å¯åæ{p_old_barcode}"); |
| | | } |
| | | |
| | | // è·åæ¡ç ä¿¡æ¯ |
| | | var barcode = Db.Queryable<MesInvItemBarcodes>() |
| | | .Where(it => it.ItemBarcode == p_old_barcode) |
| | | .First(); |
| | | |
| | | if (barcode == null) |
| | | { |
| | | throw new Exception($"mesä¸ä¸å卿¤æ¡ç ï¼è¯·æ ¸å¯¹ï¼{p_old_barcode}"); |
| | | } |
| | | |
| | | // è·åéæåä¿¡æ¯ |
| | | var mesItemQt = Db.Queryable<MesItemQt>() |
| | | .Where(it => it.Qtck == p_bill_no) |
| | | .First(); |
| | | |
| | | if (mesItemQt == null) |
| | | { |
| | | throw new Exception($"å
¶ä»åºåºç³è¯·å {p_bill_no} ä¸åå¨ï¼è¯·ç¡®è®¤ï¼"); |
| | | } |
| | | |
| | | if (mesItemQt.Qt011 != stock.DepotsCode) |
| | | { |
| | | throw new Exception( |
| | | $"æ«ç åºè´§ä»åº{stock.DepotsCode}ä¸å
¶ä»åºåºç³è¯·ä»åº{mesItemQt.Qt011}ä¸ä¸è´ï¼è¯·æ ¸å¯¹ï¼"); |
| | | } |
| | | |
| | | // è·åéæåæç» |
| | | var qtDetail = Db.Queryable<MesItemQtDatall>() |
| | | .Where(it => |
| | | it.QtGuid == mesItemQt.Guid && |
| | | it.ItemId == stock.ItemId.ToString()) |
| | | .First(); |
| | | |
| | | if (qtDetail == null) |
| | | { |
| | | throw new Exception("æ«ç ç©æéæ¬æ¬¡åºåºç³è¯·ç©æï¼è¯·æ ¸å¯¹ï¼"); |
| | | } |
| | | |
| | | var remainingQty = (qtDetail.Qd007 ?? 0) - (qtDetail.Qd008 ?? 0); |
| | | |
| | | if (remainingQty <= 0) |
| | | { |
| | | throw new Exception($"ç³è¯·ç©æ {barcode.ItemNo} å·²åºåºå®æï¼"); |
| | | } |
| | | |
| | | if (p_qty > remainingQty) |
| | | { |
| | | throw new Exception( |
| | | $"è¾å
¥çæåæ°é {p_qty} ä¸å¯å¤§äºå©ä½éåæ°é {remainingQty} 请修æ¹"); |
| | | } |
| | | |
| | | var totalQty = Db.Queryable<MesInvItemStocks>() |
| | | .Where(it => it.ItemBarcode == p_old_barcode && it.Quantity > 0) |
| | | .Sum(it => it.Quantity); |
| | | |
| | | if (totalQty < p_qty) |
| | | { |
| | | throw new Exception($"è¾å
¥çåææ°é {p_qty} ä¸å¯å¤§äºæ¡ç æ°é {totalQty} 请修æ¹"); |
| | | } |
| | | |
| | | var message = string.Empty; |
| | | var mesItemQtDatalls = new List<MesItemQtDatall>(); |
| | | var newBarcode = string.Empty; |
| | | |
| | | UseTransaction(db => |
| | | { |
| | | var commit = 0; |
| | | |
| | | // 妿éè¦æåæ¡ç |
| | | if (totalQty > p_qty) |
| | | { |
| | | var mesItems = db.Queryable<MesItems>() |
| | | .Where(s => s.Id == stock.ItemId).First(); |
| | | // çææ°æ¡ç å· |
| | | newBarcode = BillNo.GetBillNo("TMBH(æ¡ç ç¼å·)", mesItems.ItemNo); |
| | | |
| | | // æå
¥æ°æ¡ç è®°å½ |
| | | commit += db.Insertable(new MesInvItemBarcodes |
| | | { |
| | | Guid = Guid.NewGuid(), |
| | | ItemBarcode = newBarcode, |
| | | ItemNo = barcode.ItemNo, |
| | | LotNo = barcode.LotNo, |
| | | Quantity = p_qty, |
| | | TaskNo = barcode.TaskNo, |
| | | CreateBy = c_user, |
| | | CreateDate = DateTime.Now, |
| | | LastupdateBy = c_user, |
| | | LastupdateDate = DateTime.Now, |
| | | OldItemBarcode = p_old_barcode, |
| | | Mblnr = barcode.Mblnr, |
| | | Zeile = barcode.Zeile, |
| | | Barcodestatus = false, |
| | | Oldqty = Convert.ToInt64(p_qty.Value), |
| | | Unit = barcode.Unit, |
| | | LotDate = barcode.LotDate, |
| | | Memo = "å
¶ä»åºåºæå", |
| | | SuppNo = barcode.SuppNo, |
| | | ItemSname = barcode.ItemSname, |
| | | TrLotno = barcode.TrLotno, |
| | | BillNo = barcode.BillNo, |
| | | UrgentFlag = barcode.UrgentFlag, |
| | | InsDate = barcode.InsDate, |
| | | WorkNo = barcode.WorkNo, |
| | | WorkLine = barcode.WorkLine, |
| | | ComeFlg = 5, |
| | | EbelnK3id = barcode.EbelnK3id, |
| | | LineK3id = barcode.LineK3id, |
| | | ItemId = barcode.ItemId, |
| | | }).IgnoreColumns(true).ExecuteCommand(); |
| | | |
| | | // æ´æ°åæ¡ç æ°é |
| | | commit += db.Updateable<MesInvItemBarcodes>() |
| | | .SetColumns(it => it.Quantity == it.Quantity - p_qty) |
| | | .Where(it => it.ItemBarcode == p_old_barcode) |
| | | .ExecuteCommand(); |
| | | |
| | | // æ´æ°ååºåæ°é |
| | | commit += db.Updateable<MesInvItemStocks>() |
| | | .SetColumns(it => it.Quantity == it.Quantity - p_qty) |
| | | .Where(it => it.ItemBarcode == p_old_barcode) |
| | | .ExecuteCommand(); |
| | | |
| | | // æå
¥æ°åºåè®°å½ |
| | | commit += db.Insertable(new MesInvItemStocks |
| | | { |
| | | Guid = Guid.NewGuid(), |
| | | ItemBarcode = newBarcode, |
| | | ItemNo = stock.ItemNo, |
| | | LotNo = stock.LotNo, |
| | | Quantity = p_qty, |
| | | DepotsCode = stock.DepotsCode, |
| | | DepotSectionsCode = stock.DepotSectionsCode, |
| | | CheckDate = stock.CheckDate, |
| | | IndepDate = stock.IndepDate, |
| | | IqcStatus = stock.IqcStatus, |
| | | WorkNo = stock.WorkNo, |
| | | WorkLine = stock.WorkLine, |
| | | SuppNo = stock.SuppNo, |
| | | BillNo = stock.BillNo, |
| | | EbelnK3id = stock.EbelnK3id, |
| | | LineK3id = stock.LineK3id, |
| | | ItemId = stock.ItemId, |
| | | }).IgnoreColumns(true).ExecuteCommand(); |
| | | |
| | | |
| | | // æå
¥ä¸å¡æµæ°´è®°å½ |
| | | commit += db.Insertable(new MesInvBusiness2 |
| | | { |
| | | Status = 1, |
| | | BillTypeId = p_bill_type_id, |
| | | TransactionCode = p_transaction_no.ToString(), |
| | | BusinessType = 1, |
| | | TaskNo = barcode.TaskNo, |
| | | BillNo = barcode.BillNo, |
| | | ItemBarcode = newBarcode, |
| | | ItemNo = barcode.ItemNo, |
| | | LotNo = barcode.LotNo, |
| | | EpFlag = true, |
| | | Quantity = p_qty, |
| | | FromInvDepotsCode = null, |
| | | FromInvDepotSectionsCode = null, |
| | | ToInvDepotsCode = stock.DepotsCode, |
| | | ToInvDepotSectionsCode = stock.DepotSectionsCode, |
| | | Description = "å
¶ä»åºåºæ¡ç æå", |
| | | CreateBy = c_user, |
| | | CreateDate = DateTime.Now, |
| | | LastupdateBy = c_user, |
| | | LastupdateDate = DateTime.Now, |
| | | Factory = "1000", |
| | | Company = "1000", |
| | | WorkNo = stock.WorkNo, |
| | | WorkLine = stock.WorkLine, |
| | | EbelnK3id = stock.EbelnK3id, |
| | | LineK3id = stock.LineK3id, |
| | | SuppId = stock.SuppId, |
| | | SuppNo = stock.SuppNo, |
| | | ItemId = stock.ItemId, |
| | | }).IgnoreColumns(true).ExecuteCommand(); |
| | | } |
| | | else |
| | | { |
| | | newBarcode = p_old_barcode; |
| | | } |
| | | |
| | | |
| | | // è·åæå建åºåºå |
| | | var outRecord = db.Queryable<MesInvItemOuts>() |
| | | .Where(it => it.PbillNo == p_bill_no |
| | | && it.DepotCode == stock.DepotsCode |
| | | && it.OutDate.Value.Date.ToString("yyyy-MM-dd") == |
| | | DateTime.Now.Date.ToString("yyyy-MM-dd") |
| | | && it.BillTypeId == p_bill_type_id |
| | | && it.TransactionNo == p_transaction_no |
| | | && it.Status == 0) |
| | | .First(); |
| | | |
| | | var outId = Guid.Empty; |
| | | var outNo = string.Empty; |
| | | |
| | | if (outRecord == null) |
| | | { |
| | | outId = Guid.NewGuid(); |
| | | outNo = BillNo.GetBillNo("INV_OUT_OTHER"); |
| | | // å建æ°åºåºå |
| | | commit += db.Insertable(new MesInvItemOuts |
| | | { |
| | | Guid = outId, |
| | | ItemOutNo = $"OUT-{DateTime.Now:yyyyMMddHHmmss}", |
| | | TaskNo = p_bill_no, |
| | | Status = 0, |
| | | CreateBy = c_user, |
| | | CreateDate = DateTime.Now, |
| | | LastupdateBy = c_user, |
| | | LastupdateDate = DateTime.Now, |
| | | BillTypeId = p_bill_type_id, |
| | | TransactionNo = p_transaction_no, |
| | | DepotCode = stock.DepotsCode, |
| | | OutPart = mesItemQt.Qt012, |
| | | FType = 0, |
| | | WorkNo = p_bill_no, |
| | | OutType = "å
¶ä»åºåº", |
| | | BusinessType = "", |
| | | PbillNo = p_bill_no, |
| | | OutDate = DateTime.Now, |
| | | Nflag = 0, |
| | | Reason = mesItemQt.Qt010, |
| | | }).ExecuteReturnIdentity(); |
| | | outNo = $"OUT-{DateTime.Now:yyyyMMddHHmmss}"; |
| | | } |
| | | else |
| | | { |
| | | outId = outRecord.Guid; |
| | | outNo = outRecord.ItemOutNo; |
| | | } |
| | | |
| | | // æ£æ¥å¹¶æ´æ°åºåºåæç» |
| | | var outItem = db.Queryable<MesInvItemOutItems>() |
| | | .Where(it => |
| | | it.ItemOutId == outId && it.ItemId == barcode.ItemId) |
| | | .First(); |
| | | |
| | | if (outItem == null) |
| | | { |
| | | // æå
¥æ°æç» |
| | | db.Insertable(new MesInvItemOutItems |
| | | { |
| | | ItemOutId = outId, |
| | | ItemNo = qtDetail.Qd002, |
| | | Quantity = p_qty, |
| | | CreateBy = c_user, |
| | | CreateDate = DateTime.Now, |
| | | LastupdateBy = c_user, |
| | | LastupdateDate = DateTime.Now, |
| | | DepotCode = stock.DepotsCode, |
| | | TaskNo = p_bill_no, |
| | | WorkNo = p_bill_no, |
| | | QtOutId = qtDetail.Guid, |
| | | // WorkLine = qtDetail.Id.ToString(), |
| | | ErpItemNo = qtDetail.ItemNo, |
| | | PbillNo = p_bill_no, |
| | | ItemId = !string.IsNullOrEmpty(qtDetail.ItemId) |
| | | ? long.Parse(qtDetail.ItemId) |
| | | : null, |
| | | FType = 0, |
| | | // Unit = qtDetail.Qd009 |
| | | }).ExecuteCommand(); |
| | | } |
| | | else |
| | | { |
| | | // æ´æ°æç»æ°é |
| | | db.Updateable<MesInvItemOutItems>() |
| | | .SetColumns(it => |
| | | it.Quantity == (it.Quantity ?? 0) + p_qty) |
| | | .Where(it => |
| | | it.ItemOutId == outId && |
| | | it.ItemId == stock.ItemId && |
| | | it.QtOutId == qtDetail.Guid) |
| | | .ExecuteCommand(); |
| | | } |
| | | |
| | | // æå
¥åºåºæç» |
| | | db.Insertable(new MesInvItemOutCDetails |
| | | { |
| | | ItemOutId = outId, |
| | | ItemBarcode = newBarcode, |
| | | ItemNo = stock.ItemNo, |
| | | LotNo = stock.LotNo, |
| | | Quantity = p_qty, |
| | | ForceOutFlag = 0, |
| | | CreateBy = c_user, |
| | | CreateDate = DateTime.Now, |
| | | LastupdateBy = c_user, |
| | | LastupdateDate = DateTime.Now, |
| | | DepotCode = stock.DepotsCode, |
| | | DepotSectionCode = stock.DepotSectionsCode, |
| | | Factory = "1000", |
| | | Company = "1000", |
| | | BoardStyle = stock.BoardStyle, |
| | | TaskNo = p_bill_no, |
| | | WorkNo = p_bill_no, |
| | | // WorkLine = qtDetail.Id.ToString(), |
| | | SuppNo = stock.SuppNo, |
| | | PbillNo = p_bill_no, |
| | | ItemId = !string.IsNullOrEmpty(qtDetail.ItemId) |
| | | ? long.Parse(qtDetail.ItemId) |
| | | : null |
| | | }).IgnoreColumns(true).ExecuteCommand(); |
| | | |
| | | // æå
¥ä¸å¡è®°å½ |
| | | db.Insertable(new MesInvBusiness2 |
| | | { |
| | | Status = 1, |
| | | BillTypeId = p_bill_type_id, |
| | | TransactionCode = p_transaction_no.ToString(), |
| | | BusinessType = 1, |
| | | ItemBarcode = newBarcode, |
| | | ItemNo = stock.ItemNo, |
| | | LotNo = stock.LotNo, |
| | | EpFlag = true, |
| | | Quantity = p_qty, |
| | | FromInvDepotsCode = stock.DepotsCode, |
| | | FromInvDepotSectionsCode = stock.DepotSectionsCode, |
| | | Description = "å
¶ä»åºåº", |
| | | CreateBy = c_user, |
| | | CreateDate = DateTime.Now, |
| | | LastupdateBy = c_user, |
| | | LastupdateDate = DateTime.Now, |
| | | Factory = "1000", |
| | | Company = "1000", |
| | | TaskNo = p_bill_no, |
| | | BillNo = outNo, |
| | | WorkNo = p_bill_no, |
| | | // WorkLine = qtDetail.Id.ToString(), |
| | | SuppId = stock.SuppId, |
| | | SuppNo = stock.SuppNo, |
| | | ItemId = !string.IsNullOrEmpty(qtDetail.ItemId) |
| | | ? long.Parse(qtDetail.ItemId) |
| | | : null |
| | | }).IgnoreColumns(true).ExecuteCommand(); |
| | | |
| | | // å é¤åºåè®°å½ |
| | | db.Deleteable<MesInvItemStocks>() |
| | | .Where(it => it.ItemBarcode == newBarcode) |
| | | .ExecuteCommand(); |
| | | |
| | | // æ´æ°éæåæç» |
| | | db.Updateable<MesItemQtDatall>() |
| | | .SetColumns(it => it.Qd008 == (it.Qd008 ?? 0) + (int)p_qty) |
| | | .SetColumnsIF( |
| | | (qtDetail.Qd007 ?? 0) - (qtDetail.Qd008 ?? 0) == p_qty, |
| | | it => it.Qd011 == 1) |
| | | .Where(it => it.Guid == qtDetail.Guid) |
| | | .ExecuteCommand(); |
| | | |
| | | // æ£æ¥æ¯å¦æææç»é½å·²å®æ |
| | | var hasUnfinished = db.Queryable<MesItemQtDatall>() |
| | | .Where(it => it.Qd011 == 0) |
| | | .Any(); |
| | | |
| | | // å¦ææææç»å®æï¼æ´æ°éæåç¶æ |
| | | if (!hasUnfinished) |
| | | { |
| | | db.Updateable<MesItemQt>() |
| | | .SetColumns(it => it.Qt014 == true) |
| | | .Where(it => it.Qtck == p_bill_no) |
| | | .ExecuteCommand(); |
| | | } |
| | | |
| | | // è·åå©ä½å¾
å¤çæç» |
| | | mesItemQtDatalls = db |
| | | .Queryable<MesItemQt, MesItemQtDatall, MesItems>( |
| | | (a, b, c) => new JoinQueryInfos( |
| | | JoinType.Left, a.Guid == b.QtGuid, |
| | | JoinType.Left, b.ItemId == c.Id.ToString())) |
| | | .Where((a, b, c) => a.Qtck == p_bill_no && |
| | | (b.Qd007 ?? 0) - (b.Qd008 ?? 0) > 0) |
| | | .OrderBy((a, b, c) => c.ItemNo) |
| | | .Select((a, b, c) => new MesItemQtDatall |
| | | { |
| | | Qd002 = b.Qd002, |
| | | Qt011 = a.Qt011, |
| | | ItemNo = c.ItemNo, |
| | | Qd007 = b.Qd007 ?? 0, |
| | | Qd008 = b.Qd008 ?? 0 |
| | | }) |
| | | .ToList(); |
| | | |
| | | message = $"æä½æåï¼æåæ¡ç :{newBarcode} æ°é:{p_qty}å·²åºåº"; |
| | | |
| | | return commit; |
| | | }); |
| | | return (query, mesItemQtDatalls, message); |
| | | } |
| | | } |