Option Explicit On Option Strict On Imports System.Data Imports System.IO Imports Extensiones Partial Class Inventarios_EntradasSalidas Inherits ClsPaginas #Region "Propiedades" Private _dtDatos As DataTable Private Property NumRow As Integer Public Property DtMovimientos() As DataTable Get Return CType(ViewState("DtMovimientos"), DataTable) End Get Set(value As DataTable) ViewState("DtMovimientos") = value End Set End Property Public Property DtMovimientosEntradaInvFisico() As DataTable Get Return CType(ViewState("DtMovimientosEntradaInvFisico"), DataTable) End Get Set(value As DataTable) ViewState("DtMovimientosEntradaInvFisico") = value End Set End Property Public Property DtMovimientosSalidaInvFisico() As DataTable Get Return CType(ViewState("DtMovimientosSalidaInvFisico"), DataTable) End Get Set(value As DataTable) ViewState("DtMovimientosSalidaInvFisico") = value End Set End Property Public Property DtMovimientosEntradaCambioVigencias() As DataTable Get Return CType(ViewState("DtMovimientosEntradaCambioVigencias"), DataTable) End Get Set(value As DataTable) ViewState("DtMovimientosEntradaCambioVigencias") = value End Set End Property Public Property DtMovimientosCambioVigencias() As DataTable Get Return CType(ViewState("DtMovimientosCambioVigencias"), DataTable) End Get Set(value As DataTable) ViewState("DtMovimientosCambioVigencias") = value End Set End Property Public Property CveMovimiento() As Integer Get Return ViewState("CveMovimiento").ToString.ToEntero End Get Set(value As Integer) ViewState("CveMovimiento") = value End Set End Property Private Property DtMov As DataTable Get Return CType(ViewState("DtMov"), DataTable) End Get Set(value As DataTable) ViewState("DtMov") = value End Set End Property Public Property CveCompra() As Integer Get Return ViewState("CveCompra").ToString.ToEntero End Get Set(value As Integer) ViewState("CveCompra") = value End Set End Property Public Property CveConcepto() As Integer Get Return ViewState("CveConcepto").ToString.ToEntero End Get Set(value As Integer) ViewState("CveConcepto") = value End Set End Property Public Property Folio() As Integer Get Return ViewState("Folio").ToString.ToEntero End Get Set(value As Integer) ViewState("Folio") = value End Set End Property Public Property CveMovimientoRelacionado As Integer Get Return ViewState("CveMovimientoRelacionado").ToString.ToEntero End Get Set(value As Integer) ViewState("CveMovimientoRelacionado") = value End Set End Property Public Property ConceptoRelacionado As String Get Return ViewState("ConceptoRelacionado").ToString End Get Set(value As String) ViewState("ConceptoRelacionado") = value End Set End Property Public Property FolioRelacionado As Integer Get Return ViewState("FolioRelacionado").ToString.ToEntero End Get Set(value As Integer) ViewState("FolioRelacionado") = value End Set End Property Public Property TieneRelacionado As Integer Get Return ViewState("TieneRelacionado").ToString.ToEntero End Get Set(value As Integer) ViewState("TieneRelacionado") = value End Set End Property Public Property EstatusAlmacenCompra As Integer Get Return ViewState("EstatusAlmacenCompra").ToString.ToEntero End Get Set(value As Integer) ViewState("EstatusAlmacenCompra") = value End Set End Property Public Property TieneSalida As Boolean Get Return CBool(ViewState("TieneSalida").ToString) End Get Set(value As Boolean) ViewState("TieneSalida") = value End Set End Property Private Property DtBitacora As DataTable Get Return CType(ViewState("DtBitacora"), DataTable) End Get Set(value As DataTable) ViewState("DtBitacora") = value End Set End Property Private Property CvePSSerieLote As Integer Get Return CType(ViewState("CvePSSerieLote"), Integer) End Get Set(value As Integer) ViewState("CvePSSerieLote") = value End Set End Property Private Property PSSerieLote As String Get Return CType(ViewState("PSSerieLote"), String) End Get Set(value As String) ViewState("PSSerieLote") = value End Set End Property Private Property CveUMSerieLote As Integer Get Return CType(ViewState("CveUMSerieLote"), Integer) End Get Set(value As Integer) ViewState("CveUMSerieLote") = value End Set End Property Private Property UMSerieLote As String Get Return CType(ViewState("UMSerieLote"), String) End Get Set(value As String) ViewState("UMSerieLote") = value End Set End Property Private Property CostoPromedioSerieLote As Decimal Get Return CType(ViewState("CostoPromedioSerieLote"), Decimal) End Get Set(value As Decimal) ViewState("CostoPromedioSerieLote") = value End Set End Property Public Property EsConsumoInterno As Boolean Get Return CBool(ViewState("EsConsumoInterno").ToString) End Get Set(value As Boolean) ViewState("EsConsumoInterno") = value End Set End Property Private Property FolioAsignado As Integer Get Return CType(ViewState("FolioAsignado"), Integer) End Get Set(value As Integer) ViewState("FolioAsignado") = value End Set End Property Public Property EsNuevoMov As Boolean Get Return CBool(ViewState("EsNuevoMov").ToString) End Get Set(value As Boolean) ViewState("EsNuevoMov") = value End Set End Property Private Property IndexSeccionAlmacen As Integer Get Return CType(ViewState("IndexSeccionAlmacen"), Integer) End Get Set(value As Integer) ViewState("IndexSeccionAlmacen") = value End Set End Property Private Property CantidadTotal As Decimal Get Return CType(ViewState("CantidadTotal"), Decimal) End Get Set(value As Decimal) ViewState("CantidadTotal") = value End Set End Property Private Property CvePS As Integer Get Return CType(ViewState("CvePS"), Integer) End Get Set(value As Integer) ViewState("CvePS") = value End Set End Property Private Property Tipo As Integer Get Return CType(ViewState("Tipo"), Integer) End Get Set(value As Integer) ViewState("Tipo") = value End Set End Property Private Property CvePrePoliza As Integer Get Return CType(ViewState("CvePrePoliza"), Integer) End Get Set(value As Integer) ViewState("CvePrePoliza") = value End Set End Property Private Property DescripcionDetalladaEliminar As String Get Return CType(ViewState("DescripcionDetalladaEliminar"), String) End Get Set(value As String) ViewState("DescripcionDetalladaEliminar") = value End Set End Property Public Property CveMovimientoDetalleEdit() As Integer Get Return IfNull(ViewState("CveMovimientoDetalleEdit"), 0).ToString.ToEntero End Get Set(value As Integer) ViewState("CveMovimientoDetalleEdit") = value End Set End Property Public Property CveAFEdit() As Integer Get Return ViewState("CveAFEdit").ToString.ToEntero End Get Set(value As Integer) ViewState("CveAFEdit") = value End Set End Property Public Property AplicaVigenciaCambioVigencia() As Boolean Get If ViewState("CveAFEdit") Is Nothing Then ViewState("CveAFEdit") = False End If Return Boolean.Parse(ViewState("CveAFEdit").ToString) End Get Set(value As Boolean) ViewState("CveAFEdit") = value End Set End Property Public Property CveTipoAlmacenSeleccionado As Integer Get Return IfNull(ViewState("CveTipoAlmacenSeleccionado"), -1).ToString.ToEntero End Get Set(value As Integer) ViewState("CveTipoAlmacenSeleccionado") = value End Set End Property Property RequiereRemolque As Boolean Get If ViewState("RequiereRemolque") Is Nothing Then ViewState("RequiereRemolque") = False End If Return Boolean.Parse(ViewState("RequiereRemolque").ToString) End Get Set(value As Boolean) ViewState("RequiereRemolque") = value End Set End Property Property MostrarRemolques As Boolean Get If ViewState("MostrarRemolques") Is Nothing Then ViewState("MostrarRemolques") = False End If Return Boolean.Parse(ViewState("MostrarRemolques").ToString) End Get Set(value As Boolean) ViewState("MostrarRemolques") = value End Set End Property Private Property CveMovimientoTimbrado As Integer Get Return CType(ViewState("CveMovimientoTimbrado"), Integer) End Get Set(value As Integer) ViewState("CveMovimientoTimbrado") = value End Set End Property Property EsApoyoLogistico As Boolean Get If ViewState("EsApoyoLogistico") Is Nothing Then ViewState("EsApoyoLogistico") = False End If Return Boolean.Parse(ViewState("EsApoyoLogistico").ToString) End Get Set(value As Boolean) ViewState("EsApoyoLogistico") = 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.CveUsuario = 100 AndAlso IfNull(Request("Regenera"), "").ToString = "1" Then RegeneraRM(Request("CveMovimiento").ToString.ToEntero, 119) Exit Sub End If If IfNull(Request("AL"), "").ToString = "1" Then DivEmitirTransitorio.Visible = True EsApoyoLogistico = True End If CveMovimiento = -1 CveMovimientoRelacionado = -1 TieneRelacionado = -1 TieneSalida = False EstatusAlmacenCompra = -1 EsConsumoInterno = False EsNuevoMov = False CvePrePoliza = -1 CreaDT() CargaCombos() TxtFecha.Text = Now.ToShortDateString TxtFechaInvFisico.Text = Now.ToShortDateString RVFecha.MaximumValue = Now.ToShortDateString If Not UsuarioActual.CveEmpresa = 48 Then TxtFecha.Enabled = False ImgFecha.Visible = False End If CantidadTotal = 0 IndexSeccionAlmacen = 0 Tipo = 0 'si viene una parámetro para cargar un movimiento lo hacemos dentro del procedimiento cargadatos Select Case UsuarioActual.Empresa.Funcionalidad(103) Case "1" Case "2" 'divMonedaSeccion.Visible = True divGuia.Visible = True End Select If Request("CveMovimiento") IsNot Nothing AndAlso Request("CveMovimiento").ToString.ToEntero > 0 Then CargaDatos(Request("CveMovimiento").ToString.ToEntero) 'CargaGvPaqueteria() Else AsignacionOpcion() SiguienteFolio() End If 'SI YA ES MOVIMIENTO REGISTRADO NO ESCONDE COLUMNA AF If CveMovimiento > 0 Then BloqueaEdicionEncabezado() If UsuarioActual.CveEmpresa.Contiene(66, 13) Then TrSubProyectoActivoFijo.Visible = True VisualizaAF(True) CargaSubProyectos() End If End If InicializaClientes() InicializaBitacoraTemporal() If UsuarioActual.Empresa.Funcionalidad(132) = "1" Then DivCodigoSeriePS.Visible = True End If If IfNull(Request("CI"), -1).ToString.ToEntero > 0 Then ActivaConsumoInterno() End If If Request("CveEntregaAlmacen") IsNot Nothing AndAlso Request("CveEntregaAlmacen").ToString.ToEntero > 0 Then CargaDatosEntregaAlmacen(Request("CveEntregaAlmacen").ToString.ToEntero) End If 'BLOQUEA PERMISOS BtnGuardar.Enabled = PermiteGuardar() BtnEliminar.Enabled = PermiteEliminar() BtnContabilizar.Enabled = PermiteContabilizar() BtnNuevo.Enabled = PermiteCrearNuevo() LnkCambioInventarioFisico.Visible = UsuarioActual.TienePermisoProceso(312) If CveMovimiento > 0 Then PermisoVerImportes() End If If UsuarioActual.Empresa.Funcionalidad(281).ToEntero = 1 Then TxtFecha.Enabled = False ImgFecha.Visible = False TxtFechaInvFisico.Enabled = False ImgFechaInvFisico.Visible = False UpGenerales.Update() UpModalInventarioFisico.Update() End If 'HABILITA EL CAMBIO DE VIGENCIAS If UsuarioActual.Empresa.Funcionalidad(531) = "1" Then LnkCambioVigencia.Visible = True End If If EsConsumoInterno AndAlso UsuarioActual.TienePermisoProceso(340) Then TxtFecha.Enabled = True ImgFecha.Visible = True End If End If End Sub #Region " PERMISOS PAGINAS " Private Function PermiteGuardar() As Boolean Return If(UsuarioActual.TienePermisoProceso(181) Or EsConsumoInterno, True, False) End Function ''' ''' Este permiso solo habilita el Btn del GV. Debe ir en conjunto con el permiso 181 [PermiteGuardar] ''' Private Function PermiteGuardarObservacionDetalle() As Boolean Return UsuarioActual.TienePermisoProceso(225) End Function Private Function PermiteEliminar() As Boolean Return If(UsuarioActual.TienePermisoProceso(182), True, False) End Function Private Function PermiteContabilizar() As Boolean Return If(UsuarioActual.TienePermisoProceso(183), True, False) End Function Private Function PermiteCrearNuevo() As Boolean Return If(UsuarioActual.TienePermisoProceso(184) Or EsConsumoInterno, True, False) End Function Private Sub PermisoVerImportes() Dim TienePermisoImportes As Boolean = UsuarioActual.TienePermisoProceso(201) ' tdPU.Visible = TienePermisoImportes ' tdTxtPU.Visible = TienePermisoImportes GvM.Columns(4).Visible = TienePermisoImportes ThTotal.Visible = TienePermisoImportes TdTotal.Visible = TienePermisoImportes GvM.Columns(5).Visible = TienePermisoImportes End Sub Private Sub CargaDdlPaqueteria() 'DdlPaqueteria.DataSource = GlobalDTPaqueterias 'DdlPaqueteria.DataBind() 'DdlPaqueteria.Items.Insert(0, New ListItem("Seleccione uno", "-1")) End Sub #End Region Sub AsignacionOpcion() DdlConcepto.SelectedValueExist("-1") If UsuarioActual.CveEmpresa.Contiene(66, 13) Then TrSubProyectoActivoFijo.Visible = True VisualizaAF(True) CargaSubProyectos() End If End Sub Private Function isWhitFamily() As Boolean Return (UsuarioActual.CveEmpresa = 66) End Function #Region " VALORES INICIALES " Protected Sub CreaDT() Dim dt As New DataTable Dim column As DataColumn = New DataColumn("No") column.DataType = Type.GetType("System.Int32") With column .AutoIncrement = True .AutoIncrementSeed = 1 .AutoIncrementStep = 1 End With 'dt.Columns.Add("No", Type.GetType("System.Int32")) dt.Columns.Add(column) dt.Columns.Add("CveMovimiento", Type.GetType("System.Int32")) dt.Columns.Add("CveMovimientoDetalle", Type.GetType("System.Int32")) dt.Columns.Add("Cantidad", Type.GetType("System.Double")) dt.Columns.Add("CveUM", Type.GetType("System.Int32")) dt.Columns.Add("UnidadMedida") dt.Columns.Add("CvePS", Type.GetType("System.Int32")) dt.Columns.Add("CodigoPS") dt.Columns.Add("Codigo") dt.Columns.Add("PS") dt.Columns.Add("PU", Type.GetType("System.Double")) dt.Columns.Add("PUExtranjero", Type.GetType("System.Double")) dt.Columns.Add("Total", Type.GetType("System.Double")) dt.Columns.Add("CveClasificacion", Type.GetType("System.Int32")) dt.Columns.Add("CveSeccionAlmacen", Type.GetType("System.Int32")) dt.Columns.Add("SeccionAlmacen") dt.Columns.Add("Estatus") dt.Columns.Add("CostoIndirecto", Type.GetType("System.Double")) dt.Columns.Add("CodigoAF") dt.Columns.Add("CveAF") dt.Columns.Add("Serie", Type.GetType("System.String")) dt.Columns.Add("Lote", Type.GetType("System.String")) dt.Columns.Add("FechaCaducidad", Type.GetType("System.DateTime")) dt.Columns.Add("AplicaCaducidad", Type.GetType("System.String")) dt.Columns.Add("Observaciones") dt.Columns.Add("CountMovimientoEntradaDetalle") dt.Columns.Add("TotalExtranjero", Type.GetType("System.Double")) dt.Columns.Add("CveCultivoCuadroDetalle", Type.GetType("System.Int32")) CargaGVM(dt) DtMovimientos = dt.Clone DtMovimientosEntradaInvFisico = dt.Clone DtMovimientosSalidaInvFisico = dt.Clone DtMovimientosCambioVigencias = dt.Clone DtMovimientosCambioVigencias.Columns.Add("CvePSVigencia", Type.GetType("System.Int32")) DtMovimientosCambioVigencias.Columns.Add("CodigoPSVigencia", Type.GetType("System.String")) DtMovimientosCambioVigencias.Columns.Add("CveUMVigencia", Type.GetType("System.Int32")) End Sub Private Sub CargaCombos() 'Llenar el dropdownlist de Secciones If UsuarioActual.CveEmpresa = 66 Then DdlClasificacion.DataSource = GlobalDTSubFamilias(UsuarioActual.CveEmpresa).FiltraParametros("", Orderby:="Clasificacion") Else Dim ObjClasificaciones As New ClsClasificaciones If ObjClasificaciones.GetClasificacionesExistencias(UsuarioActual.CveEmpresa) Then DdlClasificacion.DataSource = ObjClasificaciones.DtResultados End If ObjClasificaciones.Dispose() End If DdlClasificacion.DataBind() 'DdlSeccionAlmacen.DataSource = GlobalDTSeccionAlmacen(UsuarioActual.CveEmpresa, -1) 'DdlSeccionAlmacen.DataBind() DdlSeccionAlmacenEntrada.DataSource = GlobalDTSeccionAlmacen(UsuarioActual.CveEmpresa, -1) DdlSeccionAlmacenEntrada.DataBind() DdlSeccionAlmacenSalida.DataSource = GlobalDTSeccionAlmacen(UsuarioActual.CveEmpresa, -1) DdlSeccionAlmacenSalida.DataBind() 'Llenar el dropdownlist de monedas DdlMoneda.DataSource = GlobalDTMonedas DdlMoneda.DataBind() 'MOVIMIENTO DdlConcepto.DataSource = GlobalDTInvConceptos.FiltraParametros(IIf(UsuarioActual.CveEmpresa.Contiene(72, 80, 1), "CveConcepto NOT IN (4,5,10)", "CveConcepto NOT IN (1,2,4,5,8,9,10,12,26,27,29)").ToString) DdlConcepto.DataBind() 'FILTRO DdlCConcepto.DataSource = GlobalDTInvConceptos.FiltraParametros("CveConcepto NOT IN (4,5)") DdlCConcepto.DataBind() 'Llenar el dropdownlist de almacén If Not IfNull(Request("CI"), -1).ToString.ToEntero > 0 AndAlso Not IfNull(Request("CveEntregaAlmacen"), -1).ToString.ToEntero > 0 Then DdlAlmacen.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1).FiltraParametros("CveTipoAlmacen NOT IN (9,11)") 'GlobalDTAlmacen(UsuarioActual.CveEmpresa) 'ElseIf UsuarioActual.CveUsuario.Contiene(1) Then ' DdlAlmacen.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1).FiltraParametros("CveTipoAlmacen NOT IN (9,11) or CveAlmacen = 651e") 'GlobalDTAlmacen(UsuarioActual.CveEmpresa) End If If IfNull(Request("CI"), -1).ToString.ToEntero > 0 And UsuarioActual.Empresa.Funcionalidad(590) = "1" Then DdlAlmacen.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1).FiltraParametros("CveTipoAlmacen NOT IN (9,11)") End If If EsApoyoLogistico Then DdlAlmacen.Items.Clear() DdlAlmacen.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1).FiltraParametros("CveTipoAlmacen IN (27)") 'GlobalDTAlmacen(UsuarioActual.CveEmpresa) End If DdlAlmacenInventarioFisico.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1).FiltraParametros("CveTipoAlmacen NOT IN (9,11)") 'GlobalDTAlmacen(UsuarioActual.CveEmpresa) DdlAlmacenCambioVigencias.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1).FiltraParametros("CveTipoAlmacen NOT IN (9,11)") DdlAlmacen.Items.Insert(0, New ListItem("Seleccione", "-1")) DdlAlmacenInventarioFisico.Items.Insert(0, New ListItem("Seleccione", "-1")) DdlAlmacenCambioVigencias.Items.Insert(0, New ListItem("Seleccione", "-1")) DdlAlmacen.SelectedValue = "-1" DdlAlmacenInventarioFisico.SelectedValue = "-1" DdlAlmacenCambioVigencias.SelectedValue = "-1" DdlAlmacen.DataBind() DdlAlmacenInventarioFisico.DataBind() DdlAlmacenCambioVigencias.DataBind() If IsNothing(Request("CveMovimiento")) And IsNothing(Request("CveEntregaAlmacen")) Then DdlAlmacen.SelectedValueExist(UsuarioActual.CveAlmacen) DdlAlmacen_SelectedIndexChanged(DdlAlmacen, EventArgs.Empty) End If If DdlAlmacen.SelectedValue.ToEntero = -1 Then DdlConcepto.Items.Clear() DdlConcepto.Items.Insert(0, New ListItem("Seleccione", "-1")) End If CargaPS() ' CargaDdlPaqueteria() DdlChofer.DataSource = GlobalDTChoferes(UsuarioActual.CveEmpresa) DdlChofer.DataBind() DdlChofer.Items.Insert(0, New ListItem("Seleccione", "-1")) TxtFechaEntrega.Text = Now.ToShortDateString TxtFechaLlegada.Text = Now.ToShortDateString CargarCamiones() CargaClientesCarta() End Sub Private Sub CargaPS() DdlProducto2.setEsWebService(UsuarioActual.Empresa.Funcionalidad(105) = "1") DdlPS.setEsWebService(UsuarioActual.Empresa.Funcionalidad(105) = "1") DdlPSSalida.setEsWebService(UsuarioActual.Empresa.Funcionalidad(105) = "1") DdlPSCambioSalida.setEsWebService(UsuarioActual.Empresa.Funcionalidad(105) = "1") If UsuarioActual.CveEmpresa = 66 Then DdlProducto2.ddlWS.Attributes.Add("data-pagina", "Inventarios") End If If Not DdlProducto2.UsaWebService AndAlso CType(DdlProducto2.DataSource, DataTable) Is Nothing Then DdlProducto2.DataSource = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa).FiltraParametros("CveTipoPS = 2") DdlPS.DataSource = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa).FiltraParametros("CveTipoPS = 2") DdlPSSalida.DataSource = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa).FiltraParametros("CveTipoPS = 2") DdlPSCambioSalida.DataSource = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa).FiltraParametros("CveTipoPS = 2") DdlProducto2.DataBind() DdlPS.DataBind() DdlPSSalida.DataBind() DdlPSCambioSalida.DataBind() DdlProducto2.ddl.Items.Insert(0, New ListItem("Seleccione", "-1")) DdlPS.ddl.Items.Insert(0, New ListItem("Seleccione", "-1")) DdlPSSalida.ddl.Items.Insert(0, New ListItem("Seleccione", "-1")) DdlPSCambioSalida.ddl.Items.Insert(0, New ListItem("Seleccione", "-1")) End If End Sub Private Sub CargaSubProyectos() CargarCentrosDeCosto(Nothing, DdlSubProyecto, Nothing, LblSubProyecto) 'DdlSubProyecto.DataSource = If(UsuarioActual.Empresa.Funcionalidad(102) = "1" AndAlso Not UsuarioActual.TienePermisoProceso(110), GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa, -1, 1), GlobalDTSubProyectos(-1, -1, UsuarioActual.CveEmpresa, 1)) 'DdlSubProyecto.DataBind() 'DdlSubProyecto.Items.Insert(0, New ListItem("Seleccione", "-1")) End Sub Private Sub CargaPersonal() TrPersonal.Visible = True Dim dt As DataTable = Nothing Dim RH As New ClsRH If RH.GetPersonal(-1, UsuarioActual.CveEmpresa) Then dt = RH.DtResultados End If RH.Dispose() DdlPersonal.DataSource = dt DdlPersonal.DataBind() 'DdlSubProyecto.Items.Insert(0, New ListItem("Seleccione", "-1")) End Sub #End Region #Region " CARGA DATOS " Protected Sub BtnConsultar_Click(sender As Object, e As EventArgs) Handles BtnConsultar.Click GvM.EditIndex = -1 LimpiarMovimiento() CargaDatos(-1, DdlCConcepto.SelectedValue.ToEntero(), TxtCFolio.Text.ToEntero) End Sub Private Sub CargaDatos(tCveMovimiento As Integer, Optional pCveConcepto As Integer = -1, Optional pFolio As Integer = -1) Dim Mov As New ClsInventarios DtMovimientos.Clear() TieneSalida = False EstatusAlmacenCompra = -1 If UsuarioActual.CveEmpresa = 48 Then GvM.Columns(8).Visible = False End If If Mov.GetMovimientos(tCveMovimiento, pCveConcepto, pFolio, UsuarioActual.CveEmpresa) AndAlso Mov.DtResultados.Rows.Count = 1 Then CveMovimiento = Mov.CveMovimiento DtMov = Mov.DtResultados TxtFecha.Text = Mov.Fecha.ToShortDateString TxtHoraInicio.SelectedTime = Mov.Fecha EstatusAlmacenCompra = Mov.EstatusAlmacenCompra Folio = Mov.Folio Dim drM As DataRow = DtMov.Rows(0) If DtMov.Rows(0)("CveConcepto").ToString.ToEntero = 2 Then HplTraspaso.Visible = True HplTraspaso.NavigateUrl = $"/Inventarios/TraspasoAlmacen.aspx?CveEntrada={DtMov.Rows(0)("CveMovimiento").ToString}" End If 'DATOS DE REGISTRO DivRegistro.Visible = True LnkAgregarNuevoMov.Visible = True LblUsuarioRegistro.Text = Mov.NombreCapturo LblFechaRegistro.Text = Mov.FechaRegistro.ToShortDateString If DtMov.Rows(0)("CvePrePoliza").ToString.ToEntero > 0 Then HplPrePoliza.Visible = True HplPrePoliza.NavigateUrl = String.Format("/Contabilidad/RegPrePoliza.aspx?CvePrePoliza={0}", DtMov.Rows(0)("CvePrePoliza")) CvePrePoliza = DtMov.Rows(0)("CvePrePoliza").ToString.ToEntero Else If UsuarioActual.CveRol = 1 Then BtnGeneraPrepoliza.Visible = True End If End If If UsuarioActual.CveRol = 1 AndAlso UsuarioActual.CveEmpresa = 140 AndAlso Mov.CveMovimientoVirtual <= 0 Then LnkGenerarVirtual.Visible = True End If 'DATOS DE CONSIGNACION If DtMov.Rows(0)("SerieFolio").ToString.Length > 0 Then RowConsignacion.Visible = True 'LbConsignacion.Text = DtMov.Rows(0)("SerieFolio").ToString HLConsignacion.Text = DtMov.Rows(0)("SerieFolio").ToString HLConsignacion.NavigateUrl = String.Format("/Inventarios/Consignaciones.aspx?CveConsignacion={0}", DtMov.Rows(0)("CveConsignacion").ToString) End If 'TIPO CAMBIO If DtMov.Rows(0)("TipoCambio").ToString.Length > 0 Then RowTipoCambio.Visible = True LbTipoCambio.Text = DtMov.Rows(0)("TipoCambio").ToString End If Dim TMDsTR = DtMov.Rows(0)("CveMtoRel").ToString If TMDsTR.Length > 0 Then RowMtoRel.Visible = True lnkMtoRelacionado.NavigateUrl = "/Inventarios/EntradasSalidas.aspx?CveMovimiento=" & TMDsTR CveMovimientoRelacionado = TMDsTR.ToEntero End If If Mov.CveMovimientoVirtual > 0 Then DivMovtoVirtual.Visible = True HplMtoVirtual.NavigateUrl = "/Inventarios/EntradasSalidas.aspx?CveMovimiento=" & Mov.CveMovimientoVirtual HplMtoVirtual.Text = Mov.FolioVirtual.ToString End If If Mov.CveMovimientoTransitorio > 0 Then DivMovtoTransitorio.Visible = True HplMtoTransitorio.NavigateUrl = "/Inventarios/EntradasSalidas.aspx?CveMovimiento=" & Mov.CveMovimientoTransitorio HplMtoTransitorio.Text = Mov.FolioTransitorio.ToString End If If (DdlAlmacen.Items.FindByValue(Mov.CveAlmacen.ToString()) Is Nothing) Then Dim dr As DataRow = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveEstatus:=-1).FiltroPrimero(String.Format("CveAlmacen = {0}", Mov.CveAlmacen)) If dr IsNot Nothing Then DdlAlmacen.Items.Insert(0, New ListItem(dr("Almacen").ToString, dr("CveAlmacen").ToString)) ' lo genera Obj.SelectedValue = Valor.ToString DdlAlmacen.Enabled = False End If End If DdlAlmacen.SelectedValue = Mov.CveAlmacen.ToString DdlMoneda.SelectedValue = Mov.CveMoneda.ToString 'DATOS MONEDA EXTRANJERA DdlMonedaTC.SelectedValue = Mov.CveMoneda.ToString If DdlMonedaTC.SelectedValue.ToEntero = 2 Then DivTipoCambio.Visible = True TxtTipoCambio.Text = Mov.TipoCambio.ToString.FormatoNumero DdlMonedaTC_SelectedIndexChanged(DdlMonedaTC, EventArgs.Empty) DdlMonedaTC.Enabled = False TxtTipoCambio.Enabled = False VisualizaPUExtranjero(UsuarioActual.TienePermisoProceso(201)) Else DivTipoCambio.Visible = False VisualizaPUExtranjero(False) End If TxtGuia.Text = Mov.Guia TxtObservaciones.Text = Mov.Observaciones TxtResponsable.Text = Mov.Recibio If Mov.CveAlmacenDestino > 0 Then divDestino.Visible = True LtlAlmacenDestino.Text = Mov.AlmacenDestino If DtMov.Rows(0)("Origen").ToString = "1" Then LblDestino.Text = "Origen:" End If End If CveMovimientoRelacionado = Mov.CveMovimientoRelacionado FolioRelacionado = Mov.FolioRelacionado TieneRelacionado = Mov.TieneRelacionado ConceptoRelacionado = Mov.ConceptoRelacionado 'sino existe el movimiento If (DdlConcepto.Items.FindByValue(Mov.CveConcepto.ToString()) Is Nothing) Then Dim dr As DataRow = GlobalDTInvConceptos.FiltroPrimero(String.Format("CveConcepto = {0}", Mov.CveConcepto)) DdlConcepto.Items.Insert(0, New ListItem(dr("Concepto").ToString, dr("CveConcepto").ToString)) ' lo genera Obj.SelectedValue = Valor.ToString End If DdlConcepto.SelectedValue = Mov.CveConcepto.ToString ddlConcepto_SelectedIndexChanged(DdlConcepto, EventArgs.Empty) TxtFolio.Text = Mov.Folio.ToString HdnIdPoliza.Value = Mov.IDPoliza.ToString HplImprimir.Visible = True HplImprimir.NavigateUrl = String.Format("/Compras/PopUpVerFactura.aspx?P={0}", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimiento))) HplImprimirResumen.Visible = True HplImprimirResumen.NavigateUrl = String.Format("/Compras/PopUpVerFactura.aspx?P={0}", Encripta(String.Format("OP=Almr&CveMovimiento={0}", CveMovimiento))) CveCompra = Mov.CveCompra CveConcepto = Mov.CveConcepto If drM("CveEstatusTimbrado").ToString.ToEntero > 0 Then HplDescargaXml.Visible = True HplDescargaXml.NavigateUrl = String.Format("/Compras/PopUpVerFactura.aspx?P={0}", Encripta(String.Format("OP=DesXmlTra&CVEMOVIMIENTO={0}&EXT={1}&FOLIO={2}&TIPODOCTO={3}", CveMovimiento, "XML", drM("TimbreSerieFolio"), "Tra"))) If drM("AplicaCP").ToString = "True" Then HplCartaPorteTimbre.Visible = True HplCartaPorteTimbre.NavigateUrl = String.Format("/Compras/PopUpVerFactura.aspx?P={0}", Encripta(String.Format("OP=CARPOTIMBRE&CVEMOV={0}&CVETIMBRE={1}", CveMovimiento, drM("CveTimbre")))) Else HplDescargaPdf.Visible = True HplDescargaPdf.NavigateUrl = String.Format("/Compras/PopUpVerFactura.aspx?P={0}", Encripta(String.Format("OP=DesPdfTra&CVEMOVIMIENTO={0}&EXT={1}&FOLIO={2}&TIPODOCTO={3}&CVETIMBRE={4}", CveMovimiento, "PDF", drM("TimbreSerieFolio"), "Tra", drM("CveTimbre")))) HplCartaPorte.Visible = True HplCartaPorte.NavigateUrl = String.Format("/Compras/PopUpVerFactura.aspx?P={0}", Encripta(String.Format("OP=CARPO&CVEMOV={0}", CveMovimiento))) End If If UsuarioActual.CveRol = 1 Then LnkGenerarPDF.Visible = True End If End If If CveConcepto.Contiene(3, 8) Then LiLnkGuias.Visible = True End If If Mov.IDPoliza > 0 Then HplPoliza.Visible = True : HplPoliza.NavigateUrl = String.Format("/Contabilidad/RegPoliza.aspx?IdPoliza={0}", Mov.IDPoliza) If CveConcepto = 6 Or CveConcepto = 7 Then If Mov.DtResultados(0)("Nombre").ToString() <> "" Then LtTipo.Text = Mov.DtResultados(0)("Nombre").ToString() LblTipo.InnerText = "Cliente:" ElseIf Mov.DtResultados(0)("RazonSocial").ToString() <> "" Then LtTipo.Text = Mov.DtResultados(0)("RazonSocial").ToString() LblTipo.InnerText = "Proveedor:" Else LtTipo.Text = Mov.NombreCompleto LblTipo.InnerText = "Personal" End If TrTipoCargado.Visible = True TrPersonal.Visible = False End If If Mov.CveSubProyecto > 0 Then 'verifico si existe If (DdlSubProyecto.Items.FindByValue(Mov.CveSubProyecto.ToString()) Is Nothing) Then Dim dr As DataRow = GlobalDTSubProyectos(-1, CveSubProyecto:=Mov.CveSubProyecto, Estatus:=-1).FiltroPrimero("") DdlSubProyecto.Items.Insert(0, New ListItem(dr("SubProyecto").ToString, dr("CveSubProyecto").ToString)) ' lo genera Obj.SelectedValue = Valor.ToString End If DdlSubProyecto.SelectedValue = Mov.CveSubProyecto.ToString TrSubProyectoActivoFijo.Visible = True End If 'LblCodigo.Text = If(Mov.CodigoAF = 0, "-1", Mov.CodigoAF.ToString) 'HdnCveActivoFijo.Value = If(Mov.CveActivoFijo = 0, "-1", Mov.CveActivoFijo.ToString) If Mov.CveCompra > 0 Then HplCompra.Visible = True HplCompra.Text = DtMov.Rows(0)("SerieFolioCompra").ToString If UsuarioActual.TienePermisoProceso(201) Then HplCompra.NavigateUrl = String.Format("/Compras/Compras.aspx?CveCompra={0}", Mov.CveCompra) End If End If If Mov.CveVenta > 0 Then HplVenta.Visible = True HplVenta.Text = DtMov.Rows(0)("FolioVenta").ToString If UsuarioActual.TienePermisoProceso(201) Then HplVenta.NavigateUrl = String.Format("/Ventas/Ventas.aspx?CveVenta={0}", Mov.CveVenta) End If End If If Mov.CveOrdenCompraLiga > 0 Then HplOrdenCompra.Visible = True HdnCveOrdenCompra.Value = Mov.CveOrdenCompraLiga.ToString HplOrdenCompra.Text = DtMov.Rows(0)("FolioOC").ToString If UsuarioActual.TienePermisoProceso(201) Then HplOrdenCompra.NavigateUrl = String.Format("/OC/OC.aspx?OC={0}", Mov.CveOrdenCompraLiga) End If End If If Mov.IDPoliza = 0 AndAlso UsuarioActual.Empresa.UsaAC Then BtnContabilizar.Visible = PermiteContabilizar() Else BtnContabilizar.Visible = False End If VisualizaPU(True) If DtMov.Rows(0)("Remision").ToString.Length > 0 Then TxtRemision.Text = DtMov.Rows(0)("Remision").ToString DivRemision.Visible = True End If 'Carga Cliente y ClienteSucursal If Mov.CveCliente > 0 Then If DdlClientes.Items.FindByValue(Mov.CveCliente.ToString()) Is Nothing Then Dim dr As DataRow = GlobalDTCliente(UsuarioActual.CveEmpresa, CveCliente:=Mov.CveCliente, Estatus:=-1).FiltroPrimero("") If dr IsNot Nothing Then DdlClientes.Items.Insert(0, New ListItem(dr("NombreComercial").ToString, dr("CveCliente").ToString)) End If End If DivCliente.Visible = True DdlClientes.Enabled = False DdlClientes.SelectedValueExist(Mov.CveCliente.ToString) End If If Mov.CveVendedor > 0 Then LblVendedor.Text = GlobalDTVendedores(UsuarioActual.CveEmpresa).FiltroPrimeroValor("Vendedor", String.Format("CveVendedor = {0}", Mov.CveVendedor)) DivVendedor.Visible = True End If 'carga personal If Mov.CvePersonal > 0 Then DdlPersonal.DataSource = GlobalDTRHPersonal(UsuarioActual.CveEmpresa, CvePersonal:=Mov.CvePersonal) DdlPersonal.DataBind() DdlPersonal.SelectedValueExist(Mov.CvePersonal) DdlPersonal.Enabled = False TrPersonal.Visible = True End If If Mov.CveClienteSucursal > 0 Then CambiaCliente() 'INSERTA SUCURSAL If (DdlClientesSucursales.Items.FindByValue(Mov.CveClienteSucursal.ToString()) Is Nothing) Then Dim ObjCliente As New ClsClientes If ObjCliente.GetSucursales(Mov.CveCliente.ToString().ToEntero, Mov.CveClienteSucursal) Then Dim dr As DataRow = ObjCliente.DtResultados.FiltroPrimero(String.Format("CveClienteSucursal = {0}", Mov.CveClienteSucursal)) If dr IsNot Nothing Then DdlClientesSucursales.Items.Insert(0, New ListItem(dr("SucursalCliente").ToString, dr("CveClienteSucursal").ToString)) End If End If ObjCliente.Dispose() End If DdlClientesSucursales.Enabled = False DdlClientesSucursales.SelectedValueExist(Mov.CveClienteSucursal.ToString) End If 'DivDepartamentoEntrega.Visible = True 'TxtDepartamentoEntrega.Enabled = False 'TxtDepartamentoEntrega.Text = Mov.DepartamentoEntrega 'TxtPedidoContrato.Enabled = False 'TxtPedidoContrato.Text = Mov.PedidoContrato If Mov.CveProveedor > 0 Then DdlProveedor.DataSource = GlobalDTCompProveedores(UsuarioActual.CveEmpresa, Mov.CveProveedor) DdlProveedor.DataBind() DdlProveedor.SelectedValueExist(Mov.CveProveedor) DdlProveedor.Enabled = False TrProveedor.Visible = True End If 'cargar también los movimentos detalle If Mov.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) Then DtMovimientos = Mov.DtResultados DtMovimientos.Columns("No").AutoIncrement = True DtMovimientos.Columns("No").AutoIncrementSeed = DtMovimientos.Rows.Count + 1 DtMovimientos.Columns("No").AutoIncrementStep = 1 Dim keys(1) As DataColumn keys(0) = DtMovimientos.Columns("No") DtMovimientos.PrimaryKey = keys CargaGVM(DtMovimientos.FiltraParametros("Estatus <> 'E' ")) End If PermisoVerImportes() If IfNull(Request("Conta"), "0").ToString = "1" Then Contabilizar() End If Else Alert("Movimiento No encontrado", TipoMensaje.MsgError) TxtObservaciones.Text = "" TxtFolio.Text = "" BtnGuardar.Visible = False BtnEliminar.Visible = False BtnContabilizar.Visible = False DivRegistro.Visible = False DivTipoCambio.Visible = False CargaGVM(Nothing) GvM.Columns(8).Visible = False GvM.DataBind() CveMovimiento = 0 End If BtnGuardar.Visible = PermiteGuardar() If UsuarioActual.TienePermisoProceso(182) Then If TieneSalida Or TieneRelacionado > 0 Or EstatusAlmacenCompra = 2 Then DivMensaje.Visible = True BtnEliminar.Enabled = False BtnEliminar.Visible = False LtMensaje.Text = "El movimiento no se puede eliminar porque uno de sus conceptos ya tiene salida y/o el movimiento esta relacionado con otro." Else BtnEliminar.Visible = True BtnEliminar.Enabled = True If CveMovimientoRelacionado > 0 Then BtnEliminar.ToolTip = $"El movimiento esta relacionado con el Folio de {ConceptoRelacionado} No. {FolioRelacionado}

