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