/// <summary>
 /// Método para descargar el XML si la nomina de empleado tiene Comprobante en la antigua versión
 /// </summary>
 /// <param name="idComprobante"></param>
 private void descargaXML_comprobante(int idComprobante)
 {
     //Instanciar registro en sesión
     using (SAT_CL.FacturacionElectronica.Comprobante Comprobante = new SAT_CL.FacturacionElectronica.Comprobante(idComprobante))
     {
         //Si existe y está generado
         if (Comprobante.generado && Comprobante.habilitar)
         {
             //Obtener bytes del archivo XML
             byte[] comprobante_nomina_XML = System.IO.File.ReadAllBytes(Comprobante.ruta_xml);
             //Realizar descarga de archivo
             if (comprobante_nomina_XML.Length > 0)
             {
                 //Instanciar al emisor
                 using (CompaniaEmisorReceptor Emisor = new CompaniaEmisorReceptor(Comprobante.id_compania_emisor))
                 {
                     Archivo.DescargaArchivo(comprobante_nomina_XML, string.Format("{0}_{1}{2}.xml", Emisor.nombre_corto != "" ? Emisor.nombre_corto : Emisor.rfc, Comprobante.serie, Comprobante.folio), Archivo.ContentType.binary_octetStream);
                 }
             }
         }
     }
 }
Beispiel #2
0
        /// <summary>
        /// Deshabilita el comprobante y sus dependencias
        /// </summary>
        /// <returns></returns>
        private void eliminaComprobante()
        {
            //Definiendo objeto de retorno
            RetornoOperacion resultado = new RetornoOperacion(1);

            //Instanciando el comprobante actual
            using (SAT_CL.FacturacionElectronica.Comprobante c = new SAT_CL.FacturacionElectronica.Comprobante(Convert.ToInt32(Session["id_registro"])))
            {
                //Si el registro existe
                if (c.id_comprobante > 0)
                {
                    //Si el comprobante no se ha timbrado
                    if (!c.generado)
                    {
                        //Realziando la deshabilitación
                        resultado = c.DeshabilitaComprobante(((SAT_CL.Seguridad.Usuario)Session["usuario"]).id_usuario);

                        //Si no existe error
                        if (resultado.OperacionExitosa)
                        {
                            //Estableciendo estatus edición
                            Session["estatus"] = Pagina.Estatus.Nuevo;
                            inicializaForma();
                        }
                    }
                    else
                    {
                        resultado = new RetornoOperacion("El comprobante ya se ha timbrado, no es posible editarlo.");
                    }
                }
                else
                {
                    resultado = new RetornoOperacion("El comprobante no fue encontrado.");
                }
            }
            //Mostramos Mensaje
            lblError.Text = resultado.Mensaje;
        }
Beispiel #3
0
        /// <summary>
        /// Realiza la solicitud de cancelación de los timbres solicitados
        /// </summary>
        private void cancelaTimbres()
        {
            //inicializando resultado
            RetornoOperacion resultado = new RetornoOperacion();

            //Se evalua si existen DataKeys(Indices de Origen de Datos de los Registros en el GridView)
            if (gvComprobante.DataKeys.Count > 0)
            {   //Se obtienen las filas que estan seleccionadas por el CheckBox "chkVarios"
                GridViewRow[] gvfilas = TSDK.ASP.Controles.ObtenerFilasSeleccionadas(gvComprobante, "chkVarios");
                //Se evalua si existen filas seleccionadas en el GridView
                if (gvfilas.Length > 0)
                {
                    //Validamos Màximo permitido de Comprobantes
                    if (Convert.ToInt32(gvfilas.Length) <= Convert.ToInt32(CapaNegocio.m_capaNegocio.RegresaVariableCatalogoBD("Maximo Cancelacion CFDI")))
                    {
                        //Definiendo objeto para almacenar los resultados del proceso
                        string mensajes = "";

                        //Para cada fila seleccionada
                        foreach (GridViewRow r in gvfilas)
                        {
                            //Definiendo objeto de resultado por operación
                            RetornoOperacion res = new RetornoOperacion();

                            //Seleccionando la fila actual
                            gvComprobante.SelectedIndex = r.RowIndex;
                            //Instanciando comprobante actual
                            using (SAT_CL.FacturacionElectronica.Comprobante c = new SAT_CL.FacturacionElectronica.Comprobante(Convert.ToInt32(gvComprobante.SelectedDataKey["Id"])))
                            {
                                //Si existe el comprobante
                                if (c.id_comprobante > 0)
                                {
                                    //Realizando cancelación
                                    res = new RetornoOperacion(string.Format("{0}: {1}", gvComprobante.SelectedDataKey["Folio"], c.CancelaTimbreFiscalDigital(((SAT_CL.Seguridad.Usuario)Session["usuario"]).id_usuario).Mensaje));
                                }
                                else
                                {
                                    res = new RetornoOperacion(string.Format("{0}: El comprobante no fue localizado.", gvComprobante.SelectedDataKey["Folio"]));
                                }
                            }

                            //Añadiendo resultado al general
                            mensajes += res.Mensaje + "<br/>";
                        }

                        //Armando resultado general
                        resultado = new RetornoOperacion(mensajes, true);
                    }
                    else
                    {
                        //Mostrando Mensaje
                        resultado = new RetornoOperacion(string.Format("Sólo es posible la cancelación de {0} Comprobantes.", CapaNegocio.m_capaNegocio.RegresaVariableCatalogoBD("Maximo Cancelacion CFDI")));
                    }
                }
                else//Mostrando Mensaje
                {
                    resultado = new RetornoOperacion("Debe Seleccionar al menos 1 Comprobante");
                }
            }
            else
            {
                resultado = new RetornoOperacion("No existen comprobantes coincidentes por cancelar.");
            }

            //Actualizando contenido de forma
            cargaGridView();

            //Mostrando resultado
            lblError.Text = resultado.Mensaje;
        }
