示例#1
0
        /// <summary>
        /// Apaga a categoria de conta.
        /// </summary>
        /// <param name="categoriaConta"></param>
        /// <returns></returns>
        public Colosoft.Business.DeleteResult ApagarCategoriaConta(Entidades.CategoriaConta categoriaConta)
        {
            categoriaConta.Require("categoriaConta").NotNull();

            // Verifica se esta categoria está sendo usada em algum grupo de conta
            if (SourceContext.Instance.CreateQuery()
                .From <Data.Model.GrupoConta>()
                .Where("IdCategoriaConta=?id")
                .Add("?id", categoriaConta.IdCategoriaConta)
                .ExistsResult())
            {
                return(new Colosoft.Business.DeleteResult(false,
                                                          "Esta categoria não pode ser excluída por haver grupos de conta relacionadas à mesma.".GetFormatter()));
            }

            using (var session = SourceContext.Instance.CreateSession())
            {
                var resultado = categoriaConta.Delete(session);
                if (!resultado)
                {
                    return(resultado);
                }

                return(session.Execute(false).ToDeleteResult());
            }
        }
示例#2
0
        /// <summary>
        /// Salva os dados da categoria de conta.
        /// </summary>
        /// <param name="categoriaConta"></param>
        /// <returns></returns>
        public Colosoft.Business.SaveResult SalvarCategoriaConta(Entidades.CategoriaConta categoriaConta)
        {
            categoriaConta.Require("categoriaConta").NotNull();

            if (categoriaConta.IdCategoriaConta > 0)
            {
                categoriaConta.DataModel.ExistsInStorage = true;
            }

            // Verifica se um novo registro
            if (!categoriaConta.ExistsInStorage)
            {
                var ultimoNumeroSequencia = SourceContext.Instance.CreateQuery()
                                            .From <Data.Model.CategoriaConta>()
                                            .Select("MAX(NumeroSequencia)")
                                            .Execute()
                                            .Select(f => f.GetInt32(0))
                                            .FirstOrDefault();

                categoriaConta.NumeroSequencia = ultimoNumeroSequencia + 1;
            }

            using (var session = SourceContext.Instance.CreateSession())
            {
                Colosoft.Business.SaveResult resultado = null;

                // Verifica se é uma atualização
                if (categoriaConta.ExistsInStorage)
                {
                    if (categoriaConta.Tipo == null)
                    {
                        return(new Colosoft.Business.SaveResult(false, "O tipo da categoria não pode ser vazio.".GetFormatter()));
                    }

                    //Inativa os Grupos Associados a categoria caso a mesma estaja sendo inativada
                    if (categoriaConta.Situacao == Situacao.Inativo)
                    {
                        var grupos = SourceContext.Instance.CreateQuery()
                                     .From <Data.Model.GrupoConta>()
                                     .Where("IdCategoriaConta = " + categoriaConta.IdCategoriaConta)
                                     .ProcessResult <Entidades.GrupoConta>();

                        foreach (var g in grupos)
                        {
                            var planos = SourceContext.Instance.CreateQuery()
                                         .From <Data.Model.PlanoContas>()
                                         .Where("IdGrupo = " + g.IdGrupo)
                                         .ProcessResult <Entidades.PlanoContas>();

                            foreach (var p in planos)
                            {
                                p.Situacao = Situacao.Inativo;

                                if (!(resultado = p.Save(session)))
                                {
                                    return(resultado);
                                }
                            }

                            g.Situacao = Situacao.Inativo;

                            if (!(resultado = g.Save(session)))
                            {
                                return(resultado);
                            }
                        }
                    }

                    // Retira planos de contas de fornecedores que não sejam da categoria de débito
                    session.Update <Data.Model.Fornecedor>(new Data.Model.Fornecedor
                    {
                        // Limpa o campo da conta do fornecedor
                        IdConta = null
                    }, Colosoft.Query.ConditionalContainer.Parse("IdConta IN (?subConsulta)")
                                                           .Add("?subConsulta",
                                                                SourceContext.Instance.CreateQuery()
                                                                .From <Data.Model.PlanoContas>("p")
                                                                .Select("p.IdConta")
                                                                .InnerJoin <Data.Model.GrupoConta>("p.IdGrupo = g.IdGrupo", "g")
                                                                .LeftJoin <Data.Model.CategoriaConta>("g.IdCategoriaConta = c.IdCategoriaConta", "c")
                                                                .Where(
                                                                    "p.Situacao = ?situacao1 OR g.Situacao = ?situacao1 OR (c.Tipo <> ?tipo1 AND c.Tipo <> ?tipo2)")
                                                                .Add("?situacao1", Glass.Situacao.Inativo)
                                                                .Add("?situacao2", Glass.Situacao.Inativo)
                                                                .Add("?tipo1", Data.Model.TipoCategoriaConta.DespesaVariavel)
                                                                .Add("?tipo2", Data.Model.TipoCategoriaConta.DespesaFixa)),
                                                           "IdConta");
                }

                resultado = categoriaConta.Save(session);

                return(!resultado ? resultado : session.Execute(false).ToSaveResult());
            }
        }