/// <summary> /// Evento disparado al Descargar el Link /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void link_descarga_Click(object sender, EventArgs e) { //Creamos lista de rutas y errrores List <KeyValuePair <string, byte[]> > rutas = new List <KeyValuePair <string, byte[]> >(); List <string> errores = new List <string>(); //Declarando Archivo Final byte[] final_file = null; //Validando que este disponible la Descarga if (validaDescarga()) { //Instanciando Link de Descarga using (LinkDescarga link = new LinkDescarga(10)) { //Obtenemos Id de Comprobantes using (DataTable mit = DetalleLinkDescarga.RecuperaIdComprobantes(link.idLinkDescarga)) { //Validamos Origen de Datos if (Validacion.ValidaOrigenDatos(mit)) { //Rrecorremos los Comprobantes foreach (DataRow r in mit.Rows) { //Instanciando Comprobante using (SAT_CL.FacturacionElectronica.Comprobante cfdi = new SAT_CL.FacturacionElectronica.Comprobante(r.Field <int>("IdComprobante"))) { //validando si Existe la Ruta if (File.Exists(cfdi.ruta_xml)) { //Añadiendo Archivo al Arreglo de Bytes rutas.Add(new KeyValuePair <string, byte[]>(cfdi.serie + cfdi.folio.ToString(), File.ReadAllBytes(cfdi.ruta_xml))); } //Asignando la Ruta al primer nivel del Arreglo rutas.Add(new KeyValuePair <string, byte[]>(cfdi.serie + cfdi.folio.ToString() + ".pdf", cfdi.GeneraPDFComprobante())); } } //Añadimos archivos al Zip final_file = TSDK.Base.Archivo.ConvirteArchivoZIP(rutas, out errores); if (final_file != null) { //Guardando Archivo en Session Session["ZIP"] = final_file; //Declarando variable a Enviar String url; url = String.Format("../../UserControls/Prueba.aspx?id={0}", link.idLinkDescarga); //Abre Nueva Ventana TSDK.ASP.ScriptServer.AbreNuevaVentana(url, "AbreVentana", 200, 200, false, false, false, true, true, Page); //Recarga la Forma inicializaPagina(); } } } } } }
/// <summary> /// Deshabilita un Descuento /// </summary> /// <param name="id_usuario"></param> /// <returns></returns> public RetornoOperacion DeshabiltaDescuento(int id_usuario) { //Declaramos Objeto Retorno RetornoOperacion resultado = new RetornoOperacion(); //Creamos la transacción using (System.Transactions.TransactionScope scope = Transaccion.InicializaBloqueTransaccional(System.Transactions.IsolationLevel.ReadCommitted)) { //Realizando actualizacion resultado = editaDescuento(this._id_motivo_descuento, this._id_comprobante, this._porcentaje, this._cantidad_moneda_captura, this._cantidad_moneda_nacional, id_usuario, false); //Editamos Descuento del Comprobante if (resultado.OperacionExitosa) { //Guardando Id de Descuento afectado int id_descuento = resultado.IdRegistro; //Instanciamos Comprobante using (Comprobante objcomprobante = new Comprobante(id_comprobante)) { resultado = objcomprobante.ActualizaDescuento(0, 0, id_usuario); } //Validamos edición del comprobante if (resultado.OperacionExitosa) { resultado = Impuesto.RecalcularImpuestos(id_comprobante, id_usuario); } //Si no hay errores if (resultado.OperacionExitosa) { resultado = new RetornoOperacion(id_descuento); //Finalizamos transacción scope.Complete(); } } } return(resultado); }
/// <summary> /// Recalcula un Impuesto ligado /// </summary> /// <param name="id_comprobante"></param> /// <param name="id_usuario"></param> /// <returns></returns> public static RetornoOperacion RecalcularImpuestos(int id_comprobante, int id_usuario) { //Declaramos Objeto resultado RetornoOperacion resultado = new RetornoOperacion(0); int id_concepto = 0; decimal descuento_importe_moneda_nacional = 0, descuento_importe_moneda_captura = 0, impuesto_captura = 0, impuesto_nacional = 0; //Creamos la transacción using (System.Transactions.TransactionScope scope = Transaccion.InicializaBloqueTransaccional(System.Transactions.IsolationLevel.ReadCommitted)) { using (Comprobante objComprobante = new Comprobante(id_comprobante)) { //Obtenemos instancia de impuesto Impuesto impuesto = RecuperaImpuestoComprobante(id_comprobante); //Validamos existencia de impuesto if (impuesto.id_impuesto > 0) { //Cargamos Conceptos Existentes ligado al comprobante using (DataTable mitConceptos = Concepto.RecuperaConceptosComprobantes(id_comprobante)) { //Cargamos Detalles de Impuesto using (DataTable mitDetalleImpuesto = DetalleImpuesto.CargaDetallesImpuesto(impuesto.id_impuesto)) { //Validamos Origen de Datos if (Validacion.ValidaOrigenDatos(mitDetalleImpuesto)) { //rrecorremos cada uno de los Detalles de Impuestos foreach (DataRow r in mitDetalleImpuesto.Rows) { //Instanciamos Detalle Impimpuesto using (DetalleImpuesto detalleImpuesto = new DetalleImpuesto(r.Field <int>("Id"))) { //Valida Detalle Impuesto if (detalleImpuesto.id_detalle_impuesto > 0) { //Cargamos Concepto Detalle Impuesto using (DataTable mitConceptoDetalleImpuesto = ConceptoDetalleImpuesto.RecuperaConceptosDetalles(detalleImpuesto.id_detalle_impuesto)) { //Validamos Origen de Datos if (Validacion.ValidaOrigenDatos(mitConceptoDetalleImpuesto)) { //Recorremos cada uno de los Conceptos foreach (DataRow rConceptoDetalleImpuesto in mitConceptoDetalleImpuesto.Rows) { //Validamos Existencia de Conceptos if (Validacion.ValidaOrigenDatos(mitConceptos)) { //Validamos Existencia del Concepto id_concepto = (from DataRow rConcepto in mitConceptos.Rows where rConcepto.Field <int>("Id") == rConceptoDetalleImpuesto.Field <int>("IdConcepto") select rConcepto.Field <int>("Id")).FirstOrDefault(); } //Validamos existencia de concepto if (id_concepto == 0) { //Desahabilita Concepto Detalle Impuesto using (ConceptoDetalleImpuesto objConceptoDetalleImpuesto = new ConceptoDetalleImpuesto (rConceptoDetalleImpuesto.Field <int>("Id"))) { //Deshabilitamos liga resultado = objConceptoDetalleImpuesto.DeshabilitaConceptoDetalleImpuesto(id_usuario); //Validamos resultado if (resultado.OperacionExitosa) { /*Validamos Existencia de concepto Detalle Impueston de lo contrario deshabilitamos el * /detalle impuesto*/ if (!Validacion.ValidaOrigenDatos(ConceptoDetalleImpuesto.RecuperaConceptosDetalles(detalleImpuesto.id_detalle_impuesto))) { //Actualizamos Total Detalles resultado = detalleImpuesto.ActualizaTotalDetalleImpuesto(id_usuario); //Validamos Actualizacion if (resultado.OperacionExitosa) { //Actualizamos Objeto detalleImpuesto.cargaAtributosInstancia(detalleImpuesto.id_detalle_impuesto); //Deshabilita Detalle Impuesto resultado = detalleImpuesto.DeshabiltaSoloDetalleImpuesto(id_usuario); break; } } } } } else { //Instanciamos Concepto using (Concepto objconcepto = new Concepto(id_concepto)) { //Validamos Concepto if (objconcepto.id_concepto > 0) { //Obtenemos el Descuento Por Concepto objComprobante.ObtieneDescuentoPorConcepto(objconcepto.importe_moneda_captura, objconcepto.importe_moneda_nacional, out descuento_importe_moneda_captura, out descuento_importe_moneda_nacional); //Calculamos Impuesto Captura impuesto_captura = (objconcepto.importe_moneda_captura - descuento_importe_moneda_captura) * (detalleImpuesto.tasa / 100); //Calculamos Impuesto Nacional impuesto_nacional = (objconcepto.importe_moneda_nacional - descuento_importe_moneda_nacional) * (detalleImpuesto.tasa / 100); //Instanciamos Concepto Detalle Impuesto using (ConceptoDetalleImpuesto objConceptoDetalleImpuesto = new ConceptoDetalleImpuesto (rConceptoDetalleImpuesto.Field <int>("Id"))) { //Validamos Concepto Detalle Impuesto if (objConceptoDetalleImpuesto.id_concepto_detalle_impuesto > 0) { //Editamos Monto resultado = objConceptoDetalleImpuesto.EditaConceptoDetalleImpuesto(objConceptoDetalleImpuesto.id_concepto, objConceptoDetalleImpuesto.id_detalle_impuesto, impuesto_captura, impuesto_nacional, id_usuario); } } } else { resultado = new RetornoOperacion("No se encontró datos complementario concepto"); } } } } } } //Actualiamos Detalle Impuesto detalleImpuesto.cargaAtributosInstancia(r.Field <int>("Id")); //Validamos existenci ade Detella if (detalleImpuesto.habilitar == true) { //Validamos Inserccion de Concepto Detalle Impuesto if (resultado.OperacionExitosa) { //Actualizamos Total Detalles resultado = detalleImpuesto.ActualizaTotalDetalleImpuesto(id_usuario); } } } } } } } } //Si se actualizo correctamente Detalle Impuesto if (resultado.OperacionExitosa) { resultado = impuesto.ActualizaTotalImpuesto(id_usuario); } //Si se actualizo correctamente el Impuesto if (resultado.OperacionExitosa) { //Actualizamos Instnacia Comprobante resultado = objComprobante.ActualizaImpuestosComprobante(impuesto.id_impuesto, id_usuario); } } } //Validamos Resultado if (resultado.OperacionExitosa) { //Finalizamos transacción scope.Complete(); } } return(resultado); }
/// <summary> /// Importa Y Timbra Liquidación /// </summary> /// <param name="serie"></param> /// <param name="ruta_xslr_co"></param> /// <param name="ruta_xslr_co_local"></param> /// <param name="id_usuario"></param> /// <returns></returns> public RetornoOperacion ImportaTimbraNominaEmpleadoComprobante_V3_2(string serie, int id_cuenta_pago, string ruta_xslr_co, string ruta_xslr_co_local, int id_usuario) { //Declaramos Objeto Retorno RetornoOperacion resultado = new RetornoOperacion(); //Creamos la transacción using (System.Transactions.TransactionScope scope = Transaccion.InicializaBloqueTransaccional(System.Transactions.IsolationLevel.ReadCommitted)) { //Validamos Estatus de la Nómina if ((Estatus)this._id_estatus == Estatus.Registrado) { //Obtenemos los Datos de Nomina Empleado de acuerdo al esquema de Facturación Electrónica using (DataSet dsNomina = ObtienesDatosFacturaElectronica(this._id_nomina_empleado, id_cuenta_pago), dsArmadoXML = CargaArmadoXMLReciboNomina(this._id_nomina_empleado, id_cuenta_pago)) { //Validamos Registros if (Validacion.ValidaOrigenDatos(dsNomina)) { //Intsanciamos Nómina using (Nomina objNomina = new Nomina(this._id_nomina)) { //Importamos Factura a Factura Electrónica resultado = FEv32.Comprobante.ImportaReciboNomina_V3_2(dsNomina.Tables["Table"], objNomina.id_compania_emisora, objNomina.id_sucursal, dsNomina.Tables["Table1"], null, dsNomina.Tables["Table3"], dsNomina.Tables["Table2"], dsNomina.Tables["Table5"], id_usuario); } //Validamos Resultaod de Timbrado if (resultado.OperacionExitosa) { //Instaciamos Comprobante using (FEv32.Comprobante objComprobante = new FEv32.Comprobante(resultado.IdRegistro)) { //Validamos Id Comprobante if (objComprobante.id_comprobante > 0) { //Actualizmos Id de Comprobantes resultado = EditaNominaEmpleado(this._id_nomina, this._id_empleado, (Estatus)this._id_estatus, resultado.IdRegistro, this._id_comprobante33, this._total_gravado_percepcion, this._total_gravado_deduccion, this._total_exento_percepcion, this._total_exento_deduccion, this._total_percepcion, this._total_deduccion, id_usuario); //Validamos Resultado if (resultado.OperacionExitosa) { //Timbramos resultado = objComprobante.TimbraReciboNomina_V3_2(serie, id_usuario, ruta_xslr_co, ruta_xslr_co_local, false, dsArmadoXML.Tables["Table"], dsArmadoXML.Tables["Table2"], dsArmadoXML.Tables["Table1"], dsArmadoXML.Tables["Table4"], dsArmadoXML.Tables["Table3"], dsArmadoXML.Tables["Table5"], dsArmadoXML.Tables["Table6"]); //Actualizamos Estatus de la Nómina de Empleado if (resultado.OperacionExitosa) { //Recargamos Atributos if (this.ActualizaNominaEmpleado()) { //Actualizamos Estatus resultado = ActualizaEstatus(Estatus.Timbrado, id_usuario); //Validamos Resultado if (resultado.OperacionExitosa) { resultado = new RetornoOperacion(this._id_nomina_empleado, "La Nómina del Empleado se ha Timbrado " + objComprobante.serie + objComprobante.folio.ToString(), true); //Finalizamos transacción scope.Complete(); } } else { //Mostramos Mensaje Error resultado = new RetornoOperacion("Error al refrescar Atributos."); } } } } } } } else { resultado = new RetornoOperacion("No se encontró Información para exportación de la FE."); } } } else { //Mostramos Mensaje Error resultado = new RetornoOperacion("El estatus del Nómina no permite su edición."); } } //Devolvemos Resultado return(resultado); }
/// <summary> // Método encargado de Actualizar el Estatus de la Nómina de Empleado /// </summary> /// <param name="estatus">Estatus de la Nómina Empleado</param> /// <param name="id_usuario">Id Usuario</param> /// <returns></returns> public RetornoOperacion ActualizaEstatus(Estatus estatus, int id_usuario) { //Declarando Objeto de Retorno RetornoOperacion result = new RetornoOperacion(); //Declarando Bloque Transaccional using (TransactionScope trans = TSDK.Datos.Transaccion.InicializaBloqueTransaccional(System.Transactions.IsolationLevel.ReadCommitted)) { //Devolviendo Resultado Obtenido result = this.actualizaAtributosBD(this._id_nomina, this._id_empleado, (byte)estatus, this._id_comprobante, this._id_comprobante33, this._total_gravado_percepcion, this._total_gravado_deduccion, this._total_exento_percepcion, this._total_exento_deduccion, this._total_percepcion, this._total_deduccion, id_usuario, this._habilitar); //Operación Exitosa? if (result.OperacionExitosa) { //Validando estatus Ingresado if (estatus == Estatus.Cancelado) { //Validando Comprobante 3.3 if (this._id_comprobante33 > 0) { //Instanciando Compania using (FEv33.Comprobante cmp = new FEv33.Comprobante(this._id_comprobante33)) { //Validando Comprobante if (cmp.habilitar) { //Aztualizamos el Estatus del Comprobante a Cancelado //result = cmp.CancelaComprobante(id_usuario); } else { //Instanciando Excepción result = new RetornoOperacion("No se puede recuperar el Comprobante v3.3"); } } } //Validando Comprobante 3.2 else if (this._id_comprobante > 0) { //Instanciando Compania using (FEv32.Comprobante cmp = new FEv32.Comprobante(this._id_comprobante)) { //Validando Comprobante if (cmp.habilitar) { //Aztualizamos el Estatus del Comprobante a Cancelado result = cmp.CancelaComprobante(id_usuario); } else { //Instanciando Excepción result = new RetornoOperacion("No se puede recuperar el Comprobante"); } } } } //Operación Exitosa? if (result.OperacionExitosa) { //Instanciando Nomina Empleado result = new RetornoOperacion(this._id_nomina_empleado); //Completando Transacción trans.Complete(); } } } //Devolviendo Resultado Obtenido return(result); }
/// <summary> /// Deshabilita Detalle Impuesto ligado a una transacción /// </summary> /// <param name="id_usuario"></param> /// <returns></returns> public RetornoOperacion DeshabiltaDetalleImpuesto(int id_usuario) { //Declaramos Variable Retorno RetornoOperacion resultado = new RetornoOperacion(0); //Id de registro actualizado int id_detalle_impuesto = 0; //Creamos la transacción using (System.Transactions.TransactionScope scope = Transaccion.InicializaBloqueTransaccional(System.Transactions.IsolationLevel.ReadCommitted)) { //Cargamos los Conceptos Detalles Impuesto ligado a un detalle de Impuesto using (DataTable mit = ConceptoDetalleImpuesto.RecuperaConceptosDetalles(this._id_detalle_impuesto)) { //Validamos Origen de Datos if (Validacion.ValidaOrigenDatos(mit)) { //RRecorremos cada uno de los conceptos detalle Impuesto foreach (DataRow r in mit.Rows) { //Validamos Resultado if (resultado.OperacionExitosa) { //Instanciamos Concepto Detalle Impuesto using (ConceptoDetalleImpuesto objConceptoDetalleImpuesto = new ConceptoDetalleImpuesto(r.Field <int>("Id"))) { //Deshabilitamos Registro resultado = objConceptoDetalleImpuesto.DeshabilitaConceptoDetalleImpuesto(id_usuario); } } else { break; } } } } //Si el resultado es exitosos if (resultado.OperacionExitosa) { //Realizando actualizacion resultado = editaDetalleImpuesto(this._id_impuesto, this._id_tipo_detalle, this._id_impuesto_retenido, this._id_impuesto_trasladado, this._tasa, this._importe_moneda_captura, this._importe_moneda_nacional, id_usuario, false); //Si se Deshabilito el Detalle de Impuesto if (resultado.OperacionExitosa) { //Asignando Id de resultado exitoso id_detalle_impuesto = resultado.IdRegistro; //Actualizamos Total Impuesto using (Impuesto objImpuesto = new Impuesto(this._id_impuesto)) { resultado = objImpuesto.ActualizaTotalImpuesto(id_usuario); //Si se actualizo Impuesto if (resultado.OperacionExitosa) { //Actualizo comprobante using (Comprobante objcomprobante = new Comprobante(objImpuesto.id_comprobante)) { resultado = objcomprobante.ActualizaImpuestosComprobante(objImpuesto.id_impuesto, id_usuario); } } } } } //Si no hay errores if (resultado.OperacionExitosa) //Reasignando resultado general { resultado = new RetornoOperacion(id_detalle_impuesto); //Finalizamos transacción scope.Complete(); } } return(resultado); }
/// <summary> /// Inserta un Detalle Impuesto /// </summary> /// <param name="id_impuesto"></param> /// <param name="id_tipo_detalle"></param> /// <param name="id_impuesto_retenido"></param> /// <param name="id_impuesto_trasladado"></param> /// <param name="tasa"></param> /// <param name="id_usuario"></param> /// <param name="id_comprobante"></param> /// <param name="id_conceptos"></param> /// <returns></returns> public static RetornoOperacion InsertaDetalleImpuesto(int id_impuesto, int id_tipo_detalle, int id_impuesto_retenido, int id_impuesto_trasladado, decimal tasa, int id_usuario, int id_comprobante, int[] id_conceptos) { //Declaramos Variable Impuesto int id_impuesto_registro = id_impuesto; int id_impuesto_detalle_registro = 0; //Declarando objeto de retorno RetornoOperacion resultado = new RetornoOperacion(0); //Creamos la transacción using (System.Transactions.TransactionScope scope = Transaccion.InicializaBloqueTransaccional(System.Transactions.IsolationLevel.ReadCommitted)) { //Instanciamos Comprobante using (Comprobante objComprobante = new Comprobante(id_comprobante)) { //Validamos Existencia de Impuesto if (id_impuesto <= 0) { //Insertamos Impuesto resultado = Impuesto.InsertaImpuesto(id_comprobante, 0, 0, 0, 0, id_usuario); //Asignamod Id Impuesto id_impuesto_registro = resultado.IdRegistro; } //Validamos Resultado if (resultado.OperacionExitosa) { //Inserta Detalle de Impuesto resultado = InsertaDetalleImpuesto(id_impuesto_registro, id_tipo_detalle, id_impuesto_retenido, id_impuesto_trasladado, tasa, 0, 0, id_usuario); //Asignamod Id Impuesto id_impuesto_detalle_registro = resultado.IdRegistro; //Si se inserta el Detalle Impuestos if (resultado.OperacionExitosa) { //Validamos Existencia de Conceptos if (id_conceptos != null) { decimal impuesto_captura = 0, impuesto_nacional = 0, descuento_importe_moneda_nacional = 0, descuento_importe_moneda_captura = 0; //Guardamos cada uno de los Conceptos foreach (int id_concepto in id_conceptos) { //Si el resultado es Exitoso if (resultado.OperacionExitosa) { //Instanciamos Concepto using (Concepto objconcepto = new Concepto(id_concepto)) { //Obtenemos el Descuento Por Concepto objComprobante.ObtieneDescuentoPorConcepto(objconcepto.importe_moneda_captura, objconcepto.importe_moneda_nacional, out descuento_importe_moneda_captura, out descuento_importe_moneda_nacional); //Calculamos Impuesto Captura impuesto_captura = (objconcepto.importe_moneda_captura - descuento_importe_moneda_captura) * (tasa / 100); //Calculamos Impuesto Nacional impuesto_nacional = (objconcepto.importe_moneda_nacional - descuento_importe_moneda_nacional) * (tasa / 100); //Insertamos Concepto Detalle Impuesto resultado = ConceptoDetalleImpuesto.InsertarConceptoDetalleImpuesto(id_concepto, id_impuesto_detalle_registro, impuesto_captura, impuesto_nacional, id_usuario); } } else { break; } } } //Validamos Inserccion de Concepto Detalle Impuesto if (resultado.OperacionExitosa) { //Actualizamos Total Detalle Impuesto using (DetalleImpuesto objDetalleImpuesto = new DetalleImpuesto(id_impuesto_detalle_registro)) { //Actualizamos Total Detalles resultado = objDetalleImpuesto.ActualizaTotalDetalleImpuesto(id_usuario); } //Si se actualizo correctamente Detalle Impuesto if (resultado.OperacionExitosa) { //Instanciamos Impuesto using (Impuesto objImpuesto = new Impuesto(id_impuesto_registro)) { resultado = objImpuesto.ActualizaTotalImpuesto(id_usuario); } } //Si se actualizo correctamente el Impuesto if (resultado.OperacionExitosa) { //Actualizamos Instnacia Comprobante resultado = objComprobante.ActualizaImpuestosComprobante(id_impuesto_registro, id_usuario); } } } } } //Si no hay errores if (resultado.OperacionExitosa) { //Asignando Resultado general con Id de Detalle insertado resultado = new RetornoOperacion(id_impuesto_detalle_registro); //Finalizamos transaccion scope.Complete(); } } return(resultado); }
/// <summary> /// Deshabilitamos un concepto /// </summary> /// <param name="id_usuario"></param> /// <returns></returns> public RetornoOperacion DeshabilitaConcepto(int id_usuario) { //Establecemos Objeto Resultado RetornoOperacion resultado = new RetornoOperacion(0); //Creamos la transacción using (System.Transactions.TransactionScope scope = Transaccion.InicializaBloqueTransaccional(System.Transactions.IsolationLevel.ReadCommitted)) { //Validamos tipo de Concepto no sea Padre if ((TipoConcepto)this._id_tipo_concepto == TipoConcepto.ParteConcepto) { //Realizando actualizacion resultado = editaConcepto(this._id_comprobante, this._id_concepto_padre, this._id_tipo_concepto, this._cantidad, this._id_unidad, this._id_descripcion, this._descripcion_parte, this._numero_identificacion, this._valor_unitario, this._importe_moneda_captura, this._importe_moneda_nacional, id_usuario, false); } else { //Instanciamos Comprobante using (Comprobante objComprobante = new Comprobante(this._id_comprobante)) { //Validamos existencia de descuento if (objComprobante.descuento_moneda_nacional == 0 || objComprobante.descuento_moneda_captura == 0) { //Validamos Existencia de Conceptos Hijos if (Validacion.ValidaOrigenDatos(CargaConceptosPartes(this._id_concepto))) { //Inicialziando párametros object[] parametros = { 4, this._id_concepto, 0, 0, 0, 0, 0, 0, 0, "", 0, 0, 0, 0, false, "", "" }; //Realizando actualización using (DataSet ds = CapaDatos.m_capaDeDatos.EjecutaProcAlmacenadoDataSet(nombre_stored_procedure, parametros)) { //Validamos Origen de Datos if (Validacion.ValidaOrigenDatos(ds)) { //Validando actualziación múltiple resultado = RetornoOperacion.ValidaResultadoOperacionMultiple(ds); } } } //Validamos Deshabilitación hijos if (resultado.OperacionExitosa) { //Deshabilitamos Concepto Padre resultado = editaConcepto(this._id_comprobante, this._id_concepto_padre, this._id_tipo_concepto, this._cantidad, this._id_unidad, this._id_descripcion, this._descripcion_parte, this._numero_identificacion, this._valor_unitario, this._importe_moneda_captura, this._importe_moneda_nacional, id_usuario, false); //Recalcular Impuestos if (resultado.OperacionExitosa) { resultado = Impuesto.RecalcularImpuestos(id_comprobante, id_usuario); //Finalziamos transacción scope.Complete(); } } } else { resultado = new RetornoOperacion("No se puede deshabilitar un concepto, ya que existe un descuento"); } } } } return(resultado); }