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