public ActionResult GetBalance(int?siNumber, int?commodityId, string siNumberText) { if (siNumber.HasValue && commodityId.HasValue) { BLL.UserProfile user = _userProfileService.GetUser(User.Identity.Name); List <SIBalance> si = (from v in _dispatchAllocationService.GetUncommitedSIBalance( UserProfile.DefaultHub.HubID, commodityId.Value, user.PreferedWeightMeasurment) select v).ToList(); SIBalance sis = new SIBalance(); if (siNumber.Value == 0) { sis = si.FirstOrDefault(v1 => v1.SINumber == siNumberText); } else { sis = si.FirstOrDefault(v1 => v1.SINumberID == siNumber.Value); } decimal balance = sis.Dispatchable;// +ReaminingExpectedReceipts; return(Json(balance, JsonRequestBehavior.AllowGet)); } return(Json(new EmptyResult())); }
/// <summary> /// Gets the balance In Units for non-food items. /// </summary> /// <param name="hubID">The hub ID.</param> /// <param name="commodityId">The commodity id.</param> /// <param name="shippingInstructionID">The shipping instruction ID.</param> /// <returns></returns> public SIBalance GetBalanceInUnit(int hubID, int commodityId, int shippingInstructionID) { SIBalance siBalance = new SIBalance(); siBalance.Commodity = repository.Commodity.FindById(commodityId).Name; siBalance.SINumberID = shippingInstructionID; ProjectCode projectCode = GetProjectCodeForSI(hubID, commodityId, shippingInstructionID); siBalance.ProjectCodeID = projectCode.ProjectCodeID; siBalance.Project = projectCode.Value; ShippingInstruction si = repository.ShippingInstruction.FindById(shippingInstructionID); var availableBalance = (from v in si.Transactions where v.LedgerID == Ledger.Constants.GOODS_ON_HAND_UNCOMMITED && commodityId == v.ParentCommodityID select v.QuantityInUnit).DefaultIfEmpty().Sum(); var firstOrDefaultans = si.Transactions.FirstOrDefault(); if (firstOrDefaultans != null) { siBalance.Program = firstOrDefaultans.Program.Name; } siBalance.AvailableBalance = availableBalance; siBalance.SINumber = si.Value; // convert the amount which is in Quintals to ... MT siBalance.CommitedToFDP = (from v in si.DispatchAllocations where v.IsClosed == false && v.CommodityID == commodityId select v.AmountInUnit).DefaultIfEmpty().Sum(); //select v.Amount / 10).DefaultIfEmpty().Sum(); var utilGetDispatchedAllocationFromSiResult = db.util_GetDispatchedAllocationFromSI(hubID, shippingInstructionID).FirstOrDefault(); if (utilGetDispatchedAllocationFromSiResult != null) { if (utilGetDispatchedAllocationFromSiResult.QuantityInUnit != null) { siBalance.CommitedToFDP -= utilGetDispatchedAllocationFromSiResult.QuantityInUnit.Value; } } siBalance.CommitedToOthers = (from v in si.OtherDispatchAllocations where v.IsClosed == false && v.CommodityID == commodityId select v.QuantityInUnit).DefaultIfEmpty().Sum(); decimal ReaminingExpectedReceipts = 0; var rAll = repository.ReceiptAllocation.FindBySINumber(siBalance.SINumber) .Where( p => { if (p.Commodity.ParentID == null) { return(p.CommodityID == commodityId); } else { return(p.Commodity.ParentID == commodityId); } } ) .Where(q => q.IsClosed == false); foreach (var receiptAllocation in rAll) { decimal Qunt = 0; if (receiptAllocation.QuantityInUnit != null) { Qunt = receiptAllocation.QuantityInUnit.Value; } ReaminingExpectedReceipts = ReaminingExpectedReceipts + (Qunt - repository.ReceiptAllocation.GetReceivedAlreadyInUnit(receiptAllocation)); } siBalance.ReaminingExpectedReceipts = ReaminingExpectedReceipts; siBalance.Dispatchable = siBalance.AvailableBalance - (siBalance.CommitedToFDP + siBalance.CommitedToOthers) + ReaminingExpectedReceipts; siBalance.TotalDispatchable = siBalance.AvailableBalance - (siBalance.CommitedToFDP + siBalance.CommitedToOthers); return(siBalance); }
/// <summary> /// Gets the uncommited SI balance. /// </summary> /// <param name="hubID">The hub ID.</param> /// <param name="commodityId">The commodity id.</param> /// <returns></returns> public List <SIBalance> GetUncommitedSIBalance(int hubID, int commodityId, string PreferedWeightMeasurment) { var sis = repository.ShippingInstruction.GetShippingInstructionsWithBalance(hubID, commodityId); var com = repository.Commodity.FindById(commodityId); bool IsFood = com.CommodityTypeID == 1; List <SIBalance> result = new List <SIBalance>(); List <SIBalance> positiveresult = new List <SIBalance>(); foreach (var si in sis) { SIBalance balance = null; if (IsFood) { balance = repository.ShippingInstruction.GetBalance(hubID, commodityId, si.ShippingInstructionID); } else { balance = repository.ShippingInstruction.GetBalanceInUnit(hubID, commodityId, si.ShippingInstructionID); } //if (balance.Dispatchable > 0)//buggy if the in store balance is less than 0 it will be replaced by the data by receipt allocation data if (balance != null) { result.Add(balance); } } //From the receipt allocation List <SIBalance> SIfromReceipts = new List <SIBalance>(); if (IsFood) { SIfromReceipts = repository.ReceiptAllocation.GetSIBalanceForCommodity(hubID, commodityId); } else { SIfromReceipts = repository.ReceiptAllocation.GetSIBalanceForCommodityInUnit(hubID, commodityId); } foreach (var sIfromReceipt in SIfromReceipts) { if (!result.Any(p => p.SINumber == sIfromReceipt.SINumber) && sIfromReceipt.Dispatchable > 0) { result.Add(sIfromReceipt); } } foreach (SIBalance siBalanceList in result) { if (siBalanceList.Dispatchable > 0) { if (PreferedWeightMeasurment.ToUpperInvariant() == "QN" && (IsFood)) { siBalanceList.AvailableBalance *= 10; siBalanceList.TotalDispatchable *= 10; siBalanceList.Dispatchable *= 10; siBalanceList.ReaminingExpectedReceipts *= 10; } positiveresult.Add(siBalanceList); } } //foreach (var si in sis) { //var rAll = repository.ReceiptAllocation.FindBySINumber(si.Value) // .Where( // p => // { // if (p.Commodity.ParentID == null) // return p.CommodityID == commodityId; // else // return p.Commodity.ParentID == commodityId; // } // ) // .Where(q=>q.IsClosed == false).Select( new SIBalance // { // AvailableBalance = // }); //} //foreach (var si in sis) //{ // if (si != null) // { // repository.ReceiptAllocation.GetAll().Where( // p => p.SINumber == si.Value && p.CommodityID == commodityId); // } //} return(positiveresult); }
/// <summary> /// Gets the balance. /// </summary> /// <param name="hubID">The hub ID.</param> /// <param name="commodityId">The commodity id.</param> /// <param name="shippingInstructionID">The shipping instruction ID.</param> /// <returns></returns> public SIBalance GetBalance(int hubID, int commodityId, int shippingInstructionID) { SIBalance siBalance = new SIBalance(); siBalance.Commodity = _unitOfWork.CommodityRepository.FindById(commodityId).Name; siBalance.SINumberID = shippingInstructionID; ProjectCode projectCode = GetProjectCodeForSI(hubID, commodityId, shippingInstructionID); siBalance.ProjectCodeID = projectCode.ProjectCodeID; siBalance.Project = projectCode.Value; ShippingInstruction si = _unitOfWork.ShippingInstructionRepository.FindById(shippingInstructionID); var availableBalance = (from v in si.Transactions where v.LedgerID == Ledger.Constants.GOODS_ON_HAND_UNCOMMITED && commodityId == v.ParentCommodityID select v.QuantityInMT).DefaultIfEmpty().Sum(); var firstOrDefaultans = si.Transactions.FirstOrDefault(); if (firstOrDefaultans != null) siBalance.Program = firstOrDefaultans.Program.Name; siBalance.AvailableBalance = availableBalance; siBalance.SINumber = si.Value; // convert the amount which is in Quintals to ... MT siBalance.CommitedToFDP = (from v in si.DispatchAllocations where v.IsClosed == false && v.CommodityID == commodityId select v.Amount / 10).DefaultIfEmpty().Sum(); var utilGetDispatchedAllocationFromSiResult =_unitOfWork.ReportRepository.util_GetDispatchedAllocationFromSI(hubID, shippingInstructionID).FirstOrDefault(); if (utilGetDispatchedAllocationFromSiResult != null) if (utilGetDispatchedAllocationFromSiResult.Quantity != null) siBalance.CommitedToFDP -= utilGetDispatchedAllocationFromSiResult.Quantity.Value; siBalance.CommitedToOthers = (from v in si.OtherDispatchAllocations where v.IsClosed == false && v.CommodityID == commodityId select v.QuantityInMT).DefaultIfEmpty().Sum(); //TODO:After Implementing ReceiptAllocationService Return to this method implementation decimal ReaminingExpectedReceipts = 0; //var rAll = repository.ReceiptAllocation.FindBySINumber(siBalance.SINumber) // .Where( // p => // { // if (p.Commodity.ParentID == null) // return p.CommodityID == commodityId; // else // return p.Commodity.ParentID == commodityId; // } // ) // .Where(q => q.IsClosed == false); //foreach (var receiptAllocation in rAll) //{ // ReaminingExpectedReceipts = ReaminingExpectedReceipts + // (receiptAllocation.QuantityInMT // - // repository.ReceiptAllocation.GetReceivedAlready(receiptAllocation)); //} siBalance.ReaminingExpectedReceipts = ReaminingExpectedReceipts; decimal newVariable = (siBalance.CommitedToFDP + siBalance.CommitedToOthers); siBalance.Dispatchable = siBalance.AvailableBalance - newVariable + ReaminingExpectedReceipts; if (newVariable > 0) siBalance.TotalDispatchable = siBalance.AvailableBalance - (siBalance.CommitedToFDP + siBalance.CommitedToOthers); else siBalance.TotalDispatchable = siBalance.AvailableBalance; return siBalance; }
/// <summary> /// Gets the balance. /// </summary> /// <param name="hubID">The hub ID.</param> /// <param name="commodityId">The commodity id.</param> /// <param name="shippingInstructionID">The shipping instruction ID.</param> /// <returns></returns> public SIBalance GetBalance(int hubID, int commodityId, int shippingInstructionID) { SIBalance siBalance = new SIBalance(); siBalance.Commodity = _unitOfWork.CommodityRepository.FindById(commodityId).Name; siBalance.SINumberID = shippingInstructionID; ProjectCode projectCode = GetProjectCodeForSI(hubID, commodityId, shippingInstructionID); siBalance.ProjectCodeID = projectCode.ProjectCodeID; siBalance.Project = projectCode.Value; ShippingInstruction si = _unitOfWork.ShippingInstructionRepository.FindById(shippingInstructionID); var availableBalance = (from v in si.Transactions where v.LedgerID == Ledger.Constants.GOODS_ON_HAND_UNCOMMITED && commodityId == v.ParentCommodityID select v.QuantityInMT).DefaultIfEmpty().Sum(); var firstOrDefaultans = si.Transactions.FirstOrDefault(); if (firstOrDefaultans != null) { siBalance.Program = firstOrDefaultans.Program.Name; } siBalance.AvailableBalance = availableBalance; siBalance.SINumber = si.Value; // convert the amount which is in Quintals to ... MT siBalance.CommitedToFDP = (from v in si.DispatchAllocations where v.IsClosed == false && v.CommodityID == commodityId select v.Amount / 10).DefaultIfEmpty().Sum(); var utilGetDispatchedAllocationFromSiResult = _unitOfWork.ReportRepository.util_GetDispatchedAllocationFromSI(hubID, shippingInstructionID).FirstOrDefault(); if (utilGetDispatchedAllocationFromSiResult != null) { if (utilGetDispatchedAllocationFromSiResult.Quantity != null) { siBalance.CommitedToFDP -= utilGetDispatchedAllocationFromSiResult.Quantity.Value; } } siBalance.CommitedToOthers = (from v in si.OtherDispatchAllocations where v.IsClosed == false && v.CommodityID == commodityId select v.QuantityInMT).DefaultIfEmpty().Sum(); //TODO:After Implementing ReceiptAllocationService Return to this method implementation decimal ReaminingExpectedReceipts = 0; //var rAll = repository.ReceiptAllocation.FindBySINumber(siBalance.SINumber) // .Where( // p => // { // if (p.Commodity.ParentID == null) // return p.CommodityID == commodityId; // else // return p.Commodity.ParentID == commodityId; // } // ) // .Where(q => q.IsClosed == false); //foreach (var receiptAllocation in rAll) //{ // ReaminingExpectedReceipts = ReaminingExpectedReceipts + // (receiptAllocation.QuantityInMT // - // repository.ReceiptAllocation.GetReceivedAlready(receiptAllocation)); //} siBalance.ReaminingExpectedReceipts = ReaminingExpectedReceipts; decimal newVariable = (siBalance.CommitedToFDP + siBalance.CommitedToOthers); siBalance.Dispatchable = siBalance.AvailableBalance - newVariable + ReaminingExpectedReceipts; if (newVariable > 0) { siBalance.TotalDispatchable = siBalance.AvailableBalance - (siBalance.CommitedToFDP + siBalance.CommitedToOthers); } else { siBalance.TotalDispatchable = siBalance.AvailableBalance; } return(siBalance); }