using Org.BouncyCastle.Crypto; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WIDESEA_Common.OrderEnum; using WIDESEA_Core; using WIDESEA_Core.BaseRepository; using WIDESEA_Core.BaseServices; using WIDESEA_Core.Enums; using WIDESEA_Core.Helper; using WIDESEA_IInboundService; using WIDESEA_Model.Models; namespace WIDESEA_InboundService { public class InboundOrderDetailService : ServiceBase>, IInboundOrderDetailService { public IRepository Repository => BaseDal; public InboundOrderDetailService(IRepository BaseDal) : base(BaseDal) { } public List UpdateReceiptQuantity(List inboundOrderDetails, decimal receiptQuantity) { List orderDetails = inboundOrderDetails.Where(x => x.ReceiptQuantity < x.OrderQuantity).ToList(); List updateOrderDetails = new List(); var quantity = receiptQuantity; for (int i = 0; i < orderDetails.Count; i++) { if (quantity > 0) { var residue = orderDetails[i].OrderQuantity - orderDetails[i].ReceiptQuantity; if (residue < quantity) { orderDetails[i].ReceiptQuantity = orderDetails[i].OrderQuantity; orderDetails[i].OrderDetailStatus = OrderDetailStatusEnum.Over.ObjToInt(); quantity -= residue; } else { orderDetails[i].ReceiptQuantity += quantity; if (quantity == residue) orderDetails[i].OrderDetailStatus = OrderDetailStatusEnum.Over.ObjToInt(); quantity = 0; } updateOrderDetails.Add(orderDetails[i]); } } return (updateOrderDetails); } public List GetByBarcode(string barcode) { var lists= BaseDal.QueryData(x => x.Barcode == barcode).ToList(); if(lists==null || lists.Count == 0) { lists = BaseDal.QueryData(x => x.OutBoxbarcodes == barcode).ToList(); } return lists; } } }