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