private void MostrarFotografiaDeEncabezado(dynamic sender, int idFactura)
        {
            try
            {
                foreach (var factura in FacturaDetalles.Where(facturaDetalle => facturaDetalle.INVOICE_ID == idFactura))
                {
                    UsuarioDeseaCargarEncabezadoFactura?.Invoke(sender, new FacturaArgumento {
                        Data = new FacturaEncabezado {
                            INVOICE_ID = factura.INVOICE_ID, CDF_SERIE = factura.CDF_SERIE, CDF_RESOLUCION = factura.CDF_RESOLUCION, IS_CREDIT_NOTE = factura.IS_CREDIT_NOTE
                        }
                    });

                    if (!string.IsNullOrEmpty(FacturaEncabezado.IMAGE_1))
                    {
                        UiVisualizadorImagenes.Items.Add(FacturaEncabezado.IMAGE_1);
                    }
                    if (!string.IsNullOrEmpty(FacturaEncabezado.IMAGE_2))
                    {
                        UiVisualizadorImagenes.Items.Add(FacturaEncabezado.IMAGE_2);
                    }
                    if (!string.IsNullOrEmpty(FacturaEncabezado.IMAGE_3))
                    {
                        UiVisualizadorImagenes.Items.Add(FacturaEncabezado.IMAGE_3);
                    }
                    UiVisualizadorImagenes.DataBind();
                    break;
                }
            }
            catch (Exception ex)
            {
                EstablecerError(ex.Message, sender);
            }
        }
 private void ObtenerFacturaParaMarcador(dynamic sender, int idFactura)
 {
     try
     {
         foreach (var factura in FacturaDetalles.Where(facturaDetalle => facturaDetalle.INVOICE_ID == idFactura))
         {
             ((ASPxGridView)(sender)).JSProperties.Add("cpAgregarMarcador", factura);
             break;
         }
     }
     catch (Exception ex)
     {
         EstablecerError(ex.Message, sender);
     }
 }
        /// <summary>
        /// Metodo que recorre las facturas y genera el reporte de las mismas en formato XML
        /// </summary>
        public void GenerarReporteDeFacturasEnFormatoXml()
        {
            UiVistaEncabezado.ExpandAll();

            var listaFacturasVisibles = new List <FacturaDetalle>();

            for (var i = 0; i < UiVistaEncabezado.VisibleRowCount; i++)
            {
                if (UiVistaEncabezado.IsGroupRow(i))
                {
                    continue;
                }
                var fila = (FacturaDetalle)UiVistaEncabezado.GetRow(i);
                if (fila != null)
                {
                    listaFacturasVisibles.Add(fila);
                }
            }

            var listaFacturasAgrupadas = listaFacturasVisibles.GroupBy(factura => factura.ID).Select(grupoFactura => grupoFactura.First()).ToList();

            var listaDeFacturasParaReporte = listaFacturasAgrupadas.Select(factura => new FacturaEncabezado
            {
                ID = factura.ID
                ,
                INVOICE_ID = factura.INVOICE_ID
                ,
                CDF_RESOLUCION = factura.CDF_RESOLUCION
                ,
                CDF_SERIE = factura.CDF_SERIE
                ,
                CLIENT_ID = factura.CLIENT_ID
                ,
                CDF_NOMBRECLIENTE = factura.CDF_NOMBRECLIENTE
                ,
                POSTED_DATETIME = factura.POSTED_DATETIME
                ,
                PAY_DEAL = factura.PAY_DEAL
                ,
                CODE_CUSTOMER_ALTERNATE = factura.CODE_CUSTOMER_ALTERNATE
                ,
                Detalle = FacturaDetalles.Where(detalleDeFactura => detalleDeFactura.ID.Equals(factura.ID)).ToList()
            }).ToList();

            MarcarFacturasQueGeneraronXml?.Invoke(UiVistaEncabezado, new FacturaArgumento {
                ListaDeFacturasEncabezado = listaDeFacturasParaReporte, FechaInicial = UiFechaIncio.Date, FechaFinal = UiFechaFinal.Date, Login = Session["LOGIN"].ToString()
            });

            UiVistaEncabezado.JSProperties.Add("cpRecargarGrid", "Enabled");

            var documentoXml = new XDocument(new XDeclaration("1.0", "iso-8859-1", null));
            var nodoRaiz     = new XElement("invoices");

            documentoXml.Add(nodoRaiz);
            foreach (var facturaParaXml in listaDeFacturasParaReporte)
            {
                var nodoFactura = new XElement("invoice");
                nodoFactura.Add(new XElement("id", facturaParaXml.INVOICE_ID));
                nodoFactura.Add(new XElement("OfficialSerNr", facturaParaXml.CDF_RESOLUCION));
                nodoFactura.Add(new XElement("CustCode", facturaParaXml.CODE_CUSTOMER_ALTERNATE));
                nodoFactura.Add(new XElement("CustName", facturaParaXml.CDF_NOMBRECLIENTE));
                nodoFactura.Add(new XElement("TransDate", Convert.ToDateTime(facturaParaXml.POSTED_DATETIME.ToString()).Date.ToString("dd/MM/yyyy")));
                nodoFactura.Add(new XElement("PayDeal", facturaParaXml.PAY_DEAL));
                var nodoDetalleDeFactura = new XElement("items");
                for (var i = 0; i < facturaParaXml.Detalle.Count; i++)
                {
                    var detalleDeFactura          = facturaParaXml.Detalle[i];
                    var nodoSkuDeDetalleDeFactura = new XElement("item_line");
                    nodoSkuDeDetalleDeFactura.Add(new XElement("id", i));
                    nodoSkuDeDetalleDeFactura.Add(new XElement("ArtCode", detalleDeFactura.ART_CODE));
                    nodoSkuDeDetalleDeFactura.Add(new XElement("Spec", detalleDeFactura.DESCRIPTION_SKU));
                    nodoSkuDeDetalleDeFactura.Add(new XElement("Quant", detalleDeFactura.QTY));
                    nodoSkuDeDetalleDeFactura.Add(new XElement("Price", detalleDeFactura.PRICE));
                    nodoSkuDeDetalleDeFactura.Add(new XElement("VATCode", detalleDeFactura.VAT_CODE));
                    nodoSkuDeDetalleDeFactura.Add(new XElement("Sum", detalleDeFactura.TOTAL_LINE));
                    nodoSkuDeDetalleDeFactura.Add(new XElement("SerialNr", detalleDeFactura.SERIAL_NR));
                    nodoDetalleDeFactura.Add(nodoSkuDeDetalleDeFactura);
                }
                nodoFactura.Add(nodoDetalleDeFactura);
                nodoRaiz.Add(nodoFactura);
            }

            var carpetaParaAlmacenarDocumentoXml = $"{AppDomain.CurrentDomain.BaseDirectory}/App_Data/UploadTemp/";
            var fechaDeCreacionDeDocumento       = DateTime.Now.ToString("u").Replace(':', '.').Replace('Z', ' ');
            var nombreDeArchivo = $"ReporteDeFacturas {fechaDeCreacionDeDocumento} {Session["LOGIN"]}.xml";
            var rutaCompletaDeGuardadoDeArchivo = Path.Combine(carpetaParaAlmacenarDocumentoXml, nombreDeArchivo);

            documentoXml.Save(rutaCompletaDeGuardadoDeArchivo);

            var response = System.Web.HttpContext.Current.Response;

            response.ClearContent();
            response.Clear();
            response.ContentType = "application/xml";
            response.AddHeader("Content-Disposition", $"attachment; filename={nombreDeArchivo};");
            response.TransmitFile(rutaCompletaDeGuardadoDeArchivo);
            response.Flush();
            response.End();
        }