Exemplo n.º 1
0
        /// <summary>
        /// Método encargado de Deshabilitar la Nomina
        /// </summary>
        /// <param name="id_usuario">Usuario que actualiza el Registro</param>
        /// <returns></returns>
        public RetornoOperacion DeshabilitaNominaEmpleado(int id_usuario)
        {
            //Declarando Objeto de Retorno
            RetornoOperacion result = new RetornoOperacion();

            //Declarando Ambiente Transaccional
            using (TransactionScope trans = TSDK.Datos.Transaccion.InicializaBloqueTransaccional(System.Transactions.IsolationLevel.ReadCommitted))
            {
                //Validando que exista un Comprobante
                if (!(this._id_comprobante != 0 && this._id_comprobante33 != 0 && this.estatus == Estatus.Timbrado))
                {
                    //Obteniendo Detalles
                    using (DataTable dtDetallesEmp = DetalleNominaEmpleado.ObtieneDetalleNominaEmpleado(this._id_nomina_empleado))
                    {
                        //Validando que Existen Nominas
                        if (TSDK.Datos.Validacion.ValidaOrigenDatos(dtDetallesEmp))
                        {
                            //Iniciando Ciclo de Detalle
                            foreach (DataRow drDE in dtDetallesEmp.Rows)
                            {
                                //Instanciando Detalle
                                using (DetalleNominaEmpleado dne = new DetalleNominaEmpleado(Convert.ToInt32(drDE["Id"])))
                                {
                                    //Validando Registro
                                    if (dne.habilitar)
                                    {
                                        //Insertando Detalle
                                        result = dne.DeshabilitarDetalleNominaEmpleado(id_usuario);

                                        //Si la Operación no fue Exitosa
                                        if (!result.OperacionExitosa)
                                        {
                                            //Terminando Ciclo
                                            break;
                                        }
                                    }
                                    else
                                    {
                                        //Instanciando Nomina
                                        result = new RetornoOperacion("No Existe el Detalle de la Nomina");

                                        //Terminando Ciclo
                                        break;
                                    }
                                }
                            }
                        }
                        else
                        {
                            //Instanciando Nomina
                            result = new RetornoOperacion(this._id_nomina_empleado);
                        }

                        //Operación Exitosa
                        if (result.OperacionExitosa)
                        {
                            //Obteniendo Detalles
                            using (DataTable dtNominaOtrosEmp = NominaOtros.ObtieneNominaOtros(this._id_nomina_empleado))
                            {
                                //Validando que Existen Nominas
                                if (TSDK.Datos.Validacion.ValidaOrigenDatos(dtNominaOtrosEmp))
                                {
                                    //Iniciando Ciclo de Detalle
                                    foreach (DataRow drNO in dtNominaOtrosEmp.Rows)
                                    {
                                        //Instanciando Nomina Otros
                                        using (NominaOtros no = new NominaOtros(Convert.ToInt32(drNO["Id"])))
                                        {
                                            //Validando Registro
                                            if (no.habilitar)
                                            {
                                                //Insertando Detalle
                                                result = no.DeshabilitarNominaOtros(id_usuario);

                                                //Si la Operación no fue Exitosa
                                                if (!result.OperacionExitosa)
                                                {
                                                    //Terminando Ciclo
                                                    break;
                                                }
                                            }
                                            else
                                            {
                                                //Instanciando Nomina
                                                result = new RetornoOperacion("No Existe la Nomina de Otros");

                                                //Terminando Ciclo
                                                break;
                                            }
                                        }
                                    }
                                }
                                else
                                {
                                    //Instanciando Nomina
                                    result = new RetornoOperacion(this._id_nomina_empleado);
                                }
                            }
                        }

                        //Validando Operaciones
                        if (result.OperacionExitosa)
                        {
                            //Devolviendo Resultado Obtenido
                            result = this.actualizaAtributosBD(this._id_nomina, this._id_empleado, this._id_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, false);

                            //Validando Operaciones
                            if (result.OperacionExitosa)
                            {
                                //Completando Transacción
                                trans.Complete();
                            }
                        }
                    }
                }
                else
                {
                    //Instanciando Excepción
                    result = new RetornoOperacion("La Nómina del Empleado ya ha sido Timbrada, Imposible su Edición");
                }
            }

            //Devolviendo Resultado Obtenido
            return(result);
        }
