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

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

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

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

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

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

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

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

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

            default:
                break;
            }
        }
예제 #2
0
        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", "&emsp;");
            //a = a + "<br />" + "<image src='cid:LogoImage' alt='logo' />";
            return(a);
        }
예제 #3
0
        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);
        }
예제 #4
0
 public List<Entidades.Comprobante> ListaContratosFiltrada(List<Entidades.Estado> Estados, string FechaEmision, Entidades.Persona Persona, string Moneda)
 {
     List<Entidades.Comprobante> lista = new List<Entidades.Comprobante>();
     if (sesion.Cuit.Nro != null)
     {
         System.Text.StringBuilder a = new StringBuilder();
         a.Append("select ");
         a.Append("Comprobante.Cuit, Comprobante.IdTipoComprobante, Comprobante.DescrTipoComprobante, Comprobante.NroPuntoVta, Comprobante.NroComprobante, Comprobante.NroLote, Comprobante.IdTipoDoc, Comprobante.NroDoc, Comprobante.IdPersona, Comprobante.DesambiguacionCuitPais, Comprobante.RazonSocial, Comprobante.Detalle, Comprobante.Fecha, Comprobante.FechaVto, Comprobante.Moneda, Comprobante.ImporteMoneda, Comprobante.TipoCambio, Comprobante.Importe, Comprobante.Request, Comprobante.Response, Comprobante.IdDestinoComprobante, Comprobante.IdWF, Comprobante.Estado, Comprobante.UltActualiz, Comprobante.IdNaturalezaComprobante, NaturalezaComprobante.DescrNaturalezaComprobante, Comprobante.PeriodicidadEmision, Comprobante.FechaProximaEmision, Comprobante.CantidadComprobantesAEmitir, Comprobante.CantidadComprobantesEmitidos, Comprobante.CantidadDiasFechaVto, Comprobante.EmailAvisoComprobanteActivo, Comprobante.IdDestinatarioFrecuente, Comprobante.EmailAvisoComprobanteAsunto, Comprobante.EmailAvisoComprobanteCuerpo ");
         a.Append("from Comprobante, NaturalezaComprobante ");
         a.Append("where Comprobante.Cuit='" + sesion.Cuit.Nro + "' ");
         a.Append("and Comprobante.IdNaturalezaComprobante=NaturalezaComprobante.IdNaturalezaComprobante ");
         string estados = String.Empty;
         for (int i = 0; i < Estados.Count; i++)
         {
             estados += "'" + Estados[i].Id + "'";
             if (i != (Estados.Count - 1)) estados += ", ";
         }
         if (estados != String.Empty)
         {
             a.Append("and Comprobante.Estado in (" + estados + ") ");
         }
         if (FechaEmision != String.Empty)
         {
             a.Append("and Comprobante.FechaProximaEmision<='" + FechaEmision + "' ");
         }
         if (Persona.Orden != 0)
         {
             a.Append("and Comprobante.IdTipoDoc=" + Persona.Documento.Tipo.Id + " ");
             a.Append("and Comprobante.NroDoc=" + Persona.Documento.Nro.ToString() + " ");
             a.Append("and Comprobante.IdPersona='" + Persona.IdPersona + "' ");
             a.Append("and Comprobante.DesambiguacionCuitPais=" + Persona.DesambiguacionCuitPais.ToString() + " ");
         }
         a.Append("and Comprobante.IdNaturalezaComprobante='VentaContrato' ");
         a.Append("and Comprobante.Moneda='" + Moneda + "' ");
         a.Append("order by Comprobante.DescrTipoComprobante desc, Comprobante.NroPuntoVta desc, Comprobante.NroComprobante desc ");
         DataTable dt = (DataTable)Ejecutar(a.ToString(), TipoRetorno.TB, Transaccion.NoAcepta, sesion.CnnStr);
         if (dt.Rows.Count != 0)
         {
             for (int i = 0; i < dt.Rows.Count; i++)
             {
                 Entidades.Comprobante elem = new Entidades.Comprobante();
                 Copiar(dt.Rows[i], elem);
                 lista.Add(elem);
             }
         }
     }
     return lista;
 }
예제 #5
0
        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);
        }
예제 #6
0
 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";
     }
 }
예제 #7
0
 public List<Entidades.Comprobante> ListaFiltradaIvaVentas(List<Entidades.Estado> Estados, string FechaDesde, string FechaHasta, Entidades.Persona Persona, Entidades.NaturalezaComprobante NaturalezaComprobante, bool IncluirContratos, string Detalle)
 {
     List<Entidades.Comprobante> lista = new List<Entidades.Comprobante>();
     if (sesion.Cuit.Nro != null)
     {
         System.Text.StringBuilder a = new StringBuilder();
         a.Append("select ");
         a.Append("Comprobante.Cuit, Comprobante.IdTipoComprobante, Comprobante.DescrTipoComprobante, Comprobante.NroPuntoVta, Comprobante.NroComprobante, Comprobante.NroLote, Comprobante.IdTipoDoc, Comprobante.NroDoc, Comprobante.IdPersona, Comprobante.DesambiguacionCuitPais, Comprobante.RazonSocial, Comprobante.Detalle, Comprobante.Fecha, Comprobante.FechaVto, Comprobante.Moneda, Comprobante.ImporteMoneda, Comprobante.TipoCambio, Comprobante.Importe, Comprobante.Request, Comprobante.Response, Comprobante.IdDestinoComprobante, Comprobante.IdWF, Comprobante.Estado, Comprobante.UltActualiz, Comprobante.IdNaturalezaComprobante, NaturalezaComprobante.DescrNaturalezaComprobante, Comprobante.PeriodicidadEmision, Comprobante.FechaProximaEmision, Comprobante.CantidadComprobantesAEmitir, Comprobante.CantidadComprobantesEmitidos, Comprobante.CantidadDiasFechaVto, Comprobante.EmailAvisoComprobanteActivo, Comprobante.IdDestinatarioFrecuente, Comprobante.EmailAvisoComprobanteAsunto, Comprobante.EmailAvisoComprobanteCuerpo ");
         a.Append("from Comprobante, NaturalezaComprobante ");
         a.Append("where Comprobante.Cuit='" + sesion.Cuit.Nro + "' ");
         a.Append("and Comprobante.IdNaturalezaComprobante=NaturalezaComprobante.IdNaturalezaComprobante ");
         string estados = String.Empty;
         for (int i = 0; i < Estados.Count; i++)
         {
             estados += "'" + Estados[i].Id + "'";
             if (i != (Estados.Count - 1)) estados += ", ";
         }
         if (estados != String.Empty)
         {
             a.Append("and Comprobante.Estado in (" + estados + ") ");
         }
         if (FechaDesde != String.Empty)
         {
             a.Append("and Comprobante.Fecha>='" + FechaDesde + "' ");
         }
         if (FechaHasta != String.Empty)
         {
             a.Append("and Comprobante.Fecha<='" + FechaHasta + "' ");
         }
         if (Persona.Orden != 0)
         {
             a.Append("and Comprobante.IdTipoDoc=" + Persona.Documento.Tipo.Id + " ");
             a.Append("and Comprobante.NroDoc=" + Persona.Documento.Nro.ToString() + " ");
             a.Append("and Comprobante.IdPersona='" + Persona.IdPersona + "' ");
             a.Append("and Comprobante.DesambiguacionCuitPais=" + Persona.DesambiguacionCuitPais.ToString() + " ");
         }
         if (NaturalezaComprobante.Id != String.Empty)
         {
             a.Append("and Comprobante.IdNaturalezaComprobante='" + NaturalezaComprobante.Id + "' ");
         }
         else if (!IncluirContratos)
         {
             a.Append("and Comprobante.IdNaturalezaComprobante<>'VentaContrato' ");
         }
         if (Detalle != string.Empty)
         {
             a.Append("and Comprobante.Detalle like '%" + Detalle + "%' ");
         }
         a.Append("order by Comprobante.Fecha asc, Comprobante.DescrTipoComprobante asc, Comprobante.NroPuntoVta asc, ABS(Comprobante.NroComprobante) asc ");
         DataTable dt = (DataTable)Ejecutar(a.ToString(), TipoRetorno.TB, Transaccion.NoAcepta, sesion.CnnStr);
         if (dt.Rows.Count != 0)
         {
             List<Entidades.UN> listaUN = sesion.Cuit.UNs.FindAll(delegate(Entidades.UN un)
             {
                 return un.Id == sesion.UN.Id;
             });
             for (int i = 0; i < dt.Rows.Count; i++)
             {
                 Entidades.Comprobante elem = new Entidades.Comprobante();
                 Copiar(dt.Rows[i], elem);
                 List<Entidades.PuntoVta> listaPV = listaUN[0].PuntosVta.FindAll(delegate(Entidades.PuntoVta pv)
                 {
                     return pv.Nro == elem.NroPuntoVta;
                 });
                 if (listaPV.Count > 0)
                 {
                     lista.Add(elem);
                 }
             }
         }
     }
     return lista;
 }