Beispiel #4
0
        /// <summary>
        /// Evento producido al dar click en algún elemento del menú desplegable de la página
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void lkbElementoMenu_Click(object sender, EventArgs e)
        {
            //Determinando el comando a ejecutar
            switch (((LinkButton)sender).CommandName)
            {
            case "Abrir":
                inicializaAperturaRegistro();
                break;

            case "Salir":
                PilaNavegacionPaginas.DireccionaPaginaAnterior();
                break;

            case "Eliminar":
                eliminaComprobante();
                break;

            case "Cancelar":
                cancelaComprobante();
                break;

            case "Bitacora":
                inicializaBitacoraRegistro(Session["id_registro"].ToString(), "119", "Comprobante Fiscal Digital");
                break;

            case "Referencias":
                inicializaReferencias((Session["id_registro"]).ToString(), "119", "Comprobante Fiscal Digital");
                break;

            case "VerTimbre":

                //Validamos Existencia de comprobante
                if (Convert.ToInt32(Session["id_registro"]) != 0)
                {
                    //Instancia comprobante
                    using (SAT_CL.FacturacionElectronica.Comprobante c = new SAT_CL.FacturacionElectronica.Comprobante(Convert.ToInt32(Session["id_registro"])))
                    {
                        //Validamos Si se Genero la Factura
                        if (c.generado)
                        {
                            //Generamos Ruta para Abrir Timbre
                            string ruta_ventana = string.Format("TimbreFiscal.aspx?id_comprobante={0}", Session["id_registro"]);

                            //Abriendo ventana de detalle
                            ScriptServer.AbreNuevaVentana(ruta_ventana, "Timbre Fiscal", "location=NO,toolbar=NO,scrollbars=YES,menubar=NO,status=YES,width=700,height=420", Page);
                        }
                    }
                }

                break;

            case "XML":
                //Realizando descarga XML
                descargarXML();
                break;

            case "PDF":
                //Obteniendo Ruta
                string urlReporte = TSDK.Base.Cadena.RutaRelativaAAbsoluta("~/FacturacionElectronica/Comprobante.aspx", "~/RDLC/Reporte.aspx");

                //Instanciamos Comprobante
                using (SAT_CL.FacturacionElectronica.Comprobante objComprobante = new SAT_CL.FacturacionElectronica.Comprobante(Convert.ToInt32(Session["id_registro"])))
                {
                    //Validamos que exista el Comprobante
                    if (objComprobante.id_comprobante > 0)
                    {
                        //Instanciando nueva ventana de navegador para apertura de registro
                        TSDK.ASP.ScriptServer.AbreNuevaVentana(string.Format("{0}?idTipoReporte={1}&idRegistro={2}", urlReporte, "Comprobante", objComprobante.id_comprobante), "Comprobante", "location=NO,toolbar=NO,scrollbars=YES,menubar=NO,status=YES,width=800,height=500", Page);
                    }
                }
                break;

            case "Timbrar":
                //Abre Ventana Modal
                ScriptServer.AlternarVentana(uplkbTimbrar, uplkbTimbrar.GetType(), "AbrirVentana", "contenidoConfirmacionTimbrarFacturacionElectronica", "confirmaciontimbrarFacturacionElectronica");

                //Inicializa Valores
                inicializaValoresTimbrarFacturacionElectronica();
                break;
            }
        }
