//=============/ METODOS MANUAIS /===============// private void atualizarTabela() { if (this.user_control.User_logado != null) { List <ESocial> ultimos = ESocialApp.getDocumentosUltimosDocumentos(this.user_control.User_logado.Id_servidor, 30); eSocialDataGrid.Rows.Clear(); foreach (ESocial documento in ultimos) { var index = eSocialDataGrid.Rows.Add(); eSocialDataGrid.Rows[index].Cells["id"].Value = documento.Id_servidor; eSocialDataGrid.Rows[index].Cells["data"].Value = documento.Data.ToString(); switch (documento.Status) { case 0: eSocialDataGrid.Rows[index].Cells["status"].Value = "nao assinada"; break; case 1: eSocialDataGrid.Rows[index].Cells["status"].Value = "processada"; break; case 2: eSocialDataGrid.Rows[index].Cells["status"].Value = "em nuvem"; break; default: eSocialDataGrid.Rows[index].Cells["status"].Value = "indefinido"; break; } } } }
private void subirDocumentosESocial(List <ESocial> documentos_processados) { int count = 1; int max = documentos_processados.Count; foreach (ESocial documento in documentos_processados) { this.log.log("Subindo " + count + " de " + max + "..."); //envia informações do documento à nuvem string retorno_servidor = contanto_wb.enviarXmlAssinado(this.user.Id_servidor, this.user.Hash, documento.Id_servidor, documento.Xml_base64, documento.Resposta_xml_base64, documento.Ambiente, this.user.Educont); JObject json = JObject.Parse(retorno_servidor); int erro = (int)json["erro"]; string retorno = (string)json["retorno"]; this.log.log("Retorno do WB Contando: " + erro + " - " + retorno); if (erro == 0) { ESocialApp.marcarComoArmazenadoEmNuvem(documento.id); } count++; } }
/// <summary> /// Processa os documentos assinando-os e enviando a receita /// </summary> private int processarDocumentosESocial(List <ESocial> documentos) { int count = 1; int max = documentos.Count; int doc_processado = 0; foreach (ESocial documento in documentos) { this.log.log("Processando " + count + " de " + max + "..."); XmlDocument resposta = new XmlDocument(); //assina e envia documento XmlDocument xml_assinado = ESocialControl.assinarXML(this.user.Certificado, documento.Xml_base64); string resposta_servidor = ConexaoEsocial.processar_eventos(xml_assinado, this.user.Certificado, documento.Ambiente); resposta.LoadXml(resposta_servidor); string cdResposta = resposta.GetElementsByTagName("cdResposta").Item(0).InnerText; string descResposta = resposta.GetElementsByTagName("descResposta").Item(0).InnerText; this.log.log("Resposta do servidor: " + cdResposta + " - " + descResposta); ESocialApp.novoDocumentoProcessado(documento, xml_assinado, resposta, this.user.Id); doc_processado++; count++; } return(doc_processado); }
public override void run() { try { while (true) { try { log.log("Iniciando verificação no webservice"); string retorno_servidor = contanto_wb.consultarXmls(user.Id_servidor, user.Hash, user.Educont); //teste //string xml_str = File.ReadAllText(@"D:\projetos\leitorESocial\esocial_documentos\assinado-contando.xml"); //xml_str = xml_str.Replace("<v1:", "<"); //xml_str = xml_str.Replace("</v1:", "</"); //xml_str = xml_str.Replace("<V1:", "<"); //xml_str = xml_str.Replace("</V1:", "</"); //XmlDocument xml = new XmlDocument(); //xml.LoadXml(xml_str); //xml = ESocialControl.retirarAssinaturaAntiga(xml); //fim teste //salva os documentos no banco List <ESocial> documentos_nao_processados = extrairXmlsRetornoServidor(retorno_servidor); if (documentos_nao_processados.Count > 0) { log.log(documentos_nao_processados.Count + " não processados encontrados. Iniciando processamento"); int doc_processados = processarDocumentosESocial(documentos_nao_processados); if (doc_processados > 0) { notificao_info(doc_processados + " novos documentos processados"); } } else { log.log("nenhum documento novo encontrado"); } //pega no máximo 10 xmls processados no banco para envio ao servidor List <ESocial> documentos_processados = ESocialApp.getDocumentosProcessados(10, user.Id_servidor); if (documentos_processados.Count > 0) { log.log(documentos_processados.Count + " processados encontrados. Iniciando envio à nuvem"); subirDocumentosESocial(documentos_processados); notificao_info(documentos_processados.Count + " novos documentos enviados ao servidor"); } else { log.log("nenhum novo documento processado encontrado"); } } catch (Exception ex) { this.log.log("Erro no processo de sicronização: " + ex.Message); notificao_erro(ex.Message); } //inicia espera this.log.log("Iniciando aguardo de " + this.Intervalo_minutos + " antes de iniciar um novo upload" + "\n====================//======================"); try { Thread.Sleep(this.Intervalo_minutos); } catch (ThreadAbortException) { this.log.log("Processo de " + this.log.Processo + " foi finalizada pelo usuário"); notificao_info("Processo de " + this.log.Processo + " foi finalizada pelo usuário"); return; } } } catch (ThreadAbortException) { this.log.log("Processo abortado"); } catch (Exception ex) { log.log("ERRO CRÍTICO: " + ex.Message); notificao_erro("ERRO CRÍTICO: " + ex.Message); } }
public void limparNotasUser(int user_id) { ESocialApp.limparNotasUser(user_id); }