示例#1
0
 private void btnGuardarCambios_Click(object sender, RoutedEventArgs e)
 {
     // Se continua si la comprobación se cumple
     if (ComprobarCargaEstado())
     {
         if (_modificandoEstados)
         {
             entActuacion.Estados.RemoveAll((ea) => ea.Ord == Convert.ToInt32(cboOrdEstadoActuacion.SelectedItem));
         }
         // Generamos una nueva entidad de estado para almacenar en la colección
         Entidades.Estado entEstado = new Entidades.Estado();
         // Cargamos la entidad con los datos generados
         entEstado.Detalle   = txtDetalleEstadoActuacion.Text;
         entEstado.FechaHora = Util.Tiempo.ComponerDateTimeEstadoAsunto(txtFechaEstadoActuacion.Text, txtHoraEstadoActuacion.Text);
         entEstado.Ord       = Convert.ToInt32(cboOrdEstadoActuacion.SelectedItem);
         entEstado.Tipo      = (Entidades.TipoEstado)cboTipoEstadoActuacion.SelectedItem;
         // Agregamos el estado en la actuación
         entActuacion.Estados.Add(entEstado);
         // Actualizamos el listado de items
         dgListadoActuacionEstados.ReordenarDatagrid();
         // Reseteamos los campos
         ResetearCamposEstadoActuacion();
         // Desactivamos la operación de estados
         operarEstados = false;
     }
 }
示例#2
0
        private void InicializarActuacion()
        {
            // Generamos una nueva entidad actuación
            entActuacion = new Entidades.Actuacion();
            // Cargamos los datos correspondientes de la actuación
            entActuacion.Operador = App.Current.Properties["user"] as Entidades.Operador;
            // Generamos una nueva lista de entidades estado
            List <Entidades.Estado> lstEntEstado = new List <Entidades.Estado>();

            // Generamos un estado y lo agregamos al listado generado
            Entidades.Estado entEstado = new Entidades.Estado()
            {
                Ord       = 1,
                Detalle   = "Nueva actuacion",
                Tipo      = Logica.TipoEstado.TraerEstadoActuacionInicialNormal(),
                FechaHora = DateTime.Now
            };
            // Agregamos el estado nuevo al listado de estados
            lstEntEstado.Add(entEstado);
            // Establecemos la lista como miembro de la entidad actuación
            entActuacion.Estados = lstEntEstado;
            // Vinculamos el listado de estados al DataGrid
            dgListadoActuacionEstados.ItemsSource = entActuacion.Estados;
            // Activamos la modificación de la nueva actuación en la interfaz gráfica
            ModificarEstado(entEstado);
        }
示例#3
0
 private void btnModificarEstadoActuacion_Click(object sender, RoutedEventArgs e)
 {
     // Averiguamos si hay algun item seleccionado en el DataGrid
     if (dgListadoActuacionEstados.SelectedItem != null)
     {
         // Convertimos el item Selecionado en estado
         Entidades.Estado entEstado = dgListadoActuacionEstados.SelectedItem as Entidades.Estado;
     }
 }
示例#4
0
 private void btnEliminarEstadoActuacion_Click(object sender, RoutedEventArgs e)
 {
     // Consultamos si el objeto es nulo
     if (dgListadoActuacionEstados.SelectedItem != null)
     {
         // Convertimos la entidad seleccionada al tipo de objeto tipo estado
         Entidades.Estado entEstado = dgListadoActuacionEstados.SelectedItem as Entidades.Estado;
         // Solicitamos a la capa UI que procese la modificación
         EliminarEntidadEstado(entEstado);
     }
 }
示例#5
0
 /// <summary>
 /// Procesa en la capa de presentación el pedido de modificación de un estado actuación
 /// Fecha de creación : 17/07/2018
 /// Autor : Maximiliano Leiva
 /// </summary>
 /// <param name="pEntEstado"></param>
 private void ModificarEstado(Entidades.Estado pEntEstado)
 {
     // Si se logra localizar el item
     if (pEntEstado != null)
     {
         // Descartamos las modificaciones
         if (DescartarModificacionesEstado())
         {
             txtFechaEstadoActuacion.Text   = pEntEstado.FechaHora.ToString("dd-MM-yyyy");
             txtHoraEstadoActuacion.Text    = pEntEstado.FechaHora.ToString("hh:mm:ss");
             txtDetalleEstadoActuacion.Text = pEntEstado.Detalle;
             DefinirContenidoOrden(pEntEstado.Ord);
             DefinirContenidoEstados();
             operarEstados       = true;
             _modificandoEstados = true;
         }
     }
 }
示例#6
0
 /// <summary>
 /// Prepara la interfaz gráfica para modificar un estado
 /// Fecha de creación : 17/07/2018
 /// Autor : Maximiliano Leiva
 /// </summary>
 /// <param name="pEntEstado"></param>
 private void EliminarEntidadEstado(Entidades.Estado pEntEstado)
 {
     // Averiguamos si es nulo
     if (pEntEstado != null)
     {
         // Si el estado obtenido es nulo realizamos la consulta a la capa de datos
         if (Util.MsgBox.Consulta("¿Esta seguro de que desea eliminar la orden " + pEntEstado.Ord + "?") == true)
         {
             // Removemos la actuación
             entActuacion.Estados.Remove(pEntEstado);
             // Reseteamos los campos
             ResetearCamposEstadoActuacion();
             // Desactivamos la edicion de campos actuación
             operarEstados = false;
             // Reordenamos el DataGrid
             dgListadoActuacionEstados.ReordenarDatagrid();
         }
     }
 }
