| | |
| | | else if (outorder.order_type == "1") // æ£å¸¸åºåºå |
| | | { |
| | | 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); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |