Exemplo n.º 1
0
        protected void ComprobantesGridView_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            FeaEntidades.InterFacturas.lote_comprobantes lote = new FeaEntidades.InterFacturas.lote_comprobantes();
            System.Xml.Serialization.XmlSerializer       x;
            int item = Convert.ToInt32(e.CommandArgument);
            List <Entidades.Comprobante> lista = (List <Entidades.Comprobante>)ViewState["Comprobantes"];

            Entidades.Comprobante comprobante = lista[item];
            switch (e.CommandName)
            {
            case "Seleccionar":
                Session["ComprobanteATratar"] = new Entidades.ComprobanteATratar(Entidades.Enum.TratamientoComprobante.Consulta, comprobante);
                string script = "window.open('/ComprobanteConsulta.aspx', '');";
                ScriptManager.RegisterStartupScript(this, typeof(Page), "popup", script, true);
                break;

            case "XML":
                ////Generar Lote
                //lote = GenerarLote(false);

                ////Grabar en base de datos
                //RN.Comprobante c = new RN.Comprobante();
                //lote.cabecera_lote.DestinoComprobante = "ITF";
                //lote.comprobante[0].cabecera.informacion_comprobante.Observacion = "";
                //c.Registrar(lote, null, "ITF", ((Entidades.Sesion)Session["Sesion"]));

                x = new System.Xml.Serialization.XmlSerializer(lote.GetType());
                System.Text.StringBuilder sb = new System.Text.StringBuilder();
                sb.Append(comprobante.Cuit);
                sb.Append("-");
                sb.Append(comprobante.NroPuntoVta.ToString("0000"));
                sb.Append("-");
                sb.Append(comprobante.TipoComprobante.Id.ToString("00"));
                sb.Append("-");
                sb.Append(comprobante.Nro.ToString("00000000"));
                sb.Append(".xml");

                //System.IO.MemoryStream m = new System.IO.MemoryStream();
                //System.IO.StreamWriter sw = new System.IO.StreamWriter(m);
                //sw.Flush();
                //System.Xml.XmlWriter writerdememoria = new System.Xml.XmlTextWriter(m, System.Text.Encoding.GetEncoding("ISO-8859-1"));

                System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument();
                xmlDoc.LoadXml(comprobante.Request);
                xmlDoc.Save(Server.MapPath(@"~/Temp/" + sb.ToString()));

                //x.Serialize(writerdememoria, xmlDoc);
                //m.Seek(0, System.IO.SeekOrigin.Begin);

                //Descarga directa del XML
                //System.IO.FileStream fs = new System.IO.FileStream(Server.MapPath(@"~/Temp/" + sb.ToString()), System.IO.FileMode.Create);
                //m.WriteTo(fs);
                //fs.Close();
                Server.Transfer("~/DescargaTemporarios.aspx?archivo=" + sb.ToString(), false);
                break;

            default:
                break;
            }
        }
        protected void ComprobantesGridView_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            FeaEntidades.InterFacturas.lote_comprobantes lote = new FeaEntidades.InterFacturas.lote_comprobantes();
            System.Xml.Serialization.XmlSerializer x;
            int item = Convert.ToInt32(e.CommandArgument);
            List<Entidades.Comprobante> lista = (List<Entidades.Comprobante>)ViewState["Comprobantes"];
            Entidades.Comprobante comprobante = lista[item];
            switch (e.CommandName)
            {
                case "Seleccionar":
                    Session["ComprobanteATratar"] = new Entidades.ComprobanteATratar(Entidades.Enum.TratamientoComprobante.Consulta, comprobante);
                    string script = "window.open('/ComprobanteConsulta.aspx', '');";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "popup", script, true);
                    break;
                case "XML":
                    ////Generar Lote
                    //lote = GenerarLote(false);

                    ////Grabar en base de datos
                    //RN.Comprobante c = new RN.Comprobante();
                    //lote.cabecera_lote.DestinoComprobante = "ITF";
                    //lote.comprobante[0].cabecera.informacion_comprobante.Observacion = "";
                    //c.Registrar(lote, null, "ITF", ((Entidades.Sesion)Session["Sesion"]));

                    x = new System.Xml.Serialization.XmlSerializer(lote.GetType());
                    System.Text.StringBuilder sb = new System.Text.StringBuilder();
                    sb.Append(comprobante.Cuit);
                    sb.Append("-");
                    sb.Append(comprobante.NroPuntoVta.ToString("0000"));
                    sb.Append("-");
                    sb.Append(comprobante.TipoComprobante.Id.ToString("00"));
                    sb.Append("-");
                    sb.Append(comprobante.Nro.ToString("00000000"));
                    sb.Append(".xml");

                    //System.IO.MemoryStream m = new System.IO.MemoryStream();
                    //System.IO.StreamWriter sw = new System.IO.StreamWriter(m);
                    //sw.Flush();
                    //System.Xml.XmlWriter writerdememoria = new System.Xml.XmlTextWriter(m, System.Text.Encoding.GetEncoding("ISO-8859-1"));

                    System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument();
                    xmlDoc.LoadXml(comprobante.Request);
                    xmlDoc.Save(Server.MapPath(@"~/Temp/" + sb.ToString()));

                    //x.Serialize(writerdememoria, xmlDoc);
                    //m.Seek(0, System.IO.SeekOrigin.Begin);

                    //Descarga directa del XML
                    //System.IO.FileStream fs = new System.IO.FileStream(Server.MapPath(@"~/Temp/" + sb.ToString()), System.IO.FileMode.Create);
                    //m.WriteTo(fs);
                    //fs.Close();
                    Server.Transfer("~/DescargaTemporarios.aspx?archivo=" + sb.ToString(), false);
                    break;
                default:
                    break;
            }
        }
