| | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// wcsåä¼ ç»æè°ç¨æçæ¹æ³ |
| | | /// wcsåä¼ ç»æè°ç¨æçæ¹æ³ ä¸ç®¡æ¯å
¥åº åºåº çç¹é½ä¼è°ç¨è¿ä¸ªæ¥å£ |
| | | /// </summary> |
| | | /// <param name="request"></param> |
| | | /// <returns></returns> |
| | | //public ApiResponse<Dt_Inventory> OrderFeedback(EdiOrderCallbackRequest request) |
| | | //{ |
| | | // try |
| | | // { |
| | | // if (request == null || request.details == null || !request.details.Any()) |
| | | // { |
| | | // return new ApiResponse<Dt_Inventory> { code = "500", msg = "请æ±åæ°æ æ" }; |
| | | // } |
| | | // BaseDal.Db.Ado.BeginTran();//å¼å¯äºå¡ |
| | | // foreach (var detail in request.details) |
| | | // { |
| | | // // å
æ¥åºåæ¯å¦åå¨ï¼æç
§äº§åç¼å·åæ¹æ¬¡æ¥å¯»æ¾ï¼ |
| | | // var entity = BaseDal.Db.Queryable<Dt_Inventory>() |
| | | // .First(x => x.Goods_no == detail.productCode && x.Batch_num == detail.batchNo); |
| | | // //å°éåä¸çæ°éè¿è¡ç´¯å |
| | | // // å®å
¨è½¬æ¢ |
| | | |
| | | // //æ£å¸¸åºå
¥åº |
| | | // decimal orderQty = detail.orderDetails?.Sum(x => decimal.TryParse(x.quantity, out var q) ? q : 0) ?? 0; |
| | | // //çç¹çäº |
| | | // decimal diffQty = detail.stocktakingDetails?.Sum(x => Convert.ToDecimal(x.differenceQuantity)) ?? 0; |
| | | // if (entity == null) |
| | | // { |
| | | // // 妿ä¸åå¨ï¼æ°å»ºä¸æ¡ |
| | | // entity = new Dt_Inventory |
| | | // { |
| | | // Goods_no = detail.productCode ?? detail.productName, |
| | | // Reservoirarea = "é»è®¤åºåº", |
| | | // Batch_num = detail.batchNo, |
| | | // //ä¸å¡åºå |
| | | // Business_qty = 0, |
| | | // //å®é
åºå |
| | | // Actual_qty = 0 |
| | | // }; |
| | | // } |
| | | |
| | | // switch (request.orderType) |
| | | // { |
| | | // case "1": // å
¥åº |
| | | // entity.Business_qty += orderQty; |
| | | // entity.Actual_qty += orderQty; |
| | | // break; |
| | | |
| | | // case "2": // åºåº |
| | | // entity.Business_qty -= orderQty; |
| | | // entity.Actual_qty -= orderQty; |
| | | // if (entity.Business_qty < 0) entity.Business_qty = 0; // å¯éï¼é²æ¢è´æ° |
| | | // if (entity.Actual_qty < 0) entity.Actual_qty = 0; |
| | | // break; |
| | | |
| | | // case "3": // çç¹ |
| | | // if (detail.stocktakingDetails != null && detail.stocktakingDetails.Any()) |
| | | // { |
| | | // foreach (var stock in detail.stocktakingDetails) |
| | | // { |
| | | // //æ¯æ¬¡é½åªæ¿ä¸æ¡æç»ä¸çæ°é |
| | | // decimal diff = Convert.ToDecimal(stock.differenceQuantity); |
| | | // if (stock.IsProfit == "1") // çç |
| | | // { |
| | | // entity.Business_qty += diff;//妿ççäºå¤äºï¼å°±å°ä¸å¡æ°é+ï¼çäºåç¸å |
| | | // entity.PalletCode = stock.palletCode; |
| | | // } |
| | | // else // çäº |
| | | // { |
| | | // entity.Business_qty -= diff; |
| | | // entity.PalletCode = stock.palletCode; |
| | | // } |
| | | // } |
| | | // } |
| | | // break; |
| | | // } |
| | | |
| | | // // ä¿åæ°æ® |
| | | // if (entity.Id == 0) // æ°å»º |
| | | // BaseDal.Db.Insertable(entity).ExecuteCommand(); |
| | | // else // æ´æ° |
| | | // BaseDal.Db.Updateable(entity).ExecuteCommand(); |
| | | // } |
| | | // BaseDal.Db.Ado.CommitTran(); // æäº¤äºå¡ |
| | | // return new ApiResponse<Dt_Inventory> { code = "0", msg = "æå" }; |
| | | // } |
| | | // catch (Exception ex) |
| | | // { |
| | | // BaseDal.Db.Ado.RollbackTran();//åæ»äºå¡ |
| | | // return new ApiResponse<Dt_Inventory> { code = "500", msg = ex.Message }; |
| | | // } |
| | | //} |
| | | |
| | | |
| | | public ApiResponse<Dt_InventoryInfo> OrderFeedback(EdiOrderCallbackRequest request) |
| | | { |
| | | try |
| | | { |
| | | // 1ï¸â£ æ ¡éªè¯·æ± |
| | | if (request == null || request.details == null || !request.details.Any()) |
| | | { |
| | | return new ApiResponse<Dt_InventoryInfo> { code = "500", msg = "请æ±åæ°æ æ" }; |
| | | } |
| | | |
| | | BaseDal.Db.Ado.BeginTran(); // å¼å¯äºå¡ |
| | | // 2ï¸â£ å¼å¯äºå¡ |
| | | BaseDal.Db.Ado.BeginTran(); |
| | | |
| | | foreach (var detail in request.details) |
| | | { |
| | | // å
¥åºæ°éï¼èªå¨åæ£ï¼ |
| | | // 3ï¸â£ 计ç®å
¥åºæ°éï¼åæ£ï¼ |
| | | decimal orderQty = detail.orderDetails? |
| | | .Sum(x => decimal.TryParse(x.quantity, out var q) ? Math.Abs(q) : 0) |
| | | ?? 0; |
| | | |
| | | // çç¹å·®å¼æ° |
| | | decimal diffQty = detail.stocktakingDetails? |
| | | .Sum(x => Convert.ToDecimal(x.differenceQuantity)) |
| | | ?? 0; |
| | | |
| | | // æ¥è¯¢ç°æåºåæç» |
| | | // 5ï¸â£ æ¥è¯¢åºå详æ
|
| | | var entity = BaseDal.Db.Queryable<Dt_InventoryInfo>() |
| | | .First(x => x.MaterielCode == detail.productCode && x.BatchNo == detail.batchNo); |
| | | |
| | | if (entity == null) |
| | | { |
| | | //ä¸åå¨åæ°å»ºåºåæç»è®°å½ |
| | | entity = new Dt_InventoryInfo |
| | | { |
| | | PalletCode = detail.orderDetails?.FirstOrDefault()?.palletCode ?? "", |
| | | WarehouseCode = 1.ToString(), // é»è®¤åºæ¿ç¼å· |
| | | WarehouseCode = "001", |
| | | LocationCode = "", |
| | | StockStatus = 1, // ç«åºåºå®ä¸º 1 |
| | | StockStatus = 1, |
| | | MaterielCode = detail.productCode ?? detail.productName, |
| | | MaterielName = detail.productName ?? "", |
| | | MaterielSpec = detail.productSpecifications ?? "", |
| | |
| | | }; |
| | | } |
| | | |
| | | // æ¹æ¬¡è¡¨è®°å½ï¼ç¨äºæ±æ»ï¼ |
| | | // 6ï¸â£ æ¥è¯¢åºåæ¹æ¬¡ä¿¡æ¯ |
| | | var batch = BaseDal.Db.Queryable<Dt_Inventory_Batch>() |
| | | .First(x => x.MaterielCode == detail.productCode && x.BatchNo == detail.batchNo); |
| | | |
| | |
| | | }; |
| | | } |
| | | |
| | | // 7ï¸â£ æè®¢åç±»åæ§è¡ä¸åé»è¾ |
| | | switch (request.orderType) |
| | | { |
| | | case "1": // å
¥åº |
| | |
| | | break; |
| | | |
| | | case "3": //çç¹ |
| | | if (detail.stocktakingDetails != null && detail.stocktakingDetails.Any()) |
| | | decimal diff = detail.ea ?? 0; // 差弿° |
| | | int flag = detail.isLossOrProfit ?? 3; // 1=çäº, 2=çç, 3=çä¸ |
| | | |
| | | if (flag == 1) // çäº |
| | | { |
| | | foreach (var stock in detail.stocktakingDetails) |
| | | { |
| | | decimal diff = Convert.ToDecimal(stock.differenceQuantity); |
| | | if (stock.IsProfit == "1") // çç |
| | | { |
| | | entity.SupplyQuantity += Math.Abs(diff); |
| | | batch.SupplyQuantity += Math.Abs(diff); |
| | | batch.SupplyQuantity = batch.StockQuantity - diff; |
| | | batch.Remark = "çç¹ååä¼ - çäº"; |
| | | } |
| | | else // çäº |
| | | else if (flag == 2) // çç |
| | | { |
| | | entity.SupplyQuantity -= Math.Abs(diff); |
| | | batch.SupplyQuantity -= Math.Abs(diff); |
| | | if (entity.SupplyQuantity < 0) entity.SupplyQuantity = 0; |
| | | if (batch.SupplyQuantity < 0) batch.SupplyQuantity = 0; |
| | | batch.SupplyQuantity = batch.StockQuantity + diff; |
| | | batch.Remark = "çç¹ååä¼ - çç"; |
| | | } |
| | | entity.PalletCode = stock.palletCode; |
| | | entity.Remark = "çç¹ååä¼ "; |
| | | batch.Remark = "çç¹ååä¼ "; |
| | | } |
| | | else // çä¸ |
| | | { |
| | | batch.Remark = "çç¹ååä¼ - çä¸"; |
| | | } |
| | | break; |
| | | } |
| | | |
| | | //ä¿åå°æ°æ®åº |
| | | // 8ï¸â£ ä¿åæ°æ® |
| | | if (entity.Id == 0) |
| | | BaseDal.Db.Insertable(entity).ExecuteCommand(); |
| | | else |
| | |
| | | BaseDal.Db.Updateable(batch).ExecuteCommand(); |
| | | } |
| | | |
| | | // 9ï¸â£ æäº¤äºå¡ |
| | | BaseDal.Db.Ado.CommitTran(); |
| | | return new ApiResponse<Dt_InventoryInfo> { code = "0", msg = "æå" }; |
| | | |
| | | return new ApiResponse<Dt_InventoryInfo> |
| | | { |
| | | code = "0", |
| | | msg = "æå" |
| | | }; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | // ð åæ»äºå¡ |
| | | BaseDal.Db.Ado.RollbackTran(); |
| | | return new ApiResponse<Dt_InventoryInfo> { code = "500", msg = ex.Message }; |
| | | |
| | | return new ApiResponse<Dt_InventoryInfo> |
| | | { |
| | | code = "500", |
| | | msg = $"å¤ç失败: {ex.Message}" |
| | | }; |
| | | } |
| | | } |
| | | |