public IEnumerable <ComboBoxList> GetPendingProductsForSaleDelivery(int sid, string term)//DocTypeId
        {
            var SaleDelivery = new SaleDeliveryOrderHeaderService(_unitOfWork).Find(sid);

            // var settings = new JobInvoiceSettingsService(_unitOfWork).GetJobInvoiceSettingsForDocument(JobInvoice.DocTypeId, JobInvoice.DivisionId, JobInvoice.SiteId);

            //string[] ContraSites = null;
            //if (!string.IsNullOrEmpty(settings.filterContraSites)) { ContraSites = settings.filterContraSites.Split(",".ToCharArray()); }
            //else { ContraSites = new string[] { "NA" }; }

            //string[] ContraDivisions = null;
            //if (!string.IsNullOrEmpty(settings.filterContraDivisions)) { ContraDivisions = settings.filterContraDivisions.Split(",".ToCharArray()); }
            //else { ContraDivisions = new string[] { "NA" }; }

            return((from p in db.ViewSaleOrderBalanceForCancellation
                    join t in db.Product on p.ProductId equals t.ProductId into ProdTable
                    from ProTab in ProdTable.DefaultIfEmpty()
                    where p.BalanceQty > 0 && ProTab.ProductName.ToLower().Contains(term.ToLower()) && SaleDelivery.BuyerId == p.BuyerId
                    group new { p, ProTab } by p.ProductId into g
                    orderby g.Key descending
                    select new ComboBoxList
            {
                Id = g.Key,
                PropFirst = g.Max(m => m.ProTab.ProductName)
            }
                    ).Take(20));
        }
        public IEnumerable <SaleDeliveryProductHelpList> GetProductHelpList(int Id, string term, int Limit)
        {
            var SAleDeliveryOrder = new SaleDeliveryOrderHeaderService(_unitOfWork).Find(Id);

            //var settings = new JobInvoiceSettingsService(_unitOfWork).GetJobInvoiceSettingsForDocument(JobInvoice.DocTypeId, JobInvoice.DivisionId, JobInvoice.SiteId);


            //string[] ProductTypes = null;
            //if (!string.IsNullOrEmpty(settings.filterProductTypes)) { ProductTypes = settings.filterProductTypes.Split(",".ToCharArray()); }
            //else { ProductTypes = new string[] { "NA" }; }

            //string[] ContraSites = null;
            //if (!string.IsNullOrEmpty(settings.filterContraSites)) { ContraSites = settings.filterContraSites.Split(",".ToCharArray()); }
            //else { ContraSites = new string[] { "NA" }; }

            //string[] ContraDivisions = null;
            //if (!string.IsNullOrEmpty(settings.filterContraDivisions)) { ContraDivisions = settings.filterContraDivisions.Split(",".ToCharArray()); }
            //else { ContraDivisions = new string[] { "NA" }; }

            var list = (from p in db.ViewSaleOrderBalanceForCancellation
                        join t in db.SaleOrderHeader on p.SaleOrderHeaderId equals t.SaleOrderHeaderId
                        join t2 in db.SaleOrderLine on p.SaleOrderLineId equals t2.SaleOrderLineId
                        where (string.IsNullOrEmpty(term) ? 1 == 1 : p.Product.ProductName.ToLower().Contains(term.ToLower()) ||
                               string.IsNullOrEmpty(term) ? 1 == 1 : p.SaleOrderNo.ToLower().Contains(term.ToLower()) ||
                               string.IsNullOrEmpty(term) ? 1 == 1 : t.BuyerOrderNo.ToLower().Contains(term.ToLower())
                               ) &&
                        p.BuyerId == SAleDeliveryOrder.BuyerId
                        orderby t.DocDate, t.DocNo
                        select new SaleDeliveryProductHelpList
            {
                ProductName = p.Product.ProductName,
                ProductId = p.ProductId,
                Specification = t2.Specification,
                SaleOrderDocNo = p.SaleOrderNo,
                SaleOrderLineId = p.SaleOrderLineId,
                Qty = p.BalanceQty,
            }
                        ).Take(Limit);

            return(list.ToList());
        }