Exemple #1
0
        /// <summary>
        /// Apaga os dados do CFOP.
        /// </summary>
        /// <param name="cfop"></param>
        /// <returns></returns>
        public Colosoft.Business.DeleteResult ApagarCfop(Entidades.Cfop cfop)
        {
            cfop.Require("cfop").NotNull();

            // Verifica se esta CFOP está sendo utilizada em alguma nota
            if (SourceContext.Instance.CreateQuery()
                .From <Data.Model.NotaFiscal>("nf")
                .InnerJoin <Data.Model.NaturezaOperacao>("nf.IdNaturezaOperacao = n.IdNaturezaOperacao", "n")
                .Where("n.IdCfop=?id").Add("?id", cfop.IdCfop)
                .ExistsResult())
            {
                return(new Colosoft.Business.DeleteResult(false,
                                                          "Este CFOP não pode ser excluído por haver notas fiscais relacionadas ao mesmo.".GetFormatter()));
            }

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

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

                return(session.Execute(false).ToDeleteResult());
            }
        }
Exemple #2
0
        /// <summary>
        /// Salva os dados do CFOP.
        /// </summary>
        /// <param name="cfop"></param>
        /// <returns></returns>
        public Colosoft.Business.SaveResult SalvarCfop(Entidades.Cfop cfop)
        {
            cfop.Require("cfop").NotNull();

            if (!cfop.ExistsInStorage &&
                SourceContext.Instance.CreateQuery()
                .From <Data.Model.Cfop>()
                .Where("CodInterno=?codInterno")
                .Add("?codInterno", cfop.CodInterno)
                .ExistsResult())
            {
                return(new Colosoft.Business.SaveResult(false, "Este CFOP já foi cadastrado.".GetFormatter()));
            }

            // Se o código do CFOP estiver sendo alterado, não permite realizar esta alteração
            // se este CFOP já estiver sendo usado por alguma nota fiscal
            if (cfop.ExistsInStorage &&
                cfop.ChangedProperties.Any(f => f == "CodInterno") &&
                SourceContext.Instance.CreateQuery()
                .From <Data.Model.NotaFiscal>("nf")
                .InnerJoin <Data.Model.NaturezaOperacao>("nf.IdNaturezaOperacao = n.IdNaturezaOperacao", "n")
                .Where("n.IdCfop=?id")
                .Add("?id", cfop.IdCfop)
                .ExistsResult())
            {
                return(new Colosoft.Business.SaveResult(false,
                                                        "O código deste CFOP não pode ser alterado por haver notas fiscais relacionadas ao mesmo.".GetFormatter()));
            }

            using (var session = SourceContext.Instance.CreateSession())
            {
                if (!cfop.ExistsInStorage && cfop.NaturezasOperacao.Count == 0)
                {
                    // Insere um natureza a operação padrão
                    cfop.NaturezasOperacao.Add(new Entidades.NaturezaOperacao());
                }

                var resultado = cfop.Save(session);

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

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