public void CompletarPermisos(FeaEntidades.InterFacturas.lote_comprobantes lc) { //Permisos de exportación permisos = new System.Collections.Generic.List <FeaEntidades.InterFacturas.permisos>(); if (lc.comprobante[0].cabecera.informacion_comprobante.informacion_exportacion != null && lc.comprobante[0].cabecera.informacion_comprobante.informacion_exportacion.permisos != null) { foreach (FeaEntidades.InterFacturas.permisos r in lc.comprobante[0].cabecera.informacion_comprobante.informacion_exportacion.permisos) { //descripcioncodigo_de_permiso ( XmlIgnoreAttribute ) //Se busca la descripción a través del código. try { if (r != null) { string descrcodigo = ((DropDownList)permisosGridView.FooterRow.FindControl("ddlcodigo_de_permiso")).SelectedItem.Text; ((DropDownList)permisosGridView.FooterRow.FindControl("ddlcodigo_de_permiso")).SelectedValue = r.destino_mercaderia.ToString(); descrcodigo = ((DropDownList)permisosGridView.FooterRow.FindControl("ddlcodigo_de_permiso")).SelectedItem.Text; r.descripcion_destino_mercaderia = descrcodigo; permisos.Add(r); } } catch //Referencia no valida { } } } if (permisos.Count.Equals(0)) { permisos.Add(new FeaEntidades.InterFacturas.permisos()); } permisosGridView.DataSource = permisos; permisosGridView.DataBind(); ViewState["permisos"] = permisos; }
public FeaEntidades.InterFacturas.lote_comprobantes Consultar(long cuit_vendedor, long id_lote, int punto_de_venta, string pathCertificado) { FeaEntidades.InterFacturas.lote_comprobantes lc = new FeaEntidades.InterFacturas.lote_comprobantes(); try { string nroSerie = CaptchaDotNet2.Security.Cryptography.Encryptor.Decrypt(pathCertificado, "srgerg$%^bg", Convert.FromBase64String("srfjuoxp")).ToString(); using (FileStream fs = File.Open(Server.MapPath("~/Consultar.txt"), FileMode.Append, FileAccess.Write)) { using (StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.UTF8)) { sw.WriteLine(System.DateTime.Now); sw.WriteLine("pathCertificado cifrado:" + pathCertificado); sw.WriteLine("pathCertificado descifrado:" + nroSerie); sw.WriteLine("cuit_vendedor:" + cuit_vendedor); sw.WriteLine("id_lote:" + id_lote); } } CedServicios.RN.IBK.consulta_lote_comprobantes consulta = new CedServicios.RN.IBK.consulta_lote_comprobantes(); consulta.cuit_canal = 30690783521; consulta.cuit_vendedor = cuit_vendedor; consulta.id_lote = id_lote; consulta.cod_interno_canal = string.Empty; consulta.punto_de_ventaSpecified = true; consulta.punto_de_venta = punto_de_venta; lc = CedServicios.RN.Comprobante.ConsultarIBK(consulta, nroSerie); } catch (Exception ex) { throw ExcepcionesSOAP.RaiseException("Consultar", "http://www.cedeira.com.ar/webservices", ex.Message, "0", ex.Source, FaultCode.Server); } return(lc); }
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; } }
public string EnviarIBK(FeaEntidades.InterFacturas.lote_comprobantes lc, string pathCertificado) { string resultado = string.Empty; try { string nroSerie = CaptchaDotNet2.Security.Cryptography.Encryptor.Decrypt(pathCertificado, "srgerg$%^bg", Convert.FromBase64String("srfjuoxp")).ToString(); using (FileStream fs = File.Open(Server.MapPath("~/Enviar.txt"), FileMode.Append, FileAccess.Write)) { using (StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.UTF8)) { sw.WriteLine(System.DateTime.Now); sw.WriteLine("pathCertificado cifrado:" + pathCertificado); sw.WriteLine("pathCertificado descifrado:" + nroSerie); sw.WriteLine("cuit_vendedor:" + lc.cabecera_lote.cuit_vendedor); sw.WriteLine("id_lote:" + lc.cabecera_lote.id_lote); } } resultado = CedServicios.RN.Comprobante.EnviarIBK(lc, nroSerie); } catch (Exception ex) { throw ExcepcionesSOAP.RaiseException("Enviar", "http://www.cedeira.com.ar/webservices", ex.Message, "0", ex.Source, FaultCode.Server); } return(resultado); }
private static void ReemplarResumenImportesMonedaExtranjera(FeaEntidades.InterFacturas.lote_comprobantes lc) { if (!lc.comprobante[0].resumen.codigo_moneda.Equals("PES")) { lc.comprobante[0].resumen.importe_total_neto_gravado = lc.comprobante[0].resumen.importes_moneda_origen.importe_total_neto_gravado; lc.comprobante[0].resumen.importe_total_concepto_no_gravado = lc.comprobante[0].resumen.importes_moneda_origen.importe_total_concepto_no_gravado; lc.comprobante[0].resumen.importe_operaciones_exentas = lc.comprobante[0].resumen.importes_moneda_origen.importe_operaciones_exentas; lc.comprobante[0].resumen.impuesto_liq = lc.comprobante[0].resumen.importes_moneda_origen.impuesto_liq; lc.comprobante[0].resumen.impuesto_liq_rni = lc.comprobante[0].resumen.importes_moneda_origen.impuesto_liq_rni; lc.comprobante[0].resumen.importe_total_impuestos_municipales = lc.comprobante[0].resumen.importes_moneda_origen.importe_total_impuestos_municipales; lc.comprobante[0].resumen.importe_total_impuestos_nacionales = lc.comprobante[0].resumen.importes_moneda_origen.importe_total_impuestos_nacionales; lc.comprobante[0].resumen.importe_total_ingresos_brutos = lc.comprobante[0].resumen.importes_moneda_origen.importe_total_ingresos_brutos; lc.comprobante[0].resumen.importe_total_impuestos_internos = lc.comprobante[0].resumen.importes_moneda_origen.importe_total_impuestos_internos; lc.comprobante[0].resumen.importe_total_factura = lc.comprobante[0].resumen.importes_moneda_origen.importe_total_factura; if (lc.comprobante[0].resumen.descuentos != null) { for (int i = 0; i < lc.comprobante[0].resumen.descuentos.Length; i++) { if (lc.comprobante[0].resumen.descuentos[i] != null) { lc.comprobante[0].resumen.descuentos[i].importe_descuento = lc.comprobante[0].resumen.descuentos[i].importe_descuento_moneda_origen; lc.comprobante[0].resumen.descuentos[i].importe_iva_descuento = lc.comprobante[0].resumen.descuentos[i].importe_iva_descuento_moneda_origen; } } } } }
public void Completar(FeaEntidades.InterFacturas.lote_comprobantes lc) { descuentos = new System.Collections.Generic.List <FeaEntidades.InterFacturas.resumenDescuentos>(); if (lc.comprobante[0].resumen.descuentos != null) { foreach (FeaEntidades.InterFacturas.resumenDescuentos r in lc.comprobante[0].resumen.descuentos) { if (r.importe_descuento_moneda_origenSpecified) { r.importe_descuento = r.importe_descuento_moneda_origen; } if (r.importe_iva_descuento_moneda_origenSpecified) { r.importe_iva_descuento = r.importe_iva_descuento_moneda_origen; } descuentos.Add(r); } } if (descuentos.Count.Equals(0)) { descuentos.Add(new FeaEntidades.InterFacturas.resumenDescuentos()); } descuentosGridView.DataSource = descuentos; descuentosGridView.DataBind(); BindearDropDownLists(); ViewState["descuentos"] = descuentos; }
public static void ConsultarComprobantes(out List<eFact_I_Bj.Entidades.ComprobanteBj> Comprobantes, out FeaEntidades.InterFacturas.lote_comprobantes Lc, TipoConsulta TipoConsulta, DateTime FechaDsd, DateTime FechaHst, string IdTipoComprobante, string PuntoVenta, string NumeroComprobante, bool VerificarExistenciaCAE, CedEntidades.Sesion Sesion) { List<eFact_I_Bj.Entidades.ComprobanteBj> comprobantes = new List<eFact_I_Bj.Entidades.ComprobanteBj>(); FeaEntidades.InterFacturas.lote_comprobantes lc = new FeaEntidades.InterFacturas.lote_comprobantes(); eFact_I_Bj.RN.ComprobanteBj.Consultar(comprobantes, lc, TipoConsulta, FechaDsd, FechaHst, IdTipoComprobante, PuntoVenta, NumeroComprobante, VerificarExistenciaCAE, Sesion); Comprobantes = comprobantes; Lc = lc; }
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 LeerFormatoDetalleIBK(EventArgs e, FeaEntidades.InterFacturas.lote_comprobantes lc, System.IO.MemoryStream ms) { //Formato detalle_factura IBK ms.Seek(0, System.IO.SeekOrigin.Begin); FeaEntidades.InterFacturas.comprobante c = new FeaEntidades.InterFacturas.comprobante(); System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(c.GetType()); c = (FeaEntidades.InterFacturas.comprobante)x.Deserialize(ms); FeaEntidades.InterFacturas.comprobante[] cArray = new FeaEntidades.InterFacturas.comprobante[1]; cArray[0] = c; lc.comprobante = cArray; Session["ComprobanteAConsultar"] = lc; 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); }
public void Completar(FeaEntidades.InterFacturas.lote_comprobantes lc) { impuestos = new System.Collections.Generic.List <FeaEntidades.InterFacturas.resumenImpuestos>(); if (lc.comprobante[0].resumen.impuestos != null) { foreach (FeaEntidades.InterFacturas.resumenImpuestos imp in lc.comprobante[0].resumen.impuestos) { if (imp.importe_impuesto_moneda_origenSpecified) { imp.importe_impuesto = imp.importe_impuesto_moneda_origen; } impuestos.Add(imp); } } if (impuestos.Count.Equals(0)) { impuestos.Add(new FeaEntidades.InterFacturas.resumenImpuestos()); } impuestosGridView.DataSource = impuestos; impuestosGridView.DataBind(); ViewState["impuestos"] = impuestos; }
public FeaEntidades.InterFacturas.lote_comprobantes Consultar(long cuit_vendedor, long id_lote, int punto_de_venta, string pathCertificado) { FeaEntidades.InterFacturas.lote_comprobantes lc = new FeaEntidades.InterFacturas.lote_comprobantes(); try { string nroSerie = CaptchaDotNet2.Security.Cryptography.Encryptor.Decrypt(pathCertificado, "srgerg$%^bg", Convert.FromBase64String("srfjuoxp")).ToString(); CedWebRN.Comprobante c = new CedWebRN.Comprobante(); using (FileStream fs = File.Open(Server.MapPath("~/Consultar.txt"), FileMode.Append, FileAccess.Write)) { using (StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.UTF8)) { sw.WriteLine(System.DateTime.Now); sw.WriteLine("pathCertificado cifrado:" + pathCertificado); sw.WriteLine("pathCertificado descifrado:" + nroSerie); sw.WriteLine("cuit_vendedor:" + cuit_vendedor); sw.WriteLine("id_lote:" + id_lote); } } CedWebRN.IBK.consulta_lote_comprobantes consulta = new CedWebRN.IBK.consulta_lote_comprobantes(); consulta.cuit_canal = 30690783521; consulta.cuit_vendedor = cuit_vendedor; consulta.id_lote = id_lote; consulta.cod_interno_canal = string.Empty; consulta.punto_de_ventaSpecified = true; consulta.punto_de_venta = punto_de_venta; lc = c.ConsultarIBK(consulta, nroSerie); } catch (Exception ex) { throw ExcepcionesSOAP.RaiseException("Consultar", "http://www.cedeira.com.ar/webservices", ex.Message, "0", ex.Source, FaultCode.Server); } return lc; }
public void CompletarReferencias(FeaEntidades.InterFacturas.lote_comprobantes lc) { //Permisos de exportación referencias = new System.Collections.Generic.List <FeaEntidades.InterFacturas.informacion_comprobanteReferencias>(); if (lc.comprobante[0].cabecera.informacion_comprobante != null && lc.comprobante[0].cabecera.informacion_comprobante.referencias != null) { foreach (FeaEntidades.InterFacturas.informacion_comprobanteReferencias r in lc.comprobante[0].cabecera.informacion_comprobante.referencias) { //descripcioncodigo_de_permiso ( XmlIgnoreAttribute ) //Se busca la descripción a través del código. try { if (r != null) { ((DropDownList)referenciasGridView.FooterRow.FindControl("ddltipo_comprobante_afip")).SelectedValue = r.codigo_de_referencia.ToString(); string descrcodigo = ((DropDownList)referenciasGridView.FooterRow.FindControl("ddlcodigo_de_referencia")).SelectedItem.Text; ((DropDownList)referenciasGridView.FooterRow.FindControl("ddlcodigo_de_referencia")).SelectedValue = r.codigo_de_referencia.ToString(); descrcodigo = ((DropDownList)referenciasGridView.FooterRow.FindControl("ddlcodigo_de_referencia")).SelectedItem.Text; r.descripcioncodigo_de_referencia = descrcodigo; referencias.Add(r); } } catch //Referencia no valida { } } } if (referencias.Count.Equals(0)) { referencias.Add(new FeaEntidades.InterFacturas.informacion_comprobanteReferencias()); } referenciasGridView.DataSource = referencias; referenciasGridView.DataBind(); ViewState["referencias"] = referencias; }
private void LeerFormatoLoteIBK(EventArgs e, FeaEntidades.InterFacturas.lote_comprobantes lc, System.IO.MemoryStream ms) { try { //Formato Lote IBK ms.Seek(0, System.IO.SeekOrigin.Begin); FeaEntidades.InterFacturas.XML.consulta_lote_comprobantes_response clr = new FeaEntidades.InterFacturas.XML.consulta_lote_comprobantes_response(); System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(clr.GetType()); clr = (FeaEntidades.InterFacturas.XML.consulta_lote_comprobantes_response)x.Deserialize(ms); lc = clr.consulta_lote_response.lote_comprobantes; 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 { MensajeLabel.Text = "El archivo no cumple con el esquema de Interfacturas"; } }
protected void BuscarButton_Click(object sender, EventArgs e) { if (Funciones.SessionTimeOut(Session)) { Response.Redirect("~/SessionTimeout.aspx"); } else { try { MensajeLabel.Text = ""; bool monedasExtranjeras = false; Entidades.Sesion sesion = (Entidades.Sesion)Session["Sesion"]; List<Entidades.Comprobante> listaC = new List<Entidades.Comprobante>(); List<Entidades.Estado> estados = new List<Entidades.Estado>(); Entidades.Estado es = new Entidades.Estado(); es.Id = "Vigente"; estados.Add(es); Entidades.Persona persona = new Entidades.Persona(); Entidades.NaturalezaComprobante nc = new Entidades.NaturalezaComprobante(); nc.Id = "Venta"; listaC = RN.Comprobante.ListaFiltradaIvaYMovimientos(estados, FechaDesdeTextBox.Text, FechaHastaTextBox.Text, persona, nc, false, "", sesion); Entidades.VentasXArticulo ventas = new Entidades.VentasXArticulo(); ventas.Cuit = sesion.Cuit.Nro; ventas.RazSoc = sesion.Cuit.RazonSocial; ventas.PeriodoDsd = FechaDesdeTextBox.Text.Substring(6, 2) + "/" + FechaDesdeTextBox.Text.Substring(4, 2) + "/" + FechaDesdeTextBox.Text.Substring(0, 4); ventas.PeriodoHst = FechaHastaTextBox.Text.Substring(6, 2) + "/" + FechaHastaTextBox.Text.Substring(4, 2) + "/" + FechaHastaTextBox.Text.Substring(0, 4); System.Xml.Serialization.XmlSerializer x; byte[] bytes; System.IO.MemoryStream ms; FeaEntidades.InterFacturas.lote_comprobantes lote; ventas.VentasXArticuloDetalle = new List<Entidades.VentasXArticuloDetalle>(); List<Entidades.VentasXArticuloDetalle> lvd = new List<Entidades.VentasXArticuloDetalle>(); Entidades.VentasXArticuloDetalle vd; foreach (Entidades.Comprobante comprobante in listaC) { lote = new FeaEntidades.InterFacturas.lote_comprobantes(); x = new System.Xml.Serialization.XmlSerializer(lote.GetType()); comprobante.Response = comprobante.Response.Replace("iso-8859-1", "utf-16"); bytes = new byte[comprobante.Response.Length * sizeof(char)]; System.Buffer.BlockCopy(comprobante.Response.ToCharArray(), 0, bytes, 0, bytes.Length); ms = new System.IO.MemoryStream(bytes); ms.Seek(0, System.IO.SeekOrigin.Begin); lote = (FeaEntidades.InterFacturas.lote_comprobantes)x.Deserialize(ms); //Totales por artículo if (lote.comprobante[0].detalle.linea != null) { for (int z = 0; z < lote.comprobante[0].detalle.linea.Length; z++) { double signo = 1; if (("/3/8/13/").IndexOf("/" + Convert.ToInt32(lote.comprobante[0].cabecera.informacion_comprobante.tipo_de_comprobante).ToString().Trim() + "/") != -1) { signo = -1; } //Verificar el articulo ya existe en la lista. //List<Entidades.VentasXArticuloDetalle> listaAux = lvd.FindAll(delegate(Entidades.VentasXArticuloDetalle vxad) //{ // return vxad.IdArticulo == lote.comprobante[0].detalle.linea[z].codigo_producto_vendedor; //}); //if (listaAux.Count == 0 || lote.comprobante[0].detalle.linea[z].codigo_producto_vendedor.Trim() == "") //{ //} vd = new Entidades.VentasXArticuloDetalle(); vd.IdArticulo = lote.comprobante[0].detalle.linea[z].codigo_producto_vendedor; vd.GTIN = lote.comprobante[0].detalle.linea[z].GTIN.ToString(); vd.IdArticuloEmp = lote.comprobante[0].detalle.linea[z].codigo_producto_comprador; if (lote.comprobante[0].detalle.linea[z].indicacion_exento_gravado != null) { vd.IndicacionExentoGravado = lote.comprobante[0].detalle.linea[z].indicacion_exento_gravado; } else { vd.IndicacionExentoGravado = ""; } vd.NumeroLinea = lote.comprobante[0].detalle.linea[z].numeroLinea; vd.UnidadCod = lote.comprobante[0].detalle.linea[z].unidad; vd.UnidadDescr = lote.comprobante[0].detalle.linea[z].unidadDescripcion; vd.CompTipo = lote.comprobante[0].cabecera.informacion_comprobante.tipo_de_comprobante.ToString(); vd.CompNro = lote.comprobante[0].cabecera.informacion_comprobante.numero_comprobante.ToString(); vd.CompPtoVta = lote.comprobante[0].cabecera.informacion_comprobante.punto_de_venta.ToString(); vd.CompFecEmi = lote.comprobante[0].cabecera.informacion_comprobante.fecha_emision.Substring(6, 2) + "/" + lote.comprobante[0].cabecera.informacion_comprobante.fecha_emision.Substring(4, 2) + "/" + lote.comprobante[0].cabecera.informacion_comprobante.fecha_emision.Substring(0, 4); vd.EmpNroDoc = lote.comprobante[0].cabecera.informacion_comprador.nro_doc_identificatorio.ToString(); vd.EmpCodDoc = lote.comprobante[0].cabecera.informacion_comprador.codigo_doc_identificatorio.ToString(); vd.EmpDescrDoc = ""; //Obtener la descripcion; vd.EmpNombre = lote.comprobante[0].cabecera.informacion_comprador.denominacion; if (lote.comprobante[0].detalle.linea[z].descripcion.Length > 0 && lote.comprobante[0].detalle.linea[z].descripcion.Substring(0, 1) == "%") { vd.Descr = RN.Funciones.HexToString(lote.comprobante[0].detalle.linea[z].descripcion); } else { vd.Descr = lote.comprobante[0].detalle.linea[z].descripcion; } vd.ImporteTotal = lote.comprobante[0].detalle.linea[z].importe_total_articulo * signo; if (lote.comprobante[0].detalle.linea[z].cantidadSpecified == true && lote.comprobante[0].detalle.linea[z].precio_unitarioSpecified == true) { vd.Cantidad = lote.comprobante[0].detalle.linea[z].cantidad * signo; vd.PrecioUnitario = lote.comprobante[0].detalle.linea[z].precio_unitario * signo; } if (lote.comprobante[0].detalle.linea[z].alicuota_ivaSpecified == true && lote.comprobante[0].detalle.linea[z].importe_ivaSpecified == true) { vd.AlicuotaIVA = lote.comprobante[0].detalle.linea[z].alicuota_iva; vd.ImporteIVA = lote.comprobante[0].detalle.linea[z].importe_iva * signo; } lvd.Add(vd); } } } //Si se muestran artículos vigentes no vendidos. List<Entidades.Articulo> listaArt = new List<Entidades.Articulo>(); if (VerTodosLosArticulosCheckBox.Enabled == true && VerTodosLosArticulosCheckBox.Checked == true) { listaArt = RN.Articulo.ListaPorCuit(true, false, sesion); if (listaArt.Count != 0) { foreach (Entidades.Articulo art in listaArt) { bool existeArt = false; if (lvd.Count != 0) { System.Collections.Generic.List<Entidades.VentasXArticuloDetalle> listaVXArt = lvd.FindAll(delegate(Entidades.VentasXArticuloDetalle vxart) { return vxart.IdArticulo == art.Id; }); if (listaVXArt.Count != 0) { existeArt = true; } } if (!existeArt) { vd = new Entidades.VentasXArticuloDetalle(); vd.IdArticulo = art.Id; vd.Descr = art.Descr; vd.CompFecEmi = ""; vd.CompNro = ""; vd.CompPtoVta = ""; vd.CompTipo = ""; vd.UnidadCod = ""; vd.UnidadDescr = ""; vd.IndicacionExentoGravado = ""; vd.EmpNroDoc = ""; vd.EmpCodDoc = ""; vd.EmpDescrDoc = ""; vd.EmpNombre = ""; lvd.Add(vd); } } } } if (lvd.Count != 0) { ventas.VentasXArticuloDetalle = lvd; } Session["formatoRptExportar"] = FormatosRptExportarDropDownList.SelectedValue; Session["mostrarFechaYHora"] = FechaYHoraCheckBox.Checked; Session["mostrarDetalleComprobantes"] = DetalleComprobanteCheckBox.Checked; Session["monedasExtranjeras"] = monedasExtranjeras; if (ventas.VentasXArticuloDetalle.Count != 0) { Session["ventasXArticulo"] = ventas; Response.Redirect("~/Facturacion/Electronica/Reportes/VentasXArticuloWebForm.aspx", true); } else { MensajeLabel.Text = "No hay información."; } } catch (System.Threading.ThreadAbortException) { Trace.Warn("Thread abortado"); } catch (Exception ex) { WebForms.Excepciones.Redireccionar(ex, "~/NotificacionDeExcepcion.aspx"); } } }
private static string TratamientoPalabrasReservadas(string Cuerpo, Entidades.Comprobante Comprobante, FeaEntidades.InterFacturas.lote_comprobantes Lote, string LogoPath, bool Negritas) { string negritasDsd = "<b>"; string negritasHst = "</b>"; if (!Negritas) { negritasDsd = string.Empty; negritasHst = string.Empty; } string a = Cuerpo.Replace("\r\n", "<br />"); a = a.Replace("@RAZONSOCIAL", negritasDsd + Comprobante.RazonSocial + negritasHst); a = a.Replace("@TIPOYNROCOMPROBANTE", Comprobante.TipoComprobante.Descr.Replace("s ", " ") + " Nº " + Comprobante.NroPuntoVta.ToString("0000") + "-" + negritasDsd + Comprobante.Nro.ToString("00000000") + negritasHst); a = a.Replace("@MONEDAEIMPORTETOTAL", negritasDsd + Comprobante.Moneda.Replace("PES", "$").Replace("DOL", "u$s") + " " + Comprobante.Importe.ToString("N2", new System.Globalization.CultureInfo("es-AR")) + negritasHst); try { a = a.Replace("@PERIODODELSERVICIO", "del " + negritasDsd + DateTime.ParseExact(Lote.comprobante[0].cabecera.informacion_comprobante.fecha_serv_desde, "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture).ToString("dd/MM/yyyy") + negritasHst + " al " + negritasDsd + DateTime.ParseExact(Lote.comprobante[0].cabecera.informacion_comprobante.fecha_serv_hasta, "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture).ToString("dd/MM/yyyy") + negritasHst); string mesDelServicio = DateTime.ParseExact(Lote.comprobante[0].cabecera.informacion_comprobante.fecha_serv_desde, "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture).ToString("MMMM yyyy", new System.Globalization.CultureInfo("es-AR")).Replace(" ", " de "); mesDelServicio = mesDelServicio.Substring(0, 1).ToUpper() + mesDelServicio.Substring(1, mesDelServicio.Length - 1); a = a.Replace("@MESDELSERVICIO", negritasDsd + mesDelServicio + negritasHst); } catch {} a = a.Replace("@FECHAVTO", negritasDsd + Comprobante.FechaVto.ToString("dd/MM/yyyy") + negritasHst); a = a.Replace("@TAB", " "); //a = a + "<br />" + "<image src='cid:LogoImage' alt='logo' />"; return(a); }
private void AsignarCamposOpcionales(FeaEntidades.InterFacturas.lote_comprobantes lc) { if (lc.comprobante[0].cabecera.informacion_comprobante.condicion_de_pago == null) { lc.comprobante[0].cabecera.informacion_comprobante.condicion_de_pago = string.Empty; } if (lc.comprobante[0].cabecera.informacion_comprobante.fecha_vencimiento_cae == null) { lc.comprobante[0].cabecera.informacion_comprobante.fecha_vencimiento_cae = string.Empty; } lc.comprobante[0].cabecera.informacion_comprobante.condicion_de_pagoSpecified = true; if (lc.comprobante[0].cabecera.informacion_comprobante.codigo_conceptoSpecified == false) { lc.comprobante[0].cabecera.informacion_comprobante.codigo_conceptoSpecified = true; } lc.comprobante[0].cabecera.informacion_vendedor.condicion_ingresos_brutosSpecified = true; lc.comprobante[0].cabecera.informacion_vendedor.condicion_IVASpecified = true; if (lc.comprobante[0].cabecera.informacion_vendedor.provincia == null) { lc.comprobante[0].cabecera.informacion_vendedor.provincia = string.Empty; } lc.comprobante[0].cabecera.informacion_comprador.condicion_ingresos_brutosSpecified = true; lc.comprobante[0].cabecera.informacion_comprador.condicion_IVASpecified = true; if (lc.comprobante[0].cabecera.informacion_comprador.domicilio_calle == null) { lc.comprobante[0].cabecera.informacion_comprador.domicilio_calle = string.Empty; } if (lc.comprobante[0].cabecera.informacion_comprador.provincia == null) { lc.comprobante[0].cabecera.informacion_comprador.provincia = string.Empty; } lc.comprobante[0].resumen.cant_alicuotas_ivaSpecified = true; lc.comprobante[0].resumen.importe_total_impuestos_internosSpecified = true; lc.comprobante[0].resumen.importe_total_impuestos_municipalesSpecified = true; lc.comprobante[0].resumen.importe_total_impuestos_nacionalesSpecified = true; lc.comprobante[0].resumen.importe_total_ingresos_brutosSpecified = true; if (lc.comprobante[0].resumen.descuentos != null) { for (int i = 0; i < lc.comprobante[0].resumen.descuentos.Length; i++) { if (lc.comprobante[0].resumen.descuentos[i] != null) { if (lc.comprobante[0].resumen.descuentos[i].importe_iva_descuentoSpecified.Equals(false)) { lc.comprobante[0].resumen.descuentos[i].importe_iva_descuentoSpecified = true; } if (lc.comprobante[0].resumen.descuentos[i].alicuota_iva_descuentoSpecified.Equals(false)) { lc.comprobante[0].resumen.descuentos[i].alicuota_iva_descuentoSpecified = true; } if (lc.comprobante[0].resumen.descuentos[i].porcentaje_descuentoSpecified.Equals(false)) { lc.comprobante[0].resumen.descuentos[i].porcentaje_descuentoSpecified = true; } } } } for (int i = 0; i < lc.comprobante[0].detalle.linea.Length; i++) { if (lc.comprobante[0].detalle.linea[i] != null) { lc.comprobante[0].detalle.linea[i].precio_unitarioSpecified = true; lc.comprobante[0].detalle.linea[i].importe_ivaSpecified = true; if (lc.comprobante[0].detalle.linea[i].alicuota_ivaSpecified.Equals(false)) { lc.comprobante[0].detalle.linea[i].alicuota_ivaSpecified = true; lc.comprobante[0].detalle.linea[i].alicuota_iva = 99; } lc.comprobante[0].detalle.linea[i].cantidadSpecified = true; if (lc.comprobante[0].detalle.linea[i].unidad == null) { lc.comprobante[0].detalle.linea[i].unidad = string.Empty; } if (lc.comprobante[0].detalle.linea[i].indicacion_exento_gravado == null) { lc.comprobante[0].detalle.linea[i].indicacion_exento_gravado = string.Empty; } if (lc.comprobante[0].detalle.linea[i].importes_moneda_origen != null) { lc.comprobante[0].detalle.linea[i].importes_moneda_origen.importe_ivaSpecified = true; lc.comprobante[0].detalle.linea[i].importes_moneda_origen.importe_total_articuloSpecified = true; lc.comprobante[0].detalle.linea[i].importes_moneda_origen.importe_total_descuentosSpecified = true; lc.comprobante[0].detalle.linea[i].importes_moneda_origen.importe_total_impuestosSpecified = true; lc.comprobante[0].detalle.linea[i].importes_moneda_origen.precio_unitarioSpecified = true; } if (lc.comprobante[0].detalle.linea[i].GTINSpecified.Equals(false)) { lc.comprobante[0].detalle.linea[i].GTINSpecified = true; lc.comprobante[0].detalle.linea[i].GTIN = 0; } } else { break; } } }
private void LeerXmlComprobante(out FeaEntidades.InterFacturas.lote_comprobantes lc, System.IO.MemoryStream ms) { lc = new FeaEntidades.InterFacturas.lote_comprobantes(); ms.Seek(0, System.IO.SeekOrigin.Begin); FeaEntidades.InterFacturas.comprobante c = new FeaEntidades.InterFacturas.comprobante(); System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(c.GetType()); c = (FeaEntidades.InterFacturas.comprobante)x.Deserialize(ms); FeaEntidades.InterFacturas.comprobante[] cArray = new FeaEntidades.InterFacturas.comprobante[1]; cArray[0] = c; lc.comprobante = cArray; }
private void EnviarButton_Click(object sender, EventArgs e) { List<FeaEntidades.InterFacturas.error> listaNotificacionesLote; List<FeaEntidades.InterFacturas.error> listaNotificacionesComprobantes; try { //Constructor del Lote eFact_C.Lote l = new eFact_C.Lote(url, certificado, proxy); //Crear "lote_comprobantes" FeaEntidades.InterFacturas.lote_comprobantes lc = new FeaEntidades.InterFacturas.lote_comprobantes(); Completar_lote_comprobantes(lc); FeaEntidades.InterFacturas.lote_response Lr; Lr = l.Enviar(lc, out listaNotificacionesLote, out listaNotificacionesComprobantes); MessageBox.Show("Lote enviado satisfactoriamente", "NOTIFICACION", MessageBoxButtons.OK); } catch (Exception ex) { MessageBox.Show(ex.Message, "NOTIFICACION", MessageBoxButtons.OK); //Guardar el ex.InnerException si tiene contenido para tener mas detalle del problema. } }
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 = "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 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 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 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); } } } }
public TableroBj() { InitializeComponent(); TipoConsulta = eFact_I_Bj.RN.TableroBj.TipoConsulta.Todos; StatusBar.Panels["UsuarioSBP"].Text = "Usuario: " + Aplicacion.Sesion.Usuario.Nombre; StatusBar.Panels["UsuarioSBP"].ToolTipText = "Información del usuario\r\nNombre:" + Aplicacion.Sesion.Usuario.Nombre; StatusBar.Panels["CXOSBP"].Text = "CXO: " + Aplicacion.Sesion.CXO; StatusBar.Panels["CXOSBP"].ToolTipText = "Control por oposición: " + Aplicacion.Sesion.CXO; StatusBar.Panels["OrigenDatosSBP"].ToolTipText = "Directorio de Datos: " + Aplicacion.ArchPath + "\r\n"; Comprobantes = new List<eFact_I_Bj.Entidades.ComprobanteBj>(); Lc = new FeaEntidades.InterFacturas.lote_comprobantes(); TipoConsulta = eFact_I_Bj.RN.TableroBj.TipoConsulta.ComprobantesAProcesar; ConsultaComprobantesDataGridView.AutoGenerateColumns = false; ConsultaComprobantesDataGridView.DataSource = new List<eFact_I_Bj.Entidades.ComprobanteBj>(); if (Aplicacion.Testing) { TestingPanel.Visible = true; } //Cabecera IdTipoComprobanteComboBox.DataSource = FeaEntidades.TiposDeComprobantes.TipoComprobante.Lista(); IdTipoComprobanteComboBox.DisplayMember = "Descr"; IdTipoComprobanteComboBox.ValueMember = "Codigo"; ((DataGridViewComboBoxColumn)ConsultaComprobantesDataGridView.Columns["IdTipoComprobante"]).DataSource = FeaEntidades.TiposDeComprobantes.TipoComprobante.Lista(); ((DataGridViewComboBoxColumn)ConsultaComprobantesDataGridView.Columns["IdTipoComprobante"]).DisplayMember = "Descr"; ((DataGridViewComboBoxColumn)ConsultaComprobantesDataGridView.Columns["IdTipoComprobante"]).ValueMember = "Codigo"; ((DataGridViewComboBoxColumn)ConsultaComprobantesDataGridView.Columns["IdTipoComprobante"]).DataPropertyName = "IdTipoComprobante"; ((DataGridViewComboBoxColumn)ConsultaComprobantesDataGridView.Columns["IdMoneda"]).DataSource = FeaEntidades.CodigosMoneda.CodigoMoneda.Lista(); ((DataGridViewComboBoxColumn)ConsultaComprobantesDataGridView.Columns["IdMoneda"]).DisplayMember = "Descr"; ((DataGridViewComboBoxColumn)ConsultaComprobantesDataGridView.Columns["IdMoneda"]).ValueMember = "Codigo"; DataGridViewComboBoxColumn colCompradorTipoDoc = new DataGridViewComboBoxColumn(); colCompradorTipoDoc.DataSource = FeaEntidades.Documentos.Documento.Lista(); ; colCompradorTipoDoc.DisplayMember = "Descr"; colCompradorTipoDoc.ValueMember = "Codigo"; colCompradorTipoDoc.DataPropertyName = "CompradorTipoDoc"; colCompradorTipoDoc.Name = "CompradorTipoDoc"; colCompradorTipoDoc.FlatStyle = FlatStyle.Flat; colCompradorTipoDoc.DisplayStyle = DataGridViewComboBoxDisplayStyle.ComboBox; colCompradorTipoDoc.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft; colCompradorTipoDoc.HeaderText = "Comprador Tipo Doc."; colCompradorTipoDoc.Width = 70; ConsultaComprobantesDataGridView.Columns.Add(colCompradorTipoDoc); DataGridViewTextBoxColumn colCompradorNroDoc = new DataGridViewTextBoxColumn(); colCompradorNroDoc.DataPropertyName = "CompradorNroDoc"; colCompradorNroDoc.Name = "CompradorNroDoc"; colCompradorNroDoc.HeaderText = "Comprador Nro. Doc."; colCompradorNroDoc.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight; colCompradorNroDoc.Width = 100; ConsultaComprobantesDataGridView.Columns.Add(colCompradorNroDoc); DataGridViewTextBoxColumn colCompradorNombre = new DataGridViewTextBoxColumn(); colCompradorNombre.DataPropertyName = "CompradorNombre"; colCompradorNombre.Name = "CompradorNombre"; colCompradorNombre.HeaderText = "Comprador Nombre"; colCompradorNombre.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft; colCompradorNombre.Width = 400; ConsultaComprobantesDataGridView.Columns.Add(colCompradorNombre); FechaComprobantesDsdDTP.Value = DateTime.Now; FechaComprobantesHstDTP.Value = DateTime.Now; TipoCambioLabel.Visible = true; ImporteDolaresLabel.Visible = true; TipoCambioTextBox.Visible = true; TipoCambioTextBox.Enabled = false; ImporteDolaresTextBox.Visible = true; ImporteDolaresTextBox.Enabled = false; }
private void GenerarArchivoButton_Click(object sender, EventArgs e) { try { if (ConsultaComprobantesDataGridView.SelectedRows.Count != 0) { int renglon = ConsultaComprobantesDataGridView.SelectedRows[0].Index; try { eFact_I_Bj.Entidades.Plantilla plantillaExpuesta = new eFact_I_Bj.Entidades.Plantilla(); Plantilla plantilla = new Plantilla(eFact_I_Bj.RN.Plantilla.Modo.Consulta, plantillaExpuesta); plantilla.ShowDialog(); plantillaExpuesta = plantilla.plantillaExpuesta; plantilla = null; string observaciones = string.Empty; if (plantillaExpuesta != null) { //foreach (eFact_I_Bj.Entidades.ComprobanteBj comprobante in Comprobantes) //{ //if (Comprobantes[renglon].Leyendas[0].ToString() != string.Empty) //{ // string leyenda = Comprobantes[renglon].Leyendas[0].ToString(); // observaciones = observaciones + plantillaExpuesta.Leyenda1 + " " + leyenda + " "; //} if (Comprobantes[renglon].Leyendas[1].ToString() != string.Empty) { string leyenda = Comprobantes[renglon].Leyendas[1].ToString(); observaciones = observaciones + plantillaExpuesta.Leyenda2 + " " + leyenda + " "; } if (Comprobantes[renglon].Leyendas[2].ToString() != string.Empty) { string leyenda = Comprobantes[renglon].Leyendas[2].ToString(); observaciones = observaciones + plantillaExpuesta.Leyenda3 + " " + leyenda + " "; } if (Comprobantes[renglon].Leyendas[3].ToString() != string.Empty) { string leyenda = Comprobantes[renglon].Leyendas[3].ToString(); observaciones = observaciones + plantillaExpuesta.Leyenda4 + " " + leyenda + " "; } if (Comprobantes[renglon].Leyendas[4].ToString() != string.Empty) { string leyenda = Comprobantes[renglon].Leyendas[4].ToString(); observaciones = observaciones + plantillaExpuesta.Leyenda5 + " " + leyenda + " "; } observaciones = observaciones + plantillaExpuesta.LeyendaMoneda + " " + " "; Lc.comprobante[renglon].extensiones = new FeaEntidades.InterFacturas.extensiones(); Lc.comprobante[renglon].extensiones.extensiones_datos_comerciales = observaciones; Lc.comprobante[renglon].extensionesSpecified = true; Lc.comprobante[renglon].resumen.observaciones = plantillaExpuesta.LeyendaBanco; //} } if (FactServiciosCheckBox.Checked) { Lc.comprobante[renglon].cabecera.informacion_comprobante.fecha_serv_desde = FechaDsdServ.Value.ToString("yyyyMMdd"); Lc.comprobante[renglon].cabecera.informacion_comprobante.fecha_serv_hasta = FechaHstServ.Value.ToString("yyyyMMdd"); Lc.comprobante[renglon].cabecera.informacion_comprobante.codigo_conceptoSpecified = true; Lc.comprobante[renglon].cabecera.informacion_comprobante.codigo_concepto = 2; } if (FactDolarCheckBox.Checked) { string comentario = "Este documento se emite por el importe equivalente a USD "+ ImporteDolaresTextBox.Text +" al TC "+ TipoCambioTextBox.Text +" ARS/USD. De existir diferencia entre este tipo de cambio y el que corresponda al día anterior al pago efectivo, el pago se considerara hecho a cuenta y la diferencia generada deberá ser compensada mediante una ND/NC según corresponda a ser emitida por Gas Patagonia S.A."; Lc.comprobante[renglon].detalle.comentarios = comentario; } //Crear "lote_comprobantes" string LoteXML; //Metodo estático para el armado del Lote en formato XML, no necesita usar el constructor con la URL, proxy y certificados. //Para Contingencias: El string LoteXML deberá guardarse en un archivo para se subido al Sitio Web de Interfacturas. FeaEntidades.InterFacturas.lote_comprobantes lcComprobanteSelec = new FeaEntidades.InterFacturas.lote_comprobantes(); lcComprobanteSelec.cabecera_lote = Lc.cabecera_lote; lcComprobanteSelec.cabecera_lote.cantidad_reg = 1; lcComprobanteSelec.comprobante[0] = Lc.comprobante[renglon]; if (plantillaExpuesta.DescrPlantilla.Equals("Diferencia de Cambio")) { for (int i = 1; i < lcComprobanteSelec.comprobante[0].detalle.linea.Length; i++) { if (lcComprobanteSelec.comprobante[0].detalle.linea[i] != null) { lcComprobanteSelec.comprobante[0].detalle.linea[i] = null; } } lcComprobanteSelec.comprobante[0].detalle.linea[0].cantidadSpecified = false; lcComprobanteSelec.comprobante[0].detalle.linea[0].precio_unitarioSpecified = false; lcComprobanteSelec.comprobante[0].detalle.linea[0].importe_ivaSpecified = false; lcComprobanteSelec.comprobante[0].detalle.linea[0].alicuota_ivaSpecified = false; lcComprobanteSelec.comprobante[0].detalle.linea[0].descripcion = string.Empty; if (lcComprobanteSelec.comprobante[0].resumen.codigo_moneda == "DOL") { lcComprobanteSelec.comprobante[0].detalle.linea[0].importe_total_articulo = lcComprobanteSelec.comprobante[0].resumen.importes_moneda_origen.importe_total_neto_gravado; } else { lcComprobanteSelec.comprobante[0].detalle.linea[0].importe_total_articulo = lcComprobanteSelec.comprobante[0].resumen.importe_total_neto_gravado; } } if (lcComprobanteSelec.comprobante[0].resumen.codigo_moneda == "DOL") { lcComprobanteSelec.comprobante[0].resumen.cant_alicuotas_ivaSpecified = false; lcComprobanteSelec.comprobante[0].resumen.importe_total_factura = 0; lcComprobanteSelec.comprobante[0].resumen.impuesto_liq = 0; lcComprobanteSelec.comprobante[0].resumen.importe_total_neto_gravado = 0; lcComprobanteSelec.comprobante[0].resumen.importe_total_concepto_no_gravado = 0; lcComprobanteSelec.comprobante[0].resumen.impuesto_liq_rni = 0; lcComprobanteSelec.comprobante[0].resumen.importe_operaciones_exentas = 0; } lcComprobanteSelec.cabecera_lote.id_lote = Convert.ToInt64(DateTime.Now.ToString("yyyyMMddHHmmss")); lcComprobanteSelec.cabecera_lote.fecha_envio_lote = DateTime.Now.ToString("yyyyMMdd") + " " + DateTime.Now.ToString("HHmmss"); LoteXML = ArmarLoteXML(lcComprobanteSelec); //Definir ruta y nombre del archivo. string archPath = System.Configuration.ConfigurationManager.AppSettings["ArchPath"]; FileStream fs = File.Create(@archPath + "\\efact-c-contingencia.xml"); System.Text.Encoding codificador; codificador = System.Text.Encoding.GetEncoding("iso-8859-1"); fs.Write(codificador.GetBytes(LoteXML), 0, LoteXML.Length); fs.Close(); MessageBox.Show("Lote XML generado satisfactoriamente", "NOTIFICACION", MessageBoxButtons.OK); } catch (Exception ex) { MessageBox.Show(ex.Message, "NOTIFICACION", MessageBoxButtons.OK); //Guardar el ex.InnerException si tiene contenido para tener mas detalle del problema. } //Actualizar lote //ms = new MemoryStream(); //XmlizedString = null; //writer = new XmlTextWriter(ms, System.Text.Encoding.GetEncoding("ISO-8859-1")); //x = new System.Xml.Serialization.XmlSerializer(Lc.GetType()); //x.Serialize(writer, Lc); //ms = (MemoryStream)writer.BaseStream; //XmlizedString = RN.Tablero.ByteArrayToString(ms.ToArray()); //ms.Close(); //Lote.LoteXmlIF = XmlizedString; } } catch (Exception ex) { Microsoft.ApplicationBlocks.ExceptionManagement.ExceptionManager.Publish(ex); } }
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; }
public void CompletarDetalles(FeaEntidades.InterFacturas.lote_comprobantes lc) { lineas = new System.Collections.Generic.List <FeaEntidades.InterFacturas.linea>(); foreach (FeaEntidades.InterFacturas.linea l in lc.comprobante[0].detalle.linea) { FeaEntidades.InterFacturas.linea linea = new FeaEntidades.InterFacturas.linea(); if (l.GTINSpecified) { linea.GTIN = l.GTIN; linea.GTINSpecified = true; } //Compatibilidad con archivos xml viejos. Verificar si la descripcion está en Hexa. if (l.descripcion.Substring(0, 1) == "%") { linea.descripcion = RN.Funciones.HexToString(l.descripcion).Replace("<br>", System.Environment.NewLine); } else { linea.descripcion = l.descripcion.Replace("<br>", System.Environment.NewLine); } if (l.alicuota_ivaSpecified) { linea.alicuota_iva = l.alicuota_iva; } else { linea.alicuota_iva = new FeaEntidades.IVA.SinInformar().Codigo; } linea.alicuota_ivaSpecified = l.alicuota_ivaSpecified; linea.importe_ivaSpecified = l.importe_ivaSpecified; if (l.unidad != null) { linea.unidad = l.unidad; } else { linea.unidad = Convert.ToString(new FeaEntidades.CodigosUnidad.SinInformar().Codigo); } linea.cantidad = l.cantidad; linea.cantidadSpecified = l.cantidadSpecified; linea.codigo_producto_comprador = l.codigo_producto_comprador; linea.codigo_producto_vendedor = l.codigo_producto_vendedor; linea.indicacion_exento_gravado = l.indicacion_exento_gravado; if (l.importes_moneda_origen == null || l.importes_moneda_origen.importe_total_articulo.Equals(0)) { linea.importe_total_articulo = l.importe_total_articulo; linea.importe_iva = l.importe_iva; linea.precio_unitario = l.precio_unitario; linea.precio_unitarioSpecified = l.precio_unitarioSpecified; } else { linea.importe_total_articulo = l.importes_moneda_origen.importe_total_articulo; linea.importe_iva = l.importes_moneda_origen.importe_iva; linea.precio_unitario = l.importes_moneda_origen.precio_unitario; linea.precio_unitarioSpecified = l.importes_moneda_origen.precio_unitarioSpecified; } lineas.Add(linea); } detalleGridView.DataSource = lineas; detalleGridView.DataBind(); ViewState["lineas"] = lineas; }
public FeaEntidades.InterFacturas.lote_comprobantes ConsultarIBK(out List<FeaEntidades.InterFacturas.error> RespErroresLote, out List<FeaEntidades.InterFacturas.error> RespErroresComprobantes, eFact_Tester.IBK.consulta_lote_comprobantes clc, string url, eFact_Tester.Entidades.Certificado Certificado, eFact_Tester.Entidades.Proxy Proxy) { FeaEntidades.InterFacturas.lote_comprobantes lc = new FeaEntidades.InterFacturas.lote_comprobantes(); lc.cabecera_lote = new FeaEntidades.InterFacturas.cabecera_lote(); lc.comprobante = new FeaEntidades.InterFacturas.comprobante[1]; IBK.error[] respErroresLote = new IBK.error[0]; IBK.error[] respErroresComprobantes = new IBK.error[0]; IBK.FacturaWebServiceConSchema objIBK; objIBK = new IBK.FacturaWebServiceConSchema(); objIBK.Url = url; if (Proxy != null) { System.Net.WebProxy wp = new System.Net.WebProxy(Proxy.Servidor, false); System.Net.NetworkCredential networkCredential = new System.Net.NetworkCredential(Proxy.Usuario, Proxy.Clave, Proxy.Dominio); wp.Credentials = networkCredential; objIBK.Proxy = wp; } X509Store store; if (Certificado.LugarDeAlmacenamiento == eFact_Tester.Entidades.Certificado.Almacenamiento.CurrentUser) { store = new X509Store(StoreLocation.CurrentUser); } else { store = new X509Store(StoreLocation.LocalMachine); } store.Open(OpenFlags.ReadOnly); X509Certificate2Collection col = store.Certificates.Find(X509FindType.FindBySerialNumber, Certificado.Numero, true); if (col.Count.Equals(1)) { objIBK.ClientCertificates.Add(col[0]); System.Threading.Thread.Sleep(1000); IBK.consulta_lote_comprobantes_response clcr = objIBK.getLoteFacturasConSchema(clc); IBK.consulta_lote_response clr; try { clr = (IBK.consulta_lote_response)clcr.Item; IBK.lote_comprobantes lcIBK = (IBK.lote_comprobantes)clr.Item; lc = Ibk2Fea(lcIBK); } catch (InvalidCastException) { StringBuilder errorText = new StringBuilder(); if (clcr.Item != null) { errorText.Append("Nro. de Lote: [" + clc.id_lote + "] \r\n"); if (clcr.Item.GetType() == typeof(IBK.consulta_lote_response)) { clr = (IBK.consulta_lote_response)clcr.Item; IBK.consulta_lote_responseErrores_consulta errores = (IBK.consulta_lote_responseErrores_consulta)clr.Item; foreach (IBK.error elote in errores.error) { errorText.Append(elote.codigo_error + " - " + elote.descripcion_error + " \r\n"); } RespErroresLote = Ibk2Fea(errores.error); } else { IBK.consulta_lote_comprobantes_responseErrores_response clcrEr; clcrEr = (IBK.consulta_lote_comprobantes_responseErrores_response)clcr.Item; foreach (IBK.error elote in clcrEr.error) { errorText.Append(elote.codigo_error + " - " + elote.descripcion_error + " \r\n"); } RespErroresComprobantes = Ibk2Fea(clcrEr.error); } } throw new Exception(errorText.ToString()); } RespErroresLote = new List<FeaEntidades.InterFacturas.error>(); RespErroresComprobantes = new List<FeaEntidades.InterFacturas.error>(); return lc; } else { throw new Exception("Su certificado no está disponible en nuestro repositorio"); } }
private void ProcesarComprobante(out CrystalDecisions.CrystalReports.Engine.ReportDocument ReporteDocumento, eFact_Entidades.Lote Lote, int Renglon) { try { Cursor = System.Windows.Forms.Cursors.WaitCursor; facturaRpt = new CrystalDecisions.CrystalReports.Engine.ReportDocument(); facturaRpt.Load("Facturacion\\Electronica\\Reportes\\Factura.rpt"); //Crear un lote de un solo comprobante, para la impresion o exportacion del pdf. eFact_Entidades.Lote LoteConUnSoloComprobante = new eFact_Entidades.Lote(); LoteConUnSoloComprobante.CuitVendedor = Lote.CuitVendedor; LoteConUnSoloComprobante.FechaAlta = Lote.FechaAlta; LoteConUnSoloComprobante.FechaEnvio = Lote.FechaEnvio; LoteConUnSoloComprobante.IdLote = Lote.IdLote; LoteConUnSoloComprobante.IdOp = Lote.IdOp; LoteConUnSoloComprobante.LoteXml = Lote.LoteXml; LoteConUnSoloComprobante.LoteXmlIF = Lote.LoteXmlIF; LoteConUnSoloComprobante.NumeroEnvio = Lote.NumeroEnvio; LoteConUnSoloComprobante.NumeroLote = Lote.NumeroLote; LoteConUnSoloComprobante.PuntoVenta = Lote.PuntoVenta; LoteConUnSoloComprobante.CantidadRegistros = 1; LoteConUnSoloComprobante.Comprobantes.Add(Lote.Comprobantes[Renglon]); LoteConUnSoloComprobante.WF = Lote.WF; FeaEntidades.InterFacturas.lote_comprobantes lc = new FeaEntidades.InterFacturas.lote_comprobantes(); eFact_RN.Lote.DeserializarLc(out lc, LoteConUnSoloComprobante, true); //Entidad para reporte crystal. Al desserializar se pierden los descuentos de la entidad original. FeaEntidades.Reporte.lote_comprobantes lcReporte = new FeaEntidades.Reporte.lote_comprobantes(); eFact_RN.Lote.DeserializarLc(out lcReporte, LoteConUnSoloComprobante); for (int i = 0; i < lc.comprobante.Length; i++) { if (i == 0) { lc.comprobante[i] = lc.comprobante[Renglon]; lcReporte.comprobante[i] = lcReporte.comprobante[Renglon]; for (int l = 0; l < lc.comprobante[i].detalle.linea.Length; l++) { if (lc.comprobante[i].detalle.linea[l].lineaDescuentos != null) { lcReporte.comprobante[i].detalle.linea[l].lineaDescuentos = new FeaEntidades.Reporte.lineaDescuentos[lc.comprobante[i].detalle.linea[l].lineaDescuentos.Length]; for (int d = 0; d < lcReporte.comprobante[i].detalle.linea[l].lineaDescuentos.Length; d++) { lcReporte.comprobante[i].detalle.linea[l].lineaDescuentos[d] = new FeaEntidades.Reporte.lineaDescuentos(); lcReporte.comprobante[i].detalle.linea[l].lineaDescuentos[d].descripcion_descuento = lc.comprobante[i].detalle.linea[l].lineaDescuentos[d].descripcion_descuento; lcReporte.comprobante[i].detalle.linea[l].lineaDescuentos[d].importe_descuento = lc.comprobante[i].detalle.linea[l].lineaDescuentos[d].importe_descuento; lcReporte.comprobante[i].detalle.linea[l].lineaDescuentos[d].importe_descuento_moneda_origen = lc.comprobante[i].detalle.linea[l].lineaDescuentos[d].importe_descuento_moneda_origen; lcReporte.comprobante[i].detalle.linea[l].lineaDescuentos[d].importe_descuento_moneda_origenSpecified = lc.comprobante[i].detalle.linea[l].lineaDescuentos[d].importe_descuento_moneda_origenSpecified; lcReporte.comprobante[i].detalle.linea[l].lineaDescuentos[d].importe_descuento_moneda_origenSpecified = true; lcReporte.comprobante[i].detalle.linea[l].lineaDescuentos[d].porcentaje_descuento = lc.comprobante[i].detalle.linea[l].lineaDescuentos[d].porcentaje_descuento; lcReporte.comprobante[i].detalle.linea[l].lineaDescuentos[d].porcentaje_descuentoSpecified = lc.comprobante[i].detalle.linea[l].lineaDescuentos[d].porcentaje_descuentoSpecified; lcReporte.comprobante[i].detalle.linea[l].lineaDescuentos[d].porcentaje_descuentoSpecified = true; } } else { lcReporte.comprobante[0].detalle.linea[l].lineaDescuentos = new FeaEntidades.Reporte.lineaDescuentos[1]; lcReporte.comprobante[0].detalle.linea[l].lineaDescuentos[0] = new FeaEntidades.Reporte.lineaDescuentos(); lcReporte.comprobante[0].detalle.linea[l].lineaDescuentos[0].descripcion_descuento = ""; lcReporte.comprobante[0].detalle.linea[l].lineaDescuentos[0].importe_descuento = 0; lcReporte.comprobante[0].detalle.linea[l].lineaDescuentos[0].porcentaje_descuento = 0; lcReporte.comprobante[0].detalle.linea[l].lineaDescuentos[0].porcentaje_descuentoSpecified = true; lcReporte.comprobante[0].detalle.linea[l].lineaDescuentos[0].importe_descuento_moneda_origen = 0; lcReporte.comprobante[0].detalle.linea[l].lineaDescuentos[0].importe_descuento_moneda_origenSpecified = true; } } } else { lc.comprobante[i] = null; lcReporte.comprobante[i] = null; } } AsignarCamposOpcionales(lcReporte); ReemplarResumenImportesMonedaExtranjera(lcReporte); DataSet ds = new DataSet(); XmlSerializer objXS = new XmlSerializer(lcReporte.GetType()); StringWriter objSW = new StringWriter(); objXS.Serialize(objSW, lcReporte); StringReader objSR = new StringReader(objSW.ToString()); ds.ReadXml(objSR); string pxsd = string.Format("{0}\\Facturacion\\Electronica\\Reportes\\lote_comprobantes.xsd",System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location)); System.IO.File.Copy(pxsd, @System.IO.Path.GetTempPath() + "lote_comprobantes.xsd", true); string imagen = string.Format("{0}\\Facturacion\\Electronica\\Reportes\\Imagen.xsd",System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location)); System.IO.File.Copy(imagen, @System.IO.Path.GetTempPath() + "Imagen.xsd", true); facturaRpt.SetDataSource(ds); facturaRpt.PrintOptions.PaperSize = CrystalDecisions.Shared.PaperSize.PaperLetter; facturaRpt.PrintOptions.PaperOrientation = CrystalDecisions.Shared.PaperOrientation.Portrait; IncrustarLogo(); GenerarCodigoBarras(lcReporte.cabecera_lote.cuit_vendedor + lcReporte.comprobante[0].cabecera.informacion_comprobante.tipo_de_comprobante.ToString("00") + lcReporte.comprobante[0].cabecera.informacion_comprobante.punto_de_venta.ToString("0000") + lcReporte.comprobante[0].cabecera.informacion_comprobante.cae + lcReporte.comprobante[0].cabecera.informacion_comprobante.fecha_vencimiento_cae); AsignarParametros(lcReporte.comprobante[0].resumen.importe_total_factura); ReporteDocumento = facturaRpt; } catch (Exception ex) { ReporteDocumento = null; //MessageBox.Show(ex.Message, "Problemas al procesar el comprobante", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); throw new Microsoft.ApplicationBlocks.ExceptionManagement.Reporte.ProblemasProcesando(ex); } finally { Cursor = System.Windows.Forms.Cursors.Default; } }
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"); } } }
static internal org.dyndns.cedweb.envio.lc Entidad2IBK(FeaEntidades.InterFacturas.lote_comprobantes lc) { org.dyndns.cedweb.envio.lc lcWS = new global::CedServicios.Site.org.dyndns.cedweb.envio.lc(); lcWS.cabecera_lote = new global::CedServicios.Site.org.dyndns.cedweb.envio.lcCabecera_lote(); lcWS.cabecera_lote.cantidad_reg = lc.cabecera_lote.cantidad_reg; lcWS.cabecera_lote.cod_interno_canal = lc.cabecera_lote.cod_interno_canal; lcWS.cabecera_lote.cuit_canal = lc.cabecera_lote.cuit_canal; lcWS.cabecera_lote.cuit_vendedor = lc.cabecera_lote.cuit_vendedor; lcWS.cabecera_lote.fecha_envio_lote = lc.cabecera_lote.fecha_envio_lote; lcWS.cabecera_lote.id_lote = lc.cabecera_lote.id_lote; lcWS.cabecera_lote.motivo = lc.cabecera_lote.motivo; lcWS.cabecera_lote.presta_serv = lc.cabecera_lote.presta_serv; lcWS.cabecera_lote.presta_servSpecified = lc.cabecera_lote.presta_servSpecified; lcWS.cabecera_lote.punto_de_venta = lc.cabecera_lote.punto_de_venta; lcWS.cabecera_lote.resultado = lc.cabecera_lote.resultado; lcWS.cabecera_lote.gestionar_afip = lc.cabecera_lote.gestionar_afip; lcWS.comprobante = new global::CedServicios.Site.org.dyndns.cedweb.envio.lcComprobante[lc.comprobante.Length]; for (int i = 0; i < lc.comprobante.Length; i++) { if (lc.comprobante[i] == null) { break; } org.dyndns.cedweb.envio.lcComprobante cIBK = new global::CedServicios.Site.org.dyndns.cedweb.envio.lcComprobante(); cIBK.cabecera = new global::CedServicios.Site.org.dyndns.cedweb.envio.lcComprobanteCabecera(); cIBK.cabecera.informacion_comprador = new global::CedServicios.Site.org.dyndns.cedweb.envio.lcComprobanteCabeceraInformacion_comprador(); cIBK.cabecera.informacion_comprador.codigo_doc_identificatorio = lc.comprobante[i].cabecera.informacion_comprador.codigo_doc_identificatorio; cIBK.cabecera.informacion_comprador.codigo_interno = lc.comprobante[i].cabecera.informacion_comprador.codigo_interno; cIBK.cabecera.informacion_comprador.condicion_ingresos_brutos = lc.comprobante[i].cabecera.informacion_comprador.condicion_ingresos_brutos; cIBK.cabecera.informacion_comprador.condicion_ingresos_brutosSpecified = lc.comprobante[i].cabecera.informacion_comprador.condicion_ingresos_brutosSpecified; cIBK.cabecera.informacion_comprador.condicion_IVA = lc.comprobante[i].cabecera.informacion_comprador.condicion_IVA; cIBK.cabecera.informacion_comprador.condicion_IVASpecified = lc.comprobante[i].cabecera.informacion_comprador.condicion_IVASpecified; cIBK.cabecera.informacion_comprador.contacto = lc.comprobante[i].cabecera.informacion_comprador.contacto; cIBK.cabecera.informacion_comprador.cp = lc.comprobante[i].cabecera.informacion_comprador.cp; cIBK.cabecera.informacion_comprador.denominacion = lc.comprobante[i].cabecera.informacion_comprador.denominacion; cIBK.cabecera.informacion_comprador.domicilio_calle = lc.comprobante[i].cabecera.informacion_comprador.domicilio_calle; cIBK.cabecera.informacion_comprador.domicilio_depto = lc.comprobante[i].cabecera.informacion_comprador.domicilio_depto; cIBK.cabecera.informacion_comprador.domicilio_manzana = lc.comprobante[i].cabecera.informacion_comprador.domicilio_manzana; cIBK.cabecera.informacion_comprador.domicilio_numero = lc.comprobante[i].cabecera.informacion_comprador.domicilio_numero; cIBK.cabecera.informacion_comprador.domicilio_piso = lc.comprobante[i].cabecera.informacion_comprador.domicilio_piso; cIBK.cabecera.informacion_comprador.domicilio_sector = lc.comprobante[i].cabecera.informacion_comprador.domicilio_sector; cIBK.cabecera.informacion_comprador.domicilio_torre = lc.comprobante[i].cabecera.informacion_comprador.domicilio_torre; cIBK.cabecera.informacion_comprador.email = lc.comprobante[i].cabecera.informacion_comprador.email; cIBK.cabecera.informacion_comprador.GLN = lc.comprobante[i].cabecera.informacion_comprador.GLN; cIBK.cabecera.informacion_comprador.GLNSpecified = lc.comprobante[i].cabecera.informacion_comprador.GLNSpecified; cIBK.cabecera.informacion_comprador.inicio_de_actividades = lc.comprobante[i].cabecera.informacion_comprador.inicio_de_actividades; cIBK.cabecera.informacion_comprador.localidad = lc.comprobante[i].cabecera.informacion_comprador.localidad; cIBK.cabecera.informacion_comprador.nro_doc_identificatorio = lc.comprobante[i].cabecera.informacion_comprador.nro_doc_identificatorio; cIBK.cabecera.informacion_comprador.nro_ingresos_brutos = lc.comprobante[i].cabecera.informacion_comprador.nro_ingresos_brutos; cIBK.cabecera.informacion_comprador.provincia = lc.comprobante[i].cabecera.informacion_comprador.provincia; cIBK.cabecera.informacion_comprador.telefono = lc.comprobante[i].cabecera.informacion_comprador.telefono; cIBK.cabecera.informacion_comprobante = new global::CedServicios.Site.org.dyndns.cedweb.envio.lcComprobanteCabeceraInformacion_comprobante(); cIBK.cabecera.informacion_comprobante.cae = lc.comprobante[i].cabecera.informacion_comprobante.cae; cIBK.cabecera.informacion_comprobante.codigo_operacion = lc.comprobante[i].cabecera.informacion_comprobante.codigo_operacion; cIBK.cabecera.informacion_comprobante.codigo_concepto = lc.comprobante[i].cabecera.informacion_comprobante.codigo_concepto; cIBK.cabecera.informacion_comprobante.codigo_conceptoSpecified = true; cIBK.cabecera.informacion_comprobante.condicion_de_pago = lc.comprobante[i].cabecera.informacion_comprobante.condicion_de_pago; cIBK.cabecera.informacion_comprobante.es_detalle_encriptado = lc.comprobante[i].cabecera.informacion_comprobante.es_detalle_encriptado; cIBK.cabecera.informacion_comprobante.fecha_emision = lc.comprobante[i].cabecera.informacion_comprobante.fecha_emision; cIBK.cabecera.informacion_comprobante.fecha_obtencion_cae = lc.comprobante[i].cabecera.informacion_comprobante.fecha_obtencion_cae; cIBK.cabecera.informacion_comprobante.fecha_serv_desde = lc.comprobante[i].cabecera.informacion_comprobante.fecha_serv_desde; cIBK.cabecera.informacion_comprobante.fecha_serv_hasta = lc.comprobante[i].cabecera.informacion_comprobante.fecha_serv_hasta; cIBK.cabecera.informacion_comprobante.fecha_vencimiento = lc.comprobante[i].cabecera.informacion_comprobante.fecha_vencimiento; cIBK.cabecera.informacion_comprobante.fecha_vencimiento_cae = lc.comprobante[i].cabecera.informacion_comprobante.fecha_vencimiento_cae; cIBK.cabecera.informacion_comprobante.iva_computable = lc.comprobante[i].cabecera.informacion_comprobante.iva_computable; cIBK.cabecera.informacion_comprobante.motivo = lc.comprobante[i].cabecera.informacion_comprobante.motivo; cIBK.cabecera.informacion_comprobante.numero_comprobante = lc.comprobante[i].cabecera.informacion_comprobante.numero_comprobante; cIBK.cabecera.informacion_comprobante.punto_de_venta = lc.comprobante[i].cabecera.informacion_comprobante.punto_de_venta; if (lc.comprobante[i].cabecera.informacion_comprobante.referencias != null) { cIBK.cabecera.informacion_comprobante.referencias = new global::CedServicios.Site.org.dyndns.cedweb.envio.lcComprobanteCabeceraInformacion_comprobanteReferencias[lc.comprobante[i].cabecera.informacion_comprobante.referencias.Length]; for (int j = 0; j < lc.comprobante[i].cabecera.informacion_comprobante.referencias.Length; j++) { if (lc.comprobante[i].cabecera.informacion_comprobante.referencias[j] != null) { cIBK.cabecera.informacion_comprobante.referencias[j] = new global::CedServicios.Site.org.dyndns.cedweb.envio.lcComprobanteCabeceraInformacion_comprobanteReferencias(); cIBK.cabecera.informacion_comprobante.referencias[j].codigo_de_referencia = lc.comprobante[i].cabecera.informacion_comprobante.referencias[j].codigo_de_referencia; cIBK.cabecera.informacion_comprobante.referencias[j].dato_de_referencia = lc.comprobante[i].cabecera.informacion_comprobante.referencias[j].dato_de_referencia; } } } cIBK.cabecera.informacion_comprobante.resultado = lc.comprobante[i].cabecera.informacion_comprobante.resultado; cIBK.cabecera.informacion_comprobante.tipo_de_comprobante = lc.comprobante[i].cabecera.informacion_comprobante.tipo_de_comprobante; if (lc.comprobante[i].cabecera.informacion_comprobante.informacion_adicional_comprobante != null) { cIBK.cabecera.informacion_comprobante.informacion_adicional_comprobante = new global::CedServicios.Site.org.dyndns.cedweb.envio.lcComprobanteCabeceraInformacion_comprobanteInformacion_adicional_comprobante[lc.comprobante[i].cabecera.informacion_comprobante.informacion_adicional_comprobante.Length]; for (int j = 0; j < lc.comprobante[i].cabecera.informacion_comprobante.informacion_adicional_comprobante.Length; j++) { if (lc.comprobante[i].cabecera.informacion_comprobante.informacion_adicional_comprobante[j] != null) { cIBK.cabecera.informacion_comprobante.informacion_adicional_comprobante[j] = new global::CedServicios.Site.org.dyndns.cedweb.envio.lcComprobanteCabeceraInformacion_comprobanteInformacion_adicional_comprobante(); cIBK.cabecera.informacion_comprobante.informacion_adicional_comprobante[j].tipo = lc.comprobante[i].cabecera.informacion_comprobante.informacion_adicional_comprobante[j].tipo; cIBK.cabecera.informacion_comprobante.informacion_adicional_comprobante[j].valor = lc.comprobante[i].cabecera.informacion_comprobante.informacion_adicional_comprobante[j].valor; } } } cIBK.cabecera.informacion_vendedor = new global::CedServicios.Site.org.dyndns.cedweb.envio.lcComprobanteCabeceraInformacion_vendedor(); cIBK.cabecera.informacion_vendedor.razon_social = lc.comprobante[i].cabecera.informacion_vendedor.razon_social; cIBK.cabecera.informacion_vendedor.codigo_interno = lc.comprobante[i].cabecera.informacion_vendedor.codigo_interno; cIBK.cabecera.informacion_vendedor.condicion_ingresos_brutos = lc.comprobante[i].cabecera.informacion_vendedor.condicion_ingresos_brutos; cIBK.cabecera.informacion_vendedor.condicion_ingresos_brutosSpecified = lc.comprobante[i].cabecera.informacion_vendedor.condicion_ingresos_brutosSpecified; cIBK.cabecera.informacion_vendedor.condicion_IVA = lc.comprobante[i].cabecera.informacion_vendedor.condicion_IVA; cIBK.cabecera.informacion_vendedor.condicion_IVASpecified = lc.comprobante[i].cabecera.informacion_vendedor.condicion_IVASpecified; cIBK.cabecera.informacion_vendedor.contacto = lc.comprobante[i].cabecera.informacion_vendedor.contacto; cIBK.cabecera.informacion_vendedor.cp = lc.comprobante[i].cabecera.informacion_vendedor.cp; cIBK.cabecera.informacion_vendedor.cuit = lc.comprobante[i].cabecera.informacion_vendedor.cuit; cIBK.cabecera.informacion_vendedor.domicilio_calle = lc.comprobante[i].cabecera.informacion_vendedor.domicilio_calle; cIBK.cabecera.informacion_vendedor.domicilio_depto = lc.comprobante[i].cabecera.informacion_vendedor.domicilio_depto; cIBK.cabecera.informacion_vendedor.domicilio_manzana = lc.comprobante[i].cabecera.informacion_vendedor.domicilio_manzana; cIBK.cabecera.informacion_vendedor.domicilio_numero = lc.comprobante[i].cabecera.informacion_vendedor.domicilio_numero; cIBK.cabecera.informacion_vendedor.domicilio_piso = lc.comprobante[i].cabecera.informacion_vendedor.domicilio_piso; cIBK.cabecera.informacion_vendedor.domicilio_sector = lc.comprobante[i].cabecera.informacion_vendedor.domicilio_sector; cIBK.cabecera.informacion_vendedor.domicilio_torre = lc.comprobante[i].cabecera.informacion_vendedor.domicilio_torre; cIBK.cabecera.informacion_vendedor.email = lc.comprobante[i].cabecera.informacion_vendedor.email; cIBK.cabecera.informacion_vendedor.GLN = lc.comprobante[i].cabecera.informacion_vendedor.GLN; cIBK.cabecera.informacion_vendedor.GLNSpecified = lc.comprobante[i].cabecera.informacion_vendedor.GLNSpecified; cIBK.cabecera.informacion_vendedor.inicio_de_actividades = lc.comprobante[i].cabecera.informacion_vendedor.inicio_de_actividades; cIBK.cabecera.informacion_vendedor.localidad = lc.comprobante[i].cabecera.informacion_vendedor.localidad; cIBK.cabecera.informacion_vendedor.nro_ingresos_brutos = lc.comprobante[i].cabecera.informacion_vendedor.nro_ingresos_brutos; cIBK.cabecera.informacion_vendedor.provincia = lc.comprobante[i].cabecera.informacion_vendedor.provincia; cIBK.cabecera.informacion_vendedor.telefono = lc.comprobante[i].cabecera.informacion_vendedor.telefono; //Info Exportación if (lc.comprobante[i].cabecera.informacion_comprobante.informacion_exportacion != null) { cIBK.cabecera.informacion_comprobante.informacion_exportacion = new global::CedServicios.Site.org.dyndns.cedweb.envio.lcComprobanteCabeceraInformacion_comprobanteInformacion_exportacion(); cIBK.cabecera.informacion_comprobante.informacion_exportacion.destino_comprobante = lc.comprobante[i].cabecera.informacion_comprobante.informacion_exportacion.destino_comprobante; cIBK.cabecera.informacion_comprobante.informacion_exportacion.tipo_exportacion = lc.comprobante[i].cabecera.informacion_comprobante.informacion_exportacion.tipo_exportacion; cIBK.cabecera.informacion_comprobante.informacion_exportacion.id_impositivo = lc.comprobante[i].cabecera.informacion_comprobante.informacion_exportacion.id_impositivo; if (lc.comprobante[i].cabecera.informacion_comprobante.informacion_exportacion.incoterms != null && lc.comprobante[i].cabecera.informacion_comprobante.informacion_exportacion.incoterms != "") { cIBK.cabecera.informacion_comprobante.informacion_exportacion.incoterms = lc.comprobante[i].cabecera.informacion_comprobante.informacion_exportacion.incoterms; } if (lc.comprobante[i].cabecera.informacion_comprobante.informacion_exportacion.descripcion_incoterms != null && lc.comprobante[i].cabecera.informacion_comprobante.informacion_exportacion.descripcion_incoterms != "") { cIBK.cabecera.informacion_comprobante.informacion_exportacion.descripcion_incoterms = lc.comprobante[i].cabecera.informacion_comprobante.informacion_exportacion.descripcion_incoterms; } if (lc.comprobante[i].cabecera.informacion_comprobante.informacion_exportacion.permiso_existente != null) { if (lc.comprobante[i].cabecera.informacion_comprobante.informacion_exportacion.permiso_existente != "") { cIBK.cabecera.informacion_comprobante.informacion_exportacion.permiso_existente = lc.comprobante[i].cabecera.informacion_comprobante.informacion_exportacion.permiso_existente.Trim(); } else { cIBK.cabecera.informacion_comprobante.informacion_exportacion.permiso_existente = null; } } if (lc.comprobante[i].cabecera.informacion_comprobante.informacion_exportacion.permisos != null) { cIBK.cabecera.informacion_comprobante.informacion_exportacion.permisos = new global::CedServicios.Site.org.dyndns.cedweb.envio.lcComprobanteCabeceraInformacion_comprobanteInformacion_exportacionPermisos[lc.comprobante[i].cabecera.informacion_comprobante.informacion_exportacion.permisos.Length]; for (int j = 0; j < lc.comprobante[i].cabecera.informacion_comprobante.informacion_exportacion.permisos.Length; j++) { if (lc.comprobante[i].cabecera.informacion_comprobante.informacion_exportacion.permisos[j] != null) { cIBK.cabecera.informacion_comprobante.informacion_exportacion.permisos[j] = new global::CedServicios.Site.org.dyndns.cedweb.envio.lcComprobanteCabeceraInformacion_comprobanteInformacion_exportacionPermisos(); cIBK.cabecera.informacion_comprobante.informacion_exportacion.permisos[j].id_permiso = lc.comprobante[i].cabecera.informacion_comprobante.informacion_exportacion.permisos[j].id_permiso; cIBK.cabecera.informacion_comprobante.informacion_exportacion.permisos[j].destino_mercaderia = lc.comprobante[i].cabecera.informacion_comprobante.informacion_exportacion.permisos[j].destino_mercaderia; } } } } org.dyndns.cedweb.envio.lcComprobanteDetalle d = new org.dyndns.cedweb.envio.lcComprobanteDetalle(); FeaEntidades.InterFacturas.detalle detalle = lc.comprobante[i].detalle; d.linea = new global::CedServicios.Site.org.dyndns.cedweb.envio.lcComprobanteDetalleLinea[detalle.linea.Length]; d.comentarios = detalle.comentarios; for (int j = 0; j < detalle.linea.Length; j++) { if (detalle.linea[j] != null) { d.linea[j] = new global::CedServicios.Site.org.dyndns.cedweb.envio.lcComprobanteDetalleLinea(); d.linea[j].alicuota_iva = detalle.linea[j].alicuota_iva; d.linea[j].alicuota_ivaSpecified = detalle.linea[j].alicuota_ivaSpecified; d.linea[j].cantidad = detalle.linea[j].cantidad; d.linea[j].cantidadSpecified = detalle.linea[j].cantidadSpecified; d.linea[j].codigo_producto_comprador = detalle.linea[j].codigo_producto_comprador; d.linea[j].codigo_producto_vendedor = detalle.linea[j].codigo_producto_vendedor; d.linea[j].descripcion = detalle.linea[j].descripcion; d.linea[j].GTIN = detalle.linea[j].GTIN; d.linea[j].GTINSpecified = detalle.linea[j].GTINSpecified; d.linea[j].importe_iva = detalle.linea[j].importe_iva; d.linea[j].importe_ivaSpecified = detalle.linea[j].importe_ivaSpecified; d.linea[j].importe_total_articulo = detalle.linea[j].importe_total_articulo; d.linea[j].importe_total_descuentos = detalle.linea[j].importe_total_descuentos; d.linea[j].importe_total_descuentosSpecified = detalle.linea[j].importe_total_descuentosSpecified; d.linea[j].importe_total_impuestos = detalle.linea[j].importe_total_impuestos; d.linea[j].importe_total_impuestosSpecified = detalle.linea[j].importe_total_impuestosSpecified; if (detalle.linea[j].importes_moneda_origen != null) { d.linea[j].importes_moneda_origen = new global::CedServicios.Site.org.dyndns.cedweb.envio.lcComprobanteDetalleLineaImportes_moneda_origen(); d.linea[j].importes_moneda_origen.importe_iva = detalle.linea[j].importes_moneda_origen.importe_iva; d.linea[j].importes_moneda_origen.importe_ivaSpecified = detalle.linea[j].importes_moneda_origen.importe_ivaSpecified; d.linea[j].importes_moneda_origen.importe_total_articulo = detalle.linea[j].importes_moneda_origen.importe_total_articulo; d.linea[j].importes_moneda_origen.importe_total_articuloSpecified = detalle.linea[j].importes_moneda_origen.importe_total_articuloSpecified; d.linea[j].importes_moneda_origen.importe_total_descuentos = detalle.linea[j].importes_moneda_origen.importe_total_descuentos; d.linea[j].importes_moneda_origen.importe_total_descuentosSpecified = detalle.linea[j].importes_moneda_origen.importe_total_descuentosSpecified; d.linea[j].importes_moneda_origen.importe_total_impuestos = detalle.linea[j].importes_moneda_origen.importe_total_impuestos; d.linea[j].importes_moneda_origen.importe_total_impuestosSpecified = detalle.linea[j].importes_moneda_origen.importe_total_impuestosSpecified; d.linea[j].importes_moneda_origen.precio_unitario = detalle.linea[j].importes_moneda_origen.precio_unitario; d.linea[j].importes_moneda_origen.precio_unitarioSpecified = detalle.linea[j].importes_moneda_origen.precio_unitarioSpecified; } if (detalle.linea[j].impuestos != null) { d.linea[j].impuestos = new global::CedServicios.Site.org.dyndns.cedweb.envio.lcComprobanteDetalleLineaImpuestos[detalle.linea[j].impuestos.Length]; for (int k = 0; k < d.linea[j].impuestos.Length; k++) { d.linea[j].impuestos[k] = new global::CedServicios.Site.org.dyndns.cedweb.envio.lcComprobanteDetalleLineaImpuestos(); d.linea[j].impuestos[k].codigo_impuesto = detalle.linea[j].impuestos[k].codigo_impuesto; d.linea[j].impuestos[k].descripcion_impuesto = detalle.linea[j].impuestos[k].descripcion_impuesto; d.linea[j].impuestos[k].importe_impuesto = detalle.linea[j].impuestos[k].importe_impuesto; d.linea[j].impuestos[k].importe_impuesto_moneda_origen = detalle.linea[j].impuestos[k].importe_impuesto_moneda_origen; d.linea[j].impuestos[k].importe_impuesto_moneda_origenSpecified = detalle.linea[j].impuestos[k].importe_impuesto_moneda_origenSpecified; d.linea[j].impuestos[k].porcentaje_impuesto = detalle.linea[j].impuestos[k].porcentaje_impuesto; d.linea[j].impuestos[k].porcentaje_impuestoSpecified = detalle.linea[j].impuestos[k].porcentaje_impuestoSpecified; } } if (detalle.linea[j].lineaDescuentos != null) { d.linea[j].descuentos = new global::CedServicios.Site.org.dyndns.cedweb.envio.lcComprobanteDetalleLineaDescuentos[detalle.linea[j].lineaDescuentos.Length]; for (int k = 0; k < d.linea[j].descuentos.Length; k++) { if (d.linea[j].descuentos[k] != null) { d.linea[j].descuentos[k] = new global::CedServicios.Site.org.dyndns.cedweb.envio.lcComprobanteDetalleLineaDescuentos(); d.linea[j].descuentos[k].descripcion_descuento = detalle.linea[j].lineaDescuentos[k].descripcion_descuento; d.linea[j].descuentos[k].importe_descuento = detalle.linea[j].lineaDescuentos[k].importe_descuento; d.linea[j].descuentos[k].importe_descuento_moneda_origen = detalle.linea[j].lineaDescuentos[k].importe_descuento_moneda_origen; d.linea[j].descuentos[k].importe_descuento_moneda_origenSpecified = detalle.linea[j].lineaDescuentos[k].importe_descuento_moneda_origenSpecified; d.linea[j].descuentos[k].porcentaje_descuento = detalle.linea[j].lineaDescuentos[k].porcentaje_descuento; d.linea[j].descuentos[k].porcentaje_descuentoSpecified = detalle.linea[j].lineaDescuentos[k].porcentaje_descuentoSpecified; } else { break; } } } d.linea[j].indicacion_exento_gravado = detalle.linea[j].indicacion_exento_gravado; d.linea[j].numeroLinea = detalle.linea[j].numeroLinea; d.linea[j].precio_unitario = detalle.linea[j].precio_unitario; d.linea[j].precio_unitarioSpecified = detalle.linea[j].precio_unitarioSpecified; d.linea[j].unidad = detalle.linea[j].unidad; } else { break; } } cIBK.detalle = d; //Info Extensiones if (lc.comprobante[i].extensiones != null) { cIBK.extensiones = new global::CedServicios.Site.org.dyndns.cedweb.envio.lcComprobanteExtensiones(); if (lc.comprobante[i].extensiones.extensiones_camara_facturas != null) { cIBK.extensiones.extensiones_camara_facturas = new global::CedServicios.Site.org.dyndns.cedweb.envio.lcComprobanteExtensionesExtensiones_camara_facturas(); if (lc.comprobante[i].extensiones.extensiones_camara_facturas.clave_de_vinculacion != null) { cIBK.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.id_idioma != null) { cIBK.extensiones.extensiones_camara_facturas.id_idioma = lc.comprobante[i].extensiones.extensiones_camara_facturas.id_idioma.Trim(); } if (lc.comprobante[i].extensiones.extensiones_camara_facturas.id_template != null) { cIBK.extensiones.extensiones_camara_facturas.id_template = lc.comprobante[i].extensiones.extensiones_camara_facturas.id_template.Trim(); } } if (lc.comprobante[i].extensiones.extensiones_datos_comerciales != null && lc.comprobante[i].extensiones.extensiones_datos_comerciales != "") { cIBK.extensiones.extensiones_datos_comerciales = lc.comprobante[i].extensiones.extensiones_datos_comerciales; } if (lc.comprobante[i].extensiones.extensiones_datos_marketing != null && lc.comprobante[i].extensiones.extensiones_datos_marketing != "") { cIBK.extensiones.extensiones_datos_marketing = lc.comprobante[i].extensiones.extensiones_datos_marketing; } if (lc.comprobante[i].extensiones.extensiones_signatures != null && lc.comprobante[i].extensiones.extensiones_signatures != "") { cIBK.extensiones.extensiones_signatures = lc.comprobante[i].extensiones.extensiones_signatures; } if (lc.comprobante[i].extensiones.extensiones_destinatarios != null && lc.comprobante[i].extensiones.extensiones_destinatarios.email != "") { cIBK.extensiones.extensiones_destinatarios = new global::CedServicios.Site.org.dyndns.cedweb.envio.lcComprobanteExtensionesExtensiones_destinatarios(); cIBK.extensiones.extensiones_destinatarios.email = lc.comprobante[i].extensiones.extensiones_destinatarios.email.Trim(); } } cIBK.resumen = new global::CedServicios.Site.org.dyndns.cedweb.envio.lcComprobanteResumen(); cIBK.resumen.cant_alicuotas_iva = lc.comprobante[i].resumen.cant_alicuotas_iva; cIBK.resumen.cant_alicuotas_ivaSpecified = lc.comprobante[i].resumen.cant_alicuotas_ivaSpecified; cIBK.resumen.codigo_moneda = lc.comprobante[i].resumen.codigo_moneda; cIBK.resumen.descuentos = new global::CedServicios.Site.org.dyndns.cedweb.envio.lcComprobanteResumenDescuentos[0]; cIBK.resumen.cant_alicuotas_iva = lc.comprobante[i].resumen.cant_alicuotas_iva; cIBK.resumen.cant_alicuotas_ivaSpecified = lc.comprobante[i].resumen.cant_alicuotas_ivaSpecified; cIBK.resumen.codigo_moneda = lc.comprobante[i].resumen.codigo_moneda; cIBK.resumen.importe_operaciones_exentas = lc.comprobante[i].resumen.importe_operaciones_exentas; cIBK.resumen.importe_total_concepto_no_gravado = lc.comprobante[i].resumen.importe_total_concepto_no_gravado; cIBK.resumen.importe_total_factura = lc.comprobante[i].resumen.importe_total_factura; cIBK.resumen.importe_total_impuestos_internos = lc.comprobante[i].resumen.importe_total_impuestos_internos; cIBK.resumen.importe_total_impuestos_internosSpecified = lc.comprobante[i].resumen.importe_total_impuestos_internosSpecified; cIBK.resumen.importe_total_impuestos_municipales = lc.comprobante[i].resumen.importe_total_impuestos_municipales; cIBK.resumen.importe_total_impuestos_municipalesSpecified = lc.comprobante[i].resumen.importe_total_impuestos_municipalesSpecified; cIBK.resumen.importe_total_impuestos_nacionales = lc.comprobante[i].resumen.importe_total_impuestos_nacionales; cIBK.resumen.importe_total_impuestos_nacionalesSpecified = lc.comprobante[i].resumen.importe_total_impuestos_nacionalesSpecified; cIBK.resumen.importe_total_ingresos_brutos = lc.comprobante[i].resumen.importe_total_ingresos_brutos; cIBK.resumen.importe_total_ingresos_brutosSpecified = lc.comprobante[i].resumen.importe_total_ingresos_brutosSpecified; cIBK.resumen.importe_total_neto_gravado = lc.comprobante[i].resumen.importe_total_neto_gravado; if (lc.comprobante[i].resumen.importes_moneda_origen != null) { cIBK.resumen.importes_moneda_origen = new global::CedServicios.Site.org.dyndns.cedweb.envio.lcComprobanteResumenImportes_moneda_origen(); cIBK.resumen.importes_moneda_origen.importe_operaciones_exentas = lc.comprobante[i].resumen.importes_moneda_origen.importe_operaciones_exentas; cIBK.resumen.importes_moneda_origen.importe_total_concepto_no_gravado = lc.comprobante[i].resumen.importes_moneda_origen.importe_total_concepto_no_gravado; cIBK.resumen.importes_moneda_origen.importe_total_factura = lc.comprobante[i].resumen.importes_moneda_origen.importe_total_factura; cIBK.resumen.importes_moneda_origen.importe_total_impuestos_internos = lc.comprobante[i].resumen.importes_moneda_origen.importe_total_impuestos_internos; cIBK.resumen.importes_moneda_origen.importe_total_impuestos_internosSpecified = lc.comprobante[i].resumen.importes_moneda_origen.importe_total_impuestos_internosSpecified; cIBK.resumen.importes_moneda_origen.importe_total_impuestos_municipales = lc.comprobante[i].resumen.importes_moneda_origen.importe_total_impuestos_municipales; cIBK.resumen.importes_moneda_origen.importe_total_impuestos_municipalesSpecified = lc.comprobante[i].resumen.importes_moneda_origen.importe_total_impuestos_municipalesSpecified; cIBK.resumen.importes_moneda_origen.importe_total_impuestos_nacionales = lc.comprobante[i].resumen.importes_moneda_origen.importe_total_impuestos_nacionales; cIBK.resumen.importes_moneda_origen.importe_total_impuestos_nacionalesSpecified = lc.comprobante[i].resumen.importes_moneda_origen.importe_total_impuestos_nacionalesSpecified; cIBK.resumen.importes_moneda_origen.importe_total_ingresos_brutos = lc.comprobante[i].resumen.importes_moneda_origen.importe_total_ingresos_brutos; cIBK.resumen.importes_moneda_origen.importe_total_ingresos_brutosSpecified = lc.comprobante[i].resumen.importes_moneda_origen.importe_total_ingresos_brutosSpecified; cIBK.resumen.importes_moneda_origen.importe_total_neto_gravado = lc.comprobante[i].resumen.importes_moneda_origen.importe_total_neto_gravado; cIBK.resumen.importes_moneda_origen.impuesto_liq = lc.comprobante[i].resumen.importes_moneda_origen.impuesto_liq; cIBK.resumen.importes_moneda_origen.impuesto_liq_rni = lc.comprobante[i].resumen.importes_moneda_origen.impuesto_liq_rni; } cIBK.resumen.impuesto_liq = lc.comprobante[i].resumen.impuesto_liq; cIBK.resumen.impuesto_liq_rni = lc.comprobante[i].resumen.impuesto_liq_rni; if (lc.comprobante[i].resumen.descuentos != null) { cIBK.resumen.descuentos = new global::CedServicios.Site.org.dyndns.cedweb.envio.lcComprobanteResumenDescuentos[lc.comprobante[i].resumen.descuentos.Length]; for (int l = 0; l < lc.comprobante[i].resumen.descuentos.Length; l++) { if (lc.comprobante[i].resumen.descuentos[l] != null) { cIBK.resumen.descuentos[l] = new global::CedServicios.Site.org.dyndns.cedweb.envio.lcComprobanteResumenDescuentos(); cIBK.resumen.descuentos[l].alicuota_iva_descuento = lc.comprobante[i].resumen.descuentos[l].alicuota_iva_descuento; cIBK.resumen.descuentos[l].alicuota_iva_descuentoSpecified = lc.comprobante[i].resumen.descuentos[l].alicuota_iva_descuentoSpecified; cIBK.resumen.descuentos[l].descripcion_descuento = lc.comprobante[i].resumen.descuentos[l].descripcion_descuento; cIBK.resumen.descuentos[l].importe_descuento = lc.comprobante[i].resumen.descuentos[l].importe_descuento; cIBK.resumen.descuentos[l].importe_descuento_moneda_origen = lc.comprobante[i].resumen.descuentos[l].importe_descuento_moneda_origen; cIBK.resumen.descuentos[l].importe_descuento_moneda_origenSpecified = lc.comprobante[i].resumen.descuentos[l].importe_descuento_moneda_origenSpecified; cIBK.resumen.descuentos[l].importe_iva_descuento = lc.comprobante[i].resumen.descuentos[l].importe_iva_descuento; cIBK.resumen.descuentos[l].importe_iva_descuento_moneda_origen = lc.comprobante[i].resumen.descuentos[l].importe_iva_descuento_moneda_origen; cIBK.resumen.descuentos[l].importe_iva_descuento_moneda_origenSpecified = lc.comprobante[i].resumen.descuentos[l].importe_iva_descuento_moneda_origenSpecified; cIBK.resumen.descuentos[l].importe_iva_descuentoSpecified = lc.comprobante[i].resumen.descuentos[l].importe_iva_descuentoSpecified; cIBK.resumen.descuentos[l].porcentaje_descuento = lc.comprobante[i].resumen.descuentos[l].porcentaje_descuento; cIBK.resumen.descuentos[l].porcentaje_descuentoSpecified = lc.comprobante[i].resumen.descuentos[l].porcentaje_descuentoSpecified; } } } if (lc.comprobante[i].resumen.impuestos != null) { cIBK.resumen.impuestos = new global::CedServicios.Site.org.dyndns.cedweb.envio.lcComprobanteResumenImpuestos[lc.comprobante[i].resumen.impuestos.Length]; for (int l = 0; l < lc.comprobante[i].resumen.impuestos.Length; l++) { if (lc.comprobante[i].resumen.impuestos[l] != null) { cIBK.resumen.impuestos[l] = new global::CedServicios.Site.org.dyndns.cedweb.envio.lcComprobanteResumenImpuestos(); cIBK.resumen.impuestos[l].codigo_impuesto = lc.comprobante[i].resumen.impuestos[l].codigo_impuesto; cIBK.resumen.impuestos[l].codigo_jurisdiccion = lc.comprobante[i].resumen.impuestos[l].codigo_jurisdiccion; cIBK.resumen.impuestos[l].codigo_jurisdiccionSpecified = lc.comprobante[i].resumen.impuestos[l].codigo_jurisdiccionSpecified; cIBK.resumen.impuestos[l].descripcion = lc.comprobante[i].resumen.impuestos[l].descripcion; cIBK.resumen.impuestos[l].importe_impuesto = lc.comprobante[i].resumen.impuestos[l].importe_impuesto; cIBK.resumen.impuestos[l].importe_impuesto_moneda_origen = lc.comprobante[i].resumen.impuestos[l].importe_impuesto_moneda_origen; cIBK.resumen.impuestos[l].importe_impuesto_moneda_origenSpecified = lc.comprobante[i].resumen.impuestos[l].importe_impuesto_moneda_origenSpecified; cIBK.resumen.impuestos[l].jurisdiccion_municipal = lc.comprobante[i].resumen.impuestos[l].jurisdiccion_municipal; cIBK.resumen.impuestos[l].porcentaje_impuesto = lc.comprobante[i].resumen.impuestos[l].porcentaje_impuesto; cIBK.resumen.impuestos[l].porcentaje_impuestoSpecified = lc.comprobante[i].resumen.impuestos[l].porcentaje_impuestoSpecified; } } } cIBK.resumen.observaciones = lc.comprobante[i].resumen.observaciones; cIBK.resumen.tipo_de_cambio = lc.comprobante[i].resumen.tipo_de_cambio; lcWS.comprobante[i] = cIBK; } return(lcWS); }
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 ArmarLoteXMLButton_Click(object sender, EventArgs e) { try { //Crear "lote_comprobantes" FeaEntidades.InterFacturas.lote_comprobantes lc = new FeaEntidades.InterFacturas.lote_comprobantes(); Completar_lote_comprobantes(lc); string LoteXML; //Metodo estático para el armado del Lote en formato XML, no necesita usar el constructor con la URL, proxy y certificados. //Para Contingencias: El string LoteXML deberá guardarse en un archivo para se subido al Sitio Web de Interfacturas. LoteXML = eFact_C.Lote.ArmarLoteXML(lc); //Definir ruta y nombre del archivo. FileStream fs = File.Create(@"c:\\efact-r\\efact-c-contingencia.xml"); System.Text.Encoding codificador; codificador = System.Text.Encoding.GetEncoding("iso-8859-1"); fs.Write(codificador.GetBytes(LoteXML), 0, LoteXML.Length); fs.Close(); MessageBox.Show("Lote XML generado satisfactoriamente", "NOTIFICACION", MessageBoxButtons.OK); } catch (Exception ex) { MessageBox.Show(ex.Message, "NOTIFICACION", MessageBoxButtons.OK); //Guardar el ex.InnerException si tiene contenido para tener mas detalle del problema. } }
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 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; //ActualizarEstadoButton.DataBind(); //DescargarPDFButton.DataBind(); 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 { if (ValidarCamposObligatorios("")) { 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 lcFea = GenerarLote(false); //Grabar en base de datos lcFea.cabecera_lote.DestinoComprobante = "ITF"; lcFea.comprobante[0].cabecera.informacion_comprobante.Observacion = ""; RN.Comprobante.Registrar(lcFea, null, IdNaturalezaComprobanteTextBox.Text, "ITF", "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, sesion); AjustarLoteParaITF(lcFea); lcIBK = Conversor.Entidad2IBK(lcFea); respuesta = edyndns.EnviarIBK(lcIBK, certificado); //VIEJO MODO DE USO //certificado = NroCertif; //FeaEntidades.InterFacturas.lote_comprobantes lcFea = GenerarLote(); //respuesta = RN.Comprobante.EnviarIBK(lcFea, certificado); respuesta = respuesta.Replace("'", "-"); ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript(respuesta), false); if (respuesta == "Comprobante enviado satisfactoriamente a Interfacturas.") { Entidades.Comprobante comprobante = new Entidades.Comprobante(); comprobante.Cuit = lcFea.comprobante[0].cabecera.informacion_vendedor.cuit.ToString(); comprobante.TipoComprobante.Id = lcFea.comprobante[0].cabecera.informacion_comprobante.tipo_de_comprobante; comprobante.NroPuntoVta = lcFea.comprobante[0].cabecera.informacion_comprobante.punto_de_venta; comprobante.Nro = lcFea.comprobante[0].cabecera.informacion_comprobante.numero_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(lcFea.comprobante[0].cabecera.informacion_vendedor.cuit), lcFea.cabecera_lote.id_lote, lcFea.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); Session["comprobantePDF"] = comprobante; ActualizarEstadoPanel.Visible = false; DescargarPDFPanel.Visible = true; } else if (lc.cabecera_lote.resultado == "R") { comprobante.WF.Estado = "Rechazado"; RN.Comprobante.Actualizar(comprobante, sesion); RN.Comprobante.Leer(comprobante, sesion); Session["comprobantePDF"] = comprobante; ActualizarEstadoPanel.Visible = false; DescargarPDFPanel.Visible = false; } } 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 BuscarButton_Click(object sender, EventArgs e) { if (Funciones.SessionTimeOut(Session)) { Response.Redirect("~/SessionTimeout.aspx"); } else { try { MensajeLabel.Text = ""; bool monedasExtranjeras = false; Entidades.Sesion sesion = (Entidades.Sesion)Session["Sesion"]; List <Entidades.Comprobante> listaC = new List <Entidades.Comprobante>(); List <Entidades.Estado> estados = new List <Entidades.Estado>(); Entidades.Estado es = new Entidades.Estado(); es.Id = "Vigente"; estados.Add(es); Entidades.Persona persona = new Entidades.Persona(); Entidades.NaturalezaComprobante nc = new Entidades.NaturalezaComprobante(); nc.Id = "Venta"; listaC = RN.Comprobante.ListaFiltradaIvaYMovimientos(estados, FechaDesdeTextBox.Text, FechaHastaTextBox.Text, persona, nc, false, "", sesion); Entidades.VentasXArticulo ventas = new Entidades.VentasXArticulo(); ventas.Cuit = sesion.Cuit.Nro; ventas.RazSoc = sesion.Cuit.RazonSocial; ventas.PeriodoDsd = FechaDesdeTextBox.Text.Substring(6, 2) + "/" + FechaDesdeTextBox.Text.Substring(4, 2) + "/" + FechaDesdeTextBox.Text.Substring(0, 4); ventas.PeriodoHst = FechaHastaTextBox.Text.Substring(6, 2) + "/" + FechaHastaTextBox.Text.Substring(4, 2) + "/" + FechaHastaTextBox.Text.Substring(0, 4); System.Xml.Serialization.XmlSerializer x; byte[] bytes; System.IO.MemoryStream ms; FeaEntidades.InterFacturas.lote_comprobantes lote; ventas.VentasXArticuloDetalle = new List <Entidades.VentasXArticuloDetalle>(); List <Entidades.VentasXArticuloDetalle> lvd = new List <Entidades.VentasXArticuloDetalle>(); Entidades.VentasXArticuloDetalle vd; foreach (Entidades.Comprobante comprobante in listaC) { lote = new FeaEntidades.InterFacturas.lote_comprobantes(); x = new System.Xml.Serialization.XmlSerializer(lote.GetType()); comprobante.Response = comprobante.Response.Replace("iso-8859-1", "utf-16"); bytes = new byte[comprobante.Response.Length * sizeof(char)]; System.Buffer.BlockCopy(comprobante.Response.ToCharArray(), 0, bytes, 0, bytes.Length); ms = new System.IO.MemoryStream(bytes); ms.Seek(0, System.IO.SeekOrigin.Begin); lote = (FeaEntidades.InterFacturas.lote_comprobantes)x.Deserialize(ms); //Totales por artículo if (lote.comprobante[0].detalle.linea != null) { for (int z = 0; z < lote.comprobante[0].detalle.linea.Length; z++) { double signo = 1; if (("/3/8/13/").IndexOf("/" + Convert.ToInt32(lote.comprobante[0].cabecera.informacion_comprobante.tipo_de_comprobante).ToString().Trim() + "/") != -1) { signo = -1; } //Verificar el articulo ya existe en la lista. //List<Entidades.VentasXArticuloDetalle> listaAux = lvd.FindAll(delegate(Entidades.VentasXArticuloDetalle vxad) //{ // return vxad.IdArticulo == lote.comprobante[0].detalle.linea[z].codigo_producto_vendedor; //}); //if (listaAux.Count == 0 || lote.comprobante[0].detalle.linea[z].codigo_producto_vendedor.Trim() == "") //{ //} vd = new Entidades.VentasXArticuloDetalle(); vd.IdArticulo = lote.comprobante[0].detalle.linea[z].codigo_producto_vendedor; vd.GTIN = lote.comprobante[0].detalle.linea[z].GTIN.ToString(); vd.IdArticuloEmp = lote.comprobante[0].detalle.linea[z].codigo_producto_comprador; if (lote.comprobante[0].detalle.linea[z].indicacion_exento_gravado != null) { vd.IndicacionExentoGravado = lote.comprobante[0].detalle.linea[z].indicacion_exento_gravado; } else { vd.IndicacionExentoGravado = ""; } vd.NumeroLinea = lote.comprobante[0].detalle.linea[z].numeroLinea; vd.UnidadCod = lote.comprobante[0].detalle.linea[z].unidad; vd.UnidadDescr = lote.comprobante[0].detalle.linea[z].unidadDescripcion; vd.CompTipo = lote.comprobante[0].cabecera.informacion_comprobante.tipo_de_comprobante.ToString(); vd.CompNro = lote.comprobante[0].cabecera.informacion_comprobante.numero_comprobante.ToString(); vd.CompPtoVta = lote.comprobante[0].cabecera.informacion_comprobante.punto_de_venta.ToString(); vd.CompFecEmi = lote.comprobante[0].cabecera.informacion_comprobante.fecha_emision.Substring(6, 2) + "/" + lote.comprobante[0].cabecera.informacion_comprobante.fecha_emision.Substring(4, 2) + "/" + lote.comprobante[0].cabecera.informacion_comprobante.fecha_emision.Substring(0, 4); vd.EmpNroDoc = lote.comprobante[0].cabecera.informacion_comprador.nro_doc_identificatorio.ToString(); vd.EmpCodDoc = lote.comprobante[0].cabecera.informacion_comprador.codigo_doc_identificatorio.ToString(); vd.EmpDescrDoc = ""; //Obtener la descripcion; vd.EmpNombre = lote.comprobante[0].cabecera.informacion_comprador.denominacion; if (lote.comprobante[0].detalle.linea[z].descripcion.Length > 0 && lote.comprobante[0].detalle.linea[z].descripcion.Substring(0, 1) == "%") { vd.Descr = RN.Funciones.HexToString(lote.comprobante[0].detalle.linea[z].descripcion); } else { vd.Descr = lote.comprobante[0].detalle.linea[z].descripcion; } vd.ImporteTotal = lote.comprobante[0].detalle.linea[z].importe_total_articulo * signo; if (lote.comprobante[0].detalle.linea[z].cantidadSpecified == true && lote.comprobante[0].detalle.linea[z].precio_unitarioSpecified == true) { vd.Cantidad = lote.comprobante[0].detalle.linea[z].cantidad * signo; vd.PrecioUnitario = lote.comprobante[0].detalle.linea[z].precio_unitario * signo; } if (lote.comprobante[0].detalle.linea[z].alicuota_ivaSpecified == true && lote.comprobante[0].detalle.linea[z].importe_ivaSpecified == true) { vd.AlicuotaIVA = lote.comprobante[0].detalle.linea[z].alicuota_iva; vd.ImporteIVA = lote.comprobante[0].detalle.linea[z].importe_iva * signo; } lvd.Add(vd); } } } //Si se muestran artículos vigentes no vendidos. List <Entidades.Articulo> listaArt = new List <Entidades.Articulo>(); if (VerTodosLosArticulosCheckBox.Enabled == true && VerTodosLosArticulosCheckBox.Checked == true) { listaArt = RN.Articulo.ListaPorCuit(true, false, sesion); if (listaArt.Count != 0) { foreach (Entidades.Articulo art in listaArt) { bool existeArt = false; if (lvd.Count != 0) { System.Collections.Generic.List <Entidades.VentasXArticuloDetalle> listaVXArt = lvd.FindAll(delegate(Entidades.VentasXArticuloDetalle vxart) { return(vxart.IdArticulo == art.Id); }); if (listaVXArt.Count != 0) { existeArt = true; } } if (!existeArt) { vd = new Entidades.VentasXArticuloDetalle(); vd.IdArticulo = art.Id; vd.Descr = art.Descr; vd.CompFecEmi = ""; vd.CompNro = ""; vd.CompPtoVta = ""; vd.CompTipo = ""; vd.UnidadCod = ""; vd.UnidadDescr = ""; vd.IndicacionExentoGravado = ""; vd.EmpNroDoc = ""; vd.EmpCodDoc = ""; vd.EmpDescrDoc = ""; vd.EmpNombre = ""; lvd.Add(vd); } } } } if (lvd.Count != 0) { ventas.VentasXArticuloDetalle = lvd; } Session["formatoRptExportar"] = FormatosRptExportarDropDownList.SelectedValue; Session["mostrarFechaYHora"] = FechaYHoraCheckBox.Checked; Session["mostrarDetalleComprobantes"] = DetalleComprobanteCheckBox.Checked; Session["monedasExtranjeras"] = monedasExtranjeras; if (ventas.VentasXArticuloDetalle.Count != 0) { Session["ventasXArticulo"] = ventas; Response.Redirect("~/Facturacion/Electronica/Reportes/VentasXArticuloWebForm.aspx", true); } else { MensajeLabel.Text = "No hay información."; } } catch (System.Threading.ThreadAbortException) { Trace.Warn("Thread abortado"); } catch (Exception ex) { WebForms.Excepciones.Redireccionar(ex, "~/NotificacionDeExcepcion.aspx"); } } }
protected void 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 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; } } }
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 ActualizarEstadoButton_Click(object sender, EventArgs e) { string NroCertif = ""; 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 { Entidades.Comprobante comprobante = (Entidades.Comprobante)Session["comprobantePDF"]; if (comprobante != null) { string certificado = ""; certificado = CaptchaDotNet2.Security.Cryptography.Encryptor.Encrypt(NroCertif, "srgerg$%^bg", Convert.FromBase64String("srfjuoxp")).ToString(); //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(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); //c.Leer(comprobante, ((Entidades.Sesion)Session["Sesion"])); comprobante.Response = XML; if (lc.cabecera_lote.resultado == "A") { comprobante.WF.Estado = "Vigente"; RN.Comprobante.Actualizar(comprobante, (Entidades.Sesion)Session["Sesion"]); RN.Comprobante.Leer(comprobante, ((Entidades.Sesion)Session["Sesion"])); Session["comprobantePDF"] = comprobante; ActualizarEstadoPanel.Visible = false; DescargarPDFPanel.Visible = true; } else if (lc.cabecera_lote.resultado == "R") { comprobante.WF.Estado = "Rechazado"; RN.Comprobante.Actualizar(comprobante, (Entidades.Sesion)Session["Sesion"]); RN.Comprobante.Leer(comprobante, ((Entidades.Sesion)Session["Sesion"])); Session["comprobantePDF"] = comprobante; ActualizarEstadoPanel.Visible = false; DescargarPDFPanel.Visible = false; } } } catch (Exception ex) { ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Problemas al enviar el comprobante a Interfacturas. " + ex.Message), false); } }
private void ActualizarBandejaS() { Cursor = System.Windows.Forms.Cursors.WaitCursor; DateTime FechaDsd; DateTime FechaHst; VerificarServicio(); if (TipoConsulta == eFact_Entidades.Lote.TipoConsulta.FechaAlta) { FechaDsd = FechaDsdLoteFecAltaDTP.Value; FechaHst = FechaHstLoteFecAltaDTP.Value; } else { FechaDsd = FechaDsdLoteFecEnvioDTP.Value; FechaHst = FechaHstLoteFecEnvioDTP.Value; } OtrosFiltrosFiltrarBS(); string otrosFiltrosCuitvendedor = ""; string otrosFiltrosPuntoVenta = ""; string otrosFiltrosNumeroLote = ""; if (OtrosFiltrosBandejaSCheckBox.Checked) { otrosFiltrosCuitvendedor = CuitVendedorTextBox.Text; otrosFiltrosNumeroLote = NumeroLoteTextBox.Text; otrosFiltrosPuntoVenta = PuntoVentaTextBox.Text; } List<CedEntidades.Evento> eventosXLote = new List<CedEntidades.Evento>(); InicializarEventosComboBox(out eventosXLote); ExportarItfComboBox.Items.Clear(); ExportarItfComboBox.Items.Add("( Elegir una opción para Exportar )"); ExportarItfComboBox.SelectedIndex = 0; BandejaSDataGridView.AutoGenerateColumns = false; eFact_RN.Tablero.ActualizarBandejaSalida(out dtBandejaSalida, TipoConsulta, FechaDsd, FechaHst, otrosFiltrosCuitvendedor, otrosFiltrosNumeroLote, otrosFiltrosPuntoVenta, PtesDiasAntCheckBox.Checked, eFact_R.Aplicacion.Sesion); BandejaSDataGridView.DataSource = dtBandejaSalida; if (Aplicacion.Modalidad != "Automatica" || ServicioOK == false) { //Verificar Ptes.Respuesta AFIP. List<eFact_Entidades.Lote> dtBandejaSalidaFind = dtBandejaSalida.FindAll((delegate(eFact_Entidades.Lote e1) { return e1.WF.IdEstado == "PteRespAFIP"; })); foreach (eFact_Entidades.Lote l in dtBandejaSalidaFind) { FeaEntidades.InterFacturas.lote_comprobantes Lc = new FeaEntidades.InterFacturas.lote_comprobantes(); eFact_RN.IBK.error[] respErroresLote = new eFact_RN.IBK.error[0]; eFact_RN.IBK.error[] respErroresComprobantes = new eFact_RN.IBK.error[0]; try { //Consultar si exite el lote en Interfacturas eFact_RN.Lote.ConsultarLoteIF(out Lc, out respErroresLote, out respErroresComprobantes, l, Aplicacion.Vendedores.Find(delegate(eFact_Entidades.Vendedor e1) { return e1.CuitVendedor == l.CuitVendedor; }).NumeroSerieCertificado); //Ejecutar evento ( cambia el estado ) if (Lc.cabecera_lote.resultado == "A") { eFact_RN.Lote.ActualizarDatosCAE(l, Lc); string comentario = ArmarTextoMotivo(Lc); EjecutarEventoBandejaS("RegAceptAFIP", comentario, l); } else if (Lc.cabecera_lote.resultado == "O") { eFact_RN.Lote.ActualizarDatosCAE(l, Lc); string comentario = ArmarTextoMotivo(Lc); EjecutarEventoBandejaS("RegAceptAFIPO", comentario, l); } else if (Lc.cabecera_lote.resultado == "P") { eFact_RN.Lote.ActualizarDatosCAE(l, Lc); string comentario = ArmarTextoMotivo(Lc); EjecutarEventoBandejaS("RegAceptAFIPP", comentario, l); } else if (Lc.cabecera_lote.resultado == "R") { eFact_RN.IBK.lote_response lr = ArmarLoteResponse(Lc); eFact_RN.Lote.ActualizarDatosError(l, lr); string comentario = ArmarTextoMotivo(Lc); EjecutarEventoBandejaS("RegRechAFIP", comentario, l); } else { throw new Microsoft.ApplicationBlocks.ExceptionManagement.Validaciones.Lote.ProblemasConsulta("Estado del lote [" + Lc.cabecera_lote.resultado + "] no definido."); } } catch (Exception ex) { if (respErroresLote.Length != 0) { if (respErroresLote[0].codigo_error != Convert.ToInt32("401")) { EjecutarEventoBandejaS("RegRechAFIP", ex.Message, l); } } else { Microsoft.ApplicationBlocks.ExceptionManagement.ExceptionManager.Publish(ex); } } } eFact_RN.Tablero.ActualizarBandejaSalida(out dtBandejaSalida, TipoConsulta, FechaDsd, FechaHst, otrosFiltrosCuitvendedor, otrosFiltrosNumeroLote, otrosFiltrosPuntoVenta, PtesDiasAntCheckBox.Checked, eFact_R.Aplicacion.Sesion); BandejaSDataGridView.DataSource = new List<eFact_Entidades.Lote>(); BandejaSDataGridView.DataSource = dtBandejaSalida; } BandejaSDataGridView.Refresh(); Cursor = System.Windows.Forms.Cursors.Default; }
private FeaEntidades.InterFacturas.lote_comprobantes GenerarLote(bool EsParaImprimirPDF) { FeaEntidades.InterFacturas.lote_comprobantes lote = new FeaEntidades.InterFacturas.lote_comprobantes(); FeaEntidades.InterFacturas.comprobante comp = new FeaEntidades.InterFacturas.comprobante(); FeaEntidades.InterFacturas.cabecera_lote cab = new FeaEntidades.InterFacturas.cabecera_lote(); cab.cantidad_reg = 1; cab.cuit_canal = Convert.ToInt64(Entidades.Const.CuitInterfacturas); cab.cuit_vendedor = Convert.ToInt64(Cuit_VendedorTextBox.Text); cab.id_lote = Convert.ToInt64(Id_LoteTextbox.Text); GenerarPrestaServicio(cab); if (IdNaturalezaComprobanteTextBox.Text != "Compra") { cab.punto_de_venta = Convert.ToInt32(PuntoVtaDropDownList.SelectedValue); } else { cab.punto_de_venta = Convert.ToInt32(PuntoVtaTextBox.Text); } lote.cabecera_lote = cab; FeaEntidades.InterFacturas.cabecera compcab = new FeaEntidades.InterFacturas.cabecera(); FeaEntidades.InterFacturas.informacion_comprador infcompra = new FeaEntidades.InterFacturas.informacion_comprador(); if (!MonedaComprobanteDropDownList.SelectedValue.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; } GenerarInfoComprador(compcab, infcompra); FeaEntidades.InterFacturas.informacion_comprobante infcomprob = GenerarInfoComprobante(); GenerarReferencias(infcomprob); GenerarInfoExportacion(comp, infcomprob); GenerarInfoExtensionesComerciales(comp); GenerarInfoExtensionesCamaraFacturas(comp); GenerarInfoExtensionesDestinatarios(comp); compcab.informacion_comprobante = infcomprob; GenerarInfoVendedor(compcab); comp.cabecera = compcab; string idtipo = "Comun"; if (IdNaturalezaComprobanteTextBox.Text != "Compra") { int auxPV = Convert.ToInt32(((DropDownList)PuntoVtaDropDownList).SelectedValue); try { if (Funciones.SessionTimeOut(Session)) { Response.Redirect("~/SessionTimeout.aspx"); } else { idtipo = ((Entidades.Sesion)Session["Sesion"]).UN.PuntosVta.Find(delegate(Entidades.PuntoVta pv) { return pv.Nro == auxPV; }).IdTipoPuntoVta; } } catch (NullReferenceException) { } } FeaEntidades.InterFacturas.detalle det = DetalleLinea.GenerarDetalles(MonedaComprobanteDropDownList.SelectedValue, Tipo_de_cambioTextBox.Text, idtipo, Tipo_De_ComprobanteDropDownList.SelectedValue, EsParaImprimirPDF); det.comentarios = ComentariosTextBox.Text; comp.detalle = det; FeaEntidades.InterFacturas.resumen r = new FeaEntidades.InterFacturas.resumen(); if (Tipo_de_cambioTextBox.Text != string.Empty) { r.tipo_de_cambio = Convert.ToDouble(Tipo_de_cambioTextBox.Text); } else { r.tipo_de_cambio = 1; } r.codigo_moneda = MonedaComprobanteDropDownList.SelectedValue; if (MonedaComprobanteDropDownList.SelectedValue.Equals(FeaEntidades.CodigosMoneda.CodigoMoneda.Local)) { //Moneda local GenerarImportesMonedaLocal(r); } else { //Moneda extranjera GenerarImportesMonedaExtranjera(r); } r.observaciones = Observaciones_ResumenTextBox.Text; comp.resumen = r; System.Collections.Generic.List<FeaEntidades.InterFacturas.resumenImpuestos> listadeimpuestos = ImpuestosGlobales.Lista; if (IdNaturalezaComprobanteTextBox.Text != "Compra") { int auxPV = Convert.ToInt32(((DropDownList)PuntoVtaDropDownList).SelectedValue); try { if (Funciones.SessionTimeOut(Session)) { Response.Redirect("~/SessionTimeout.aspx"); } else { idtipo = ((Entidades.Sesion)Session["Sesion"]).UN.PuntosVta.Find(delegate(Entidades.PuntoVta pv) { return pv.Nro == auxPV; }).IdTipoPuntoVta; if (idtipo.Equals("Exportacion")) { if (listadeimpuestos[0].importe_impuesto != 0 || listadeimpuestos.Count > 1) { ImpuestosGlobales.Focus(); throw new Exception("Los impuestos globales no se deben informar para exportación"); } } else { ImpuestosGlobales.GenerarImpuestos(comp, MonedaComprobanteDropDownList.SelectedValue, Tipo_de_cambioTextBox.Text); } } } catch (System.NullReferenceException) { ImpuestosGlobales.GenerarImpuestos(comp, MonedaComprobanteDropDownList.SelectedValue, Tipo_de_cambioTextBox.Text); } } else { ImpuestosGlobales.GenerarImpuestos(comp, MonedaComprobanteDropDownList.SelectedValue, Tipo_de_cambioTextBox.Text); } DescuentosGlobales.GenerarResumen(comp, MonedaComprobanteDropDownList.SelectedValue, Tipo_de_cambioTextBox.Text); lote.comprobante[0] = comp; return lote; }
private void EnviarAIF() { try { Cursor=System.Windows.Forms.Cursors.WaitCursor; EventosComboBox.Enabled = false; if (BandejaSDataGridView.SelectedRows.Count != 0) { eFact_Entidades.Lote l = new eFact_Entidades.Lote(); List<eFact_Entidades.Lote> llotes = new List<eFact_Entidades.Lote>(); for (int i = 0; i < BandejaSDataGridView.SelectedRows.Count; i++) { int renglon = BandejaSDataGridView.SelectedRows[i].Index; l = dtBandejaSalida[renglon]; llotes.Add(l); } llotes = SortListaLotes(llotes); for (int i = 0; i < llotes.Count; i++) { //Envio del lote a IF eFact_Entidades.Lote lote = new eFact_Entidades.Lote(); lote = llotes[i]; List<CedEntidades.Evento> eventosposibles = new List<CedEntidades.Evento>(); eventosposibles = lote.WF.EventosPosibles.FindAll((delegate(CedEntidades.Evento e1) { return e1.IdEstadoDsd.IdEstado.ToString() == "PteEnvio"; })); if (eventosposibles.Count == 0) { MessageBox.Show("Imposible enviar el lote: " + lote.NumeroLote + " en el estado actual.", "Envio de Lotes", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); break; } FeaEntidades.InterFacturas.lote_comprobantes lc = new FeaEntidades.InterFacturas.lote_comprobantes(); eFact_RN.Lote.DeserializarLc(out lc, lote, false); //Antes de ejecutar el envio a Interfacturas, cambiar el estado. EjecutarEventoBandejaS("EnviarAIF", "", lote); //Actualizar el WF del lote. eFact_RN.Lote.Leer(lote, Aplicacion.Sesion); //Consultar si exite el lote en Interfacturas FeaEntidades.InterFacturas.lote_comprobantes Lc = new FeaEntidades.InterFacturas.lote_comprobantes(); eFact_RN.IBK.error[] respErroresLote = new eFact_RN.IBK.error[0]; eFact_RN.IBK.error[] respErroresComprobantes = new eFact_RN.IBK.error[0]; eFact_RN.IBK.consulta_lote_responseErrores_consulta RespErroresLote = new eFact_RN.IBK.consulta_lote_responseErrores_consulta(); eFact_RN.IBK.consulta_lote_comprobantes_responseErrores_response RespErroresComprobantes = new eFact_RN.IBK.consulta_lote_comprobantes_responseErrores_response(); //Enviar a Interfacturas si el lote no existe. eFact_RN.Comprobante eFact_RNComprobante = new eFact_RN.Comprobante(); eFact_RN.IBK.lote_response Lr = new eFact_RN.IBK.lote_response(); try { eFact_Entidades.Vendedor v = Aplicacion.Vendedores.Find(delegate(eFact_Entidades.Vendedor e1) { return e1.CuitVendedor == lc.cabecera_lote.cuit_vendedor.ToString(); }); if (v == null) { throw new Microsoft.ApplicationBlocks.ExceptionManagement.Vendedor.Inexistente("CUIT " + lc.cabecera_lote.cuit_vendedor.ToString()); } eFact_RNComprobante.EnviarIBK(out Lr, lc, v.NumeroSerieCertificado.ToString()); EjecutarEventoBandejaS("RegAceptIF", "", lote); } catch (Exception ex2) { //Si el lote tiene errores al ser enviado, grabar el rechazo. string edescr = ""; if (Lr.estado == null && Lr.errores_lote == null && Lr.comprobante_response == null) { //Cuando el error es local, previo a la respuesta de IF se usa el código 99 (Cedeira) para mostrar el error. //Ejemplo: cuando no está instalado el certificado. Lr.estado = "99"; Lr.errores_lote = new eFact_RN.IBK.error[1]; Lr.errores_lote[0] = new eFact_RN.IBK.error(); Lr.errores_lote[0].codigo_error = 99; edescr = ex2.Message.Replace("'", "''"); Lr.errores_lote[0].descripcion_error = edescr; //------ Datos del lote, que genera el error ------ Lr.id_lote = Convert.ToInt64(lote.NumeroLote); Lr.cuit_vendedor = Convert.ToInt64(lote.CuitVendedor); Lr.punto_de_venta = Convert.ToInt32(lote.PuntoVenta); Lr.cantidad_reg = lote.CantidadRegistros; //------------------------------------------------- if (edescr.IndexOf("500 - error") != -1) { Lr.errores_lote[0].codigo_error = 500; } if (edescr.IndexOf("600 - error") != -1) { Lr.errores_lote[0].codigo_error = 600; } } eFact_RN.Lote.ActualizarDatosError(lote, Lr); edescr = ex2.Message.Replace("'", "''"); EjecutarEventoBandejaS("RegRechIF", edescr, lote); //Va a revertir el rechazo (si el error es "Timed Out" hasta 10 ocurrencias. if (Lr.estado == "99" && Lr.errores_lote != null && Lr.errores_lote[0].descripcion_error.ToUpper().Trim() == "THE OPERATION HAS TIMED OUT") { eFact_Entidades.Lote loteAux = new eFact_Entidades.Lote(); loteAux.IdLote = lote.IdLote; eFact_RN.Lote.Leer(loteAux, Aplicacion.Sesion); List<CedEntidades.Log> log = loteAux.WF.Log.FindAll(delegate(CedEntidades.Log e1) { return e1.Comentario.ToUpper().Trim() == "THE OPERATION HAS TIMED OUT"; }); if (log != null && log.Count > 0 && log.Count < 10) { //Actualizar el WF del lote. eFact_RN.Lote.Leer(lote, Aplicacion.Sesion); EjecutarEventoBandejaS("RevertirRechIFA", "", lote); } } throw new Exception(ex2.Message); } } } } catch (Exception ex) { Microsoft.ApplicationBlocks.ExceptionManagement.ExceptionManager.Publish(ex); } finally { RefreshBandejaSalida(); EventosComboBox.Enabled = true; Cursor = System.Windows.Forms.Cursors.Default; } }
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); }
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"; } }
private void LeerXmlLoteResponse(out FeaEntidades.InterFacturas.lote_comprobantes lc, System.IO.MemoryStream ms) { try { lc = new FeaEntidades.InterFacturas.lote_comprobantes(); ms.Seek(0, System.IO.SeekOrigin.Begin); FeaEntidades.InterFacturas.XML.consulta_lote_comprobantes_response clr = new FeaEntidades.InterFacturas.XML.consulta_lote_comprobantes_response(); System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(clr.GetType()); clr = (FeaEntidades.InterFacturas.XML.consulta_lote_comprobantes_response)x.Deserialize(ms); lc = clr.consulta_lote_response.lote_comprobantes; } catch (Exception ex) { RN.Sesion.GrabarLogTexto(Server.MapPath("~/Consultar.txt"), "LeerFormatoLoteIBK: " + ex.Message); throw ex; } }
public void CompletarReferencias(FeaEntidades.InterFacturas.lote_comprobantes lc) { //Permisos de exportación referencias = new List <FeaEntidades.InterFacturas.informacion_comprobanteReferencias>(); if (lc.comprobante[0].cabecera.informacion_comprobante != null && lc.comprobante[0].cabecera.informacion_comprobante.referencias != null) { foreach (FeaEntidades.InterFacturas.informacion_comprobanteReferencias r in lc.comprobante[0].cabecera.informacion_comprobante.referencias) { //descripcioncodigo_de_referencia ( XmlIgnoreAttribute ) //Se busca la descripción a través del código. try { if (r != null) { List <FeaEntidades.CodigosReferencia.CodigoReferencia> listaCR = new List <FeaEntidades.CodigosReferencia.CodigoReferencia>(); List <FeaEntidades.CodigosReferencia.Exportaciones.Exportacion> listaCRExpo = new List <FeaEntidades.CodigosReferencia.Exportaciones.Exportacion>(); List <FeaEntidades.TiposDeComprobantes.TipoComprobante> listaCRAfip = new List <FeaEntidades.TiposDeComprobantes.TipoComprobante>(); string idtipo = ((Entidades.Sesion) Session["Sesion"]).UN.PuntosVta.Find(delegate(Entidades.PuntoVta pv) { return(pv.Nro == Convert.ToInt32(puntoDeVenta)); }).IdTipoPuntoVta; switch (idtipo) { case "Comun": case "RG2904": case "BonoFiscal": if (r.tipo_comprobante_afip == "S") { listaCRAfip = FeaEntidades.TiposDeComprobantes.TipoComprobante.ListaCompletaAFIPSinInf(); r.descripcioncodigo_de_referencia = listaCRAfip.Find(delegate(FeaEntidades.TiposDeComprobantes.TipoComprobante cr) { return(cr.Codigo == Convert.ToInt16(r.codigo_de_referencia)); }).Descr; } else { listaCR = FeaEntidades.CodigosReferencia.CodigoReferencia.Lista(); r.descripcioncodigo_de_referencia = listaCR.Find(delegate(FeaEntidades.CodigosReferencia.CodigoReferencia cr) { return(cr.Codigo == r.codigo_de_referencia.ToString()); }).Descr; } break; case "Exportacion": listaCRExpo = FeaEntidades.CodigosReferencia.Exportaciones.Exportacion.Lista(); r.descripcioncodigo_de_referencia = listaCRExpo.Find(delegate(FeaEntidades.CodigosReferencia.Exportaciones.Exportacion cr) { return(cr.Codigo == r.codigo_de_referencia.ToString()); }).Descr; break; default: throw new Exception("Tipo de punto de venta no contemplado en la lógica de la aplicación (" + idtipo + ")"); } referencias.Add(r); } } catch //Referencia no valida { } } } if (referencias.Count.Equals(0)) { referencias.Add(new FeaEntidades.InterFacturas.informacion_comprobanteReferencias()); } referenciasGridView.DataSource = referencias; referenciasGridView.DataBind(); ViewState["referencias"] = referencias; }
static internal FeaEntidades.InterFacturas.lote_comprobantes IBK2Entidad(IBK.lote_comprobantes lcIBK) { FeaEntidades.InterFacturas.lote_comprobantes lcFEA = new FeaEntidades.InterFacturas.lote_comprobantes(); lcFEA.cabecera_lote = new FeaEntidades.InterFacturas.cabecera_lote(); lcFEA.cabecera_lote.cantidad_reg = lcIBK.cabecera_lote.cantidad_reg; lcFEA.cabecera_lote.cod_interno_canal = lcIBK.cabecera_lote.cod_interno_canal; lcFEA.cabecera_lote.cuit_canal = lcIBK.cabecera_lote.cuit_canal; lcFEA.cabecera_lote.cuit_vendedor = lcIBK.cabecera_lote.cuit_vendedor; lcFEA.cabecera_lote.fecha_envio_lote = lcIBK.cabecera_lote.fecha_envio_lote; lcFEA.cabecera_lote.id_lote = lcIBK.cabecera_lote.id_lote; lcFEA.cabecera_lote.motivo = lcIBK.cabecera_lote.motivo; lcFEA.cabecera_lote.presta_serv = lcIBK.cabecera_lote.presta_serv; lcFEA.cabecera_lote.presta_servSpecified = lcIBK.cabecera_lote.presta_servSpecified; lcFEA.cabecera_lote.punto_de_venta = lcIBK.cabecera_lote.punto_de_venta; lcFEA.cabecera_lote.resultado = lcIBK.cabecera_lote.resultado; lcFEA.comprobante = new FeaEntidades.InterFacturas.comprobante[lcIBK.comprobante.Length]; for (int i = 0; i < lcIBK.comprobante.Length; i++) { FeaEntidades.InterFacturas.comprobante cIBK = new FeaEntidades.InterFacturas.comprobante(); cIBK.cabecera = new FeaEntidades.InterFacturas.cabecera(); cIBK.cabecera.informacion_comprador = new FeaEntidades.InterFacturas.informacion_comprador(); cIBK.cabecera.informacion_comprador.codigo_doc_identificatorio = lcIBK.comprobante[i].cabecera.informacion_comprador.codigo_doc_identificatorio; cIBK.cabecera.informacion_comprador.codigo_interno = lcIBK.comprobante[i].cabecera.informacion_comprador.codigo_interno; cIBK.cabecera.informacion_comprador.condicion_ingresos_brutos = lcIBK.comprobante[i].cabecera.informacion_comprador.condicion_ingresos_brutos; cIBK.cabecera.informacion_comprador.condicion_ingresos_brutosSpecified = lcIBK.comprobante[i].cabecera.informacion_comprador.condicion_ingresos_brutosSpecified; cIBK.cabecera.informacion_comprador.condicion_IVA = lcIBK.comprobante[i].cabecera.informacion_comprador.condicion_IVA; cIBK.cabecera.informacion_comprador.condicion_IVASpecified = lcIBK.comprobante[i].cabecera.informacion_comprador.condicion_IVASpecified; cIBK.cabecera.informacion_comprador.contacto = lcIBK.comprobante[i].cabecera.informacion_comprador.contacto; cIBK.cabecera.informacion_comprador.cp = lcIBK.comprobante[i].cabecera.informacion_comprador.cp; cIBK.cabecera.informacion_comprador.denominacion = lcIBK.comprobante[i].cabecera.informacion_comprador.denominacion; cIBK.cabecera.informacion_comprador.domicilio_calle = lcIBK.comprobante[i].cabecera.informacion_comprador.domicilio_calle; cIBK.cabecera.informacion_comprador.domicilio_depto = lcIBK.comprobante[i].cabecera.informacion_comprador.domicilio_depto; cIBK.cabecera.informacion_comprador.domicilio_manzana = lcIBK.comprobante[i].cabecera.informacion_comprador.domicilio_manzana; cIBK.cabecera.informacion_comprador.domicilio_numero = lcIBK.comprobante[i].cabecera.informacion_comprador.domicilio_numero; cIBK.cabecera.informacion_comprador.domicilio_piso = lcIBK.comprobante[i].cabecera.informacion_comprador.domicilio_piso; cIBK.cabecera.informacion_comprador.domicilio_sector = lcIBK.comprobante[i].cabecera.informacion_comprador.domicilio_sector; cIBK.cabecera.informacion_comprador.domicilio_torre = lcIBK.comprobante[i].cabecera.informacion_comprador.domicilio_torre; cIBK.cabecera.informacion_comprador.email = lcIBK.comprobante[i].cabecera.informacion_comprador.email; cIBK.cabecera.informacion_comprador.GLN = lcIBK.comprobante[i].cabecera.informacion_comprador.GLN; cIBK.cabecera.informacion_comprador.GLNSpecified = lcIBK.comprobante[i].cabecera.informacion_comprador.GLNSpecified; cIBK.cabecera.informacion_comprador.inicio_de_actividades = lcIBK.comprobante[i].cabecera.informacion_comprador.inicio_de_actividades; cIBK.cabecera.informacion_comprador.localidad = lcIBK.comprobante[i].cabecera.informacion_comprador.localidad; cIBK.cabecera.informacion_comprador.nro_doc_identificatorio = lcIBK.comprobante[i].cabecera.informacion_comprador.nro_doc_identificatorio; cIBK.cabecera.informacion_comprador.nro_ingresos_brutos = lcIBK.comprobante[i].cabecera.informacion_comprador.nro_ingresos_brutos; cIBK.cabecera.informacion_comprador.provincia = lcIBK.comprobante[i].cabecera.informacion_comprador.provincia; cIBK.cabecera.informacion_comprador.telefono = lcIBK.comprobante[i].cabecera.informacion_comprador.telefono; cIBK.cabecera.informacion_comprobante = new FeaEntidades.InterFacturas.informacion_comprobante(); cIBK.cabecera.informacion_comprobante.cae = lcIBK.comprobante[i].cabecera.informacion_comprobante.cae; cIBK.cabecera.informacion_comprobante.caeSpecified = false; if (cIBK.cabecera.informacion_comprobante.cae != "") { cIBK.cabecera.informacion_comprobante.caeSpecified = true; } cIBK.cabecera.informacion_comprobante.codigo_operacion = lcIBK.comprobante[i].cabecera.informacion_comprobante.codigo_operacion; cIBK.cabecera.informacion_comprobante.condicion_de_pago = lcIBK.comprobante[i].cabecera.informacion_comprobante.condicion_de_pago; cIBK.cabecera.informacion_comprobante.condicion_de_pagoSpecified = true; cIBK.cabecera.informacion_comprobante.es_detalle_encriptado = lcIBK.comprobante[i].cabecera.informacion_comprobante.es_detalle_encriptado; cIBK.cabecera.informacion_comprobante.fecha_emision = lcIBK.comprobante[i].cabecera.informacion_comprobante.fecha_emision; cIBK.cabecera.informacion_comprobante.fecha_obtencion_cae = lcIBK.comprobante[i].cabecera.informacion_comprobante.fecha_obtencion_cae; cIBK.cabecera.informacion_comprobante.fecha_obtencion_caeSpecified = false; if (cIBK.cabecera.informacion_comprobante.fecha_obtencion_cae != "") { cIBK.cabecera.informacion_comprobante.fecha_obtencion_caeSpecified = true; } cIBK.cabecera.informacion_comprobante.fecha_serv_desde = lcIBK.comprobante[i].cabecera.informacion_comprobante.fecha_serv_desde; cIBK.cabecera.informacion_comprobante.fecha_serv_hasta = lcIBK.comprobante[i].cabecera.informacion_comprobante.fecha_serv_hasta; cIBK.cabecera.informacion_comprobante.fecha_vencimiento = lcIBK.comprobante[i].cabecera.informacion_comprobante.fecha_vencimiento; cIBK.cabecera.informacion_comprobante.fecha_vencimiento_cae = lcIBK.comprobante[i].cabecera.informacion_comprobante.fecha_vencimiento_cae; cIBK.cabecera.informacion_comprobante.fecha_vencimiento_caeSpecified = false; if (cIBK.cabecera.informacion_comprobante.fecha_vencimiento_cae != "") { cIBK.cabecera.informacion_comprobante.fecha_vencimiento_caeSpecified = true; } cIBK.cabecera.informacion_comprobante.iva_computable = lcIBK.comprobante[i].cabecera.informacion_comprobante.iva_computable; cIBK.cabecera.informacion_comprobante.motivo = lcIBK.comprobante[i].cabecera.informacion_comprobante.motivo; cIBK.cabecera.informacion_comprobante.numero_comprobante = lcIBK.comprobante[i].cabecera.informacion_comprobante.numero_comprobante; cIBK.cabecera.informacion_comprobante.punto_de_venta = lcIBK.comprobante[i].cabecera.informacion_comprobante.punto_de_venta; if (lcIBK.comprobante[i].cabecera.informacion_comprobante.referencias != null) { cIBK.cabecera.informacion_comprobante.referencias = new FeaEntidades.InterFacturas.informacion_comprobanteReferencias[lcIBK.comprobante[i].cabecera.informacion_comprobante.referencias.Length]; for (int j = 0; j < lcIBK.comprobante[i].cabecera.informacion_comprobante.referencias.Length; j++) { if (lcIBK.comprobante[i].cabecera.informacion_comprobante.referencias[j] != null) { cIBK.cabecera.informacion_comprobante.referencias[j] = new FeaEntidades.InterFacturas.informacion_comprobanteReferencias(); cIBK.cabecera.informacion_comprobante.referencias[j].codigo_de_referencia = lcIBK.comprobante[i].cabecera.informacion_comprobante.referencias[j].codigo_de_referencia; cIBK.cabecera.informacion_comprobante.referencias[j].dato_de_referencia = lcIBK.comprobante[i].cabecera.informacion_comprobante.referencias[j].dato_de_referencia; } } } if (lcIBK.comprobante[i].cabecera.informacion_comprobante.informacion_exportacion != null) { cIBK.cabecera.informacion_comprobante.informacion_exportacion = new FeaEntidades.InterFacturas.informacion_exportacion(); cIBK.cabecera.informacion_comprobante.informacion_exportacion.destino_comprobante = lcIBK.comprobante[i].cabecera.informacion_comprobante.informacion_exportacion.destino_comprobante; cIBK.cabecera.informacion_comprobante.informacion_exportacion.tipo_exportacion = lcIBK.comprobante[i].cabecera.informacion_comprobante.informacion_exportacion.tipo_exportacion; cIBK.cabecera.informacion_comprobante.informacion_exportacion.id_impositivo = lcIBK.comprobante[i].cabecera.informacion_comprobante.informacion_exportacion.id_impositivo; cIBK.cabecera.informacion_comprobante.informacion_exportacion.incoterms = lcIBK.comprobante[i].cabecera.informacion_comprobante.informacion_exportacion.incoterms; cIBK.cabecera.informacion_comprobante.informacion_exportacion.descripcion_incoterms = lcIBK.comprobante[i].cabecera.informacion_comprobante.informacion_exportacion.descripcion_incoterms; if (lcIBK.comprobante[i].cabecera.informacion_comprobante.informacion_exportacion.permiso_existente != null && lcIBK.comprobante[i].cabecera.informacion_comprobante.informacion_exportacion.permiso_existente != "") { cIBK.cabecera.informacion_comprobante.informacion_exportacion.permiso_existente = lcIBK.comprobante[i].cabecera.informacion_comprobante.informacion_exportacion.permiso_existente; } if (lcIBK.comprobante[i].cabecera.informacion_comprobante.informacion_exportacion.permisos != null) { cIBK.cabecera.informacion_comprobante.informacion_exportacion.permisos = new FeaEntidades.InterFacturas.permisos[lcIBK.comprobante[i].cabecera.informacion_comprobante.informacion_exportacion.permisos.Length]; for (int j = 0; j < lcIBK.comprobante[i].cabecera.informacion_comprobante.informacion_exportacion.permisos.Length; j++) { if (lcIBK.comprobante[i].cabecera.informacion_comprobante.informacion_exportacion.permisos[j] != null) { cIBK.cabecera.informacion_comprobante.informacion_exportacion.permisos[j] = new FeaEntidades.InterFacturas.permisos(); cIBK.cabecera.informacion_comprobante.informacion_exportacion.permisos[j].id_permiso = lcIBK.comprobante[i].cabecera.informacion_comprobante.informacion_exportacion.permisos[j].id_permiso; cIBK.cabecera.informacion_comprobante.informacion_exportacion.permisos[j].destino_mercaderia = lcIBK.comprobante[i].cabecera.informacion_comprobante.informacion_exportacion.permisos[j].destino_mercaderia; } } } } cIBK.cabecera.informacion_comprobante.resultado = lcIBK.comprobante[i].cabecera.informacion_comprobante.resultado; cIBK.cabecera.informacion_comprobante.tipo_de_comprobante = lcIBK.comprobante[i].cabecera.informacion_comprobante.tipo_de_comprobante; cIBK.cabecera.informacion_vendedor = new FeaEntidades.InterFacturas.informacion_vendedor(); cIBK.cabecera.informacion_vendedor.codigo_interno = lcIBK.comprobante[i].cabecera.informacion_vendedor.codigo_interno; cIBK.cabecera.informacion_vendedor.condicion_ingresos_brutos = lcIBK.comprobante[i].cabecera.informacion_vendedor.condicion_ingresos_brutos; cIBK.cabecera.informacion_vendedor.condicion_ingresos_brutosSpecified = lcIBK.comprobante[i].cabecera.informacion_vendedor.condicion_ingresos_brutosSpecified; cIBK.cabecera.informacion_vendedor.condicion_IVA = lcIBK.comprobante[i].cabecera.informacion_vendedor.condicion_IVA; cIBK.cabecera.informacion_vendedor.condicion_IVASpecified = lcIBK.comprobante[i].cabecera.informacion_vendedor.condicion_IVASpecified; cIBK.cabecera.informacion_vendedor.contacto = lcIBK.comprobante[i].cabecera.informacion_vendedor.contacto; cIBK.cabecera.informacion_vendedor.cp = lcIBK.comprobante[i].cabecera.informacion_vendedor.cp; cIBK.cabecera.informacion_vendedor.cuit = lcIBK.comprobante[i].cabecera.informacion_vendedor.cuit; cIBK.cabecera.informacion_vendedor.domicilio_calle = lcIBK.comprobante[i].cabecera.informacion_vendedor.domicilio_calle; cIBK.cabecera.informacion_vendedor.domicilio_depto = lcIBK.comprobante[i].cabecera.informacion_vendedor.domicilio_depto; cIBK.cabecera.informacion_vendedor.domicilio_manzana = lcIBK.comprobante[i].cabecera.informacion_vendedor.domicilio_manzana; cIBK.cabecera.informacion_vendedor.domicilio_numero = lcIBK.comprobante[i].cabecera.informacion_vendedor.domicilio_numero; cIBK.cabecera.informacion_vendedor.domicilio_piso = lcIBK.comprobante[i].cabecera.informacion_vendedor.domicilio_piso; cIBK.cabecera.informacion_vendedor.domicilio_sector = lcIBK.comprobante[i].cabecera.informacion_vendedor.domicilio_sector; cIBK.cabecera.informacion_vendedor.domicilio_torre = lcIBK.comprobante[i].cabecera.informacion_vendedor.domicilio_torre; cIBK.cabecera.informacion_vendedor.email = lcIBK.comprobante[i].cabecera.informacion_vendedor.email; cIBK.cabecera.informacion_vendedor.GLN = lcIBK.comprobante[i].cabecera.informacion_vendedor.GLN; cIBK.cabecera.informacion_vendedor.GLNSpecified = lcIBK.comprobante[i].cabecera.informacion_vendedor.GLNSpecified; cIBK.cabecera.informacion_vendedor.inicio_de_actividades = lcIBK.comprobante[i].cabecera.informacion_vendedor.inicio_de_actividades; cIBK.cabecera.informacion_vendedor.localidad = lcIBK.comprobante[i].cabecera.informacion_vendedor.localidad; cIBK.cabecera.informacion_vendedor.nro_ingresos_brutos = lcIBK.comprobante[i].cabecera.informacion_vendedor.nro_ingresos_brutos; cIBK.cabecera.informacion_vendedor.provincia = lcIBK.comprobante[i].cabecera.informacion_vendedor.provincia; cIBK.cabecera.informacion_vendedor.telefono = lcIBK.comprobante[i].cabecera.informacion_vendedor.telefono; cIBK.extensiones = new FeaEntidades.InterFacturas.extensiones(); if (lcIBK.comprobante[i].extensiones.extensiones_camara_facturas != null) { cIBK.extensiones.extensiones_camara_facturas = new FeaEntidades.InterFacturas.extensionesExtensiones_camara_facturas(); cIBK.extensiones.extensiones_camara_facturas.clave_de_vinculacion = lcIBK.comprobante[i].extensiones.extensiones_camara_facturas.clave_de_vinculacion; cIBK.extensiones.extensiones_camara_facturas.id_idioma = lcIBK.comprobante[i].extensiones.extensiones_camara_facturas.id_idioma; cIBK.extensiones.extensiones_camara_facturas.id_template = lcIBK.comprobante[i].extensiones.extensiones_camara_facturas.id_template; } if (lcIBK.comprobante[i].extensiones.extensiones_datos_comerciales != null) { cIBK.extensiones.extensiones_datos_comerciales = lcIBK.comprobante[i].extensiones.extensiones_datos_comerciales.ToString(); } if (lcIBK.comprobante[i].extensiones.extensiones_datos_marketing != null) { cIBK.extensiones.extensiones_datos_marketing = lcIBK.comprobante[i].extensiones.extensiones_datos_marketing; } FeaEntidades.InterFacturas.detalle d = new FeaEntidades.InterFacturas.detalle(); IBK.detalle detalle = (IBK.detalle)lcIBK.comprobante[i].Item; d.linea = new FeaEntidades.InterFacturas.linea[detalle.linea.Length]; d.comentarios = detalle.comentarios; for (int j = 0; j < detalle.linea.Length; j++) { if (detalle.linea[j] != null) { d.linea[j] = new FeaEntidades.InterFacturas.linea(); d.linea[j].alicuota_iva = detalle.linea[j].alicuota_iva; d.linea[j].alicuota_ivaSpecified = detalle.linea[j].alicuota_ivaSpecified; d.linea[j].cantidad = detalle.linea[j].cantidad; d.linea[j].cantidadSpecified = detalle.linea[j].cantidadSpecified; d.linea[j].codigo_producto_comprador = detalle.linea[j].codigo_producto_comprador; d.linea[j].codigo_producto_vendedor = detalle.linea[j].codigo_producto_vendedor; d.linea[j].descripcion = detalle.linea[j].descripcion; d.linea[j].GTIN = detalle.linea[j].GTIN; d.linea[j].GTINSpecified = detalle.linea[j].GTINSpecified; d.linea[j].importe_iva = detalle.linea[j].importe_iva; d.linea[j].importe_ivaSpecified = detalle.linea[j].importe_ivaSpecified; d.linea[j].importe_total_articulo = detalle.linea[j].importe_total_articulo; d.linea[j].importe_total_descuentos = detalle.linea[j].importe_total_descuentos; d.linea[j].importe_total_descuentosSpecified = detalle.linea[j].importe_total_descuentosSpecified; d.linea[j].importe_total_impuestos = detalle.linea[j].importe_total_impuestos; d.linea[j].importe_total_impuestosSpecified = detalle.linea[j].importe_total_impuestosSpecified; if (detalle.linea[j].importes_moneda_origen != null) { d.linea[j].importes_moneda_origen = new FeaEntidades.InterFacturas.lineaImportes_moneda_origen(); d.linea[j].importes_moneda_origen.importe_iva = detalle.linea[j].importes_moneda_origen.importe_iva; d.linea[j].importes_moneda_origen.importe_ivaSpecified = detalle.linea[j].importes_moneda_origen.importe_ivaSpecified; d.linea[j].importes_moneda_origen.importe_total_articulo = detalle.linea[j].importes_moneda_origen.importe_total_articulo; d.linea[j].importes_moneda_origen.importe_total_articuloSpecified = detalle.linea[j].importes_moneda_origen.importe_total_articuloSpecified; d.linea[j].importes_moneda_origen.importe_total_descuentos = detalle.linea[j].importes_moneda_origen.importe_total_descuentos; d.linea[j].importes_moneda_origen.importe_total_descuentosSpecified = detalle.linea[j].importes_moneda_origen.importe_total_descuentosSpecified; d.linea[j].importes_moneda_origen.importe_total_impuestos = detalle.linea[j].importes_moneda_origen.importe_total_impuestos; d.linea[j].importes_moneda_origen.importe_total_impuestosSpecified = detalle.linea[j].importes_moneda_origen.importe_total_impuestosSpecified; d.linea[j].importes_moneda_origen.precio_unitario = detalle.linea[j].importes_moneda_origen.precio_unitario; d.linea[j].importes_moneda_origen.precio_unitarioSpecified = detalle.linea[j].importes_moneda_origen.precio_unitarioSpecified; } if (detalle.linea[j].impuestos != null) { d.linea[j].impuestos = new FeaEntidades.InterFacturas.lineaImpuestos[detalle.linea[j].impuestos.Length]; for (int k = 0; k < d.linea[j].impuestos.Length; k++) { d.linea[j].impuestos[k] = new FeaEntidades.InterFacturas.lineaImpuestos(); d.linea[j].impuestos[k].codigo_impuesto = detalle.linea[j].impuestos[k].codigo_impuesto; d.linea[j].impuestos[k].descripcion_impuesto = detalle.linea[j].impuestos[k].descripcion_impuesto; d.linea[j].impuestos[k].importe_impuesto = detalle.linea[j].impuestos[k].importe_impuesto; d.linea[j].impuestos[k].importe_impuesto_moneda_origen = detalle.linea[j].impuestos[k].importe_impuesto_moneda_origen; d.linea[j].impuestos[k].importe_impuesto_moneda_origenSpecified = detalle.linea[j].impuestos[k].importe_impuesto_moneda_origenSpecified; d.linea[j].impuestos[k].porcentaje_impuesto = detalle.linea[j].impuestos[k].porcentaje_impuesto; d.linea[j].impuestos[k].porcentaje_impuestoSpecified = detalle.linea[j].impuestos[k].porcentaje_impuestoSpecified; } } if (detalle.linea[j].descuentos != null) { d.linea[j].lineaDescuentos = new FeaEntidades.InterFacturas.lineaDescuentos[detalle.linea[j].descuentos.Length]; for (int k = 0; k < d.linea[j].lineaDescuentos.Length; k++) { d.linea[j].lineaDescuentos[k] = new FeaEntidades.InterFacturas.lineaDescuentos(); d.linea[j].lineaDescuentos[k].descripcion_descuento = detalle.linea[j].descuentos[k].descripcion_descuento; d.linea[j].lineaDescuentos[k].importe_descuento = detalle.linea[j].descuentos[k].importe_descuento; d.linea[j].lineaDescuentos[k].importe_descuento_moneda_origen = detalle.linea[j].descuentos[k].importe_descuento_moneda_origen; d.linea[j].lineaDescuentos[k].importe_descuento_moneda_origenSpecified = detalle.linea[j].descuentos[k].importe_descuento_moneda_origenSpecified; d.linea[j].lineaDescuentos[k].porcentaje_descuento = detalle.linea[j].descuentos[k].porcentaje_descuento; d.linea[j].lineaDescuentos[k].porcentaje_descuentoSpecified = detalle.linea[j].descuentos[k].porcentaje_descuentoSpecified; } } d.linea[j].indicacion_exento_gravado = detalle.linea[j].indicacion_exento_gravado; d.linea[j].numeroLinea = detalle.linea[j].numeroLinea; d.linea[j].precio_unitario = detalle.linea[j].precio_unitario; d.linea[j].precio_unitarioSpecified = detalle.linea[j].precio_unitarioSpecified; d.linea[j].unidad = detalle.linea[j].unidad; } else { break; } } cIBK.detalle = d; cIBK.resumen = new FeaEntidades.InterFacturas.resumen(); cIBK.resumen.cant_alicuotas_iva = lcIBK.comprobante[i].resumen.cant_alicuotas_iva; cIBK.resumen.cant_alicuotas_ivaSpecified = lcIBK.comprobante[i].resumen.cant_alicuotas_ivaSpecified; cIBK.resumen.codigo_moneda = lcIBK.comprobante[i].resumen.codigo_moneda; cIBK.resumen.descuentos = new FeaEntidades.InterFacturas.resumenDescuentos[0]; cIBK.resumen.cant_alicuotas_iva = lcIBK.comprobante[i].resumen.cant_alicuotas_iva; cIBK.resumen.cant_alicuotas_ivaSpecified = lcIBK.comprobante[i].resumen.cant_alicuotas_ivaSpecified; cIBK.resumen.codigo_moneda = lcIBK.comprobante[i].resumen.codigo_moneda; cIBK.resumen.importe_operaciones_exentas = lcIBK.comprobante[i].resumen.importe_operaciones_exentas; cIBK.resumen.importe_total_concepto_no_gravado = lcIBK.comprobante[i].resumen.importe_total_concepto_no_gravado; cIBK.resumen.importe_total_factura = lcIBK.comprobante[i].resumen.importe_total_factura; cIBK.resumen.importe_total_impuestos_internos = lcIBK.comprobante[i].resumen.importe_total_impuestos_internos; cIBK.resumen.importe_total_impuestos_internosSpecified = lcIBK.comprobante[i].resumen.importe_total_impuestos_internosSpecified; cIBK.resumen.importe_total_impuestos_municipales = lcIBK.comprobante[i].resumen.importe_total_impuestos_municipales; cIBK.resumen.importe_total_impuestos_municipalesSpecified = lcIBK.comprobante[i].resumen.importe_total_impuestos_municipalesSpecified; cIBK.resumen.importe_total_impuestos_nacionales = lcIBK.comprobante[i].resumen.importe_total_impuestos_nacionales; cIBK.resumen.importe_total_impuestos_nacionalesSpecified = lcIBK.comprobante[i].resumen.importe_total_impuestos_nacionalesSpecified; cIBK.resumen.importe_total_ingresos_brutos = lcIBK.comprobante[i].resumen.importe_total_ingresos_brutos; cIBK.resumen.importe_total_ingresos_brutosSpecified = lcIBK.comprobante[i].resumen.importe_total_ingresos_brutosSpecified; cIBK.resumen.importe_total_neto_gravado = lcIBK.comprobante[i].resumen.importe_total_neto_gravado; if (lcIBK.comprobante[i].resumen.importes_moneda_origen != null) { cIBK.resumen.importes_moneda_origen = new FeaEntidades.InterFacturas.resumenImportes_moneda_origen(); cIBK.resumen.importes_moneda_origen.importe_operaciones_exentas = lcIBK.comprobante[i].resumen.importes_moneda_origen.importe_operaciones_exentas; cIBK.resumen.importes_moneda_origen.importe_total_concepto_no_gravado = lcIBK.comprobante[i].resumen.importes_moneda_origen.importe_total_concepto_no_gravado; cIBK.resumen.importes_moneda_origen.importe_total_factura = lcIBK.comprobante[i].resumen.importes_moneda_origen.importe_total_factura; cIBK.resumen.importes_moneda_origen.importe_total_impuestos_internos = lcIBK.comprobante[i].resumen.importes_moneda_origen.importe_total_impuestos_internos; cIBK.resumen.importes_moneda_origen.importe_total_impuestos_internosSpecified = lcIBK.comprobante[i].resumen.importes_moneda_origen.importe_total_impuestos_internosSpecified; cIBK.resumen.importes_moneda_origen.importe_total_impuestos_municipales = lcIBK.comprobante[i].resumen.importes_moneda_origen.importe_total_impuestos_municipales; cIBK.resumen.importes_moneda_origen.importe_total_impuestos_municipalesSpecified = lcIBK.comprobante[i].resumen.importes_moneda_origen.importe_total_impuestos_municipalesSpecified; cIBK.resumen.importes_moneda_origen.importe_total_impuestos_nacionales = lcIBK.comprobante[i].resumen.importes_moneda_origen.importe_total_impuestos_nacionales; cIBK.resumen.importes_moneda_origen.importe_total_impuestos_nacionalesSpecified = lcIBK.comprobante[i].resumen.importes_moneda_origen.importe_total_impuestos_nacionalesSpecified; cIBK.resumen.importes_moneda_origen.importe_total_ingresos_brutos = lcIBK.comprobante[i].resumen.importes_moneda_origen.importe_total_ingresos_brutos; cIBK.resumen.importes_moneda_origen.importe_total_ingresos_brutosSpecified = lcIBK.comprobante[i].resumen.importes_moneda_origen.importe_total_ingresos_brutosSpecified; cIBK.resumen.importes_moneda_origen.importe_total_neto_gravado = lcIBK.comprobante[i].resumen.importes_moneda_origen.importe_total_neto_gravado; cIBK.resumen.importes_moneda_origen.impuesto_liq = lcIBK.comprobante[i].resumen.importes_moneda_origen.impuesto_liq; cIBK.resumen.importes_moneda_origen.impuesto_liq_rni = lcIBK.comprobante[i].resumen.importes_moneda_origen.impuesto_liq_rni; } cIBK.resumen.impuesto_liq = lcIBK.comprobante[i].resumen.impuesto_liq; cIBK.resumen.impuesto_liq_rni = lcIBK.comprobante[i].resumen.impuesto_liq_rni; if (lcIBK.comprobante[i].resumen.descuentos != null) { cIBK.resumen.descuentos = new FeaEntidades.InterFacturas.resumenDescuentos[lcIBK.comprobante[i].resumen.descuentos.Length]; for (int l = 0; l < lcIBK.comprobante[i].resumen.descuentos.Length; l++) { if (lcIBK.comprobante[i].resumen.descuentos[l] != null) { cIBK.resumen.descuentos[l] = new FeaEntidades.InterFacturas.resumenDescuentos(); cIBK.resumen.descuentos[l].alicuota_iva_descuento = lcIBK.comprobante[i].resumen.descuentos[l].alicuota_iva_descuento; cIBK.resumen.descuentos[l].alicuota_iva_descuentoSpecified = lcIBK.comprobante[i].resumen.descuentos[l].alicuota_iva_descuentoSpecified; cIBK.resumen.descuentos[l].descripcion_descuento = lcIBK.comprobante[i].resumen.descuentos[l].descripcion_descuento; cIBK.resumen.descuentos[l].importe_descuento = lcIBK.comprobante[i].resumen.descuentos[l].importe_descuento; cIBK.resumen.descuentos[l].importe_descuento_moneda_origen = lcIBK.comprobante[i].resumen.descuentos[l].importe_descuento_moneda_origen; cIBK.resumen.descuentos[l].importe_descuento_moneda_origenSpecified = lcIBK.comprobante[i].resumen.descuentos[l].importe_descuento_moneda_origenSpecified; cIBK.resumen.descuentos[l].importe_iva_descuento = lcIBK.comprobante[i].resumen.descuentos[l].importe_iva_descuento; cIBK.resumen.descuentos[l].importe_iva_descuento_moneda_origen = lcIBK.comprobante[i].resumen.descuentos[l].importe_iva_descuento_moneda_origen; cIBK.resumen.descuentos[l].importe_iva_descuento_moneda_origenSpecified = lcIBK.comprobante[i].resumen.descuentos[l].importe_iva_descuento_moneda_origenSpecified; cIBK.resumen.descuentos[l].importe_iva_descuentoSpecified = lcIBK.comprobante[i].resumen.descuentos[l].importe_iva_descuentoSpecified; cIBK.resumen.descuentos[l].porcentaje_descuento = lcIBK.comprobante[i].resumen.descuentos[l].porcentaje_descuento; cIBK.resumen.descuentos[l].porcentaje_descuentoSpecified = lcIBK.comprobante[i].resumen.descuentos[l].porcentaje_descuentoSpecified; } } } if (lcIBK.comprobante[i].resumen.impuestos != null) { cIBK.resumen.impuestos = new FeaEntidades.InterFacturas.resumenImpuestos[lcIBK.comprobante[i].resumen.impuestos.Length]; for (int l = 0; l < lcIBK.comprobante[i].resumen.impuestos.Length; l++) { if (lcIBK.comprobante[i].resumen.impuestos[l] != null) { cIBK.resumen.impuestos[l] = new FeaEntidades.InterFacturas.resumenImpuestos(); cIBK.resumen.impuestos[l].codigo_impuesto = lcIBK.comprobante[i].resumen.impuestos[l].codigo_impuesto; cIBK.resumen.impuestos[l].codigo_jurisdiccion = lcIBK.comprobante[i].resumen.impuestos[l].codigo_jurisdiccion; cIBK.resumen.impuestos[l].codigo_jurisdiccionSpecified = lcIBK.comprobante[i].resumen.impuestos[l].codigo_jurisdiccionSpecified; cIBK.resumen.impuestos[l].descripcion = lcIBK.comprobante[i].resumen.impuestos[l].descripcion; cIBK.resumen.impuestos[l].importe_impuesto = lcIBK.comprobante[i].resumen.impuestos[l].importe_impuesto; cIBK.resumen.impuestos[l].importe_impuesto_moneda_origen = lcIBK.comprobante[i].resumen.impuestos[l].importe_impuesto_moneda_origen; cIBK.resumen.impuestos[l].importe_impuesto_moneda_origenSpecified = lcIBK.comprobante[i].resumen.impuestos[l].importe_impuesto_moneda_origenSpecified; cIBK.resumen.impuestos[l].jurisdiccion_municipal = lcIBK.comprobante[i].resumen.impuestos[l].jurisdiccion_municipal; cIBK.resumen.impuestos[l].porcentaje_impuesto = lcIBK.comprobante[i].resumen.impuestos[l].porcentaje_impuesto; cIBK.resumen.impuestos[l].porcentaje_impuestoSpecified = lcIBK.comprobante[i].resumen.impuestos[l].porcentaje_impuestoSpecified; } } } cIBK.resumen.observaciones = lcIBK.comprobante[i].resumen.observaciones; cIBK.resumen.tipo_de_cambio = lcIBK.comprobante[i].resumen.tipo_de_cambio; lcFEA.comprobante[i] = cIBK; } return lcFEA; }
public static void AvisoGeneracionComprobante(Entidades.Persona Persona, Entidades.Comprobante Contrato, Entidades.Comprobante Comprobante, FeaEntidades.InterFacturas.lote_comprobantes Lote, string ArchivoPDF, string LogoPath, Entidades.Sesion Sesion) { SmtpClient smtpClient = new SmtpClient("mail.cedeira.com.ar"); MailMessage mail = new MailMessage(); mail.From = new MailAddress(Persona.DatosEmailAvisoComprobantePersona.De); string[] para = Contrato.DatosEmailAvisoComprobanteContrato.DestinatarioFrecuente.Para.Split(','); for (int i = 0; i < para.Length; i++) { if (para[i].Trim() != string.Empty) { mail.To.Add(new MailAddress(para[i].Trim())); } } string[] cc = Contrato.DatosEmailAvisoComprobanteContrato.DestinatarioFrecuente.Cc.Split(','); for (int i = 0; i < cc.Length; i++) { if (cc[i].Trim() != string.Empty) { mail.CC.Add(new MailAddress(cc[i].Trim())); } } if (Persona.DatosEmailAvisoComprobantePersona.Cco.Trim() != string.Empty) { mail.Bcc.Add(new MailAddress(Persona.DatosEmailAvisoComprobantePersona.Cco)); } if (Sesion.Ambiente != "PROD") { mail.Subject = TratamientoPalabrasReservadas(Contrato.DatosEmailAvisoComprobanteContrato.Asunto, Comprobante, Lote, LogoPath, false) + " (" + Sesion.Ambiente + ")"; } else { mail.Subject = TratamientoPalabrasReservadas(Contrato.DatosEmailAvisoComprobanteContrato.Asunto, Comprobante, Lote, LogoPath, false); } mail.IsBodyHtml = true; StringBuilder a = new StringBuilder(); a.Append(TratamientoPalabrasReservadas(Contrato.DatosEmailAvisoComprobanteContrato.Cuerpo, Comprobante, Lote, LogoPath, true)); ////Create two views, one text, one HTML. //var htmlView = AlternateView.CreateAlternateViewFromString(a.ToString(), null, "text/html"); ////Add image to HTML version //var imageResource = new LinkedResource(HttpContext.Current.Server.MapPath("~/Imagenes/CedeiraSF_v1.jpg"), System.Net.Mime.MediaTypeNames.Image.Jpeg) // { // ContentId = "LogoImage" // }; //htmlView.LinkedResources.Add(imageResource); //mail.AlternateViews.Add(htmlView); mail.Body = a.ToString(); mail.Attachments.Add(new Attachment(ArchivoPDF)); smtpClient.Credentials = new NetworkCredential("*****@*****.**", "cedeira123"); smtpClient.Send(mail); }