Exemplo n.º 2
0
Arquivo: Nomina.cs Projeto: lulzzz/SAT
        /// <summary>
        /// Método encargado de Copiar la Nomina
        /// </summary>
        /// <param name="id_usuario">Usuario que actualiza el Registro</param>
        /// <returns></returns>
        public RetornoOperacion CopiaNomina(int id_usuario)
        {
            //Declarando Objeto de Retorno
            RetornoOperacion result = new RetornoOperacion();

            //Declarando Variables Auxiliares
            int idNomina = 0, idNominaEmpleado = 0;

            //Declarando Ambiente Transaccional
            using (TransactionScope trans = TSDK.Datos.Transaccion.InicializaBloqueTransaccional(System.Transactions.IsolationLevel.ReadCommitted))
            {
                //Armando Arreglo de Parametros
                object[] param = { 1,                               0, this._id_compania_emisora,                     0, this._id_nomina, null, null, null, null,
                                   this._dias_pago, this._id_sucursal, this._id_periodicidad_pago, this._id_metodo_pago, id_usuario,      true, "",   "" };

                //Ejecutando SP
                result = CapaDatos.m_capaDeDatos.EjecutaProcAlmacenadoObjeto(_nom_sp, param);

                //Validando Operación Correcta
                if (result.OperacionExitosa)
                {
                    //Guardando Nomina
                    idNomina = result.IdRegistro;

                    //Obteniendo Nominas de Empleado
                    using (DataTable dtNominaEmpleado = NominaEmpleado.ObtieneNominasEmpleado(this._id_nomina))
                    {
                        //Validando que Existen Nominas
                        if (TSDK.Datos.Validacion.ValidaOrigenDatos(dtNominaEmpleado))
                        {
                            //Iniciando Ciclo de Nomina de Empleados
                            foreach (DataRow drNE in dtNominaEmpleado.Rows)
                            {
                                //Instanciando Nomina de Empleado
                                using (NominaEmpleado ne = new NominaEmpleado(Convert.ToInt32(drNE["Id"])))
                                {
                                    //Validando que existe el Registro
                                    if (ne.habilitar)
                                    {
                                        //Insertando Nomina de Empleado
                                        result = NominaEmpleado.InsertaNominaEmpleado(idNomina, ne.id_empleado, 0, 0, ne.total_gravado_percepcion, ne.total_gravado_deduccion,
                                                                                      ne.total_exento_percepcion, ne.total_exento_deduccion, ne.total_percepcion, ne.total_deduccion, id_usuario);

                                        //Validando Operación Correcta
                                        if (result.OperacionExitosa)
                                        {
                                            //Guardando Nomina
                                            idNominaEmpleado = result.IdRegistro;

                                            //Obteniendo Detalles
                                            using (DataTable dtDetallesEmp = DetalleNominaEmpleado.ObtieneDetalleNominaEmpleado(ne.id_nomina_empleado))
                                            {
                                                //Validando que Existen Nominas
                                                if (TSDK.Datos.Validacion.ValidaOrigenDatos(dtDetallesEmp))
                                                {
                                                    //Iniciando Ciclo de Detalle
                                                    foreach (DataRow drDE in dtDetallesEmp.Rows)
                                                    {
                                                        //Instanciando Detalle
                                                        using (DetalleNominaEmpleado dne = new DetalleNominaEmpleado(Convert.ToInt32(drDE["Id"])))
                                                        {
                                                            //Validando Registro
                                                            if (dne.habilitar)
                                                            {
                                                                //Insertando Detalle
                                                                result = DetalleNominaEmpleado.InsertarDetalleNominaEmpleado(idNominaEmpleado, dne.id_tipo_pago,
                                                                                                                             dne.importe_gravado, dne.importe_exento, id_usuario);

                                                                //Si la Operación no fue Exitosa
                                                                if (!result.OperacionExitosa)
                                                                {
                                                                    //Terminando Ciclo
                                                                    break;
                                                                }
                                                            }
                                                            else
                                                            {
                                                                //Instanciando Nomina
                                                                result = new RetornoOperacion("No Existe el Detalle de la Nomina");

                                                                //Terminando Ciclo
                                                                break;
                                                            }
                                                        }
                                                    }
                                                }
                                                else
                                                {
                                                    //Instanciando Nomina
                                                    result = new RetornoOperacion(idNomina);
                                                }
                                            }

                                            //Operación Exitosa
                                            if (result.OperacionExitosa)
                                            {
                                                //Obteniendo Detalles
                                                using (DataTable dtNominaOtrosEmp = NominaOtros.ObtieneNominaOtros(ne.id_nomina_empleado))
                                                {
                                                    //Validando que Existen Nominas
                                                    if (TSDK.Datos.Validacion.ValidaOrigenDatos(dtNominaOtrosEmp))
                                                    {
                                                        //Iniciando Ciclo de Detalle
                                                        foreach (DataRow drNO in dtNominaOtrosEmp.Rows)
                                                        {
                                                            //Instanciando Nomina Otros
                                                            using (NominaOtros no = new NominaOtros(Convert.ToInt32(drNO["Id"])))
                                                            {
                                                                //Validando Registro
                                                                if (no.habilitar)
                                                                {
                                                                    //Insertando Detalle
                                                                    result = NominaOtros.InsertarNominaOtros(idNominaEmpleado, (NominaOtros.TipoNominaOtros)no.id_tipo, no.dias, (NominaOtros.SubTipo)no.id_subtipo, no.importe_gravado, no.importe_exento, no.cantidad, id_usuario);

                                                                    //Si la Operación no fue Exitosa
                                                                    if (!result.OperacionExitosa)
                                                                    {
                                                                        //Terminando Ciclo
                                                                        break;
                                                                    }
                                                                }
                                                                else
                                                                {
                                                                    //Instanciando Nomina
                                                                    result = new RetornoOperacion("No Existe la Nomina de Otros");

                                                                    //Terminando Ciclo
                                                                    break;
                                                                }
                                                            }
                                                        }
                                                    }
                                                    else
                                                    {
                                                        //Instanciando Nomina
                                                        result = new RetornoOperacion(idNomina);
                                                    }
                                                }
                                            }
                                        }
                                        else
                                        {
                                            //Terminando Ciclo
                                            break;
                                        }
                                    }
                                    else
                                    {
                                        //Instanciando Nomina
                                        result = new RetornoOperacion("No Existe la Nómina del Empleado");

                                        //Terminando Ciclo
                                        break;
                                    }
                                }
                            }
                        }
                        else
                        {
                            //Instanciando Nomina
                            result = new RetornoOperacion(idNomina);
                        }

                        //Validando Operaciones
                        if (result.OperacionExitosa)
                        {
                            //Instanciando Nomina
                            result = new RetornoOperacion(idNomina);

                            //Completando Transacción
                            trans.Complete();
                        }
                    }
                }
            }

            //Devolviendo Resultado Obtenido
            return(result);
        }