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("