示例#1
0
        /// <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();
                            }
                        }
                    }
                }
            }
        }
示例#2
0
        /// <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);
        }
示例#3
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);
        }
示例#4
0
        /// <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);
        }
示例#5
0
        /// <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);
        }
示例#6
0
        /// <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);
        }
示例#7
0
        /// <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);
        }
示例#8
0
        /// <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);
        }