public List <Entidades.NaturalezaComprobante> LeerLista(Entidades.Enum.Elemento Elemento)
        {
            StringBuilder a = new StringBuilder(string.Empty);

            a.Append("select NaturalezaComprobante.IdNaturalezaComprobante, NaturalezaComprobante.DescrNaturalezaComprobante from NaturalezaComprobante ");
            if (Elemento == Entidades.Enum.Elemento.Comprobante)
            {
                a.Append("where NaturalezaComprobante.IdNaturalezaComprobante<>'VentaContrato' ");
            }
            else
            {
                a.Append("where NaturalezaComprobante.IdNaturalezaComprobante='VentaContrato' ");
            }
            DataTable dt = (DataTable)Ejecutar(a.ToString(), TipoRetorno.TB, Transaccion.NoAcepta, sesion.CnnStr);
            List <Entidades.NaturalezaComprobante> lista = new List <Entidades.NaturalezaComprobante>();

            if (dt.Rows.Count != 0)
            {
                if (Elemento == Entidades.Enum.Elemento.Comprobante)
                {
                    Entidades.NaturalezaComprobante elem = new Entidades.NaturalezaComprobante();
                    elem.Id    = String.Empty;
                    elem.Descr = "--- Todas ---";
                    lista.Add(elem);
                }
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    Entidades.NaturalezaComprobante elem = new Entidades.NaturalezaComprobante();
                    Copiar(dt.Rows[i], elem);
                    lista.Add(elem);
                }
            }
            return(lista);
        }
        public List <Entidades.NaturalezaComprobante> LeerLista(string IdNaturalezaComprobante)
        {
            StringBuilder a = new StringBuilder(string.Empty);

            a.Append("select NaturalezaComprobante.IdNaturalezaComprobante, NaturalezaComprobante.DescrNaturalezaComprobante from NaturalezaComprobante ");
            a.Append("where NaturalezaComprobante.IdNaturalezaComprobante='" + IdNaturalezaComprobante + "' ");
            DataTable dt = (DataTable)Ejecutar(a.ToString(), TipoRetorno.TB, Transaccion.NoAcepta, sesion.CnnStr);
            List <Entidades.NaturalezaComprobante> lista = new List <Entidades.NaturalezaComprobante>();

            if (dt.Rows.Count != 0)
            {
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    Entidades.NaturalezaComprobante elem = new Entidades.NaturalezaComprobante();
                    Copiar(dt.Rows[i], elem);
                    lista.Add(elem);
                }
            }
            return(lista);
        }
 protected void BuscarButton_Click(object sender, EventArgs e)
 {
     if (Funciones.SessionTimeOut(Session))
     {
         Response.Redirect("~/SessionTimeout.aspx");
     }
     else
     {
         if (!ValidarFiltros()) { return; };
         ResultadosTextBox.Text = "";
         ResultadosLabel.Visible = false;
         ResultadosTextBox.Visible = false;
         Entidades.Sesion sesion = (Entidades.Sesion)Session["Sesion"];
         List<Entidades.Comprobante> lista = new List<Entidades.Comprobante>();
         MensajeLabel.Text = String.Empty;
         Entidades.Persona persona;
         if (ClienteDropDownList.SelectedIndex >= 0)
         {
             persona = ((List<Entidades.Persona>)ViewState["Personas"])[ClienteDropDownList.SelectedIndex];
         }
         else
         {
             persona = new Entidades.Persona();
         }
         Entidades.NaturalezaComprobante naturalezaComprobante;
         if (NaturalezaComprobanteDropDownList.SelectedIndex >= 0)
         {
             naturalezaComprobante = ((List<Entidades.NaturalezaComprobante>)ViewState["NaturalezaComprobante"])[NaturalezaComprobanteDropDownList.SelectedIndex];
         }
         else
         {
             naturalezaComprobante = new Entidades.NaturalezaComprobante();
         }
         List<Entidades.Estado> estados = new List<Entidades.Estado>();
         if (EstadoVigenteCheckBox.Checked) estados.Add(new Entidades.EstadoVigente());
         if (EstadoPteEnvioCheckBox.Checked) estados.Add(new Entidades.EstadoPteEnvio());
         if (EstadoPteConfCheckBox.Checked) estados.Add(new Entidades.EstadoPteConf());
         if (EstadoDeBajaCheckBox.Checked) estados.Add(new Entidades.EstadoDeBaja());
         if (EstadoPteAutorizCheckBox.Checked) estados.Add(new Entidades.EstadoPteAutoriz());
         if (EstadoRechCheckBox.Checked) estados.Add(new Entidades.EstadoRech());
         lista = RN.Comprobante.ListaFiltrada(estados, FechaDesdeTextBox.Text, FechaHastaTextBox.Text, persona, naturalezaComprobante, false, DetalleTextBox.Text, sesion);
         if (lista.Count == 0)
         {
             //DescargarButton.Enabled = false;
             DescargarButton.Attributes.Add("Disabled", "Disabled");
             ComprobantesGridView.DataSource = null;
             ComprobantesGridView.DataBind();
             MensajeLabel.Text = "No se han encontrado Comprobantes que satisfagan la busqueda";
         }
         else
         {
             //DescargarButton.Enabled = true;
             DescargarButton.Attributes.Remove("Disabled");
             ComprobantesGridView.DataSource = lista;
             ViewState["Comprobantes"] = lista;
             ComprobantesGridView.DataBind();
         }
     }
 }
