/// <summary> /// Inserta un Descuento /// </summary> /// <param name="id_motivo_descuento"></param> /// <param name="id_comprobante"></param> /// <param name="porcentaje"></param> /// <param name="cantidad_moneda_captura"></param> /// <param name="cantidad_moneda_nacional"></param> /// <param name="id_usuario"></param> /// <returns></returns> public static RetornoOperacion InsertaDescuento(int id_motivo_descuento, int id_comprobante, decimal porcentaje, decimal cantidad_moneda_captura, decimal cantidad_moneda_nacional, int id_usuario) { //Declarando objeto de retorno RetornoOperacion resultado = new RetornoOperacion(); //Creamos la transacción using (System.Transactions.TransactionScope scope = Transaccion.InicializaBloqueTransaccional(System.Transactions.IsolationLevel.ReadCommitted)) { //Validamos Existencia de Coonceptos if (Validacion.ValidaOrigenDatos(Concepto.RecuperaConceptosComprobantes(id_comprobante))) { //Inicializando arreglo de parámetros object[] param = { 1, 0, id_motivo_descuento, id_comprobante, porcentaje, cantidad_moneda_captura, cantidad_moneda_nacional, id_usuario, true, "", "" }; //Realziando inserción del concepto resultado = CapaDatos.m_capaDeDatos.EjecutaProcAlmacenadoObjeto(_nombre_stored_procedure, param); //Editamos encabezado del Comprobante if (resultado.OperacionExitosa) { //Guardando Id de Descuento afectado int id_descuento = resultado.IdRegistro; //Intsnaciamos Comprobante using (Comprobante objcomprobante = new Comprobante(id_comprobante)) { resultado = objcomprobante.ActualizaDescuento(cantidad_moneda_captura, cantidad_moneda_nacional, id_usuario); } //Actualizamos Impuestos 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(); } } } else { resultado = new RetornoOperacion("No existen conceptos"); } } return(resultado); }
/// <summary> /// Validamos Total Conceptos y Partes /// </summary> /// <returns></returns> public RetornoOperacion ValidaTotalConceptosHijos() { //Declaramos Objeto Resultado RetornoOperacion resultado = new RetornoOperacion(0); //Creamos la transacción using (System.Transactions.TransactionScope scope = Transaccion.InicializaBloqueTransaccional(System.Transactions.IsolationLevel.ReadCommitted)) { //Obtiene Total Conceptos using (DataTable mit = Concepto.CargaConceptosPartes(this.id_concepto)) { //Validamos Origen de Datos if (Validacion.ValidaOrigenDatos(mit)) { //Obtenemos Total Conceptos double ImporteCaptura = (from DataRow r in mit.Rows select r.Field <double>("ImporteCaptura")).Sum(); double ImportelNacional = (from DataRow r in mit.Rows select r.Field <double>("ImporteNacional")).Sum(); //Validamos Totale del Concepto y Conceptos Hijos if (ImporteCaptura == Convert.ToDouble(this._importe_moneda_captura) && ImportelNacional == Convert.ToDouble(this._importe_moneda_nacional)) { } else { resultado = new RetornoOperacion("Lo detalles no coincide con el Total del Concepto."); } } else { resultado = new RetornoOperacion("Lo detalles no coincide con el Total del Concepto."); } } //Validamos Resultado if (resultado.OperacionExitosa) { //Finalizamos transacción scope.Complete(); } } //Obtenemos Resultado 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); }