Exemple #1
0
        /// <summary>
        /// Cancela el comprobante y sus dependencias
        /// </summary>
        /// <returns></returns>
        private void cancelaComprobante()
        {
            //Definiendo objeto de retorno
            RetornoOperacion resultado = new RetornoOperacion(1);

            //Instanciando el comprobante actual
            using (SAT_CL.FacturacionElectronica33.Comprobante c = new SAT_CL.FacturacionElectronica33.Comprobante(Convert.ToInt32(Session["id_registro"])))
            {
                //Si el registro existe
                if (c.id_comprobante33 > 0)
                {
                    //Realziando la deshabilitación
                    //resultado = c.CancelaComprobante(((SAT_CL.Seguridad.Usuario)Session["usuario"]).id_usuario);
                }
                else
                {
                    resultado = new RetornoOperacion("El comprobante no fue encontrado.");
                }
            }
            //Si no existe error
            if (resultado.OperacionExitosa)
            {
                //Estableciendo estatus edición
                Session["estatus"] = Pagina.Estatus.Lectura;
                inicializaForma();
            }
            lblError.Text = resultado.Mensaje;
        }
Exemple #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void imbReemplazarServ_Click(object sender, ImageClickEventArgs e)
        {
            //Validando Datos
            if (gvServicios.DataKeys.Count > 0)
            {
                //Validando Seleción de la Factura
                if (gvFacturacionOtros.SelectedIndex != -1)
                {
                    //Seleccionando Fila
                    Controles.SeleccionaFila(gvServicios, sender, "imb", false);

                    //Instanciando Facturación de Otros
                    using (SAT_CL.Facturacion.FacturacionOtros fo = new SAT_CL.Facturacion.FacturacionOtros(Convert.ToInt32(gvFacturacionOtros.SelectedDataKey["IdFO"])))
                        using (SAT_CL.Documentacion.Servicio serv = new SAT_CL.Documentacion.Servicio(Convert.ToInt32(gvServicios.SelectedDataKey["IdServicio"])))
                            using (SAT_CL.FacturacionElectronica33.Comprobante cfdi = new SAT_CL.FacturacionElectronica33.Comprobante(Convert.ToInt32(gvFacturacionOtros.SelectedDataKey["IdCFDI"])))
                            {
                                //Validando Servicio
                                if (serv.habilitar)
                                {
                                    //Validando Facturacion de Otros
                                    if (fo.habilitar)
                                    {
                                        //Validando Comprobante
                                        if (cfdi.habilitar)
                                        {
                                            //Personalizando Mensaje
                                            lblEncabezadoConfirmacion.Text = string.Format("Se añadira la Factura '{0}{1}' al Servicio '{2}'", cfdi.serie, cfdi.folio, serv.no_servicio);
                                            //Mostrando Modal
                                            alternaVentana(this.Page, "Sustitucion");
                                        }
                                        else
                                        {
                                            //Instanciando Excepción
                                            ScriptServer.MuestraNotificacion(this.Page, new RetornoOperacion("No se puede recuperar la Factura Electronica"), ScriptServer.PosicionNotificacion.AbajoDerecha);
                                        }
                                    }
                                    else
                                    {
                                        //Instanciando Excepción
                                        ScriptServer.MuestraNotificacion(this.Page, new RetornoOperacion("No se puede recuperar la Factura"), ScriptServer.PosicionNotificacion.AbajoDerecha);
                                    }
                                }
                                else
                                {
                                    //Instanciando Excepción
                                    ScriptServer.MuestraNotificacion(this.Page, new RetornoOperacion("No se puede recuperar el Servicio"), ScriptServer.PosicionNotificacion.AbajoDerecha);
                                }
                            }
                }
                else
                {
                    //Instanciando Excepción
                    ScriptServer.MuestraNotificacion(this.Page, new RetornoOperacion("Debe seleccionar una Factura"), ScriptServer.PosicionNotificacion.AbajoDerecha);
                }
            }
        }
