Ejemplo n.º 1
0
        /// <summary>
        /// Apaga os dados do subgrupo.
        /// </summary>
        public Colosoft.Business.DeleteResult ApagarSubgrupoProduto(Entidades.SubgrupoProd subgrupoProduto)
        {
            subgrupoProduto.Require("subgrupoProduto").NotNull();

            using (var session = SourceContext.Instance.CreateSession())
            {
                var resultado = subgrupoProduto.Delete(session);

                if (!resultado)
                {
                    return(resultado);
                }

                return(session.Execute(false).ToDeleteResult());
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Valida a existencia do subgrupo de produtos.
        /// </summary>
        IMessageFormattable[] Entidades.IValidadorSubgrupoProd.ValidaExistencia(Entidades.SubgrupoProd subgrupoProd)
        {
            if (SourceContext.Instance.CreateQuery()
                .From <Data.Model.Produto>()
                .Where("IdSubgrupoProd=?id")
                .Add("?id", subgrupoProd.IdSubgrupoProd)
                .ExistsResult())
            {
                return new IMessageFormattable[]
                       {
                           "Este subgrupo não pode ser excluído. Existem produtos relacionados ao mesmo.".GetFormatter()
                       }
            }
            ;

            return(new IMessageFormattable[0]);
        }

        /// <summary>
        /// Valida a atualização do cliente.
        /// </summary>
        IMessageFormattable[] Entidades.IValidadorSubgrupoProd.ValidaAtualizacao(Entidades.SubgrupoProd subgrupoProd)
        {
            if (subgrupoProd.ProdutosEstoque && subgrupoProd.GeraVolume)
            {
                return new[]
                       {
                           string.Format("Não é possível gerar volume de produtos para estoque. O subgrupo não pode ser {0} com as opções Produtos para Estoque e Gera Volume.",
                                         subgrupoProd.ExistsInStorage ? "salvo" : "inserido").GetFormatter()
                       }
            }
            ;

            /* Chamado 37536. */
            if (SourceContext.Instance.CreateQuery()
                .From <Data.Model.GrupoProd>("gp")
                .InnerJoin <Data.Model.DescontoAcrescimoCliente>("gp.IdGrupoProd=dac.IdGrupoProd", "dac")
                .Where("gp.IdGrupoProd=?idGrupoProd AND dac.IdSubgrupoProd IS NULL")
                .Add("?idGrupoProd", subgrupoProd.IdGrupoProd)
                .ExistsResult())
            {
                return new IMessageFormattable[]
                       {
                           ("Não é possível inserir subgrupo neste grupo, pois, o mesmo possui desconto/acréscimo configurado na tabela de cliente.").GetFormatter()
                       }
            }
            ;

            /* Chamado 37411. */
            if (subgrupoProd.ExistsInStorage && subgrupoProd.TipoSubgrupo == Data.Model.TipoSubgrupoProd.Modulado)
            {
                if (SourceContext.Instance.CreateQuery()
                    .From <Data.Model.Produto>("p")
                    .LeftJoin <Data.Model.ProdutoBaixaEstoque>("p.IdProd=pbe.IdProd", "pbe")
                    .Where("IdSubgrupoProd=?id AND pbe.IdProd IS NULL")
                    .Add("?id", subgrupoProd.IdSubgrupoProd)
                    .ExistsResult())
                {
                    return new IMessageFormattable[]
                           {
                               ("Um ou mais produtos desse subgrupo não possuem matéria-prima associada. " +
                                "Todos os produtos associados ao subgrupo do tipo Modulado devem ter matéria-prima associada.").GetFormatter()
                           }
                }
            }
            ;

            /* Chamado 39865. */
            if (subgrupoProd.ProdutosEstoque && Data.DAL.GrupoProdDAO.Instance.IsVidro(subgrupoProd.IdGrupoProd) &&
                subgrupoProd.TipoCalculo != Data.Model.TipoCalculoGrupoProd.Qtd &&
                subgrupoProd.TipoCalculo != Data.Model.TipoCalculoGrupoProd.M2Direto)
            {
                return new[]
                       {
                           "Não é possível configurar um subgrupo do grupo Vidro com a opção produtos para estoque caso o tipo de cálculo não seja Quantidade ou M2 Direto.".GetFormatter()
                       }
            }
            ;

            /* Chamado 38721. */
            if (subgrupoProd.Descricao.IsNullOrEmpty())
            {
                return new[]
                       {
                           "Informe o nome do subgrupo.".GetFormatter()
                       }
            }
            ;

            if (subgrupoProd.ExistsInStorage && subgrupoProd.TipoSubgrupo == Data.Model.TipoSubgrupoProd.VidroLaminado)
            {
                if (SourceContext.Instance.CreateQuery()
                    .From <Data.Model.Produto>("p")
                    .LeftJoin <Data.Model.ProdutoBaixaEstoque>("p.IdProd=pbe.IdProd", "pbe")
                    .Where("IdSubgrupoProd=?id AND pbe.IdProd IS NULL")
                    .Add("?id", subgrupoProd.IdSubgrupoProd)
                    .ExistsResult())
                {
                    return new IMessageFormattable[]
                           {
                               ("Um ou mais produtos desse subgrupo não possuem matéria-prima associada. " +
                                "Todos os produtos associados ao subgrupo do tipo Laminado devem ter matéria-prima associada.").GetFormatter()
                           }
                }
                ;
            }

            return(new IMessageFormattable[0]);
        }

        #endregion

        #endregion
    }
}