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(16).Visible = UsuarioActual.Procesos(201) 'costo GvS.Columns(16).Visible = UsuarioActual.Procesos(201) 'costo GvC.Columns(16).Visible = UsuarioActual.Procesos(201) 'costo GvGrupos.Columns(1).Visible = True 'clasificación GvGrupos.Columns(2).Visible = True 'proveedor GvGrupos.Columns(15).Visible = UsuarioActual.Procesos(201) 'costo End If If Inventario.GetInventarioFisico(CveInventarioFisico, UsuarioActual.CveEmpresa, -1, -1) 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) 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)) Dim logouri = String.Format("{0}://{1}:{2}/Empresas/{3}/Logo.png", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, UsuarioActual.CveEmpresa) If Imagen.Exists Then params.Add(New ReportParameter("LogoPath", logouri)) 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