コード例 #1
0
        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()));
        }
コード例 #2
0
        /// <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);
        }
コード例 #3
0
        /// <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);
        }
コード例 #4
0
        /// <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;
        }
コード例 #5
0
        /// <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);
        }