Option Strict On Option Explicit On Imports System Imports System.Data Imports System.Security.Cryptography.Pkcs Imports ADSNetLibrary.SIGAPI.Models.CGame Imports Extensiones Imports Microsoft.Reporting.WebForms Imports Microsoft.VisualBasic Imports Telerik.Web.UI Partial Class Inventarios_Kardex Inherits ClsPaginas #Region "P R O P I E D A D E S" 'Public Property DtKardex As DataTable ' Get ' Return CType(ViewState("DtKardex"), DataTable) ' End Get ' Set(value As DataTable) ' ViewState("DtKardex") = value ' End Set 'End Property Private Property CveMovimiento() As Integer Get Return If(IsNothing(ViewState("CveMovimiento")), -1, CInt(ViewState("CveMovimiento"))) End Get Set ViewState("CveMovimiento") = Value End Set End Property #End Region Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load If Not IsPostBack Then 'If UsuarioActual.CveRol = 1 Then ' DVNavegar.Visible = True 'End If TxtFechaI.Text = NowADS().AddMonths(-1).ToShortDateString TxtFechaF.Text = NowADS().ToShortDateString CargaCombos() 'ddlAlmacen.Items.Insert(0, New ListItem("Todos", "-1")) If UsuarioActual.TienePermisoProceso(258) Then GvM.Columns(1).Visible = True ddlAlmacen.SelectedValue = If(Request("CveAlmacen") IsNot Nothing, Request("CveAlmacen").ToString, "-1") If Request("FechaI") IsNot Nothing AndAlso Request("FechaI") <> "-1" Then TxtFechaI.Text = Request("FechaI").ToString If Request("FechaF") IsNot Nothing AndAlso Request("FechaF") <> "-1" Then TxtFechaF.Text = Request("FechaF").ToString 'If IfNull(Request("CvePS"), "-1").ToString.ToEntero > 0 Then CargarKardex(Request("CvePS").ToString.ToEntero) 'ddlProducto2.SelectedValue = If(Request("CvePS") IsNot Nothing, Request("CvePS").ToString, "-1") If Request("CvePS") IsNot Nothing And Request("CvePS") <> "-1" Then ddlProducto2.SelectedValue = If(Request("CvePS") IsNot Nothing, Request("CvePS").ToString, "-1") ddlProducto_SelectedIndexChanged(ddlProducto2, EventArgs.Empty) CargaDatos() End If CargaPermisos() If UsuarioActual.CveRol = 1 Then LblPS.ToolTip = ddlProducto2.SelectedValue lblAlm.InnerText = ddlProducto2.SelectedValue End If End If End Sub #Region " INICIALIZA VALORES " Private Sub CargaPermisos() If UsuarioActual.CveRol = 1 Then ChkAgruparAlmacen.Visible = True Dim TienePermisoImportes As Boolean = UsuarioActual.TienePermisoProceso(201) GvM.Columns(15).Visible = TienePermisoImportes ' costo GvM.Columns(16).Visible = TienePermisoImportes ' importe GvM.Columns(18).Visible = TienePermisoImportes ' valor GvM.Columns(19).Visible = UsuarioActual.CveEmpresa = 172 AndAlso UsuarioActual.CveRol = 1 If UsuarioActual.Empresa.Funcionalidad(574).ToEntero = 1 Then DVFiltroCodigo.Visible = True End If End Sub Private Function isWithFamily() As Boolean Return (UsuarioActual.CveEmpresa = 66) End Function Private Sub CargaCombos() CargaFuncionalidad105() CargaPS() ddlAlmacen.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1) ddlAlmacen.DataBind() Dim CveTipoAlmacen As Integer If IfNull(Request("CveAlmacen"), "-1").ToString.ToEntero > 0 Then ddlAlmacen.SelectedValuesIfExist(Request("CveAlmacen").ToString) CveTipoAlmacen = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=Request("CveAlmacen").ToString.ToEntero).FiltroPrimeroValor("CveTipoAlmacen").ToEntero ' If CveTipoAlmacen = 3 Then chktransitorio.checked = True End If CargaClasificaciones() CBLTiposAlmacen.DataSource = GlobalDTTipoAlmacen(-1) CBLTiposAlmacen.DataBind() For Each item As ListItem In CBLTiposAlmacen.Items If item.Text.Contiene("Entrega Adelantado", "Transitorio") Then If CveTipoAlmacen = 3 Then item.Selected = True Else item.Selected = False End If Else item.Selected = True End If Next If UsuarioActual.Empresa.Funcionalidad(574).ToEntero = 1 Then CargarMarcas() End If DdlProveedores.setEsWebService(True) DdlProveedores.Attributes.Add("data-metodo", "getproveedores") DdlProveedores.SelectedText = "Todos" DdlProveedores.SelectedValue = "-1" End Sub Protected Sub CargarMarcas() DdlMarca.DataSource = GlobalDTGralMarcas(UsuarioActual.CveEmpresa) DdlMarca.DataBind() DdlMarca.Items.Insert(0, New ListItem("Todas", "-1")) End Sub Private Sub CargaFuncionalidad105() ddlProducto2.setEsWebService(UsuarioActual.Empresa.Funcionalidad(105) = "1") If ddlProducto2.UsaWebService Then ddlProducto2.ddlWS.Attributes.Add("data-Estatus", "-1") If UsuarioActual.Empresa.Funcionalidad(531) = "1" Then '' se cambio la página para que puedan filtrar "servicios" como los usados. ddlProducto2.ddlWS.Attributes.Add("data-pagina", "Kardex") Else ddlProducto2.ddlWS.Attributes.Add("data-pagina", "Inventarios") End If ddlProducto2.ddlWS.Attributes.Add("data-cveclasificacion", DdlClasificacion.SelectedValue) 'DdlClasificacion.AutoPostBack = False Else ddlProducto2.ddl.Items.Add(New ListItem("Seleccione", "-1")) ddlProducto2.ddl.Items.Add(New ListItem("*** Actualizar listado de Productos o Servicios ***", "-2")) End If End Sub Private Sub CargaClasificaciones() Dim CveClasificacion = If(Request("CveClasificacion") IsNot Nothing, Request("CveClasificacion").ToString, "-1") If isWithFamily() Then DdlClasificacion.DataSource = GlobalDTSubFamilias(UsuarioActual.CveEmpresa).FiltraParametros("", Orderby:="Clasificacion") Else Dim ObjClasificaciones As New ClsClasificaciones If UsuarioActual.Empresa.UsaAC Then If ObjClasificaciones.GetClasificacionesExistencias(UsuarioActual.CveEmpresa) Then DdlClasificacion.DataSource = ObjClasificaciones.DtResultados ' DdlClasificacion.DataBind() End If Else If ObjClasificaciones.GetClasificacionesExistencias(UsuarioActual.CveEmpresa) Then DdlClasificacion.DataSource = ObjClasificaciones.DtResultados ' DdlClasificacion.DataBind() End If End If ObjClasificaciones.Dispose() End If 'DdlClasificacion.DataSource = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltraParametros("", "Clasificacion") DdlClasificacion.DataBind() DdlClasificacion.SelectedValueExist(CveClasificacion) End Sub #End Region #Region " CARGA PS " Protected Sub DdlClasificacion_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles DdlClasificacion.SelectedIndexChanged CargaPS() End Sub Private Sub CargaPS() If Not ddlProducto2.UsaWebService Then Dim Filtro = If(DdlClasificacion.SelectedValue.ToEntero > 0, String.Format("CveClasificacion={0} And CveTipoPS=2", DdlClasificacion.SelectedValue), "CveTipoPS=2") ddlProducto2.ddl.Items.Clear() ddlProducto2.DataSource = GlobalDTPS(UsuarioActual.CveEmpresa).FiltraParametros(Filtro, "PSCodigo") ddlProducto2.DataBind() ddlProducto2.ddl.Items.Insert(0, New ListItem(" Seleccione ", "-1")) Else ddlProducto2.ddlWS.Attributes.Add("data-cveclasificacion", DdlClasificacion.SelectedValue) ddlProducto2.SelectedText = "" ddlProducto2.SelectedValue = "-1" End If End Sub Protected Sub ddlProducto_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ddlProducto2.selectedindexchange DdlUnidadMedida.Items.Clear() DdlUnidadMedida.DataSource = GlobalDTProductosServiciosEquivalencias(ddlProducto2.SelectedValue.ToEntero, -1, UsuarioActual.CveEmpresa) DdlUnidadMedida.DataBind() DdlUnidadMedida.Items.Insert(0, New ListItem("Todos", "-1")) If UsuarioActual.CveRol = 1 Then LblPS.ToolTip = ddlProducto2.SelectedValue lblAlm.InnerText = ddlProducto2.SelectedValue End If TxtSerie.Text = "" If ddlProducto2.SelectedValue.ToEntero > 0 Then Dim Dr As DataRow = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CvePS:=ddlProducto2.SelectedValue.ToEntero).FiltroPrimero("") If Dr IsNot Nothing Then If Dr("AplicaSerie").ToString = "True" Then DivSerie.Visible = True Else DivSerie.Visible = False End If End If End If End Sub #End Region #Region " CARGA DATOS " Protected Sub btConsultar_Click(sender As Object, e As EventArgs) Handles btConsultar.Click CargaDatos() Dim almacenes As String = ddlAlmacen.GetSelectedValues() If almacenes = "" Then almacenes = "-1" End If ImprimirQR.NavigateUrl = String.Format("/Compras/PopUpVerFactura.aspx?P={0}", Encripta(String.Format("OP=Etiqueta2&CvePS={0}&PS={1}&CveAlmacen={2}&Modalidad={3}", ddlProducto2.SelectedValue.ToEntero, ddlProducto2.SelectedText.ToString, almacenes, "Individual"))) End Sub Private Sub CargaDatos() Dim CveProducto As Integer = ddlProducto2.SelectedValue.ToEntero If CveProducto > 0 Then Dim DtTemp = CargarKardex(CveProducto) If DtTemp IsNot Nothing AndAlso DtTemp.Rows.Count > 0 Then Dim AplicaSeccion, AplicaLote, AplicaCaducidad, AplicaSerie, AplicaAlmacenDestino As Boolean AplicaSerie = DtTemp.MAX("Serie") <> "" AplicaSeccion = DtTemp.MAX("SeccionAlmacen") <> "" AplicaLote = DtTemp.MAX("Lote") <> "" AplicaCaducidad = DtTemp.MAX("FechaCaducidad") <> "" AplicaAlmacenDestino = DtTemp.MAX("AlmacenDestino") <> "" AndAlso UsuarioActual.Empresa.Funcionalidad(382) = "1" GvM.Columns(5).Visible = AplicaAlmacenDestino GvM.Columns(7).Visible = DtTemp.MAX("FolioRelacionEntrada") <> "" If AplicaSeccion Then GvM.Columns(9).Visible = True If AplicaSerie Then GvM.Columns(10).Visible = True If AplicaLote Then GvM.Columns(11).Visible = True If AplicaCaducidad Then GvM.Columns(12).Visible = True If Not String.IsNullOrWhiteSpace(UsuarioActual.Empresa.Funcionalidad(147)) Then GvM.Columns(12).HeaderText = UsuarioActual.Empresa.Funcionalidad(147) Dim Drp As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CveProducto).FiltroPrimero("") Dim AuxAplicaSerie As Boolean Dim AuxAplicaCad As Boolean If Drp IsNot Nothing Then AuxAplicaSerie = Drp("AplicaSerie").ToString = "True" AuxAplicaCad = Drp("AplicaCaducidad").ToString = "True" End If LnkSeries.Visible = AuxAplicaSerie LnkCaducidad.Visible = AuxAplicaCad If UsuarioActual.CveEmpresa = 172 AndAlso UsuarioActual.CveRol = 1 Then LnkExistenciasPorCapas.Visible = True End If 'CARGA INDICADORES If UsuarioActual.TienePermisoProceso(201) Then DivIndicadores.Visible = True Dim Dr = DtTemp.FiltroUltimo("") Dim TC = If(GlobalTipoCambio(NowADS()) > 0, GlobalTipoCambio(NowADS()), 1) LtIndicador_Existencia.Text = Dr("Existencias").ToString.ToDecimal.ToString("#,##0.####") LtIndicador_ValorPesos.Text = Dr("ValorInventario").ToString.FormatoNumero() LtIndicador_ValorDolares.Text = (Dr("ValorInventario").ToString.ToDouble / TC).FormatoNumero() Dim CostoPromedio As Decimal = If(Dr("Existencias").ToString.ToDecimal.RoundSQL(4) > 0, Dr("ValorInventario").ToString.ToDecimal.RoundSQL(4) / Dr("Existencias").ToString.ToDecimal.RoundSQL(4), 0) LtIndicador_CPPesos.Text = CostoPromedio.FormatoNumero() LtIndicador_CPDolares.Text = (CostoPromedio / TC).FormatoNumero() 'LtIndicador_UCPesos.Text = Dr("UltimoCosto").ToString.FormatoNumero() 'LtIndicador_UCDolares.Text = Dr("UltimoCostoUSD").ToString.FormatoNumero() LtIndicador_Mensaje.Text = $"* Importes calculados con el tipo de cambio del día $ {TC.FormatoNumero(4)} " If TxtSerie.Text <> "" Then LtIndicador_MensajeSerie.Text = $"* Existencia y costos calculada por número de serie: {TxtSerie.Text} " Else LtIndicador_MensajeSerie.Text = "" End If If UsuarioActual.Empresa.Funcionalidad(382) = "1" Then CargarOCPendientesCompra() DivIndicadorOC.Visible = True End If UpIndicadores.Update() GvM.Attributes.Add("data-heighterror", "430") Else GvM.Attributes.Add("data-heighterror", "270") End If GvM.DataSource = DtTemp GvM.DataBind() UpAcciones.Update() End If Else Alert("Seleccione un producto.", TipoMensaje.MsgAdvertencia) End If End Sub Private Sub CargarOCPendientesCompra() Dim ObjOC As New ClsOC If ObjOC.PendientesCompra(ddlProducto2.SelectedValue.ToEntero, UsuarioActual.CveEmpresa) Then GvOC.DataSource = ObjOC.DtResultados.Copy LnkIndicador_OC.Text = ObjOC.DtResultados.Copy.SUM("CantidadPendienteVincular").ToString() End If ObjOC.Dispose() GvOC.DataBind() UpModalOC.Update() End Sub Private Function CargarKardex(CvePS As Integer) As DataTable Dim dt As DataTable = Nothing Dim Entrada As Boolean = cbEntrada.Checked Dim Salida As Boolean = cbSalida.Checked Dim FechaI As String = If(TxtFechaI.Text <> "" AndAlso TxtFechaI.Text <> "__/__/____", TxtFechaI.Text, "-1") Dim FechaF As String = If(TxtFechaF.Text <> "" AndAlso TxtFechaF.Text <> "__/__/____", TxtFechaF.Text, "-1") Dim CveAlmacen As Integer = If(ddlAlmacen.SelectedValue.ToEntero = 0, -1, ddlAlmacen.SelectedValue.ToEntero) Dim CveAlmacenes As String = ddlAlmacen.GetSelectedValues() If CveAlmacenes.Contains(",") Then CveAlmacen = -1 End If If CvePS > 0 Then Dim dr As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePS).FiltroPrimero("") If dr IsNot Nothing Then ddlProducto2.SelectedText = dr("PSCodigo").ToString ddlProducto2.SelectedValue = CvePS.ToString Dim TC = If(GlobalTipoCambio(NowADS()) > 0, GlobalTipoCambio(NowADS()), 1) LtIndicador_UCPesos.Text = dr("UltimoCosto").ToString.FormatoNumero() LtIndicador_UCDolares.Text = (dr("UltimoCosto").ToString.ToDecimal / TC).FormatoNumero End If End If Dim CveTiposAlmacen As String = "" For Each item As ListItem In CBLTiposAlmacen.Items CveTiposAlmacen += If(item.Selected, $"{item.Value},", "") Next Dim Serie As String = If(TxtSerie.Text <> "", TxtSerie.Text, "-1") Dim ObjInventarios As New ClsInventarios If ObjInventarios.GetKardex(Entrada, Salida, CvePS, FechaI, FechaF, CveAlmacen, CveTiposAlmacen.Substring(0, CveTiposAlmacen.Length - 1), DdlUnidadMedida.SelectedValue.ToEntero, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, ChkAgruparAlmacen.Checked, Serie, CveAlmacenes) Then dt = ObjInventarios.DtResultados.Copy End If ObjInventarios.Dispose() Return dt End Function Protected Sub gvMovimientos_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvM.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then e.Row.Cells(0).ToolTip = e.Row.DBCampo("FechaMovto") If UsuarioActual.TienePermisoProceso(201) Then 'PERMISO PARA VER IMPORTES If e.Row.DBCampo("CveCompra") <> "" Then e.Row.FCHyperLink("hlFolioD").NavigateUrl = String.Format("/Compras/Compras.aspx?CveCompra={0}", e.Row.DBCampo("CveCompra")) ElseIf e.Row.DBCampo("CveVenta") <> "" Then e.Row.FCHyperLink("hlFolioD").NavigateUrl = String.Format("/Ventas/Ventas.aspx?CveVenta={0}", e.Row.DBCampo("CveVenta")) ElseIf e.Row.DBCampo("CveOrdenCompra") <> "" Then e.Row.FCHyperLink("hlFolioD").NavigateUrl = String.Format("/OC/OC.aspx?OC={0}", e.Row.DBCampo("CveOrdenCompra")) End If End If If GvM.Columns(1).Visible Then If Not e.Row.DBCampo("CveMovimiento").ToEntero > 0 Then e.Row.Cells(1).Text = "" End If End If If e.Row.DBCampo("Concepto").Contains("TOTAL GENERAL") Then e.Row.CssClass = "Totales" ElseIf e.Row.DBCampo("Concepto").Contains("SALDO INICIAL") Then e.Row.CssClass = "SubTotales" End If End If End Sub Private Sub CargarExistenciasProductosSeries() Dim almacenes As String = ddlAlmacen.GetSelectedValues() If almacenes = "" Then almacenes = "-1" End If Dim ObjInventarios As New ClsInventarios If ObjInventarios.GetExistenciasProductoSerie(ddlProducto2.SelectedValue.ToEntero(), UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, TxtFechaF.Text.ToDateTime, almacenes) Then GvSeries.DataSource = ObjInventarios.DtResultados End If ObjInventarios.Dispose() GvSeries.DataBind() End Sub Private Sub CargarCaducidadProducto() Dim almacenes As String = ddlAlmacen.GetSelectedValues() If almacenes = "" Then almacenes = "-1" End If Dim ObjInventarios As New ClsInventarios If ObjInventarios.GetExistenciasCaducidad(ddlProducto2.SelectedValue.ToEntero(), -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, almacenes) Then GvProductoCaducidad.DataSource = ObjInventarios.DtResultados GvProductoCaducidad.Columns(2).Visible = ObjInventarios.DtResultados.MAX("Serie") <> "" GvProductoCaducidad.Columns(3).Visible = ObjInventarios.DtResultados.MAX("Lote") <> "" GvProductoCaducidad.Columns(4).Visible = ObjInventarios.DtResultados.MAX("FechaCaducidad").ToDate > MinFecha If Not String.IsNullOrWhiteSpace(UsuarioActual.Empresa.Funcionalidad(147)) Then GvProductoCaducidad.Columns(4).HeaderText = UsuarioActual.Empresa.Funcionalidad(147) End If ObjInventarios.Dispose() GvProductoCaducidad.DataBind() End Sub #End Region #Region " IMPRIMIR " Protected Sub LnkExportar_Click(sender As Object, e As EventArgs) Handles LnkExportar.Click 'Imprimir("Excel") GenerarPDF("Excel") End Sub Private Sub Imprimir(Optional reporte As String = "PDF") Dim DtKardex As DataTable = Nothing If ddlProducto2.SelectedValue.ToEntero > 0 Then DtKardex = CargarKardex(ddlProducto2.SelectedValue.ToEntero) If (Not IsNothing(DtKardex)) Then Dim params As New List(Of ReportParameter) If IO.File.Exists(String.Format("{0}/Formatos/Kardex.rdlc", UsuarioActual.Empresa.Ruta)) Then ImprimirPDF(String.Format("Empresas/{0}/Formatos/Kardex.rdlc", UsuarioActual.CveEmpresa), DtKardex, params, "ReporteKardex", reporte) Else ImprimirPDF("Empresas/Grales/Formatos/Kardex.rdlc", DtKardex, params, "Reporte Kardex", reporte) End If DtKardex.Dispose() End If Else Alert("No hay informacion cargada", TipoMensaje.MsgAdvertencia) End If End Sub Private Sub ImgImprimir_Click(sender As Object, e As EventArgs) Handles ImgImprimir.Click GenerarPDF() End Sub Private Sub GenerarPDF(Optional Formato As String = "PDF") If GvM.Rows.Count > 0 Then If ddlProducto2.SelectedValue.ToEntero > 0 Then Dim CvePS As Integer = ddlProducto2.SelectedValue.ToEntero Dim Entrada As Boolean = cbEntrada.Checked Dim Salida As Boolean = cbSalida.Checked Dim FechaI As String = If(TxtFechaI.Text <> "" AndAlso TxtFechaI.Text <> "__/__/____", TxtFechaI.Text, "-1") Dim FechaF As String = If(TxtFechaF.Text <> "" AndAlso TxtFechaF.Text <> "__/__/____", TxtFechaF.Text, "-1") Dim CveAlmacen As Integer = If(ddlAlmacen.SelectedValue.ToEntero = 0, -1, ddlAlmacen.SelectedValue.ToEntero) Dim Almacenes As String = ddlAlmacen.GetSelectedText() Dim CveAlmacenes As String = ddlAlmacen.GetSelectedValues() If CveAlmacenes.Contains(",") Then CveAlmacen = -2 End If Dim Almacen As String If CveAlmacen = -1 Then Almacen = "" ElseIf CveAlmacen = -2 Then Almacen = $" Almacén: {Almacenes}" CveAlmacen = -1 Else Almacen = $" Almacén: {ddlAlmacen.SelectedItem.Text}" End If Dim UM = If(DdlUnidadMedida.SelectedValue = "-1", "", $" Unidad de Medida: {DdlUnidadMedida.SelectedItem.Text}") Dim FechaIn As String = If(TxtFechaI.Text = "", "", $" Fecha Inicio: {TxtFechaI.Text}") Dim FechaFn As String = If(TxtFechaF.Text = "", "", $" Fecha Fin: {TxtFechaF.Text}") Dim EntradaSalida As String = "" If cbEntrada.Checked And cbSalida.Checked Then EntradaSalida = " Entradas y Salidas" ElseIf cbEntrada.Checked And cbSalida.Checked = False Then EntradaSalida = " Solo Entradas" ElseIf cbEntrada.Checked = False And cbSalida.Checked Then EntradaSalida = " Solo Salidas" End If Dim CveTiposAlmacen = "" For Each item As ListItem In CBLTiposAlmacen.Items CveTiposAlmacen += If(item.Selected, $"{item.Value},", "") Next Dim Serie As String = If(TxtSerie.Text <> "", TxtSerie.Text, "-1") Dim SerieAgrupado As String = If(TxtSerie.Text = "", "", $"Existencia y costos calculada por numero de serie: {TxtSerie.Text} ") Dim dt As DataTable = Nothing Using ObjInv As New ClsInventarios If ObjInv.GetKardex(Entrada, Salida, CvePS, FechaI, FechaF, CveAlmacen, CveTiposAlmacen.Substring(0, CveTiposAlmacen.Length - 1), DdlUnidadMedida.SelectedValue.ToEntero, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, ChkAgruparAlmacen.Checked, Serie, CveAlmacenes) Then dt = ObjInv.DtResultados.Copy() Else Alert("No hay datos consultados", TipoMensaje.MsgAdvertencia) End If End Using If dt IsNot Nothing Then Dim Imagen As New System.IO.FileInfo($"{UsuarioActual.Empresa.Ruta}/Logo.png") Dim logouri = String.Format("{0}://{1}:{2}/Empresas/{3}/Logo.png", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, UsuarioActual.CveEmpresa) Dim params As New List(Of ReportParameter) params.Add(New ReportParameter("NombreEmpresa", UsuarioActual.Empresa.Empresa)) params.Add(New ReportParameter("FechaInicio", FechaI)) params.Add(New ReportParameter("FechaFin", FechaF)) params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Nombre)) params.Add(New ReportParameter("FechaImpresion", NowADS().ToDateTime.ToShortDateString)) params.Add(New ReportParameter("Producto", ddlProducto2.SelectedText)) params.Add(New ReportParameter("AgrupadoPor", $"Agrupado Por: {SerieAgrupado}{EntradaSalida}{Almacen}{UM}{FechaIn}{FechaFn}")) params.Add(New ReportParameter("LogoPath", If(Imagen.Exists, $"file://{Imagen.FullName}", ""))) params.Add(New ReportParameter("OcultarImportes", UsuarioActual.TienePermisoProceso(201).ToString)) ImprimirPDF("Empresas/Grales/Formatos/RepKardex.rdlc", dt, params, "ReporteKardex", Formato) End If Else Alert("Debes seleccionar un Producto/Servicio", TipoMensaje.MsgAdvertencia) End If Else Alert("No hay informacion cargada", TipoMensaje.MsgAdvertencia) End If End Sub #End Region #Region "EDITAR FECHA" Protected Sub LnkEditarFecha_Click(sender As Object, e As EventArgs) Dim gvRow As GridViewRow = DirectCast((DirectCast(sender, LinkButton)).NamingContainer, GridViewRow) CveMovimiento = gvRow.DataKey("CveMovimiento").ToEntero TxtFecha.Text = gvRow.DataKey("FechaMovto").ToDateTime.ToString("yyyy-MM-dd HH:mm:ss").Replace(" ", "T") RegistraScript("$('#DModalEditarFecha').modal()") UpModalEditarFecha.Update() End Sub Protected Sub BtnEditarFecha_Click(sender As Object, e As EventArgs) Dim ObjMov As New ClsMovimientos If ObjMov.UpdateMovimientoFecha(TxtFecha.Text.ToDateTime, CveMovimiento) Then Alert("Actualizada correctamente a : " + TxtFecha.Text.ToDateTime.ToString("yyyy-MM-dd HH:mm")) RegistraScript("$('#DModalEditarFecha').modal('hide')") CargaDatos() UPDatos.Update() End If ObjMov.Dispose() End Sub #End Region #Region "Acciones" Protected Sub LnkSeries_OnClick(sender As Object, e As EventArgs) Handles LnkSeries.Click CargarExistenciasProductosSeries() UpGridSeries.Update() RegistraScript(String.Format("$('#{0}').modal('show');", "DivModalSerie")) End Sub Protected Sub LnkCaducidad_OnClick(sender As Object, e As EventArgs) Handles LnkCaducidad.Click CargarCaducidadProducto() UpProductoCaducidad.Update() RegistraScript(String.Format("$('#{0}').modal('show');", "DivModalCaducidad")) For Each dt As GridViewRow In GvProductoCaducidad.Rows If GvProductoCaducidad.Rows.Count > 0 Then If dt.DataKey("FechaCaducidad").ToString <> "" Or dt.DataKey("Lote").ToString <> "" Then DivImprimir.Visible = True End If End If Next End Sub Protected Sub LnkExistenciasPorCapas_OnClick(sender As Object, e As EventArgs) Handles LnkExistenciasPorCapas.Click Dim FechaI As DateTime = If(TxtFechaI.Text <> "" AndAlso TxtFechaI.Text <> "__/__/____", TxtFechaI.Text.ToDateTime(), MinFecha) Dim FechaF As DateTime = If(TxtFechaF.Text <> "" AndAlso TxtFechaF.Text <> "__/__/____", TxtFechaF.Text.ToDateTime(), MaxFecha) Dim almacenes = ddlAlmacen.GetSelectedValues() If String.IsNullOrEmpty(almacenes) Then almacenes = "-1" End If Using ObjInv As New ClsInventarios If ObjInv.GetInvExistenciasCapas(ddlProducto2.SelectedValue.ToEntero(), FechaI, FechaF, UsuarioActual.CveEmpresa, almacenes) Then GvExistenciasCapas.DataSource = ObjInv.DtResultados End If End Using GvExistenciasCapas.DataBind() UpExistenciasCapas.Update() RegistraScript(String.Format("$('#{0}').modal('show');", "DivModalExistenciasCapas")) End Sub Protected Sub GvExistenciasCapas_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvExistenciasCapas.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then If e.Row.DBCampo("CodigoPS").Contains("Total") Then e.Row.CssClass = "Totales" End If End If End Sub #End Region Protected Sub LnkPSAntyerior_Click(sender As Object, e As EventArgs) NavegacionPS(Siguiente:=False) End Sub Protected Sub LnkPSSiguiente_Click(sender As Object, e As EventArgs) NavegacionPS(Siguiente:=True) End Sub Private Sub NavegacionPS(Siguiente As Boolean) Dim CvePS As Integer = ddlProducto2.SelectedValue.ToEntero If Not CvePS > 0 Then CvePS = ObtenerInicioPSNavegacion(Siguiente:=Siguiente) If Not CvePS > 0 Then Exit Sub End If End If Dim dt As DataTable = New DataTable Dim Entrada As Boolean = cbEntrada.Checked Dim Salida As Boolean = cbSalida.Checked Dim FechaI As String = If(TxtFechaI.Text <> "" AndAlso TxtFechaI.Text <> "__/__/____", TxtFechaI.Text, "-1") Dim FechaF As String = If(TxtFechaF.Text <> "" AndAlso TxtFechaF.Text <> "__/__/____", TxtFechaF.Text, "-1") Dim CveAlmacen As Integer = If(ddlAlmacen.SelectedValue.ToEntero = 0, -1, ddlAlmacen.SelectedValue.ToEntero) Dim CveAlmacenes As String = ddlAlmacen.GetSelectedValues() If CveAlmacenes.Contains(",") Then CveAlmacen = -1 End If If CvePS > 0 Then Dim dr As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePS).FiltroPrimero("") If dr IsNot Nothing Then ddlProducto2.SelectedText = dr("PSCodigo").ToString ddlProducto2.SelectedValue = CvePS.ToString End If End If Dim CveTiposAlmacen As String = "" For Each item As ListItem In CBLTiposAlmacen.Items CveTiposAlmacen += If(item.Selected, $"{item.Value},", "") Next Dim CodigoInicio As String = If(TxtCodigoInicio.Text.Trim.Length = 0, "-1", TxtCodigoInicio.Text.Trim) Dim CodigoFin As String = If(TxtCodigoFinal.Text.Trim.Length = 0, "-1", TxtCodigoFinal.Text.Trim) Dim ObjInventarios As New ClsInventarios If ObjInventarios.GetKardexPSNavegacion(Entrada, Salida, CvePS, FechaI, FechaF, CveAlmacen, CveTiposAlmacen.Substring(0, CveTiposAlmacen.Length - 1), DdlUnidadMedida.SelectedValue.ToEntero, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveAlmacenes, Siguiente:=Siguiente, CodigoInicio:=CodigoInicio, CodigoFin:=CodigoFin, CveMarca:=DdlMarca.SelectedValue.ToEntero, CveProveedor:=DdlProveedores.SelectedValue.ToEntero) Then dt = ObjInventarios.DtResultados.Copy End If ObjInventarios.Dispose() If dt IsNot Nothing AndAlso dt.Rows.Count > 0 Then ddlProducto2.SelectedValue = dt.Rows(0)("CvePS").ToString ddlProducto2.SelectedText = dt.Rows(0)("CodigoPS").ToString ddlProducto2.txtValue.Value = dt.Rows(0)("CvePS").ToString ddlProducto2.txtText.Value = dt.Rows(0)("CodigoPS").ToString CargaDatos() UPFiltros.Update() UPDatos.Update() End If End Sub Private Function ObtenerInicioPSNavegacion(Siguiente As Boolean) As Integer Dim CvePSRespuesta As Integer = -1 Dim dt As DataTable = New DataTable If Siguiente Then If TxtCodigoInicio.Text.Trim.Length > 0 Then dt = GlobalDTPS(UsuarioActual.CveEmpresa, Codigo:=TxtCodigoInicio.Text.Trim) End If Else If TxtCodigoFinal.Text.Trim.Length > 0 Then dt = GlobalDTPS(UsuarioActual.CveEmpresa, Codigo:=TxtCodigoFinal.Text.Trim) End If End If If dt IsNot Nothing AndAlso dt.Rows.Count > 0 Then CvePSRespuesta = dt.Rows(0)("CvePS").ToString.ToEntero ddlProducto2.SelectedValue = dt.Rows(0)("CvePS").ToString ddlProducto2.SelectedText = dt.Rows(0)("CodigoPS").ToString ddlProducto2.txtValue.Value = dt.Rows(0)("CvePS").ToString ddlProducto2.txtText.Value = dt.Rows(0)("CodigoPS").ToString CargaDatos() UPFiltros.Update() UPDatos.Update() End If Return CvePSRespuesta End Function Protected Sub LnkIndicador_OC_Click(sender As Object, e As EventArgs) UpModalOC.Update() RegistraScript(String.Format("$('#{0}').modal('show');", "ModalOC")) End Sub Protected Sub LnkCancelarOCDetalle_Click(sender As Object, e As EventArgs) Dim GvRow As GridViewRow = DirectCast(DirectCast(sender, LinkButton).BindingContainer, GridViewRow) Dim CveOrdenCompraDetalle As Integer = GvRow.DataKey("CveOrdenCompraDetalle").ToEntero Dim NuevaCantidad As Decimal = GvRow.DataKey("CantidadPendienteVincular").ToDecimal If CveOrdenCompraDetalle <= 0 Then Exit Sub End If Dim ObjOC As New ClsOC If ObjOC.CancelarPartidaPendiente(CveOrdenCompraDetalle, NuevaCantidad, UsuarioActual.CveEmpresa) Then CargarOCPendientesCompra() Alert("La partida se cancelo correctamente.") End If ObjOC.Dispose() UpIndicadores.Update() #Region " K P I V E R C O M P O R T A M I E N T O " #End Region End Sub Protected Sub LnkKPIVerComportamiento_Click(sender As Object, e As EventArgs) CargaDatosKPIVerCoportamiento() RegistraScript("$('#DVKPIComportamiento').modal('show');") End Sub Private Sub CargaDatosKPIVerCoportamiento() If ddlProducto2.SelectedValue.ToEntero <= 0 Then Alert("No hay un producto seleccionado.", TipoMensaje.MsgAdvertencia) Exit Sub End If Dim ObjInvetarios As New ClsInventarios Dim FechaInicio As New Date(Now.Year, 1, 1) Dim FechaFin As New Date(Now.Year, 12, 31) Dim CveAlmacenes As String = ddlAlmacen.GetSelectedValues() If ObjInvetarios.GetVerComportamiento(ddlProducto2.SelectedValue.ToEntero, FechaInicio, FechaFin, UsuarioActual.CveEmpresa, CveAlmacenes) Then GVComportamiento.DataSource = ObjInvetarios.DtResultados End If ObjInvetarios.Dispose() GVComportamiento.DataBind() UpModalComporatmiento.Update() End Sub Protected Sub ddlProducto2_selectedindexchange(sender As Object, e As EventArgs) LnkKPIVerComportamiento.Visible = False If ddlProducto2.SelectedValue.ToEntero > 0 And UsuarioActual.CveRol = 1 Then LnkKPIVerComportamiento.Visible = True End If UpAcciones.Update() End Sub End Class