/// <summary> /// Apaga os dados da parcela. /// </summary> /// <param name="parcela"></param> /// <returns></returns> public Colosoft.Business.DeleteResult ApagarParcela(Entidades.Parcelas parcela) { parcela.Require("parcela").NotNull(); using (var session = SourceContext.Instance.CreateSession()) { var resultado = parcela.Delete(session); if (!resultado) { return(resultado); } return(session.Execute(false).ToDeleteResult()); } }
/// <summary> /// Crias as parcelas que não devem ser usadas associadas a parcela informada. /// </summary> /// <param name="parcela"></param> /// <returns></returns> IEnumerable <Entidades.ParcelasNaoUsar> Entidades.IProvedorParcelasNaoUsar.CriarParcelasNaoUsar(Entidades.Parcelas parcela) { var resultado = new List <Entidades.ParcelasNaoUsar>(); SourceContext.Instance.CreateMultiQuery() // Consulta os clientes para criar a associação .Add(SourceContext.Instance.CreateQuery() .From <Data.Model.Cliente>() .Select("IdCli"), (sender, query, result) => resultado.AddRange(result.Select(f => new Entidades.ParcelasNaoUsar { IdParcela = parcela.IdParcela, IdCliente = f.GetInt32(0) }))) // Consulta os fornecedores para criar a associação .Add(SourceContext.Instance.CreateQuery() .From <Data.Model.Fornecedor>() .Select("IdFornec"), (sender, query, result) => resultado.AddRange(result.Select(f => new Entidades.ParcelasNaoUsar { IdParcela = parcela.IdParcela, IdFornecedor = f.GetInt32(0) }))) .Execute(); return(resultado); }
/// <summary> /// Valida a existencia da parcela. /// </summary> /// <param name="parcelas"></param> /// <returns></returns> IMessageFormattable[] Entidades.IValidadorParcelas.ValidaExistencia(Entidades.Parcelas parcelas) { var mensagens = new List <string>(); // Handler para tratar o resultado da consulta de validação var tratarResultado = new Func <string, Colosoft.Query.QueryCallBack>(mensagem => (sender, query, result) => { if (result.Select(f => f.GetInt32(0)).FirstOrDefault() > 0 && !mensagens.Contains(mensagem)) { mensagens.Add(mensagem); } }); var consulta = SourceContext.Instance.CreateMultiQuery(); var adicionaConsulta = new Action <Type, string, string, char>((tipo, nomeCampo, nome, genero) => { consulta.Add(SourceContext.Instance.CreateQuery() .From(new Colosoft.Query.EntityInfo(tipo.FullName)) .Where(String.Format("{0}=?id", nomeCampo)) .Add("?id", parcelas.IdParcela) .Count(), tratarResultado(String.Format( "Esta parcela não pode ser excluída por possuir {0} relacionad{1}s à mesma. Referencia: {2}.", nome, genero, nomeCampo))); }); adicionaConsulta(typeof(Data.Model.Cliente), "TipoPagto", "clientes", 'o'); adicionaConsulta(typeof(Data.Model.Fornecedor), "TipoPagto", "fornecedores", 'o'); adicionaConsulta(typeof(Data.Model.LiberarPedido), "IdParcela", "liberações de pedidos", 'a'); adicionaConsulta(typeof(Data.Model.ProdutoFornecedorCotacaoCompra), "IdParcela", "cotações de compras", 'a'); adicionaConsulta(typeof(Data.Model.Pedido), "IdParcela", "pedidos", 'o'); consulta.Execute(); #region Parcelas não usar cliente var quantidadeParcelasCliente = SourceContext.Instance.CreateQuery() .From <Data.Model.ParcelasNaoUsar>() .Where("IdParcela=?idParcela AND IdCliente IS NOT NULL") .Add("?idParcela", parcelas.IdParcela) .Execute().Count(); var quantidadeCliente = SourceContext.Instance.CreateQuery() .From <Data.Model.Cliente>() .Execute().Count(); if (quantidadeParcelasCliente != quantidadeCliente) { tratarResultado("Esta parcela não pode ser excluída por possuir restrições de parcela por cliente relacionados à mesma."); } #endregion #region Parcelas não usar fornecedor var quantidadeParcelasFornecedor = SourceContext.Instance.CreateQuery() .From <Data.Model.ParcelasNaoUsar>() .Where("IdParcela=?idParcela AND IdFornecedor IS NOT NULL") .Add("?idParcela", parcelas.IdParcela) .Execute().Count(); var quantidadeFornecedor = SourceContext.Instance.CreateQuery() .From <Data.Model.Fornecedor>() .Execute().Count(); if (quantidadeParcelasFornecedor != quantidadeFornecedor) { tratarResultado("Esta parcela não pode ser excluída por possuir restrições de parcela por fornecedor relacionados à mesma."); } #endregion return(mensagens.Select(f => f.GetFormatter()).ToArray()); }