Exemple #3
0
        /// <summary>
        /// Evento generado al timbrar la Factura
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnAceptarTimbrarFacturacionElectronica_Click(object sender, EventArgs e)
        {
            //Declaramos objeto Resultado
            RetornoOperacion resultado = new RetornoOperacion();

            //Instanciando registro comprobante
            using (SAT_CL.FacturacionElectronica33.Comprobante c = new SAT_CL.FacturacionElectronica33.Comprobante(Convert.ToInt32(Session["id_registro"])))
            {
                /*/Registramos Factura
                 * resultado = c.TimbraComprobanteFacturadoFacturaGlobal(txtSerieTimbrar.Text, chkOmitirAddenda.Checked, HostingEnvironment.MapPath("~/XSLT/FacturacionElectronica/cadenaoriginal_3_3.xslt"),
                 *                                                       HostingEnvironment.MapPath("~/XSLT/FacturacionElectronica33/cadenaoriginal_3_3_desconectado.xslt"), ((SAT_CL.Seguridad.Usuario)Session["usuario"]).id_usuario);//*/
            }
            //Validamos Resultado
            if (resultado.OperacionExitosa)
            {
                //Inicializamos Valores
                inicializaValoresRegistro();
            }
            //Mostrando resultado
            lblTimbrarFacturacionElectronica.Text = resultado.Mensaje;
        }
Exemple #4
0
        /// <summary>
        /// Realiza la descarga del XML del comprobante
        /// </summary>
        private void descargarXML()
        {
            //Instanciando registro en sesión
            using (SAT_CL.FacturacionElectronica33.Comprobante c = new SAT_CL.FacturacionElectronica33.Comprobante(Convert.ToInt32(Session["id_registro"])))
            {
                //Si existe y está generado
                if (c.bit_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 (CompaniaEmisorReceptor em = new CompaniaEmisorReceptor(c.id_compania_emisor))
                            Archivo.DescargaArchivo(cfdi_xml, string.Format("{0}_{1}{2}.xml", em.nombre_corto != "" ? em.nombre_corto : em.rfc, c.serie, c.folio), Archivo.ContentType.binary_octetStream);
                    }
                }
            }
        }
 /// <summary>
 /// Método para descargar el XML si la nomina de empleado tiene Comprobante versión 3.3
 /// </summary>
 /// <param name="idComprobante33"></param>
 private void descargaXML_comprobante33(int idComprobante33)
 {
     //Instanciar registro en sesión
     using (SAT_CL.FacturacionElectronica33.Comprobante Comprobante33 = new SAT_CL.FacturacionElectronica33.Comprobante(idComprobante33))
     {
         //Si existe y está generado
         if (Comprobante33.bit_generado && Comprobante33.habilitar)
         {
             //Obtener bytes del archivo XML
             byte[] comprobante_nomina_XML = System.IO.File.ReadAllBytes(Comprobante33.ruta_xml);
             //Realizar descarga de archivo
             if (comprobante_nomina_XML.Length > 0)
             {
                 //Instanciar al emisor
                 using (CompaniaEmisorReceptor Emisor = new CompaniaEmisorReceptor(Comprobante33.id_compania_emisor))
                 {
                     Archivo.DescargaArchivo(comprobante_nomina_XML, string.Format("{0}_{1}{2}.xml", Emisor.nombre_corto != "" ? Emisor.nombre_corto : Emisor.rfc, Comprobante33.serie, Comprobante33.folio), Archivo.ContentType.binary_octetStream);
                 }
             }
         }
     }
 }
