示例#1
0
        /// <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());
            }
        }
示例#2
0
        /// <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());
            }
        }
示例#3
0
        /// <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());
        }