Beispiel #5
0
        /// <summary>
        /// Carga valores de un registro determinado
        /// </summary>
        private void inicializaValoresRegistro()
        {
            //Determinando el tipo de carga a realizar en base al estatus
            switch ((Pagina.Estatus)Session["estatus"])
            {
            //Nuevo registro
            case Pagina.Estatus.Nuevo:
                //Id de Registro
                lblID.Text = "ID";
                //Emisor
                using (SAT_CL.Global.CompaniaEmisorReceptor Emisor = new SAT_CL.Global.CompaniaEmisorReceptor(((SAT_CL.Seguridad.UsuarioSesion)Session["usuario_sesion"]).id_compania_emisor_receptor))
                {
                    txtEmisor.Text = Emisor.nombre + " ID:" + Emisor.id_compania_emisor_receptor.ToString();
                }
                //Serie y Folio
                txtSerie.Text = txtFolio.Text = "";
                //Domicilio Emisor
                cargaDomicilioRequerido("emisor");
                //Sucursal
                ddlSucursal.SelectedValue = "0";
                //Domicilio de Sucursal
                txtDomicilioSucursal.Text = "";
                //Receptor y Domicilio receptor
                txtReceptor.Text = txtDomicilioReceptor.Text = "";
                //Método de Pago predeterminado "Transferencia Electrónica"
                ddlMetodoPago.SelectedValue   = "5";
                ddlNoCuentaPago.SelectedValue = "0";
                //Tipo de Comprobante
                ddlTipoComprobante.SelectedValue = "1";
                //Estatus
                ddlEstatus.SelectedValue = "1";
                //Condiciones de Pago
                ddlCondicionesPago.SelectedValue = "1";
                //Forma de Pago "Una sola exhibición"
                ddlFormaPago.SelectedValue = "1";
                //Parcialidades y Datos de Comprobante Original
                inicializaParcialidades();
                //Moneda y Tipo de Cambio
                ddlMoneda.SelectedValue = "1";
                txtTipoCambio.Text      = "1.0000";
                //Fechas de Captura y Expedición
                txtFechaCaptura.Text = txtFechaExpedicion.Text =
                    //Lugar de Expedición y Sello Digital
                    txtSelloDigital.Text = "";
                cargaDomicilioRequerido("lugar_expedicion");
                //fecha Cancelación
                txtFechaCancelacion.Text = "";
                //Check Timbrado
                chkGenerado.Checked = false;

                //Totales de Comprobante
                lblSubtotalCaptura.Text                           =
                    lblSubtotalNacional.Text                      =
                        lblDescuentosCaptura.Text                 =
                            lblDescuentosNacional.Text            =
                                lblImpuestosCaptura.Text          =
                                    lblImpuestosNacional.Text     =
                                        lblTotalCaptura.Text      =
                                            lblTotalNacional.Text = string.Format("{0:c4}", 0);
                break;

            //Lectura y edición de registro activo en sesión
            case Pagina.Estatus.Lectura:
            case Pagina.Estatus.Edicion:
                //Instanciando registro comprobante
                using (SAT_CL.FacturacionElectronica.Comprobante c = new SAT_CL.FacturacionElectronica.Comprobante(Convert.ToInt32(Session["id_registro"])))
                {
                    //Asignando valores de registro
                    //Id de Registro
                    lblID.Text = c.id_comprobante.ToString();
                    //Serie y Folio
                    txtSerie.Text = c.serie;
                    txtFolio.Text = c.folio.ToString();
                    //Emisor
                    using (SAT_CL.Global.CompaniaEmisorReceptor Emisor = new SAT_CL.Global.CompaniaEmisorReceptor(c.id_compania_emisor))
                    {
                        txtEmisor.Text = Emisor.nombre + " ID:" + Emisor.id_compania_emisor_receptor.ToString();
                    }
                    //Domicilio Emisor
                    cargaDomicilioRequerido("emisor");
                    //Sucursal
                    ddlSucursal.SelectedValue = c.id_sucursal.ToString();
                    //Domicilio de Sucursal
                    cargaDomicilioRequerido("sucursal");
                    //Receptor y Domicilio receptor
                    using (CompaniaEmisorReceptor r = new CompaniaEmisorReceptor(c.id_compania_receptor))
                    {
                        txtReceptor.Text = r.nombre + "   ID:" + r.id_compania_emisor_receptor.ToString();
                    }

                    cargaDomicilioRequerido("receptor");

                    //Método de Pago predeterminado "Transferencia Electrónica"
                    ddlMetodoPago.SelectedValue = c.id_metodo_pago.ToString();
                    //Cargando Cuentas Pago
                    SAT_CL.CapaNegocio.m_capaNegocio.CargaCatalogo(ddlNoCuentaPago, 42, "NO IDENTIFICADO", 25, "", c.id_compania_receptor, "");
                    ddlNoCuentaPago.SelectedValue = c.id_cuenta_pago.ToString();
                    //Tipo de Comprobante
                    ddlTipoComprobante.SelectedValue = ((byte)c.tipo_comprobante).ToString();
                    //Estatus
                    ddlEstatus.SelectedValue = ((byte)c.estatus_comprobante).ToString();
                    //Condiciones de Pago
                    ddlCondicionesPago.SelectedValue = c.id_condiciones_pago.ToString();
                    //Forma de Pago "Una sola exhibición"
                    ddlFormaPago.SelectedValue = c.id_forma_pago.ToString();
                    //Parcialidades y Datos de Comprobante Original
                    txtNoParcialidad.Text      = c.no_parcialidad.ToString();
                    txtTotalParcialidades.Text = c.total_parcialidades.ToString();
                    txtSerieOriginal.Text      = c.serie_folio_original;
                    txtFolioOriginal.Text      = c.folio_original.ToString();
                    txtMontoFolioOriginal.Text = c.monto_folio_original.ToString();
                    txtFechaFolioOriginal.Text = Fecha.ConvierteDateTimeString(c.fecha_folio_original, "yyyy/MM/dd hh:mm:ss tt");
                    //Moneda y Tipo de Cambio
                    if (c.id_moneda > 1)
                    {
                        using (TipoCambio tc = new TipoCambio(((SAT_CL.Seguridad.UsuarioSesion)Session["usuario_sesion"]).id_compania_emisor_receptor, c.id_moneda, c.fecha_tipo_cambio, 0))
                        {
                            ddlMoneda.SelectedValue = tc.id_moneda.ToString();
                            txtTipoCambio.Text      = tc.valor_tipo_cambio.ToString();
                        }
                    }
                    //Si no hay tipo de cambio
                    else
                    {
                        ddlMoneda.SelectedValue = "1";
                        txtTipoCambio.Text      = "1.0000";
                    }
                    //Fechas de Captura y Expedición
                    txtFechaCaptura.Text    = c.fecha_captura.ToString("yyyy/MM/dd hh:mm:ss tt");
                    txtFechaExpedicion.Text = Fecha.ConvierteDateTimeString(c.fecha_expedicion, "yyyy/MM/dd hh:mm:ss tt");
                    //Lugar de Expedición y Sello Digital
                    txtLugarExpedicion.Text = c.lugar_expedicion;
                    txtSelloDigital.Text    = c.sello;
                    //fecha Cancelación
                    txtFechaCancelacion.Text = Fecha.ConvierteDateTimeString(c.fecha_cancelacion, "yyyy/MM/dd hh:mm:ss tt");
                    //Check Timbrado
                    chkGenerado.Checked = c.generado;

                    //Totales de Comprobante
                    lblSubtotalCaptura.Text    = string.Format("{0:c4}", c.subtotal_moneda_captura);
                    lblSubtotalNacional.Text   = string.Format("{0:c4}", c.subtotal_moneda_nacional);
                    lblDescuentosCaptura.Text  = string.Format("{0:c4}", c.descuento_moneda_captura);
                    lblDescuentosNacional.Text = string.Format("{0:c4}", c.descuento_moneda_nacional);
                    lblImpuestosCaptura.Text   = string.Format("{0:c4}", c.impuestos_moneda_captura);
                    lblImpuestosNacional.Text  = string.Format("{0:c4}", c.impuestos_moneda_nacional);
                    lblTotalCaptura.Text       = string.Format("{0:c4}", c.total_moneda_captura);
                    lblTotalNacional.Text      = string.Format("{0:c4}", c.total_moneda_nacional);
                }
                break;
            }

            //Estableciendo indice de tab por default
            //tbcComprobante.ActiveTabIndex = 0;
        }
        /// <summary>
        /// Exportar XML y PDF de la nomina de empleados
        /// </summary>
        private void exportarNominasEmpleado()
        {
            //Declarar lista de archivos
            List <KeyValuePair <string, byte[]> > archivos = new List <KeyValuePair <string, byte[]> >();
            //Declarar lista de errores
            List <string> errores = new List <string>();

            //Verificar que el gridview contenga registros
            if (gvNominaEmpleados.DataKeys.Count > 0)
            {
                //Obtener filas seleccionadas
                GridViewRow[] filasSeleccionadas = Controles.ObtenerFilasSeleccionadas(gvNominaEmpleados, "chkVariosNominaEmpleado");
                //Verificar que existan filas seleccionadas
                if (filasSeleccionadas.Length > 0)
                {
                    //Almacenar rutas en un arreglo
                    foreach (GridViewRow row in filasSeleccionadas)
                    {//Instanciar Nomina de Empleado del valor obtenido de la fila seleccionada
                        using (SAT_CL.Nomina.NomEmpleado NomEmp = new SAT_CL.Nomina.NomEmpleado(Convert.ToInt32(gvNominaEmpleados.DataKeys[row.RowIndex].Value)))
                        {
                            //Instanciar al comprobante que corresponde a la nómina
                            //Si la nomina de empleado usa comprobante en la version anterior
                            if (NomEmp.id_comprobante != 0)
                            {
                                using (SAT_CL.FacturacionElectronica.Comprobante Comprobante = new SAT_CL.FacturacionElectronica.Comprobante(NomEmp.id_comprobante))
                                {
                                    //Validar seleccion de PDF
                                    if (chkPDF.Checked == true)
                                    {
                                        //Añadir PDF
                                        using (CompaniaEmisorReceptor Emisor = new CompaniaEmisorReceptor(Comprobante.id_compania_emisor))
                                        {
                                            archivos.Add(new KeyValuePair <string, byte[]>(Emisor.nombre_corto != "" ? Comprobante.serie : Emisor.rfc + Comprobante.serie + Comprobante.folio.ToString() + ".pdf", NomEmp.GeneraPDFComprobanteNomina33()));
                                        }
                                    }
                                    //Validar seleccion de XML
                                    if (chkXML.Checked == true)
                                    {
                                        //Guardar archivo en arreglo de bytes
                                        byte[] archivoXML = System.IO.File.ReadAllBytes(Comprobante.ruta_xml);
                                        //Añadir XML a la lista
                                        using (CompaniaEmisorReceptor Emisor = new CompaniaEmisorReceptor(Comprobante.id_compania_emisor))
                                        {
                                            archivos.Add(new KeyValuePair <string, byte[]>(Emisor.nombre_corto != "" ? Emisor.nombre_corto : Emisor.rfc + Comprobante.serie + Comprobante.folio.ToString() + ".xml", archivoXML));
                                        }
                                    }
                                }
                            }
                            //Si la nomina de empleado usa comprobante en la version 3.3
                            else if (NomEmp.id_comprobante33 != 0)
                            {
                                using (SAT_CL.FacturacionElectronica33.Comprobante Comprobante33 = new SAT_CL.FacturacionElectronica33.Comprobante(NomEmp.id_comprobante33))
                                {
                                    //Validar seleccion de PDF
                                    if (chkPDF.Checked == true)
                                    {
                                        //Añadir PDF
                                        archivos.Add(new KeyValuePair <string, byte[]>(Comprobante33.serie + Comprobante33.folio.ToString() + ".pdf", NomEmp.GeneraPDFComprobanteNomina33()));
                                    }
                                    //Validar seleccion de XML
                                    if (chkXML.Checked == true)
                                    {
                                        //Guardar archivo en arreglo de bytes
                                        byte[] archivoXML = System.IO.File.ReadAllBytes(Comprobante33.ruta_xml);
                                        //Añadir XML a la lista
                                        archivos.Add(new KeyValuePair <string, byte[]>(Comprobante33.serie + Comprobante33.folio.ToString() + ".xml", archivoXML));
                                    }
                                }
                            }
                        }
                    }
                    //Generar archivo comprimido con las rutas
                    byte[] zip_file = Archivo.ConvirteArchivoZIP(archivos, out errores);
                    //Si al menos un archivo fue correcto; descarga.
                    if (zip_file != null)
                    {
                        Archivo.DescargaArchivo(zip_file, "NominasEmpleado.zip", Archivo.ContentType.binary_octetStream);
                    }
                    else
                    {
                        //Recorrer errores
                        foreach (string error in errores)
                        {
                            //Muestra mensaje de error
                            //lblError.Text += error + "<br>";
                        }
                    }
                }
                else //Mostrar mensaje
                {
                    //lblError.Text ="Debe seleccionar al menos un comprobante.";
                }
            }
        }
        /// <summary>
        /// Evento Producido al Dar Click al Link de Imprimir Nomina
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void lnkDescargarNomina_Click(object sender, EventArgs e)
        {
            //Revisar que el GridView contenga registros
            if (gvNominaEmpleados.DataKeys.Count > 0)
            {
                //Seleccionar la fila
                Controles.SeleccionaFila(gvNominaEmpleados, sender, "lnk", false);

                //Instanciar a la nomina de empleado
                using (SAT_CL.Nomina.NomEmpleado NomEmp = new SAT_CL.Nomina.NomEmpleado(Convert.ToInt32(gvNominaEmpleados.SelectedDataKey["Id"])))
                {
                    //Obtener el control que activa el evento
                    LinkButton enlace = (LinkButton)sender;
                    //Botón presionado
                    switch (enlace.CommandName)
                    {
                    case "PDF":
                    {
                        //Obtener ruta
                        string urlReporte = TSDK.Base.Cadena.RutaRelativaAAbsoluta("~/FacturacionElectronica/ReporteComprobante.ascx", "~/RDLC/Reporte.aspx");
                        //Instanciar el tipo de comprobante
                        //Si la nomina de empleado usa comprobante en la version anterior
                        if (NomEmp.id_comprobante != 0)
                        {
                            using (SAT_CL.FacturacionElectronica.Comprobante Comprobante = new SAT_CL.FacturacionElectronica.Comprobante(NomEmp.id_comprobante))
                            {
                                if (Comprobante.generado)
                                {
                                    //Instanciar nueva ventana del navegador
                                    TSDK.ASP.ScriptServer.AbreNuevaVentana(string.Format("{0}?idTipoReporte={1}&idRegistro={2}", urlReporte, "Comprobante", Comprobante.id_comprobante), "Comprobante", "location=NO,toolbar=NO,scrollbars=YES,menubar=NO,status=YES,width=800,height=500", Page);
                                }
                            }
                        }
                        //Si la nomina de empleado usa comprobante en la version 3.3
                        else if (NomEmp.id_comprobante33 != 0)
                        {
                            using (SAT_CL.FacturacionElectronica33.Comprobante Comprobante33 = new SAT_CL.FacturacionElectronica33.Comprobante(NomEmp.id_comprobante33))
                            {
                                if (Comprobante33.bit_generado)
                                {
                                    //Instanciar nueva ventana del navegador
                                    TSDK.ASP.ScriptServer.AbreNuevaVentana(string.Format("{0}?idTipoReporte={1}&idRegistro={2}", urlReporte, "ComprobanteV33", Comprobante33.id_comprobante33), "Comprobante", "location=NO,toolbar=NO,scrollbars=YES,menubar=NO,status=YES,width=800,height=500", Page);
                                }
                            }
                        }
                        else
                        {
                            ScriptServer.MuestraNotificacion(this, "La nómina de empleado no tiene un comprobante.", ScriptServer.NaturalezaNotificacion.Error, ScriptServer.PosicionNotificacion.AbajoDerecha);
                        }
                        break;
                    }

                    case "XML":
                    {
                        //Si la nomina de empleado usa comprobante versión 3.3
                        if (NomEmp.id_comprobante33 > 0)
                        {
                            descargaXML_comprobante33(NomEmp.id_comprobante33);
                        }
                        //Si la nómina de empleado usa comprobante en la antigua version
                        else if (NomEmp.id_comprobante > 0)
                        {
                            descargaXML_comprobante(NomEmp.id_comprobante);
                        }
                        else
                        {
                            ScriptServer.MuestraNotificacion(this, "La nómina de empleado no tiene un comprobante.", ScriptServer.NaturalezaNotificacion.Error, ScriptServer.PosicionNotificacion.AbajoDerecha);
                        }

                        break;
                    }
                    }
                }
            }
        }
