Esempio n. 1
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Request.QueryString["due"] != null)
            {
                using (var ws = new ServicoSiscomex.WsDUE())
                {
                    try
                    {
                        var dadosCompletos = new ServicoSiscomex.DueDadosCompletos();

                        dadosCompletos = ws.ObterDadosCompletos(Request.QueryString["due"].ToString(), ConfigurationManager.AppSettings["CpfCertificado"].ToString());
                    }
                    catch (Exception ex)
                    {
                    }
                }
            }
        }
Esempio n. 2
0
        public RetornoSiscomex Retificar(ModelStateDictionary ModelState)
        {
            this.DUE = documentoUnicoExportacaoDAO.ObterDUEPorId(this.DUEId);
            var retorno = new ServicoSiscomex.RetornoSiscomex();

            using (var ws = new ServicoSiscomex.WsDUE())
            {
                ws.Timeout = 900000;
                XmlDocument documentoXML = new XmlDocument();
                var         xml          = documentoUnicoExportacaoDAO.ObterUltimoXMLGerado(this.DUEId);
                documentoXML.LoadXml(xml);

                var cpfCertificado     = _certificadoDAO.ObterCpfCertificado(this.DUE.DocumentoDeclarante);
                var documentoFormatado = string.Empty;

                if (string.IsNullOrEmpty(cpfCertificado))
                {
                    if (!string.IsNullOrEmpty(this.DUE.DocumentoDeclarante))
                    {
                        if (this.DUE.DocumentoDeclarante.Length == 14)
                        {
                            documentoFormatado = Convert.ToUInt64(this.DUE.DocumentoDeclarante).ToString(@"00\.000\.000\/0000-00");
                        }
                        else
                        {
                            documentoFormatado = Convert.ToUInt64(this.DUE.DocumentoDeclarante).ToString(@"000\.000\.000\-00");
                        }
                    }

                    var cnpjExportador = this.DUE.Itens
                                         .Select(c => c.Exportador?.Documento)
                                         .Distinct()
                                         .FirstOrDefault();

                    cpfCertificado = _certificadoDAO.ObterCpfCertificado(cnpjExportador);

                    if (string.IsNullOrEmpty(cpfCertificado))
                    {
                        if (!string.IsNullOrEmpty(cnpjExportador))
                        {
                            documentoFormatado = Convert.ToUInt64(cnpjExportador).ToString(@"00\.000\.000\/0000-00");
                        }

                        ModelState.AddModelError(string.Empty, $"Certificado Digital para o CNPJ {documentoFormatado} não encontrado");
                        return(retorno);
                    }
                }

                if (this.DUE.EnviadoSiscomex == 0)
                {
                    retorno = ws.EnviarDUESemNF(xml, cpfCertificado);
                }
                else
                {
                    if (this.DUE.Completa > 0 || this.DUE.CriadoPorNF > 0 || this.DUE.Itens.Any(c => !string.IsNullOrEmpty(c.NF)))
                    {
                        var parametros = _parametrosDAO.ObterParametros();

                        if (parametros.EnvioRetificacaoSemServico > 0)
                        {
                            retorno = EnvioRetificacao.EnviarSemServico(documentoXML.InnerXml, this.DUE.DUE.Replace("-", ""), cpfCertificado).GetAwaiter().GetResult();
                        }
                        else
                        {
                            retorno = ws.EnviarRetificacao(xml, this.DUE.DUE.Replace("-", ""), cpfCertificado);
                        }
                    }
                }

                var xmlEnviado = xml;

                xmlEnviado = xmlEnviado.Replace("\r\n", string.Empty);
                xmlEnviado = System.Text.RegularExpressions.Regex.Replace(xmlEnviado, @"\t|\n|\r", "");
                xmlEnviado = xmlEnviado.Replace("      ", " ");
                xmlEnviado = xmlEnviado.Replace("    ", " ");
                xmlEnviado = xmlEnviado.Replace("   ", " ");
                xmlEnviado = xmlEnviado.Replace("  ", " ");
                xmlEnviado = xmlEnviado.Replace(Environment.NewLine, "");

                if (retorno.Sucesso)
                {
                    if (this.DUE.EnviadoSiscomex == 0)
                    {
                        documentoUnicoExportacaoDAO.AtualizarInformacoesEnvio(this.DUE.Id, retorno.DUE, retorno.RUC, retorno.ChaveDeAcesso, xmlEnviado, retorno.XmlRetorno, 1);
                    }
                    else
                    {
                        documentoUnicoExportacaoDAO.MarcarComoRetificado(this.DUE.Id);
                    }
                }
                else
                {
                    if (retorno.Criticas != null)
                    {
                        foreach (var erro in retorno.Criticas)
                        {
                            ModelState.AddModelError(string.Empty, "Siscomex: " + erro.message);
                        }
                    }
                    else
                    {
                        ModelState.AddModelError(string.Empty, "Siscomex: " + retorno.Message);
                    }

                    documentoUnicoExportacaoDAO.AtualizarInformacoesErro(this.DUE.Id, xmlEnviado, retorno.XmlRetorno);
                }
            }
            return(retorno);
        }