/// <summary> /// Salva a chave de acesso de um CT-e /// </summary> /// <param name="chaveAcessoCte"></param> /// <returns></returns> public Colosoft.Business.SaveResult SalvarChaveAcesso(Entidades.Cte.ChaveAcessoCte chaveAcessoCte) { using (var session = SourceContext.Instance.CreateSession()) { var resultado = chaveAcessoCte.Save(session); if (!resultado) { return(resultado); } return(session.Execute(false).ToSaveResult()); } }
/// <summary> /// Apaga uma chave de acesso do CT-e do sistema /// </summary> /// <param name="chaveAcessoCte"></param> /// <returns></returns> public Colosoft.Business.DeleteResult ApagarChaveAcesso(Entidades.Cte.ChaveAcessoCte chaveAcessoCte) { chaveAcessoCte.Require("chaveAcessoCte").NotNull(); using (var session = SourceContext.Instance.CreateSession()) { var resultado = chaveAcessoCte.Delete(session); if (!resultado) { return(resultado); } return(session.Execute(false).ToDeleteResult()); } }
/// <summary> /// Valida a atualização da chave de acesso. /// </summary> /// <param name="chaveAcessoCte"></param> /// <returns></returns> IMessageFormattable[] Entidades.Cte.IValidadorChaveAcesso.ValidaAtualizacao(Entidades.Cte.ChaveAcessoCte chaveAcessoCte) { var mensagens = new List <string>(); // Handler para tratar o resultado da consulta de validação var tratarResultado = new Func <string, Colosoft.Query.QueryCallBack>(mensagem => (sender, query, result) => { if (result.Select(f => f.GetInt32(0)).FirstOrDefault() > 0 && !mensagens.Contains(mensagem)) { mensagens.Add(mensagem); } }); SourceContext.Instance.CreateMultiQuery() //Verifica se o ct-e informado esta na situação aberto .Add(SourceContext.Instance.CreateQuery() .From <Glass.Data.Model.Cte.ConhecimentoTransporte>() .Where("IdCte=?id AND Situacao <> ?sit") .Add("?sit", Glass.Data.Model.Cte.ConhecimentoTransporte.SituacaoEnum.Aberto) .Add("?id", chaveAcessoCte.IdCte) .Count(), tratarResultado("O CT-e informado não esta na situação aberto.")) //Verifica se o ct-e informado é de saída .Add(SourceContext.Instance.CreateQuery() .From <Glass.Data.Model.Cte.ConhecimentoTransporte>() .Where("IdCte=?id AND TipoDocumentoCte <> ?tipo") .Add("?tipo", Glass.Data.Model.Cte.ConhecimentoTransporte.TipoDocumentoCteEnum.Saida) .Add("?id", chaveAcessoCte.IdCte) .Count(), tratarResultado("O CT-e informado não é de saída.")) .Execute(); return(mensagens.Select(f => f.GetFormatter()).ToArray()); }