/// <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; }
/// <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); } } }
/// <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; }
/// <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); } } } } }
/// <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; }
/// <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); }
/// <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; } } } } }
/// <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; } }
/// <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; }
/// <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; } } }