public static OrderShipmentModel GetShipment(long warehouseId, long customerId, long customerSiteId, long orderId) { OrderShipmentModel newShipment = new OrderShipmentModel { CustomerId = customerId, CustomerSiteId = customerSiteId, DeliveryDate = DateTime.Now, Id = 0, OrderId = orderId, OrderShipments = new List <OrderShipmentLine>(), WarehouseId = warehouseId }; List <OrderModel> orders = OrderHelper.GetOrders(orderId, customerId, customerSiteId); if (orders.Count() > 0) { foreach (var order in orders) { List <OrderDetailModel> orderDetail = OrderHelper.GetOrderDetail(order.Id.ToString()).ToList(); if (orderDetail != null && orderDetail.Count() > 0) { orderDetail = orderDetail.Where(rec => rec.WarehouseId == warehouseId).ToList(); if (orderDetail != null && orderDetail.Count() > 0) { foreach (var detailItem in orderDetail) { List <ShipmentModel> shipments = GetShipments(detailItem.Id); if (shipments != null && shipments.Count() > 0) { if (shipments.Sum(rec => rec.Quantity) < detailItem.Quantity) { OrderShipmentLine current = fromOrderDetailtoShipment(detailItem, shipments); current.CustomerName = order.CustomerName; current.CustomerSiteName = order.CustomerSiteName; current.OrderNo = order.OrderNo; if (!SessionHelper.Shipment.OrderShipments.Any(rec => rec.LineId == detailItem.Id)) { newShipment.OrderShipments.Add(current); } } } else { OrderShipmentLine current = fromOrderDetailtoShipment(detailItem, shipments); current.CustomerName = order.CustomerName; current.CustomerSiteName = order.CustomerSiteName; current.OrderNo = order.OrderNo; newShipment.OrderShipments.Add(current); } } } } } } return(newShipment); }
public static string Delete(OrderShipmentLine model) { OrderShipmentModel orderShipment = SessionHelper.Shipment; OrderShipmentLine shipment = orderShipment.OrderShipments.FirstOrDefault(x => x.LineId == model.LineId); SessionHelper.Shipment.OrderShipments.Remove(shipment); return(""); }
public ActionResult Create() { OrderShipmentModel newShipment = SessionHelper.Shipment; if (newShipment == null) { newShipment = new OrderShipmentModel { DeliveryDate = DateTime.Now, CompanyId = AuthenticationHelper.CompanyId.Value, OrderShipments = new List <OrderShipmentLine>() }; SessionHelper.Shipment = newShipment; } newShipment.Customers = CustomerHelper.GetActiveCustomersCombo(newShipment.DeliveryDate); if (newShipment.Customers != null && newShipment.Customers.Count() > 0) { newShipment.CustomerId = newShipment.CustomerId > 0 ? newShipment.CustomerId : 0; newShipment.Customers.Add(new SelectListItem { Text = "-- Select --", Value = "0" }); newShipment.CustomerSites = CustomerHelper.GetCustomerSitesCombo(newShipment.CustomerId); if (newShipment.CustomerSites != null && newShipment.CustomerSites.Count() > 0) { newShipment.CustomerSiteId = newShipment.CustomerSiteId > 0 ? newShipment.CustomerSiteId : 0; newShipment.CustomerSites.Add(new SelectListItem { Text = "-- Select --", Value = "0" }); } } newShipment.Orders = OrderHelper.GetOrdersCombo(); if (newShipment.Orders != null && newShipment.Orders.Count() > 0) { newShipment.OrderId = newShipment.OrderId > 0 ? newShipment.OrderId : 0; newShipment.Orders.Add(new SelectListItem { Text = "-- Select --", Value = "0" }); } newShipment.Warehouses = WarehouseHelper.GetWarehousesCombo(SessionHelper.SOBId); if (newShipment.Warehouses != null && newShipment.Warehouses.Count() > 0) { newShipment.WarehouseId = newShipment.WarehouseId > 0 ? newShipment.WarehouseId : Convert.ToInt64(newShipment.Warehouses.First().Value); } newShipment.DeliveryNo = "New"; SessionHelper.Shipment = newShipment; SessionHelper.Shipment.OrderShipments = ShipmentHelper.GetShipment(newShipment.WarehouseId, newShipment.CustomerId, newShipment.CustomerSiteId, newShipment.OrderId).OrderShipments; return(View("Edit", newShipment)); }
private static List <Shipment> getEntitiesByModel(OrderShipmentModel model) { if (model == null) { return(null); } List <Shipment> entityList = new List <Shipment>(); if (model.OrderShipments == null || model.OrderShipments.Count == 0) { return(null); } foreach (var item in model.OrderShipments) { Shipment entity = new Shipment(); if (item.Id == 0) { entity.CreateBy = AuthenticationHelper.UserId; entity.CreateDate = DateTime.Now; entity.CompanyId = AuthenticationHelper.CompanyId.Value; } else { entity.CreateBy = model.CreateBy; entity.CreateDate = model.CreateDate; entity.CompanyId = model.CompanyId; } entity.DeliveryDate = model.DeliveryDate; entity.SOBId = SessionHelper.SOBId; entity.WarehouseId = model.WarehouseId; entity.OrderId = item.OrderId; entity.UpdateBy = model.UpdateBy; entity.UpdateDate = model.UpdateDate; entity.Id = item.Id; entity.LineId = item.LineId; entity.LocatorId = item.LocatorId; entity.LotNoId = item.LotNoId == 0 ? null : item.LotNoId; entity.Quantity = item.ThisShipQuantity; entity.SerialNo = item.SerialNo; entity.DeliveryNo = model.DeliveryNo; entityList.Add(entity); } return(entityList); }
public ActionResult Edit(string no, DateTime date) { OrderShipmentModel orderShipment = ShipmentHelper.GetShipmentEdit(no, date); orderShipment.Customers = CustomerHelper.GetActiveCustomersCombo(orderShipment.DeliveryDate); if (orderShipment.Customers != null && orderShipment.Customers.Count() > 0) { orderShipment.CustomerId = orderShipment.CustomerId > 0 ? orderShipment.CustomerId : Convert.ToInt64(orderShipment.Customers.First().Value); orderShipment.Customers.Add(new SelectListItem { Text = "-- Select --", Value = "0" }); orderShipment.CustomerSites = CustomerHelper.GetCustomerSitesCombo(orderShipment.CustomerId); if (orderShipment.CustomerSites != null && orderShipment.CustomerSites.Count() > 0) { orderShipment.CustomerSiteId = orderShipment.CustomerSiteId > 0 ? orderShipment.CustomerSiteId : Convert.ToInt64(orderShipment.CustomerSites.First().Value); orderShipment.CustomerSites.Add(new SelectListItem { Text = "-- Select --", Value = "0" }); } } orderShipment.Orders = OrderHelper.GetOrdersCombo(); if (orderShipment.Orders != null && orderShipment.Orders.Count() > 0) { orderShipment.OrderId = orderShipment.OrderId > 0 ? orderShipment.OrderId : Convert.ToInt64(orderShipment.Orders.First().Value); orderShipment.Orders.Add(new SelectListItem { Text = "-- Select --", Value = "0" }); } orderShipment.Warehouses = WarehouseHelper.GetWarehousesCombo(SessionHelper.SOBId); if (orderShipment.Warehouses != null && orderShipment.Warehouses.Count() > 0) { orderShipment.WarehouseId = orderShipment.WarehouseId > 0 ? orderShipment.WarehouseId : Convert.ToInt64(orderShipment.Warehouses.First().Value); } SessionHelper.Shipment = orderShipment; return(View("Edit", orderShipment)); }
public static OrderShipmentModel GetShipmentEdit(string deliveryNo, DateTime date) { List <ShipmentModel> shipmentDetail = service.GetDelivery(AuthenticationHelper.CompanyId.Value, SessionHelper.SOBId, deliveryNo, date).Select(x => new ShipmentModel(x)).ToList(); OrderModel order = OrderHelper.GetOrder(shipmentDetail.First().OrderId.ToString()); //Can be multiple, showing the first one on the header.. OrderShipmentModel orderShipment = new OrderShipmentModel(shipmentDetail.First()); orderShipment.CreateBy = shipmentDetail.First().CreateBy; orderShipment.CreateDate = shipmentDetail.First().CreateDate; orderShipment.CustomerId = order.CustomerId; orderShipment.CustomerSiteId = order.CustomerSiteId; orderShipment.UpdateBy = shipmentDetail.First().UpdateBy; orderShipment.UpdateDate = shipmentDetail.First().UpdateDate; orderShipment.OrderShipments = new List <OrderShipmentLine>(); foreach (var item in shipmentDetail) { OrderDetailModel orderDetail = OrderHelper.GetSingleOrderDetail(item.LineId); OrderShipmentLine shipmentLine = new OrderShipmentLine(item); decimal shippedQty = GetShipments(item.LineId).Where(rec => rec.Id < item.Id).Sum(x => x.Quantity); shipmentLine.BalanceQuantity = orderDetail.Quantity - (shippedQty + item.Quantity); shipmentLine.OrderQuantity = orderDetail.Quantity; shipmentLine.ShipedQuantity = shippedQty; shipmentLine.ThisShipQuantity = item.Quantity; shipmentLine.ItemName = ItemHelper.GetItem(orderDetail.ItemId.ToString()).ItemName; shipmentLine.CustomerId = OrderHelper.GetSingleOrder(item.OrderId.ToString()).CustomerId; shipmentLine.CustomerName = OrderHelper.GetSingleOrder(item.OrderId.ToString()).CustomerName; shipmentLine.CustomerSiteId = OrderHelper.GetSingleOrder(item.OrderId.ToString()).CustomerSiteId; shipmentLine.CustomerSiteName = OrderHelper.GetSingleOrder(item.OrderId.ToString()).CustomerSiteName; orderShipment.OrderShipments.Add(shipmentLine); } return(orderShipment); }
public static string GenerateDeliveryNum(OrderShipmentModel model) { var currentDocument = service.GetAll(AuthenticationHelper.CompanyId.Value, SessionHelper.SOBId).OrderByDescending(rec => rec.Id).FirstOrDefault(); string newDocNo = ""; if (currentDocument != null) { int outVal; bool isNumeric = int.TryParse(currentDocument.DeliveryNo, out outVal); if (isNumeric && currentDocument.DeliveryNo.Length == 8) { newDocNo = (int.Parse(currentDocument.DeliveryNo) + 1).ToString(); return(newDocNo); } } //Create New DocNum.. string yearDigit = model.DeliveryDate.ToString("yy"); string monthDigit = model.DeliveryDate.ToString("MM"); string docNo = int.Parse("1").ToString().PadLeft(4, '0'); return(yearDigit + monthDigit + docNo); }
private static string validateShipment(OrderShipmentLine model) { decimal totalQty = model.ThisShipQuantity; OrderDetailModel orderDetail = OrderHelper.GetSingleOrderDetail(model.LineId); List <Shipment> shiped = new List <Shipment>(); if (model.Id > 0) { shiped = service.GetAllByLineId(AuthenticationHelper.CompanyId.Value, SessionHelper.SOBId, model.LineId) .Where(rec => rec.Id < model.Id).ToList(); } else { shiped = service.GetAllByLineId(AuthenticationHelper.CompanyId.Value, SessionHelper.SOBId, model.LineId).ToList(); } if (shiped != null && shiped.Count() > 0) { totalQty += shiped.Sum(rec => rec.Quantity); } if (totalQty > orderDetail.Quantity) { return("Quantity is exceeding than order!"); } string lotAndSerialValidation = checkLotandSerials(model); if (!string.IsNullOrEmpty(lotAndSerialValidation)) { return(lotAndSerialValidation); } //Other validations if any.. OrderShipmentModel orderShipment = SessionHelper.Shipment; if (model.Id > 0) { orderShipment.OrderShipments.First(x => x.LineId == model.LineId).BalanceQuantity = orderDetail.Quantity - (shiped.Sum(rec => rec.Quantity) + model.ThisShipQuantity); orderShipment.OrderShipments.First(x => x.LineId == model.LineId).Id = model.Id; orderShipment.OrderShipments.First(x => x.LineId == model.LineId).LocatorId = model.LocatorId; orderShipment.OrderShipments.First(x => x.LineId == model.LineId).LotNoId = model.LotNoId; orderShipment.OrderShipments.First(x => x.LineId == model.LineId).OrderQuantity = orderDetail.Quantity; orderShipment.OrderShipments.First(x => x.LineId == model.LineId).SerialNo = model.SerialNo; orderShipment.OrderShipments.First(x => x.LineId == model.LineId).ShipedQuantity = shiped.Sum(rec => rec.Quantity); orderShipment.OrderShipments.First(x => x.LineId == model.LineId).ThisShipQuantity = model.ThisShipQuantity; } else { if (orderShipment.OrderShipments.Any(x => x.LineId == model.LineId)) { orderShipment.OrderShipments.First(x => x.LineId == model.LineId).BalanceQuantity = orderDetail.Quantity - (shiped.Sum(rec => rec.Quantity) + model.ThisShipQuantity); orderShipment.OrderShipments.First(x => x.LineId == model.LineId).Id = model.Id; orderShipment.OrderShipments.First(x => x.LineId == model.LineId).LocatorId = model.LocatorId; orderShipment.OrderShipments.First(x => x.LineId == model.LineId).LotNoId = model.LotNoId; orderShipment.OrderShipments.First(x => x.LineId == model.LineId).OrderQuantity = orderDetail.Quantity; orderShipment.OrderShipments.First(x => x.LineId == model.LineId).SerialNo = model.SerialNo; orderShipment.OrderShipments.First(x => x.LineId == model.LineId).ShipedQuantity = shiped.Sum(rec => rec.Quantity); orderShipment.OrderShipments.First(x => x.LineId == model.LineId).ThisShipQuantity = model.ThisShipQuantity; } else { //Never be in this case.. orderShipment.OrderShipments.Add(new OrderShipmentLine { BalanceQuantity = orderDetail.Quantity - (shiped.Sum(rec => rec.Quantity) + model.ThisShipQuantity), Id = model.Id, ItemName = model.ItemName, LineId = model.LineId, LocatorId = model.LocatorId, LotNoId = model.LotNoId, OrderQuantity = orderDetail.Quantity, SerialNo = model.SerialNo, ShipedQuantity = shiped.Sum(rec => rec.Quantity), ThisShipQuantity = model.ThisShipQuantity }); } } return(""); }
public static string Save(OrderShipmentModel model) { List <long> orderIds = new List <long>(); string result = ""; if (model.OrderShipments != null && model.OrderShipments.Count() > 0) { model.OrderShipments = model.OrderShipments.Where(rec => rec.LocatorId > 0).ToList(); } List <Shipment> currentShipments = getEntitiesByModel(model); if (currentShipments != null && currentShipments.Count() > 0) { if (model.DeliveryNo != "New") { List <Shipment> savedShipment = service.GetDelivery(AuthenticationHelper.CompanyId.Value, SessionHelper.SOBId, model.DeliveryNo, model.DeliveryDate).ToList(); if (savedShipment != null && savedShipment.Count() > 0) { if (savedShipment.Count() > currentShipments.Count()) { List <Shipment> tobeDeleted = savedShipment.Take(savedShipment.Count() - currentShipments.Count()).ToList(); foreach (var deleteSingle in tobeDeleted) { if (!string.IsNullOrEmpty(deleteSingle.SerialNo)) { List <string> serials = deleteSingle.SerialNo.Split(new char[] { ',' }).ToList(); deleteSerials(serials, deleteSingle.LotNoId.Value); } orderIds.Add(deleteSingle.OrderId); service.Delete(deleteSingle.Id.ToString(), AuthenticationHelper.CompanyId.Value); } } } } foreach (var item in currentShipments) { List <ShipmentModel> shipments = GetShipments(item.LineId); OrderDetailModel orderDetail = OrderHelper.GetSingleOrderDetail(item.LineId); decimal savedQty = 0; if (shipments != null && shipments.Count() > 0) { savedQty = shipments.Sum(x => x.Quantity); } orderIds.Add(item.OrderId); if (item.LotNoId != null && item.LotNoId > 0) { long lotNoId = 0; string lotNumResult = updateLots(item); int outVal; bool isNumeric = int.TryParse(lotNumResult, out outVal); if (isNumeric) { lotNoId = int.Parse(lotNumResult); } item.LotNoId = lotNoId; } updateSerials(item); if (item.Id > 0) { result = service.Update(item); } else { result = service.Insert(item); } //Update lot num to set the sourceId.. if (item.LotNoId != null && item.LotNoId > 0) { LotNumber tobeUpdated = LotNumberHelper.GetLotNumber(item.LotNoId.Value); tobeUpdated.SourceId = item.Id; LotNumberHelper.Update(tobeUpdated); } } updateOrders(orderIds); } else { result = "Please select order to ship!"; } return(result); }