Пример #1
0
        /// <summary>
        /// Busca o grupo pela descrição, se não encontrar, cria um novo com a descrição e o IdGrupo passado.
        /// </summary>
        /// <param name="idGrupo"></param>
        /// <param name="descricao"></param>
        /// <returns></returns>
        public Entidades.PlanoContas RecuperaOuCriaPlanoContas(int idGrupo, string descricao)
        {
            var planoConta = ObterPlanoContaPelaDescricao(descricao);

            if (planoConta == null || !planoConta.ExistsInStorage)
            {
                planoConta           = new Entidades.PlanoContas();
                planoConta.Descricao = descricao;
                planoConta.IdGrupo   = idGrupo;
                planoConta.Situacao  = Situacao.Ativo;
            }
            return(planoConta);
        }
Пример #2
0
        /// <summary>
        /// Apaga o plano de contas.
        /// </summary>
        /// <param name="planoContas"></param>
        /// <returns></returns>
        public Colosoft.Business.DeleteResult ApagarPlanoContas(Entidades.PlanoContas planoContas)
        {
            planoContas.Require("planoContas").NotNull();

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

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

                return(session.Execute(false).ToDeleteResult());
            }
        }
Пример #3
0
        /// <summary>
        /// Valida a existencia do plano de contas.
        /// </summary>
        /// <param name="planoContas"></param>
        /// <returns></returns>
        IMessageFormattable[] Entidades.IValidadorPlanoContas.ValidaExistencia(Entidades.PlanoContas planoContas)
        {
            if (PlanoContasEmUso(planoContas.IdConta, false))
            {
                return new IMessageFormattable[]
                       {
                           "Este plano de conta não pode ser excluído. Existem registros relacionados ao mesmo.".GetFormatter()
                       }
            }
            ;

            return(new IMessageFormattable[0]);
        }

        #endregion

        #endregion
    }
Пример #4
0
        /// <summary>
        /// Salva os dados do plano de contas.
        /// </summary>
        /// <param name="planoContas"></param>
        /// <returns></returns>
        public Colosoft.Business.SaveResult SalvarPlanoContas(Entidades.PlanoContas planoContas)
        {
            planoContas.Require("planoContas").NotNull();

            // Tratamento feito caso o identificador seja positivo e a instancia
            // esteja identifica como se não existisse no banco
            if (!planoContas.ExistsInStorage && planoContas.IdConta > 0)
            {
                planoContas.DataModel.ExistsInStorage = true;
            }

            // Verifica se é um novo plano de contas
            if (!planoContas.ExistsInStorage)
            {
                var idContaGrupo = SourceContext.Instance.CreateQuery()
                                   .From <Data.Model.PlanoContas>()
                                   .Select("MAX(IdContaGrupo), COUNT(*)")
                                   .Where("IdGrupo=?idGrupo")
                                   .Add("?idGrupo", planoContas.IdGrupo)
                                   .Execute()
                                   .Select(f => f.IsDBNull(0) ? 0 : f.GetInt32(0))
                                   .FirstOrDefault() + 1;

                planoContas.IdContaGrupo = idContaGrupo;
            }

            //Se um plano contabil for informado verifica se ja nao a um outro vinculo
            if (planoContas.IdContaContabil.GetValueOrDefault(0) > 0)
            {
                var planoAntigo = ObtemPlanoContas(planoContas.IdConta);

                if (planoAntigo.IdContaContabil.GetValueOrDefault(0) > 0 && planoAntigo.IdContaContabil.Value != planoContas.IdContaContabil.Value)
                {
                    return(new Colosoft.Business.SaveResult(false, "O plano de contas informado já esta vinculado a um plano de contas contábil".GetFormatter()));
                }
            }

            using (var session = SourceContext.Instance.CreateSession())
            {
                // Verifica se está atualizando o grupo de conta
                if (planoContas.ExistsInStorage)
                {
                    // Retira planos de contas de fornecedores que não sejam da categoria de débito
                    session.Update <Data.Model.Fornecedor>(
                        new Data.Model.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 = ?situacao2 OR c.Tipo NOT IN (?tipo1, ?tipo2) OR g.IdCategoriaConta IS NULL")
                             .Add("?situacao1", Situacao.Inativo)
                             .Add("?situacao2", Situacao.Inativo)
                             .Add("?tipo1", Glass.Data.Model.TipoCategoriaConta.DespesaVariavel)
                             .Add("?tipo2", Glass.Data.Model.TipoCategoriaConta.DespesaFixa)
                             ),
                        "IdConta");
                }

                var resultado = planoContas.Save(session);

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

                return(session.Execute(false).ToSaveResult());
            }
        }