예제 #8
0
        protected bool ValidarCamposObligatorios(string Accion)
        {
            if (Cuit_VendedorTextBox.Text.Equals(string.Empty))
            {
                ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Falta ingresar el CUIT del vendedor"), false);
                return false;
            }
            if (Id_LoteTextbox.Text.Equals(string.Empty))
            {
                ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Falta ingresar el nro de lote"), false);
                return false;
            }
            if (Numero_ComprobanteTextBox.Text.Equals(string.Empty))
            {
                ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Falta ingresar el número de " + ((IdNaturalezaComprobanteTextBox.Text == "VentaContrato") ? "contrato" : "comprobante")), false);
                return false;
            }
            if (!Numero_ComprobanteTextBox.Text.Equals(string.Empty) && !RN.Funciones.IsValidNumeric(Numero_ComprobanteTextBox.Text))
            {
                ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Ingresar un dato numérico en el número de " + ((IdNaturalezaComprobanteTextBox.Text == "VentaContrato") ? "contrato" : "comprobante")), false);
                return false;
            }
            if (Convert.ToInt64(Numero_ComprobanteTextBox.Text) <= 0)
            {
                ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Ingresar un valor positivo en el número de " + ((IdNaturalezaComprobanteTextBox.Text == "VentaContrato") ? "contrato" : "comprobante")), false);
                return false;
            }
            if (IdNaturalezaComprobanteTextBox.Text != "Compra")
            {
                if (PuntoVtaDropDownList.SelectedValue.Equals(string.Empty))
                {
                    ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Falta ingresar el punto de venta"), false);
                    return false;
                }
            }
            else
            {
                if (PuntoVtaTextBox.Text.Equals(string.Empty) || !RN.Funciones.IsValidNumeric(PuntoVtaTextBox.Text))
                {
                    ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Falta ingresar el punto de venta"), false);
                    return false;
                }
            }
            if (TratamientoTextBox.Text == "Alta")
            {
                try
                {
                    Entidades.Comprobante comprobante = new Entidades.Comprobante();
                    comprobante.Cuit = Cuit_VendedorTextBox.Text;
                    comprobante.TipoComprobante.Id = Convert.ToInt32(Tipo_De_ComprobanteDropDownList.SelectedValue.ToString());
                    if (IdNaturalezaComprobanteTextBox.Text != "Compra")
                    {
                        comprobante.NroPuntoVta = Convert.ToInt32(PuntoVtaDropDownList.SelectedValue.ToString());
                    }
                    else
                    {
                        comprobante.NroPuntoVta = Convert.ToInt32(PuntoVtaTextBox.Text.ToString());
                    }
                    comprobante.Nro = IdNaturalezaComprobanteTextBox.Text == "VentaContrato" ? -Convert.ToInt64(Numero_ComprobanteTextBox.Text) : Convert.ToInt64(Numero_ComprobanteTextBox.Text);
                    RN.Comprobante.Leer(comprobante, ((Entidades.Sesion)Session["Sesion"]));
                    if (comprobante.Estado == "Vigente")
                    {
                        if (Accion != "ObtenerXML")
                        {
                            ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Este Nro. de " + ((IdNaturalezaComprobanteTextBox.Text == "VentaContrato") ? "contrato" : "comprobante") + " ya se encuentra vigente."), false);
                            return false;
                        }
                    }
                }
                catch (Exception ex)
                {
                    ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Error al comprobar la numeración del " + ((IdNaturalezaComprobanteTextBox.Text == "VentaContrato") ? "contrato" : "comprobante") + ". " + ex.Message.ToString()), false);
                    return false;
                }
            }

            if (FechaEmisionDatePickerWebUserControl.Text.Equals(string.Empty))
            {
                ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Falta ingresar la Fecha de Emisión del comprobante"), false);
                return false;
            }
            if (Razon_Social_VendedorTextBox.Text.Equals(string.Empty))
            {
                ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Falta ingresar la Razon Social del vendedor"), false);
                return false;
            }
            if (Localidad_VendedorTextBox.Text.Equals(string.Empty))
            {
                ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Falta ingresar la Localidad del vendedor"), false);
                return false;
            }
            if (IdNaturalezaComprobanteTextBox.Text != "Compra")
            {
                if (Email_VendedorTextBox.Text.Equals(string.Empty))
                {
                    ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Falta ingresar la email del vendedor"), false);
                    return false;
                }
                if (!Email_VendedorTextBox.Text.Equals(string.Empty) && !RN.Funciones.IsValidEmail(Email_VendedorTextBox.Text))
                {
                    ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Ingresar un email válido para el vendedor"), false);
                    return false;
                }
            }
            if (!Id_LoteTextbox.Text.Equals(string.Empty) && !RN.Funciones.IsValidNumeric(Id_LoteTextbox.Text))
            {
                ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Ingresar un dato numérico en el número de lote"), false);
                return false;
            }
            if (!NroIBVendedorTextBox.Text.Equals(string.Empty) && !RN.Funciones.IsValidNroIB(NroIBVendedorTextBox.Text))
            {
                ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Ingresar un Nro. de IB válido para el vendedor"), false);
                return false;
            }
            if (Denominacion_CompradorTextBox.Text.Length > 50)
            {
                ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("La descripción de la Razón Social del Comprador es muy larga. Máximo permitido 50 caracteres."), false);
                return false;
            }
            if (IdNaturalezaComprobanteTextBox.Text != "Compra")
            {
                if (Accion != "SubirAAFIP" && Accion != "ObtenerXML")
                {
                    if (Email_CompradorTextBox.Text.Equals(string.Empty))
                    {
                        ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Falta ingresar la email del comprador"), false);
                        return false;
                    }
                    if (!Email_CompradorTextBox.Text.Equals(string.Empty) && !RN.Funciones.IsValidEmail(Email_CompradorTextBox.Text))
                    {
                        ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Ingresar un email válido para el comprador"), false);
                        return false;
                    }
                }
            }
            if (!GLN_CompradorTextBox.Text.Equals(string.Empty) && !RN.Funciones.IsValidNumericFijo(GLN_CompradorTextBox.Text, "13"))
            {
                ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Ingresar un dato numérico de 13 digitos en el GLN del comprador"), false);
                return false;
            }
            bool faltaCalcularTotales = false;
            try
            {
                faltaCalcularTotales = (bool)Session["FaltaCalcularTotales"];
            }
            catch
            { 
            }
            if (faltaCalcularTotales)
            {
                ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Falta presionar el botón de Sugerir totales."), false);
                return false;
            }
            //TIPO DE CAMBIO
            if (!MonedaComprobanteDropDownList.SelectedValue.Equals(FeaEntidades.CodigosMoneda.CodigoMoneda.Local))
            {
                if (Tipo_de_cambioTextBox.Text.Equals(string.Empty))
                {
                    ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Falta ingresar el Tipo de Cambio"), false);
                    return false;
                }
                if (!Tipo_de_cambioTextBox.Text.Equals(string.Empty) && !RN.Funciones.IsValidNumericDecimals(Tipo_de_cambioTextBox.Text))
                {
                    ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Formato erróneo del Tipo de Cambio en el Resumen"), false);
                    return false;
                }
            }
            //RESUMEN            
            if (Importe_Total_Neto_Gravado_ResumenTextBox.Text.Equals(string.Empty))
            {
                ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Falta ingresar el Importe Total Neto Gravado del Resumen"), false);
                return false;
            }
            if (!Importe_Total_Neto_Gravado_ResumenTextBox.Text.Equals(string.Empty) && !RN.Funciones.IsValidNumericDecimals(Importe_Total_Neto_Gravado_ResumenTextBox.Text))
            {
                ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Formato erróneo del Importe Total Neto Gravado en el Resumen"), false);
                return false;
            }
            if (Importe_Total_Concepto_No_Gravado_ResumenTextBox.Text.Equals(string.Empty))
            {
                ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Falta ingresar el Importe Total Concepto No Gravado del Resumen"), false);
                return false;
            }
            if (!Importe_Total_Concepto_No_Gravado_ResumenTextBox.Text.Equals(string.Empty) && !RN.Funciones.IsValidNumericDecimals(Importe_Total_Concepto_No_Gravado_ResumenTextBox.Text))
            {
                ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Formato erróneo del Importe Total Concepto No Gravado en el Resumen"), false);
                return false;
            }
            if (Importe_Operaciones_Exentas_ResumenTextBox.Text.Equals(string.Empty))
            {
                ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Falta ingresar el Importe Operaciones Exentas del Resumen"), false);
                return false;
            }
            if (!Importe_Operaciones_Exentas_ResumenTextBox.Text.Equals(string.Empty) && !RN.Funciones.IsValidNumericDecimals(Importe_Operaciones_Exentas_ResumenTextBox.Text))
            {
                ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Formato erróneo del Importe Operaciones Exentas en el Resumen"), false);
                return false;
            }
            if (Impuesto_Liq_ResumenTextBox.Text.Equals(string.Empty))
            {
                ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Falta ingresar el IVA del Resumen"), false);
                return false;
            }
            if (!Impuesto_Liq_ResumenTextBox.Text.Equals(string.Empty) && !RN.Funciones.IsValidNumericDecimals(Impuesto_Liq_ResumenTextBox.Text))
            {
                ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Formato erróneo del IVA en el Resumen"), false);
                return false;
            }
            if (Impuesto_Liq_Rni_ResumenTextBox.Text.Equals(string.Empty))
            {
                ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Falta ingresar el IVA RNI del Resumen"), false);
                return false;
            }
            if (!Impuesto_Liq_Rni_ResumenTextBox.Text.Equals(string.Empty) && !RN.Funciones.IsValidNumericDecimals(Impuesto_Liq_Rni_ResumenTextBox.Text))
            {
                ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Formato erróneo del IVA RNI en el Resumen"), false);
                return false;
            }
            if (!Importe_Total_Impuestos_Municipales_ResumenTextBox.Text.Equals(string.Empty) && !RN.Funciones.IsValidNumericDecimals(Importe_Total_Impuestos_Municipales_ResumenTextBox.Text))
            {
                ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Formato erróneo del Importe Total Impuestos Municipales en el Resumen"), false);
                return false;
            }
            if (!Importe_Total_Impuestos_Nacionales_ResumenTextBox.Text.Equals(string.Empty) && !RN.Funciones.IsValidNumericDecimals(Importe_Total_Impuestos_Nacionales_ResumenTextBox.Text))
            {
                ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Formato erróneo del Importe Total Impuestos Nacionales en el Resumen"), false);
                return false;
            }
            if (!Importe_Total_Ingresos_Brutos_ResumenTextBox.Text.Equals(string.Empty) && !RN.Funciones.IsValidNumericDecimals(Importe_Total_Ingresos_Brutos_ResumenTextBox.Text))
            {
                ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Formato erróneo del Importe Total Ingresos Brutos en el Resumen"), false);
                return false;
            }
            if (!Importe_Total_Impuestos_Internos_ResumenTextBox.Text.Equals(string.Empty) && !RN.Funciones.IsValidNumericDecimals(Importe_Total_Impuestos_Internos_ResumenTextBox.Text))
            {
                ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Formato erróneo del Importe Total Impuestos Internos en el Resumen"), false);
                return false;
            }
            if (Importe_Total_Factura_ResumenTextBox.Text.Equals(string.Empty))
            {
                ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Falta ingresar el Importe Total Factura del Resumen"), false);
                return false;
            }
            if (!Importe_Total_Factura_ResumenTextBox.Text.Equals(string.Empty) && !RN.Funciones.IsValidNumericDecimals(Importe_Total_Factura_ResumenTextBox.Text))
            {
                ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Formato erróneo del Importe Total Factura en el Resumen"), false);
                return false;
            }
            if (IdNaturalezaComprobanteTextBox.Text == "VentaContrato")
            {
                if (PeriodicidadEmisionDropDownList.SelectedValue.IndexOf("<Mensual><Trimestral><Semestral><Anual>") != -1 && Convert.ToInt32(DateTime.ParseExact(FechaProximaEmisionDatePickerWebUserControl.Text, "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture).ToString("dd"))>=29)
                {
                    ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Cuando la Periodicidad es Mensual, Trimestral, Semestral o Anual, el día (dd) de la Próxima fecha de emisión no puede caer en 29, 30 o 31."), false);
                    return false;
                }
                int nroPuntoVta = Convert.ToInt32(PuntoVtaDropDownList.SelectedValue);
                Entidades.PuntoVta puntoVta = ((Entidades.Sesion)Session["Sesion"]).UN.PuntosVta.Find(delegate(Entidades.PuntoVta pv){return pv.Nro == nroPuntoVta;});
                if (puntoVta.IdMetodoGeneracionNumeracionLote == "Ninguno" && IdDestinoComprobanteDropDownList.SelectedIndex != -1 && IdDestinoComprobanteDropDownList.SelectedValue == "ITF")
                {
                    ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("No está permitido relacionar contratos con puntos de venta que no tengan un método automático de numeración de lotes (para comprobantes cuyo destino sea Interfacturas)"), false);
                    return false;
                }
            }
            //DATOSEMAIL
            return true;
        }
예제 #9
0
 public void Registrar(Entidades.Comprobante Comprobante)
 {
     Entidades.Comprobante comprobanteDesde = new Entidades.Comprobante();
     comprobanteDesde.Cuit = Comprobante.Cuit;
     comprobanteDesde.TipoComprobante = Comprobante.TipoComprobante;
     comprobanteDesde.NroPuntoVta = Comprobante.NroPuntoVta;
     comprobanteDesde.Nro = Comprobante.NaturalezaComprobante.Id == "VentaContrato" ? -Comprobante.Nro : Comprobante.Nro;
     Leer(comprobanteDesde);
     StringBuilder a = new StringBuilder(string.Empty);
     a.AppendLine("declare @idWF varchar(256) ");
     if (comprobanteDesde.Documento.Tipo.Id == null)
     {
         a.AppendLine("update Configuracion set @idWF=Valor=convert(varchar(256), convert(int, Valor)+1) where IdItemConfig='UltimoIdWF' ");
         a.AppendLine("Insert Comprobante (Comprobante.Cuit, Comprobante.IdTipoComprobante, Comprobante.DescrTipoComprobante, Comprobante.NroPuntoVta, Comprobante.NroComprobante, Comprobante.NroLote, Comprobante.IdTipoDoc, Comprobante.NroDoc, Comprobante.IdPersona, Comprobante.DesambiguacionCuitPais, Comprobante.RazonSocial, Comprobante.Detalle, Comprobante.Fecha, Comprobante.FechaVto, Comprobante.Moneda, Comprobante.ImporteMoneda, Comprobante.TipoCambio, Comprobante.Importe, Comprobante.Request, Comprobante.Response, Comprobante.IdDestinoComprobante, Comprobante.IdWF, Comprobante.Estado, Comprobante.IdNaturalezaComprobante, Comprobante.PeriodicidadEmision, Comprobante.FechaProximaEmision, Comprobante.CantidadComprobantesAEmitir, Comprobante.CantidadComprobantesEmitidos, Comprobante.CantidadDiasFechaVto, Comprobante.EmailAvisoComprobanteActivo, Comprobante.IdDestinatarioFrecuente, Comprobante.EmailAvisoComprobanteAsunto, Comprobante.EmailAvisoComprobanteCuerpo) ");
         a.Append("values (");
         a.Append("'" + Comprobante.Cuit + "', ");
         a.Append(Comprobante.TipoComprobante.Id.ToString() + ", ");
         a.Append("'" + Comprobante.TipoComprobante.Descr + "', ");
         a.Append(Comprobante.NroPuntoVta.ToString() + ", ");
         a.Append((Comprobante.NaturalezaComprobante.Id == "VentaContrato" ? -Comprobante.Nro : Comprobante.Nro).ToString() + ", ");
         a.Append(Comprobante.NroLote.ToString() + ", ");
         a.Append(Comprobante.Documento.Tipo.Id + ", ");
         a.Append(Comprobante.Documento.Nro.ToString() + ", ");
         if (Comprobante.IdPersona == null)
         {
             a.Append("'', ");
         }
         else
         {
             a.Append("'" + Comprobante.IdPersona + "', ");
         }
         a.Append(Comprobante.DesambiguacionCuitPais.ToString() + ", ");
         a.Append("'" + Comprobante.RazonSocial + "', ");
         if (Comprobante.Detalle == null)
         {
             a.Append("'', ");
         }
         else
         {
             a.Append("'" + Comprobante.Detalle + "', ");
         }
         a.Append("'" + Comprobante.Fecha.ToString("yyyyMMdd") + "', ");
         a.Append("'" + Comprobante.FechaVto.ToString("yyyyMMdd") + "', ");
         a.Append("'" + Comprobante.Moneda + "', ");
         a.Append(Comprobante.ImporteMoneda.ToString("0000000000000.00", System.Globalization.CultureInfo.InvariantCulture) + ", ");
         a.Append(Comprobante.TipoCambio.ToString("0000.000000", System.Globalization.CultureInfo.InvariantCulture) + ", ");
         a.Append(Comprobante.Importe.ToString("0000000000000.00", System.Globalization.CultureInfo.InvariantCulture) + ", ");
         a.Append("'" + Comprobante.Request + "', ");
         if (Comprobante.Response == null)
         {
             a.Append("'', ");
         }
         else
         {
             a.Append("'" + Comprobante.Response + "', ");
         }
         a.Append("'" + Comprobante.IdDestinoComprobante + "', ");
         a.Append("@idWF, ");
         a.Append("'" + Comprobante.WF.Estado + "', ");
         a.Append("'" + Comprobante.NaturalezaComprobante.Id + "', ");
         a.Append("'" + Comprobante.PeriodicidadEmision + "', ");
         a.Append("'" + Comprobante.FechaProximaEmision.ToString("yyyyMMdd") + "', ");
         a.Append(Comprobante.CantidadComprobantesAEmitir + ", ");
         a.Append(Comprobante.CantidadComprobantesEmitidos + ", ");
         a.Append(Comprobante.CantidadDiasFechaVto + ", ");
         a.Append(Convert.ToInt32(Comprobante.DatosEmailAvisoComprobanteContrato.Activo).ToString() + ", ");
         a.Append("'" + Comprobante.DatosEmailAvisoComprobanteContrato.DestinatarioFrecuente.Id + "', ");
         a.Append("'" + Comprobante.DatosEmailAvisoComprobanteContrato.Asunto + "', ");
         a.Append("'" + Comprobante.DatosEmailAvisoComprobanteContrato.Cuerpo + "' ");
         a.AppendLine(") ");
         a.AppendLine("insert Log values (@idWF, getdate(), '" + sesion.Usuario.Id + "', 'Comprobante', 'Alta', '" + Comprobante.WF.Estado + "', '') ");
     }
     else
     {
         a.AppendLine("set @IdWF=" + comprobanteDesde.WF.Id.ToString() + " ");
         a.Append("update Comprobante set ");
         a.Append("Comprobante.DescrTipoComprobante='" + Comprobante.TipoComprobante.Descr + "', ");
         a.Append("Comprobante.NroLote=" + Comprobante.NroLote.ToString() + ", ");
         a.Append("Comprobante.IdTipoDoc=" + Comprobante.Documento.Tipo.Id + ", ");
         a.Append("Comprobante.NroDoc=" + Comprobante.Documento.Nro.ToString() + ", ");
         if (Comprobante.IdPersona == null)
         {
             a.Append("Comprobante.IdPersona='', ");
         }
         else
         {
             a.Append("Comprobante.IdPersona='" + Comprobante.IdPersona + "', ");
         }
         a.Append("Comprobante.DesambiguacionCuitPais=" + Comprobante.DesambiguacionCuitPais.ToString() + ", ");
         a.Append("Comprobante.RazonSocial='" + Comprobante.RazonSocial + "', ");
         if (Comprobante.Detalle == null)
         {
             a.Append("Comprobante.Detalle='', ");
         }
         else
         {
             a.Append("Comprobante.Detalle='" + Comprobante.Detalle + "', ");
         }    
         a.Append("Comprobante.Fecha='" + Comprobante.Fecha.ToString("yyyyMMdd") + "', ");
         a.Append("Comprobante.FechaVto='" + Comprobante.FechaVto.ToString("yyyyMMdd") + "', ");
         a.Append("Comprobante.Moneda='" + Comprobante.Moneda + "', ");
         a.Append("Comprobante.ImporteMoneda=" + Comprobante.ImporteMoneda.ToString("0000000000000.00", System.Globalization.CultureInfo.InvariantCulture) + ", ");
         a.Append("Comprobante.TipoCambio=" + Comprobante.TipoCambio.ToString("0000.000000", System.Globalization.CultureInfo.InvariantCulture) + ", ");
         a.Append("Comprobante.Importe=" + Comprobante.Importe.ToString("0000000000000.00", System.Globalization.CultureInfo.InvariantCulture) + ", ");
         a.Append("Comprobante.Request='" + Comprobante.Request + "', ");
         if (Comprobante.Response == null)
         {
             a.Append("Comprobante.Response='', ");
         }
         else
         {
             a.Append("Comprobante.Response='" + Comprobante.Response + "', ");
         }    
         a.Append("Comprobante.IdDestinoComprobante='" + Comprobante.IdDestinoComprobante + "', ");
         a.Append("Comprobante.Estado='" + Comprobante.WF.Estado + "', ");
         a.Append("Comprobante.IdNaturalezaComprobante='" + Comprobante.NaturalezaComprobante.Id + "', ");
         a.Append("Comprobante.PeriodicidadEmision='" + Comprobante.PeriodicidadEmision + "', ");
         a.Append("Comprobante.FechaProximaEmision='" + Comprobante.FechaProximaEmision.ToString("yyyyMMdd") + "', ");
         a.Append("Comprobante.CantidadComprobantesAEmitir=" + Comprobante.CantidadComprobantesAEmitir + ", ");
         a.Append("Comprobante.CantidadComprobantesEmitidos=" + Comprobante.CantidadComprobantesEmitidos + ", ");
         a.Append("Comprobante.CantidadDiasFechaVto=" + Comprobante.CantidadDiasFechaVto + ", ");
         a.Append("Comprobante.EmailAvisoComprobanteActivo=" + Convert.ToInt32(Comprobante.DatosEmailAvisoComprobanteContrato.Activo).ToString() + ", ");
         a.Append("Comprobante.IdDestinatarioFrecuente='" + Comprobante.DatosEmailAvisoComprobanteContrato.DestinatarioFrecuente.Id + "', ");
         a.Append("Comprobante.EmailAvisoComprobanteAsunto='" + Comprobante.DatosEmailAvisoComprobanteContrato.Asunto + "', ");
         a.Append("Comprobante.EmailAvisoComprobanteCuerpo='" + Comprobante.DatosEmailAvisoComprobanteContrato.Cuerpo + "' ");
         a.AppendLine("where Cuit='" + Comprobante.Cuit + "' and IdTipoComprobante=" + Comprobante.TipoComprobante.Id.ToString() + " and NroPuntoVta=" + Comprobante.NroPuntoVta.ToString() + " and Nrocomprobante=" + (Comprobante.NaturalezaComprobante.Id == "VentaContrato" ? -Comprobante.Nro : Comprobante.Nro).ToString() + " ");
         a.AppendLine("insert Log values (@idWF, getdate(), '" + sesion.Usuario.Id + "', 'Comprobante', 'Modif', '" + Comprobante.WF.Estado + "', '') ");
         a.AppendLine("declare @idLog int ");
         a.AppendLine("select @idLog=@@Identity ");
         a.AppendLine("insert LogDetalle (IdLog, TipoDetalle, Detalle) values (@idLog, 'Desde', '" + Funciones.ObjetoSerializado(comprobanteDesde) + "')");
         a.AppendLine("insert LogDetalle (IdLog, TipoDetalle, Detalle) values (@idLog, 'Hasta', '" + Funciones.ObjetoSerializado(Comprobante) + "') ");
         //Eliminar ComprobanteDetalle (minutas)
         a.AppendLine("delete ComprobanteDetalle where IdWF=@idWF ");
     }
     //Alta ComprobanteDetalle (minutas)
     for (int i = 0; i < Comprobante.Minutas.Count; i++)
     {
         a.AppendLine("insert ComprobanteDetalle (IdWF, IdTipoItem, NroItem, IdArticulo, IdRubro, Cantidad, PrecioUnitario, Importe, IdUbicacion, IndicadorExentoGravado, Detalle) ");
         a.AppendLine("values (@idWF, '" + Comprobante.Minutas[i].Item.IdTipo + "', " + Comprobante.Minutas[i].Item.Nro.ToString() + ", '" + Comprobante.Minutas[i].Articulo.Id + "', '" + Comprobante.Minutas[i].Rubro.Id + "', " + Comprobante.Minutas[i].Cantidad.ToString("0000000000000.00", System.Globalization.CultureInfo.InvariantCulture) + ", " + Comprobante.Minutas[i].PrecioUnitario.ToString("0000000000000.00", System.Globalization.CultureInfo.InvariantCulture) + ", " + Comprobante.Minutas[i].Importe.ToString("0000000000000.00", System.Globalization.CultureInfo.InvariantCulture) + ", '" + Comprobante.Minutas[i].IdUbicacion + "', '" + Comprobante.Minutas[i].IndicadorExentoGravado + "', '" + Comprobante.Minutas[i].Detalle + "') ");
     }
     Ejecutar(a.ToString(), TipoRetorno.None, Transaccion.Usa, sesion.CnnStr);
 }
예제 #10
0
 public List<Entidades.Comprobante> ListaGlobalFiltrada(bool SoloVigentes, bool EsFechaAlta, string FechaDesde, string FechaHasta, Entidades.Persona Persona, string CUIT, string CUITRazonSocial, string NroComprobante)
 {
     List<Entidades.Comprobante> lista = new List<Entidades.Comprobante>();
     if (sesion.Cuit.Nro != null)
     {
         System.Text.StringBuilder a = new StringBuilder();
         a.Append("select ");
         a.Append("Comprobante.Cuit, Cuit.RazonSocial as CUITRazonSocial, convert(datetime, Log.Fecha, 120) as FechaAlta, Comprobante.IdTipoComprobante, Comprobante.DescrTipoComprobante, Comprobante.NroPuntoVta, Comprobante.NroComprobante, Comprobante.NroLote, Comprobante.IdTipoDoc, Comprobante.NroDoc, Comprobante.IdPersona, Comprobante.DesambiguacionCuitPais, Comprobante.RazonSocial, Comprobante.Detalle, Comprobante.Fecha, Comprobante.FechaVto, Comprobante.Moneda, Comprobante.ImporteMoneda, Comprobante.TipoCambio, Comprobante.Importe, Comprobante.Request, Comprobante.Response, Comprobante.IdDestinoComprobante, Comprobante.IdWF, Comprobante.Estado, Comprobante.UltActualiz, Comprobante.IdNaturalezaComprobante, NaturalezaComprobante.DescrNaturalezaComprobante, Comprobante.PeriodicidadEmision, Comprobante.FechaProximaEmision, Comprobante.CantidadComprobantesAEmitir, Comprobante.CantidadComprobantesEmitidos, Comprobante.CantidadDiasFechaVto, Comprobante.EmailAvisoComprobanteActivo, Comprobante.IdDestinatarioFrecuente, Comprobante.EmailAvisoComprobanteAsunto, Comprobante.EmailAvisoComprobanteCuerpo ");
         a.Append("from Comprobante, Cuit, Log, NaturalezaComprobante ");
         a.Append("where Comprobante.Cuit = Cuit.Cuit and Comprobante.IdWF = Log.IdWF and Log.Evento = 'Alta' ");
         a.Append("and Comprobante.IdNaturalezaComprobante=NaturalezaComprobante.IdNaturalezaComprobante ");
         if (SoloVigentes)
         {
             a.Append("and Comprobante.Estado='Vigente' ");
         }
         if (EsFechaAlta)
         {
             if (FechaDesde != String.Empty)
             {
                 a.Append("and Log.Fecha >= '" + Convert.ToDateTime(FechaDesde, new System.Globalization.CultureInfo("es-AR")).ToString("yyyyMMdd") + "' ");
             }
             if (FechaHasta != String.Empty)
             {
                 string FechaAuxHasta = Convert.ToDateTime(FechaHasta, new System.Globalization.CultureInfo("es-AR")).AddDays(1).ToString("yyyyMMdd");
                 a.Append("and Log.Fecha < '" + FechaAuxHasta + "' ");
             }
         }
         else
         {
             if (FechaDesde != String.Empty)
             {
                 a.Append("and Comprobante.Fecha >= '" + Convert.ToDateTime(FechaDesde, new System.Globalization.CultureInfo("es-AR")).ToString("yyyyMMdd") + "' ");
             }
             if (FechaHasta != String.Empty)
             {
                 a.Append("and Comprobante.Fecha <= '" + Convert.ToDateTime(FechaHasta, new System.Globalization.CultureInfo("es-AR")).ToString("yyyyMMdd") + "' ");
             }
         }
         if (CUIT != String.Empty)
         {
             a.Append("and Comprobante.Cuit like '%" + CUIT + "%' ");
         }
         if (CUITRazonSocial != String.Empty)
         {
             a.Append("and Cuit.RazonSocial like '%" + CUITRazonSocial + "%' ");
         }
         if (NroComprobante != String.Empty)
         {
             a.Append("and Comprobante.NroComprobante = " + NroComprobante + " ");
         }
         //if (Persona.Orden != 0)
         //{
         //    a.Append("and Comprobante.IdTipoDoc=" + Persona.Documento.Tipo.Id + " ");
         //    a.Append("and Comprobante.NroDoc=" + Persona.Documento.Nro.ToString() + " ");
         //    a.Append("and Comprobante.IdPersona='" + Persona.IdPersona + "' ");
         //    a.Append("and Comprobante.DesambiguacionCuitPais=" + Persona.DesambiguacionCuitPais.ToString() + " ");
         //}
         a.Append("order by Comprobante.DescrTipoComprobante desc, Comprobante.NroPuntoVta desc, Comprobante.NroComprobante desc ");
         DataTable dt = (DataTable)Ejecutar(a.ToString(), TipoRetorno.TB, Transaccion.NoAcepta, sesion.CnnStr);
         if (dt.Rows.Count != 0)
         {
             for (int i = 0; i < dt.Rows.Count; i++)
             {
                 Entidades.Comprobante elem = new Entidades.Comprobante();
                 Copiar(dt.Rows[i], elem);
                 elem.CuitRazonSocial = Convert.ToString(dt.Rows[i]["CUITRazonSocial"]);
                 elem.FechaAlta = Convert.ToDateTime(dt.Rows[i]["FechaAlta"]);
                 lista.Add(elem);
             }
         }
     }
     return lista;
 }
        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";
                }
            }
        }
 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";
     }
 }