¿Esta seguro de eliminar los dos movimientos?" End If LtMensaje.Text = "" End If Else BtnEliminar.Visible = False End If 'BLOQUEA FECHA CUANDO YA SE TIENE POLIZA If HdnIdPoliza.Value.ToEntero > 0 And Not PermiteGuardar() Then TxtFecha.Enabled = False ImgFecha.Enabled = False Else TxtFecha.Enabled = True ImgFecha.Enabled = True TxtObservaciones.Enabled = True End If If CvePrePoliza > 0 Then Dim ObjContabilidad As New ClsContabilidad If ObjContabilidad.GetPrePoliza(CvePrePoliza, UsuarioActual.CveEmpresa) Then Dim dr As DataRow = ObjContabilidad.DtResultados.FiltroPrimero("") If dr IsNot Nothing Then If dr("IdPoliza").ToString.ToEntero > 0 Then BtnEliminar.Visible = False End If End If End If ObjContabilidad.Dispose() End If 'SI TIENE PREPOLIZA NO SE DEBE PODER EDITAR If Mov.TienePrePoliza > 0 Then '[IPP] Se invalida por necesidad de JAM de modificar fechas para cuadrar con CIFRA - 19Abril2018 'BtnGuardar.Visible = False End If If UsuarioActual.Empresa.Funcionalidad(281).ToEntero = 1 Then TxtFecha.Enabled = False ImgFecha.Visible = False TxtFechaInvFisico.Enabled = False ImgFechaInvFisico.Visible = False End If UpModalInventarioFisico.Update() BloqueaEdicionEncabezado() Mov.Dispose() UpGenerales.Update() UPDatos.Update() UppGrid.Update() UPEncabezado.Update() UpRegistroTipoCambio.Update() End Sub Private Sub CargaDatosEntregaAlmacen(CveEntregaAlmacen As Integer) 'RECARGA ALMACENES SOLO DE recepcion de usados DdlAlmacen.Items.Clear() DdlAlmacen.DataBind() Dim dttA As DataTable = Nothing dttA = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1).FiltraParametros("CveTipoAlmacen IN (1,22,27)") DdlAlmacen.DataSource = dttA DdlAlmacen.Items.Insert(0, New ListItem("Seleccione", "-1")) DdlAlmacen.DataBind() DdlAlmacen.SelectedIndex = 1 'toma el primer renglón Dim ObjGenerales As New ClsGenerales() If (ObjGenerales.GetEntregaAlmacenRutaDetalle(CveEntregaAlmacen)) Then For Each dr As DataRow In ObjGenerales.DtResultados.Rows AddNew(dr("CvePS").ToString.ToEntero, dr("CodigoPS").ToString, dr("CveUnidadMedida").ToString.ToEntero, dr("Abreviatura").ToString, dr("Cantidad").ToString.ToDecimal, 0, "", "", "", "", "E", "", MinFecha, 0, "") Next End If ObjGenerales.Dispose() End Sub Private Sub BloqueaEdicionEncabezado() DdlAlmacen.Enabled = True DdlConcepto.Enabled = True TxtFolio.Enabled = True TxtFecha.Enabled = True TxtResponsable.Enabled = True TxtObservaciones.Enabled = True DdlMoneda.Enabled = True TxtGuia.Enabled = True If CveMovimiento > 0 Then DdlAlmacen.Enabled = False DdlConcepto.Enabled = False TxtFolio.Enabled = False If Not PermiteGuardar() Then TxtFecha.Enabled = False TxtResponsable.Enabled = False TxtObservaciones.Enabled = False DdlMoneda.Enabled = False TxtGuia.Enabled = False End If UppGrid.Update() End Sub Private Sub CargaCodigoBarras() If DdlCConcepto.SelectedValue.ToEntero = 1 Then DivCodigoBarras.Visible = True End If End Sub #End Region #Region " BOTONES: ELIMINAR, NUEVO " Protected Sub BtnNuevo_Click(sender As Object, e As EventArgs) Handles BtnNuevo.Click 'Response.Redirect("EntradasSalidas.aspx") LimpiarMovimiento() BloqueaEdicionEncabezado() End Sub Private Sub LimpiarMovimiento() CveMovimiento = -1 SiguienteFolio() HplCompra.Visible = False HplPoliza.Visible = False HplVenta.Visible = False HplOrdenCompra.Visible = False TrTipoCargado.Visible = False TrPersonal.Visible = False DtMovimientos.Clear() GvM.EditIndex = -1 CargaGVM(DtMovimientos.FiltraParametros("Estatus <> 'E' ")) BtnGuardar.Visible = PermiteGuardar() BtnEliminar.Visible = False DivRegistro.Visible = False DivTipoCambio.Visible = False If Not DdlAlmacen.Items.Contains(New ListItem("Seleccione", "-1")) Then DdlAlmacen.Items.Add(New ListItem("Seleccione", "-1")) End If DdlAlmacen.SelectedValue = "-1" If Not EsConsumoInterno Then DdlAlmacen_SelectedIndexChanged(DdlAlmacen, EventArgs.Empty) End If DdlAlmacen.Enabled = True TxtResponsable.Text = "" TxtObservaciones.Text = "" TxtFecha.Text = Now.ToShortDateString LblUsuarioRegistro.Text = "" LblFechaRegistro.Text = "" HplCompra.Visible = False HplVenta.Visible = False HplPoliza.Visible = False HplOrdenCompra.Visible = False LimpiarAgregar() InicializaBitacoraTemporal() DtBitacora.Clear() CargaEventoBitacoraTemp() TxtRemision.Text = "" DivRemision.Visible = False UpRegistroTipoCambio.Update() UPDatos.Update() End Sub Private Sub LimpiarAgregar() DdlClasificacion.SelectedValue = "-1" txtCantidad.Text = "" TxtnLote.Text = "" TxtObservacionesdetalle.Text = "" End Sub Protected Sub BtnEliminar_Click(sender As Object, e As EventArgs) Handles BtnEliminar.Click RegistraScript("$('#divDescripcion').modal()") Dim Description As String = String.Format("Movimiento con Concepto: {0}, Almacen: {1}, Fecha: {2}, Folio: {3}, Usuario: {4}, Observaciones adicionales: {5}, Productos Información:
", DdlConcepto.SelectedItem, DdlAlmacen.SelectedItem, TxtFecha.Text, TxtFolio.Text, LblUsuarioRegistro.Text, TxtObservaciones.Text) For Each dr As DataRow In DtMovimientos.Rows Dim detalleDescripcion As String = String.Format("- Cant: {0}, PS: {1}, PU: {2}, UM: {3}
", dr("Cantidad").ToString.ToEntero, dr("CodigoPS"), dr("PU"), dr("UnidadMedida")) Description = String.Format("{0}{1}", Description, detalleDescripcion) Next DescripcionDetalladaEliminar = Description UpDescripcion.Update() 'Dim Inv As New ClsInventarios 'Inv.IniciaTransacSQL() 'Dim TieneError = False 'Dim ObjConta As ClsContPAQi = Nothing 'If UsuarioActual.Empresa.UsaContabilidad Or UsuarioActual.Empresa.UsaAC Then ' ObjConta = New ClsContPAQi(UsuarioActual.Empresa) ' ObjConta.IniciaTransacSQL() 'End If 'If Inv.MovimientoRemove(CveMovimiento, UsuarioActual.CveEmpresa) Then ' If HdnIdPoliza.Value.ToEntero > 0 Then ' If Not ObjConta.RemovePoliza(HdnIdPoliza.Value.ToEntero) Then ' TieneError = True ' End If ' End If 'Else ' TieneError = True 'End If 'If Not TieneError Then ' If ObjConta IsNot Nothing Then ObjConta.Commit() ' Inv.Commit() ' Alert("Movimientos Eliminado", TipoMensaje.MsgInformacion) ' LimpiarMovimiento() 'Else ' If ObjConta IsNot Nothing Then ObjConta.RollBack() ' Inv.RollBack() ' Alert("Ocurrió un error al eliminar el movimiento. Por favor vuelva a intetar.", TipoMensaje.MsgError) 'End If 'CveMovimiento = 0 'If ObjConta IsNot Nothing Then ObjConta.Dispose() 'Inv.Dispose() End Sub Private Sub BtnRemove_Click(sender As Object, e As EventArgs) Handles BtnRemove.Click Dim Borrar As Boolean = False If Not TxtDescripcion.Text = "" Then Dim Inv As New ClsInventarios Dim Conta As New ClsContabilidad(Inv.IniciaTransacSQL()) Dim ObjGral As New ClsGenerales(Inv.IniciaTransacSQL()) Dim TieneError = False Dim ObjConta As ClsContPAQi = Nothing If UsuarioActual.Empresa.TipoContabilidad = 2 AndAlso (UsuarioActual.Empresa.UsaContabilidad Or UsuarioActual.Empresa.UsaAC) Then ObjConta = New ClsContPAQi(UsuarioActual.Empresa) ObjConta.IniciaTransacSQL() End If If Not ObjGral.AddHistorialBitacora(Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, "", "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, 1, String.Format("{0}, Informacion = {1}", TxtDescripcion.Text, DescripcionDetalladaEliminar), "Inventarios", TxtFolio.Text + " / " + DdlConcepto.SelectedItem.Text) Then TieneError = True End If If Inv.MovimientoRemove(CveMovimiento, UsuarioActual.CveEmpresa, UsuarioActual.CveUsuario) Then If HdnIdPoliza.Value.ToEntero > 0 Then If Not ObjConta.RemovePoliza(HdnIdPoliza.Value.ToEntero) Then TieneError = True End If End If Else TieneError = True End If If Not TieneError Then If Not Conta.UpdatePrePolizasDetalleBloquear(CvePrePoliza, False) Then TieneError = True End If End If If Not TieneError Then If ObjConta IsNot Nothing Then ObjConta.Commit() Inv.Commit() Alert("Movimientos Eliminado", TipoMensaje.MsgInformacion) RegistraScript(String.Format("$('#{0}').modal('hide');", "divDescripcion")) LimpiarMovimiento() Else If ObjConta IsNot Nothing Then ObjConta.RollBack() Inv.RollBack() Alert("Ocurrió un error al eliminar el movimiento. Por favor vuelva a intentar.", TipoMensaje.MsgError) End If CveMovimiento = 0 If ObjConta IsNot Nothing Then ObjConta.Dispose() Inv.Dispose() ObjGral.Dispose() Conta.Dispose() End If End Sub #End Region #Region " AGREGAR - GUARDAR " Private Function GetExistencias(CvePS As Integer, CveUnidadMedida As Integer, CveEmpresa As Integer, CveAlmacen As Integer, Optional CveSeccionAlmacen As Integer = -1, Optional Serie As String = "-1", Optional Lote As String = "-1", Optional FechaCaducidad As Date = MinFecha) As Decimal Dim Inv As New ClsInventarios Dim Existencia As Decimal = Inv.GetExistenciasPS(CvePS, CveUnidadMedida, CveEmpresa, CveAlmacen, CveSeccionAlmacen:=CveSeccionAlmacen, FechaMovto:=String.Format("{0} {1}", TxtFecha.Text.ToDate.ToString("yyyy/MM/dd"), TxtHoraInicio.PostedTime), Serie:=Serie, Lote:=Lote, FechaCaducidad:=FechaCaducidad) Inv.Dispose() Return Existencia End Function 'Protected Sub btnAgregar_Click(sender As Object, e As EventArgs) Handles LbAgregar.Click ' AgregarPS() 'End Sub Protected Sub LkAgregarDetalle_Click(sender As Object, e As EventArgs) Handles LkAgregarDetalle.Click If CveMovimientoDetalleEdit > 0 Then ActualizarPS() Else AgregarPS() End If End Sub Protected Sub BtnSerieAddNew_Click(sender As Object, e As EventArgs) AgregarPS() End Sub Private Sub AgregarPS() Dim DrPS As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=DdlProducto2.SelectedValue.ToEntero).FiltroPrimero("") If ChkEmitirTimbrado.Checked AndAlso ChkEmitirCartaPorte.Checked Then If Not ValidaPSSAT(DrPS) Then Exit Sub End If End If If Not DdlProducto2.SelectedValue.ToEntero > 0 Then RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") Alert("Es necesario especificar el producto.", TipoMensaje.MsgAdvertencia) Exit Sub End If AddNew(DdlProducto2.SelectedValue.ToEntero, DdlProducto2.SelectedText, DdlUnidad.SelectedValue.ToEntero, DdlUnidad.SelectedItem.Text, txtCantidad.Text.ToDecimal, txtPrecio.Text.ToDecimal, TxtnSerie.Text.Replace(" ", String.Empty), LblCodigo.Text, HdnCodigoAF.Value, HdnCveActivoFijo.Value, TxtObservacionesdetalle.Text, TxtnLote.Text.Trim, TxtnFechaCaducidad.Text.ToDate, DdlSeccionAlmacen.SelectedValue.ToEntero, DdlSeccionAlmacen.SelectedItem.Text, CveCultivoCuadroDetalle:=DdlModalCultivosCuadro.SelectedValue.ToEntero) LimpiarAgregar() txtCantidad.Text = "" TxtnLote.Text = "" LblCodigo.Text = "" TxtnSerie.Text = "" TxtnLote.Text = "" TxtnFechaCaducidad.Text = "" HdnCodigoAF.Value = "-1" HdnCveActivoFijo.Value = "-1" DdlModalCultivosCuadro.SelectedValueExist(-1) RegistraScript("CodigoAF = "";") If Not UsuarioActual.Empresa.Funcionalidad(105).ToString = "1" Then DdlProducto2.SelectedValue = "-1" Else DdlProducto2.SelectedValue = "" DdlProducto2.SelectedText = "" End If txtCantidad.Focus() End Sub Protected Sub AddNew(CvePS As Integer, PS As String, CveUM As Integer, UM As String, Cantidad As Decimal, PU As Decimal, Serie As String, CodigoAF As String, Codigo As String, CveAF As String, Observaciones As String, Lote As String, FechaCaducidad As Date, CveSeccionAlmacen As Integer, SeccionAlmacen As String, Optional CargarGV As Boolean = True, Optional CveCultivoCuadroDetalle As Integer = -1) If DdlAlmacen.SelectedValue.ToEntero <= 0 Then Alert("Seleccione un almacen", TipoMensaje.MsgAdvertencia) : RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") : DdlProducto2.SelectedText = "" : Exit Sub Dim Valido As Boolean = True Dim RowPS As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS).Rows(0) Dim CveMetodoInventario As Integer = RowPS("Inv_CveMetodoInventario").ToString().ToEntero() Dim FechaCaducidadVal As Date = If(RowPS("AplicaCaducidad").ToString = "True", FechaCaducidad, MinFecha) If RowPS("AplicaSerie").ToString = "True" And (String.IsNullOrEmpty(Serie.Trim()) OrElse Serie = "-1") Then 'SI NO ES USADO O GARANTIA If Not Me.CveTipoAlmacenSeleccionado.Contiene(6, 22) Then Valido = False Alert("El producto requiere Serie", TipoMensaje.MsgAdvertencia) End If End If If RowPS("VentaMinima").ToString.ToDecimal > 0 Then If Cantidad Mod RowPS("VentaMinima").ToString().ToDecimal <> 0 Then Alert(String.Format("El producto se vende solo en cantidades de {0}", RowPS("VentaMinima").ToString())) Valido = False End If End If Dim tCveSubProyecto As Integer Dim drA2 As DataRow = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimero(String.Format("CveAlmacen = {0}", DdlAlmacen.SelectedValue)) If drA2 IsNot Nothing Then tCveSubProyecto = drA2("CveSubProyecto").ToString.ToEntero End If 'salida If Valido AndAlso DdlConcepto.SelectedValue.Contiene({"3", "5", "7", "8", "11", "12", "13", "15", "16", "17", "20", "21", "30", "31"}) Then ' salida de almacen Dim Existencia As Decimal = GetExistencias(CvePS, CveUM, UsuarioActual.CveEmpresa, DdlAlmacen.SelectedValue.ToEntero, -1, If(Serie = "", "-1", Serie), If(Lote = "", "-1", Lote), FechaCaducidadVal) ' LbAgregar.ToolTip = Existencia.ToString If Existencia - Cantidad - DtMovimientos.SUM("Cantidad", $"CvePS = {CvePS} AND CveUM = {CveUM} {If(Serie <> "", $" AND Serie = '{Serie}'", "")}") < 0 Then If Existencia <= 0 Then Alert("No hay existencia del producto", TipoMensaje.MsgAdvertencia) RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") Valido = False Else Alert(String.Format("Solo hay en existencia: {0}", Existencia), TipoMensaje.MsgAdvertencia) RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") If Not UsuarioActual.TienePermisoProceso(114) Then Cantidad = Existencia End If End If Valido = If(UsuarioActual.TienePermisoProceso(114), True, False) End If End If If Valido Then Dim CveClasificacion As Integer 'Dim dr As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS).FiltroPrimero("", "PS") If RowPS IsNot Nothing Then CveClasificacion = RowPS("CveClasificacion").ToString.ToEntero 'VALIDA QUE LA SERIE NO SEA IGUAL AL CODIGO O CODIGOBARRAS If Serie <> "" And (Serie.ToUpper = RowPS("Codigo").ToString.ToUpper Or Serie.ToUpper = RowPS("CodigoBarras").ToString.ToUpper) Then Alert($"La serie indicada {Serie} coincide con el codigo o codigo de barras del producto. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) Exit Sub End If If String.IsNullOrEmpty(PS.Trim()) Then PS = RowPS("PS").ToString() End If Dim registro As DataRow = DtMovimientos.NewRow registro.Item("Cantidad") = Cantidad registro.Item("CveUM") = CveUM registro.Item("UnidadMedida") = UM registro.Item("CvePS") = CvePS registro.Item("CodigoPS") = String.Format("{0} - {1}", Codigo, PS) registro.Item("PS") = PS registro.Item("PU") = PU 'registro.Item("PUExtranjero") = PU registro.Item("Total") = Cantidad * PU registro.Item("CveClasificacion") = CveClasificacion registro.Item("Estatus") = "" registro.Item("CveSeccionAlmacen") = CveSeccionAlmacen registro.Item("SeccionAlmacen") = SeccionAlmacen registro.Item("CodigoAF") = CodigoAF registro.Item("Codigo") = Codigo registro.Item("CveAF") = CveAF registro.Item("Serie") = If(Serie <> "", Serie, "") registro.Item("Lote") = If(Lote <> "", Lote, "") registro.Item("FechaCaducidad") = FechaCaducidad registro.Item("Observaciones") = Observaciones registro.Item("AplicaCaducidad") = RowPS("AplicaCaducidad").ToString registro.Item("CveCultivoCuadroDetalle") = CveCultivoCuadroDetalle DtMovimientos.Rows.Add(registro) If CargarGV Then CargaGVM(DtMovimientos.FiltraParametros("Estatus <> 'E' ")) RegistraScript("playsonidito('beep-07.wav')") End If End If End Sub Protected Sub BtnGuardar_Click(sender As Object, e As EventArgs) Handles BtnGuardar.Click If EsNuevoMov Then CveMovimiento = 0 End If If EsConsumoInterno And DdlPersonal.SelectedValue.ToEntero <= 0 Then Alert("El personal es requerido. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) Exit Sub End If If GvM.Rows.Count > 0 Then 'Dim CveMovimiento As Integer Dim ObjInventario As New ClsInventarios Dim ObjConta As New ClsContabilidad(ObjInventario.IniciaTransacSQL()) Dim ObjContaAC As ClsContPAQi = Nothing Dim ErrorMovInv As Boolean = False Dim ErrorAC As Boolean = False Dim IDPoliza As Integer = 0 Dim ImporteConcepto As Decimal = 0 Try 'Para Campos Nuevos AF y OC Dim SubProyecto = -1 Dim ActivoFijo = -1 If UsuarioActual.CveEmpresa = 66 AndAlso (DdlConcepto.SelectedValue.ToEntero = 3 Or DdlConcepto.SelectedValue.ToEntero = 11) Then SubProyecto = DdlSubProyecto.SelectedValue.ToEntero ActivoFijo = -1 'HdnCveActivoFijo.Value.ToEntero ElseIf UsuarioActual.CveEmpresa = 66 AndAlso Not CveMovimiento > 0 Then SubProyecto = -2 ActivoFijo = -2 End If 'Esto es parte de consumo interno If DdlActivoFijo.SelectedValue.ToEntero > 0 Then ActivoFijo = DdlActivoFijo.SelectedValue.ToEntero End If 'ACTUALIZAR If CveMovimiento > 0 Then Dim Mensaje As String = "" 'Actualiza Movimiento If Not ObjInventario.UpdateMovimiento(CveMovimiento, DdlAlmacen.SelectedValue.ToEntero, DdlConcepto.SelectedValue.ToEntero, 1, String.Format("{0} {1}", TxtFecha.Text.ToDate.ToString("yyyy/MM/dd"), TxtHoraInicio.PostedTime).ToDate, TxtFolio.Text.ToEntero, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, SubProyecto, ActivoFijo, Guia:=TxtGuia.Text, Observaciones:=TxtObservaciones.Text) Then Mensaje = "Error al Actualizar el Movimiento" ErrorMovInv = True End If If Not ErrorMovInv Then ' Actualizo los movimientos For Each Dr As DataRow In DtMovimientos.Rows 'Determina PU dependiendo MONEDA If DdlConcepto.SelectedValue.ToEntero = 2 AndAlso DdlMoneda.SelectedValue.ToEntero = 2 Then ImporteConcepto = Dr("PU").ToString.ToDecimal * GlobalTipoCambio(TxtFecha.Text.ToDate).ToDecimal Else ImporteConcepto = Dr("PU").ToString.ToDecimal End If 'Actualiza existentes If Dr("CveMovimientoDetalle").ToString.ToEntero > 0 Then 'cuando es normal If Dr("Estatus").ToString = "E" Then 'hay que eliminarlo If Not ObjInventario.RemoveMovimientoDetalle(Dr("CveMovimientoDetalle").ToString.ToEntero, Dr("CveMovimiento").ToString.ToEntero) Then ErrorMovInv = True End If ElseIf Dr("Estatus").ToString = "U" Then If Not ObjInventario.UpdateMovimientoDetalle(Dr("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, ImporteConcepto, Dr("CveAF").ToString.ToEntero, Dr("CveMovimientoDetalle").ToString.ToEntero, Dr("CveSeccionAlmacen").ToString.ToEntero, Dr("Serie").ToString, Dr("Observaciones").ToString, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then Mensaje = "Error al Actualizar los movimientos" ErrorMovInv = True : Exit For End If End If 'Agrega nuevos Else If GlobalDTInvConceptos.FiltraParametros(String.Format("CveConcepto = {0}", DdlConcepto.SelectedValue.ToEntero)).Rows.Count > 0 AndAlso GlobalDTInvConceptos.FiltraParametros(String.Format("CveConcepto = {0}", DdlConcepto.SelectedValue.ToEntero)).Rows(0)("Origen").ToString.ToEntero < 0 Then If ObjInventario.GetExistenciasPS(Dr("CvePS").ToString.ToEntero, Dr("CveUM").ToString.ToEntero, UsuarioActual.CveEmpresa, CveAlmacen:=DdlAlmacen.SelectedValue.ToEntero, FechaMovto:=String.Format("{0} {1}", TxtFecha.Text.ToDate.ToString("yyyy/MM/dd"), TxtHoraInicio.PostedTime), Serie:=If(Dr("Serie").ToString = "", "-1", Dr("Serie").ToString), Lote:=If(Dr("Lote").ToString = "", "-1", Dr("Lote").ToString)) >= Dr("Cantidad").ToString.ToDouble Then If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, Dr("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, ImporteConcepto, CveAF:=Dr("CveAF").ToString.ToEntero, CveSeccionAlmacen:=Dr("CveSeccionAlmacen").ToString.ToEntero, Serie:=Dr("Serie").ToString, Observaciones:=Dr("Observaciones").ToString, Lote:=Dr("Lote").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate, CveUsuarioModifico:=UsuarioActual.CveUsuario, CveCultivoCuadroDetalle:=Dr("CveCultivoCuadroDetalle").ToString.ToEntero) Then Mensaje = "Error al Agregar los nuevos movimientos" ErrorMovInv = True : Exit For End If Else If UsuarioActual.TienePermisoProceso(114) Then If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, Dr("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, ImporteConcepto, CveAF:=Dr("CveAF").ToString.ToEntero, CveSeccionAlmacen:=Dr("CveSeccionAlmacen").ToString.ToEntero, Serie:=Dr("Serie").ToString, Observaciones:=Dr("Observaciones").ToString, Lote:=Dr("Lote").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate, CveUsuarioModifico:=UsuarioActual.CveUsuario, CveCultivoCuadroDetalle:=Dr("CveCultivoCuadroDetalle").ToString.ToEntero) Then Mensaje = "Error al Agregar los nuevos movimientos" ErrorMovInv = True : Exit For End If Else Mensaje = String.Format("No hay existencias suficientes del producto: {0}", Dr("CodigoAF")) ErrorMovInv = True : Exit For End If End If Else If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, Dr("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, ImporteConcepto, CveAF:=Dr("CveAF").ToString.ToEntero, CveSeccionAlmacen:=Dr("CveSeccionAlmacen").ToString.ToEntero, Serie:=Dr("Serie").ToString, Observaciones:=Dr("Observaciones").ToString, Lote:=Dr("Lote").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate, CveUsuarioModifico:=UsuarioActual.CveUsuario, CveCultivoCuadroDetalle:=Dr("CveCultivoCuadroDetalle").ToString.ToEntero) Then Mensaje = "Error al Agregar los nuevos movimientos" ErrorMovInv = True : Exit For End If End If End If Next If UsuarioActual.Empresa.UsaAC AndAlso Not ErrorMovInv Then 'cargar también los movimentos detalle If ObjInventario.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) Then DtMovimientos = ObjInventario.DtResultados.FiltraParametros("", "CveMovimientoDetalle") End If Dim Importe As Double = DtMovimientos.SUM("Total", "Estatus IN ('','U')") IDPoliza = HdnIdPoliza.Value.ToEntero If Importe > 0 AndAlso IDPoliza > 0 Then Dim CuentaAbonoAlmacen, CuentaCargoCOG As Integer ObjContaAC = New ClsContPAQi(UsuarioActual.Empresa) ObjContaAC.IniciaTransacSQL() ObjContaAC.RemoveAllMovimientos(IDPoliza) Dim drA As DataRow = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimero(String.Format("CveAlmacen = {0}", DdlAlmacen.SelectedValue)) If drA IsNot Nothing Then CuentaAbonoAlmacen = drA("IdCtaContable").ToString.ToEntero If UsuarioActual.CveEmpresa = 48 Then ' APH CuentaCargoCOG = 1386 End If If CuentaCargoCOG > 0 AndAlso CuentaAbonoAlmacen > 0 Then If ObjContaAC.AddMovimiento(IDPoliza, CuentaCargoCOG, False, Importe, "", "", 0, TxtFecha.Text.ToDate, "") Then 'actualizo el idcuenta del presupuesto If Not ObjContaAC.AddMovimiento(IDPoliza, CuentaAbonoAlmacen, True, Importe, "", "", 0, TxtFecha.Text.ToDate, "") Then ErrorAC = True End If Else ErrorAC = True End If Else ErrorAC = True End If End If End If End If If Not ErrorAC AndAlso Not ErrorMovInv Then Dim Msg As String = "Movimiento Actualizado" If IDPoliza > 0 Then ObjContaAC.AjustaPoliza(IDPoliza) ObjInventario.Commit() ' aplica los movimientos insertados 'recargo los datos para que esten actualizados, y no se duplique un rgistro nuevo If ObjInventario.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) Then DtMovimientos = ObjInventario.DtResultados End If If ObjContaAC IsNot Nothing Then ObjContaAC.Commit() Alert(Msg, TipoMensaje.MsgInformacion, "document.location.href=""/Inventarios/EntradasSalidas.aspx?CveMovimiento=" & CveMovimiento & """;") UPDatos.Update() Else ObjInventario.RollBack() If ObjContaAC IsNot Nothing Then ObjContaAC.RollBack() Alert(Mensaje, TipoMensaje.MsgError) End If 'GUARDAR Else Dim Fecha = String.Format("{0} {1}", TxtFecha.Text.ToDate.ToString("yyyy/MM/dd"), TxtHoraInicio.PostedTime).ToDate Dim CveCliente As Integer = CInt(IIf((DdlClientes.SelectedValue.ToEntero <= 0), -1, DdlClientes.SelectedValue.ToEntero)) Dim CveClienteSucursal As Integer = CInt(IIf((DdlClientesSucursales.SelectedValue.ToEntero <= 0), -1, DdlClientesSucursales.SelectedValue.ToEntero)) 'cuando es APH Dim tFolio As Integer = -1 If UsuarioActual.CveEmpresa = 48 And EsConsumoInterno = False Then tFolio = TxtFolio.Text.ToEntero If Not tFolio > 0 Then tFolio = If(TxtFolio.Text.ToEntero <> FolioAsignado, TxtFolio.Text.ToEntero, -1) End If Dim tCveProveedor As Integer = -1 If DdlProveedor.SelectedValue.ToEntero > 0 Then tCveProveedor = DdlProveedor.SelectedValue.ToEntero Dim obs As String = TxtObservaciones.Text.Trim() If obs = "" Then obs = DdlConcepto.SelectedItem.Text If DdlPersonal.SelectedValue.ToEntero > 0 Then obs = obs & " - " & DdlPersonal.SelectedItem.Text End If Dim CveAlmacen As Integer = DdlAlmacen.SelectedValue.ToEntero Dim CveModalidad As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=CveAlmacen).FiltroPrimeroValor("CveModalidad").ToEntero() Dim EsContabilizable As Boolean = (CveModalidad = 1) Dim TotalCantidad As Double = DtMovimientos.SUMD("Cantidad") Dim CvePrePoliza As Integer = ObjConta.AddPrePolizas("Inv/ES", 53, 0, 0, 1, TxtFecha.Text.ToDate, obs, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveTipoPoliza:=3) CveMovimiento = ObjInventario.AddMovimiento(CveAlmacen, DdlConcepto.SelectedValue.ToEntero, 1, Fecha, tFolio, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, SubProyecto, ActivoFijo, Guia:=TxtGuia.Text, Observaciones:=TxtObservaciones.Text, CvePersonal:=DdlPersonal.SelectedValue.ToEntero, Recibio:=TxtResponsable.Text.Trim, CveCliente:=CveCliente, CveClienteSucursal:=CveClienteSucursal, DepartamentoEntrega:=TxtDepartamentoEntrega.Text, PedidoContrato:=TxtPedidoContrato.Text, CveProveedor:=tCveProveedor, Modulo:="ES/1") If CveMovimiento <= 0 OrElse CvePrePoliza <= 0 Then Alert("No se pudo almacenar el movimiento correctamente", TipoMensaje.MsgError) RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") ObjInventario.RollBack() 'deshace lo insertado Else Dim Mensaje As String = "" ''VALIDA EXISTENCIAS Dim Cont As Integer = 0 If DdlConcepto.SelectedValue.Contiene({"3", "11", "13", "21", "30", "31"}) Then For Each Dr As DataRow In DtMovimientos.Rows Dim FechaCaducidadVal As Date = If(Dr("AplicaCaducidad").ToString = "True", Dr("FechaCaducidad").ToString.ToDate, MinFecha) If ObjInventario.GetExistenciasPS(Dr("CvePS").ToString.ToEntero, Dr("CveUM").ToString.ToEntero, UsuarioActual.CveEmpresa, DdlAlmacen.SelectedValue.ToEntero, FechaMovto:=String.Format("{0} {1}", TxtFecha.Text.ToDate.ToString("yyyy/MM/dd"), TxtHoraInicio.PostedTime), Serie:=If(Dr("Serie").ToString = "", "-1", Dr("Serie").ToString), Lote:=If(Dr("Lote").ToString = "", "-1", Dr("Lote").ToString), FechaCaducidad:=FechaCaducidadVal) >= Dr("Cantidad").ToString.ToDouble Then If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, Dr("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDecimal, Dr("CveAF").ToString.ToEntero, CveSeccionAlmacen:=Dr("CveSeccionAlmacen").ToString.ToEntero, Serie:=Dr("Serie").ToString, Observaciones:=Dr("Observaciones").ToString, Lote:=Dr("Lote").ToString, FechaCaducidad:=FechaCaducidadVal, CveUsuarioModifico:=UsuarioActual.CveUsuario, CveCultivoCuadroDetalle:=Dr("CveCultivoCuadroDetalle").ToString.ToEntero) Then Mensaje = "Error al guardar los movimientos" ErrorMovInv = True Exit For End If Else If UsuarioActual.TienePermisoProceso(114) Then If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, Dr("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDecimal, CveAF:=Dr("CveAF").ToString.ToEntero, CveSeccionAlmacen:=Dr("CveSeccionAlmacen").ToString.ToEntero, Serie:=Dr("Serie").ToString, Observaciones:=Dr("Observaciones").ToString, Lote:=Dr("Lote").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate, CveUsuarioModifico:=UsuarioActual.CveUsuario, CveCultivoCuadroDetalle:=Dr("CveCultivoCuadroDetalle").ToString.ToEntero) Then Mensaje = "Error al guardar los movimientos" ErrorMovInv = True Exit For 'Else 'If ObjInventario.CveMovimientoDetalle > 0 AndAlso DtSeccionAlmacen.Rows.Count > 0 Then ' For Each Dr2 As DataRow In DtSeccionAlmacen.FiltraParametros($"IndexSeccionAlmacen = {Cont}").Rows ' If Not ObjInventario.AddMovimientosDetalleSeccionesAlmacen(ObjInventario.CveMovimientoDetalle, Dr2("CveSeccionAlmacen").ToString.ToEntero, Dr2("CantidadSeccionAlmacen").ToString.ToDecimal * Tipo) Then ' ErrorMovInv = True ' Mensaje = "Ocurrió un error al procesar las secciones de almacen. Por favor vuelva a intentar." ' Exit For ' End If ' Next 'End If End If Else Mensaje = String.Format("No hay existencias suficientes del producto: {0}", Dr("PS")) Alert(Mensaje, TipoMensaje.MsgAdvertencia) RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") ErrorMovInv = True : Exit For End If End If Cont += 1 Next Else For Each Dr As DataRow In DtMovimientos.Rows If DdlConcepto.SelectedValue.ToEntero = 2 AndAlso DdlMoneda.SelectedValue.ToEntero = 2 Then ImporteConcepto = Dr("PU").ToString.ToDecimal * GlobalTipoCambio(TxtFecha.Text.ToDate).ToDecimal Else ImporteConcepto = Dr("PU").ToString.ToDecimal End If If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, Dr("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, ImporteConcepto, CveAF:=Dr("CveAF").ToString.ToEntero, CveSeccionAlmacen:=Dr("CveSeccionAlmacen").ToString.ToEntero, Serie:=Dr("Serie").ToString, Observaciones:=Dr("Observaciones").ToString, Lote:=Dr("Lote").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate, CveUsuarioModifico:=UsuarioActual.CveUsuario, CveCultivoCuadroDetalle:=Dr("CveCultivoCuadroDetalle").ToString.ToEntero) Then Mensaje = "Error al guardar los movimientos" ErrorMovInv = True Exit For 'Else ' If ObjInventario.CveMovimientoDetalle > 0 AndAlso DtSeccionAlmacen.Rows.Count > 0 Then ' For Each Dr2 As DataRow In DtSeccionAlmacen.FiltraParametros($"IndexSeccionAlmacen = {Cont}").Rows ' If Not ObjInventario.AddMovimientosDetalleSeccionesAlmacen(ObjInventario.CveMovimientoDetalle, Dr2("CveSeccionAlmacen").ToString.ToEntero, Dr2("CantidadSeccionAlmacen").ToString.ToDecimal * Tipo) Then ' ErrorMovInv = True ' Mensaje = "Ocurrió un error al procesar las secciones de almacen. Por favor vuelva a intentar." ' Exit For ' End If ' Next ' End If End If Cont += 1 Next End If 'Registro la prepóliza If ObjInventario.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) Then Dim tValorInventario As Decimal = ObjInventario.DtResultados.SUMD("Total", "").RoundSQL() Dim tValorOtro As Decimal = tValorInventario Dim idCtaContable As Integer = 0 Dim IdCtaContableOtro As Integer = UsuarioActual.Empresa.IdCuentaOtrosIngresos Dim TipoMovtoAlmacen As Boolean = False Dim TipoMovtoOtro As Boolean = True Dim tCveSubProyecto As Integer = -1 Dim drA2 As DataRow = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimero(String.Format("CveAlmacen = {0}", DdlAlmacen.SelectedValue)) If drA2 IsNot Nothing Then idCtaContable = drA2("IdCtaContable").ToString.ToEntero tCveSubProyecto = drA2("CveSubProyecto").ToString.ToEntero End If Dim OrigenMov As Integer = GlobalDTInvConceptos.FiltroPrimeroValor("Origen", "CveConcepto = " & DdlConcepto.SelectedValue).ToEntero If OrigenMov = 1 Then TipoMovtoAlmacen = False Else TipoMovtoAlmacen = True TipoMovtoOtro = Not TipoMovtoAlmacen Dim CveConceptoContable As Integer = 260 Dim CveClasificacion As Integer = -1 Select Case DdlConcepto.SelectedValue.ToEntero Case 2 CveConceptoContable = 78 EsContabilizable = True Case 28, 31 CveConceptoContable = 51 '[IPP] PARCHE CTA CONTABLE PARA SALIDA DE DEMOSTRACION If DdlConcepto.SelectedValue.ToEntero = 31 Then IdCtaContableOtro = 1319 Else ''cuando es 28, es otros ingresos.78 CveConceptoContable = 78 End If EsContabilizable = True Case 30 CveConceptoContable = 181 TipoMovtoOtro = False If DdlSubProyecto.Visible = True AndAlso DdlSubProyecto.SelectedValue.ToEntero > 0 Then tCveSubProyecto = DdlSubProyecto.SelectedValue.ToEntero If UsuarioActual.Empresa.Funcionalidad(342).ToEntero > 0 Then IdCtaContableOtro = UsuarioActual.Empresa.Funcionalidad(342).ToEntero End If Case 34 CveConceptoContable = 51 EsContabilizable = True Case 13, 29 CveConceptoContable = 69 TipoMovtoOtro = True tValorOtro = -tValorOtro Dim drr As DataRow = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimero("") If drr IsNot Nothing Then CveClasificacion = drr("CveClasificacion").ToString.ToEntero IdCtaContableOtro = drr("IdCuentaCostos").ToString.ToEntero End If End Select '2-78 If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovtoAlmacen, tValorInventario, TxtObservaciones.Text.Trim, 68, TxtObservaciones.Text.Trim, TxtFecha.Text.ToDate, idCtaContable, -1, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=tValorInventario, CveClasificacion:=CveClasificacion, Contabilizable:=EsContabilizable) Then ErrorMovInv = True Else 'Dim Total As Decimal = 0 If CveConceptoContable.Contiene(181, 78, 51) Then Dim Dt As DataTable = ObjInventario.DtResultados.FiltraParametros("", "", {"CveClasificacion"}).Copy 'Dim IdCuentaGasto As Integer = 0 For Each Dr As DataRow In Dt.Rows Dim Total As Decimal = ObjInventario.DtResultados.FiltraParametros($"CveClasificacion = {Dr("CveClasificacion")}").SUM("Total").ToDecimal.RoundSQL() If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, Not TipoMovtoAlmacen, Total, Total, CveConceptoContable, TxtFolio.Text, TxtObservaciones.Text.Trim, IdCtaContableOtro, CveMovimientoAlmacen:=CveMovimiento, CveClasificacion:=Dr("CveClasificacion").ToString.ToEntero, CveSubProyecto:=tCveSubProyecto) Then ErrorMovInv = True End If Next End If End If Else ErrorMovInv = True End If If Not ErrorMovInv Then If ObjConta.ValidacionPrePolizaCuadre(CvePrePoliza, -1) Then If ObjConta.ValorPolizaDescuadre > 0 Then ErrorMovInv = True GuardaLogAD($"Inv/ES | Error:{ObjConta.MensajePolizaDescuadre} Diferencia:{ObjConta.ValorDiferencia} | CvePrePoliza:{CvePrePoliza}", "LogPrePolizas") Alert("No se pudo validar la prepoliza de cuadre.", TipoMensaje.MsgAdvertencia) End If Else Alert("No se pudo validar la prepoliza de cuadre.", TipoMensaje.MsgAdvertencia) End If End If '------------------------------------------------ If Not ErrorMovInv Then 'DEVENGAR Dim TotalPorDevengar As Double = 0 'cuando tiene AC y es salida de almacen, se manda al gasto, solo aplica si el almacen es contable If UsuarioActual.Empresa.UsaAC AndAlso (DdlConcepto.SelectedValue = "3") AndAlso EsContabilizable Then Dim DtII As DataTable = Nothing Dim TotalDetalle As Double = 0.0 Dim Importe As Decimal = DtMovimientos.SUMD("Total", "Estatus IN ('','U')") 'NOTA. CUANDO ES SALIDA, EN AUTOMATICO NO TENEMOS LOS VALORES DE LA SALIDA TODAVIA, Y POR ESO IMPORTE ES CERO, ES RECARGAR CON LOS DATOS YA INSERTADOS If ObjInventario.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) Then DtII = ObjInventario.DtResultados End If TotalPorDevengar += Importe ' GvInv.Rows.Cast(Of GridViewRow)().Sum(Function(Gvr) Math.Round(Gvr.DataKey("PU").ToString.ToDouble, 4) * Math.Round(Gvr.DataKey("CantidadF").ToString.ToDouble, 4)) TotalPorDevengar = Math.Round(TotalPorDevengar, 4) ObjContaAC = New ClsContPAQi(UsuarioActual.Empresa) ObjContaAC.IniciaTransacSQL() Dim AC As New ClsAC Dim DtPresupuestos As DataTable = Nothing If AC.GetPresupuestoEgresos(-1, True, UsuarioActual.Empresa.EjercicioActual, UsuarioActual.CveEmpresa) Then DtPresupuestos = AC.DtResultados.Copy Else Alert("Ocurrió un error al cargar los Presupuestos. Por favor vuelva a cargar la página", TipoMensaje.MsgError) RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") End If AC.Dispose() IDPoliza = ObjContaAC.AddPoliza(3, "Salida de Almacen", TotalPorDevengar, TotalPorDevengar, UsuarioActual.CveUsuario, TxtFecha.Text.ToDate) If IDPoliza > 0 Then Dim CuentaCargoCOG As Integer Dim CuentaAbonoAlmacen As Integer = 0 Dim drA As DataRow = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimero(String.Format("CveAlmacen = {0}", DdlAlmacen.SelectedValue)) If drA IsNot Nothing Then CuentaAbonoAlmacen = drA("IdCtaContable").ToString.ToEntero 'saco de que partida se va a descontar y se enviara a gasto ' Dim drP As DataRow = DtPresupuestos.FiltroPrimero(String.Format("CveClasificacion = {0}", Dr("CveClasificacion"))) ' If drP IsNot Nothing Then CuentaCargoCOG = drP("IdCuentaMatriz").ToString.ToEntero If UsuarioActual.CveEmpresa = 48 Then ' APH CuentaCargoCOG = 1386 End If Dim ConceptoRenglon As String = "Salida de Almacen" If IDPoliza > 0 Then If ObjInventario.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) Then Dim DtMovtos = ObjInventario.DtResultados Importe = DtMovtos.SUMD("Total", "Estatus = ''") If Importe > 0 Then If CuentaCargoCOG > 0 AndAlso CuentaAbonoAlmacen > 0 Then If ObjContaAC.AddMovimiento(IDPoliza, CuentaCargoCOG, False, Importe, "", ConceptoRenglon, 0, TxtFecha.Text.ToDate, "") Then 'actualizo el idcuenta del presupuesto If Not ObjContaAC.AddMovimiento(IDPoliza, CuentaAbonoAlmacen, True, Importe, "", ConceptoRenglon, 0, TxtFecha.Text.ToDate, "") Then ErrorAC = True Mensaje = "No se pudo insertar movimiento en la poliza 2." End If Else ErrorAC = True Mensaje = "No se pudo insertar movimiento en la poliza 1." End If End If End If End If End If If IDPoliza > 0 Then ObjInventario.UpdateMovimientoPoliza(IDPoliza, CveMovimiento, UsuarioActual.CveEmpresa) End If Else ErrorAC = True Mensaje = "No se pudo insertar la poliza" End If End If 'TERMINA: DEVENGAR Dim RetornoVirtual As MMovimientoVirtual = Nothing If UsuarioActual.Empresa.Funcionalidad(531) = "1" Then RetornoVirtual = GenerarMovimientoVirtual(CveMovimiento, ObjInventario) End If If RetornoVirtual IsNot Nothing Then ErrorMovInv = RetornoVirtual.TieneError End If Dim SerieInsertadaTimbre As String = "" Dim FolioInsertadoTimbre As Integer = -1 Dim CveTimbre As Integer = -1 If Not ErrorAC And Not ErrorMovInv Then If ChkEmitirTimbrado.Checked AndAlso Not DdlDireccionEnvio.SelectedValue.ToEntero > 0 Then ErrorMovInv = True Alert("La direccion destino es requerida.", TipoMensaje.MsgAdvertencia) End If If ChkEmitirTimbrado.Checked AndAlso Not ErrorMovInv Then Dim ObjGral As New ClsGenerales(ObjInventario.IniciaTransacSQL) Dim CveSubProyectoTimbre As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltraParametros($"CveAlmacen = {DdlAlmacen.SelectedValue}").Rows(0)("CveSubProyecto").ToString.ToEntero Dim Fechallegada As DateTime = (TxtFechaLlegada.Text & " 23:59:59").ToDateTime Dim CveEntregaAlmacen As Integer = ObjGral.AddInvEntregaAlmacenRuta(CveSubProyectoTimbre, -1, DdlDireccionEnvio.SelectedValue.ToEntero, CveMovimiento, DdlChofer.SelectedValue.ToEntero, DdlUnidadCamion.SelectedValue.ToEntero, TxtFechaEntrega.Text.ToDate, TxtFechaLlegada.Text.ToDate, "T", "", "", MinFecha, 1, 1, TxtDistancia.Text.ToEntero, CveConfigAutoTransporte:=DdlConfigAuto.SelectedValue.ToEntero, CveCamionRemolque1:=DdlRemolque1.SelectedValue.ToEntero, CveCamionRemolque2:=DdlRemolque2.SelectedValue.ToEntero, CveCliente:=DdlClientes.SelectedValue.ToEntero) If CveEntregaAlmacen > 0 Then CveTimbre = ObjGral.AddGralTimbre("Tra", CveSubProyectoTimbre, TxtFechaEntrega.Text.ToDate, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveEntregaAlmacen:=CveEntregaAlmacen, AplicaCP:=ChkEmitirCartaPorte.Checked) If CveTimbre > 0 Then SerieInsertadaTimbre = ObjGral.SerieInsertada FolioInsertadoTimbre = ObjGral.FolioInsertado Else ErrorMovInv = True End If Else ErrorMovInv = True End If End If End If If Not ErrorAC And Not ErrorMovInv Then Dim Msg As New StringBuilder Msg.AppendFormat("
El Movimiento se registro con el Folio: {0}", ObjInventario.Folio, CveMovimiento) Msg.AppendFormat("