Beispiel #8
0
        /// <summary>
        /// Evento disparado al presionar el LinkButton "Bitacora" o "Referencias"
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void lkbDetalles_Click(object sender, EventArgs e)
        {         //Evaluando que el GridView tenga registros
            if (gvComprobantes.DataKeys.Count > 0)
            {     //Referenciando al botón pulsado
                using (LinkButton boton = (LinkButton)sender)
                { //Seleccionando la fila actual
                    Controles.SeleccionaFila(gvComprobantes, sender, "lnk", false);
                    //Evaluando Boton Presionado
                    switch (boton.CommandName)
                    {
                    case "Bitacora":
                    {           //Visualizando bitácora de registro
                        inicializaBitacoraRegistro(gvComprobantes.SelectedValue.ToString(), "119", "Bitacora");
                        break;
                    }

                    case "Referencias":
                    {           //Visualizando referencia de registro
                        inicializaReferencias(gvComprobantes.SelectedValue.ToString(), "119", "Combrobante");
                        break;
                    }

                    case "Email":
                    {
                        //Inicializando contenido de controles de envío de correo
                        //Instanciando comprobante de interés
                        using (SAT_CL.FacturacionElectronica.Comprobante comp = new SAT_CL.FacturacionElectronica.Comprobante(Convert.ToInt32(gvComprobantes.SelectedDataKey["Id"])))
                        {
                            //Si hay comprobante timbrado
                            if (comp.generado)
                            {
                                //Instanciando compañía de interés
                                using (SAT_CL.Global.CompaniaEmisorReceptor c = new SAT_CL.Global.CompaniaEmisorReceptor(comp.id_compania_emisor))
                                {
                                    string destinatarios = "";
                                    //Cargando contactos (Destinatarios)
                                    using (DataTable mitContactos = SAT_CL.Global.Referencia.CargaReferencias(comp.id_compania_receptor, 25, 2058))
                                    {
                                        //Si hay elementos
                                        if (mitContactos != null)
                                        {
                                            foreach (DataRow r in mitContactos.Rows)
                                            {
                                                //Si ya existe contenido en el control
                                                if (destinatarios != "")
                                                {
                                                    destinatarios = destinatarios + ";\r\n" + r.Field <string>("Valor");
                                                }
                                                //De lo contrario
                                                else
                                                {
                                                    destinatarios = r.Field <string>("Valor");
                                                }
                                            }
                                        }
                                    }

                                    //Inicializando control de envío de comprobante
                                    wucEmailCFDI.InicializaControl(((SAT_CL.Seguridad.Usuario)Session["usuario"]).email, string.Format("CFDI {0} [{1}]", comp.serie + comp.folio.ToString(), c.rfc), destinatarios,
                                                                   "Los archivos se encuentran adjuntos en este mensaje. Si usted no ha solicitado el envío de este comprobante, por favor contacte a su ejecutivo de cuenta.", comp.id_comprobante);
                                }
                            }
                            else
                            {
                                ScriptServer.MuestraNotificacion(this, "El comprobante no se ha timbrado.", ScriptServer.NaturalezaNotificacion.Error, ScriptServer.PosicionNotificacion.AbajoDerecha);
                            }
                        }

                        //Abrir Ventana Modal
                        ScriptServer.AlternarVentana(this, "EnvioEmail", "contenidoConfirmacionEmail", "confirmacionEmail");

                        break;
                    }

                    case "XML":
                    {
                        //Instanciamos Comprobante
                        using (SAT_CL.FacturacionElectronica.Comprobante c = new SAT_CL.FacturacionElectronica.Comprobante(Convert.ToInt32(gvComprobantes.SelectedValue)))
                        {
                            //Si existe y está generado
                            if (c.generado)
                            {
                                //Obteniendo bytes del archivo XML
                                byte[] cfdi_xml = System.IO.File.ReadAllBytes(c.ruta_xml);

                                //Realizando descarga de archivo
                                if (cfdi_xml.Length > 0)
                                {
                                    //Instanciando al emisor
                                    using (SAT_CL.Global.CompaniaEmisorReceptor em = new SAT_CL.Global.CompaniaEmisorReceptor(c.id_compania_emisor))
                                        TSDK.Base.Archivo.DescargaArchivo(cfdi_xml, string.Format("{0}_{1}{2}.xml", em.nombre_corto != "" ? em.nombre_corto: em.rfc, c.serie, c.folio), TSDK.Base.Archivo.ContentType.binary_octetStream);
                                }
                            }
                        }
                        break;
                    }

                    case "PDF":
                    {
                        //Obteniendo Ruta
                        string urlReporte = TSDK.Base.Cadena.RutaRelativaAAbsoluta("~/FacturacionElectronica/ReporteComprobante.ascx", "~/RDLC/Reporte.aspx");
                        //Instanciamos Comprobante
                        using (SAT_CL.FacturacionElectronica.Comprobante objComprobante = new SAT_CL.FacturacionElectronica.Comprobante(Convert.ToInt32(gvComprobantes.SelectedValue)))
                        {
                            //Validamos que el comprobante se encuentre Timbrado
                            if (objComprobante.generado)
                            {
                                //Instanciando nueva ventana de navegador para apertura de registro
                                TSDK.ASP.ScriptServer.AbreNuevaVentana(string.Format("{0}?idTipoReporte={1}&idRegistro={2}", urlReporte, "Comprobante", objComprobante.id_comprobante), "Comprobante", "location=NO,toolbar=NO,scrollbars=YES,menubar=NO,status=YES,width=800,height=500", Page);
                            }
                        }

                        break;
                    }
                    }
                }
            }
        }
