예제 #1
0
        /// <summary>
        /// Método encargado de Timbrar Toda la Nómina
        /// </summary>
        /// <param name="serie">Serie</param>
        /// <param name="id_cuenta_pago">Cuenta Pago del Emisor</param>
        /// <param name="ruta_xslr_co">Ruta para la cadena Original en Linea</param>
        /// <param name="ruta_xslr_co_local">Ruta para la Cadena Original desconectado</param>
        /// <param name="id_usuario">Id Usuario</param>
        /// <returns></returns>
        public RetornoOperacion TimbraNomina_V3_3(string serie, string ruta_xslr_co, string ruta_xslr_co_local, int id_usuario)
        {
            //Declaramos Objeto Resultado
            RetornoOperacion result = new RetornoOperacion(0);
            //Declaramos Objeto Resultado
            RetornoOperacion ResultadoMensaje = new RetornoOperacion(0);

            //Guardamos Mensaje
            string mensaje = "";

            //Instanciando Nomina de Empleados
            using (DataTable dtNominaEmpleados = SAT_CL.Nomina.NomEmpleado.ObtieneNominasEmpleadoRegistrados(this._id_nomina))
            {
                //Validando que existan Registros
                if (Validacion.ValidaOrigenDatos(dtNominaEmpleados))
                {
                    //Recorriendo Nominas de Empleados
                    foreach (DataRow dr in dtNominaEmpleados.Rows)
                    {
                        //Instanciando Nómina Empleado
                        using (SAT_CL.Nomina.NomEmpleado ne = new SAT_CL.Nomina.NomEmpleado(Convert.ToInt32(dr["Id"])))
                        {
                            //Validando que exista el Registro
                            if (ne.habilitar && ne.estatus == NomEmpleado.Estatus.Registrado)
                            {
                                //Validando Timbrado Anterior
                                if (ne.id_comprobante == 0)
                                {
                                    //Timbrando Nómina del Empleado
                                    result = ne.ImportaTimbraNominaEmpleadoComprobante_V3_3(this._version, serie, ruta_xslr_co, ruta_xslr_co_local, id_usuario);
                                }
                                else
                                {
                                    //Instanciando Excepción
                                    result = new RetornoOperacion("La Nómina del Empleado fue timbrada en el esquema 3.2");
                                }
                            }
                            else
                            {
                                //Instanciando Excepción
                                result = new RetornoOperacion("No Existe la Nómina del Empleado");
                            }
                        }
                        //Construyendo mensaje de este Timbrado de Nómina de Empleado
                        ResultadoMensaje = new RetornoOperacion(mensaje += string.Format("{0}, ", result.Mensaje), true);
                    }
                }
            }
            //Devolvemos Resultado
            return(ResultadoMensaje);
        }
예제 #2
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.";
                }
            }
        }
예제 #3
0
        /// <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;
                    }
                    }
                }
            }
        }