Example #1
0
        /// <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());
            }
        }
Example #2
0
        /// <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);
        }
Example #3
0
        /// <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());
        }