protected void btnGuardar_Click(object sender, EventArgs e)
        {
            try
            {
                ValidaVariables();

                NegocioPF.Configuracion oConfig = new NegocioPF.Configuracion();

                oConfig.PDFObligatorio  = (rbtPDFObligatorio.SelectedValue == "1" ? true : false);
                oConfig.GuardarArchBD   = (rbtGuardarArch.SelectedValue == "1" ? true : false);
                oConfig.MesesAtras      = Convert.ToInt32(txtMesesAtras.Text);
                oConfig.MesesAdelante   = Convert.ToInt32(txtMesesAdelante.Text);
                oConfig.LongitudOrden   = Convert.ToInt32(txtLongOrden.Text);
                oConfig.PerfilProveedor = Convert.ToInt32(cboPerfiles.SelectedValue);
                oConfig.Idioma          = cboIdioma.SelectedValue;
                oConfig.Mensaje         = txtMensaje.Text;
                oConfig.MailContacto    = txtMailContacto.Text;
                oConfig.ValidacionSAT   = (rbtValidaSAT.SelectedValue == "1" ? true : false);
                oConfig.Guardar(((Usuario)Session["oUsuario"]).Id);

                MessageBox(sender, e, ((Idioma)Session["oIdioma"]).Texto("MsgConfigGuardada"));
            }
            catch (Exception ex)
            {
                MessageBox(sender, e, ((Idioma)Session["oIdioma"]).Texto(ex.Message));
            }
        }
