Exemple #1
0
        /// <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;
        }