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