Exemple #6
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.FacturacionElectronica33.Comprobante c = new SAT_CL.FacturacionElectronica33.Comprobante(Convert.ToInt32(Session["id_registro"])))
            {
                //Si el registro existe
                if (c.id_comprobante33 > 0)
                {
                    //Si el comprobante no se ha timbrado
                    if (!c.bit_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;
        }
Exemple #7
0
        /// <summary>
        /// Realiza la validación de edición del comprobante para el entorno de usuario
        /// </summary>
        /// <returns></returns>
        private bool validaEdicionComprobante()
        {
            //Definiendo objeto de retorno
            RetornoOperacion resultado = new RetornoOperacion(1);

            //Instanciando el comprobante actual
            using (SAT_CL.FacturacionElectronica33.Comprobante c = new SAT_CL.FacturacionElectronica33.Comprobante(Convert.ToInt32(Session["id_registro"])))
            {
                //Si el registro existe
                if (c.id_comprobante33 > 0)
                {
                    //Si el comprobante no se ha timbrado
                    if (c.bit_generado)
                    {
                        resultado = new RetornoOperacion("El comprobante ya se ha timbrado, no es posible editarlo.");
                    }
                }
                else
                {
                    resultado = new RetornoOperacion("El comprobante no fue encontrado.");
                }
            }
            return(resultado.OperacionExitosa);
        }
Exemple #8
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.FacturacionElectronica33.Comprobante c = new SAT_CL.FacturacionElectronica33.Comprobante(Convert.ToInt32(gvComprobante.SelectedDataKey["Id"])))
                            {
                                //Si existe el comprobante
                                if (c.habilitar)
                                {
                                    //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;
        }
        /// <summary>
        /// Evento producido al dar clic sobre algún elemento de menú
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void lkbElementoMenu_Click(object sender, EventArgs e)
        {
            //Determinando el botón pulsado
            switch (((LinkButton)sender).CommandName)
            {
            case "Nuevo":
                //Asignando estatus nuevo
                Session["estatus"] = Pagina.Estatus.Nuevo;
                //Limpiando Id de sesión
                Session["id_registro"] = 0;
                //Limpiando contenido de forma
                inicializaPagina();
                break;

            case "Abrir":
                inicializaAperturaRegistro(130, false);
                break;

            case "Guardar":
                guardaFacturaOtros();
                break;

            case "Editar":
                //Asignando estatus nuevo
                Session["estatus"] = Pagina.Estatus.Edicion;
                //Limpiando contenido de forma
                inicializaPagina();
                break;

            case "Cancelar":
            {
                //Declarando Objeto de Retorno
                RetornoOperacion result = new RetornoOperacion();

                //Instanciando Factura de Otros
                using (SAT_CL.Facturacion.FacturacionOtros fo = new SAT_CL.Facturacion.FacturacionOtros(Convert.ToInt32(Session["id_registro"])))
                {
                    //Validando que exista el Registro
                    if (fo.id_facturacion_otros > 0)
                    {
                        //Instanciando Facturación
                        using (SAT_CL.Facturacion.Facturado fac = new SAT_CL.Facturacion.Facturado(fo.id_facturado))
                        {
                            //Validando que Exista
                            if (fac.id_factura > 0)
                            {
                                //Cancelando Factura
                                result = fac.CancelaFactura(((SAT_CL.Seguridad.Usuario)Session["usuario"]).id_usuario);
                            }
                        }
                    }

                    //Validando que la Operación haya Sido Exitosa
                    if (result.OperacionExitosa)
                    {
                        //Inicializando Página
                        inicializaPagina();
                    }

                    //Mostrando Mensaje de Operación
                    ScriptServer.MuestraNotificacion(this.Page, result, ScriptServer.PosicionNotificacion.AbajoDerecha);
                }
                break;
            }

            case "Eliminar":
            {
                //Declarando Objeto de Retorno
                RetornoOperacion result = new RetornoOperacion();

                //Inicializando Bloque Transaccional
                using (TransactionScope trans = TSDK.Datos.Transaccion.InicializaBloqueTransaccional(IsolationLevel.ReadCommitted))
                {
                    //Instanciando Factura de Otros
                    using (SAT_CL.Facturacion.FacturacionOtros fo = new SAT_CL.Facturacion.FacturacionOtros(Convert.ToInt32(Session["id_registro"])))
                    {
                        //Validando que exista el Registro
                        if (fo.id_facturacion_otros > 0)
                        {
                            //Deshabilitando la relación de la Factura
                            result = fo.DeshabilitaFacturacionOtros(((SAT_CL.Seguridad.Usuario)Session["usuario"]).id_usuario);

                            //Validando que la Operación fuese correcta
                            if (result.OperacionExitosa)
                            {
                                //Instanciando Facturado
                                using (SAT_CL.Facturacion.Facturado fac = new SAT_CL.Facturacion.Facturado(fo.id_facturado))
                                {
                                    //Validando que Existe la Factura
                                    if (fac.id_factura > 0)
                                    {
                                        //Deshabilitando la Factura
                                        result = fac.DeshabilitaFactura(((SAT_CL.Seguridad.Usuario)Session["usuario"]).id_usuario);

                                        //Validando que la Operación fuese Exitosa
                                        if (result.OperacionExitosa)
                                        {
                                            //Asignando estatus nuevo
                                            Session["estatus"] = Pagina.Estatus.Nuevo;

                                            //Limpiando contenido de forma
                                            inicializaPagina();

                                            //Completando Transacción
                                            trans.Complete();
                                        }
                                    }
                                }
                            }
                        }
                    }
                }

                break;
            }

            case "Bitacora":
                //Si hay un registro en sesión
                if (Session["id_registro"].ToString() != "0")
                {
                    inicializaBitacora(Session["id_registro"].ToString(), "130", "Facturación Otros");
                }
                break;

            case "Referencias":
                //Si hay un registro en sesión
                if (Session["id_registro"].ToString() != "0")
                {
                    inicializaReferenciaRegistro(Session["id_registro"].ToString(), "130", ((UsuarioSesion)Session["usuario_sesion"]).id_compania_emisor_receptor.ToString());
                }
                break;

            case "Archivos":
                //Si hay un registro en sesión
                if (Session["id_registro"].ToString() != "0")
                {
                    inicializaArchivosRegistro(Session["id_registro"].ToString(), "130", "0");
                }
                break;

            case "Acerca":
                //TODO: Implementar uso de acerca de
                break;

            case "Ayuda":
                //Obteniendo Comprobante
                using (SAT_CL.FacturacionElectronica33.Comprobante cmp = new SAT_CL.FacturacionElectronica33.Comprobante(100))
                    using (SAT_CL.Global.CompaniaEmisorReceptor cer = new SAT_CL.Global.CompaniaEmisorReceptor(((SAT_CL.Seguridad.UsuarioSesion)Session["usuario_sesion"]).id_compania_emisor_receptor))
                    {
                        //Obteniendo PDF en Bytes
                        byte[] cfdi_pdf = cmp.GeneraPDFComprobantePagoV33();

                        //Descargando Archivo PDF
                        TSDK.Base.Archivo.DescargaArchivo(cfdi_pdf, string.Format("{0}_{1}{2}.pdf", cer.nombre_corto != "" ? cer.nombre_corto : cer.rfc, cmp.serie, cmp.folio), TSDK.Base.Archivo.ContentType.application_PDF);
                    }
                //Construyendo URL
                //string urlReporte = TSDK.Base.Cadena.RutaRelativaAAbsoluta("~/FacturacionElectronica33/FacturacionOtrosV33.aspx", "~/RDLC/Reporte.aspx");
                //Instanciando nueva ventana de navegador para apertura de registro
                //TSDK.ASP.ScriptServer.AbreNuevaVentana(string.Format("{0}?idTipoReporte={1}&idRegistro={2}", urlReporte, "ComprobantePago", 100), "Comprobante de Pago", "location=NO,toolbar=NO,scrollbars=YES,menubar=NO,status=YES,width=800,height=500", Page);
                //TSDK.ASP.ScriptServer.AbreNuevaVentana(string.Format("{0}?idTipoReporte={1}&idRegistro={2}", urlReporte, "DocumentosPago", 28307), "Documentos del Pago", "location=NO,toolbar=NO,scrollbars=YES,menubar=NO,status=YES,width=800,height=500", Page);
                break;

                /*/
                 * case "Imprimir":
                 *  {
                 *      //Obteniendo Comprobante
                 *      using (SAT_CL.FacturacionElectronica33.Comprobante cmp = new SAT_CL.FacturacionElectronica33.Comprobante(100))
                 *      using (SAT_CL.Global.CompaniaEmisorReceptor cer = new SAT_CL.Global.CompaniaEmisorReceptor(((SAT_CL.Seguridad.UsuarioSesion)Session["usuario_sesion"]).id_compania_emisor_receptor))
                 *      {
                 *          //Obteniendo PDF en Bytes
                 *          byte[] cfdi_pdf = cmp.GeneraPDFComprobantePagoV33();
                 *
                 *          //Descargando Archivo PDF
                 *          TSDK.Base.Archivo.DescargaArchivo(cfdi_pdf, string.Format("{0}_{1}{2}.pdf", cer.nombre_corto != "" ? cer.nombre_corto : cer.rfc, cmp.serie, cmp.folio), TSDK.Base.Archivo.ContentType.application_PDF);
                 *      }
                 *      //Construyendo URL
                 *      string urlReporte = TSDK.Base.Cadena.RutaRelativaAAbsoluta("~/FacturacionElectronica33/FacturacionOtrosV33.aspx", "~/RDLC/Reporte.aspx");
                 *      //Instanciando nueva ventana de navegador para apertura de registro
                 *      TSDK.ASP.ScriptServer.AbreNuevaVentana(string.Format("{0}?idTipoReporte={1}&idRegistro={2}", urlReporte, "ComprobantePago", 100), "Comprobante de Pago", "location=NO,toolbar=NO,scrollbars=YES,menubar=NO,status=YES,width=800,height=500", Page);
                 *      //TSDK.ASP.ScriptServer.AbreNuevaVentana(string.Format("{0}?idTipoReporte={1}&idRegistro={2}", urlReporte, "DocumentosPago", 28307), "Documentos del Pago", "location=NO,toolbar=NO,scrollbars=YES,menubar=NO,status=YES,width=800,height=500", Page);
                 *      break;
                 *  }//*/
            }
        }
        /// <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;
                    }
                    }
                }
            }
        }