Beispiel #9
0
        /// <summary>
        /// Cancelar CFDI
        /// </summary>
        private RetornoOperacion cancelaCFDI()
        {
            //Declaramos resultado
            RetornoOperacion resultado = new RetornoOperacion();

            //Inicializando Bloque Transaccional
            using (TransactionScope trans = TSDK.Datos.Transaccion.InicializaBloqueTransaccional(System.Transactions.IsolationLevel.ReadCommitted))
            {
                //Instanciamos Comprobamte
                using (SAT_CL.FacturacionElectronica.Comprobante objCompobante = new SAT_CL.FacturacionElectronica.Comprobante(Convert.ToInt32(gvComprobantes.SelectedDataKey["Id"])))
                {
                    //Enviamos link
                    resultado = objCompobante.CancelaComprobante(((SAT_CL.Seguridad.Usuario)Session["usuario"]).id_usuario);

                    //Validamos Resultado
                    if (resultado.OperacionExitosa)
                    {
                        //Insertando Referencia
                        resultado = SAT_CL.Global.Referencia.InsertaReferencia(objCompobante.id_comprobante, 119, SAT_CL.Global.ReferenciaTipo.ObtieneIdReferenciaTipo(0, 119, "Motivo Cancelación", 0, "Facturacion Electrónica"),
                                                                               txtMotivo.Text, TSDK.Base.Fecha.ObtieneFechaEstandarMexicoCentro(), ((SAT_CL.Seguridad.Usuario)Session["usuario"]).id_usuario, true);

                        //Validando Operación Exitosa
                        if (resultado.OperacionExitosa)
                        {
                            //Instanciando Aplicaciones
                            using (DataTable dtAplicaciones = SAT_CL.CXC.FichaIngresoAplicacion.ObtieneFichasFacturas(0, Convert.ToInt32(gvComprobantes.SelectedDataKey["IdFactura"])))
                            {
                                //Validando que existan Aplicaciones
                                if (TSDK.Datos.Validacion.ValidaOrigenDatos(dtAplicaciones))
                                {
                                    //Recorriendo Registros
                                    foreach (DataRow dr in dtAplicaciones.Rows)
                                    {
                                        //Instanciando Aplicacion de la Factura
                                        using (SAT_CL.CXC.FichaIngresoAplicacion fia = new SAT_CL.CXC.FichaIngresoAplicacion(Convert.ToInt32(dr["Id"])))
                                        {
                                            //Validando que exista la Aplicación
                                            if (fia.id_ficha_ingreso_aplicacion > 0)
                                            {
                                                //Deshabilitando Ficha de Ingreso
                                                resultado = fia.DeshabilitarFichaIngresoAplicacion(((SAT_CL.Seguridad.Usuario)Session["usuario"]).id_usuario);

                                                //Validando Operación Exitosa
                                                if (!resultado.OperacionExitosa)
                                                {
                                                    //Terminando Ciclo
                                                    break;
                                                }
                                                else
                                                {
                                                    //Instanciando Ficha de Ingreso
                                                    using (SAT_CL.Bancos.EgresoIngreso fi = new SAT_CL.Bancos.EgresoIngreso(fia.id_egreso_ingreso))
                                                    {
                                                        //Validando que exista el Registro
                                                        if (fi.habilitar)
                                                        {
                                                            //Obteniendo Facturas Aplicadas
                                                            using (DataTable dtAplicacionesFicha = SAT_CL.CXC.FichaIngresoAplicacion.ObtieneFichasFacturas(fi.id_egreso_ingreso, 0))
                                                            {
                                                                //Si no existen Aplicaciones
                                                                if (!TSDK.Datos.Validacion.ValidaOrigenDatos(dtAplicacionesFicha))
                                                                {
                                                                    //Actualizando Estatus de la Ficha
                                                                    resultado = fi.ActualizaFichaIngresoEstatus(SAT_CL.Bancos.EgresoIngreso.Estatus.Capturada, ((SAT_CL.Seguridad.Usuario)Session["usuario"]).id_usuario);

                                                                    //Validando Operación Correcta
                                                                    if (resultado.OperacionExitosa)
                                                                    {
                                                                        //Terminando Ciclo
                                                                        break;
                                                                    }
                                                                }
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }

                                    //Validando Desaplicación Exitosa
                                    if (resultado.OperacionExitosa)
                                    {
                                        //Declaramos Variable
                                        int facturado = 0;
                                        //Obtenemos Facturado Fcaturacion
                                        facturado = FacturadoFacturacion.ObtieneRelacionFacturaElectronica(objCompobante.id_comprobante);
                                        //Instanciamos FcaturadoFacturacion
                                        using (FacturadoFacturacion objfacturado = new FacturadoFacturacion(facturado))
                                        {
                                            //Instanciamos Facturado
                                            using (Facturado objFacturado = new Facturado(objfacturado.id_factura))
                                            {
                                                //Actualizando Estatus de la Factura
                                                resultado = objFacturado.ActualizaEstatusFactura(Facturado.EstatusFactura.Registrada, ((SAT_CL.Seguridad.Usuario)Session["usuario"]).id_usuario);
                                            }
                                        }
                                    }
                                }
                                else
                                {
                                    //Instanciando Factura
                                    resultado = new RetornoOperacion(Convert.ToInt32(gvComprobantes.SelectedDataKey["IdFactura"]));
                                }

                                //Validando Operación Exitosa
                                if (resultado.OperacionExitosa)
                                {
                                    //Cerramo Ventana Modal
                                    alternaVentanaModal("CancelarCFDI", btnAceptarCancelacionCFDI);

                                    //Carga Comprobante
                                    cargaComprobantes();
                                    //Completando Transacción
                                    trans.Complete();
                                }
                            }
                        }
                    }
                }
            }
            //Devolvemos Valor
            return(resultado);
        }
Beispiel #10
0
        /// <summary>
        /// Exportar PDF y XML
        /// </summary>
        private void Exportar()
        {
            //Creamos lista de archivos
            List <KeyValuePair <string, byte[]> > archivos = new List <KeyValuePair <string, byte[]> >();
            //Creamos lista errores
            List <string> errores = new List <string>();

            //Verificando que el GridView contiene Registros
            if (gvComprobantes.DataKeys.Count > 0)
            {   //Obteniendo Filas Seleccionadas
                GridViewRow[] selected_rows = Controles.ObtenerFilasSeleccionadas(gvComprobantes, "chkVarios");
                //Verificando que existan filas Seleccionadas
                if (selected_rows.Length != 0)
                {
                    //Almacenando Rutas el Arreglo
                    foreach (GridViewRow row in selected_rows)
                    {   //Instanciando Comprobante de el Valor obtenido de la Fila Seleccionada
                        using (SAT_CL.FacturacionElectronica.Comprobante comp =
                                   new SAT_CL.FacturacionElectronica.Comprobante
                                       (Convert.ToInt32(gvComprobantes.DataKeys[row.RowIndex].Value)))
                        {
                            //Validamos Seleccion de Radio Buton de PDF
                            if (chkPDF.Checked == true)
                            {
                                //Añadimos PDF
                                archivos.Add(new KeyValuePair <string, byte[]>(comp.serie + comp.folio.ToString() + ".pdf", comp.GeneraPDFComprobante()));
                            }
                            //Validando Selección de XML
                            if (chkXML.Checked == true)
                            {
                                //Verificando que exista el Archivo
                                if (File.Exists(comp.ruta_xml))
                                {
                                    //Guardando Archivo en arreglo de Bytes
                                    byte[] xml_file = System.IO.File.ReadAllBytes(comp.ruta_xml);
                                    //Añadimos XML
                                    archivos.Add(new KeyValuePair <string, byte[]>(comp.serie + comp.folio.ToString() + ".xml", xml_file));
                                }
                            }
                        }
                    }
                    //Genera el zip con las rutas
                    byte[] file_zip = Archivo.ConvirteArchivoZIP(archivos, out errores);
                    //Si almenos un archivo fue correcto descarga
                    if (file_zip != null)
                    {
                        //Descarga el zip generado
                        Archivo.DescargaArchivo(file_zip, "Facturas.zip",
                                                Archivo.ContentType.binary_octetStream);
                    }
                    else
                    {
                        //Recorremos errores
                        foreach (string error in errores)
                        {
                            //Muestra mensaje de Error
                            lblError.Text += error + " <br>";
                        }
                    }
                }
                else//Mostrando Mensaje
                {
                    lblError.Text = "Debe Seleccionar al menos un Comprobante";
                }
            }
        }