Пример #1
0
        /// <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);
        }
Пример #2
0
        /// <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);
        }