示例#7
0
        /// <summary>
        /// Trae un listado completo de estados a través de una actuación
        /// </summary>
        /// <param name="entAct"></param>
        /// <param name="conn"></param>
        /// <returns></returns>
        public static List <Entidades.Estado> TraerSegunActuacion(Entidades.Actuacion entAct, SQLiteConnection conn)
        {
            // Generamos el listado de estados a devolver
            List <Entidades.Estado> lstEstados = new List <Entidades.Estado>();
            // Generamos la cadena de caracteres que se utilizara en la consulta
            string strCmdEstadosActuacion = "SELECT ord, fechaHora, tipo, detalle FROM actuacion_estados WHERE numero=@Numero and operador=@Operador";

            // Generamos el comando a ejecutar
            using (SQLiteCommand cmdEstadosActuacion = new SQLiteCommand(strCmdEstadosActuacion, conn))
            {
                // Parametrizamos los comandos antes de ejecutar el lector
                cmdEstadosActuacion.Parameters.Agregar("@Numero", entAct.Numero);
                cmdEstadosActuacion.Parameters.Agregar("@Operador", entAct.Operador.UserName);
                // Ejecutamos el lector de estados
                using (SQLiteDataReader rdrLectorEstados = cmdEstadosActuacion.ExecuteReader())
                {
                    // Leemo todos los registros recolectados
                    while (rdrLectorEstados.Read())
                    {
                        // Generamos la entidad a agregar al listado de estados
                        Entidades.Estado entEstado = new Entidades.Estado()
                        {
                            Ord       = Convert.ToInt32(rdrLectorEstados["ord"]),
                            FechaHora = Convert.ToDateTime(rdrLectorEstados["fechaHora"]),
                            Detalle   = rdrLectorEstados["detalle"].ToString(),
                            Tipo      = new Entidades.TipoEstado()
                            {
                                Id = Convert.ToInt32(rdrLectorEstados["tipo"])
                            }
                        };
                        // Agregamos el estado al listado de estados
                        lstEstados.Add(entEstado);
                    }
                }
            }
            // Devolvemos el listado luego de ser procesado
            return(lstEstados);
        }
        /// <summary>
        /// Consulta sobre la base de datos por el listado de estados asuntos cargados segun el asunto pasado por parametro
        /// Fecha de creación : 06/06/2018
        /// Autor : Maximiliano Leiva
        /// </summary>
        /// <param name="pEntAsunto"></param>
        /// <returns></returns>
        public static List <Entidades.Estado> TraerListaEstadosPorAsunto(Entidades.Asunto pEntAsunto)
        {
            // Generamos la lista vacía a devolver
            List <Entidades.Estado> lstEstadoAsunto = new List <Entidades.Estado>();

            // Generamos un nuevo objeto de conexión
            using (SQLiteConnection c = new SQLiteConnection(Conexion.Cadena))
            {
                // Abrimos la conexión de la base de datos
                c.Open();
                // Disponemos de la cadena que realizará la consulta
                String strConsultaEstados = "SELECT fechaHora, detalle, ord, tipo FROM asuntos_estados WHERE numero=@Numero and operador=@Operador order by ord ASC";
                using (SQLiteCommand cmdConsultaEstados = new SQLiteCommand(strConsultaEstados, c))
                {
                    // Parametrizamos la consulta
                    cmdConsultaEstados.Parameters.Agregar("@Numero", pEntAsunto.Numero);
                    cmdConsultaEstados.Parameters.Agregar("@Operador", pEntAsunto.Oper.UserName);
                    // Leemos los resultados obtenidos
                    using (SQLiteDataReader rdrAsuntoEstados = cmdConsultaEstados.ExecuteReader())
                    {
                        while (rdrAsuntoEstados.Read())
                        {
                            Entidades.Estado     estadoLeido     = new Entidades.Estado();
                            Entidades.TipoEstado estadoLeidoTipo = new Entidades.TipoEstado();
                            estadoLeido.FechaHora = Convert.ToDateTime(rdrAsuntoEstados["fechaHora"]);
                            estadoLeido.Detalle   = rdrAsuntoEstados["detalle"].ToString();
                            estadoLeido.Ord       = Convert.ToInt32(rdrAsuntoEstados["ord"]);
                            estadoLeidoTipo.Id    = Convert.ToInt32(rdrAsuntoEstados["tipo"]);
                            estadoLeido.Tipo      = estadoLeidoTipo;
                            lstEstadoAsunto.Add(estadoLeido);
                        }
                    }
                }
            }
            // Devolvemos la lista procesada.
            return(lstEstadoAsunto);
        }
示例#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  = "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
            {
                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");
                }
            }
        }
示例#12
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");
                }
            }
        }