예제 #13
0
 public void Completar(Entidades.Comprobante Comprobante)
 {
     esquemaContableGridView.DataSource = Comprobante.Minutas;
     esquemaContableGridView.DataBind();
     ViewState["esquemaContable"] = Comprobante.Minutas;
 }
예제 #14
0
 protected void ProximoNroComprobanteLinkButton_Click(object sender, EventArgs e)
 {
     //Nuevo número de comprobante
     Entidades.Sesion sesion = (Entidades.Sesion)Session["Sesion"]; 
     Entidades.Comprobante ultimoComprobanteEmitido = new Entidades.Comprobante();
     ultimoComprobanteEmitido.TipoComprobante.Id = Convert.ToInt32(Tipo_De_ComprobanteDropDownList.SelectedValue.ToString());
     ultimoComprobanteEmitido.NroPuntoVta = Convert.ToInt32(PuntoVtaDropDownList.SelectedValue.ToString());
     ultimoComprobanteEmitido.NaturalezaComprobante.Id = "Venta";
     RN.Comprobante.LeerUltimoEmitido(ultimoComprobanteEmitido, sesion);
     Numero_ComprobanteTextBox.Text = Convert.ToString(ultimoComprobanteEmitido.Nro + 1);
 }
예제 #15
0
        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);
                    }
                }
            }
        }
        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);
        }
 protected void AccionBaja_AnulBajaButton_Click(object sender, EventArgs e)
 {
     if (Funciones.SessionTimeOut(Session))
     {
         Response.Redirect("~/SessionTimeout.aspx");
     }
     else
     {
         Entidades.Sesion sesion = (Entidades.Sesion)Session["Sesion"];
         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
         {
             string mensaje = String.Empty;
             try
             {
                 Entidades.Comprobante comprobante = new Entidades.Comprobante();
                 comprobante.Cuit = sesion.Cuit.Nro;
                 comprobante.TipoComprobante.Id = Convert.ToInt32(Tipo_De_ComprobanteDropDownList.SelectedValue);
                 comprobante.NroPuntoVta = Convert.ToInt32(PuntoVtaDropDownList.SelectedValue);  //OJO con comprobates de compra
                 comprobante.NaturalezaComprobante.Id = IdNaturalezaComprobanteTextBox.Text;
                 comprobante.Nro = Math.Abs(Convert.ToInt64(Numero_ComprobanteTextBox.Text));
                 RN.Comprobante.Leer(comprobante, sesion);
                 if (comprobante.Estado != "DeBaja")
                 {
                     RN.Comprobante.DarDeBaja(comprobante, sesion);
                     mensaje = "Baja de " + ((IdNaturalezaComprobanteTextBox.Text == "VentaContrato") ? "Contrato" : "Comprobante") + " registrada satisfactoriamente";
                 }
                 else
                 {
                     RN.Comprobante.AnularBaja(comprobante, sesion);
                     mensaje = "Anulación de baja de " + ((IdNaturalezaComprobanteTextBox.Text == "VentaContrato") ? "Contrato" : "Comprobante") + " registrada satisfactoriamente";
                 }
                 AccionesPanel.Visible = false;
             }
             catch (Exception ex)
             {
                 mensaje = "Problemas en la baja/anul.baja del " + ((IdNaturalezaComprobanteTextBox.Text == "VentaContrato") ? "Contrato" : "Comprobante") + ".  " + ex.Message;
             }
             finally
             {
                 ClientScript.RegisterStartupScript(GetType(), "Message", Funciones.TextoScript(mensaje));
             }
         }
     }
 }
