/// <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()); } }
/// <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 } }