diff --git a/App_Code/CFDITimbre.vb b/App_Code/CFDITimbre.vb index 4648e11e5..da170c392 100644 --- a/App_Code/CFDITimbre.vb +++ b/App_Code/CFDITimbre.vb @@ -367,7 +367,7 @@ Public Class CFDINominaOtrosPagos Public Property Subsidiocausado As Decimal Public Property RemanenteSalFav As Decimal Public Property ejercicio As Integer - Public Property SaldoAFavor As Integer + Public Property SaldoAFavor As Decimal End Class diff --git a/App_Code/ClsNominas.vb b/App_Code/ClsNominas.vb index 79507b7fc..75a06a6fe 100644 --- a/App_Code/ClsNominas.vb +++ b/App_Code/ClsNominas.vb @@ -2001,6 +2001,36 @@ Public Class ClsNominas End With + SqlAdapter.Fill(DTSet) + retorno = True + Catch sqEx As SqlException + retorno = False + OnError("Ocurrió un error al Realizar el calculo de nomina.", sqEx, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + Catch ex As Exception + retorno = False + OnError("Ocurrió un error al Realizar el calculo de nomina.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + End Try + Return retorno + End Function + Public Function GetNominaAcumulado(Ejercicio As Integer, CveProyecto As Integer, CveSubProyecto As Integer, CveTurno As Integer, CvePeriodoI As Integer, CvePeriodoF As Integer, CveEmpresa As Integer, Optional RegimenContratacion As Integer = 1, Optional CvePersonal As Integer = -1) As Boolean + Dim retorno As Boolean = False + + Try + DTSet = New DataSet() + DataAdapter("PA_Nom_ReporteAcumulado", CommandType.StoredProcedure) + With SqlAdapter.SelectCommand.Parameters + .Add("@Ejercicio", SqlDbType.Int).Value = Ejercicio + .Add("@CveProyecto", SqlDbType.Int).Value = CveProyecto + .Add("@CveSubProyecto", SqlDbType.Int).Value = CveSubProyecto + .Add("@CveTurno", SqlDbType.Int).Value = CveTurno + .Add("@CvePeriodoI", SqlDbType.Int).Value = CvePeriodoI + .Add("@CvePeriodoF", SqlDbType.Int).Value = CvePeriodoF + .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa + .Add("@RegimenContratacion", SqlDbType.Int).Value = RegimenContratacion + .Add("@CvePersonal", SqlDbType.Decimal).Value = CvePersonal + End With + + SqlAdapter.Fill(DTSet) retorno = True Catch sqEx As SqlException diff --git a/App_Code/ClsPaginas.vb b/App_Code/ClsPaginas.vb index fa913b16f..85eb32967 100644 --- a/App_Code/ClsPaginas.vb +++ b/App_Code/ClsPaginas.vb @@ -4674,6 +4674,7 @@ Public Class ClsPaginas PaginaDict.Add("/Nomina/Nomina.aspx".ToUpper(), 75) PaginaDict.Add("/Nomina/NominaB.aspx".ToUpper(), 75) PaginaDict.Add("/Nomina/Nomina2.aspx".ToUpper(), 75) + PaginaDict.Add("/Nomina/ReportedeAcumulados.aspx".ToUpper(), 75) PaginaDict.Add("/Nomina/ListaAsistencias.aspx".ToUpper(), 91) PaginaDict.Add("/Nomina/ConceptosEspeciales.aspx".ToUpper(), 136) PaginaDict.Add("/Nomina/CatConceptos.aspx".ToUpper(), 172) @@ -7790,6 +7791,7 @@ Public Class ClsPaginas #End Region #Region "PDF NOMINA" + Public Function GeneraPDFNomina(CvePersonal As Integer, CvePeriodo As Integer, CveEmpresa As Integer, RutaEmpresa As String) As Byte() Dim ObjNomina As New ClsNominas @@ -7807,6 +7809,7 @@ Public Class ClsPaginas Dim CveNomina = ObjNomina.CveNomina Dim DTPercepciones As Data.DataTable Dim DTDeducciones As Data.DataTable + Dim DTDeducciones2 As New Data.DataTable Dim Ruta As String = $"{ModExtensiones.DirectorioBaseEmpresas}Empresas\{CveEmpresa}\" Dim PathXML As String = $"{Ruta}XML\Nomina\{ObjNomina.SerieFolio}.xml" @@ -7818,7 +7821,6 @@ Public Class ClsPaginas 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 @@ -7904,7 +7906,8 @@ Public Class ClsPaginas RptParametro.Add(New ReportParameter("NSS", ObjPersonal.NumeroSS)) RptParametro.Add(New ReportParameter("Departamento", ObjPersonal.Departamento)) - RptParametro.Add(New ReportParameter("Puesto", ObjPersonal.Puesto.ToString)) + RptParametro.Add(New ReportParameter("Puesto", ObjPersonal.Puesto.ToString())) + RptParametro.Add(New ReportParameter("FechaIngreso", ObjPersonal.FechaIngreso.ToString("dd/MM/yyyy"))) RptParametro.Add(New ReportParameter("Contrato", ObjPersonal.TipoContrato.ToString)) @@ -7925,7 +7928,7 @@ Public Class ClsPaginas RptParametro.Add(New ReportParameter("Periodo", ObjNomina.TipoPeriodo)) RptParametro.Add(New ReportParameter("DiasPagados", ObjNomina.DiasPagados.ToString)) - RptParametro.Add(New ReportParameter("MetodoPago", """PUE"" (Pago en una sola exhibición)")) + 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")) @@ -7957,6 +7960,7 @@ Public Class ClsPaginas If ObjNomina.GetNom_NominasDetalles(CveNomina, CvePersonal, CvePeriodo, "-1") Then DTPercepciones = ObjNomina.DtResultados.FiltraParametros("(Tipo = 'P' OR (Tipo = 'D' AND Importe <0)) AND Importe <>0 AND EsPadre = 1 AND SoloVisible =0") DTDeducciones = ObjNomina.DtResultados.FiltraParametros("Tipo = 'D' AND Importe >0 AND EsPadre = 1 AND SoloVisible =0") + DTDeducciones2 = ObjNomina.DtResultados.FiltraParametros("(Tipo = 'D' AND Importe >0 AND EsPadre = 1 AND SoloVisible =0) OR CveConcepto IN (1471,1491)", "Orden") For Each row As DataRow In DTPercepciones.Rows If row("Tipo").ToString() = "D" Then row("Codigo") = row("Codigo").ToString().Replace("D", "OP") @@ -7971,6 +7975,7 @@ Public Class ClsPaginas 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())) @@ -7989,10 +7994,20 @@ Public Class ClsPaginas Dim rds2 = New ReportDataSource() - Dim limagenes = New List(Of utilImage)() - limagenes.Add(New utilImage(cQr)) + + 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 = limagenes + rds2.Value = dtqr LSRds.Add(rds2) @@ -8003,7 +8018,7 @@ Public Class ClsPaginas Dim RDS As New ReportDataSource RDS.Name = "DataSet1" - RDS.Value = DTDeducciones + RDS.Value = DTDeducciones2 LSRds.Add(RDS) Dim Archivo As New System.IO.FileInfo(RutaFormato) @@ -8018,6 +8033,7 @@ Public Class ClsPaginas 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 @@ -8038,12 +8054,6 @@ Public Class ClsPaginas Return Retorno End Function - Public Class utilImage - Public Sub New(imagenByte As Byte()) - Me.ImagenByte = imagenByte - End Sub - Public Property ImagenByte As Byte() - End Class #End Region #Region "PDF PAGOS" @@ -8309,7 +8319,7 @@ Public Class ClsPaginas End Sub #End Region - Public Sub CargarCentrosDeCosto(DdlProyecto As DropDownList, DdlSubProyecto As DropDownList, LthProyectoP As Label, LblSubProyecto As Label, Optional AplicaTodos As String = "Todos") + Public Sub CargarCentrosDeCosto(DdlProyecto As DropDownList, DdlSubProyecto As DropDownList, LthProyectoP As Label, LblSubProyecto As Label, Optional AplicaTodos As String = "Todos", Optional DdlSubProyectoMultiple As ListBox = Nothing) Select Case UsuarioActual.Empresa.Tipo_CentroCosto Case 1 If DdlProyecto IsNot Nothing Then DdlProyecto.Visible = False @@ -8337,6 +8347,12 @@ Public Class ClsPaginas If AplicaTodos <> "" Then DdlProyecto.Items.Insert(0, New ListItem(AplicaTodos, "-1")) End If + If DdlSubProyectoMultiple IsNot Nothing Then + + DdlSubProyectoMultiple.DataSource = If(Not UsuarioActual.TienePermisoProceso(110), GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa, -1, 1), GlobalDTSubProyectos(-1, -1, UsuarioActual.CveEmpresa, 1)) + DdlSubProyectoMultiple.DataBind() + If AplicaTodos <> "" Then DdlSubProyectoMultiple.Items.Insert(0, New ListItem(AplicaTodos, "-1")) + End If If DdlSubProyecto IsNot Nothing Then DdlSubProyecto.DataSource = If(Not UsuarioActual.TienePermisoProceso(110), GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa, -1, 1), GlobalDTSubProyectos(-1, -1, UsuarioActual.CveEmpresa, 1)) DdlSubProyecto.DataBind() diff --git a/App_Code/LogicNominas.vb b/App_Code/LogicNominas.vb index c8fd108b0..e378f3aae 100644 --- a/App_Code/LogicNominas.vb +++ b/App_Code/LogicNominas.vb @@ -144,8 +144,10 @@ Public Class LogicNominas End If If continuar AndAlso objNomina.GetNom_NominasDetalles(CveNomina, CvePersonal, CvePeriodo, "-1") Then If objNomina.DtResultados.Rows.Count > 0 Then - DtPercepciones = objNomina.DtResultados.FiltraParametros("Tipo = 'P' AND EsPadre = 1 AND SoloVisible =0") - DtDeducciones = objNomina.DtResultados.FiltraParametros("Tipo = 'D' AND EsPadre = 1 AND SoloVisible =0 AND (TipoConceptoSAT<>'O' OR TipoConceptoSAT IS NULL)") + Dim filtropercepciones As String = "Tipo = 'P' AND EsPadre = 1 AND SoloVisible =0" + DtPercepciones = objNomina.DtResultados.FiltraParametros(filtropercepciones) + Dim filtrodeduc As String = "Tipo = 'D' AND EsPadre = 1 AND SoloVisible =0 AND (TipoConceptoSAT<>'O' OR TipoConceptoSAT IS NULL)" + DtDeducciones = objNomina.DtResultados.FiltraParametros(filtrodeduc) DtOtrosPagos = objNomina.DtResultados.FiltraParametros(" TipoConceptoSAT='O'") Dim disrcomp As DataRow = DtOtrosPagos.FiltroPrimero("Codigo ='D999'") For Each drow As DataRow In DtDeducciones.Rows @@ -183,6 +185,9 @@ Public Class LogicNominas If continuar AndAlso objPersonal.GetAsistencias(CvePersonal, -1, -1, -1, -1, -1, FechaInicio, FechaFin, UsuarioActual.CveEmpresa) Then Dim Asistencias As Integer = objPersonal.DtResultados.SUM("AplicaAsistencia").ToEntero() + 'If Asistencias > 15 Then + ' Asistencias = 15 + 'End If Dim Vacaciones As Integer = objPersonal.DtResultados.SUM("AplicaVacacion").ToEntero() DiasIncapacitados = objPersonal.DtResultados.SUM("AplicaIncapacidad").ToEntero() DiasPagados = Asistencias - Vacaciones @@ -279,18 +284,19 @@ Public Class LogicNominas End If 'subsidio al empleo - 'If Row("SATCveConcepto").ToString().ToEntero().ToEntero() = 17 AndAlso Row("Importe").ToString().ToDecimal > 0 Then 'Subsidio - ' ObjOtrosPagos.Add(New CFDINominaOtrosPagos With {.TipoOtroPago = "002", ' codigo fijo, por ser referente a subsidio al empleo - ' .Clave = Row("Codigo").ToString(), .Concepto = Row("Concepto").ToString(), .Importe = Row("Importe").ToString().ToDecimal}) - 'End If + If Row("SATCveConcepto").ToString().ToEntero().ToEntero() = 17 AndAlso Row("Importe").ToString().ToDecimal > 0 Then 'Subsidio + ObjOtrosPagos.Add(New CFDINominaOtrosPagos With {.TipoOtroPago = "002", ' codigo fijo, por ser referente a subsidio al empleo + .Clave = Row("Codigo").ToString(), .Concepto = Row("Concepto").ToString(), .Importe = Row("Importe").ToString().ToDecimal}) + End If Next End If If DtOtrosPagos IsNot Nothing AndAlso DtOtrosPagos.Rows.Count > 0 Then For Each Row As DataRow In DtOtrosPagos.Rows + If (Row("Importe").ToString().ToDecimal() > 0) OrElse - (Row("SATCveConcepto").ToString().ToEntero().ToEntero() = 2 AndAlso (CveRegimenContratacion.ToEntero() = 2 OrElse Row("Importe").ToString().ToDecimal() <> 0)) OrElse - (Row("SATCveConcepto").ToString().ToEntero().ToEntero().Contiene(2, 4) AndAlso Row("Importe").ToString().ToDecimal() < 0) Then + (Row("SATCveConcepto").ToString().ToEntero() = 2 AndAlso (CveRegimenContratacion.ToEntero() = 2 OrElse Row("Importe").ToString().ToDecimal() <> 0)) OrElse + (Row("SATCveConcepto").ToString().ToEntero().Contiene(2, 4) AndAlso Row("Importe").ToString().ToDecimal() < 0) Then If Row("CveSATConcepto").ToString() = "" Then cfdi.AddMsg(String.Format("Concepto No registrado ({0})", Row("Concepto").ToString())) : Exit For Dim otrp = New CFDINominaOtrosPagos With {.TipoOtroPago = Row("SATCveConcepto").ToString(), .Clave = Row("Codigo").ToString(), .Concepto = Row("Concepto").ToString(), @@ -298,11 +304,11 @@ Public Class LogicNominas ObjOtrosPagos.Add(otrp) - If Row("SATCveConcepto").ToString().ToEntero().ToEntero() = 7 AndAlso Row("Importe").ToString().ToDecimal > 0 Then 'Subsidio + If Row("SATCveConcepto").ToString().ToEntero() = 7 AndAlso Row("Importe").ToString().ToDecimal > 0 Then 'Subsidio ObjDeducciones.Add(New CFDINominaDeducciones With {.TipoDeduccion = "002", ' codigo fijo .Clave = Row("Codigo").ToString(), .Concepto = "ISR", .Importe = Row("Importe").ToString().ToDecimal}) End If - If Row("SATCveConcepto").ToString().ToEntero().ToEntero() = 8 AndAlso Row("Importe").ToString().ToDecimal > 0 Then 'Subsidio + If Row("SATCveConcepto").ToString().ToEntero() = 8 AndAlso Row("Importe").ToString().ToDecimal > 0 Then 'Subsidio ObjDeducciones.Add(New CFDINominaDeducciones With {.TipoDeduccion = "071", ' codigo fijo .Clave = Row("Codigo").ToString(), .Concepto = "(Ajuste en Subsidio para el empleo (efectivamente entregado al trabajador)", .Importe = Row("Importe").ToString().ToDecimal}) End If diff --git a/App_Code/Timbrado.vb b/App_Code/Timbrado.vb index 26418aaed..9a5f4a0c9 100644 --- a/App_Code/Timbrado.vb +++ b/App_Code/Timbrado.vb @@ -2061,7 +2061,7 @@ Public Class Timbrado If otpag.TipoOtroPago = "004" AndAlso otpag.Importe > 0 Then If otpag.ejercicio > 0 Then - cfdi.CompensacionSaldosAFavor(otpag.Importe, otpag.ejercicio, otpag.RemanenteSalFav) 'otpag.SaldoAFavor + cfdi.CompensacionSaldosAFavor(otpag.SaldoAFavor, otpag.ejercicio, otpag.RemanenteSalFav) 'otpag.SaldoAFavor End If End If diff --git a/Contabilidad/RegPrePolizaS.aspx b/Contabilidad/RegPrePolizaS.aspx index 5d6f271af..286ca172c 100644 --- a/Contabilidad/RegPrePolizaS.aspx +++ b/Contabilidad/RegPrePolizaS.aspx @@ -273,7 +273,7 @@