private async void tsButtonImportarArchivos_Click(object sender, EventArgs e) { lblError.Text = ""; lblProcesos.Text = ""; GPCompras gpCompras = new GPCompras(companySelected()); List <string> archivos = new List <string>(); foreach (DataGridViewRow row in gridFiles.Rows) { var item = row.DataBoundItem; if (item != null) { System.Type type = item.GetType(); string archivo = (string)type.GetProperty("archivo").GetValue(item, null); string directorio = (string)type.GetProperty("directorio").GetValue(item, null); archivos.Add(directorio + "\\" + archivo); } } gpCompras.ErrorImportarPM += new EventHandler <GPCompras.ErrorImportarPMEventArgs>(oL_ErrorImportarPM); gpCompras.ProcesoOkImportarPM += new EventHandler <GPCompras.ProcesoOkImportarPMEventArgs>(oL_ProcesoOkImportarPM); int metodo = 1; if (radPOP.Checked) { metodo = 2; } //gpCompras.Importar(archivos, metodo); await gpCompras.IntegrarDocumentosGPAsync(archivos, metodo); if (archivos.Count == 0) { MessageBox.Show("Debe seleccionar archivos"); } gridFiles.DataSource = null; }
private void gridFiles_SelectionChanged(object sender, EventArgs e) { if (gridFiles.SelectedRows.Count != 0) { var item = gridFiles.SelectedRows[0].DataBoundItem; if (item != null) { System.Type type = item.GetType(); string archivo = (string)type.GetProperty("archivo").GetValue(item, null); string directorio = (string)type.GetProperty("directorio").GetValue(item, null); string text = System.IO.File.ReadAllText(directorio + "\\" + archivo); XNamespace cfdi = @"http://www.sat.gob.mx/cfd/3"; XNamespace pago10 = @"http://www.sat.gob.mx/Pagos"; XNamespace tfd = @"http://www.sat.gob.mx/TimbreFiscalDigital"; try { XDocument xdoc = XDocument.Parse(text); string tipoComprobante = GPCompras.AveriguarElTipoDeCfdi(xdoc, cfdi); switch (tipoComprobante) { case "I": var comprobante = (from c in xdoc.Descendants(cfdi + "Comprobante") select new { Folio = c.Attribute("Folio") == null ? "" : c.Attribute("Folio").Value, Fecha = c.Attribute("Fecha").Value, FormaDePago = c.Attribute("FormaPago").Value, CondicionesDePago = c.Attribute("CondicionesDePago") == null ? "" : c.Attribute("CondicionesDePago").Value, SubTotal = c.Attribute("SubTotal").Value, TipoCambio = c.Attribute("TipoCambio") == null ? "" : c.Attribute("TipoCambio").Value, Moneda = c.Attribute("Moneda") == null ? "" : c.Attribute("Moneda").Value, Total = c.Attribute("Total").Value, TipoDeComprobante = c.Attribute("TipoDeComprobante").Value, MetodoDePago = c.Attribute("MetodoPago").Value, LugarExpedicion = c.Attribute("LugarExpedicion").Value }).ToList(); var emisor = (from c in xdoc.Descendants(cfdi + "Emisor") select new { Rfc = c.Attribute("Rfc").Value, Nombre = c.Attribute("Nombre") == null ? "" : c.Attribute("Nombre").Value, Regimen = c.Attribute("RegimenFiscal") == null ? "" : c.Attribute("RegimenFiscal").Value, }).ToList(); var receptor = (from c in xdoc.Descendants(cfdi + "Receptor") select new { Rfc = c.Attribute("Rfc").Value, Nombre = c.Attribute("Nombre") == null ? "" : c.Attribute("Nombre").Value }).ToList(); var concepto = (from c in xdoc.Descendants(cfdi + "Concepto") select new { Cantidad = c.Attribute("Cantidad").Value, Unidad = c.Attribute("ClaveUnidad").Value, NoIdentificacion = c.Attribute("NoIdentificacion") == null ? "" : c.Attribute("NoIdentificacion").Value, Descripcion = c.Attribute("Descripcion").Value, ValorUnitario = c.Attribute("ValorUnitario").Value, Importe = c.Attribute("Importe").Value }).ToList(); var retenciones = (from c in xdoc.Descendants(cfdi + "Impuestos").Where(x => x.Attribute("TotalImpuestosRetenidos") != null).Descendants(cfdi + "Retencion") select new { Impuesto = c.Attribute("Impuesto").Value, Importe = c.Attribute("Importe").Value }).ToList(); var traslado = (from c in xdoc.Descendants(cfdi + "Impuestos").Where(x => x.Attribute("TotalImpuestosTrasladados") != null).Descendants(cfdi + "Traslado") select new { Impuesto = c.Attribute("Impuesto").Value, TipoFactor = c.Attribute("TipoFactor").Value, Tasa = c.Attribute("TasaOCuota").Value, Importe = c.Attribute("Importe").Value }).ToList(); var timbreDigital = (from c in xdoc.Descendants(tfd + "TimbreFiscalDigital") select new { UUID = c.Attribute("UUID").Value }).ToList(); dataGridView1.DataSource = comprobante; dataGridView2.DataSource = emisor; dataGridView3.DataSource = receptor; dataGridView4.DataSource = concepto; dataGridView5.DataSource = traslado; dataGridView6.DataSource = retenciones; dataGridView7.DataSource = timbreDigital; dataGridView8.DataSource = null; //dataGridView9.DataSource = ; break; case "P": var comprobanteP = (from c in xdoc.Descendants(cfdi + "Comprobante") select new { folio = c.Attribute("Folio") == null ? "" : c.Attribute("Folio").Value, fecha = c.Attribute("Fecha").Value, tipoDeComprobante = c.Attribute("TipoDeComprobante").Value, }).ToList(); var emisorP = (from c in xdoc.Descendants(cfdi + "Emisor") select new { Rfc = c.Attribute("Rfc").Value, Nombre = c.Attribute("Nombre") == null ? "" : c.Attribute("Nombre").Value, Regimen = c.Attribute("RegimenFiscal") == null ? "" : c.Attribute("RegimenFiscal").Value, }).ToList(); var receptorP = (from c in xdoc.Descendants(cfdi + "Receptor") select new { Rfc = c.Attribute("Rfc").Value, Nombre = c.Attribute("Nombre") == null ? "" : c.Attribute("Nombre").Value, UsoCFDI = c.Attribute("UsoCFDI") == null ? "" : c.Attribute("UsoCFDI").Value, }).ToList(); var conceptoP = (from c in xdoc.Descendants(cfdi + "Concepto") select new { Cantidad = c.Attribute("Cantidad").Value, Unidad = c.Attribute("ClaveUnidad").Value, Producto = c.Attribute("ClaveProdServ") == null ? "" : c.Attribute("ClaveProdServ").Value, Descripcion = c.Attribute("Descripcion").Value, }).ToList(); var pagoP = (from c in xdoc.Descendants(pago10 + "Pago") select new { CuentaDelBeneficiario = c.Attribute("CtaBeneficiario") == null ? "" : c.Attribute("CtaBeneficiario").Value, RFCEmisorCuentaBeneficiario = c.Attribute("RfcEmisorCtaBen") == null ? "" : c.Attribute("RfcEmisorCtaBen").Value, CuentaDelOrdenante = c.Attribute("CtaOrdenante") == null ? "" : c.Attribute("CtaOrdenante").Value, RFCEmisorCuentaOrdenante = c.Attribute("RfcEmisorCtaOrd") == null ? "" : c.Attribute("RfcEmisorCtaOrd").Value, NumeroDeOperacion = c.Attribute("NumOperacion") == null ? "" : c.Attribute("NumOperacion").Value, Monto = c.Attribute("Monto").Value, MonedaDelPago = c.Attribute("MonedaP").Value, FormaDePagoP = c.Attribute("FormaDePagoP").Value, FechaDelPago = c.Attribute("FechaPago").Value, }).ToList(); var docRelacionadoP = (from c in xdoc.Descendants(pago10 + "DoctoRelacionado") select new { SaldoInsoluto = c.Attribute("ImpSaldoInsoluto") == null ? "" : c.Attribute("ImpSaldoInsoluto").Value, Pagado = c.Attribute("ImpPagado") == null ? "" : c.Attribute("ImpPagado").Value, SaldoAnterior = c.Attribute("ImpSaldoAnt") == null ? "" : c.Attribute("ImpSaldoAnt").Value, Parcialidad = c.Attribute("NumParcialidad").Value, MetodoDePago = c.Attribute("MetodoDePagoDR").Value, TipoDeCambio = c.Attribute("TipoCambioDR") == null ? "" : c.Attribute("TipoCambioDR").Value, Moneda = c.Attribute("MonedaDR").Value, UUID = c.Attribute("IdDocumento").Value, }).ToList(); var timbreDigitalP = (from c in xdoc.Descendants(tfd + "TimbreFiscalDigital") select new { UUID = c.Attribute("UUID").Value }).ToList(); dataGridView1.DataSource = comprobanteP; dataGridView2.DataSource = emisorP; dataGridView3.DataSource = receptorP; dataGridView4.DataSource = pagoP; dataGridView5.DataSource = null; dataGridView6.DataSource = null; dataGridView7.DataSource = timbreDigitalP; dataGridView8.DataSource = docRelacionadoP; ////dataGridView9.DataSource = ; break; default: lblError.Text += "Este comprobante no se puede integrar a GP porque no es un comprobante de Ingreso ni de Pago" + Environment.NewLine; lblError.Refresh(); break; } } catch (Exception abr) { lblError.Text += "Excepción al abrir el archivo. Es probable que el xml no sea válido. Revise el archivo." + Environment.NewLine + abr.Message; lblError.Refresh(); } } } }