public RevisionLogs(Data_Usuario usuario) { InitializeComponent(); data_Usuario = usuario; Data_Log data_Log = new Data_Log(); _data_Log = (IGetDataAsync)data_Log; }
private void btnGenerarResumen_Click(object sender, RoutedEventArgs e) { try { List <Data_Documentos> selected_data_Documentos = new List <Data_Documentos>(); foreach (var data_Documento in data_Documentos) { if (data_Documento.Selectable == true) { selected_data_Documentos.Add(data_Documento); } } if (selected_data_Documentos.Count() > 0) { string enviados = string.Empty; string noEnviados = string.Empty; string mensajeFinal = string.Empty; ProgressDialogResult result = ProgressWindow.Execute(padre, "Procesando...", () => { ProcesarEnvio procesarEnvio = new ProcesarEnvio(data_Usuario); mensajeFinal = procesarEnvio.PostResumen(selected_data_Documentos); }); LoadGrid(); CustomDialogWindow customDialogWindow = new CustomDialogWindow(); customDialogWindow.Buttons = CustomDialogButtons.OK; customDialogWindow.Caption = "Mensaje"; customDialogWindow.DefaultButton = CustomDialogResults.OK; customDialogWindow.InstructionHeading = "Resultados de la comunicación de baja"; customDialogWindow.InstructionIcon = CustomDialogIcons.Information; customDialogWindow.InstructionText = mensajeFinal; CustomDialogResults customDialogResults = customDialogWindow.Show(); } else { System.Windows.Forms.MessageBox.Show("Debe seleccionar al menos un documento", "Ninguna selección detectada", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } catch (Exception ex) { var msg = string.Concat(ex.InnerException?.Message, ex.Message); System.Windows.MessageBox.Show(msg, "Error al enviar el documento a sunat", MessageBoxButton.OK, MessageBoxImage.Error); data_Log = new Data_Log() { DetalleError = $"Detalle del error: {msg}", Comentario = "Error al enviar el documento a sunat desde la interfaz", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } }
public void LoadData() { try { Mouse.OverrideCursor = Cursors.Wait; Data_Documentos data_Documento = new Data_Documentos(IdDocumento); // IdDocumento variable global data_Documento.Read_Documento(); Data_CabeceraDocumento cabeceraDocumento = new Data_CabeceraDocumento(data_Documento.IdCabeceraDocumento); cabeceraDocumento.Read_CabeceraDocumento(); Data_Contribuyente Receptor = new Data_Contribuyente(cabeceraDocumento.IdReceptor); Receptor.Read_Contribuyente(); lblTipoDocumento.Content = data_Documento.TDDescripcion; if (!string.IsNullOrEmpty(cabeceraDocumento.FechaEmision.ToString())) { lblFechaRecepcion.Content = cabeceraDocumento.FechaEmision.ToString(); } else { lblFechaRecepcion.Content = "----/--/--"; } if (!string.IsNullOrEmpty(data_Documento.FechaEmisionSUNAT.ToString())) { lblFechaEmision.Content = data_Documento.FechaEmisionSUNAT.ToString(); } else { lblFechaEmision.Content = "----/--/--"; } lblCliente.Content = Receptor.NombreComercial; lblTotal.Content = cabeceraDocumento.ImporteTotalVenta.ToString() + " " + cabeceraDocumento.DescripcionMoneda; } catch (Exception ex) { MessageBox.Show($"Ha ocurrido un error al cargar los registros, detalle del error: {ex}", "Error al cargar los datos", MessageBoxButton.OK, MessageBoxImage.Error); var msg = string.Concat(ex.InnerException?.Message, ex.Message); Data_Log data_Log = new Data_Log() { DetalleError = $"Detalle del error: {msg}", Comentario = "Error al enviar el documento a sunat desde la interfaz", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } finally { Mouse.OverrideCursor = null; } }
private void btnMotivoBaja_Click(object sender, RoutedEventArgs e) { try { List <Data_Documentos> selected_data_Documentos = new List <Data_Documentos>(); foreach (var data_Documento in data_Documentos) { if (data_Documento.Selectable == true) { selected_data_Documentos.Add(data_Documento); } } switch (selected_data_Documentos.Count()) { case 0: System.Windows.Forms.MessageBox.Show("Debe seleccionar un documento", "Error de elección", MessageBoxButtons.OK, MessageBoxIcon.Information); break; case 1: if (!selected_data_Documentos[0].ComunicacionBaja) { PromtMotivoBaja promtMotivoBaja = new PromtMotivoBaja(data_Usuario, selected_data_Documentos[0].IdDocumento); promtMotivoBaja.ShowDialog(); LoadGrid(); } else { System.Windows.Forms.MessageBox.Show("Estimado dino-usuario, ya dio de baja a este documento, y ya no puede cambiar el motivo de baja del documento.", "Documento ya dado de baja", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } break; default: System.Windows.Forms.MessageBox.Show("Debe seleccionar sólo un documento", "Error de elección", MessageBoxButtons.OK, MessageBoxIcon.Information); break; } } catch (Exception ex) { var msg = string.Concat(ex.InnerException?.Message, ex.Message); System.Windows.MessageBox.Show(msg, "Error inesperado al elegir el documento", MessageBoxButton.OK, MessageBoxImage.Error); data_Log = new Data_Log() { DetalleError = $"Detalle del error: {msg}", Comentario = "Error inesperado al elegir el documento", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } }
private void btnValidar_Click(object sender, RoutedEventArgs e) { try { int documentosSinXML = 0; string mensajeFinal = string.Empty; XmlSchemaSet xmlSchemaSet = new XmlSchemaSet(); xmlSchemaSet.Add(null, @"D:\Jorge Luis\FEICONT21\pruebaHtml\SERCE\Common\Validation\UBL-Invoice-2.1.xsd"); XDocument document = XDocument.Load(@"D:\Jorge Luis\tempParaPruebasSunat\20541388061-01-F001-00004\20541388061-01-F001-00004.xml"); //XDocument document = XDocument.Load(@"D:\Jorge Luis\tempParaPruebasSunat\20541388061-01-F001-0000004\20541388061-01-F001-0000004.xml"); bool validationErrors = false; document.Validate(xmlSchemaSet, (s, ev) => { mensajeFinal = ev.Message; validationErrors = true; }); if (validationErrors) { mensajeFinal += mensajeFinal + "errores"; } else { mensajeFinal += mensajeFinal + "sin errores"; } CustomDialogWindow customDialogWindow = new CustomDialogWindow(); customDialogWindow.Buttons = CustomDialogButtons.OK; customDialogWindow.Caption = "Detalle"; customDialogWindow.DefaultButton = CustomDialogResults.OK; customDialogWindow.InstructionHeading = "Resultados de la descarga del documento(s)"; customDialogWindow.InstructionIcon = CustomDialogIcons.Information; customDialogWindow.InstructionText = mensajeFinal; CustomDialogResults customDialogResults = customDialogWindow.Show(); } catch (Exception ex) { var msg = string.Concat(ex.InnerException?.Message, ex.Message); data_Log = new Data_Log() { DetalleError = $"Detalle del error: {msg}", Comentario = "Error al enviar el documento a sunat desde la interfaz", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } }
private void btnGuardar_Click(object sender, RoutedEventArgs e) { Data_Documentos data_Documento = new Data_Documentos() { IdDocumento = IdDocumento, MotivoBaja = txtDetalleMotivoBaja.Text.ToString() }; if (!data_Documento.Update_Documento_OneColumn("[dbo].[Update_Documento_MotivoBaja]")) { Data_Log data_Log = new Data_Log() { DetalleError = "Error al actualizar el motivo de baja del documento", Comentario = "Error con la base de datos: [dbo].[Update_Documento_MotivoBaja]", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } else { Close(); } }
public async Task <List <Data_Log> > GetLogs() { var data_Logs = new List <Data_Log>(); try { Data_Log data_Log = new Data_Log() { Start_FechaRegistro = DateTime.Parse(datePick_inicio.SelectedDate.ToString()), End_FechaRegistro = DateTime.Parse(datePick_fin.SelectedDate.ToString()), IdUser_Empresa = data_Usuario.IdUser_Empresa }; GetDataAsync getDataAsync = await _data_Log.Read_List_Log(data_Log); data_Logs = getDataAsync.Data_Logs; } catch (Exception) { data_Logs = new List <Data_Log>(); } return(data_Logs); }
private void btnDescargarXML_Click(object sender, RoutedEventArgs e) { try { int documentosSinXML = 0; string mensajeFinal = string.Empty; List <Data_Documentos> selected_data_Documentos = new List <Data_Documentos>(); foreach (var data_Documento in data_Documentos) { if (data_Documento.Selectable == true) { selected_data_Documentos.Add(data_Documento); } if (data_Documento.EstadoSunat == "Pendiente") { documentosSinXML++; } } if (selected_data_Documentos.Count() > 0) { if (documentosSinXML > 0) { System.Windows.MessageBox.Show("Ha seleccionado uno o más documentos que aún no se envían a Sunat (Pendiente), por este motivo aún no se ha" + " generado su respectivo XML, envíe el(los) documentos y vuelva a intentarlo", "Documento sin XML", MessageBoxButton.OK, MessageBoxImage.Exclamation); } else { string pdfsNoEncontrados = string.Empty; string rutaDescarga = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); VistaFolderBrowserDialog dialog = new VistaFolderBrowserDialog(); dialog.Description = "Seleccione el directorio donde desea guardar los archivos."; dialog.UseDescriptionForTitle = true; if (!VistaFolderBrowserDialog.IsVistaFolderDialogSupported) { System.Windows.MessageBox.Show("Estimado usuario estas empleando una versión muy antigua de Windows, algunas funciones están restringidas, " + "tu documento será descargado en el directorio MIS DOCUMENTOS.", "Algunas funciones no están soportadas en tu sistema operativo", MessageBoxButton.OK, MessageBoxImage.Information); } else { var resultado = dialog.ShowDialog(); if (resultado.HasValue && resultado.Value) { rutaDescarga = dialog.SelectedPath; ProgressDialogResult result = ProgressWindow.Execute(padre, "Procesando...", () => { foreach (var selected_data_Documento in selected_data_Documentos) { var nombreArchivo = $"{data_Contribuyente.NroDocumento}-{selected_data_Documento.TipoDocumento}-{selected_data_Documento.SerieCorrelativo}"; if (!Directory.Exists($"{rutaDescarga}\\{nombreArchivo}")) { Directory.CreateDirectory($"{rutaDescarga}\\{nombreArchivo}"); } #region PDF try { if (!File.Exists($"{selected_data_Documento.Ruta}\\{nombreArchivo}\\{nombreArchivo}.pdf")) { pdfsNoEncontrados += $"{selected_data_Documento.SerieCorrelativo}, "; } else { File.Copy($"{selected_data_Documento.Ruta}\\{nombreArchivo}\\{nombreArchivo}.pdf", $"{rutaDescarga}\\{nombreArchivo}\\{nombreArchivo}.pdf", true); } } catch (Exception ex) { var msg = string.Concat(ex.InnerException?.Message, ex.Message); data_Log = new Data_Log() { DetalleError = $"Detalle del error: {msg}", Comentario = "Error al leer o guardar PDF de representación impresa", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } #endregion PDF DataTable datosDocumento = readGeneralData.GetDataTable("[dbo].[Query_Scalar_GetXml_Documento]", "@IdDocumento", selected_data_Documento.IdDocumento); DataRow row = datosDocumento.Rows[0]; File.WriteAllBytes($"{rutaDescarga}\\{nombreArchivo}\\{nombreArchivo}.xml", Convert.FromBase64String(row["XmlFirmado"].ToString())); if (!string.IsNullOrEmpty(row["CdrSunat"].ToString())) { File.WriteAllBytes($"{rutaDescarga}\\{nombreArchivo}\\R-{nombreArchivo}.zip", Convert.FromBase64String(row["CdrSunat"].ToString())); } datosDocumento.Clear(); } }); if (!string.IsNullOrEmpty(pdfsNoEncontrados)) { mensajeFinal = $"El(los) documento(s) xml fueron guardados en :{dialog.SelectedPath} pero no hemos podido encontrar la" + $" representación impresa de los siguientes documentos: {pdfsNoEncontrados}"; } else { mensajeFinal = $"El(los) documento(s) fueron guardados en :{dialog.SelectedPath}"; } CustomDialogWindow customDialogWindow = new CustomDialogWindow(); customDialogWindow.Buttons = CustomDialogButtons.OK; customDialogWindow.Caption = "Detalle"; customDialogWindow.DefaultButton = CustomDialogResults.OK; customDialogWindow.InstructionHeading = "Resultados de la descarga del documento(s)"; customDialogWindow.InstructionIcon = CustomDialogIcons.Information; customDialogWindow.InstructionText = mensajeFinal; CustomDialogResults customDialogResults = customDialogWindow.Show(); LoadGrid(); } } } } else { System.Windows.Forms.MessageBox.Show("Debe seleccionar al menos un documento"); } } catch (Exception ex) { var msg = string.Concat(ex.InnerException?.Message, ex.Message); System.Windows.MessageBox.Show(msg, "Error al descargar los archivos del documento", MessageBoxButton.OK, MessageBoxImage.Error); data_Log = new Data_Log() { DetalleError = $"Detalle del error: {msg}", Comentario = "Error al descargar los archivos del documento", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } }
/// <summary> /// 迁移数据 /// </summary> /// <param name="db"></param> /// <returns></returns> public static void AddList(DataContext db, DataTable dt, ref Data_Log log) { try { if (db.config.DbType == FastApp.DataDbType.SqlServer) { if (DataSchema.GetVersion(db) >= 10) { #region tvps using (var conn = new SqlConnection(db.config.ConnStr)) { conn.Open(); var cmd = conn.CreateCommand(); InitTvps(cmd, dt.TableName); cmd.CommandText = GetTvps(db, dt.TableName); var catParam = cmd.Parameters.AddWithValue(string.Format("@{0}", dt.TableName), dt); catParam.SqlDbType = SqlDbType.Structured; catParam.TypeName = dt.TableName; log.SuccessCount = cmd.ExecuteNonQuery(); if (log.SuccessCount > 0) { log.State = 1; } else { log.State = 0; } log.EndDateTime = DateTime.Now; conn.Close(); } #endregion } else { #region SqlBulkCopy using (var conn = new SqlConnection(db.config.ConnStr)) { conn.Open(); using (var bulk = new SqlBulkCopy(db.config.ConnStr, SqlBulkCopyOptions.UseInternalTransaction)) { bulk.DestinationTableName = dt.TableName; bulk.BatchSize = dt.Rows.Count; bulk.WriteToServer(dt); log.SuccessCount = dt.Rows.Count; log.State = 1; log.EndDateTime = DateTime.Now; } conn.Close(); } #endregion } } if (db.config.DbType == FastApp.DataDbType.MySql) { #region 拼sql using (var conn = new MySqlConnection(db.config.ConnStr)) { conn.Open(); var cmd = conn.CreateCommand(); cmd.CommandText = GetMySql(dt, db); log.SuccessCount = cmd.ExecuteNonQuery(); if (log.SuccessCount > 0) { log.State = 1; } else { log.State = 0; } log.EndDateTime = DateTime.Now; conn.Close(); } #endregion } if (db.config.DbType == FastApp.DataDbType.Oracle) { #region odp.net特性 using (var conn = new OracleConnection(db.config.ConnStr)) { conn.Open(); var cmd = conn.CreateCommand(); //关闭日志 cmd.CommandText = string.Format("alter table {0} nologging", dt.TableName); cmd.ExecuteNonQuery(); cmd.ArrayBindCount = dt.Rows.Count; cmd.BindByName = true; GetOdpParam(dt, ref cmd, db, dt.TableName); log.SuccessCount = cmd.ExecuteNonQuery(); if (log.SuccessCount > 0) { log.State = 1; } else { log.State = 0; } log.EndDateTime = DateTime.Now; //开起日志 cmd.CommandText = string.Format("alter table {0} logging", dt.TableName); cmd.ExecuteNonQuery(); conn.Close(); } #endregion } } catch (Exception ex) { log.EndDateTime = DateTime.Now; log.SuccessCount = 0; log.State = 0; log.ErrorMsg = ex.StackTrace; } }
/// <summary> /// 定时任务同步产品数据 /// </summary> /// <param name="source"></param> /// <param name="e"></param> public void SynData(object source, ElapsedEventArgs e) { try { //防止重复执行 lock (thisLock) { using (var db = new DataContext()) { BaseLog.SaveLog("开始抽取", "FastEtlService"); //不允许停止服务 this.CanStop = false; var list = FastRead.Query <Data_Business>(a => a.Id != null).ToList <Data_Business>(db); foreach (var item in list) { if (DataSchema.IsExistsTable(db, item.TableName) && item.UpdateTime == DateTime.Now.Hour && item.LastUpdateTime.Day + item.UpdateDay >= DateTime.Now.Day) { Parallel.Invoke(() => { var leaf = FastRead.Query <Data_Business_Details>(a => a.Id == item.Id).ToList <Data_Business_Details>(db); if (leaf.Count > 0) { var isAdd = true; var dt = DataSchema.GetTable(db, item.TableName); var columnName = dt.Columns[3].ColumnName.ToLower(); if (leaf.Exists(a => a.FieldName.ToLower() == columnName)) { DataSchema.ExpireData(db, item); //第一列 var link = DataSchema.InitColLink(leaf, db); var tempLeaf = leaf.Find(a => a.FieldName.ToLower() == columnName); var pageInfo = DataSchema.GetTableCount(link[0], tempLeaf, item); for (var i = 1; i <= pageInfo.pageCount; i++) { var log = new Data_Log(); log.Id = Guid.NewGuid().ToStr(); log.TableName = string.Format("{0}_page_{1}", item.TableName, i); log.BeginDateTime = DateTime.Now; pageInfo.pageId = i; var pageData = DataSchema.GetFirstColumnData(link[0], tempLeaf, item, pageInfo); //遍历填充table for (var row = 0; row < pageData.list.Count; row++) { var dtRow = dt.NewRow(); dtRow["Id"] = Guid.NewGuid().ToString(); dtRow["AddTime"] = DateTime.Now; dtRow["Key"] = pageData.list[row].GetValue("key"); dtRow[columnName] = pageData.list[row].GetValue("data"); //字典对照 if (!string.IsNullOrEmpty(tempLeaf.Dic)) { dtRow[columnName] = FastRead.Query <Data_Dic_Details>(a => a.Value.ToLower() == dtRow[columnName].ToStr().ToLower() && a.DicId == tempLeaf.Dic, a => new { a.ContrastValue }).ToDic(db).GetValue("ContrastValue"); } //数据策略 isAdd = DataSchema.DataPolicy(db, item, dtRow["Key"], columnName, dtRow[columnName]); for (var col = 3; col < dt.Columns.Count; col++) { columnName = dt.Columns[col].ColumnName.ToLower(); if (leaf.Exists(a => a.FieldName.ToLower() == columnName)) { tempLeaf = leaf.Find(a => a.FieldName.ToLower() == columnName); dtRow[columnName] = DataSchema.GetColumnData(link[col - 3], tempLeaf, dtRow["Key"]); //字典对照 if (!string.IsNullOrEmpty(tempLeaf.Dic)) { dtRow[columnName] = FastRead.Query <Data_Dic_Details>(a => a.Value.ToLower() == dtRow[columnName].ToStr().ToLower() && a.DicId == tempLeaf.Dic, a => new { a.ContrastValue }).ToDic(db).GetValue("ContrastValue"); } //数据策略 if (item.Policy == "2") { isAdd = DataSchema.DataPolicy(db, item, dtRow["Key"], columnName, dtRow[columnName]); } } } if (isAdd) { dt.Rows.Add(dtRow); } } if (dt.Rows.Count > 0) { DataSchema.AddList(db, dt, ref log); } db.Add(log); dt.Clear(); } DataSchema.CloseLink(link); item.LastUpdateTime = DateTime.Now; FastWrite.Update <Data_Business>(item, a => a.Id == item.Id, a => new { a.LastUpdateTime }, db); } } }); } } //允许停止服务 this.CanStop = true; BaseLog.SaveLog("结束抽取", "FastEtlService"); } } } catch (Exception ex) { BaseLog.SaveLog(ex.ToString(), "FastEtlServiceError"); } }
public string PostResumen(List <Data_Documentos> data_Documentos) { string mensajeRespuesta = string.Empty; try { GenerarResumenDiario generarResumenDiario = new GenerarResumenDiario(); ResumenDiario resumenDiario = generarResumenDiario.Data(data_Documentos); DocumentoResponse response = generarResumenDiario.Post(resumenDiario); if (!response.Exito) { Data_Log data_Log = new Data_Log() { DetalleError = response.MensajeError, Comentario = $"El XML con identificador: {resumenDiario.IdDocumento} no se pudo generar", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } else { string rutaArchivo = Path.Combine(data_Documentos[0].Ruta, $"{resumenDiario.IdDocumento}.xml"); Firmar firmar = new Firmar(); FirmadoRequest firmadoRequest = firmar.Data(data_Usuario.IdAccesosSunat, response.TramaXmlSinFirma); FirmadoResponse firmadoResponse = firmar.Post(firmadoRequest, true); // Ya se obtuvo el documento firmado if (firmadoResponse.Exito) // Comprobamos que se haya firmado de forma correcta { EnviarSunat enviarSunat = new EnviarSunat(); EnviarDocumentoRequest enviarDocumentoRequest = enviarSunat.Data(firmadoResponse.TramaXmlFirmado, data_Documentos[0], GetURL("03")); string nombreZip = $"{resumenDiario.Emisor.NroDocumento}-{resumenDiario.IdDocumento}"; EnviarResumenResponse enviarResumenResponse = enviarSunat.Post_Figurativo(enviarDocumentoRequest, nombreZip); if (enviarResumenResponse.Exito) // Comprobar envío a sunat { ConsultaConstanciaRequest consultaConstanciaRequest = new ConsultaConstanciaRequest() { Ruc = enviarDocumentoRequest.Ruc, UsuarioSol = enviarDocumentoRequest.UsuarioSol, ClaveSol = enviarDocumentoRequest.ClaveSol, EndPointUrl = " https://e-factura.sunat.gob.pe/ol-it-wsconscpegem/billConsultService" }; Consultar consultar = new Consultar(); EnviarDocumentoResponse enviarDocumentoResponse = consultar.Post_Constancia(consultaConstanciaRequest); if (enviarDocumentoResponse.Exito) { mensajeRespuesta = $"El resumen diario ha realizado con éxito, detalle: {enviarDocumentoResponse.MensajeRespuesta}"; } else { mensajeRespuesta = "El resumen diario ha realizado con éxito, pero hemos tenido inconvenietes al obtener" + " el CDR del documento: " + resumenDiario.IdDocumento + ", probablemente se este empleado el usuario MODDATOS," + "para obtener el CDR debes descargarlo de forma manual en la opción 'Consulta de CDR'"; data_Log = new Data_Log() { DetalleError = mensajeRespuesta, Comentario = $"Ha ocurrido un error al generar el CDR del resumen diario: {resumenDiario.IdDocumento}, probablemente se este empleado MODDATOS", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } Data_DocumentoFigurativo data_DocumentoFigurativo = new Data_DocumentoFigurativo() { XMLFirmado = firmadoResponse.TramaXmlFirmado, Tipo = "Resumen diario", ComentarioDocumento = mensajeRespuesta, Identificador = resumenDiario.IdDocumento, NumeroTicket = enviarResumenResponse.NroTicket, CdrSunat = enviarDocumentoResponse.TramaZipCdr ?? string.Empty }; if (!data_DocumentoFigurativo.Create_DocumentoFigurativo()) { data_Log = new Data_Log() { DetalleError = "Error inesperado en la base de datos", Comentario = "Ha ocurrido un error al guardar el registro del resumen diario", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } else { Data_DocumentoFigurativo dataUnion_DocumentoFigurativo; Data_Documentos updateDocumento; foreach (var data_Documento in data_Documentos) { dataUnion_DocumentoFigurativo = new Data_DocumentoFigurativo() { IdDocumentoFigurativo = data_DocumentoFigurativo.SCOPE_IDENTITY_VALUE, IdDocumento = data_Documento.IdDocumento }; if (!dataUnion_DocumentoFigurativo.Create_Figurativo_Documentos()) { data_Log = new Data_Log() { DetalleError = $"Detalle de tablas: Documentos {data_Documento.IdDocumento},{data_Documento.SerieCorrelativo} con la " + $"tabla Figurativo_Documentos {data_DocumentoFigurativo.SCOPE_IDENTITY_VALUE}, {data_DocumentoFigurativo.Identificador} ", Comentario = "Ha ocurrido un error al guardar el registro del resumen diario, en la tabla de unión", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } updateDocumento = new Data_Documentos() { IdDocumento = data_Documento.IdDocumento, EnviadoSunat = true, EstadoSunat = "Aceptado", ComentarioDocumento = $"El documento figura dentro del resumen diario con el código de identificación: {data_DocumentoFigurativo.Identificador}", ComunicacionBaja = false, }; if (!updateDocumento.Update_Documento()) { data_Log = new Data_Log() { DetalleError = $"No se ha podido actualizar el documento{data_Documento.IdDocumento}, {data_Documento.SerieCorrelativo} para indicar que resumen diario", Comentario = "Error en la base de datos", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } } } } else { mensajeRespuesta = enviarResumenResponse.MensajeError; data_Log = new Data_Log() { DetalleError = enviarResumenResponse.MensajeError, Comentario = "Error al crear resumen diario", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } } else { data_Log = new Data_Log() { DetalleError = response.MensajeError, Comentario = "Error al firmar el documento", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } } } catch (Exception ex) { var msg = string.Concat(ex.InnerException?.Message, ex.Message); data_Log = new Data_Log() { DetalleError = $"Detalle del error: {msg}", Comentario = "Error al procesar el envío del documento", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); mensajeRespuesta = $"Detalle del error: {msg}"; } return(mensajeRespuesta); }
public void Post(Data_Documentos IE_IdDocumento) // Ejecución { try { string IdDocumento = IE_IdDocumento.IdDocumento; Data_Documentos data_Documento = new Data_Documentos(IdDocumento); // IdDocumento variable global data_Documento.Read_Documento(); GenerarFactura generarFactura = new GenerarFactura(); GenerarNotaCredito generarNotaCredito = new GenerarNotaCredito(); GenerarNotaDebito generarNotaDebito = new GenerarNotaDebito(); DocumentoElectronico documento; DocumentoResponse response; switch (data_Documento.TipoDocumento) { case "01": // Factura y boletas documento = generarFactura.Data(data_Documento); response = generarFactura.Post(documento, true); break; case "07": // Nota de crédito documento = generarNotaCredito.data(data_Documento); response = generarNotaCredito.Post(documento, true); break; case "08": // Nota de Débito documento = generarNotaDebito.data(data_Documento); response = generarNotaDebito.Post(documento, true); break; default: documento = generarFactura.Data(data_Documento); response = generarFactura.Post(documento, true); break; } if (!response.Exito) { Data_Log data_Log = new Data_Log() { DetalleError = response.MensajeError, Comentario = $"El XML con serie correlativo: {documento.SerieCorrelativo} no se pudo generar", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } string rutaArchivo = Path.Combine(data_Documento.Ruta, $"{documento.SerieCorrelativo}.xml"); Firmar firmar = new Firmar(); FirmadoRequest firmadoRequest = firmar.Data(data_Usuario.IdAccesosSunat, response.TramaXmlSinFirma); //FirmadoResponse firmadoResponse = await firmar.Post(firmadoRequest); // Ya se obtuvo el documento firmado FirmadoResponse firmadoResponse = firmar.Post(firmadoRequest, true); // Ya se obtuvo el documento firmado if (firmadoResponse.Exito) // Comprobamos que se haya firmado de forma correcta { Data_Documentos actualizacionXML = new Data_Documentos(IdDocumento) { XmlFirmado = firmadoResponse.TramaXmlFirmado }; if (!actualizacionXML.Update_Documento_OneColumn("[dbo].[Update_Documento_SignedXML]")) { data_Log = new Data_Log() { DetalleError = "Error al actualizar el xmlFirmado del documento", Comentario = "Error con la base de datos", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } } else { data_Log = new Data_Log() { DetalleError = response.MensajeError, Comentario = "Error al firmar el documento", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } EnviarSunat enviarSunat = new EnviarSunat(); EnviarDocumentoRequest enviarDocumentoRequest = enviarSunat.Data(firmadoResponse.TramaXmlFirmado, data_Documento, GetURL(data_Documento.TipoDocumento)); // Obtenemos los datos para EnviarDocumentoRequest //EnviarDocumentoResponse enviarDocumentoResponse = await enviarSunat.Post_Documento(enviarDocumentoRequest); EnviarDocumentoResponse enviarDocumentoResponse = enviarSunat.Post_Documento(enviarDocumentoRequest, true); if (enviarDocumentoResponse.Exito && !string.IsNullOrEmpty(enviarDocumentoResponse.TramaZipCdr)) // Comprobar envío a sunat { Data_Documentos actualizacionCDR = new Data_Documentos() { IdDocumento = IdDocumento, CdrSunat = enviarDocumentoResponse.TramaZipCdr }; if (!actualizacionCDR.Update_Documento_OneColumn("[dbo].[Update_Documento_CDR]")) { data_Log = new Data_Log() { DetalleError = "Error al actualizar el CDR del documento", Comentario = "Error con la base de datos: [dbo].[Update_Documento_CDR]", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } Data_Documentos actualizacionComentario = new Data_Documentos() { IdDocumento = IdDocumento, ComentarioDocumento = enviarDocumentoResponse.MensajeRespuesta }; if (!actualizacionComentario.Update_Documento_OneColumn("[dbo].[Update_Documento_Comentario]")) { data_Log = new Data_Log() { DetalleError = "Error al guardar el comentario notificando la recepción del CDR del documento", Comentario = "No se pudo guardar el CDR", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } Data_Documentos actualizacionEstadoSunat = new Data_Documentos() { IdDocumento = IdDocumento, EstadoSunat = "Aceptado" }; if (!actualizacionEstadoSunat.Update_Documento_OneColumn("[dbo].[Update_Documento_EstadoSunat]")) { data_Log = new Data_Log() { DetalleError = "Error al guardar el comentario notificando el estado del documento", Comentario = "No se pudo guardar el estado del documento", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } } else { data_Log = new Data_Log() { DetalleError = enviarDocumentoResponse.MensajeError, Comentario = "Error al enviar el documento", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); Data_Documentos actualizacionComentario = new Data_Documentos() { IdDocumento = IdDocumento, ComentarioDocumento = enviarDocumentoResponse.MensajeError }; if (!actualizacionComentario.Update_Documento_OneColumn("[dbo].[Update_Documento_Comentario]")) { data_Log = new Data_Log() { DetalleError = "Error al guardar el comentario notificando el error al no poder recibir el CDR del documento", Comentario = "No se recibió el CDR", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } Data_Documentos actualizacionEstadoSunat = new Data_Documentos() { IdDocumento = IdDocumento, EstadoSunat = "Rechazado" }; if (!actualizacionEstadoSunat.Update_Documento_OneColumn("[dbo].[Update_Documento_EstadoSunat]")) { data_Log = new Data_Log() { DetalleError = "Error al guardar el comentario notificando el estado del documento", Comentario = "No se pudo guardar el estado del documento", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } } } catch (Exception ex) { var msg = string.Concat(ex.InnerException?.Message, ex.Message); data_Log = new Data_Log() { DetalleError = $"Detalle del error: {msg}", Comentario = "Error al procesar el envío del documento", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } }
protected override async Task ExecuteAsync(CancellationToken stoppingToken) { try { while (!stoppingToken.IsCancellationRequested) { lock (thisLock) { using (var db = new DataContext(AppEtl.Db)) { var tableLink = DataSchema.TableLink(db); BaseLog.SaveLog("开始抽取", "FastEtlService"); var list = IFast.Query <Data_Business>(a => a.Id != null).ToList <Data_Business>(db); foreach (var item in list) { var isExec = item.UpdateTime == DateTime.Now.Hour; if (item.UpdateTime == 99) { isExec = true; } if (DataSchema.IsExistsTable(db, item.TableName) && isExec) { Parallel.Invoke(() => { var leaf = IFast.Query <Data_Business_Details>(a => a.Id == item.Id).ToList <Data_Business_Details>(db) ?? new List <Data_Business_Details>(); if (leaf.Count > 0 && leaf.Exists(a => a.Key.ToStr() != "")) { var isAdd = true; var dt = DataSchema.GetTable(tableLink, item.TableName); var columnName = dt.Columns[2].ColumnName.ToLower(); if (leaf.Exists(a => a.FieldName.ToLower() == columnName)) { DataSchema.ExpireData(db, item); //第一列 var link = DataSchema.InitColLink(leaf, db, IFast); var tempLeaf = leaf.Find(a => a.FieldName.ToLower() == columnName); var pageInfo = DataSchema.GetTableCount(tempLeaf, item); for (var i = 1; i <= pageInfo.pageCount; i++) { var log = new Data_Log(); log.Id = Guid.NewGuid().ToStr(); log.TableName = string.Format("{0}_page_{1}", item.TableName, i); log.BeginDateTime = DateTime.Now; pageInfo.pageId = i; var tempLink = link.Find(a => a.GetValue("id").ToStr() == tempLeaf.DataSourceId); var pageData = DataSchema.GetFirstColumnData(tempLink, tempLeaf, item, pageInfo); //遍历填充table for (var row = 0; row < pageData.list.Count; row++) { var dtRow = dt.NewRow(); dtRow["EtlAddTime"] = DateTime.Now; dtRow["EtlKey"] = pageData.list[row].GetValue("key"); dtRow[columnName] = pageData.list[row].GetValue("data"); //字典对照 if (!string.IsNullOrEmpty(tempLeaf.Dic)) { dtRow[columnName] = IFast.Query <Data_Dic_Details>(a => a.Value.ToLower() == dtRow[columnName].ToStr().ToLower() && a.DicId == tempLeaf.Dic, a => new { a.ContrastValue }).ToDic(db).GetValue("ContrastValue"); } //数据策略 isAdd = DataSchema.DataPolicy(db, item, dtRow["EtlKey"], columnName, dtRow[columnName]); for (var col = 2; col < dt.Columns.Count; col++) { columnName = dt.Columns[col].ColumnName.ToLower(); if (leaf.Exists(a => a.FieldName.ToLower() == columnName)) { tempLeaf = leaf.Find(a => a.FieldName.ToLower() == columnName); tempLink = link.Find(a => a.GetValue("id").ToStr() == tempLeaf.DataSourceId); dtRow[columnName] = DataSchema.GetColumnData(tempLink, tempLeaf, dtRow["EtlKey"]); //字典对照 if (!string.IsNullOrEmpty(tempLeaf.Dic)) { dtRow[columnName] = IFast.Query <Data_Dic_Details>(a => a.Value.ToLower() == dtRow[columnName].ToStr().ToLower() && a.DicId == tempLeaf.Dic, a => new { a.ContrastValue }).ToDic(db).GetValue("ContrastValue"); } //数据策略 if (item.Policy == "2") { isAdd = DataSchema.DataPolicy(db, item, dtRow["EtlKey"], columnName, dtRow[columnName]); } } } if (isAdd) { dt.Rows.Add(dtRow); } } if (dt.Rows.Count > 0) { DataSchema.AddList(db, dt, ref log); } db.Add(log); dt.Clear(); } DataSchema.CloseLink(link); item.LastUpdateTime = DateTime.Now; IFast.Update <Data_Business>(item, a => a.Id == item.Id, a => new { a.LastUpdateTime }, db); } } }); } } BaseLog.SaveLog("结束抽取", "FastEtlService"); DataSchema.CloseTableLink(tableLink); } } await Task.Delay(1000 * 60 * 30, stoppingToken); } } catch (Exception ex) { BaseLog.SaveLog(ex.ToString(), "FastEtlServiceError"); } }
private void btnValidar_Click(object sender, RoutedEventArgs e) { try { string mensajeFinal = string.Empty; string directorioActual = Directory.GetCurrentDirectory(); XmlSchemaSet xmlSchemaSet = new XmlSchemaSet(); //xmlSchemaSet.Add(null, "..\\..\\..\\Common\\Validation\\UBL-Invoice-2.1.xsd"); xmlSchemaSet.Add(null, "..\\..\\..\\Common\\Validation\\UBL-CreditNote-2.1.xsd"); Microsoft.Win32.OpenFileDialog openFileDialog = new Microsoft.Win32.OpenFileDialog(); openFileDialog.Multiselect = false; openFileDialog.Filter = "XML de documentos|*.xml|Todos los archivos|*.*"; openFileDialog.DefaultExt = "*.xml"; openFileDialog.Title = "Selección de XML de documentos electrónicos"; Nullable <bool> dialogOk = openFileDialog.ShowDialog(); string ruta = string.Empty; if (dialogOk == true) { ruta = openFileDialog.FileName; } XDocument document = XDocument.Load(@ruta); bool validationErrors = false; document.Validate(xmlSchemaSet, (s, ev) => { mensajeFinal = ev.Message; validationErrors = true; }); if (validationErrors) { mensajeFinal += mensajeFinal + "errores"; } else { mensajeFinal += mensajeFinal + "sin errores"; } CustomDialogWindow customDialogWindow = new CustomDialogWindow(); customDialogWindow.Buttons = CustomDialogButtons.OK; customDialogWindow.Caption = "Detalle"; customDialogWindow.DefaultButton = CustomDialogResults.OK; customDialogWindow.InstructionHeading = "Resultados de la descarga del documento(s)"; customDialogWindow.InstructionIcon = CustomDialogIcons.Information; customDialogWindow.InstructionText = mensajeFinal; CustomDialogResults customDialogResults = customDialogWindow.Show(); } catch (Exception ex) { System.Windows.MessageBox.Show($"No se ha podido realizar la inspección del documento mediante XSD, detalle del error{ex}", "Error inesperado", MessageBoxButton.OK, MessageBoxImage.Error); var msg = string.Concat(ex.InnerException?.Message, ex.Message); data_Log = new Data_Log() { DetalleError = $"Detalle del error: {msg}", Comentario = "Error al enviar el documento a sunat desde la interfaz", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } }
private async void btnEnviar_Click(object sender, RoutedEventArgs e) { try { int cantidadAceptados = 0; List <Data_Documentos> selected_data_Documentos = new List <Data_Documentos>(); foreach (var data_Documento in data_Documentos) { if (data_Documento.Selectable == true) { selected_data_Documentos.Add(data_Documento); } } foreach (var selected_data_Documento in selected_data_Documentos) { if (selected_data_Documento.EnviadoSunat == true) { cantidadAceptados++; } } if (selected_data_Documentos.Count() > 0) { string enviados = string.Empty; string noEnviados = string.Empty; string mensajeFinal = string.Empty; if (cantidadAceptados == 0) { ProgressDialogResult result = ProgressWindow.Execute(padre, "Procesando...", () => { ProcesarEnvio procesarEnvio = new ProcesarEnvio(data_Usuario); IEnumerable <Data_Documentos> documentosProcesar = selected_data_Documentos.AsEnumerable(); Parallel.ForEach(documentosProcesar, (data_Documento) => procesarEnvio.Post(data_Documento)); }); List <Data_Documentos> selected_data_Documentos_updated = new List <Data_Documentos>(); Data_Documentos documentoUpdated; foreach (var data_Documento in data_Documentos) { if (data_Documento.Selectable == true) { documentoUpdated = new Data_Documentos(data_Documento.IdDocumento); documentoUpdated.Read_Documento(); selected_data_Documentos_updated.Add(documentoUpdated); } } foreach (var selected_data_Documento in selected_data_Documentos_updated) { if (selected_data_Documento.EnviadoSunat == true) { enviados += $", {selected_data_Documento.SerieCorrelativo}"; } else { noEnviados += $", {selected_data_Documento.SerieCorrelativo}"; } } if (string.IsNullOrEmpty(enviados)) // Ningún enviado, puros rechazados como voz { mensajeFinal = $"No se pudo enviar ningún documento, los documentos rechazados son:\n {noEnviados}"; } if (!string.IsNullOrEmpty(enviados) && string.IsNullOrEmpty(noEnviados)) // Sin ningún documento rechazado { mensajeFinal = $"Se ha enviado a Sunat el(los) documento(s):\n {enviados}"; } if (!string.IsNullOrEmpty(enviados) && !string.IsNullOrEmpty(noEnviados)) // Con al menos un documento rechazado { mensajeFinal = $"Se ha enviado a Sunat el(los) documento(s):\n {enviados} y se han rechazado los siguientes documentos:\n {noEnviados}"; } LoadGrid(); CustomDialogWindow customDialogWindow = new CustomDialogWindow(); customDialogWindow.Buttons = CustomDialogButtons.OK; customDialogWindow.Caption = "Mensaje"; customDialogWindow.DefaultButton = CustomDialogResults.OK; customDialogWindow.InstructionHeading = "Resultados del envío a Sunat"; customDialogWindow.InstructionIcon = CustomDialogIcons.Information; customDialogWindow.InstructionText = mensajeFinal; CustomDialogResults customDialogResults = customDialogWindow.Show(); } else { System.Windows.Forms.MessageBox.Show("Estimado usuario, está intentando enviar a Sunat uno o varios documentos que ya fueron aceptados, " + "sí desea revisar estos documento(s) selecciónelo y pulse descargar.", "Acción no permitida", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } else { System.Windows.Forms.MessageBox.Show("Debe seleccionar al menos un documento", "Ninguna selección detectada", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } catch (Exception ex) { var msg = string.Concat(ex.InnerException?.Message, ex.Message); System.Windows.MessageBox.Show(msg, "Error al enviar el documento a sunat", MessageBoxButton.OK, MessageBoxImage.Error); data_Log = new Data_Log() { DetalleError = $"Detalle del error: {msg}", Comentario = "Error al enviar el documento a sunat desde la interfaz", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } }
private void btnGuardar_Click(object sender, RoutedEventArgs e) { if (!string.IsNullOrEmpty(txtCertificadoDigital.Text.ToString().Trim()) && !string.IsNullOrEmpty(txtCertificadoDigitalClave.Password.ToString().Trim()) && !string.IsNullOrEmpty(txtUsuarioSol.Text.ToString().Trim()) && !string.IsNullOrEmpty(txtClaveSol.Password.ToString().Trim())) { string claveSol = string.Empty; string usuarioSol = string.Empty; string certificadoDigital = string.Empty; if (txtUsuarioSol.Text.ToString().Trim().ToUpper().Equals("MODDATOS")) { usuarioSol = txtUsuarioSol.Text.ToString().Trim().ToUpper(); claveSol = txtClaveSol.Password.ToString().Trim().ToUpper(); } else { usuarioSol = txtUsuarioSol.Text.ToString().Trim(); claveSol = txtClaveSol.Password.ToString().Trim(); } bool errorCertificado = false; try { certificadoDigital = Convert.ToBase64String(File.ReadAllBytes(txtCertificadoDigital.Text.ToString().Trim())); } catch (Exception) { MessageBox.Show("No se puede leer el certificado digital.", "Archivo irreconosible", MessageBoxButton.OK, MessageBoxImage.Information); errorCertificado = true; } if (errorCertificado == false) { Data_AccesosSunat data_AccesosSunat = new Data_AccesosSunat(IdEmisor) { CertificadoDigital = certificadoDigital, ClaveCertificado = txtCertificadoDigitalClave.Password.ToString().Trim(), UsuarioSol = usuarioSol, ClaveSol = claveSol, IdDatosFox = Id_DatosFox, IdUsuario = data_Usuario.IdUsuario }; if (data_AccesosSunat.Create_AccesosSunat()) { MessageBox.Show("Los datos se han registrado con éxito, para ver los cambios es necesario reiniciar FEICONT.", "Registro exitoso", MessageBoxButton.OK, MessageBoxImage.Information); try { System.Diagnostics.Process.Start(Application.ResourceAssembly.Location); Application.Current.Shutdown(); //System.Windows.Forms.Application.Restart(); } catch (Exception) { MessageBox.Show("Tenemos problemas para reiniciar, por favor cierre y vuelva a abrir la aplicación.", "Es necesario reiniciar la aplicación", MessageBoxButton.OK, MessageBoxImage.Information); } } else { MessageBox.Show("Ha ocurrido un problema en el registro de datos, contacte con soporte.", "Registro fallido", MessageBoxButton.OK, MessageBoxImage.Error); Data_Log data_Log = new Data_Log() { DetalleError = $"No se registro el usuario", Comentario = "Ha ocurrido un problema en el registro de datos", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } } } else { MessageBox.Show("Antes de continuar debe rellenar todos los campos.", "Campos en blanco", MessageBoxButton.OK, MessageBoxImage.Exclamation); } }
public async void Post(Data_Documentos IE_IdDocumento) { //var task = Task.Factory.StartNew(async () => //{ try { string IdDocumento = IE_IdDocumento.IdDocumento; // var taskfactory etc etc pero para despues "20186C16-C1DC-4717-8F46-407447D225BC" Data_Documentos data_Documento = new Data_Documentos(IdDocumento); // IdDocumento variable global data_Documento.Read_Documento(); GenerarFactura generarFactura = new GenerarFactura(); DocumentoElectronico documento = generarFactura.data(data_Documento); // CAMBIAR A ASINCRONO AL FINALIZAR EL DESARROLLO\ var response = await generarFactura.Post(documento); //await if (!response.Exito) { Data_Log data_Log = new Data_Log() { DetalleError = response.MensajeError, Comentario = $"El XML con serie correlativo: {documento.SerieCorrelativo} no se pudo generar", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } string rutaArchivo = Path.Combine(data_Documento.Ruta, $"{documento.SerieCorrelativo}.xml"); Firmar firmar = new Firmar(); FirmadoRequest firmadoRequest = firmar.Data(data_Documento.IdEmisor, response.TramaXmlSinFirma); FirmadoResponse firmadoResponse = await firmar.Post(firmadoRequest); // Ya se obtuvo el documento firmado if (firmadoResponse.Exito) // Comprobamos que se haya firmado de forma correcta { Data_Documentos actualizacionXML = new Data_Documentos(IdDocumento) { XmlFirmado = firmadoResponse.TramaXmlFirmado }; if (!actualizacionXML.Update_Documento_OneColumn("[dbo].[Update_Documento_SignedXML]")) { data_Log = new Data_Log() { DetalleError = "Error al actualizar el xmlFirmado del documento", Comentario = "Error con la base de datos", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } } else { data_Log = new Data_Log() { DetalleError = response.MensajeError, Comentario = "Error al firmar el documento", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } EnviarSunat enviarSunat = new EnviarSunat(); EnviarDocumentoRequest enviarDocumentoRequest = enviarSunat.Data(firmadoResponse.TramaXmlFirmado, data_Documento, GetURL(data_Documento.TipoDocumento)); // Obtenemos los datos para EnviarDocumentoRequest EnviarDocumentoResponse enviarDocumentoResponse = await enviarSunat.Post_Documento(enviarDocumentoRequest); if (enviarDocumentoResponse.Exito && !string.IsNullOrEmpty(enviarDocumentoResponse.TramaZipCdr)) // Comprobar envío a sunat { Data_Documentos actualizacionCDR = new Data_Documentos() { IdDocumento = IdDocumento, CdrSunat = enviarDocumentoResponse.TramaZipCdr }; if (!actualizacionCDR.Update_Documento_OneColumn("[dbo].[Update_Documento_CDR]")) { data_Log = new Data_Log() { DetalleError = "Error al actualizar el CDR del documento", Comentario = "Error con la base de datos: [dbo].[Update_Documento_CDR]", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } Data_Documentos actualizacionComentario = new Data_Documentos() { IdDocumento = IdDocumento, ComentarioDocumento = enviarDocumentoResponse.MensajeRespuesta }; if (!actualizacionComentario.Update_Documento_OneColumn("[dbo].[Update_Documento_Comentario]")) { data_Log = new Data_Log() { DetalleError = "Error al guardar el comentario notificando la recepción del CDR del documento", Comentario = "No se pudo guardar el CDR", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } Data_Documentos actualizacionEstadoSunat = new Data_Documentos() { IdDocumento = IdDocumento, EstadoSunat = "Aceptado" }; if (!actualizacionEstadoSunat.Update_Documento_OneColumn("[dbo].[Update_Documento_EstadoSunat]")) { data_Log = new Data_Log() { DetalleError = "Error al guardar el comentario notificando el estado del documento", Comentario = "No se pudo guardar el estado del documento", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } } else { data_Log = new Data_Log() { DetalleError = enviarDocumentoResponse.MensajeError, Comentario = "Error al enviar el documento", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); Data_Documentos actualizacionComentario = new Data_Documentos() { IdDocumento = IdDocumento, ComentarioDocumento = enviarDocumentoResponse.MensajeError }; if (!actualizacionComentario.Update_Documento_OneColumn("[dbo].[Update_Documento_Comentario]")) { data_Log = new Data_Log() { DetalleError = "Error al guardar el comentario notificando el error al no poder recibir el CDR del documento", Comentario = "No se recibió el CDR", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } Data_Documentos actualizacionEstadoSunat = new Data_Documentos() { IdDocumento = IdDocumento, EstadoSunat = "Rechazado" }; if (!actualizacionEstadoSunat.Update_Documento_OneColumn("[dbo].[Update_Documento_EstadoSunat]")) { data_Log = new Data_Log() { DetalleError = "Error al guardar el comentario notificando el estado del documento", Comentario = "No se pudo guardar el estado del documento", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } } } catch (Exception ex) { var msg = string.Concat(ex.InnerException?.Message, ex.Message); data_Log = new Data_Log() { DetalleError = $"Detalle del error: {msg}", Comentario = "Error al procesar el envío del documento", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } //}); //return task; }