/// <summary> /// Método que permite cambiar el estado de un registro /// </summary> /// <param name="id_usuario">>Permite Identificar al ultimo usuario que realizo acciones sobre el registro</param> /// <returns></returns> public RetornoOperacion DeshabilitarDetalleNominaEmpleado(int id_usuario) { //Creación del objeto retorno RetornoOperacion retorno = new RetornoOperacion(); //Declarando Variable Auxiliar int idDetaleNominaEmpleado = 0; //Declarando Bloque Transaccional using (TransactionScope trans = TSDK.Datos.Transaccion.InicializaBloqueTransaccional(System.Transactions.IsolationLevel.ReadCommitted)) { //Instanciando Nómina Empleado using (NominaEmpleado ne = new NominaEmpleado(this._id_nomina_empleado)) { //Validando que exista la Nomina if (ne.habilitar) { //Validando que no Exista el Comprobante if (ne.id_comprobante == 0) { //Invoca y retrona el método editarDEtalleNominaempleado retorno = this.editarDetalleNominaEmpleado(this._id_nomina_empleado, this.id_tipo_pago, this.importe_gravado, this.importe_exento, id_usuario, false); //Validando Operación Exitosa if (retorno.OperacionExitosa) { //Asignando Valor idDetaleNominaEmpleado = retorno.IdRegistro; //Obteniendo Totales using (DataTable dtTotalesEmpleado = NominaEmpleado.ObtieneTotalesEmpleado(this._id_nomina_empleado)) { //Validando que existen los Registros if (TSDK.Datos.Validacion.ValidaOrigenDatos(dtTotalesEmpleado)) { //Inicializando Ciclo foreach (DataRow dr in dtTotalesEmpleado.Rows) { //Actualizando Totales de Nomina de Empleado retorno = ne.ActualizaTotalesNominaEmpleado(Convert.ToDecimal(dr["TotalGravadoPercepcion"]), Convert.ToDecimal(dr["TotalGravadoDeduccion"]), Convert.ToDecimal(dr["TotalExentoPercepcion"]), Convert.ToDecimal(dr["TotalExentoDeduccion"]), id_usuario); break; } //Validando que la Operación fue Exitosa if (retorno.OperacionExitosa) { //Instanciando Detalle en Retorno retorno = new RetornoOperacion(idDetaleNominaEmpleado); //Completando Transacción trans.Complete(); } } } } } else { //Instanciando Excepción retorno = new RetornoOperacion("La Nómina del Empleado ya ha sido Timbrada, Imposible su Edición"); } } else { //Instanciando Excepción retorno = new RetornoOperacion("No se puede Acceder a la Nómina del Empleado"); } } } //Retorna al método el objeto retorno return(retorno); }
/// <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); }
/// <summary> /// Método que permite insertar los campos de un registro detalle nomina empleado /// </summary> /// <param name="id_nomina_empleado">Permite insertar el identificador de nomina de un empleado</param> /// <param name="id_tipo_pago">Permite insertar el tipo de pago de nomina</param> /// <param name="importe_gravado">Pemite insertat la cantidad monetaria de impueto gravado</param> /// <param name="importe_exento">Pemite insertar la cantidad monetaria de impueto exento</param> /// <param name="id_usuario">Permite insertar al usuario que realizo el registro</param> /// <returns></returns> public static RetornoOperacion InsertarDetalleNominaEmpleado(int id_nomina_empleado, int id_tipo_pago, decimal importe_gravado, decimal importe_exento, int id_usuario) { //Creación del objeto retorno RetornoOperacion retorno = new RetornoOperacion(); //Declarando Variable Auxiliar int idDetaleNominaEmpleado = 0; //Declarando Bloque Transaccional using (TransactionScope trans = TSDK.Datos.Transaccion.InicializaBloqueTransaccional(System.Transactions.IsolationLevel.ReadCommitted)) { //Instanciando Nómina Empleado using (NominaEmpleado ne = new NominaEmpleado(id_nomina_empleado)) { //Validando que exista la Nomina if (ne.habilitar) { //Validando que no Exista el Comprobante if (ne.id_comprobante == 0) { //Creación del arreglo que almacena los parametros de actualización del registro object[] param = { 1, 0, id_nomina_empleado, id_tipo_pago, importe_gravado, importe_exento, id_usuario, true, "", "" }; //Asigna al objeto retorno el arreglo y el atributo con el nombre del sp, necesarios para hacer la transacciones a la base de datos. retorno = CapaDatos.m_capaDeDatos.EjecutaProcAlmacenadoObjeto(nom_sp, param); //Validando Operación Exitosa if (retorno.OperacionExitosa) { //Asignando Valor idDetaleNominaEmpleado = retorno.IdRegistro; //Obteniendo Totales using (DataTable dtTotalesEmpleado = NominaEmpleado.ObtieneTotalesEmpleado(id_nomina_empleado)) { //Validando que existen los Registros if (TSDK.Datos.Validacion.ValidaOrigenDatos(dtTotalesEmpleado)) { //Inicializando Ciclo foreach (DataRow dr in dtTotalesEmpleado.Rows) { //Actualizando Totales de Nomina de Empleado retorno = ne.ActualizaTotalesNominaEmpleado(Convert.ToDecimal(dr["TotalGravadoPercepcion"]), Convert.ToDecimal(dr["TotalGravadoDeduccion"]), Convert.ToDecimal(dr["TotalExentoPercepcion"]), Convert.ToDecimal(dr["TotalExentoDeduccion"]), id_usuario); break; } //Validando que la Operación fue Exitosa if (retorno.OperacionExitosa) { //Instanciando Detalle en Retorno retorno = new RetornoOperacion(idDetaleNominaEmpleado); //Completando Transacción trans.Complete(); } } } } } else { //Instanciando Excepción retorno = new RetornoOperacion("La Nómina del Empleado ya ha sido Timbrada, Imposible su Edición"); } } else { //Instanciando Excepción retorno = new RetornoOperacion("No se puede Acceder a la Nómina del Empleado"); } } } //Retorna al método el objeto retorno return(retorno); }
/// <summary> /// Método encargado de Deshabilitar la Nomina /// </summary> /// <param name="id_usuario">Usuario que actualiza el Registro</param> /// <returns></returns> public RetornoOperacion DeshabilitaNomina(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 Nomina Timbrada result = this.validaNominaTimbrada(this._id_nomina); //Operación Exitosa? if (!result.OperacionExitosa) { //Obteniendo Nomina de Empleados using (DataTable dtNominasEmpleado = NominaEmpleado.ObtieneNominasEmpleado(this._id_nomina)) { //Validando que existan Nominas de Empleados if (TSDK.Datos.Validacion.ValidaOrigenDatos(dtNominasEmpleado)) { //Recorriendo Nomina de Empleados foreach (DataRow dr in dtNominasEmpleado.Rows) { //Instanciando Nomina de Empleados using (NominaEmpleado ne = new NominaEmpleado(Convert.ToInt32(dr["Id"]))) { //Validando que exista el Registro if (ne.habilitar) { //Deshabilitando Nomina de Empleado result = ne.DeshabilitaNominaEmpleado(id_usuario); //Si la Operación no fue Correcta if (!result.OperacionExitosa) { //Terminando Ciclo break; } } } } } else { //Instanciando Nomina result = new RetornoOperacion(this._id_nomina); } } //Validando Operación if (result.OperacionExitosa) { //Devolviendo Resultado Obtenido result = this.actualizaAtributosBD(this._id_compania_emisora, this._no_consecutivo, this._id_nomina_origen, this._fecha_pago, this._fecha_inicio_pago, this._fecha_fin_pago, this._fecha_nomina, this._dias_pago, this._id_sucursal, this._id_periodicidad_pago, this._id_metodo_pago, id_usuario, false); //Validando Operación if (result.OperacionExitosa) { //Completando Transacción trans.Complete(); } } } else { //Instanciando Excepción result = new RetornoOperacion(result.Mensaje); } } //Devolviendo Resultado Obtenido return(result); }