public Boolean Actualizar(
            Decimal REGISTRO,
            String ID_PERIODO_PAGO,
            String FECHA_PAGOS,
            Boolean PAG_SUB_TRANS_PERIDO_1,
            Boolean PAG_SUB_TRANS_PERIDO_2,
            Boolean PAG_SUB_TRANS_PERIDO_3,
            Boolean PAG_SUB_TRANS_PERIDO_4,
            DateTime FCH_INI_PRI_PER_NOM,
            Boolean CALC_PROM_DOMINICAL,
            Boolean AJUSTAR_SMLV,
            String BAS_HOR_EXT,
            Boolean MOSTRAR_UNIFICADA,
            Boolean DES_SEG_SOC_TRAB,
            String ID_CIUDAD,
            Decimal ID_CENTRO_C,
            Decimal ID_SUB_C,
            String CALCULO_RETENCION_FUENTE,
            Boolean PAGA_SUB_TRANSPORTE,
            Decimal PORCENTAJE_FACTURACION,
            List<incapadadConceptosNomina> incapadadesConceptosNomina,
            Boolean SABADO_NO_HABIL,
            Boolean PAGA_PARAF_FIN_MES,
            Boolean LIQUIDAR_ORDINARIAS_ULTIMO_PERIODO_MES,
            Boolean REPLICAR_PARAMETROS,
            Decimal ID_EMPRESA,
            Boolean LIQ_INCAP_SOBRE_BASICO_PRIMEROS_DIAS,
            String llavePeriodo,
            Boolean excluirExtrasDeSubt)
        {
            String sql = null;
            String informacion = null;
            Boolean ejecutar = true;
            Boolean ejecutadoCorrectamente = true;
            tools _tools = new tools();

            #region validaciones

            sql = "usp_ven_d_nomina_actualizar_V2 ";

            if (REGISTRO != 0)
            {
                sql += "'" + REGISTRO + "', ";
                informacion += "REGISTRO = '" + REGISTRO + "', ";
            }
            else
            {
                MensajeError += "El campo REGISTRO no puede ser cero\n";
                ejecutar = false;
            }

            if (!(String.IsNullOrEmpty(ID_PERIODO_PAGO)))
            {
                sql += "'" + ID_PERIODO_PAGO + "', ";
                informacion += "ID_PERIODO_PAGO = '" + ID_PERIODO_PAGO + "', ";
            }
            else
            {
                MensajeError += "El campo ID_PERIODO_PAGO no puede ser nulo\n";
                ejecutar = false;
            }

            if (!(String.IsNullOrEmpty(FECHA_PAGOS)))
            {
                sql += "'" + FECHA_PAGOS + "', ";
                informacion += "FECHA_PAGOS = '" + FECHA_PAGOS + "', ";
            }
            else
            {
                sql += "null, ";
                informacion += "FECHA_PAGOS = 'null', ";
            }

            sql += "'" + PAG_SUB_TRANS_PERIDO_1 + "', ";
            informacion += "PAG_SUB_TRANS_PERIDO_1 = '" + PAG_SUB_TRANS_PERIDO_1 + "', ";

            sql += "'" + PAG_SUB_TRANS_PERIDO_2 + "', ";
            informacion += "PAG_SUB_TRANS_PERIDO_2 = '" + PAG_SUB_TRANS_PERIDO_2 + "', ";

            sql += "'" + PAG_SUB_TRANS_PERIDO_3 + "', ";
            informacion += "PAG_SUB_TRANS_PERIDO_3 = '" + PAG_SUB_TRANS_PERIDO_3 + "', ";

            sql += "'" + PAG_SUB_TRANS_PERIDO_4 + "', ";
            informacion += "PAG_SUB_TRANS_PERIDO_4 = '" + PAG_SUB_TRANS_PERIDO_4 + "', ";

            if (FCH_INI_PRI_PER_NOM == new DateTime())
            {
                sql += "NULL, ";
                informacion += "FCH_INI_PRI_PER_NOM = 'NULL', ";
            }
            else
            {
                sql += "'" + _tools.obtenerStringConFormatoFechaSQLServer(FCH_INI_PRI_PER_NOM) + "', ";
                informacion += "FCH_INI_PRI_PER_NOM = '" + _tools.obtenerStringConFormatoFechaSQLServer(FCH_INI_PRI_PER_NOM) + "', ";
            }

            sql += "'" + CALC_PROM_DOMINICAL + "', ";
            informacion += "CALC_PROM_DOMINICA = '" + CALC_PROM_DOMINICAL + "', ";

            sql += "'" + AJUSTAR_SMLV + "', ";
            informacion += "AJUSTAR_SMLV = '" + AJUSTAR_SMLV + "', ";

            if (!(String.IsNullOrEmpty(BAS_HOR_EXT)))
            {
                sql += "'" + BAS_HOR_EXT + "', ";
                informacion += "BAS_HOR_EXT = '" + BAS_HOR_EXT + "', ";
            }
            else
            {
                MensajeError += "El campo BAS_HOR_EXT no puede ser nulo\n";
                ejecutar = false;
            }

            sql += "'" + MOSTRAR_UNIFICADA + "', ";
            informacion += "MOSTRAR_UNIFICADA = '" + MOSTRAR_UNIFICADA + "', ";

            sql += "'" + DES_SEG_SOC_TRAB + "', ";
            informacion += "DES_SEG_SOC_TRAB = '" + DES_SEG_SOC_TRAB + "', ";

            if (!(String.IsNullOrEmpty(ID_CIUDAD))
                && !ID_CIUDAD.Equals("0"))
            {
                sql += "'" + ID_CIUDAD + "', ";
                informacion += "ID_CIUDAD = '" + ID_CIUDAD + "', ";
            }
            else
            {
                sql += "null, ";
                informacion += "ID_CIUDAD = 'Null', ";
            }

            if (ID_CENTRO_C != 0)
            {
                sql += "'" + ID_CENTRO_C + "', ";
                informacion += "ID_CENTRO_C = '" + ID_CENTRO_C + "', ";
            }
            else
            {
                sql += "0, ";
                informacion += "ID_CENTRO_C = 'Null', ";
            }

            if (ID_SUB_C != 0)
            {
                sql += "'" + ID_SUB_C + "', ";
                informacion += "ID_SUB_C = '" + ID_SUB_C + "', ";
            }
            else
            {
                sql += "0, ";
                informacion += "ID_SUB_C = 'Null', ";
            }

            if (!(String.IsNullOrEmpty(CALCULO_RETENCION_FUENTE)))
            {
                sql += "'" + CALCULO_RETENCION_FUENTE + "', ";
                informacion += "CALCULO_RETENCION_FUENTE = '" + CALCULO_RETENCION_FUENTE + "', ";
            }
            else
            {
                sql += "'Null', ";
                informacion += "CALCULO_RETENCION_FUENTE = 'Null', ";
            }

            sql += "'" + Usuario + "', ";
            informacion += "USU_MOD = '" + Usuario.ToString() + "', ";

            sql += "'" + PAGA_SUB_TRANSPORTE + "', ";
            informacion += "PAGA_SUB_TRANSPORTE = '" + PAGA_SUB_TRANSPORTE + "', ";

            sql += PORCENTAJE_FACTURACION.ToString() + ", ";
            informacion += "PORCENTAJE_FACTURACION = '" + PORCENTAJE_FACTURACION.ToString() + "', ";

            sql += "'" + SABADO_NO_HABIL + "', ";
            informacion += "SABADO_NO_HABIL = '" + SABADO_NO_HABIL + "', ";

            sql += "'" + PAGA_PARAF_FIN_MES + "', ";
            informacion += "PAGA_PARAF_FIN_MES = '" + PAGA_PARAF_FIN_MES + "', ";

            sql += "'" + LIQUIDAR_ORDINARIAS_ULTIMO_PERIODO_MES + "', ";
            informacion += "LIQUIDAR_ORDINARIAS_ULTIMO_PERIODO_MES = '" + LIQUIDAR_ORDINARIAS_ULTIMO_PERIODO_MES + "', ";

            sql += "'" + LIQ_INCAP_SOBRE_BASICO_PRIMEROS_DIAS + "', ";
            informacion += "LIQ_INCAP_SOBRE_BASICO_PRIMEROS_DIAS = '" + LIQ_INCAP_SOBRE_BASICO_PRIMEROS_DIAS + "', ";

            sql += "'" + llavePeriodo + "', ";
            informacion += "LLAVE_PERIODO = '" + llavePeriodo + "', ";

            if (excluirExtrasDeSubt == true)
            {
                sql += "'TRUE'";
                informacion += "EXCLUIR_EXTRAS_DE_SUBT = 'TRUE'";
            }
            else
            {
                sql += "'FALSE'";
                informacion += "EXCLUIR_EXTRAS_DE_SUBT = 'FALSE'";
            }

            #endregion validaciones

            Conexion conexion = new Conexion(Empresa);
            conexion.IniciarTransaccion();

            if (ejecutar)
            {
                try
                {
                    if (conexion.ExecuteNonQuery(sql) == 0)
                    {
                        ejecutadoCorrectamente = false;
                    }
                    else
                    {
                        #region auditoria
                        auditoria _auditoria = new auditoria(Empresa);
                        if (!(_auditoria.Adicionar(Usuario, tabla.VEN_D_NOMINA, tabla.ACCION_ACTUALIZAR, sql, informacion, conexion)))
                        {
                            ejecutadoCorrectamente = false;
                            MensajeError = _auditoria.MensajError;
                        }

                        #region incapacidad conceptos de nomina
                        incapadadConceptosNomina incapadadConceptosNomina = new incapadadConceptosNomina(Empresa, Usuario);
                        if (!incapadadConceptosNomina.Eliminar(REGISTRO, conexion))
                        {
                            ejecutadoCorrectamente = false;
                            MensajeError = incapadadConceptosNomina.MensajeError;
                        }

                        foreach (incapadadConceptosNomina _incapadadConceptosNomina in incapadadesConceptosNomina)
                        {
                            if ((_incapadadConceptosNomina.Adicionar(
                                Convert.ToDecimal(REGISTRO),
                                _incapadadConceptosNomina.IdConcepto,
                                _incapadadConceptosNomina.Porcentaje, conexion)) == 0)
                            {
                                ejecutadoCorrectamente = false;
                                MensajeError = _incapadadConceptosNomina.MensajeError;
                            }
                        }
                        #endregion incapacidad conceptos de nomina

                        #region replicacion
                        if (ReplicarParametrosnomina(ID_EMPRESA, ID_CIUDAD, ID_CENTRO_C, REGISTRO, conexion) <= 0)
                        {
                            ejecutadoCorrectamente = false;
                        }
                        #endregion replicacion
                    }
                        #endregion auditoria
                }
                catch (Exception e)
                {
                    MensajeError = e.Message;
                    ejecutadoCorrectamente = false;
                }
            }

            if (ejecutadoCorrectamente)
            {
                conexion.AceptarTransaccion();
                conexion.Desconectar();
                return true;
            }
            else
            {
                conexion.DeshacerTransaccion();
                conexion.Desconectar();
                return false;
            }
        }
        public Boolean Actualizar(
            Decimal REGISTRO,
            String ID_PERIODO_PAGO,
            String FECHA_PAGOS,
            Boolean PAG_SUB_TRANS_PERIDO_1,
            Boolean PAG_SUB_TRANS_PERIDO_2,
            Boolean PAG_SUB_TRANS_PERIDO_3,
            Boolean PAG_SUB_TRANS_PERIDO_4,
            DateTime FCH_INI_PRI_PER_NOM,
            Boolean CALC_PROM_DOMINICAL,
            Boolean AJUSTAR_SMLV,
            String BAS_HOR_EXT,
            Boolean MOSTRAR_UNIFICADA,
            Boolean DES_SEG_SOC_TRAB,
            String ID_CIUDAD,
            Decimal ID_CENTRO_C,
            Decimal ID_SUB_C,
            String CALCULO_RETENCION_FUENTE,
            Boolean PAGA_SUB_TRANSPORTE,
            Decimal PORCENTAJE_FACTURACION,
            List <incapadadConceptosNomina> incapadadesConceptosNomina,
            Boolean SABADO_NO_HABIL,
            Boolean PAGA_PARAF_FIN_MES,
            Boolean LIQUIDAR_ORDINARIAS_ULTIMO_PERIODO_MES,
            Boolean REPLICAR_PARAMETROS,
            Decimal ID_EMPRESA,
            Boolean LIQ_INCAP_SOBRE_BASICO_PRIMEROS_DIAS,
            String llavePeriodo,
            Boolean excluirExtrasDeSubt)
        {
            String  sql                    = null;
            String  informacion            = null;
            Boolean ejecutar               = true;
            Boolean ejecutadoCorrectamente = true;
            tools   _tools                 = new tools();

            #region validaciones

            sql = "usp_ven_d_nomina_actualizar_V2 ";

            if (REGISTRO != 0)
            {
                sql         += "'" + REGISTRO + "', ";
                informacion += "REGISTRO = '" + REGISTRO + "', ";
            }
            else
            {
                MensajeError += "El campo REGISTRO no puede ser cero\n";
                ejecutar      = false;
            }

            if (!(String.IsNullOrEmpty(ID_PERIODO_PAGO)))
            {
                sql         += "'" + ID_PERIODO_PAGO + "', ";
                informacion += "ID_PERIODO_PAGO = '" + ID_PERIODO_PAGO + "', ";
            }
            else
            {
                MensajeError += "El campo ID_PERIODO_PAGO no puede ser nulo\n";
                ejecutar      = false;
            }

            if (!(String.IsNullOrEmpty(FECHA_PAGOS)))
            {
                sql         += "'" + FECHA_PAGOS + "', ";
                informacion += "FECHA_PAGOS = '" + FECHA_PAGOS + "', ";
            }
            else
            {
                sql         += "null, ";
                informacion += "FECHA_PAGOS = 'null', ";
            }

            sql         += "'" + PAG_SUB_TRANS_PERIDO_1 + "', ";
            informacion += "PAG_SUB_TRANS_PERIDO_1 = '" + PAG_SUB_TRANS_PERIDO_1 + "', ";

            sql         += "'" + PAG_SUB_TRANS_PERIDO_2 + "', ";
            informacion += "PAG_SUB_TRANS_PERIDO_2 = '" + PAG_SUB_TRANS_PERIDO_2 + "', ";

            sql         += "'" + PAG_SUB_TRANS_PERIDO_3 + "', ";
            informacion += "PAG_SUB_TRANS_PERIDO_3 = '" + PAG_SUB_TRANS_PERIDO_3 + "', ";

            sql         += "'" + PAG_SUB_TRANS_PERIDO_4 + "', ";
            informacion += "PAG_SUB_TRANS_PERIDO_4 = '" + PAG_SUB_TRANS_PERIDO_4 + "', ";

            if (FCH_INI_PRI_PER_NOM == new DateTime())
            {
                sql         += "NULL, ";
                informacion += "FCH_INI_PRI_PER_NOM = 'NULL', ";
            }
            else
            {
                sql         += "'" + _tools.obtenerStringConFormatoFechaSQLServer(FCH_INI_PRI_PER_NOM) + "', ";
                informacion += "FCH_INI_PRI_PER_NOM = '" + _tools.obtenerStringConFormatoFechaSQLServer(FCH_INI_PRI_PER_NOM) + "', ";
            }

            sql         += "'" + CALC_PROM_DOMINICAL + "', ";
            informacion += "CALC_PROM_DOMINICA = '" + CALC_PROM_DOMINICAL + "', ";

            sql         += "'" + AJUSTAR_SMLV + "', ";
            informacion += "AJUSTAR_SMLV = '" + AJUSTAR_SMLV + "', ";

            if (!(String.IsNullOrEmpty(BAS_HOR_EXT)))
            {
                sql         += "'" + BAS_HOR_EXT + "', ";
                informacion += "BAS_HOR_EXT = '" + BAS_HOR_EXT + "', ";
            }
            else
            {
                MensajeError += "El campo BAS_HOR_EXT no puede ser nulo\n";
                ejecutar      = false;
            }

            sql         += "'" + MOSTRAR_UNIFICADA + "', ";
            informacion += "MOSTRAR_UNIFICADA = '" + MOSTRAR_UNIFICADA + "', ";

            sql         += "'" + DES_SEG_SOC_TRAB + "', ";
            informacion += "DES_SEG_SOC_TRAB = '" + DES_SEG_SOC_TRAB + "', ";

            if (!(String.IsNullOrEmpty(ID_CIUDAD)) &&
                !ID_CIUDAD.Equals("0"))
            {
                sql         += "'" + ID_CIUDAD + "', ";
                informacion += "ID_CIUDAD = '" + ID_CIUDAD + "', ";
            }
            else
            {
                sql         += "null, ";
                informacion += "ID_CIUDAD = 'Null', ";
            }

            if (ID_CENTRO_C != 0)
            {
                sql         += "'" + ID_CENTRO_C + "', ";
                informacion += "ID_CENTRO_C = '" + ID_CENTRO_C + "', ";
            }
            else
            {
                sql         += "0, ";
                informacion += "ID_CENTRO_C = 'Null', ";
            }

            if (ID_SUB_C != 0)
            {
                sql         += "'" + ID_SUB_C + "', ";
                informacion += "ID_SUB_C = '" + ID_SUB_C + "', ";
            }
            else
            {
                sql         += "0, ";
                informacion += "ID_SUB_C = 'Null', ";
            }

            if (!(String.IsNullOrEmpty(CALCULO_RETENCION_FUENTE)))
            {
                sql         += "'" + CALCULO_RETENCION_FUENTE + "', ";
                informacion += "CALCULO_RETENCION_FUENTE = '" + CALCULO_RETENCION_FUENTE + "', ";
            }
            else
            {
                sql         += "'Null', ";
                informacion += "CALCULO_RETENCION_FUENTE = 'Null', ";
            }

            sql         += "'" + Usuario + "', ";
            informacion += "USU_MOD = '" + Usuario.ToString() + "', ";

            sql         += "'" + PAGA_SUB_TRANSPORTE + "', ";
            informacion += "PAGA_SUB_TRANSPORTE = '" + PAGA_SUB_TRANSPORTE + "', ";

            sql         += PORCENTAJE_FACTURACION.ToString() + ", ";
            informacion += "PORCENTAJE_FACTURACION = '" + PORCENTAJE_FACTURACION.ToString() + "', ";

            sql         += "'" + SABADO_NO_HABIL + "', ";
            informacion += "SABADO_NO_HABIL = '" + SABADO_NO_HABIL + "', ";

            sql         += "'" + PAGA_PARAF_FIN_MES + "', ";
            informacion += "PAGA_PARAF_FIN_MES = '" + PAGA_PARAF_FIN_MES + "', ";

            sql         += "'" + LIQUIDAR_ORDINARIAS_ULTIMO_PERIODO_MES + "', ";
            informacion += "LIQUIDAR_ORDINARIAS_ULTIMO_PERIODO_MES = '" + LIQUIDAR_ORDINARIAS_ULTIMO_PERIODO_MES + "', ";

            sql         += "'" + LIQ_INCAP_SOBRE_BASICO_PRIMEROS_DIAS + "', ";
            informacion += "LIQ_INCAP_SOBRE_BASICO_PRIMEROS_DIAS = '" + LIQ_INCAP_SOBRE_BASICO_PRIMEROS_DIAS + "', ";

            sql         += "'" + llavePeriodo + "', ";
            informacion += "LLAVE_PERIODO = '" + llavePeriodo + "', ";

            if (excluirExtrasDeSubt == true)
            {
                sql         += "'TRUE'";
                informacion += "EXCLUIR_EXTRAS_DE_SUBT = 'TRUE'";
            }
            else
            {
                sql         += "'FALSE'";
                informacion += "EXCLUIR_EXTRAS_DE_SUBT = 'FALSE'";
            }

            #endregion validaciones

            Conexion conexion = new Conexion(Empresa);
            conexion.IniciarTransaccion();

            if (ejecutar)
            {
                try
                {
                    if (conexion.ExecuteNonQuery(sql) == 0)
                    {
                        ejecutadoCorrectamente = false;
                    }
                    else
                    {
                        #region auditoria
                        auditoria _auditoria = new auditoria(Empresa);
                        if (!(_auditoria.Adicionar(Usuario, tabla.VEN_D_NOMINA, tabla.ACCION_ACTUALIZAR, sql, informacion, conexion)))
                        {
                            ejecutadoCorrectamente = false;
                            MensajeError           = _auditoria.MensajError;
                        }

                        #region incapacidad conceptos de nomina
                        incapadadConceptosNomina incapadadConceptosNomina = new incapadadConceptosNomina(Empresa, Usuario);
                        if (!incapadadConceptosNomina.Eliminar(REGISTRO, conexion))
                        {
                            ejecutadoCorrectamente = false;
                            MensajeError           = incapadadConceptosNomina.MensajeError;
                        }

                        foreach (incapadadConceptosNomina _incapadadConceptosNomina in incapadadesConceptosNomina)
                        {
                            if ((_incapadadConceptosNomina.Adicionar(
                                     Convert.ToDecimal(REGISTRO),
                                     _incapadadConceptosNomina.IdConcepto,
                                     _incapadadConceptosNomina.Porcentaje, conexion)) == 0)
                            {
                                ejecutadoCorrectamente = false;
                                MensajeError           = _incapadadConceptosNomina.MensajeError;
                            }
                        }
                        #endregion incapacidad conceptos de nomina

                        #region replicacion
                        if (ReplicarParametrosnomina(ID_EMPRESA, ID_CIUDAD, ID_CENTRO_C, REGISTRO, conexion) <= 0)
                        {
                            ejecutadoCorrectamente = false;
                        }
                        #endregion replicacion
                    }
                    #endregion auditoria
                }
                catch (Exception e)
                {
                    MensajeError           = e.Message;
                    ejecutadoCorrectamente = false;
                }
            }

            if (ejecutadoCorrectamente)
            {
                conexion.AceptarTransaccion();
                conexion.Desconectar();
                return(true);
            }
            else
            {
                conexion.DeshacerTransaccion();
                conexion.Desconectar();
                return(false);
            }
        }
    private void llenarGridIncapacidades(Decimal registro)
    {
        incapadadConceptosNomina _incapadadConceptosNomina = new incapadadConceptosNomina(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable _dataTable = _incapadadConceptosNomina.ObtenerPorRegistro(registro);

        DataTable _dataTableIncapacidad = new DataTable();
        _dataTableIncapacidad.Columns.Add("Código");
        _dataTableIncapacidad.Columns.Add("Concepto");
        _dataTableIncapacidad.Columns.Add("Porcentaje");
        _dataTableIncapacidad.Columns.Add("Cod_Concepto");

        DataRow _dataRowIncapacidad;
        foreach (DataRow _dataRow in _dataTable.Rows)
        {
            _dataRowIncapacidad = _dataTableIncapacidad.NewRow();

            _dataRowIncapacidad["Código"] = _dataRow["Codigo"].ToString();
            _dataRowIncapacidad["Concepto"] = _dataRow["Concepto"].ToString();
            _dataRowIncapacidad["Porcentaje"] = _dataRow["Porcentaje"].ToString();
            _dataRowIncapacidad["Cod_Concepto"] = _dataRow["Cod_Concepto"].ToString();

            _dataTableIncapacidad.Rows.Add(_dataRowIncapacidad);
        }
        Session["dataTableIncapacidades"] = _dataTableIncapacidad;
        GridView_ID_CONCEPTO_INCAPACIDAD.DataSource = _dataTableIncapacidad;
        GridView_ID_CONCEPTO_INCAPACIDAD.DataBind();
    }