Imprimir Movimiento ", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimiento))) If RetornoVirtual IsNot Nothing Then If RetornoVirtual.CveMovimientoVirtual > 0 Then Msg.AppendFormat("

Se generó el movimiento virtual con el folio: {1}", RetornoVirtual.CveMovimientoVirtual, RetornoVirtual.FolioVirtual) End If End If If ObjContaAC IsNot Nothing Then ObjContaAC.AjustaPoliza(IDPoliza) If IDPoliza > 0 Then Msg = Msg.AppendFormat("

Ver Póliza", IDPoliza) ObjInventario.Commit() ' aplica los movimientos insertados If ObjContaAC IsNot Nothing Then ObjContaAC.Commit() If ChkEmitirTimbrado.Checked Then CveMovimientoTimbrado = CveMovimiento EmitirTimbrado(CveTimbre, CveMovimientoTimbrado, Msg) End If Alert(Msg.ToString, TipoMensaje.MsgInformacion) 'Limpia Valores cuando inserta de campos especiales If UsuarioActual.CveEmpresa = 66 Then DdlSubProyecto.SelectedValueExist("-1") UPEncabezado.Update() End If UPDatos.Update() If UsuarioActual.TienePermisoProceso(139) Then CargaDatos(CveMovimiento) Else LimpiarMovimiento() End If RegistraScript("playsonidito('beep-07.wav')") Else ObjInventario.RollBack() CveMovimiento = 0 If ObjContaAC IsNot Nothing Then ObjContaAC.RollBack() Alert(Mensaje, TipoMensaje.MsgError) RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") End If Else ObjInventario.RollBack() 'deshace lo insertado CveMovimiento = 0 If ObjContaAC IsNot Nothing Then ObjContaAC.RollBack() Alert("ocurrió un Error al registrar los movimientos", TipoMensaje.MsgError) RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") End If End If CargaGVM(DtMovimientos.FiltraParametros("Estatus <> 'E' ")) End If Catch ex As Exception Try 'por si ya le habian dado rollback o commit ObjInventario.RollBack() 'deshace lo insertad Catch exx As Exception End Try CveMovimiento = 0 If ObjContaAC IsNot Nothing Then ObjContaAC.RollBack() Alert("Ocurrió un Error inesperado en el registro" & ex.Message, TipoMensaje.MsgError) GuardaLog("Ocurrió un Error inesperado en el registro" & ex.ToString()) RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") End Try ObjInventario.Dispose() 'elimino la instancia If ObjContaAC IsNot Nothing Then ObjContaAC.Dispose() Else Alert("No hay ningun registro para generar el movimiento. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgError) RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") End If EsNuevoMov = False End Sub #End Region #Region " ADD INVENTARIO INICIAL " Protected Sub BtnCodigoBarras_Click(sender As Object, e As EventArgs) If TxtCodigoBarras.Text = "" Then Exit Sub End If TdSeriePS.Visible = False Dim DrPS = GlobalDTPS(UsuarioActual.CveEmpresa).FiltroPrimero($"CodigoBarras= '{TxtCodigoBarras.Text}'") If DrPS Is Nothing Then Alert($"No se ha encontrado un producto del Codigo ""{TxtCodigoBarras.Text}"". ", TipoMensaje.MsgAdvertencia, "window.setTimeout(Focus,200);") RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") TxtCodigoBarras.Text = "" Exit Sub End If If DrPS("Inv_CveMetodoInventario").ToString.ToEntero = 5 Then TdSeriePS.Visible = True TxtCodigoSerie.Focus() CvePSSerieLote = DrPS("CvePS").ToString.ToEntero CveUMSerieLote = DrPS("CveUnidadMedida").ToString.ToEntero CostoPromedioSerieLote = DrPS("CostoPromedio").ToString.ToDecimal Exit Sub End If GuardaCodigoSerie(TxtCantidadProducto.Text.ToDouble, DrPS("CvePS").ToString.ToEntero, DrPS("CveUnidadMedida").ToString.ToEntero, DrPS("CostoPromedio").ToString.ToDecimal) TxtCodigoBarras.Text = "" TxtCodigoBarras.Focus() End Sub Protected Sub BtnSeriePS_Click(sender As Object, e As EventArgs) If TxtCodigoSerie.Text.Trim = "" Then TxtCodigoSerie.Focus() : Exit Sub GuardaCodigoSerie(1, CvePSSerieLote, CveUMSerieLote, CostoPromedioSerieLote, TxtCodigoSerie.Text.Trim) TdSeriePS.Visible = False End Sub Public Sub BtnAddCodigo_Click(sender As Object, e As EventArgs) Handles BtnAddCodigo.Click If TxtCodigo.Text.Trim = "" And TxtCodigoBarras.Text.Trim = "" Then Exit Sub End If Dim DrP As DataRow = Nothing If TxtCodigo.Text.Trim <> String.Empty Then DrP = GlobalDTPS(UsuarioActual.CveEmpresa).FiltroPrimero($" Codigo = '{TxtCodigo.Text.Trim}'") ElseIf TxtCodigoBarras.Text.Trim <> String.Empty Then DrP = GlobalDTPS(UsuarioActual.CveEmpresa).FiltroPrimero($" CodigoBarras = '{TxtCodigoBarras.Text.Trim}'") End If Dim Costo As Decimal = TxtAltaCosto.Text.ToDecimal If DrP IsNot Nothing AndAlso DrP("CvePS").ToString.ToEntero > 0 Then GuardaCodigoSerie(TxtCantidadProducto.Text.ToDouble, DrP("CvePS").ToString.ToEntero, DrP("CveUnidadMedida").ToString.ToEntero, Costo) Else Alert("No se encontró el producto. Favor de verificar y volver a intentar.", TipoMensaje.MsgError, "window.setTimeout(Focus2,200);") End If End Sub Private Sub GuardaCodigoSerie(Cantidad As Double, CvePS As Integer, CveUM As Integer, CostoPromedio As Decimal, Optional SerieLote As String = "-1") Dim ObjInv As New ClsInventarios If CveMovimiento <= 0 Then CveMovimiento = ObjInv.AddMovimiento(DdlAlmacen.SelectedValue.ToEntero, DdlConcepto.SelectedValue.ToEntero, 1, TxtFecha.Text.ToDate, TxtFolio.Text.ToEntero, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Modulo:="ES/CS1") End If ObjInv.AddMovimientoDetalle(CveMovimiento, Cantidad, CveUM, CvePS, CostoPromedio, -1, Serie:=SerieLote) ObjInv.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) DtMovimientos = ObjInv.DtResultados.FiltraParametros("", "CveMovimientoDetalle DESC").AsEnumerable.Take(25).CopyToDataTable ObjInv.Dispose() CargaGVM(DtMovimientos) TxtCodigoBarras.Text = "" TxtCodigo.Text = "" TxtCodigoSerie.Text = "" TxtCantidadProducto.Text = "1" txtCantidad.Text = "" LblCodigo.Text = "" HdnCodigoAF.Value = "-1" HdnCveActivoFijo.Value = "-1" TxtCodigoBarras.Focus() RegistraScript("beep-07.wav')") End Sub #End Region #Region " DdlConcepto, DdlClasificacion, DdlAlmacen | Index CHANGED " Protected Sub DdlAlmacen_SelectedIndexChanged(sender As Object, e As EventArgs) If EsConsumoInterno Then Exit Sub End If DdlConcepto.Items.Clear() Dim filtro As String = "" Dim CveTipoAlmacen = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1).FiltroPrimeroValor("CveTipoAlmacen", $"CveAlmacen = {DdlAlmacen.SelectedValue}").ToEntero Me.CveTipoAlmacenSeleccionado = CveTipoAlmacen filtro = If(UsuarioActual.TienePermisoProceso(144), "CveConcepto NOT IN (1,4,5,8,9,10,12,26,27)", "CveConcepto NOT IN (1,2,4,5,8,9,10,12,26,27)") If DdlAlmacen.SelectedValue = "-1" Then filtro = IIf(UsuarioActual.CveEmpresa.Contiene(72, 1, 80), "CveConcepto NOT IN (4,5,10)", filtro).ToString Else filtro = String.Format("{0} AND CveTipoAlmacen = {1}", IIf(UsuarioActual.CveEmpresa.Contiene(72, 1, 80, 4, 7, 11, 12, 135), "CveConcepto NOT IN (4,5,10)", filtro).ToString, CveTipoAlmacen) End If DdlConcepto.DataSource = GlobalDTInvConceptos.FiltraParametros(filtro) DdlConcepto.DataBind() If IsNothing(Request("CveMovimiento")) Then DdlConcepto.Items.Insert(0, New ListItem("Seleccione", "-1")) End If If Not DdlConcepto.Items.Contains(New ListItem("Seleccione", "-1")) Then DdlConcepto.Items.Insert(0, New ListItem("Seleccione", "-1")) End If 'PRODUCTOS FINANCIEROS If CveTipoAlmacen.Contiene(12, 15) Then If DdlConcepto.Items.FindByValue("1") Is Nothing Then DdlConcepto.Items.Insert(If(DdlConcepto.Items.Count >= 1, 1, 0), New ListItem(" Inventario Inicial ", "1")) End If DdlConcepto.Items.Insert(If(DdlConcepto.Items.Count >= 1, 1, 0), New ListItem(" Salida por Ajuste ", "34")) End If 'ACTIVO FIJO If CveTipoAlmacen = 15 Then If DdlConcepto.Items.FindByValue("2") Is Nothing Then DdlConcepto.Items.Insert(If(DdlConcepto.Items.Count >= 2, 2, DdlConcepto.Items.Count), New ListItem("Entrada Almacen ", "2")) End If If DdlConcepto.Items.FindByValue("3") Is Nothing Then DdlConcepto.Items.Insert(If(DdlConcepto.Items.Count >= 3, 3, DdlConcepto.Items.Count), New ListItem("Salida de Almacen", "3")) End If End If 'cONSUMO INTERNO If CveTipoAlmacen = 14 Then If DdlConcepto.Items.FindByValue("2") Is Nothing Then DdlConcepto.Items.Insert(If(DdlConcepto.Items.Count >= 2, 2, DdlConcepto.Items.Count), New ListItem("Entrada Almacen ", "2")) End If DdlConcepto.Items.Insert(If(DdlConcepto.Items.Count >= 1, 1, 0), New ListItem(" Salida por Ajuste ", "34")) End If ' RECEPCION USADOS If CveTipoAlmacen = 22 Then If DdlConcepto.Items.FindByValue("3") Is Nothing Then DdlConcepto.Items.Insert(If(DdlConcepto.Items.Count >= 2, 2, DdlConcepto.Items.Count), New ListItem("Salida Almacen ", "3")) End If If DdlConcepto.Items.FindByValue("45") Is Nothing Then DdlConcepto.Items.Insert(If(DdlConcepto.Items.Count >= 2, 2, DdlConcepto.Items.Count), New ListItem("Salida de Usado ", "45")) End If End If '[IPP]: PARCHE PARA JAM If UsuarioActual.CveEmpresa = 119 And CveTipoAlmacen.Contiene(4, 8, 16) Then If DdlConcepto.Items.FindByValue("2") Is Nothing Then DdlConcepto.Items.Insert(If(DdlConcepto.Items.Count >= 2, 2, DdlConcepto.Items.Count), New ListItem("Entrada Almacen ", "2")) End If If DdlConcepto.Items.FindByValue("3") Is Nothing Then DdlConcepto.Items.Insert(If(DdlConcepto.Items.Count >= 3, 3, DdlConcepto.Items.Count), New ListItem("Salida de Almacen", "3")) End If End If 'tIPO Devolución proveedor If CveTipoAlmacen.Contiene(21) Then DdlConcepto.Items.Insert(0, New ListItem("Entrada Almacen ", "2")) If UsuarioActual.CveUsuario = 100 Then DdlConcepto.Items.Insert(1, New ListItem("Devolución al Proveedor ", "13")) End If End If If CveTipoAlmacen.Contiene(22) Then DdlConcepto.Items.Insert(0, New ListItem("Entrada Almacen ", "2")) End If '2185 If UsuarioActual.CveEmpresa = 72 AndAlso (UsuarioActual.CveUsuario = 1490 OrElse UsuarioActual.CveRol = 1) Then 'DdlConcepto.Items.Add(New ListItem("Seleccione", "-1")) DdlConcepto.Items.Add(New ListItem("Entrada por Ajuste", "32")) If CveTipoAlmacen.Contiene(12, 14, 19) Then DdlConcepto.Items.Add(New ListItem("Salida por Ajuste", "34")) End If End If ''condicion de limpieza si es el usuario 1490, se dejan sino If UsuarioActual.CveEmpresa.Contiene(72, 80, 146) Then If Not UsuarioActual.CveUsuario.Contiene(1490, 2185) Then 'luz del mar(1490), y celia(2185) DdlConcepto.Items.Remove(DdlConcepto.Items.FindByValue("1")) DdlConcepto.Items.Remove(DdlConcepto.Items.FindByValue("2")) DdlConcepto.Items.Remove(DdlConcepto.Items.FindByValue("3")) DdlConcepto.Items.Remove(DdlConcepto.Items.FindByValue("16")) DdlConcepto.Items.Remove(DdlConcepto.Items.FindByValue("17")) DdlConcepto.Items.Remove(DdlConcepto.Items.FindByValue("31")) DdlConcepto.Items.Remove(DdlConcepto.Items.FindByValue("32")) DdlConcepto.Items.Remove(DdlConcepto.Items.FindByValue("33")) DdlConcepto.Items.Remove(DdlConcepto.Items.FindByValue("34")) DdlConcepto.Items.Remove(DdlConcepto.Items.FindByValue("34")) 'si esta dos veces, se tiene que ejecutar 2 veces DdlConcepto.Items.Remove(DdlConcepto.Items.FindByValue("35")) End If End If If UsuarioActual.CveUsuario.Contiene(2185, 100) Then DdlConcepto.Items.Add(New ListItem("Entrada por Ajuste", "32")) DdlConcepto.Items.Add(New ListItem("Salida por Ajuste", "34")) End If If EsApoyoLogistico Then DdlConcepto.Items.Clear() DdlConcepto.Items.Add(New ListItem("Selecione Uno", "-1")) DdlConcepto.Items.Add(New ListItem("Salida de Almacen", "3")) End If DdlConcepto.SelectedValue = "-1" ddlConcepto_SelectedIndexChanged(DdlConcepto, EventArgs.Empty) UpGenerales.Update() End Sub Protected Sub ddlConcepto_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlConcepto.SelectedIndexChanged If CveMovimiento > 0 And Not EsNuevoMov Then Exit Sub End If If CveMovimiento <= 0 Or EsNuevoMov Then SiguienteFolio() Dim CveConcepto = DdlConcepto.SelectedValue DivCodigoBarras.Visible = False TxtFecha.Enabled = True TxtObservaciones.Enabled = True DivCliente.Visible = False DivClienteSucursal.Visible = False DivDepartamentoEntrega.Visible = False TxtDepartamentoEntrega.Text = "" TxtPedidoContrato.Text = "" Select Case CveConcepto Case "1", "2", "22", "32", "33" ' ENTRADAS DivCodigoBarras.Visible = True TxtCodigoBarras.Focus() If CveMovimiento > 0 Then TxtFecha.Text = Now.ToShortDateString TxtFecha.Enabled = False End If VisualizaPU(True) TrPersonal.Visible = False TrResponsable.Visible = True If UsuarioActual.CveEmpresa.Contiene(66, 13) Then TrSubProyectoActivoFijo.Visible = True VisualizaAF(True) CargaSubProyectos() End If If GvM.Rows.Count > 0 Then GvM.FooterRow.Visible = True Case "3", "11", "21", "31" VisualizaPU(False) TrPersonal.Visible = False TrResponsable.Visible = True If UsuarioActual.CveEmpresa.Contiene(66, 13) Then TrSubProyectoActivoFijo.Visible = True VisualizaAF(True) CargaSubProyectos() End If If GvM.Rows.Count > 0 Then GvM.FooterRow.Visible = False If CveConcepto = "3" Then ActivaClientes() End If Case "7" VisualizaPU(False) TrSubProyectoActivoFijo.Visible = False TrResponsable.Visible = False CargaPersonal() If GvM.Rows.Count > 0 Then GvM.FooterRow.Visible = False Case "10" VisualizaPU(True) Case "28" TrProveedor.Visible = True DdlProveedor.DataSource = GlobalDTCompProveedores(UsuarioActual.CveEmpresa) DdlProveedor.DataBind() Case Else DivCodigoBarras.Visible = False TrSubProyectoActivoFijo.Visible = False VisualizaAF(False) If GvM.Rows.Count > 0 Then GvM.FooterRow.Visible = True TrPersonal.Visible = False TrResponsable.Visible = False End Select UpCodigoBarras.Update() UppGrid.Update() UPDatos.Update() End Sub Private Sub VisualizaPU(Opcion As Boolean) 'tdPU.Visible = Opcion 'tdTxtPU.Visible = Opcion txtPrecio.Visible = Opcion GvM.Columns(4).Visible = Opcion TdTotal.Visible = Opcion ThTotal.Visible = Opcion GvM.Columns(5).Visible = Opcion End Sub Private Sub VisualizaPUExtranjero(Opcion As Boolean) tdPUExtranjero.Visible = Opcion tdPUExtranjero2.Visible = Opcion GvM.Columns(6).Visible = Opcion End Sub Private Sub VisualizaAF(Opcion As Boolean) tdAF.Visible = Opcion ThAF.Visible = Opcion GvM.Columns(8).Visible = Opcion End Sub Private Sub SiguienteFolio() Dim Inv As New ClsInventarios Dim Folio As Integer = Inv.GetFolioSiguiente(DdlConcepto.SelectedValue.ToEntero, UsuarioActual.CveEmpresa) Inv.Dispose() TxtFolio.Text = Folio.ToString FolioAsignado = Folio UPEncabezado.Update() End Sub Protected Sub DdlClasificacion_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles DdlClasificacion.SelectedIndexChanged ChangeDdlProducto() End Sub Private Sub ChangeDdlProducto() If UsuarioActual.Empresa.Funcionalidad(105) = "" Then Dim filtro As String = "" If Not (DdlClasificacion.SelectedValue = "-1") Then If isWhitFamily() Then filtro = String.Format("CveSubFamilia={0}", DdlClasificacion.SelectedValue) Else filtro = String.Format("CveClasificacion={0}", DdlClasificacion.SelectedValue) End If End If DdlProducto2.DataSource = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa).FiltraParametros($"{filtro} AND CveTipoPS = 2", "PSCodigo") DdlProducto2.DataBind() DdlProducto2.ddl.Items.Insert(0, New ListItem("Seleccione", "-1")) Else If isWhitFamily() Then DdlProducto2.ddlWS.Attributes.Add("data-idSubFamilia", DdlClasificacion.SelectedValue) Else DdlProducto2.ddlWS.Attributes.Add("data-idClasificacion", DdlClasificacion.SelectedValue) End If End If End Sub Protected Sub DdlProducto_ValueChanged(sender As Object, e As EventArgs) Handles DdlProducto2.selectedindexchange ElProductoChange() End Sub Private Sub ElProductoChange() TxtnSerie.Visible = False divSerie.Visible = False TxtnLote.Visible = False divLote.Visible = False EscondeColumnasGVM(DtMovimientos.FiltraParametros("Estatus <> 'E' ")) If DdlProducto2.SelectedValue.ToEntero > 0 Then Dim dr As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, DdlProducto2.SelectedValue.ToEntero).FiltroPrimero("") If dr IsNot Nothing Then If CBool(dr("AplicaSerie")) Then TxtnSerie.Visible = True divSerie.Visible = True End If If CBool(dr("AplicaLote")) Then TxtnLote.Visible = True divLote.Visible = True End If If CBool(dr("AplicaSeccion")) Then divSeccionAlmacen.Visible = True 'DdlSeccionAlmacen.Items.Clear() 'DdlSeccionAlmacen.ClearSelection() 'DdlSeccionAlmacen.DataSource = GlobalDTInvPSSeccionesAlmacen(UsuarioActual.CveEmpresa, DdlAlmacen.SelectedValue.ToEntero, DdlProducto2.SelectedValue.ToEntero) 'DdlSeccionAlmacen.DataBind() CargaSeccionesAlmacen(DdlSeccionAlmacen, DdlAlmacen.SelectedValue.ToEntero, DdlProducto2.SelectedValue.ToEntero, UsuarioActual.CveEmpresa) End If If CBool(dr("AplicaCaducidad")) Then divCaducidad.Visible = True End If End If End If DdlUnidad.Items.Clear() DdlUnidad.DataSource = GlobalDTProductosServiciosEquivalencias(DdlProducto2.SelectedValue.ToEntero, -1, UsuarioActual.CveEmpresa) DdlUnidad.DataBind() UPDatos.Update() End Sub #End Region #Region " GVM " Private Sub CargaGVM(DtTemp As DataTable) GvM.DataSource = DtTemp '.FiltraPorIndices(0, If(DtTemp.Rows.Count > 20, 19, DtTemp.Rows.Count - 1)) GvM.DataBind() EscondeColumnasGVM(DtTemp) End Sub Private Sub EscondeColumnasGVM(DtTemp As DataTable) 'LblSerie.Visible = False TxtnSerie.Visible = False 'TrSerieLote.Visible = False 'TrSerieLote2.Visible = False If Not String.IsNullOrWhiteSpace(UsuarioActual.Empresa.Funcionalidad(147)) Then GvM.Columns(11).HeaderText = UsuarioActual.Empresa.Funcionalidad(147) GvM.Columns(9).Visible = False 'PERMISO SOLO PARA EDITAR SERIELOTE If UsuarioActual.TienePermisoProceso(245) Then GvM.Columns(9).Visible = True TxtnSerie.Visible = True End If TxtnLote.Visible = False 'TrLote.Visible = False 'TrLote2.Visible = False GvM.Columns(10).Visible = False 'TxtnBatch.Visible = False 'TrBatch.Visible = False 'TrBatch2.Visible = False 'GvM.Columns(11).Visible = False Dim TienePermisoImportes = UsuarioActual.TienePermisoProceso(201) tdPUExtranjero.Visible = False tdPUExtranjero2.Visible = False GvM.Columns(6).Visible = False tdCI.Visible = False tdCI2.Visible = False GvM.Columns(7).Visible = False If DtTemp.SUM("PUExtranjero") > 0 Then tdPUExtranjero.Visible = TienePermisoImportes tdPUExtranjero2.Visible = TienePermisoImportes GvM.Columns(6).Visible = TienePermisoImportes End If If DtTemp.SUM("CostoIndirecto") > 0 Then tdCI.Visible = TienePermisoImportes tdCI2.Visible = TienePermisoImportes GvM.Columns(7).Visible = TienePermisoImportes End If If DtTemp IsNot Nothing AndAlso DtTemp.Rows.Count > 0 Then GvM.Columns(9).Visible = DtTemp.MAX("Serie") <> "" GvM.Columns(10).Visible = DtTemp.MAX("Lote") <> "" GvM.Columns(11).Visible = DtTemp.MAX("FechaCaducidad").ToDate > MinFecha GvM.Columns(12).Visible = DtTemp.MAX("CveSeccionAlmacen").ToEntero > 0 End If 'UppGrid.Update() End Sub Protected Sub GvM_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvM.RowDataBound Dim TienePermisoImportes As Boolean = UsuarioActual.TienePermisoProceso(201) If e.Row.RowType = DataControlRowType.Header Then LbTotalMovimientos.Text = String.Format("Total de Movimientos: {0}", CType(GvM.DataSource, DataTable).Rows.Count.ToString) End If If e.Row.RowType = DataControlRowType.Footer Then e.Row.FCLiteral("lbTotProducto").Visible = TienePermisoImportes e.Row.FCLiteral("lbTotPrecio").Visible = TienePermisoImportes e.Row.FCLiteral("lbTotPrecioExtranjero").Visible = TienePermisoImportes e.Row.FCLiteral("LtTotCI").Visible = TienePermisoImportes If TienePermisoImportes Then e.Row.FCLiteral("lbTotPrecioExtranjero").Text = DtMovimientos.SUM("TotalExtranjero", "Estatus IN ('','U')").FormatoNumero e.Row.FCLiteral("LtTotCI").Text = DtMovimientos.SUM("CostoIndirecto", "Estatus IN ('','U')").FormatoNumero e.Row.FCLiteral("lbTotPrecio").Text = DtMovimientos.SUM("Total", "Estatus IN ('','U')").FormatoNumero End If End If If e.Row.RowType = DataControlRowType.DataRow Then If e.Row.RowState = DataControlRowState.Edit OrElse e.Row.RowState = 5 Then e.Row.FCTextBox("LblEditCodigo").Attributes.Add("onkeyup", String.Format("EnterAFEdit(event,this,{0},{1});", e.Row.FCHiddenField("HdnCveActivoFijo").ClientID, e.Row.FCHiddenField("HdnCodigoAF").ClientID)) e.Row.FCTextBox("LblEditCodigo").Attributes.Add("onblur", String.Format("AFBlurEdit(this,{0},{1});", e.Row.FCHiddenField("HdnCveActivoFijo").ClientID, e.Row.FCHiddenField("HdnCodigoAF").ClientID)) e.Row.FCImage("ImgAF").Attributes.Add("onclick", String.Format("AbrirVentana('/AF/PopUpBuscarAF.aspx?OPCION=OCE&RI={0}',950,600,'N');", e.Row.RowIndex)) 'PERMISO SOLO PARA EDITAR OBSERVACIONES If PermiteGuardarObservacionDetalle() Then e.Row.FCTextBox("txtPrecio").Enabled = False e.Row.FCTextBox("LblEditCodigo").Enabled = False e.Row.FCTextBox("TxtSerie").Enabled = False e.Row.FCTextBox("TxtLote").Enabled = False e.Row.FCDropDownList("DdlSeccionAlmacen").Enabled = False End If 'PERMISO SOLO PARA EDITAR SERIELOTE If UsuarioActual.TienePermisoProceso(245) Then If (CveMovimiento > 0) Or (TieneRelacionado > 0 Or CveMovimientoRelacionado > 0) Then 'CveMovimiento > 0 And e.Row.DBCampo("TienePrePoliza").ToEntero > 0 e.Row.FCTextBox("txtPrecio").Enabled = False e.Row.FCTextBox("LblEditCodigo").Enabled = False e.Row.FCTextBox("TxtSerie").Enabled = False e.Row.FCTextBox("TxtLote").Enabled = False e.Row.FCDropDownList("DdlSeccionAlmacen").Enabled = False e.Row.FCTextBox("txtPrecio").Enabled = False End If e.Row.FCTextBox("TxtSerie").Enabled = True End If If EsNuevoMov Then e.Row.FCTextBox("TxtCantidad").Enabled = True e.Row.FCTextBox("txtPrecio").Enabled = True End If Else If CveMovimiento > 0 Then 'DEPENDE PERMISOS HABILITA e.Row.FCLinkButton("lnkRemove").Visible = PermiteEliminar() e.Row.FCLinkButton("imgE").Visible = PermiteGuardar() If e.Row.DBCampo("CountMovimientoEntradaDetalle").ToEntero > 0 Then TieneSalida = True e.Row.FCLinkButton("lnkRemove").Visible = False e.Row.FCLinkButton("imgE").Visible = False End If 'SI TIENE PREPOLIZAS NO PUEDE EDITAR NI ELIMINAR If e.Row.DBCampo("TienePrePoliza").ToEntero > 0 Then e.Row.FCLinkButton("lnkRemove").Visible = False e.Row.FCLinkButton("imgE").Visible = False End If 'APAGA TODO SI TIENE MOVIMIENTO RELACIONADO If TieneRelacionado > 0 Or CveMovimientoRelacionado > 0 Then e.Row.FCLinkButton("lnkRemove").Visible = False e.Row.FCLinkButton("imgE").Visible = False End If 'PERMISO SOLO PARA EDITAR OBSERVACIONES If PermiteGuardarObservacionDetalle() Then e.Row.FCLinkButton("imgE").Visible = True End If 'PERMISO SOLO PARA EDITAR SERIELOTE If UsuarioActual.TienePermisoProceso(245) Then e.Row.FCLinkButton("imgE").Visible = True End If If EsNuevoMov Then e.Row.FCLinkButton("lnkRemove").Visible = True End If End If Dim Cantidad = e.Row.FCLiteral("lbCantidad").Text.ToDecimal If Not UsuarioActual.TienePermisoProceso(265) Or Cantidad <= 1 Or Cantidad Mod 1 <> 0 Then e.Row.FCLinkButton("lnkDividir").Visible = False End If End If End If End Sub Protected Sub GvM_RowEditing(sender As Object, e As GridViewEditEventArgs) Handles GvM.RowEditing Dim i As Integer = e.NewEditIndex GvM.EditIndex = i Dim Gv As GridView = DirectCast(sender, GridView) Dim GvRow As GridViewRow = Gv.Rows(i) If CveMovimiento > 0 Then CveMovimientoDetalleEdit = GvRow.DataKey("CveMovimientoDetalle").ToEntero txtCantidad.Enabled = False DdlClasificacion.Enabled = False DdlProducto2.Enabled = False DdlUnidad.Enabled = False 'codigo provisional, hay entradas con productos, que al asignar serie, debe de tener e ncantidad = 1 If GvRow.DataKey("Cantidad").ToEntero() > 1 Then txtCantidad.Enabled = True End If txtCantidad.Text = GvRow.DataKey("Cantidad").ToEntero().ToString DdlProducto2.SelectedValue = GvRow.DataKey("CvePS") DdlProducto2.SelectedText = GvRow.DataKey("CodigoPS") ElProductoChange() DdlUnidad.SelectedValue = GvRow.DataKey("CveUM") CveAFEdit = GvRow.DataKey("CveAF").ToEntero txtPrecio.Text = GvRow.DataKey("PU").ToDouble.FormatoNumero TxtnSerie.Text = GvRow.DataKey("Serie") TxtnLote.Text = GvRow.DataKey("Lote") TxtnFechaCaducidad.Text = GvRow.DataKey("FechaCaducidad").ToDate.ToShortDateString TxtObservacionesdetalle.Text = GvRow.DataKey("Observaciones") DdlSeccionAlmacen.DataSource = GlobalDTInvPSSeccionesAlmacen(UsuarioActual.CveEmpresa, DdlAlmacen.SelectedValue.ToEntero, GvRow.DataKey("CvePS").ToEntero) DdlSeccionAlmacen.DataBind() DdlSeccionAlmacen.SelectedValueExist(GvRow.DataKey("CveSeccionAlmacen")) LkAgregarDetalle.Text = "Actualizar" Dim Origen As Integer = GlobalDTInvConceptos.FiltroPrimeroValor("Origen", String.Format("CveConcepto = {0}", DdlConcepto.SelectedValue)).ToEntero divPrecio.Visible = Origen = 1 txtPrecio.Visible = Origen = 1 UpAgregar.Update() RegistraScript("$('#ModalAgregar').modal()") CargaGVM(DtMovimientos.FiltraParametros("Estatus <> 'E' ")) End Sub Protected Sub EditPS(sender As Object, e As EventArgs) Dim GvRow As GridViewRow = DirectCast(DirectCast(sender, LinkButton).NamingContainer, GridViewRow) If CveMovimiento > 0 Then CveMovimientoDetalleEdit = GvRow.DataKey("CveMovimientoDetalle").ToEntero divCantidad.Visible = False divClasificacionProducto.Visible = False divUnidadMedida.Visible = False End If txtCantidad.Text = GvRow.DataKey("Cantidad").ToEntero().ToString DdlProducto2.SelectedValue = GvRow.DataKey("CvePS") DdlProducto2.SelectedText = GvRow.DataKey("CodigoPS") ElProductoChange() DdlUnidad.SelectedValue = GvRow.DataKey("CveUM") CveAFEdit = GvRow.DataKey("CveAF").ToEntero txtPrecio.Text = GvRow.DataKey("PU").ToDouble.FormatoNumero TxtnSerie.Text = GvRow.DataKey("Serie") TxtnLote.Text = GvRow.DataKey("Lote") TxtnFechaCaducidad.Text = GvRow.DataKey("FechaCaducidad") TxtObservacionesdetalle.Text = GvRow.DataKey("Observaciones") DdlSeccionAlmacen.SelectedValueExist(GvRow.DataKey("CveSeccionAlmacen")) Dim Origen As Integer = GlobalDTInvConceptos.FiltroPrimeroValor("Origen", String.Format("CveConcepto = {0}", DdlConcepto.SelectedValue)).ToEntero divPrecio.Visible = Origen = 1 txtPrecio.Visible = Origen = 1 LkAgregarDetalle.Text = "Actualizar" UpAgregar.Update() RegistraScript("$('#ModalAgregar').modal()") CargaGVM(DtMovimientos.FiltraParametros("Estatus <> 'E' ")) End Sub Protected Sub GvM_RowCancelingEdit(sender As Object, e As GridViewCancelEditEventArgs) Handles GvM.RowCancelingEdit GvM.EditIndex = -1 CargaGVM(DtMovimientos.FiltraParametros("Estatus <> 'E' ")) End Sub Protected Sub GvM_RowUpdating(sender As Object, e As GridViewUpdateEventArgs) Handles GvM.RowUpdating 'Dim Precio As Double = GvM.Rows(e.RowIndex).FCTextBox("TxtPrecio").Text.ToDouble 'Dim No As Integer = GvM.Rows(e.RowIndex).DataKey("No").ToEntero 'Dim serie As String = GvM.Rows(e.RowIndex).FCTextBox("TxtSerie").Text.Replace(" ", String.Empty) 'Dim Observaciones As String = GvM.Rows(e.RowIndex).FCTextBox("TxtObservaciones").Text 'Dim CveSeccionAlmacen As Integer = GvM.Rows(e.RowIndex).FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero 'Dim SeccionAlmacen As String = GvM.Rows(e.RowIndex).FCDropDownList("DdlSeccionAlmacen").SelectedItem.Text 'Dim Cantidad As Double = GvM.Rows(e.RowIndex).FCTextBox("TxtCantidad").Text.ToDouble 'Dim Drs As DataRow() = DtMovimientos.Select(String.Format("No = {0}", No)) 'If Drs.Count > 0 Then ' Drs(0)("Cantidad") = Cantidad ' Drs(0)("PU") = Precio ' Drs(0)("Total") = Drs(0)("Cantidad").ToString.ToDouble * Precio ' Drs(0)("Estatus") = "U" ' Drs(0)("Serie") = serie ' Drs(0)("Observaciones") = Observaciones ' Drs(0)("CveSeccionAlmacen") = CveSeccionAlmacen ' Drs(0)("SeccionAlmacen") = SeccionAlmacen 'End If 'DtMovimientos.AcceptChanges() 'GvM.EditIndex = -1 'CargaGVM(DtMovimientos.FiltraParametros("Estatus <> 'E' ")) End Sub Protected Sub DeleteRow(ByVal sender As Object, ByVal e As EventArgs) Dim lnkRemove As LinkButton = DirectCast(sender, LinkButton) If DtMovimientos.Rows.Count > 0 And lnkRemove.CommandArgument.ToString.Length > 0 Then Dim i As Integer i = lnkRemove.CommandArgument.ToString.ToEntero Dim Drs As DataRow() = DtMovimientos.Select(String.Format("No = {0}", i)) If Drs.Count > 0 Then If CveMovimiento > 0 AndAlso Drs(0)("CveMovimientoDetalle").ToString.ToEntero > 0 Then Drs(0)("Estatus") = "E" Else Drs(0).Delete() End If End If DtMovimientos.AcceptChanges() End If GvM.EditIndex = -1 CargaGVM(DtMovimientos.FiltraParametros("Estatus <> 'E' ")) End Sub Protected Sub DividirRow(ByVal sender As Object, ByVal e As EventArgs) Dim lnkRemove As LinkButton = DirectCast(sender, LinkButton) If DtMovimientos.Rows.Count > 0 And lnkRemove.CommandArgument.ToString.Length > 0 Then Dim i As Integer i = lnkRemove.CommandArgument.ToString.ToEntero Dim Drs As DataRow() = DtMovimientos.Select(String.Format("No = {0}", i)) If Drs.Count > 0 Then Dim Cantidad As Integer = Drs(0)("Cantidad").ToString.ToEntero Dim CvePS = Drs(0)("CvePS") Dim Producto = Drs(0)("CodigoPS") Dim PU = Drs(0)("PU") Dim CveSeccion = Drs(0)("CveSeccionAlmacen") Drs(0)("Cantidad") = "1" Drs(0)("Total") = PU Drs(0)("Estatus") = "U" For counter As Integer = 1 To Cantidad - 1 txtCantidad.Text = "1" DdlProducto2.SelectedValue = CvePS.ToString DdlProducto2.SelectedText = Producto.ToString txtPrecio.Text = PU.ToString If DdlSeccionAlmacen.Visible = True And CveSeccion.ToString <> "" Then DdlSeccionAlmacen.SelectedValue = CveSeccion.ToString End If ElProductoChange() AgregarPS() txtPrecio.Text = "" DdlUnidad.SelectedItem.Text = "" Next End If DtMovimientos.AcceptChanges() End If GvM.EditIndex = -1 CargaGVM(DtMovimientos.FiltraParametros("Estatus <> 'E' ")) End Sub #End Region #Region " CONTABILIZAR " Public Function ContabilizaMovimientoAlmacen(ByRef ObjConta As ClsContabilidad, Fecha As Date, Concepto As String, Modulo As String, CveMovimientoSalida As Integer, CveMovimientoEntrada As Integer, Importe As Decimal, CveUsuario As Integer, CveEmpresa As Integer, Contabilizable As Boolean) As Integer Dim Retorno As Integer = -1 Dim ErrorMovInv As Boolean = False Dim CvePrePoliza As Integer = ObjConta.AddPrePolizas(Modulo, 53, 0, 0, 1, Fecha, Concepto, CveUsuario, CveEmpresa) If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, Importe, "", 68, Concepto, Fecha, -1, -1, CveMovimientoAlmacen:=CveMovimientoSalida, ImporteMX:=Importe, Contabilizable:=Contabilizable) Then ErrorMovInv = True End If If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Importe, "", 68, Concepto, Fecha, -1, -1, CveMovimientoAlmacen:=CveMovimientoEntrada, ImporteMX:=Importe, Contabilizable:=Contabilizable) Then ErrorMovInv = True End If If Not ErrorMovInv Then Retorno = CvePrePoliza Return Retorno End Function Protected Sub BtnContabilizar_Click(sender As Object, e As EventArgs) Handles BtnContabilizar.Click Dim ObjContaAC As ClsContPAQi = Nothing Dim ObjInventario As New ClsInventarios ObjInventario.IniciaTransacSQL() 'Inicia la transacción 'DEVENGAR Dim IDPoliza As Integer Dim ErrorAC = False Dim TotalPorDevengar As Double = 0 Dim Folio As String = "" Dim Fecha As Date = TxtFecha.Text.ToDate 'cuando tiene AC y es salida de almacen, se manda al gasto If UsuarioActual.Empresa.UsaAC AndAlso DdlConcepto.SelectedValue = "3" Then 'Dim Total As Double = 0 'TotalPorDevengar += Total ' GvInv.Rows.Cast(Of GridViewRow)().Sum(Function(Gvr) Math.Round(Gvr.DataKey("PU").ToString.ToDouble, 4) * Math.Round(Gvr.DataKey("CantidadF").ToString.ToDouble, 4)) TotalPorDevengar = Math.Round(TotalPorDevengar, 4) ObjContaAC = New ClsContPAQi(UsuarioActual.Empresa) ObjContaAC.IniciaTransacSQL() IDPoliza = ObjContaAC.AddPoliza(3, "Salida de Almacen", TotalPorDevengar, TotalPorDevengar, UsuarioActual.CveUsuario, Fecha) If IDPoliza > 0 Then Dim CuentaCargoCOG As Integer Dim CuentaAbonoAlmacen As Integer = 0 Dim Importe As Double = DtMovimientos.SUM("Total", "Estatus = ''") Folio = ObjContaAC.Folio.ToString Dim drA As DataRow = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimero(String.Format("CveAlmacen = {0}", DdlAlmacen.SelectedValue)) If drA IsNot Nothing Then CuentaAbonoAlmacen = drA("IdCtaContable").ToString.ToEntero If UsuarioActual.CveEmpresa = 48 Then ' APH CuentaCargoCOG = 1386 End If If CuentaCargoCOG > 0 AndAlso CuentaAbonoAlmacen > 0 Then If ObjContaAC.AddMovimiento(IDPoliza, CuentaCargoCOG, False, Importe, "", "", 0, Fecha, "") Then 'actualizo el idcuenta del presupuesto If Not ObjContaAC.AddMovimiento(IDPoliza, CuentaAbonoAlmacen, True, Importe, "", "", 0, Fecha, "") Then ErrorAC = True End If Else ErrorAC = True End If End If If IDPoliza > 0 Then ObjInventario.UpdateMovimientoPoliza(IDPoliza, CveMovimiento, UsuarioActual.CveEmpresa) End If Else ErrorAC = True End If End If 'TERMINA: DEVENGAR If Not ErrorAC Then ObjInventario.Commit() ' aplica los movimientos insertados If ObjContaAC IsNot Nothing Then ObjContaAC.AjustaPoliza(IDPoliza) : ObjContaAC.Commit() Alert(String.Format("Movimiento Registrado

