Option Explicit On Option Strict On Imports System.Data Imports Extensiones Imports System.IO Imports System.Data.OleDb Partial Class CatSubProyectos Inherits ClsPaginas #Region "P R O P I E D A D E S" Public Property DtSegmentosNegocio As Data.DataTable Get Return CType((ViewState("DtSegmentosNegocio")), Data.DataTable) End Get Set(value As Data.DataTable) ViewState("DtSegmentosNegocio") = value End Set End Property Public Property DTSubProyectos As Data.DataTable Get Return CType((ViewState("DTSubProyectos")), Data.DataTable) End Get Set(value As Data.DataTable) ViewState("DTSubProyectos") = value End Set End Property Private Property CveCentroCosto As Integer Get Return ViewState("CveCentroCosto").ToString.ToEntero End Get Set(value As Integer) ViewState("CveCentroCosto") = value End Set End Property #End Region Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load If Not Page.IsPostBack Then ViewState("Orden") = "" If Not UsuarioActual.Empresa.UsaRH Then GvDatos.Columns(2).Visible = False End If Dim objsubproyecto As New ClsSubProyectos 'If objsubproyecto.GetSubProyectosexcel(9, UsuarioActual.CveEmpresa) Then ' 'DatatableToExcel(objsubproyecto.DtResultados) ' objsubproyecto.DtResultados.ExportToExcel("subproyecto") 'End If objsubproyecto.Dispose() If Not UsuarioActual.Empresa.Tipo_CentroCosto = 3 Then 'GvDatos.Columns(0).Visible = False 'TdTituloProyecto.Visible = False 'TdProyecto.Visible = False 'LbSubProyecto.Text = "Proyecto" GvDatos.Columns(2).Visible = False End If If UsuarioActual.Empresa.Funcionalidad(531) = "1" Then DivCodigoSucursal.Visible = True End If CargaProyecto() CargaSegmentosNegocio() 'COMERCIO EXTERIOR CargaPais() CargaEstado() CargaMunicipio() CargaColonia() CargaPrecioLista() CargaDatos() If UsuarioActual.Empresa.UsaContabilidad Then GvDatos.Columns(1).Visible = True DivSegmentoNegocio.Visible = True End If BtnGuardar.OnClientClick = $"ValidaGuardar();" End If End Sub Private Sub RecargaGlobal() GlobalDTSubProyectos(-1, CveEmpresa:=UsuarioActual.CveEmpresa) = Nothing End Sub #Region "O R D E N A M I E N T O" Protected Sub LbOrden_Click(ByVal sender As Object, ByVal e As EventArgs) Dim Orden As String = "" Dim Campo As String = "" Dim Literal As Literal = Nothing Const OrdenInicial As String = "" Dim Arg(2) As String Arg = CType(sender, LinkButton).CommandArgument().ToString.Split(";"c) Campo = Arg(0) Literal = CType(CType(sender, LinkButton).NamingContainer.FindControl("Img" & Campo.Replace(",", "_")), Literal) If ViewState(String.Format("O{0}", Campo)) IsNot Nothing AndAlso ViewState(String.Format("O{0}", Campo)).ToString = String.Format("{0} DESC", Campo) Then ViewState(String.Format("O{0}", Campo)) = String.Format("{0} ASC", Campo) Literal.Text = String.Format("") Else ViewState(String.Format("O{0}", Campo)) = String.Format("{0} DESC", Campo) Literal.Text = String.Format("") End If Orden = OrdenInicial & ViewState(String.Format("O{0}", Campo)).ToString ViewState("Orden") = Orden CargaDatos() End Sub #End Region #Region "C A R G A S" Public Sub CargaDatos() Dim ObjSub As New ClsSubProyectos If ObjSub.GetSubProyectos(UsuarioActual.CveEmpresa) Then GvDatos.DataSource = ObjSub.DtResultados.FiltraParametros($"CveEmpresa = {UsuarioActual.CveEmpresa}") GvDatos.DataBind() End If ObjSub.Dispose() UpDatos.Update() End Sub Private Sub CargaProyecto() DdlProyecto.DataSource = GlobalDTProyectos(UsuarioActual.CveEmpresa).FiltraParametros("", "", {"CveProyecto", "Proyecto"}) DdlProyecto.DataBind() End Sub Private Sub CargaPrecioLista() DdlPrecioLista.DataSource = GlobalDTPrecioListas(UsuarioActual.CveEmpresa) DdlPrecioLista.Items.Insert(0, New ListItem("Seleccione", "-1")) DdlPrecioLista.DataBind() End Sub Private Sub CargaSegmentosNegocio() DdlSegmentoNegocio.Items.Clear() If UsuarioActual.Empresa.UsaContabilidad Then Dim Cuenta As New ClsContPAQi(UsuarioActual.Empresa) If Cuenta.GetSegmentosNegocio(-1, "-1") Then DtSegmentosNegocio = Cuenta.DtResultados.FiltraParametros("Id > 0") DtSegmentosNegocio.Rows.Add(New Object() {0, 0, " - ", "", ""}) Dim dataView As New DataView(DtSegmentosNegocio) dataView.Sort = "Id ASC" DtSegmentosNegocio = dataView.ToTable End If Cuenta.Dispose() DdlSegmentoNegocio.DataSource = DtSegmentosNegocio : DdlSegmentoNegocio.DataBind() DdlSegmentoNegocio.Items.Insert(0, New ListItem("-", "-1")) End If 'For Each Gvr As GridViewRow In GvDatos.Rows ' 'If Gvr.DataKey("IdSegNeg").ToEntero > 0 Then ' ' 'COMENTADO PORQUE TRUENA | IPP - 17 AGOSTO 2017 ' ' 'Dim Cuenta2 As New ClsContPAQi(UsuarioActual.Empresa) ' ' 'If Cuenta2.GetSegmentosNegocio(Gvr.DataKey("IdSegNeg").ToEntero, "-1") Then ' ' ' Dim DRES2 As DataRow ' ' ' DRES2 = Cuenta2.DtResultados(0) ' ' ' Gvr.Cells(1).Text = DRES2("Nombre").ToString ' ' 'Else ' ' ' Gvr.Cells(1).Text = "-" ' ' 'End If ' ' 'Cuenta2.Dispose() ' ' 'If DtSegmentosNegocio IsNot Nothing AndAlso DtSegmentosNegocio.Rows.Count > 0 Then ' ' ' Dim dr As DataRow ' ' ' dr = DtSegmentosNegocio.FiltroPrimero(String.Format("Id ={0}", Gvr.DataKey("IdSegNeg"))) ' ' ' Gvr.Cells(1).Text = dr("Nombre").ToString ' ' 'End If ' 'Else ' ' Gvr.Cells(1).Text = "0" ' 'End If 'Next End Sub #End Region #Region "GV" Protected Sub GvDatos_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GvDatos.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then ScriptManager.GetCurrent(Me).RegisterPostBackControl(e.Row.FCLinkButton("downExcel")) e.Row.Cells(0).HorizontalAlign = HorizontalAlign.Left e.Row.Cells(1).HorizontalAlign = HorizontalAlign.Left If e.Row.RowIndex > 0 AndAlso e.Row.Cells(1).Visible Then e.Row.Cells(1).Text = DtSegmentosNegocio.FiltroPrimeroValor("Nombre", $"Id = {e.Row.DataKey("IdSegNeg")}") End If End If End Sub Protected Sub GvDatos_RowDeleting(sender As Object, e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GvDatos.RowDeleting Dim ObjSubProyectos As New ClsSubProyectos If ObjSubProyectos.RemoveSubProyecto(GvDatos.DataKeys(e.RowIndex).Value.ToString.ToEntero) Then GvDatos.EditIndex = -1 ViewState("DTSubProyectos") = ObjSubProyectos.DtResultados.FiltraParametros("CveEmpresa = " & UsuarioActual.CveEmpresa) GlobalDTSubProyectos(UsuarioActual.CveEmpresa) = ObjSubProyectos.DtResultados Alert("El SubProyecto se eliminó correctamente.", TipoMensaje.MsgInformacion) End If ObjSubProyectos.Dispose() CargaDatos() End Sub Protected Sub GvDatos_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) If (e.CommandName = "AgregarSubProyecto") Then Dim ObjContpaQ As New ClsContPAQi(UsuarioActual.Empresa) ObjContpaQ.IniciaTransacSQL() Dim ObjSubProyectos As New ClsSubProyectos ObjSubProyectos.IniciaTransacSQL() Dim index As Integer = Convert.ToInt32(e.CommandArgument) Dim row As GridViewRow = GvDatos.Rows(index) Dim SubProyecto = GvDatos.Rows(index).DataKey("SubProyecto").ToString Dim CveSegmento As Integer = ObjContpaQ.AddSegmentosNegocio(SubProyecto) Dim CveSubProyecto As Integer = GvDatos.DataKeys(index).Value.ToString.ToEntero Dim ErrorSubProyecto As Boolean = False If ObjSubProyectos.UpdateSubProyectoSegNeg(CveSubProyecto, CveSegmento, UsuarioActual.CveEmpresa) Then GvDatos.EditIndex = -1 ViewState("DTSubProyectos") = ObjSubProyectos.DtResultados.FiltraParametros("CveEmpresa = " & UsuarioActual.CveEmpresa) GlobalDTSubProyectos(UsuarioActual.CveEmpresa) = ObjSubProyectos.DtResultados Alert("Los cambios se guardaron correctamente.", TipoMensaje.MsgInformacion) Else ErrorSubProyecto = True End If If CveSegmento > 0 AndAlso Not ErrorSubProyecto Then ObjContpaQ.Commit() ObjSubProyectos.Commit() If ObjContpaQ.GetSegmentosNegocio(-1, "-1") Then DtSegmentosNegocio = ObjContpaQ.DtResultados.FiltraParametros("Id > 1") End If CargaDatos() Else ObjContpaQ.RollBack() ObjSubProyectos.RollBack() End If ObjSubProyectos.Dispose() ObjContpaQ.Dispose() End If End Sub Public Sub Edit_Click(sender As Object, e As EventArgs) Dim GvRow As GridViewRow = DirectCast(DirectCast(sender, LinkButton).NamingContainer, GridViewRow) CveCentroCosto = (GvRow.DataKey("CveSubProyecto")).ToEntero HdnModalidad.Value = "U" TxtCentroCosto.Text = (GvRow.DataKey("SubProyecto")) DdlSegmentoNegocio.SelectedValueExist(GvRow.DataKey("IdSegNeg")) ChkEstatus.Checked = If(GvRow.DataKey("Estatus").ToString = "Activo", True, False) DdlProyecto.SelectedValueExist(GvRow.DataKey("CveProyecto")) TxtSerie.Text = (GvRow.DataKey("Serie")) TxtIVA.Text = (GvRow.DataKey("IVA")) TxtCalle.Text = (GvRow.DataKey("Calle")) TxtNoExt.Text = (GvRow.DataKey("NoExt")) TxtNoInt.Text = (GvRow.DataKey("NoInt")) TxtColonia.Text = (GvRow.DataKey("Colonia")) TxtLocalidad.Text = (GvRow.DataKey("Localidad")) TxtMunicipio.Text = (GvRow.DataKey("Municipio")) TxtEstado.Text = (GvRow.DataKey("Estado")) TxtPais.Text = (GvRow.DataKey("Pais")) TxtCP.Text = (GvRow.DataKey("CP")) ChkEsMatriz.Checked = If(GvRow.DataKey("TipoSucursal").ToString.ToEntero = 1, True, False) ChkEsSucursal.Checked = If(GvRow.DataKey("EsSucursal").ToString.ToEntero = 1, True, False) DdlPrecioLista.SelectedIndex = 0 DdlPrecioLista.SelectedValueExist(GvRow.DataKey("CvePrecioLista")) TxtCorreo.Text = (GvRow.DataKey("Correo")) TxtTelefono.Text = (GvRow.DataKey("Telefono")) TxtHorarioVerano.Text = (GvRow.DataKey("UTCOffsetVerano")) TxtHorarioInvierno.Text = (GvRow.DataKey("UTCOffsetInvierno")) 'COMERCIO EXTERIOR ChkAplicaComercioExterior.Checked = If(GvRow.DataKey("AplicaComercioExterior").ToString = "True", True, False) DdlPais.SelectedValueExist(GvRow.DataKey("CvePais")) CargaEstado() DdlEstado.SelectedValueExist(GvRow.DataKey("CveEstado")) CargaMunicipio() DdlMunicipio.SelectedValueExist(GvRow.DataKey("CveMunicipio")) CargaColonia() DdlColonia.SelectedValueExist(GvRow.DataKey("CveColonia")) AplicaComercio() ChkNoVerificaAlmacen.Checked = If(GvRow.DataKey("NoVerificaAlmacen").ToString = "True", True, False) TxtCodigoSucursal.Text = (GvRow.DataKey("CodigoSucursal")) BtnGuardar.Text = "Actualizar" CargaRequired() UpAddCentroEstatus.Update() RegistraScript(String.Format("$('#{0}').modal();", "DivAgregarCentroCosto")) End Sub #End Region #Region "G U A R D A R" Private Function ValidaComercioExterior() As Boolean If ChkAplicaComercioExterior.Checked Then If Not DdlPais.SelectedValue.ToEntero > 0 Then Alert("Tiene que seleccionar un pais para comercio exterior.", TipoMensaje.MsgAdvertencia) Return False End If If Not DdlPais.SelectedValue.ToEntero > 0 Then Alert("Tiene que seleccionar un pais para comercio exterior.", TipoMensaje.MsgAdvertencia) Return False End If If Not DdlEstado.SelectedValue.ToEntero > 0 Then Alert("Tiene que seleccionar un estado para comercio exterior.", TipoMensaje.MsgAdvertencia) Return False End If If DdlPais.SelectedValue.ToEntero = 151 Then If Not DdlMunicipio.SelectedValue.ToEntero > 0 Then Alert("Tiene que seleccionar un municipio para comercio exterior si el pais es mexico.", TipoMensaje.MsgAdvertencia) Return False End If If Not DdlColonia.SelectedValue.ToEntero > 0 Then Alert("Tiene que seleccionar una colonia para comercio exterior si el pais es mexico.", TipoMensaje.MsgAdvertencia) Return False End If End If End If Return True End Function Private Sub BtnGuardar_Click(sender As Object, e As EventArgs) Handles BtnGuardar.Click If Not ValidaComercioExterior() Then Exit Sub End If CreaProyectoSubProyectoSucursal() End Sub Private Sub CreaProyectoSubProyectoSucursal() Dim ObjSubproyectos As New ClsSubProyectos Dim CveUsuarioNomina As Integer = Nothing Dim CveSubProyecto = -1 Dim TieneError = False Dim TipoSucursal As Integer Dim EsSucursal As Integer Dim HorarioVerano As Integer = TxtHorarioVerano.Text.ToEntero Dim HorarioInvierno As Integer = TxtHorarioInvierno.Text.ToEntero If ChkEsMatriz.Checked = True Then TipoSucursal = 1 Else TipoSucursal = 0 If ChkEsSucursal.Checked = True Then EsSucursal = 1 Else EsSucursal = 0 'GlobalDTProyectos(-1) = ObjSubproyectos.DtResultados ObjSubproyectos.IniciaTransacSQL() Dim IdSeg As Integer If DdlSegmentoNegocio.Visible = True Then IdSeg = DdlSegmentoNegocio.SelectedValue.ToEntero Else IdSeg = 0 'CREA SUBPROYECTO If HdnModalidad.Value = "I" Then If Not ObjSubproyectos.AddCentroCosto(TxtCentroCosto.Text.Trim, IdSeg, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, DdlProyecto.SelectedValue.ToEntero, Serie:=TxtSerie.Text.Trim, IVA:=TxtIVA.Text.ToDecimal, Calle:=TxtCalle.Text.Trim, NoExt:=TxtNoExt.Text.Trim, NoInt:=TxtNoInt.Text.Trim, Colonia:=TxtColonia.Text.Trim, Localidad:=TxtLocalidad.Text.Trim, Municipio:=TxtMunicipio.Text.Trim, Estado:=TxtEstado.Text.Trim, Pais:=TxtPais.Text.Trim, CP:=TxtCP.Text.Trim, TipoSucursal:=TipoSucursal, EsSucursal:=EsSucursal, CvePais:=DdlPais.SelectedValue.ToEntero, CveEstado:=DdlEstado.SelectedValue.ToEntero, CveMunicipio:=DdlMunicipio.SelectedValue.ToEntero, CveColonia:=DdlColonia.SelectedValue.ToEntero, AplicaComercioExterior:=ChkAplicaComercioExterior.Checked, Correo:=TxtCorreo.Text, CvePrecioLista:=DdlPrecioLista.SelectedValue.ToEntero, Telefono:=TxtTelefono.Text, NoVerificaAlmacen:=ChkNoVerificaAlmacen.Checked, CodigoSucursal:=TxtCodigoSucursal.Text.Trim) Then TieneError = True Else CveSubProyecto = ObjSubproyectos.CveSubProyecto End If Else If (HorarioVerano > -13 And HorarioVerano < 13) And (HorarioInvierno > -13 And HorarioInvierno < 13) Then If Not ObjSubproyectos.UpdateCentroCosto(CveCentroCosto, TxtCentroCosto.Text.Trim, IdSeg, If(ChkEstatus.Checked = True, 1, 0), UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, DdlProyecto.SelectedValue.ToEntero, Serie:=TxtSerie.Text.Trim, IVA:=TxtIVA.Text.ToDecimal, Calle:=TxtCalle.Text.Trim, NoExt:=TxtNoExt.Text.Trim, NoInt:=TxtNoInt.Text.Trim, Colonia:=TxtColonia.Text.Trim, Localidad:=TxtLocalidad.Text.Trim, Municipio:=TxtMunicipio.Text.Trim, Estado:=TxtEstado.Text.Trim, Pais:=TxtPais.Text.Trim, CP:=TxtCP.Text.Trim, TipoSucursal:=TipoSucursal, EsSucursal:=EsSucursal, CvePais:=DdlPais.SelectedValue.ToEntero, CveEstado:=DdlEstado.SelectedValue.ToEntero, CveMunicipio:=DdlMunicipio.SelectedValue.ToEntero, CveColonia:=DdlColonia.SelectedValue.ToEntero, AplicaComercioExterior:=ChkAplicaComercioExterior.Checked, Correo:=TxtCorreo.Text, CvePrecioLista:=DdlPrecioLista.SelectedValue.ToEntero, Telefono:=TxtTelefono.Text, HorarioVerano:=TxtHorarioVerano.Text.ToEntero, HorarioInvierno:=TxtHorarioInvierno.Text.ToEntero, NoVerificaAlmacen:=ChkNoVerificaAlmacen.Checked, CodigoSucursal:=TxtCodigoSucursal.Text.Trim) Then TieneError = True End If Else Alert("Los valores de horario no deben ser superiores a '12' o menor a '-12'", TipoMensaje.MsgAdvertencia) TieneError = True End If End If If Not TieneError Then ObjSubproyectos.Commit() If HdnModalidad.Value = "I" Then Alert("La nueva Sucursal se guardó correctamente.", TipoMensaje.MsgInformacion) Else Alert("La Sucursal se actualizo correctamente.", TipoMensaje.MsgInformacion) End If RegistraScript(String.Format("$('#{0}').modal('hide');", "DivAgregarCentroCosto")) CargaDatos() RecargaGlobal() Else ObjSubproyectos.RollBack() RecargaGlobal() End If 'se regeneran los subproyectos 'If Not TieneError Then ' If UsuarioActual.Empresa.GralSoloProyecto Then ' If ObjSubproyectos.GetSubProyectos() Then ' GlobalDTSubProyectos(-1) = ObjSubproyectos.DtResultados ' UpDatos.Update() ' Else ' TieneError = True ' End If ' End If 'End If If DdlSegmentoNegocio.Visible = True Then CargaSegmentosNegocio() End If ObjSubproyectos.Dispose() If HdnModalidad.Value = "I" Then If UsuarioActual.Empresa.Funcionalidad(523) <> "" Then Dim ObjOC As New ClsOC ObjOC.IniciaTransacSQL() Dim CveUsuario As Integer Dim CveEstatus As Integer Dim ArregloUsuarios As String() = UsuarioActual.Empresa.Funcionalidad(523).ToString.Split(","c) Dim YaExiste As Boolean = False Dim DTEstatus As DataTable = GlobalDTOCEstatus(UsuarioActual.CveEmpresa).FiltraParametros("TipoTermino IN (1, 2)") For Each item In ArregloUsuarios CveUsuario = item.ToString.ToEntero For Each row As DataRow In DTEstatus.Rows CveEstatus = row("CveEstatus").ToString.ToEntero If Not ObjOC.AddEstatusUsuarios(CveEstatus, CveSubProyecto, CveUsuario, True, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then YaExiste = True End If Next Next If YaExiste Then ObjOC.RollBack() Else ObjOC.Commit() End If ObjOC.Dispose() End If End If End Sub #End Region #Region "E X C E L" Protected Sub downExcel_Click(sender As Object, e As EventArgs) Dim Gvr As GridViewRow = DirectCast(DirectCast(sender, LinkButton).NamingContainer, GridViewRow) 'TxtApellidoPaterno.Text = Gvr.DataKey("APaterno") Dim subproyecto As Integer Try subproyecto = Gvr.DataKey("CveSubProyecto").ToEntero Catch ex As Exception subproyecto = 0 End Try If subproyecto > 0 Then Dim objsubproyecto As New ClsSubProyectos If objsubproyecto.GetSubProyectosexcel(subproyecto, UsuarioActual.CveEmpresa) Then 'DatatableToExcel(objsubproyecto.DtResultados) objsubproyecto.DtResultados.ExportToExcel("subproyecto") End If objsubproyecto.Dispose() End If End Sub Protected Sub UpExcel_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles UpExcel.Click If (FileUpload1.HasFile AndAlso IO.Path.GetExtension(FileUpload1.FileName) = ".xlsx") Then Dim FileName As String = Path.GetFileName(FileUpload1.PostedFile.FileName) Dim Extension As String = Path.GetExtension(FileUpload1.PostedFile.FileName) Dim FolderPath As String = Request.ApplicationPath + "Temp\" Dim FilePath As String = Server.MapPath(FolderPath + FileName) FileUpload1.SaveAs(FilePath) Dim DTExcel As New Data.DataTable Dim conn As Odbc.OdbcConnection = Nothing Dim ErrorExcel = False Try conn = New Odbc.OdbcConnection("Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" & FilePath & ";") conn.Open() Dim cmd = conn.CreateCommand() cmd.CommandType = CommandType.Text cmd.CommandText = "SELECT * FROM [subproyecto$]" Dim da = New Odbc.OdbcDataAdapter(cmd) da.Fill(DTExcel) Dim objsubproyectos As New ClsSubProyectos Dim objcontpaqi As New ClsContPAQi(UsuarioActual.Empresa) Dim resultado As Boolean = False Dim DTError As New DataTable 'COLUMNAS DEL REPORTE (GRID) DTError.Columns.Add("Fila", GetType(String)) DTError.Columns.Add("Clasificacion", GetType(String)) DTError.Columns.Add("SubProyecto", GetType(String)) DTError.Columns.Add("CuentaGasto", GetType(String)) DTError.Columns.Add("CuentaAnticipo", GetType(String)) DTError.Columns.Add("CuentaInventario", GetType(String)) Dim hayerrorcol As Boolean = False Dim errores As String = "
| Clasificación | SubProyecto | CuentaGasto | CuentaAnticipo | CuentaInventario |
| {1} | {2} | {3} | {4} | {5} |