private void btnVerificarCarpeta_Click(object sender, EventArgs e) { try { ListaProveedorProducto = new List <cp_proveedor_producto_Info>(); ListaProveedor = new List <cp_proveedor_Info>(); bus_ruta.GuardarDB(new cp_RutaPorEmpresaPorUsuario_Info { IdEmpresa = param.IdEmpresa, IdUsuario = param.IdUsuario, RutaXML = txtRutaXml.Text }); blst = new BindingList <cp_XML_Documento_Info>(); string folder = txtRutaXml.Text; string filter = "*.XML*"; string[] files = Directory.GetFiles(folder, filter); foreach (var item in files) { string readText = File.ReadAllText(item); XmlDocument xmlComprobanteOrigen = new XmlDocument(); xmlComprobanteOrigen.Load(new StringReader(readText)); string mensajeErrorOut = string.Empty; string sXml_a_descerializar = Quitar_a_xml_CDATA_y_Signature(xmlComprobanteOrigen.GetElementsByTagName("comprobante")[0].InnerXml, ref mensajeErrorOut); var rootElement = XElement.Parse(sXml_a_descerializar); var infoFactura = rootElement.Element("infoFactura"); var infoTributaria = rootElement.Element("infoTributaria"); var IdentificacionComprador = infoFactura.Element("identificacionComprador").Value; if (IdentificacionComprador == param.InfoEmpresa.em_ruc) { #region Cabecera var Documento = new cp_XML_Documento_Info { XML = sXml_a_descerializar, Tipo = infoTributaria.Element("codDoc").Value == "01" ? "FACTURA" : "NOTA DE CREDITO", emi_Ruc = infoTributaria.Element("ruc").Value, emi_RazonSocial = infoTributaria.Element("razonSocial").Value, emi_NombreComercial = infoTributaria.Element("nombreComercial") == null?infoTributaria.Element("razonSocial").Value : infoTributaria.Element("nombreComercial").Value, ClaveAcceso = infoTributaria.Element("claveAcceso").Value, emi_ContribuyenteEspecial = infoFactura.Element("contribuyenteEspecial") == null ? "NO" : infoFactura.Element("contribuyenteEspecial").Value, CodDocumento = infoTributaria.Element("codDoc").Value, Establecimiento = infoTributaria.Element("estab").Value, PuntoEmision = infoTributaria.Element("ptoEmi").Value, NumeroDocumento = infoTributaria.Element("secuencial").Value, emi_DireccionMatriz = infoTributaria.Element("dirMatriz").Value, FechaEmision = DateTime.ParseExact(infoFactura.Element("fechaEmision").Value, "dd/MM/yyyy", System.Globalization.CultureInfo.CurrentCulture), rec_RazonSocial = infoFactura.Element("razonSocialComprador").Value, rec_Identificacion = infoFactura.Element("identificacionComprador").Value }; Documento.FormaPago = infoFactura.Element("pagos") == null ? null : infoFactura.Element("pagos").Element("pago") == null ? null : (infoFactura.Element("pagos").Element("pago").Element("formaPago") == null ? null : infoFactura.Element("pagos").Element("pago").Element("formaPago").Value); Documento.IdFormaPago = Documento.FormaPago; Documento.Plazo = infoFactura.Element("pagos") == null ? 0 : infoFactura.Element("pagos").Element("pago") == null ? 0 : (infoFactura.Element("pagos").Element("pago").Element("plazo") == null ? 0 : Convert.ToInt32(Convert.ToDecimal(infoFactura.Element("pagos").Element("pago").Element("plazo").Value))); #endregion #region Detalle var list = infoFactura.Element("totalConImpuestos").Elements("totalImpuesto") .Select(element => element) .ToList(); Documento.SubtotalIVA = 0; Documento.Subtotal0 = 0; Documento.ValorIVA = 0; foreach (var Impuesto in list) { if (Impuesto.Element("codigo").Value.ToString() != "3") { Documento.Porcentaje = Convert.ToDouble(Impuesto.Element("valor").Value); if (Documento.Porcentaje == 0) { Documento.Descuento += Impuesto.Element("descuentoAdicional") == null ? 0 : Convert.ToDouble(Impuesto.Element("descuentoAdicional").Value); Documento.Subtotal0 += Convert.ToDouble(Impuesto.Element("baseImponible").Value) - Documento.Descuento; } else { Documento.Descuento += Impuesto.Element("descuentoAdicional") == null ? 0 : Convert.ToDouble(Impuesto.Element("descuentoAdicional").Value); Documento.SubtotalIVA += Convert.ToDouble(Impuesto.Element("baseImponible").Value) - Documento.Descuento; Documento.ValorIVA += Convert.ToDouble(Impuesto.Element("valor").Value); Documento.Porcentaje = bus_impuesto.Get_Info_impuesto(param.Get_Parametro_Info(tb_parametro_enum.P_IVA).Valor).porcentaje; } } } Documento.Total = Documento.Subtotal0 + Documento.SubtotalIVA + Documento.ValorIVA; double ValorIva = Math.Round((double)Documento.SubtotalIVA * 0.12, 2, MidpointRounding.AwayFromZero); if (ValorIva != Documento.ValorIVA) { MessageBox.Show("Revisar: \n" + item + "\nIVA no cuadra con el subtotal con IVA :\nIVA calculado: " + ValorIva.ToString("c2") + "\nIVA en factura: " + Convert.ToDouble(Documento.ValorIVA).ToString("c2")); } Documento.Comprobante = Documento.CodDocumento + '-' + Documento.Establecimiento + "-" + Documento.PuntoEmision + "-" + Documento.NumeroDocumento; var listD = rootElement.Element("detalles").Elements("detalle") .Select(element => element) .ToList(); Documento.lstDetalle = new List <cp_XML_DocumentoDet_Info>(); int Contador = 1; foreach (var Detalle in listD) { var d = new cp_XML_DocumentoDet_Info { CodigoProducto = Detalle.Element("codigoPrincipal") == null ? "" : Detalle.Element("codigoPrincipal").Value.ToString(), NombreProducto = Detalle.Element("descripcion").Value.ToString(), Cantidad = Convert.ToDouble(Detalle.Element("cantidad").Value), Precio = Convert.ToDouble(Detalle.Element("precioTotalSinImpuesto").Value) }; if (Contador == 1) { Documento.Observacion = d.NombreProducto; Contador = 2; } var ImpuestoD = Detalle.Element("impuestos").Elements("impuesto") .Select(element => element) .FirstOrDefault(); d.PorcentajeIVA = Convert.ToDouble(ImpuestoD.Element("tarifa").Value); d.ValorIva = Convert.ToDouble(ImpuestoD.Element("valor").Value); d.Total = d.Precio + d.ValorIva; Documento.lstDetalle.Add(d); } if (Documento.Total == 0) { Documento.Descuento = infoFactura.Element("totalDescuento") == null ? 0 : Convert.ToDouble(infoFactura.Element("totalDescuento").Value); Documento.Subtotal0 = Convert.ToDouble(infoFactura.Element("totalSinImpuestos").Value) - Documento.Descuento; Documento.Total = Documento.Subtotal0; } #endregion #region Valida contabilización automática var proveedor = ListaProveedor.Where(q => q.IdEmpresa == param.IdEmpresa && q.Persona_Info.pe_cedulaRuc == Documento.emi_Ruc).FirstOrDefault(); if (proveedor == null) { proveedor = busProveedor.Get_Info_Proveedor(param.IdEmpresa, Documento.emi_Ruc); if (proveedor != null) { ListaProveedor.Add(proveedor); } } if (proveedor != null && !string.IsNullOrEmpty(proveedor.IdCtaCble_Gasto) && !string.IsNullOrEmpty(proveedor.IdCtaCble_CXP)) { Documento.SeContabiliza = true; } #endregion #region Proveedor producto if (proveedor != null && ListaProveedorProducto.Where(q => q.IdProveedor == proveedor.IdProveedor).Count() == 0) { ListaProveedorProducto.AddRange(busProveedorProducto.GetList(param.IdEmpresa, proveedor.IdProveedor)); } #endregion #region Info adicional if (rootElement.Element("infoAdicional") != null) { var listAdicional = rootElement.Element("infoAdicional").Elements("campoAdicional") .Select(element => element).ToList(); if (listAdicional.Count > 0) { var Kilometraje = listAdicional.Where(x => (string)x.Attribute("nombre") == "kilometraje").FirstOrDefault(); var Placa = listAdicional.Where(x => (string)x.Attribute("nombre") == "placa").FirstOrDefault(); var Disco = listAdicional.Where(x => (string)x.Attribute("nombre") == "disco").FirstOrDefault(); if (Kilometraje != null && Placa != null && Disco != null) { Documento.Observacion = (Documento.lstDetalle.Count > 0 ? Documento.lstDetalle.First().NombreProducto : "") + "-km" + Kilometraje.Value.ToString() + "-D" + Disco.Value.ToString() + "-" + Placa.Value.ToString() + "-"; int numValue = 0; if (Int32.TryParse(Disco.Value.ToString(), out numValue)) { var PuntoCargo = lstPuntoCargo.Where(q => q.codPunto_cargo == "DISCO " + Convert.ToInt32(Disco.Value).ToString()).FirstOrDefault(); if (PuntoCargo != null) { Documento.IdPunto_cargo = PuntoCargo.IdPunto_cargo; Documento.IdCentroCosto = PuntoCargo.IdCentroCosto_Scc; Documento.IdCentroCosto_sub_centro_costo = PuntoCargo.IdCentroCosto_sub_centro_costo_Scc; } } } } } #endregion #region Codigos de retención Documento.Imagen = bus_xml.Existe(param.IdEmpresa, Documento.emi_Ruc, Documento.CodDocumento, Documento.Establecimiento, Documento.PuntoEmision, Documento.NumeroDocumento, Documento.ClaveAcceso); Documento.lstRetencion = new List <cp_XML_Documento_Retencion_Info>(); bool DividirBases = false; if (ListaCodigoProveedor.Where(q => q.IdEmpresa == param.IdEmpresa && q.pe_cedulRuc == Documento.emi_Ruc).Count() == 0) { var ListaDet = bus_codigoProveedor.GetList(param.IdEmpresa, Documento.emi_Ruc); if (ListaDet.Count > 0) { if (ListaDet.Where(q => string.IsNullOrEmpty(q.BienServicio)).Count() == 1) { DividirBases = true; } Documento.Automatico = true; Documento.lstRetencion = new List <cp_XML_Documento_Retencion_Info>(); var lstDup = ListaDet.GroupBy(q => q.re_tipo).Select(q => new { re_tipo = q.Key, Contador = q.Count() }).ToList(); if (lstDup.Where(q => q.Contador > 1).Count() > 0 && Documento.Imagen == 1) { foreach (var Detalle in ListaDet) { double BaseImponible = Documento.Subtotal0 + Documento.SubtotalIVA; cp_XML_Documento_Retencion_Info deta = new cp_XML_Documento_Retencion_Info { re_tipoRet = Detalle.re_tipo, IdCodigo_SRI = Detalle.IdCodigo_SRI, re_Codigo_impuesto = Detalle.re_Codigo_impuesto, re_Porcen_retencion = Detalle.re_Porcen_retencion }; if (DividirBases && Detalle.re_tipo != "IVA") { var LstBase = (from a in Documento.lstDetalle join b in ListaProveedorProducto on a.CodigoProducto equals b.CodProducto select new { b.BienServicio, a.Precio }).ToList(); if (LstBase.Count == 0) { deta.re_baseRetencion = Math.Round(BaseImponible, 2, MidpointRounding.AwayFromZero); deta.re_valor_retencion = Math.Round(Math.Round(deta.re_baseRetencion, 2, MidpointRounding.AwayFromZero) * (Detalle.re_Porcen_retencion / 100), 2, MidpointRounding.AwayFromZero); } else { if (!string.IsNullOrEmpty(Detalle.BienServicio)) { BaseImponible = Math.Round(LstBase.Sum(q => q.Precio ?? 0), 2, MidpointRounding.AwayFromZero); } else { BaseImponible = BaseImponible - Math.Round(LstBase.Sum(q => q.Precio ?? 0), 2, MidpointRounding.AwayFromZero); } deta.re_baseRetencion = Math.Round(BaseImponible, 2, MidpointRounding.AwayFromZero); deta.re_valor_retencion = Math.Round(Math.Round(deta.re_baseRetencion, 2, MidpointRounding.AwayFromZero) * (Detalle.re_Porcen_retencion / 100), 2, MidpointRounding.AwayFromZero); } } else { deta.re_baseRetencion = Math.Round(Detalle.re_tipo == "IVA" ? Documento.ValorIVA : BaseImponible, 2, MidpointRounding.AwayFromZero); deta.re_valor_retencion = Math.Round(Math.Round(deta.re_baseRetencion, 2, MidpointRounding.AwayFromZero) * (Detalle.re_Porcen_retencion / 100), 2, MidpointRounding.AwayFromZero); } Documento.lstRetencion.Add(deta); } frmCP_XML_RetencionSubida frmRet = new frmCP_XML_RetencionSubida(); frmRet.info = Documento; frmRet.ShowDialog(); Documento = frmRet.info; } ListaCodigoProveedor.AddRange(ListaDet); } } else { var ListaDet = ListaCodigoProveedor.Where(q => q.IdEmpresa == param.IdEmpresa && q.pe_cedulRuc == Documento.emi_Ruc).ToList(); var lstDup = ListaDet.GroupBy(q => q.re_tipo).Select(q => new { re_tipo = q.Key, Contador = q.Count() }).ToList(); if (ListaDet.Where(q => string.IsNullOrEmpty(q.BienServicio)).Count() == 1) { DividirBases = true; } if (lstDup.Where(q => q.Contador > 1).Count() > 0 && Documento.Imagen == 1) { foreach (var Detalle in ListaDet) { double BaseImponible = Documento.Subtotal0 + Documento.SubtotalIVA; cp_XML_Documento_Retencion_Info deta = new cp_XML_Documento_Retencion_Info { re_tipoRet = Detalle.re_tipo, IdCodigo_SRI = Detalle.IdCodigo_SRI, re_Codigo_impuesto = Detalle.re_Codigo_impuesto, re_Porcen_retencion = Detalle.re_Porcen_retencion }; if (DividirBases && Detalle.re_tipo != "IVA") { var LstBase = (from a in Documento.lstDetalle join b in ListaProveedorProducto on a.CodigoProducto equals b.CodProducto select new { b.BienServicio, a.Precio }).ToList(); if (LstBase.Count == 0) { deta.re_baseRetencion = Math.Round(BaseImponible, 2, MidpointRounding.AwayFromZero); deta.re_valor_retencion = Math.Round(Math.Round(deta.re_baseRetencion, 2, MidpointRounding.AwayFromZero) * (Detalle.re_Porcen_retencion / 100), 2, MidpointRounding.AwayFromZero); } else { if (!string.IsNullOrEmpty(Detalle.BienServicio)) { BaseImponible = Math.Round(LstBase.Sum(q => q.Precio ?? 0), 2, MidpointRounding.AwayFromZero); } else { BaseImponible = BaseImponible - Math.Round(LstBase.Sum(q => q.Precio ?? 0), 2, MidpointRounding.AwayFromZero); } deta.re_baseRetencion = Math.Round(BaseImponible, 2, MidpointRounding.AwayFromZero); deta.re_valor_retencion = Math.Round(Math.Round(deta.re_baseRetencion, 2, MidpointRounding.AwayFromZero) * (Detalle.re_Porcen_retencion / 100), 2, MidpointRounding.AwayFromZero); } } else { deta.re_baseRetencion = Math.Round(Detalle.re_tipo == "IVA" ? Documento.ValorIVA : BaseImponible, 2, MidpointRounding.AwayFromZero); deta.re_valor_retencion = Math.Round(Math.Round(deta.re_baseRetencion, 2, MidpointRounding.AwayFromZero) * (Detalle.re_Porcen_retencion / 100), 2, MidpointRounding.AwayFromZero); } Documento.lstRetencion.Add(deta); } frmCP_XML_RetencionSubida frmRet = new frmCP_XML_RetencionSubida(); frmRet.info = Documento; frmRet.ShowDialog(); Documento = frmRet.info; } Documento.Automatico = true; } if (blst.Where(q => q.Comprobante == Documento.Comprobante && q.emi_Ruc == Documento.emi_Ruc).Count() == 0) { blst.Add(Documento); } #endregion gcDetalle.DataSource = null; gcDetalle.DataSource = blst; } } lblContador.Text = blst.Count.ToString(); gcDetalle.DataSource = blst; } catch (Exception ex) { gcDetalle.DataSource = blst; lblContador.Text = blst.Count.ToString(); MessageBox.Show(ex.Message, param.Nombre_sistema, MessageBoxButtons.OK, MessageBoxIcon.Error); } }
private void btnVerificarCarpeta_Click(object sender, EventArgs e) { try { ListaMicroEmpresa = new List <cp_proveedor_microempresa_Info>(); bus_ruta.GuardarDB(new cp_RutaPorEmpresaPorUsuario_Info { IdEmpresa = param.IdEmpresa, IdUsuario = param.IdUsuario, RutaXML = txtRutaXml.Text }); blst = new BindingList <cp_XML_Documento_Info>(); string folder = txtRutaXml.Text; string filter = "*.XML*"; string[] files = Directory.GetFiles(folder, filter); foreach (var item in files) { string readText = File.ReadAllText(item); XmlDocument xmlComprobanteOrigen = new XmlDocument(); xmlComprobanteOrigen.Load(new StringReader(readText)); string mensajeErrorOut = string.Empty; string sXml_a_descerializar = Quitar_a_xml_CDATA_y_Signature(xmlComprobanteOrigen.GetElementsByTagName("comprobante")[0].InnerXml, ref mensajeErrorOut); var rootElement = XElement.Parse(sXml_a_descerializar); var infoFactura = rootElement.Element("infoFactura"); var infoTributaria = rootElement.Element("infoTributaria"); var IdentificacionComprador = infoFactura.Element("identificacionComprador").Value; if (IdentificacionComprador == param.InfoEmpresa.em_ruc) { var Documento = new cp_XML_Documento_Info { XML = sXml_a_descerializar, Tipo = infoTributaria.Element("codDoc").Value == "01" ? "FACTURA" : "NOTA DE CREDITO", emi_Ruc = infoTributaria.Element("ruc").Value, emi_RazonSocial = infoTributaria.Element("razonSocial").Value, emi_NombreComercial = infoTributaria.Element("nombreComercial") == null?infoTributaria.Element("razonSocial").Value : infoTributaria.Element("nombreComercial").Value, ClaveAcceso = infoTributaria.Element("claveAcceso").Value, emi_ContribuyenteEspecial = infoFactura.Element("contribuyenteEspecial") == null ? "NO" : infoFactura.Element("contribuyenteEspecial").Value, CodDocumento = infoTributaria.Element("codDoc").Value, Establecimiento = infoTributaria.Element("estab").Value, PuntoEmision = infoTributaria.Element("ptoEmi").Value, NumeroDocumento = infoTributaria.Element("secuencial").Value, emi_DireccionMatriz = infoTributaria.Element("dirMatriz").Value, FechaEmision = DateTime.ParseExact(infoFactura.Element("fechaEmision").Value, "dd/MM/yyyy", System.Globalization.CultureInfo.CurrentCulture), rec_RazonSocial = infoFactura.Element("razonSocialComprador").Value, rec_Identificacion = infoFactura.Element("identificacionComprador").Value }; Documento.FormaPago = infoFactura.Element("pagos") == null ? null : infoFactura.Element("pagos").Element("pago") == null ? null : (infoFactura.Element("pagos").Element("pago").Element("formaPago") == null ? null : infoFactura.Element("pagos").Element("pago").Element("formaPago").Value); Documento.Plazo = infoFactura.Element("pagos") == null ? 0 : infoFactura.Element("pagos").Element("pago") == null ? 0 : (infoFactura.Element("pagos").Element("pago").Element("plazo") == null ? 0 : Convert.ToInt32(Convert.ToDecimal(infoFactura.Element("pagos").Element("pago").Element("plazo").Value))); var list = infoFactura.Element("totalConImpuestos").Elements("totalImpuesto") .Select(element => element) .ToList(); Documento.SubtotalIVA = 0; Documento.Subtotal0 = 0; Documento.ValorIVA = 0; foreach (var Impuesto in list) { if (Impuesto.Element("codigo").Value.ToString() != "3") { Documento.Porcentaje = Convert.ToDouble(Impuesto.Element("valor").Value); if (Documento.Porcentaje == 0) { Documento.Descuento += Impuesto.Element("descuentoAdicional") == null ? 0 : Convert.ToDouble(Impuesto.Element("descuentoAdicional").Value); Documento.Subtotal0 += Convert.ToDouble(Impuesto.Element("baseImponible").Value) - Documento.Descuento; } else { Documento.Descuento += Impuesto.Element("descuentoAdicional") == null ? 0 : Convert.ToDouble(Impuesto.Element("descuentoAdicional").Value); Documento.SubtotalIVA += Convert.ToDouble(Impuesto.Element("baseImponible").Value) - Documento.Descuento; Documento.ValorIVA += Convert.ToDouble(Impuesto.Element("valor").Value); Documento.Porcentaje = bus_impuesto.Get_Info_impuesto(param.Get_Parametro_Info(tb_parametro_enum.P_IVA).Valor).porcentaje; } } } Documento.Total = Documento.Subtotal0 + Documento.SubtotalIVA + Documento.ValorIVA; double ValorIva = Math.Round((double)Documento.SubtotalIVA * 0.12, 2, MidpointRounding.AwayFromZero); if (ValorIva != Documento.ValorIVA) { MessageBox.Show("Revisar: \n" + item + "\nIVA no cuadra con el subtotal con IVA :\nIVA calculado: " + ValorIva.ToString("c2") + "\nIVA en factura: " + Convert.ToDouble(Documento.ValorIVA).ToString("c2")); } Documento.Comprobante = Documento.CodDocumento + '-' + Documento.Establecimiento + "-" + Documento.PuntoEmision + "-" + Documento.NumeroDocumento; var listD = rootElement.Element("detalles").Elements("detalle") .Select(element => element) .ToList(); Documento.lstDetalle = new List <cp_XML_DocumentoDet_Info>(); foreach (var Detalle in listD) { var d = new cp_XML_DocumentoDet_Info { NombreProducto = Detalle.Element("descripcion").Value.ToString(), Cantidad = Convert.ToDouble(Detalle.Element("cantidad").Value), Precio = Convert.ToDouble(Detalle.Element("precioTotalSinImpuesto").Value) }; var ImpuestoD = Detalle.Element("impuestos").Elements("impuesto") .Select(element => element) .FirstOrDefault(); d.PorcentajeIVA = Convert.ToDouble(ImpuestoD.Element("tarifa").Value); d.ValorIva = Convert.ToDouble(ImpuestoD.Element("valor").Value); d.Total = d.Precio + d.ValorIva; Documento.lstDetalle.Add(d); } if (Documento.Total == 0) { Documento.Descuento = infoFactura.Element("totalDescuento") == null ? 0 : Convert.ToDouble(infoFactura.Element("totalDescuento").Value); Documento.Subtotal0 = Convert.ToDouble(infoFactura.Element("totalSinImpuestos").Value) - Documento.Descuento; Documento.Total = Documento.Subtotal0; } if (ListaCodigoProveedor.Where(q => q.IdEmpresa == param.IdEmpresa && q.pe_cedulRuc == Documento.emi_Ruc).Count() == 0) { var ListaDet = bus_codigoProveedor.GetList(param.IdEmpresa, Documento.emi_Ruc); if (ListaDet.Count > 0) { Documento.Automatico = true; ListaCodigoProveedor.AddRange(ListaDet); } } else { Documento.Automatico = true; } var CodigoProveedor = ListaCodigoProveedor.Where(q => q.IdEmpresa == param.IdEmpresa && q.pe_cedulRuc == Documento.emi_Ruc).ToList(); if (CodigoProveedor != null && CodigoProveedor.Count > 0 && Documento.ValorIVA > 0) { if (CodigoProveedor.Where(q => q.re_tipo == "IVA").Count() == 0) { MessageBox.Show("El proveedor " + Documento.emi_RazonSocial + " no tiene parametrizada un código para retención de IVA para el documento " + Documento.Comprobante, param.Nombre_sistema, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } #region Validar microempresas var MicroEmpresa = ListaMicroEmpresa.Where(q => q.Ruc == Documento.emi_Ruc).FirstOrDefault(); if (MicroEmpresa == null) { MicroEmpresa = busMicroEmpresa.GetInfo(Documento.emi_Ruc); if (MicroEmpresa == null) { ListaMicroEmpresa.Add(new cp_proveedor_microempresa_Info { Ruc = Documento.emi_Ruc, EsMicroEmpresa = false }); } else { ListaMicroEmpresa.Add(new cp_proveedor_microempresa_Info { Ruc = MicroEmpresa.Ruc, EsMicroEmpresa = true, Nombre = MicroEmpresa.Nombre }); Documento.EsMicroEmpresa = true; } } else { Documento.EsMicroEmpresa = MicroEmpresa.EsMicroEmpresa; } #endregion Documento.Imagen = bus_xml.Existe(param.IdEmpresa, Documento.emi_Ruc, Documento.CodDocumento, Documento.Establecimiento, Documento.PuntoEmision, Documento.NumeroDocumento); if (blst.Where(q => q.Comprobante == Documento.Comprobante && q.emi_Ruc == Documento.emi_Ruc).Count() == 0) { blst.Add(Documento); } gcDetalle.DataSource = null; gcDetalle.DataSource = blst; } } lblContador.Text = blst.Count.ToString(); gcDetalle.DataSource = blst; if (blst.Where(q => q.EsMicroEmpresa == true).Count() > 0) { MessageBox.Show("Existen microempresas en el listado de documentos, revise la parametrización", param.Nombre_sistema, MessageBoxButtons.OK, MessageBoxIcon.Information); } } catch (Exception ex) { gcDetalle.DataSource = blst; lblContador.Text = blst.Count.ToString(); MessageBox.Show(ex.Message, param.Nombre_sistema, MessageBoxButtons.OK, MessageBoxIcon.Error); } }