Poliza {1}", IDPoliza, Folio), TipoMensaje.MsgInformacion) UPDatos.Update() BtnContabilizar.Visible = PermiteContabilizar() Else ObjInventario.RollBack() If ObjContaAC IsNot Nothing Then ObjContaAC.RollBack() Alert("Error", TipoMensaje.MsgError) End If End Sub #End Region #Region " VinculaAF " Protected Sub BtnVinculaAF_Click(sender As Object, e As EventArgs) If HdnCveActivoFijo.Value.ToEntero = -2 Then Dim ObjAF As New ClsAF If ObjAF.GetActivosFijos(-1, UsuarioActual.CveEmpresa, LblCodigo.Text, "-1", -1, -1, "-1", -1, -1, -1, -1, -1, "", -1) Then If ObjAF.DtResultados.Rows.Count = 1 Then HdnCodigoAF.Value = ObjAF.DtResultados.Rows(0)("Codigo").ToString HdnCveActivoFijo.Value = ObjAF.DtResultados.Rows(0)("CveActivoFijo").ToString LblCodigo.Text = HdnCodigoAF.Value Else HdnCodigoAF.Value = "-1" HdnCveActivoFijo.Value = "-1" LblCodigo.Text = "" Alert("No se encontró un Activo Fijo con el código proporcionado.", TipoMensaje.MsgAdvertencia) End If End If ObjAF.Dispose() Else LblCodigo.Text = HdnCodigoAF.Value End If 'LbAgregar.Focus() UPDatos.Update() End Sub Protected Sub BtnVinculaAFEdit_Click(sender As Object, e As EventArgs) If HdnCodAFEdit.Value.Trim = "" Then Exit Sub Dim ObjAF As New ClsAF If ObjAF.GetActivosFijos(-1, UsuarioActual.CveEmpresa, HdnCodAFEdit.Value, "-1", -1, -1, "-1", -1, -1, -1, -1, -1, "", -1) Then If ObjAF.DtResultados.Rows.Count = 1 Then RegistraScript(String.Format("EnterAFEditOK('{0}','{1}');", ObjAF.DtResultados.Rows(0)("CveActivoFijo").ToString, ObjAF.DtResultados.Rows(0)("Codigo").ToString)) Else Alert("No se encontró un Activo Fijo con el código proporcionado.", TipoMensaje.MsgAdvertencia) RegistraScript(String.Format("EnterAFEditOK({0},{1});", "-1", "-1")) End If End If ObjAF.Dispose() End Sub #End Region #Region " TIPO DE CAMBIO " Protected Sub DdlMonedaTC_SelectedIndexChanged(sender As Object, e As EventArgs) Select Case DdlMonedaTC.SelectedValue.ToEntero Case 1 TrTC1.Visible = False TrTC2.Visible = False For Each Dr As DataRow In DtMovimientos.Rows Dr("PU") = Dr("PUExtranjero") Dr("Total") = Dr("PU").ToString.ToDouble * Dr("Cantidad").ToString.ToDouble Next CargaGVM(DtMovimientos.FiltraParametros("Estatus <> 'E' ")) 'LtTotal.Text = DtMovimientos.SUM("Total", "").ToString.FormatoNumero UPDatos.Update() Case 2 TrTC1.Visible = True TrTC2.Visible = True End Select End Sub Protected Sub BtnAplicarTC_Click(sender As Object, e As EventArgs) For Each Dr As DataRow In DtMovimientos.Rows Dr("PU") = Dr("PUExtranjero").ToString.ToDouble * TxtTipoCambio.Text.ToDouble Dr("Total") = Dr("PU").ToString.ToDouble * Dr("Cantidad").ToString.ToDouble Next CargaGVM(DtMovimientos.FiltraParametros("Estatus <> 'E' ")) 'LtTotal.Text = DtMovimientos.SUM("Total", "").ToString.FormatoNumero UPDatos.Update() End Sub #End Region #Region " BITACORA " Private Sub InicializaBitacoraTemporal() DivBitacora.Visible = True If CveMovimiento > 0 Then CargaEventoBitacora() Else DtBitacora = New DataTable DtBitacora.Columns.Add("FechaIng", GetType(String)) DtBitacora.Columns.Add("FechaInicio", GetType(String)) DtBitacora.Columns.Add("Usuario", GetType(String)) DtBitacora.Columns.Add("CveUsuario", GetType(String)) DtBitacora.Columns.Add("Descripcion", GetType(String)) DtBitacora.Columns.Add("Prioridad", GetType(String)) DtBitacora.Columns.Add("FileExtension", GetType(String)) DtBitacora.Columns.Add("Archivo", GetType(String)) DtBitacora.Columns.Add("CveOrdenCompra", GetType(String)) DtBitacora.Columns.Add("CveEmpresa", GetType(String)) End If End Sub Private Sub CargaEventoBitacora() Dim ObjEventoBitacora As New ClsOIEventos() If ObjEventoBitacora.GetAgendaBitacora(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveMovimientoAlmacen:=CveMovimiento) Then 'If ObjEventoBitacora.DtResultados.FiltraParametros("CveTipoEvento IN (6,2) AND CvePrioridad=3").Rows.Count > 0 Then ' DivEventoUrgente.Visible = True 'End If GvBitacora.DataSource = ObjEventoBitacora.DtResultados.FiltraParametros("CveTipoEvento IN (6,2)") Else GvBitacora.DataSource = Nothing End If ObjEventoBitacora.Dispose() GvBitacora.DataBind() UPEventoBitacora.Update() End Sub Protected Sub BtnGuardarEventoBitacora_Click(sender As Object, e As EventArgs) Handles BtnGuardarEventoBitacora.Click If CveMovimiento > 0 Then GuardaBitacora() Else AgregaBitacoraTemporal() End If End Sub #Region " GUARDA TEMPORAL " Private Sub AgregaBitacoraTemporal() Dim ObjEventoBitacora As New ClsOIEventos 'Archivo Dim FileExtension As String = "" Dim Filename As String = "" Dim Filesgral As List(Of Archivo) = Anexo.getfiles().Archivos For Each fileItem As Archivo In Filesgral FileExtension = IO.Path.GetExtension(String.Format("{0}Temp\{1}", AppDomain.CurrentDomain.BaseDirectory, fileItem.filename)).Replace(".", "") Filename = fileItem.filename Next Dim Archivo As New System.IO.FileInfo(String.Format("{0}OI\Temp\OI{1}{2}.{3}", UsuarioActual.Empresa.Ruta, UsuarioActual.CveUsuario, Now.ToString("HH-mm"), FileExtension)) If Archivo.Exists() Then Archivo.Delete() 'File.Delete(String.Format("\Empresas\{0}\OI\Temp\OI{1}{2}.{3}", CveEmpresaActual, UsuarioActual.CveUsuario, DtDetalle.Rows.Count, FileExtension)) End If If Filename <> "" Then Filename.FilesMove(String.Format("OI{0}{1}", UsuarioActual.CveUsuario, Now.ToString("HH-mm")), String.Format("{0}OI\Temp", UsuarioActual.Empresa.Ruta), ConcatenarDirectorioBase:=False) End If 'AGREGA Dim Dr = DtBitacora.NewRow Dr("FechaIng") = Now Dr("FechaInicio") = "" Dr("Usuario") = UsuarioActual.Usuario Dr("CveUsuario") = UsuarioActual.CveUsuario Dr("Descripcion") = TxtEventoDescripcion.Text.Trim Dr("Prioridad") = 1 Dr("Archivo") = If(FileExtension = "", "", $"{UsuarioActual.Empresa.Ruta}OI\Temp\OI{UsuarioActual.CveUsuario}{Now.ToString("HH-mm")}.{FileExtension}") Dr("FileExtension") = String.Format(".{0}", FileExtension) Dr("CveOrdenCompra") = -1 Dr("CveEmpresa") = UsuarioActual.CveEmpresa DtBitacora.Rows.Add(Dr) 'LIMPIA TxtEventoDescripcion.Text = "" 'ChkEventoPrioridad.Checked = False RegistraScript("$('#ModalBitacora').modal('hide')", "hidemodal") CargaEventoBitacoraTemp() End Sub Private Sub CargaEventoBitacoraTemp() GvBitacora.DataSource = DtBitacora GvBitacora.DataBind() UPAddEventoBitacora.Update() UPEventoBitacora.Update() End Sub Private Function GuardaBitacoraTemporal(ObjEventoBitacora As ClsOIEventos, CveMovimiento As Integer) As Boolean Dim Retorno = False Dim Archivo As System.IO.FileInfo = Nothing For Each Dr As DataRow In DtBitacora.Rows If ObjEventoBitacora.AddEventoBitacora(Dr("Descripcion").ToString, Dr("FileExtension").ToString, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveMovimientoAlmacen:=CveMovimiento) Then Try If Dr("Archivo").ToString <> "" Then Archivo = New System.IO.FileInfo(Dr("Archivo").ToString) If Archivo.Exists() Then File.Move(Archivo.ToString, String.Format("{0}OI\OI{1}{2}", UsuarioActual.Empresa.Ruta, ObjEventoBitacora.CveEvento.ToString, Archivo.Extension)) End If End If Catch ex As Exception Retorno = True Alert("Ocurrió un error al guardar los datos adjuntos de la Bitácora.", TipoMensaje.MsgError) Exit For End Try Else Retorno = True Exit For End If Next Return Retorno End Function #End Region #Region " GUARDA DIRECTO " Private Sub GuardaBitacora() Dim ObjEventoBitacora As New ClsOIEventos Dim FileExtension As String = "" Dim Filesgral As List(Of Archivo) = Anexo.getfiles().Archivos Dim Filename As String = "" For Each fileItem As Archivo In Filesgral FileExtension = IO.Path.GetExtension(String.Format("{0}Temp\{1}", AppDomain.CurrentDomain.BaseDirectory, fileItem.filename)) '.Replace(".", "") Filename = fileItem.filename Next Dim descripcion As String = TxtEventoDescripcion.Text.Trim 'Dim Prioridad As Integer = If(ChkEventoPrioridad.Checked, 3, 1) If ObjEventoBitacora.AddEventoBitacora(descripcion, String.Format("{0}", FileExtension), UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveMovimientoAlmacen:=CveMovimiento) Then If Filename <> "" Then Filename.FilesMove(String.Format("OI{0}", ObjEventoBitacora.CveEvento.ToString), String.Format("{0}OI", UsuarioActual.Empresa.Ruta), ConcatenarDirectorioBase:=False) End If GvBitacora.DataSource = ObjEventoBitacora.DtResultados TxtEventoDescripcion.Text = "" Anexo.Text = "[]" 'ChkEventoPrioridad.Checked = False Alert("La bitácora/observación se guardó correctamente", TipoMensaje.MsgInformacion) RegistraScript("$('#ModalBitacora').modal('hide')", "hidemodal") ''obtener el Evento de bitacora para enviar el correo 'If ObjEventoBitacora.GetEvento(ObjEventoBitacora.CveEvento, UsuarioActual.CveUsuario, CveEmpresaActual) Then ' If ObjEventoBitacora.DtResultados IsNot Nothing AndAlso ObjEventoBitacora.DtResultados.Rows.Count > 0 Then ' Dim dr As DataRow = ObjEventoBitacora.DtResultados.Rows(0) ' EnviarCorreoBitacora(String.Format("{0}, {1} comento: ""{2}""", dr("FechaIng"), dr("Usuario"), dr("Descripcion")), String.Format("http://sig.adsistemas.mx/Empresas/{0}/OI/{1}", CveEmpresaActual, ObjEventoBitacora.Archivo)) ' End If 'End If End If ObjEventoBitacora.Dispose() GvBitacora.DataBind() UPEventoBitacora.Update() CargaEventoBitacora() UPAddEventoBitacora.Update() End Sub #End Region Protected Sub GVEventoBitacora_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvBitacora.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then If e.Row.DBCampo("Archivo").ToString.Trim <> "" AndAlso CveMovimiento > 0 Then e.Row.FCLinkButton("LinkArchivo").Visible = True e.Row.FCLinkButton("LinkArchivo").CommandArgument = String.Format("OI\{0}", e.Row.DBCampo("Archivo").ToString) ScriptManager.GetCurrent(Me).RegisterPostBackControl(e.Row.FCLinkButton("LinkArchivo")) 'Registro un evento Postbacktrigger, que recargue toda la pagina para que funcione Else e.Row.Cells(4).Text = "NO" End If End If End Sub Protected Sub DownloadFile(ByVal sender As Object, ByVal e As EventArgs) Dim filePath As String = String.Format("{0}{1}", UsuarioActual.Empresa.Ruta, CType(sender, LinkButton).CommandArgument) If IO.File.Exists(filePath) Then Dim Archivo As New System.IO.FileInfo(filePath) HttpContext.Current.Response.Clear() HttpContext.Current.Response.ClearContent() HttpContext.Current.Response.ContentType = "application/octet-stream" HttpContext.Current.Response.AppendHeader("Content-disposition", "attachment; filename=" + Path.GetFileName(filePath)) HttpContext.Current.Response.AddHeader("Content-Length", Archivo.Length.ToString()) HttpContext.Current.Response.TransmitFile(filePath) HttpContext.Current.Response.Flush() HttpContext.Current.Response.End() Archivo = Nothing Else UPEventoBitacora.Update() End If End Sub #End Region #Region " AGREGA CON TXT | CODIGO - SERIE " Protected Sub BtnCodigoPS_Click(sender As Object, e As EventArgs) If TxtCodigoPS.Text.Trim = "" Then Exit Sub End If TdSeriePS.Visible = False TdSeccionPSAdd.Visible = False Dim Dr = GlobalDTPS(UsuarioActual.CveEmpresa).FiltroPrimero($"CodigoBarras= '{TxtCodigoPS.Text}'") If Dr Is Nothing Then Alert($"No se ha encontrado un producto con el Codigo ""{TxtCodigoPS.Text}"". ", TipoMensaje.MsgAdvertencia, "window.setTimeout(FocusAdd,200);") RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") TxtCodigoPS.Text = "" Exit Sub End If If Dr("AplicaSerie").ToString = "True" Then TdSeriePSAdd.Visible = True TxtSeriePS.Focus() CvePSSerieLote = Dr("CvePS").ToString.ToEntero PSSerieLote = Dr("PSCodigo").ToString CveUMSerieLote = Dr("CveUM").ToString.ToEntero UMSerieLote = Dr("UnidadMedida").ToString Exit Sub End If Dim CveSeccionAlmacen As Integer = -1 Dim SeccionAlmacen As String = "" If Dr("AplicaSeccion").ToString = "True" Then If DdlAlmacen.SelectedValue.ToEntero <= 1 Then Alert("No se ha especificado el almacen para especificar la sección", TipoMensaje.MsgError) Exit Sub End If DdlSeccionPSAdd.Items.Clear() Dim dtt As DataTable = GlobalDTInvPSSeccionesAlmacen(UsuarioActual.CveEmpresa, DdlAlmacen.SelectedValue.ToEntero, Dr("CvePS").ToString.ToEntero) DdlSeccionPSAdd.DataSource = dtt DdlSeccionPSAdd.DataBind() If dtt.Rows.Count > 1 Then DdlSeccionPSAdd.Items.Insert(0, New ListItem("Seleccione", "-1")) ' si solo hay un movimiento, debe de agregar, sino debe de esperar a que seleccionen Exit Sub DdlSeccionPSAdd.Focus() TdSeccionPSAdd.Visible = True Else CveSeccionAlmacen = DdlSeccionPSAdd.SelectedValue.ToEntero SeccionAlmacen = DdlSeccionPSAdd.SelectedItem.Text End If End If AddNew(Dr("CvePS").ToString.ToEntero, Dr("PSCodigo").ToString, Dr("CveUM").ToString.ToEntero, Dr("UnidadMedida").ToString, 1, Dr("CostoPromedio").ToString.ToDecimal, "", "", "", "", "", "", MinFecha, CveSeccionAlmacen, SeccionAlmacen) TxtCodigoPS.Text = "" TxtCodigoPS.Focus() End Sub Protected Sub BtnSeriePSAdd_Click(sender As Object, e As EventArgs) If TxtSeriePS.Text.Trim = "" Then Exit Sub End If If TdSeccionPSAdd.Visible Then If DdlSeccionAlmacen.SelectedValue.ToEntero <= 0 Then Exit Sub End If End If AddNew(CvePSSerieLote, PSSerieLote, CveUMSerieLote, UMSerieLote, 1, 0, TxtSeriePS.Text.Trim, "", "", "", "", "", MinFecha, -1, "") TdSeriePSAdd.Visible = False TxtSeriePS.Text = "" TxtCodigoPS.Text = "" TxtCodigoPS.Focus() End Sub #End Region #Region " CONSUMO INTERNO " Private Sub ActivaConsumoInterno() EsConsumoInterno = True Panel1.Visible = False DdlConcepto.Items.Insert(0, New ListItem("Salida por Consumo Interno", "30")) DdlConcepto.SelectedValue = "30" DdlAlmacen.AutoPostBack = False DivFolio1.Visible = False DivFolio2.Visible = False DivConcepto1.Visible = False DivConcepto2.Visible = False divMonedaSeccion.Visible = False divGuia.Visible = False TrResponsable.Visible = False CargaPersonal() LtlTitulo.Text = "Consumo Interno" 'RECARGA ALMACENES SOLO DE CONSUMO INTERNO DdlAlmacen.Items.Clear() DdlAlmacen.DataBind() Dim dttA As DataTable = Nothing dttA = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, 14) dttA.Merge(GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, 1)) DdlAlmacen.DataSource = dttA 'GlobalDTAlmacen(UsuarioActual.CveEmpresa) DdlAlmacen.Items.Insert(0, New ListItem("Seleccione", "-1")) ' DdlAlmacen.SelectedValue = "-1" DdlAlmacen.DataBind() If IsNothing(Request("CveMovimiento")) Then DdlAlmacen.SelectedValueExist(UsuarioActual.CveAlmacen) End If If UsuarioActual.Empresa.Funcionalidad(590) = "1" Then TrSubProyectoActivoFijo.Visible = True CargarCentrosDeCosto(Nothing, DdlSubProyecto, Nothing, LblSubProyecto, "Seleccione Uno") DVCultivosCuadro.Visible = True CargaCultivos() End If If UsuarioActual.Empresa.Funcionalidad(267) = "1" Then 'citrícola TrSubProyectoActivoFijo.Visible = True CargarCentrosDeCosto(Nothing, DdlSubProyecto, Nothing, LblSubProyecto, "Seleccione Uno") End If TrActivoFijo.Visible = True DdlActivoFijo.Items.Clear() DdlActivoFijo.DataSource = GlobalDTActivoFijos(UsuarioActual.CveEmpresa).FiltraParametros(" CveEstadoActivoFijo IN(1,3,4,9) ") DdlActivoFijo.DataBind() DdlActivoFijo.Items.Insert(0, New ListItem("Seleccione uno", "-1")) DdlActivoFijo.SelectedValueExist(-1) End Sub Private Sub CargaCultivos() DdlModalCultivosCuadro.Items.Clear() DdlModalCultivosCuadro.DataSource = GlobalDTCultivosCuadro(UsuarioActual.CveEmpresa).FiltraParametros($"CveSubProyecto = {DdlSubProyecto.SelectedValue} AND Estatus = 1 ", "TemporadaCuadro") DdlModalCultivosCuadro.DataBind() DdlModalCultivosCuadro.Items.Insert(0, New ListItem("Seleccione uno", "-1")) End Sub #End Region #Region "PAQUETERIA GUIA" Protected Sub LnkAgregarGuia_Click(sender As Object, e As EventArgs) RegistraScript(String.Format("AbrirVentana('/General/PopUpPaqueteriasGuias.aspx?CveMovimiento={0}',800,620);", CveMovimiento)) End Sub Protected Sub BtnAgregarGuia_Click(sender As Object, e As EventArgs) 'Dim objInventario As New ClsInventarios 'If objInventario.AddPaqueteriaGuia(DdlPaqueteria.SelectedValue.ToEntero, CveMovimiento, TxtPaqueteriaGuia.Text.Trim, TxtPaqueteriaNumcajas.Text.ToEntero, TxtPaqueteriaPeso.Text.ToDecimal, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, ' TxtRastreo.Text.Trim, TxtDimensiones.Text.Trim, TxtFechaEst.Text.Trim) Then ' CargaGvPaqueteria() ' LimpiacontrolesPaqueteria() 'End If 'objInventario.Dispose() End Sub Protected Sub LnkRemovePaqueteriaGuia_Click(sender As Object, e As EventArgs) 'Dim GvRow As GridViewRow = DirectCast(DirectCast(sender, LinkButton).NamingContainer, GridViewRow) 'Dim CvePaqueteriaGuia As Integer = GvRow.DataKey("CvePaqueteriaGuia").ToString.ToEntero 'Dim objInventario As New ClsInventarios 'If objInventario.RemovePaqueteriaGuia(CvePaqueteriaGuia, UsuarioActual.CveEmpresa) Then ' CargaGvPaqueteria() 'End If 'objInventario.Dispose() End Sub Private Sub CargaGvPaqueteria() 'Dim objInventario As New ClsInventarios 'If objInventario.GetPaqueteriaGuia(CveMovimiento, UsuarioActual.CveEmpresa) Then ' GvPaqueriaGuias.DataSource = objInventario.DtResultados ' If objInventario.DtResultados.Rows.Count > 0 Then ' BtnAgregarGuia.Attributes.Add("data-toggle", "confirmation") ' BtnAgregarGuia.Attributes.Add("data-popout", "true") ' BtnAgregarGuia.Attributes.Add("data-original-title", "¿Está seguro de registrar una nueva guia a la factura?") ' BtnAgregarGuia.Attributes.Add("data-btn-ok-label", "si") ' Else ' BtnAgregarGuia.Attributes.Remove("data-toggle") ' BtnAgregarGuia.Attributes.Remove("data-popout") ' BtnAgregarGuia.Attributes.Remove("data-original-title") ' BtnAgregarGuia.Attributes.Remove("data-btn-ok-label") ' End If 'Else ' GvPaqueriaGuias.DataSource = Nothing 'End If 'objInventario.Dispose() 'GvPaqueriaGuias.DataBind() 'UpModalGuias.Update() End Sub Private Sub LimpiacontrolesPaqueteria() 'DdlPaqueteria.SelectedIndex = 0 'TxtPaqueteriaGuia.Text = "" 'TxtPaqueteriaNumcajas.Text = "" 'TxtPaqueteriaPeso.Text = "" 'TxtRastreo.Text = "" 'TxtDimensiones.Text = "" 'TxtFechaEst.Text = "" End Sub Protected Sub LnkGuiaPaqueteriaGuia_Click(sender As Object, e As EventArgs) 'Dim GvRow As GridViewRow = DirectCast(DirectCast(sender, LinkButton).NamingContainer, GridViewRow) 'Dim CvePaqueteriaGuia As Integer = GvRow.DataKey("CvePaqueteriaGuia").ToString.ToEntero 'Dim NumCajas As String = GvRow.DataKey("NumCajas").ToString 'Dim Guia As String = GvRow.DataKey("Guia").ToString 'Dim Peso As String = GvRow.DataKey("Peso").ToString.ToDecimal.ToString("####.00") 'Dim DTDatosClienteGuia As New DataTable 'Dim DTMovimientosDetalle As New DataTable 'Dim CvePaqueteria As Integer = GvRow.DataKey("CvePaqueteria").ToString.ToEntero 'Dim RutaRdlc As String = Server.MapPath("~") & "\Empresas\Grales\Formatos\GuiasFormato" & CvePaqueteria & ".rdlc" 'Dim Rastreo As String = GvRow.DataKey("Rastreo") 'Dim Dimensiones As String = GvRow.DataKey("Dimensiones") 'Dim FechaEstimada As String = GvRow.DataKey("FechaEstimada") 'Dim ValorStimado As Double = 0 'If Not File.Exists(RutaRdlc) Then ' RutaRdlc = Server.MapPath("~") & "\Empresas\Grales\Formatos\GuiasFormato0.rdlc" 'End If 'RutaRdlc = RutaRdlc.Replace(Server.MapPath("~") & "\", "") 'Dim params As New List(Of ReportParameter) 'Dim ObjInventario As New ClsInventarios 'If ObjInventario.GetPaqueteriaGuiasInfoFormato(CveMovimiento, UsuarioActual.CveEmpresa) Then ' DTDatosClienteGuia = ObjInventario.DtResultados 'Else ' ObjInventario.Dispose() ' Exit Sub 'End If 'If ObjInventario.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) Then ' DTMovimientosDetalle = ObjInventario.DtResultados ' DTMovimientosDetalle.Columns.Add("Peso") ' DTMovimientosDetalle.Columns.Add("Dimensiones") ' DTMovimientosDetalle.AcceptChanges() ' For Each Drow As DataRow In DTMovimientosDetalle.Rows ' Drow("Peso") = Peso ' Drow("Dimensiones") = Dimensiones ' DTMovimientosDetalle.AcceptChanges() ' Next ' ValorStimado = DtMovimientos.SUM("PU") ' ObjInventario.Dispose() 'Else ' ObjInventario.Dispose() ' Exit Sub 'End If 'If DTDatosClienteGuia.Rows.Count > 0 Then ' params.Add(New ReportParameter("NombreComercial", DTDatosClienteGuia.Rows(0)("NombreComercial").ToString)) ' params.Add(New ReportParameter("Direccion", DTDatosClienteGuia.Rows(0)("Direccion").ToString)) ' params.Add(New ReportParameter("Colonia", DTDatosClienteGuia.Rows(0)("Colonia").ToString)) ' params.Add(New ReportParameter("NoExt", DTDatosClienteGuia.Rows(0)("NoExt").ToString)) ' params.Add(New ReportParameter("NoInt", DTDatosClienteGuia.Rows(0)("NoInt").ToString)) ' params.Add(New ReportParameter("Localidad", DTDatosClienteGuia.Rows(0)("Localidad").ToString)) ' params.Add(New ReportParameter("Telefono", DTDatosClienteGuia.Rows(0)("Telefono").ToString)) ' params.Add(New ReportParameter("RFCCliente", DTDatosClienteGuia.Rows(0)("RFC").ToString)) ' params.Add(New ReportParameter("CiudadCliente", DTDatosClienteGuia.Rows(0)("Ciudad").ToString)) 'Else ' Exit Sub 'End If '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) 'params.Add(New ReportParameter("NombreEmpresa", UsuarioActual.Empresa.Empresa)) 'params.Add(New ReportParameter("EmpresaDireccion", UsuarioActual.Empresa.Direccion)) 'params.Add(New ReportParameter("EmpresaTelefono", UsuarioActual.Empresa.Telefono)) 'params.Add(New ReportParameter("EmpresaColonia", UsuarioActual.Empresa.Colonia)) 'params.Add(New ReportParameter("EmpresaLocalidad", UsuarioActual.Empresa.Localidad)) 'params.Add(New ReportParameter("RFCEmpresa", UsuarioActual.Empresa.RFC)) 'params.Add(New ReportParameter("CiudadEmpresa", UsuarioActual.Empresa.Ciudad)) 'params.Add(New ReportParameter("EmpresaTelefono", UsuarioActual.Empresa.Telefono)) 'params.Add(New ReportParameter("NumCajas", NumCajas)) 'params.Add(New ReportParameter("Peso", Peso)) 'params.Add(New ReportParameter("Guia", Guia)) 'params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Nombre)) 'params.Add(New ReportParameter("FechaImpresion", Now.ToDateTime.ToShortDateString)) 'params.Add(New ReportParameter("Anio", Now.Year.ToString)) 'params.Add(New ReportParameter("Mes", Now.Month.ToString("00"))) 'params.Add(New ReportParameter("Dia", Now.Day.ToString("00"))) 'params.Add(New ReportParameter("Rastreo", Rastreo)) 'params.Add(New ReportParameter("Dimensiones", Dimensiones)) 'params.Add(New ReportParameter("FechaEstimada", FechaEstimada)) 'If Imagen.Exists Then ' params.Add(New ReportParameter("LogoPath", $"file://{Imagen.FullName}")) 'Else ' params.Add(New ReportParameter("LogoPath", "")) 'End If 'ImprimirPDF(RutaRdlc, DTMovimientosDetalle, params, $"ReporteGuia_{Now.ToString("yyyyMMddhhmmss")}") End Sub Private Sub GvPaqueriaGuias_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvPaqueriaGuias.RowDataBound 'If e.Row.RowType = DataControlRowType.DataRow Then ' Dim Lnk As LinkButton = e.Row.FCLinkButton("LnkGuiaPaqueteriaGuia") ' Dim Destinatario As String = e.Row.DataKey("Mail").ToString ' If Destinatario.Length = 0 Then ' e.Row.FCLinkButton("LnkGuiaPaqueteriaMail").Visible = False ' Else ' e.Row.FCLinkButton("LnkGuiaPaqueteriaMail").Attributes.Add("title", "Enviar correo a: " & Destinatario) ' End If ' ScriptManager.GetCurrent(Me).RegisterPostBackControl(Lnk) 'End If End Sub Private Sub GvPaqueteriaCreaEnlaces() 'For Each GvRow As GridViewRow In GvPaqueriaGuias.Rows ' If GvRow.RowType = DataControlRowType.DataRow Then ' Dim Lnk As LinkButton = GvRow.FCLinkButton("LnkGuiaPaqueteriaGuia") ' ScriptManager.GetCurrent(Me).RegisterPostBackControl(Lnk) ' End If 'Next End Sub Protected Sub LnkGuiaPaqueteriaMail_Click(sender As Object, e As EventArgs) 'Dim GvRow As GridViewRow = DirectCast(DirectCast(sender, LinkButton).NamingContainer, GridViewRow) 'Dim SerieFolio As String = GvRow.DataKey("SerieFolio").ToString 'Dim NombreComercial As String = GvRow.DataKey("NombreComercial").ToString 'Dim Destinatario As String = GvRow.DataKey("Mail").ToString 'Dim Paqueteria As String = GvRow.DataKey("Paqueteria").ToString 'Dim Guia As String = GvRow.DataKey("Guia").ToString 'Dim Rastreo As String = GvRow.DataKey("Rastreo").ToString 'Dim CveVenta As Integer = GvRow.DataKey("CveVenta").ToEntero 'EnviarCorreoNotificacion(SerieFolio, NombreComercial, Destinatario, Paqueteria, Guia, Rastreo, CveVenta) End Sub Private Sub EnviarCorreoNotificacion(SerieFolio As String, NombreComercial As String, Destinatario As String, Paqueteria As String, Guia As String, Rastreo As String, CveVenta As Integer) 'Dim Correo As New ClsSisMail() 'Dim Asunto As String = UsuarioActual.Empresa.NombreCorto & " Envio de pedido: " & SerieFolio 'Dim Cuerpo As New StringBuilder 'Cuerpo.AppendLine($"Estimado {NombreComercial} le informamos que los productos de la factura {SerieFolio} han sido enviados mediante la paquetería {Paqueteria} con Guia {Guia} , Rastreo {Rastreo}.

") 'Cuerpo.AppendLine("") 'Cuerpo.AppendLine("") 'For Each Drow As DataRow In DtMovimientos.Rows ' Cuerpo.AppendLine($"") 'Next 'Cuerpo.AppendLine("
CantidadProducto
{Drow("Cantidad").ToString.ToEntero }{Drow("PS").ToString}
") 'Cuerpo.AppendLine("

Dudas y aclaraciones departamento de ateción al cliente Tel. 2142200.") 'Destinatario = "rakcsle.rakcsle@gmail.com" 'If Correo.SendMail(UsuarioActual.Empresa, Destinatario, Asunto, Cuerpo.ToString) Then ' GuardarBitacora(CveVenta, "", "Notificación de envío de productos al cliente") ' Alert("Correo enviado existosamente a " & Destinatario) 'Else ' Alert("Se presento un error al enviar el correo a " & Destinatario) 'End If End Sub #End Region #Region "DDL CLIENTE / CLIENTE SUCURSAL - SELECTED INDEX CHANGED" Private Sub InicializaClientes() If UsuarioActual.CveEmpresa.Contiene(72, 80) AndAlso CveMovimiento <= 0 Then DdlClientes.DataSource = GlobalDTCliente(UsuarioActual.CveEmpresa) DdlClientes.DataBind() DdlClientes.Items.Insert(0, New ListItem("Seleccione", "-1")) DdlClientes.SelectedValue = "-1" End If End Sub Protected Sub ActivaClientes() If UsuarioActual.CveEmpresa.Contiene(72, 80) Then DivCliente.Visible = True DivDepartamentoEntrega.Visible = True 'TxtDepartamentoEntrega.Text = "" End If 'If UsuarioActual.CveRol = 1 Then ' RfvCliente.Enabled = False 'End If End Sub Protected Sub DdlClientes_SelectedIndexChanged(sender As Object, e As EventArgs) CambiaCliente() End Sub Private Sub CambiaCliente() DivClienteSucursal.Visible = False DdlClientesSucursales.Items.Clear() CargaSucursalesCliente() End Sub Protected Sub CargaSucursalesCliente() DdlClientesSucursales.Enabled = True Dim ObjCliente As New ClsClientes If ObjCliente.GetSucursales(DdlClientes.SelectedValue.ToEntero) Then If ObjCliente.DtResultados.Rows.Count > 0 Then DivClienteSucursal.Visible = True UpGenerales.Update() DdlClientesSucursales.DataSource = ObjCliente.DtResultados DdlClientesSucursales.DataBind() DdlClientesSucursales.Items.Insert(0, New ListItem("Seleccione", "-1")) DdlClientesSucursales.SelectedValue = "-1" UpGenerales.Update() End If End If ObjCliente.Dispose() End Sub Private Sub BtnGeneraPrepoliza_Click(sender As Object, e As EventArgs) Handles BtnGeneraPrepoliza.Click ''PREPOLIZA - SE CAMBIO DE LUGAR EL USO DE ESTA PARTE Contabilizar() End Sub Private Sub Contabilizar() Dim ObjInventario As New ClsInventarios Dim ErrorMovInv As Boolean = False Dim ObjConta As New ClsContabilidad(ObjInventario.IniciaTransacSQL()) Dim DtCostos As DataTable = Nothing Dim ValorInventario As Decimal = 0 Dim ValorInventarioME As Decimal = 0 Dim CvePrePolizaRegistrada As Integer = -1 ObjInventario.GetMovimientos(CveMovimiento, -1, -1, UsuarioActual.CveEmpresa) Dim CveVenta As Integer = ObjInventario.CveVenta Dim MovAlmacen As Boolean = False Dim OrigenMov As Integer = GlobalDTInvConceptos.FiltroPrimeroValor("Origen", "CveConcepto = " & DdlConcepto.SelectedValue).ToEntero If OrigenMov = 1 Then MovAlmacen = False Else MovAlmacen = True CveMovimientoRelacionado = ObjInventario.DtResultados.Rows(0)("CveMtoRel").ToString.ToEntero If ObjInventario.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) Then DtCostos = ObjInventario.DtResultados Dim tmpCostos As DataTable = DtCostos.FiltraParametros("", "", {"CveClasificacion"}) Dim DTOCs As DataTable = DtCostos.FiltraParametros("", "", {"CveOrdenCompraDetalle"}) Dim IdCtaContable As Integer = 0 Dim ConceptoPoliza As String = String.Format("{0}-{1}", DdlConcepto.SelectedItem.Text, If(DdlConcepto.SelectedValue.ToEntero.Contiene(3), HplVenta.Text, TxtFolio.Text)) Dim Contabilizable As Boolean = True If tmpCostos.Rows.Count > 0 Then Dim Concepto As String = If(TxtObservaciones.Text = "", ConceptoPoliza, $" {TxtObservaciones.Text}") Dim CvePrePoliza = ObjConta.AddPrePolizas("Inv_EntradaSalida", 74, DtCostos.SUM("Total"), DtCostos.SUM("Total"), 1, TxtFecha.Text.ToDate, ConceptoPoliza, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) CvePrePolizaRegistrada = CvePrePoliza If HdnCveOrdenCompra.Value.ToEntero > 0 Then MovAlmacen = False For Each RowOC As DataRow In DTOCs.Rows ValorInventario = DtCostos.SUM("Total", $"CveOrdenCompraDetalle = {RowOC("CveOrdenCompraDetalle")}").ToString.ToDecimal ValorInventarioME = DtCostos.SUM("TotalExtranjero", $"CveOrdenCompraDetalle = {RowOC("CveOrdenCompraDetalle")}").ToString.ToDecimal If ValorInventarioME > 0 Then If ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ValorInventarioME, Concepto, 228, Concepto, TxtFecha.Text.ToDate, IdCtaContable, -1, CveVenta:=CveVenta, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=ValorInventarioME, ImporteME:=ValorInventarioME, CveOC:=HdnCveOrdenCompra.Value.ToEntero, CveOCDetalle:=RowOC("CveOrdenCompraDetalle").ToString.ToEntero, TipoCambio:=LbTipoCambio.Text.ToDecimal) Then ValorInventario = ValorInventario - ValorInventarioME If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ValorInventario, Concepto, 229, Concepto, TxtFecha.Text.ToDate, IdCtaContable, -1, CveVenta:=CveVenta, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=ValorInventario, ImporteME:=ValorInventarioME, CveOC:=HdnCveOrdenCompra.Value.ToEntero, CveOCDetalle:=RowOC("CveOrdenCompraDetalle").ToString.ToEntero, TipoCambio:=LbTipoCambio.Text.ToDecimal) Then ErrorMovInv = True Exit For End If Else ErrorMovInv = True Exit For End If Else If ObjConta.GetRetCuenta(176, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then IdCtaContable = ObjConta.DtResultados.FiltroPrimeroValor("IdCtaContable").ToEntero End If If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ValorInventario, Concepto, 176, Concepto, TxtFecha.Text.ToDate, IdCtaContable, -1, CveVenta:=CveVenta, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=ValorInventario, CveOC:=HdnCveOrdenCompra.Value.ToEntero, CveOCDetalle:=RowOC("CveOrdenCompraDetalle").ToString.ToEntero) Then ErrorMovInv = True Exit For End If End If Next Else If ObjInventario.Modulo.Contiene("RA/G4") Then Contabilizable = True If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, Not MovAlmacen, DtCostos.SUMD("Total").RoundSQL, Concepto, 205, Concepto, TxtFecha.Text.ToDate, IdCtaContable, -1, CveCompra:=CveCompra, CveMovimientoAlmacen:=CveMovimientoRelacionado, ImporteMX:=DtCostos.SUMD("Total").RoundSQL, Contabilizable:=Contabilizable) Then ErrorMovInv = True End If ElseIf ObjInventario.Modulo.Contiene("RE/G5", "EA/G5") Then Contabilizable = True If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, Not MovAlmacen, DtCostos.SUMD("Total").RoundSQL, Concepto, 331, Concepto, TxtFecha.Text.ToDate, IdCtaContable, -1, CveCompra:=CveCompra, CveMovimientoAlmacen:=CveMovimientoRelacionado, ImporteMX:=DtCostos.SUMD("Total").RoundSQL, Contabilizable:=Contabilizable) Then ErrorMovInv = True End If Else If ObjInventario.Modulo.Contiene("M/CU", "RU/G") Then Contabilizable = True If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, Not MovAlmacen, DtCostos.SUMD("Total").RoundSQL, HplVenta.Text, 278, Concepto, TxtFecha.Text.ToDate, IdCtaContable, -1, CveVenta:=CveVenta, CveCompra:=CveCompra, CveMovimientoAlmacen:=CveMovimientoRelacionado, ImporteMX:=DtCostos.SUMD("Total").RoundSQL, Contabilizable:=Contabilizable) Then ErrorMovInv = True End If Else If ObjInventario.Modulo.Contiene("TA/G1", "Recons") Then Contabilizable = False If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, Not MovAlmacen, DtCostos.SUMD("Total").RoundSQL, Concepto, 68, Concepto, TxtFecha.Text.ToDate, IdCtaContable, -1, CveVenta:=CveVenta, CveMovimientoAlmacen:=CveMovimientoRelacionado, ImporteMX:=DtCostos.SUMD("Total").RoundSQL, Contabilizable:=Contabilizable) Then ErrorMovInv = True End If Else If ObjInventario.Modulo.Contiene("Consig") Then Contabilizable = False If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, Not MovAlmacen, DtCostos.SUMD("Total").RoundSQL, Concepto, 95, Concepto, TxtFecha.Text.ToDate, IdCtaContable, -1, CveVenta:=CveVenta, CveMovimientoAlmacen:=CveMovimientoRelacionado, ImporteMX:=DtCostos.SUMD("Total").RoundSQL, Contabilizable:=Contabilizable) Then ErrorMovInv = True End If Else If ObjInventario.Modulo.Contiene("ASA/G1", "Vta/E4", "ARMPAQ1", "RE/GSC3") Then Contabilizable = False If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, Not MovAlmacen, DtCostos.SUMD("Total").RoundSQL, Concepto, 68, Concepto, TxtFecha.Text.ToDate, IdCtaContable, -1, CveVenta:=CveVenta, CveMovimientoAlmacen:=CveMovimientoRelacionado, ImporteMX:=DtCostos.SUMD("Total").RoundSQL, Contabilizable:=Contabilizable) Then ErrorMovInv = True End If Else If DdlConcepto.SelectedValue.Contiene("6", "22", "23", "7", "16", "21", "24") Then 'genero las prepolizas manuales Dim tCveConcepto As Integer = 95 Dim CveCuenta As Integer If UsuarioActual.CveEmpresa = 119 Then CveCuenta = 55519 IdCtaContable = 1 If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, Not MovAlmacen, DtCostos.SUMD("Total"), Concepto, tCveConcepto, Concepto, TxtFecha.Text.ToDate, IdCtaContable, -1, CveVenta:=CveVenta, CveClasificacion:=-1, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=DtCostos.SUMD("Total"), CveSubProyecto:=-1, CveCuenta:=CveCuenta, Contabilizable:=Contabilizable) Then ErrorMovInv = True End If Else Dim tCveSubProyecto = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveSubProyecto", $"CveAlmacen={DdlAlmacen.SelectedValue.ToEntero}").ToEntero Dim tCveConcepto As Integer = 69 If ObjInventario.CveConcepto = 37 Then tCveConcepto = 181 IdCtaContable = UsuarioActual.Empresa.Funcionalidad(342).ToEntero End If For Each RowInv As DataRow In tmpCostos.Rows ValorInventario = DtCostos.SUM("Total", $"CveClasificacion = {RowInv("CveClasificacion")}").ToString.ToDecimal.RoundSQL If tCveConcepto = 69 Then IdCtaContable = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCuentaCostos", $"CveClasificacion = {RowInv("CveClasificacion")}").ToEntero End If If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, Not MovAlmacen, ValorInventario, Concepto, tCveConcepto, Concepto, TxtFecha.Text.ToDate, IdCtaContable, -1, CveVenta:=CveVenta, CveClasificacion:=RowInv("CveClasificacion").ToString.ToEntero, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=ValorInventario, CveSubProyecto:=tCveSubProyecto, Contabilizable:=Contabilizable) Then ErrorMovInv = True Exit For End If Next End If End If End If End If End If End If End If IdCtaContable = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", $"CveAlmacen={DdlAlmacen.SelectedValue.ToEntero}").ToEntero If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, MovAlmacen, DtCostos.SUMD("Total").RoundSQL, Concepto, 68, Concepto, TxtFecha.Text.ToDate, IdCtaContable, -1, CveVenta:=CveVenta, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=DtCostos.SUMD("Total").RoundSQL, Contabilizable:=Contabilizable) Then ErrorMovInv = True End If End If End If If ErrorMovInv = False Then ObjInventario.Commit() ObjInventario.Dispose() ObjConta.Dispose() If CvePrePolizaRegistrada > 0 Then Response.Redirect($"../Contabilidad/RegPrePoliza.aspx?CvePrePoliza={CvePrePolizaRegistrada}", True) End If Else ObjConta.RollBack() ObjInventario.Dispose() ObjConta.Dispose() End If End Sub #End Region #Region "CAMBIO INVENTARIO FISICO" Protected Sub LnkCambioInventarioFisico_Click(sender As Object, e As EventArgs) RegistraScript(String.Format("$('#{0}').modal();", "DivModalCambioFisico")) End Sub Protected Sub LnkCambioVigencia_Click(sender As Object, e As EventArgs) RegistraScript(String.Format("$('#{0}').modal();", "DivModalCambiarVigencias")) TxtCantCambio.Text = "" TxtSerieCambio.Text = "" TxtFechaCambio.Text = Now.ToString("dd/MM/yyyy") TxtObsCambioVigencia.Text = "" Th5.Visible = False Th6.Visible = False Th7.Visible = False Th8.Visible = False Td5.Visible = False Td6.Visible = False Td7.Visible = False Td8.Visible = False DdlPSCambioSalida.txtText.Value = "" DdlPSCambioSalida.txtValue.Value = "" DdlSeccionCambio.SelectedValueExist(-1) DdlAlmacenCambioVigencias.SelectedValueExist(-1) AplicaVigenciaCambioVigencia = False UpCambioSalida.Update() UpModalCambiarVigencias.Update() End Sub #Region "ENTRADAS" Private Sub BtnAgregarEntrada_Click(sender As Object, e As EventArgs) Handles BtnAgregarEntrada.Click If Not DdlPS.SelectedValue.ToEntero > 0 Then RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") Alert("Es necesario especificar el producto.", TipoMensaje.MsgAdvertencia) Exit Sub End If AddPSEntrada(DdlPS.SelectedValue.ToEntero, TxtCantidadInvFisico.Text.ToDouble, TxtCostoPromedio.Text.ToDecimal) End Sub Protected Sub AddPSEntrada(CvePS As Integer, Cantidad As Double, CostoPromedio As Double) If DdlAlmacenInventarioFisico.SelectedValue.ToEntero <= 0 Then Alert("Seleccione un almacen", TipoMensaje.MsgAdvertencia) : RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") : DdlPS.SelectedText = "" : Exit Sub Dim Valido As Boolean = True If Valido Then Dim CveClasificacion As Integer Dim CveUM As Double Dim CodigoPS As String = "" Dim PS As String = "" Dim CveSeccionAlmacen As Integer = DdlSeccionAlmacenEntrada.SelectedValue.ToEntero Dim Serie As String = If(TxtSerieEntrada.Text = "", "", TxtSerieEntrada.Text) Dim Lote As String = If(TxtLoteEntrada.Text = "", "", TxtLoteEntrada.Text) Dim Caducidad As String = If(TxtCaducidadEntrada.Text = "", MinFecha.ToShortDateString, TxtCaducidadEntrada.Text) Dim dr As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS).FiltroPrimero("", "PS") If dr IsNot Nothing Then CveClasificacion = dr("CveClasificacion").ToString.ToEntero CveUM = dr("CveUM").ToString.ToEntero CodigoPS = dr("PSCodigo").ToString.ToString PS = dr("PS").ToString.ToString End If Dim registro As DataRow = DtMovimientosEntradaInvFisico.NewRow registro.Item("Cantidad") = Cantidad registro.Item("CveUM") = CveUM registro.Item("CvePS") = CvePS registro.Item("CodigoPS") = CodigoPS registro.Item("PS") = PS registro.Item("PU") = CostoPromedio registro.Item("Total") = Cantidad * CostoPromedio registro.Item("CveClasificacion") = CveClasificacion registro.Item("Estatus") = "" registro.Item("CveSeccionAlmacen") = CveSeccionAlmacen registro.Item("Serie") = Serie registro.Item("Lote") = Lote registro.Item("FechaCaducidad") = Caducidad DtMovimientosEntradaInvFisico.Rows.Add(registro) CargaGvEntradas(DtMovimientosEntradaInvFisico) RegistraScript("playsonidito('beep-07.wav')") End If End Sub Private Sub CargaGvEntradas(DtTemp As DataTable) GvEntradas.DataSource = DtTemp GvEntradas.DataBind() UpEntradasGv.Update() If DtTemp IsNot Nothing AndAlso DtTemp.Rows.Count > 0 Then GvEntradas.Columns(3).Visible = DtTemp.MAX("CveSeccionAlmacen").ToEntero > 0 GvEntradas.Columns(4).Visible = DtTemp.MAX("Serie") <> "" GvEntradas.Columns(5).Visible = DtTemp.MAX("Lote") <> "" GvEntradas.Columns(6).Visible = DtTemp.MAX("FechaCaducidad").ToDate > MinFecha If Not String.IsNullOrWhiteSpace(UsuarioActual.Empresa.Funcionalidad(147)) Then GvEntradas.Columns(6).HeaderText = UsuarioActual.Empresa.Funcionalidad(147) End If End Sub Protected Sub DdlPSInvFisico_ValueChanged(sender As Object, e As EventArgs) Handles DdlPS.selectedindexchange ProductChange() End Sub Private Sub ProductChange() If DdlPS.SelectedValue.ToEntero > 0 Then Dim ObjInventario As New ClsInventarios Dim CostoPromedio As Decimal = ObjInventario.GetCostoPS(DdlPS.SelectedValue.ToEntero, txtCantidad.Text.ToDouble, DdlAlmacenInventarioFisico.SelectedValue.ToEntero, "", TxtFecha.Text.ToDate) 'GlobalDTPS(UsuarioActual.CveEmpresa, DdlPS.SelectedValue.ToEntero).FiltroPrimeroValor("CostoPromedio", "").ToDecimal If CostoPromedio > 0 Then TxtCostoPromedio.Text = CostoPromedio.FormatoNumero Else TxtCostoPromedio.Text = "0.00" End If ObjInventario.Dispose() End If UpModalInventarioFisico.Update() End Sub Protected Sub DeleteRowInvFisicoEntrada(ByVal sender As Object, ByVal e As EventArgs) Dim lnkRemove As LinkButton = DirectCast(sender, LinkButton) If DtMovimientosEntradaInvFisico.Rows.Count > 0 And lnkRemove.CommandArgument.ToString.Length > 0 Then Dim i As Integer i = lnkRemove.CommandArgument.ToString.ToEntero Dim Drs As DataRow() = DtMovimientosEntradaInvFisico.Select(String.Format("No = {0}", i)) If Drs.Count > 0 Then Drs(0).Delete() End If DtMovimientosEntradaInvFisico.AcceptChanges() End If GvEntradas.EditIndex = -1 CargaGvEntradas(DtMovimientosEntradaInvFisico) End Sub #End Region #Region "SALIDAS" Private Sub BtnAgregarSalida_Click(sender As Object, e As EventArgs) Handles BtnAgregarSalida.Click Dim ObjProductosServicios As New ClsProductosServicios() Dim ObjInventario As New ClsInventarios Dim CveUM As Integer Dim Mensaje As String = "" 'Dim FechaCaducidad As Date 'Dim lote As String If ObjProductosServicios.GetPS(DdlPSSalida.SelectedValue.ToEntero, -1, UsuarioActual.CveEmpresa) Then If ObjProductosServicios.DtResultados.Rows.Count > 0 Then CveUM = ObjProductosServicios.CveUnidadMedida.ToString.ToEntero End If End If Dim Lote As String = If(TxtLoteSalida.Text = "", "", TxtLoteSalida.Text) Dim FechaCaducidad As Date = If(TxtCaducidadSalida.Text = "", MinFecha.ToShortDateString, TxtCaducidadSalida.Text).ToDate If ObjInventario.GetExistenciasPS(DdlPSSalida.SelectedValue.ToEntero, CveUM, UsuarioActual.CveEmpresa, DdlAlmacenInventarioFisico.SelectedValue.ToEntero, PendientePorSurtir:=1, Lote:=Lote, FechaCaducidad:=FechaCaducidad) >= TxtCantidadSalidaInv.Text.ToDouble Then If Not DdlPSSalida.SelectedValue.ToEntero > 0 Then RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") Alert("Es necesario especificar el producto.", TipoMensaje.MsgAdvertencia) Exit Sub End If AddPSSalida(DdlPSSalida.SelectedValue.ToEntero, TxtCantidadSalidaInv.Text.ToDouble) Else Mensaje = String.Format("No hay existencias suficientes del producto: {0}", ObjProductosServicios.PS) RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") Alert(Mensaje, TipoMensaje.MsgError) End If ObjInventario.Dispose() ObjProductosServicios.Dispose() End Sub Protected Sub AddPSSalida(CvePS As Integer, Cantidad As Double) If DdlAlmacenInventarioFisico.SelectedValue.ToEntero <= 0 Then Alert("Seleccione un almacen", TipoMensaje.MsgAdvertencia) : RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") : DdlPSSalida.SelectedText = "" : Exit Sub Dim Valido As Boolean = True If Valido Then Dim CveClasificacion As Integer Dim CveUM As Double Dim CodigoPS As String = "" Dim PS As String = "" Dim CveSeccionAlmacen As Integer = DdlSeccionAlmacenSalida.SelectedValue.ToEntero Dim Serie As String = If(TxtSerieSalida.Text = "", "", TxtSerieSalida.Text) Dim Lote As String = If(TxtLoteSalida.Text = "", "", TxtLoteSalida.Text) Dim Caducidad As String = If(TxtCaducidadSalida.Text = "", MinFecha.ToShortDateString, TxtCaducidadSalida.Text) Dim dr As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS).FiltroPrimero("", "PS") If dr IsNot Nothing Then CveClasificacion = dr("CveClasificacion").ToString.ToEntero CveUM = dr("CveUM").ToString.ToEntero CodigoPS = dr("PSCodigo").ToString.ToString PS = dr("PS").ToString.ToString End If Dim registro As DataRow = DtMovimientosSalidaInvFisico.NewRow registro.Item("Cantidad") = Cantidad registro.Item("CveUM") = CveUM registro.Item("CvePS") = CvePS registro.Item("CodigoPS") = CodigoPS registro.Item("PS") = PS registro.Item("PU") = 0 registro.Item("Total") = 0 registro.Item("CveClasificacion") = CveClasificacion registro.Item("Estatus") = "" registro.Item("CveSeccionAlmacen") = CveSeccionAlmacen registro.Item("Serie") = Serie registro.Item("Lote") = Lote registro.Item("FechaCaducidad") = Caducidad DtMovimientosSalidaInvFisico.Rows.Add(registro) CargaGvSalidas(DtMovimientosSalidaInvFisico) RegistraScript("playsonidito('beep-07.wav')") End If End Sub Private Sub CargaGvSalidas(DtTemp As DataTable) GvSalidas.DataSource = DtTemp GvSalidas.DataBind() UpSalidaGv.Update() If DtTemp IsNot Nothing AndAlso DtTemp.Rows.Count > 0 Then GvSalidas.Columns(2).Visible = DtTemp.MAX("CveSeccionAlmacen").ToEntero > 0 GvSalidas.Columns(3).Visible = DtTemp.MAX("Serie") <> "" GvSalidas.Columns(4).Visible = DtTemp.MAX("Lote") <> "" GvSalidas.Columns(5).Visible = DtTemp.MAX("FechaCaducidad").ToDate > MinFecha GvSalidas.Columns(5).HeaderText = UsuarioActual.Empresa.Funcionalidad(147) End If End Sub Protected Sub DeleteRowInvFisicoSalida(ByVal sender As Object, ByVal e As EventArgs) Dim lnkRemove As LinkButton = DirectCast(sender, LinkButton) If DtMovimientosSalidaInvFisico.Rows.Count > 0 And lnkRemove.CommandArgument.ToString.Length > 0 Then Dim i As Integer i = lnkRemove.CommandArgument.ToString.ToEntero Dim Drs As DataRow() = DtMovimientosSalidaInvFisico.Select(String.Format("No = {0}", i)) If Drs.Count > 0 Then Drs(0).Delete() End If DtMovimientosSalidaInvFisico.AcceptChanges() End If GvSalidas.EditIndex = -1 CargaGvSalidas(DtMovimientosSalidaInvFisico) End Sub #End Region #Region "CAMBIO VIGENCIA" Private Sub LnkAddSalidaCambio_Click(sender As Object, e As EventArgs) Handles LnkAddSalidaCambio.Click If Not DdlPSCambioSalida.SelectedValue.ToEntero > 0 Then RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") Alert("Es necesario especificar el producto.", TipoMensaje.MsgAdvertencia) Exit Sub End If If AplicaVigenciaCambioVigencia And TxtSerieCambio.Text.Trim.Length = 0 Then Alert("Es necesario especificar la serie del producto.", TipoMensaje.MsgAdvertencia) Exit Sub End If AddPSCambioSalida(DdlPSCambioSalida.SelectedValue.ToEntero, TxtCantCambio.Text.ToDouble) End Sub Protected Sub DdlPSCambioSalida_selectedindexchange(sender As Object, e As EventArgs) Td6.Visible = False Th6.Visible = False If DdlPSCambioSalida.SelectedValue.ToEntero > 0 Then Using ObjPS As New ClsProductosServicios() If ObjPS.GetPS(DdlPSCambioSalida.SelectedValue.ToEntero, -1, UsuarioActual.CveEmpresa) AndAlso ObjPS.DtResultados.Rows.Count > 0 Then AplicaVigenciaCambioVigencia = If(ObjPS.DtResultados.Rows(0)("AplicaSerie").ToString = "", False, Boolean.Parse(ObjPS.DtResultados.Rows(0)("AplicaSerie").ToString)) Td6.Visible = AplicaVigenciaCambioVigencia Th6.Visible = AplicaVigenciaCambioVigencia End If End Using End If UpCambioSalida.Update() End Sub Protected Sub AddPSCambioSalida(CvePS As Integer, Cantidad As Double) If DdlAlmacenCambioVigencias.SelectedValue.ToEntero <= 0 Then Alert("Seleccione un almacen", TipoMensaje.MsgAdvertencia) : RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") : DdlPSCambioSalida.SelectedText = "" : Exit Sub Dim Valido As Boolean = True If Valido Then Dim CveClasificacion As Integer Dim CveUM As Double Dim CodigoPS As String = "" Dim PS As String = "" Dim CveSeccionAlmacen As Integer = DdlSeccionCambio.SelectedValue.ToEntero Dim Serie As String = If(TxtSerieCambio.Text = "", "", TxtSerieCambio.Text) Dim Lote As String = If(TxtLoteCambio.Text = "", "", TxtLoteCambio.Text) Dim Caducidad As String = If(TxtCaducidadCambio.Text = "", MinFecha.ToShortDateString, TxtCaducidadCambio.Text) Dim dr As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS).FiltroPrimero("", "PS") If dr IsNot Nothing Then CveClasificacion = dr("CveClasificacion").ToString.ToEntero CveUM = dr("CveUM").ToString.ToEntero CodigoPS = dr("PSCodigo").ToString.ToString PS = dr("PS").ToString.ToString End If Dim registro As DataRow = DtMovimientosCambioVigencias.NewRow registro.Item("Cantidad") = Cantidad registro.Item("CveUM") = CveUM registro.Item("CvePS") = CvePS registro.Item("CodigoPS") = CodigoPS registro.Item("PS") = PS registro.Item("PU") = 0 registro.Item("Total") = 0 registro.Item("CveClasificacion") = CveClasificacion registro.Item("Estatus") = "" registro.Item("CveSeccionAlmacen") = CveSeccionAlmacen registro.Item("Serie") = Serie registro.Item("Lote") = Lote registro.Item("FechaCaducidad") = Caducidad If CvePS > 0 Then Using ObjPS As New ClsProductosServicios() If ObjPS.GetPS(CvePS, -1, UsuarioActual.CveEmpresa) AndAlso ObjPS.DtResultados.Rows.Count > 0 Then Dim CvePSAdicionalVigencia = ObjPS.DtResultados.Rows(0)("CvePSAdicionalVigencia").ToString.ToEntero() Dim CodigoPSVigencia As String = ObjPS.DtResultados.Rows(0)("CodigoPSVigencia").ToString 'SI EXISTE UN MOVIMIENTO DE VIGENCIA If CvePSAdicionalVigencia > 0 Then If ObjPS.GetPS(CvePSAdicionalVigencia, -1, UsuarioActual.CveEmpresa) AndAlso ObjPS.DtResultados.Rows.Count > 0 Then registro.Item("CvePSVigencia") = CvePSAdicionalVigencia registro.Item("CodigoPSVigencia") = CodigoPSVigencia registro.Item("CveUMVigencia") = ObjPS.DtResultados.Rows(0)("CveUM").ToString.ToEntero() DtMovimientosCambioVigencias.Rows.Add(registro) End If Else Alert("Este producto no tiene un producto de vigencia relacionado", TipoMensaje.MsgAdvertencia) End If End If End Using End If CargaGvCambioSalidas(DtMovimientosCambioVigencias) RegistraScript("playsonidito('beep-07.wav')") End If End Sub Protected Sub DeleteRowCambioVigencia(ByVal sender As Object, ByVal e As EventArgs) Dim lnkRemove As LinkButton = DirectCast(sender, LinkButton) If DtMovimientosCambioVigencias.Rows.Count > 0 And lnkRemove.CommandArgument.ToString.Length > 0 Then Dim i As Integer i = lnkRemove.CommandArgument.ToString.ToEntero Dim Drs As DataRow() = DtMovimientosCambioVigencias.Select(String.Format("No = {0}", i)) If Drs.Count > 0 Then Drs(0).Delete() End If DtMovimientosCambioVigencias.AcceptChanges() End If GvSalidasCambioVigencia.EditIndex = -1 CargaGvCambioSalidas(DtMovimientosCambioVigencias) End Sub Private Sub CargaGvCambioSalidas(DtTemp As DataTable) GvSalidasCambioVigencia.DataSource = DtTemp GvSalidasCambioVigencia.DataBind() If DtTemp IsNot Nothing AndAlso DtTemp.Rows.Count > 0 Then GvSalidasCambioVigencia.Columns(2).Visible = DtTemp.MAX("CveSeccionAlmacen").ToEntero > 0 GvSalidasCambioVigencia.Columns(3).Visible = DtTemp.MAX("Serie") <> "" GvSalidasCambioVigencia.Columns(4).Visible = DtTemp.MAX("Lote") <> "" GvSalidasCambioVigencia.Columns(5).Visible = DtTemp.MAX("FechaCaducidad").ToDate > MinFecha GvSalidasCambioVigencia.Columns(5).HeaderText = UsuarioActual.Empresa.Funcionalidad(147) End If UpGvCambioSalidas.Update() End Sub Protected Sub GvSalidasCambioVigencia_RowDataBound(sender As Object, e As GridViewRowEventArgs) If e.Row.RowType = DataControlRowType.DataRow Then e.Row.Cells(1).CssClass = "SubTotales" e.Row.Cells(6).CssClass = "Totales" End If End Sub #End Region #Region "GUARDAR" Private Sub BtnAplicarCambioInvFisico_Click(sender As Object, e As EventArgs) Handles BtnAplicarCambioInvFisico.Click If GvEntradas.Rows.Count = 0 And GvSalidas.Rows.Count = 0 Then Alert("No hay ningun registro para generar el movimiento. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgError) RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") RegistraScript(String.Format("$('#{0}').modal();", "DivModalCambioFisico")) Exit Sub End If If Not TxtIFDescripcion.Text.Trim.Length > 0 Then Alert("La descripción es requerida", TipoMensaje.MsgAdvertencia) Exit Sub End If Dim ObjInventario As New ClsInventarios Dim ObjConta As New ClsContabilidad(ObjInventario.IniciaTransacSQL()) Dim CveMovimientoEntrada As Integer = -1 Dim FolioEntrada As Integer = -1 Dim CveMovimientoSalida As Integer = -1 Dim FolioSalida As Integer = -1 Dim ErrorMovInv As Boolean = False Dim Mensaje As String = "" Dim ValorEntrada As Decimal = 0 Dim ValorSalida As Decimal = 0 Dim ImporteConcepto As Decimal = 0 Dim tConcepto As String = TxtIFDescripcion.Text.Trim Dim Fecha As Date = (TxtFechaInvFisico.Text.ToDate.ToString("yyyy/MM/dd ") & Now.ToShortTimeString).ToDate Dim tCveSubProyectoEntrada As Integer = -1 Dim tCveSubProyectoSalida As Integer = -1 Dim TipoMovto As Boolean = False Dim idCtaContableEntrada As Integer = 0 Dim idCtaContableSalida As Integer = 0 Dim Prorratear As Boolean = If(UsuarioActual.CveEmpresa = 172 AndAlso DtMovimientosSalidaInvFisico.Rows.Count > 0 AndAlso DtMovimientosEntradaInvFisico.Rows.Count > 0, True, False) Dim ProPU As Decimal = 0 'Dim ImporteSalida As Decimal = 'DtMovimientosSalidaInvFisico 'DtMovimientosEntradaInvFisico Dim IdCuentaOtrosIngresos As Integer = UsuarioActual.Empresa.IdCuentaOtrosIngresos Select Case UsuarioActual.CveEmpresa Case 119 IdCuentaOtrosIngresos = 1319 End Select Dim CveAlmacen As Integer = DdlAlmacenInventarioFisico.SelectedValue.ToEntero Dim CveModalidad As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=CveAlmacen).FiltroPrimeroValor("CveModalidad").ToEntero() Dim EsContabilizable As Boolean = (CveModalidad = 1) 'MOVIMIENTO DE ENTRADA If DtMovimientosEntradaInvFisico.Rows.Count > 0 Then 'FolioEntrada = ObjInventario.GetFolioSiguiente(32, UsuarioActual.CveEmpresa) CveMovimientoEntrada = ObjInventario.AddMovimiento(CveAlmacen, 32, 1, Fecha, FolioEntrada, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:=TxtIFDescripcion.Text.Trim, Modulo:="ES/AJ1") FolioEntrada = ObjInventario.Folio Else CveMovimientoEntrada = -1 End If 'MOVIMIENTO DE SALIDA If DtMovimientosSalidaInvFisico.Rows.Count > 0 Then 'FolioSalida = ObjInventario.GetFolioSiguiente(34, UsuarioActual.CveEmpresa) CveMovimientoSalida = ObjInventario.AddMovimiento(CveAlmacen, 34, 1, Fecha, FolioSalida, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, CveMovimientoRelacionado:=CveMovimientoEntrada, Observaciones:=TxtIFDescripcion.Text.Trim, Modulo:="ES/AJ2") FolioSalida = ObjInventario.Folio End If 'Registro PrePoliza Dim CvePrePoliza As Integer = ObjConta.AddPrePolizas("Inv/E/S INVENTARIO FISICO", 53, 0, 0, 1, Fecha, TxtIFDescripcion.Text.Trim, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveTipoPoliza:=3) 'VALIDA, sino hay registrado ningun movimiento, que no siga If (CveMovimientoEntrada <= 0 AndAlso CveMovimientoSalida <= 0) Or CvePrePoliza <= 0 Then Alert("Ocurrió un error al realizar los registros. Por favor verifique y vuelva a intentar", TipoMensaje.MsgError) RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") ObjInventario.RollBack() 'deshace lo insertado. ObjInventario.Dispose() 'elimino la instancia Exit Sub End If 'VALIDA EXISTENCIAS SALIDA E INSERTA DETALLES For Each Dr As DataRow In DtMovimientosSalidaInvFisico.Rows If ObjInventario.GetExistenciasPS(Dr("CvePS").ToString.ToEntero, Dr("CveUM").ToString.ToEntero, UsuarioActual.CveEmpresa, DdlAlmacenInventarioFisico.SelectedValue.ToEntero, PendientePorSurtir:=1) >= Dr("Cantidad").ToString.ToDouble Then If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalida, Dr("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDecimal.RoundSQL(6), -1, CveSeccionAlmacen:=Dr("CveSeccionAlmacen").ToString.ToEntero, Serie:=Dr("Serie").ToString, Lote:=Dr("Lote").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate) Then Mensaje = "Ocurrió un error al guardar los movimientos de salida" ErrorMovInv = True Exit For End If Else Mensaje = String.Format("No hay existencias suficientes del producto: {0}", Dr("PS")) RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") ErrorMovInv = True Exit For End If Next If Prorratear Then If Not ErrorMovInv AndAlso CveMovimientoSalida > 0 Then If ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then Dim ProTotalSalida As Decimal = ObjInventario.DtResultados.SUMD("Total", "").RoundSQL(2) Dim ProCantidadEntrada As Decimal = DtMovimientosEntradaInvFisico.SUMD("Cantidad", "") ProPU = (ProTotalSalida / ProCantidadEntrada).RoundSQL(10) If Not ProPU > 0 Then ErrorMovInv = True Mensaje = $"Ocurrió un error al obtener el PU proraterado, pu {ProPU}" End If Else ErrorMovInv = True Mensaje = "Ocurrió un error al obtener el PU proraterado" End If End If End If If Not ErrorMovInv Then For Each Dr As DataRow In DtMovimientosEntradaInvFisico.Rows ImporteConcepto = If(Prorratear, ProPU, Dr("PU").ToString.ToDecimal) If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntrada, Dr("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, ImporteConcepto, -1, CveSeccionAlmacen:=Dr("CveSeccionAlmacen").ToString.ToEntero, Serie:=Dr("Serie").ToString, Lote:=Dr("Lote").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate) Then Mensaje = "Ocurrió un error al guardar los movimientos de entrada" ErrorMovInv = True Exit For End If Next End If 'Obtiene valor entrada If Not ErrorMovInv AndAlso CveMovimientoEntrada > 0 Then If ObjInventario.GetMovimientosDetalle(CveMovimientoEntrada, UsuarioActual.CveEmpresa) Then Dim tValorInventario As Decimal = ObjInventario.DtResultados.SUMD("Total", "").RoundSQL(2) ValorEntrada = tValorInventario Dim drA2 As DataRow = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimero(String.Format("CveAlmacen = {0}", DdlAlmacenInventarioFisico.SelectedValue)) If drA2 IsNot Nothing Then idCtaContableEntrada = drA2("IdCtaContable").ToString.ToEntero tCveSubProyectoEntrada = drA2("CveSubProyecto").ToString.ToEntero End If Else ErrorMovInv = True Mensaje = "Ocurrió un error al validar los movimientos contables de entrada" End If End If 'Obtiene valor salida If Not ErrorMovInv AndAlso CveMovimientoSalida > 0 Then If ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then Dim tValorInventario As Decimal = ObjInventario.DtResultados.SUMD("Total", "").RoundSQL(2) ValorSalida = tValorInventario Dim drA2 As DataRow = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimero(String.Format("CveAlmacen = {0}", DdlAlmacenInventarioFisico.SelectedValue)) If drA2 IsNot Nothing Then idCtaContableSalida = drA2("IdCtaContable").ToString.ToEntero tCveSubProyectoSalida = drA2("CveSubProyecto").ToString.ToEntero End If Else ErrorMovInv = True Mensaje = "Ocurrió un error al validar los movimientos contables de salida" End If End If If Not ErrorMovInv Then 'NOTA ' cuando el valor entrada sea mayor al de salida, el valor de salida debe de ser negativo y cargado ' cuando el valor salida sea mayor al de entrada, el valor de entrada debe de ser negativo y abonado 'Registro la prepólizaDetalle Entradas If CveMovimientoEntrada > 0 Then TipoMovto = False If ValorEntrada <= ValorSalida Then TipoMovto = True : ValorEntrada = -ValorEntrada ' invierto su naturaleza End If If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovto, ValorEntrada, "", 68, tConcepto, Fecha, idCtaContableEntrada, -1, CveMovimientoAlmacen:=CveMovimientoEntrada, ImporteMX:=ValorEntrada, CveSubProyecto:=tCveSubProyectoEntrada, Contabilizable:=EsContabilizable) Then ErrorMovInv = True Mensaje = "Ocurrió un error al guardar los movimientos contables de entrada" End If End If 'Registro la prepólizaDetalle Salidas If CveMovimientoSalida > 0 Then TipoMovto = True If ValorSalida < ValorEntrada Then TipoMovto = False : ValorSalida = -ValorSalida ' invierto su naturaleza End If If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovto, ValorSalida, "", 68, tConcepto, Fecha, idCtaContableSalida, -1, CveMovimientoAlmacen:=CveMovimientoSalida, ImporteMX:=ValorSalida, CveSubProyecto:=tCveSubProyectoSalida, Contabilizable:=EsContabilizable) Then ErrorMovInv = True Mensaje = "Ocurrió un error al guardar los movimientos contables de salida" End If End If If ValorEntrada >= ValorSalida Then 'si el valor entrada es igual al valorsalida, y este sea cero. If tCveSubProyectoEntrada = -1 Then tCveSubProyectoEntrada = tCveSubProyectoSalida If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ValorEntrada + ValorSalida, "", 260, tConcepto, Fecha, IdCuentaOtrosIngresos, -1, CveMovimientoAlmacen:=CveMovimientoSalida, CveSubProyecto:=tCveSubProyectoEntrada, ImporteMX:=ValorEntrada + ValorSalida, Contabilizable:=EsContabilizable) Then ErrorMovInv = True Mensaje = "Ocurrió un error al guardar los movimientos contables de ajuste de ingreso" End If ElseIf ValorSalida >= ValorEntrada Then 'inserta el gasto Dim dr As DataRow = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimero("") Dim tCveClasificacion As Integer = -1 Dim tIdCtaGasto As Integer = -1 If dr IsNot Nothing Then tCveClasificacion = dr("CveClasificacion").ToString.ToEntero tIdCtaGasto = dr("IdCuentaGasto").ToString.ToEntero End If '[IPP] PARCHE - CUENTA CONTABLE DIRECTA Select Case UsuarioActual.CveEmpresa Case 119 tIdCtaGasto = 1321 End Select If Math.Abs((ValorSalida + ValorEntrada)) <> 0 Then If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, ValorSalida + ValorEntrada, "", 290, tConcepto, Fecha, tIdCtaGasto, -1, CveMovimientoAlmacen:=CveMovimientoSalida, CveClasificacion:=tCveClasificacion, CveSubProyecto:=tCveSubProyectoSalida, ImporteMX:=ValorSalida + ValorEntrada, Contabilizable:=EsContabilizable) Then ErrorMovInv = True Mensaje = "Ocurrió un error al guardar los movimientos contables de ajuste de salida" End If End If End If End If If Not ErrorMovInv Then If ObjConta.ValidacionPrePolizaCuadre(CvePrePoliza, -1) Then ObjConta.GetPrePolizasDetalle(CvePrePoliza, UsuarioActual.CveEmpresa) If ObjConta.ValorPolizaDescuadre > 0 Then ErrorMovInv = True Mensaje = "Ocurrió un error al validar los movimientos contables" End If End If End If Dim RetornoVirtual As MMovimientoVirtual = Nothing If Not ErrorMovInv AndAlso UsuarioActual.Empresa.Funcionalidad(531) = "1" Then If CveMovimientoSalida > 0 Then RetornoVirtual = GenerarMovimientoVirtual(CveMovimientoSalida, ObjInventario) If RetornoVirtual IsNot Nothing Then ErrorMovInv = RetornoVirtual.TieneError If CveMovimientoEntrada > 0 AndAlso Not ErrorMovInv Then RetornoVirtual = GenerarMovimientoVirtual(CveMovimientoEntrada, ObjInventario) If RetornoVirtual IsNot Nothing Then ErrorMovInv = RetornoVirtual.TieneError End If If Not ErrorMovInv Then ObjInventario.Commit() ' aplica los movimientos insertados Dim Msg As New StringBuilder Msg.AppendFormat("
El Movimiento se registro correctamente.") If CveMovimientoEntrada > 0 Then Msg.AppendFormat("

Movimiento de entrada: {0}", FolioEntrada, CveMovimientoEntrada) Msg.AppendFormat("
Imprimir Movimiento Entrada ", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoEntrada))) End If If CveMovimientoSalida > 0 Then Msg.AppendFormat("

Movimiento de salida: {0}", FolioSalida, CveMovimientoSalida) Msg.AppendFormat("
Imprimir Movimiento Salida ", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoSalida))) End If Alert(Msg.ToString, TipoMensaje.MsgInformacion) RegistraScript("playsonidito('beep-07.wav')") RegistraScript(String.Format("$('#{0}').modal('hide');", "DivModalCambioFisico")) GvEntradas.DataBind() GvSalidas.DataBind() TxtIFDescripcion.Text = "" Else ObjInventario.RollBack() Alert(Mensaje, TipoMensaje.MsgError) RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") End If ObjInventario.Dispose() 'elimino la instancia End Sub Private Sub BtnGuardarCambiosVigencia_Click(sender As Object, e As EventArgs) Handles BtnGuardarCambiosVigencia.Click If GvSalidasCambioVigencia.Rows.Count = 0 Then Alert("No hay ningun registro para generar el movimiento. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgError) RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") RegistraScript(String.Format("$('#{0}').modal();", "DivModalCambioFisico")) Exit Sub End If Dim ObjInventario As New ClsInventarios Dim ObjConta As New ClsContabilidad(ObjInventario.IniciaTransacSQL()) Dim CveMovimientoEntrada As Integer = -1 Dim CveMovimientoSalida As Integer = -1 Dim ErrorMovInv As Boolean = False Dim Mensaje As String = "" Dim ValorEntrada As Decimal = 0 Dim ValorSalida As Decimal = 0 Dim ImporteConcepto As Decimal = 0 Dim tConcepto As String = TxtObsCambioVigencia.Text.Trim Dim Fecha = TxtFechaCambio.Text.ToDate.ToString("yyyy/MM/dd").ToDate Dim tCveSubProyecto As Integer = -1 Dim TipoMovto As Boolean = False Dim idCtaContableEntrada As Integer = 0 Dim idCtaContableSalida As Integer = 0 Dim FolioSalida As Integer = 0 Dim FolioEntrada As Integer = 0 Dim IdCuentaOtrosIngresos As Integer = UsuarioActual.Empresa.IdCuentaOtrosIngresos Dim CveAlmacen As Integer = DdlAlmacenCambioVigencias.SelectedValue.ToEntero Dim CveModalidad As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=CveAlmacen).FiltroPrimeroValor("CveModalidad").ToEntero() Dim EsContabilizable As Boolean = (CveModalidad = 1) 'MOVIMIENTOS If DtMovimientosCambioVigencias.Rows.Count > 0 Then FolioSalida = ObjInventario.GetFolioSiguiente(47, UsuarioActual.CveEmpresa) CveMovimientoSalida = ObjInventario.AddMovimiento(CveAlmacen, 47, 1, Fecha, FolioSalida, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:=TxtObsCambioVigencia.Text.Trim, Modulo:="ES/CV1") FolioSalida = ObjInventario.Folio FolioEntrada = ObjInventario.GetFolioSiguiente(48, UsuarioActual.CveEmpresa) CveMovimientoEntrada = ObjInventario.AddMovimiento(CveAlmacen, 48, 1, Fecha, FolioEntrada, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:=TxtObsCambioVigencia.Text.Trim, CveMovimientoRelacionado:=CveMovimientoSalida, Modulo:="ES/CV2") FolioEntrada = ObjInventario.Folio End If 'VALIDA, sino hay registrado ningun movimiento, que no siga If (CveMovimientoEntrada <= 0 AndAlso CveMovimientoSalida <= 0) Then Alert("Ocurrió un error al realizar los registros. Por favor verifique y vuelva a intentar", TipoMensaje.MsgError) RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") ObjInventario.RollBack() 'deshace lo insertado. ObjInventario.Dispose() 'elimino la instancia Exit Sub End If 'VALIDA EXISTENCIAS SALIDA E INSERTA DETALLES If Not ErrorMovInv Then For Each Dr As DataRow In DtMovimientosCambioVigencias.Rows If ObjInventario.GetExistenciasPS(Dr("CvePS").ToString.ToEntero, Dr("CveUM").ToString.ToEntero, UsuarioActual.CveEmpresa, DdlAlmacenInventarioFisico.SelectedValue.ToEntero, PendientePorSurtir:=1) >= Dr("Cantidad").ToString.ToDouble Then If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalida, Dr("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDecimal, -1, CveSeccionAlmacen:=Dr("CveSeccionAlmacen").ToString.ToEntero, Serie:=Dr("Serie").ToString, Lote:=Dr("Lote").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate) Then Mensaje = "Ocurrió un error al guardar los movimientos de salida" ErrorMovInv = True Exit For Else 'OBTIENE EL COSTO DE LA SALIDA If Not ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa, CveMovimientoDetalle:=ObjInventario.CveMovimientoDetalle) AndAlso ObjInventario.DtResultados.Rows.Count > 0 Then Mensaje = "Ocurrió un error al guardar los movimientos de salida" ErrorMovInv = True Exit For Else Dim PUEntrada As Decimal = ObjInventario.DtResultados.Rows(0)("PU").ToString().ToDecimal() ImporteConcepto += PUEntrada * Dr("Cantidad").ToString.ToDecimal() 'INSERTA EL MOVIMIENTO DE ENTRADA If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntrada, Dr("Cantidad").ToString.ToDouble, Dr("CveUMVigencia").ToString.ToEntero, Dr("CvePSVigencia").ToString.ToEntero, PUEntrada, CveSeccionAlmacen:=Dr("CveSeccionAlmacen").ToString.ToEntero, Serie:=Dr("Serie").ToString, Lote:=Dr("Lote").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate) Then Mensaje = "Ocurrió un error al guardar los movimientos de entrada" ErrorMovInv = True Exit For End If End If End If Else Mensaje = String.Format("No hay existencias suficientes del producto: {0}", Dr("PS")) RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") ErrorMovInv = True Exit For End If Next End If 'CONTABILIZAR MOVIMIENTOS If Not ErrorMovInv Then If Not ContabilizaMovimientoAlmacen(ObjConta, Now, "CAMBIO DE VIGENCIA", "ES/CV", CveMovimientoSalida, CveMovimientoEntrada, ImporteConcepto, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, False) > 0 Then ErrorMovInv = True Mensaje = "No se pudo generar el movimiento de prepoliza" End If End If If Not ErrorMovInv Then ObjInventario.Commit() ' aplica los movimientos insertados Dim Msg As New StringBuilder If CveMovimientoEntrada > 0 Then Msg.AppendFormat("
El Movimiento de entrada se registró con el Folio: {1}", CveMovimientoEntrada, FolioEntrada) Msg.AppendFormat("
Imprimir Movimiento Entrada ", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoEntrada))) End If If CveMovimientoSalida > 0 Then Msg.AppendFormat("

El Movimiento de salida se registró con el Folio: {1}", CveMovimientoSalida, FolioSalida) Msg.AppendFormat("
Imprimir Movimiento Salida ", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoSalida))) End If Alert(Msg.ToString, TipoMensaje.MsgInformacion) RegistraScript("playsonidito('beep-07.wav');$('#DivModalCambiarVigencias').modal('hide');") DtMovimientosCambioVigencias.Clear() GvSalidasCambioVigencia.DataSource = DtMovimientosCambioVigencias GvSalidasCambioVigencia.DataBind() TxtObsCambioVigencia.Text = "" Else ObjInventario.RollBack() Alert(Mensaje, TipoMensaje.MsgError) RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") End If ObjInventario.Dispose() 'elimino la instancia End Sub #End Region #End Region #Region "Inventario Fisico" Private Sub DdlPS_Change(sender As Object, e As EventArgs) Handles DdlPS.selectedindexchange If DdlPS.SelectedValue.ToEntero > 0 Then Dim drp As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=DdlPS.SelectedValue.ToEntero).FiltroPrimero("") If drp IsNot Nothing Then Dim AplicaSerie As Boolean = CBool(drp("AplicaSerie")) Dim AplicaSeccion As Boolean = CBool(drp("AplicaSeccion")) Dim AplicaLote As Boolean = CBool(drp("AplicaLote")) Dim AplicaCaducidad As Boolean = CBool(drp("AplicaCaducidad")) 'activa Serie ThSerieEntrada.Visible = AplicaSerie TrSerieEntrada.Visible = AplicaSerie TxtnSerie.Visible = AplicaSerie Dim CveSubProyectoAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=DdlAlmacenInventarioFisico.SelectedValue.ToEntero).FiltroPrimeroValor("CveSubProyecto").ToString.ToEntero 'activa seccion ThSeccionEntrada.Visible = AplicaSeccion TrSeccionEntrada.Visible = AplicaSeccion 'activa lote ThLoteEntrada.Visible = AplicaLote TrLoteEntrada.Visible = AplicaLote 'activa caducidad ThCaducidadEntrada.Visible = AplicaCaducidad ThCaducidadEntrada.InnerText = UsuarioActual.Empresa.Funcionalidad(147) TrCaducidadEntrada.Visible = AplicaCaducidad Else TxtnSerie.Visible = False End If UpEntradaFisico.Update() End If End Sub Private Sub DdlPSSalida_Change(sender As Object, e As EventArgs) Handles DdlPSSalida.selectedindexchange If DdlPSSalida.SelectedValue.ToEntero > 0 Then Dim drp As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=DdlPSSalida.SelectedValue.ToEntero).FiltroPrimero("") If drp IsNot Nothing Then Dim AplicaSerie As Boolean = CBool(drp("AplicaSerie")) Dim AplicaSeccion As Boolean = CBool(drp("AplicaSeccion")) Dim AplicaLote As Boolean = CBool(drp("AplicaLote")) Dim AplicaCaducidad As Boolean = CBool(drp("AplicaCaducidad")) 'activa Serie ThSerieSalida.Visible = AplicaSerie TrSerieSalida.Visible = AplicaSerie TxtnSerie.Visible = AplicaSerie Dim CveSubProyectoAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=DdlAlmacenInventarioFisico.SelectedValue.ToEntero).FiltroPrimeroValor("CveSubProyecto").ToString.ToEntero 'activa seccion ThSeccionSalida.Visible = AplicaSeccion TrSeccionSalida.Visible = AplicaSeccion 'activa lote ThLoteSalida.Visible = AplicaLote TrLoteSalida.Visible = AplicaLote 'activa caducidad ThCaducidadSalida.Visible = AplicaCaducidad ThCaducidadSalida.InnerText = UsuarioActual.Empresa.Funcionalidad(147) TrCaducidadSalida.Visible = AplicaCaducidad Else TxtnSerie.Visible = False End If UpSalidaFisico.Update() End If End Sub #End Region Private Sub GuardarBitacora(CveVenta As Integer, RutaAdjunto As String, Obser As String) Dim ObjEventos As New ClsOIEventos() Try If ObjEventos.AddEventoBitacora(Obser, "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=CveVenta) Then End If Catch ex As Exception OnError("Se presento un error al guardar la Bitacora", ex) End Try ObjEventos.Dispose() End Sub #Region "DESCARGAR E IMPRIMIR LISTADO" Public Sub DescargarFormato() Dim Directorio As String = ModExtensiones.DirectorioBaseEmpresas & "Empresas\Grales\Formatos\FormatoEntradasSalidas.xlsx" Dim Archivo As New IO.FileInfo(Directorio) If Archivo.Exists Then Response.Clear() Response.ClearHeaders() Response.ClearContent() Response.AddHeader("Content-Disposition", "attachment; filename=" + Archivo.Name) Response.AddHeader("Content-Length", Archivo.Length.ToString()) Response.ContentType = "text/plain" Response.Flush() Response.TransmitFile(Archivo.FullName) Response.End() End If End Sub Public Sub LbDescargarExcel_Click(sender As Object, e As EventArgs) Handles LbDescargarExcelConceptos.Click DescargarFormato() End Sub Private Sub CargarArchivo(Ruta As String, FileName As String, Tipo As String) Dim dt As New DataTable 'Dim Conexion As Odbc.OdbcConnection = Nothing Dim ErrorArchivo = False Dim n As Integer = 0 Try Select Case Tipo Case "EXCEL" dt = ReadExcelFile(Ruta + FileName, True) dt = dt.FiltraParametros("Cantidad <> '' ") 'Conexion = New Odbc.OdbcConnection("Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" + Ruta + FileName + ";") 'Conexion.Open() 'Dim cmd = Conexion.CreateCommand() 'cmd.CommandType = CommandType.Text 'cmd.CommandText = "Select * FROM [Hoja1$]" 'Dim DataAdapter = New Odbc.OdbcDataAdapter(cmd) 'DataAdapter.Fill(dt) Case Else Alert("El archivo no tiene el formato correcto", TipoMensaje.MsgError) Exit Sub End Select Catch ex As Exception ErrorArchivo = True OnError("Ocurrio un Error al leer el archivo
" & ex.Message, ex) End Try ' Conexion.Close() If Not ErrorArchivo Then If Not dt.Columns(0).ColumnName = "Cantidad" Then Alert("El nombre de la primera columna debe ser 'Cantidad'.Favor de corregirlo", TipoMensaje.MsgError) Exit Sub End If If Not dt.Columns(1).ColumnName = "Código" Then Alert("El nombre de la segunda columna debe ser 'Código'. Favor de corregirlo", TipoMensaje.MsgError) Exit Sub End If 'If Not dt.Columns(2).ColumnName = "Codigo Barras" Then ' Alert("El nombre de la tecera columna debe ser 'Codigo Barras'. Favor de corregirlo", TipoMensaje.MsgError) ' Exit Sub 'End If If Not dt.Columns(2).ColumnName = "Producto/Servicio" Then Alert("El nombre de la cuarta columna debe ser 'Producto/Servicio'. Favor de corregirlo", TipoMensaje.MsgError) Exit Sub End If If Not dt.Columns(3).ColumnName = "UM" Then Alert("El nombre de la quinta columna debe ser 'U.M'. Favor de corregirlo", TipoMensaje.MsgError) Exit Sub End If If Not dt.Columns(4).ColumnName = "Precio Unitario" Then Alert("El nombre de la sexta columna debe ser 'Precio Unitario'. Favor de corregirlo", TipoMensaje.MsgError) Exit Sub End If dt.TableName = "Datos" Try Dim DTSeccionesAlmacen As DataTable = GlobalDTSeccionAlmacen(UsuarioActual.CveEmpresa, -1) If Not ErrorArchivo Then NumRow = 0 Dim RowNoEncontrados As String = "" Dim NumAgregados As Integer = 0 Dim PSTemp As DataTable = GlobalDTPS(UsuarioActual.CveEmpresa) For Each Row As DataRow In dt.Rows Dim Cantidad As Decimal = Row("Cantidad").ToString.ToDecimal Dim UM As String = Row("UM").ToString Dim Codigo As String = Row("Código").ToString.Trim.ToUpper 'Dim CodigoBarras As String = Row("Codigo Barras").ToString.Trim.ToUpper Dim ProductoServicio As String = Row("Producto/Servicio").ToString.Trim.ToUpper Dim PrecioUnitario As Decimal = Row("Precio Unitario").ToString.ToDecimal Dim Serie As String = Row("Serie").ToString Dim Lote As String = Row("Lote").ToString Dim Caducidad As String = Row("Caducidad").ToString Dim SeccionAlmacen As String = Row("SeccionAlmacen").ToString Dim CvePS As Integer = 0 Dim CveUM As Integer = 0 Dim DataTemp As DataTable NumRow = NumRow + 1 Dim CveSeccionAlmacen As Integer = -1 If SeccionAlmacen <> "" Then CveSeccionAlmacen = DTSeccionesAlmacen.FiltroPrimeroValor("CveSeccion", String.Format("SeccionAlmacen = '{0}'", SeccionAlmacen)).ToEntero End If If Codigo <> "" Then DataTemp = PSTemp.FiltraParametros(String.Format("Codigo = '{0}'", Codigo)) CvePS = DataTemp.FiltroPrimeroValor("CvePS", "").ToEntero DataTemp.Dispose() If CvePS = 0 Then RowNoEncontrados &= Codigo & "<\BR>" End If Else RowNoEncontrados &= "<\BR>    - En la fila " & NumRow & " no se especificó código, código de barras ó descripción." End If 'If Codigo <> "" Then ' Dim StrArray() As String = GetPS("Codigo", Codigo).Split("|"c) ' If StrArray.Length > 0 Then ' If CBool(StrArray(0)) = True Then ' CvePS = StrArray(1).ToEntero ' Else ' RowNoEncontrados &= StrArray(1) & "<\BR>" ' End If ' End If ' 'ElseIf CodigoBarras <> "" Then ' ' Dim StrArray() As String = GetPS("CodigoBarras", CodigoBarras).Split("|"c) ' ' If StrArray.Length > 0 Then ' ' If CBool(StrArray(0)) = True Then ' ' CvePS = StrArray(1).ToEntero ' ' Else ' ' RowNoEncontrados &= StrArray(1) & "<\BR>" ' ' End If ' ' End If 'ElseIf ProductoServicio <> "" Then ' Dim StrArray() As String = GetPS("PS", ProductoServicio).Split("|"c) ' If StrArray.Length > 0 Then ' If CBool(StrArray(0)) = True Then ' CvePS = StrArray(1).ToEntero ' Else ' RowNoEncontrados &= StrArray(1) & "<\BR>" ' End If ' End If 'Else ' RowNoEncontrados &= "<\BR>    - En la fila " & NumRow & " no se especificó código, código de barras ó descripción." 'End If If CvePS > 0 Then Dim DrPS As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePS).Rows(0) If DrPS IsNot Nothing Then CveUM = DrPS("CveUnidadMedida").ToString().ToEntero() UM = GlobalDTUnidadesMedida(UsuarioActual.CveEmpresa).FiltroPrimeroValor("UnidadMedida", $"CveUnidadMedida={CveUM}") End If AddNew(CvePS, ProductoServicio, CveUM, UM, Cantidad, PrecioUnitario, Serie.Replace(" ", String.Empty), "", Codigo, "-1", "", Lote, Caducidad.ToDate, CveSeccionAlmacen, SeccionAlmacen, CargarGV:=False) NumAgregados = NumAgregados + 1 End If Next If RowNoEncontrados.Length > 0 Then Alert("Se Cargaron " & NumAgregados & " Productos o Servicios.<\BR>Los siguientes Productos o Servicios no se encontraron en la Base de Datos.<\BR>" & RowNoEncontrados, TipoMensaje.MsgAdvertencia) If NumAgregados > 0 Then RegistraScript("$('#DivCargaExcel').modal('hide')", "hidemodal") TxtExcel.Text = "[]" End If Else Alert("Se Cargaron " & NumAgregados & " Productos o Servicios correctamente.") RegistraScript("$('#DivCargaExcel').modal('hide')", "hidemodal") TxtExcel.Text = "[]" End If CargaGVM(DtMovimientos.FiltraParametros("Estatus <> 'E' ")) RegistraScript("playsonidito('beep-07.wav')") End If Catch ex As Exception OnError("Ocurrió un error al cargar los datos", ex) End Try End If dt.Dispose() End Sub Private Sub BtnCargaExcel_Click(sender As Object, e As EventArgs) Handles BtnCargaExcel.Click If DdlAlmacen.SelectedValue.ToEntero > 0 Then If TxtExcel.getfiles().Archivos.Count > 0 Then Dim file As Archivo = TxtExcel.getfiles().Archivos(0) Dim Directorio As String = AppDomain.CurrentDomain.BaseDirectory & file.path Dim Tipo As String = If(file.Extension.Contiene("xlsx", "xlsx", "xlsm", "xlsb", "xls"), "EXCEL", "CSV") CargarArchivo(Directorio, file.filename, Tipo) Else Alert("No existe el archivo. Favor de subir un archivo excel a la plataforma.", TipoMensaje.MsgError) End If Else Alert("Seleccione un almacén", TipoMensaje.MsgAdvertencia) RegistraScript("$('#DivCargaExcel').modal('hide')", "hidemodal") End If End Sub Private Function GetPS(Opt As String, Valor As String) As String Dim StrReturn As String = String.Empty Dim CvePS As Integer = 0 Dim Condicion As String = String.Format("{0} = '{1}'", Opt, Valor) If Opt = "Codigo" Then CvePS = GlobalDTPS(UsuarioActual.CveEmpresa, Codigo:=Valor).FiltroPrimeroValor("CvePS", "").ToString.ToEntero Else CvePS = GlobalDTPS(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CvePS", Condicion).ToString.ToEntero End If If CvePS > 0 Then StrReturn = "True|" & CvePS.ToString Else StrReturn = "False|    - No se encontró " & Valor & " en la fila " & NumRow & ", columna " & Opt End If Return StrReturn End Function #End Region Protected Sub LnkAgregarNuevoMov_Click(sender As Object, e As EventArgs) EsNuevoMov = True For Each gvr As GridViewRow In GvM.Rows If (gvr.RowState <> 5 AndAlso gvr.RowState <> DataControlRowState.Edit) Then GvM.Rows(gvr.RowIndex).FCLinkButton("lnkRemove").Visible = True Next If DdlAlmacen.Visible Then DdlAlmacen.Enabled = True DdlAlmacen.SelectedValueExist(-1) If DdlConcepto.Visible Then DdlConcepto.Enabled = True DdlConcepto.SelectedValueExist(-1) If TxtDepartamentoEntrega.Visible Then TxtDepartamentoEntrega.Enabled = True If TxtPedidoContrato.Visible Then TxtPedidoContrato.Enabled = True If TxtFolio.Visible Then TxtFolio.Enabled = True If TxtFecha.Visible Then TxtFecha.Enabled = True If TxtResponsable.Visible Then TxtResponsable.Enabled = True If TxtObservaciones.Visible Then TxtObservaciones.Enabled = True If DdlProveedor.Visible Then DdlProveedor.Enabled = True If TxtRemision.Visible Then TxtRemision.Enabled = True If DdlMoneda.Visible Then DdlMoneda.Enabled = True If TxtGuia.Visible Then TxtGuia.Enabled = True If BtnEliminar.Visible Then BtnEliminar.Visible = False LnkAgregarNuevoMov.Visible = False End Sub '#Region "SECCION ALMACEN" ' Private Sub CreaDtSeccionAlmacen() ' DtSeccionAlmacen = New DataTable ' DtSeccionAlmacen.Columns.Add("CantidadSeccionAlmacen", GetType(Decimal)) ' DtSeccionAlmacen.Columns.Add("IndexSeccionAlmacen", GetType(Integer)) ' DtSeccionAlmacen.Columns.Add("CveSeccionAlmacen", GetType(Integer)) ' DtSeccionAlmacen.Columns.Add("SeccionAlmacen", GetType(String)) ' DtSeccionAlmacen.Columns.Add("Consec", GetType(Integer)) ' End Sub ' Private Sub CargaDdlAlmacen() ' DdlSeccionAlmacenModal.DataSource = GlobalDTSeccionAlmacen(UsuarioActual.CveEmpresa, DdlAlmacen.SelectedValue.ToEntero) ' DdlSeccionAlmacenModal.Items.Insert(0, New ListItem("Seleccione", "-1")) ' DdlSeccionAlmacenModal.DataBind() ' End Sub ' Protected Sub LnkSeccionAlmacen_Click(sender As Object, e As EventArgs) ' If Not DdlConcepto.SelectedValue.ToEntero > 0 Then ' Alert("Tiene que seleccionar un concepto", TipoMensaje.MsgAdvertencia) ' Exit Sub ' End If ' Tipo = GlobalDTInvConceptos().FiltroPrimeroValor("Origen", $"CveConcepto = {DdlConcepto.SelectedValue}").ToEntero ' Dim gvRow As GridViewRow = DirectCast((DirectCast(sender, LinkButton)).NamingContainer, GridViewRow) ' CantidadTotal = gvRow.DataKey("Cantidad").ToDecimal ' IndexSeccionAlmacen = gvRow.RowIndex ' CargaSeccionAlmacen() ' RegistraScript("$('#DModalSeccionAlmacen').modal()") ' End Sub ' Private Sub CargaSeccionAlmacen() ' Dim CantidadTotalSeccion As Decimal = DtSeccionAlmacen.FiltraParametros($"IndexSeccionAlmacen = {IndexSeccionAlmacen}").SUMD("CantidadSeccionAlmacen") ' GvSeccionAlmacen.DataSource = DtSeccionAlmacen.FiltraParametros($"IndexSeccionAlmacen = {IndexSeccionAlmacen}") ' GvSeccionAlmacen.DataBind() ' TxtCantidadSeccion.Text = "" ' DdlSeccionAlmacenModal.SelectedIndex = 0 ' Dim CantidadRestante As Decimal = CantidadTotal - CantidadTotalSeccion ' If CantidadRestante = 0 Then ' RVTxtCantidad.MaximumValue = "1" ' TxtCantidadSeccion.Enabled = False ' Else ' RVTxtCantidad.MaximumValue = CantidadRestante.ToString ' TxtCantidadSeccion.Enabled = True ' End If ' If CantidadTotalSeccion > 0 Then ' GvM.Rows(IndexSeccionAlmacen).FCLinkButton("imgE").Visible = False ' GvM.Rows(IndexSeccionAlmacen).FCLinkButton("imgE").ToolTip = "Cuenta con sección almacen" ' GvM.Rows(IndexSeccionAlmacen).FCLinkButton("lnkRemove").Visible = False ' GvM.Rows(IndexSeccionAlmacen).FCLinkButton("lnkRemove").ToolTip = "Cuenta con sección almacen" ' GvM.Rows(IndexSeccionAlmacen).FCLinkButton("lnkDividir").Visible = False ' GvM.Rows(IndexSeccionAlmacen).FCLinkButton("lnkDividir").ToolTip = "Cuenta con sección almacen" ' Else ' GvM.Rows(IndexSeccionAlmacen).FCLinkButton("imgE").Visible = True ' GvM.Rows(IndexSeccionAlmacen).FCLinkButton("imgE").ToolTip = "" ' GvM.Rows(IndexSeccionAlmacen).FCLinkButton("lnkRemove").Visible = True ' GvM.Rows(IndexSeccionAlmacen).FCLinkButton("lnkRemove").ToolTip = "" ' GvM.Rows(IndexSeccionAlmacen).FCLinkButton("lnkDividir").Visible = True ' GvM.Rows(IndexSeccionAlmacen).FCLinkButton("lnkDividir").ToolTip = "" ' End If ' If DtSeccionAlmacen.SUMD("CantidadSeccionAlmacen") > 0 AndAlso Tipo = -1 Then ' DdlAlmacen.Enabled = False ' DdlAlmacen.ToolTip = "Cuenta con sección almacen" ' Else ' DdlAlmacen.Enabled = True ' DdlAlmacen.ToolTip = "" ' End If ' UpModalSeccionAlmacen.Update() ' UppGrid.Update() ' End Sub ' Protected Sub LnkAddSeccionAlmacen_Click(sender As Object, e As EventArgs) ' If Tipo = -1 Then ' Dim ObjInv As New ClsInventarios ' Dim CantidadDisponible As Decimal = 0 ' If ObjInv.GetMovimientosDetalleSeccionesAlmacen(DdlSeccionAlmacenModal.SelectedValue.ToEntero, DdlAlmacen.SelectedValue.ToEntero, ' CvePS, UsuarioActual.CveEmpresa) Then ' If ObjInv.DtResultados.Rows.Count > 0 Then ' CantidadDisponible = ObjInv.DtResultados.Rows(0)("CantidadRestante").ToString.ToDecimal ' End If ' End If ' ObjInv.Dispose() ' CantidadDisponible -= DtSeccionAlmacen.FiltraParametros($"CvePS = {CvePS} AND CveSeccionAlmacen = {DdlSeccionAlmacenModal.SelectedValue}").SUMD("CantidadSeccionAlmacen") ' If TxtCantidadSeccion.Text.ToDecimal > CantidadDisponible Then ' Alert($"No tiene cantidad de producto suficiente en esta seccion de almacen, su cantidad restante es: {CantidadDisponible}", TipoMensaje.MsgAdvertencia) ' Exit Sub ' End If ' End If ' Dim Row As DataRow = Nothing ' DtSeccionAlmacen.AcceptChanges() ' Row = DtSeccionAlmacen.NewRow ' Row("CantidadSeccionAlmacen") = TxtCantidadSeccion.Text.ToDecimal ' Row("IndexSeccionAlmacen") = IndexSeccionAlmacen ' Row("CveSeccionAlmacen") = DdlSeccionAlmacenModal.SelectedValue.ToEntero ' Row("SeccionAlmacen") = DdlSeccionAlmacenModal.SelectedItem.Text ' Row("Consec") = DtSeccionAlmacen.Rows.Count + 1 ' DtSeccionAlmacen.Rows.Add(Row) ' DtSeccionAlmacen.AcceptChanges() ' CargaSeccionAlmacen() ' End Sub ' Protected Sub LnkEliminarSeccion_Click(sender As Object, e As EventArgs) ' Dim gvRow As GridViewRow = DirectCast((DirectCast(sender, LinkButton)).NamingContainer, GridViewRow) ' Dim Index As Integer = 0 ' For Each Dr As DataRow In DtSeccionAlmacen.Rows ' If Dr("Consec").ToString.ToEntero = gvRow.DataKey("Consec").ToEntero() Then ' Exit For ' End If ' Index += 1 ' Next ' DtSeccionAlmacen.Rows.RemoveAt(Index) ' DtSeccionAlmacen.AcceptChanges() ' CargaSeccionAlmacen() ' End Sub '#End Region Protected Sub LkAgregar_Click() Handles LnkAgregarProducto.Click If EsConsumoInterno And UsuarioActual.Empresa.Funcionalidad(590) = "1" Then If DdlSubProyecto.SelectedValue.ToEntero <= 0 Then Alert("Debe seleccionar un Centro de Costos.", TipoMensaje.MsgAdvertencia) Exit Sub Else CargaCultivos() End If End If limpiarModalDetalle() UpAgregar.Update() RegistraScript("$('#ModalAgregar').modal()") End Sub Private Sub ActualizarPS() Dim ObjInventario As New ClsInventarios If Not ObjInventario.UpdateMovimientoDetalle(txtCantidad.Text.ToDouble, DdlUnidad.SelectedValue.ToEntero, DdlProducto2.SelectedValue.ToEntero, txtPrecio.Text.ToDouble, CveAFEdit, CveMovimientoDetalleEdit, DdlSeccionAlmacen.SelectedValue.ToEntero, TxtnSerie.Text, TxtObservacionesdetalle.Text, CveUsuarioModifico:=UsuarioActual.CveUsuario, CveCultivoCuadroDetalle:=DdlModalCultivosCuadro.SelectedValue.ToEntero) Then Alert("Error al Actualizar los movimientos") Else Alert("Movimiento actualizado correctamente") RegistraScript("$('#ModalAgregar').modal('hide')") End If ObjInventario.Dispose() End Sub Private Sub limpiarModalDetalle() txtCantidad.Enabled = True DdlClasificacion.Enabled = True DdlProducto2.Enabled = True DdlUnidad.Enabled = True divCantidad.Visible = True divClasificacionProducto.Visible = True divUnidadMedida.Visible = True txtCantidad.Text = "" DdlProducto2.SelectedValue = "-1" DdlProducto2.SelectedText = "" ElProductoChange() txtPrecio.Text = "" TxtnSerie.Text = "" TxtnLote.Text = "" TxtnFechaCaducidad.Text = "" TxtObservacionesdetalle.Text = "" DdlSeccionAlmacen.ClearSelection() LkAgregarDetalle.Text = "Agregar" DdlModalCultivosCuadro.SelectedValueExist(-1) If DdlMonedaTC.SelectedValue.ToEntero = 2 Then VisualizaPUExtranjero(UsuarioActual.TienePermisoProceso(201)) Else VisualizaPUExtranjero(False) End If Dim Origen As Integer = GlobalDTInvConceptos.FiltroPrimeroValor("Origen", String.Format("CveConcepto = {0}", DdlConcepto.SelectedValue)).ToEntero divPrecio.Visible = Origen = 1 txtPrecio.Visible = Origen = 1 UpAgregar.Update() End Sub Private Sub RegeneraRM(CveMovD As Integer, CveMov2 As Integer) 'Dim Retorno As Integer = -1 'Dim ErrorMovInv As Boolean = False 'Dim ObjConta As New ClsContabilidad 'ObjConta.IniciaTransacSQL() 'Dim ObjInventario As New ClsInventarios(ObjConta.IniciaTransacSQL) 'Dim CveMovimientoInsertado As Integer = 0 'Dim Fecha As Date 'Dim Importe As Decimal 'If ObjInventario.GetMovimientosDetalleTransitorio(CveMovD, UsuarioActual.CveEmpresa) Then ' Fecha = ObjInventario.DtResultados.Rows(0)("FechaMovto").ToString.ToDate ' Dim dtvirtual As DataTable = ObjInventario.DtResultados ' If dtvirtual.Rows.Count > 0 Then ' CveMovimientoInsertado = ObjInventario.AddMovimiento(352, 8, 1, Fecha, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:=TxtObservaciones.Text.Trim, Modulo:="TA/VM") ' For Each RowVirtual As DataRow In dtvirtual.Rows ' Dim CvePS = RowVirtual("CvePS").ToString().ToEntero() ' Dim CantidadUsado As Double = RowVirtual("Cantidad").ToString().ToDouble() ' Dim PU As Decimal = RowVirtual("PUOriginal").ToString().ToDecimal() ' Dim CveUM As Integer = RowVirtual("CveUM").ToString().ToEntero() ' Dim CveMovimientoDetalle As Integer = RowVirtual("CveMovimientoDetalle").ToString().ToEntero() ' If Not ObjInventario.AddMovimientoDetalle(CveMovimientoInsertado, CantidadUsado, CveUM, CvePS, PU, -1, CveMovimientoDetalleEntrada:=CveMovimientoDetalle, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then ' ErrorMovInv = True ' Exit For ' End If ' Next ' If ObjInventario.GetMovimientosDetalle(CveMovimientoInsertado, UsuarioActual.CveEmpresa) Then ' Dim resultado As DataTable = ObjInventario.DtResultados ' Importe = resultado.SUMD("Total").RoundSQL ' Dim Contabilizable As Boolean = False ' Dim Concepto As String = "Traspaso" ' Dim CvePrePoliza As Integer = ObjConta.AddPrePolizas("Manualx", 53, 0, 0, 1, Fecha, Concepto, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) ' If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, Importe, "", 68, Concepto, Fecha, -1, -1, CveMovimientoAlmacen:=CveMovimientoInsertado, ImporteMX:=Importe, Contabilizable:=Contabilizable) Then ' ErrorMovInv = True ' End If ' If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Importe, "", 68, Concepto, Fecha, -1, -1, CveMovimientoAlmacen:=CveMovD, ImporteMX:=Importe, Contabilizable:=Contabilizable) Then ' ErrorMovInv = True ' End If ' If Not ErrorMovInv Then Retorno = CvePrePoliza ' End If ' End If 'Else ' ErrorMovInv = True 'End If 'If ErrorMovInv Then ' ObjConta.RollBack() ' Alert("No se aplico", TipoMensaje.MsgError) 'Else ' ObjConta.Commit() ' Alert("Se aplico", TipoMensaje.MsgInformacion) 'End If 'ObjConta.Dispose() 'ObjInventario.Dispose() End Sub Protected Sub LnkGenerarVirtual_Click(sender As Object, e As EventArgs) If CveMovimiento > 0 Then Dim ObjInventario As New ClsInventarios ObjInventario.IniciaTransacSQL() Dim Retorno = GenerarMovimientoVirtual(Me.CveMovimiento, ObjInventario) If Retorno.TieneError Then ObjInventario.RollBack() Else ObjInventario.Commit() End If ObjInventario.Dispose() If Retorno.CveMovimientoVirtual > 0 AndAlso Not Retorno.TieneError Then Alert($"Se generó el movimiento virtual con el folio:{Retorno.FolioVirtual}") End If End If End Sub Private Function GenerarMovimientoVirtual(CveMovimiento As Integer, ByRef ObjInventario As ClsInventarios) As MMovimientoVirtual Dim ErrorMovInv As Boolean = False Dim DtPSVirtual As New DataTable("DtTamanios") Dim CveMovimientoVirtual As Integer = -1 Dim FolioVirtual As Integer = -1 Dim tCveAlmacen As Integer = -1 Dim tOrigen As Integer = -1 Try If ObjInventario.GetMovimientos(CveMovimiento, -1, -1, UsuarioActual.CveEmpresa) AndAlso ObjInventario.DtResultados.Rows.Count > 0 Then tCveAlmacen = ObjInventario.DtResultados.FiltroPrimeroValor("CveAlmacen").ToEntero() tOrigen = ObjInventario.DtResultados.FiltroPrimeroValor("Origen").ToEntero() End If Dim CveAlmacenVirtual As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=tCveAlmacen).FiltroPrimeroValor("CveAlmacenVirtual").ToEntero() 'VERIFICA SI TIENE ALMACEN VIRTUAL If CveAlmacenVirtual > 0 Then If ObjInventario.GetMovimientosDetalleVirtual(CveMovimiento, UsuarioActual.CveEmpresa) Then DtPSVirtual = ObjInventario.DtResultados End If If DtPSVirtual IsNot Nothing AndAlso DtPSVirtual.Rows.Count > 0 Then CveMovimientoVirtual = ObjInventario.AddMovimiento(CveAlmacenVirtual, If(tOrigen > 0, 36, 37), 1, TxtFecha.text.todate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, CveMovimientoRelacionado:=CveMovimiento, Observaciones:=TxtObservaciones.Text.Trim, Modulo:="ES/GV") FolioVirtual = ObjInventario.Folio For Each RowUsado As DataRow In DtPSVirtual.Rows Dim CvePS = RowUsado("CvePS").ToString().ToEntero() Dim CantidadUsado As Decimal = RowUsado("Cantidad").ToString().ToDecimal() Dim PU As Decimal = RowUsado("Cargo").ToString().ToDecimal() Dim CveUM As Integer = RowUsado("CveUM").ToString().ToEntero() If Not ObjInventario.AddMovimientoDetalle(CveMovimientoVirtual, CantidadUsado, CveUM, CvePS, PU, -1, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then ErrorMovInv = True Exit For End If Next End If End If Catch ex As Exception ErrorMovInv = True End Try Return New MMovimientoVirtual With {.TieneError = ErrorMovInv, .CveMovimientoVirtual = CveMovimientoVirtual, .FolioVirtual = FolioVirtual.ToString()} End Function Protected Sub LnkGenerarPDF_Click(sender As Object, e As EventArgs) GeneraPDFFactura() End Sub Private Sub GeneraPDFFactura() Try Dim objFactura = CreaObjetosVenta() PdfFactura(objFactura) objFactura.Dispose() Catch ex As Exception OnError("Ocurrió un error al generar el PDF", ex) End Try End Sub Private Function CreaObjetosVenta() As Modelos.Factura Dim ObjFactura = New Modelos.Factura ObjFactura.Version = "3.3" ObjFactura.CveUsuario = UsuarioActual.CveUsuario ObjFactura.CveEmpresa = UsuarioActual.CveEmpresa ObjFactura.TipoCambio = 0 ObjFactura.ConvertirPesos = False ObjFactura.TipoCambio = 0 ObjFactura.CveMoneda = 1 ObjFactura.Moneda = GlobalDTMonedas.FiltroPrimeroValor("Moneda", $"CveMoneda = {ObjFactura.CveMoneda} ") ObjFactura.MonedaSAT = GlobalDTMonedas.FiltroPrimeroValor("AbreviaturaSAT", "CveMoneda = 1") ObjFactura.MonedaAbreviatura = GlobalDTMonedas.FiltroPrimeroValor("Abreviatura", $"CveMoneda = {ObjFactura.CveMoneda} ") ObjFactura.TipoDocto = "Tra" ObjFactura.RefDocto = "" ObjFactura.Folio = Folio.ToEntero ObjFactura.Serie = "Tra" 'ObjFactura.CveMesa = -1 ObjFactura.Fecha = Now ObjFactura.CvePrePoliza = -1 ObjFactura.FechaPago = Now ObjFactura.MotivoDescuento = "" ObjFactura.Observaciones = "" ObjFactura.FechaEjecucion = Now ObjFactura.UsuarioCreo = UsuarioActual.Usuario ObjFactura.CveCondicionEntrega = -1 ObjFactura.CondicionEntrega = "" ObjFactura.NumeroCuenta = "" ObjFactura.CondicionesPago = 0 ObjFactura.FormaPago = 0 ObjFactura.PedidoContrato = "" ObjFactura.OrdenCompra = "" ObjFactura.NumeroContrato = "" ObjFactura.NumeroDescripcionContrato = "" ObjFactura.DescripcionContrato = "" ObjFactura.CveCorte = -1 ObjFactura.TipoDocumento = "Traspaso" ObjFactura.Alfa1 = "" ObjFactura.Alfa2 = "" ObjFactura.Alfa3 = "" ObjFactura.Descuento = 0 ObjFactura.Amortizacion = 0 ObjFactura.CveContrato = 0 ObjFactura.CveVendedor = 0 ObjFactura.FechaVencimiento = Now ObjFactura.TipoEstatus = 0 ObjFactura.Det_OrdenCompra = "" ObjFactura.Inv_CveEstatusEntrega = 0 ObjFactura.FormaPago33 = "" ObjFactura.MetodoPago33 = "" ObjFactura.UsoCFDI = "" ObjFactura.CveClienteSucursal = 0 Dim CveSubProyecto As Integer = -1 If GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltraParametros($"CveAlmacen = {DdlAlmacen.SelectedValue}").Rows.Count > 0 Then CveSubProyecto = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltraParametros($"CveAlmacen = {DdlAlmacen.SelectedValue}").Rows(0)("CveSubProyecto").ToString.ToEntero End If ObjFactura.CveSubProyecto = CveSubProyecto ObjFactura.CveSubProyectoCobranza = CveSubProyecto ObjFactura.CveSubProyectoEjecucion = CveSubProyecto ObjFactura.SubTotal = 0 ObjFactura.Descuento = 0 ObjFactura.Amortizacion = 0 ObjFactura.IVA = 0 ObjFactura.RetIVA = 0 ObjFactura.RetISR = 0 ObjFactura.IEPS = 0 ObjFactura.Total = 0 ObjFactura.RFCReceptor = "XAXX010101000" Dim dt As DataTable = DtMovimientos.Copy dt.Columns.Add("TotalImporte", Type.GetType("System.Double")) dt.Columns.Add("Descuento", Type.GetType("System.Double")) dt.Columns.Add("UM") dt.Columns.Add("SATClaveUM") dt.Columns.Add("SATClaveProdServ") dt.Columns.Add("Noidentificacion") dt.Columns.Add("CuentaPredial") dt.Columns.Add("Obs") dt.Columns.Add("ImporteIVA", Type.GetType("System.Double")) dt.Columns.Add("PorcentajeIVA", Type.GetType("System.Double")) For Each Row As DataRow In dt.Rows Row("TotalImporte") = Row("Total") Row("Descuento") = 0 Row("UM") = Row("UnidadMedida") Row("SATClaveUM") = Row("SATClaveUnidadMedida") Row("SATClaveProdServ") = Row("SATClavePS") Row("Noidentificacion") = Row("Codigo") Row("CuentaPredial") = "" Row("Obs") = Row("Observaciones") Row("ImporteIVA") = 0 Row("PorcentajeIVA") = 0 Next 'DETALLES ObjFactura.DtDetalle = dt 'SUBPROYECTO ObjFactura.SetSubProyectoMatriz(Me) ObjFactura.SetSubProyecto(Me) ObjFactura.Inv_CveMovimiento = Me.CveMovimiento ObjFactura.Timbre = PreParaTimbre(ObjFactura) Return ObjFactura End Function Private Function PreParaTimbre(Obj As Modelos.Factura) As CFDITimbre Dim Timbre As New CFDITimbre Timbre.Comprobante.TipoComprobante = "T" Timbre.Comprobante.Folio = Obj.Folio.ToString Timbre.Comprobante.Serie = Obj.Serie Timbre.Comprobante.Fecha = Obj.Fecha Timbre.Comprobante.FormadePago = Obj.FormaPagoSAT33 Timbre.Comprobante.CondicionesdePago = Obj.FormaPago33 Timbre.Comprobante.MetodoPago = Obj.ClaveMetodoPagoSAT Timbre.Comprobante.SubTotal = Obj.SubTotal Timbre.Comprobante.Descuentos = Obj.Descuento Timbre.Comprobante.Moneda = Obj.MonedaSAT Timbre.Comprobante.TipoCambio = If(Obj.CveMoneda = 1, "1", Obj.TipoCambio.ToString) Timbre.Comprobante.Total = Obj.Total Timbre.Comprobante.LugarExpedicion = Obj.SubProyecto.CP Timbre.Comprobante.Confirmacion = "" Timbre.Receptor.RFC = "XAXX010101000" Timbre.Receptor.Nombre = UsuarioActual.Empresa.Empresa Timbre.Receptor.UsoCFDI = "P01" Dim totSubTotal As Decimal = Obj.SubTotal Dim totIVA As Decimal = Obj.IVA Dim totRetIVA As Decimal = Obj.RetIVA Dim totRetISR As Decimal = Obj.RetISR Dim i As Integer = 1 'DETALLES Dim tPS As String = "" For Each drr As DataRow In Obj.DtDetalle.Rows If drr("PS").ToString.Length = 1 Then tPS = drr("Obs").ToString Else If drr("PS").ToString.Length = 0 Then tPS = "" Else tPS = String.Format("{0} {1}", drr("PS"), drr("Obs")) End If End If 'CONDICIONANTE, ESPECIAL If UsuarioActual.CveEmpresa = 15 Then drr("UM") = "" 'LES COMENTAN QUE NO DEBE IR LA ETIQUETA DE LA UNIDAD EN EL PRODUCTO Dim concepto As New CFDIConceptos With {.Cantidad = drr("Cantidad").ToString.ToDecimal, .Descripcion = tPS, .ValorUnitario = drr("PU").ToString.ToDecimal, .Importe = drr("TotalImporte").ToString.ToDecimal, .Descuento = drr("Descuento").ToString.ToDecimal, .Unidad = drr("UM").ToString, .ClaveUnidad = drr("SATClaveUM").ToString, .ClaveProdServ = drr("SATClaveProdServ").ToString, .Noidentificacion = drr("Noidentificacion").ToString, .CuentaPredial = drr("CuentaPredial").ToString} 'VERIFICA SUMA SUBTOTALES If i = Obj.DtDetalle.Rows.Count AndAlso totSubTotal <> concepto.Importe Then 'PROCESO DE AJUSTA DE DECIMALES concepto.Importe = totSubTotal End If totSubTotal = totSubTotal - concepto.Importe 'SIEMPRE ESTAMOS AGREGANDO EL IVA 'concepto.Impuestos.Add(New CFDIConceptosImpuestos With {.TrasladooRetencion = "T", .Base = concepto.Importe - concepto.Descuento, .TasaOCuota = drr("PorcentajeIVA").ToString.ToDecimal, .Impuesto = "002", .Importe = drr("ImporteIVA").ToString.ToDecimal}) Timbre.Conceptos.Add(concepto) i += 1 Next Return Timbre End Function #Region "APOYO LOGISTICO" Protected Sub ChkEmitirTimbrado_CheckedChanged(sender As Object, e As EventArgs) If ChkEmitirTimbrado.Checked Then ChkEmitirCartaPorte.Checked = True ChkEmitirCartaPorte.Visible = True Else ChkEmitirCartaPorte.Visible = False ChkEmitirCartaPorte.Checked = False End If End Sub Protected Sub DldChofer_SelectedIndexChanged(sender As Object, e As EventArgs) ' Dim ObjAcar As New ClsAcarreos() ' If ObjAcar.GetChofer(DdlChofer.SelectedValue.ToEntero, UsuarioActual.CveEmpresa, 1, -1) Then ' Dim dr As DataRow = ObjAcar.DtResultados.Rows(0) ' If dr IsNot Nothing Then ' TxtResponsableRecibio.Text = dr("Chofer").ToString ' TxtIdentificacion.Text = dr("Identificacion").ToString ' TxtDomicilio.Text = dr("Domicilio").ToString ' TxtTelefono.Text = dr("Telefono").ToString ' TxtCiudad.Text = dr("Ciudad").ToString ' TxtLicencia.Text = dr("Licencia").ToString ' End If ' End If ' ObjAcar.Dispose() End Sub Protected Sub DdlUnidadCamionActivoFijo_SelectedIndexChanged(sender As Object, e As EventArgs) DvRemolque1.Visible = False DvRemolque2.Visible = False DdlRemolque1.SelectedValueExist(-1) DdlRemolque2.SelectedValueExist(-1) If DdlUnidadCamion.SelectedValue.ToEntero > 0 Then Using ObjInv As New ClsInventarios If ObjInv.GetCamiones(DdlUnidadCamion.SelectedValue.ToEntero, UsuarioActual.CveEmpresa, 1) Then DdlConfigAuto.SelectedValueExist(ObjInv.DtResultados.FiltroPrimeroValor("CveConfigAutoTransporte")) DdlConfigAuto_SelectedIndexChanged(Nothing, Nothing) End If End Using End If UpEmitirTransitorio.Update() End Sub Protected Sub DdlConfigAuto_SelectedIndexChanged(sender As Object, e As EventArgs) ValidaConfiguracionVehiculo() End Sub Private Sub ValidaConfiguracionVehiculo() DvRemolque1.Visible = False DvRemolque2.Visible = False DdlRemolque1.SelectedValueExist(-1) DdlRemolque2.SelectedValueExist(-1) If DdlConfigAuto.SelectedValue.ToEntero > 0 Then Using ObjGrales As New ClsGenerales If ObjGrales.GetCartaPorteConfigAutoTransportes() Then Dim Remolque As String = ObjGrales.DtResultados.FiltroPrimeroValor("Remolque", $" CveConfigAutoTransporte ='{DdlConfigAuto.SelectedValue.ToEntero}'") If Remolque = "1" Then RequiereRemolque = True MostrarRemolques = True End If If Remolque = "0, 1" Then RequiereRemolque = False MostrarRemolques = True End If If Remolque = "0" Then RequiereRemolque = False MostrarRemolques = False End If End If End Using Else RequiereRemolque = False MostrarRemolques = False End If If RequiereRemolque Or MostrarRemolques Then DvRemolque1.Visible = True End If If Not RequiereRemolque Then DvConfiguracionVeiculo.Visible = False Else DvConfiguracionVeiculo.Visible = True End If UpEmitirTransitorio.Update() End Sub Protected Sub DdlRemolque1_SelectedIndexChanged(sender As Object, e As EventArgs) DdlRemolque2.Items.Clear() If DdlRemolque1.SelectedValue.ToEntero > 0 Then DvRemolque2.Visible = True Using ObjInv As New ClsInventarios If ObjInv.GetCamiones(-1, UsuarioActual.CveEmpresa, 2, Estatus:=1) Then DdlRemolque2.DataSource = ObjInv.DtResultados.FiltraParametros($"CveCamion <> {DdlRemolque1.SelectedValue.ToEntero}") End If End Using DdlRemolque2.DataBind() Else DvRemolque2.Visible = False End If DdlRemolque2.Items.Insert(0, New ListItem("Seleccione uno", "-1")) UpEmitirTransitorio.Update() End Sub Function ValidaPSSAT(DrPS As DataRow) As Boolean Dim Respuesta As Boolean = False Dim CveSATPS As Integer = DrPS("CveSATPS").ToString.ToEntero Dim PesoKg As Decimal = DrPS("PesoKg").ToString.ToDecimal Dim SATClaveUnidadMedida As String = DrPS("SATClaveUnidadMedida").ToString.Trim If CveSATPS > 0 AndAlso PesoKg > 0 AndAlso SATClaveUnidadMedida.Length > 0 Then Respuesta = True Else Respuesta = False Dim SBMensaje As New StringBuilder SBMensaje.AppendLine("El producto seleccionado presenta la siguiente situación:
") If CveSATPS <= 0 Then SBMensaje.AppendLine("-Producto SAT no asignado.
") If PesoKg = 0 Then SBMensaje.AppendLine("-Producto sin peso definido.
") If SATClaveUnidadMedida.Length = 0 Then SBMensaje.AppendLine("-Producto sin unidad de medida SAT asignada. ") SBMensaje.AppendLine($"
Editar Producto ") Alert(SBMensaje.ToString, TipoMensaje.MsgAdvertencia) End If Return Respuesta End Function Public Sub CargarCamiones() DdlConfigAuto.Items.Clear() DdlUnidadCamion.Items.Clear() 'DdlUnidadCamion.DataSource = GlobalDTInvCamiones(UsuarioActual.CveEmpresa) 'DdlUnidadCamion.DataBind() Using ObjInv As New ClsInventarios If ObjInv.GetCamiones(-1, UsuarioActual.CveEmpresa, 1, Estatus:=1) Then DdlUnidadCamion.DataSource = ObjInv.DtResultados End If If ObjInv.GetCamiones(-1, UsuarioActual.CveEmpresa, 2, Estatus:=1) Then DdlRemolque1.DataSource = ObjInv.DtResultados End If End Using DdlUnidadCamion.DataBind() DdlUnidadCamion.Items.Insert(0, New ListItem("Seleccione Uno", "-1")) DdlRemolque1.DataBind() DdlRemolque1.Items.Insert(0, New ListItem("Seleccione Uno", "-1")) Using ObjGrales As New ClsGenerales If ObjGrales.GetCartaPorteConfigAutoTransportes() Then DdlConfigAuto.DataSource = ObjGrales.DtResultados End If End Using DdlConfigAuto.DataBind() DdlConfigAuto.Items.Insert(0, New ListItem("Seleccione una", "-1")) 'Using ObjGral As New ClsGenerales ' If ObjGral.GetCartaPorteConfigAutoTransportes() Then ' DdlConfigAuto.DataSource = ObjGral.DtResultados ' End If 'End Using 'DdlConfigAuto.DataBind() End Sub Private Sub CargaClientesCarta() DdlClienteCarta.DataSource = GlobalDTCliente(UsuarioActual.CveEmpresa) DdlClienteCarta.DataBind() DdlClienteCarta.Items.Insert(0, New ListItem("Seleccione", "-1")) DdlClienteCarta.SelectedValue = "-1" End Sub Private Sub EmitirTimbrado(CveTimbre As Integer, CveMovimientoTimbrado As Integer, ByRef MensajeAlert As StringBuilder) Dim ObjTimbres As New Timbres("Tra", CveTimbre, UsuarioActual) MensajeAlert.Append("

") If ObjTimbres.Timbrar() Then Try PdfFactura(ObjTimbres.ObjFactura) Catch ex As Exception End Try MensajeAlert.Append("Emitido con éxito.") 'XML Dim ArchivoXML = String.Format("{0}/XML/{1}/{2}.xml", UsuarioActual.Empresa.Ruta, ObjTimbres.ObjFactura.TipoDocto, ObjTimbres.ObjFactura.SerieFolio) If File.Exists(ArchivoXML) Then MensajeAlert.AppendFormat("", Encripta(String.Format("OP=DesXmlTra&CVEMOVIMIENTO={0}&EXT={1}&FOLIO={2}&TIPODOCTO={3}", CveMovimientoTimbrado, "XML", ObjTimbres.ObjFactura.SerieFolio, ObjTimbres.ObjFactura.TipoDocto))) End If 'PDF 'Dim ArchivoPDF = String.Format("{0}/PDF/{1}/{2}.pdf", UsuarioActual.Empresa.Ruta, ObjTimbres.ObjFactura.TipoDocto, ObjTimbres.ObjFactura.SerieFolio) 'If File.Exists(ArchivoPDF) Then ' MensajeAlert.AppendFormat("", Encripta(String.Format("OP=DesPdfTra&CVEMOVIMIENTO={0}&EXT={1}&FOLIO={2}&TIPODOCTO={3}", CveMovimientoTimbrado, "PDF", ObjTimbres.ObjFactura.SerieFolio, ObjTimbres.ObjFactura.TipoDocto))) 'End If If ChkEmitirCartaPorte.Checked Then MensajeAlert.AppendFormat("", Encripta(String.Format("OP=CARPOTIMBRE&CVETIMBRE={0}", CveTimbre))) Else MensajeAlert.AppendFormat("", Encripta(String.Format("OP=CARPO&CVEMOV={0}", CveMovimientoTimbrado))) End If Else MensajeAlert.AppendFormat("", ObjTimbres.MsgError.ToString) End If End Sub Protected Sub DdlClienteCarta_SelectedIndexChanged(sender As Object, e As EventArgs) CargaDireccionesEnvio() End Sub Private Sub CargaDireccionesEnvio() Dim ObjClientes As New ClsClientes Dim TieneError = False DdlDireccionEnvio.Items.Clear() If ObjClientes.DireccionEnvioGet(-1, DdlClienteCarta.SelectedValue.ToEntero, -1) Then DdlDireccionEnvio.DataSource = ObjClientes.DtResultados.FiltraParametros(String.Format("Estatus = 1")) DdlDireccionEnvio.DataBind() Else TieneError = True End If If TieneError Then Alert("Ocurrió un error al obtener las direcciones de envío", TipoMensaje.MsgError) End If ObjClientes.Dispose() DdlDireccionEnvio.Items.Add(New ListItem("Seleccione una", "-1")) UpEmitirTransitorio.Update() End Sub #End Region Private Class MMovimientoVirtual Public Property CveMovimientoVirtual As Integer Public Property FolioVirtual As String Public Property TieneError As Boolean End Class End Class