/// <summary> /// Método encargado de Actualizar los Atributos en BD /// </summary> /// <param name="id_compania_emisora">Compania Emisora</param> /// <param name="no_consecutivo">No. Consecutivo por Compania</param> /// <param name="id_nomina_origen">Nomina de Origen</param> /// <param name="version">Versión de la Nómina</param> /// <param name="id_tipo_nomina">Tipo de Nómina (Oridnaria, Extraordinaria)</param> /// <param name="fecha_pago">Fecha de Pago</param> /// <param name="fecha_inicial_pago">Fecha de Inicio del Pago</param> /// <param name="fecha_final_pago">Fecha de de Fin del Pago</param> /// <param name="fecha_nomina">Fecha de Nomina</param> /// <param name="dias_pago">Dias de Pago</param> /// <param name="id_sucursal">Sucursal</param> /// <param name="id_periodicidad_pago">Periodicidad de Pago(Quincenal, Semanal, Mensual, etc...)</param> /// <param name="id_metodo_pago">Método de Pago(Efectivo, Transferencia, Cheque, etc...)</param> /// <param name="id_usuario">Usuario que actualiza el Registro</param> /// <returns></returns> public RetornoOperacion EditaNomina(int id_compania_emisor, int no_consecutivo, int id_nomina_origen, string version, byte id_tipo_nomina, DateTime fecha_pago, DateTime fecha_inicial_pago, DateTime fecha_final_pago, DateTime fecha_nomina, decimal dias_pago, int id_sucursal, byte id_periodicidad_pago, byte id_metodo_pago, int id_usuario) { //Declarando Objeto de Retorno RetornoOperacion result = new RetornoOperacion(); //Obtenemos Valores string RegistroPatronal = Global.Referencia.CargaReferencia("0", 25, id_compania_emisor, "Recibo Nómina", "Registro Patronal"); string Curp = Global.Referencia.CargaReferencia("0", 25, id_compania_emisor, "Recibo Nómina", "Curp"); string RfcPatron = ""; //Creamos la transacción using (TransactionScope scope = Transaccion.InicializaBloqueTransaccional(System.Transactions.IsolationLevel.ReadCommitted)) { //Validando Nomina Timbrada result = this.validaNominaTimbrada(this._id_nomina); //Operación Exitosa? if (!result.OperacionExitosa) { //Devolviendo Resultado Obtenido result = this.actualizaAtributosBD(id_compania_emisor, no_consecutivo, id_nomina_origen, version, id_tipo_nomina, fecha_pago, fecha_inicial_pago, fecha_final_pago, fecha_nomina, dias_pago, id_sucursal, id_periodicidad_pago, id_metodo_pago, RegistroPatronal, Curp, RfcPatron, id_usuario, true); //Validamos Resultado if (result.OperacionExitosa) { //Cargamos Empleado ligado a la Nómina using (DataTable mit = NomEmpleado.ObtieneNominasEmpleadoRegistrados(this._id_nomina)) { //Validamos Orifen de Datos if (Validacion.ValidaOrigenDatos(mit)) { //Recorremos Empleados foreach (DataRow r in mit.Rows) { //Actualizamos Tipo de Nómina result = NomEmpleado.ActualizaEncabezadoNominaEsquema(this._id_nomina, r.Field <int>("Id"), id_usuario); } } } } } else { //Instanciando Excepción result = new RetornoOperacion(result.Mensaje); } //Validamos Resultado if (result.OperacionExitosa) { //Asignamos Valor de Resultado result = new RetornoOperacion(this._id_nomina, result.Mensaje, result.OperacionExitosa); //Terminamos Transacción scope.Complete(); } } //Devolviendo Resultado Obtenido return(result); }
/// <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 = Transaccion.InicializaBloqueTransaccional(System.Transactions.IsolationLevel.ReadCommitted)) { string RegistroPatronal = Global.Referencia.CargaReferencia("0", 25, id_compania_emisor, "Recibo Nómina", "Registro Patronal"); string Curp = Global.Referencia.CargaReferencia("0", 25, id_compania_emisor, "Recibo Nómina", "Curp"); string RfcPatron = ""; object[] param = { 1, 0, this._id_compania_emisor, 0, 0, "1.2", this._id_tipo_nomina, null, null, null, null, this._dias_pago, this._id_sucursal, this._id_periodicidad_pago, this._id_metodo_pago, RegistroPatronal, Curp, RfcPatron, 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 = NomEmpleado.ObtieneIdsNominasEmpleado(this._id_nomina)) { //Validando que Existen Nominas if (Validacion.ValidaOrigenDatos(dtNominaEmpleado)) { //Iniciando Ciclo de Nomina de Empleados foreach (DataRow drNE in dtNominaEmpleado.Rows) { //Instanciando Nomina de Empleado using (NomEmpleado ne = new NomEmpleado(Convert.ToInt32(drNE["Id"]))) { //Validando que existe el Registro if (ne.habilitar) { //Insertando Nomina de Empleado result = NomEmpleado.InsertaNominaEmpleado(idNomina, ne.id_empleado, id_usuario); //Validando Operación Correcta if (result.OperacionExitosa) { //Guardando Nomina idNominaEmpleado = result.IdRegistro; //Obteniendo los Encabezados Percepcion, Deduccion,Horas Extras, Incapacidades, using (DataTable dtDetallesEmp = EsquemaRegistro.ObtieneEncabezados(ne.id_nomina_empleado)) { //Validando que Existen Nominas if (Validacion.ValidaOrigenDatos(dtDetallesEmp)) { //Iniciando Ciclo de Detalle foreach (DataRow drDE in dtDetallesEmp.Rows) { //Instanciando Esquema Registro using (EsquemaRegistro dne = new EsquemaRegistro(Convert.ToInt32(drDE["Id"]))) { //Validando Registro if (dne.habilitar) { //Insertando Detalle result = EsquemaRegistro.InsertaEsquemaRegistro(dne.id_esquema, 0, idNominaEmpleado, dne.valor, dne.id_tabla_catalogo, dne.id_tipo_catalogo, dne.id_valor, id_usuario); int id_registro_superior = result.IdRegistro; //Validamos Resultado if (result.OperacionExitosa) { //Método encargado de Registrar Sub Nodos result = CopiaRegistroSuperior(id_usuario, idNominaEmpleado, dne.id_esquema_registro, id_registro_superior); } //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); } } //Ligamos Horas Extras if (result.OperacionExitosa) { //Instnacimoas Percepcion de Tipo Horas Extras using (EsquemaRegistro objEsquemaRegistro = new EsquemaRegistro(EsquemaRegistro.ObtieneIdEsquemaRegistro(Esquema.ObtieneIdEsquema(version, "TipoPercepcion", "Percepcion", "Percepciones"), idNominaEmpleado, "019"))) { //Obtiene Detalles Horas Extras using (DataTable mitDetalles = EsquemaRegistro.ObtieneDetalleHorasExtras(idNominaEmpleado, 0)) { //Validando que Existen Nominas if (Validacion.ValidaOrigenDatos(mitDetalles)) { //Iniciando Ciclo de Detalle foreach (DataRow det in mitDetalles.Rows) { using (EsquemaRegistro objHorasExtras = new EsquemaRegistro(Convert.ToInt32(det["Id"]))) { //Validando Registro if (objHorasExtras.habilitar) { //Insertando Encabezado de Horas Extras result = objHorasExtras.EditaEsquemaRegistro(objHorasExtras.id_esquema, objEsquemaRegistro.id_esquema_superior, objHorasExtras.id_nomina_empleado, objHorasExtras.valor, objHorasExtras.id_tabla_catalogo, objHorasExtras.id_tipo_catalogo, objHorasExtras.id_valor, id_usuario); //Si la Operación no fue Exitosa if (!result.OperacionExitosa) { //Terminando Ciclo break; } } } } } } } } } 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 = 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 = NomEmpleado.ObtieneNominasEmpleadoRegistrados(this._id_nomina)) { //Validando que existan Nominas de Empleados if (Validacion.ValidaOrigenDatos(dtNominasEmpleado)) { //Recorriendo Nomina de Empleados foreach (DataRow dr in dtNominasEmpleado.Rows) { //Instanciando Nomina de Empleados using (NomEmpleado ne = new NomEmpleado(Convert.ToInt32(dr["Id"]))) { //Validando que exista el Registro if (ne.habilitar) { //Deshabilitando Nomina de Empleado result = ne.DeshabilitaNomEmpleado(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_emisor, this._no_consecutivo, this._id_nomina_origen, this._version, this._id_tipo_nomina, this._fecha_pago, this._fecha_inicial_pago, this._fecha_final_pago, this._fecha_nomina, this._dias_pago, this._id_sucursal, this._id_periodicidad_pago, this._id_metodo_pago, this._registro_patronal, this._curp, this._rfc_patron, 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); }