Exemple #4
0
        protected void BuscarButton_Click(object sender, EventArgs e)
        {
            if (Funciones.SessionTimeOut(Session))
            {
                Response.Redirect("~/SessionTimeout.aspx");
            }
            else
            {
                try
                {
                    MensajeLabel.Text = "";
                    bool                         monedasExtranjeras = false;
                    Entidades.Sesion             sesion             = (Entidades.Sesion)Session["Sesion"];
                    List <Entidades.Comprobante> listaC             = new List <Entidades.Comprobante>();

                    List <Entidades.Estado> estados = new List <Entidades.Estado>();
                    Entidades.Estado        es      = new Entidades.Estado();
                    es.Id = "Vigente";
                    estados.Add(es);
                    Entidades.Persona persona          = new Entidades.Persona();
                    Entidades.NaturalezaComprobante nc = new Entidades.NaturalezaComprobante();
                    nc.Id  = "Venta";
                    listaC = RN.Comprobante.ListaFiltradaIvaYMovimientos(estados, FechaDesdeTextBox.Text, FechaHastaTextBox.Text, persona, nc, false, "", sesion);

                    Entidades.VentasXArticulo ventas = new Entidades.VentasXArticulo();

                    ventas.Cuit       = sesion.Cuit.Nro;
                    ventas.RazSoc     = sesion.Cuit.RazonSocial;
                    ventas.PeriodoDsd = FechaDesdeTextBox.Text.Substring(6, 2) + "/" + FechaDesdeTextBox.Text.Substring(4, 2) + "/" + FechaDesdeTextBox.Text.Substring(0, 4);
                    ventas.PeriodoHst = FechaHastaTextBox.Text.Substring(6, 2) + "/" + FechaHastaTextBox.Text.Substring(4, 2) + "/" + FechaHastaTextBox.Text.Substring(0, 4);

                    System.Xml.Serialization.XmlSerializer x;
                    byte[] bytes;
                    System.IO.MemoryStream ms;
                    FeaEntidades.InterFacturas.lote_comprobantes lote;

                    ventas.VentasXArticuloDetalle = new List <Entidades.VentasXArticuloDetalle>();
                    List <Entidades.VentasXArticuloDetalle> lvd = new List <Entidades.VentasXArticuloDetalle>();
                    Entidades.VentasXArticuloDetalle        vd;
                    foreach (Entidades.Comprobante comprobante in listaC)
                    {
                        lote = new FeaEntidades.InterFacturas.lote_comprobantes();
                        x    = new System.Xml.Serialization.XmlSerializer(lote.GetType());

                        comprobante.Response = comprobante.Response.Replace("iso-8859-1", "utf-16");
                        bytes = new byte[comprobante.Response.Length * sizeof(char)];
                        System.Buffer.BlockCopy(comprobante.Response.ToCharArray(), 0, bytes, 0, bytes.Length);
                        ms = new System.IO.MemoryStream(bytes);
                        ms.Seek(0, System.IO.SeekOrigin.Begin);
                        lote = (FeaEntidades.InterFacturas.lote_comprobantes)x.Deserialize(ms);

                        //Totales por artículo
                        if (lote.comprobante[0].detalle.linea != null)
                        {
                            for (int z = 0; z < lote.comprobante[0].detalle.linea.Length; z++)
                            {
                                double signo = 1;
                                if (("/3/8/13/").IndexOf("/" + Convert.ToInt32(lote.comprobante[0].cabecera.informacion_comprobante.tipo_de_comprobante).ToString().Trim() + "/") != -1)
                                {
                                    signo = -1;
                                }

                                //Verificar el articulo ya existe en la lista.
                                //List<Entidades.VentasXArticuloDetalle> listaAux = lvd.FindAll(delegate(Entidades.VentasXArticuloDetalle vxad)
                                //{
                                //    return vxad.IdArticulo == lote.comprobante[0].detalle.linea[z].codigo_producto_vendedor;
                                //});
                                //if (listaAux.Count == 0 || lote.comprobante[0].detalle.linea[z].codigo_producto_vendedor.Trim() == "")
                                //{
                                //}
                                vd               = new Entidades.VentasXArticuloDetalle();
                                vd.IdArticulo    = lote.comprobante[0].detalle.linea[z].codigo_producto_vendedor;
                                vd.GTIN          = lote.comprobante[0].detalle.linea[z].GTIN.ToString();
                                vd.IdArticuloEmp = lote.comprobante[0].detalle.linea[z].codigo_producto_comprador;
                                if (lote.comprobante[0].detalle.linea[z].indicacion_exento_gravado != null)
                                {
                                    vd.IndicacionExentoGravado = lote.comprobante[0].detalle.linea[z].indicacion_exento_gravado;
                                }
                                else
                                {
                                    vd.IndicacionExentoGravado = "";
                                }
                                vd.NumeroLinea = lote.comprobante[0].detalle.linea[z].numeroLinea;
                                vd.UnidadCod   = lote.comprobante[0].detalle.linea[z].unidad;
                                vd.UnidadDescr = lote.comprobante[0].detalle.linea[z].unidadDescripcion;
                                vd.CompTipo    = lote.comprobante[0].cabecera.informacion_comprobante.tipo_de_comprobante.ToString();
                                vd.CompNro     = lote.comprobante[0].cabecera.informacion_comprobante.numero_comprobante.ToString();
                                vd.CompPtoVta  = lote.comprobante[0].cabecera.informacion_comprobante.punto_de_venta.ToString();
                                vd.CompFecEmi  = lote.comprobante[0].cabecera.informacion_comprobante.fecha_emision.Substring(6, 2) + "/" + lote.comprobante[0].cabecera.informacion_comprobante.fecha_emision.Substring(4, 2) + "/" + lote.comprobante[0].cabecera.informacion_comprobante.fecha_emision.Substring(0, 4);

                                vd.EmpNroDoc   = lote.comprobante[0].cabecera.informacion_comprador.nro_doc_identificatorio.ToString();
                                vd.EmpCodDoc   = lote.comprobante[0].cabecera.informacion_comprador.codigo_doc_identificatorio.ToString();
                                vd.EmpDescrDoc = ""; //Obtener la descripcion;
                                vd.EmpNombre   = lote.comprobante[0].cabecera.informacion_comprador.denominacion;

                                if (lote.comprobante[0].detalle.linea[z].descripcion.Length > 0 && lote.comprobante[0].detalle.linea[z].descripcion.Substring(0, 1) == "%")
                                {
                                    vd.Descr = RN.Funciones.HexToString(lote.comprobante[0].detalle.linea[z].descripcion);
                                }
                                else
                                {
                                    vd.Descr = lote.comprobante[0].detalle.linea[z].descripcion;
                                }
                                vd.ImporteTotal = lote.comprobante[0].detalle.linea[z].importe_total_articulo * signo;
                                if (lote.comprobante[0].detalle.linea[z].cantidadSpecified == true && lote.comprobante[0].detalle.linea[z].precio_unitarioSpecified == true)
                                {
                                    vd.Cantidad       = lote.comprobante[0].detalle.linea[z].cantidad * signo;
                                    vd.PrecioUnitario = lote.comprobante[0].detalle.linea[z].precio_unitario * signo;
                                }
                                if (lote.comprobante[0].detalle.linea[z].alicuota_ivaSpecified == true && lote.comprobante[0].detalle.linea[z].importe_ivaSpecified == true)
                                {
                                    vd.AlicuotaIVA = lote.comprobante[0].detalle.linea[z].alicuota_iva;
                                    vd.ImporteIVA  = lote.comprobante[0].detalle.linea[z].importe_iva * signo;
                                }
                                lvd.Add(vd);
                            }
                        }
                    }
                    //Si se muestran artículos vigentes no vendidos.
                    List <Entidades.Articulo> listaArt = new List <Entidades.Articulo>();
                    if (VerTodosLosArticulosCheckBox.Enabled == true && VerTodosLosArticulosCheckBox.Checked == true)
                    {
                        listaArt = RN.Articulo.ListaPorCuit(true, false, sesion);
                        if (listaArt.Count != 0)
                        {
                            foreach (Entidades.Articulo art in listaArt)
                            {
                                bool existeArt = false;
                                if (lvd.Count != 0)
                                {
                                    System.Collections.Generic.List <Entidades.VentasXArticuloDetalle> listaVXArt = lvd.FindAll(delegate(Entidades.VentasXArticuloDetalle vxart)
                                    {
                                        return(vxart.IdArticulo == art.Id);
                                    });
                                    if (listaVXArt.Count != 0)
                                    {
                                        existeArt = true;
                                    }
                                }
                                if (!existeArt)
                                {
                                    vd                         = new Entidades.VentasXArticuloDetalle();
                                    vd.IdArticulo              = art.Id;
                                    vd.Descr                   = art.Descr;
                                    vd.CompFecEmi              = "";
                                    vd.CompNro                 = "";
                                    vd.CompPtoVta              = "";
                                    vd.CompTipo                = "";
                                    vd.UnidadCod               = "";
                                    vd.UnidadDescr             = "";
                                    vd.IndicacionExentoGravado = "";
                                    vd.EmpNroDoc               = "";
                                    vd.EmpCodDoc               = "";
                                    vd.EmpDescrDoc             = "";
                                    vd.EmpNombre               = "";
                                    lvd.Add(vd);
                                }
                            }
                        }
                    }
                    if (lvd.Count != 0)
                    {
                        ventas.VentasXArticuloDetalle = lvd;
                    }
                    Session["formatoRptExportar"]         = FormatosRptExportarDropDownList.SelectedValue;
                    Session["mostrarFechaYHora"]          = FechaYHoraCheckBox.Checked;
                    Session["mostrarDetalleComprobantes"] = DetalleComprobanteCheckBox.Checked;
                    Session["monedasExtranjeras"]         = monedasExtranjeras;
                    if (ventas.VentasXArticuloDetalle.Count != 0)
                    {
                        Session["ventasXArticulo"] = ventas;
                        Response.Redirect("~/Facturacion/Electronica/Reportes/VentasXArticuloWebForm.aspx", true);
                    }
                    else
                    {
                        MensajeLabel.Text = "No hay información.";
                    }
                }
                catch (System.Threading.ThreadAbortException)
                {
                    Trace.Warn("Thread abortado");
                }
                catch (Exception ex)
                {
                    WebForms.Excepciones.Redireccionar(ex, "~/NotificacionDeExcepcion.aspx");
                }
            }
        }
        protected void BuscarButton_Click(object sender, EventArgs e)
        {
            if (Funciones.SessionTimeOut(Session))
            {
                Response.Redirect("~/SessionTimeout.aspx");
            }
            else
            {
                if (ElementoTextBox.Text == "Contrato" || ValidacionFiltrosOK()) 
                {
                    Entidades.Sesion sesion = (Entidades.Sesion)Session["Sesion"];
                    List<Entidades.Comprobante> lista = new List<Entidades.Comprobante>();
                    MensajeLabel.Text = String.Empty;
                    Entidades.Persona persona;
                    if (ClienteDropDownList.SelectedIndex >= 0)
                    {
                        persona = ((List<Entidades.Persona>)ViewState["Personas"])[ClienteDropDownList.SelectedIndex];
                    }
                    else
                    {
                        persona = new Entidades.Persona();
                    }
                    Entidades.NaturalezaComprobante naturalezaComprobante;
                    if (NaturalezaComprobanteDropDownList.SelectedIndex >= 0)
                    {
                        naturalezaComprobante = ((List<Entidades.NaturalezaComprobante>)ViewState["NaturalezaComprobante"])[NaturalezaComprobanteDropDownList.SelectedIndex];
                    }
                    else
                    {
                        naturalezaComprobante = new Entidades.NaturalezaComprobante();
                    }
                    List<Entidades.Estado> estados = new List<Entidades.Estado>();
                    if (EstadoVigenteCheckBox.Checked) estados.Add(new Entidades.EstadoVigente());
                    if (EstadoPteEnvioCheckBox.Checked) estados.Add(new Entidades.EstadoPteEnvio());
                    if (EstadoPteConfCheckBox.Checked) estados.Add(new Entidades.EstadoPteConf());
                    if (EstadoDeBajaCheckBox.Checked) estados.Add(new Entidades.EstadoDeBaja());
                    if (EstadoPteAutorizCheckBox.Checked) estados.Add(new Entidades.EstadoPteAutoriz());
                    if (EstadoRechCheckBox.Checked) estados.Add(new Entidades.EstadoRech());
                    lista = RN.Comprobante.ListaFiltrada(estados, FechaDesdeTextBox.Text, FechaHastaTextBox.Text, persona, naturalezaComprobante, false, DetalleTextBox.Text, sesion);

                    ContentPlaceHolder contentPlaceDefault = ((ContentPlaceHolder)Master.FindControl("ContentPlaceDefault"));
                    System.Web.UI.HtmlControls.HtmlAnchor control = ((System.Web.UI.HtmlControls.HtmlAnchor)contentPlaceDefault.FindControl("AyudaGrilla"));
                    control.Visible = false;
                    if (lista.Count == 0)
                    {
                        ComprobantesGridView.DataSource = null;
                        ComprobantesGridView.DataBind();
                        MensajeLabel.Text = "No se han encontrado " + ((naturalezaComprobante.Id == "VentaContrato") ? "Contrato" : "Comprobante") + "s que satisfagan la busqueda";
                    }
                    else
                    {
                        ComprobantesGridView.DataSource = lista;
                        ViewState["Comprobantes"] = lista;
                        ComprobantesGridView.DataBind();
                        control.Visible = true;
                    }
                }
            }
        }
        protected void BuscarButton_Click(object sender, EventArgs e)
        {
            if (Funciones.SessionTimeOut(Session))
            {
                Response.Redirect("~/SessionTimeout.aspx");
            }
            else
            {
                try
                {
                    MensajeLabel.Text = "";
                    bool monedasExtranjeras = false;
                    Entidades.Sesion sesion = (Entidades.Sesion)Session["Sesion"];
                    List<Entidades.Comprobante> listaC = new List<Entidades.Comprobante>();

                    List<Entidades.Estado> estados = new List<Entidades.Estado>();
                    Entidades.Estado es = new Entidades.Estado();
                    es.Id = "Vigente";
                    estados.Add(es);
                    Entidades.Persona persona = new Entidades.Persona();
                    Entidades.NaturalezaComprobante nc = new Entidades.NaturalezaComprobante();
                    nc.Id = "Compra";
                    listaC = RN.Comprobante.ListaFiltradaIvaYMovimientos(estados, FechaDesdeTextBox.Text, FechaHastaTextBox.Text, persona, nc, false, "", sesion);

                    Entidades.IvaCompras ivaCompras = new Entidades.IvaCompras();
                    ivaCompras.Cuit = sesion.Cuit.Nro;
                    ivaCompras.PeriodoDsd = FechaDesdeTextBox.Text.Substring(6, 2) + "/" + FechaDesdeTextBox.Text.Substring(4, 2) + "/" + FechaDesdeTextBox.Text.Substring(0, 4);
                    ivaCompras.PeriodoHst = FechaHastaTextBox.Text.Substring(6, 2) + "/" + FechaHastaTextBox.Text.Substring(4, 2) + "/" + FechaHastaTextBox.Text.Substring(0, 4);

                    System.Xml.Serialization.XmlSerializer x;
                    byte[] bytes;
                    System.IO.MemoryStream ms;
                    FeaEntidades.InterFacturas.lote_comprobantes lote;

                    ivaCompras.IvaComprasComprobantes = new List<Entidades.IvaComprasComprobantes>();

                    listaTotXIMP = new List<Entidades.IvaComprasTotXImpuestos>();
                    listaTotXIVA = new List<Entidades.IvaComprasTotXIVA>();
                    foreach (Entidades.Comprobante comprobante in listaC)
                    {
                        Entidades.IvaComprasComprobantes icc = new Entidades.IvaComprasComprobantes();
                        icc.PtoVta = comprobante.NroPuntoVta.ToString();
                        icc.TipoComp = comprobante.TipoComprobante.Descr;
                        icc.NroComp = comprobante.Nro.ToString();
                        icc.NroDoc = comprobante.NroDoc.ToString();
                        icc.TipoCompCodigo = comprobante.TipoComprobante.Id.ToString();
                        icc.RazSoc = comprobante.RazonSocial;
                        if (comprobante.Documento.Tipo.Id != "99")
                        {
                            icc.TipoDoc = comprobante.DescrTipoDoc;
                        }
                        else
                        {
                            if (icc.RazSoc == "")
                            {
                                icc.TipoDoc = "Sin identificar/compra global";
                            }
                            else
                            {
                                icc.TipoDoc = "";
                            }
                        }
                        
                        double signo = 1;
                        if (("/3/8/13/").IndexOf("/" + icc.TipoCompCodigo + "/") != -1)
                        {
                            signo = -1;
                        }

                        icc.ImporteTotal = comprobante.Importe * signo;
                        icc.FechaEmi = comprobante.Fecha.ToString("dd/MM/yyyy");

                        lote = new FeaEntidades.InterFacturas.lote_comprobantes();
                        x = new System.Xml.Serialization.XmlSerializer(lote.GetType());

                        comprobante.Request = comprobante.Request.Replace("iso-8859-1", "utf-16");
                        bytes = new byte[comprobante.Request.Length * sizeof(char)];
                        System.Buffer.BlockCopy(comprobante.Request.ToCharArray(), 0, bytes, 0, bytes.Length);
                        ms = new System.IO.MemoryStream(bytes);
                        ms.Seek(0, System.IO.SeekOrigin.Begin);
                        lote = (FeaEntidades.InterFacturas.lote_comprobantes)x.Deserialize(ms);

                        icc.Exento = lote.comprobante[0].resumen.importe_operaciones_exentas * signo;
                        icc.NoGravado = lote.comprobante[0].resumen.importe_total_concepto_no_gravado * signo;
                        icc.Gravado = lote.comprobante[0].resumen.importe_total_neto_gravado * signo;
                        double otrosImp = Math.Round(lote.comprobante[0].resumen.importe_total_ingresos_brutos + lote.comprobante[0].resumen.importe_total_impuestos_nacionales + lote.comprobante[0].resumen.importe_total_impuestos_municipales + lote.comprobante[0].resumen.importe_total_impuestos_internos, 2);
                        icc.OtrosImp = otrosImp * signo;
                        icc.Iva = lote.comprobante[0].resumen.impuesto_liq * signo;
                        
                        icc.Moneda = lote.comprobante[0].resumen.codigo_moneda;
                        if (icc.Moneda != "PES")
                        {
                            monedasExtranjeras = true;
                        }
                        icc.Cambio = lote.comprobante[0].resumen.tipo_de_cambio;
                        icc.Concepto = lote.comprobante[0].cabecera.informacion_comprobante.codigo_concepto.ToString();
                        if (lote.comprobante[0].resumen.importes_moneda_origen != null)
                        {
                            icc.ImporteTotalME = lote.comprobante[0].resumen.importes_moneda_origen.importe_total_factura * signo;
                        }
                        ivaCompras.IvaComprasComprobantes.Add(icc);
                        
                        //Totales por Impuestos y Totales por alicuota de IVA y concepto
                        ivaCompras.IvaComprasTotXImpuestos = new List<Entidades.IvaComprasTotXImpuestos>();
                        ivaCompras.IvaComprasTotXIVA = new List<Entidades.IvaComprasTotXIVA>();
                        if (lote.comprobante[0].resumen.impuestos != null)
                        {
                            for (int z = 0; z < lote.comprobante[0].resumen.impuestos.Length; z++)
                            {
                                double importe = lote.comprobante[0].resumen.impuestos[z].importe_impuesto * signo;
                                listaTotIVAxComprobante = new List<Entidades.IvaComprasTotXIVA>();
                                if (lote.comprobante[0].resumen.impuestos[z].codigo_impuesto == 1)
                                {
                                    string concepto = lote.comprobante[0].cabecera.informacion_comprobante.codigo_concepto.ToString();
                                    double alicuota = lote.comprobante[0].resumen.impuestos[z].porcentaje_impuesto;
                                    double baseImponible = lote.comprobante[0].resumen.impuestos[z].base_imponible * signo;
                                    if (lote.comprobante[0].resumen.impuestos[z].base_imponible == 0)
                                    {
                                        if (lote.comprobante[0].detalle.linea == null || lote.comprobante[0].detalle.linea[0] == null)
                                        {
                                            //Si no hay renglones uso este método de cálculo para obtener la base imponible.
                                            baseImponible = Math.Round((lote.comprobante[0].resumen.impuestos[z].importe_impuesto * 100) / lote.comprobante[0].resumen.impuestos[z].porcentaje_impuesto, 2) * signo;
                                        }
                                        else if (lote.comprobante[0].cabecera.informacion_comprobante.tipo_de_comprobante == 6 || lote.comprobante[0].cabecera.informacion_comprobante.tipo_de_comprobante == 7 || lote.comprobante[0].cabecera.informacion_comprobante.tipo_de_comprobante == 8)
                                        {
                                            //Si hay renglones y es un comprobante 'B' también uso este método de cálculo para obtener la base imponible.
                                            baseImponible = Math.Round((lote.comprobante[0].resumen.impuestos[z].importe_impuesto * 100) / lote.comprobante[0].resumen.impuestos[z].porcentaje_impuesto, 2) * signo;
                                        }
                                        else
                                        {
                                            //Si hay reglones, obtengo la base imponible sumando los renglones de detalle del comprobante según corresponda.
                                            baseImponible = 0;
                                            for (int k = 0; k < lote.comprobante[0].detalle.linea.Length; k++)
                                            {
                                                if (lote.comprobante[0].detalle.linea[k].indicacion_exento_gravado != null && lote.comprobante[0].detalle.linea[k].indicacion_exento_gravado.Trim().ToUpper() == "G" && lote.comprobante[0].detalle.linea[k].alicuota_iva == alicuota)
                                                {
                                                    baseImponible += Math.Round(lote.comprobante[0].detalle.linea[k].importe_total_articulo, 2) * signo;
                                                }
                                            }
                                            //Verificar el impuesto IVA que no exista mas de una vez la misma alicuota.
                                            List<Entidades.IvaComprasTotXIVA> listaAux = listaTotIVAxComprobante.FindAll(delegate(Entidades.IvaComprasTotXIVA txi)
                                            {
                                                return txi.Concepto == concepto && txi.Alicuota == alicuota;
                                            });
                                            if (listaAux.Count == 0)
                                            {
                                                TotalesIVAXComprobante(concepto, alicuota, baseImponible, importe);
                                            }
                                            else
                                            {
                                                //Comprobante con alícuota repetida.
                                            }
                                        }
                                    }
                                    TotalesXIVA(concepto, alicuota, baseImponible, importe);
                                    TotalesXImpuestos("IVA", importe);
                                }
                                else if (lote.comprobante[0].resumen.impuestos[z].codigo_impuesto == 2)
                                {
                                    TotalesXImpuestos("Impuestos Internos", importe);
                                }
                                else if (lote.comprobante[0].resumen.impuestos[z].codigo_impuesto == 3)
                                {
                                    TotalesXImpuestos("Otros Impuestos", importe);
                                }
                                else if (lote.comprobante[0].resumen.impuestos[z].codigo_impuesto == 4)
                                {
                                    TotalesXImpuestos("Impuestos Nacionales", importe);
                                }
                                else if (lote.comprobante[0].resumen.impuestos[z].codigo_impuesto == 5)
                                {
                                    TotalesXImpuestos("Impuestos Municipales", importe);
                                }
                                else if (lote.comprobante[0].resumen.impuestos[z].codigo_impuesto == 6)
                                {
                                    TotalesXImpuestos("Ingresos Brutos", importe);
                                }
                            }
                        }
                    }
                    if (listaTotXIMP.Count != 0)
                    {
                        ivaCompras.IvaComprasTotXImpuestos = listaTotXIMP;
                    }
                    else
                    {
                        //Para arreglar bug en towebs.
                        Entidades.IvaComprasTotXImpuestos totXimp = new Entidades.IvaComprasTotXImpuestos();
                        totXimp.Descr = "";
                        totXimp.ImporteTotal = 0;
                        ivaCompras.IvaComprasTotXImpuestos.Add(totXimp);
                    }
                    if (listaTotXIVA.Count != 0)
                    {
                        ivaCompras.IvaComprasTotXIVA = listaTotXIVA;
                    }
                    else
                    {
                        //Para arreglar bug en towebs.
                        Entidades.IvaComprasTotXIVA totXiva = new Entidades.IvaComprasTotXIVA();
                        totXiva.Concepto = "";
                        totXiva.Alicuota = 0;
                        totXiva.ImporteNG = 0;
                        totXiva.ImporteTotal = 0;
                        ivaCompras.IvaComprasTotXIVA.Add(totXiva);
                    }
                    Session["formatoRptExportar"] = FormatosRptExportarDropDownList.SelectedValue;
                    Session["mostrarFechaYHora"] = FechaYHoraCheckBox.Checked;
                    Session["monedasExtranjeras"] = monedasExtranjeras;
                    if (ivaCompras.IvaComprasComprobantes.Count != 0)
                    {
                        Session["ivaCompras"] = ivaCompras;
                        Response.Redirect("~/Facturacion/Electronica/Reportes/IvaComprasWebForm.aspx", true);
                    }
                    else
                    {
                        MensajeLabel.Text = "No hay información.";
                    }
                }
                catch (System.Threading.ThreadAbortException)
                {
                    Trace.Warn("Thread abortado");
                }
                catch (Exception ex)
                {
                    WebForms.Excepciones.Redireccionar(ex, "~/NotificacionDeExcepcion.aspx");
                }
            }
        }
        protected void BuscarButton_Click(object sender, EventArgs e)
        {
            if (Funciones.SessionTimeOut(Session))
            {
                Response.Redirect("~/SessionTimeout.aspx");
            }
            else
            {
                try
                {
                    MensajeLabel.Text = "";
                    bool monedasExtranjeras = false;
                    Entidades.Sesion sesion = (Entidades.Sesion)Session["Sesion"];
                    List<Entidades.Comprobante> listaC = new List<Entidades.Comprobante>();

                    List<Entidades.Estado> estados = new List<Entidades.Estado>();
                    Entidades.Estado es = new Entidades.Estado();
                    es.Id = "Vigente";
                    estados.Add(es);
                    Entidades.Persona persona = new Entidades.Persona();
                    Entidades.NaturalezaComprobante nc = new Entidades.NaturalezaComprobante();
                    nc.Id = "Venta";
                    listaC = RN.Comprobante.ListaFiltradaIvaYMovimientos(estados, FechaDesdeTextBox.Text, FechaHastaTextBox.Text, persona, nc, false, "", sesion);

                    Entidades.VentasXArticulo ventas = new Entidades.VentasXArticulo();

                    ventas.Cuit = sesion.Cuit.Nro;
                    ventas.RazSoc = sesion.Cuit.RazonSocial;
                    ventas.PeriodoDsd = FechaDesdeTextBox.Text.Substring(6, 2) + "/" + FechaDesdeTextBox.Text.Substring(4, 2) + "/" + FechaDesdeTextBox.Text.Substring(0, 4);
                    ventas.PeriodoHst = FechaHastaTextBox.Text.Substring(6, 2) + "/" + FechaHastaTextBox.Text.Substring(4, 2) + "/" + FechaHastaTextBox.Text.Substring(0, 4);

                    System.Xml.Serialization.XmlSerializer x;
                    byte[] bytes;
                    System.IO.MemoryStream ms;
                    FeaEntidades.InterFacturas.lote_comprobantes lote;

                    ventas.VentasXArticuloDetalle = new List<Entidades.VentasXArticuloDetalle>();
                    List<Entidades.VentasXArticuloDetalle> lvd = new List<Entidades.VentasXArticuloDetalle>();
                    Entidades.VentasXArticuloDetalle vd;
                    foreach (Entidades.Comprobante comprobante in listaC)
                    {
                        lote = new FeaEntidades.InterFacturas.lote_comprobantes();
                        x = new System.Xml.Serialization.XmlSerializer(lote.GetType());

                        comprobante.Response = comprobante.Response.Replace("iso-8859-1", "utf-16");
                        bytes = new byte[comprobante.Response.Length * sizeof(char)];
                        System.Buffer.BlockCopy(comprobante.Response.ToCharArray(), 0, bytes, 0, bytes.Length);
                        ms = new System.IO.MemoryStream(bytes);
                        ms.Seek(0, System.IO.SeekOrigin.Begin);
                        lote = (FeaEntidades.InterFacturas.lote_comprobantes)x.Deserialize(ms);

                        //Totales por artículo
                        if (lote.comprobante[0].detalle.linea != null)
                        {
                            for (int z = 0; z < lote.comprobante[0].detalle.linea.Length; z++)
                            {
                                double signo = 1;
                                if (("/3/8/13/").IndexOf("/" + Convert.ToInt32(lote.comprobante[0].cabecera.informacion_comprobante.tipo_de_comprobante).ToString().Trim() + "/") != -1)
                                {
                                    signo = -1;
                                }

                                //Verificar el articulo ya existe en la lista.
                                //List<Entidades.VentasXArticuloDetalle> listaAux = lvd.FindAll(delegate(Entidades.VentasXArticuloDetalle vxad)
                                //{
                                //    return vxad.IdArticulo == lote.comprobante[0].detalle.linea[z].codigo_producto_vendedor;
                                //});
                                //if (listaAux.Count == 0 || lote.comprobante[0].detalle.linea[z].codigo_producto_vendedor.Trim() == "")
                                //{
                                //}
                                vd = new Entidades.VentasXArticuloDetalle();
                                vd.IdArticulo = lote.comprobante[0].detalle.linea[z].codigo_producto_vendedor;
                                vd.GTIN = lote.comprobante[0].detalle.linea[z].GTIN.ToString();
                                vd.IdArticuloEmp = lote.comprobante[0].detalle.linea[z].codigo_producto_comprador;
                                if (lote.comprobante[0].detalle.linea[z].indicacion_exento_gravado != null)
                                {
                                    vd.IndicacionExentoGravado = lote.comprobante[0].detalle.linea[z].indicacion_exento_gravado;
                                }
                                else
                                {
                                    vd.IndicacionExentoGravado = "";
                                }
                                vd.NumeroLinea = lote.comprobante[0].detalle.linea[z].numeroLinea;
                                vd.UnidadCod = lote.comprobante[0].detalle.linea[z].unidad;
                                vd.UnidadDescr = lote.comprobante[0].detalle.linea[z].unidadDescripcion;
                                vd.CompTipo = lote.comprobante[0].cabecera.informacion_comprobante.tipo_de_comprobante.ToString();
                                vd.CompNro = lote.comprobante[0].cabecera.informacion_comprobante.numero_comprobante.ToString();
                                vd.CompPtoVta = lote.comprobante[0].cabecera.informacion_comprobante.punto_de_venta.ToString();
                                vd.CompFecEmi = lote.comprobante[0].cabecera.informacion_comprobante.fecha_emision.Substring(6, 2) + "/" + lote.comprobante[0].cabecera.informacion_comprobante.fecha_emision.Substring(4, 2) + "/" + lote.comprobante[0].cabecera.informacion_comprobante.fecha_emision.Substring(0, 4);

                                vd.EmpNroDoc = lote.comprobante[0].cabecera.informacion_comprador.nro_doc_identificatorio.ToString();
                                vd.EmpCodDoc = lote.comprobante[0].cabecera.informacion_comprador.codigo_doc_identificatorio.ToString();
                                vd.EmpDescrDoc = ""; //Obtener la descripcion; 
                                vd.EmpNombre = lote.comprobante[0].cabecera.informacion_comprador.denominacion;

                                if (lote.comprobante[0].detalle.linea[z].descripcion.Length > 0 && lote.comprobante[0].detalle.linea[z].descripcion.Substring(0, 1) == "%")
                                {
                                    vd.Descr = RN.Funciones.HexToString(lote.comprobante[0].detalle.linea[z].descripcion);
                                }
                                else
                                {
                                    vd.Descr = lote.comprobante[0].detalle.linea[z].descripcion;
                                }
                                vd.ImporteTotal = lote.comprobante[0].detalle.linea[z].importe_total_articulo * signo;
                                if (lote.comprobante[0].detalle.linea[z].cantidadSpecified == true && lote.comprobante[0].detalle.linea[z].precio_unitarioSpecified == true)
                                {
                                    vd.Cantidad = lote.comprobante[0].detalle.linea[z].cantidad * signo;
                                    vd.PrecioUnitario = lote.comprobante[0].detalle.linea[z].precio_unitario * signo;
                                }
                                if (lote.comprobante[0].detalle.linea[z].alicuota_ivaSpecified == true && lote.comprobante[0].detalle.linea[z].importe_ivaSpecified == true)
                                {
                                    vd.AlicuotaIVA = lote.comprobante[0].detalle.linea[z].alicuota_iva;
                                    vd.ImporteIVA = lote.comprobante[0].detalle.linea[z].importe_iva * signo;
                                }
                                lvd.Add(vd); 
                            }
                        }
                    }
                    //Si se muestran artículos vigentes no vendidos. 
                    List<Entidades.Articulo> listaArt = new List<Entidades.Articulo>();
                    if (VerTodosLosArticulosCheckBox.Enabled == true && VerTodosLosArticulosCheckBox.Checked == true)
                    {
                        listaArt = RN.Articulo.ListaPorCuit(true, false, sesion);
                        if (listaArt.Count != 0)
                        {
                            foreach (Entidades.Articulo art in listaArt)
                            {
                                bool existeArt = false;
                                if (lvd.Count != 0)
                                {
                                    System.Collections.Generic.List<Entidades.VentasXArticuloDetalle> listaVXArt = lvd.FindAll(delegate(Entidades.VentasXArticuloDetalle vxart)
                                    {
                                        return vxart.IdArticulo == art.Id;
                                    });
                                    if (listaVXArt.Count != 0)
                                    {
                                        existeArt = true;
                                    }
                                }
                                if (!existeArt)
                                {
                                    vd = new Entidades.VentasXArticuloDetalle();
                                    vd.IdArticulo = art.Id;
                                    vd.Descr = art.Descr;
                                    vd.CompFecEmi = "";
                                    vd.CompNro = "";
                                    vd.CompPtoVta = "";
                                    vd.CompTipo = "";
                                    vd.UnidadCod = "";
                                    vd.UnidadDescr = "";
                                    vd.IndicacionExentoGravado = "";
                                    vd.EmpNroDoc = "";
                                    vd.EmpCodDoc = "";
                                    vd.EmpDescrDoc = "";
                                    vd.EmpNombre = "";
                                    lvd.Add(vd);
                                }
                            }

                        }
                    }
                    if (lvd.Count != 0)
                    {
                        ventas.VentasXArticuloDetalle = lvd;
                    }
                    Session["formatoRptExportar"] = FormatosRptExportarDropDownList.SelectedValue;
                    Session["mostrarFechaYHora"] = FechaYHoraCheckBox.Checked;
                    Session["mostrarDetalleComprobantes"] = DetalleComprobanteCheckBox.Checked;
                    Session["monedasExtranjeras"] = monedasExtranjeras;
                    if (ventas.VentasXArticuloDetalle.Count != 0)
                    {
                        Session["ventasXArticulo"] = ventas;
                        Response.Redirect("~/Facturacion/Electronica/Reportes/VentasXArticuloWebForm.aspx", true);
                    }
                    else
                    {
                        MensajeLabel.Text = "No hay información.";
                    }
                }
                catch (System.Threading.ThreadAbortException)
                {
                    Trace.Warn("Thread abortado");
                }
                catch (Exception ex)
                {
                    WebForms.Excepciones.Redireccionar(ex, "~/NotificacionDeExcepcion.aspx");
                }
            }
        }
 private void Copiar(DataRow Desde, Entidades.NaturalezaComprobante Hasta)
 {
     Hasta.Id    = Convert.ToString(Desde["IdNaturalezaComprobante"]);
     Hasta.Descr = Convert.ToString(Desde["DescrNaturalezaComprobante"]);
 }
