public List <OrdemVenda> GetOrdensVenda(string txtRegister, int ProductGroup) { using (var ctx = new DesenvContext()) { var ordens = (from so in ctx.tblSellOrders join sod in ctx.tblSellOrderDetails on so.intOrderID equals sod.intOrderID join p in ctx.tblProducts on sod.intProductID equals p.intProductID join c in ctx.tblCourses on sod.intProductID equals c.intCourseID join person in ctx.tblPersons on so.intClientID equals person.intContactID where p.intProductGroup1 == ProductGroup && person.txtRegister == txtRegister && (new[] { 0, 2, 5 }).Contains(so.intStatus ?? 0) select new OrdemVenda { ID = so.intOrderID, Year = c.intYear ?? 0, IdCliente = so.intClientID, Status = (OrdemVenda.StatusOv)so.intStatus, IdFilial = so.intStoreID }).Distinct().ToList(); var lOv = new List <OrdemVenda>(); foreach (var o in ordens) { if (o.Status == OrdemVenda.StatusOv.Ativa || (PagamentosClienteEntity.GetPagamentosCliente(o.IdCliente, (new[] { o.Year }), o.ID).Any(pg => (pg.DblSumOfDebits >= 0 || pg.Status == PagamentosCliente.StatusPagamento.OK) && pg.DblValue > 0.0))) { lOv.Add(o); } } return(lOv); } }
public List <Turma> GetTurmasContratadas(int intClientID, int[] anos, int produto = 0, int adimplentes = 0) { anos = (anos == null) ? new[] { DateTime.Now.Year } : anos; var lanos = anos.ToList(); //var pgAdimplente = (PagamentosClienteEntity.GetPagamentosCliente(intClientID, ano)).Where(pg =>pg.DblBalance == 0 && pg.Status == PagamentosCliente.StatusPagamento.OK).Select(p => p.intOrderID); //var pgPendente = (PagamentosClienteEntity.GetPagamentosCliente(intClientID, ano)).Where(pg => pg.DblSumOfDebits < 0 && pg.Status == PagamentosCliente.StatusPagamento.Pendente).Select(p => p.intOrderID); var pgCliente = (PagamentosClienteEntity.GetPagamentosCliente(intClientID, anos)).Any(pg => pg.DblSumOfDebits >= 0 || pg.Status == PagamentosCliente.StatusPagamento.OK); var enumFiliais = Enum.GetValues(typeof(Utilidades.Filiais)); var filiais = new List <int>(); foreach (var value in enumFiliais) { filiais.Add((int)value); } var ctx = new DesenvContext(); var result = (from pessoas in ctx.tblClients join ordemvenda in ctx.tblSellOrders on pessoas.intClientID equals ordemvenda.intClientID join detalhesvenda in ctx.tblSellOrderDetails on ordemvenda.intOrderID equals detalhesvenda.intOrderID join cursos in ctx.tblCourses on detalhesvenda.intProductID equals cursos.intCourseID join produtos in ctx.tblProducts on cursos.intCourseID equals produtos.intProductID join filialprodutospg in ( from cbprod in ctx.tblStore_CombosPaymentTemplate join prodcomb in ctx.tblProductCombos_Products on cbprod.intComboID equals prodcomb.intComboID select new { intProductId = prodcomb.intProductID, bitActive = cbprod.bitActive, bitInternet = cbprod.bitInternet }).Union( from stprod in ctx.tblStore_Product_PaymentTemplate select new { intProductId = stprod.intProductID, bitActive = stprod.bitActive, bitInternet = stprod.bitInternet } ).Distinct() on produtos.intProductID equals filialprodutospg.intProductId //join filialprodutospg in ctx.tblStore_Product_PaymentTemplate on produtos.intProductID equals filialprodutospg.intProductID //join cr in ctx.mview_Cronograma on cursos.intCourseID equals cr.intCourseID into dates where pessoas.intClientID == intClientID && (produto == 0 || produto == produtos.intProductGroup1) && (lanos.Contains(cursos.intYear ?? 0)) && ((bool)filialprodutospg.bitActive || (bool)filialprodutospg.bitInternet) && ( ((adimplentes == 0) && ( ordemvenda.intStatus == (int)OrdemVenda.StatusOv.Ativa || ordemvenda.intStatus == (int)OrdemVenda.StatusOv.Carencia || ( ordemvenda.intStatus == (int)OrdemVenda.StatusOv.Cancelada && pgCliente ) )) || ((ordemvenda.intStatus == (int)OrdemVenda.StatusOv.Ativa) && ordemvenda.intStatus2 == (int)OrdemVenda.StatusOv.Adimplente) ) //&& filiais.Contains(ordemvenda.intStoreID) select new Turma { IdProduto = produtos.intProductGroup1 ?? 0, ID = produtos.intProductID, Nome = produtos.txtName, Inicio = ctx.mview_Cronograma.Where(x => x.intCourseID == cursos.intCourseID).Min(y => y.dteDateTime), //(dates.Count() > 0) ? dates.Min(d => d.dteDateTime) : new DateTime(), Fim = ctx.mview_Cronograma.Where(x => x.intCourseID == cursos.intCourseID).Max(y => y.dteDateTime) }); var lst = new Turmas(); lst.AddRange(result.Distinct().ToList()); return(lst); }