Files
SIG/Nomina/RegistroNomina.aspx.vb

543 lines
22 KiB
VB.net

Option Explicit On
Option Strict On
Imports Extensiones
Imports System.Data
'Imports msExcel = Microsoft.Office.Interop.Excel
'Imports VBIDE
Partial Class Nomina_RegistroNomina
Inherits ClsPaginas
#Region "Propiedades"
Private Shared missing As Object = System.Reflection.Missing.Value
Private ReadOnly Property CvePeriodo As Integer
Get
Return ViewState("CvePeriodo").ToString.ToEntero
End Get
End Property
Private ReadOnly Property CvePersonal As Integer
Get
Return ViewState("CvePersonal").ToString.ToEntero
End Get
End Property
Private ReadOnly Property CveTipoPeriodo As Integer
Get
Return ViewState("CveTipoPeriodo").ToString.ToEntero
End Get
End Property
Private ReadOnly Property CveNomina As Integer
Get
Return ViewState("CveNomina").ToString.ToEntero
End Get
End Property
Private Property TmpDT As DataTable
Get
Return CType(ViewState("TmpDT"), DataTable)
End Get
Set(value As DataTable)
ViewState("TmpDT") = value
End Set
End Property
#End Region
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
CargaConceptos()
CargaPersonal()
CargaTipoPeriodo()
CreaDT()
DdlEjercicios.Items.Add(New ListItem(UsuarioActual.Empresa.EjercicioActual.ToString, UsuarioActual.Empresa.EjercicioActual.ToString))
DdlEjercicios.Items.Add(New ListItem((UsuarioActual.Empresa.EjercicioActual - 1).ToString, (UsuarioActual.Empresa.EjercicioActual - 1).ToString))
DdlEjerciciosMasivo.Items.Add(New ListItem(UsuarioActual.Empresa.EjercicioActual.ToString, UsuarioActual.Empresa.EjercicioActual.ToString))
DdlEjerciciosMasivo.Items.Add(New ListItem((UsuarioActual.Empresa.EjercicioActual - 1).ToString, (UsuarioActual.Empresa.EjercicioActual - 1).ToString))
If Request("CvePeriodo") IsNot Nothing AndAlso IsNumeric(Request("CvePeriodo")) AndAlso Request("CvePeriodo").ToEntero > 0 Then
ViewState("CvePeriodo") = Request("CvePeriodo")
DdlPeriodo.SelectedValue = CvePeriodo.ToString
Else
ViewState("CvePeriodo") = -1
End If
If Request("CvePersonal") IsNot Nothing AndAlso IsNumeric(Request("CvePersonal")) AndAlso Request("CvePersonal").ToEntero > 0 Then
ViewState("CvePersonal") = Request("CvePersonal")
DdlPersonal.SelectedValue = CvePersonal.ToString
Else
ViewState("CvePersonal") = -1
End If
If CvePeriodo > 0 And CvePersonal > 0 Then
CargaDatos()
End If
If UsuarioActual.CveEmpresa.Contiene(8, 15) Then
'busco los diferentes salarios
Dim ObjPersonal As New ClsRH
If ObjPersonal.GetPersonal(-1, UsuarioActual.CveEmpresa) Then
If ObjPersonal.DtResultados.Rows.Count > 0 Then
DdlSalarioMasivo.DataSource = ObjPersonal.DtResultados.FiltraParametros("", "SalarioDiario", DistinctColumns:={"SalarioDiario"})
DdlSalarioMasivo.DataBind()
End If
End If
ObjPersonal.Dispose()
PnlMasivo.Visible = True
DdlTipoPeriodoMasivo.DataSource = GlobalDTTipoPeriodo
DdlTipoPeriodoMasivo.DataBind()
CargaPeriodosMasivo()
DdlConceptosMasivo.DataSource = GlobalDTNomConceptos(UsuarioActual.CveEmpresa)
DdlConceptosMasivo.DataBind()
End If
CargaPeriodos()
End If
End Sub
Private Sub CreaDT()
TmpDT = New DataTable
TmpDT.Columns.Add("Consecutivo", GetType(Integer))
TmpDT.Columns.Add("CveNominaDetalle", GetType(Integer))
TmpDT.Columns.Add("Tipo", GetType(String))
TmpDT.Columns.Add("TipoD", GetType(String))
TmpDT.Columns.Add("CveConcepto", GetType(Integer))
TmpDT.Columns.Add("Concepto", GetType(String))
TmpDT.Columns.Add("Importe", GetType(Decimal))
End Sub
Private Sub CargaConceptos()
DdlConcepto.DataSource = GlobalDTNomConceptos(UsuarioActual.CveEmpresa)
DdlConcepto.DataBind()
End Sub
Private Sub CargaPersonal()
Dim ObjPersonal As New ClsRH
If ObjPersonal.GetPersonal(-1, UsuarioActual.CveEmpresa) Then
DdlPersonal.DataSource = ObjPersonal.DtResultados.FiltraParametros("", "NombreCompleto")
DdlPersonal.DataBind()
End If
ObjPersonal.Dispose()
End Sub
Private Sub CargaTipoPeriodo()
DdlTipoPeriodo.DataSource = GlobalDTTipoPeriodo
DdlTipoPeriodo.DataBind()
End Sub
Private Sub CargaPeriodos()
Dim ObjPeriodos As New ClsNominas
If ObjPeriodos.GetPeriodos(DdlTipoPeriodo.SelectedValue.ToEntero, UsuarioActual.CveEmpresa, DdlEjercicios.SelectedValue.ToEntero, -1, -1) Then
DdlPeriodo.DataSource = ObjPeriodos.DtResultados
DdlPeriodo.DataBind()
ViewState("CvePeriodo") = DdlPeriodo.SelectedValue.ToEntero
End If
ObjPeriodos.Dispose()
End Sub
Private Sub CargaPeriodosMasivo()
Dim ObjPeriodos As New ClsNominas
If ObjPeriodos.GetPeriodos(DdlTipoPeriodoMasivo.SelectedValue.ToEntero, UsuarioActual.CveEmpresa, DdlEjerciciosMasivo.SelectedValue.ToEntero, -1, -1) Then
DdlPeriodoMasivo.DataSource = ObjPeriodos.DtResultados
DdlPeriodoMasivo.DataBind()
End If
ObjPeriodos.Dispose()
End Sub
Private Sub CargaDatos()
Dim ObjNomina As New ClsNominas
Dim ID As Integer = 1
TmpDT.Rows.Clear()
ViewState("CveNomina") = 0
If ObjNomina.GetNom_Nominas(-1, CvePersonal, CvePeriodo, -1, UsuarioActual.CveEmpresa) Then
If ObjNomina.DtResultados.Rows.Count > 0 Then
ViewState("CveNomina") = ObjNomina.DtResultados.Rows(0)("CveNomina").ToString
If ObjNomina.DtResultados.Rows(0)("SeTimbro").ToString = "True" Then
Alert("Nómina Timbrada", TipoMensaje.MsgInformacion)
GvMovimientos.Columns(3).Visible = False
GvMovimientos.Columns(4).Visible = False
Else
GvMovimientos.Columns(3).Visible = True
GvMovimientos.Columns(4).Visible = True
End If
If ObjNomina.GetNom_NominasDetalles(-1, CvePersonal, CvePeriodo, "-1") Then
GvMovimientos.DataSource = ObjNomina.DtResultados
GvMovimientos.DataBind()
If ObjNomina.DtResultados IsNot Nothing Then
For Each Row As DataRow In ObjNomina.DtResultados.Rows
AddMovimientoNomina(ID, Row("CveNominaDetalle").ToString.ToEntero, Row("Tipo").ToString, Row("TipoD").ToString, Row("CveConcepto").ToString.ToEntero, Row("Concepto").ToString, Row("Importe").ToString.ToDecimal)
ID = ID + 1
Next
End If
End If
Else
Alert("Personal no registrado en nomina seleccionada", TipoMensaje.MsgAdvertencia)
End If
End If
ObjNomina.Dispose()
End Sub
Protected Sub LbAgregar_Click(sender As Object, e As EventArgs) Handles LbAgregar.Click
If DdlConcepto.SelectedValue.ToEntero > 0 Then
Dim Consecutivo As Integer = TmpDT.Rows.Count + 1
AddMovimientoNomina(Consecutivo, -1, DdlTipo.SelectedValue, DdlTipo.SelectedItem.Text, DdlConcepto.SelectedValue.ToEntero, DdlConcepto.SelectedItem.Text, TxtImporte.Text.ToDecimal)
Dim Nom As New ClsNominas
If Nom.AddNom_NominasDetalles(CveNomina, DdlPeriodo.SelectedValue.ToEntero, DdlPersonal.SelectedValue.ToEntero, DdlConcepto.SelectedValue.ToEntero, TxtImporte.Text.ToDecimal, TxtImporte.Text.ToDecimal, 0) Then
Alert("Movimiento Agregado", TipoMensaje.MsgInformacion)
End If
Nom.Dispose()
DdlTipo.SelectedIndex = 0
DdlConcepto.SelectedIndex = 0
TxtImporte.Text = ""
Else
Alert("Seleccione un Concepto de Nómina", TipoMensaje.MsgAdvertencia)
End If
End Sub
Private Sub AddMovimientoNomina(Consecutivo As Integer, CveNominaDetalle As Integer, Tipo As String, TipoD As String, CveConcepto As Integer, Concepto As String, Importe As Decimal)
Dim Row As DataRow = Nothing
Row = TmpDT.NewRow()
Row("Consecutivo") = Consecutivo
Row("CveNominaDetalle") = CveNominaDetalle
Row("Tipo") = Tipo
Row("TipoD") = TipoD
Row("CveConcepto") = CveConcepto
Row("Concepto") = Concepto
Row("Importe") = Importe
TmpDT.Rows.Add(Row)
GvMovimientos.DataSource = TmpDT
GvMovimientos.DataBind()
End Sub
'Protected Sub BtnGuardar_Click(sender As Object, e As EventArgs) Handles BtnGuardar.Click
' Guardar()
'End Sub
'Protected Sub Guardar()
' Dim ObjNomina As New ClsNominas()
' ObjNomina.IniciaTransacSQL()
' Dim Errores As Boolean = False
' For Each Row As DataRow In TmpDT.Rows
' If Errores = False Then
' Dim CveMovimientoNomina As Integer = Row("CveNominaDetalle").ToString.ToEntero
' Dim CvePeriodo As Integer = DdlPeriodo.SelectedValue.ToEntero
' Dim CvePersonal As Integer = DdlPersonal.SelectedValue.ToEntero
' Dim CveConcepto As Integer = Row("CveConcepto").ToString.ToEntero
' Dim Importe As Decimal = Row("Importe").ToString.ToDecimal
' ViewState("CvePeriodo") = CvePeriodo
' ViewState("CvePersonal") = CvePersonal
' If CveMovimientoNomina = -1 Then
' Errores = Not ObjNomina.AddNom_NominasDetalles(1, CvePeriodo, CvePersonal, CveConcepto, Importe, Importe, 0)
' Else
' Errores = Not ObjNomina.UpdateNom_NominasDetalles(CveMovimientoNomina, Importe)
' End If
' End If
' Next
' If Errores = False Then
' ObjNomina.Commit()
' Else
' ObjNomina.RollBack()
' End If
' ObjNomina.Dispose()
' GeneraPDF()
'End Sub
#Region "GeneraPDFs"
'Private Function GetMacro() As String
' Dim SB As New StringBuilder
' SB.Append(" Sub AddRow(Row As String) " & vbLf)
' SB.Append(" Rows(Row & "":"" & Row).Select " & vbLf)
' SB.Append(" Selection.Copy " & vbLf)
' SB.Append(" Selection.Insert Shift:=xlDown " & vbLf)
' SB.Append(" End Sub ")
' Return SB.ToString
'End Function
'Private Sub GeneraPDF()
' Dim TC As Double = 1
' Dim Excel As msExcel.Application = New msExcel.Application()
' Dim VB_Module As VBComponent = Nothing
' Excel.Visible = True
' Excel.ScreenUpdating = True
' Excel.DisplayAlerts = True
' If Not IO.File.Exists(UsuarioActual.Empresa.Ruta & "Formatos\Nomina.xlsm") Then
' IO.File.Copy(String.Format("{0}Empresas\Grales\Nomina.xlsm", ModExtensiones.DirectorioBaseEmpresas), UsuarioActual.Empresa.Ruta & "Formatos\Nomina.xlsm", False)
' End If
' Dim ArchivoBase As New System.IO.FileInfo(UsuarioActual.Empresa.Ruta & "Formatos\Nomina.xlsm")
' ArchivoBase.CopyTo(UsuarioActual.Empresa.Ruta & "Formatos\" & CvePersonal & "_" & CvePeriodo & ".xlsm", True)
' Dim ArchivoTemp As New System.IO.FileInfo(UsuarioActual.Empresa.Ruta & "Formatos\" & CvePersonal & "_" & CvePeriodo & ".xlsm")
' Dim Libro As msExcel.Workbook = Excel.Workbooks.Open(ArchivoTemp.FullName, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing)
' Libro.Activate()
' Dim Hoja As msExcel.Worksheet
' Hoja = CType(Libro.Worksheets(1), Microsoft.Office.Interop.Excel.Worksheet)
' Hoja.Visible = Microsoft.Office.Interop.Excel.XlSheetVisibility.xlSheetVisible
' Hoja.Activate()
' Try
' 'Agregar los datos generales del RH
' Dim objPersonal As New ClsRH
' If objPersonal.GetPersonal(CvePersonal, UsuarioActual.CveEmpresa) Then
' Hoja.Range("C5:C5").Value = objPersonal.CvePersonal.ToString
' Hoja.Range("C6:C6").Value = objPersonal.NombreCompleto
' Hoja.Range("C7:C7").Value = objPersonal.RFC
' Dim Departamento As DataRow = GlobalDTDepartamentos().FiltraParametros("CveDepartamento = " & objPersonal.CveDepartamento)(0)
' Hoja.Range("C8:C8").Value = Departamento("Departamento").ToString
' Dim Puesto As DataRow = GlobalDTPuestos().FiltraParametros("CvePuesto = " & objPersonal.CvePuesto)(0)
' Hoja.Range("C9:C9").Value = Puesto("Puesto").ToString
' End If
' objPersonal.Dispose()
' 'Agregar los datos del Periodo
' Dim objPeriodos As New ClsNominas
' If objPeriodos.GetPeriodos(-1, UsuarioActual.CveEmpresa, -1, -1, -1) Then
' 'Hoja.Range("I6:I6").Value = DIAS PAGADOS
' Hoja.Range("K6:K6").Value = objPeriodos.Numero.ToString
' 'Hoja.Range("I7:I7").Value = FALTAS
' Hoja.Range("I8:I8").Value = objPeriodos.FechaInicio
' Hoja.Range("K8:K8").Value = objPeriodos.FechaFin
' 'Hoja.Range("I9:I9").Value = RECIBO NUMERO
' End If
' objPeriodos.Dispose()
' VB_Module = CType(Libro.VBProject.VBComponents.Add(Microsoft.Vbe.Interop.vbext_ComponentType.vbext_ct_StdModule), VBComponent)
' VB_Module.CodeModule.AddFromString(GetMacro)
' Dim Celda As Integer
' Dim AddedRow As Integer = 0
' 'Movimientos de Deducciones
' Dim ObjNomina As New ClsNominas
' If ObjNomina.GetNom_NominasDetalles(-1, CvePersonal, CvePeriodo, "") Then
' 'Percepciones
' Dim dtPercepciones As DataTable = ObjNomina.DtResultados.FiltraParametros("Tipo = 'P'")
' Dim dtDeducciones As DataTable = ObjNomina.DtResultados.FiltraParametros("Tipo = 'D'")
' 'Insertar percepciones
' Celda = 13
' For Each Row As DataRow In dtPercepciones.Rows
' Hoja.Range("A" & Celda & ":A" & Celda).Value = Row("Codigo").ToString
' Hoja.Range("B" & Celda & ":B" & Celda).Value = Row("Concepto").ToString
' Hoja.Range("E" & Celda & ":E" & Celda).Value = Row("Importe").ToString
' Celda = Celda + 1
' Next
' 'Insertar deducciones
' Celda = 13
' For Each Row As DataRow In dtDeducciones.Rows
' Hoja.Range("G" & Celda & ":G" & Celda).Value = Row("Codigo").ToString
' Hoja.Range("H" & Celda & ":H" & Celda).Value = Row("Concepto").ToString
' Hoja.Range("K" & Celda & ":K" & Celda).Value = Row("Importe").ToString
' Celda = Celda + 1
' Next
' Libro.Save()
' Libro.Application.DisplayAlerts = False
' Libro.Application.ScreenUpdating = False
' End If
' ObjNomina.Dispose()
' Dim EsVistaPrevia As Boolean = True
' 'Exportar PDF
' Dim pdfFileOut As String = UsuarioActual.Empresa.Ruta & "PDF\Nom_" & CvePersonal & "_" & CvePeriodo & ".pdf"
' Dim outputFileName As Object = pdfFileOut
' Dim fileFormat As msExcel.XlFixedFormatType = msExcel.XlFixedFormatType.xlTypePDF
' Hoja.ExportAsFixedFormat(fileFormat, outputFileName, missing, missing, missing, missing, missing, missing, missing)
' Catch ex As Exception
' Alert("Ocurrió un error" & ex.Message, TipoMensaje.MsgError)
' End Try
' System.Runtime.InteropServices.Marshal.ReleaseComObject(Hoja)
' Hoja = Nothing
' Dim saveChanges As Object = msExcel.XlSaveAction.xlDoNotSaveChanges
' CType(Libro, msExcel._Workbook).Close(saveChanges, missing, missing)
' System.Runtime.InteropServices.Marshal.ReleaseComObject(Libro)
' Libro = Nothing
' Excel.Quit()
' System.Runtime.InteropServices.Marshal.ReleaseComObject(Excel)
' Excel = Nothing
' GC.Collect()
' GC.WaitForPendingFinalizers()
' ArchivoTemp.Delete()
' Dim Descargas As New StringBuilder()
' Descargas.AppendFormat("<li><a class=""Texto"" target=""_blank"" onclick=""window.open('/Empresas/{0}/PDF/Nom_{1}_{2}.pdf?{3}')"" href=""#"">PDF</a></li>", UsuarioActual.CveEmpresa, CvePersonal, CvePeriodo, Now.Ticks)
' Alert("<br />El Registro de Nómina<b><span style='font-size=26px;'></span></b>, se generó correctamente.<br /><br /><br />Descargas:<ul>" & Descargas.ToString & "</ul>", TipoMensaje.MsgInformacion)
'End Sub
#End Region
Protected Sub DdlPersonal_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlPersonal.SelectedIndexChanged
ViewState("CvePersonal") = DdlPersonal.SelectedValue
If CvePeriodo > 0 And CvePersonal > 0 Then
CargaDatos()
HplIr.NavigateUrl = String.Format("/RH/Personal.aspx?CvePersonal={0}", CvePersonal)
Else
GvMovimientos.DataSource = Nothing
GvMovimientos.DataBind()
End If
End Sub
Protected Sub DdlPeriodo_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlPeriodo.SelectedIndexChanged
ViewState("CvePeriodo") = DdlPeriodo.SelectedValue
If CvePeriodo > 0 And CvePersonal > 0 Then
CargaDatos()
Else
GvMovimientos.DataSource = Nothing
GvMovimientos.DataBind()
End If
End Sub
Protected Sub GvMovimientos_RowCancelingEdit(sender As Object, e As GridViewCancelEditEventArgs) Handles GvMovimientos.RowCancelingEdit
GvMovimientos.EditIndex = -1
GvMovimientos.DataSource = TmpDT
GvMovimientos.DataBind()
End Sub
Protected Sub GvMovimientos_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvMovimientos.RowDataBound
If e.Row.RowType = DataControlRowType.Footer Then
Dim Suma As Double = 0
Suma = TmpDT.SUM("Importe", "Tipo = 'P'").ToString.ToDouble - TmpDT.SUM("Importe", "Tipo = 'D'").ToString.ToDouble
e.Row.FCLabel("LblImporte").Text = "$" & Suma.FormatoNumero()
End If
End Sub
Protected Sub GvMovimientos_RowDeleting(sender As Object, e As GridViewDeleteEventArgs) Handles GvMovimientos.RowDeleting
Dim Nom As New ClsNominas
If Nom.RemoveNom_NominasDetalles(GvMovimientos.DataKeys(e.RowIndex).Value.ToString().ToEntero) Then
Alert("Movimiento Eliminado", TipoMensaje.MsgInformacion)
End If
Nom.Dispose()
End Sub
Protected Sub GvMovimientos_RowEditing(sender As Object, e As GridViewEditEventArgs) Handles GvMovimientos.RowEditing
GvMovimientos.EditIndex = e.NewEditIndex
GvMovimientos.DataSource = TmpDT
GvMovimientos.DataBind()
GvMovimientos.Rows(e.NewEditIndex).FCTextBox("TxtImporteGV").Focus()
End Sub
Protected Sub GvMovimientos_RowUpdating(sender As Object, e As GridViewUpdateEventArgs) Handles GvMovimientos.RowUpdating
Dim Importe As Decimal = GvMovimientos.Rows(e.RowIndex).FCTextBox("TxtImporteGV").Text.ToDecimal
TmpDT.Rows(e.RowIndex)("Importe") = Importe
Dim Nom As New ClsNominas
If Nom.UpdateNom_NominasDetalles(GvMovimientos.DataKeys(e.RowIndex).Value.ToString().ToEntero, Importe, 0, Importe) Then
Alert("Movimiento Actualizado", TipoMensaje.MsgInformacion)
End If
Nom.Dispose()
GvMovimientos.EditIndex = -1
GvMovimientos.DataSource = TmpDT
GvMovimientos.DataBind()
End Sub
Protected Sub DdlTipoPeriodo_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlTipoPeriodo.SelectedIndexChanged
CargaPeriodos()
End Sub
Protected Sub DdlTipoPeriodoMasivo_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlTipoPeriodoMasivo.SelectedIndexChanged
CargaPeriodosMasivo()
End Sub
Protected Sub BtnAplicarMasivo_Click(sender As Object, e As EventArgs) Handles BtnAplicarMasivo.Click
Dim ImporteGravado As Double = 0
Dim ImporteExento As Double = TxtImporteMasivo.Text.ToDouble
Dim dr As DataRow = GlobalDTNomConceptos(UsuarioActual.CveEmpresa).FiltroPrimero(String.Format("CveConcepto = {0}", DdlConceptosMasivo.SelectedValue))
If dr IsNot Nothing Then
If dr("Tipo").ToString = "P" Then
ImporteGravado = TxtImporteMasivo.Text.ToDouble
ImporteExento = 0
End If
End If
Dim Nom As New ClsNominas
If Nom.UpdateNom_NominasDetallesMasivoSueldo(DdlPeriodoMasivo.SelectedValue.ToEntero, DdlConceptosMasivo.SelectedValue.ToEntero, DdlSalarioMasivo.SelectedValue.ToDouble, TxtImporteMasivo.Text.ToDouble, ImporteExento, ImporteGravado, UsuarioActual.CveEmpresa) Then
Alert("El cambio fue aplicado", TipoMensaje.MsgInformacion)
End If
Nom.Dispose()
End Sub
Protected Sub DdlEjerciciosMasivo_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlEjerciciosMasivo.SelectedIndexChanged
CargaPeriodosMasivo()
End Sub
Protected Sub DdlEjercicios_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlEjercicios.SelectedIndexChanged
CargaPeriodos()
End Sub
'Protected Sub DdlPeriodoMasivo_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlPeriodoMasivo.SelectedIndexChanged
' CargaPeriodosMasivo()
'End Sub
End Class