Exemple #9
0
        protected void BuscarButton_Click(object sender, EventArgs e)
        {
            if (Funciones.SessionTimeOut(Session))
            {
                Response.Redirect("~/SessionTimeout.aspx");
            }
            else
            {
                try
                {
                    MensajeLabel.Text = "";
                    bool                         monedasExtranjeras = false;
                    Entidades.Sesion             sesion             = (Entidades.Sesion)Session["Sesion"];
                    List <Entidades.Comprobante> listaC             = new List <Entidades.Comprobante>();

                    List <Entidades.Estado> estados = new List <Entidades.Estado>();
                    Entidades.Estado        es      = new Entidades.Estado();
                    es.Id = "Vigente";
                    estados.Add(es);
                    Entidades.Persona persona          = new Entidades.Persona();
                    Entidades.NaturalezaComprobante nc = new Entidades.NaturalezaComprobante();
                    nc.Id  = "Compra";
                    listaC = RN.Comprobante.ListaFiltradaIvaYMovimientos(estados, FechaDesdeTextBox.Text, FechaHastaTextBox.Text, persona, nc, false, "", sesion);

                    Entidades.IvaCompras ivaCompras = new Entidades.IvaCompras();
                    ivaCompras.Cuit       = sesion.Cuit.Nro;
                    ivaCompras.PeriodoDsd = FechaDesdeTextBox.Text.Substring(6, 2) + "/" + FechaDesdeTextBox.Text.Substring(4, 2) + "/" + FechaDesdeTextBox.Text.Substring(0, 4);
                    ivaCompras.PeriodoHst = FechaHastaTextBox.Text.Substring(6, 2) + "/" + FechaHastaTextBox.Text.Substring(4, 2) + "/" + FechaHastaTextBox.Text.Substring(0, 4);

                    System.Xml.Serialization.XmlSerializer x;
                    byte[] bytes;
                    System.IO.MemoryStream ms;
                    FeaEntidades.InterFacturas.lote_comprobantes lote;

                    ivaCompras.IvaComprasComprobantes = new List <Entidades.IvaComprasComprobantes>();

                    listaTotXIMP = new List <Entidades.IvaComprasTotXImpuestos>();
                    listaTotXIVA = new List <Entidades.IvaComprasTotXIVA>();
                    foreach (Entidades.Comprobante comprobante in listaC)
                    {
                        if (!(comprobante.NroDoc == sesion.Cuit.Nro && comprobante.NaturalezaComprobante.Id == "Compra"))
                        {
                            Entidades.IvaComprasComprobantes icc = new Entidades.IvaComprasComprobantes();
                            icc.PtoVta         = comprobante.NroPuntoVta.ToString();
                            icc.TipoComp       = comprobante.TipoComprobante.Descr;
                            icc.NroComp        = comprobante.Nro.ToString();
                            icc.NroDoc         = comprobante.NroDoc.ToString();
                            icc.TipoCompCodigo = comprobante.TipoComprobante.Id.ToString();
                            icc.RazSoc         = comprobante.RazonSocial;
                            if (comprobante.Documento.Tipo.Id != "99")
                            {
                                icc.TipoDoc = comprobante.DescrTipoDoc;
                            }
                            else
                            {
                                if (icc.RazSoc == "")
                                {
                                    icc.TipoDoc = "Sin identificar/compra global";
                                }
                                else
                                {
                                    icc.TipoDoc = "";
                                }
                            }

                            double signo = 1;
                            if (("/3/8/13/").IndexOf("/" + icc.TipoCompCodigo + "/") != -1)
                            {
                                signo = -1;
                            }

                            icc.ImporteTotal = comprobante.Importe * signo;
                            icc.FechaEmi     = comprobante.Fecha.ToString("dd/MM/yyyy");

                            lote = new FeaEntidades.InterFacturas.lote_comprobantes();
                            x    = new System.Xml.Serialization.XmlSerializer(lote.GetType());

                            comprobante.Request = comprobante.Request.Replace("iso-8859-1", "utf-16");
                            bytes = new byte[comprobante.Request.Length * sizeof(char)];
                            System.Buffer.BlockCopy(comprobante.Request.ToCharArray(), 0, bytes, 0, bytes.Length);
                            ms = new System.IO.MemoryStream(bytes);
                            ms.Seek(0, System.IO.SeekOrigin.Begin);
                            lote = (FeaEntidades.InterFacturas.lote_comprobantes)x.Deserialize(ms);

                            icc.Exento    = lote.comprobante[0].resumen.importe_operaciones_exentas * signo;
                            icc.NoGravado = lote.comprobante[0].resumen.importe_total_concepto_no_gravado * signo;
                            icc.Gravado   = lote.comprobante[0].resumen.importe_total_neto_gravado * signo;
                            double otrosImp = Math.Round(lote.comprobante[0].resumen.importe_total_ingresos_brutos + lote.comprobante[0].resumen.importe_total_impuestos_nacionales + lote.comprobante[0].resumen.importe_total_impuestos_municipales + lote.comprobante[0].resumen.importe_total_impuestos_internos, 2);
                            icc.OtrosImp = otrosImp * signo;
                            icc.Iva      = lote.comprobante[0].resumen.impuesto_liq * signo;

                            icc.Moneda = lote.comprobante[0].resumen.codigo_moneda;
                            if (icc.Moneda != "PES")
                            {
                                monedasExtranjeras = true;
                            }
                            icc.Cambio   = lote.comprobante[0].resumen.tipo_de_cambio;
                            icc.Concepto = lote.comprobante[0].cabecera.informacion_comprobante.codigo_concepto.ToString();
                            if (lote.comprobante[0].resumen.importes_moneda_origen != null)
                            {
                                icc.ImporteTotalME = lote.comprobante[0].resumen.importes_moneda_origen.importe_total_factura * signo;
                            }
                            ivaCompras.IvaComprasComprobantes.Add(icc);

                            //Totales por Impuestos y Totales por alicuota de IVA y concepto
                            ivaCompras.IvaComprasTotXImpuestos = new List <Entidades.IvaComprasTotXImpuestos>();
                            ivaCompras.IvaComprasTotXIVA       = new List <Entidades.IvaComprasTotXIVA>();
                            if (lote.comprobante[0].resumen.impuestos != null)
                            {
                                for (int z = 0; z < lote.comprobante[0].resumen.impuestos.Length; z++)
                                {
                                    double importe = lote.comprobante[0].resumen.impuestos[z].importe_impuesto * signo;
                                    listaTotIVAxComprobante = new List <Entidades.IvaComprasTotXIVA>();
                                    if (lote.comprobante[0].resumen.impuestos[z].codigo_impuesto == 1)
                                    {
                                        string concepto      = lote.comprobante[0].cabecera.informacion_comprobante.codigo_concepto.ToString();
                                        double alicuota      = lote.comprobante[0].resumen.impuestos[z].porcentaje_impuesto;
                                        double baseImponible = lote.comprobante[0].resumen.impuestos[z].base_imponible * signo;
                                        if (lote.comprobante[0].resumen.impuestos[z].base_imponible == 0)
                                        {
                                            if (lote.comprobante[0].detalle.linea == null || lote.comprobante[0].detalle.linea[0] == null)
                                            {
                                                //Si no hay renglones uso este método de cálculo para obtener la base imponible.
                                                baseImponible = Math.Round((lote.comprobante[0].resumen.impuestos[z].importe_impuesto * 100) / lote.comprobante[0].resumen.impuestos[z].porcentaje_impuesto, 2) * signo;
                                            }
                                            else if (lote.comprobante[0].cabecera.informacion_comprobante.tipo_de_comprobante == 6 || lote.comprobante[0].cabecera.informacion_comprobante.tipo_de_comprobante == 7 || lote.comprobante[0].cabecera.informacion_comprobante.tipo_de_comprobante == 8)
                                            {
                                                //Si hay renglones y es un comprobante 'B' también uso este método de cálculo para obtener la base imponible.
                                                baseImponible = Math.Round((lote.comprobante[0].resumen.impuestos[z].importe_impuesto * 100) / lote.comprobante[0].resumen.impuestos[z].porcentaje_impuesto, 2) * signo;
                                            }
                                            else
                                            {
                                                //Si hay reglones, obtengo la base imponible sumando los renglones de detalle del comprobante según corresponda.
                                                baseImponible = 0;
                                                for (int k = 0; k < lote.comprobante[0].detalle.linea.Length; k++)
                                                {
                                                    if (lote.comprobante[0].detalle.linea[k].indicacion_exento_gravado != null && lote.comprobante[0].detalle.linea[k].indicacion_exento_gravado.Trim().ToUpper() == "G" && lote.comprobante[0].detalle.linea[k].alicuota_iva == alicuota)
                                                    {
                                                        baseImponible += Math.Round(lote.comprobante[0].detalle.linea[k].importe_total_articulo, 2) * signo;
                                                    }
                                                }
                                                //Verificar el impuesto IVA que no exista mas de una vez la misma alicuota.
                                                List <Entidades.IvaComprasTotXIVA> listaAux = listaTotIVAxComprobante.FindAll(delegate(Entidades.IvaComprasTotXIVA txi)
                                                {
                                                    return(txi.Concepto == concepto && txi.Alicuota == alicuota);
                                                });
                                                if (listaAux.Count == 0)
                                                {
                                                    TotalesIVAXComprobante(concepto, alicuota, baseImponible, importe);
                                                }
                                                else
                                                {
                                                    //Comprobante con alícuota repetida.
                                                }
                                            }
                                        }
                                        TotalesXIVA(concepto, alicuota, baseImponible, importe);
                                        TotalesXImpuestos("IVA", importe);
                                    }
                                    else if (lote.comprobante[0].resumen.impuestos[z].codigo_impuesto == 2)
                                    {
                                        TotalesXImpuestos("Impuestos Internos", importe);
                                    }
                                    else if (lote.comprobante[0].resumen.impuestos[z].codigo_impuesto == 3)
                                    {
                                        TotalesXImpuestos("Otros Impuestos", importe);
                                    }
                                    else if (lote.comprobante[0].resumen.impuestos[z].codigo_impuesto == 4)
                                    {
                                        TotalesXImpuestos("Impuestos Nacionales", importe);
                                    }
                                    else if (lote.comprobante[0].resumen.impuestos[z].codigo_impuesto == 5)
                                    {
                                        TotalesXImpuestos("Impuestos Municipales", importe);
                                    }
                                    else if (lote.comprobante[0].resumen.impuestos[z].codigo_impuesto == 6)
                                    {
                                        TotalesXImpuestos("Ingresos Brutos", importe);
                                    }
                                }
                            }
                        }
                    }
                    if (ivaCompras.IvaComprasComprobantes.Count != 0)
                    {
                        if (listaTotXIMP.Count != 0)
                        {
                            ivaCompras.IvaComprasTotXImpuestos = listaTotXIMP;
                        }
                        else
                        {
                            //Para arreglar bug en towebs.
                            Entidades.IvaComprasTotXImpuestos totXimp = new Entidades.IvaComprasTotXImpuestos();
                            totXimp.Descr        = "";
                            totXimp.ImporteTotal = 0;
                            ivaCompras.IvaComprasTotXImpuestos.Add(totXimp);
                        }
                        if (listaTotXIVA.Count != 0)
                        {
                            ivaCompras.IvaComprasTotXIVA = listaTotXIVA;
                        }
                        else
                        {
                            //Para arreglar bug en towebs.
                            Entidades.IvaComprasTotXIVA totXiva = new Entidades.IvaComprasTotXIVA();
                            totXiva.Concepto     = "";
                            totXiva.Alicuota     = 0;
                            totXiva.ImporteNG    = 0;
                            totXiva.ImporteTotal = 0;
                            ivaCompras.IvaComprasTotXIVA.Add(totXiva);
                        }
                    }
                    Session["formatoRptExportar"] = FormatosRptExportarDropDownList.SelectedValue;
                    Session["mostrarFechaYHora"]  = FechaYHoraCheckBox.Checked;
                    Session["monedasExtranjeras"] = monedasExtranjeras;
                    if (ivaCompras.IvaComprasComprobantes.Count != 0)
                    {
                        Session["ivaCompras"] = ivaCompras;
                        Response.Redirect("~/Facturacion/Electronica/Reportes/IvaComprasWebForm.aspx", true);
                    }
                    else
                    {
                        MensajeLabel.Text = "No hay información.";
                    }
                }
                catch (System.Threading.ThreadAbortException)
                {
                    Trace.Warn("Thread abortado");
                }
                catch (Exception ex)
                {
                    WebForms.Excepciones.Redireccionar(ex, "~/NotificacionDeExcepcion.aspx");
                }
            }
        }