示例#1
0
        /// <summary>
        /// Editar
        /// </summary>
        private void Editar()
        {
            oFactura = new MedDAL.DAL.facturas();
            oblFacturas = new MedNeg.Facturas.BlFacturas();
            //oFactura.idFactura = int.Parse(dgvDatos.SelectedDataKey.Value.ToString());
            oFactura = oblFacturas.BuscarFacturasFolio(txbFolio.Text);
            oFactura.Estatus = cmbEstatus.SelectedValue.ToString();

            oblFacturas = new MedNeg.Facturas.BlFacturas();
            if(oblFacturas.EditarRegistro(oFactura))
            {
                //Datos de la bitacora
                string sDatosBitacora = string.Empty;
                sDatosBitacora += "Tipo:" + cmbTipoFactura.SelectedValue.ToString() + " ";
                sDatosBitacora += "Folio:" + txbFolio.Text + " ";
                sDatosBitacora += "Fecha:" + txbFecha.Text + " ";
                sDatosBitacora += "Estatus:" + cmbEstatus.SelectedItem.ToString() + " ";
                sDatosBitacora += "Cliente:" + txbCliente.Text + " ";

                oblFacturas = new MedNeg.Facturas.BlFacturas();
                if (oblFacturas.EliminarFacturaPartida(oFactura.idFactura))
                {
                    bool bRegistroFallido = false;

                    //Recorrer el objeto de sesion lstDetallePartida que contiene los datos de la partida
                    foreach (MedNeg.Facturas.BlDetallePartida facturaDetalle in (List<MedNeg.Facturas.BlDetallePartida>)Session["lstDetallePartida"])
                    {
                        //Saber si es un ensamble el que se esta registrando
                        if (facturaDetalle.bEsEnsamble == true)
                        {
                            AgregarDetalleEnsamble(facturaDetalle, oFactura.idFactura);
                        }
                        else
                        {
                            oblFacturas = new MedNeg.Facturas.BlFacturas();
                            MedDAL.DAL.facturas_partida oFacturaPartida = new MedDAL.DAL.facturas_partida();

                            oFacturaPartida.idFactura = oFactura.idFactura;
                            oFacturaPartida.idProducto = facturaDetalle.iIdProducto;
                            oFacturaPartida.Cantidad = facturaDetalle.dCantidad;
                            oFacturaPartida.IEPS = facturaDetalle.dIeps;
                            oFacturaPartida.Iva = facturaDetalle.dIva;
                            oFacturaPartida.Precio = facturaDetalle.dPrecio;

                            //Registrar el detalle del pedido
                            if (!oblFacturas.NuevoDetallePartida(oFacturaPartida))
                            {
                                bRegistroFallido = true;
                            }
                            else
                            {
                                sDatosBitacora += "Producto:" + facturaDetalle.iIdProducto.ToString() + " ";
                                sDatosBitacora += "Cant:" + facturaDetalle.dCantidad.ToString() + " ";
                                sDatosBitacora += "IEPS:" + facturaDetalle.dIeps.ToString() + " ";
                                sDatosBitacora += "Iva:" + facturaDetalle.dIva.ToString() + " ";
                                sDatosBitacora += "Precio:" + facturaDetalle.dPrecio.ToString() + " ";
                                sDatosBitacora += "Total:" + Convert.ToDecimal((facturaDetalle.dCantidad * facturaDetalle.dPrecio) + facturaDetalle.dIeps + facturaDetalle.dIva) + ", ";
                            }
                        }
                    }
                    
                    /****** GT: Modificar las existencias de los productos nuevos ***************/

                    MedNeg.Usuarios.BlUsuarios oblUsuario = new MedNeg.Usuarios.BlUsuarios();
                    MedDAL.DAL.usuarios oUsuario = new MedDAL.DAL.usuarios();

                    oUsuario = (MedDAL.DAL.usuarios)oblUsuario.Buscar(Session["usuario"].ToString());

                    //oblRemision = new MedNeg.Remisiones.BlRemisiones();
                    oblFacturas = new MedNeg.Facturas.BlFacturas();
                    foreach (MedNeg.Facturas.BlDetallePartida remisionDetalleNuevos in (List<MedNeg.Facturas.BlDetallePartida>)Session["lstremisionespartidaedicion"])
                    {
                        oblFacturas.ModificarExistenciaProducto(oUsuario.idAlmacen, remisionDetalleNuevos.iIdProducto, remisionDetalleNuevos.dCantidad, 1);

                    }

                    /****** GT: Modificar las existencias de los productos nuevos ***************/


                    //Anotar en la bitacora la modificación a la factura
                    oBitacora = new MedDAL.DAL.bitacora();
                    oblBitacora = new MedNeg.Bitacora.BlBitacora();
                    oBitacora.FechaEntradaSrv = DateTime.Now;
                    oBitacora.FechaEntradaCte = DateTime.Now;//Linea Temporal
                    oBitacora.Modulo = "Facturas";
                    oBitacora.Usuario = Session["usuario"].ToString();
                    oBitacora.Nombre = Session["nombre"].ToString();
                    oBitacora.Accion = "Edición de Factura";
                    oBitacora.Descripcion = sDatosBitacora;
                    if (!oblBitacora.NuevoRegistro(oBitacora))
                    {
                        lblDatos.Text = "El evento no pudo ser registrado en la bitácora";
                    }

                    if (oFactura.Estatus == "5")
                    {
                        string sRutaArchivoConfig = Server.MapPath("~/Archivos/Configuracion.xml");
                        string sRutaCertificados = Server.MapPath("~/Archivos/");
                        string[] sUUID = new string[1];
                        string sMensaje = "";
                        bool bEncontrado = false;

                        XmlTextReader oXMLReader = new XmlTextReader(sRutaCertificados + "/FacturasElectronicasTimbradas/FacturaE-" + oFactura.Folio + ".xml");
                        while (oXMLReader.Read())
                        {
                            switch (oXMLReader.NodeType)
                            {
                                case XmlNodeType.Element:
                                    if (oXMLReader.Name == "tfd:TimbreFiscalDigital")
                                    {
                                        sUUID[0] = oXMLReader.GetAttribute("UUID");
                                        bEncontrado = true;
                                        break;
                                    }
                                    break;
                            }
                        }

                        if (bEncontrado)
                        {
                            int iResultado = oblFacturas.CancelarFacturaElectronica(sUUID, sRutaCertificados, out sMensaje);

                            if (iResultado == 0)
                            {
                                ScriptManager.RegisterStartupScript(pnlFormulario, pnlFormulario.GetType(), "alertstock", "alertarCancelacionFacturas(0);", true);

                                System.IO.FileInfo fFactura = new System.IO.FileInfo(Server.MapPath("~/Archivos/FacturasElectronicasTimbradas/FacturaE-" + sUUID[0] + ".xml"));

                                Response.Clear();
                                Response.AddHeader("Content-Disposition", "attachment; filename=" + fFactura.Name);
                                Response.AddHeader("Content-Length", fFactura.Length.ToString());
                                Response.ContentType = "application/....";
                                Response.WriteFile(fFactura.FullName);
                                Response.End();
                            }
                            else if (iResultado == 1)
                            {
                                ScriptManager.RegisterStartupScript(pnlFormulario, pnlFormulario.GetType(), "alertstock", "alertarCancelacionFacturas(1);", true);
                            }
                        }
                    }
                }
            }

        }