Exemple #12
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(), "209", "Comprobante Fiscal Digital v3.3");
                break;

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

            case "VerTimbre":
                //Validamos Existencia de comprobante
                if (Convert.ToInt32(Session["id_registro"]) != 0)
                {
                    //Instancia comprobante
                    using (SAT_CL.FacturacionElectronica33.Comprobante c = new SAT_CL.FacturacionElectronica33.Comprobante(Convert.ToInt32(Session["id_registro"])))
                    {
                        //Validamos Si se Genero la Factura
                        if (c.bit_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("~/FacturacionElectronica33/ComprobanteV33.aspx", "~/RDLC/Reporte.aspx");

                //Instanciamos Comprobante
                using (SAT_CL.FacturacionElectronica33.Comprobante objComprobante = new SAT_CL.FacturacionElectronica33.Comprobante(Convert.ToInt32(Session["id_registro"])))
                {
                    //Validamos que exista el Comprobante
                    if (objComprobante.id_comprobante33 > 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_comprobante33), "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;
            }
        }
Exemple #13
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";
                //Serie
                txtSerie.Text = "";
                //Folio
                txtFolio.Text = "";
                //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();
                }
                //Domicilio Emisor
                cargaDomicilioRequerido("emisor");
                //Sucursal
                ddlSucursal.SelectedValue = "0";
                //Receptor y Domicilio receptor
                txtReceptor.Text = "";
                //Método de Pago predeterminado "Transferencia Electrónica"
                ddlMetodoPago.SelectedValue = "5";
                //Tipo de Comprobante
                ddlTipoComprobante.SelectedValue = "1";
                //Estatus
                ddlEstatus.SelectedValue = "1";
                //Confirmacion
                txtConfirmacion.Text = "";
                //Régimen Fiscal
                txtRegimenFiscal.Text = "";
                //Uso CFDI
                ddlUsoCFDI.SelectedValue = "";
                //Condiciones de Pago
                txtCondicionesPago.Text = "";
                //Forma de Pago "Una sola exhibición"
                ddlFormaPago.SelectedValue = "1";
                //Moneda
                ddlMoneda.SelectedValue = "1";
                //Tipo de Cambio
                txtTipoCambio.Text = "1.0000";
                //Fechas de Captura
                txtFechaCaptura.Text = "";
                //Fecha de Expedición
                txtFechaExpedicion.Text = "";
                //Lugar de Expedición
                cargaDomicilioRequerido("lugar_expedicion");
                //Check timbrado
                chkGenerado.Checked = false;
                //Sello digital
                txtSelloDigital.Text = "";
                //fecha Cancelación
                txtFechaCancelacion.Text = "";
                //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.FacturacionElectronica33.Comprobante c = new SAT_CL.FacturacionElectronica33.Comprobante(Convert.ToInt32(Session["id_registro"])))
                {
                    //Asignando valores de registro
                    //Id de Registro
                    lblID.Text = c.id_comprobante33.ToString();
                    //Serie
                    txtSerie.Text = c.serie;
                    //Folio
                    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();
                    //Receptor y Domicilio receptor
                    using (CompaniaEmisorReceptor r = new CompaniaEmisorReceptor(c.id_compania_receptor))
                    {
                        txtReceptor.Text = r.nombre + "   ID:" + r.id_compania_emisor_receptor.ToString();
                    }
                    //Método de Pago predeterminado "Transferencia Electrónica"
                    ddlMetodoPago.SelectedValue = c.id_metodo_pago.ToString();
                    //Tipo de Comprobante
                    ddlTipoComprobante.SelectedValue = ((byte)c.id_tipo_comprobante).ToString();
                    //Estatus
                    ddlEstatus.SelectedValue = ((byte)c.id_estatus_vigencia).ToString();
                    //Condiciones de Pago
                    txtCondicionesPago.Text = c.condicion_pago.ToString();
                    //Forma de Pago "Una sola exhibición"
                    ddlFormaPago.SelectedValue = c.id_forma_pago.ToString();
                    //Moneda
                    ddlMoneda.SelectedValue = c.id_moneda.ToString();
                    //Tipo de Cambio
                    txtTipoCambio.Text = c.tipo_cambio.ToString();
                    //Fechas de Captura
                    txtFechaCaptura.Text = c.fecha_captura.ToString("yyyy/MM/dd hh:mm:ss tt");
                    //Fecha de Expedición
                    txtFechaExpedicion.Text = Fecha.ConvierteDateTimeString(c.fecha_expedicion, "yyyy/MM/dd hh:mm:ss tt");
                    //Lugar de Expedición
                    txtLugarExpedicion.Text = c.lugar_expedicion;
                    //Check Timbrado
                    chkGenerado.Checked = c.bit_generado;
                    //Sello Digital
                    txtSelloDigital.Text = c.sello;
                    //fecha Cancelación
                    txtFechaCancelacion.Text = Fecha.ConvierteDateTimeString(c.fecha_cancelacion, "yyyy/MM/dd hh:mm:ss tt");

                    //Totales de Comprobante
                    lblSubtotalCaptura.Text    = string.Format("{0:c4}", c.subtotal_captura);
                    lblSubtotalNacional.Text   = string.Format("{0:c4}", c.subtotal_nacional);
                    lblDescuentosCaptura.Text  = string.Format("{0:c4}", c.descuentos_captura);
                    lblDescuentosNacional.Text = string.Format("{0:c4}", c.descuentos_nacional);
                    lblImpuestosCaptura.Text   = string.Format("{0:c4}", c.impuestos_captura);
                    lblImpuestosNacional.Text  = string.Format("{0:c4}", c.impuestos_nacional);
                    lblTotalCaptura.Text       = string.Format("{0:c4}", c.total_captura);
                    lblTotalNacional.Text      = string.Format("{0:c4}", c.total_nacional);
                }
                break;
            }
            //Estableciendo indice de tab por default
            //tbcComprobante.ActiveTabIndex = 0;
        }
