/// <summary> /// Gets the FDP balance. /// </summary> /// <param name="FDPID">The FDPID.</param> /// <param name="SINumber">The SI number.</param> /// <returns></returns> public FDPBalance GetFDPBalance(int FDPID, string RequisitionNo) { var query = from q in db.DispatchAllocations where q.FDPID == FDPID && q.RequisitionNo == RequisitionNo select q; FDPBalance balance = new FDPBalance(); if (query.Count() > 0) { var total = query.Select(t => t.Amount); if (total.Count() > 0) { balance.TotalAllocation = total.Sum(); } var commited = query.Where(p => p.ShippingInstructionID.HasValue && p.ProjectCodeID.HasValue).Select(t => t.Amount); if (commited.Count() > 0) { balance.CommitedAllocation = Math.Abs(commited.Sum()); } var transaction = query.FirstOrDefault(); balance.CommodityTypeID = transaction.Commodity.CommodityTypeID; balance.ProgramID = (transaction.ProgramID.HasValue)?transaction.ProgramID.Value:-1; balance.Commodity = transaction.Commodity.Name; balance.ProjectCode = (transaction.ProjectCodeID.HasValue)?transaction.ProjectCode.Value:"Not Applicable"; // find more details from the dispatch allocation table. // TOCHECK: check if this is woring correctly //if(transaction.TransactionGroup.DispatchAllocations.Any()) //{ // DispatchAllocation dispatchAllocation = // transaction.TransactionGroup.DispatchAllocations.FirstOrDefault(); // balance.BidNumber = dispatchAllocation.BidRefNo; // balance.TransporterID = dispatchAllocation.TransporterID.Value; //} var transactions = (from v in db.Dispatches where v.RequisitionNo == RequisitionNo && v.FDPID == FDPID select v.DispatchDetails.FirstOrDefault().TransactionGroup.Transactions); List <Transaction> trans = new List <Transaction>(); foreach (var tran in transactions) { if (tran != null) { foreach (var t in tran) { trans.Add(t); } } } if (balance.CommodityTypeID == 1) { balance.TotalDispatchedMT = (from v in trans where v.LedgerID == Ledger.Constants.GOODS_DISPATCHED select v.QuantityInMT).DefaultIfEmpty().Sum(); } else { balance.TotalDispatchedMT = (from v in trans where v.LedgerID == Ledger.Constants.GOODS_DISPATCHED select v.QuantityInUnit).DefaultIfEmpty().Sum(); } // Convert the MT to Quintal, balance.CurrentBalance = balance.TotalAllocation - (balance.TotalDispatchedMT * 10); } return(balance); }
/// <summary> /// Gets the FDP balance. /// </summary> /// <param name="FDPID">The FDPID.</param> /// <param name="SINumber">The SI number.</param> /// <returns></returns> public FDPBalance GetFDPBalance(int FDPID, string RequisitionNo) { var query = _unitOfWork.DispatchAllocationRepository.Get(t => t.FDPID == FDPID && t.RequisitionNo == RequisitionNo); FDPBalance balance = new FDPBalance(); if (query.Count() > 0) { var total = query.Select(t => t.Amount); if (total.Count() > 0) { balance.TotalAllocation = total.Sum(); } var commited = query.Where(p => p.ShippingInstructionID.HasValue && p.ProjectCodeID.HasValue).Select(t => t.Amount); if (commited.Count() > 0) { balance.CommitedAllocation = Math.Abs(commited.Sum()); } var transaction = query.FirstOrDefault(); balance.CommodityTypeID = transaction.Commodity.CommodityTypeID; balance.ProgramID = (transaction.ProgramID.HasValue) ? transaction.ProgramID.Value : -1; balance.Commodity = transaction.Commodity.Name; balance.ProjectCode = (transaction.ProjectCodeID.HasValue) ? transaction.ProjectCode.Value : "Not Applicable"; // find more details from the dispatch allocation table. // TOCHECK: check if this is woring correctly //if(transaction.TransactionGroup.DispatchAllocations.Any()) //{ // DispatchAllocation dispatchAllocation = // transaction.TransactionGroup.DispatchAllocations.FirstOrDefault(); // balance.BidNumber = dispatchAllocation.BidRefNo; // balance.TransporterID = dispatchAllocation.TransporterID.Value; //} var tempDispatches = _unitOfWork.DispatchRepository.Get(t => t.RequisitionNo == RequisitionNo && t.FDPID == FDPID); var transactions = (from v in tempDispatches select v.DispatchDetails.FirstOrDefault().TransactionGroup.Transactions); List<Transaction> trans = new List<Transaction>(); foreach (var tran in transactions) { if (tran != null) { foreach (var t in tran) { trans.Add(t); } } } if (balance.CommodityTypeID == 1) { balance.TotalDispatchedMT = (from v in trans where v.LedgerID == Ledger.Constants.GOODS_DISPATCHED select v.QuantityInMT).DefaultIfEmpty().Sum(); } else { balance.TotalDispatchedMT = (from v in trans where v.LedgerID == Ledger.Constants.GOODS_DISPATCHED select v.QuantityInUnit).DefaultIfEmpty().Sum(); } // Convert the MT to Quintal, balance.CurrentBalance = balance.TotalAllocation - (balance.TotalDispatchedMT * 10); } return balance; }