private Boolean updateReserveStockOnHand(Location location, Product product, string lotNo, double reservedQuantity) { var blnResult = false; var queryStock = (from stock in StockOnHands where stock.Location.Id == location.Id && stock.Product.Id == product.Id && stock.LotNo == lotNo select stock).FirstOrDefault(); if (queryStock != null) { queryStock.ReservedQuantity = queryStock.ReservedQuantity - reservedQuantity; blnResult = true; } return blnResult; }
private Boolean updateStockOnHand(Location stkLocation,Product stkProduct,string LotNo,double Qty,decimal TotalCost) { var blnResult = false; var queryStock = (from stock in StockOnHands where stock.Location.Id == stkLocation.Id && stock.Product.Id == stkProduct.Id && stock.LotNo == LotNo select stock).FirstOrDefault(); if(queryStock != null){ queryStock.QuantityOnHand = queryStock.QuantityOnHand + Qty; queryStock.CostPrice = queryStock.CostPrice + TotalCost; queryStock.IsAvailableForSale = false; blnResult = true; } else{ StockOnHand newStock = new StockOnHand(); newStock.Location = stkLocation; newStock.Product = stkProduct; newStock.LotNo = LotNo; newStock.CostPrice = TotalCost; newStock.IsAvailableForSale = false; newStock.QuantityOnHand = Qty; newStock.SellingPrice = 0; blnResult = true; } return blnResult; }
private string getNewLotFromStockOnhand(string ReceiveType,DateTime LotDate,Product ReceiveProduct,string OldRawmatLotNo) { string newLot = ""; //string insertLot = (Int32.Parse(String.Format("{0:yy}", LotDate))%10).ToString() + String.Format("{0:MMdd}", LotDate); // YMMDD string insertLot = (Int32.Parse(String.Format("{0:yy}", LotDate.Year.ToString())) % 10).ToString() + String.Format("{0:MMdd}", LotDate); string[] ReceiveNewLotPrefix = { "PO","BF","RT" }; if (ReceiveNewLotPrefix.Contains(ReceiveType.Substring(0, 2))) { var queryStockOnHand = from stock in StockOnHands where stock.Product.Id == (ReceiveProduct.Id) && stock.LotNo.Contains(insertLot) orderby stock.LotNo descending select stock.LotNo; if (queryStockOnHand.Count() > 0) { string LastLot = queryStockOnHand.First(); newLot = insertLot + (Int32.Parse(LastLot.Substring(5, 1)) + 1).ToString(); } else { newLot = insertLot + '1'; } } string[] ReceiveOldLotPrefix = { "GIRM","AJQT","AJCT","TRFS" }; if (ReceiveOldLotPrefix.Contains(ReceiveType)) { newLot = OldRawmatLotNo; } string[] ReceiveCheckLotPrefix = { "GIFG", "GIWS" }; if (ReceiveCheckLotPrefix.Contains(ReceiveType)) { var SelectProduct = from Item in Products where Item.Id == ReceiveProduct.Id select Item.LotType; if (SelectProduct.Count() > 0) { string ItemCategory = SelectProduct.FirstOrDefault(); if (ItemCategory == "Fix") { newLot = OldRawmatLotNo; }else { var queryStockOnHand = from stock in StockOnHands where stock.Product.Id == (ReceiveProduct.Id) && stock.LotNo.Contains(insertLot) orderby stock.LotNo descending select stock.LotNo; if (queryStockOnHand.Count() > 0) { string LastLot = queryStockOnHand.First(); newLot = insertLot + (Int32.Parse(LastLot.Substring(5, 1)) + 1).ToString(); } else { newLot = insertLot + '1'; } } } } return newLot; }
private string getPOTransactionType(Product ReceiveProduct) { string receiveType = ""; switch (ReceiveProduct.ProductCategory.ProductCategoryName) { case "วัตถุดิบ": receiveType = "PORM"; break; case "สินค้า": receiveType = "POFG"; break; case "ของเสีย": receiveType = "POWS"; break; default: receiveType = "PONA"; break; } return receiveType; }
private void OnProductStatusAffected(Product product) { //var unitsReceived = 0; //var unitsShipped = 0; //var unitsLost = 0; //var unitsOnHand = 0; //var unitsOnOrder = 0; //var purchaseOrderDetails = product.PurchaseOrderDetails; //foreach (var purchaseOrderDetail in purchaseOrderDetails) //{ // unitsReceived += purchaseOrderDetail.UnitsReceived.Value; // unitsOnOrder += purchaseOrderDetail.UnitsOrdered - purchaseOrderDetail.UnitsReceived.Value; //} //var orderDetails = product.OrderDetails; //foreach (var orderDetail in orderDetails) //{ // unitsShipped += orderDetail.UnitsShipped.Value; //} //var stockCheckDetails = product.StockCheckDetails; //foreach (var stockCheckDetail in stockCheckDetails) //{ // unitsLost += stockCheckDetail.UnitsExpected - stockCheckDetail.UnitsFound; //} //unitsOnHand = unitsReceived - (unitsShipped + unitsLost); //if (unitsOnHand <= product.ReorderLevel) //{ // string subject = string.Format("{0} at or below reorder levels", product.ProductName); // foreach (var subscriber in product.ProductSubscribers) // { // List<string> mailTos = new List<string>(); // string message = string.Format("<html><body>Dear {0} {1}.<br></br><p>The product '{2}' is at or below the reorder level:<br></br>The reorder level is {3} but you currently only have {4} on hand.<br></br>For info, the number of units on order is {5}.</p></body></html>", subscriber.Employee.FirstName, subscriber.Employee.LastName, product.ProductName, product.ReorderLevel, unitsOnHand, unitsOnOrder); // mailTos.Add(subscriber.Employee.Email); // SendEmail(mailTos, subject, message); // } //} }
partial void Products_Updated(Product entity) { OnProductStatusAffected(entity); }