Exemple #14
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnAccionSustitucion_Click(object sender, EventArgs e)
        {
            //Obteniendo Control
            Button btn = (Button)sender;

            //Validando Comando
            switch (btn.CommandName)
            {
            case "Aceptar":
            {
                //Declarando Objeto de Retorno
                RetornoOperacion retorno = new RetornoOperacion();
                int idUsuario            = ((SAT_CL.Seguridad.Usuario)Session["usuario"]).id_usuario;

                /** Validando que Tanto la Factura como el Servicio esten seleccionado **/
                //Facturas
                if (gvFacturacionOtros.SelectedIndex != -1)
                {
                    //Servicios
                    if (gvServicios.SelectedIndex != -1)
                    {
                        //Inicializando Bloque Transaccional
                        using (TransactionScope scope = Transaccion.InicializaBloqueTransaccional(System.Transactions.IsolationLevel.ReadCommitted))
                        {
                            //Instanciando Servicio, Facturacion Otros, Comprobantes y Facturados
                            using (FacturacionOtros fo = new FacturacionOtros(Convert.ToInt32(gvFacturacionOtros.SelectedDataKey["IdFO"])))
                                using (Facturado fac_fo = new Facturado(Convert.ToInt32(gvFacturacionOtros.SelectedDataKey["IdFacturado"])),
                                       fac_serv = new Facturado(Convert.ToInt32(gvServicios.SelectedDataKey["IdFacturado"])))
                                    using (SAT_CL.Documentacion.Servicio serv = new SAT_CL.Documentacion.Servicio(Convert.ToInt32(gvServicios.SelectedDataKey["IdServicio"])))
                                        using (SAT_CL.FacturacionElectronica33.Comprobante cfdi = new SAT_CL.FacturacionElectronica33.Comprobante(Convert.ToInt32(gvFacturacionOtros.SelectedDataKey["IdCFDI"])))
                                        {
                                            //Validando Facturacion de Otros
                                            if (fo.habilitar && fac_fo.habilitar)
                                            {
                                                //Validando Servicio
                                                if (serv.habilitar && fac_serv.habilitar)
                                                {
                                                    //Validando Facturacion Electronica
                                                    if (cfdi.habilitar)
                                                    {
                                                        //Validando Clientes
                                                        if (fo.id_cliente_receptor == serv.id_cliente_receptor)
                                                        {
                                                            //Deshabilitando Facturación de Otros
                                                            retorno = fo.DeshabilitaFacturacionOtros(idUsuario);

                                                            //Validando Operación
                                                            if (retorno.OperacionExitosa)
                                                            {
                                                                //Deshabilitando Facturado del Servicio
                                                                retorno = fac_serv.DeshabilitaFactura(idUsuario);

                                                                //Validando Operación
                                                                if (retorno.OperacionExitosa)
                                                                {
                                                                    //Actualizando Facturado (FO) en Facturado (Servicio)
                                                                    retorno = fac_fo.ActualizaServicio(serv.id_servicio, idUsuario);

                                                                    //Validando Operación
                                                                    if (retorno.OperacionExitosa)
                                                                    {
                                                                        //Actualizando Origen del CFDI
                                                                        retorno = cfdi.ActualizaOrigenComprobante(SAT_CL.FacturacionElectronica33.Comprobante.OrigenDatos.Facturado, idUsuario);
                                                                    }
                                                                }
                                                            }
                                                        }
                                                        else
                                                        {
                                                            //Instanciando Excepción
                                                            retorno = new RetornoOperacion("Los Clientes no coinciden");
                                                        }
                                                    }
                                                    else
                                                    {
                                                        //Instanciando Excepción
                                                        retorno = new RetornoOperacion("No se puede recuperar los Datos de Facturación Electrónica");
                                                    }
                                                }
                                                else
                                                {
                                                    //Instanciando Excepción
                                                    retorno = new RetornoOperacion("No se puede recuperar los Datos del Servicio");
                                                }
                                            }
                                            else
                                            {
                                                //Instanciando Excepción
                                                retorno = new RetornoOperacion("No se puede recuperar los Datos de la Facturación de Otros");
                                            }
                                        }

                            //Validando Operación Final
                            if (retorno.OperacionExitosa)
                            {
                                //Completando Operaciones
                                scope.Complete();
                            }
                        }
                    }
                    else
                    {
                        //Instanciando Excepción
                        retorno = new RetornoOperacion("Debe seleccionar un Servicio");
                    }
                }
                else
                {
                    //Instanciando Excepción
                    retorno = new RetornoOperacion("Debe seleccionar una Factura");
                }

                //Validando operación
                if (retorno.OperacionExitosa)
                {
                    //Ocultando Ventana Modal
                    alternaVentana(btn, "Sustitucion");

                    //Recargando Busquedas
                    buscaFacturacion();
                    buscaServicios();

                    //Inicializando Indices
                    Controles.InicializaIndices(gvFacturacionOtros);
                    Controles.InicializaIndices(gvServicios);
                }

                //Mostrando Mensaje de la Operación
                ScriptServer.MuestraNotificacion(btn, retorno, ScriptServer.PosicionNotificacion.AbajoDerecha);

                break;
            }

            case "Cancelar":
            {
                //Ocultando Ventana Modal
                alternaVentana(btn, "Sustitucion");

                //Inicializando Indices
                Controles.InicializaIndices(gvFacturacionOtros);
                Controles.InicializaIndices(gvServicios);
                break;
            }
            }
        }