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