Exemple #2
0
        private void EnviaCorreo()
        {
            try
            {
                NegocioPF.Configuracion oConfig = new NegocioPF.Configuracion();
                oConfig.Cargar();

                if (oConfig.MailContacto != "" || oConfig.MailContacto != "")
                {
                    string sHtml = "<html>";
                    sHtml += "<table style='font-family:arial;color:navy;font-size:12px; text-align:justify' border='0' width=\"800\">";
                    sHtml += "<tr><td><p>" + ((Idioma)Session["oIdioma"]).Texto("MsgSaludo") + "</p></td></tr>";
                    sHtml += "<tr><td colspan=\"4\"><p>" + ((Idioma)Session["oIdioma"]).Texto("MsgMsgContRecibido") + "</p></td></tr>";
                    sHtml += "<tr><td></td></tr>";
                    sHtml += "<tr><td>" + ((Idioma)Session["oIdioma"]).Texto("Nombre") + ": " + txtNombre.Text + "</td></tr>";
                    sHtml += "<tr><td></td></tr>";
                    sHtml += "<tr><td>" + ((Idioma)Session["oIdioma"]).Texto("Email") + ": " + txtMail.Text + "</td></tr>";
                    sHtml += "<tr><td></td></tr>";
                    sHtml += "<tr><td>" + ((Idioma)Session["oIdioma"]).Texto("Mensaje") + ": " + txtMensaje.Text + "</td></tr>";
                    sHtml += "<tr><td></td></tr>";
                    sHtml += "<tr><td>" + ((Idioma)Session["oIdioma"]).Texto("Saludos") + "</td></tr>";
                    sHtml += "<tr><td></td></tr>";
                    sHtml += "<tr><td><img src=cid:FirmaPF></td></tr>";
                    sHtml += "</table>";
                    sHtml += "</Html>";

                    EmailTemplate oEmail = new EmailTemplate("");

                    oEmail.To.Add(oConfig.MailContacto);

                    oEmail.From    = new MailAddress(@System.Configuration.ConfigurationSettings.AppSettings["EmailFrom"], "PortalFacturas", System.Text.Encoding.UTF8);
                    oEmail.Subject = ((Idioma)Session["oIdioma"]).Texto("MensajeProveedor");

                    //Agrega Logo
                    AlternateView altView = AlternateView.CreateAlternateViewFromString(sHtml, null, MediaTypeNames.Text.Html);

                    string         imageSource = (Server.MapPath("") + "\\Images\\FirmaPF.jpg");
                    LinkedResource PictureRes  = new LinkedResource(imageSource, MediaTypeNames.Image.Jpeg);
                    PictureRes.ContentId = "FirmaPF";
                    altView.LinkedResources.Add(PictureRes);

                    oEmail.AlternateViews.Add(altView);

                    try
                    {
                        oEmail.Send();
                    }
                    catch (Exception ex)
                    {
                        throw new Exception("MsgErrorEnvioCorreo");
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                try
                {
                    ValidaVariables();
                    EstableceIdioma((Idioma)Session["oIdioma"]);

                    //Llena combo de perfiles
                    NegocioPF.Perfiles oPerfiles = new NegocioPF.Perfiles();
                    oPerfiles.Cargar();
                    cboPerfiles.DataSource     = oPerfiles.Datos;
                    cboPerfiles.DataTextField  = "Nombre";
                    cboPerfiles.DataValueField = "id_perfil";
                    cboPerfiles.DataBind();
                    cboPerfiles.Items.Insert(0, new ListItem(((Idioma)Session["oIdioma"]).Texto("Seleccionar") + " ...", "0"));

                    Idiomas oIdiomas = new Idiomas();
                    oIdiomas.Cargar(((Usuario)Session["oUsuario"]).Idioma);
                    cboIdioma.DataSource     = oIdiomas.Datos;
                    cboIdioma.DataTextField  = "nombre";
                    cboIdioma.DataValueField = "id_idioma";
                    cboIdioma.DataBind();
                    cboIdioma.SelectedValue = ((Usuario)Session["oUsuario"]).Idioma;

                    rbtPDFObligatorio.Items.Clear();
                    rbtPDFObligatorio.Items.Add(new ListItem(((Idioma)Session["oIdioma"]).Texto("Si"), "1"));
                    rbtPDFObligatorio.Items.Add(new ListItem(((Idioma)Session["oIdioma"]).Texto("No"), "2"));
                    rbtPDFObligatorio.SelectedIndex = 2;

                    rbtGuardarArch.Items.Clear();
                    rbtGuardarArch.Items.Add(new ListItem(((Idioma)Session["oIdioma"]).Texto("Si"), "1"));
                    rbtGuardarArch.Items.Add(new ListItem(((Idioma)Session["oIdioma"]).Texto("No"), "2"));
                    rbtGuardarArch.SelectedIndex = 2;

                    rbtValidaSAT.Items.Clear();
                    rbtValidaSAT.Items.Add(new ListItem(((Idioma)Session["oIdioma"]).Texto("Si"), "1"));
                    rbtValidaSAT.Items.Add(new ListItem(((Idioma)Session["oIdioma"]).Texto("No"), "2"));
                    rbtValidaSAT.SelectedIndex = 1;

                    rbtConexERP.Items.Clear();
                    rbtConexERP.Items.Add(new ListItem(((Idioma)Session["oIdioma"]).Texto("EnLinea"), "1"));
                    rbtConexERP.Items.Add(new ListItem(((Idioma)Session["oIdioma"]).Texto("Desconectado"), "2"));
                    rbtConexERP.SelectedIndex = 1;

                    NegocioPF.Configuracion oConfig = new NegocioPF.Configuracion();
                    oConfig.Cargar();
                    rbtPDFObligatorio.SelectedValue = (oConfig.PDFObligatorio ? "1" : "2");
                    rbtGuardarArch.SelectedValue    = (oConfig.GuardarArchBD ? "1" : "2");
                    txtMesesAtras.Text         = oConfig.MesesAtras.ToString();
                    txtMesesAdelante.Text      = oConfig.MesesAdelante.ToString();
                    txtLongOrden.Text          = oConfig.LongitudOrden.ToString();
                    cboPerfiles.SelectedValue  = oConfig.PerfilProveedor.ToString();
                    cboIdioma.SelectedValue    = oConfig.Idioma;
                    txtMensaje.Text            = oConfig.Mensaje;
                    txtMailContacto.Text       = oConfig.MailContacto;
                    rbtValidaSAT.SelectedValue = (oConfig.ValidacionSAT ? "1" : "2");
                    rbtConexERP.SelectedValue  = (oConfig.EnLineaERP ? "1" : "2");

                    Perfil   oPerfil  = new Perfil();
                    Permisos permisos = oPerfil.CargarPermisos(((Usuario)Session["oUsuario"]).Id, "Configuracion.aspx");
                    btnGuardar.Visible = (permisos.Alta || permisos.Edicion);
                }
                catch (Exception ex)
                {
                    MessageBox(sender, e, ((Idioma)Session["oIdioma"]).Texto(ex.Message));
                }
            }
            AgregaScriptCliente();
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            string usuario = "";

            if (Request.Cookies["UsuarioPF"] != null)
            {
                if (Request.Cookies["UsuarioPF"].Value != null)
                {
                    usuario = Request.Cookies["UsuarioPF"].Value;
                }
            }

            //System.Security.Principal.IPrincipal User = HttpContext.Current.User;

            Funciones oMenu = new Funciones();

            oMenu.CargarMenu(usuario); //User.Identity.Name.Substring(User.Identity.Name.IndexOf("\\") + 1));

            NegocioPF.Usuario oUsuario = new NegocioPF.Usuario();
            try
            {
                oUsuario = (Usuario)Session["oUsuario"];
            }
            catch { /*Maneja el error*/ }
            if (oUsuario == null || oUsuario.Id == "")
            {
                oUsuario = new Usuario(usuario); //User.Identity.Name.Substring(User.Identity.Name.IndexOf("\\") + 1));
                oUsuario.Cargar();
                Session["oUsuario"] = oUsuario;
            }

            Idioma oIdioma = new Idioma("");

            try
            {
                oIdioma = (Idioma)Session["oIdioma"];
            }
            catch { /*Maneja el error*/ }
            if (oIdioma == null || oIdioma.Textos.Name == "")
            {
                oIdioma            = new Idioma(oUsuario.Idioma);
                Session["oIdioma"] = oIdioma;
            }

            //Establece la imagen de logo del portal
            imgLogo.Attributes["src"] = "~/images/" + oUsuario.Idioma + "/" + "LogoPF.png";

            //Carga al proveedor
            NegocioPF.Proveedor oProveedor = new NegocioPF.Proveedor(((Usuario)Session["oUsuario"]).Id);
            oProveedor.Cargar();

            lista.Controls.Clear();
            foreach (DataRow r in oMenu.Datos.Tables[0].Rows)
            {
                if (Convert.ToInt32(r["id_parent"]) == 0)
                {
                    HtmlGenericControl li = new HtmlGenericControl("li");
                    li.Attributes.Add("class", "has-sub");
                    lista.Controls.Add(li);

                    HtmlGenericControl anchor = new HtmlGenericControl("a");
                    anchor.Attributes.Add("href", "#");
                    //anchor.InnerText = oIdioma.Texto(r["Descripcion"].ToString());
                    anchor.InnerHtml = "<spam>" + oIdioma.Texto(r["Descripcion"].ToString()) + "</spam>";

                    li.Controls.Add(anchor);

                    AddChildItems(oMenu.Datos.Tables[0], li, Convert.ToInt32(r["id_funcion"]), ref oIdioma);
                }
            }

            HtmlGenericControl li2;
            HtmlGenericControl anchor1;

            //Si es un proveedor, agrega la opción del Contacto
            if (oProveedor.Nombre != "" && oProveedor.Nombre != null)
            {
                li2 = new HtmlGenericControl("li");
                li2.Attributes.Add("class", "dropdown");
                lista.Controls.Add(li2);

                anchor1 = new HtmlGenericControl("a");
                anchor1.Attributes.Add("href", "#");
                //anchor1.Attributes.Add("href", "Contacto.aspx");
                anchor1.Attributes.Add("onclick", "OpenPopupCenter('Contacto1.aspx','Contacto',390,300,0);");
                anchor1.InnerHtml = "<spam>" + oIdioma.Texto("Contactanos") + "</spam>";
                li2.Controls.Add(anchor1);
            }

            //Agrega la opción del Manual, dependiendo de si es usuario o proveedor
            li2 = new HtmlGenericControl("li");
            li2.Attributes.Add("class", "dropdown2");
            lista.Controls.Add(li2);

            anchor1 = new HtmlGenericControl("a");
            anchor1.Attributes.Add("href", "#");

            if (oProveedor.Nombre != "" && oProveedor.Nombre != null)
            {
                Session["archivo"] = "Manuales/ManualProv.pdf";
            }
            else
            {
                Session["archivo"] = "Manuales/ManualUsuario.pdf";
            }

            anchor1.Attributes.Add("onclick", "OpenPopupCenter('VisorPDF.aspx','Manual',670,700,0);");
            anchor1.InnerHtml = "<spam>" + oIdioma.Texto("ManualUsuario") + "</spam>";
            li2.Controls.Add(anchor1);

            //anchor.Attributes.Add("href", (Convert.ToInt32(r["hijos"]) == 0 ? r["url"].ToString() : "#"));

            NegocioPF.Configuracion oConfig = new NegocioPF.Configuracion();
            oConfig.Cargar();
            marMensaje.InnerText = oConfig.Mensaje;
        }
        private void AgregaScriptCliente()
        {
            try
            {
                NegocioPF.Configuracion oConfig = new NegocioPF.Configuracion();
                oConfig.Cargar();

                string codigo;
                codigo  = "function ValidaNombreArchivo() { ";
                codigo += "obj = document.getElementById('" + cboSociedades.ClientID + "').value; ";
                codigo += "if (obj == null || obj == \"0\") { ";
                codigo += "  alert(\"" + ((Idioma)Session["oIdioma"]).Texto("MsgSelSociedad") + "\");";
                codigo += "  return false; ";
                codigo += "} ";
                codigo += "obj = document.getElementById('" + File1.ClientID + "').value; ";
                codigo += "if (obj == null || obj == \"\") { ";
                if (oConfig.PDFObligatorio)
                {
                    codigo += "  alert(\"" + ((Idioma)Session["oIdioma"]).Texto("MsgSeleccioneArchivo") + "\");";
                    codigo += "  return false; ";
                }
                codigo += "} else { ";
                codigo += "  if (obj.substring(obj.length - 3).toUpperCase() != \"PDF\") { ";
                codigo += "     alert(\"" + ((Idioma)Session["oIdioma"]).Texto("MsgFormatoPDFIncorrecto") + "\"); ";
                codigo += "     return false; ";
                codigo += "   } ";
                codigo += "} ";
                codigo += "obj2 = document.getElementById('" + File2.ClientID + "').value; ";
                codigo += "if (obj2 == null || obj2 == \"\") { ";
                codigo += "  alert(\"" + ((Idioma)Session["oIdioma"]).Texto("MsgSeleccioneArchivo") + "\");";
                codigo += "  return false; ";
                codigo += "} ";
                codigo += "if (obj2.substring(obj2.length - 3).toUpperCase() != \"XML\") { ";
                codigo += "  alert(\"" + ((Idioma)Session["oIdioma"]).Texto("MsgFormatoXMLIncorrecto") + "\"); ";
                codigo += "  return false; ";
                codigo += "} ";
                codigo += "if (obj != null && obj != \"\" && obj2 != null && obj2 != \"\") ";
                codigo += "{ ";
                codigo += "   var arch1 = obj.substring(obj.lastIndexOf(\"\\\\\")+1, obj.lastIndexOf(\".\")-1);";
                codigo += "   var arch2 = obj2.substring(obj2.lastIndexOf(\"\\\\\")+1, obj2.lastIndexOf(\".\")-1);";
                codigo += "  if (arch1 != arch2) {";
                codigo += "    alert(\"" + ((Idioma)Session["oIdioma"]).Texto("MsgArchNomDiferente") + "\"); ";
                codigo += "    return false; ";
                codigo += "  } ";
                codigo += "} ";
                codigo += "return true; ";
                codigo += "} ";

                Page.ClientScript.RegisterClientScriptBlock(Page.GetType(), "ValidaNombreArchivo", codigo, true);

                codigo  = "function ValidaMoneda() { ";
                codigo += "obj = document.getElementById('" + cboMoneda.ClientID + "').value; ";
                codigo += "if (obj == null || obj == \"0\") { ";
                codigo += "  alert(\"" + ((Idioma)Session["oIdioma"]).Texto("MsgSelMoneda") + "\");";
                codigo += "  return false; ";
                codigo += "} ";
                codigo += "return true; ";
                codigo += "} ";

                Page.ClientScript.RegisterClientScriptBlock(Page.GetType(), "ValidaMoneda", codigo, true);

                //codigo = "function confirmation() { ";
                //codigo += "var answer = confirm('" + "Deseas agregar otra factura con la misma orden de compra?" + "'); ";
                //codigo += "if (!answer) { ";
                //codigo += "  var1 = document.getElementById('" + txtOrden.ClientID + "'); ";
                //codigo += "  if (var1 != null) { ";
                //codigo += "     document.getElementById('" + txtOrden.ClientID + "').value = ''; ";
                //codigo += "  } ";
                //codigo += "} ";
                //codigo += "return; ";
                //codigo += "} ";

                //Page.ClientScript.RegisterClientScriptBlock(Page.GetType(), "Confirmacion", codigo, true);
            }
            catch (Exception ex)
            {
                MessageBox(null, null, ex.Message);
            }
        }
Exemple #6
0
        protected void btnGuardar_Click(object sender, EventArgs e)
        {
            NegocioPF.Usuario oUsuario;

            try
            {
                ValidaVariables();

                //Valida si existe otro usuario con el mismo User
                oUsuario    = new NegocioPF.Usuario(txtUsuario.Text);
                oUsuario.Id = txtUsuario.Text;

                oUsuario.Cargar();

                if (oUsuario.Nombre != "" && oUsuario.Nombre != null && Session["accion"].ToString() == "Nuevo")
                {
                    throw new Exception("MsgUsuarioExistente");
                }

                oUsuario.Nombre    = txtNombre.Text;
                oUsuario.Perfil    = Convert.ToInt32(cboPerfiles.SelectedValue);
                oUsuario.Email     = txtCorreo.Text;
                oUsuario.Proveedor = txtProveedor.Text;
                oUsuario.Idioma    = "";
                oUsuario.Status    = cboStatus.SelectedValue;

                //Verifica si el user es el Id de un proveedor
                NegocioPF.Proveedor oProveedor = new NegocioPF.Proveedor(txtUsuario.Text);
                oProveedor.Cargar();
                if (oProveedor.Nombre != "" && oProveedor.Nombre != null)
                {
                    oUsuario.Email = oProveedor.eMail;
                }

                //Si es un user para un proveedor, valida el perfil asignado
                if (oProveedor.Nombre != "" && oProveedor.Nombre != null)
                {
                    NegocioPF.Configuracion oConfig = new NegocioPF.Configuracion();
                    oConfig.Cargar();
                    if (oConfig.PerfilProveedor != Convert.ToInt32(cboPerfiles.SelectedValue))
                    {
                        throw new Exception("MsgPerfProvIncorrecto");
                    }
                }

                //Valida si existe el proveedor
                if (txtProveedor.Text != "")
                {
                    oProveedor = new NegocioPF.Proveedor(txtProveedor.Text);
                    oProveedor.Cargar();
                    if (oProveedor.Nombre == "" || oProveedor.Nombre == null)
                    {
                        throw new Exception("MsgProvInexistente");
                    }
                }

                //Si es un usuario nuevo, genera el password
                if (Session["accion"].ToString() == "Nuevo")
                {
                    oUsuario.Password = NegocioPF.Usuarios.GeneratePassword();
                }

                //oUsuario = new NegocioPF.Usuario(txtUsuario.Text,
                //                                    txtNombre.Text,
                //                                    Convert.ToInt32(cboPerfiles.SelectedValue),
                //                                    correo,
                //                                    password,
                //                                    txtProveedor.Text,
                //                                    "",
                //                                    cboStatus.SelectedValue);

                oUsuario.Guardar(((Usuario)Session["oUsuario"]).Id);

                NegocioPF.Usuarios oUsuarios = new NegocioPF.Usuarios();
                oUsuarios.Cargar(txtFilNumero.Text, txtFilNombre.Text, cboFilPerfil.SelectedValue, cboFilStatus.SelectedValue);
                grdUsuarios.DataSource = oUsuarios.Datos;
                grdUsuarios.DataBind();

                divDetalle.Visible = false;
                divFiltros.Visible = true;

                if (Session["accion"].ToString() == "Nuevo" && oUsuario.Email != "")
                {
                    EnviaCorreoUsuario(txtUsuario.Text);
                    MessageBox(sender, e, ((Idioma)Session["oIdioma"]).Texto("MsgCtaCreada"));
                }
                else
                {
                    MessageBox(sender, e, ((Idioma)Session["oIdioma"]).Texto("MsgUsuarioGuardado"));
                }
            }
            catch (Exception ex)
            {
                if (ex.Message.Length > 3)
                {
                    if (ex.Message.Substring(0, 3) == "Msg")
                    {
                        MessageBox(sender, e, ((Idioma)Session["oIdioma"]).Texto(ex.Message));
                    }
                    else
                    {
                        MessageBox(sender, e, ex.Message);
                    }
                }
            }
        }
        protected void btnAceptarImportar_Click(object sender, EventArgs e)
        {
            string tmp;

            try
            {
                //Copia los archivos en la carpeta destino
                //string dirDestino = @System.Configuration.ConfigurationSettings.AppSettings["PathArchivos"].ToString();
                string dirDestino = Server.MapPath("") + "\\Facturas\\";
                string dirDestPDF = dirDestino;
                string dirDestXML = dirDestino;

                if ((File1.PostedFile != null) && (File1.PostedFile.ContentLength > 0))
                {
                    dirDestPDF += System.IO.Path.GetFileName(File1.PostedFile.FileName);
                    try
                    {
                        File1.PostedFile.SaveAs(dirDestPDF);
                    }
                    catch (Exception ex)
                    {
                        MessageBox(sender, e, ((Idioma)Session["oIdioma"]).Texto("MsgErrorCopiarArchivo"));
                    }
                }

                if ((File2.PostedFile != null) && (File2.PostedFile.ContentLength > 0))
                {
                    dirDestXML += System.IO.Path.GetFileName(File2.PostedFile.FileName);
                    try
                    {
                        File2.PostedFile.SaveAs(dirDestXML);
                    }
                    catch (Exception ex)
                    {
                        MessageBox(sender, e, ((Idioma)Session["oIdioma"]).Texto("MsgErrorCopiarArchivo"));
                    }
                }

                if ((File3.PostedFile != null) && (File3.PostedFile.ContentLength > 0))
                {
                    dirDestino += System.IO.Path.GetFileName(File3.PostedFile.FileName);
                    try
                    {
                        File3.PostedFile.SaveAs(dirDestino);
                    }
                    catch (Exception ex)
                    {
                        MessageBox(sender, e, ((Idioma)Session["oIdioma"]).Texto("MsgErrorCopiarArchivo"));
                    }
                }
                if ((File4.PostedFile != null) && (File4.PostedFile.ContentLength > 0))
                {
                    dirDestino += System.IO.Path.GetFileName(File4.PostedFile.FileName);
                    try
                    {
                        File4.PostedFile.SaveAs(dirDestino);
                    }
                    catch (Exception ex)
                    {
                        MessageBox(sender, e, ((Idioma)Session["oIdioma"]).Texto("MsgErrorCopiarArchivo"));
                    }
                }

                if ((File5.PostedFile != null) && (File5.PostedFile.ContentLength > 0))
                {
                    dirDestino += System.IO.Path.GetFileName(File5.PostedFile.FileName);
                    try
                    {
                        File5.PostedFile.SaveAs(dirDestino);
                    }
                    catch (Exception ex)
                    {
                        MessageBox(sender, e, ((Idioma)Session["oIdioma"]).Texto("MsgErrorCopiarArchivo"));
                    }
                }

                NegocioPF.Factura oFactura = new NegocioPF.Factura();

                XmlReader xmlReader = XmlReader.Create(dirDestXML);

                try
                {
                    XmlDocument doc = new XmlDocument();
                    doc.Load(xmlReader);
                    //doc.Load(dirDestino);

                    oFactura.Sociedad = cboSociedades.SelectedValue;

                    string version = Rutinas.ObtenerValorAtributo(ref doc, "Version");

                    tmp = Rutinas.ObtenerValorAtributo(ref doc, "folio");
                    oFactura.NumFactura = (tmp != "" ? tmp : "");

                    tmp            = Rutinas.ObtenerValorAtributo(ref doc, "serie");
                    oFactura.Serie = tmp;

                    tmp            = Rutinas.ObtenerValorAtributo(ref doc, "fecha");
                    oFactura.Fecha = (tmp != "" ? new DateTime(Convert.ToInt32(tmp.Substring(0, 4)), Convert.ToInt32(tmp.Substring(5, 2)), Convert.ToInt32(tmp.Substring(8, 2))) : new DateTime(1900, 1, 1));

                    tmp = Rutinas.ObtenerValorAtributo(ref doc, "total");
                    if (tmp != "")
                    {
                        oFactura.Importe = Convert.ToDouble(tmp);
                    }

                    tmp             = Rutinas.ObtenerValorAtributo(ref doc, "moneda");
                    oFactura.Moneda = tmp;

                    NegocioPF.UnidadMedida oUnidadMedida = new UnidadMedida();

                    foreach (XmlNode node in doc.DocumentElement.ChildNodes)
                    {
                        if (node.Name == "cfdi:Emisor")
                        {
                            oFactura.Emisor    = Rutinas.ObtenerValorAtributoNodo(node, "rfc");
                            oFactura.NomEmisor = Rutinas.ObtenerValorAtributoNodo(node, "nombre");
                        }
                        if (node.Name == "cfdi:Receptor")
                        {
                            oFactura.Receptor    = Rutinas.ObtenerValorAtributoNodo(node, "rfc");
                            oFactura.NomReceptor = Rutinas.ObtenerValorAtributoNodo(node, "nombre");
                        }
                        if (node.Name == "cfdi:Conceptos")
                        {
                            foreach (XmlNode child in node.ChildNodes)
                            {
                                if (child.Name == "cfdi:Concepto")
                                {
                                    DataRow r = oFactura.Materiales.NewRow();
                                    r["Posicion"]    = 0;
                                    r["Descripcion"] = Rutinas.ObtenerValorAtributoNodo(child, "descripcion"); //child.Attributes["descripcion"].Value;
                                    tmp = Rutinas.ObtenerValorAtributoNodo(child, "cantidad");
                                    if (tmp != "")
                                    {
                                        r["Cantidad"] = Convert.ToDouble(tmp); //Convert.ToDouble(child.Attributes["cantidad"].Value);
                                    }
                                    tmp = Rutinas.ObtenerValorAtributoNodo(child, "valorUnitario");
                                    if (tmp != "")
                                    {
                                        r["ValorUnitario"] = Convert.ToDouble(tmp); //child.Attributes["valorUnitario"].Value
                                    }
                                    tmp = Rutinas.ObtenerValorAtributoNodo(child, "importe");
                                    if (tmp != "")
                                    {
                                        r["Importe"] = Convert.ToDouble(tmp);
                                    }

                                    tmp = Rutinas.ObtenerValorAtributoNodo(child, "unidad");
                                    if (tmp != "")
                                    {
                                        oUnidadMedida.Buscar(tmp);
                                        r["Unidad"] = oUnidadMedida.UnidadSAP;
                                    }
                                    r["Anio_ent"] = "0";
                                    r["Entrega"]  = "";
                                    r["Pos_ent"]  = 0;
                                    oFactura.Materiales.Rows.Add(r);
                                }
                            }
                        }
                        if (node.Name == "cfdi:Impuestos")
                        {
                            //oFactura.Impuestos = Convert.ToDouble(node.Attributes["totalImpuestosTrasladados"].Value);

                            foreach (XmlNode child in node.ChildNodes)
                            {
                                if (child.Name == "cfdi:Traslados")
                                {
                                    foreach (XmlNode child1 in child.ChildNodes)
                                    {
                                        if (child1.Name == "cfdi:Traslado")
                                        {
                                            tmp = Rutinas.ObtenerValorAtributoNodo(child1, "tasa");
                                            if (tmp != "")
                                            {
                                                oFactura.Tasa = Convert.ToInt32(Convert.ToDouble(tmp));
                                            }
                                            else
                                            {
                                                tmp = Rutinas.ObtenerValorAtributoNodo(child1, "tasaOCuota");
                                                if (tmp != "")
                                                {
                                                    oFactura.Tasa = Convert.ToInt32(Convert.ToDouble(tmp) * 100);
                                                }
                                            }
                                            if (oFactura.Tasa < 1)
                                            {
                                                oFactura.Tasa = oFactura.Tasa * 100;
                                            }
                                        }
                                    }
                                }
                            }
                        }

                        if (node.Name == "cfdi:Complemento")
                        {
                            foreach (XmlNode child in node.ChildNodes)
                            {
                                if (child.Name == "tfd:TimbreFiscalDigital")
                                {
                                    oFactura.UUID = Rutinas.ObtenerValorAtributoNodo(child, "UUID");
                                }
                            }
                        }
                    }

                    xmlReader.Dispose();

                    //Busca la clave SAP de la moneda
                    NegocioPF.Moneda oMoneda = new NegocioPF.Moneda();
                    oMoneda.Buscar(oFactura.Moneda);
                    if (oMoneda.ID != "")
                    {
                        oFactura.Moneda         = oMoneda.MonedaSAP;
                        cboMoneda.SelectedValue = oMoneda.MonedaSAP;
                    }

                    //Busca la clave del indicador de impuesto
                    NegocioPF.Indicador oIndicador = new Indicador();
                    oIndicador.Buscar(oFactura.Tasa);
                    if (oIndicador.ID != "")
                    {
                        oFactura.IndImpuestos = oIndicador.ID;
                    }

                    //Valida que esté cargando una factura el proveedor
                    NegocioPF.Proveedor oProveedor = new Proveedor(((Usuario)Session["oUsuario"]).Id);
                    oProveedor.Cargar();

                    //Si es un proveedor
                    if (oProveedor.RFC != "")
                    {
                        if (oProveedor.RFC != oFactura.Emisor)
                        {
                            if (oProveedor.Intermediario == false)
                            {
                                throw new Exception("MsgErrFacDifProv");
                            }
                        }
                    }

                    //Escribe los datos de la factura en los controles
                    txtFactura.Text         = oFactura.NumFactura.ToString();
                    txtFecha.Text           = oFactura.Fecha.ToString("yyyy-MM-dd");
                    txtImporte.Text         = oFactura.Importe.ToString("###,##0.#0");
                    txtEmisor.Text          = oFactura.Emisor + " " + oFactura.NomEmisor;
                    txtReceptor.Text        = oFactura.Receptor + " " + oFactura.NomReceptor;
                    txtUUID.Text            = oFactura.UUID;
                    cboMoneda.SelectedValue = "0";
                    try
                    {
                        cboMoneda.SelectedValue = oFactura.Moneda;
                    }
                    catch { /*Maneja error*/ }

                    //Inhabilita los controles
                    txtFactura.Enabled  = (txtFactura.Text.Trim().Length == 0);
                    txtFecha.Enabled    = (txtFecha.Text.Trim().Length == 0);
                    txtImporte.Enabled  = (txtImporte.Text.Trim().Length == 0);
                    cboMoneda.Enabled   = (cboMoneda.SelectedValue == "0");
                    txtEmisor.Enabled   = (txtEmisor.Text.Trim().Length == 0);
                    txtReceptor.Enabled = (txtReceptor.Text.Trim().Length == 0);
                    txtUUID.Enabled     = false;

                    Session["oFactura"] = oFactura;
                }
                catch (Exception ex)
                {
                    xmlReader.Dispose();
                    if (ex.Message.Length > 3)
                    {
                        if (ex.Message.Substring(0, 3) == "Msg")
                        {
                            throw new Exception(ex.Message);
                        }
                        else
                        {
                            throw new Exception("MsgErrLeerXML");
                        }
                    }
                }

                //Verifica si existe ya en el grid
                foreach (GridViewRow f in grdFacturas.Rows)
                {
                    if (f.Cells[1].Text == oFactura.UUID)
                    {
                        MessageBox(sender, e, ((Idioma)Session["oIdioma"]).Texto("MsgFactDuplicada"));
                        return;
                    }
                    //Valida si es el mismo proveedor
                    if (f.Cells[3].Text != oFactura.Emisor)
                    {
                        MessageBox(sender, e, ((Idioma)Session["oIdioma"]).Texto("MsgFactDifProveedor"));
                        return;
                    }
                }

                //Valida si debe hacer la validación ante el SAT
                NegocioPF.Configuracion oConfig = new NegocioPF.Configuracion();
                oConfig.Cargar();

                if (oConfig.ValidacionSAT)
                {
                    //Manda a validar el archivo CFD
                    //wsSAT.WsValidacionCFDsExtSoapClient obj = new WsValidacionCFDsExtSoapClient();
                    //resultado = obj.ValidarXmlCFD(doc.InnerXml);
                    //resultado = obj.ValidarXmlCFD(xml);

                    //Manda a verificar si exite el folio en el SAT
                    wsValidaCFDIs.Acuse objAcuse;
                    wsValidaCFDIs.ConsultaCFDIServiceClient obj = new ConsultaCFDIServiceClient();

                    //Arma la cadena
                    string cadena = "?re=" + oFactura.Emisor + "&rr=" + oFactura.Receptor + "&tt=" + oFactura.Importe.ToString() + "&id=" + oFactura.UUID;
                    //objAcuse = obj.Consulta("?re=CBJ030505UR7&rr=DEM8801152E9&tt=244.00&id=5B8281DD-4CE8-4CCB-8077-445B9D2AD750");
                    objAcuse           = obj.Consulta(cadena);
                    txtValidacion.Text = objAcuse.CodigoEstatus;

                    obj.Close();

                    btnAgregarFactura.Visible = (objAcuse.CodigoEstatus.Substring(0, 1) == "S");
                }
                else
                {
                    btnAgregarFactura.Visible = true;
                }


                //Muestra la factura en el visor
                if (File1.PostedFile.FileName.Length > 0)
                {
                    oViewer.Attributes.Add("src", "Facturas/" + System.IO.Path.GetFileName(File1.PostedFile.FileName));
                    oViewer.Visible  = true;
                    divVisor.Visible = true;
                }

                oFactura.Archivos.Add(new NegocioPF.Archivo(System.IO.Path.GetFileName(File1.PostedFile.FileName), 1));
                oFactura.Archivos.Add(new NegocioPF.Archivo(System.IO.Path.GetFileName(File2.PostedFile.FileName), 2));
                if (File3.PostedFile.FileName != "")
                {
                    oFactura.Archivos.Add(new NegocioPF.Archivo(System.IO.Path.GetFileName(File3.PostedFile.FileName), 3));
                }
                if (File4.PostedFile.FileName != "")
                {
                    oFactura.Archivos.Add(new NegocioPF.Archivo(System.IO.Path.GetFileName(File4.PostedFile.FileName), 4));
                }
                if (File5.PostedFile.FileName != "")
                {
                    oFactura.Archivos.Add(new NegocioPF.Archivo(System.IO.Path.GetFileName(File5.PostedFile.FileName), 5));
                }

                //oFactura.PDF = System.IO.Path.GetFileName(File1.PostedFile.FileName);
                //oFactura.XML = System.IO.Path.GetFileName(File2.PostedFile.FileName);

                Session["pdf"] = System.IO.Path.GetFileName(File1.PostedFile.FileName);
                Session["xml"] = System.IO.Path.GetFileName(File2.PostedFile.FileName);

                divDetalle.Visible  = true;
                divImportar.Visible = false;
            }
            catch (Exception ex)
            {
                MessageBox(sender, e, ((Idioma)Session["oIdioma"]).Texto(ex.Message));
            }
        }
        protected void btnAceptarAgregar_Click(object sender, EventArgs e)
        {
            try
            {
                NegocioPF.Factura oFactura = (Factura)Session["oFactura"];
                if (oFactura.Existe())
                {
                    MessageBox(sender, e, ((Idioma)Session["oIdioma"]).Texto("MsgFactYaRegistrada"));
                    return;
                }

                oFactura.Moneda = cboMoneda.SelectedValue;

                //Valida si existe el Emisor en el catálogo de proveedores
                NegocioPF.Proveedor oProveedor = new Proveedor();
                oProveedor.Cargar(txtEmisor.Text.Substring(0, txtEmisor.Text.IndexOf(" ")));
                if (oProveedor.Nombre == "" || oProveedor.Nombre == null)
                {
                    throw new Exception("MsgEmisorInexistente");
                }

                //Valida que el receptor corresponda a la sociedad seleccionada
                NegocioPF.Sociedad oSociedad = new NegocioPF.Sociedad(cboSociedades.SelectedValue);
                oSociedad.Cargar();

                if (oSociedad.RFC != txtReceptor.Text.Substring(0, txtReceptor.Text.IndexOf(" ")))
                {
                    throw new Exception("MsgErrFactNoCorrSociedad");
                }

                //Valida que la sociedad esté activa para el proveedor
                bool existe = false;
                foreach (string sociedad in oProveedor.Sociedades)
                {
                    if (sociedad == cboSociedades.SelectedValue)
                    {
                        existe = true;
                    }
                }

                if (!existe)
                {
                    throw new Exception("MsgSocNoActProv");
                }

                //Valida la fecha de la factura
                NegocioPF.Configuracion oConfig = new NegocioPF.Configuracion();
                oConfig.Cargar();

                DateTime dFechaMinima = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
                dFechaMinima = dFechaMinima.AddMonths(oConfig.MesesAtras * -1);

                DateTime dFechaMaxima = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
                dFechaMaxima = dFechaMaxima.AddMonths(oConfig.MesesAdelante);

                DateTime dFecha = new DateTime(Convert.ToInt32(txtFecha.Text.Substring(0, 4)),
                                               Convert.ToInt32(txtFecha.Text.Substring(5, 2)),
                                               Convert.ToInt32(txtFecha.Text.Substring(8, 2)));

                if (dFecha < dFechaMinima)
                {
                    throw new Exception("MsgErrFactMuyAtrasada");
                }

                if (dFecha > dFechaMaxima)
                {
                    throw new Exception("MsgErrFactFecMuyAdelantada");
                }

                if (oProveedor.RFC != oFactura.Emisor)
                {
                    throw new Exception("MsgErrPedDifProv");
                }

                //Establece el tipo de factura
                oFactura.TipoFactura = "NFI";

                NegocioPF.Facturas oFacturas = (NegocioPF.Facturas)Session["oFacturas"];
                DataRow            r         = oFacturas.Datos.Tables[0].NewRow();
                r["id_sociedad"] = cboSociedades.SelectedValue;
                r["folio"]       = 0;
                r["UUID"]        = txtUUID.Text;
                r["folioFact"]   = txtFactura.Text;
                r["emisor"]      = txtEmisor.Text.Substring(0, txtEmisor.Text.IndexOf(" "));
                r["receptor"]    = txtReceptor.Text.Substring(0, txtReceptor.Text.IndexOf(" "));
                r["ordenCompra"] = "";
                r["fecha"]       = txtFecha.Text;
                r["importe"]     = txtImporte.Text;
                r["id_moneda"]   = cboMoneda.SelectedValue;
                r["pdf"]         = Session["pdf"].ToString();
                r["xml"]         = Session["xml"].ToString();
                oFacturas.Datos.Tables[0].Rows.Add(r);
                oFacturas.Relacion.Add(oFactura);
                Session["oFacturas"] = oFacturas;

                grdFacturas.DataSource = oFacturas.Datos;
                grdFacturas.DataBind();

                oViewer.Visible     = false;
                divDetalle.Visible  = false;
                divFacturas.Visible = true;

                btnAceptar.Visible  = (oFacturas.Datos.Tables[0].Rows.Count > 0);
                btnCancelar.Visible = (oFacturas.Datos.Tables[0].Rows.Count > 0);

                divImportar.Visible = true;

                //ScriptManager.RegisterStartupScript(this, typeof(Page), "confirm", "<script>confirmation();</script>", false);
            }
            catch (Exception ex)
            {
                if (ex.Message.Substring(0, 3) == "Msg")
                {
                    MessageBox(sender, e, ((Idioma)Session["oIdioma"]).Texto(ex.Message));
                }
                else
                {
                    MessageBox(sender, e, ex.Message);
                }
            }
        }
        private void AgregaScriptCliente()
        {
            try
            {
                NegocioPF.Configuracion oConfig = new NegocioPF.Configuracion();
                oConfig.Cargar();

                string codigo;
                codigo  = "function ValidaNombreArchivo() { ";
                codigo += "obj = document.getElementById('" + cboSociedades.ClientID + "').value; ";
                codigo += "if (obj == null || obj == \"0\") { ";
                codigo += "  alert(\"" + ((Idioma)Session["oIdioma"]).Texto("MsgSelSociedad") + "\");";
                codigo += "  return false; ";
                codigo += "} ";
                codigo += "obj = document.getElementById('" + File1.ClientID + "').value; ";
                codigo += "if (obj == null || obj == \"\") { ";
                if (oConfig.PDFObligatorio)
                {
                    codigo += "  alert(\"" + ((Idioma)Session["oIdioma"]).Texto("MsgSeleccioneArchivo") + "\");";
                    codigo += "  return false; ";
                }
                codigo += "} else { ";
                codigo += "  if (obj.substring(obj.length - 3).toUpperCase() != \"PDF\") { ";
                codigo += "     alert(\"" + ((Idioma)Session["oIdioma"]).Texto("MsgFormatoPDFIncorrecto") + "\"); ";
                codigo += "     return false; ";
                codigo += "   } ";
                codigo += "} ";
                codigo += "return true; ";
                codigo += "} ";

                Page.ClientScript.RegisterClientScriptBlock(Page.GetType(), "ValidaNombreArchivo", codigo, true);

                codigo  = "function ValidaDatosItem() { ";
                codigo += "objDesc = document.getElementById('" + txtMaterial.ClientID + "').value; ";
                codigo += "if (objDesc == null || objDesc == \"\") { ";
                codigo += "  alert(\"" + ((Idioma)Session["oIdioma"]).Texto("MsgCapDescMat") + "\");";
                codigo += "  return false; ";
                codigo += "} ";
                codigo += "obj = document.getElementById('" + txtCantidad.ClientID + "').value; ";
                codigo += "if (obj == null || obj == \"\") { ";
                codigo += "  alert(\"" + ((Idioma)Session["oIdioma"]).Texto("MsgCapCantidad") + "\");";
                codigo += "  return false; ";
                codigo += "} ";
                codigo += "obj = document.getElementById('" + cboUnidad.ClientID + "').value; ";
                codigo += "if (obj == null || obj == \"0\") { ";
                codigo += "  alert(\"" + ((Idioma)Session["oIdioma"]).Texto("MsgCapUnidad") + "\");";
                codigo += "  return false; ";
                codigo += "} ";
                codigo += "obj = document.getElementById('" + txtImporteMat.ClientID + "').value; ";
                codigo += "if (obj == null || obj == \"\") { ";
                codigo += "  alert(\"" + ((Idioma)Session["oIdioma"]).Texto("MsgCapImpMaterial") + "\");";
                codigo += "  return false; ";
                codigo += "} ";
                //Valida que el item no esté ya registrado
                codigo += "var grid = document.getElementById('" + grdDetalle.ClientID + "'); ";
                codigo += "if (grid != null) { ";
                codigo += "  if (grid.rows.length > 0) { ";
                codigo += "    for (i = 1; i < grid.rows.length; i++) { ";
                codigo += "      var cell = grid.rows[i].cells[0].innerHTML; ";
                //codigo += "      alert(cell); ";
                codigo += "      if (cell.toUpperCase().trim() == objDesc.toUpperCase().trim()) { ";
                codigo += "        alert ('" + ((Idioma)Session["oIdioma"]).Texto("MsgMatServExistente") + "'); ";
                codigo += "        return false; ";
                codigo += "      } ";
                codigo += "    } ";
                codigo += "  } ";
                codigo += "} ";
                codigo += "return true; ";
                codigo += "} ";

                Page.ClientScript.RegisterClientScriptBlock(Page.GetType(), "ValidaDatosItem", codigo, true);

                codigo  = "function ValidaDatosFact() { ";
                codigo += "obj = document.getElementById('" + txtFactura.ClientID + "').value; ";
                codigo += "if (obj == null || obj == \"\") { ";
                codigo += "  alert(\"" + ((Idioma)Session["oIdioma"]).Texto("MsgCapFactura") + "\");";
                codigo += "  return false; ";
                codigo += "} ";
                codigo += "obj = document.getElementById('" + txtFecha.ClientID + "').value; ";
                codigo += "if (obj == null || obj == \"\") { ";
                codigo += "  alert(\"" + ((Idioma)Session["oIdioma"]).Texto("MsgCapFecFact") + "\");";
                codigo += "  return false; ";
                codigo += "} ";
                codigo += "obj = document.getElementById('" + cboMoneda.ClientID + "').value; ";
                codigo += "if (obj == null || obj == \"0\") { ";
                codigo += "  alert(\"" + ((Idioma)Session["oIdioma"]).Texto("MsgSelMoneda") + "\");";
                codigo += "  return false; ";
                codigo += "} ";
                codigo += "objSub = document.getElementById('" + txtImpSinIva.ClientID + "').value; ";
                codigo += "if (objSub == null || objSub == \"\") { ";
                codigo += "  alert(\"" + ((Idioma)Session["oIdioma"]).Texto("MsgCapImpSinIva") + "\");";
                codigo += "  return false; ";
                codigo += "} ";
                codigo += "obj = document.getElementById('" + txtImpuestos.ClientID + "').value; ";
                codigo += "if (obj == null || obj == \"\") { ";
                codigo += "  alert(\"" + ((Idioma)Session["oIdioma"]).Texto("MsgCapImpuestos") + "\");";
                codigo += "  return false; ";
                codigo += "} ";
                codigo += "obj = document.getElementById('" + txtTotal.ClientID + "').value; ";
                codigo += "if (obj == null || obj == \"\") { ";
                codigo += "  alert(\"" + ((Idioma)Session["oIdioma"]).Texto("MsgCapTotal") + "\");";
                codigo += "  return false; ";
                codigo += "} ";
                //Valida el último Item capturado, si no ha sido agregado a la lista
                codigo += "objM = document.getElementById('" + txtMaterial.ClientID + "').value; ";
                codigo += "objC = document.getElementById('" + txtCantidad.ClientID + "').value; ";
                codigo += "objU = document.getElementById('" + cboUnidad.ClientID + "').value; ";
                codigo += "objI = document.getElementById('" + txtImporteMat.ClientID + "').value; ";
                codigo += "if ((objM != null && objM != \"\") || (objC != null && objC != \"\") || (objU != null && objU != \"0\") || (objI != null && objI != \"\")) {";
                codigo += "  if (!ValidaDatosItem()) { ";
                codigo += "  return false; } ";
                codigo += "} ";

                //Valida el total de la factura
                codigo += "var sum = 0; ";
                codigo += "var grid = document.getElementById('" + grdDetalle.ClientID + "'); ";
                codigo += "if (grid != null) { ";
                codigo += "  for (var i = 1; i < grid.rows.length; i++) { ";
                codigo += "    if (!isNaN(grid.rows[i].cells[3].innerText != null)) { ";
                codigo += "      if (grid.rows[i].cells[3].innerText != null) { ";
                codigo += "        sum = (parseFloat(sum) + parseFloat(grid.rows[i].cells[3].innerText)).toString(); ";
                codigo += "      } ";
                codigo += "    } ";
                codigo += "  } ";
                codigo += "} ";
                codigo += "obj = document.getElementById('" + txtImporteMat.ClientID + "').value; ";
                codigo += "if (obj != null && obj != \"\") { ";
                codigo += "   sum = sum + parseFloat(obj); ";
                codigo += "} ";
                codigo += "if (sum == 0) { ";
                codigo += "  alert(\"" + ((Idioma)Session["oIdioma"]).Texto("MsgCapDetalle") + "\");";
                codigo += "  return false; ";
                codigo += "} ";
                codigo += "if (parseFloat(sum) != parseFloat(objSub)) {";
                codigo += "  alert(\"" + ((Idioma)Session["oIdioma"]).Texto("MsgImpNoCoincide") + "\");";
                codigo += "  return false; ";
                codigo += "} ";
                codigo += "return true; ";
                codigo += "} ";


                Page.ClientScript.RegisterClientScriptBlock(Page.GetType(), "ValidaDatosFact", codigo, true);

                codigo  = "function sum() { ";
                codigo += "  var txtFirstNumberValue = document.getElementById('" + txtImpSinIva.ClientID + "').value; ";
                codigo += "  var txtSecondNumberValue = document.getElementById('" + txtImpuestos.ClientID + "').value; ";
                codigo += "  var result = parseFloat(txtFirstNumberValue) + parseFloat(txtSecondNumberValue); ";
                codigo += "  if (!isNaN(result)) { ";
                codigo += "     document.getElementById('" + txtTotal.ClientID + "').value = result; ";
                codigo += "  } ";
                codigo += "} ";

                Page.ClientScript.RegisterClientScriptBlock(Page.GetType(), "Sum", codigo, true);
            }
            catch (Exception ex)
            {
                MessageBox(null, null, ex.Message);
            }
        }
        protected void btnAceptarAgregar_Click(object sender, EventArgs e)
        {
            bool existe = false;

            try
            {
                if (txtMaterial.Text != "")
                {
                    btnAceptarItem_Click(null, null);
                }

                NegocioPF.Factura oFactura = (Factura)Session["oFactura"];

                NegocioPF.Proveedor oProveedor = new Proveedor(((Usuario)Session["oUsuario"]).Id);
                oProveedor.Cargar();

                //Recupera el emisor
                string emisor;
                if (txtEmisor.Text.IndexOf(" ") >= 0)
                {
                    emisor = txtEmisor.Text.Substring(0, txtEmisor.Text.IndexOf(" "));
                }
                else
                {
                    emisor = txtEmisor.Text.Trim();
                }

                //Si es un proveedor, valida si puede subir la factura, propia o de un tercero
                if (oProveedor.RFC != "")
                {
                    if (oProveedor.RFC != emisor)
                    {
                        if (oProveedor.Intermediario == false)
                        {
                            throw new Exception("MsgErrFacDifProv");
                        }
                    }
                }

                //Carga al emisor
                oProveedor.Cargar(emisor);

                //Valida que el proveedor exista
                if (oProveedor.RFC == "")
                {
                    throw new Exception("MsgProvInexistente");
                }
                else
                {
                    txtEmisor.Text = oProveedor.RFC + " " + oProveedor.Nombre;
                }

                //Valida que el Emisor pueda facturar en la sociedad seleccionada
                existe = false;
                foreach (string sociedad in oProveedor.Sociedades)
                {
                    if (sociedad == cboSociedades.SelectedValue)
                    {
                        existe = true;
                    }
                }

                if (!existe)
                {
                    throw new Exception("MsgSocNoActProv");
                }

                //Establece el emisor en la factura
                oFactura.Emisor = emisor;

                //Valida si la factura ya fue registrada
                oFactura.UUID = txtFactura.Text;

                if (oFactura.Existe())
                {
                    MessageBox(sender, e, ((Idioma)Session["oIdioma"]).Texto("MsgFactYaRegistrada"));
                    return;
                }

                //Valida la fecha de la factura
                NegocioPF.Configuracion oConfig = new NegocioPF.Configuracion();
                oConfig.Cargar();

                DateTime dFechaMinima = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
                dFechaMinima = dFechaMinima.AddMonths(oConfig.MesesAtras * -1);

                DateTime dFechaMaxima = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
                dFechaMaxima = dFechaMaxima.AddMonths(oConfig.MesesAdelante);

                DateTime dFecha = NegocioPF.Rutinas.ConvierteTextToFecha(txtFecha.Text);

                if (dFecha < dFechaMinima)
                {
                    throw new Exception("MsgErrFactMuyAtrasada");
                }

                if (dFecha > dFechaMaxima)
                {
                    throw new Exception("MsgErrFactFecMuyAdelantada");
                }

                //Establece los datos de la factura
                oFactura.Sociedad    = cboSociedades.SelectedValue;
                oFactura.NumFactura  = txtFactura.Text;
                oFactura.Fecha       = NegocioPF.Rutinas.ConvierteTextToFecha(txtFecha.Text);
                oFactura.Importe     = Convert.ToDouble(txtImpSinIva.Text);
                oFactura.Impuestos   = Convert.ToDouble(txtImpuestos.Text);
                oFactura.Moneda      = cboMoneda.SelectedValue;
                oFactura.TipoFactura = "EFI";

                //Determina el indicador de impuestos
                if (oFactura.Impuestos > 0)
                {
                    oFactura.Tasa = Convert.ToInt32((Convert.ToDouble(txtImpuestos.Text) / Convert.ToDouble(txtImpSinIva.Text)) * 100);
                    NegocioPF.Indicador oIndicador = new Indicador();
                    oIndicador.Buscar(oFactura.Tasa);
                    if (oIndicador.ID != "")
                    {
                        oFactura.IndImpuestos = oIndicador.ID;
                    }
                    else
                    {
                        throw new Exception("MsgErrImpuestos");
                    }
                }

                //Agrega la factura a la colección de facturas
                NegocioPF.Facturas oFacturas = (NegocioPF.Facturas)Session["oFacturas"];
                DataRow            r         = oFacturas.Datos.Tables[0].NewRow();
                r["id_sociedad"] = cboSociedades.SelectedValue;
                r["folio"]       = 0;
                r["UUID"]        = txtFactura.Text;
                r["folioFact"]   = txtFactura.Text;
                r["emisor"]      = txtEmisor.Text.Substring(0, txtEmisor.Text.IndexOf(" "));
                r["receptor"]    = txtReceptor.Text.Substring(0, txtReceptor.Text.IndexOf(" "));
                r["ordenCompra"] = "";
                r["fecha"]       = NegocioPF.Rutinas.ConvierteTextToFecha(txtFecha.Text);
                r["importe"]     = txtTotal.Text;
                r["id_moneda"]   = cboMoneda.SelectedValue;
                r["pdf"]         = Session["pdf"].ToString();
                oFacturas.Datos.Tables[0].Rows.Add(r);
                oFacturas.Relacion.Add(oFactura);
                Session["oFacturas"] = oFacturas;

                grdFacturas.DataSource = oFacturas.Datos;
                grdFacturas.DataBind();

                oViewer.Visible     = false;
                divDetalle.Visible  = false;
                divFacturas.Visible = true;

                btnAceptar.Visible  = (oFacturas.Datos.Tables[0].Rows.Count > 0);
                btnCancelar.Visible = (oFacturas.Datos.Tables[0].Rows.Count > 0);

                divImportar.Visible = true;

                //ScriptManager.RegisterStartupScript(this, typeof(Page), "confirm", "<script>confirmation();</script>", false);
            }
            catch (Exception ex)
            {
                if (ex.Message.Substring(0, 3) == "Msg")
                {
                    MessageBox(sender, e, ((Idioma)Session["oIdioma"]).Texto(ex.Message));
                }
                else
                {
                    MessageBox(sender, e, ex.Message);
                }
            }
        }
Exemple #11
0
        protected void btnAceptarRegistro_Click(object sender, EventArgs e)
        {
            try
            {
                NegocioPF.Usuario oUsuario = new NegocioPF.Usuario(txtProveedor.Text);
                oUsuario.Cargar();

                NegocioPF.Proveedor oProveedor = new NegocioPF.Proveedor(txtProveedor.Text);
                oProveedor.Cargar();

                NegocioPF.Configuracion oConfig = new NegocioPF.Configuracion();
                oConfig.Cargar();

                if (oUsuario.Nombre != "")
                {
                    throw new Exception("UsuarioProvExistente");
                }
                else
                {
                    if (oProveedor.Nombre == "")
                    {
                        throw new Exception("NumProvInexistente");
                    }
                    else
                    {
                        if (oProveedor.RFC != txtRFCProv.Text)
                        {
                            throw new Exception("RFCIncorrecto");
                        }
                        else
                        {
                            oUsuario           = new Usuario();
                            oUsuario.Id        = txtProveedor.Text;
                            oUsuario.Nombre    = oProveedor.Nombre;
                            oUsuario.Perfil    = oConfig.PerfilProveedor;
                            oUsuario.Proveedor = txtProveedor.Text;
                            oUsuario.Status    = "ACTIVO";
                            oUsuario.Password  = NegocioPF.Usuarios.GeneratePassword();
                            oUsuario.Guardar(txtProveedor.Text);

                            //Enviar el correo a la cuenta del proveedor
                            if (oProveedor.eMail != "" && oProveedor.eMail != null)
                            {
                                EnviaCorreoNuevaCuenta(oUsuario);
                                MessageBox(sender, e, ((Idioma)Session["oIdioma"]).Texto("MsgCtaCreada"));
                            }
                            else
                            {
                                throw new Exception("MsgUsuarioPwdInicial");
                            }
                        }
                    }
                }
                lblTitulo.Text        = ((Idioma)Session["oIdioma"]).Texto("Bienvenido");
                divLogin.Visible      = true;
                divCambioPasw.Visible = false;
                divNuevaCta.Visible   = false;
            }
            catch (Exception ex)
            {
                MessageBox(sender, e, ((Idioma)Session["oIdioma"]).Texto(ex.Message));
            }
        }