Beispiel #1
0
        /// <summary>
        /// Envia as NFSe para o provedor da cidade.
        /// </summary>
        /// <param name="lote">Numero do lote.</param>
        /// <param name="sincrono">Se for informado <c>true</c> o envio será sincrono.</param>
        /// <param name="imprimir">Se for informado <c>true</c> imprime as RPS, se o envio foi executado com sucesso.</param>
        /// <returns>RetornoWebservice.</returns>
        public RetornoWebservice Enviar(int lote, bool sincrono = false, bool imprimir = false)

        {
            Guard.Against <ACBrException>(NotasFiscais.Count < 1, "ERRO: Nenhuma RPS adicionada ao Lote");

            Guard.Against <ACBrException>(NotasFiscais.Count > 50,
                                          $"ERRO: Conjunto de RPS transmitidos (máximo de 50 RPS) excedido.{Environment.NewLine}" +
                                          $"Quantidade atual: {NotasFiscais.Count}");


            var oldProtocol = ServicePointManager.SecurityProtocol;

            try
            {
                ServicePointManager.SecurityProtocol = protocolType;
                ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(ValidateServerCertificate);

                using (var provider = ProviderManager.GetProvider(Configuracoes))
                {
                    if (provider.Certificado.IsNull())
                    {
                        provider.SetCertificate(Certificado);
                    }
                    var ret = sincrono
                        ? provider.EnviarSincrono(lote, NotasFiscais)
                        : provider.Enviar(lote, NotasFiscais);

                    if (ret.Sucesso && DANFSe != null && imprimir)
                    {
                        DANFSe.Imprimir();
                    }

                    return(ret);
                }
            }
            catch (Exception exception)
            {
                this.Log().Error("[Enviar]", exception);
                throw;
            }
            finally
            {
                ServicePointManager.SecurityProtocol = oldProtocol;
            }
        }
Beispiel #2
0
        /// <summary>
        /// Envia as NFSe para o provedor da cidade.
        /// </summary>
        /// <param name="lote">Numero do lote.</param>
        /// <param name="sincrono">Se for informado <c>true</c> o envio será sincrono.</param>
        /// <param name="imprimir">Se for informado <c>true</c> imprime as RPS, se o envio foi executado com sucesso.</param>
        /// <returns>RetornoWebservice.</returns>
        public RetornoWebservice Enviar(int lote, bool sincrono = false, bool imprimir = false)

        {
            Guard.Against <ACBrException>(NotasFiscais.Count < 1, "ERRO: Nenhuma RPS adicionada ao Lote");

            Guard.Against <ACBrException>(NotasFiscais.Count > 50,
                                          $"ERRO: Conjunto de RPS transmitidos (máximo de 50 RPS) excedido.{Environment.NewLine}" +
                                          $"Quantidade atual: {NotasFiscais.Count}");

            using (var provider = ProviderManager.GetProvider(Configuracoes))
            {
                var ret = sincrono ? provider.EnviarSincrono(lote, NotasFiscais) : provider.Enviar(lote, NotasFiscais);

                if (ret.Sucesso && DANFSe != null && imprimir)
                {
                    DANFSe.Imprimir();
                }

                return(ret);
            }
        }
 /// <summary>
 /// Imprime o PDF do DANFse
 /// </summary>
 public void ImprimirPDF()
 {
     Guard.Against <ArgumentNullException>(DANFSe == null, "Nenhum componente de impressão especificado.");
     DANFSe?.ImprimirPDF();
 }