/// <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.FacturacionElectronica.Comprobante c = new SAT_CL.FacturacionElectronica.Comprobante(Convert.ToInt32(Session["id_registro"]))) { //Si el registro existe if (c.id_comprobante > 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> /// Cancelar CFDI /// </summary> private RetornoOperacion cancelaCFDI() { //Declaramos resultado RetornoOperacion resultado = new RetornoOperacion(); //Inicializando Bloque Transaccional using (TransactionScope trans = TSDK.Datos.Transaccion.InicializaBloqueTransaccional(System.Transactions.IsolationLevel.ReadCommitted)) { //Instanciamos Comprobamte using (SAT_CL.FacturacionElectronica.Comprobante objCompobante = new SAT_CL.FacturacionElectronica.Comprobante(Convert.ToInt32(gvComprobantes.SelectedDataKey["Id"]))) { //Enviamos link resultado = objCompobante.CancelaComprobante(((SAT_CL.Seguridad.Usuario)Session["usuario"]).id_usuario); //Validamos Resultado if (resultado.OperacionExitosa) { //Insertando Referencia resultado = SAT_CL.Global.Referencia.InsertaReferencia(objCompobante.id_comprobante, 119, SAT_CL.Global.ReferenciaTipo.ObtieneIdReferenciaTipo(0, 119, "Motivo Cancelación", 0, "Facturacion Electrónica"), txtMotivo.Text, TSDK.Base.Fecha.ObtieneFechaEstandarMexicoCentro(), ((SAT_CL.Seguridad.Usuario)Session["usuario"]).id_usuario, true); //Validando Operación Exitosa if (resultado.OperacionExitosa) { //Instanciando Aplicaciones using (DataTable dtAplicaciones = SAT_CL.CXC.FichaIngresoAplicacion.ObtieneFichasFacturas(0, Convert.ToInt32(gvComprobantes.SelectedDataKey["IdFactura"]))) { //Validando que existan Aplicaciones if (TSDK.Datos.Validacion.ValidaOrigenDatos(dtAplicaciones)) { //Recorriendo Registros foreach (DataRow dr in dtAplicaciones.Rows) { //Instanciando Aplicacion de la Factura using (SAT_CL.CXC.FichaIngresoAplicacion fia = new SAT_CL.CXC.FichaIngresoAplicacion(Convert.ToInt32(dr["Id"]))) { //Validando que exista la Aplicación if (fia.id_ficha_ingreso_aplicacion > 0) { //Deshabilitando Ficha de Ingreso resultado = fia.DeshabilitarFichaIngresoAplicacion(((SAT_CL.Seguridad.Usuario)Session["usuario"]).id_usuario); //Validando Operación Exitosa if (!resultado.OperacionExitosa) { //Terminando Ciclo break; } else { //Instanciando Ficha de Ingreso using (SAT_CL.Bancos.EgresoIngreso fi = new SAT_CL.Bancos.EgresoIngreso(fia.id_egreso_ingreso)) { //Validando que exista el Registro if (fi.habilitar) { //Obteniendo Facturas Aplicadas using (DataTable dtAplicacionesFicha = SAT_CL.CXC.FichaIngresoAplicacion.ObtieneFichasFacturas(fi.id_egreso_ingreso, 0)) { //Si no existen Aplicaciones if (!TSDK.Datos.Validacion.ValidaOrigenDatos(dtAplicacionesFicha)) { //Actualizando Estatus de la Ficha resultado = fi.ActualizaFichaIngresoEstatus(SAT_CL.Bancos.EgresoIngreso.Estatus.Capturada, ((SAT_CL.Seguridad.Usuario)Session["usuario"]).id_usuario); //Validando Operación Correcta if (resultado.OperacionExitosa) { //Terminando Ciclo break; } } } } } } } } } //Validando Desaplicación Exitosa if (resultado.OperacionExitosa) { //Declaramos Variable int facturado = 0; //Obtenemos Facturado Fcaturacion facturado = FacturadoFacturacion.ObtieneRelacionFacturaElectronica(objCompobante.id_comprobante); //Instanciamos FcaturadoFacturacion using (FacturadoFacturacion objfacturado = new FacturadoFacturacion(facturado)) { //Instanciamos Facturado using (Facturado objFacturado = new Facturado(objfacturado.id_factura)) { //Actualizando Estatus de la Factura resultado = objFacturado.ActualizaEstatusFactura(Facturado.EstatusFactura.Registrada, ((SAT_CL.Seguridad.Usuario)Session["usuario"]).id_usuario); } } } } else { //Instanciando Factura resultado = new RetornoOperacion(Convert.ToInt32(gvComprobantes.SelectedDataKey["IdFactura"])); } //Validando Operación Exitosa if (resultado.OperacionExitosa) { //Cerramo Ventana Modal alternaVentanaModal("CancelarCFDI", btnAceptarCancelacionCFDI); //Carga Comprobante cargaComprobantes(); //Completando Transacción trans.Complete(); } } } } } } //Devolvemos Valor return(resultado); }