/// <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 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); }