예제 #18
0
        protected void AccionSubirAAFIPButton_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
                    {
                        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")
                            //if (idtipo != "Comun" && idtipo != "Exportacion")
                            {
                                ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Esta opción solo está habilitada para puntos de venta Comun RG.2485."), false);
                                //ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Esta opción solo está habilitada para puntos de venta Comun RG.2485 y Exportación."), false);
                                return;
                            }
                            if (ValidarCamposObligatorios("SubirAAFIP"))
                            {
                                string respuesta = "";
                                FeaEntidades.InterFacturas.lote_comprobantes lcFea = GenerarLote(false);

                                //Grabar en base de datos
                                lcFea.cabecera_lote.DestinoComprobante = "AFIP";
                                lcFea.comprobante[0].cabecera.informacion_comprobante.Observacion = "";
                                RN.Comprobante.Registrar(lcFea, 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 = "";
                                if (idtipo == "Exportacion")
                                {
                                    respuesta = RN.ComprobanteAFIP.EnviarAFIPExpo(out caeNro, out caeFecVto, lcFea, (Entidades.Sesion)Session["Sesion"]);
                                }
                                else
                                {
                                    respuesta = RN.ComprobanteAFIP.EnviarAFIP(out caeNro, out caeFecVto, lcFea, (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(lcFea);

                                    //Actualizar estado on-line.
                                    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 = DateTime.Now.ToString("yyyyMMdd");
                                        lcFea.comprobante[0].cabecera.informacion_comprobante.fecha_obtencion_caeSpecified = true;
                                        //Actualizar front-end
                                        //CAETextBox.Text = lcFea.comprobante[0].cabecera.informacion_comprobante.cae;
                                        //FechaCAEVencimientoDatePickerWebUserControl.Text = lcFea.comprobante[0].cabecera.informacion_comprobante.fecha_vencimiento_cae;
                                        //FechaCAEObtencionDatePickerWebUserControl.Text = lcFea.comprobante[0].cabecera.informacion_comprobante.fecha_obtencion_cae;
                                    }
                                    string XML = "";
                                    RN.Comprobante.SerializarLc(out XML, lcFea);
                                    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, ((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"]));
                                    Session["comprobantePDF"] = comprobante;
                                    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);
                    }
                }
            }
        }
예제 #19
0
        protected void FileUploadButton_Click(object sender, EventArgs e)
        {
            if (((Button)sender).ID == "FileUploadButton" && ((Entidades.Sesion)Session["Sesion"]).Usuario.Id == null)
            {
                MensajeLabel.Text = "Su sesión ha caducado por inactividad. Por favor vuelva a loguearse.";
            }
            else
            {
                FeaEntidades.InterFacturas.lote_comprobantes lc = new FeaEntidades.InterFacturas.lote_comprobantes();
                if (XMLFileUpload.HasFile)
                {
                    try
                    {
                        System.IO.MemoryStream ms = new System.IO.MemoryStream(XMLFileUpload.FileBytes);
                        ms.Seek(0, System.IO.SeekOrigin.Begin);

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

                            Entidades.Comprobante comprobante = new Entidades.Comprobante();
                            string XML = "";
                            RN.Comprobante.SerializarLc(out XML, lc);
                            comprobante.Request           = XML;
                            Session["ComprobanteATratar"] = new Entidades.ComprobanteATratar(Entidades.Enum.TratamientoComprobante.Consulta, comprobante);
                            string script = "window.open('/ComprobanteConsulta.aspx', '');";
                            ScriptManager.RegisterStartupScript(this, typeof(Page), "popup", script, true);
                        }
                        catch (InvalidOperationException)
                        {
                            try
                            {
                                LeerFormatoDetalleIBK(e, lc, ms);
                            }
                            catch (InvalidOperationException)
                            {
                                LeerFormatoLoteIBK(e, lc, ms);
                            }
                        }
                    }
                    catch
                    {
                        MensajeLabel.Text = "El archivo no cumple con el esquema de Interfacturas";
                    }
                }
                else
                {
                    MensajeLabel.Text = "Debe seleccionar un archivo";
                }
            }
        }
예제 #20
0
        //private void AjustarCodigosDeReferenciaEnFooter()
        //{
        //    referenciasGridView.DataBind();
        //    ((DropDownList)referenciasGridView.FooterRow.FindControl("ddlcodigo_de_referencia")).DataValueField = "Codigo";
        //    ((DropDownList)referenciasGridView.FooterRow.FindControl("ddlcodigo_de_referencia")).DataTextField = "Descr";
        //    if (Funciones.SessionTimeOut(Session))
        //    {
        //        Response.Redirect("~/SessionTimeout.aspx");
        //    }
        //    else
        //    {
        //        if (((Entidades.Sesion)Session["Sesion"]).Usuario != null)
        //        {
        //            //if (!Punto_VentaTextBox.Text.Equals(string.Empty))
        //            if (!PuntoVtaDropDownList.SelectedValue.Equals(string.Empty))
        //            {
        //                int auxPV;
        //                try
        //                {
        //                    auxPV = Convert.ToInt32(PuntoVtaDropDownList.SelectedValue);
        //                    string idtipo = ((Entidades.Sesion)Session["Sesion"]).UN.PuntosVta.Find(delegate(Entidades.PuntoVta pv)
        //                    {
        //                        return pv.Nro == auxPV;
        //                    }).IdTipoPuntoVta;
        //                    switch (idtipo)
        //                    {
        //                        case "Comun":
        //                        case "RG2904":
        //                        case "BonoFiscal":
        //                            ((DropDownList)referenciasGridView.FooterRow.FindControl("ddlcodigo_de_referencia")).DataSource = FeaEntidades.CodigosReferencia.CodigoReferencia.Lista();
        //                            ((AjaxControlToolkit.MaskedEditExtender)referenciasGridView.FooterRow.FindControl("txtdato_de_referenciaFooterExpoMaskedEditExtender")).Enabled = false;
        //                            ((AjaxControlToolkit.FilteredTextBoxExtender)referenciasGridView.FooterRow.FindControl("txtdato_de_referenciaFooterExpoFilteredTextBoxExtender")).Enabled = true;
        //                            break;
        //                        case "Exportacion":
        //                            ((DropDownList)referenciasGridView.FooterRow.FindControl("ddlcodigo_de_referencia")).DataSource = FeaEntidades.CodigosReferencia.Exportaciones.Exportacion.Lista();
        //                            ((AjaxControlToolkit.MaskedEditExtender)referenciasGridView.FooterRow.FindControl("txtdato_de_referenciaFooterExpoMaskedEditExtender")).Enabled = true;
        //                            ((AjaxControlToolkit.FilteredTextBoxExtender)referenciasGridView.FooterRow.FindControl("txtdato_de_referenciaFooterExpoFilteredTextBoxExtender")).Enabled = false;
        //                            break;
        //                        default:
        //                            throw new Exception("Tipo de punto de venta no contemplado en la lógica de la aplicación (" + idtipo + ")");
        //                    }
        //                }
        //                catch
        //                {
        //                    ((DropDownList)referenciasGridView.FooterRow.FindControl("ddlcodigo_de_referencia")).DataSource = FeaEntidades.CodigosReferencia.CodigoReferencia.Lista();
        //                    ((AjaxControlToolkit.MaskedEditExtender)referenciasGridView.FooterRow.FindControl("txtdato_de_referenciaFooterExpoMaskedEditExtender")).Enabled = false;
        //                    ((AjaxControlToolkit.FilteredTextBoxExtender)referenciasGridView.FooterRow.FindControl("txtdato_de_referenciaFooterExpoFilteredTextBoxExtender")).Enabled = true;
        //                }
        //            }
        //            else
        //            {
        //                ((DropDownList)referenciasGridView.FooterRow.FindControl("ddlcodigo_de_referencia")).DataSource = FeaEntidades.CodigosReferencia.CodigoReferencia.Lista();
        //                ((AjaxControlToolkit.MaskedEditExtender)referenciasGridView.FooterRow.FindControl("txtdato_de_referenciaFooterExpoMaskedEditExtender")).Enabled = false;
        //                ((AjaxControlToolkit.FilteredTextBoxExtender)referenciasGridView.FooterRow.FindControl("txtdato_de_referenciaFooterExpoFilteredTextBoxExtender")).Enabled = true;
        //            }
        //        }
        //        else
        //        {
        //            ((DropDownList)referenciasGridView.FooterRow.FindControl("ddlcodigo_de_referencia")).DataSource = FeaEntidades.CodigosReferencia.CodigoReferencia.Lista();
        //            ((AjaxControlToolkit.MaskedEditExtender)referenciasGridView.FooterRow.FindControl("txtdato_de_referenciaFooterExpoMaskedEditExtender")).Enabled = false;
        //            ((AjaxControlToolkit.FilteredTextBoxExtender)referenciasGridView.FooterRow.FindControl("txtdato_de_referenciaFooterExpoFilteredTextBoxExtender")).Enabled = true;
        //        }
        //        ((DropDownList)referenciasGridView.FooterRow.FindControl("ddlcodigo_de_referencia")).DataBind();
        //    }
        //}
        protected void AccionObtenerXMLButton_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
                    {
                        if (ValidarCamposObligatorios("ObtenerXML"))
                        {
                            //Generar Lote
                            FeaEntidades.InterFacturas.lote_comprobantes lote = GenerarLote(false);

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

                            //Registrar comprobante si no es el usuario de DEMO.
                            Entidades.Sesion sesion = (Entidades.Sesion)Session["Sesion"];
                            if (sesion.UsuarioDemo != true)
                            {
                                Entidades.Comprobante cAux = new Entidades.Comprobante();
                                cAux.Cuit = lote.cabecera_lote.cuit_vendedor.ToString();
                                cAux.TipoComprobante.Id = lote.comprobante[0].cabecera.informacion_comprobante.tipo_de_comprobante;
                                cAux.NroPuntoVta = lote.comprobante[0].cabecera.informacion_comprobante.punto_de_venta;
                                cAux.Nro = lote.comprobante[0].cabecera.informacion_comprobante.numero_comprobante;
                                RN.Comprobante.Leer(cAux, sesion);
                                if (cAux.Estado == null || cAux.Estado != "Vigente")
                                {
                                    RN.Comprobante.Registrar(lote, 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, ((Entidades.Sesion)Session["Sesion"]));
                                }
                            }

                            AjustarLoteParaITF(lote);

                            System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(lote.GetType());
                            System.Text.StringBuilder sb = new System.Text.StringBuilder();
                            sb.Append(lote.cabecera_lote.cuit_vendedor);
                            sb.Append("-");
                            sb.Append(lote.cabecera_lote.punto_de_venta.ToString("0000"));
                            sb.Append("-");
                            sb.Append(lote.comprobante[0].cabecera.informacion_comprobante.tipo_de_comprobante.ToString("00"));
                            sb.Append("-");
                            sb.Append(lote.comprobante[0].cabecera.informacion_comprobante.numero_comprobante.ToString("00000000"));
                            sb.Append(".xml");

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

                            string smtpXAmb = System.Configuration.ConfigurationManager.AppSettings["Ambiente"].ToString();
                            System.Net.Mail.SmtpClient smtpClient = new System.Net.Mail.SmtpClient();

                            try
                            {
                                RegistrarActividad(lote, sb, smtpClient, smtpXAmb, m);
                            }
                            catch
                            {
                            }

                            if (((Button)sender).ID == "DescargarXMLButton")
                            {
                                //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);
                            }
                            else
                            {
                                //Envio por mail del XML
                                System.Net.Mail.MailMessage mail;
                                if (((Entidades.Sesion)Session["Sesion"]).Usuario.Id != null)
                                {
                                    mail = new System.Net.Mail.MailMessage("*****@*****.**",
                                        ((Entidades.Sesion)Session["Sesion"]).Usuario.Email,
                                        "Ced-eFact-Envío automático archivo XML:" + sb.ToString()
                                        , string.Empty);
                                }
                                else
                                {
                                    mail = new System.Net.Mail.MailMessage("*****@*****.**",
                                        Email_VendedorTextBox.Text,
                                        "Ced-eFact-Envío automático archivo XML:" + sb.ToString()
                                        , string.Empty);
                                }
                                System.Net.Mime.ContentType contentType = new System.Net.Mime.ContentType();
                                contentType.MediaType = System.Net.Mime.MediaTypeNames.Application.Octet;
                                contentType.Name = sb.ToString();
                                System.Net.Mail.Attachment attachment = new System.Net.Mail.Attachment(m, contentType);
                                mail.Attachments.Add(attachment);
                                mail.BodyEncoding = System.Text.Encoding.UTF8;
                                mail.Body = Mails.Body.AgregarBody();
                                smtpClient.Host = "localhost";
                                if (smtpXAmb.Equals("DESA"))
                                {
                                    string MailServidorSmtp = System.Configuration.ConfigurationManager.AppSettings["MailServidorSmtp"];
                                    if (MailServidorSmtp != "")
                                    {
                                        string MailCredencialesUsr = System.Configuration.ConfigurationManager.AppSettings["MailCredencialesUsr"];
                                        string MailCredencialesPsw = System.Configuration.ConfigurationManager.AppSettings["MailCredencialesPsw"];
                                        smtpClient.Host = MailServidorSmtp;
                                        if (MailCredencialesUsr != "")
                                        {
                                            smtpClient.Credentials = new System.Net.NetworkCredential(MailCredencialesUsr, MailCredencialesPsw);
                                        }
                                        smtpClient.Credentials = new System.Net.NetworkCredential(MailCredencialesUsr, MailCredencialesPsw);
                                    }
                                }
                                smtpClient.Send(mail);
                            }
                            m.Close();

                            if (!smtpXAmb.Equals("DESA"))
                            {
                                ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", "<SCRIPT LANGUAGE='javascript'>alert('Archivo enviado satisfactoriamente');window.open('https://srv1.interfacturas.com.ar/cfeWeb/faces/login/identificacion.jsp/', '_blank');</script>", false);
                            }
                            else
                            {
                                ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Archivo enviado satisfactoriamente"), false);
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", Funciones.TextoScript("Problemas al generar el archivo.  " + ex.Message), false);
                    }
                }
            }
        }
