| | |
| | | |
| | | foreach (var outorder in newOutOrders) |
| | | { |
| | | bool skipOrder = false; // æ è®°æ¯å¦è·³è¿è¯¥åºåºå |
| | | |
| | | // 妿è¿ä¸ªåºåºåç±»åä¸çäº1ï¼å±äºåºåºéè´§ï¼è¦å
¥è´§ä¸æ¸¸ä¼ è¿æ¥çæ°éä¸ºè´æ°ï¼ |
| | | if (outorder.order_type != "1") |
| | | if (outorder.order_type == "1") // æ£å¸¸åºåºå |
| | | { |
| | | CreateOutboundOrder(outorder);//å建åºåºåãå¤çåºåãæ·»å åºåºä»»å¡ |
| | | } |
| | | else if (outorder.order_type == "2")//åºåºéè´§ |
| | | { |
| | | // å建åºåºéè´§å - è¿ééè¦æ ¹æ®ä¸å¡é»è¾å®ç° |
| | | // ææ¶è·³è¿æå®ç°éè´§é»è¾ |
| | | continue; |
| | | //continue; |
| | | #region è½¬æ¢æå
¥åºå |
| | | UpstreamOrderInfo order = new UpstreamOrderInfo() |
| | | { |
| | | order_no = outorder.order_no, |
| | | order_type = outorder.order_type, |
| | | warehouse_no = outorder.warehouse_no, |
| | | details = new List<UpstreamOrderDetail>() |
| | | }; |
| | | foreach (var item in outorder.details) |
| | | { |
| | | UpstreamOrderDetail detail = new UpstreamOrderDetail() |
| | | { |
| | | batch_num = item.batch_num, |
| | | goods_no = item.goods_no, |
| | | order_qty = item.order_qty, |
| | | exp_date = item.exp_date, |
| | | }; |
| | | order.details.Add(detail); |
| | | } |
| | | responseContent = _cabinOrderServices.CreateInboundOrder(order); |
| | | List<Dt_CabinOrder>? dt_CabinOrders = responseContent.Data as List<Dt_CabinOrder>; |
| | | if (dt_CabinOrders != null && dt_CabinOrders.Count > 0) |
| | | BaseDal.Db.InsertNav(dt_CabinOrders).Include(x => x.Details).ExecuteCommand(); |
| | | #endregion |
| | | } |
| | | else if (outorder.order_type == "1") // æ£å¸¸åºåºå |
| | | else if (outorder.order_type == "3")//æ¥æåºåº |
| | | { |
| | | CreateOutboundOrder(outorder);//å建åºåºåãå¤çåºåãæ·»å åºåºä»»å¡ |
| | | // æé¤ç¹æ®è¯å,ç¹æ®è¯åç´æ¥æå
¥ |
| | | if (outorder.warehouse_no != "001" && (outorder.warehouse_no == "010" || outorder.warehouse_no == "003" || outorder.warehouse_no == "017")) |
| | | { |
| | | var entityOrder = new Dt_DeliveryOrder |
| | | { |
| | | Out_no = outorder.order_no, |
| | | Out_type = outorder.order_type, |
| | | Client_no = outorder.client_no, |
| | | Client_name = outorder.client_name, |
| | | Account_time = outorder.account_time, |
| | | Warehouse_no = outorder.warehouse_no, |
| | | OutStatus = "æ°å»º", |
| | | Details = outorder.details.Select(d => new Dt_DeliveryOrderDetail |
| | | { |
| | | Goods_no = d.goods_no, |
| | | Order_qty = Math.Abs(d.order_qty), // åºåºæ°éè½¬ä¸ºæ£æ° |
| | | Batch_num = d.batch_num, |
| | | Exp_date = d.exp_date, |
| | | OotDetailStatus = "æ°å»º", |
| | | Status = 2, // padå¹³åºï¼æ é忥 |
| | | }).ToList() |
| | | }; |
| | | _DeliveryOrders.Add(entityOrder); |
| | | } |
| | | else // 常è§è¯å001æ¿ç»ç«åº,è¦æ¯ææ´ç®±å°±ç»å¹³åº |
| | | { |
| | | var entityOrder = new Dt_DeliveryOrder |
| | | { |
| | | Out_no = outorder.order_no, |
| | | Out_type = outorder.order_type, |
| | | Client_no = outorder.client_no, |
| | | Client_name = outorder.client_name, |
| | | Account_time = outorder.account_time, |
| | | Warehouse_no = outorder.warehouse_no, |
| | | OutStatus = "æ°å»º", |
| | | Details = new List<Dt_DeliveryOrderDetail>() |
| | | }; |
| | | |
| | | // éååºåºæç» |
| | | foreach (var item in outorder.details) |
| | | { |
| | | // å°ä¸æ¸¸åºåºæ°éè½¬ä¸ºæ£æ° |
| | | decimal orderQty = Math.Abs((decimal)item.order_qty); |
| | | |
| | | #region æ ¹æ®ç©æç¼ç æ¥è¯¢ç©æä¿¡æ¯ |
| | | var medication = BaseDal.Db.Queryable<Dt_MaterielInfo>() |
| | | .Where(m => m.MaterielCode == item.goods_no) |
| | | .First(); |
| | | |
| | | // å¦æç©æä¿¡æ¯ä¸åå¨ï¼è·³è¿æ´ä¸ªåºåºå |
| | | if (medication == null) |
| | | { |
| | | skipOrder = true; |
| | | Console.WriteLine($"è·³åºå¤åºå {outorder.order_no}ï¼åå ï¼æªæ¾å°åå [{item.goods_no}] çç©æä¿¡æ¯ã"); |
| | | break; |
| | | } |
| | | |
| | | // è¥ç©æä¸å卿 MaterielSourceType 为空ï¼åè·³è¿æ´ä¸ªåºåºå |
| | | if (medication == null || !Enum.IsDefined(typeof(MaterielSourceTypeEnum), medication.MaterielSourceType)) |
| | | { |
| | | skipOrder = true; |
| | | break; |
| | | } |
| | | #endregion |
| | | |
| | | /// æ ¹æ®ç©æä¿¡æ¯å¤§å°ä»¶å±æ§åºåæ¯å¦ä»ç«åºåºåº // 大件ä»å¹³åºåºåº |
| | | if (medication.MaterielSourceType == MaterielSourceTypeEnum.PurchasePart) // å¦æç©ææ¯å¤§ä»¶ |
| | | { |
| | | var orderDetail = new Dt_DeliveryOrderDetail() |
| | | { |
| | | Reservoirarea = outorder.warehouse_no, |
| | | Goods_no = item.goods_no, |
| | | Order_qty = orderQty, |
| | | Batch_num = item.batch_num, |
| | | Exp_date = item.exp_date, |
| | | OotDetailStatus = "æ°å»º", |
| | | Status = 2 // å¹³åºï¼æ é忥 |
| | | }; |
| | | entityOrder.Details.Add(orderDetail); |
| | | } |
| | | else |
| | | { |
| | | Dt_DeliveryOrderDetail orderDetail = null; |
| | | |
| | | // è®¡ç®æ´ç®±åæ£ä»¶æ°é |
| | | var ys = orderQty % medication.BoxQty; // ä¸è½æ´é¤ç®±è§çæ£ä»¶æ° |
| | | var xs = (int)(orderQty / medication.BoxQty); // æ´ç®±æ°éï¼ä¿çæ´æ°ï¼ |
| | | |
| | | #region ä»ç«åºåºåºæ£ä»¶ |
| | | |
| | | #region 夿æ¯å¦ææ£ä»¶ |
| | | if (ys > 0 && medication.Business_qty >= ys) |
| | | { |
| | | orderDetail = new Dt_DeliveryOrderDetail() |
| | | { |
| | | Reservoirarea = outorder.warehouse_no, |
| | | Goods_no = item.goods_no, |
| | | Order_qty = ys, |
| | | Batch_num = item.batch_num, |
| | | Exp_date = item.exp_date, |
| | | OotDetailStatus = "æ°å»º", |
| | | Status = 0 // ç«åºï¼éè¦åæ¥ç»WCS |
| | | }; |
| | | medication.Business_qty -= ys; |
| | | } |
| | | #endregion |
| | | |
| | | #region 夿ç«åºåºåæ¯å¦è¶³å¤åºæ´ç®± |
| | | while (medication.Business_qty >= medication.BoxQty && xs > 0) |
| | | { |
| | | xs--; |
| | | if (orderDetail == null) |
| | | { |
| | | orderDetail = new Dt_DeliveryOrderDetail() |
| | | { |
| | | Reservoirarea = outorder.warehouse_no, |
| | | Goods_no = item.goods_no, |
| | | Order_qty = medication.BoxQty, |
| | | Batch_num = item.batch_num, |
| | | Exp_date = item.exp_date, |
| | | OotDetailStatus = "æ°å»º", |
| | | Status = 0 // ç«åº |
| | | }; |
| | | medication.Business_qty -= medication.BoxQty; |
| | | } |
| | | else |
| | | { |
| | | orderDetail.Order_qty += medication.BoxQty; |
| | | medication.Business_qty -= medication.BoxQty; |
| | | } |
| | | } |
| | | |
| | | if (orderDetail != null) |
| | | entityOrder.Details.Add(orderDetail); |
| | | #endregion |
| | | |
| | | #endregion |
| | | |
| | | #region å©ä½æ´ä»¶ä»å¹³åºåºåº |
| | | if (xs > 0) |
| | | { |
| | | orderDetail = new Dt_DeliveryOrderDetail() |
| | | { |
| | | Reservoirarea = outorder.warehouse_no, |
| | | Goods_no = item.goods_no, |
| | | Order_qty = medication.BoxQty * xs, |
| | | Batch_num = item.batch_num, |
| | | Exp_date = item.exp_date, |
| | | OotDetailStatus = "æ°å»º", |
| | | Status = 2 // å¹³åº |
| | | }; |
| | | entityOrder.Details.Add(orderDetail); |
| | | } |
| | | #endregion |
| | | } |
| | | |
| | | // æ´æ°ç©æä¿¡æ¯ |
| | | _basicService.MaterielInfoService.Repository.UpdateData(medication); |
| | | |
| | | } |
| | | |
| | | // å¦æè·³è¿è¯¥åï¼åç´æ¥continueï¼ä¸ä¿å |
| | | if (skipOrder) |
| | | { |
| | | Console.WriteLine($"è·³åºå¤åºå {outorder.order_no}ï¼å 为å卿ªå®ä¹ç©æå±æ§çååã"); |
| | | continue; |
| | | } |
| | | |
| | | // ç¡®ä¿åºåºåææç»ææ·»å |
| | | if (entityOrder.Details.Any()) |
| | | { |
| | | _DeliveryOrders.Add(entityOrder); |
| | | orderNos.Add(outorder.order_no); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | // æ¹éæå
¥åºåºååæç» |
| | | if (_DeliveryOrders.Any()) |
| | | { |
| | | BaseDal.Db.InsertNav(_DeliveryOrders).Include(x => x.Details).ExecuteCommand(); |
| | | } |
| | | //if (_DeliveryOrders.Any()) |
| | | //{ |
| | | // BaseDal.Db.InsertNav(_DeliveryOrders).Include(x => x.Details).ExecuteCommand(); |
| | | //} |
| | | //ä¸ååºåºåä»»å¡ç»wcs |
| | | |
| | | |
| | | Db.Ado.CommitTran(); |
| | | var tex = CreateSupplyTask(order_no); |
| | | if (!tex) |
| | | { |
| | | return responseContent.Error("å建ä¾åºä»»å¡å¤±è´¥"); |
| | | } |
| | | //var tex = CreateSupplyTask(order_no); |
| | | //if (!tex) |
| | | //{ |
| | | // return responseContent.Error("å建ä¾åºä»»å¡å¤±è´¥"); |
| | | //} |
| | | return responseContent.OK($"忥åºåºåæåï¼å
±{_DeliveryOrders.Count}æ¡"); |
| | | } |
| | | catch (Exception ex) |
| | |
| | | } |
| | | #endregion |
| | | if (supplyTask.WarehouseCode == WarehouseEnum.ç«åº.ObjToInt().ToString("000")) |
| | | CreateAllocatInOut(materielInfo);//åå»ºè°æ¨ä»»å¡ |
| | | { |
| | | materielInfo.Business_qty -= supplyTask.StockQuantity; |
| | | _basicService.MaterielInfoService.Repository.UpdateData(materielInfo); |
| | | if (materielInfo.Business_qty < materielInfo.MinQty) |
| | | CreateAllocatInOut(materielInfo);//åå»ºè°æ¨ä»»å¡ |
| | | } |
| | | _unitOfWorkManage.CommitTran(); |
| | | #endregion |
| | | content.OK(); |