Imports System.Data Imports System.IO Imports Extensiones Imports GemBox.Spreadsheet Imports Microsoft.Reporting.WebForms Partial Class Inventarios_RepAnomalias Inherits ClsPaginas #Region "Propiedades" Public Property CveInventarioFisico As Integer Get Return CType(ViewState("CveInventarioFisico"), Integer) End Get Set(value As Integer) ViewState("CveInventarioFisico") = value End Set End Property Public Property CveInventarioFisicoPadre As Integer Get If ViewState("CveInventarioFisicoPadre") Is Nothing Then Return -1 Else Return CType(ViewState("CveInventarioFisicoPadre"), Integer) End If End Get Set(value As Integer) ViewState("CveInventarioFisicoPadre") = value End Set End Property Public Property CveAlmacen As Integer Get Return CType(ViewState("CveAlmacen"), Integer) End Get Set(value As Integer) ViewState("CveAlmacen") = value End Set End Property Public Property CveSubProyecto As Integer Get Return CType(ViewState("CveSubProyecto"), Integer) End Get Set(value As Integer) ViewState("CveSubProyecto") = value End Set End Property Public Property EsAvance As Boolean Get Return CType(ViewState("EsAvance"), Boolean) End Get Set(value As Boolean) ViewState("EsAvance") = value End Set End Property Public Property aplicacion As Boolean Get Return CType(ViewState("aplicacion"), Boolean) End Get Set(value As Boolean) ViewState("aplicacion") = value End Set End Property Public Property CreandoNuevoInventario As Boolean Get Return CType(ViewState("CreandoNuevoInventario"), Boolean) End Get Set(value As Boolean) ViewState("CreandoNuevoInventario") = value End Set End Property #End Region Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load If Not IsPostBack Then CveInventarioFisico = If(Request("CveInventarioFisico") IsNot Nothing AndAlso Request("CveInventarioFisico").ToEntero() > 0, Request("CveInventarioFisico").ToEntero(), -1).ToString EsAvance = If(Request("EsAvance") IsNot Nothing, CBool(Request("EsAvance").ToEntero), False) If CveInventarioFisico > 0 Then CargaDatos(CveInventarioFisico) CreandoNuevoInventario = False End If End If End Sub #Region " CARGA DATOS " Private Sub CargaDatos(CveInventarioFisico As Integer) Dim Inventario As New ClsInventarios Dim dt As DataTable = Nothing If UsuarioActual.CveEmpresa.Contiene(119, 158) Then GvF.Columns(2).Visible = True 'clasificación GvS.Columns(2).Visible = True 'clasificación GvC.Columns(2).Visible = True 'clasificación GvF.Columns(3).Visible = True 'proveedor GvS.Columns(3).Visible = True 'proveedor GvC.Columns(3).Visible = True 'proveedor GvF.Columns(17).Visible = UsuarioActual.Procesos(201) 'costo GvS.Columns(17).Visible = UsuarioActual.Procesos(201) 'costo GvC.Columns(17).Visible = UsuarioActual.Procesos(201) 'costo GvGrupos.Columns(1).Visible = True 'clasificación GvGrupos.Columns(2).Visible = True 'proveedor GvGrupos.Columns(17).Visible = UsuarioActual.Procesos(201) 'costo End If If Inventario.GetInventarioFisico(CveInventarioFisico, UsuarioActual.CveEmpresa, -1, -1, UsuarioActual.CveUsuario) Then lbTitulo.Text = Inventario.InventarioFisico lbObservaciones.Text = Inventario.Observaciones lbSubProyecto.Text = Inventario.SubProyectoInventario lbEstatus.Text = Inventario.Estatus lbFechaI.Text = Inventario.FechaI lbFechaF.Text = Inventario.FechaF CveSubProyecto = Inventario.CveSubProyectoInventario aplicacion = Inventario.ConAplicacion CveInventarioFisicoPadre = Inventario.CveInventarioFisicoPadre If CveInventarioFisicoPadre > 0 Then colprevio.Visible = True HplPrevio.NavigateUrl = String.Format("/Inventarios/RepAnomalias.aspx?CveInventarioFisico={0}", CveInventarioFisicoPadre) HplPrevio.Text = "Ir" End If If Inventario.Estatus = "Finalizado" Then btnFin.Visible = False End If If EsAvance Then If Inventario.GetInventarioFisicoResultadosAvance(CveInventarioFisico, UsuarioActual.CveEmpresa, DdlGPO.SelectedValue.ToString.ToEntero, DdlVista.SelectedValue.ToEntero) Then dt = Inventario.DtResultados End If Else If Inventario.GetInventarioFisicoResultados(CveInventarioFisico, UsuarioActual.CveEmpresa, DdlGPO.SelectedValue.ToString.ToEntero, DdlVista.SelectedValue.ToEntero) Then dt = Inventario.DtResultados End If End If If Inventario.GetInventarioFisicoDetallesAlmacen(CveInventarioFisico, UsuarioActual.CveEmpresa) Then Dim dta As DataTable = Inventario.DtResultados Dim str As New StringBuilder If dta IsNot Nothing AndAlso dta.Rows.Count > 0 Then For Each dr As DataRow In dta.Rows str.AppendFormat("{0},", dr("almacen")) Next End If LblAlmacenes.Text = str.ToString End If If Inventario.GetInventarioFisicoDetallesClasificacion(CveInventarioFisico, UsuarioActual.CveEmpresa) Then Dim dta As DataTable = Inventario.DtResultados Dim str As New StringBuilder If dta IsNot Nothing AndAlso dta.Rows.Count > 0 Then For Each dr As DataRow In dta.FiltraParametros("Incluye = 1").Rows str.AppendFormat("{0},", dr("Clasificacion")) Next If str.ToString.Length > 500 Then LblClasif.Text = str.ToString.Substring(0, 500) LblClasif.ToolTip = str.ToString Else LblClasif.Text = If(str.ToString <> "", str.ToString, "Todos") End If str.Clear() For Each dr As DataRow In dta.FiltraParametros("Incluye = 0").Rows str.AppendFormat("{0},", dr("Clasificacion")) Next If str.ToString.Length > 500 Then LblClasificacionesExcluidas.Text = str.ToString.Substring(0, 500) LblClasificacionesExcluidas.ToolTip = str.ToString Else LblClasificacionesExcluidas.Text = str.ToString End If End If End If If Inventario.GetInventarioFisicoDetallesProductosServicios(CveInventarioFisico, UsuarioActual.CveEmpresa) Then Dim dta As DataTable = Inventario.DtResultados Dim str As New StringBuilder If dta IsNot Nothing AndAlso dta.Rows.Count > 0 Then For Each dr As DataRow In dta.FiltraParametros("Incluye = 1").Rows str.AppendFormat("{0},", dr("CodigoPS")) Next If str.ToString.Length > 500 Then LblProductos.Text = str.ToString.Substring(0, 500) LblProductos.ToolTip = str.ToString Else LblProductos.Text = If(str.ToString <> "", str.ToString, "Todos") End If str.Clear() For Each dr As DataRow In dta.FiltraParametros("Incluye = 0").Rows str.AppendFormat("{0},", dr("CodigoPS")) Next If str.ToString.Length > 500 Then LblProductosExcluidos.Text = str.ToString.Substring(0, 500) LblProductosExcluidos.ToolTip = str.ToString Else LblProductosExcluidos.Text = str.ToString End If End If End If If Inventario.GetInventarioFisicoDetallesProveedores(CveInventarioFisico, UsuarioActual.CveEmpresa) Then Dim dta As DataTable = Inventario.DtResultados Dim str As New StringBuilder If dta IsNot Nothing AndAlso dta.Rows.Count > 0 Then For Each dr As DataRow In dta.FiltraParametros("Incluye = 1").Rows str.AppendFormat("{0},", dr("RazonSocial")) Next If str.ToString.Length > 500 Then LblProveedores.Text = str.ToString.Substring(0, 500) LblProveedores.ToolTip = str.ToString Else LblProveedores.Text = If(str.ToString <> "", str.ToString, "Todos") End If str.Clear() End If End If End If Inventario.Dispose() If DdlVista.SelectedValue.ToEntero = 1 Then DVNormal.Visible = True DVGrupos.Visible = False LnkPDF.Visible = True ImgExcel.Visible = True ImgExcel2.Visible = True ImgExcelProdcutosCoinciden.Visible = True LnkDescarExcelGrupos.Visible = False If Not String.IsNullOrWhiteSpace(UsuarioActual.Empresa.Funcionalidad(147)) Then GvS.Columns(8).HeaderText = UsuarioActual.Empresa.Funcionalidad(147) If Not String.IsNullOrWhiteSpace(UsuarioActual.Empresa.Funcionalidad(147)) Then GvF.Columns(8).HeaderText = UsuarioActual.Empresa.Funcionalidad(147) If Not String.IsNullOrWhiteSpace(UsuarioActual.Empresa.Funcionalidad(147)) Then GvC.Columns(8).HeaderText = UsuarioActual.Empresa.Funcionalidad(147) GvS.DataSource = dt.FiltraParametros("Diferencia > 0") Dim DtS As DataTable = dt.FiltraParametros("Diferencia > 0") BanderaSerieLoteCad(GvS, DtS) GvS.DataBind() GvF.DataSource = dt.FiltraParametros("Diferencia < 0") Dim DtF As DataTable = dt.FiltraParametros("Diferencia < 0") BanderaSerieLoteCad(GvF, DtF) GvF.DataBind() Dim DtC As DataTable = dt.FiltraParametros("Diferencia = 0") GvC.DataSource = DtC BanderaSerieLoteCad(GvC, DtC) GvC.DataBind() If (GvF.Rows.Count > 0) Then GvF.UseAccessibleHeader = True GvF.HeaderRow.TableSection = TableRowSection.TableHeader divRegistradosFaltan.Visible = True LtlTotalRegistrosFaltan.Text = GvF.Rows.Count.ToString End If If (GvS.Rows.Count > 0) Then GvS.UseAccessibleHeader = True GvS.HeaderRow.TableSection = TableRowSection.TableHeader divRegistradosSobran.Visible = True LtlTotalRegistrosSobran.Text = GvS.Rows.Count.ToString End If If (GvC.Rows.Count > 0) Then GvC.UseAccessibleHeader = True GvC.HeaderRow.TableSection = TableRowSection.TableHeader divRegistradosCoinciden.Visible = True LtlCoincidentes.Text = GvC.Rows.Count.ToString End If PSIguales() UPAnomalias.Update() UpdateGvS.Update() UPDatos.Update() Else DVNormal.Visible = False DVGrupos.Visible = True If DdlGPO.SelectedValue.ToEntero = 2 Then GvGrupos.Columns(5).Visible = False GvGrupos.Columns(6).Visible = False GvGrupos.Columns(7).Visible = False GvGrupos.Columns(8).Visible = False Else GvGrupos.Columns(5).Visible = True GvGrupos.Columns(6).Visible = True GvGrupos.Columns(7).Visible = True GvGrupos.Columns(8).Visible = True End If If DdlGPO.SelectedValue.ToEntero = 2 Then LtlGrupos1.Visible = False LtlGrupos2.Visible = False LtlGrupos3.Visible = False LblGrupos1.Visible = False LblGrupos2.Visible = False LblGrupos3.Visible = False Else LtlGrupos1.Visible = True LtlGrupos2.Visible = True LtlGrupos3.Visible = True LblGrupos1.Visible = True LblGrupos2.Visible = True LblGrupos3.Visible = True End If UpGeneral.Update() LnkPDF.Visible = False ImgExcel.Visible = False ImgExcel2.Visible = False ImgExcelProdcutosCoinciden.Visible = False LnkDescarExcelGrupos.Visible = True If dt IsNot Nothing Then GvGrupos.DataSource = dt.FiltraParametros("CvePS > 0") LtlGrupos1.Text = dt.FiltraParametros("Orden = 1 and CvePS > 0").Rows.Count.ToString LtlGrupos2.Text = dt.FiltraParametros("Orden = 2 and CvePS > 0").Rows.Count.ToString LtlGrupos3.Text = dt.FiltraParametros("Orden = 3 and CvePS > 0").Rows.Count.ToString End If GvGrupos.DataBind() If DdlGPO.SelectedValue.ToEntero = 1 Then PSIguales() End If End If UpGeneral.Update() UPAcciones.Update() End Sub #End Region #Region " FINALIZAR " Protected Sub btnFin_Click(sender As Object, e As EventArgs) Handles btnFin.Click Dim Inventarios As New ClsInventarios Inventarios.IniciaTransacSQL() If Inventarios.AddInventarioFisicoResultados(CveInventarioFisico, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then If Inventarios.UpdateInventarioFisicoEstatus(CveInventarioFisico, 3, UsuarioActual.CveEmpresa) Then Dim url As String = ("/Inventarios/RepAnomalias.aspx?CveInventarioFisico=" + CveInventarioFisico.ToString) Alert("Ha finalizado el Inventario Físico. Sera enviado al reporte de anomalías", TipoMensaje.MsgInformacion, " window.location=""" + url + """") Inventarios.Commit() Else Inventarios.RollBack() End If Else Inventarios.RollBack() End If Inventarios.Dispose() End Sub Protected Sub BtnConsultar_Click(sender As Object, e As EventArgs) Handles BtnConsultar.Click CargaDatos(CveInventarioFisico) End Sub #End Region Protected Sub GVF_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvF.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then If e.Row.DBCampo("Costo") = "-1" Then e.Row.Cells(8).Text = "0" End If If e.Row.Cells(7).Text = MinFecha.ToString Then e.Row.Cells(7).Text = "" End If e.Row.FCLabel("Lblc").Text = e.Row.RowIndex + 1 End If If e.Row.RowType = DataControlRowType.Header Then If CreandoNuevoInventario Then e.Row.FCCheckBox("ChkAllFaltante").Attributes.Add("onclick", "SeleccionarTodosFaltante(this);") End If End If End Sub Protected Sub GVS_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvS.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then If e.Row.DBCampo("Costo") = "-1" Then e.Row.Cells(8).Text = "0" End If If e.Row.Cells(7).Text = MinFecha.ToString Then e.Row.Cells(7).Text = "" End If e.Row.FCLabel("Lblc").Text = e.Row.RowIndex + 1 End If If e.Row.RowType = DataControlRowType.Header Then If CreandoNuevoInventario Then e.Row.FCCheckBox("ChkAllSobrante").Attributes.Add("onclick", "SeleccionarTodosSobrante(this);") End If End If End Sub #Region " IMPRIMIR " 'Protected Sub LnkExportar_Click(sender As Object, e As EventArgs) Handles LnkExportar.Click ' GvF.ExportToExcel("IF_Faltantes_" & Now.ToShortDateString()) 'End Sub 'Protected Sub LnkExportaSobrantes_Click(sender As Object, e As EventArgs) Handles LnkExportaSobrantes.Click ' GvS.ExportToExcel("IF_Sobrantes_" & Now.ToShortDateString()) 'End Sub Private Sub LnkPDF_Click(sender As Object, e As EventArgs) Handles LnkPDF.Click ImprimirbytesPDF(Imprimir, Formato:="PDF") End Sub Protected Function Imprimir() As Byte() Dim retorno As Byte() = Nothing Dim Archivo As New System.IO.FileInfo(String.Format("{0}Formatos/RepAnomalias.rdlc", UsuarioActual.Empresa.Ruta)) Dim Imagen As New System.IO.FileInfo(String.Format("{0}/Logo.png", UsuarioActual.Empresa.Ruta)) Dim params As New List(Of ReportParameter) Dim lrds As New List(Of ReportDataSource) Dim Inventario As New ClsInventarios Dim dtS As DataTable = Nothing Dim dtF As DataTable = Nothing If Inventario.GetInventarioFisico(CveInventarioFisico, UsuarioActual.CveEmpresa, -1, -1, UsuarioActual.CveUsuario) Then params.Add(New ReportParameter("NombreEmpresa", UsuarioActual.Empresa.Empresa)) params.Add(New ReportParameter("Titulo", Inventario.InventarioFisico)) params.Add(New ReportParameter("Observaciones", Inventario.Observaciones)) params.Add(New ReportParameter("Almacen", LblAlmacenes.Text)) params.Add(New ReportParameter("Estatus", Inventario.Estatus)) params.Add(New ReportParameter("FechaInicio", Inventario.FechaI)) params.Add(New ReportParameter("FechaFin", Inventario.FechaF)) params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Nombre)) params.Add(New ReportParameter("FechaImpresion", Now.ToDateTime.ToString)) If Imagen.Exists Then params.Add(New ReportParameter("LogoPath", $"file://{Imagen.FullName}")) Else params.Add(New ReportParameter("LogoPath", "")) End If If EsAvance Then If Inventario.GetInventarioFisicoResultadosAvance(CveInventarioFisico, UsuarioActual.CveEmpresa) Then dtS = Inventario.DtResultados.FiltraParametros("Diferencia <0") dtF = Inventario.DtResultados.FiltraParametros(" Diferencia > 0") End If Else If Inventario.GetInventarioFisicoResultados(CveInventarioFisico, UsuarioActual.CveEmpresa) Then dtS = Inventario.DtResultados.FiltraParametros("Diferencia <0") dtF = Inventario.DtResultados.FiltraParametros(" Diferencia > 0") End If End If Dim rds As New ReportDataSource With {.Name = "DataSet1", .Value = dtS} lrds.Add(rds) Dim rds2 As New ReportDataSource With {.Name = "DataSet2", .Value = dtF} lrds.Add(rds2) End If retorno = StreamPDF("Empresas/Grales/Formatos/RepAnomalias.rdlc", lrds, params, "Reporte Anomalías", "PDF", MR:=Nothing) Return retorno End Function Private Sub ImgExcel_Click(sender As Object, e As EventArgs) Handles ImgExcel.Click Dim GvTemp As GridView = GvF For Each GvRow As GridViewRow In GvTemp.Rows GvRow.BackColor = Drawing.ColorTranslator.FromHtml("white") Next Dim SbFiltros As New StringBuilder() SbFiltros.AppendFormat("Almacenes: {0}|", LblAlmacenes.Text) SbFiltros.AppendFormat("Fecha Inicio: {0} Fecha Fin: {1}|", lbFechaI.Text, lbFechaF.Text) SbFiltros.AppendFormat("Clasificaciones: {0}|", LblClasif.Text) SbFiltros.AppendFormat("Clasificaciones Excluidas: {0}|", LblClasificacionesExcluidas.Text) SbFiltros.AppendFormat("Productos: {0}|", LblProductos.Text) SbFiltros.AppendFormat("Productos Excluidos: {0}|", LblProductosExcluidos.Text) SbFiltros.AppendFormat("Proveedores: {0}|", LblProveedores.Text) SbFiltros.AppendFormat("SubProyecto: {0}|", lbSubProyecto.Text) SbFiltros.AppendFormat("Estatus: {0}|", lbEstatus.Text) 'GvF.ExportToExcel("Reporte de Inventario Fisico - Productos que Faltan " & Now.ToShortDateString) ExportToExcelGembox2(GvTemp, "Reporte de Inventario Fisico - Productos que Faltan " & Now.ToShortDateString, UsuarioActual, "Reporte de Inventario Fisico - Productos que Faltan", DatosFiltros:=SbFiltros.ToString()) End Sub Private Sub ImgExcel2_Click(sender As Object, e As EventArgs) Handles ImgExcel2.Click Dim GvTemp As GridView = GvS For Each GvRow As GridViewRow In GvTemp.Rows GvRow.BackColor = Drawing.ColorTranslator.FromHtml("white") Next Dim SbFiltros As New StringBuilder() SbFiltros.AppendFormat("Almacenes: {0}|", LblAlmacenes.Text) SbFiltros.AppendFormat("Fecha Inicio: {0} Fecha Fin: {1}|", lbFechaI.Text, lbFechaF.Text) SbFiltros.AppendFormat("Clasificaciones: {0}|", LblClasif.Text) SbFiltros.AppendFormat("Clasificaciones Excluidas: {0}|", LblClasificacionesExcluidas.Text) SbFiltros.AppendFormat("Productos: {0}|", LblProductos.Text) SbFiltros.AppendFormat("Productos Excluidos: {0}|", LblProductosExcluidos.Text) SbFiltros.AppendFormat("Proveedores: {0}|", LblProveedores.Text) SbFiltros.AppendFormat("SubProyecto: {0}|", lbSubProyecto.Text) SbFiltros.AppendFormat("Estatus: {0}|", lbEstatus.Text) 'GvF.ExportToExcel("Reporte de Inventario Fisico - Productos que Faltan " & Now.ToShortDateString) ExportToExcelGembox2(GvTemp, "Reporte de Inventario Fisico - Productos que Sobran " & Now.ToShortDateString, UsuarioActual, "Reporte de Inventario Fisico - Productos que Sobran", DatosFiltros:=SbFiltros.ToString()) End Sub Private Sub ImgExcelProdcutosCoinciden_Click(sender As Object, e As EventArgs) Handles ImgExcelProdcutosCoinciden.Click Dim GvTemp As GridView = GvC For Each GvRow As GridViewRow In GvTemp.Rows GvRow.BackColor = Drawing.ColorTranslator.FromHtml("white") Next Dim SbFiltros As New StringBuilder() SbFiltros.AppendFormat("Almacenes: {0}|", LblAlmacenes.Text) SbFiltros.AppendFormat("Fecha Inicio: {0} Fecha Fin: {1}|", lbFechaI.Text, lbFechaF.Text) SbFiltros.AppendFormat("Clasificaciones: {0}|", LblClasif.Text) SbFiltros.AppendFormat("Clasificaciones Excluidas: {0}|", LblClasificacionesExcluidas.Text) SbFiltros.AppendFormat("Productos: {0}|", LblProductos.Text) SbFiltros.AppendFormat("Productos Excluidos: {0}|", LblProductosExcluidos.Text) SbFiltros.AppendFormat("Proveedores: {0}|", LblProveedores.Text) SbFiltros.AppendFormat("SubProyecto: {0}|", lbSubProyecto.Text) SbFiltros.AppendFormat("Estatus: {0}|", lbEstatus.Text) ExportToExcelGembox2(GvTemp, "Reporte de Inventario Fisico - Productos Coincidentes " & Now.ToShortDateString, UsuarioActual, "Reporte de Inventario Fisico - Productos Coincidentes", DatosFiltros:=SbFiltros.ToString()) End Sub Private Sub LnkDescarExcelGrupos_Click(sender As Object, e As EventArgs) Handles LnkDescarExcelGrupos.Click 'Dim Filtros As String = "Almacenes:aASDSAF|Clasificaciones:sdfasf|Fecha:12/12/2323" 'GvGrupos.ExportToExcelGembox("Reporte de Inventario Fisico" & Now.ToShortDateString, UsuarioActual, "Inventario:" & lbTitulo.Text, "", DatosFiltros:=Filtros) Dim SbFiltros As New StringBuilder() SbFiltros.AppendFormat("Almacenes: {0}|", LblAlmacenes.Text) SbFiltros.AppendFormat("Fecha Inicio: {0} Fecha Fin: {1}|", lbFechaI.Text, lbFechaF.Text) SbFiltros.AppendFormat("Clasificaciones: {0}|", LblClasif.Text) SbFiltros.AppendFormat("Clasificaciones Excluidas: {0}|", LblClasificacionesExcluidas.Text) SbFiltros.AppendFormat("Productos: {0}|", LblProductos.Text) SbFiltros.AppendFormat("Productos Excluidos: {0}|", LblProductosExcluidos.Text) SbFiltros.AppendFormat("Proveedores: {0}|", LblProveedores.Text) SbFiltros.AppendFormat("SubProyecto: {0}|", lbSubProyecto.Text) SbFiltros.AppendFormat("Estatus: {0}|", lbEstatus.Text) Dim SbFiltrosExtra As New StringBuilder() SbFiltrosExtra.AppendFormat("Almacenes: {0}|", LblAlmacenes.Text) SbFiltrosExtra.AppendFormat("Fecha Inicio: {0} Fecha Fin: {1}|", lbFechaI.Text, lbFechaF.Text) SbFiltrosExtra.AppendFormat("Clasificaciones Excluidas: {0}|", LblClasificacionesExcluidas.Text) SbFiltrosExtra.AppendFormat("Productos Excluidos: {0}|", LblProductosExcluidos.Text) SbFiltrosExtra.AppendFormat("Proveedores: {0}|", LblProveedores.Text) SbFiltrosExtra.AppendFormat("SubProyecto: {0}|", lbSubProyecto.Text) SbFiltrosExtra.AppendFormat("Estatus: {0}|", lbEstatus.Text) Dim ObjInventarios As New ClsInventarios Dim DTExtra As New DataTable If ObjInventarios.GetInventarioFisicoProductosExcluidos(CveInventarioFisico, UsuarioActual.CveEmpresa) Then DTExtra = ObjInventarios.DtResultados DTExtra.TableName = "ProductosExcluidos" End If ObjInventarios.Dispose() 'ExportToExcelGembox ExportToExcelGembox2(GvGrupos, "Reporte de Inventario Fisico" & Now.ToShortDateString, UsuarioActual, "Reporte de Inventario Fisico", DatosFiltros:=SbFiltros.ToString(), DTExtra:=DTExtra, DatosFiltrosExtra:=SbFiltrosExtra.ToString) 'ExportarExcelGembox(GvGrupos, "Reporte de Inventario Fisico" & Now.ToShortDateString, UsuarioActual, "Reporte de Inventario Fisico", DatosFiltros:=SbFiltros.ToString(), DTExtra:=DTExtra) End Sub Public Sub ExportToExcelGembox2(GridView As GridView, NombreArchivoXLSx As String, Usuario As Usuario, Titulo As String, Optional DatoTituloExtra As String = "", Optional DatosFiltros As String = "", Optional AnchoImagen As Integer = 100, Optional AlturaImagen As Integer = 100, Optional DTExtra As DataTable = Nothing, Optional DatosFiltrosExtra As String = "") Dim sw1 As New StringWriter() Dim htw1 As New HtmlTextWriter(sw1) GridView.RenderControl(htw1) Dim options = GemBox.Spreadsheet.LoadOptions.HtmlDefault Dim htmlStream1 = New MemoryStream(options.Encoding.GetBytes(sw1.ToString())) htmlStream1.Position = 0 Dim sr1 As New StreamReader(htmlStream1) Dim myStr1 = sr1.ReadToEnd() sr1.Dispose() htmlStream1.Dispose() sw1.Dispose() Dim HtmlCompleto As String = myStr1 HtmlCompleto = Regex.Replace(HtmlCompleto, "\<[\/]*a[^\>]*\>", "") Dim htmlStream5 = New MemoryStream(options.Encoding.GetBytes(HtmlCompleto)) GemBox.Spreadsheet.SpreadsheetInfo.SetLicense(SerialGemBoxSpreadsheet) Dim excel As GemBox.Spreadsheet.ExcelFile excel = GemBox.Spreadsheet.ExcelFile.Load(htmlStream5, options) If Usuario IsNot Nothing Then Dim TotalRowHeader As Integer = 6 Dim TotalRowFooter As Integer = 2 Dim worksheet = excel.Worksheets(0) worksheet.Rows.InsertEmpty(0, TotalRowHeader) Dim celdasConTexto = worksheet.GetUsedCellRange(True) celdasConTexto.Style.Font.Name = "Calibri Light" Dim RangoNombreEmpresa = worksheet.Cells.GetSubrangeAbsolute(1, celdasConTexto.FirstColumnIndex, 1, celdasConTexto.LastColumnIndex) RangoNombreEmpresa.Merged = True RangoNombreEmpresa.Value = Usuario.Empresa.Empresa RangoNombreEmpresa.Style.Font.Size = 18 * 20 RangoNombreEmpresa.Style.Font.Name = "Calibri Light" RangoNombreEmpresa.Style.HorizontalAlignment = GemBox.Spreadsheet.HorizontalAlignmentStyle.Center RangoNombreEmpresa.Style.VerticalAlignment = GemBox.Spreadsheet.VerticalAlignmentStyle.Center Dim RangoTitulo = worksheet.Cells.GetSubrangeAbsolute(3, celdasConTexto.FirstColumnIndex, 3, celdasConTexto.LastColumnIndex) RangoTitulo.Merged = True RangoTitulo.Value = Titulo RangoTitulo.Style.Font.Size = 20 * 20 RangoTitulo.Style.Font.Name = "Calibri Light" RangoTitulo.Style.HorizontalAlignment = GemBox.Spreadsheet.HorizontalAlignmentStyle.Center RangoTitulo.Style.VerticalAlignment = GemBox.Spreadsheet.VerticalAlignmentStyle.Center If DatoTituloExtra.Length > 0 Then Dim RangoDatoTituloExtra = worksheet.Cells.GetSubrangeAbsolute(TotalRowHeader, celdasConTexto.FirstColumnIndex, TotalRowHeader, celdasConTexto.LastColumnIndex) RangoDatoTituloExtra.Merged = True RangoDatoTituloExtra.Value = DatoTituloExtra RangoDatoTituloExtra.Style.Font.Size = 20 * 20 RangoDatoTituloExtra.Style.Font.Name = "Calibri Light" RangoDatoTituloExtra.Style.HorizontalAlignment = GemBox.Spreadsheet.HorizontalAlignmentStyle.Left RangoDatoTituloExtra.Style.VerticalAlignment = GemBox.Spreadsheet.VerticalAlignmentStyle.Center End If If DatosFiltros.Length > 0 Then Dim Arreglo As String() = DatosFiltros.Split("|"c) worksheet.Rows.InsertEmpty(TotalRowHeader, Arreglo.Count) For Each TextoFiltro As String In Arreglo Dim RangoDatoTituloExtra = worksheet.Cells.GetSubrangeAbsolute(TotalRowHeader, celdasConTexto.FirstColumnIndex, TotalRowHeader, celdasConTexto.LastColumnIndex) RangoDatoTituloExtra.Merged = True RangoDatoTituloExtra.Value = TextoFiltro RangoDatoTituloExtra.Style.Font.Size = 12 * 20 RangoDatoTituloExtra.Style.Font.Name = "Calibri Light" RangoDatoTituloExtra.Style.HorizontalAlignment = GemBox.Spreadsheet.HorizontalAlignmentStyle.Left RangoDatoTituloExtra.Style.VerticalAlignment = GemBox.Spreadsheet.VerticalAlignmentStyle.Center TotalRowHeader += 1 Next End If ' TotalRowHeader += 2 For i = celdasConTexto.FirstColumnIndex To celdasConTexto.LastColumnIndex worksheet.Rows(TotalRowHeader).Cells(i).Style.Font.Size = 12 * 20 worksheet.Rows(TotalRowHeader).Cells(i).Style.HorizontalAlignment = GemBox.Spreadsheet.HorizontalAlignmentStyle.Center worksheet.Rows(TotalRowHeader).Cells(i).Style.VerticalAlignment = GemBox.Spreadsheet.VerticalAlignmentStyle.Center worksheet.Rows(TotalRowHeader).Cells(i).Style.FillPattern.SetPattern(GemBox.Spreadsheet.FillPatternStyle.Solid, GemBox.Spreadsheet.SpreadsheetColor.FromArgb(75, 119, 190), GemBox.Spreadsheet.SpreadsheetColor.FromArgb(255, 255, 255)) worksheet.Rows(TotalRowHeader).Cells(i).Style.Font.Color = GemBox.Spreadsheet.SpreadsheetColor.FromArgb(255, 255, 255) If i > 0 Then Try worksheet.Columns(i).AutoFit(1) Catch ex As Exception End Try End If Next Dim IndexEndTable As Integer = GridView.Rows.Count + TotalRowHeader + TotalRowFooter worksheet.Rows(IndexEndTable).Cells(0).Value = "Usuario Imprimió" worksheet.Rows(IndexEndTable + 1).Cells(0).Value = Usuario.Nombre worksheet.Rows(IndexEndTable).Cells(2).Value = "Fecha Impresión" worksheet.Rows(IndexEndTable + 1).Cells(2).Value = DateTime.Now.ToString("dd/MM/yyyy") Dim Imagen As New System.IO.FileInfo(String.Format("{0}/Logo.png", Usuario.Empresa.Ruta)) If Imagen.Exists Then Dim Ruta As String = String.Format("{0}/Logo.png", Usuario.Empresa.Ruta) Using sr As New StreamReader(Ruta) Dim ms As New MemoryStream() sr.BaseStream.CopyTo(ms) worksheet.Pictures.Add(ms, ExcelPictureFormat.Png, "A1", AnchoImagen, AlturaImagen, LengthUnit.Pixel) End Using End If For I = celdasConTexto.FirstColumnIndex To celdasConTexto.LastColumnIndex If I > 0 Then If 1 = 1 Then worksheet.Columns(I + 1).Style.NumberFormat = "#,##0.00" Else worksheet.Columns(I + 1).Style.NumberFormat = "#,##" End If Try worksheet.Columns(I).AutoFit(1) Catch ex As Exception End Try End If Next If DTExtra IsNot Nothing Then Dim NombreTabla As String = "" If DTExtra.TableName IsNot Nothing Then NombreTabla = DTExtra.TableName End If If NombreTabla.Trim = "" Then NombreTabla = "hoja2" End If 'excel.Worksheets.Add(NombreTabla) Dim workbookDTExtra = New ExcelFile Dim worksheetDTExtra = workbookDTExtra.Worksheets.Add(NombreTabla) worksheetDTExtra.InsertDataTable(DTExtra, New InsertDataTableOptions() With { .ColumnHeaders = True, .StartRow = 0 }) Dim columnCount = worksheetDTExtra.CalculateMaxUsedColumns() For i As Integer = 0 To columnCount - 1 worksheetDTExtra.Columns(i).AutoFit(1, worksheetDTExtra.Rows(1), worksheetDTExtra.Rows(worksheetDTExtra.Rows.Count - 1)) worksheetDTExtra.Cells(0, i).Style.FillPattern.SetSolid(Drawing.ColorTranslator.FromHtml("#4b77be")) worksheetDTExtra.Cells(0, i).Style.Font.Color = GemBox.Spreadsheet.SpreadsheetColor.FromArgb(255, 255, 255) Next ' CLONA EL ENCABEZADO TotalRowHeader = 6 TotalRowFooter = 2 worksheet = worksheetDTExtra worksheet.Rows.InsertEmpty(0, TotalRowHeader) celdasConTexto = worksheet.GetUsedCellRange(True) celdasConTexto.Style.Font.Name = "Calibri Light" RangoNombreEmpresa = worksheet.Cells.GetSubrangeAbsolute(1, celdasConTexto.FirstColumnIndex, 1, celdasConTexto.LastColumnIndex) RangoNombreEmpresa.Merged = True RangoNombreEmpresa.Value = Usuario.Empresa.Empresa RangoNombreEmpresa.Style.Font.Size = 18 * 20 RangoNombreEmpresa.Style.Font.Name = "Calibri Light" RangoNombreEmpresa.Style.HorizontalAlignment = GemBox.Spreadsheet.HorizontalAlignmentStyle.Center RangoNombreEmpresa.Style.VerticalAlignment = GemBox.Spreadsheet.VerticalAlignmentStyle.Center RangoTitulo = worksheet.Cells.GetSubrangeAbsolute(3, celdasConTexto.FirstColumnIndex, 3, celdasConTexto.LastColumnIndex) RangoTitulo.Merged = True RangoTitulo.Value = Titulo RangoTitulo.Style.Font.Size = 20 * 20 RangoTitulo.Style.Font.Name = "Calibri Light" RangoTitulo.Style.HorizontalAlignment = GemBox.Spreadsheet.HorizontalAlignmentStyle.Center RangoTitulo.Style.VerticalAlignment = GemBox.Spreadsheet.VerticalAlignmentStyle.Center If DatoTituloExtra.Length > 0 Then Dim RangoDatoTituloExtra = worksheet.Cells.GetSubrangeAbsolute(TotalRowHeader, celdasConTexto.FirstColumnIndex, TotalRowHeader, celdasConTexto.LastColumnIndex) RangoDatoTituloExtra.Merged = True RangoDatoTituloExtra.Value = DatoTituloExtra RangoDatoTituloExtra.Style.Font.Size = 20 * 20 RangoDatoTituloExtra.Style.Font.Name = "Calibri Light" RangoDatoTituloExtra.Style.HorizontalAlignment = GemBox.Spreadsheet.HorizontalAlignmentStyle.Left RangoDatoTituloExtra.Style.VerticalAlignment = GemBox.Spreadsheet.VerticalAlignmentStyle.Center End If If DatosFiltrosExtra.Length > 0 Then Dim Arreglo As String() = DatosFiltrosExtra.Split("|"c) worksheet.Rows.InsertEmpty(TotalRowHeader, Arreglo.Count) For Each TextoFiltro As String In Arreglo Dim RangoDatoTituloExtra = worksheet.Cells.GetSubrangeAbsolute(TotalRowHeader, celdasConTexto.FirstColumnIndex, TotalRowHeader, celdasConTexto.LastColumnIndex) RangoDatoTituloExtra.Merged = True RangoDatoTituloExtra.Value = TextoFiltro RangoDatoTituloExtra.Style.Font.Size = 12 * 20 RangoDatoTituloExtra.Style.Font.Name = "Calibri Light" RangoDatoTituloExtra.Style.HorizontalAlignment = GemBox.Spreadsheet.HorizontalAlignmentStyle.Left RangoDatoTituloExtra.Style.VerticalAlignment = GemBox.Spreadsheet.VerticalAlignmentStyle.Center TotalRowHeader += 1 Next End If Imagen = New System.IO.FileInfo(String.Format("{0}/Logo.png", Usuario.Empresa.Ruta)) If Imagen.Exists Then Dim Ruta As String = String.Format("{0}/Logo.png", Usuario.Empresa.Ruta) Using sr As New StreamReader(Ruta) Dim ms As New MemoryStream() sr.BaseStream.CopyTo(ms) worksheet.Pictures.Add(ms, ExcelPictureFormat.Png, "A1", AnchoImagen, AlturaImagen, LengthUnit.Pixel) End Using End If excel.Worksheets.AddCopy(NombreTabla, worksheetDTExtra) excel.Worksheets(0).Name = Titulo End If End If excel.Save(HttpContext.Current.Response, $"{NombreArchivoXLSx}.xlsx") End Sub Public Overrides Sub VerifyRenderingInServerForm(ByVal control As Control) End Sub #End Region Private Sub BanderaSerieLoteCad(Gv As GridView, resultado As DataTable) If resultado IsNot Nothing Then Gv.Columns(6).Visible = resultado.MAX("CveSeccionAlmacen").ToEntero > 0 Gv.Columns(7).Visible = resultado.MAX("Serie") <> "" Gv.Columns(8).Visible = resultado.MAX("Lote") <> "" Gv.Columns(9).Visible = resultado.MAX("FechaCaducidad").ToDate > MinFecha End If End Sub Private Sub LnkCrear_Click(sender As Object, e As EventArgs) Handles LnkCrear.Click If GvF.Rows.Count > 0 Then GvF.Columns(0).Visible = True LnkGuardar.Visible = True LnkCrear.Visible = False CreandoNuevoInventario = True End If If GvS.Rows.Count > 0 Then GvS.Columns(0).Visible = True LnkGuardar.Visible = True LnkCrear.Visible = False CreandoNuevoInventario = True End If CargaDatos(CveInventarioFisico) 'UPAnomalias.Update() 'UpdateGvS.Update() 'UPAcciones.Update() End Sub Private Sub LnkGuardar_Click(sender As Object, e As EventArgs) Handles LnkGuardar.Click RegistraScript("$('#ModalGuardar').modal('show')") End Sub Private Sub BtnCrear_Click(sender As Object, e As EventArgs) Handles BtnCrear.Click Dim ErrorClasif As Boolean = False Dim ObjInventario As New ClsInventarios Dim CveInventarioFisicoNew As Integer Dim DtAlmacen, DtClasificacion, DtClasificacionExcluida, DtProveedor, DtUsuario As DataTable DtAlmacen = Nothing DtClasificacion = Nothing DtClasificacionExcluida = Nothing DtProveedor = Nothing DtUsuario = Nothing Dim CveInventarioFisicoPadre As Integer = If(ChkRelacionarInventario.Checked, CveInventarioFisico, -1) ObjInventario.IniciaTransacSQL() If ObjInventario.AddInventarioFisico(UsuarioActual.CveEmpresa, TxtTitulo.Text, lbObservaciones.Text, 0, CveSubProyecto, aplicacion, CveInventarioFisicoPadre:=CveInventarioFisicoPadre) Then CveInventarioFisicoNew = ObjInventario.CveInventarioFisico If ObjInventario.GetInventarioFisicoDetallesAlmacen(CveInventarioFisico, UsuarioActual.CveEmpresa) Then DtAlmacen = ObjInventario.DtResultados End If If ObjInventario.GetInventarioFisicoDetallesClasificacion(CveInventarioFisico, UsuarioActual.CveEmpresa) Then DtClasificacion = ObjInventario.DtResultados.FiltraParametros("Incluye = 1") DtClasificacionExcluida = ObjInventario.DtResultados.FiltraParametros("Incluye = 0") End If If ObjInventario.GetInventarioFisicoDetallesProveedores(CveInventarioFisico, UsuarioActual.CveEmpresa) Then DtProveedor = ObjInventario.DtResultados.FiltraParametros("Incluye = 1") End If If ObjInventario.GetInventarioFisicoDetallesUsuarios(CveInventarioFisico, UsuarioActual.CveEmpresa) Then DtUsuario = ObjInventario.DtResultados.FiltraParametros("Incluye = 1") End If For Each Gvr As DataRow In DtUsuario.Rows If Not ObjInventario.AddInventarioFisicoUsuarios(CveInventarioFisicoNew, Gvr("CveUsuario").ToString.ToEntero, Convert.ToBoolean(Gvr("Incluye").ToString), Convert.ToBoolean(Gvr("Cerrado").ToString), Convert.ToBoolean(Gvr("Bloqueado").ToString)) Then ErrorClasif = True Exit For End If Next For Each Gvr As DataRow In DtAlmacen.Rows If Not ObjInventario.AddInventarioFisicoAlmacenes(CveInventarioFisicoNew, Gvr("CveAlmacen").ToString.ToEntero) Then ErrorClasif = True Exit For End If Next If ErrorClasif = False Then For Each Gvr As DataRow In DtClasificacion.Rows If Not ObjInventario.AddInventarioFisicoClasificaciones(CveInventarioFisicoNew, Gvr("CveClasificacion").ToString.ToEntero, UsuarioActual.CveUsuario, True) Then ErrorClasif = True Exit For End If Next For Each Gvr As DataRow In DtClasificacionExcluida.Rows If Not ObjInventario.AddInventarioFisicoClasificaciones(CveInventarioFisicoNew, Gvr("CveClasificacion").ToString.ToEntero, UsuarioActual.CveUsuario, False) Then ErrorClasif = True Exit For End If Next End If If ErrorClasif = False Then For Each Gvr As GridViewRow In GvF.Rows If Gvr.FCCheckBox("ChkPSFaltante").Checked Then If Not ObjInventario.AddInventarioFisicoProductosServicios(CveInventarioFisicoNew, Gvr.DataKey("CvePS").ToString.ToEntero, True) Then ErrorClasif = True Exit For End If End If Next For Each Gvr As GridViewRow In GvS.Rows If Gvr.FCCheckBox("ChkPSSobrante").Checked Then If Not ObjInventario.AddInventarioFisicoProductosServicios(CveInventarioFisicoNew, Gvr.DataKey("CvePS").ToString.ToEntero, True) Then ErrorClasif = True Exit For End If End If Next End If If ErrorClasif = False Then For Each Gvr As DataRow In DtProveedor.Rows If Not ObjInventario.AddInventarioFisicoProveedores(CveInventarioFisicoNew, Gvr("CveProveedor").ToString.ToEntero, True) Then ErrorClasif = True Exit For End If Next End If End If If ErrorClasif = False And CveInventarioFisicoNew > 0 Then ObjInventario.Commit() Alert("Agregado Correctamente.", TipoMensaje.MsgInformacion) RegistraScript(String.Format("$('#{0}').modal('hide');", "ModalGuardar")) GvF.Columns(0).Visible = False GvS.Columns(0).Visible = False LnkGuardar.Visible = False LnkCrear.Visible = True CreandoNuevoInventario = False CargaDatos(CveInventarioFisico) Else ObjInventario.RollBack() End If ObjInventario.Dispose() End Sub Private Sub PSIguales() Dim contadorF As Integer = 0 Dim contadorS As Integer = 0 If DdlVista.SelectedValue.ToEntero = 1 Then For Each dtF As GridViewRow In GvF.Rows contadorS = 0 For Each dtS As GridViewRow In GvS.Rows If dtS.DataKey("CvePS") = dtF.DataKey("CvePS") Then GvS.Rows(contadorS).BackColor = Drawing.Color.FromArgb(202, 52, 52) GvF.Rows(contadorF).BackColor = Drawing.Color.FromArgb(202, 52, 52) End If contadorS += 1 Next contadorF += 1 Next Else For Each dtF As GridViewRow In GvGrupos.Rows contadorS = 0 If dtF.DataKey("Orden").ToEntero = 1 And dtF.DataKey("CvePS").ToEntero > 0 Then For Each dtS As GridViewRow In GvGrupos.Rows If dtS.DataKey("Orden").ToEntero = 2 Then If dtS.DataKey("CvePS") = dtF.DataKey("CvePS") Then GvGrupos.Rows(contadorS).BackColor = Drawing.Color.FromArgb(202, 52, 52) GvGrupos.Rows(contadorF).BackColor = Drawing.Color.FromArgb(202, 52, 52) End If End If contadorS += 1 Next End If contadorF += 1 Next End If End Sub Private Sub GvGrupos_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvGrupos.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then If e.Row.DataKey("CvePS").ToString.ToEntero = 0 Then e.Row.CssClass = "SubTotales" e.Row.Cells(1).Text = e.Row.DataKey("Grupo").ToString End If End If End Sub End Class