예제 #21
0
        public static void Registrar(FeaEntidades.InterFacturas.lote_comprobantes Lote, Object Response, string IdNaturalezaComprobante, string IdDestinoComprobante, string IdEstado, string PeriodicidadEmision, DateTime FechaProximaEmision, int CantidadComprobantesAEmitir, int CantidadComprobantesEmitidos, int CantidadDiasFechaVto, string Detalle, bool EmailAvisoComprobanteActivo, string IdDestinatarioFrecuente, string EmailAvisoComprobanteAsunto, string EmailAvisoComprobanteCuerpo, Entidades.Sesion Sesion)
        {
            //Generar Comprobante a partir de Lote
            Entidades.Comprobante comprobante = new Entidades.Comprobante();
            if (IdNaturalezaComprobante != "Compra")
            {
                comprobante.Cuit = Lote.cabecera_lote.cuit_vendedor.ToString();
                comprobante.Documento.Tipo.Id = Lote.comprobante[0].cabecera.informacion_comprador.codigo_doc_identificatorio.ToString();
                FeaEntidades.Documentos.Documento tipoDocumento = FeaEntidades.Documentos.Documento.Lista().Find(delegate(FeaEntidades.Documentos.Documento d) { return comprobante.Documento.Tipo.Id == d.Codigo.ToString(); });
                if (tipoDocumento != null)
                {
                    comprobante.Documento.Tipo.Descr = tipoDocumento.Descr;
                }
                else
                {
                    comprobante.Documento.Tipo.Descr = "Desconocido";
                }
                comprobante.Documento.Nro = Lote.comprobante[0].cabecera.informacion_comprador.nro_doc_identificatorio;
                comprobante.IdPersona = Lote.comprobante[0].cabecera.informacion_comprador.id;
                comprobante.DesambiguacionCuitPais = Lote.comprobante[0].cabecera.informacion_comprador.desambiguacionCuitPais;
                comprobante.RazonSocial = Lote.comprobante[0].cabecera.informacion_comprador.denominacion;
            }
            else
            {
                comprobante.Cuit = Lote.comprobante[0].cabecera.informacion_comprador.nro_doc_identificatorio.ToString();
                comprobante.Documento.Tipo.Id = new FeaEntidades.Documentos.CUIT().Codigo.ToString();
                comprobante.Documento.Nro = Lote.cabecera_lote.cuit_vendedor;
                comprobante.IdPersona = Lote.comprobante[0].cabecera.informacion_vendedor.id;
                comprobante.DesambiguacionCuitPais = Lote.comprobante[0].cabecera.informacion_vendedor.desambiguacionCuitPais;
                comprobante.RazonSocial = Lote.comprobante[0].cabecera.informacion_vendedor.razon_social;
            }
            comprobante.WF.Estado = IdEstado;
            comprobante.TipoComprobante.Id = Lote.comprobante[0].cabecera.informacion_comprobante.tipo_de_comprobante;
            FeaEntidades.TiposDeComprobantes.TipoComprobante tipoComprobante;
            if (IdNaturalezaComprobante != "Compra")
            {
                tipoComprobante = FeaEntidades.TiposDeComprobantes.TipoComprobante.ListaCompletaAFIP().Find(delegate(FeaEntidades.TiposDeComprobantes.TipoComprobante d) { return comprobante.TipoComprobante.Id.ToString() == d.Codigo.ToString(); });
            }
            else
            {
                tipoComprobante = FeaEntidades.TiposDeComprobantes.TipoComprobante.ListaCompletaAFIPCompras().Find(delegate(FeaEntidades.TiposDeComprobantes.TipoComprobante d) { return comprobante.TipoComprobante.Id.ToString() == d.Codigo.ToString(); });
            }
            if (tipoComprobante != null)
            {
                comprobante.TipoComprobante.Descr = tipoComprobante.Descr;
            }
            else
            {
                comprobante.TipoComprobante.Descr = "Desconocido";
            }
            comprobante.NroPuntoVta = Lote.comprobante[0].cabecera.informacion_comprobante.punto_de_venta;
            comprobante.Nro = Lote.comprobante[0].cabecera.informacion_comprobante.numero_comprobante;
            comprobante.NroLote = Lote.cabecera_lote.id_lote;
            comprobante.Detalle = Detalle;
            comprobante.Fecha = DB.Funciones.ConvertirFechaStringAAAAMMDDaDatetime(Lote.comprobante[0].cabecera.informacion_comprobante.fecha_emision);
            if (Lote.comprobante[0].cabecera.informacion_comprobante.fecha_vencimiento == null || Lote.comprobante[0].cabecera.informacion_comprobante.fecha_vencimiento == String.Empty)
            {
                comprobante.FechaVto = Convert.ToDateTime("31/12/9999");
            }
            else
            {
                comprobante.FechaVto = DB.Funciones.ConvertirFechaStringAAAAMMDDaDatetime(Lote.comprobante[0].cabecera.informacion_comprobante.fecha_vencimiento);
            }
            comprobante.Moneda = Lote.comprobante[0].resumen.codigo_moneda;
            if (Lote.comprobante[0].resumen.importes_moneda_origen != null)
            {
                comprobante.ImporteMoneda = Lote.comprobante[0].resumen.importes_moneda_origen.importe_total_factura;
            }
            comprobante.TipoCambio = Lote.comprobante[0].resumen.tipo_de_cambio;
            comprobante.Importe = Lote.comprobante[0].resumen.importe_total_factura;
            comprobante.Request = DB.Funciones.ObjetoSerializado(Lote);
            if (Response != null)
            {
                comprobante.Response = DB.Funciones.ObjetoSerializado(Response);
            }
            comprobante.IdDestinoComprobante = IdDestinoComprobante;
            comprobante.NaturalezaComprobante.Id = IdNaturalezaComprobante;
            comprobante.PeriodicidadEmision = PeriodicidadEmision;
            comprobante.FechaProximaEmision = FechaProximaEmision;
            comprobante.CantidadComprobantesAEmitir = CantidadComprobantesAEmitir;
            comprobante.CantidadComprobantesEmitidos = CantidadComprobantesEmitidos;
            comprobante.CantidadDiasFechaVto = CantidadDiasFechaVto;
            comprobante.DatosEmailAvisoComprobanteContrato.Activo = EmailAvisoComprobanteActivo;
            comprobante.DatosEmailAvisoComprobanteContrato.DestinatarioFrecuente.Id = IdDestinatarioFrecuente;
            comprobante.DatosEmailAvisoComprobanteContrato.Asunto = EmailAvisoComprobanteAsunto;
            comprobante.DatosEmailAvisoComprobanteContrato.Cuerpo = EmailAvisoComprobanteCuerpo;

            #region ARMADO DE MINUTAS DE STOCK Y CONTABILIDAD
            Entidades.EsquemaContable esquemaContable;
            Entidades.ComprobanteDetalle minuta;
            //Total
            esquemaContable = new Entidades.EsquemaContable(comprobante.TipoComprobante, comprobante.NaturalezaComprobante, "T");
            RN.Rubro.LeerEsquemaContable(esquemaContable, Sesion);
            minuta = new Entidades.ComprobanteDetalle();
            minuta.Item.IdTipo = esquemaContable.Concepto;
            minuta.Item.Nro = 0;
            minuta.Articulo.Id = string.Empty;
            minuta.Rubro.Id = esquemaContable.Rubro.Id;
            minuta.Cantidad = 0;
            minuta.PrecioUnitario = 0;
            minuta.Importe = comprobante.Importe * esquemaContable.Signo;
            minuta.IdUbicacion = string.Empty;
            minuta.IndicadorExentoGravado = string.Empty;
            comprobante.Minutas.Add(minuta);
            //Articulos
            for (int i = 0; i < Lote.comprobante[0].detalle.linea.Length; i++)
            {
                if (Lote.comprobante[0].detalle.linea[i] != null)
                {
                    esquemaContable = new Entidades.EsquemaContable(comprobante.TipoComprobante, comprobante.NaturalezaComprobante, "A");
                    RN.Rubro.LeerEsquemaContable(esquemaContable, Sesion);
                    minuta = new Entidades.ComprobanteDetalle();
                    minuta.Item.IdTipo = esquemaContable.Concepto;
                    minuta.Item.Nro = i;
                    if (Lote.comprobante[0].detalle.linea[i].codigo_producto_vendedor != string.Empty)
                    {
                        minuta.Articulo.Id = Lote.comprobante[0].detalle.linea[i].codigo_producto_vendedor;
                        minuta.Detalle = string.Empty;
                    }
                    else
                    {
                        minuta.Articulo.Id = string.Empty;
                        minuta.Detalle = RN.Funciones.HexToString(Lote.comprobante[0].detalle.linea[i].descripcion);
                    }
                    minuta.Rubro.Id = esquemaContable.Rubro.Id;
                    if (Lote.comprobante[0].detalle.linea[i].cantidadSpecified)
                        minuta.Cantidad = Lote.comprobante[0].detalle.linea[i].cantidad * esquemaContable.Signo;
                    else
                        minuta.Cantidad = 0;
                    if (Lote.comprobante[0].detalle.linea[i].precio_unitarioSpecified)
                        minuta.PrecioUnitario = Lote.comprobante[0].detalle.linea[i].precio_unitario;
                    else
                        minuta.PrecioUnitario = 0;
                    minuta.Importe = Lote.comprobante[0].detalle.linea[i].importe_total_articulo * esquemaContable.Signo;
                    minuta.IdUbicacion = string.Empty;
                    minuta.IndicadorExentoGravado = Lote.comprobante[0].detalle.linea[i].indicacion_exento_gravado;
                    comprobante.Minutas.Add(minuta);
                }
            }
            //Descuentos
            if (Lote.comprobante[0].resumen.descuentos != null)
            {
                for (int i = 0; i < Lote.comprobante[0].resumen.descuentos.Length; i++)
                {
                    if (Lote.comprobante[0].resumen.descuentos[i] != null)
                    {
                        esquemaContable = new Entidades.EsquemaContable(comprobante.TipoComprobante, comprobante.NaturalezaComprobante, "D");
                        RN.Rubro.LeerEsquemaContable(esquemaContable, Sesion);
                        minuta = new Entidades.ComprobanteDetalle();
                        minuta.Item.IdTipo = esquemaContable.Concepto;
                        minuta.Item.Nro = i;
                        minuta.Articulo.Id = string.Empty;
                        minuta.Rubro.Id = esquemaContable.Rubro.Id;
                        minuta.Cantidad = 0;
                        minuta.PrecioUnitario = 0;
                        minuta.Importe = Lote.comprobante[0].resumen.descuentos[i].importe_descuento * esquemaContable.Signo;
                        minuta.IdUbicacion = string.Empty;
                        minuta.IndicadorExentoGravado = Lote.comprobante[0].resumen.descuentos[i].indicacion_exento_gravado_descuento;
                        minuta.Detalle = "Desc." + Lote.comprobante[0].resumen.descuentos[i].descripcion_descuento.ToLower();
                        if (Lote.comprobante[0].resumen.descuentos[i].porcentaje_descuentoSpecified)
                            minuta.Detalle += " " + Lote.comprobante[0].resumen.descuentos[i].porcentaje_descuento.ToString() + "%";
                        comprobante.Minutas.Add(minuta);
                    }
                }
            }
            //Impuestos
            if (Lote.comprobante[0].resumen.impuestos != null)
            {
                for (int i = 0; i < Lote.comprobante[0].resumen.impuestos.Length; i++)
                {
                    if (Lote.comprobante[0].resumen.impuestos[i] != null)
                    {
                        string concepto = "I-" + Lote.comprobante[0].resumen.impuestos[i].codigo_impuesto;
                        if (Lote.comprobante[0].resumen.impuestos[i].porcentaje_impuestoSpecified && Lote.comprobante[0].resumen.impuestos[i].codigo_impuesto == 1)
                            concepto += "-" + Lote.comprobante[0].resumen.impuestos[i].porcentaje_impuesto;
                        esquemaContable = new Entidades.EsquemaContable(comprobante.TipoComprobante, comprobante.NaturalezaComprobante, concepto);
                        RN.Rubro.LeerEsquemaContable(esquemaContable, Sesion);
                        minuta = new Entidades.ComprobanteDetalle();
                        minuta.Item.IdTipo = "I";
                        minuta.Item.Nro = i;
                        minuta.Articulo.Id = string.Empty;
                        minuta.Rubro.Id = esquemaContable.Rubro.Id;
                        minuta.Cantidad = 0;
                        minuta.PrecioUnitario = 0;
                        minuta.Importe = Lote.comprobante[0].resumen.impuestos[i].importe_impuesto * esquemaContable.Signo;
                        minuta.IdUbicacion = string.Empty;
                        minuta.IndicadorExentoGravado = string.Empty;
                        minuta.Detalle = string.Empty;
                        comprobante.Minutas.Add(minuta);
                    }
                }
            }
            #endregion
            DB.Comprobante db = new DB.Comprobante(Sesion);
            db.Registrar(comprobante);
        }