From 886c69c8d25dc881bf81cb8b2812b3831bd714a8 Mon Sep 17 00:00:00 2001 From: JORGE LUIS CAUDILLO ESPARZA Date: Thu, 30 May 2024 07:17:28 -0700 Subject: [PATCH] movimeintos permanentes --- App_Code/ClsNominas.vb | 21 + App_Code/ClsPaginas.vb | 574 +++++++++++++------------ App_Code/ClsRH.vb | 15 + General/SaldosIniciales.aspx.vb | 2 +- Nomina/Nomina.aspx.cs | 18 +- Nomina/ReportePTU.aspx | 15 +- Nomina/ReportePTU.aspx.vb | 14 + RH/CatAsistenciasInasistencias.aspx | 3 + RH/CatAsistenciasInasistencias.aspx.vb | 14 + RH/Personal.aspx | 15 +- RH/Personal.aspx.vb | 17 + 11 files changed, 417 insertions(+), 291 deletions(-) diff --git a/App_Code/ClsNominas.vb b/App_Code/ClsNominas.vb index fcb9f0653..4261e7144 100644 --- a/App_Code/ClsNominas.vb +++ b/App_Code/ClsNominas.vb @@ -3812,6 +3812,27 @@ Public Class ClsNominas End Function + Public Function MovimientosSaldosGet(cvePersonal As Int32, cvePeriodo As Int32, cveUsuario As Int32, cveEmpresa As Int32) As Boolean + Dim retorno As Boolean = False + DataAdapter("PA_Nom_MovimientosSaldosGet", CommandType.StoredProcedure) + addParameters("@CvePersonal", SqlDbType.Int, cvePersonal) + addParameters("@CvePeriodo", SqlDbType.Int, cvePeriodo) + addParameters("@CveUsuario", SqlDbType.Int, cveUsuario) + addParameters("@CveEmpresa", SqlDbType.Int, cveEmpresa) + retorno = RunQuery("Ocurrió un error al obtener el MovimientosSaldosGet.") + Return retorno + End Function + + Public Function NomMovimientosShow(cvePersonal As Int32, cvePeriodo As Int32, cveUsuario As Int32, cveEmpresa As Int32) As Boolean + Dim retorno As Boolean = False + DataAdapter("PA_Nom_MovimientosShow", CommandType.StoredProcedure) + addParameters("@CvePersonal", SqlDbType.Int, cvePersonal) + addParameters("@CvePeriodo", SqlDbType.Int, cvePeriodo) + addParameters("@CveUsuario", SqlDbType.Int, cveUsuario) + addParameters("@CveEmpresa", SqlDbType.Int, cveEmpresa) + retorno = RunQuery("Ocurrió un error al obtener el NomMovimientosShow.") + Return retorno + End Function Public Sub addParameters(varsql As String, sqltipe As SqlDbType, valor As Object) SqlAdapter.SelectCommand.Parameters.Add(varsql, sqltipe).Value = valor diff --git a/App_Code/ClsPaginas.vb b/App_Code/ClsPaginas.vb index 277b6fbf5..022a7f354 100644 --- a/App_Code/ClsPaginas.vb +++ b/App_Code/ClsPaginas.vb @@ -8150,299 +8150,315 @@ Public Class ClsPaginas #End Region #Region "PDF NOMINA" Public Function GeneraPDFNomina(CvePersonal As Integer, CvePeriodo As Integer, CveEmpresa As Integer, RutaEmpresa As String, Optional indemnizacion As Boolean = False) As Byte() - Dim ObjNomina As New ClsNominas - Dim ObjPersonal As New ClsRH - Dim TieneError As Boolean = False Dim Retorno As Byte() = Nothing - If Not ObjNomina.GetNom_Nominas(-1, CvePersonal, CvePeriodo, -1, CveEmpresa) Then - Alert("Ocurrio un erro al obtener datos de la nomina", TipoMensaje.MsgError) - ObjPersonal.Dispose() - ObjNomina.Dispose() - Return Nothing - End If - Dim CveNomina As Integer = ObjNomina.CveNomina - Dim DTPercepciones As Data.DataTable - Dim DTDeducciones As Data.DataTable - Dim DTDeducciones2 As New Data.DataTable - Dim Ruta As String = UsuarioActual.Empresa.Ruta - Dim PathXML As String = $"{Ruta}XML\Nomina\{ObjNomina.Serie }{If(indemnizacion, "F", "")}-{ObjNomina.Folio}.xml" - Dim FechaEmision, FechaCertificacion As DateTime - Dim FolioFiscal, NoSerieCertificado, NoSerieCertificadoContribuyente, SelloCFDi, SelloSAT As String - FolioFiscal = "" - NoSerieCertificado = "" - SelloCFDi = "" - SelloSAT = "" - NoSerieCertificadoContribuyente = "" - Dim RutaCBB As String = String.Format("{0}CBB\Nomina\{1}.jpg", RutaEmpresa, ObjNomina.SerieFolio) - Dim ImagenCBB As New System.IO.FileInfo(RutaCBB) - Dim ImgCBB As String - Dim RutaFormato As String = String.Format("{0}Formatos\Nomina.rdlc", RutaEmpresa) - Dim RutaFormatoDefault As String = String.Format("Empresas\Grales\Formatos\Nomina.rdlc") - Dim CFDIVersion As String = "" - Dim UsoCFDI As String = "ND" - - - - 'SI ESTA TIMBRADA - CON XML - If System.IO.File.Exists(PathXML) Then - Dim XmlDoc As New System.Xml.XmlDocument - 'XmlDoc.Load(Ruta & "XML\\Nomina\NOM A-3845.xml") - XmlDoc.Load(PathXML) - - If ValorNodoXML(XmlDoc.DocumentElement, "version").Contiene("3.3", "4.0") Then - FechaEmision = XmlDoc.DocumentElement.Attributes("Fecha").InnerText.ToDate - NoSerieCertificadoContribuyente = XmlDoc.DocumentElement.Attributes("NoCertificado").InnerText - For i As Integer = 0 To XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes.Count - 1 - If XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Name = "tfd:TimbreFiscalDigital" Then - FolioFiscal = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("UUID").InnerText - NoSerieCertificado = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("NoCertificadoSAT").InnerText - FechaCertificacion = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("FechaTimbrado").InnerText.ToDate - SelloCFDi = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("SelloCFD").InnerText - SelloSAT = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("SelloSAT").InnerText - End If - Next - Else - FechaEmision = XmlDoc.DocumentElement.Attributes("fecha").InnerText.ToDate - NoSerieCertificadoContribuyente = XmlDoc.DocumentElement.Attributes("noCertificado").InnerText - For i As Integer = 0 To XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes.Count - 1 - If XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Name = "tfd:timbreFiscalDigital" Then - FolioFiscal = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("UUID").InnerText - NoSerieCertificado = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("noCertificadoSAT").InnerText - FechaCertificacion = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("fechaTimbrado").InnerText.ToDate - SelloCFDi = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("selloCFD").InnerText - SelloSAT = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("selloSAT").InnerText - End If - Next - End If - - - - Try - CFDIVersion = ValorNodoXML(XmlDoc.DocumentElement, "version") - - - Dim nsManager As New XmlNamespaceManager(XmlDoc.NameTable) - nsManager.AddNamespace("cfdi", If(CFDIVersion = "4.0", "http://www.sat.gob.mx/cfd/4", "http://www.sat.gob.mx/cfd/3")) - - Dim receptorNode As XmlNode = XmlDoc.SelectSingleNode("/cfdi:comprobante/cfdi:emisor/cfdi:receptor", nsManager) - - If receptorNode IsNot Nothing Then - UsoCFDI = ValorNodoXML(receptorNode, "usocfdi") - Dim UsoCFDIImprimir As String = GlobalDTSATUsosCFDI(-1, "-1").FiltroPrimeroValor("UsoCFDIDescripcion", $" UsoCFDI = '{UsoCFDI}' ") - - If UsoCFDIImprimir.Trim.Length > 0 Then - UsoCFDI = UsoCFDIImprimir - End If + Using ObjNomina As New ClsNominas + Using ObjPersonal As New ClsRH + Dim TieneError As Boolean = False + If Not ObjNomina.GetNom_Nominas(-1, CvePersonal, CvePeriodo, -1, CveEmpresa) Then + Alert("Ocurrio un erro al obtener datos de la nomina", TipoMensaje.MsgError) + ObjPersonal.Dispose() + ObjNomina.Dispose() + Return Nothing End If + Dim CveNomina As Integer = ObjNomina.CveNomina + Dim DTPercepciones As Data.DataTable + Dim DTDeducciones As Data.DataTable + Dim DTDeducciones2 As New Data.DataTable + Dim Ruta As String = UsuarioActual.Empresa.Ruta + Dim PathXML As String = $"{Ruta}XML\Nomina\{ObjNomina.Serie }{If(indemnizacion, "F", "")}-{ObjNomina.Folio}.xml" + Dim FechaEmision, FechaCertificacion As DateTime + Dim FolioFiscal, NoSerieCertificado, NoSerieCertificadoContribuyente, SelloCFDi, SelloSAT As String + FolioFiscal = "" + NoSerieCertificado = "" + SelloCFDi = "" + SelloSAT = "" + NoSerieCertificadoContribuyente = "" + Dim RutaCBBDir As String = String.Format("{0}CBB\Nomina\", RutaEmpresa) + If Not (System.IO.Directory.Exists(RutaCBBDir)) Then + System.IO.Directory.CreateDirectory(RutaCBBDir) + End If + Dim RutaCBB As String = String.Format("{0}{1}.jpg", RutaCBBDir, ObjNomina.SerieFolio) + Dim ImagenCBB As New System.IO.FileInfo(RutaCBB) + Dim ImgCBB As String + Dim RutaFormato As String = String.Format("{0}Formatos\Nomina.rdlc", RutaEmpresa) + Dim RutaFormatoDefault As String = String.Format("Empresas\Grales\Formatos\Nomina.rdlc") + Dim CFDIVersion As String = "" + Dim UsoCFDI As String = "ND" - If UsoCFDI = "ND" Or UsoCFDI = "" Then - If CFDIVersion = "4.0" Then - UsoCFDI = "CN01 - Nómina" + + 'SI ESTA TIMBRADA - CON XML + If System.IO.File.Exists(PathXML) Then + Dim XmlDoc As New System.Xml.XmlDocument + 'XmlDoc.Load(Ruta & "XML\\Nomina\NOM A-3845.xml") + XmlDoc.Load(PathXML) + + If ValorNodoXML(XmlDoc.DocumentElement, "version").Contiene("3.3", "4.0") Then + FechaEmision = XmlDoc.DocumentElement.Attributes("Fecha").InnerText.ToDate + NoSerieCertificadoContribuyente = XmlDoc.DocumentElement.Attributes("NoCertificado").InnerText + For i As Integer = 0 To XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes.Count - 1 + If XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Name = "tfd:TimbreFiscalDigital" Then + FolioFiscal = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("UUID").InnerText + NoSerieCertificado = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("NoCertificadoSAT").InnerText + FechaCertificacion = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("FechaTimbrado").InnerText.ToDate + SelloCFDi = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("SelloCFD").InnerText + SelloSAT = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("SelloSAT").InnerText + End If + Next Else - UsoCFDI = "P01 - Por definir" + FechaEmision = XmlDoc.DocumentElement.Attributes("fecha").InnerText.ToDate + NoSerieCertificadoContribuyente = XmlDoc.DocumentElement.Attributes("noCertificado").InnerText + For i As Integer = 0 To XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes.Count - 1 + If XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Name = "tfd:timbreFiscalDigital" Then + FolioFiscal = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("UUID").InnerText + NoSerieCertificado = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("noCertificadoSAT").InnerText + FechaCertificacion = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("fechaTimbrado").InnerText.ToDate + SelloCFDi = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("selloCFD").InnerText + SelloSAT = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("selloSAT").InnerText + End If + Next End If + + + Try + CFDIVersion = ValorNodoXML(XmlDoc.DocumentElement, "version") + + + Dim nsManager As New XmlNamespaceManager(XmlDoc.NameTable) + nsManager.AddNamespace("cfdi", If(CFDIVersion = "4.0", "http://www.sat.gob.mx/cfd/4", "http://www.sat.gob.mx/cfd/3")) + + Dim receptorNode As XmlNode = XmlDoc.SelectSingleNode("/cfdi:comprobante/cfdi:emisor/cfdi:receptor", nsManager) + + If receptorNode IsNot Nothing Then + UsoCFDI = ValorNodoXML(receptorNode, "usocfdi") + Dim UsoCFDIImprimir As String = GlobalDTSATUsosCFDI(-1, "-1").FiltroPrimeroValor("UsoCFDIDescripcion", $" UsoCFDI = '{UsoCFDI}' ") + + If UsoCFDIImprimir.Trim.Length > 0 Then + UsoCFDI = UsoCFDIImprimir + End If + + End If + + If UsoCFDI = "ND" Or UsoCFDI = "" Then + + If CFDIVersion = "4.0" Then + UsoCFDI = "CN01 - Nómina" + Else + UsoCFDI = "P01 - Por definir" + End If + + End If + + + Catch ex As Exception + + End Try + + 'SIN TIMBRAR - SIN XML + Else + FolioFiscal = "Sin Timbrar" + NoSerieCertificado = "Sin Timbrar" + SelloCFDi = "Sin Timbrar" + SelloSAT = "Sin Timbrar" End If - - - Catch ex As Exception - - End Try - - 'SIN TIMBRAR - SIN XML - Else - FolioFiscal = "Sin Timbrar" - NoSerieCertificado = "Sin Timbrar" - SelloCFDi = "Sin Timbrar" - SelloSAT = "Sin Timbrar" - End If - 'Si no tiene CBB, SE GENERA - If Not ImagenCBB.Exists Then - If ObjPersonal.GetPersonal(CvePersonal, CveEmpresa) Then - GeneraQRSAT(UsuarioActual.Empresa.RFC, ObjPersonal.RFC, ObjNomina.Total.ToString.ToDecimal, FolioFiscal, RutaGuardado:=RutaCBB) - End If - End If - ImgCBB = String.Format("{0}://{1}:{2}/Empresas/{3}/CBB/Nomina/{4}.jpg", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, UsuarioActual.CveEmpresa, ObjNomina.SerieFolio) - Dim cQr As Byte() = Nothing - Try - Dim CadenaOriginalCFD As String = "||1.0|" + FolioFiscal + "|" + FechaCertificacion.ToString("yyyy-MM-dd") + "T" + FechaCertificacion.ToString("HH:mm:ss") + "|" + SelloCFDi + "|" + NoSerieCertificado + "||" - Dim RptParametro As New List(Of ReportParameter) - - 'Datos Empresa - RptParametro.Add(New ReportParameter("RegistroPatronal", ObjNomina.RegistroPatronal)) - Dim ajusteindemnizacion As Double = 0 - 'PERCECIONES - DEDUCCIONES - If ObjNomina.GetNom_NominasDetalles(CveNomina, CvePersonal, CvePeriodo, "-1") Then - Dim filtrop As String = " AND CveSistema NOT IN(10,11,32)" - Dim friltrod As String = " AND CveSistema <>47" - If indemnizacion Then - filtrop = "AND CveSistema IN(10,11,32)" - friltrod = " AND CveSistema =47" + 'Si no tiene CBB, SE GENERA + If Not ImagenCBB.Exists Then + If ObjPersonal.GetPersonal(CvePersonal, CveEmpresa) Then + GeneraQRSAT(UsuarioActual.Empresa.RFC, ObjPersonal.RFC, ObjNomina.Total.ToString.ToDecimal, FolioFiscal, RutaGuardado:=RutaCBB) + End If End If - DTPercepciones = ObjNomina.DtResultados.FiltraParametros($"((Tipo = 'P' OR (Tipo = 'D' AND Importe <0)) AND ((Importe <>0 AND EsPadre = 1 AND SoloVisible =0) OR Imprimir =1)) {filtrop}") - DTDeducciones = ObjNomina.DtResultados.FiltraParametros($"(Tipo = 'D' AND ((Importe >0 AND EsPadre = 1 AND SoloVisible =0) OR Imprimir =1) ) {friltrod}") - DTDeducciones2 = ObjNomina.DtResultados.FiltraParametros($"(Tipo = 'D' AND (( Importe >0 AND EsPadre = 1 AND SoloVisible =0) OR Imprimir =1) ){friltrod}") - ajusteindemnizacion = ObjNomina.DtResultados.FiltraParametros($"((Tipo = 'P' OR (Tipo = 'D' AND Importe <0)) AND Importe <>0 AND EsPadre = 1 AND SoloVisible =0) AND CveSistema IN(10,11,32)").SUM("Importe") - + ImgCBB = String.Format("{0}://{1}:{2}/Empresas/{3}/CBB/Nomina/{4}.jpg", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, UsuarioActual.CveEmpresa, ObjNomina.SerieFolio) + Dim cQr As Byte() = Nothing + Try + Dim CadenaOriginalCFD As String = "||1.0|" + FolioFiscal + "|" + FechaCertificacion.ToString("yyyy-MM-dd") + "T" + FechaCertificacion.ToString("HH:mm:ss") + "|" + SelloCFDi + "|" + NoSerieCertificado + "||" + Dim RptParametro As New List(Of ReportParameter) + + 'Datos Empresa + RptParametro.Add(New ReportParameter("RegistroPatronal", ObjNomina.RegistroPatronal)) + Dim ajusteindemnizacion As Double = 0 + 'PERCECIONES - DEDUCCIONES + If ObjNomina.GetNom_NominasDetalles(CveNomina, CvePersonal, CvePeriodo, "-1") Then + Dim filtrop As String = " AND CveSistema NOT IN(10,11,32)" + Dim friltrod As String = " AND CveSistema <>47" + If indemnizacion Then + filtrop = "AND CveSistema IN(10,11,32)" + friltrod = " AND CveSistema =47" + End If + DTPercepciones = ObjNomina.DtResultados.FiltraParametros($"((Tipo = 'P' OR (Tipo = 'D' AND Importe <0)) AND ((Importe <>0 AND EsPadre = 1 AND SoloVisible =0) OR Imprimir =1)) {filtrop}") + DTDeducciones = ObjNomina.DtResultados.FiltraParametros($"(Tipo = 'D' AND ((Importe >0 AND EsPadre = 1 AND SoloVisible =0) OR Imprimir =1) ) {friltrod}") + DTDeducciones2 = ObjNomina.DtResultados.FiltraParametros($"(Tipo = 'D' AND (( Importe >0 AND EsPadre = 1 AND SoloVisible =0) OR Imprimir =1) ){friltrod}") + ajusteindemnizacion = ObjNomina.DtResultados.FiltraParametros($"((Tipo = 'P' OR (Tipo = 'D' AND Importe <0)) AND Importe <>0 AND EsPadre = 1 AND SoloVisible =0) AND CveSistema IN(10,11,32)").SUM("Importe") - ObjNomina.DtResultados.FiltraParametros($"(Tipo = 'D' AND Importe >0 AND EsPadre = 1 AND SoloVisible =0) AND CveSistema =47").SUM("Importe") - For Each row As DataRow In DTPercepciones.Rows - If row("Tipo").ToString() = "D" Then - row("Codigo") = row("Codigo").ToString().Replace("D", "OP") - row("Importe") = row("Importe").ToString().ToDecimal() * -1 + For Each row As DataRow In DTPercepciones.Rows + If row("Tipo").ToString() = "D" Then + row("Codigo") = row("Codigo").ToString().Replace("D", "OP") + row("Importe") = row("Importe").ToString().ToDecimal() * -1 + End If + Next + Else + DTPercepciones = Nothing + DTDeducciones = Nothing End If - Next - Else - DTPercepciones = Nothing - DTDeducciones = Nothing - End If - Dim SalarioDiario As String - Dim SDI As String - Dim Departamento As String - Dim Puesto As String - 'DATOS DEL EMPLEADO - If ObjPersonal.GetPersonal(CvePersonal, CveEmpresa) Then - RptParametro.Add(New ReportParameter("NoEmpleado", ObjPersonal.Codigo)) - RptParametro.Add(New ReportParameter("RFC", ObjPersonal.RFC)) - RptParametro.Add(New ReportParameter("CURP", ObjPersonal.CURP)) - RptParametro.Add(New ReportParameter("NombreCompleto", String.Format("{0} {1} {2}", ObjPersonal.Nombres, ObjPersonal.APaterno, ObjPersonal.AMaterno).Trim())) - RptParametro.Add(New ReportParameter("Regimen", ObjPersonal.RegimenContratacion)) - RptParametro.Add(New ReportParameter("RiesgoPuesto", ObjPersonal.RiesgoPuesto)) - RptParametro.Add(New ReportParameter("NSS", ObjPersonal.NumeroSS)) - Departamento = ObjPersonal.Departamento - Puesto = ObjPersonal.Puesto.ToString() - RptParametro.Add(New ReportParameter("FechaIngreso", ObjPersonal.FechaIngreso.ToString("dd/MM/yyyy"))) - RptParametro.Add(New ReportParameter("Contrato", ObjPersonal.TipoContrato.ToString)) - RptParametro.Add(New ReportParameter("Jornada", ObjPersonal.Jornada)) - RptParametro.Add(New ReportParameter("Periodo", ObjNomina.TipoPeriodo)) - RptParametro.Add(New ReportParameter("Banco", ObjPersonal.Banco)) - RptParametro.Add(New ReportParameter("CLABE", ObjPersonal.CLABE)) - SalarioDiario = ObjPersonal.SalarioDiario.ToString - SDI = ObjPersonal.SDI.ToString - If ObjNomina.GetNom_NominasDataXML(CveNomina, CvePersonal, CvePeriodo, 1, CveEmpresa) AndAlso ObjNomina.DtResultados.Rows.Count > 0 Then - Dim drow As DataRow = ObjNomina.DtResultados.Rows(0) - SalarioDiario = drow("SalarioDiario").ToString() - SDI = drow("NomRSalarioDiarioIntegrado").ToString() - Departamento = drow("NomRDepartamento").ToString() - Puesto = drow("NomRPuesto").ToString() - End If - RptParametro.Add(New ReportParameter("SalarioBase", SalarioDiario)) - RptParametro.Add(New ReportParameter("SalarioDiarioInt", SDI)) - RptParametro.Add(New ReportParameter("Departamento", Departamento)) - RptParametro.Add(New ReportParameter("Puesto", Puesto)) - 'DATOS NOMINA - If ObjNomina.GetNom_Nominas(CveNomina, CvePersonal, CvePeriodo, 1, CveEmpresa) Then - RptParametro.Add(New ReportParameter("ReciboNomina", ObjNomina.Folio.ToString)) - RptParametro.Add(New ReportParameter("Serie", ObjNomina.Serie)) - RptParametro.Add(New ReportParameter("Fecha", ObjNomina.Fecha.ToString)) - RptParametro.Add(New ReportParameter("Periodo", ObjNomina.TipoPeriodo)) - RptParametro.Add(New ReportParameter("DiasPagados", ObjNomina.DiasPagados.ToString)) - RptParametro.Add(New ReportParameter("MetodoPago", ObjNomina.MetodoPago)) '"""PUE"" (Pago en una sola exhibición)" - RptParametro.Add(New ReportParameter("FormaPago", """99"" (Por definir)")) - RptParametro.Add(New ReportParameter("Cantidad", "1")) - RptParametro.Add(New ReportParameter("Unidad", "ACT")) - RptParametro.Add(New ReportParameter("Descripcion", "PAGO DE NÓMINA")) - RptParametro.Add(New ReportParameter("Total", If(indemnizacion, ajusteindemnizacion, ObjNomina.Total - ajusteindemnizacion).ToString())) - RptParametro.Add(New ReportParameter("ImporteLetra", ObjNomina.Total.ToString.ToDecimal.Texto2Letras)) - RptParametro.Add(New ReportParameter("Clave", "84111505")) - cQr = GeneraQRSAT(UsuarioActual.Empresa.RFC, ObjPersonal.RFC, ObjNomina.Total.ToString().ToDecimal(), FolioFiscal) - Else - TieneError = True - End If - Else - TieneError = True - End If - If Not TieneError Then - If ObjNomina.GetPeriodos(-1, CveEmpresa, -1, -1, CvePeriodo) Then - RptParametro.Add(New ReportParameter("FechaInicio", ObjNomina.FechaInicio.ToString("dd/MM/yyyy"))) - RptParametro.Add(New ReportParameter("FechaFin", ObjNomina.FechaFin.ToString("dd/MM/yyyy"))) - Else - TieneError = True - End If - End If - - RptParametro.Add(New ReportParameter("PU", DTPercepciones.SUM("Importe").ToString())) - RptParametro.Add(New ReportParameter("Importe", DTPercepciones.SUM("Importe").ToString())) - RptParametro.Add(New ReportParameter("ImporteDeducciones", DTDeducciones.SUM("Importe").ToString())) - RptParametro.Add(New ReportParameter("SubTotal", DTPercepciones.SUM("Importe").ToString())) - RptParametro.Add(New ReportParameter("Descuentos", DTDeducciones.SUM("Importe", "SATCveConcepto <> '002'").ToString())) - RptParametro.Add(New ReportParameter("ISR", DTDeducciones.SUM("Importe", "SATCveConcepto = '002'").ToString())) - 'Timbrado - RptParametro.Add(New ReportParameter("FolioFiscal", FolioFiscal)) - RptParametro.Add(New ReportParameter("CertificadoSAT", NoSerieCertificado)) - RptParametro.Add(New ReportParameter("FechaCertificacion", FechaCertificacion.ToString)) - RptParametro.Add(New ReportParameter("SelloDigitalEmisor", SelloCFDi)) - RptParametro.Add(New ReportParameter("SelloDigitalSAT", SelloSAT)) - RptParametro.Add(New ReportParameter("CadenaOriginal", CadenaOriginalCFD)) - RptParametro.Add(New ReportParameter("QR", ImgCBB.ToString)) - - RptParametro.Add(New ReportParameter("CFDIVersion", CFDIVersion)) - RptParametro.Add(New ReportParameter("UsoCFDI", UsoCFDI)) - - Dim LSRds As New List(Of ReportDataSource) - - Dim rds2 As ReportDataSource = New ReportDataSource() - Dim dtqr As New DataTable - Dim column As DataColumn = New DataColumn("ImagenByte") - column.DataType = System.Type.[GetType]("System.Byte[]") - column.AllowDBNull = True - column.Caption = "ImagenByte" - dtqr.Columns.Add(column) - Dim rowqr As DataRow = dtqr.NewRow() - rowqr("ImagenByte") = cQr - dtqr.Rows.Add(rowqr) - rds2.Name = "dsImagenes" - rds2.Value = dtqr - LSRds.Add(rds2) - Dim numnewfiles As Integer = 0 - If DTPercepciones.Rows.Count > DTDeducciones2.Rows.Count Then - numnewfiles = DTPercepciones.Rows.Count - DTDeducciones2.Rows.Count - For index As Integer = 1 To numnewfiles - DTDeducciones2.Rows.Add(DTDeducciones2.NewRow) - Next - Else - If DTDeducciones2.Rows.Count > DTPercepciones.Rows.Count Then - numnewfiles = DTDeducciones2.Rows.Count - DTPercepciones.Rows.Count - For index As Integer = 1 To numnewfiles - DTPercepciones.Rows.Add(DTPercepciones.NewRow) - Next - End If - End If - Dim RptDS As New ReportDataSource - RptDS.Name = "DsOC" - RptDS.Value = DTPercepciones - LSRds.Add(RptDS) - Dim RDS As New ReportDataSource - RDS.Name = "DataSet1" - RDS.Value = DTDeducciones2 - LSRds.Add(RDS) - Dim Archivo As New System.IO.FileInfo(RutaFormato) - If Not TieneError Then - If Archivo.Exists Then - Retorno = StreamPDF(RutaFormato, LSRds, RptParametro, ObjNomina.SerieFolio, "PDF", MR:=Nothing) - Dim ArchivoPDF As New System.IO.FileInfo(String.Format("{0}PDF\\{1}.pdf", RutaEmpresa, ObjNomina.SerieFolio)) - If Not ArchivoPDF.Exists Then - Try - DirectoryExistsCreate(String.Format("{0}PDF", RutaEmpresa)) - DirectoryExistsCreate(String.Format("{0}PDF\{1}", RutaEmpresa, "Nomina")) - File.WriteAllBytes(String.Format("{0}PDF\Nomina\{1}.pdf", RutaEmpresa, ObjNomina.SerieFolio), Retorno) - Catch ex As Exception - Alert("Ocurrió un error al generar el PDF", TipoMensaje.MsgAdvertencia) - GuardaLog(String.Format("Ocurrió un error al generar el PDF {0}", ex)) - End Try + Dim SalarioDiario As String + Dim SDI As String + Dim Departamento As String + Dim Puesto As String + 'DATOS DEL EMPLEADO + If ObjPersonal.GetPersonal(CvePersonal, CveEmpresa) Then + RptParametro.Add(New ReportParameter("NoEmpleado", ObjPersonal.Codigo)) + RptParametro.Add(New ReportParameter("RFC", ObjPersonal.RFC)) + RptParametro.Add(New ReportParameter("CURP", ObjPersonal.CURP)) + RptParametro.Add(New ReportParameter("NombreCompleto", String.Format("{0} {1} {2}", ObjPersonal.Nombres, ObjPersonal.APaterno, ObjPersonal.AMaterno).Trim())) + RptParametro.Add(New ReportParameter("Regimen", ObjPersonal.RegimenContratacion)) + RptParametro.Add(New ReportParameter("RiesgoPuesto", ObjPersonal.RiesgoPuesto)) + RptParametro.Add(New ReportParameter("NSS", ObjPersonal.NumeroSS)) + Departamento = ObjPersonal.Departamento + Puesto = ObjPersonal.Puesto.ToString() + RptParametro.Add(New ReportParameter("FechaIngreso", ObjPersonal.FechaIngreso.ToString("dd/MM/yyyy"))) + RptParametro.Add(New ReportParameter("Contrato", ObjPersonal.TipoContrato.ToString)) + RptParametro.Add(New ReportParameter("Jornada", ObjPersonal.Jornada)) + RptParametro.Add(New ReportParameter("Periodo", ObjNomina.TipoPeriodo)) + RptParametro.Add(New ReportParameter("Banco", ObjPersonal.Banco)) + RptParametro.Add(New ReportParameter("CLABE", ObjPersonal.CLABE)) + SalarioDiario = ObjPersonal.SalarioDiario.ToString + SDI = ObjPersonal.SDI.ToString + If ObjNomina.GetNom_NominasDataXML(CveNomina, CvePersonal, CvePeriodo, 1, CveEmpresa) AndAlso ObjNomina.DtResultados.Rows.Count > 0 Then + Dim drow As DataRow = ObjNomina.DtResultados.Rows(0) + SalarioDiario = drow("SalarioDiario").ToString() + SDI = drow("NomRSalarioDiarioIntegrado").ToString() + Departamento = drow("NomRDepartamento").ToString() + Puesto = drow("NomRPuesto").ToString() + End If + RptParametro.Add(New ReportParameter("SalarioBase", SalarioDiario)) + RptParametro.Add(New ReportParameter("SalarioDiarioInt", SDI)) + RptParametro.Add(New ReportParameter("Departamento", Departamento)) + RptParametro.Add(New ReportParameter("Puesto", Puesto)) + 'DATOS NOMINA + If ObjNomina.GetNom_Nominas(CveNomina, CvePersonal, CvePeriodo, 1, CveEmpresa) Then + RptParametro.Add(New ReportParameter("ReciboNomina", ObjNomina.Folio.ToString)) + RptParametro.Add(New ReportParameter("Serie", ObjNomina.Serie)) + RptParametro.Add(New ReportParameter("Fecha", ObjNomina.Fecha.ToString)) + RptParametro.Add(New ReportParameter("Periodo", ObjNomina.TipoPeriodo)) + RptParametro.Add(New ReportParameter("DiasPagados", ObjNomina.DiasPagados.ToString)) + RptParametro.Add(New ReportParameter("MetodoPago", ObjNomina.MetodoPago)) '"""PUE"" (Pago en una sola exhibición)" + RptParametro.Add(New ReportParameter("FormaPago", """99"" (Por definir)")) + RptParametro.Add(New ReportParameter("Cantidad", "1")) + RptParametro.Add(New ReportParameter("Unidad", "ACT")) + RptParametro.Add(New ReportParameter("Descripcion", "PAGO DE NÓMINA")) + RptParametro.Add(New ReportParameter("Total", If(indemnizacion, ajusteindemnizacion, ObjNomina.Total - ajusteindemnizacion).ToString())) + RptParametro.Add(New ReportParameter("ImporteLetra", ObjNomina.Total.ToString.ToDecimal.Texto2Letras)) + RptParametro.Add(New ReportParameter("Clave", "84111505")) + cQr = GeneraQRSAT(UsuarioActual.Empresa.RFC, ObjPersonal.RFC, ObjNomina.Total.ToString().ToDecimal(), FolioFiscal) + Else + TieneError = True + End If + Else + TieneError = True + End If + If Not TieneError Then + If ObjNomina.GetPeriodos(-1, CveEmpresa, -1, -1, CvePeriodo) Then + RptParametro.Add(New ReportParameter("FechaInicio", ObjNomina.FechaInicio.ToString("dd/MM/yyyy"))) + RptParametro.Add(New ReportParameter("FechaFin", ObjNomina.FechaFin.ToString("dd/MM/yyyy"))) + Else + TieneError = True + End If End If - Else - 'ImprimirPDF(String.Format("{0}\Formatos\Nomina.rdlc", RutaEmpresa), LSRds, RptParametro, ObjNomina.SerieFolio) - End If - Else - Alert("Ocurrio un error al obtener los datos de la Nomina") - End If - Catch ex As Exception - GuardaLog(String.Format("Ocurrio un error al generar el reporte RLDC {0}", ex)) - End Try - ObjNomina.Dispose() - ObjPersonal.Dispose() + RptParametro.Add(New ReportParameter("PU", DTPercepciones.SUM("Importe").ToString())) + RptParametro.Add(New ReportParameter("Importe", DTPercepciones.SUM("Importe").ToString())) + RptParametro.Add(New ReportParameter("ImporteDeducciones", DTDeducciones.SUM("Importe").ToString())) + RptParametro.Add(New ReportParameter("SubTotal", DTPercepciones.SUM("Importe").ToString())) + RptParametro.Add(New ReportParameter("Descuentos", DTDeducciones.SUM("Importe", "SATCveConcepto <> '002'").ToString())) + RptParametro.Add(New ReportParameter("ISR", DTDeducciones.SUM("Importe", "SATCveConcepto = '002'").ToString())) + 'Timbrado + RptParametro.Add(New ReportParameter("FolioFiscal", FolioFiscal)) + RptParametro.Add(New ReportParameter("CertificadoSAT", NoSerieCertificado)) + RptParametro.Add(New ReportParameter("FechaCertificacion", FechaCertificacion.ToString)) + RptParametro.Add(New ReportParameter("SelloDigitalEmisor", SelloCFDi)) + RptParametro.Add(New ReportParameter("SelloDigitalSAT", SelloSAT)) + RptParametro.Add(New ReportParameter("CadenaOriginal", CadenaOriginalCFD)) + RptParametro.Add(New ReportParameter("QR", ImgCBB.ToString)) + + RptParametro.Add(New ReportParameter("CFDIVersion", CFDIVersion)) + RptParametro.Add(New ReportParameter("UsoCFDI", UsoCFDI)) + + Dim LSRds As New List(Of ReportDataSource) + + Dim rds2 As ReportDataSource = New ReportDataSource() + Dim dtqr As New DataTable + Dim column As DataColumn = New DataColumn("ImagenByte") + column.DataType = System.Type.[GetType]("System.Byte[]") + column.AllowDBNull = True + column.Caption = "ImagenByte" + dtqr.Columns.Add(column) + Dim rowqr As DataRow = dtqr.NewRow() + rowqr("ImagenByte") = cQr + dtqr.Rows.Add(rowqr) + rds2.Name = "dsImagenes" + rds2.Value = dtqr + LSRds.Add(rds2) + Dim numnewfiles As Integer = 0 + If DTPercepciones.Rows.Count > DTDeducciones2.Rows.Count Then + numnewfiles = DTPercepciones.Rows.Count - DTDeducciones2.Rows.Count + For index As Integer = 1 To numnewfiles + DTDeducciones2.Rows.Add(DTDeducciones2.NewRow) + Next + Else + If DTDeducciones2.Rows.Count > DTPercepciones.Rows.Count Then + numnewfiles = DTDeducciones2.Rows.Count - DTPercepciones.Rows.Count + For index As Integer = 1 To numnewfiles + DTPercepciones.Rows.Add(DTPercepciones.NewRow) + Next + End If + End If + + If ObjNomina.NomMovimientosShow(CvePersonal, CvePeriodo, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then + If Not IsNothing(ObjNomina.DtResultados) And ObjNomina.DtResultados.Rows.Count > 0 And ObjNomina.DtResultados.Rows(0)("ShowMovtosPermanentes").ToString() = "1" Then + If ObjNomina.MovimientosSaldosGet(CvePersonal, CvePeriodo, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then + Dim RptDSMP As New ReportDataSource + RptDSMP.Name = "DsMovtosPermanentes" + RptDSMP.Value = ObjNomina.DtResultados + LSRds.Add(RptDSMP) + End If + End If + End If + Dim RptDS As New ReportDataSource + RptDS.Name = "DsOC" + RptDS.Value = DTPercepciones + LSRds.Add(RptDS) + Dim RDS As New ReportDataSource + RDS.Name = "DataSet1" + RDS.Value = DTDeducciones2 + LSRds.Add(RDS) + Dim Archivo As New System.IO.FileInfo(RutaFormato) + If Not TieneError Then + If Archivo.Exists Then + Retorno = StreamPDF(RutaFormato, LSRds, RptParametro, ObjNomina.SerieFolio, "PDF", MR:=Nothing) + Dim ArchivoPDF As New System.IO.FileInfo(String.Format("{0}PDF\\{1}.pdf", RutaEmpresa, ObjNomina.SerieFolio)) + If Not ArchivoPDF.Exists Then + Try + DirectoryExistsCreate(String.Format("{0}PDF", RutaEmpresa)) + DirectoryExistsCreate(String.Format("{0}PDF\{1}", RutaEmpresa, "Nomina")) + File.WriteAllBytes(String.Format("{0}PDF\Nomina\{1}.pdf", RutaEmpresa, ObjNomina.SerieFolio), Retorno) + Catch ex As Exception + Alert("Ocurrió un error al generar el PDF", TipoMensaje.MsgAdvertencia) + GuardaLog(String.Format("Ocurrió un error al generar el PDF {0}", ex)) + End Try + End If + Else + 'ImprimirPDF(String.Format("{0}\Formatos\Nomina.rdlc", RutaEmpresa), LSRds, RptParametro, ObjNomina.SerieFolio) + End If + Else + Alert("Ocurrio un error al obtener los datos de la Nomina") + End If + Catch ex As Exception + GuardaLog(String.Format("Ocurrio un error al generar el reporte RLDC {0}", ex)) + End Try + + End Using + End Using Return Retorno End Function #End Region diff --git a/App_Code/ClsRH.vb b/App_Code/ClsRH.vb index 259de04bf..10d97f41f 100644 --- a/App_Code/ClsRH.vb +++ b/App_Code/ClsRH.vb @@ -321,6 +321,21 @@ Public Class ClsRH #End Region #Region "ClsRHAsistenciasInasistencias" + + Public Function CargaInicialAsistenciaInasistencia(cveEmpresa As Int32, cveUsuario As Int32) As Boolean + Dim retorno As Boolean = False + DataAdapter("PA_RH_CargaInicialAsistenciaInasistencia", CommandType.StoredProcedure) + addParameters("@CveEmpresa", SqlDbType.Int, cveEmpresa) + addParameters("@CveUsuario", SqlDbType.Int, cveUsuario) + + Try + SqlAdapter.Fill(Data) + retorno = True + Catch ex As Exception + OnError("Ocurrió un error al realizar la carga inicial de asistencia inasistencia.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + End Try + Return retorno + End Function Public Function GetAsistenciasInasistencias(CveEmpresa As Integer) As Boolean Dim Retorno As Boolean = False diff --git a/General/SaldosIniciales.aspx.vb b/General/SaldosIniciales.aspx.vb index 494091251..4f113db72 100644 --- a/General/SaldosIniciales.aspx.vb +++ b/General/SaldosIniciales.aspx.vb @@ -3967,7 +3967,7 @@ Partial Class General_SaldosIniciales TxtExcel.Text = "" UpDatos.Update() Else - Alert(String.Format("Se agregaron: {0} Empleados correctamente.", NumRows), TipoMensaje.MsgInformacion) + Alert(String.Format("Se agregaron: {0} Empleados correctamente.", ContadorAgregados), TipoMensaje.MsgInformacion) ObjRH.Commit() TxtExcel.Text = "" UpDatos.Update() diff --git a/Nomina/Nomina.aspx.cs b/Nomina/Nomina.aspx.cs index 0d1a67388..159550188 100644 --- a/Nomina/Nomina.aspx.cs +++ b/Nomina/Nomina.aspx.cs @@ -325,7 +325,8 @@ public partial class Nomina_Nomina2 : ClsPaginas { if (!IsPostBack) - { + { + cargarutaempresa(); { DtNomOrden = new DataTable(); @@ -474,6 +475,15 @@ public partial class Nomina_Nomina2 : ClsPaginas } } } + private void cargarutaempresa() + { + string rutaCBBDir = String.Format("{0}CBB\\Nomina\\", UsuarioActual.Empresa.Ruta); + + if (!Directory.Exists(rutaCBBDir)) + { + Directory.CreateDirectory(rutaCBBDir); + } + } #region Filtros private void cargaEjercicios() { @@ -2109,7 +2119,7 @@ public partial class Nomina_Nomina2 : ClsPaginas { column++; libro.Cell(1, column).Value = row["CveConcepto"].ToString(); - libro.Cell(FilaConceptos, column).Value = "N"; + libro.Cell(FilaConceptos, column).Value = "S"; libro.Cell(3, column).Value = row["Concepto"].ToString(); libro.Cell(4, column).Value = row["Codigo"].ToString(); libro.Column(column).Width = 15; @@ -2124,7 +2134,7 @@ public partial class Nomina_Nomina2 : ClsPaginas { column++; libro.Cell(1, column).Value = row["CveConcepto"].ToString(); - libro.Cell(FilaConceptos, column).Value = "N"; + libro.Cell(FilaConceptos, column).Value = "S"; libro.Cell(3, column).Value = row["Concepto"].ToString(); libro.Cell(4, column).Value = row["Codigo"].ToString(); libro.Column(column).Width = 15; @@ -2139,7 +2149,7 @@ public partial class Nomina_Nomina2 : ClsPaginas { column++; libro.Cell(1, column).Value = row["CveConcepto"].ToString(); - libro.Cell(FilaConceptos, column).Value = "N"; + libro.Cell(FilaConceptos, column).Value = "S"; libro.Cell(3, column).Value = row["Concepto"].ToString(); libro.Cell(4, column).Value = row["Codigo"].ToString(); libro.Column(column).Width = 15; diff --git a/Nomina/ReportePTU.aspx b/Nomina/ReportePTU.aspx index d20134520..c48800e94 100644 --- a/Nomina/ReportePTU.aspx +++ b/Nomina/ReportePTU.aspx @@ -82,17 +82,26 @@
+
+
+ " style="display: inline-block; margin-right: -20px; width: 150px;" /> + " style="margin-top: -3px;" class="btn btn-circle btn-sm label-info"> +
+
+ DataKeyNames="Nombre,CvePersonal,DiasLaborados,SueldoTotal,Importe" > - + <%-- --%> + + - + + <%-- --%> diff --git a/Nomina/ReportePTU.aspx.vb b/Nomina/ReportePTU.aspx.vb index faacecee9..6c7458a6f 100644 --- a/Nomina/ReportePTU.aspx.vb +++ b/Nomina/ReportePTU.aspx.vb @@ -241,4 +241,18 @@ Partial Class Nomina_ReportePTU End If End If End Sub + + 'Protected Sub GVCalcularUtilidades_RowDataBound(sender As Object, e As GridViewRowEventArgs) + ' If e.Row.RowType = DataControlRowType.DataRow Then + ' Dim dataItem As DataRowView = CType(e.Row.DataItem, DataRowView) + ' Dim cvePersonal As String = e.Row.DataKey("CvePersonal").ToString() + ' Dim codigo As String = e.Row.DataKey("Codigo").ToString() + ' Dim nombre As String = e.Row.DataKey("Nombre").ToString() + + ' Dim lblC As Label = CType(e.Row.FindControl("lblC"), Label) + ' lblC.Text = String.Format("{1}", cvePersonal, codigo) + ' Dim lblnombreCompleto As Label = CType(e.Row.FindControl("lblnombreCompleto"), Label) + ' lblnombreCompleto.Text = String.Format("{1}", cvePersonal, nombre) + ' End If + 'End Sub End Class diff --git a/RH/CatAsistenciasInasistencias.aspx b/RH/CatAsistenciasInasistencias.aspx index 9a89935e4..5ea60b442 100644 --- a/RH/CatAsistenciasInasistencias.aspx +++ b/RH/CatAsistenciasInasistencias.aspx @@ -16,6 +16,9 @@
  • +
  • + +
  • diff --git a/RH/CatAsistenciasInasistencias.aspx.vb b/RH/CatAsistenciasInasistencias.aspx.vb index e280abb9a..02bd1e1a3 100644 --- a/RH/CatAsistenciasInasistencias.aspx.vb +++ b/RH/CatAsistenciasInasistencias.aspx.vb @@ -48,6 +48,7 @@ Partial Class RH_CatAsistenciasInasistencias Dim ObjAsistenciasInasistencias As New ClsRH If ObjAsistenciasInasistencias.GetAsistenciasInasistencias(UsuarioActual.CveEmpresa) Then ViewState("DTAsistenciasInasistencias") = ObjAsistenciasInasistencias.DtResultados + LnkCargapredefinidos.Visible = ObjAsistenciasInasistencias.DtResultados.Rows.Count = 0 Else Me.GvDatos.DataSource = Nothing End If @@ -258,4 +259,17 @@ Partial Class RH_CatAsistenciasInasistencias #End Region + + Protected Sub LnkCargapredefinidos_Click(sender As Object, e As EventArgs) + + Using objrh As New ClsRH() + 'objrh.IniciaTransacSQL() + If objrh.CargaInicialAsistenciaInasistencia(UsuarioActual.CveEmpresa, UsuarioActual.CveUsuario) Then + 'objrh.Commit() + Else + 'objrh.RollBack() + End If + End Using + CargaDatos() + End Sub End Class diff --git a/RH/Personal.aspx b/RH/Personal.aspx index 69b69fa73..492e18832 100644 --- a/RH/Personal.aspx +++ b/RH/Personal.aspx @@ -201,13 +201,13 @@
    - - + +
    - - + +
    @@ -315,6 +315,13 @@
    + + +
    diff --git a/RH/Personal.aspx.vb b/RH/Personal.aspx.vb index 8cd918c6b..0c5440285 100644 --- a/RH/Personal.aspx.vb +++ b/RH/Personal.aspx.vb @@ -8103,5 +8103,22 @@ Partial Class RH_Personal UpDatos.Update() End Sub + + + Protected Sub cvCadena_ServerValidate(source As Object, args As ServerValidateEventArgs) + Dim retorno As Boolean = True + ' Verifica que la longitud de la cadena sea 5 + If Len(args.Value) <> 5 Then + retorno = False + End If + + ' Verifica que la cadena sea numérica + If Not IsNumeric(args.Value) Then + retorno = False + End If + + args.IsValid = retorno + End Sub + End Class