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