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; } }
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); } }
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"); } } }
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; }
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); }
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); } } } }
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"); } } }
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("&", "&"); 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; }
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); } } }
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"; } } }
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"); } } }
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"); } } }
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); } } } }
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"; } }
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>"); }