Exemplo n.º 3
0
        private void GenerarButton_Click(object sender, EventArgs e)
        {
            List<eFact_Entidades.Lote> loteComprobantes = new List<eFact_Entidades.Lote>();
            List<eFact_Entidades.Lote> loteComprobantesC = new List<eFact_Entidades.Lote>();
            List<eFact_Entidades.Lote> loteComprobantesD = new List<eFact_Entidades.Lote>();
            if (VentasRadioButton.Checked)
            {
                loteComprobantes = eFact_RN.Lote.ConsultarLotesDeComprobantesVigentesXFecha(FechaDsdDTP.Value.ToString("yyyyMMdd"), FechaHstDTP.Value.ToString("yyyyMMdd"), CuitVendedorComboBox.SelectedItem.ToString(), Aplicacion.Sesion);
            }
            else
            {
                loteComprobantesC = eFact_RN.Lote.ConsultarLotesDeComprobantesCVigentesXFecha(FechaDsdDTP.Value.ToString("yyyyMMdd"), FechaHstDTP.Value.ToString("yyyyMMdd"), CuitVendedorComboBox.SelectedItem.ToString(), Aplicacion.Sesion);
                loteComprobantesD = eFact_RN.Lote.ConsultarLotesDeComprobantesDVigentesXFecha(FechaDsdDTP.Value.ToString("yyyyMMdd"), FechaHstDTP.Value.ToString("yyyyMMdd"), CuitVendedorComboBox.SelectedItem.ToString(), Aplicacion.Sesion);
            }

            if (loteComprobantes.Count != 0 || loteComprobantesC.Count != 0 || loteComprobantesD.Count != 0)
            {
                System.Xml.Serialization.XmlSerializer x;
                byte[] bytes;
                System.IO.MemoryStream ms;
                string script;
                FeaEntidades.InterFacturas.lote_comprobantes lote;
                bool HayVentas = false;
                bool HayVentasAlic = false;
                bool HayCompras = false;
                bool HayComprasAlic = false;
                bool HayComprasImpAlic = false;

                //Crear nombre de archivo default sin extensión
                System.Text.StringBuilder sb = new System.Text.StringBuilder();
                sb.Append(CuitVendedorComboBox.SelectedItem.ToString());
                sb.Append("-");
                sb.Append(DateTime.Now.ToString("yyyyMMdd"));

                //Crear nombre de archivo ZIP
                System.Text.StringBuilder sbZIP = new System.Text.StringBuilder();
                sbZIP.Append(sb.ToString() + ".zip");

                //Crear archivo VENTAS CABECERA
                System.Text.StringBuilder sbVENTASCab = new System.Text.StringBuilder();
                sbVENTASCab.Append("REGINFO_CV_VENTAS_CBTE.TXT");    //sb.ToString() + "-CABECERA_EMISOR.txt");
                System.IO.MemoryStream m = new System.IO.MemoryStream();
                System.IO.FileStream fs = new System.IO.FileStream(Path.GetTempPath() + sbVENTASCab.ToString(), System.IO.FileMode.Create);
                m.WriteTo(fs);
                fs.Close();

                //Crear archivo VENTAS ALICUOTAS
                System.Text.StringBuilder sbVENTASAlic = new System.Text.StringBuilder();
                sbVENTASAlic.Append("REGINFO_CV_VENTAS_ALICUOTAS.TXT");     //sb.ToString() + "-DETALLE.txt");
                m = new System.IO.MemoryStream();
                fs = new System.IO.FileStream(Path.GetTempPath() + sbVENTASAlic.ToString(), System.IO.FileMode.Create);
                m.WriteTo(fs);
                fs.Close();

                //Crear archivo COMPRAS CABECERA
                System.Text.StringBuilder sbCOMPRASCab = new System.Text.StringBuilder();
                sbCOMPRASCab.Append("REGINFO_CV_COMPRAS_CBTE.TXT");    //sb.ToString() + "-CABECERA_EMISOR.txt");
                m = new System.IO.MemoryStream();
                fs = new System.IO.FileStream(Path.GetTempPath() + sbCOMPRASCab.ToString(), System.IO.FileMode.Create);
                m.WriteTo(fs);
                fs.Close();

                //Crear archivo COMPRAS ALICUOTAS
                System.Text.StringBuilder sbCOMPRASAlic = new System.Text.StringBuilder();
                sbCOMPRASAlic.Append("REGINFO_CV_COMPRAS_ALICUOTAS.TXT");     //sb.ToString() + "-DETALLE.txt");
                m = new System.IO.MemoryStream();
                fs = new System.IO.FileStream(Path.GetTempPath() + sbCOMPRASAlic.ToString(), System.IO.FileMode.Create);
                m.WriteTo(fs);
                fs.Close();

                //Crear archivo COMPRAS ALICUOTAS IMPORTACIONES
                System.Text.StringBuilder sbCOMPRASImpAlic = new System.Text.StringBuilder();
                sbCOMPRASImpAlic.Append("REGINFO_CV_COMPRAS_IMPORTACIONES.TXT");     //sb.ToString() + "-DETALLE.txt");
                m = new System.IO.MemoryStream();
                fs = new System.IO.FileStream(Path.GetTempPath() + sbCOMPRASImpAlic.ToString(), System.IO.FileMode.Create);
                m.WriteTo(fs);
                fs.Close();

                double TotalGral = 0; double TotalNetoGravado = 0; double TotalNetoNoGravado = 0;
                double TotalImporteExento = 0; double TotalIB = 0; double TotalIM = 0;
                double TotalII = 0; double TotalOtros = 0;

                double TotalIVA270 = 0; double TotalIVA210 = 0; double TotalIVA105 = 0;
                double TotalIVA050 = 0; double TotalIVA025 = 0;

                int CantComprobantes = 0;

                #region Ventas
                if (VentasRadioButton.Checked)
                {
                    if (loteComprobantes.Count > 0)
                    {
                        foreach (eFact_Entidades.Lote loteAProcesar in loteComprobantes)
                        {
                            HayVentas = true;
                            lote = new FeaEntidades.InterFacturas.lote_comprobantes();
                            x = new System.Xml.Serialization.XmlSerializer(lote.GetType());

                            try
                            {
                                loteAProcesar.LoteXml = loteAProcesar.LoteXml.Replace("iso-8859-1", "utf-16");
                                bytes = new byte[loteAProcesar.LoteXml.Length * sizeof(char)];
                                System.Buffer.BlockCopy(loteAProcesar.LoteXml.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);

                                //Procesar todos los comprobantes del lote.
                                for (int cl = 0; cl < lote.comprobante.Length; cl++)
                                {
                                    #region "Armar Interfaz Ventas"
                                    if (Convert.ToInt32(lote.comprobante[cl].cabecera.informacion_comprobante.fecha_emision) >= Convert.ToInt32(FechaDsdDTP.Value.ToString("yyyyMMdd")) && Convert.ToInt32(lote.comprobante[cl].cabecera.informacion_comprobante.fecha_emision) <= Convert.ToInt32(FechaHstDTP.Value.ToString("yyyyMMdd")))
                                    {
                                        CantComprobantes += 1;
                                        //Guardar info en archivo VENTAS CABECERA
                                        System.Text.StringBuilder sbDataVENTASCab = new System.Text.StringBuilder();
                                        //string Campo2 = String.Format("{0,11}", sesion.Cuit.Nro);
                                        string Campo1 = lote.comprobante[cl].cabecera.informacion_comprobante.fecha_emision;
                                        string Campo2 = lote.comprobante[cl].cabecera.informacion_comprobante.tipo_de_comprobante.ToString("000");
                                        string Campo3 = lote.comprobante[cl].cabecera.informacion_comprobante.punto_de_venta.ToString("00000");
                                        string Campo4 = lote.comprobante[cl].cabecera.informacion_comprobante.numero_comprobante.ToString(new string(Convert.ToChar("0"), 20));
                                        string Campo5 = lote.comprobante[cl].cabecera.informacion_comprobante.numero_comprobante.ToString(new string(Convert.ToChar("0"), 20));
                                        string Campo6 = lote.comprobante[cl].cabecera.informacion_comprador.codigo_doc_identificatorio.ToString("00");
                                        string Campo7 = lote.comprobante[cl].cabecera.informacion_comprador.nro_doc_identificatorio.ToString(new string(Convert.ToChar("0"), 20));
                                        string Campo8 = Truncate(String.Format("{0,-30}", lote.comprobante[cl].cabecera.informacion_comprador.denominacion), 30);

                                        string Campo9 = String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_factura.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_factura.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                        TotalGral += lote.comprobante[cl].resumen.importe_total_factura;
                                        string Campo10 = String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_concepto_no_gravado.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_concepto_no_gravado.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                        TotalNetoNoGravado += lote.comprobante[cl].resumen.importe_total_concepto_no_gravado;
                                            
                                        //string CampoXX = String.Format("{0,16}", lote.comprobante[cl].resumen.impuesto_liq_rni.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.impuesto_liq_rni.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                        string Campo11 = new string(Convert.ToChar("0"), 15);   //Percepción a no categorizados
                                        string Campo12 = String.Format("{0,16}", lote.comprobante[cl].resumen.importe_operaciones_exentas.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.importe_operaciones_exentas.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                        TotalImporteExento += lote.comprobante[cl].resumen.importe_operaciones_exentas;
                                        //Importe de percepciones o pagos a cuenta de impuestos nacionales
                                        string Campo13 = String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_impuestos_nacionales.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_impuestos_nacionales.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                        TotalOtros = lote.comprobante[cl].resumen.importe_total_impuestos_nacionales;
                                        string Campo14 = String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_ingresos_brutos.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_ingresos_brutos.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                        TotalIB = lote.comprobante[cl].resumen.importe_total_ingresos_brutos;
                                        string Campo15 = String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_impuestos_municipales.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_impuestos_municipales.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                        TotalIM = lote.comprobante[cl].resumen.importe_total_impuestos_municipales;
                                        string Campo16 = String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_impuestos_internos.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_impuestos_internos.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                        TotalII = lote.comprobante[cl].resumen.importe_total_impuestos_internos;
                                        string Campo17 = String.Format("{0,-3}", lote.comprobante[cl].resumen.codigo_moneda);
                                        string Campo18 = String.Format("{0,11}", lote.comprobante[cl].resumen.tipo_de_cambio.ToString(new string(Convert.ToChar("0"), 4) + ".000000")).Substring(0, 4) + String.Format("{0,11}", lote.comprobante[cl].resumen.tipo_de_cambio.ToString(new string(Convert.ToChar("0"), 4) + ".000000")).Substring(5, 6);
                                        int CantAlicuotas = 0;
                                        if (lote.comprobante[cl].resumen.cant_alicuotas_iva == 0)
                                        {
                                            if (lote.comprobante[cl].resumen.impuestos != null)
                                            {
                                                for (int z = 0; z < lote.comprobante[cl].resumen.impuestos.Length; z++)
                                                {
                                                    if (lote.comprobante[cl].resumen.impuestos[z].codigo_impuesto == 1)
                                                    {
                                                        CantAlicuotas += 1;
                                                    }
                                                }
                                            }
                                        }
                                        else
                                        {
                                            CantAlicuotas = lote.comprobante[cl].resumen.cant_alicuotas_iva;
                                        }
                                        string Campo19 = String.Format("{0,1}", CantAlicuotas);
                                        string Campo20 = String.Format("{0,1}", lote.comprobante[cl].cabecera.informacion_comprobante.codigo_operacion);
                                        string Campo21 = new string(Convert.ToChar("0"), 15);  //Otros Tributos
                                        string Campo22 = String.Format("{0,-8}", lote.comprobante[cl].cabecera.informacion_comprobante.fecha_vencimiento);

                                        sbDataVENTASCab.AppendLine(Campo1 + Campo2 + Campo3 + Campo4 + Campo5 + Campo6 + Campo7 + Campo8 + Campo9 + Campo10 + Campo11 + Campo12 + Campo13 + Campo14 + Campo15 + Campo16 + Campo17 + Campo18 + Campo19 + Campo20 + Campo21 + Campo22);
                                        using (StreamWriter outfile = new StreamWriter(Path.GetTempPath() + sbVENTASCab.ToString()))
                                        {
                                            outfile.Write(sbDataVENTASCab.ToString());
                                        }

                                        //Guardar info en archivo VENTAS ALICUOTAS
                                        System.Text.StringBuilder sbDataVENTASAlic = new System.Text.StringBuilder();
                                        if (CantAlicuotas != 0)
                                        {
                                            HayVentasAlic = true;
                                            for (int z = 0; z < lote.comprobante[cl].resumen.impuestos.Length; z++)
                                            {
                                                if (lote.comprobante[cl].resumen.impuestos[z].codigo_impuesto == 1)
                                                {
                                                    Campo1 = lote.comprobante[cl].cabecera.informacion_comprobante.tipo_de_comprobante.ToString("000");
                                                    Campo2 = lote.comprobante[cl].cabecera.informacion_comprobante.punto_de_venta.ToString("00000");
                                                    Campo3 = lote.comprobante[cl].cabecera.informacion_comprobante.numero_comprobante.ToString(new string(Convert.ToChar("0"), 20));

                                                    double baseImponible = lote.comprobante[cl].resumen.impuestos[z].base_imponible;
                                                    TotalNetoGravado += baseImponible;
                                                    if (lote.comprobante[cl].resumen.impuestos[z].porcentaje_impuesto == 0)
                                                    {
                                                        if (lote.comprobante[cl].resumen.impuestos[z].base_imponible == 0)
                                                        {
                                                            for (int k = 0; k < lote.comprobante[cl].detalle.linea.Length; k++)
                                                            {
                                                                if (lote.comprobante[cl].detalle.linea[k] == null) { break; }
                                                                if (lote.comprobante[cl].detalle.linea[k].indicacion_exento_gravado != null && lote.comprobante[cl].detalle.linea[k].indicacion_exento_gravado.Trim().ToUpper() == "G" && lote.comprobante[cl].detalle.linea[k].alicuota_iva == 0)
                                                                {
                                                                    baseImponible += Math.Round(lote.comprobante[cl].detalle.linea[k].importe_total_articulo, 2);
                                                                }
                                                            }
                                                        }
                                                        Campo4 = String.Format("{0,16}", baseImponible.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", baseImponible.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                                        Campo5 = "0003";
                                                        Campo6 = String.Format("{0,16}", lote.comprobante[cl].resumen.impuestos[z].importe_impuesto.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.impuestos[z].importe_impuesto.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                                    }
                                                    if (lote.comprobante[cl].resumen.impuestos[z].porcentaje_impuesto == 10.5)
                                                    {
                                                        if (lote.comprobante[cl].resumen.impuestos[z].base_imponible == 0)
                                                        {
                                                            baseImponible += Math.Round((lote.comprobante[cl].resumen.impuestos[z].importe_impuesto * 100) / lote.comprobante[cl].resumen.impuestos[z].porcentaje_impuesto, 2);
                                                        }
                                                        Campo4 = String.Format("{0,16}", baseImponible.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", baseImponible.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                                        Campo5 = "0004";
                                                        Campo6 = String.Format("{0,16}", lote.comprobante[cl].resumen.impuestos[z].importe_impuesto.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.impuestos[z].importe_impuesto.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                                        TotalIVA105 += lote.comprobante[cl].resumen.impuestos[z].importe_impuesto;
                                                    }
                                                    else if (lote.comprobante[cl].resumen.impuestos[z].porcentaje_impuesto == 21)
                                                    {
                                                        if (lote.comprobante[cl].resumen.impuestos[z].base_imponible == 0)
                                                        {
                                                            baseImponible += Math.Round((lote.comprobante[cl].resumen.impuestos[z].importe_impuesto * 100) / lote.comprobante[cl].resumen.impuestos[z].porcentaje_impuesto, 2);
                                                        }
                                                        Campo4 = String.Format("{0,16}", baseImponible.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", baseImponible.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                                        Campo5 = "0005";
                                                        Campo6 = String.Format("{0,16}", lote.comprobante[cl].resumen.impuestos[z].importe_impuesto.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.impuestos[z].importe_impuesto.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                                        TotalIVA210 += lote.comprobante[cl].resumen.impuestos[z].importe_impuesto;
                                                    }
                                                    else if (lote.comprobante[cl].resumen.impuestos[z].porcentaje_impuesto == 27)
                                                    {
                                                        if (lote.comprobante[cl].resumen.impuestos[z].base_imponible == 0)
                                                        {
                                                            baseImponible += Math.Round((lote.comprobante[cl].resumen.impuestos[z].importe_impuesto * 100) / lote.comprobante[cl].resumen.impuestos[z].porcentaje_impuesto, 2);
                                                        }
                                                        Campo4 = String.Format("{0,16}", baseImponible.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", baseImponible.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                                        Campo5 = "0006";
                                                        Campo6 = String.Format("{0,16}", lote.comprobante[cl].resumen.impuestos[z].importe_impuesto.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.impuestos[z].importe_impuesto.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                                        TotalIVA270 += lote.comprobante[cl].resumen.impuestos[z].importe_impuesto;
                                                    }
                                                    else if (lote.comprobante[cl].resumen.impuestos[z].porcentaje_impuesto == 5)
                                                    {
                                                        if (lote.comprobante[cl].resumen.impuestos[z].base_imponible == 0)
                                                        {
                                                            baseImponible += Math.Round((lote.comprobante[cl].resumen.impuestos[z].importe_impuesto * 100) / lote.comprobante[cl].resumen.impuestos[z].porcentaje_impuesto, 2);
                                                        }
                                                        Campo4 = String.Format("{0,16}", baseImponible.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", baseImponible.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                                        Campo5 = "0008";
                                                        Campo6 = String.Format("{0,16}", lote.comprobante[cl].resumen.impuestos[z].importe_impuesto.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.impuestos[z].importe_impuesto.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                                        TotalIVA050 += lote.comprobante[cl].resumen.impuestos[z].importe_impuesto;
                                                    }
                                                    else if (lote.comprobante[cl].resumen.impuestos[z].porcentaje_impuesto == 2.5)
                                                    {
                                                        if (lote.comprobante[cl].resumen.impuestos[z].base_imponible == 0)
                                                        {
                                                            baseImponible += Math.Round((lote.comprobante[cl].resumen.impuestos[z].importe_impuesto * 100) / lote.comprobante[cl].resumen.impuestos[z].porcentaje_impuesto, 2);
                                                        }
                                                        Campo4 = String.Format("{0,16}", baseImponible.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", baseImponible.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                                        Campo5 = "0009";
                                                        Campo6 = String.Format("{0,16}", lote.comprobante[cl].resumen.impuestos[z].importe_impuesto.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.impuestos[z].importe_impuesto.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                                        TotalIVA025 += lote.comprobante[cl].resumen.impuestos[z].importe_impuesto;
                                                    }
                                                }
                                            }

                                            sbDataVENTASAlic.AppendLine(Campo1 + Campo2 + Campo3 + Campo4 + Campo5 + Campo6);
                                            using (StreamWriter outfile = new StreamWriter(Path.GetTempPath() + sbVENTASAlic.ToString()))
                                            {
                                                outfile.Write(sbDataVENTASAlic.ToString());
                                            }
                                        }
                                    }
                                    #endregion
                                }
                            }
                            catch (Exception ex)
                            {
                                script = "Problemas para generar la interfaz de ventas.\\n" + ex.Message + "\\n" + ex.StackTrace;
                                MessageBox.Show(script, "Atención", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                            }
                        }
                        ResultadosTextBox.Text = "VENTAS (" + CantComprobantes + ")  Total Gral: " + TotalGral + System.Environment.NewLine;
                        if (TotalNetoGravado != 0)
                        {
                            ResultadosTextBox.Text += "Total Neto Gravado: " + TotalNetoGravado + System.Environment.NewLine; 
                        }
                        if (TotalNetoNoGravado != 0)
                        {
                            ResultadosTextBox.Text += "Total Neto No Gravado: " + TotalNetoNoGravado + System.Environment.NewLine;
                        }
                        if (TotalImporteExento != 0)
                        {
                            ResultadosTextBox.Text += "Total Exento: " + TotalImporteExento + System.Environment.NewLine;
                        }
                        if (TotalIB != 0)
                        {
                            ResultadosTextBox.Text += "Total IB: " + TotalIB + System.Environment.NewLine;
                        }
                        if (TotalIM != 0)
                        {
                            ResultadosTextBox.Text += "Total IM: " + TotalIM + System.Environment.NewLine;
                        }
                        if (TotalII != 0)
                        {
                            ResultadosTextBox.Text += "Total II: " + TotalII + System.Environment.NewLine;
                        }
                        if (TotalOtros != 0)
                        {
                            ResultadosTextBox.Text += "Total Otros Imp.Nac.: " + TotalOtros + System.Environment.NewLine;
                        }
                        if (TotalIVA270 != 0)
                        {
                            ResultadosTextBox.Text += "Total IVA 27%: " + TotalIVA270 + System.Environment.NewLine;
                        }
                        if (TotalIVA270 != 0)
                        {
                            ResultadosTextBox.Text += "Total IVA 21%: " + TotalIVA210 + System.Environment.NewLine;
                        }
                        if (TotalIVA270 != 0)
                        {
                            ResultadosTextBox.Text += "Total IVA 10,5%: " + TotalIVA105 + System.Environment.NewLine;
                        }
                        if (TotalIVA270 != 0)
                        {
                            ResultadosTextBox.Text += "Total IVA 5%: " + TotalIVA050 + System.Environment.NewLine;
                        }
                        if (TotalIVA270 != 0)
                        {
                            ResultadosTextBox.Text += "Total IVA 2,5%: " + TotalIVA025 + System.Environment.NewLine;
                        }
                    }
                    else
                    {
                        MessageBox.Show("No hay información de Ventas para procesar en el período seleccionado.", "Atención", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                    }
                }
                #endregion

                #region Compras
                if (ComprasRadioButton.Checked)
                {
                    if (loteComprobantesC.Count > 0 || loteComprobantesD.Count > 0)
                    {
                        foreach (eFact_Entidades.Lote loteAProcesar in loteComprobantesC)
                        {
                            HayCompras = true;
                            lote = new FeaEntidades.InterFacturas.lote_comprobantes();
                            x = new System.Xml.Serialization.XmlSerializer(lote.GetType());

                            try
                            {
                                loteAProcesar.LoteXml = loteAProcesar.LoteXml.Replace("iso-8859-1", "utf-16");
                                bytes = new byte[loteAProcesar.LoteXml.Length * sizeof(char)];
                                System.Buffer.BlockCopy(loteAProcesar.LoteXml.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);

                                //Procesar todos los comprobantes del lote.
                                for (int cl = 0; cl < lote.comprobante.Length; cl++)
                                {
                                    #region "Armar Interfaz Compras"
                                    if (Convert.ToInt32(lote.comprobante[cl].cabecera.informacion_comprobante.fecha_emision) >= Convert.ToInt32(FechaDsdDTP.Value.ToString("yyyyMMdd")) && Convert.ToInt32(lote.comprobante[cl].cabecera.informacion_comprobante.fecha_emision) <= Convert.ToInt32(FechaHstDTP.Value.ToString("yyyyMMdd")))
                                    {
                                        CantComprobantes += 1;
                                        //Guardar info en archivo COMPRAS CABECERA
                                        System.Text.StringBuilder sbDataCOMPRASCab = new System.Text.StringBuilder();
                                        //string Campo2 = String.Format("{0,11}", sesion.Cuit.Nro);
                                        string Campo1 = lote.comprobante[cl].cabecera.informacion_comprobante.fecha_emision;
                                        string Campo2 = lote.comprobante[cl].cabecera.informacion_comprobante.tipo_de_comprobante.ToString("000");
                                        string Campo3 = lote.comprobante[cl].cabecera.informacion_comprobante.punto_de_venta.ToString("00000");
                                        string Campo4 = lote.comprobante[cl].cabecera.informacion_comprobante.numero_comprobante.ToString(new string(Convert.ToChar("0"), 20));
                                        string Campo5 = new string(Convert.ToChar(" "), 16);  //Nro. de despacho de importación
                                        string Campo6 = "80";
                                        string Campo7 = lote.comprobante[cl].cabecera.informacion_vendedor.cuit.ToString(new string(Convert.ToChar("0"), 20));
                                        string Campo8 = Truncate(String.Format("{0,-30}", lote.comprobante[cl].cabecera.informacion_vendedor.razon_social), 30);

                                        string Campo9 = String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_factura.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_factura.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                        TotalGral += lote.comprobante[cl].resumen.importe_total_factura;
                                        string Campo10 = String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_concepto_no_gravado.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_concepto_no_gravado.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                        TotalNetoNoGravado += lote.comprobante[cl].resumen.importe_total_concepto_no_gravado;

                                        //string CampoXX = String.Format("{0,16}", lote.comprobante[cl].resumen.impuesto_liq_rni.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.impuesto_liq_rni.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                        string Campo11 = String.Format("{0,16}", lote.comprobante[cl].resumen.importe_operaciones_exentas.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.importe_operaciones_exentas.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                        TotalImporteExento += lote.comprobante[cl].resumen.importe_operaciones_exentas;

                                        //Importe de percepciones o pagos a cuenta de impuestos nacionales (IVA)
                                        string Campo12 = String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_impuestos_nacionales.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_impuestos_nacionales.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                        TotalOtros += lote.comprobante[cl].resumen.importe_total_impuestos_nacionales;
                                        //Importe de percepciones o pagos a cuenta de impuestos nacionales (Otros impuestos)
                                        string Campo13 = new string(Convert.ToChar("0"), 15);
                                        string Campo14 = String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_ingresos_brutos.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_ingresos_brutos.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                        TotalIB += lote.comprobante[cl].resumen.importe_total_ingresos_brutos;
                                        string Campo15 = String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_impuestos_municipales.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_impuestos_municipales.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                        TotalIM += lote.comprobante[cl].resumen.importe_total_impuestos_municipales;
                                        string Campo16 = String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_impuestos_internos.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_impuestos_internos.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                        TotalII += lote.comprobante[cl].resumen.importe_total_impuestos_internos;
                                        string Campo17 = String.Format("{0,-3}", lote.comprobante[cl].resumen.codigo_moneda);
                                        string Campo18 = String.Format("{0,11}", lote.comprobante[cl].resumen.tipo_de_cambio.ToString(new string(Convert.ToChar("0"), 4) + ".000000")).Substring(0, 4) + String.Format("{0,11}", lote.comprobante[cl].resumen.tipo_de_cambio.ToString(new string(Convert.ToChar("0"), 4) + ".000000")).Substring(5, 6);
                                        int CantAlicuotas = 0;
                                        if (lote.comprobante[cl].resumen.cant_alicuotas_iva == 0)
                                        {
                                            if (lote.comprobante[cl].resumen.impuestos != null)
                                            {
                                                for (int z = 0; z < lote.comprobante[cl].resumen.impuestos.Length; z++)
                                                {
                                                    if (lote.comprobante[cl].resumen.impuestos[z].codigo_impuesto == 1)
                                                    {
                                                        CantAlicuotas += 1;
                                                    }
                                                }
                                            }
                                        }
                                        else
                                        {
                                            CantAlicuotas = lote.comprobante[cl].resumen.cant_alicuotas_iva;
                                        }
                                        string Campo19 = String.Format("{0,1}", CantAlicuotas);
                                        string Campo20 = String.Format("{0,1}", lote.comprobante[cl].cabecera.informacion_comprobante.codigo_operacion);
                                        string Campo21 = new string(Convert.ToChar("0"), 15);           //Crédito Fiscal Computable
                                        string Campo22 = new string(Convert.ToChar("0"), 15);           //Otros Tributos
                                        string Campo23 = new string(Convert.ToChar("0"), 11);           //CUIT emisor / corredor
                                        string Campo24 = Truncate(String.Format("{0,-30}", ""), 30);    //Denominación del emisor / corredor
                                        string Campo25 = new string(Convert.ToChar("0"), 15);           //IVA comisión

                                        //string Campo25 = String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_neto_gravado.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_neto_gravado.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                        //string Campo26 = String.Format("{0,16}", lote.comprobante[cl].resumen.impuesto_liq.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.impuesto_liq.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);

                                        sbDataCOMPRASCab.AppendLine(Campo1 + Campo2 + Campo3 + Campo4 + Campo5 + Campo6 + Campo7 + Campo8 + Campo9 + Campo10 + Campo11 + Campo12 + Campo13 + Campo14 + Campo15 + Campo16 + Campo17 + Campo18 + Campo19 + Campo20 + Campo21 + Campo22 + Campo23 + Campo24 + Campo25);
                                        using (StreamWriter outfile = new StreamWriter(Path.GetTempPath() + sbCOMPRASCab.ToString()))
                                        {
                                            outfile.Write(sbDataCOMPRASCab.ToString());
                                        }

                                        //Guardar info en archivo COMPRAS ALICUOTAS
                                        System.Text.StringBuilder sbDataCOMPRASAlic = new System.Text.StringBuilder();
                                        if (CantAlicuotas != 0)
                                        {
                                            HayComprasAlic = true;
                                            for (int z = 0; z < lote.comprobante[cl].resumen.impuestos.Length; z++)
                                            {
                                                if (lote.comprobante[cl].resumen.impuestos[z].codigo_impuesto == 1)
                                                {
                                                    Campo1 = lote.comprobante[cl].cabecera.informacion_comprobante.tipo_de_comprobante.ToString("000");
                                                    Campo2 = lote.comprobante[cl].cabecera.informacion_comprobante.punto_de_venta.ToString("00000");
                                                    Campo3 = lote.comprobante[cl].cabecera.informacion_comprobante.numero_comprobante.ToString(new string(Convert.ToChar("0"), 20));
                                                    Campo4 = "80";
                                                    Campo5 = lote.comprobante[cl].cabecera.informacion_vendedor.cuit.ToString(new string(Convert.ToChar("0"), 20));

                                                    double baseImponible = lote.comprobante[cl].resumen.impuestos[z].base_imponible;
                                                    TotalNetoGravado += baseImponible;
                                                    if (lote.comprobante[cl].resumen.impuestos[z].porcentaje_impuesto == 0)
                                                    {
                                                        if (lote.comprobante[cl].resumen.impuestos[z].base_imponible == 0)
                                                        {
                                                            for (int k = 0; k < lote.comprobante[cl].detalle.linea.Length; k++)
                                                            {
                                                                if (lote.comprobante[cl].detalle.linea[k] == null) { break; }
                                                                if (lote.comprobante[cl].detalle.linea[k].indicacion_exento_gravado != null && lote.comprobante[cl].detalle.linea[k].indicacion_exento_gravado.Trim().ToUpper() == "G" && lote.comprobante[cl].detalle.linea[k].alicuota_iva == 0)
                                                                {
                                                                    baseImponible += Math.Round(lote.comprobante[cl].detalle.linea[k].importe_total_articulo, 2);
                                                                }
                                                            }
                                                        }
                                                        Campo6 = String.Format("{0,16}", baseImponible.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", baseImponible.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                                        Campo7 = "0003";
                                                        Campo8 = String.Format("{0,16}", lote.comprobante[cl].resumen.impuestos[z].importe_impuesto.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.impuestos[z].importe_impuesto.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                                    }
                                                    if (lote.comprobante[cl].resumen.impuestos[z].porcentaje_impuesto == 10.5)
                                                    {
                                                        if (lote.comprobante[cl].resumen.impuestos[z].base_imponible == 0)
                                                        {
                                                            baseImponible += Math.Round((lote.comprobante[cl].resumen.impuestos[z].importe_impuesto * 100) / lote.comprobante[cl].resumen.impuestos[z].porcentaje_impuesto, 2);
                                                        }
                                                        Campo6 = String.Format("{0,16}", baseImponible.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", baseImponible.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                                        Campo7 = "0004";
                                                        Campo8 = String.Format("{0,16}", lote.comprobante[cl].resumen.impuestos[z].importe_impuesto.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.impuestos[z].importe_impuesto.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                                        TotalIVA105 += lote.comprobante[cl].resumen.impuestos[z].importe_impuesto;
                                                    }
                                                    else if (lote.comprobante[cl].resumen.impuestos[z].porcentaje_impuesto == 21)
                                                    {
                                                        if (lote.comprobante[cl].resumen.impuestos[z].base_imponible == 0)
                                                        {
                                                            baseImponible += Math.Round((lote.comprobante[cl].resumen.impuestos[z].importe_impuesto * 100) / lote.comprobante[cl].resumen.impuestos[z].porcentaje_impuesto, 2);
                                                        }
                                                        Campo6 = String.Format("{0,16}", baseImponible.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", baseImponible.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                                        Campo7 = "0005";
                                                        Campo8 = String.Format("{0,16}", lote.comprobante[cl].resumen.impuestos[z].importe_impuesto.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.impuestos[z].importe_impuesto.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                                        TotalIVA210 += lote.comprobante[cl].resumen.impuestos[z].importe_impuesto;
                                                    }
                                                    else if (lote.comprobante[cl].resumen.impuestos[z].porcentaje_impuesto == 27)
                                                    {
                                                        if (lote.comprobante[cl].resumen.impuestos[z].base_imponible == 0)
                                                        {
                                                            baseImponible += Math.Round((lote.comprobante[cl].resumen.impuestos[z].importe_impuesto * 100) / lote.comprobante[cl].resumen.impuestos[z].porcentaje_impuesto, 2);
                                                        }
                                                        Campo6 = String.Format("{0,16}", baseImponible.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", baseImponible.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                                        Campo7 = "0006";
                                                        Campo8 = String.Format("{0,16}", lote.comprobante[cl].resumen.impuestos[z].importe_impuesto.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.impuestos[z].importe_impuesto.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                                        TotalIVA270 += lote.comprobante[cl].resumen.impuestos[z].importe_impuesto;
                                                    }
                                                    else if (lote.comprobante[cl].resumen.impuestos[z].porcentaje_impuesto == 5)
                                                    {
                                                        if (lote.comprobante[cl].resumen.impuestos[z].base_imponible == 0)
                                                        {
                                                            baseImponible += Math.Round((lote.comprobante[cl].resumen.impuestos[z].importe_impuesto * 100) / lote.comprobante[cl].resumen.impuestos[z].porcentaje_impuesto, 2);
                                                        }
                                                        Campo6 = String.Format("{0,16}", baseImponible.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", baseImponible.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                                        Campo7 = "0008";
                                                        Campo8 = String.Format("{0,16}", lote.comprobante[cl].resumen.impuestos[z].importe_impuesto.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.impuestos[z].importe_impuesto.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                                        TotalIVA050 += lote.comprobante[cl].resumen.impuestos[z].importe_impuesto;
                                                    }
                                                    else if (lote.comprobante[cl].resumen.impuestos[z].porcentaje_impuesto == 2.5)
                                                    {
                                                        if (lote.comprobante[cl].resumen.impuestos[z].base_imponible == 0)
                                                        {
                                                            baseImponible += Math.Round((lote.comprobante[cl].resumen.impuestos[z].importe_impuesto * 100) / lote.comprobante[cl].resumen.impuestos[z].porcentaje_impuesto, 2);
                                                        }
                                                        Campo6 = String.Format("{0,16}", baseImponible.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", baseImponible.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                                        Campo7 = "0009";
                                                        Campo8 = String.Format("{0,16}", lote.comprobante[cl].resumen.impuestos[z].importe_impuesto.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.impuestos[z].importe_impuesto.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                                        TotalIVA025 += lote.comprobante[cl].resumen.impuestos[z].importe_impuesto;
                                                    }
                                                }
                                            }

                                            sbDataCOMPRASAlic.AppendLine(Campo1 + Campo2 + Campo3 + Campo4 + Campo5 + Campo6 + Campo7 + Campo8);
                                            using (StreamWriter outfile = new StreamWriter(Path.GetTempPath() + sbCOMPRASAlic.ToString()))
                                            {
                                                outfile.Write(sbDataCOMPRASAlic.ToString());
                                            }
                                        }
                                    }
                                    #endregion
                                }
                                ResultadosTextBox.Text = "COMPRAS (" + CantComprobantes + ")  Total Gral: " + TotalGral + System.Environment.NewLine;
                                if (TotalNetoGravado != 0)
                                {
                                    ResultadosTextBox.Text += "Total Neto Gravado: " + TotalNetoGravado + System.Environment.NewLine;
                                }
                                if (TotalNetoNoGravado != 0)
                                {
                                    ResultadosTextBox.Text += "Total Neto No Gravado: " + TotalNetoNoGravado + System.Environment.NewLine;
                                }
                                if (TotalImporteExento != 0)
                                {
                                    ResultadosTextBox.Text += "Total Exento: " + TotalImporteExento + System.Environment.NewLine;
                                }
                                if (TotalIB != 0)
                                {
                                    ResultadosTextBox.Text += "Total IB: " + TotalIB + System.Environment.NewLine;
                                }
                                if (TotalIM != 0)
                                {
                                    ResultadosTextBox.Text += "Total IM: " + TotalIM + System.Environment.NewLine;
                                }
                                if (TotalII != 0)
                                {
                                    ResultadosTextBox.Text += "Total II: " + TotalII + System.Environment.NewLine;
                                }
                                if (TotalOtros != 0)
                                {
                                    ResultadosTextBox.Text += "Total Otros Imp.Nac.: " + TotalOtros + System.Environment.NewLine;
                                }
                                if (TotalIVA270 != 0)
                                {
                                    ResultadosTextBox.Text += "Total IVA 27%: " + TotalIVA270 + System.Environment.NewLine;
                                }
                                if (TotalIVA210 != 0)
                                {
                                    ResultadosTextBox.Text += "Total IVA 21%: " + TotalIVA210 + System.Environment.NewLine;
                                }
                                if (TotalIVA105 != 0)
                                {
                                    ResultadosTextBox.Text += "Total IVA 10,5%: " + TotalIVA105 + System.Environment.NewLine;
                                }
                                if (TotalIVA050 != 0)
                                {
                                    ResultadosTextBox.Text += "Total IVA 5%: " + TotalIVA050 + System.Environment.NewLine;
                                }
                                if (TotalIVA025 != 0)
                                {
                                    ResultadosTextBox.Text += "Total IVA 2,5%: " + TotalIVA025 + System.Environment.NewLine;
                                }
                            }
                            catch (Exception ex)
                            {
                                script = "Problemas para generar la interfaz de compras.\\n" + ex.Message + "\\n" + ex.StackTrace;
                                MessageBox.Show(script, "Atención", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                                return;
                            }
                        }
                        
                        TotalGral = 0; TotalNetoNoGravado = 0;
                        TotalImporteExento = 0; TotalIB = 0; TotalIM = 0;
                        TotalII = 0; TotalOtros = 0;
                        CantComprobantes = 0;
                        double ImportePercepOPagoCtaIVA = 0;

                        double TotalNG270 = 0; double TotalNG210 = 0; double TotalNG105 = 0;
                        double TotalNG050 = 0; double TotalNG025 = 0; 

                        foreach (eFact_Entidades.Lote loteAProcesar in loteComprobantesD)
                        {
                            HayCompras = true;
                            lote = new FeaEntidades.InterFacturas.lote_comprobantes();
                            x = new System.Xml.Serialization.XmlSerializer(lote.GetType());

                            try
                            {
                                loteAProcesar.LoteXml = loteAProcesar.LoteXml.Replace("iso-8859-1", "utf-16");
                                bytes = new byte[loteAProcesar.LoteXml.Length * sizeof(char)];
                                System.Buffer.BlockCopy(loteAProcesar.LoteXml.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);

                                //Procesar todos los comprobantes de despacho del lote.
                                for (int cl = 0; cl < lote.comprobanteDespacho.Length; cl++)
                                {
                                    #region "Armar Interfaz Compras Importaciones"
                                    if (Convert.ToInt32(lote.comprobanteDespacho[cl].DespachoCabecera.Fecha) >= Convert.ToInt32(FechaDsdDTP.Value.ToString("yyyyMMdd")) && Convert.ToInt32(lote.comprobanteDespacho[cl].DespachoCabecera.Fecha) <= Convert.ToInt32(FechaHstDTP.Value.ToString("yyyyMMdd")))
                                    {
                                        CantComprobantes += 1;
                                        //Guardar info en archivo COMPRAS IMPORTACIONES CABECERA
                                        System.Text.StringBuilder sbDataCOMPRASCab = new System.Text.StringBuilder();
                                        //string Campo2 = String.Format("{0,11}", sesion.Cuit.Nro);
                                        string Campo1 = lote.comprobanteDespacho[cl].DespachoCabecera.Fecha;
                                        string Campo2 = lote.comprobanteDespacho[cl].DespachoCabecera.TipoComprobante.ToString("000");
                                        string Campo3 = "00000";
                                        string Campo4 = new string(Convert.ToChar("0"), 20);  //ceros
                                        string Campo5 = String.Format("{0,16}", lote.comprobanteDespacho[cl].DespachoCabecera.NumeroDespacho);  //Nro. de despacho de importación
                                        string Campo6 = "80";
                                        string Campo7 = lote.comprobanteDespacho[cl].DespachoCabecera.NroDocVendedor.ToString(new string(Convert.ToChar("0"), 20));
                                        string Campo8 = Truncate(String.Format("{0,-30}", lote.comprobanteDespacho[cl].DespachoCabecera.NombreVendedor), 30);

                                        string Campo9 = String.Format("{0,16}", lote.comprobanteDespacho[cl].DespachoResumen.ImporteTotal.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobanteDespacho[cl].DespachoResumen.ImporteTotal.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                        TotalGral += lote.comprobanteDespacho[cl].DespachoResumen.ImporteTotal;
                                        string Campo10 = "";
                                        if (lote.comprobanteDespacho[cl].DespachoResumen.ImporteNetoNoGravado < 0)
                                        {
                                            Campo10 = String.Format("{0,16}", lote.comprobanteDespacho[cl].DespachoResumen.ImporteNetoNoGravado.ToString(new string(Convert.ToChar("0"), 12) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobanteDespacho[cl].DespachoResumen.ImporteNetoNoGravado.ToString(new string(Convert.ToChar("0"), 12) + ".00")).Substring(14, 2);
                                        }
                                        else
                                        {
                                            Campo10 = String.Format("{0,16}", lote.comprobanteDespacho[cl].DespachoResumen.ImporteNetoNoGravado.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobanteDespacho[cl].DespachoResumen.ImporteNetoNoGravado.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                        }
                                        TotalNetoGravado += lote.comprobanteDespacho[cl].DespachoResumen.ImporteNetoNoGravado;
                                        string Campo11 = String.Format("{0,16}", lote.comprobanteDespacho[cl].DespachoResumen.ImporteExento.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobanteDespacho[cl].DespachoResumen.ImporteExento.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                        TotalImporteExento += lote.comprobanteDespacho[cl].DespachoResumen.ImporteExento;

                                        //Importe de percepciones o pagos a cuenta de impuestos nacionales (IVA)
                                        string Campo12 = String.Format("{0,16}", lote.comprobanteDespacho[cl].DespachoResumen.ImportePercepOPagoCtaIVA.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobanteDespacho[cl].DespachoResumen.ImportePercepOPagoCtaIVA.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                        ImportePercepOPagoCtaIVA += lote.comprobanteDespacho[cl].DespachoResumen.ImportePercepOPagoCtaIVA;
                                        //Importe de percepciones o pagos a cuenta de impuestos nacionales (Otros impuestos)
                                        string Campo13 = String.Format("{0,16}", lote.comprobanteDespacho[cl].DespachoResumen.ImportePercepOPagoCtaOtrosImpNac.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobanteDespacho[cl].DespachoResumen.ImportePercepOPagoCtaOtrosImpNac.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                        TotalOtros += lote.comprobanteDespacho[cl].DespachoResumen.ImportePercepOPagoCtaOtrosImpNac;
                                        string Campo14 = String.Format("{0,16}", lote.comprobanteDespacho[cl].DespachoResumen.ImportePercepIB.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobanteDespacho[cl].DespachoResumen.ImportePercepIB.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                        TotalIB += lote.comprobanteDespacho[cl].DespachoResumen.ImportePercepIB;
                                        string Campo15 = String.Format("{0,16}", lote.comprobanteDespacho[cl].DespachoResumen.ImportePercepImpMunicipales.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobanteDespacho[cl].DespachoResumen.ImportePercepImpMunicipales.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                        TotalIM += lote.comprobanteDespacho[cl].DespachoResumen.ImportePercepImpMunicipales;
                                        string Campo16 = String.Format("{0,16}", lote.comprobanteDespacho[cl].DespachoResumen.ImportePercepImpInternos.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobanteDespacho[cl].DespachoResumen.ImportePercepImpInternos.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                        TotalII += lote.comprobanteDespacho[cl].DespachoResumen.ImportePercepImpInternos;
                                        string Campo17 = String.Format("{0,-3}", lote.comprobanteDespacho[cl].DespachoResumen.Moneda);
                                        string Campo18 = String.Format("{0,11}", lote.comprobanteDespacho[cl].DespachoResumen.TipoCambio.ToString(new string(Convert.ToChar("0"), 4) + ".000000")).Substring(0, 4) + String.Format("{0,11}", lote.comprobanteDespacho[cl].DespachoResumen.TipoCambio.ToString(new string(Convert.ToChar("0"), 4) + ".000000")).Substring(5, 6);
                                        int CantAlicuotas = 0;
                                        if (lote.comprobanteDespacho[cl].DespachoImpuesto != null)
                                        {
                                            for (int z = 0; z < lote.comprobanteDespacho[cl].DespachoImpuesto.Length; z++)
                                            {
                                                if (lote.comprobanteDespacho[cl].DespachoImpuesto[z] != null)
                                                {
                                                    CantAlicuotas += 1;
                                                }
                                                else
                                                {
                                                    break;
                                                }
                                            }
                                        }
                                        string Campo19 = String.Format("{0,1}", CantAlicuotas);
                                        string Campo20 = String.Format("{0,1}", lote.comprobanteDespacho[cl].DespachoResumen.CodigoOperacion);
                                        //Crédito Fiscal Computable
                                        string Campo21 = String.Format("{0,16}", lote.comprobanteDespacho[cl].DespachoResumen.CreditoFiscalComputable.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobanteDespacho[cl].DespachoResumen.ImportePercepImpInternos.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                        string Campo22 = new string(Convert.ToChar("0"), 15);           //Otros Tributos
                                        string Campo23 = new string(Convert.ToChar("0"), 11);           //CUIT emisor / corredor
                                        string Campo24 = Truncate(String.Format("{0,-30}", ""), 30);    //Denominación del emisor / corredor
                                        string Campo25 = new string(Convert.ToChar("0"), 15);           //IVA comisión

                                        //string Campo25 = String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_neto_gravado.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_neto_gravado.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                        //string Campo26 = String.Format("{0,16}", lote.comprobante[cl].resumen.impuesto_liq.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.impuesto_liq.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);

                                        sbDataCOMPRASCab.AppendLine(Campo1 + Campo2 + Campo3 + Campo4 + Campo5 + Campo6 + Campo7 + Campo8 + Campo9 + Campo10 + Campo11 + Campo12 + Campo13 + Campo14 + Campo15 + Campo16 + Campo17 + Campo18 + Campo19 + Campo20 + Campo21 + Campo22 + Campo23 + Campo24 + Campo25);
                                        using (StreamWriter outfile = new StreamWriter(Path.GetTempPath() + sbCOMPRASCab.ToString()))
                                        {
                                            outfile.Write(sbDataCOMPRASCab.ToString());
                                        }

                                        //Guardar info en archivo COMPRAS IMPORTACIONES ALICUOTAS
                                        System.Text.StringBuilder sbDataCOMPRASImpAlic = new System.Text.StringBuilder();
                                        if (CantAlicuotas != 0)
                                        {
                                            HayComprasImpAlic = true;
                                            for (int z = 0; z < lote.comprobanteDespacho[cl].DespachoImpuesto.Length; z++)
                                            {
                                                if (lote.comprobanteDespacho[cl].DespachoImpuesto[z] != null)
                                                {
                                                    Campo1 = String.Format("{0,16}", lote.comprobanteDespacho[cl].DespachoCabecera.NumeroDespacho);
                                                    Campo2 = String.Format("{0,16}", lote.comprobanteDespacho[cl].DespachoImpuesto[z].ImporteNetoGravado.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobanteDespacho[cl].DespachoImpuesto[z].ImporteNetoGravado.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                                    if (lote.comprobanteDespacho[cl].DespachoImpuesto[z].AlicIVA == 0)
                                                    {
                                                        Campo3 = "0003";
                                                    }
                                                    if (lote.comprobanteDespacho[cl].DespachoImpuesto[z].AlicIVA == 10.5)
                                                    {
                                                        Campo3 = "0004";
                                                        TotalNG105 += lote.comprobanteDespacho[cl].DespachoImpuesto[z].ImporteNetoGravado;
                                                    }
                                                    else if (lote.comprobanteDespacho[cl].DespachoImpuesto[z].AlicIVA == 21)
                                                    {
                                                        Campo3 = "0005";
                                                        TotalNG210 += lote.comprobanteDespacho[cl].DespachoImpuesto[z].ImporteNetoGravado;
                                                    }
                                                    else if (lote.comprobanteDespacho[cl].DespachoImpuesto[z].AlicIVA == 27)
                                                    {
                                                        Campo3 = "0006";
                                                        TotalNG270 += lote.comprobanteDespacho[cl].DespachoImpuesto[z].ImporteNetoGravado;
                                                    }
                                                    else if (lote.comprobanteDespacho[cl].DespachoImpuesto[z].AlicIVA == 5)
                                                    {
                                                        Campo3 = "0008";
                                                        TotalNG050 += lote.comprobanteDespacho[cl].DespachoImpuesto[z].ImporteNetoGravado;
                                                    }
                                                    else if (lote.comprobanteDespacho[cl].DespachoImpuesto[z].AlicIVA == 2.5)
                                                    {
                                                        Campo3 = "0009";
                                                        TotalNG025 += lote.comprobanteDespacho[cl].DespachoImpuesto[z].ImporteNetoGravado;
                                                    }
                                                    Campo4 = String.Format("{0,16}", lote.comprobanteDespacho[cl].DespachoImpuesto[z].ImporteImpuestoLiq.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobanteDespacho[cl].DespachoImpuesto[z].ImporteImpuestoLiq.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                                    sbDataCOMPRASImpAlic.AppendLine(Campo1 + Campo2 + Campo3 + Campo4);
                                                }
                                                else
                                                {
                                                    break;
                                                }
                                            }
                                            using (StreamWriter outfile = new StreamWriter(Path.GetTempPath() + sbCOMPRASImpAlic.ToString()))
                                            {
                                                outfile.Write(sbDataCOMPRASImpAlic.ToString());
                                            }
                                        }
                                    }
                                    #endregion
                                }
                            }
                            catch (Exception ex)
                            {
                                script = "Problemas para generar la interfaz de compras despachos.\\n" + ex.Message + "\\n" + ex.StackTrace;
                                MessageBox.Show(script, "Atención", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                                return;
                            }
                            if (ResultadosTextBox.Text != "")
                            {
                                ResultadosTextBox.Text += System.Environment.NewLine + System.Environment.NewLine;
                            }
                            ResultadosTextBox.Text += "DESPACHOS (" + CantComprobantes + ")  Total Gral: " + TotalGral + System.Environment.NewLine;
                            if (TotalNetoNoGravado != 0)
                            {
                                ResultadosTextBox.Text += "Total Neto No Gravado: " + TotalNetoNoGravado + System.Environment.NewLine;
                            }
                            if (TotalImporteExento != 0)
                            {
                                ResultadosTextBox.Text += "Total Exento: " + TotalImporteExento + System.Environment.NewLine;
                            }
                            if (TotalIB != 0)
                            {
                                ResultadosTextBox.Text += "Total IB: " + TotalIB + System.Environment.NewLine;
                            }
                            if (TotalIM != 0)
                            {
                                ResultadosTextBox.Text += "Total IM: " + TotalIM + System.Environment.NewLine;
                            }
                            if (TotalII != 0)
                            {
                                ResultadosTextBox.Text += "Total II: " + TotalII + System.Environment.NewLine;
                            }
                            if (ImportePercepOPagoCtaIVA != 0)
                            {
                                ResultadosTextBox.Text += "Total Pago Cta IVA: " + ImportePercepOPagoCtaIVA + System.Environment.NewLine;
                            }
                            if (TotalOtros != 0)
                            {
                                ResultadosTextBox.Text += "Total Otros Imp.Nac.: " + TotalOtros + System.Environment.NewLine;
                            }
                            if (TotalIVA270 != 0)
                            {
                                ResultadosTextBox.Text += "Total NG 27%: " + TotalIVA270 + System.Environment.NewLine;
                            }
                            if (TotalIVA210 != 0)
                            {
                                ResultadosTextBox.Text += "Total NG 21%: " + TotalIVA210 + System.Environment.NewLine;
                            }
                            if (TotalIVA105 != 0)
                            {
                                ResultadosTextBox.Text += "Total IVA 10,5%: " + TotalIVA105 + System.Environment.NewLine;
                            }
                            if (TotalIVA050 != 0)
                            {
                                ResultadosTextBox.Text += "Total IVA 5%: " + TotalIVA050 + System.Environment.NewLine;
                            }
                            if (TotalIVA025 != 0)
                            {
                                ResultadosTextBox.Text += "Total IVA 2,5%: " + TotalIVA025 + System.Environment.NewLine;
                            }
                        }
                    }
                    else
                    {
                        MessageBox.Show("No hay información de Compras / Despachos para procesar en el período seleccionado.", "Atención", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                    }
                }
                #endregion

                //Descargar ZIP ( Ventas y Alicuotas )
                string filename = sbZIP.ToString();
                //String dlDir = @"~/Temp/";
                String pathZIP = Aplicacion.Aplic.ArchPathItf + filename;
                System.IO.FileInfo toZIP = new System.IO.FileInfo(pathZIP);
                System.IO.FileInfo toVENTASCab = new System.IO.FileInfo(Path.GetTempPath() + sbVENTASCab.ToString());
                System.IO.FileInfo toVENTASAlic = new System.IO.FileInfo(Path.GetTempPath() + sbVENTASAlic.ToString());
                System.IO.FileInfo toCOMPRASCab = new System.IO.FileInfo(Path.GetTempPath() + sbCOMPRASCab.ToString());
                System.IO.FileInfo toCOMPRASAlic = new System.IO.FileInfo(Path.GetTempPath() + sbCOMPRASAlic.ToString());

                using (ZipFile zip = new ZipFile())
                {
                    if (HayVentas)
                    {
                        zip.AddFile(Path.GetTempPath() + sbVENTASCab.ToString(), "");
                    }
                    if (HayVentasAlic)
                    {
                        zip.AddFile(Path.GetTempPath() + sbVENTASAlic.ToString(), "");
                    }

                    if (HayCompras)
                    {
                        zip.AddFile(Path.GetTempPath() + sbCOMPRASCab.ToString(), "");
                    }
                    if (HayComprasAlic)
                    {
                        zip.AddFile(Path.GetTempPath() + sbCOMPRASAlic.ToString(), "");
                    }
                    if (HayComprasImpAlic)
                    {
                        zip.AddFile(Path.GetTempPath() + sbCOMPRASImpAlic.ToString(), "");
                    }
                    if (HayVentas || HayCompras)
                    {
                        zip.Save(pathZIP);
                    }
                    else
                    {
                        //Borrar ZIP vacio.
                        toZIP.Delete();
                    }
                    //Borrar archivos ya incluidos en el ZIP
                    toVENTASCab.Delete();
                    toVENTASAlic.Delete();
                    toCOMPRASCab.Delete();
                    toCOMPRASAlic.Delete();
                }
                toZIP = new System.IO.FileInfo(pathZIP);
                if (toZIP.Exists)
                {
                    MessageBox.Show("Archivo de Interfaz ZIP generado satisfactoriamente.", "Información", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
                }
                else
                {
                    MessageBox.Show("Archivo de Interfaz ZIP inexistente.", "Atención", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                }
            }
            else
            {
                MessageBox.Show("No hay información para procesar.", "Información", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
            }
        }
Exemplo n.º 4
0
        protected void FileUploadButton_Click(object sender, EventArgs e)
        {
            if (((Button)sender).ID == "FileUploadButton" && ((Entidades.Sesion)Session["Sesion"]).Usuario.Id == null)
            {
                MensajeLabel.Text = "Su sesión ha caducado por inactividad. Por favor vuelva a loguearse.";
            }
            else
            {
                FeaEntidades.InterFacturas.lote_comprobantes lc = new FeaEntidades.InterFacturas.lote_comprobantes();
                if (XMLFileUpload.HasFile)
                {
                    try
                    {
                        System.IO.MemoryStream ms = new System.IO.MemoryStream(XMLFileUpload.FileBytes);
                        ms.Seek(0, System.IO.SeekOrigin.Begin);

                        try
                        {
                            System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(lc.GetType());
                            lc = (FeaEntidades.InterFacturas.lote_comprobantes)x.Deserialize(ms);
                            if (((Entidades.Sesion)Session["Sesion"]).Cuit.Nro != lc.comprobante[0].cabecera.informacion_vendedor.cuit.ToString())
                            {
                                MensajeLabel.Text = "El CUIT del vendedor: " + lc.comprobante[0].cabecera.informacion_vendedor.cuit.ToString() + " que figura en el archivo XML, no coincide con el CUIT que usted está operando.";
                                return;
                            }
                            if (((Entidades.Sesion)Session["Sesion"]).Cuit.Nro != lc.cabecera_lote.cuit_vendedor.ToString())
                            {
                                MensajeLabel.Text = "El CUIT del lote: " + lc.cabecera_lote.cuit_vendedor.ToString() + " que figura en el archivo XML, no coincide con el CUIT que usted está operando.";
                                return;
                            }
                            System.Collections.Generic.List <Entidades.PuntoVta> listaPV = ((Entidades.Sesion) Session["Sesion"]).UN.PuntosVta.FindAll(delegate(Entidades.PuntoVta pv)
                            {
                                return(pv.Nro == lc.cabecera_lote.punto_de_venta);
                            });
                            if (listaPV.Count == 0)
                            {
                                MensajeLabel.Text = "El Punto de Venta: " + lc.cabecera_lote.punto_de_venta.ToString() + " que figura en el archivo XML, no coincide con los definidos para la UN que usted está operando.";
                                return;
                            }
                            lc.comprobante[0].IdNaturalezaComprobante = "Venta";

                            Entidades.Comprobante comprobante = new Entidades.Comprobante();
                            string XML = "";
                            RN.Comprobante.SerializarLc(out XML, lc);
                            comprobante.Request           = XML;
                            Session["ComprobanteATratar"] = new Entidades.ComprobanteATratar(Entidades.Enum.TratamientoComprobante.Consulta, comprobante);
                            string script = "window.open('/ComprobanteConsulta.aspx', '');";
                            ScriptManager.RegisterStartupScript(this, typeof(Page), "popup", script, true);
                        }
                        catch (InvalidOperationException)
                        {
                            try
                            {
                                LeerFormatoDetalleIBK(e, lc, ms);
                            }
                            catch (InvalidOperationException)
                            {
                                LeerFormatoLoteIBK(e, lc, ms);
                            }
                        }
                    }
                    catch
                    {
                        MensajeLabel.Text = "El archivo no cumple con el esquema de Interfacturas";
                    }
                }
                else
                {
                    MensajeLabel.Text = "Debe seleccionar un archivo";
                }
            }
        }
        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");
                }
            }
        }
Exemplo n.º 6
0
 public static void DeserializarLc(out FeaEntidades.InterFacturas.lote_comprobantes Lc, string Cadena)
 {
     //Deserializar ( pasar de string XML a FeaEntidades.InterFacturas.lote_comprobantes )
     System.Text.Encoding codificador;
     codificador = System.Text.Encoding.GetEncoding("iso-8859-1");
     byte[] a = new byte[Cadena.Length];
     a = codificador.GetBytes(Cadena);
     MemoryStream ms = new MemoryStream(a);
     ms.Seek(0, System.IO.SeekOrigin.Begin);
     FeaEntidades.InterFacturas.lote_comprobantes lc = new FeaEntidades.InterFacturas.lote_comprobantes();
     System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(lc.GetType());
     lc = (FeaEntidades.InterFacturas.lote_comprobantes)x.Deserialize(ms);
     ms.Close();
     ms = null;
     Lc = lc;
 }
Exemplo n.º 7
0
		private void LeerXmlLote(out FeaEntidades.InterFacturas.lote_comprobantes lc, System.IO.MemoryStream ms)
		{
            lc = new FeaEntidades.InterFacturas.lote_comprobantes();
            System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(lc.GetType());
            lc = (FeaEntidades.InterFacturas.lote_comprobantes)x.Deserialize(ms);
        }
Exemplo n.º 8
0
        protected void DescargarPDFButton_Click(object sender, EventArgs e)
        {
            if (Funciones.SessionTimeOut(Session))
            {
                Response.Redirect("~/SessionTimeout.aspx");
            }
            else
            {
                if (((Entidades.Sesion)Session["Sesion"]).Usuario.Id == null)
                {
                    ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Su sesión ha caducado por inactividad. Por favor vuelva a loguearse."), false);
                }
                else
                {
                    try
                    {
                        FeaEntidades.InterFacturas.lote_comprobantes lote;
                        string certificado;
                        Entidades.Comprobante comprobante = (Entidades.Comprobante)Session["comprobantePDF"];
                        Entidades.Sesion sesion = (Entidades.Sesion)Session["Sesion"];
                        string DetalleIBKUtilizarServidorExterno = System.Configuration.ConfigurationManager.AppSettings["DetalleIBKUtilizarServidorExterno"];
                        org.dyndns.cedweb.detalle.DetalleIBK clcdyndns = new org.dyndns.cedweb.detalle.DetalleIBK();
                        org.dyndns.cedweb.detalle.cecd cecd = new org.dyndns.cedweb.detalle.cecd();
                        System.Xml.Serialization.XmlSerializer x;
                        byte[] bytes;
                        System.IO.MemoryStream ms;
                        string resp;
                        string script;

                        if (comprobante.IdDestinoComprobante == "ITF")
                        {
                            #region PDF (InterFacturas)
                            //OBTENCIÓN DE PDF DE INTERFACTURAS
                            if (comprobante.Estado != "Vigente")
                            {
                                MensajeLabel.Text = "El comprobante no está vigente.";
                                return;
                            }
                            MensajeLabel.Text = String.Empty;

                            //On-Line
                            cecd.cuit_canal = Convert.ToInt64("30690783521");
                            cecd.cuit_vendedor = Convert.ToInt64(comprobante.Cuit);
                            cecd.punto_de_venta = Convert.ToInt32(comprobante.NroPuntoVta);
                            cecd.tipo_de_comprobante = Convert.ToInt32(comprobante.TipoComprobante.Id);
                            cecd.numero_comprobante = comprobante.Nro;
                            cecd.id_Lote = 0;
                            cecd.id_LoteSpecified = false;
                            cecd.estado = "PR";

                            if (sesion.Cuit.NroSerieCertifITF.Equals(string.Empty))
                            {
                                MensajeLabel.Text = "Aún no disponemos de su certificado digital";
                                return;
                            }
                            Funciones.GrabarLogTexto("~/Detallar.txt", "Consulta de Lote CUIT: " + sesion.Cuit.Nro + "  Punto de Venta: " + cecd.punto_de_venta.ToString() + "  Tipo de Comprobante: " + cecd.tipo_de_comprobante.ToString() + "  Nro de Comprobante: " + cecd.numero_comprobante.ToString());
                            Funciones.GrabarLogTexto("~/Detallar.txt", "NroSerieCertifITF: " + sesion.Cuit.NroSerieCertifITF);
                            if (sesion.Cuit.NroSerieCertifITF.Equals(string.Empty))
                            {
                                MensajeLabel.Text = "Aún no disponemos de su certificado digital";
                                return;
                            }

                            certificado = CaptchaDotNet2.Security.Cryptography.Encryptor.Encrypt(sesion.Cuit.NroSerieCertifITF, "srgerg$%^bg", Convert.FromBase64String("srfjuoxp")).ToString();
                            Funciones.GrabarLogTexto("~/Detallar.txt", "Parametro DetalleIBKUtilizarServidorExterno: " + DetalleIBKUtilizarServidorExterno);
                            if (DetalleIBKUtilizarServidorExterno == "SI")
                            {
                                clcdyndns.Url = System.Configuration.ConfigurationManager.AppSettings["DetalleIBKurl"];
                                Funciones.GrabarLogTexto("~/Detallar.txt", "Parametro DetalleIBKurl: " + System.Configuration.ConfigurationManager.AppSettings["DetalleIBKurl"]);
                            }
                            resp = clcdyndns.DetallarIBK(cecd, certificado);
                            resp = resp.Replace(" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"", "");
                            resp = resp.Replace(" xmlns:xsi=\"http://lote.schemas.cfe.ib.com.ar/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"", " xmlns=\"http://lote.schemas.cfe.ib.com.ar/\"");
                            //Fin On-Line

                            try
                            {
                                string comprobanteXML = resp;

                                Funciones.GrabarLogTexto("~/Detallar.txt", "Inicia ExecuteCommand");
                                org.dyndns.cedweb.generoPDF.GeneroPDF pdfdyndns = new org.dyndns.cedweb.generoPDF.GeneroPDF();

                                string GenerarPDFUtilizarServidorExterno = System.Configuration.ConfigurationManager.AppSettings["GenerarPDFUtilizarServidorExterno"];
                                Funciones.GrabarLogTexto("~/Detallar.txt", "Parametro GenerarPDFUtilizarServidorExterno: " + GenerarPDFUtilizarServidorExterno);
                                if (GenerarPDFUtilizarServidorExterno == "SI")
                                {
                                    pdfdyndns.Url = System.Configuration.ConfigurationManager.AppSettings["GenerarPDFurl"];
                                    Funciones.GrabarLogTexto("~/Detallar.txt", "Parametro GenerarPDFurl: " + System.Configuration.ConfigurationManager.AppSettings["DetalleIBKurl"]);
                                }
                                string RespPDF = pdfdyndns.GenerarPDF(comprobante.Cuit, comprobante.NroPuntoVta, comprobante.TipoComprobante.Id, comprobante.Nro, comprobante.IdDestinoComprobante, comprobanteXML);
                                Funciones.GrabarLogTexto("~/Detallar.txt", "Finaliza ExecuteCommand");

                                //Crear nombre de archivo default sin extensión
                                System.Text.StringBuilder sb = new System.Text.StringBuilder();
                                sb.Append(comprobante.Cuit);
                                sb.Append("-");
                                sb.Append(comprobante.NroPuntoVta.ToString("0000"));
                                sb.Append("-");
                                sb.Append(comprobante.TipoComprobante.Id.ToString("00"));
                                sb.Append("-");
                                sb.Append(comprobante.Nro.ToString("00000000"));
                                sb.Append(".pdf");

                                string url = RespPDF;
                                string filename = sb.ToString();
                                String dlDir = @"~/TempRender/";
                                new System.Net.WebClient().DownloadFile(url, Server.MapPath(dlDir + filename));

                                script = "window.open('/DescargaTemporarios.aspx?archivo=" + sb.ToString() + "&path=" + @"~/TempRender/" + "', '');";
                                ScriptManager.RegisterStartupScript(this, typeof(Page), "popup", script, true);
                            }
                            catch (Exception ex)
                            {
                                script = "Problemas para generar el PDF.\\n" + ex.Message;
                                script += ex.StackTrace;
                                if (ex.InnerException != null)
                                {
                                    script = ex.InnerException.Message;
                                }
                                RN.Sesion.GrabarLogTexto(Server.MapPath("~/Detallar.txt"), script);
                                MensajeLabel.Text = script;
                            }
                            #endregion
                        }
                        else
                        {
                            #region PDF (AFIP)
                            //GENERACIÓN DE PDF A PARTIR DE DATOS LOCALES
                            lote = new FeaEntidades.InterFacturas.lote_comprobantes();
                            x = new System.Xml.Serialization.XmlSerializer(lote.GetType());
                            if (comprobante.Estado != "Vigente")
                            {
                                MensajeLabel.Text = "El comprobante no está vigente.";
                                return;
                            }
                            try
                            {
                                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);

                                RN.Comprobante.AjustarLoteParaImprimirPDF(lote);
                               
                                Session["lote"] = lote;
                                script = "window.open('/Facturacion/Electronica/Reportes/FacturaWebForm.aspx', '');";
                                ScriptManager.RegisterStartupScript(this, typeof(Page), "popup", script, true);
    
                            }
                            catch (Exception ex)
                            {
                                script = "Problemas para generar el PDF.\\n" + ex.Message;
                                RN.Sesion.GrabarLogTexto(Server.MapPath("~/Consultar.txt"), script);
                                MensajeLabel.Text = script;
                            }
                            #endregion
                        }
                      }
                    catch (Exception ex)
                    {
                        ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Problemas al descargar el archivo PDF.  " + ex.Message), false);
                    }
                }
            }
        }
Exemplo n.º 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");
                }
            }
        }
Exemplo n.º 10
0
        public static void Procesar(out eFact_Entidades.Lote Lote, eFact_Entidades.Archivo Archivo, eFact_Entidades.Aplicacion Aplicacion, CedEntidades.Sesion Sesion)
        {
            //Antes de procesar el archivo grabamos los datos básicos del mismo.
            if (Archivo.Tipo.ToUpper() != ".TXT" && Archivo.Tipo.ToUpper() != ".XML" && Archivo.Tipo.ToUpper() != ".REC")
            {
                throw new Microsoft.ApplicationBlocks.ExceptionManagement.Archivo.TipoDeArchivoIncorrecto("Solo se aceptan archivo TXT o XML.");
            }
            FeaEntidades.InterFacturas.lote_comprobantes Lc = new FeaEntidades.InterFacturas.lote_comprobantes();
            System.IO.MemoryStream ms;
            System.Xml.Serialization.XmlSerializer x;
            switch (Aplicacion.CodigoAplic.ToString())
            {
                case "eFactInterface":
                    {
                        if (Archivo.Tipo.ToUpper() == ".XML")
                        {
                            //StreamReader objReader = new StreamReader(Archivo.Path + "\\" + Archivo.Nombre, Encoding.GetEncoding("iso-8859-1"));
                            StreamReader objReader = new StreamReader(Archivo.Path + "\\" + Archivo.Nombre, Encoding.GetEncoding("utf-8"));
                            string cadena;
                            cadena = objReader.ReadToEnd();
                            objReader.Close();
                            byte[] a = new byte[cadena.Length];// esta es la declaracion de tu arreglo
                            System.Text.Encoding codificador;
                            //codificador = System.Text.Encoding.GetEncoding("iso-8859-1");
                            codificador = System.Text.Encoding.GetEncoding("utf-8");
                            cadena = cadena.Replace("&", "&amp;");
                            a = codificador.GetBytes(cadena);
                            ms = new System.IO.MemoryStream(a);
                            ms.Seek(0, System.IO.SeekOrigin.Begin);
                            Lc = new FeaEntidades.InterFacturas.lote_comprobantes();
                            x = new System.Xml.Serialization.XmlSerializer(Lc.GetType());
                            Lc = (FeaEntidades.InterFacturas.lote_comprobantes)x.Deserialize(ms);
                        }
                        else if (Archivo.Tipo.ToUpper() == ".TXT")
                        {
                            eFact_RN.Engine Engine = new eFact_RN.Engine();
                            Lc = new FeaEntidades.InterFacturas.lote_comprobantes();
                            Engine.LeerMultiRegistro(out Lc, Archivo.Path + "\\" + Archivo.Nombre, Sesion);
                        }
                        else if (Archivo.Tipo.ToUpper() == ".REC")
                        {
                            eFact_RN.Engine Engine = new eFact_RN.Engine();
                            Lc = new FeaEntidades.InterFacturas.lote_comprobantes();
                            Engine.LeerRegistroRECE(out Lc, Archivo.Path + "\\" + Archivo.Nombre, Sesion);
                        }
                        break;
                    }
                default:
                    {
                        break;
                    }
            }
            if (Lc.cabecera_lote.cuit_vendedor.ToString().Trim() != Aplicacion.OtrosFiltrosCuit.Trim() && Aplicacion.OtrosFiltrosCuit.Trim() != "")
            {
                throw new Microsoft.ApplicationBlocks.ExceptionManagement.Archivo.CUITNoHabilitadoParaElUsuario(Lc.cabecera_lote.cuit_vendedor.ToString());
            }
            eFact_Entidades.Lote lote = new eFact_Entidades.Lote();
            lote.CuitVendedor = Lc.cabecera_lote.cuit_vendedor.ToString();
            lote.PuntoVenta = Lc.cabecera_lote.punto_de_venta.ToString();
            lote.NumeroLote = Lc.cabecera_lote.id_lote.ToString();
            lote.CantidadRegistros = Convert.ToInt32(Lc.cabecera_lote.cantidad_reg.ToString());
            //Verificar bandeja de salida.-----------
            int numeroEnvioDisponible = 0;
            eFact_RN.Lote.ObtenerNumeroEnvioDisponible(out numeroEnvioDisponible, lote.CuitVendedor, lote.NumeroLote, lote.PuntoVenta, Sesion);
            lote.NumeroEnvio = numeroEnvioDisponible;
            //---------------------------------------
            lote.NombreArch = Archivo.Nombre;
            if (Lc.cabecera_lote.IdNaturalezaLoteFieldSpecified)
            {
                lote.IdNaturalezaLote = Lc.cabecera_lote.IdNaturalezaLoteField;
            }
            else
            {
                lote.IdNaturalezaLote = "";
            }
            int cantComprobantes = 0;
            for (int i = 0; i < Lc.comprobante.Length; i++)
            {
                if (Lc.comprobante[i] != null)
                {
                    cantComprobantes += 1;
                }
                else
                {
                    break;
                }
            }
            if (Lc.comprobanteDespacho != null)
            {
                for (int i = 0; i < Lc.comprobanteDespacho.Length; i++)
                {
                    if (Lc.comprobanteDespacho[i] != null)
                    {
                        cantComprobantes += 1;
                    }
                    else
                    {
                        break;
                    }
                }
            }
            if (Lc.cabecera_lote.cantidad_reg != cantComprobantes)
            {
                throw new Microsoft.ApplicationBlocks.ExceptionManagement.Archivo.ProcesarArchivo("Problemas con la cantidad de registros declarada.");
            }
            List<eFact_Entidades.ComprobanteC> cCListVigentes = new List<eFact_Entidades.ComprobanteC>();
            List<eFact_Entidades.ComprobanteD> cDListVigentes = new List<eFact_Entidades.ComprobanteD>();
            if (Lc.cabecera_lote.IdNaturalezaLoteField != null && Lc.cabecera_lote.IdNaturalezaLoteField == "Compra")
            {
                //----- Consultar comprobantes de compras 'Vigentes' -----.
                if (Lc.comprobante[0] != null)
                {
                    cCListVigentes = eFact_RN.Comprobante.ConsultarComprobantesCVigentes(Lc.cabecera_lote.cuit_vendedor.ToString(), Sesion);
                }    
                //----- Consultar despachos 'Vigentes' -----.
                if (Lc.comprobanteDespacho[0] != null)
                {
                    cDListVigentes = eFact_RN.Comprobante.ConsultarComprobantesDVigentes(Lc.cabecera_lote.cuit_vendedor.ToString(), Sesion);
                }
            }
            List<eFact_Entidades.Comprobante> cVListVigentes = new List<eFact_Entidades.Comprobante>();
            if (Lc.cabecera_lote.IdNaturalezaLoteField != null && Lc.cabecera_lote.IdNaturalezaLoteField == "Venta")
            {
                //----- Consultar comprobantes de ventas 'Vigentes' -----.
                cVListVigentes = eFact_RN.Comprobante.ConsultarComprobantesVigentes(Lc.cabecera_lote.cuit_vendedor.ToString(), Sesion);
            }
            for (int i = 0; i < Lc.comprobante.Length; i++)
            {
                if (Lc.comprobante[i] != null)
                {
                    if (lote.IdNaturalezaLote != "Compra")
                    {
                        //Ventas
                        eFact_Entidades.Comprobante c = new eFact_Entidades.Comprobante();
                        c.IdTipoComprobante = Convert.ToInt16(Lc.comprobante[i].cabecera.informacion_comprobante.tipo_de_comprobante.ToString());
                        c.NumeroComprobante = Lc.comprobante[i].cabecera.informacion_comprobante.numero_comprobante.ToString();
                        c.TipoDocComprador = Convert.ToInt16(Lc.comprobante[i].cabecera.informacion_comprador.codigo_doc_identificatorio.ToString());
                        c.NroDocComprador = Lc.comprobante[i].cabecera.informacion_comprador.nro_doc_identificatorio.ToString();
                        c.NombreComprador = Lc.comprobante[i].cabecera.informacion_comprador.denominacion;
                        c.Fecha = ConvertirStringToDateTime(Lc.comprobante[i].cabecera.informacion_comprobante.fecha_emision.ToString());
                        c.NumeroCAE = Convert.ToString(Lc.comprobante[i].cabecera.informacion_comprobante.cae);
                        if (Lc.comprobante[i].cabecera.informacion_comprobante.fecha_obtencion_cae != null && Lc.comprobante[i].cabecera.informacion_comprobante.fecha_obtencion_cae.ToString() != "")
                        {
                            c.FechaCAE = ConvertirStringToDateTime(Lc.comprobante[i].cabecera.informacion_comprobante.fecha_obtencion_cae.ToString());
                        }
                        if (Lc.comprobante[i].cabecera.informacion_comprobante.fecha_vencimiento_cae != null && Lc.comprobante[i].cabecera.informacion_comprobante.fecha_vencimiento_cae.ToString() != "")
                        {
                            c.FechaVtoCAE = ConvertirStringToDateTime(Lc.comprobante[i].cabecera.informacion_comprobante.fecha_vencimiento_cae.ToString());
                        }
                        c.IdMoneda = Convert.ToString(Lc.comprobante[i].resumen.codigo_moneda);
                        c.Importe = Convert.ToDecimal(Lc.comprobante[i].resumen.importe_total_factura);
                        if (Lc.comprobante[i].resumen.importes_moneda_origen != null)
                        {
                            c.ImporteMonedaOrigen = Convert.ToDecimal(Lc.comprobante[i].resumen.importes_moneda_origen.importe_total_factura);
                        }
                        c.TipoCambio = Convert.ToDecimal(Lc.comprobante[i].resumen.tipo_de_cambio);
                        if (Lc.comprobante[i].extensiones != null)
                        {
                            if (Lc.comprobante[i].extensiones.extensiones_camara_facturas != null)
                            {
                                if (Lc.comprobante[i].extensiones.extensiones_camara_facturas.clave_de_vinculacion != null)
                                {
                                    Lc.comprobante[i].extensiones.extensiones_camara_facturas.clave_de_vinculacion = Lc.comprobante[i].extensiones.extensiones_camara_facturas.clave_de_vinculacion.Trim();
                                    if (Lc.comprobante[i].extensiones.extensiones_camara_facturas.clave_de_vinculacion.Length != 0 && Lc.comprobante[i].extensiones.extensiones_camara_facturas.clave_de_vinculacion.Length != 32)
                                    {
                                        Lc.comprobante[i].extensiones.extensiones_camara_facturas.clave_de_vinculacion = Cedeira.SV.Fun.CreateMD5Hash(Lc.comprobante[i].extensiones.extensiones_camara_facturas.clave_de_vinculacion);
                                    }
                                }
                            }
                        }
                        lote.Comprobantes.Add(c);
                        if (lote.IdNaturalezaLote == "Venta")
                        {
                            List<eFact_Entidades.Comprobante> listAux = cVListVigentes.FindAll((delegate(eFact_Entidades.Comprobante e1) { return e1.NroDocComprador == c.NroDocComprador && e1.PuntoVenta.ToString() == c.PuntoVenta && e1.IdTipoComprobante == c.IdTipoComprobante && e1.NumeroComprobante == c.NumeroComprobante; }));
                            if (listAux.Count != 0)
                            {
                                throw new Microsoft.ApplicationBlocks.ExceptionManagement.Archivo.ProcesarArchivo("Comprobante existente. Cuit Comprador: " + c.NroDocComprador + " Punto Venta: " + c.PuntoVenta + " Tipo: " + c.IdTipoComprobante.ToString() + " Nro: " + c.NumeroComprobante);
                            }
                        }
                    }
                    else
                    {
                        //Compras
                        eFact_Entidades.ComprobanteC cC = new eFact_Entidades.ComprobanteC();
                        cC.PuntoVenta = Lc.comprobante[i].cabecera.informacion_comprobante.punto_de_venta.ToString();
                        cC.IdTipoComprobante = Convert.ToInt16(Lc.comprobante[i].cabecera.informacion_comprobante.tipo_de_comprobante.ToString());
                        cC.NumeroComprobante = Lc.comprobante[i].cabecera.informacion_comprobante.numero_comprobante.ToString();
                        cC.TipoDocVendedor = Convert.ToInt16("80");
                        cC.NroDocVendedor = Lc.comprobante[i].cabecera.informacion_vendedor.cuit.ToString();
                        cC.NombreVendedor = Lc.comprobante[i].cabecera.informacion_vendedor.razon_social;
                        cC.Fecha = ConvertirStringToDateTime(Lc.comprobante[i].cabecera.informacion_comprobante.fecha_emision.ToString());
                        cC.IdMoneda = Convert.ToString(Lc.comprobante[i].resumen.codigo_moneda);
                        cC.Importe = Convert.ToDecimal(Lc.comprobante[i].resumen.importe_total_factura);
                        if (Lc.comprobante[i].resumen.importes_moneda_origen != null)
                        {
                            cC.ImporteMonedaOrigen = Convert.ToDecimal(Lc.comprobante[i].resumen.importes_moneda_origen.importe_total_factura);
                        }
                        cC.TipoCambio = Convert.ToDecimal(Lc.comprobante[i].resumen.tipo_de_cambio);
                        lote.ComprobantesC.Add(cC);

                        List<eFact_Entidades.ComprobanteC> listAux = cCListVigentes.FindAll((delegate(eFact_Entidades.ComprobanteC e1) { return e1.NroDocVendedor == cC.NroDocVendedor && e1.PuntoVenta.ToString() == cC.PuntoVenta && e1.IdTipoComprobante == cC.IdTipoComprobante && e1.NumeroComprobante == cC.NumeroComprobante; }));
                        if (listAux.Count != 0)
                        {
                            throw new Microsoft.ApplicationBlocks.ExceptionManagement.Archivo.ProcesarArchivo("Comprobante existente. Cuit Vendedor: " + cC.NroDocVendedor + " Punto Venta: " + cC.PuntoVenta + " Tipo: " + cC.IdTipoComprobante.ToString() + " Nro: " + cC.NumeroComprobante);
                        }
                    }
                }
                else
                {
                    break;
                }
            }
            if (Lc.comprobanteDespacho != null)
            {
                for (int i = 0; i < Lc.comprobanteDespacho.Length; i++)
                {
                    if (Lc.comprobanteDespacho[i] != null)
                    {
                        eFact_Entidades.ComprobanteD cD = new eFact_Entidades.ComprobanteD();
                        cD.IdTipoComprobante = Convert.ToInt16(Lc.comprobanteDespacho[i].DespachoCabecera.TipoComprobante.ToString());
                        cD.NumeroDespacho = Lc.comprobanteDespacho[i].DespachoCabecera.NumeroDespacho.ToString();
                        cD.TipoDocVendedor = Convert.ToInt16(Lc.comprobanteDespacho[i].DespachoCabecera.TipoDocVendedor);
                        cD.NroDocVendedor = Lc.comprobanteDespacho[i].DespachoCabecera.NroDocVendedor.ToString();
                        cD.NombreVendedor = Lc.comprobanteDespacho[i].DespachoCabecera.NombreVendedor;
                        cD.Fecha = ConvertirStringToDateTime(Lc.comprobanteDespacho[i].DespachoCabecera.Fecha.ToString());
                        cD.IdMoneda = Convert.ToString(Lc.comprobanteDespacho[i].DespachoResumen.Moneda);
                        cD.Importe = Convert.ToDecimal(Lc.comprobanteDespacho[i].DespachoResumen.ImporteTotal);
                        //cD.ImporteMonedaOrigen = Convert.ToDecimal(Lc.comprobante[i].resumen.importes_moneda_origen.importe_total_factura);
                        cD.TipoCambio = Convert.ToDecimal(Lc.comprobanteDespacho[i].DespachoResumen.TipoCambio);
                        lote.ComprobantesD.Add(cD);

                        List<eFact_Entidades.ComprobanteD> listAux = cDListVigentes.FindAll((delegate(eFact_Entidades.ComprobanteD e1) { return e1.NroDocVendedor == cD.NroDocVendedor && e1.IdTipoComprobante == cD.IdTipoComprobante && e1.NumeroDespacho == cD.NumeroDespacho; }));
                        if (listAux.Count != 0)
                        {
                            throw new Microsoft.ApplicationBlocks.ExceptionManagement.Archivo.ProcesarArchivo("Comprobante de Despacho existente. Cuit Vendedor: " + cD.NroDocVendedor + " Tipo: " + cD.IdTipoComprobante.ToString() + " Nro: " + cD.NumeroDespacho);
                        }
                    }
                    else
                    {
                        break;
                    }
                }
            }
            string loteXml = "";
            eFact_RN.Lote.SerializarLc(out loteXml, Lc);
            lote.LoteXml = loteXml;
            Lote = lote;
        }
Exemplo n.º 11
0
		private void ExcelButton_Click(object sender, EventArgs e)
		{
			OpenFileDialog xlsOpenFileDialog = new OpenFileDialog();

			xlsOpenFileDialog.Filter = "Archivos Excel (*.xls)|*.xls|Todos los archivos (*.*)|*.*";
			xlsOpenFileDialog.Multiselect = false;
			xlsOpenFileDialog.FilterIndex = 1;
			xlsOpenFileDialog.RestoreDirectory = true;

			if (xlsOpenFileDialog.ShowDialog() == DialogResult.OK)
			{
				try
				{
					string archivo = xlsOpenFileDialog.FileName;
					FeaEntidades.InterFacturas.lote_comprobantes lote = new FeaEntidades.InterFacturas.lote_comprobantes();
					FeaEntidades.InterFacturas.cabecera compcab = new FeaEntidades.InterFacturas.cabecera();
					FeaEntidades.InterFacturas.comprobante comp = new FeaEntidades.InterFacturas.comprobante();
					comp.cabecera = compcab;
					lote.comprobante[0] = comp;

					List<FeaEntidades.Excel.Ubicador> lista = FeaEntidades.Excel.Ubicador.Lista();
					foreach (FeaEntidades.Excel.Ubicador u in lista)
					{
						FileHelpers.DataLink.ExcelStorage provider = new FileHelpers.DataLink.ExcelStorage(u.GetType());
						provider.StartRow = u.X;
						provider.StartColumn = u.Y;
						provider.FileName = @archivo;
						provider.SheetName = "XML";
						Object[] oArray = (Object[])System.Array.CreateInstance(u.GetType(), 10);
						oArray = (Object[])provider.ExtractRecords();

						foreach (Object o in oArray)
						{
							FileHelpers.DataLink.ExcelStorage providerInterno = new FileHelpers.DataLink.ExcelStorage(System.Type.GetType("FeaEntidades.InterFacturas." + ((FeaEntidades.Excel.Ubicador)o).Tipo + ", FeaEntidades"));
							providerInterno.StartRow = ((FeaEntidades.Excel.Ubicador)o).Y;
							providerInterno.StartColumn = ((FeaEntidades.Excel.Ubicador)o).X;
							providerInterno.FileName = @archivo;
							providerInterno.SheetName = "XML";
							Object[] oArrayInterno = (Object[])System.Array.CreateInstance(System.Type.GetType("FeaEntidades.InterFacturas." + ((FeaEntidades.Excel.Ubicador)o).Tipo + ", FeaEntidades"), 10);
							oArrayInterno = (Object[])providerInterno.ExtractRecords();

							if (oArrayInterno.Length > 0)
							{
								switch (oArrayInterno.GetType().ToString())
								{
									case "FeaEntidades.InterFacturas.cabecera_lote[]":
										lote.cabecera_lote = (FeaEntidades.InterFacturas.cabecera_lote)oArrayInterno[0];
										break;
									case "FeaEntidades.InterFacturas.informacion_comprador[]":
										compcab.informacion_comprador = (FeaEntidades.InterFacturas.informacion_comprador)oArrayInterno[0];
										break;
									case "FeaEntidades.InterFacturas.informacion_comprobante[]":
										compcab.informacion_comprobante = (FeaEntidades.InterFacturas.informacion_comprobante)oArrayInterno[0];
										break;
									case "FeaEntidades.InterFacturas.informacion_comprobanteReferencias[]":
										compcab.informacion_comprobante.referencias = (FeaEntidades.InterFacturas.informacion_comprobanteReferencias[])oArrayInterno;
										break;
									case "FeaEntidades.InterFacturas.informacion_vendedor[]":
										compcab.informacion_vendedor = (FeaEntidades.InterFacturas.informacion_vendedor)oArrayInterno[0];
										break;
									case "FeaEntidades.InterFacturas.detalle[]":
										comp.detalle = (FeaEntidades.InterFacturas.detalle)oArrayInterno[0];
										break;
									case "FeaEntidades.InterFacturas.linea[]":
										comp.detalle.linea = (FeaEntidades.InterFacturas.linea[])oArrayInterno;
										break;
									case "FeaEntidades.InterFacturas.lineaImportes_moneda_origen[]":
										break;
									case "FeaEntidades.InterFacturas.lineaImpuestos[]":
										break;
									case "FeaEntidades.InterFacturas.lineaDescuentos[]":
										break;
									case "FeaEntidades.InterFacturas.resumen[]":
										comp.resumen = (FeaEntidades.InterFacturas.resumen)oArrayInterno[0];
										break;
									case "FeaEntidades.InterFacturas.resumenDescuentos[]":
										comp.resumen.descuentos = (FeaEntidades.InterFacturas.resumenDescuentos[])oArrayInterno;
										break;
									case "FeaEntidades.InterFacturas.resumenImportes_moneda_origen[]":
										break;
									case "FeaEntidades.InterFacturas.resumenImpuestos[]":
                                        FeaEntidades.InterFacturas.resumenImpuestos[] impLista = ((FeaEntidades.InterFacturas.resumenImpuestos[])oArrayInterno);
                                        FeaEntidades.InterFacturas.resumenImpuestos[] impNewLista = new FeaEntidades.InterFacturas.resumenImpuestos[10];
                                        for (int im = 0; im < impLista.Length; im++)
                                        {
                                            if (impLista[im].importe_impuesto != 0)
                                            {
                                                impNewLista[im] = impLista[im];
                                            }
                                        }
                                        comp.resumen.impuestos = impNewLista;
        								break;
								}
							}
						}
					}

					System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(lote.GetType());
					System.Text.StringBuilder sb = new System.Text.StringBuilder();
					if (d != null)
					{
						sb.Append(@d);
						sb.Append(System.IO.Path.DirectorySeparatorChar);
					}
					else
					{
						throw new Exception("Debe elegir un directorio primero");
					}
					sb.Append(lote.cabecera_lote.cuit_vendedor);
					sb.Append("-");
					sb.Append(lote.cabecera_lote.punto_de_venta.ToString("0000"));
					sb.Append("-");
					sb.Append(lote.comprobante[0].cabecera.informacion_comprobante.tipo_de_comprobante.ToString("00"));
					sb.Append("-");
					sb.Append(lote.comprobante[0].cabecera.informacion_comprobante.numero_comprobante.ToString("00000000"));
					sb.Append(".xml");
					System.IO.Stream fs = new System.IO.FileStream(sb.ToString(), System.IO.FileMode.Create);
					System.Xml.XmlWriter writer = new System.Xml.XmlTextWriter(fs, System.Text.Encoding.GetEncoding("ISO-8859-1"));
					x.Serialize(writer, lote);
					fs.Close();
					System.Diagnostics.Process.Start(sb.ToString());
				}
				catch(NullReferenceException)
				{
					try
					{
						throw new Exception("El archivo seleccionado no está generado desde el template excel");
					}
					catch (Exception exc)
					{
						Microsoft.ApplicationBlocks.ExceptionManagement.ExceptionManager.Publish(exc);
					}
				}
				catch (Exception ex)
				{
					Microsoft.ApplicationBlocks.ExceptionManagement.ExceptionManager.Publish(ex);
				}
			}
		}
Exemplo n.º 12
0
		protected void FileUploadButton_Click(object sender, EventArgs e)
		{
			if (CedWebRN.Fun.NoEstaLogueadoUnUsuarioPremium((CedWebEntidades.Sesion)Session["Sesion"]))
			{
				if (!MonedaComprobanteDropDownList.Enabled)
				{
					ClientScript.RegisterStartupScript(GetType(), "Message", "<SCRIPT LANGUAGE='javascript'>alert('Esta funcionalidad es exclusiva del SERVICIO PREMIUM.  Contáctese con Cedeira Software Factory para acceder al servicio.');</script>");
				}
				else
				{
					ClientScript.RegisterStartupScript(GetType(), "Message", "<SCRIPT LANGUAGE='javascript'>alert('Su sesión ha caducado por inactividad. Por favor vuelva a loguearse.')</script>");
				}
			}
			else
			{
				FeaEntidades.InterFacturas.lote_comprobantes lc=new FeaEntidades.InterFacturas.lote_comprobantes();
				if (XMLFileUpload.HasFile)
				{
					try
					{
						System.IO.MemoryStream ms = new System.IO.MemoryStream(XMLFileUpload.FileBytes);
						ms.Seek(0, System.IO.SeekOrigin.Begin);

						try
						{
							System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(lc.GetType());
							lc = (FeaEntidades.InterFacturas.lote_comprobantes)x.Deserialize(ms);
							CompletarUI(lc, e);
							ClientScript.RegisterStartupScript(GetType(), "Message", "<SCRIPT LANGUAGE='javascript'>alert('Datos del comprobante correctamente cargados desde el archivo');</script>");
						}
						catch (InvalidOperationException)
						{
							try
							{
								LeerFormatoDetalleIBK(e, lc, ms);
							}
							catch (InvalidOperationException)
							{
								LeerFormatoLoteIBK(e, lc, ms);
							}
						}
					}
					catch
					{
						ClientScript.RegisterStartupScript(GetType(), "Message", "<SCRIPT LANGUAGE='javascript'>alert('El archivo no cumple con el esquema de Interfacturas');</script>");
					}
				}
				else
				{
					ClientScript.RegisterStartupScript(GetType(), "Message", "<SCRIPT LANGUAGE='javascript'>alert('Debe seleccionar un archivo');</script>");
				}
			}
		}
        protected void FileUploadButton_Click(object sender, EventArgs e)
        {
            if (((Button)sender).ID == "FileUploadButton" && ((Entidades.Sesion)Session["Sesion"]).Usuario.Id == null)
            {
                MensajeLabel.Text = "Su sesión ha caducado por inactividad. Por favor vuelva a loguearse.";
            }
            else
            {
                FeaEntidades.InterFacturas.lote_comprobantes lc = new FeaEntidades.InterFacturas.lote_comprobantes();
                if (XMLFileUpload.HasFile)
                {
                    try
                    {
                        System.IO.MemoryStream ms = new System.IO.MemoryStream(XMLFileUpload.FileBytes);
                        ms.Seek(0, System.IO.SeekOrigin.Begin);

                        try
                        {
                            System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(lc.GetType());
                            lc = (FeaEntidades.InterFacturas.lote_comprobantes)x.Deserialize(ms);
                            if (((Entidades.Sesion)Session["Sesion"]).Cuit.Nro != lc.comprobante[0].cabecera.informacion_vendedor.cuit.ToString())
                            {
                                MensajeLabel.Text = "El CUIT del vendedor: " + lc.comprobante[0].cabecera.informacion_vendedor.cuit.ToString() + " que figura en el archivo XML, no coincide con el CUIT que usted está operando.";
                                return;
                            }
                            if (((Entidades.Sesion)Session["Sesion"]).Cuit.Nro != lc.cabecera_lote.cuit_vendedor.ToString())
                            {
                                MensajeLabel.Text = "El CUIT del lote: " + lc.cabecera_lote.cuit_vendedor.ToString() + " que figura en el archivo XML, no coincide con el CUIT que usted está operando.";
                                return;
                            }
                            System.Collections.Generic.List<Entidades.PuntoVta> listaPV = ((Entidades.Sesion)Session["Sesion"]).UN.PuntosVta.FindAll(delegate(Entidades.PuntoVta pv)
                            {
                                return pv.Nro == lc.cabecera_lote.punto_de_venta;
                            });
                            if (listaPV.Count == 0)
                            {
                                MensajeLabel.Text = "El Punto de Venta: " + lc.cabecera_lote.punto_de_venta.ToString() + " que figura en el archivo XML, no coincide con los definidos para la UN que usted está operando.";
                                return;
                            }
                            lc.comprobante[0].IdNaturalezaComprobante = "Venta";

                            Entidades.Comprobante comprobante = new Entidades.Comprobante();
                            string XML = "";
                            RN.Comprobante.SerializarLc(out XML, lc);
                            comprobante.Request = XML;
                            Session["ComprobanteATratar"] = new Entidades.ComprobanteATratar(Entidades.Enum.TratamientoComprobante.Consulta, comprobante);
                            string script = "window.open('/ComprobanteConsulta.aspx', '');";
                            ScriptManager.RegisterStartupScript(this, typeof(Page), "popup", script, true);
                        }
                        catch (InvalidOperationException)
                        {
                            try
                            {
                                LeerFormatoDetalleIBK(e, lc, ms);
                            }
                            catch (InvalidOperationException)
                            {
                                LeerFormatoLoteIBK(e, lc, ms);
                            }
                        }
                    }
                    catch
                    {
                        MensajeLabel.Text = "El archivo no cumple con el esquema de Interfacturas";
                    }
                }
                else
                {
                    MensajeLabel.Text = "Debe seleccionar un archivo";
                }
            }
        }
Exemplo n.º 14
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");
                }
            }
        }
Exemplo n.º 15
0
        protected void Page_Load(object sender, EventArgs e)
        {
            var culture = System.Globalization.CultureInfo.CreateSpecificCulture("en-GB");

            culture.NumberFormat.CurrencySymbol = string.Empty;
            System.Threading.Thread.CurrentThread.CurrentCulture   = culture;
            System.Threading.Thread.CurrentThread.CurrentUICulture = culture;
            base.InitializeCulture();

            if (Session["lote"] == null)
            {
                Response.Redirect("~/Inicio.aspx");
            }
            else
            {
                try
                {
                    string lcomp = Server.MapPath("~/Facturacion/Electronica/Reportes/lote_comprobantes.xsd");
                    System.IO.File.Copy(lcomp, @System.IO.Path.GetTempPath() + "lote_comprobantes.xsd", true);

                    string imagen = Server.MapPath("~/Facturacion/Electronica/Reportes/Imagen.xsd");
                    System.IO.File.Copy(imagen, @System.IO.Path.GetTempPath() + "Imagen.xsd", true);

                    FeaEntidades.InterFacturas.lote_comprobantes lc = (FeaEntidades.InterFacturas.lote_comprobantes)Session["lote"];
                    AsignarCamposOpcionales(lc);
                    ReemplarResumenImportesMonedaExtranjera(lc);

                    facturaRpt = new CrystalDecisions.CrystalReports.Engine.ReportDocument();
                    string reportPath = "";

                    string idtipo = ((Entidades.Sesion) Session["Sesion"]).UN.PuntosVta.Find(delegate(Entidades.PuntoVta pv)
                    {
                        return(pv.Nro == lc.comprobante[0].cabecera.informacion_comprobante.punto_de_venta);
                    }).IdTipoPuntoVta;

                    if (!idtipo.Equals("Exportacion"))
                    {
                        reportPath = Server.MapPath("~/Facturacion/Electronica/Reportes/Factura.rpt");
                    }
                    else
                    {
                        if (lc.comprobante[0].extensiones.extensiones_camara_facturas != null && lc.comprobante[0].extensiones.extensiones_camara_facturas.id_idioma != null)
                        {
                            if (lc.comprobante[0].extensiones.extensiones_camara_facturas.id_idioma == "2")
                            {
                                reportPath = Server.MapPath("~/Facturacion/Electronica/Reportes/FacturaEN.rpt");
                            }
                            else if (lc.comprobante[0].extensiones.extensiones_camara_facturas.id_idioma == "3")
                            {
                                reportPath = Server.MapPath("~/Facturacion/Electronica/Reportes/FacturaPT.rpt");
                            }
                            else
                            {
                                //Español = 1
                                reportPath = Server.MapPath("~/Facturacion/Electronica/Reportes/Factura.rpt");
                            }
                        }
                        else
                        {
                            reportPath = Server.MapPath("~/Facturacion/Electronica/Reportes/Factura.rpt");
                        }
                    }
                    facturaRpt.Load(reportPath);

                    DataSet       ds    = new DataSet();
                    XmlSerializer objXS = new XmlSerializer(lc.GetType());
                    StringWriter  objSW = new StringWriter();
                    objXS.Serialize(objSW, lc);
                    StringReader objSR = new StringReader(objSW.ToString());
                    ds.ReadXml(objSR);

                    bool original = true;
                    try
                    {
                        original = (bool)Session["EsComprobanteOriginal"];
                        if (original == false)
                        {
                            facturaRpt.DataDefinition.FormulaFields["Borrador"].Text = "'BORRADOR'";
                        }
                    }
                    catch
                    {
                    }

                    facturaRpt.SetDataSource(ds);
                    facturaRpt.PrintOptions.PaperSize        = CrystalDecisions.Shared.PaperSize.PaperLetter;
                    facturaRpt.PrintOptions.PaperOrientation = CrystalDecisions.Shared.PaperOrientation.Portrait;

                    IncrustarLogo(lc.cabecera_lote.cuit_vendedor.ToString(), lc.comprobante[0].cabecera.informacion_comprobante.punto_de_venta.ToString());
                    string cae = lc.comprobante[0].cabecera.informacion_comprobante.cae;
                    if (cae.Replace(" ", string.Empty).Equals(string.Empty))
                    {
                        cae = "99999999999999";
                    }
                    GenerarCodigoBarras(lc.cabecera_lote.cuit_vendedor + lc.comprobante[0].cabecera.informacion_comprobante.tipo_de_comprobante.ToString("00") + lc.comprobante[0].cabecera.informacion_comprobante.punto_de_venta.ToString("0000") + cae + System.DateTime.Now.ToString("yyyyMMdd"));
                    AsignarParametros(lc.comprobante[0].resumen.importe_total_factura, idtipo);

                    facturaRpt.Subreports["impuestos"].DataDefinition.FormulaFields["TipoDeComprobante"].Text = "'" + lc.comprobante[0].cabecera.informacion_comprobante.tipo_de_comprobante.ToString() + "'";
                    facturaRpt.Subreports["resumen"].DataDefinition.FormulaFields["TipoDeComprobante"].Text   = "'" + lc.comprobante[0].cabecera.informacion_comprobante.tipo_de_comprobante.ToString() + "'";

                    System.Text.StringBuilder sb = new System.Text.StringBuilder();
                    sb.Append(lc.cabecera_lote.cuit_vendedor);
                    sb.Append("-");
                    sb.Append(lc.cabecera_lote.punto_de_venta.ToString("0000"));
                    sb.Append("-");
                    sb.Append(lc.comprobante[0].cabecera.informacion_comprobante.tipo_de_comprobante.ToString("00"));
                    sb.Append("-");
                    sb.Append(lc.comprobante[0].cabecera.informacion_comprobante.numero_comprobante.ToString("00000000"));
                    if (original == false)
                    {
                        sb.Append("-BORRADOR");
                    }

                    CrystalDecisions.Shared.ExportOptions           exportOpts = new CrystalDecisions.Shared.ExportOptions();
                    CrystalDecisions.Shared.PdfRtfWordFormatOptions pdfOpts    = CrystalDecisions.Shared.ExportOptions.CreatePdfRtfWordFormatOptions();
                    exportOpts.ExportFormatType    = CrystalDecisions.Shared.ExportFormatType.PortableDocFormat;
                    exportOpts.ExportFormatOptions = pdfOpts;
                    facturaRpt.ExportToHttpResponse(exportOpts, Response, true, sb.ToString());
                }
                catch (System.Threading.ThreadAbortException)
                {
                    Trace.Warn("Thread abortado");
                }
                catch (Exception ex)
                {
                    RN.Sesion.GrabarLogTexto(Server.MapPath("~/Consultar.txt"), "Reporte: " + ex.Message + " " + ex.StackTrace);
                    throw new Exception(ex.Message);
                    //WebForms.Excepciones.Redireccionar(ex, "~/Excepciones/Excepciones.aspx");
                }
            }
        }
Exemplo n.º 16
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)
                    {
                        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 AccionDropDownList_SelectedIndexChanged(object sender, EventArgs e)
        {
            MensajeLabel.Text = String.Empty;
            DropDownList ddl = (DropDownList)sender;
            GridViewRow row = (GridViewRow)ddl.Parent.Parent;
            int item = row.RowIndex;
            List<Entidades.Comprobante> lista = (List<Entidades.Comprobante>)ViewState["Comprobantes"];
            Entidades.Comprobante comprobante = lista[item];
            string comando = ddl.SelectedValue;
            ddl.ClearSelection();
            FeaEntidades.InterFacturas.lote_comprobantes lote;
            Entidades.Sesion sesion = (Entidades.Sesion)Session["Sesion"];
            string certificado;
            string DetalleIBKUtilizarServidorExterno = System.Configuration.ConfigurationManager.AppSettings["DetalleIBKUtilizarServidorExterno"];
            org.dyndns.cedweb.detalle.DetalleIBK clcdyndns = new org.dyndns.cedweb.detalle.DetalleIBK();
            org.dyndns.cedweb.detalle.cecd cecd = new org.dyndns.cedweb.detalle.cecd();
            List<FeaEntidades.InterFacturas.Listado.emisor_comprobante_listado> listaR = new List<FeaEntidades.InterFacturas.Listado.emisor_comprobante_listado>();
            System.Xml.Serialization.XmlSerializer x;
            byte[] bytes;
            System.IO.MemoryStream ms;
            string resp;
            string script;

            Session.Remove("ComprobanteATratar");
            Session.Remove("EsComprobanteOriginal");
            switch (comando)
            {
                case "ActualizarOnLine":
                    #region ActualizarOnLine
                    try
                    {
                        if (comprobante.NaturalezaComprobante.Id == "Venta")
                        {
                            if (comprobante.Estado == "Vigente")
                            {
                                MensajeLabel.Text = "El comprobante ya está vigente. No es posible actualizar su estado.";
                                return;
                            }
                            if (comprobante.IdDestinoComprobante == "ITF")
                            {
                                if (sesion.Cuit.NroSerieCertifITF.Equals(string.Empty))
                                {
                                    MensajeLabel.Text = "Aún no disponemos de su certificado digital";
                                    return;
                                }

                                RN.Sesion.GrabarLogTexto(Server.MapPath("~/Consultar.txt"), "Consulta de Lote CUIT: " + comprobante.Cuit + "  Nro.Lote: " + comprobante.NroLote + "  Nro. Punto de Vta.: " + comprobante.NroPuntoVta);
                                RN.Sesion.GrabarLogTexto(Server.MapPath("~/Consultar.txt"), "NroSerieCertifITF: " + sesion.Cuit.NroSerieCertifITF);

                                certificado = CaptchaDotNet2.Security.Cryptography.Encryptor.Encrypt(sesion.Cuit.NroSerieCertifITF, "srgerg$%^bg", Convert.FromBase64String("srfjuoxp")).ToString();
                                org.dyndns.cedweb.consulta.ConsultaIBK clcdyndnsConsultaIBK = new org.dyndns.cedweb.consulta.ConsultaIBK();
                                string ConsultaIBKUtilizarServidorExterno = System.Configuration.ConfigurationManager.AppSettings["ConsultaIBKUtilizarServidorExterno"];
                                RN.Sesion.GrabarLogTexto(Server.MapPath("~/Consultar.txt"), "Parametro ConsultaIBKUtilizarServidorExterno: " + ConsultaIBKUtilizarServidorExterno);
                                if (ConsultaIBKUtilizarServidorExterno == "SI")
                                {
                                    clcdyndnsConsultaIBK.Url = System.Configuration.ConfigurationManager.AppSettings["ConsultaIBKurl"];
                                    RN.Sesion.GrabarLogTexto(Server.MapPath("~/Consultar.txt"), "Parametro ConsultaIBKurl: " + System.Configuration.ConfigurationManager.AppSettings["ConsultaIBKurl"]);
                                }
                                org.dyndns.cedweb.consulta.ConsultarResult clcrdyndns = new org.dyndns.cedweb.consulta.ConsultarResult();
                                clcrdyndns = clcdyndnsConsultaIBK.Consultar(Convert.ToInt64(comprobante.Cuit), comprobante.NroLote, comprobante.NroPuntoVta, certificado);
                                FeaEntidades.InterFacturas.lote_comprobantes lc = new FeaEntidades.InterFacturas.lote_comprobantes();
                                lc = Funciones.Ws2Fea(clcrdyndns);
                                string XML = "";
                                RN.Comprobante.SerializarLc(out XML, lc);
                                comprobante.Response = XML;
                                if (lc.cabecera_lote.resultado == "A")
                                {
                                    //Controlar que sea el mismo comprobante (local vs on-line)
                                    if (comprobante.Nro != lc.comprobante[0].cabecera.informacion_comprobante.numero_comprobante)
                                    {
                                        MensajeLabel.Text = "(Campo: Nro. de Comprobante). Hay diferencias entre en comprobante local y el registrado en Interfacturas / AFIP. No se puede actualizar el estado.";
                                        return;
                                    }
                                    if (comprobante.TipoComprobante.Id != lc.comprobante[0].cabecera.informacion_comprobante.tipo_de_comprobante)
                                    {
                                        MensajeLabel.Text = "(Campo: Tipo de Comprobante). Hay diferencias entre en comprobante local y el registrado en Interfacturas / AFIP. No se puede actualizar el estado.";
                                        return;
                                    }
                                    if (comprobante.Importe != lc.comprobante[0].resumen.importe_total_factura)
                                    {
                                        MensajeLabel.Text += "(Campo: Importe). Hay diferencias entre en comprobante local y el registrado en Interfacturas / AFIP. Igualmente se pudo actualizar la información y el estado.";
                                        comprobante.Importe = lc.comprobante[0].resumen.importe_total_factura;
                                    }
                                    if (comprobante.Moneda != lc.comprobante[0].resumen.codigo_moneda)
                                    {
                                        MensajeLabel.Text += "(Campo: Moneda). Hay diferencias entre en comprobante local y el registrado en Interfacturas / AFIP. Igualmente se pudo actualizar la información y el estado.";
                                        comprobante.Moneda = lc.comprobante[0].resumen.codigo_moneda;
                                    }
                                    if (lc.comprobante[0].resumen.importes_moneda_origen != null)
                                    {
                                        if (comprobante.ImporteMoneda != lc.comprobante[0].resumen.importes_moneda_origen.importe_total_factura)
                                        {
                                            MensajeLabel.Text += "(Campo: Importe Moneda). Hay diferencias entre en comprobante local y el registrado en Interfacturas / AFIP. Igualmente se pudo actualizar la información y el estado.";
                                            comprobante.ImporteMoneda = lc.comprobante[0].resumen.importes_moneda_origen.importe_total_factura;
                                        }
                                    }
                                    else
                                    {
                                        if (comprobante.ImporteMoneda != 0)
                                        {
                                            MensajeLabel.Text += "(Campo: Importe Moneda). Hay diferencias entre en comprobante local y el registrado en Interfacturas / AFIP. Igualmente se pudo actualizar la información y el estado.";
                                            comprobante.ImporteMoneda = 0;
                                        }
                                    }
                                    if (comprobante.TipoCambio != lc.comprobante[0].resumen.tipo_de_cambio)
                                    {
                                        MensajeLabel.Text += "(Campo: Tipo de cambio). Hay diferencias entre en comprobante local y el registrado en Interfacturas / AFIP. Igualmente se pudo actualizar la información y el estado.";
                                        comprobante.TipoCambio = lc.comprobante[0].resumen.tipo_de_cambio;
                                    }
                                    //if (comprobante.Fecha != lc.comprobante[0].cabecera.informacion_comprobante.fecha_emision)
                                    //{
                                    //    MensajeLabel.Text += "(Campo: Tipo de cambio). Hay diferencias entre en comprobante local y el registrado en Interfacturas / AFIP. Igualmente se pudo actualizar la información y el estado.";
                                    //    comprobante.Fecha = lc.comprobante[0].resumen.fecha_emision;
                                    //}
                                    //if (comprobante.Fecha != lc.comprobante[0].cabecera.informacion_comprobante.fecha_vencimiento)
                                    //{
                                    //    MensajeLabel.Text += "(Campo: Tipo de cambio). Hay diferencias entre en comprobante local y el registrado en Interfacturas / AFIP. Igualmente se pudo actualizar la información y el estado.";
                                    //    comprobante.FechaVto = lc.comprobante[0].resumen.fecha_vencimiento;
                                    //}
                                    if (comprobante.Documento.Tipo.Id != lc.comprobante[0].cabecera.informacion_comprador.codigo_doc_identificatorio.ToString())
                                    {
                                        MensajeLabel.Text += "(Campo: Cod.Doc). Hay diferencias entre en comprobante local y el registrado en Interfacturas / AFIP. Igualmente se pudo actualizar la información y el estado.";
                                        comprobante.Documento.Tipo.Id = lc.comprobante[0].cabecera.informacion_comprador.codigo_doc_identificatorio.ToString();
                                    }
                                    if (comprobante.Documento.Nro != lc.comprobante[0].cabecera.informacion_comprador.nro_doc_identificatorio)
                                    {
                                        MensajeLabel.Text += "(Campo: Nro.Doc). Hay diferencias entre en comprobante local y el registrado en Interfacturas / AFIP. Igualmente se pudo actualizar la información y el estado.";
                                        comprobante.Documento.Nro = lc.comprobante[0].cabecera.informacion_comprador.nro_doc_identificatorio;
                                    }

                                    comprobante.WF.Estado = "Vigente";
                                    RN.Comprobante.Actualizar(comprobante, (Entidades.Sesion)Session["Sesion"]);
                                    Session["ComprobanteATratar"] = new Entidades.ComprobanteATratar(Entidades.Enum.TratamientoComprobante.Consulta, comprobante);
                                    script = "window.open('/ComprobanteConsulta.aspx', '');";
                                    BuscarButton_Click(sender, new EventArgs());
                                    RN.Sesion.GrabarLogTexto(Server.MapPath("~/Consultar.txt"), script);
                                    ScriptManager.RegisterStartupScript(this, typeof(Page), "popup", script, true);
                                }
                                else if (lc.cabecera_lote.resultado == "R")
                                {
                                    comprobante.WF.Estado = "Rechazado";
                                    RN.Comprobante.Actualizar(comprobante, (Entidades.Sesion)Session["Sesion"]);
                                    string motivo = "";
                                    if (lc.cabecera_lote.motivo != null)
                                    {
                                        motivo = "Motivo: " + lc.cabecera_lote.motivo;
                                    }
                                    if (lc.comprobante != null && lc.comprobante[0].cabecera.informacion_comprobante.motivo != null)
                                    {
                                        if (motivo != "")
                                        {
                                            motivo += "  ";
                                        }
                                        motivo += "Motivo del comprobante: " + lc.comprobante[0].cabecera.informacion_comprobante.motivo;
                                    }
                                    script = Funciones.TextoScript("Respuesta de ITF o AFIP: " + "Resultado: " + lc.cabecera_lote.resultado + "  " + motivo);
                                    RN.Sesion.GrabarLogTexto(Server.MapPath("~/Consultar.txt"), script);
                                    MensajeLabel.Text = script;
                                    //ScriptManager.RegisterStartupScript(this, typeof(Page), "Message", script, true);
                                }
                                else
                                {
                                    MensajeLabel.Text = "No se puede realizar la actualización, cuando el comprobante se encuentra en el siguiente estado en Interfacturas ( Estado: " + clcrdyndns.comprobante[0].cabecera.informacion_comprobante.resultado + ").";
                                    return;
                                }
                            }
                            else
                            {
                                string respuesta = "";
                                //Deserializar
                                FeaEntidades.InterFacturas.lote_comprobantes lcFea = new FeaEntidades.InterFacturas.lote_comprobantes();
                                string xml = comprobante.Request;
                                var serializer = new System.Xml.Serialization.XmlSerializer(typeof(FeaEntidades.InterFacturas.lote_comprobantes));
                                using (TextReader reader = new StringReader(xml))
                                {
                                    lcFea = (FeaEntidades.InterFacturas.lote_comprobantes)serializer.Deserialize(reader);
                                }
                                string caeNro;
                                string caeFecVto;
                                string caeFecPro;
                                respuesta = RN.ComprobanteAFIP.ConsultarAFIP(out caeNro, out caeFecVto, out caeFecPro, lcFea, (Entidades.Sesion)Session["Sesion"]);
                                if (respuesta.Length >= 12 && respuesta.Substring(0, 12) == "Resultado: A")
                                {
                                    comprobante.WF.Estado = "Vigente";
                                    if (caeNro != "")
                                    {
                                        lcFea.cabecera_lote.resultado = "A";
                                        lcFea.comprobante[0].cabecera.informacion_comprobante.resultado = "A";
                                        lcFea.comprobante[0].cabecera.informacion_comprobante.cae = caeNro;
                                        lcFea.comprobante[0].cabecera.informacion_comprobante.caeSpecified = true;
                                        lcFea.comprobante[0].cabecera.informacion_comprobante.fecha_vencimiento_cae = caeFecVto;
                                        lcFea.comprobante[0].cabecera.informacion_comprobante.fecha_vencimiento_caeSpecified = true;
                                        lcFea.comprobante[0].cabecera.informacion_comprobante.fecha_obtencion_cae = caeFecPro;
                                        lcFea.comprobante[0].cabecera.informacion_comprobante.fecha_obtencion_caeSpecified = true;
                                    }
                                    string XML = "";
                                    RN.Comprobante.SerializarLc(out XML, lcFea);
                                    comprobante.Response = XML;

                                    RN.Comprobante.Actualizar(comprobante, (Entidades.Sesion)Session["Sesion"]);
                                    Session["ComprobanteATratar"] = new Entidades.ComprobanteATratar(Entidades.Enum.TratamientoComprobante.Consulta, comprobante);
                                    script = "window.open('/ComprobanteConsulta.aspx', '');";
                                    BuscarButton_Click(sender, new EventArgs());
                                    RN.Sesion.GrabarLogTexto(Server.MapPath("~/Consultar.txt"), script);
                                    ScriptManager.RegisterStartupScript(this, typeof(Page), "popup", script, true);
                                }
                                else
                                {
                                    MensajeLabel.Text = respuesta;
                                }
                            }
                        }
                        else
                        {
                            MensajeLabel.Text = "Esta opción está disponible sólo para comprobantes de venta electrónica";
                        }
                    }
                    catch (System.Web.Services.Protocols.SoapException soapEx)
                    {
                        try
                        {
                            XmlDocument doc = new XmlDocument();
                            doc.LoadXml(soapEx.Detail.OuterXml);
                            XmlNamespaceManager nsManager = new
                                XmlNamespaceManager(doc.NameTable);
                            nsManager.AddNamespace("errorNS",
                                "http://www.cedeira.com.ar/webservices");
                            XmlNode Node =
                                doc.DocumentElement.SelectSingleNode("errorNS:Error", nsManager);
                            string errorNumber =
                                Node.SelectSingleNode("errorNS:ErrorNumber",
                                nsManager).InnerText;
                            string errorMessage =
                                Node.SelectSingleNode("errorNS:ErrorMessage",
                                nsManager).InnerText;
                            string errorSource =
                                Node.SelectSingleNode("errorNS:ErrorSource",
                                nsManager).InnerText;
                            MensajeLabel.Text = soapEx.Actor + "\\n" + errorMessage.Replace("\r", "").Replace("\n", "");
                        }
                        catch (Exception)
                        {
                            throw soapEx;
                        }
                    }
                    #endregion
                    break;
                case "PDF-Viewer":
                    #region PDF-Viewer
                    if (comprobante.NaturalezaComprobante.Id == "Venta" && comprobante.IdDestinoComprobante == "ITF")
                    {
                        if (comprobante.Estado != "Vigente")
                        {
                            MensajeLabel.Text = "El comprobante no está vigente.";
                            return;
                        }
                        MensajeLabel.Text = String.Empty;
                        cecd.cuit_canal = Convert.ToInt64("30690783521");
                        cecd.cuit_vendedor = Convert.ToInt64(comprobante.Cuit);
                        cecd.punto_de_venta = Convert.ToInt32(comprobante.NroPuntoVta);
                        cecd.tipo_de_comprobante = Convert.ToInt32(comprobante.TipoComprobante.Id);
                        cecd.numero_comprobante = comprobante.Nro;
                        cecd.id_Lote = 0;
                        cecd.id_LoteSpecified = false;
                        cecd.estado = "PR";

                        if (sesion.Cuit.NroSerieCertifITF.Equals(string.Empty))
                        {
                            MensajeLabel.Text = "Aún no disponemos de su certificado digital";
                            return;
                        }
                        GrabarLogTexto("~/Detallar.txt", "Consulta de Lote CUIT: " + sesion.Cuit.Nro + "  Fecha Desde: " + FechaDesdeTextBox.Text + "  Fecha Hasta: " + FechaHastaTextBox.Text);
                        GrabarLogTexto("~/Detallar.txt", "NroSerieCertifITF: " + sesion.Cuit.NroSerieCertifITF);
                        if (sesion.Cuit.NroSerieCertifITF.Equals(string.Empty))
                        {
                            MensajeLabel.Text = "Aún no disponemos de su certificado digital";
                            return;
                        }

                        certificado = CaptchaDotNet2.Security.Cryptography.Encryptor.Encrypt(sesion.Cuit.NroSerieCertifITF, "srgerg$%^bg", Convert.FromBase64String("srfjuoxp")).ToString();
                        GrabarLogTexto("~/Detallar.txt", "Parametro DetalleIBKUtilizarServidorExterno: " + DetalleIBKUtilizarServidorExterno);
                        if (DetalleIBKUtilizarServidorExterno == "SI")
                        {
                            clcdyndns.Url = System.Configuration.ConfigurationManager.AppSettings["DetalleIBKurl"];
                            GrabarLogTexto("~/Detallar.txt", "Parametro DetalleIBKurl: " + System.Configuration.ConfigurationManager.AppSettings["DetalleIBKurl"]);
                        }
                        resp = clcdyndns.DetallarIBK(cecd, certificado);

                        try
                        {
                            string comprobanteXML = resp;

                            GrabarLogTexto("~/Detallar.txt", "Inicia ExecuteCommand");
                            org.dyndns.cedweb.generoPDF.GeneroPDF pdfdyndns = new org.dyndns.cedweb.generoPDF.GeneroPDF();

                            string GenerarPDFUtilizarServidorExterno = System.Configuration.ConfigurationManager.AppSettings["GenerarPDFUtilizarServidorExterno"];
                            GrabarLogTexto("~/Detallar.txt", "Parametro GenerarPDFUtilizarServidorExterno: " + GenerarPDFUtilizarServidorExterno);
                            if (GenerarPDFUtilizarServidorExterno == "SI")
                            {
                                pdfdyndns.Url = System.Configuration.ConfigurationManager.AppSettings["GenerarPDFurl"];
                                GrabarLogTexto("~/Detallar.txt", "Parametro GenerarPDFurl: " + System.Configuration.ConfigurationManager.AppSettings["DetalleIBKurl"]);
                            }
                            string RespPDF = pdfdyndns.GenerarPDF(comprobante.Cuit, comprobante.NroPuntoVta, comprobante.TipoComprobante.Id, comprobante.Nro, comprobante.IdDestinoComprobante, comprobanteXML);
                            GrabarLogTexto("~/Detallar.txt", "Finaliza ExecuteCommand");

                            script = "window.open('" + RespPDF + "', '');";
                            ScriptManager.RegisterStartupScript(this, typeof(Page), "popup", script, true);
                        }
                        catch (Exception ex)
                        {
                            script = "Problemas para generar el PDF.\\n" + ex.Message;
                            script += ex.StackTrace;
                            if (ex.InnerException != null)
                            {
                                script = ex.InnerException.Message;
                            }
                            RN.Sesion.GrabarLogTexto(Server.MapPath("~/Detallar.txt"), script);
                            MensajeLabel.Text = script;
                        }
                    }
                    else
                    {
                        MensajeLabel.Text = "Esta opción está disponible sólo para comprobantes de venta electrónica, canal ITF (Interfacturas)";
                    }
                    #endregion  
                    break;
                case "XML-ClonarAlta":
                    #region XML-ClonarAlta
                    if (comprobante.NaturalezaComprobante.Id == "Venta" || comprobante.NaturalezaComprobante.Id == "Compra")
                    {
                        Session["ComprobanteATratar"] = new Entidades.ComprobanteATratar(Entidades.Enum.TratamientoComprobante.Clonado, comprobante);
                        script = "window.open('/Facturacion/Electronica/Lote.aspx', '');";
                        ScriptManager.RegisterStartupScript(this, typeof(Page), "popup", script, true);
                    }
                    else
                    {
                        MensajeLabel.Text = "Esta opción está disponible sólo para comprobantes de venta electrónica o compras.";
                    }                    
                    #endregion
                    break;
                case "PDF":
                    if (comprobante.NaturalezaComprobante.Id == "Venta")
                    {
                        if (comprobante.IdDestinoComprobante == "ITF")
                        {
                            #region PDF (InterFacturas)
                            //OBTENCIÓN DE PDF DE INTERFACTURAS
                            if (comprobante.Estado != "Vigente")
                            {
                                MensajeLabel.Text = "El comprobante no está vigente.";
                                return;
                            }
                            MensajeLabel.Text = String.Empty;
                            //<?xml version=\"1.0\" encoding=\"iso-8859-1\"?><lote_comprobantes  xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"http://lote.schemas.cfe.ib.com.ar/\"><cabecera_lote><id_lote>20140804151246</id_lote><cuit_canal>30690783521</cuit_canal><cuit_vendedor>30710015062</cuit_vendedor><cantidad_reg>1</cantidad_reg><punto_de_venta>35</punto_de_venta><resultado>A</resultado></cabecera_lote><comprobante><cabecera><informacion_comprobante><tipo_de_comprobante>1</tipo_de_comprobante><numero_comprobante>57</numero_comprobante><punto_de_venta>35</punto_de_venta><fecha_emision>20140804</fecha_emision><fecha_vencimiento>20140831</fecha_vencimiento><fecha_serv_desde /><fecha_serv_hasta /><condicion_de_pago>30 
                            //Off-Line
                            //resp = comprobante.Response.Replace("iso-8859-1", "utf-8");
                            //resp = resp.Replace("xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"", "");
                            //Fin Off-Line

                            //On-Line
                            cecd.cuit_canal = Convert.ToInt64("30690783521");
                            cecd.cuit_vendedor = Convert.ToInt64(comprobante.Cuit);
                            cecd.punto_de_venta = Convert.ToInt32(comprobante.NroPuntoVta);
                            cecd.tipo_de_comprobante = Convert.ToInt32(comprobante.TipoComprobante.Id);
                            cecd.numero_comprobante = comprobante.Nro;
                            cecd.id_Lote = 0;
                            cecd.id_LoteSpecified = false;
                            cecd.estado = "PR";

                            if (sesion.Cuit.NroSerieCertifITF.Equals(string.Empty))
                            {
                                MensajeLabel.Text = "Aún no disponemos de su certificado digital";
                                return;
                            }
                            GrabarLogTexto("~/Detallar.txt", "Consulta de Lote CUIT: " + sesion.Cuit.Nro + "  Fecha Desde: " + FechaDesdeTextBox.Text + "  Fecha Hasta: " + FechaHastaTextBox.Text);
                            GrabarLogTexto("~/Detallar.txt", "NroSerieCertifITF: " + sesion.Cuit.NroSerieCertifITF);
                            if (sesion.Cuit.NroSerieCertifITF.Equals(string.Empty))
                            {
                                MensajeLabel.Text = "Aún no disponemos de su certificado digital";
                                return;
                            }

                            certificado = CaptchaDotNet2.Security.Cryptography.Encryptor.Encrypt(sesion.Cuit.NroSerieCertifITF, "srgerg$%^bg", Convert.FromBase64String("srfjuoxp")).ToString();
                            GrabarLogTexto("~/Detallar.txt", "Parametro DetalleIBKUtilizarServidorExterno: " + DetalleIBKUtilizarServidorExterno);
                            if (DetalleIBKUtilizarServidorExterno == "SI")
                            {
                                clcdyndns.Url = System.Configuration.ConfigurationManager.AppSettings["DetalleIBKurl"];
                                GrabarLogTexto("~/Detallar.txt", "Parametro DetalleIBKurl: " + System.Configuration.ConfigurationManager.AppSettings["DetalleIBKurl"]);
                            }
                            resp = clcdyndns.DetallarIBK(cecd, certificado);
                            resp = resp.Replace(" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"", "");
                            resp = resp.Replace(" xmlns:xsi=\"http://lote.schemas.cfe.ib.com.ar/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"", " xmlns=\"http://lote.schemas.cfe.ib.com.ar/\"");
                            //Fin On-Line

                            try
                            {
                                string comprobanteXML = resp;

                                GrabarLogTexto("~/Detallar.txt", "Inicia ExecuteCommand");
                                org.dyndns.cedweb.generoPDF.GeneroPDF pdfdyndns = new org.dyndns.cedweb.generoPDF.GeneroPDF();

                                string GenerarPDFUtilizarServidorExterno = System.Configuration.ConfigurationManager.AppSettings["GenerarPDFUtilizarServidorExterno"];
                                GrabarLogTexto("~/Detallar.txt", "Parametro GenerarPDFUtilizarServidorExterno: " + GenerarPDFUtilizarServidorExterno);
                                if (GenerarPDFUtilizarServidorExterno == "SI")
                                {
                                    pdfdyndns.Url = System.Configuration.ConfigurationManager.AppSettings["GenerarPDFurl"];
                                    GrabarLogTexto("~/Detallar.txt", "Parametro GenerarPDFurl: " + System.Configuration.ConfigurationManager.AppSettings["DetalleIBKurl"]);
                                }
                                string RespPDF = pdfdyndns.GenerarPDF(comprobante.Cuit, comprobante.NroPuntoVta, comprobante.TipoComprobante.Id, comprobante.Nro, comprobante.IdDestinoComprobante, comprobanteXML);
                                GrabarLogTexto("~/Detallar.txt", "Finaliza ExecuteCommand");

                                //Crear nombre de archivo default sin extensión
                                System.Text.StringBuilder sb = new System.Text.StringBuilder();
                                sb.Append(comprobante.Cuit);
                                sb.Append("-");
                                sb.Append(comprobante.NroPuntoVta.ToString("0000"));
                                sb.Append("-");
                                sb.Append(comprobante.TipoComprobante.Id.ToString("00"));
                                sb.Append("-");
                                sb.Append(comprobante.Nro.ToString("00000000"));
                                sb.Append(".pdf");

                                string url = RespPDF;
                                string filename = sb.ToString();
                                String dlDir = @"~/TempRender/";
                                new System.Net.WebClient().DownloadFile(url, Server.MapPath(dlDir + filename));

                                script = "window.open('DescargaTemporarios.aspx?archivo=" + sb.ToString() + "&path=" + @"~/TempRender/" + "', '');";
                                ScriptManager.RegisterStartupScript(this, typeof(Page), "popup", script, true);
                            }
                            catch (Exception ex)
                            {
                                script = "Problemas para generar el PDF.\\n" + ex.Message;
                                script += ex.StackTrace;
                                if (ex.InnerException != null)
                                {
                                    script = ex.InnerException.Message;
                                }
                                RN.Sesion.GrabarLogTexto(Server.MapPath("~/Detallar.txt"), script);
                                MensajeLabel.Text = script;
                            }
                            #endregion
                        }
                        else
                        {
                            #region PDF (AFIP)
                            //GENERACIÓN DE PDF A PARTIR DE DATOS LOCALES
                            lote = new FeaEntidades.InterFacturas.lote_comprobantes();
                            x = new System.Xml.Serialization.XmlSerializer(lote.GetType());
                            if (comprobante.Estado != "Vigente")
                            {
                                MensajeLabel.Text = "El comprobante no está vigente.";
                                return;
                            }
                            try
                            {
                                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);

                                //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);

                                RN.Comprobante.AjustarLoteParaImprimirPDF(lote);
                               
                                Session["lote"] = lote;
                                //Response.Redirect("~\\Facturacion\\Electronica\\Reportes\\FacturaWebForm.aspx", true);

                                script = "window.open('/Facturacion/Electronica/Reportes/FacturaWebForm.aspx', '');";
                                ScriptManager.RegisterStartupScript(this, typeof(Page), "popup", script, true);
                            }
                            catch (Exception ex)
                            {
                                script = "Problemas para generar el PDF.\\n" + ex.Message;
                                RN.Sesion.GrabarLogTexto(Server.MapPath("~/Consultar.txt"), script);
                                MensajeLabel.Text = script;
                            }
                            #endregion
                        }
                    }
                    else
                    {
                        MensajeLabel.Text = "Esta opción está disponible sólo para comprobantes de venta electrónica";
                    }
                    break;
                case "XMLOnLine":
                    #region XMLOnLine
                    if (comprobante.NaturalezaComprobante.Id == "Venta" && comprobante.IdDestinoComprobante == "ITF")
                    {
                        if (comprobante.Estado != "Vigente")
                        {
                            MensajeLabel.Text = "El comprobante no está vigente.";
                            return;
                        }
                        MensajeLabel.Text = String.Empty;
                        Entidades.Persona persona = ((List<Entidades.Persona>)ViewState["Personas"])[ClienteDropDownList.SelectedIndex];
                        //resp = RN.Comprobante.ComprobanteDetalleIBK(((Entidades.Sesion)Session["Sesion"]).Cuit.Nro, comprobante.NroPuntoVta.ToString(), comprobante.TipoComprobante.Id.ToString(), comprobante.Nro, 0, ((Entidades.Sesion)Session["Sesion"]).Cuit.NroSerieCertifITF);

                        cecd.cuit_canal = Convert.ToInt64("30690783521");
                        cecd.cuit_vendedor = Convert.ToInt64(comprobante.Cuit);
                        cecd.punto_de_venta = Convert.ToInt32(comprobante.NroPuntoVta);
                        cecd.tipo_de_comprobante = Convert.ToInt32(comprobante.TipoComprobante.Id);
                        cecd.numero_comprobante = comprobante.Nro;
                        cecd.id_Lote = 0;
                        cecd.id_LoteSpecified = false;
                        cecd.estado = "PR";

                        if (sesion.Cuit.NroSerieCertifITF.Equals(string.Empty))
                        {
                            MensajeLabel.Text = "Aún no disponemos de su certificado digital";
                            return;
                        }
                        GrabarLogTexto("~/Detallar.txt", "Consulta de Lote CUIT: " + sesion.Cuit.Nro + "  Fecha Desde: " + FechaDesdeTextBox.Text + "  Fecha Hasta: " + FechaHastaTextBox.Text);
                        GrabarLogTexto("~/Detallar.txt", "NroSerieCertifITF: " + sesion.Cuit.NroSerieCertifITF);
                        if (sesion.Cuit.NroSerieCertifITF.Equals(string.Empty))
                        {
                            MensajeLabel.Text = "Aún no disponemos de su certificado digital";
                            return;
                        }

                        certificado = CaptchaDotNet2.Security.Cryptography.Encryptor.Encrypt(sesion.Cuit.NroSerieCertifITF, "srgerg$%^bg", Convert.FromBase64String("srfjuoxp")).ToString();
                        GrabarLogTexto("~/Detallar.txt", "Parametro DetalleIBKUtilizarServidorExterno: " + DetalleIBKUtilizarServidorExterno);
                        if (DetalleIBKUtilizarServidorExterno == "SI")
                        {
                            clcdyndns.Url = System.Configuration.ConfigurationManager.AppSettings["DetalleIBKurl"];
                            GrabarLogTexto("~/Detallar.txt", "Parametro DetalleIBKurl: " + System.Configuration.ConfigurationManager.AppSettings["DetalleIBKurl"]);
                        }
                        resp = clcdyndns.DetallarIBK(cecd, certificado);

                        try
                        {
                            string comprobanteXML = resp;
                            System.Text.StringBuilder sbXMLData = new System.Text.StringBuilder();
                            sbXMLData.AppendLine(comprobanteXML);

                            //Crear nombre de archivo default sin extensión
                            System.Text.StringBuilder sb = new System.Text.StringBuilder();
                            sb.Append(comprobante.Cuit);
                            sb.Append("-");
                            sb.Append(comprobante.NroPuntoVta.ToString("0000"));
                            sb.Append("-");
                            sb.Append(comprobante.TipoComprobante.Id.ToString("00"));
                            sb.Append("-");
                            sb.Append(comprobante.Nro.ToString("00000000"));

                            //Crear nombre de archivo XML
                            System.Text.StringBuilder sbXML = new System.Text.StringBuilder();
                            sbXML.Append(sb.ToString() + ".xml");

                            //Crear archivo comprobante XML
                            System.IO.MemoryStream m = new System.IO.MemoryStream();
                            System.IO.FileStream fs = new System.IO.FileStream(Server.MapPath(@"~/Temp/" + sbXML.ToString()), System.IO.FileMode.Create);
                            m.WriteTo(fs);
                            fs.Close();

                            //Grabar información comprobante XML
                            using (StreamWriter outfile = new StreamWriter(Server.MapPath(@"~/Temp/" + sbXML.ToString())))
                            {
                                outfile.Write(sbXMLData.ToString());
                            }
                            script = "window.open('DescargaTemporarios.aspx?archivo=" + sbXML.ToString() + "', '');";
                            ScriptManager.RegisterStartupScript(this, typeof(Page), "popup", script, true);
                        }
                        catch (Exception ex)
                        {
                            script = "Problemas para generar el XML.\\n" + ex.Message;
                            script += ex.StackTrace;
                            if (ex.InnerException != null)
                            {
                                script = ex.InnerException.Message;
                            }
                            RN.Sesion.GrabarLogTexto(Server.MapPath("~/Detallar.txt"), script);
                            MensajeLabel.Text += script;
                        }
                    }
                    else
                    {
                        MensajeLabel.Text = "Esta opción está disponible sólo para comprobantes de venta electrónica, canal ITF (Interfacturas)";
                    }
                    #endregion
                    break;
                case "XMLLocal":
                    if (comprobante.NaturalezaComprobante.Id == "Venta")
                    {
                        try
                        {
                            //Crear nombre de archivo default sin extensión
                            System.Text.StringBuilder sb = new System.Text.StringBuilder();
                            sb.Append(comprobante.Cuit);
                            sb.Append("-");
                            sb.Append(comprobante.NroPuntoVta.ToString("0000"));
                            sb.Append("-");
                            sb.Append(comprobante.TipoComprobante.Id.ToString("00"));
                            sb.Append("-");
                            sb.Append(comprobante.Nro.ToString("00000000"));

                            System.Text.StringBuilder sbXMLData;
                            if (comprobante.Estado != "Vigente")
                            {
                                sbXMLData = new System.Text.StringBuilder();
                                sbXMLData.AppendLine(comprobante.Request);
                                sb.Append("-BORRADOR");
                                MensajeLabel.Text = "El comprobante no está vigente. Usted está descargando un XML de BORRADOR.";
                            }
                            else
                            {
                                sbXMLData = new System.Text.StringBuilder();
                                sbXMLData.AppendLine(comprobante.Response);
                            }

                            //Crear nombre de archivo XML
                            System.Text.StringBuilder sbXML = new System.Text.StringBuilder();
                            sbXML.Append(sb.ToString() + ".xml");

                            //Crear archivo comprobante XML
                            System.IO.MemoryStream m = new System.IO.MemoryStream();
                            System.IO.FileStream fs = new System.IO.FileStream(Server.MapPath(@"~/Temp/" + sbXML.ToString()), System.IO.FileMode.Create);
                            m.WriteTo(fs);
                            fs.Close();

                            //Grabar información comprobante XML
                            using (StreamWriter outfile = new StreamWriter(Server.MapPath(@"~/Temp/" + sbXML.ToString())))
                            {
                                outfile.Write(sbXMLData.ToString());
                            }
                            script = "window.open('DescargaTemporarios.aspx?archivo=" + sbXML.ToString() + "', '');";
                            ScriptManager.RegisterStartupScript(this, typeof(Page), "popup", script, true);
                        }
                        catch (Exception ex)
                        {
                            script = "Problemas para generar el XML.\\n" + ex.Message;
                            script += ex.StackTrace;
                            if (ex.InnerException != null)
                            {
                                script = ex.InnerException.Message;
                            }
                            RN.Sesion.GrabarLogTexto(Server.MapPath("~/Detallar.txt"), script);
                            MensajeLabel.Text += script;
                        }
                    }
                    break;
                case "ExportarRG2485":
                    #region ExportarRG2485
                    if (comprobante.NaturalezaComprobante.Id == "Venta")
                    {
                        lote = new FeaEntidades.InterFacturas.lote_comprobantes();
                        x = new System.Xml.Serialization.XmlSerializer(lote.GetType());
                        if (comprobante.Estado != "Vigente")
                        {
                            MensajeLabel.Text = "El comprobante no está vigente.";
                            return;
                        }
                        try
                        {
                            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);

                            //Crear nombre de archivo default sin extensión
                            System.Text.StringBuilder sb = new System.Text.StringBuilder();
                            sb.Append(lote.cabecera_lote.cuit_vendedor);
                            sb.Append("-");
                            sb.Append(lote.cabecera_lote.punto_de_venta.ToString("0000"));
                            sb.Append("-");
                            sb.Append(lote.comprobante[0].cabecera.informacion_comprobante.tipo_de_comprobante.ToString("00"));
                            sb.Append("-");
                            sb.Append(lote.comprobante[0].cabecera.informacion_comprobante.numero_comprobante.ToString("00000000"));

                            //Crear nombre de archivo ZIP
                            System.Text.StringBuilder sbZIP = new System.Text.StringBuilder();
                            sbZIP.Append(sb.ToString() + ".zip");

                            //Crear archivo CABECERA EMISOR
                            System.Text.StringBuilder sbCabeceraE = new System.Text.StringBuilder();
                            sbCabeceraE.Append(sb.ToString() + "-CABECERA_EMISOR.txt");
                            System.IO.MemoryStream m = new System.IO.MemoryStream();
                            System.IO.FileStream fs = new System.IO.FileStream(Server.MapPath(@"~/Temp/" + sbCabeceraE.ToString()), System.IO.FileMode.Create);
                            m.WriteTo(fs);
                            fs.Close();
                            //Guardar info en archivo CABECERA EMISOR
                            System.Text.StringBuilder sbDataCabeceraE = new System.Text.StringBuilder();
                            string Campo2 = String.Format("{0,11}", sesion.Cuit.Nro);
                            string Campo3 = String.Format("{0,-30}", Truncate(sesion.Cuit.RazonSocial, 30));
                            string Campo4 = String.Format("{0,-30}", sesion.Cuit.DatosImpositivos.NroIngBrutos);
                            string Campo5 = sesion.Cuit.DatosImpositivos.IdCondIVA.ToString("00");
                            string Campo6 = String.Format("{0,-30}", "");
                            try
                            {
                                string RespAux6 = FeaEntidades.CondicionesIVA.CondicionIVA.Lista().Find(delegate(FeaEntidades.CondicionesIVA.CondicionIVA ci)
                                {
                                    return (ci.Codigo == sesion.Cuit.DatosImpositivos.IdCondIVA);
                                }).Descr;
                                Campo6 = String.Format("{0,-27}", Truncate(RespAux6, 27));
                            }
                            catch
                            {
                            }
                            string Campo7 = String.Format("{0,-8}", sesion.Cuit.DatosImpositivos.FechaInicioActividades.ToString("yyyyMMdd"));
                            string Campo8 = String.Format("{0,-30}", sesion.Cuit.Domicilio.Calle);
                            string Campo9 = String.Format("{0,-6}", sesion.Cuit.Domicilio.Nro);
                            string Campo10 = String.Format("{0,-5}", sesion.Cuit.Domicilio.Piso);
                            string Campo11 = String.Format("{0,-5}", sesion.Cuit.Domicilio.Depto);
                            string Campo12 = String.Format("{0,-5}", sesion.Cuit.Domicilio.Sector);
                            string Campo13 = String.Format("{0,-5}", sesion.Cuit.Domicilio.Torre);
                            string Campo14 = String.Format("{0,-5}", sesion.Cuit.Domicilio.Manzana);
                            string Campo15 = Convert.ToInt32(sesion.Cuit.Domicilio.Provincia.Id).ToString("00");
                            string Campo16 = String.Format("{0,-8}", sesion.Cuit.Domicilio.CodPost);
                            string Campo17 = String.Format("{0,-25}", Truncate(sesion.Cuit.Domicilio.Localidad, 25));
                            sbDataCabeceraE.AppendLine("1" + Campo2 + Campo3 + Campo4 + Campo5 + Campo6 + Campo7 + Campo8 + Campo9 + Campo10 + Campo11 + Campo12 + Campo13 + Campo14 + Campo15 + Campo16 + Campo17);
                            using (StreamWriter outfile = new StreamWriter(Server.MapPath(@"~/Temp/" + sbCabeceraE.ToString())))
                            {
                                outfile.Write(sbDataCabeceraE.ToString());
                            }

                            //Crear archivo CABECERA COMPROBANTE 
                            System.Text.StringBuilder sbCabeceraC = new System.Text.StringBuilder();
                            sbCabeceraC.Append(sb.ToString() + "-CABECERA_COMPROBANTE.txt");
                            m = new System.IO.MemoryStream();
                            fs = new System.IO.FileStream(Server.MapPath(@"~/Temp/" + sbCabeceraC.ToString()), System.IO.FileMode.Create);
                            m.WriteTo(fs);
                            fs.Close();
                            //Guardar info en archivo CABECERA COMPROBANTE
                            System.Text.StringBuilder sbDataCabeceraC = new System.Text.StringBuilder();
                            Campo2 = "ORIGINAL";
                            Campo3 = String.Format("{0,-8}", lote.comprobante[0].cabecera.informacion_comprobante.fecha_emision);
                            Campo4 = lote.comprobante[0].cabecera.informacion_comprobante.tipo_de_comprobante.ToString("00");
                            if (Campo4 == "01" || Campo4 == "02" || Campo4 == "03" || Campo4 == "04" || Campo4 == "05" || Campo4 == "39" || Campo4 == "60" || Campo4 == "63")
                            {
                                Campo5 = "A";
                            }
                            else if (Campo4 == "06" || Campo4 == "07" || Campo4 == "08" || Campo4 == "09" || Campo4 == "10" || Campo4 == "40" || Campo4 == "61" || Campo4 == "64")
                            {
                                Campo5 = "B";
                            }
                            else
                            {
                                Campo5 = " ";
                            }
                            Campo6 = lote.comprobante[0].cabecera.informacion_comprobante.punto_de_venta.ToString("0000");
                            Campo7 = lote.comprobante[0].cabecera.informacion_comprobante.numero_comprobante.ToString("00000000");
                            Campo8 = lote.comprobante[0].cabecera.informacion_comprobante.numero_comprobante.ToString("00000000");
                            Campo9 = lote.comprobante[0].cabecera.informacion_comprador.codigo_doc_identificatorio.ToString("00");
                            Campo10 = lote.comprobante[0].cabecera.informacion_comprador.nro_doc_identificatorio.ToString("00000000000");
                            Campo11 = String.Format("{0,-30}", lote.comprobante[0].cabecera.informacion_comprador.denominacion);
                            Campo12 = lote.comprobante[0].cabecera.informacion_comprador.condicion_IVA.ToString("00");
                            Campo13 = String.Format("{0,-30}", Truncate(lote.comprobante[0].cabecera.informacion_comprador.domicilio_calle, 30));
                            Campo14 = String.Format("{0,-6}", lote.comprobante[0].cabecera.informacion_comprador.domicilio_numero);
                            Campo15 = String.Format("{0,-5}", lote.comprobante[0].cabecera.informacion_comprador.domicilio_piso);
                            Campo16 = String.Format("{0,-5}", lote.comprobante[0].cabecera.informacion_comprador.domicilio_depto);
                            Campo17 = String.Format("{0,-5}", lote.comprobante[0].cabecera.informacion_comprador.domicilio_sector);
                            string Campo18 = String.Format("{0,-5}", lote.comprobante[0].cabecera.informacion_comprador.domicilio_torre);
                            string Campo19 = String.Format("{0,-5}", lote.comprobante[0].cabecera.informacion_comprador.domicilio_manzana);
                            string Campo20 = String.Format("{0,2}", lote.comprobante[0].cabecera.informacion_comprador.provincia);
                            string Campo21 = String.Format("{0,-8}", lote.comprobante[0].cabecera.informacion_comprador.cp);
                            string Campo22 = String.Format("{0,-25}", Truncate(lote.comprobante[0].cabecera.informacion_comprador.localidad, 25));
                            string Campo23 = String.Format("{0,16}", lote.comprobante[0].resumen.importe_total_factura.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[0].resumen.importe_total_factura.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                            string Campo24 = String.Format("{0,16}", lote.comprobante[0].resumen.importe_total_concepto_no_gravado.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[0].resumen.importe_total_concepto_no_gravado.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                            string Campo25 = String.Format("{0,16}", lote.comprobante[0].resumen.importe_total_neto_gravado.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[0].resumen.importe_total_neto_gravado.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                            string Campo26 = String.Format("{0,16}", lote.comprobante[0].resumen.impuesto_liq.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[0].resumen.impuesto_liq.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                            string Campo27 = String.Format("{0,16}", lote.comprobante[0].resumen.impuesto_liq_rni.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[0].resumen.impuesto_liq_rni.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                            string Campo28 = String.Format("{0,16}", lote.comprobante[0].resumen.importe_operaciones_exentas.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[0].resumen.importe_operaciones_exentas.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                            string Campo29 = String.Format("{0,16}", lote.comprobante[0].resumen.importe_total_impuestos_nacionales.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[0].resumen.importe_total_impuestos_nacionales.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                            string Campo30 = String.Format("{0,16}", lote.comprobante[0].resumen.importe_total_ingresos_brutos.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[0].resumen.importe_total_ingresos_brutos.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                            string Campo31 = String.Format("{0,16}", lote.comprobante[0].resumen.importe_total_impuestos_municipales.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[0].resumen.importe_total_impuestos_municipales.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                            string Campo32 = String.Format("{0,16}", lote.comprobante[0].resumen.importe_total_impuestos_internos.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[0].resumen.importe_total_impuestos_internos.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                            string Campo33 = String.Format("{0,-3}", lote.comprobante[0].resumen.codigo_moneda);
                            string Campo34 = String.Format("{0,11}", lote.comprobante[0].resumen.tipo_de_cambio.ToString(new string(Convert.ToChar("0"), 8) + ".00")).Substring(0, 8) + String.Format("{0,11}", lote.comprobante[0].resumen.tipo_de_cambio.ToString(new string(Convert.ToChar("0"), 8) + ".00")).Substring(9, 2);
                            int CantAlicuotas = 0;
                            if (lote.comprobante[0].resumen.cant_alicuotas_iva == 0)
                            {
                                if (lote.comprobante[0].resumen.impuestos != null)
                                {
                                    for (int z = 0; z < lote.comprobante[0].resumen.impuestos.Length; z++)
                                    {
                                        if (lote.comprobante[0].resumen.impuestos[z].codigo_impuesto == 1)
                                        {
                                            CantAlicuotas += 1;
                                        }
                                    }
                                }
                            }
                            else
                            {
                                CantAlicuotas = lote.comprobante[0].resumen.cant_alicuotas_iva;
                            }
                            string Campo35 = String.Format("{0,1}", CantAlicuotas);
                            string Campo36 = String.Format("{0,1}", lote.comprobante[0].cabecera.informacion_comprobante.codigo_operacion);
                            string Campo37 = String.Format("{0,-14}", lote.comprobante[0].cabecera.informacion_comprobante.cae);
                            string Campo38 = String.Format("{0,-8}", lote.comprobante[0].cabecera.informacion_comprobante.fecha_vencimiento_cae);
                            string Campo39 = String.Format("{0,8}", "        ");

                            sbDataCabeceraC.AppendLine("1" + Campo2 + Campo3 + Campo4 + Campo5 + Campo6 + Campo7 + Campo8 + Campo9 + Campo10 + Campo11 + Campo12 + Campo13 + Campo14 + Campo15 + Campo16 + Campo17 + Campo18 + Campo19 + Campo20 + Campo21 + Campo22 + Campo23 + Campo24 + Campo25 + Campo26 + Campo27 + Campo28 + Campo29 + Campo30 + Campo31 + Campo32 + Campo33 + Campo34 + Campo35 + Campo36 + Campo37 + Campo38 + Campo39);
                            using (StreamWriter outfile = new StreamWriter(Server.MapPath(@"~/Temp/" + sbCabeceraC.ToString())))
                            {
                                outfile.Write(sbDataCabeceraC.ToString());
                            }

                            //Crear archivo DETALLE
                            System.Text.StringBuilder sbDetalle = new System.Text.StringBuilder();
                            sbDetalle.Append(sb.ToString() + "-DETALLE.txt");
                            m = new System.IO.MemoryStream();
                            fs = new System.IO.FileStream(Server.MapPath(@"~/Temp/" + sbDetalle.ToString()), System.IO.FileMode.Create);
                            m.WriteTo(fs);
                            fs.Close();
                            //Guardar info en archivo DETALLE
                            System.Text.StringBuilder sbDataDetalle = new System.Text.StringBuilder();
                            for (int i = 0; i < lote.comprobante[0].detalle.linea.Length; i++)
                            {
                                string descr = lote.comprobante[0].detalle.linea[i].descripcion;
                                if (descr.Length > 0 && descr.Substring(0, 1) == "%")
                                {
                                    descr = RN.Funciones.HexToString(descr);
                                }
                                Campo2 = String.Format("{0,-100}", Truncate(descr, 100));
                                //cantidad de 12 (7 + 5)
                                Campo3 = String.Format("{0,13}", lote.comprobante[0].detalle.linea[i].cantidad.ToString(new string(Convert.ToChar("0"), 7) + ".00000")).Substring(0, 7) + String.Format("{0,13}", lote.comprobante[0].detalle.linea[i].cantidad.ToString(new string(Convert.ToChar("0"), 7) + ".00000")).Substring(8, 5);
                                //ojo format
                                Campo4 = Convert.ToInt32(lote.comprobante[0].detalle.linea[i].unidad).ToString("00");
                                Campo5 = String.Format("{0,17}", lote.comprobante[0].detalle.linea[i].precio_unitario.ToString(new string(Convert.ToChar("0"), 13) + ".000")).Substring(0, 13) + String.Format("{0,17}", lote.comprobante[0].detalle.linea[i].precio_unitario.ToString(new string(Convert.ToChar("0"), 13) + ".000")).Substring(14, 3);
                                Campo6 = String.Format("{0,16}", lote.comprobante[0].detalle.linea[i].importe_total_descuentos.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[0].detalle.linea[i].importe_total_descuentos.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                //importe ajuste
                                Campo7 = String.Format("{0,16}", new string(Convert.ToChar("0"), 16));
                                Campo8 = String.Format("{0,17}", lote.comprobante[0].detalle.linea[i].importe_total_articulo.ToString(new string(Convert.ToChar("0"), 13) + ".000")).Substring(0, 13) + String.Format("{0,17}", lote.comprobante[0].detalle.linea[i].importe_total_articulo.ToString(new string(Convert.ToChar("0"), 13) + ".000")).Substring(14, 3);
                                Campo9 = String.Format("{0,5}", lote.comprobante[0].detalle.linea[i].alicuota_iva.ToString("00.00")).Substring(0, 2) + String.Format("{0,5}", lote.comprobante[0].detalle.linea[i].alicuota_iva.ToString("00.00")).Substring(3, 2);
                                Campo10 = String.Format("{0,17}", lote.comprobante[0].detalle.linea[i].importe_iva.ToString(new string(Convert.ToChar("0"), 14) + ".00")).Substring(0, 14) + String.Format("{0,17}", lote.comprobante[0].detalle.linea[i].importe_iva.ToString(new string(Convert.ToChar("0"), 14) + ".00")).Substring(15, 2);
                                Campo11 = String.Format("{0,1}", lote.comprobante[0].detalle.linea[i].indicacion_exento_gravado);
                                sbDataDetalle.AppendLine("3" + Campo2 + Campo3 + Campo4 + Campo5 + Campo6 + Campo7 + Campo8 + Campo9 + Campo10 + Campo11);
                            }
                            using (StreamWriter outfile = new StreamWriter(Server.MapPath(@"~/Temp/" + sbDetalle.ToString())))
                            {
                                outfile.Write(sbDataDetalle.ToString());
                            }

                            //Descargar ZIP ( Cabecera Emisor, Cabecera Comprobante y Detalle )
                            string filename = sbZIP.ToString();
                            String dlDir = @"~/Temp/";
                            String path = Server.MapPath(dlDir + filename);
                            System.IO.FileInfo toDownload = new System.IO.FileInfo(path);
                            System.IO.FileInfo toCabeceraE = new System.IO.FileInfo(Server.MapPath(dlDir + sbCabeceraE.ToString()));
                            System.IO.FileInfo toCabeceraC = new System.IO.FileInfo(Server.MapPath(dlDir + sbCabeceraC.ToString()));
                            System.IO.FileInfo toDetalle = new System.IO.FileInfo(Server.MapPath(dlDir + sbDetalle.ToString()));

                            using (ZipFile zip = new ZipFile())
                            {
                                zip.AddFile(Server.MapPath(dlDir + sbCabeceraE.ToString()), "");
                                zip.AddFile(Server.MapPath(dlDir + sbCabeceraC.ToString()), "");
                                zip.AddFile(Server.MapPath(dlDir + sbDetalle.ToString()), "");
                                zip.Save(Server.MapPath(dlDir + filename));
                                toCabeceraE.Delete();
                                toCabeceraC.Delete();
                                toDetalle.Delete();
                            }
                            if (toDownload.Exists)
                            {
                                script = "window.open('DescargaTemporarios.aspx?archivo=" + sbZIP.ToString() + "', '');";
                                ScriptManager.RegisterStartupScript(this, typeof(Page), "popup", script, true);

                            }
                            else
                            {
                                WebForms.Excepciones.Redireccionar(new EX.Validaciones.ArchivoInexistente(filename), "~/NotificacionDeExcepcion.aspx");
                            }
                        }
                        catch (Exception ex)
                        {
                            script = "Problemas para generar la interfaz.\\n" + ex.Message + "\\n" + ex.StackTrace;
                            RN.Sesion.GrabarLogTexto(Server.MapPath("~/Consultar.txt"), script);
                            MensajeLabel.Text = script;
                        }
                    }
                    else
                    {
                        MensajeLabel.Text = "Esta opción está disponible sólo para comprobantes de venta electrónica";
                    }
                    #endregion
                    break;
                case "ConsultarInterfacturas":
                    #region ConsultarOnLine
                    try
                    {
                        if (comprobante.NaturalezaComprobante.Id == "Venta" && comprobante.IdDestinoComprobante == "ITF")
                        {
                            string NroCertif = ((Entidades.Sesion)Session["Sesion"]).Cuit.NroSerieCertifITF;
                            if (NroCertif.Equals(string.Empty))
                            {
                                MensajeLabel.Text = "Aún no disponemos de su certificado digital";
                                return;
                            }
                            RN.Sesion.GrabarLogTexto(Server.MapPath("~/Consultar.txt"), "Consulta de Lote CUIT: " + comprobante.Cuit + "  Nro.Lote: " + comprobante.NroLote + "  Nro. Punto de Vta.: " + comprobante.NroPuntoVta);
                            RN.Sesion.GrabarLogTexto(Server.MapPath("~/Consultar.txt"), "NroSerieCertifITF: " + NroCertif);
                            if (NroCertif.Equals(string.Empty))
                            {
                                MensajeLabel.Text = "Aún no disponemos de su certificado digital";
                                return;
                            }
                            certificado = CaptchaDotNet2.Security.Cryptography.Encryptor.Encrypt(NroCertif, "srgerg$%^bg", Convert.FromBase64String("srfjuoxp")).ToString();
                            org.dyndns.cedweb.consulta.ConsultaIBK clcdyndns1 = new org.dyndns.cedweb.consulta.ConsultaIBK();
                            string ConsultaIBKUtilizarServidorExterno = System.Configuration.ConfigurationManager.AppSettings["ConsultaIBKUtilizarServidorExterno"];
                            RN.Sesion.GrabarLogTexto(Server.MapPath("~/Consultar.txt"), "Parametro ConsultaIBKUtilizarServidorExterno: " + ConsultaIBKUtilizarServidorExterno);
                            if (ConsultaIBKUtilizarServidorExterno == "SI")
                            {
                                clcdyndns1.Url = System.Configuration.ConfigurationManager.AppSettings["ConsultaIBKurl"];
                                RN.Sesion.GrabarLogTexto(Server.MapPath("~/Consultar.txt"), "Parametro ConsultaIBKurl: " + System.Configuration.ConfigurationManager.AppSettings["ConsultaIBKurl"]);
                            }
                            org.dyndns.cedweb.consulta.ConsultarResult clcrdyndns = new org.dyndns.cedweb.consulta.ConsultarResult();
                            clcrdyndns = clcdyndns1.Consultar(Convert.ToInt64(comprobante.Cuit), comprobante.NroLote, comprobante.NroPuntoVta, certificado);
                            FeaEntidades.InterFacturas.lote_comprobantes lc = new FeaEntidades.InterFacturas.lote_comprobantes();
                            lc = Funciones.Ws2Fea(clcrdyndns);
                            lc.comprobante[0].IdNaturalezaComprobante = "Venta";
                            //Controlar que sea el mismo comprobante (local vs on-line)
                            if (comprobante.Nro != lc.comprobante[0].cabecera.informacion_comprobante.numero_comprobante)
                            {
                                MensajeLabel.Text = "(Campo: Nro. de Comprobante). Hay diferencias entre en comprobante local y el registrado en Interfacturas / AFIP. No se puede actualizar el estado.";
                                return;
                            }
                            if (comprobante.TipoComprobante.Id != lc.comprobante[0].cabecera.informacion_comprobante.tipo_de_comprobante)
                            {
                                MensajeLabel.Text = "(Campo: Tipo de Comprobante). Hay diferencias entre en comprobante local y el registrado en Interfacturas / AFIP. No se puede actualizar el estado.";
                                return;
                            }
                            Session["ComprobanteATratar"] = new Entidades.ComprobanteATratar(Entidades.Enum.TratamientoComprobante.Consulta, comprobante);
                            script = "window.open('/ComprobanteConsulta.aspx', '');";
                            ScriptManager.RegisterStartupScript(this, typeof(Page), "popup", script, true);
                        }
                        else
                        {
                            MensajeLabel.Text = "Esta opción está disponible sólo para comprobantes de venta electrónica, canal ITF (Interfacturas)";
                        }
                    }
                    catch (System.Web.Services.Protocols.SoapException soapEx)
                    {
                        try
                        {
                            XmlDocument doc = new XmlDocument();
                            doc.LoadXml(soapEx.Detail.OuterXml);
                            XmlNamespaceManager nsManager = new
                                XmlNamespaceManager(doc.NameTable);
                            nsManager.AddNamespace("errorNS",
                                "http://www.cedeira.com.ar/webservices");
                            XmlNode Node =
                                doc.DocumentElement.SelectSingleNode("errorNS:Error", nsManager);
                            string errorNumber =
                                Node.SelectSingleNode("errorNS:ErrorNumber",
                                nsManager).InnerText;
                            string errorMessage =
                                Node.SelectSingleNode("errorNS:ErrorMessage",
                                nsManager).InnerText;
                            string errorSource =
                                Node.SelectSingleNode("errorNS:ErrorSource",
                                nsManager).InnerText;
                            MensajeLabel.Text = soapEx.Actor + " : " + errorMessage.Replace("\r", "").Replace("\n", "");
                        }
                        catch (Exception)
                        {
                            throw soapEx;
                        }
                    }
                    #endregion
                    break;
            }
        }
        protected void AccionSubirAAFIPButton_Click(object sender, EventArgs e)
        {
            if (Funciones.SessionTimeOut(Session))
            {
                Response.Redirect("~/SessionTimeout.aspx");
            }
            else
            {
                ActualizarEstadoPanel.Visible = false;
                DescargarPDFPanel.Visible = false;
                if (((Entidades.Sesion)Session["Sesion"]).Usuario.Id == null)
                {
                    ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Su sesión ha caducado por inactividad. Por favor vuelva a loguearse."), false);
                }
                else
                {
                    try
                    {
                        try
                        {
                            int auxPV;
                            auxPV = Convert.ToInt32(PuntoVtaDropDownList.SelectedValue);
                            string idtipo = ((Entidades.Sesion)Session["Sesion"]).UN.PuntosVta.Find(delegate(Entidades.PuntoVta pv)
                            {
                                return pv.Nro == auxPV;
                            }).IdTipoPuntoVta;
                            if (idtipo != "Comun")
                            {
                                ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Esta opción solo está habilitada para puntos de venta Comun RG.2485."), false);
                                return;
                            }
                            string respuesta = "";
                            FeaEntidades.InterFacturas.lote_comprobantes lote = new FeaEntidades.InterFacturas.lote_comprobantes();
                            System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(lote.GetType());
                            byte[] bytes = new byte[((Entidades.ComprobanteATratar)ViewState["ComprobanteATratar"]).Comprobante.Request.Length * sizeof(char)];
                            System.Buffer.BlockCopy(((Entidades.ComprobanteATratar)ViewState["ComprobanteATratar"]).Comprobante.Request.ToCharArray(), 0, bytes, 0, bytes.Length);
                            System.IO.MemoryStream ms = new System.IO.MemoryStream(bytes);
                            ms.Seek(0, System.IO.SeekOrigin.Begin);
                            lote = (FeaEntidades.InterFacturas.lote_comprobantes)x.Deserialize(ms);

                            //Grabar en base de datos
                            lote.cabecera_lote.DestinoComprobante = "AFIP";
                            lote.comprobante[0].cabecera.informacion_comprobante.Observacion = "";
                            RN.Comprobante.Registrar(lote, null, IdNaturalezaComprobanteTextBox.Text, "AFIP", "PteEnvio", PeriodicidadEmisionDropDownList.SelectedValue, DateTime.ParseExact(FechaProximaEmisionDatePickerWebUserControl.Text, "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture), Convert.ToInt32(CantidadComprobantesAEmitirTextBox.Text), Convert.ToInt32(CantidadComprobantesEmitidosTextBox.Text), Convert.ToInt32(CantidadDiasFechaVtoTextBox.Text), string.Empty, false, string.Empty, string.Empty, string.Empty, ((Entidades.Sesion)Session["Sesion"]));

                            string caeNro = "";
                            string caeFecVto = "";
                            respuesta = RN.ComprobanteAFIP.EnviarAFIP(out caeNro, out caeFecVto, lote, (Entidades.Sesion)Session["Sesion"]);

                            RN.Sesion.GrabarLogTexto(Server.MapPath("~/Consultar.txt"), respuesta);
                            ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript(respuesta), false);

                            if (respuesta.Length >= 12 && respuesta.Substring(0, 12) == "Resultado: A")
                            {
                                AjustarLoteParaITF(lote);

                                //Actualizar estado on-line.
                                if (caeNro != "")
                                {
                                    lote.cabecera_lote.resultado = "A";
                                    lote.comprobante[0].cabecera.informacion_comprobante.resultado = "A";
                                    lote.comprobante[0].cabecera.informacion_comprobante.cae = caeNro;
                                    lote.comprobante[0].cabecera.informacion_comprobante.caeSpecified = true;
                                    lote.comprobante[0].cabecera.informacion_comprobante.fecha_vencimiento_cae = caeFecVto;
                                    lote.comprobante[0].cabecera.informacion_comprobante.fecha_vencimiento_caeSpecified = true;
                                    lote.comprobante[0].cabecera.informacion_comprobante.fecha_obtencion_cae = DateTime.Now.ToString("yyyyMMdd");
                                    lote.comprobante[0].cabecera.informacion_comprobante.fecha_obtencion_caeSpecified = true;
                                }
                                string XML = "";
                                RN.Comprobante.SerializarLc(out XML, lote);
                                Entidades.Comprobante comprobante = new Entidades.Comprobante();
                                comprobante.Cuit = lote.comprobante[0].cabecera.informacion_vendedor.cuit.ToString();
                                comprobante.TipoComprobante.Id = lote.comprobante[0].cabecera.informacion_comprobante.tipo_de_comprobante;
                                comprobante.NroPuntoVta = lote.comprobante[0].cabecera.informacion_comprobante.punto_de_venta;
                                comprobante.Nro = lote.comprobante[0].cabecera.informacion_comprobante.numero_comprobante;
                                RN.Comprobante.Leer(comprobante, ((Entidades.Sesion)Session["Sesion"]));
                                comprobante.Response = XML;
                                comprobante.WF.Estado = "Vigente";
                                RN.Comprobante.Actualizar(comprobante, (Entidades.Sesion)Session["Sesion"]);

                                RN.Comprobante.Leer(comprobante, ((Entidades.Sesion)Session["Sesion"]));
                                DescargarPDFPanel.Visible = true;
                            }
                        }
                        catch (System.Web.Services.Protocols.SoapException soapEx)
                        {
                            try
                            {
                                XmlDocument doc = new XmlDocument();
                                doc.LoadXml(soapEx.Detail.OuterXml);
                                XmlNamespaceManager nsManager = new
                                    XmlNamespaceManager(doc.NameTable);
                                nsManager.AddNamespace("errorNS",
                                    "http://www.cedeira.com.ar/webservices");
                                XmlNode Node =
                                    doc.DocumentElement.SelectSingleNode("errorNS:Error", nsManager);
                                string errorNumber =
                                    Node.SelectSingleNode("errorNS:ErrorNumber",
                                    nsManager).InnerText;
                                string errorMessage =
                                    Node.SelectSingleNode("errorNS:ErrorMessage",
                                    nsManager).InnerText;
                                string errorSource =
                                    Node.SelectSingleNode("errorNS:ErrorSource",
                                    nsManager).InnerText;
                                ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript(soapEx.Actor.Trim() + ": " + errorMessage), false);
                            }
                            catch (Exception)
                            {
                                throw soapEx;
                            }
                        }

                    }
                    catch (Exception ex)
                    {
                        RN.Sesion.GrabarLogTexto(Server.MapPath("~/Consultar.txt"), ex.Message);
                        ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Problemas al enviar el comprobante a AFIP.  " + ex.Message), false);
                    }
                }
            }
        }
        protected void AccionValidarEnInterfacturasButton_Click(object sender, EventArgs e)
        {
            if (Funciones.SessionTimeOut(Session))
            {
                Response.Redirect("~/SessionTimeout.aspx");
            }
            else
            {
                ActualizarEstadoPanel.Visible = false;
                DescargarPDFPanel.Visible = false;
                //ActualizarEstadoButton.DataBind();
                //DescargarPDFButton.DataBind();
                if (((Entidades.Sesion)Session["Sesion"]).Usuario.Id == null)
                {
                    ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Su sesión ha caducado por inactividad. Por favor vuelva a loguearse."), false);
                }
                else
                {
                    try
                    {
                        string NroCertif = ((Entidades.Sesion)Session["Sesion"]).Cuit.NroSerieCertifITF;
                        if (NroCertif.Equals(string.Empty))
                        {
                            ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Aún no disponemos de su certificado digital."), false);
                            return;
                        }
                        try
                        {
                            string certificado = "";
                            string respuesta = "";

                            certificado = CaptchaDotNet2.Security.Cryptography.Encryptor.Encrypt(NroCertif, "srgerg$%^bg", Convert.FromBase64String("srfjuoxp")).ToString();
                            org.dyndns.cedweb.valido.ValidoIBK edyndns = new org.dyndns.cedweb.valido.ValidoIBK();
                            string ValidarIBKUtilizarServidorExterno = System.Configuration.ConfigurationManager.AppSettings["ValidarIBKUtilizarServidorExterno"];
                            if (ValidarIBKUtilizarServidorExterno == "SI")
                            {
                                edyndns.Url = System.Configuration.ConfigurationManager.AppSettings["ValidarIBKurl"];
                            }
                            FeaEntidades.InterFacturas.lote_comprobantes lote = new FeaEntidades.InterFacturas.lote_comprobantes();
                            System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(lote.GetType());
                            byte[] bytes = new byte[((Entidades.ComprobanteATratar)ViewState["ComprobanteATratar"]).Comprobante.Request.Length * sizeof(char)];
                            System.Buffer.BlockCopy(((Entidades.ComprobanteATratar)ViewState["ComprobanteATratar"]).Comprobante.Request.ToCharArray(), 0, bytes, 0, bytes.Length);
                            System.IO.MemoryStream ms = new System.IO.MemoryStream(bytes);
                            ms.Seek(0, System.IO.SeekOrigin.Begin);
                            lote = (FeaEntidades.InterFacturas.lote_comprobantes)x.Deserialize(ms);

                            AjustarLoteParaITF(lote);

                            string xmlTexto = "";
                            RN.Comprobante.SerializarLc(out xmlTexto, lote);

                            respuesta = edyndns.ValidarIBK(xmlTexto, certificado);

                            ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript(respuesta), false);
                        }
                        catch (System.Web.Services.Protocols.SoapException soapEx)
                        {
                            try
                            {
                                XmlDocument doc = new XmlDocument();
                                doc.LoadXml(soapEx.Detail.OuterXml);
                                XmlNamespaceManager nsManager = new
                                    XmlNamespaceManager(doc.NameTable);
                                nsManager.AddNamespace("errorNS",
                                    "http://www.cedeira.com.ar/webservices");
                                XmlNode Node =
                                    doc.DocumentElement.SelectSingleNode("errorNS:Error", nsManager);
                                string errorNumber =
                                    Node.SelectSingleNode("errorNS:ErrorNumber",
                                    nsManager).InnerText;
                                string errorMessage =
                                    Node.SelectSingleNode("errorNS:ErrorMessage",
                                    nsManager).InnerText;
                                string errorSource =
                                    Node.SelectSingleNode("errorNS:ErrorSource",
                                    nsManager).InnerText;
                                ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript(soapEx.Actor.Trim() + ": " + errorMessage), false);
                            }
                            catch (Exception)
                            {
                                throw soapEx;
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Problemas al enviar el comprobante a Interfacturas.  " + ex.Message), false);
                    }
                }
            }
        }
        protected void AccionSubirAInterfacturasButton_Click(object sender, EventArgs e)
        {
            if (Funciones.SessionTimeOut(Session))
            {
                Response.Redirect("~/SessionTimeout.aspx");
            }
            else
            {
                Entidades.Sesion sesion = (Entidades.Sesion)Session["Sesion"];
                ActualizarEstadoPanel.Visible = false;
                DescargarPDFPanel.Visible = false;
                if (sesion.Usuario.Id == null)
                {
                    ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Su sesión ha caducado por inactividad. Por favor vuelva a loguearse."), false);
                }
                else
                {
                    try
                    {
                        string NroCertif = "";
                        NroCertif = sesion.Cuit.NroSerieCertifITF;
                        if (NroCertif.Equals(string.Empty))
                        {
                            ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Aún no disponemos de su certificado digital."), false);
                            return;
                        }
                        try
                        {
                            string certificado = "";
                            string respuesta = "";
                            certificado = CaptchaDotNet2.Security.Cryptography.Encryptor.Encrypt(NroCertif, "srgerg$%^bg", Convert.FromBase64String("srfjuoxp")).ToString();
                            org.dyndns.cedweb.envio.EnvioIBK edyndns = new org.dyndns.cedweb.envio.EnvioIBK();
                            string EnvioIBKUtilizarServidorExterno = System.Configuration.ConfigurationManager.AppSettings["EnvioIBKUtilizarServidorExterno"];
                            if (EnvioIBKUtilizarServidorExterno == "SI")
                            {
                                edyndns.Url = System.Configuration.ConfigurationManager.AppSettings["EnvioIBKurl"];
                            }
                            org.dyndns.cedweb.envio.lc lcIBK = new org.dyndns.cedweb.envio.lc();

                            FeaEntidades.InterFacturas.lote_comprobantes lote = new FeaEntidades.InterFacturas.lote_comprobantes();
                            System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(lote.GetType());
                            byte[] bytes = new byte[((Entidades.ComprobanteATratar)ViewState["ComprobanteATratar"]).Comprobante.Request.Length * sizeof(char)];
                            System.Buffer.BlockCopy(((Entidades.ComprobanteATratar)ViewState["ComprobanteATratar"]).Comprobante.Request.ToCharArray(), 0, bytes, 0, bytes.Length);
                            System.IO.MemoryStream ms = new System.IO.MemoryStream(bytes);
                            ms.Seek(0, System.IO.SeekOrigin.Begin);
                            lote = (FeaEntidades.InterFacturas.lote_comprobantes)x.Deserialize(ms);

                            //Grabar en base de datos
                            lote.cabecera_lote.DestinoComprobante = "ITF";
                            lote.comprobante[0].cabecera.informacion_comprobante.Observacion = "";

                            AjustarLoteParaITF(lote);

                            lcIBK = Conversor.Entidad2IBK(lote);

                            respuesta = edyndns.EnviarIBK(lcIBK, certificado);
                            respuesta = respuesta.Replace("'", "-");

                            ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript(respuesta), false);

                            if (respuesta == "Comprobante enviado satisfactoriamente a Interfacturas.")
                            {
                                Entidades.Comprobante comprobante = ((Entidades.ComprobanteATratar)ViewState["ComprobanteATratar"]).Comprobante;
                                RN.Comprobante.Leer(comprobante, sesion);
                                comprobante.WF.Estado = "PteConf";
                                RN.Comprobante.Actualizar(comprobante, sesion);
                                RN.Comprobante.Leer(comprobante, sesion);
                                //Consultar y Actualizar estado on-line.                              
                                org.dyndns.cedweb.consulta.ConsultaIBK clcdyndnsConsultaIBK = new org.dyndns.cedweb.consulta.ConsultaIBK();
                                string ConsultaIBKUtilizarServidorExterno = System.Configuration.ConfigurationManager.AppSettings["ConsultaIBKUtilizarServidorExterno"];
                                RN.Sesion.GrabarLogTexto(Server.MapPath("~/Consultar.txt"), "Parametro ConsultaIBKUtilizarServidorExterno: " + ConsultaIBKUtilizarServidorExterno);
                                if (ConsultaIBKUtilizarServidorExterno == "SI")
                                {
                                    clcdyndnsConsultaIBK.Url = System.Configuration.ConfigurationManager.AppSettings["ConsultaIBKurl"];
                                    RN.Sesion.GrabarLogTexto(Server.MapPath("~/Consultar.txt"), "Parametro ConsultaIBKurl: " + System.Configuration.ConfigurationManager.AppSettings["ConsultaIBKurl"]);
                                }
                                System.Threading.Thread.Sleep(2000);
                                org.dyndns.cedweb.consulta.ConsultarResult clcrdyndns = new org.dyndns.cedweb.consulta.ConsultarResult();
                                clcrdyndns = clcdyndnsConsultaIBK.Consultar(Convert.ToInt64(lote.comprobante[0].cabecera.informacion_vendedor.cuit), lote.cabecera_lote.id_lote, lote.comprobante[0].cabecera.informacion_comprobante.punto_de_venta, certificado);
                                FeaEntidades.InterFacturas.lote_comprobantes lc = new FeaEntidades.InterFacturas.lote_comprobantes();
                                lc = Funciones.Ws2Fea(clcrdyndns);
                                string XML = "";
                                RN.Comprobante.SerializarLc(out XML, lc);
                                comprobante.Response = XML;
                                if (lc.cabecera_lote.resultado == "A")
                                {
                                    comprobante.WF.Estado = "Vigente";
                                    RN.Comprobante.Actualizar(comprobante, sesion);
                                    RN.Comprobante.Leer(comprobante, sesion);
                                    DescargarPDFPanel.Visible = true;
                                }
                                else if (lc.cabecera_lote.resultado == "R")
                                {
                                    comprobante.WF.Estado = "Rechazado";
                                    RN.Comprobante.Actualizar(comprobante, sesion);
                                    RN.Comprobante.Leer(comprobante, sesion);
                                    ActualizarEstadoPanel.Visible = false;
                                    DescargarPDFPanel.Visible = true;
                                }
                            }
                            else
                            {
                                ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Problemas al enviar el comprobante a Interfacturas. " + Funciones.TextoScript(respuesta)), false);
                            }
                        }
                        catch (System.Web.Services.Protocols.SoapException soapEx)
                        {
                            try
                            {
                                XmlDocument doc = new XmlDocument();
                                doc.LoadXml(soapEx.Detail.OuterXml);
                                XmlNamespaceManager nsManager = new
                                    XmlNamespaceManager(doc.NameTable);
                                nsManager.AddNamespace("errorNS",
                                    "http://www.cedeira.com.ar/webservices");
                                XmlNode Node =
                                    doc.DocumentElement.SelectSingleNode("errorNS:Error", nsManager);
                                string errorNumber =
                                    Node.SelectSingleNode("errorNS:ErrorNumber",
                                    nsManager).InnerText;
                                string errorMessage =
                                    Node.SelectSingleNode("errorNS:ErrorMessage",
                                    nsManager).InnerText;
                                string errorSource =
                                    Node.SelectSingleNode("errorNS:ErrorSource",
                                    nsManager).InnerText;
                                ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript(soapEx.Actor.Trim() + ": " + errorMessage), false);
                            }
                            catch (Exception)
                            {
                                throw soapEx;
                            }
                        }

                    }
                    catch (Exception ex)
                    {
                        ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Problemas al enviar el comprobante a Interfacturas.  " + ex.Message), false);
                    }
                }
            }
        }
Exemplo n.º 21
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!this.IsPostBack)
            {
                if (Funciones.SessionTimeOut(Session))
                {
                    Response.Redirect("~/SessionTimeout.aspx");
                }
                else
                {
                    Entidades.Sesion sesion = (Entidades.Sesion)Session["Sesion"];
                    Session.Remove("FaltaCalcularTotales");
                    Entidades.ComprobanteATratar comprobanteATratar = (Entidades.ComprobanteATratar)Session["ComprobanteATratar"];
                    TratamientoTextBox.Text = comprobanteATratar.Tratamiento.ToString();
                    string descrTratamiento = String.Empty;
                    switch (TratamientoTextBox.Text)
                    {
                        case "Alta":
                            descrTratamiento = "Alta";
                            break;
                        case "Clonado":
                            descrTratamiento = "Alta";
                            break;
                        case "Modificacion":
                            descrTratamiento = "Modificación";
                            break;
                    }
                    IdNaturalezaComprobanteTextBox.Text = comprobanteATratar.Comprobante.NaturalezaComprobante.Id;
                    switch (IdNaturalezaComprobanteTextBox.Text)
                    {
                        case "Venta":
                            TituloPaginaLabel.Text = descrTratamiento + " de Comprobante";
                            DatosComprobanteLabel.Text = "COMPROBANTE DE VENTA (electrónica)";
                            if (descrTratamiento == "Alta") ProximoNroComprobanteLinkButton.Visible = true;
                            DatosEmailAvisoComprobanteContratoPanel.Visible = false;
                            break;
                        case "VentaTradic":
                            TituloPaginaLabel.Text = descrTratamiento + " de Comprobante";
                            DatosComprobanteLabel.Text = "COMPROBANTE DE VENTA (tradicional)";
                            DatosEmailAvisoComprobanteContratoPanel.Visible = false;
                            break;
                        case "VentaContrato":
                            TituloPaginaLabel.Text = descrTratamiento + " de Contrato";
                            DatosComprobanteLabel.Text = "COMPROBANTE DE VENTA (electrónica)";
                            NumeroDeLabel.Text = "Número de contrato";
                            break;
                        case "Compra":
                            TituloPaginaLabel.Text = descrTratamiento + " de Comprobante";
                            DatosComprobanteLabel.Text = "COMPROBANTE DE COMPRA";
                            DatosEmailAvisoComprobanteContratoPanel.Visible = false;
                            break;
                        default:
                            DatosComprobanteLabel.Text = "<<< NATURALEZA y TRATAMIENTO DEL COMPROBANTE DESCONOCIDOS >>>";
                            break;
                    }

                    //referencias = new System.Collections.Generic.List<FeaEntidades.InterFacturas.informacion_comprobanteReferencias>();
                    //FeaEntidades.InterFacturas.informacion_comprobanteReferencias referencia = new FeaEntidades.InterFacturas.informacion_comprobanteReferencias();
                    //referencias.Add(referencia);
                    //referenciasGridView.DataSource = referencias;
                    //referenciasGridView.DataBind();
                    //ViewState["referencias"] = referencias;

                    //VENDEDOR
                    Condicion_IVA_VendedorDropDownList.DataValueField = "Codigo";
                    Condicion_IVA_VendedorDropDownList.DataTextField = "Descr";
                    Condicion_IVA_VendedorDropDownList.DataSource = FeaEntidades.CondicionesIVA.CondicionIVA.Lista();
                    Condicion_IVA_VendedorDropDownList.DataBind();
                    Condicion_Ingresos_Brutos_VendedorDropDownList.DataValueField = "Codigo";
                    Condicion_Ingresos_Brutos_VendedorDropDownList.DataTextField = "Descr";
                    Condicion_Ingresos_Brutos_VendedorDropDownList.DataSource = FeaEntidades.CondicionesIB.CondicionIB.Lista();
                    Condicion_Ingresos_Brutos_VendedorDropDownList.DataBind();
                    Provincia_VendedorDropDownList.DataValueField = "Codigo";
                    Provincia_VendedorDropDownList.DataTextField = "Descr";
                    Provincia_VendedorDropDownList.DataSource = FeaEntidades.CodigosProvincia.CodigoProvincia.Lista();
                    Provincia_VendedorDropDownList.DataBind();

                    //COMPRADOR
                    Codigo_Doc_Identificatorio_CompradorDropDownList.DataValueField = "Codigo";
                    Codigo_Doc_Identificatorio_CompradorDropDownList.DataTextField = "Descr";
                    Codigo_Doc_Identificatorio_CompradorDropDownList.DataSource = FeaEntidades.Documentos.Documento.Lista();
                    Codigo_Doc_Identificatorio_CompradorDropDownList.DataBind();
                    Codigo_Doc_Identificatorio_CompradorDropDownList.SelectedValue = new FeaEntidades.Documentos.CUIT().Codigo.ToString();
                    Condicion_IVA_CompradorDropDownList.DataValueField = "Codigo";
                    Condicion_IVA_CompradorDropDownList.DataTextField = "Descr";
                    Condicion_IVA_CompradorDropDownList.DataSource = FeaEntidades.CondicionesIVA.CondicionIVA.Lista();
                    Condicion_IVA_CompradorDropDownList.DataBind();
                    Provincia_CompradorDropDownList.DataValueField = "Codigo";
                    Provincia_CompradorDropDownList.DataTextField = "Descr";
                    Provincia_CompradorDropDownList.DataSource = FeaEntidades.CodigosProvincia.CodigoProvincia.Lista();
                    Provincia_CompradorDropDownList.DataBind();

                    //COMPROBANTE
                    if (IdNaturalezaComprobanteTextBox.Text.IndexOf("Venta") != -1)
                    {
                        Tipo_De_ComprobanteDropDownList.DataValueField = "Codigo";
                        Tipo_De_ComprobanteDropDownList.DataTextField = "Descr";
                        Tipo_De_ComprobanteDropDownList.DataSource = FeaEntidades.TiposDeComprobantes.TipoComprobante.ListaCompletaAFIP();
                        Tipo_De_ComprobanteDropDownList.DataBind();
                    }
                    else
                    {
                        Tipo_De_ComprobanteDropDownList.DataValueField = "Codigo";
                        Tipo_De_ComprobanteDropDownList.DataTextField = "DescrCompleta";
                        Tipo_De_ComprobanteDropDownList.DataSource = FeaEntidades.TiposDeComprobantes.TipoComprobante.ListaCompletaAFIPCompras();
                        Tipo_De_ComprobanteDropDownList.DataBind();
                    }
                    CodigoOperacionDropDownList.DataValueField = "Codigo";
                    CodigoOperacionDropDownList.DataTextField = "Descr";
                    CodigoOperacionDropDownList.DataSource = FeaEntidades.CodigosOperacion.CodigoOperacion.Lista();
                    CodigoOperacionDropDownList.DataBind();
                    IVAcomputableDropDownList.DataValueField = "Codigo";
                    IVAcomputableDropDownList.DataTextField = "Descr";
                    IVAcomputableDropDownList.DataSource = FeaEntidades.Dicotomicos.Dicotomico.Lista();
                    IVAcomputableDropDownList.DataBind();
                    MonedaComprobanteDropDownList.DataValueField = "Codigo";
                    MonedaComprobanteDropDownList.DataTextField = "Descr";
                    MonedaComprobanteDropDownList.DataSource = FeaEntidades.CodigosMoneda.CodigoMoneda.ListaNoExportacion();
                    MonedaComprobanteDropDownList.DataBind();

                    //EXPORTACION
                    TipoExpDropDownList.DataValueField = "Codigo";
                    TipoExpDropDownList.DataTextField = "Descr";
                    TipoExpDropDownList.DataSource = FeaEntidades.TiposExportacion.TipoExportacion.ListaSinInformar();
                    TipoExpDropDownList.DataBind();
                    IdiomaDropDownList.DataValueField = "Codigo";
                    IdiomaDropDownList.DataTextField = "Descr";
                    IdiomaDropDownList.DataSource = FeaEntidades.Idiomas.Idioma.ListaSinInformar();
                    IdiomaDropDownList.DataBind();
                    PaisDestinoExpDropDownList.DataValueField = "Codigo";
                    PaisDestinoExpDropDownList.DataTextField = "Descr";
                    PaisDestinoExpDropDownList.DataSource = FeaEntidades.DestinosPais.DestinoPais.ListaSinInformar();
                    PaisDestinoExpDropDownList.DataBind();
                    IncotermsDropDownList.DataValueField = "Codigo";
                    IncotermsDropDownList.DataTextField = "Descr";
                    IncotermsDropDownList.DataSource = FeaEntidades.Incoterms.Incoterm.ListaSinInformar();
                    IncotermsDropDownList.DataBind();
                    CodigoConceptoDropDownList.DataValueField = "Codigo";
                    CodigoConceptoDropDownList.DataTextField = "Descr";
                    CodigoConceptoDropDownList.DataSource = FeaEntidades.CodigosConcepto.CodigosConcepto.Lista();
                    CodigoConceptoDropDownList.DataBind();

                    //DETALLE DE ARTÍCULOS / SERVICIOS
                    DetalleLinea.IdNaturalezaComprobante = IdNaturalezaComprobanteTextBox.Text;

                    //DATOS DE EMISIÓN
                    PeriodicidadEmisionDropDownList.DataValueField = "Id";
                    PeriodicidadEmisionDropDownList.DataTextField = "Descr";
                    PeriodicidadEmisionDropDownList.DataSource = RN.PeriodicidadEmision.Lista(IdNaturalezaComprobanteTextBox.Text == "VentaContrato");
                    PeriodicidadEmisionDropDownList.DataBind();
                    PeriodicidadEmisionDropDownList.SelectedIndex = 0;
                    IdDestinoComprobanteDropDownList.DataValueField = "Id";
                    IdDestinoComprobanteDropDownList.DataTextField = "Descr";
                    IdDestinoComprobanteDropDownList.DataSource = sesion.Cuit.DestinosComprobante();
                    IdDestinoComprobanteDropDownList.DataBind();
                    IdDestinoComprobanteDropDownList.SelectedIndex = 0;

                    if (IdNaturalezaComprobanteTextBox.Text.IndexOf("Venta") != -1)
                    {
                        #region Personalización campos vendedor y comprador para VENTAS
                        //VendedorUpdatePanel.Visible = false;
                        pBody.Enabled = false;
                        switch (IdNaturalezaComprobanteTextBox.Text)
                        {
                            case "Venta":
                                ComprobantePanel.Visible = false;
                                if (TratamientoTextBox.Text == "Clonado" || TratamientoTextBox.Text == "Modificacion")
                                {
                                    UtilizarComprobantePreexistentePanel.Visible = false;
                                }
                                DatosEmisionPanel.Visible = false;
                                FechaProximaEmisionDatePickerWebUserControl.Text = new DateTime(9999, 12, 31).ToString("yyyyMMdd");
                                break;
                            case "VentaTradic":
                                UtilizarComprobantePreexistentePanel.Visible = false;
                                LoteUpdatePanel.Visible = false;
                                Id_LoteTextbox.Text = "1";
                                AFIPpanel.Visible = false;
                                InterfacturasOnLinePanel.Visible = false;
                                InterfacturasArchivoXMLpanel.Visible = false;
                                PrevisualizacionComprobantePanel.Visible = false;
                                DatosEmisionPanel.Visible = false;
                                FechaProximaEmisionDatePickerWebUserControl.Text = new DateTime(9999, 12, 31).ToString("yyyyMMdd");
                                break;
                            case "VentaContrato":
                                UtilizarComprobantePreexistentePanel.Visible = false;
                                LoteUpdatePanel.Visible = false;
                                Id_LoteTextbox.Text = "1";
                                AFIPpanel.Visible = false;
                                InterfacturasOnLinePanel.Visible = false;
                                InterfacturasArchivoXMLpanel.Visible = false;
                                PrevisualizacionComprobantePanel.Visible = false;
                                CAEPanel.Visible = false;
                                FechaEmisionDatePickerWebUserControl.Text = DateTime.Today.ToString("yyyyMMdd");
                                FechaProximaEmisionDatePickerWebUserControl.Text = DateTime.Today.ToString("yyyyMMdd");
                                CodigoConceptoDropDownList.SelectedValue = new FeaEntidades.CodigosConcepto.Servicios().Codigo.ToString();
                                FechaEmisionLabel.Text = "Fecha de alta:";
                                break;
                        }
                        if (sesion.Usuario.Id != null)
                        {
                            //Email_VendedorRequiredFieldValidator.Enabled = false;
                            EnviarXMLporMailButton.ToolTip = "se enviará, al vendedor, a " + ((Entidades.Sesion)Session["Sesion"]).Usuario.Email;
                            CompradorDropDownList.Enabled = true;
                        }
                        if (sesion.Cuit.Nro != null && sesion.Cuit.Nro != "")
                        {
                            Entidades.Cuit v = ((Entidades.Sesion)Session["Sesion"]).Cuit;
                            Cuit_VendedorTextBox.Text = v.Nro.ToString();
                            Razon_Social_VendedorTextBox.Text = v.RazonSocial;

                            Domicilio_Calle_VendedorTextBox.Text = v.Domicilio.Calle;
                            Domicilio_Numero_VendedorTextBox.Text = v.Domicilio.Nro;
                            Domicilio_Piso_VendedorTextBox.Text = v.Domicilio.Piso;
                            Domicilio_Depto_VendedorTextBox.Text = v.Domicilio.Depto;
                            Domicilio_Sector_VendedorTextBox.Text = v.Domicilio.Sector;
                            Domicilio_Torre_VendedorTextBox.Text = v.Domicilio.Torre;
                            Domicilio_Manzana_VendedorTextBox.Text = v.Domicilio.Manzana;
                            Localidad_VendedorTextBox.Text = v.Domicilio.Localidad;
                            Provincia_VendedorDropDownList.SelectedValue = v.Domicilio.Provincia.Id;
                            Cp_VendedorTextBox.Text = v.Domicilio.CodPost;
                            Contacto_VendedorTextBox.Text = v.Contacto.Nombre;
                            Email_VendedorTextBox.Text = v.Contacto.Email;
                            Telefono_VendedorTextBox.Text = v.Contacto.Telefono.ToString();
                            Condicion_IVA_VendedorDropDownList.SelectedValue = v.DatosImpositivos.IdCondIVA.ToString();
                            NroIBVendedorTextBox.Text = v.DatosImpositivos.NroIngBrutos.ToString();
                            Condicion_Ingresos_Brutos_VendedorDropDownList.SelectedValue = v.DatosImpositivos.IdCondIngBrutos.ToString();
                            if (!v.DatosIdentificatorios.GLN.ToString().Equals("0"))
                            {
                                GLN_VendedorTextBox.Text = v.DatosIdentificatorios.GLN.ToString();
                            }
                            Codigo_Interno_VendedorTextBox.Text = v.DatosIdentificatorios.CodigoInterno;
                            InicioDeActividadesVendedorDatePickerWebUserControl.Text = v.DatosImpositivos.FechaInicioActividades.ToString("yyyyMMdd");
                        }
                        System.Collections.Generic.List<Entidades.Persona> listacompradores = ((Entidades.Sesion)Session["Sesion"]).ClientesDelCuit;
                        if (listacompradores.Count > 0)
                        {
                            CompradorDropDownList.Visible = true;
                            CompradorDropDownList.DataValueField = "ClavePrimaria";
                            CompradorDropDownList.DataTextField = "RazonSocial";
                            Entidades.Persona persona = new Entidades.Persona();
                            System.Collections.Generic.List<Entidades.Persona> personalist = new System.Collections.Generic.List<Entidades.Persona>();
                            persona.RazonSocial = "";
                            personalist.Add(persona);
                            personalist.AddRange(listacompradores);
                            CompradorDropDownList.DataSource = personalist;
                            CompradorDropDownList.DataBind();
                        }
                        else
                        {
                            CompradorDropDownList.Visible = false;
                            CompradorDropDownList.DataSource = null;
                        }
                        PuntoVtaDropDownList.Enabled = true;
                        System.Collections.Generic.List<Entidades.PuntoVta> listaPuntoVta = ((Entidades.Sesion)Session["Sesion"]).UN.PuntosVtaVigentes;
                        PuntoVtaDropDownList.Visible = true;
                        PuntoVtaDropDownList.DataValueField = "Nro";
                        PuntoVtaDropDownList.DataTextField = "Descr";
                        PuntoVtaDropDownList.DataSource = listaPuntoVta;
                        PuntoVtaDropDownList.DataBind();
                        PuntoVtaDropDownList_SelectedIndexChanged(PuntoVtaDropDownList, new EventArgs());

                        VerificarDatosVendedorDelPuntoVta();
                        #endregion
                    }
                    else
                    {
                        #region Personalización campos vendedor y comprador para COMPRAS
                        CollapsiblePanelExtenderVendedor.Collapsed = false;
                        UtilizarComprobantePreexistentePanel.Visible = false;
                        PuntoVtaDropDownList.Visible = false;
                        PuntoVtaTextBox.Visible = true;
                        LoteUpdatePanel.Visible = false;
                        Id_LoteTextbox.Text = "1";
                        compradorUpdatePanel.Visible = false;
                        ReferenciasPanel.Visible = false;
                        ExportacionPanel.Visible = false;
                        DatosComerciales.Visible = false;
                        AFIPpanel.Visible = false;
                        InterfacturasOnLinePanel.Visible = false;
                        InterfacturasArchivoXMLpanel.Visible = false;
                        PrevisualizacionComprobantePanel.Visible = false;
                        VendedorDropDownList.Enabled = true;
                        DatosEmisionPanel.Visible = false;
                        FechaProximaEmisionDatePickerWebUserControl.Text = new DateTime(9999, 12, 31).ToString("yyyyMMdd");
                        if (sesion.Cuit.Nro != null && sesion.Cuit.Nro != "")
                        {
                            Entidades.Cuit v = ((Entidades.Sesion)Session["Sesion"]).Cuit;
                            Denominacion_CompradorTextBox.Text = v.RazonSocial;
                            Domicilio_Calle_CompradorTextBox.Text = v.Domicilio.Calle;
                            Domicilio_Numero_CompradorTextBox.Text = v.Domicilio.Nro;
                            Domicilio_Piso_CompradorTextBox.Text = v.Domicilio.Piso;
                            Domicilio_Depto_CompradorTextBox.Text = v.Domicilio.Depto;
                            Domicilio_Sector_CompradorTextBox.Text = v.Domicilio.Sector;
                            Domicilio_Torre_CompradorTextBox.Text = v.Domicilio.Torre;
                            Domicilio_Manzana_CompradorTextBox.Text = v.Domicilio.Manzana;
                            Localidad_CompradorTextBox.Text = v.Domicilio.Localidad;
                            Provincia_CompradorDropDownList.SelectedValue = v.Domicilio.Provincia.Id;
                            Cp_CompradorTextBox.Text = v.Domicilio.CodPost;
                            Contacto_CompradorTextBox.Text = v.Contacto.Nombre;
                            Email_CompradorTextBox.Text = v.Contacto.Email;
                            Telefono_CompradorTextBox.Text = v.Contacto.Telefono.ToString();
                            Codigo_Doc_Identificatorio_CompradorDropDownList.SelectedValue = new FeaEntidades.Documentos.CUIT().Codigo.ToString();
                            Nro_Doc_Identificatorio_CompradorTextBox.Text = v.Nro.ToString();
                            Condicion_IVA_CompradorDropDownList.SelectedValue = v.DatosImpositivos.IdCondIVA.ToString();
                            if (!v.DatosIdentificatorios.GLN.ToString().Equals("0"))
                            {
                                GLN_CompradorTextBox.Text = v.DatosIdentificatorios.GLN.ToString();
                            }
                            Codigo_Interno_CompradorTextBox.Text = v.DatosIdentificatorios.CodigoInterno;
                            InicioDeActividadesCompradorDatePickerWebUserControl.Text = v.DatosImpositivos.FechaInicioActividades.ToString("yyyyMMdd");
                        }
                        System.Collections.Generic.List<Entidades.Persona> listavendedores = ((Entidades.Sesion)Session["Sesion"]).ProveedoresDelCuit;
                        if (listavendedores.Count > 0)
                        {
                            VendedorDropDownList.Visible = true;
                            VendedorDropDownList.DataValueField = "ClavePrimaria";
                            VendedorDropDownList.DataTextField = "RazonSocialeIdPersona";
                            Entidades.Persona persona = new Entidades.Persona();
                            System.Collections.Generic.List<Entidades.Persona> personalist = new System.Collections.Generic.List<Entidades.Persona>();
                            persona.RazonSocial = "";
                            personalist.Add(persona);
                            personalist.AddRange(listavendedores);
                            VendedorDropDownList.DataSource = personalist;
                            VendedorDropDownList.DataBind();
                        }
                        else
                        {
                            VendedorDropDownList.Visible = false;
                            VendedorDropDownList.DataSource = null;
                        }
                        //Hacer algo con el punto de venta
                        #endregion
                    }

                    BindearDropDownLists();

                    MonedaComprobanteDropDownList.Enabled = true;

                    Numero_ComprobanteTextBox.Attributes.Add("autocomplete", "off");

                    try
                    {
                        //Tratamiento de clonado y modificación
                        if (comprobanteATratar.Tratamiento != Entidades.Enum.TratamientoComprobante.Alta)
                        {
                            FeaEntidades.InterFacturas.lote_comprobantes lote = new FeaEntidades.InterFacturas.lote_comprobantes();
                            System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(lote.GetType());
                            byte[] bytes = new byte[comprobanteATratar.Comprobante.Request.Length * sizeof(char)];
                            System.Buffer.BlockCopy(comprobanteATratar.Comprobante.Request.ToCharArray(), 0, bytes, 0, bytes.Length);
                            System.IO.MemoryStream ms = new System.IO.MemoryStream(bytes);
                            ms.Seek(0, System.IO.SeekOrigin.Begin);
                            lote = (FeaEntidades.InterFacturas.lote_comprobantes)x.Deserialize(ms);
                            if (lote != null)
                            {
                                LlenarCampos(lote, comprobanteATratar);
                                if (comprobanteATratar.Tratamiento == Entidades.Enum.TratamientoComprobante.Clonado) BorrarCamposNoClonables();
                            }

                            if (IdNaturalezaComprobanteTextBox.Text == "Venta" || IdNaturalezaComprobanteTextBox.Text == "VentaTradic")
                            {
                                //Informar datos actualizados del cuit.
                                VerificarDatosVendedorDelPuntoVta();

                                //Informar datos actualizados del cliente.
                                //System.Collections.Generic.List<Entidades.Persona> listaP = sesion.ClientesDelCuit.FindAll(delegate(Entidades.Persona p)
                                //{
                                //    return p.Cuit == Nro_Doc_Identificatorio_CompradorTextBox.Text && p.IdPersona == IdPersonaCompradorTextBox.Text;
                                //});
                                //if (listaP.Count != 0)
                                //{
                                //    //Denominacion_CompradorTextBox.Text = listaP[0].RazonSocial;
                                //}
                            }
                        }
                    }
                    catch
                    {
                    }

                    AyudaFechaEmisionCalcular();

                    DescargarPDFPanel.Visible = false;
                    DescargarPDFButton.Visible = true;
                    ActualizarEstadoPanel.Visible = false;
                    ActualizarEstadoButton.Visible = true;
                }
            }
        }
        private void CompletarUI(Entidades.Comprobante Comprobante)
        {
            FeaEntidades.InterFacturas.lote_comprobantes lc = new FeaEntidades.InterFacturas.lote_comprobantes();
            #region Obtención del lote desde el comprobante
            System.Xml.Serialization.XmlSerializer x;
            byte[] bytes;
            System.IO.MemoryStream ms;
            x = new System.Xml.Serialization.XmlSerializer(lc.GetType());
            try
            {
                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);
                lc = (FeaEntidades.InterFacturas.lote_comprobantes)x.Deserialize(ms);
            }
            catch
            {
                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);
                lc = (FeaEntidades.InterFacturas.lote_comprobantes)x.Deserialize(ms);
            }
            #endregion
            //Cabecera
            CompletarCabecera(lc);
            //Comprobante
            CompletarComprobante(lc);
            //Exportacion
            CompletarExportacion(lc);
            //Referencias
            //CompletarReferencias(lc);
            InfoReferencias.PuntoDeVenta = lc.comprobante[0].cabecera.informacion_comprobante.punto_de_venta.ToString();
            InfoReferencias.CompletarReferencias(lc);
            PermisosExpo.CompletarPermisos(lc);
            //Comprador
            CompletarComprador(lc);
            //Vendedor
            CompletarVendedor(lc);
            //Detalle
            DetalleLinea.CompletarDetalles(lc);
            //Descuentos globales
            DescuentosGlobales.Completar(lc);
            //impuestos globales
            ImpuestosGlobales.Completar(lc);
            ComentariosTextBox.Text = lc.comprobante[0].detalle.comentarios;
            //Resumen
            CompletarResumen(lc);
            Observaciones_ResumenTextBox.Text = Convert.ToString(lc.comprobante[0].resumen.observaciones);
            if (!lc.comprobante[0].resumen.codigo_moneda.Equals(FeaEntidades.CodigosMoneda.CodigoMoneda.Local))
            {
                Tipo_de_cambioLabel.Visible = true;
                Tipo_de_cambioTextBox.Visible = true;
            }
            else
            {
                Tipo_de_cambioLabel.Visible = false;
                Tipo_de_cambioTextBox.Visible = false;
                Tipo_de_cambioTextBox.Text = null;
            }
            //CAE
            CompletarCAE(lc);
            //Datos de emisión
            PeriodicidadEmisionDropDownList.SelectedValue = Comprobante.PeriodicidadEmision;
            IdDestinoComprobanteDropDownList.SelectedValue = Comprobante.IdDestinoComprobante;
            FechaProximaEmisionDatePickerWebUserControl.Text = Comprobante.FechaProximaEmision.ToString("yyyyMMdd");
            CantidadComprobantesAEmitirTextBox.Text = Comprobante.CantidadComprobantesAEmitir.ToString();
            CantidadComprobantesEmitidosTextBox.Text = Comprobante.CantidadComprobantesEmitidos.ToString();
            CantidadDiasFechaVtoTextBox.Text = Comprobante.CantidadDiasFechaVto.ToString();
            DatosEmailAvisoComprobanteContratoConsulta1.Datos = Comprobante.DatosEmailAvisoComprobanteContrato;
            //Esquema contable
            EsquemaContable.Completar(Comprobante);

            BindearDropDownLists();
        }
        private void GenerarInterfazRG3685(List<Entidades.Comprobante> Comprobantes)
        {
            System.Xml.Serialization.XmlSerializer x;
            byte[] bytes;
            System.IO.MemoryStream ms;
            string script;
            FeaEntidades.InterFacturas.lote_comprobantes lote;
            Entidades.Sesion sesion = (Entidades.Sesion)Session["Sesion"];
            bool HayVentas = false;
            bool HayVentasAlic = false;
            bool HayCompras = false;
            bool HayComprasAlic = false;
            ResultadosTextBox.Text = "";

            //Crear nombre de archivo default sin extensión
            System.Text.StringBuilder sb = new System.Text.StringBuilder();
            sb.Append(sesion.Cuit.Nro);
            sb.Append("-");
            sb.Append(DateTime.Now.ToString("yyyyMMdd"));

            if (Comprobantes.Count > 0)
            {
                ResultadosLabel.Visible = true;
                ResultadosTextBox.Visible = true;

                //Crear nombre de archivo ZIP
                System.Text.StringBuilder sbZIP = new System.Text.StringBuilder();
                sbZIP.Append(sb.ToString() + ".zip");

                //Crear archivo VENTAS CABECERA
                System.Text.StringBuilder sbVENTASCab = new System.Text.StringBuilder();
                sbVENTASCab.Append("REGINFO_CV_VENTAS_CBTE.TXT");    //sb.ToString() + "-CABECERA_EMISOR.txt");
                System.IO.MemoryStream m = new System.IO.MemoryStream();
                System.IO.FileStream fs = new System.IO.FileStream(Server.MapPath(@"~/Temp/" + sbVENTASCab.ToString()), System.IO.FileMode.Create);
                m.WriteTo(fs);
                fs.Close();

                //Crear archivo VENTAS ALICUOTAS
                System.Text.StringBuilder sbVENTASAlic = new System.Text.StringBuilder();
                sbVENTASAlic.Append("REGINFO_CV_VENTAS_ALICUOTAS.TXT");     //sb.ToString() + "-DETALLE.txt");
                m = new System.IO.MemoryStream();
                fs = new System.IO.FileStream(Server.MapPath(@"~/Temp/" + sbVENTASAlic.ToString()), System.IO.FileMode.Create);
                m.WriteTo(fs);
                fs.Close();

                //Crear archivo COMPRAS CABECERA
                System.Text.StringBuilder sbCOMPRASCab = new System.Text.StringBuilder();
                sbCOMPRASCab.Append("REGINFO_CV_COMPRAS_CBTE.TXT");    //sb.ToString() + "-CABECERA_EMISOR.txt");
                m = new System.IO.MemoryStream();
                fs = new System.IO.FileStream(Server.MapPath(@"~/Temp/" + sbCOMPRASCab.ToString()), System.IO.FileMode.Create);
                m.WriteTo(fs);
                fs.Close();

                //Crear archivo COMPRAS ALICUOTAS
                System.Text.StringBuilder sbCOMPRASAlic = new System.Text.StringBuilder();
                sbCOMPRASAlic.Append("REGINFO_CV_COMPRAS_ALICUOTAS.TXT");     //sb.ToString() + "-DETALLE.txt");
                m = new System.IO.MemoryStream();
                fs = new System.IO.FileStream(Server.MapPath(@"~/Temp/" + sbCOMPRASAlic.ToString()), System.IO.FileMode.Create);
                m.WriteTo(fs);
                fs.Close();

                double TotalGral = 0; double TotalNetoGravado = 0; double TotalNetoNoGravado = 0;
                double TotalImporteExento = 0; double TotalIB = 0; double TotalIM = 0;
                double TotalII = 0; double TotalOtros = 0;
                double TotalIVA270 = 0; double TotalIVA210 = 0; double TotalIVA105 = 0;
                double TotalIVA050 = 0; double TotalIVA025 = 0;

                int CantComprobantes = 0;
                
                System.Text.StringBuilder sbDataVENTASCab = new System.Text.StringBuilder();
                System.Text.StringBuilder sbDataVENTASAlic = new System.Text.StringBuilder();
                foreach (Entidades.Comprobante comprobante in Comprobantes)
                {
                    if (comprobante.NaturalezaComprobante.Id == "Venta")
                    {
                        HayVentas = true;
                        lote = new FeaEntidades.InterFacturas.lote_comprobantes();
                        x = new System.Xml.Serialization.XmlSerializer(lote.GetType());
                        if (comprobante.Estado != "Vigente")
                        {
                            MensajeLabel.Text = "El comprobante no está vigente.";
                            return;
                        }
                        try
                        {
                            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);
                            int cl = 0;

                            #region "Armar Interfaz Ventas"
                            CantComprobantes += 1;
                            //Guardar info VENTAS CABECERA
                            //string Campo2 = String.Format("{0,11}", sesion.Cuit.Nro);
                            string Campo1 = lote.comprobante[cl].cabecera.informacion_comprobante.fecha_emision;
                            string Campo2 = lote.comprobante[cl].cabecera.informacion_comprobante.tipo_de_comprobante.ToString("000");
                            string Campo3 = lote.comprobante[cl].cabecera.informacion_comprobante.punto_de_venta.ToString("00000");
                            string Campo4 = lote.comprobante[cl].cabecera.informacion_comprobante.numero_comprobante.ToString(new string(Convert.ToChar("0"), 20));
                            string Campo5 = lote.comprobante[cl].cabecera.informacion_comprobante.numero_comprobante.ToString(new string(Convert.ToChar("0"), 20));
                            string Campo6 = lote.comprobante[cl].cabecera.informacion_comprador.codigo_doc_identificatorio.ToString("00");
                            string Campo7 = lote.comprobante[cl].cabecera.informacion_comprador.nro_doc_identificatorio.ToString(new string(Convert.ToChar("0"), 20));
                            string Campo8 = Truncate(String.Format("{0,-30}", lote.comprobante[cl].cabecera.informacion_comprador.denominacion), 30);

                            //Solo se utiliza para los datos de control
                            //Las Notas de Créditos van en positivo a la AFIP, ya que ellos ponen el signo que corresponde.
                            double signo = 1;
                            if (("/3/8/13/").IndexOf("/" + lote.comprobante[cl].cabecera.informacion_comprobante.tipo_de_comprobante.ToString() + "/") != -1)
                            {
                                signo = -1;
                            }

                            string Campo9 = String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_factura.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_factura.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                            TotalGral += lote.comprobante[cl].resumen.importe_total_factura * signo;
                            string Campo10 = String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_concepto_no_gravado.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_concepto_no_gravado.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                            TotalNetoNoGravado += lote.comprobante[cl].resumen.importe_total_concepto_no_gravado * signo;

                            //string CampoXX = String.Format("{0,16}", lote.comprobante[cl].resumen.impuesto_liq_rni.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.impuesto_liq_rni.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                            string Campo11 = new string(Convert.ToChar("0"), 15);   //Percepción a no categorizados
                            string Campo12 = String.Format("{0,16}", lote.comprobante[cl].resumen.importe_operaciones_exentas.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.importe_operaciones_exentas.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                            TotalImporteExento += lote.comprobante[cl].resumen.importe_operaciones_exentas * signo;
                            //Importe de percepciones o pagos a cuenta de impuestos nacionales
                            string Campo13 = String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_impuestos_nacionales.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_impuestos_nacionales.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                            TotalOtros = lote.comprobante[cl].resumen.importe_total_impuestos_nacionales * signo;
                            string Campo14 = String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_ingresos_brutos.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_ingresos_brutos.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                            TotalIB = lote.comprobante[cl].resumen.importe_total_ingresos_brutos * signo;
                            string Campo15 = String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_impuestos_municipales.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_impuestos_municipales.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                            TotalIM = lote.comprobante[cl].resumen.importe_total_impuestos_municipales * signo;
                            string Campo16 = String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_impuestos_internos.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_impuestos_internos.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                            TotalII = lote.comprobante[cl].resumen.importe_total_impuestos_internos * signo;
                            string Campo17 = String.Format("{0,-3}", lote.comprobante[cl].resumen.codigo_moneda);
                            string Campo18 = String.Format("{0,11}", lote.comprobante[cl].resumen.tipo_de_cambio.ToString(new string(Convert.ToChar("0"), 4) + ".000000")).Substring(0, 4) + String.Format("{0,11}", lote.comprobante[cl].resumen.tipo_de_cambio.ToString(new string(Convert.ToChar("0"), 4) + ".000000")).Substring(5, 6);
                            int CantAlicuotas = 0;
                            if (lote.comprobante[cl].resumen.cant_alicuotas_iva == 0)
                            {
                                if (lote.comprobante[cl].resumen.impuestos != null)
                                {
                                    for (int z = 0; z < lote.comprobante[cl].resumen.impuestos.Length; z++)
                                    {
                                        if (lote.comprobante[cl].resumen.impuestos[z].codigo_impuesto == 1)
                                        {
                                            CantAlicuotas += 1;
                                        }
                                    }
                                }
                            }
                            else
                            {
                                CantAlicuotas = lote.comprobante[cl].resumen.cant_alicuotas_iva;
                            }
                            string Campo19 = String.Format("{0,1}", CantAlicuotas);
                            string Campo20 = String.Format("{0,1}", lote.comprobante[cl].cabecera.informacion_comprobante.codigo_operacion);
                            string Campo21 = new string(Convert.ToChar("0"), 15);  //Otros Tributos
                            string Campo22 = String.Format("{0,-8}", lote.comprobante[cl].cabecera.informacion_comprobante.fecha_vencimiento);

                            sbDataVENTASCab.AppendLine(Campo1 + Campo2 + Campo3 + Campo4 + Campo5 + Campo6 + Campo7 + Campo8 + Campo9 + Campo10 + Campo11 + Campo12 + Campo13 + Campo14 + Campo15 + Campo16 + Campo17 + Campo18 + Campo19 + Campo20 + Campo21 + Campo22);

                            //Guardar info VENTAS ALICUOTAS
                            if (CantAlicuotas != 0)
                            {
                                HayVentasAlic = true;
                                //Crear esta entidad para utilizar 'IvaVentasTotXImpuestos' y verificar que no se repitan las alicuotas de impuestos.
                                //Entidades.IvaVentas ivaVentas = new Entidades.IvaVentas();
                                //ivaVentas.IvaVentasTotXIVA = new List<Entidades.IvaVentasTotXIVA>();

                                for (int z = 0; z < lote.comprobante[cl].resumen.impuestos.Length; z++)
                                {
                                    double importe = lote.comprobante[0].resumen.impuestos[z].importe_impuesto;
                                    if (lote.comprobante[cl].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;
                                        TotalNetoGravado += baseImponible * 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);
                                                TotalNetoGravado += baseImponible * 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);
                                                TotalNetoGravado += baseImponible * 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);
                                                    }
                                                }
                                                TotalNetoGravado += baseImponible * signo;
                                            }
                                        }
                                        Campo1 = lote.comprobante[cl].cabecera.informacion_comprobante.tipo_de_comprobante.ToString("000");
                                        Campo2 = lote.comprobante[cl].cabecera.informacion_comprobante.punto_de_venta.ToString("00000");
                                        Campo3 = lote.comprobante[cl].cabecera.informacion_comprobante.numero_comprobante.ToString(new string(Convert.ToChar("0"), 20));
                                        Campo4 = String.Format("{0,16}", baseImponible.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", baseImponible.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                        if (lote.comprobante[cl].resumen.impuestos[z].porcentaje_impuesto == 0) { Campo5 = "0003"; }
                                        if (lote.comprobante[cl].resumen.impuestos[z].porcentaje_impuesto == 10.5) { Campo5 = "0004"; TotalIVA105 += lote.comprobante[cl].resumen.impuestos[z].importe_impuesto * signo; }
                                        if (lote.comprobante[cl].resumen.impuestos[z].porcentaje_impuesto == 21) { Campo5 = "0005"; TotalIVA210 += lote.comprobante[cl].resumen.impuestos[z].importe_impuesto * signo; }
                                        if (lote.comprobante[cl].resumen.impuestos[z].porcentaje_impuesto == 27) { Campo5 = "0006"; TotalIVA270 += lote.comprobante[cl].resumen.impuestos[z].importe_impuesto * signo; }
                                        if (lote.comprobante[cl].resumen.impuestos[z].porcentaje_impuesto == 5) { Campo5 = "0008"; TotalIVA050 += lote.comprobante[cl].resumen.impuestos[z].importe_impuesto * signo; }
                                        if (lote.comprobante[cl].resumen.impuestos[z].porcentaje_impuesto == 2.5) { Campo5 = "0009"; TotalIVA025 += lote.comprobante[cl].resumen.impuestos[z].importe_impuesto * signo; }
                                        Campo6 = String.Format("{0,16}", lote.comprobante[cl].resumen.impuestos[z].importe_impuesto.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.impuestos[z].importe_impuesto.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);

                                        sbDataVENTASAlic.AppendLine(Campo1 + Campo2 + Campo3 + Campo4 + Campo5 + Campo6);
                                    }
                                }
                            }
                            #endregion
                        }
                        catch (Exception ex)
                        {
                            script = "Problemas para generar la interfaz.\\n" + ex.Message + "\\n" + ex.StackTrace;
                            RN.Sesion.GrabarLogTexto(Server.MapPath("~/Consultar.txt"), script);
                            MensajeLabel.Text = script;
                        }
                    }
                }
                //Guardar info en archivo VENTAS CABECERA
                if (HayVentas)
                {
                    using (StreamWriter outfile = new StreamWriter(Server.MapPath(@"~/Temp/") + sbVENTASCab.ToString()))
                    {
                        outfile.Write(sbDataVENTASCab.ToString());
                    }

                    ResultadosTextBox.Text = "VENTAS (" + CantComprobantes + ")  Total Gral: " + TotalGral + System.Environment.NewLine;
                    if (TotalNetoGravado != 0)
                    {
                        ResultadosTextBox.Text += "Total Neto Gravado: " + TotalNetoGravado + System.Environment.NewLine;
                    }
                    if (TotalNetoNoGravado != 0)
                    {
                        ResultadosTextBox.Text += "Total Neto No Gravado: " + TotalNetoNoGravado + System.Environment.NewLine;
                    }
                    if (TotalImporteExento != 0)
                    {
                        ResultadosTextBox.Text += "Total Exento: " + TotalImporteExento + System.Environment.NewLine;
                    }
                    if (TotalIB != 0)
                    {
                        ResultadosTextBox.Text += "Total IB: " + TotalIB + System.Environment.NewLine;
                    }
                    if (TotalIM != 0)
                    {
                        ResultadosTextBox.Text += "Total IM: " + TotalIM + System.Environment.NewLine;
                    }
                    if (TotalII != 0)
                    {
                        ResultadosTextBox.Text += "Total II: " + TotalII + System.Environment.NewLine;
                    }
                    if (TotalOtros != 0)
                    {
                        ResultadosTextBox.Text += "Total Otros Imp.Nac.: " + TotalOtros + System.Environment.NewLine;
                    }
                    if (TotalIVA270 != 0)
                    {
                        ResultadosTextBox.Text += "Total IVA 27%: " + TotalIVA270 + System.Environment.NewLine;
                    }
                    if (TotalIVA210 != 0)
                    {
                        ResultadosTextBox.Text += "Total IVA 21%: " + TotalIVA210 + System.Environment.NewLine;
                    }
                    if (TotalIVA105 != 0)
                    {
                        ResultadosTextBox.Text += "Total IVA 10,5%: " + TotalIVA105 + System.Environment.NewLine;
                    }
                    if (TotalIVA050 != 0)
                    {
                        ResultadosTextBox.Text += "Total IVA 5%: " + TotalIVA050 + System.Environment.NewLine;
                    }
                    if (TotalIVA025 != 0)
                    {
                        ResultadosTextBox.Text += "Total IVA 2,5%: " + TotalIVA025 + System.Environment.NewLine;
                    }
                    ResultadosTextBox.Text += System.Environment.NewLine;
                }
                //Guardar info en archivo VENTAS ALICUOTAS
                if (HayVentasAlic)
                {
                    using (StreamWriter outfile = new StreamWriter(Server.MapPath(@"~/Temp/") + sbVENTASAlic.ToString()))
                    {
                        outfile.Write(sbDataVENTASAlic.ToString());
                    }
                }

                TotalGral = 0; TotalNetoGravado = 0; TotalNetoNoGravado = 0; 
                TotalImporteExento = 0; TotalIB = 0; TotalIM = 0;
                TotalII = 0; TotalOtros = 0;
                TotalIVA270 = 0; TotalIVA210 = 0; TotalIVA105 = 0;
                TotalIVA050 = 0; TotalIVA025 = 0;
                CantComprobantes = 0;

                System.Text.StringBuilder sbDataCOMPRASCab = new System.Text.StringBuilder();
                System.Text.StringBuilder sbDataCOMPRASAlic = new System.Text.StringBuilder();

                foreach (Entidades.Comprobante comprobante in Comprobantes)
                {
                    if (comprobante.NaturalezaComprobante.Id == "Compra")
                    {
                        HayCompras = true;
                        lote = new FeaEntidades.InterFacturas.lote_comprobantes();
                        x = new System.Xml.Serialization.XmlSerializer(lote.GetType());
                        if (comprobante.Estado != "Vigente")
                        {
                            MensajeLabel.Text = "El comprobante no está vigente.";
                            return;
                        }
                        try
                        {
                            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);
                            int cl = 0;

                            #region "Armar Interfaz Compras"
                            CantComprobantes += 1;
                            //Guardar info COMPRAS CABECERA
                            //string Campo2 = String.Format("{0,11}", sesion.Cuit.Nro);
                            string Campo1 = lote.comprobante[cl].cabecera.informacion_comprobante.fecha_emision;
                            string Campo2 = lote.comprobante[cl].cabecera.informacion_comprobante.tipo_de_comprobante.ToString("000");
                            string Campo3 = lote.comprobante[cl].cabecera.informacion_comprobante.punto_de_venta.ToString("00000");
                            string Campo4 = lote.comprobante[cl].cabecera.informacion_comprobante.numero_comprobante.ToString(new string(Convert.ToChar("0"), 20));
                            string Campo5 = new string(Convert.ToChar(" "), 16);  //Nro. de despacho de importación
                            string Campo6 = "80";
                            string Campo7 = lote.comprobante[cl].cabecera.informacion_vendedor.cuit.ToString(new string(Convert.ToChar("0"), 20));
                            string Campo8 = Truncate(String.Format("{0,-30}", lote.comprobante[cl].cabecera.informacion_vendedor.razon_social), 30);

                            //Solo se utiliza para los datos de control
                            //Las Notas de Créditos van en positivo a la AFIP, ya que ellos ponen el signo que corresponde.
                            double signo = 1;
                            if (("/3/8/13/").IndexOf("/" + lote.comprobante[cl].cabecera.informacion_comprobante.tipo_de_comprobante.ToString() + "/") != -1)
                            {
                                signo = -1;
                            }

                            string Campo9 = String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_factura.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_factura.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                            TotalGral += lote.comprobante[cl].resumen.importe_total_factura * signo;
                            string Campo10 = String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_concepto_no_gravado.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_concepto_no_gravado.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                            TotalNetoNoGravado += lote.comprobante[cl].resumen.importe_total_concepto_no_gravado * signo;

                            //string CampoXX = String.Format("{0,16}", lote.comprobante[cl].resumen.impuesto_liq_rni.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.impuesto_liq_rni.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                            string Campo11 = String.Format("{0,16}", lote.comprobante[cl].resumen.importe_operaciones_exentas.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.importe_operaciones_exentas.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                            TotalImporteExento += lote.comprobante[cl].resumen.importe_operaciones_exentas * signo;

                            //Importe de percepciones o pagos a cuenta de impuestos nacionales (IVA)
                            string Campo12 = String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_impuestos_nacionales.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_impuestos_nacionales.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                            TotalOtros += lote.comprobante[cl].resumen.importe_total_impuestos_nacionales * signo;
                            //Importe de percepciones o pagos a cuenta de impuestos nacionales (Otros impuestos)
                            string Campo13 = new string(Convert.ToChar("0"), 15);
                            string Campo14 = String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_ingresos_brutos.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_ingresos_brutos.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                            TotalIB += lote.comprobante[cl].resumen.importe_total_ingresos_brutos * signo;
                            string Campo15 = String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_impuestos_municipales.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_impuestos_municipales.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                            TotalIM += lote.comprobante[cl].resumen.importe_total_impuestos_municipales * signo;
                            string Campo16 = String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_impuestos_internos.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_impuestos_internos.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                            TotalII += lote.comprobante[cl].resumen.importe_total_impuestos_internos * signo;
                            string Campo17 = String.Format("{0,-3}", lote.comprobante[cl].resumen.codigo_moneda);
                            string Campo18 = String.Format("{0,11}", lote.comprobante[cl].resumen.tipo_de_cambio.ToString(new string(Convert.ToChar("0"), 4) + ".000000")).Substring(0, 4) + String.Format("{0,11}", lote.comprobante[cl].resumen.tipo_de_cambio.ToString(new string(Convert.ToChar("0"), 4) + ".000000")).Substring(5, 6);
                            int CantAlicuotas = 0;
                            if (lote.comprobante[cl].resumen.cant_alicuotas_iva == 0)
                            {
                                if (lote.comprobante[cl].resumen.impuestos != null)
                                {
                                    for (int z = 0; z < lote.comprobante[cl].resumen.impuestos.Length; z++)
                                    {
                                        if (lote.comprobante[cl].resumen.impuestos[z].codigo_impuesto == 1)
                                        {
                                            CantAlicuotas += 1;
                                        }
                                    }
                                }
                            }
                            else
                            {
                                CantAlicuotas = lote.comprobante[cl].resumen.cant_alicuotas_iva;
                            }
                            string Campo19 = String.Format("{0,1}", CantAlicuotas);
                            string Campo20 = String.Format("{0,1}", lote.comprobante[cl].cabecera.informacion_comprobante.codigo_operacion);
                            string Campo21 = new string(Convert.ToChar("0"), 15);           //Crédito Fiscal Computable
                            string Campo22 = new string(Convert.ToChar("0"), 15);           //Otros Tributos
                            string Campo23 = new string(Convert.ToChar("0"), 11);           //CUIT emisor / corredor
                            string Campo24 = Truncate(String.Format("{0,-30}", ""), 30);    //Denominación del emisor / corredor
                            string Campo25 = new string(Convert.ToChar("0"), 15);           //IVA comisión

                            //string Campo25 = String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_neto_gravado.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.importe_total_neto_gravado.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                            //string Campo26 = String.Format("{0,16}", lote.comprobante[cl].resumen.impuesto_liq.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.impuesto_liq.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);

                            sbDataCOMPRASCab.AppendLine(Campo1 + Campo2 + Campo3 + Campo4 + Campo5 + Campo6 + Campo7 + Campo8 + Campo9 + Campo10 + Campo11 + Campo12 + Campo13 + Campo14 + Campo15 + Campo16 + Campo17 + Campo18 + Campo19 + Campo20 + Campo21 + Campo22 + Campo23 + Campo24 + Campo25);

                            //Guardar info COMPRAS ALICUOTAS
                            if (CantAlicuotas != 0)
                            {
                                HayComprasAlic = true;
                                for (int z = 0; z < lote.comprobante[cl].resumen.impuestos.Length; z++)
                                {
                                    if (lote.comprobante[cl].resumen.impuestos[z].codigo_impuesto == 1)
                                    {
                                        Campo1 = lote.comprobante[cl].cabecera.informacion_comprobante.tipo_de_comprobante.ToString("000");
                                        Campo2 = lote.comprobante[cl].cabecera.informacion_comprobante.punto_de_venta.ToString("00000");
                                        Campo3 = lote.comprobante[cl].cabecera.informacion_comprobante.numero_comprobante.ToString(new string(Convert.ToChar("0"), 20));
                                        Campo4 = "80";
                                        Campo5 = lote.comprobante[cl].cabecera.informacion_vendedor.cuit.ToString(new string(Convert.ToChar("0"), 20));

                                        double baseImponible = lote.comprobante[cl].resumen.impuestos[z].base_imponible;
                                        TotalNetoGravado += baseImponible * signo;
                                        if (lote.comprobante[cl].resumen.impuestos[z].porcentaje_impuesto == 0)
                                        {
                                            if (lote.comprobante[cl].resumen.impuestos[z].base_imponible == 0)
                                            {
                                                for (int k = 0; k < lote.comprobante[cl].detalle.linea.Length; k++)
                                                {
                                                    if (lote.comprobante[cl].detalle.linea[k] == null) { break; }
                                                    if (lote.comprobante[cl].detalle.linea[k].indicacion_exento_gravado != null && lote.comprobante[cl].detalle.linea[k].indicacion_exento_gravado.Trim().ToUpper() == "G" && lote.comprobante[cl].detalle.linea[k].alicuota_iva == 0)
                                                    {
                                                        baseImponible += Math.Round(lote.comprobante[cl].detalle.linea[k].importe_total_articulo, 2);
                                                        TotalNetoGravado += baseImponible * signo;
                                                    }
                                                }
                                            }
                                            Campo6 = String.Format("{0,16}", baseImponible.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", baseImponible.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                            Campo7 = "0003";
                                            Campo8 = String.Format("{0,16}", lote.comprobante[cl].resumen.impuestos[z].importe_impuesto.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.impuestos[z].importe_impuesto.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                        }
                                        if (lote.comprobante[cl].resumen.impuestos[z].porcentaje_impuesto == 10.5)
                                        {
                                            if (lote.comprobante[cl].resumen.impuestos[z].base_imponible == 0)
                                            {
                                                baseImponible += Math.Round((lote.comprobante[cl].resumen.impuestos[z].importe_impuesto * 100) / lote.comprobante[cl].resumen.impuestos[z].porcentaje_impuesto, 2);
                                                TotalNetoGravado += baseImponible * signo;
                                            }
                                            Campo6 = String.Format("{0,16}", baseImponible.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", baseImponible.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                            Campo7 = "0004";
                                            Campo8 = String.Format("{0,16}", lote.comprobante[cl].resumen.impuestos[z].importe_impuesto.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.impuestos[z].importe_impuesto.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                            TotalIVA105 += lote.comprobante[cl].resumen.impuestos[z].importe_impuesto * signo;
                                        }
                                        else if (lote.comprobante[cl].resumen.impuestos[z].porcentaje_impuesto == 21)
                                        {
                                            if (lote.comprobante[cl].resumen.impuestos[z].base_imponible == 0)
                                            {
                                                baseImponible += Math.Round((lote.comprobante[cl].resumen.impuestos[z].importe_impuesto * 100) / lote.comprobante[cl].resumen.impuestos[z].porcentaje_impuesto, 2);
                                                TotalNetoGravado += baseImponible * signo;
                                            }
                                            Campo6 = String.Format("{0,16}", baseImponible.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", baseImponible.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                            Campo7 = "0005";
                                            Campo8 = String.Format("{0,16}", lote.comprobante[cl].resumen.impuestos[z].importe_impuesto.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.impuestos[z].importe_impuesto.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                            TotalIVA210 += lote.comprobante[cl].resumen.impuestos[z].importe_impuesto * signo;
                                        }
                                        else if (lote.comprobante[cl].resumen.impuestos[z].porcentaje_impuesto == 27)
                                        {
                                            if (lote.comprobante[cl].resumen.impuestos[z].base_imponible == 0)
                                            {
                                                baseImponible += Math.Round((lote.comprobante[cl].resumen.impuestos[z].importe_impuesto * 100) / lote.comprobante[cl].resumen.impuestos[z].porcentaje_impuesto, 2);
                                                TotalNetoGravado += baseImponible * signo;
                                            }
                                            Campo6 = String.Format("{0,16}", baseImponible.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", baseImponible.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                            Campo7 = "0006";
                                            Campo8 = String.Format("{0,16}", lote.comprobante[cl].resumen.impuestos[z].importe_impuesto.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.impuestos[z].importe_impuesto.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                            TotalIVA270 += lote.comprobante[cl].resumen.impuestos[z].importe_impuesto * signo;
                                        }
                                        else if (lote.comprobante[cl].resumen.impuestos[z].porcentaje_impuesto == 5)
                                        {
                                            if (lote.comprobante[cl].resumen.impuestos[z].base_imponible == 0)
                                            {
                                                baseImponible += Math.Round((lote.comprobante[cl].resumen.impuestos[z].importe_impuesto * 100) / lote.comprobante[cl].resumen.impuestos[z].porcentaje_impuesto, 2);
                                                TotalNetoGravado += baseImponible * signo;
                                            }
                                            Campo6 = String.Format("{0,16}", baseImponible.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", baseImponible.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                            Campo7 = "0008";
                                            Campo8 = String.Format("{0,16}", lote.comprobante[cl].resumen.impuestos[z].importe_impuesto.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.impuestos[z].importe_impuesto.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                            TotalIVA050 += lote.comprobante[cl].resumen.impuestos[z].importe_impuesto * signo;
                                        }
                                        else if (lote.comprobante[cl].resumen.impuestos[z].porcentaje_impuesto == 2.5)
                                        {
                                            if (lote.comprobante[cl].resumen.impuestos[z].base_imponible == 0)
                                            {
                                                baseImponible += Math.Round((lote.comprobante[cl].resumen.impuestos[z].importe_impuesto * 100) / lote.comprobante[cl].resumen.impuestos[z].porcentaje_impuesto, 2);
                                                TotalNetoGravado += baseImponible * signo;
                                            }
                                            Campo6 = String.Format("{0,16}", baseImponible.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", baseImponible.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                            Campo7 = "0009";
                                            Campo8 = String.Format("{0,16}", lote.comprobante[cl].resumen.impuestos[z].importe_impuesto.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(0, 13) + String.Format("{0,16}", lote.comprobante[cl].resumen.impuestos[z].importe_impuesto.ToString(new string(Convert.ToChar("0"), 13) + ".00")).Substring(14, 2);
                                            TotalIVA025 += lote.comprobante[cl].resumen.impuestos[z].importe_impuesto * signo;
                                        }
                                        
                                        sbDataCOMPRASAlic.AppendLine(Campo1 + Campo2 + Campo3 + Campo4 + Campo5 + Campo6 + Campo7 + Campo8);
                                    }
                                }
                            }
                            #endregion
                        }
                        catch (Exception ex)
                        {
                            script = "Problemas para generar la interfaz.\\n" + ex.Message + "\\n" + ex.StackTrace;
                            RN.Sesion.GrabarLogTexto(Server.MapPath("~/Consultar.txt"), script);
                            MensajeLabel.Text = script;
                        }
                    }
                }
                //Guardar info en archivo COMPRAS CABECERA
                if (HayCompras)
                {
                    using (StreamWriter outfile = new StreamWriter(Server.MapPath(@"~/Temp/") + sbCOMPRASCab.ToString()))
                    {
                        outfile.Write(sbDataCOMPRASCab.ToString());
                    }

                    ResultadosTextBox.Text = "COMPRAS (" + CantComprobantes + ")  Total Gral: " + TotalGral + System.Environment.NewLine;
                    if (TotalNetoGravado != 0)
                    {
                        ResultadosTextBox.Text += "Total Neto Gravado: " + TotalNetoGravado + System.Environment.NewLine;
                    }
                    if (TotalNetoNoGravado != 0)
                    {
                        ResultadosTextBox.Text += "Total Neto No Gravado: " + TotalNetoNoGravado + System.Environment.NewLine;
                    }
                    if (TotalImporteExento != 0)
                    {
                        ResultadosTextBox.Text += "Total Exento: " + TotalImporteExento + System.Environment.NewLine;
                    }
                    if (TotalIB != 0)
                    {
                        ResultadosTextBox.Text += "Total IB: " + TotalIB + System.Environment.NewLine;
                    }
                    if (TotalIM != 0)
                    {
                        ResultadosTextBox.Text += "Total IM: " + TotalIM + System.Environment.NewLine;
                    }
                    if (TotalII != 0)
                    {
                        ResultadosTextBox.Text += "Total II: " + TotalII + System.Environment.NewLine;
                    }
                    if (TotalOtros != 0)
                    {
                        ResultadosTextBox.Text += "Total Otros Imp.Nac.: " + TotalOtros + System.Environment.NewLine;
                    }
                    if (TotalIVA270 != 0)
                    {
                        ResultadosTextBox.Text += "Total IVA 27%: " + TotalIVA270 + System.Environment.NewLine;
                    }
                    if (TotalIVA210 != 0)
                    {
                        ResultadosTextBox.Text += "Total IVA 21%: " + TotalIVA210 + System.Environment.NewLine;
                    }
                    if (TotalIVA105 != 0)
                    {
                        ResultadosTextBox.Text += "Total IVA 10,5%: " + TotalIVA105 + System.Environment.NewLine;
                    }
                    if (TotalIVA050 != 0)
                    {
                        ResultadosTextBox.Text += "Total IVA 5%: " + TotalIVA050 + System.Environment.NewLine;
                    }
                    if (TotalIVA025 != 0)
                    {
                        ResultadosTextBox.Text += "Total IVA 2,5%: " + TotalIVA025 + System.Environment.NewLine;
                    }
                    ResultadosTextBox.Text += System.Environment.NewLine;
                }
                //Guardar info en archivo COMPRAS ALICUOTAS
                if (HayComprasAlic)
                {
                    using (StreamWriter outfile = new StreamWriter(Server.MapPath(@"~/Temp/") + sbCOMPRASAlic.ToString()))
                    {
                        outfile.Write(sbDataCOMPRASAlic.ToString());
                    }
                }
                

                //Descargar ZIP ( Ventas y Alicuotas )
                string filename = sbZIP.ToString();
                String dlDir = @"~/Temp/";
                String path = Server.MapPath(dlDir + filename);
                System.IO.FileInfo toDownload = new System.IO.FileInfo(path);
                System.IO.FileInfo toVENTASCab = new System.IO.FileInfo(Server.MapPath(dlDir + sbVENTASCab.ToString()));
                System.IO.FileInfo toVENTASAlic = new System.IO.FileInfo(Server.MapPath(dlDir + sbVENTASAlic.ToString()));
                System.IO.FileInfo toCOMPRASCab = new System.IO.FileInfo(Server.MapPath(dlDir + sbCOMPRASCab.ToString()));
                System.IO.FileInfo toCOMPRASAlic = new System.IO.FileInfo(Server.MapPath(dlDir + sbCOMPRASAlic.ToString()));

                using (ZipFile zip = new ZipFile())
                {
                    if (HayVentas)
                    {
                        zip.AddFile(Server.MapPath(dlDir + sbVENTASCab.ToString()), "");
                    }
                    if (HayVentasAlic)
                    {
                        zip.AddFile(Server.MapPath(dlDir + sbVENTASAlic.ToString()), "");
                    }
                    if (HayCompras)
                    {
                        zip.AddFile(Server.MapPath(dlDir + sbCOMPRASCab.ToString()), "");
                    }
                    if (HayComprasAlic)
                    {
                        zip.AddFile(Server.MapPath(dlDir + sbCOMPRASAlic.ToString()), "");
                    }
                    zip.Save(Server.MapPath(dlDir + filename));
                    toVENTASCab.Delete();
                    toVENTASAlic.Delete();
                    toCOMPRASCab.Delete();
                    toCOMPRASAlic.Delete();
                }
                if (toDownload.Exists)
                {
                    script = "window.open('DescargaTemporarios.aspx?archivo=" + sbZIP.ToString() + "', '');";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "popup", script, true);
                }
                else
                {
                    WebForms.Excepciones.Redireccionar(new EX.Validaciones.ArchivoInexistente(filename), "~/NotificacionDeExcepcion.aspx");
                }
            }
            else
            {
                MensajeLabel.Text = "No hay información para procesar la Interfaz RG.3685";
            }
        }
Exemplo n.º 24
0
		protected void GenerarButton_Click(object sender, EventArgs e)
		{
			FeaEntidades.InterFacturas.lote_comprobantes lote = new FeaEntidades.InterFacturas.lote_comprobantes();
			FeaEntidades.InterFacturas.cabecera_lote cab=new FeaEntidades.InterFacturas.cabecera_lote();
			cab.cantidad_reg = 1;
			cab.cuit_canal = Convert.ToInt64(Cuit_CanalTextBox.Text);
			cab.cuit_vendedor = Convert.ToInt64(Cuit_VendedorTextBox.Text);
			cab.id_lote = Convert.ToInt64(Id_LoteTextbox.Text);
			cab.presta_servSpecified = true;
			cab.presta_serv = Convert.ToInt32(Presta_ServCheckBox.Checked);
			cab.punto_de_venta = Convert.ToInt32(Punto_VentaTextBox.Text);
			lote.cabecera_lote = cab;

			FeaEntidades.InterFacturas.cabecera compcab = new FeaEntidades.InterFacturas.cabecera();

			FeaEntidades.InterFacturas.informacion_comprador infcompra = new FeaEntidades.InterFacturas.informacion_comprador();
			infcompra.GLN = Convert.ToInt64(GLN_CompradorTextBox.Text);
			infcompra.codigo_interno = Codigo_Interno_CompradorTextBox.Text;
			infcompra.codigo_doc_identificatorio = Convert.ToInt32(Codigo_Doc_Identificatorio_CompradorDropDownList.SelectedValue);
			infcompra.nro_doc_identificatorio = Convert.ToInt64(Nro_Doc_Identificatorio_CompradorTextBox.Text);
			infcompra.denominacion = Denominacion_CompradorTextBox.Text;
			infcompra.condicion_IVASpecified = true;
			infcompra.condicion_IVA = Convert.ToInt32(Condicion_IVA_CompradorDropDownList.SelectedValue);
			//infcompra.condicion_ingresos_brutosSpecified = true;
			//infcompra.condicion_ingresos_brutos = Convert.ToInt32(Condicion_Ingresos_Brutos_CompradorDropDownList.SelectedValue);
			//infcompra.nro_ingresos_brutos
			infcompra.inicio_de_actividades = InicioDeActividadesCompradorDatePickerWebUserControl.CalendarDateString;
			infcompra.contacto = Contacto_CompradorTextBox.Text;
			infcompra.domicilio_calle = Domicilio_Calle_CompradorTextBox.Text;
			infcompra.domicilio_numero = Domicilio_Numero_CompradorTextBox.Text;
			infcompra.domicilio_piso = Domicilio_Piso_CompradorTextBox.Text;
			infcompra.domicilio_depto = Domicilio_Depto_CompradorTextBox.Text;
			infcompra.domicilio_sector = Domicilio_Sector_CompradorTextBox.Text;
			infcompra.domicilio_torre = Domicilio_Torre_CompradorTextBox.Text;
			infcompra.domicilio_manzana = Domicilio_Manzana_CompradorTextBox.Text;
			infcompra.localidad = Localidad_CompradorTextBox.Text;
			infcompra.provincia = Provincia_CompradorTextBox.Text;
			infcompra.cp = Cp_CompradorTextBox.Text;
			infcompra.email = Email_CompradorTextBox.Text;
			infcompra.telefono = Telefono_CompradorTextBox.Text;

			compcab.informacion_comprador = infcompra;

			FeaEntidades.InterFacturas.informacion_comprobante infcomprob = new FeaEntidades.InterFacturas.informacion_comprobante();
			infcomprob.tipo_de_comprobante = Convert.ToInt32(Tipo_De_ComprobanteDropDownList.SelectedValue);
			infcomprob.numero_comprobante = Convert.ToInt64(Numero_ComprobanteTextBox.Text);
			infcomprob.punto_de_venta = Convert.ToInt32(Punto_VentaTextBox.Text);
			infcomprob.fecha_emision = FechaEmisionDatePickerWebUserControl.CalendarDateString;
			infcomprob.fecha_vencimiento = FechaVencimientoDatePickerWebUserControl.CalendarDateString;
			infcomprob.fecha_serv_desde = FechaServDesdeDatePickerWebUserControl.CalendarDateString;
			infcomprob.fecha_serv_hasta = FechaServHastaDatePickerWebUserControl.CalendarDateString;
			//infcomprob.condicion_de_pago = Convert.ToInt32(Condicion_De_PagoTextBox.Text);
			//infcomprob.iva_computable = Iva_ComputableDropDownList.SelectedValue;
			//infcomprob.codigo_operacion = Codigo_OperacionDropDownList.SelectedValue;
			infcomprob.cae = CAETextBox.Text;
			infcomprob.fecha_obtencion_cae = FechaCAEObtencionDatePickerWebUserControl.CalendarDateString;
			infcomprob.fecha_vencimiento_cae = FechaCAEVencimientoDatePickerWebUserControl.CalendarDateString;
			compcab.informacion_comprobante = infcomprob;

			FeaEntidades.InterFacturas.informacion_vendedor infovend = new FeaEntidades.InterFacturas.informacion_vendedor();
			infovend.GLN = Convert.ToInt64(GLN_VendedorTextBox.Text);
			infovend.codigo_interno = Codigo_Interno_VendedorTextBox.Text;
			infovend.razon_social = Razon_Social_VendedorTextBox.Text;
			infovend.cuit = Convert.ToInt64(Cuit_VendedorTextBox.Text);
			infovend.condicion_IVASpecified = true;
			infovend.condicion_IVA = Convert.ToInt32(Condicion_IVA_VendedorDropDownList.SelectedValue);
			//infovend.condicion_ingresos_brutosSpecified = true;
			//infovend.condicion_ingresos_brutos = Convert.ToInt32(Condicion_Ingresos_Brutos_VendedorDropDownList.SelectedValue);
			//infovend.nro_ingresos_brutos = Nro_Ingresos_Brutos_VendedorTextBox.Text;
			infovend.inicio_de_actividades = InicioDeActividadesCompradorDatePickerWebUserControl.CalendarDateString;
			infovend.contacto = Contacto_VendedorTextBox.Text;
			infovend.domicilio_calle = Domicilio_Calle_VendedorTextBox.Text;
			infovend.domicilio_numero = Domicilio_Numero_VendedorTextBox.Text;
			infovend.domicilio_piso = Domicilio_Piso_VendedorTextBox.Text;
			infovend.domicilio_depto = Domicilio_Depto_VendedorTextBox.Text;
			infovend.domicilio_sector = Domicilio_Sector_VendedorTextBox.Text;
			infovend.domicilio_torre = Domicilio_Torre_VendedorTextBox.Text;
			infovend.domicilio_manzana = Domicilio_Manzana_VendedorTextBox.Text;
			infovend.localidad = Localidad_VendedorTextBox.Text;
			infovend.provincia = Provincia_VendedorTextBox.Text;
			infovend.cp = Cp_VendedorTextBox.Text;
			infovend.email = Email_VendedorTextBox.Text;
			infovend.telefono = Telefono_VendedorTextBox.Text;
			compcab.informacion_vendedor = infovend;

			FeaEntidades.InterFacturas.comprobante comp = new FeaEntidades.InterFacturas.comprobante();
			comp.cabecera = compcab;

			FeaEntidades.InterFacturas.detalle det = new FeaEntidades.InterFacturas.detalle();

			System.Collections.Generic.List<FeaEntidades.InterFacturas.linea> listadelineas = (System.Collections.Generic.List<FeaEntidades.InterFacturas.linea>)ViewState["lineas"];
			for (int i = 0; i < listadelineas.Count;i++ )
			{
				det.linea[i] = new FeaEntidades.InterFacturas.linea();
				det.linea[i].numeroLinea = i+1;
				det.linea[i].descripcion = listadelineas[i].descripcion;
				det.linea[i].importe_total_articulo = listadelineas[i].importe_total_articulo;
			}

			det.comentarios = ComentariosTextBox.Text;

			comp.detalle = det;

			FeaEntidades.InterFacturas.resumen r = new FeaEntidades.InterFacturas.resumen();
			r.tipo_de_cambio = 1;
			r.codigo_moneda = "PES";
			r.importe_total_neto_gravado = Convert.ToDouble(Importe_Total_Neto_Gravado_ResumenTextBox.Text);
			r.importe_total_concepto_no_gravado = Convert.ToDouble(Importe_Total_Concepto_No_Gravado_ResumenTextBox.Text);
			r.importe_operaciones_exentas = Convert.ToDouble(Importe_Operaciones_Exentas_ResumenTextBox.Text);
			r.impuesto_liq = Convert.ToDouble(Impuesto_Liq_ResumenTextBox.Text);
			r.impuesto_liq_rni = Convert.ToDouble(Impuesto_Liq_Rni_ResumenTextBox.Text);

			//r.importe_total_impuestos_nacionales = Convert.ToDouble(Importe_Total_Impuestos_Nacionales_ResumenTextBox.Text);
			//r.importe_total_ingresos_brutos = Convert.ToDouble(Importe_Total_Ingresos_Brutos_ResumenTextBox.Text);
			//r.importe_total_impuestos_municipales = Convert.ToDouble(Importe_Total_Impuestos_Municipales_ResumenTextBox.Text);
			//r.importe_total_impuestos_internos = Convert.ToDouble(Importe_Total_Impuestos_Internos_ResumenTextBox.Text);

			r.importe_total_factura = Convert.ToDouble(Importe_Total_Factura_ResumenTextBox.Text);

			r.observaciones = Observaciones_ResumenTextBox.Text;

			comp.resumen = r;

			lote.comprobante[0] = comp;

			System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(lote.GetType());
			System.Text.StringBuilder sb = new System.Text.StringBuilder();
			sb.Append(lote.cabecera_lote.cuit_vendedor);
			sb.Append("-");
			sb.Append(lote.cabecera_lote.punto_de_venta);
			sb.Append("-");
			sb.Append(lote.comprobante[0].cabecera.informacion_comprobante.tipo_de_comprobante);
			sb.Append("-");
			sb.Append(lote.comprobante[0].cabecera.informacion_comprobante.numero_comprobante);
			sb.Append(".xml");
			System.IO.Stream fs = new System.IO.FileStream(sb.ToString(), System.IO.FileMode.Create);
			System.Xml.XmlWriter writer = new System.Xml.XmlTextWriter(fs, System.Text.Encoding.GetEncoding("ISO-8859-1"));
			x.Serialize(writer, lote);
			fs.Close();

			System.IO.MemoryStream m = new System.IO.MemoryStream();
			System.IO.StreamWriter sw = new System.IO.StreamWriter(m);
			sw.Flush();
			System.Xml.XmlWriter writerdememoria = new System.Xml.XmlTextWriter(m, System.Text.Encoding.GetEncoding("ISO-8859-1"));
			x.Serialize(writerdememoria, lote);

			System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage("*****@*****.**",
				Email_VendedorTextBox.Text, "Nuevo comprobante", string.Empty);

			m.Seek(0, System.IO.SeekOrigin.Begin);

			System.Net.Mime.ContentType contentType = new System.Net.Mime.ContentType();
			contentType.MediaType = System.Net.Mime.MediaTypeNames.Application.Octet;
			contentType.Name = sb.ToString();
			System.Net.Mail.Attachment attachment = new System.Net.Mail.Attachment(m, contentType);

			mail.Attachments.Add(attachment);

			System.Net.Mail.SmtpClient smtpClient = new System.Net.Mail.SmtpClient();
			smtpClient.Host = "vsmtpr.bancogalicia.com.ar";

			smtpClient.Send(mail);
			m.Close();

			//Envío de mail a nosotros

			System.Net.Mail.MailMessage mailCedeira = new System.Net.Mail.MailMessage("*****@*****.**",
				"*****@*****.**", "XML_" + lote.comprobante[0].cabecera.informacion_vendedor.cuit.ToString()+"_"+System.DateTime.Now.ToLocalTime(), string.Empty);
			sb = new System.Text.StringBuilder();
			sb.AppendLine(lote.comprobante[0].cabecera.informacion_vendedor.email);
			sb.AppendLine(lote.comprobante[0].cabecera.informacion_vendedor.razon_social);
			sb.AppendLine(lote.comprobante[0].cabecera.informacion_vendedor.telefono);
			sb.AppendLine(lote.comprobante[0].cabecera.informacion_vendedor.localidad);
			sb.AppendLine(lote.comprobante[0].cabecera.informacion_vendedor.contacto);
			sb.AppendLine(lote.comprobante[0].cabecera.informacion_vendedor.cuit.ToString());

			mailCedeira.Body = sb.ToString();

			smtpClient = new System.Net.Mail.SmtpClient();
			smtpClient.Host = "vsmtpr.bancogalicia.com.ar";

			smtpClient.Send(mailCedeira);

			ClientScript.RegisterStartupScript(GetType(), "Message", "<SCRIPT LANGUAGE='javascript'>alert('Archivo enviado satisfactoriamente');</script>");
		}