Option Explicit On Option Strict On Imports System.Data Imports System.IO Imports Extensiones Imports GemBox.Spreadsheet Partial Class Inventarios_TraspasoAlmacen Inherits ClsPaginas #Region "PROPIEDADES" Public Property DtMovimientos() As DataTable Get Return CType(ViewState("DtMovimientos"), DataTable) End Get Set(value As DataTable) ViewState("DtMovimientos") = value End Set End Property Private Property DtTraslado As DataTable Get Return CType(ViewState("DtTraslado"), DataTable) End Get Set(value As DataTable) ViewState("DtTraslado") = value End Set End Property Private Property CveAlmacenTransitorio As Integer Get Return CType(ViewState("CveAlmacenTransitorio"), Integer) End Get Set(value As Integer) ViewState("CveAlmacenTransitorio") = value End Set End Property Private Property CveAlmacenDestino As Integer Get Return CType(ViewState("CveAlmacenDestino"), Integer) End Get Set(value As Integer) ViewState("CveAlmacenDestino") = value End Set End Property Private Property CveUsuarioResponsable As Integer Get Return CType(ViewState("CveUsuarioResponsable"), Integer) End Get Set(value As Integer) ViewState("CveUsuarioResponsable") = value End Set End Property Private Property CvePSSerie As Integer Get Return CType(ViewState("CvePSSerie"), Integer) End Get Set(value As Integer) ViewState("CvePSSerie") = value End Set End Property Private Property CveUMSerie As Integer Get Return CType(ViewState("CveUMSerie"), Integer) End Get Set(value As Integer) ViewState("CveUMSerie") = value End Set End Property Private Property CargadoDeMov As Boolean Get Return CType(ViewState("CargadoDeMov"), Boolean) End Get Set(value As Boolean) ViewState("CargadoDeMov") = value End Set End Property Private Property CveMovimientoSalida As Integer Get Return CType(ViewState("CveMovimientoSalida"), Integer) End Get Set(value As Integer) ViewState("CveMovimientoSalida") = value End Set End Property Private Property CveMov As Integer Get Return CType(ViewState("CveMov"), Integer) End Get Set(value As Integer) ViewState("CveMov") = value End Set End Property Private Property ObjFactura As Modelos.Factura Get Return CType(ViewState("ObjFactura"), Modelos.Factura) End Get Set(value As Modelos.Factura) ViewState("ObjFactura") = value End Set End Property Private Property Folio As Integer Get Return CType(ViewState("Folio"), Integer) End Get Set(value As Integer) ViewState("Folio") = value End Set End Property Private Property MensajeAlert As StringBuilder Get Return CType(ViewState("MensajeAlert"), StringBuilder) End Get Set(value As StringBuilder) ViewState("MensajeAlert") = 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 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 TipoSeccionAlmacen As Integer Get Return CType(ViewState("TipoSeccionAlmacen"), Integer) End Get Set(value As Integer) ViewState("TipoSeccionAlmacen") = value End Set End Property Private Property FolioBusqueda As Integer Get Return CType(ViewState("FolioBusqueda"), Integer) End Get Set(value As Integer) ViewState("FolioBusqueda") = value End Set End Property Private Property ArchivoBitacora As String Get Return CType(ViewState("ArchivoBitacora"), String) End Get Set(value As String) ViewState("ArchivoBitacora") = value End Set End Property #End Region Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load If Not Page.IsPostBack Then TxtFecha.Text = Now.ToShortDateString CEFecha.EndDate = Now.AddDays(-1) RVFecha.MaximumValue = Now.ToShortDateString TxtFechaRecepcion.Text = Now.ToShortDateString CEFechaRecepcion.EndDate = Now.AddDays(-1) RVFechaRecepcion.MaximumValue = Now.ToShortDateString Folio = 0 CveMovimientoTimbrado = -1 ArchivoBitacora = UsuarioActual.Empresa.Ruta & "Temp\Traspaso_" & UsuarioActual.CveUsuario & ".xml" If UsuarioActual.CveEmpresa = 119 Then divGastoIndirecto.Visible = False LblGastoIndirecto.Visible = False divResponsable.Visible = False End If CargaCombos() CreaDT() AlmacenTransitorioDefaults() If Request("CveEntrada") IsNot Nothing AndAlso Request("CveEntrada").ToString.ToEntero > 0 Then CargaMovimiento(Request("CveEntrada").ToString.ToEntero) End If If UsuarioActual.Empresa.Funcionalidad(132) = "1" Then DivCodigoSeriePS.Visible = True Else DivCodigoSeriePS.Visible = False End If If ChkTransitorio.Checked Then RegistraScript(" $('#DivGastoIndirecto').show(0); ") DivResponsable.Visible = True DivTransitorio2.Visible = True End If If UsuarioActual.CveEmpresa.Contiene(141, 152, 158, 159, 160, 161, 162, 163) Then ChkEmitirTimbrado.Visible = False divEmitir.Visible = False End If If UsuarioActual.CveEmpresa.Contiene(1, 2, 119, 140) Then ChkEmitirCartaPorte.Visible = True End If CantidadTotal = 0 CvePS = 0 TipoSeccionAlmacen = 0 If UsuarioActual.Empresa.Funcionalidad(281).ToEntero = 1 Then TxtFecha.Enabled = False ImgFecha.Visible = False TxtFechaRecepcion.Enabled = False ImgFechaRecepcion.Visible = False End If Else If ChkTransitorio.Checked Then RegistraScript(" $('#DivGastoIndirecto').show(0); ") DivResponsable.Visible = True DivTransitorio2.Visible = True End If End If End Sub #Region "CARGA DATOS" 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(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("UM") dt.Columns.Add("CvePS", Type.GetType("System.Int32")) dt.Columns.Add("CveAF", Type.GetType("System.Int32")) dt.Columns.Add("PS") dt.Columns.Add("Observaciones") dt.Columns.Add("CveSeccionAlmacen", Type.GetType("System.Int32")) dt.Columns.Add("SeccionAlmacen") dt.Columns.Add("CveSeccionAlmacenDestino", Type.GetType("System.Int32")) dt.Columns.Add("SeccionAlmacenDestino") dt.Columns.Add("Serie") dt.Columns.Add("Lote") dt.Columns.Add("FechaCaducidad", Type.GetType("System.DateTime")) 'dt.Columns.Add("PU", Type.GetType("System.Double")) 'dt.Columns.Add("Total", Type.GetType("System.Double")) dt.Columns.Add("CveClasificacion", Type.GetType("System.Int32")) dt.Columns.Add("EstatusExistencia") dt.Columns.Add("TotalImporte", Type.GetType("System.Double")) dt.Columns.Add("PU", Type.GetType("System.Double")) dt.Columns.Add("Descuento", Type.GetType("System.Double")) 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")) dt.Columns.Add("ClaveMaterialPeligroso") dt.Columns.Add("ClaveEmbalaje") dt.Columns.Add("Embalaje") dt.Columns.Add("PesoKg", Type.GetType("System.Decimal")) dt.TableName = "TablaTraspaso" DtMovimientos = dt CargaGvDatos() End Sub Private Sub CargaMovimiento(CveMovimiento As Integer) Dim Mov As New ClsInventarios If Mov.GetMovimientos(CveMovimiento, 2, -1, UsuarioActual.CveEmpresa) Then If Mov.DtResultados.Rows.Count = 1 Then DivMov.Visible = True ltlFolio.Text = Mov.DtResultados(0)("Folio").ToString ltlFecha.Text = Mov.DtResultados(0)("FechaMovto").ToString.ToDate.ToShortDateString If Mov.CveCompra > 0 Then hplRef.NavigateUrl = $"/Compras/Compras.aspx?CveCompra={Mov.CveCompra}" lblCompraRef.Visible = True hplRef.Visible = True Else hplRef.Visible = False lblCompraRef.Visible = False End If CargadoDeMov = True If (DdlAlmacenOrigen.Items.FindByValue(Mov.CveAlmacen.ToString()) Is Nothing) Then Dim dr As DataRow = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimero(String.Format("CveAlmacen = {0}", Mov.CveAlmacen)) If dr IsNot Nothing Then DdlAlmacenOrigen.Items.Insert(0, New ListItem(dr("Almacen").ToString, dr("CveAlmacen").ToString)) ' lo genera Obj.SelectedValue = Valor.ToString DdlAlmacenOrigen.Enabled = False End If Else DdlAlmacenOrigen.SelectedValue = Mov.CveAlmacen.ToString End If DdlAlmacenOrigen.Enabled = False 'If GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveTipoAlmacen", $"CveAlmacen = {Mov.CveAlmacenDestino}").ToEntero = 16 Then ' CveMov = CveMovimiento ' LnkEnviarMail.Attributes.Add("onclick", "$('#ModalDivMail').modal();") ' LnkEnviarMail.Visible = True 'End If If Mov.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) Then DtMovimientos = Mov.DtResultados.DefaultView.ToTable("Cantidad, CveUM, CvePS, CveAF, PS, Serie, CveSeccionAlmacen, CveClasificacion, EstatusExistencia") CargaGvDatos() End If Else Alert("El movimiento solicitado no existe. ", TipoMensaje.MsgAdvertencia) End If Else Alert("Ocurrió un error al cargar el movimiento a traspasar. Por favor vuelva a intentar.", TipoMensaje.MsgError) End If Mov.Dispose() UpMov.Update() End Sub Private Sub AlmacenTransitorioDefaults() ChkTransitorio.Checked = UsuarioActual.Empresa.Funcionalidad(154).ToString.ToEntero > 0 ChkTransitorio.Enabled = Not UsuarioActual.Empresa.Funcionalidad(154).ToString.ToEntero > 0 End Sub Private Sub CargaCombos() ''Llenar Clasificaciones 'If UsuarioActual.CveEmpresa = 66 Then ' DdlClasificacion.DataSource = GlobalDTSubFamilias(UsuarioActual.CveEmpresa).FiltraParametros("", Orderby:="Clasificacion") 'Else ' DdlClasificacion.DataSource = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltraParametros(" Codigo = '' OR Codigo IS NULL ", Orderby:="Clasificacion") 'End If 'DdlClasificacion.DataBind() 'Llena Almacen Origen CargaAlmacenOrigen() 'DdlAlmacenOrigen.Items.Insert(0, New ListItem("Seleccione", "-1")) 'Dim dtAlm As DataTable = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, 1) 'dtAlm.Merge(GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, 2)) 'Llena Almacen Destino, todos los almacenes destino, DdlAlmacenDestino.DataSource = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltraParametros("CveTipoAlmacen NOT IN (3,4,9,10,11,24) AND Estatus = 'Activo'") 'DdlAlmacenDestino.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1).FiltraParametros("CveTipoAlmacen <> 4") DdlAlmacenDestino.DataBind() DdlAlmacenDestino.Items.Insert(0, New ListItem("Seleccione", "-1")) 'Llena Almacen Transitorio DdlAlmacenTransitorio.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, 3) DdlAlmacenTransitorio.DataBind() 'DdlAlmacenTransitorio.Items.Insert(0, New ListItem("Seleccione", "-1")) 'Llena Almacen Recepcion DdlAlmacenRecepcion.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1).FiltraParametros("CveTipoAlmacen NOT IN (3,4,9,10,11,24)") DdlAlmacenRecepcion.DataBind() DdlAlmacenRecepcion.Items.Insert(0, New ListItem("Todos", "-1")) 'Llena Almacen Transitorio Recepcion DdlAlmacenTransitorioRecepcion.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, 3) DdlAlmacenTransitorioRecepcion.DataBind() DdlAlmacenTransitorioRecepcion.Items.Insert(0, New ListItem("Seleccione", "-1")) ''Llena Almacen Recibe 'DdlAlmacenRecibe.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) 'DdlAlmacenRecibe.DataBind() 'Llena Unidaddes Medida 'DdlUnidad.DataSource = GlobalDTUnidadesMedida(UsuarioActual.CveEmpresa) 'DdlUnidad.DataBind() 'Llena Choferes DdlChofer.DataSource = GlobalDTChoferes(UsuarioActual.CveEmpresa) DdlChofer.DataBind() DdlChofer.Items.Insert(0, New ListItem("Seleccione", "-1")) TxtFechaEntrega.Text = Now.ToShortDateString TxtFechaLlegada.Text = Now.ToShortDateString 'Llena Responsables Transitorio 'DdlResponsable.DataSource = GlobalDTUsuarios(-1, UsuarioActual.CveEmpresa) 'DdlResponsable.DataBind() 'DdlResponsable.Items.Insert(0, New ListItem("Seleccione", "-1")) 'Llena Responsables Transitorio recepcion 'DdlResponsableRecepcion.DataSource = GlobalDTUsuarios(-1, UsuarioActual.CveEmpresa) 'DdlResponsableRecepcion.DataBind() 'DdlResponsableRecepcion.Items.Insert(0, New ListItem("Seleccione", "-1")) 'Llenar el dropdownlist de Productos y servicios 'If UsuarioActual.Empresa.Funcionalidad(105) = "" Then ' DdlProducto.DataSource = GlobalDTProductosServicios(UsuarioActual.CveEmpresa) ' DdlProducto.DataBind() ' DdlProducto.Items.Insert(0, New ListItem("----", "-1")) ' DdlProductows.Visible = False 'Else ' DdlProducto.Visible = False 'End If CargaPS() 'Folio SiguienteFolio(If(ChkTransitorio.Checked, 9, 8)) 'DdlProducto.DataBind() CargarCamiones() End Sub Private Sub CargaAlmacenOrigen() DdlAlmacenOrigen.Enabled = True DdlAlmacenOrigen.Items.Clear() DdlAlmacenOrigen.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1).FiltraParametros("CveTipoAlmacen NOT IN (3,4,9,10,11,24)") DdlAlmacenOrigen.Items.Insert(0, New ListItem(" Seleccione ", "-1")) DdlAlmacenOrigen.SelectedValue = "-1" DdlAlmacenOrigen.DataBind() DdlAlmacenOrigen.SelectedValueExist(UsuarioActual.CveAlmacen) End Sub Private Sub CargaPS() 'DdlProducto2.setEsWebService(UsuarioActual.Empresa.Funcionalidad(105) = "1") 'If Not DdlProducto2.UsaWebService AndAlso CType(DdlProducto2.DataSource, DataTable) Is Nothing Then ' DdlProducto2.DataSource = GlobalDTProductosServicios(UsuarioActual.CveEmpresa) ' DdlProducto2.DataBind() 'End If Dim EsWS = If(UsuarioActual.Empresa.Funcionalidad(105) = "1" Or UsuarioActual.Empresa.Funcionalidad(141) = "1", True, False) DdlProducto2.setEsWebService(EsWS) If DdlProducto2.UsaWebService Then 'DdlProducto2.ddlWS.Attributes.Add("data-cveclasificacion", DdlClasificacion.SelectedValue) If UsuarioActual.Empresa.Funcionalidad(141) = "1" Then DdlProducto2.ddlWS.Attributes.Add("data-pagina", "inv/traspaso") DdlProducto2.ddlWS.Attributes.Add("Data-onresult", "CargaExistenciaAlmacenes") CargaExistenciasSucursal() DdlAlmacenOrigen.AutoPostBack = True End If 'ElseIf Not DdlProducto2.UsaWebService AndAlso CType(DdlProducto2.DataSource, DataTable) Is Nothing Then ' DdlProducto2.DataSource = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CveClasificacion:=DdlClasificacion.SelectedValue.ToEntero).FiltraParametros("CveTipoPS = 2") ' DdlProducto2.DataBind() End If End Sub Private Sub CargaExistenciasSucursal() DdlProducto2.Attributes.Remove("Data-cvesubproyecto") DdlProducto2.Attributes.Add("Data-cvesubproyecto", GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveSubProyecto", $"CveAlmacen = {DdlAlmacenOrigen.SelectedValue}")) End Sub Private Sub SiguienteFolio(CveConcepto As Integer) 'Dim Inv As New ClsInventarios 'Dim Folio As Integer = Inv.GetFolioSiguiente(CveConcepto, UsuarioActual.CveEmpresa) 'Inv.Dispose() 'TxtFolio.Text = Folio.ToString End Sub #End Region #Region " AGREGAR " Protected Sub btnAgregar_Click(sender As Object, e As EventArgs) Handles LbAgregar.Click BtnAgregarPS(txtCantidad.Text.ToDecimal) End Sub Protected Sub BtnSerieAddNew_Click(sender As Object, e As EventArgs) BtnAgregarPS(1) End Sub Private Sub BtnAgregarPS(Cantidad As Decimal) Dim CveProducto As Integer = DdlProducto2.SelectedValue.ToEntero Dim FuncionalidadSinSerie = True If CveProducto > 0 Then If TxtnSerie.Visible Then Cantidad = 1 If TxtnSerie.Text = "" Then Alert("Serie es necesario", TipoMensaje.MsgAdvertencia) RegistraScript("playsonidito(''142608__autistic-lucario__error.wav'')") Exit Sub End If If txtCantidad.Text.ToDouble > 1 Then FuncionalidadSinSerie = False End If End If Dim DrPS As DataRow = Nothing DrPS = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CveProducto).FiltroPrimero("") ' Estado = -1 If DrPS IsNot Nothing Then If Cantidad > 0 AndAlso DrPS("VentaMinima").ToString.ToDecimal > 0 Then 'verifico que la cantidad sea multiplo de venta minima, es decir ventaminima =5, solo puede vender 5,10,15... If Cantidad Mod DrPS("VentaMinima").ToString.ToDecimal <> 0 Then Alert(String.Format("El producto se vende solo en cantidades de {0:#,###.####}", DrPS("VentaMinima"))) Exit Sub End If End If 'codigo provisional. Dim CveSubP As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=DdlAlmacenOrigen.SelectedValue.ToEntero).FiltroPrimeroValor("CveSubProyecto", "").ToEntero If DrPS("AplicaCaducidad").ToString = "True" AndAlso CveSubP.ToString.Contiene(UsuarioActual.Empresa.Funcionalidad(347)) Then If Not ChkSugiereFechaCaducidad.Checked AndAlso (TxtnFechaCaducidad.Text = "" OrElse TxtnLote.Text = "") Then Alert("Falta Especificar lote/Fecha del producto", TipoMensaje.MsgAdvertencia) Exit Sub End If End If If DrPS("AplicaCaducidad").ToString = "True" AndAlso ChkSugiereFechaCaducidad.Checked And CveSubP.ToString.Contiene(UsuarioActual.Empresa.Funcionalidad(347)) Then Dim ObjInventarios As New ClsInventarios If ObjInventarios.GetExistenciasCaducidad(CveProducto, DdlAlmacenOrigen.SelectedValue.ToEntero, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, DdlAlmacenOrigen.SelectedValue) Then Dim dtt As DataTable = ObjInventarios.DtResultados If Cantidad > dtt.SUMD("Cantidad") Then Alert("No se cuenta con la cantidad requerida") Else 'recorro las existencias para tomar la cantidad Dim i As Decimal = 0 Dim CantidadRestante As Decimal = Cantidad For Each drr As DataRow In dtt.Rows If drr("Cantidad").ToString.ToDecimal < CantidadRestante Then i = drr("Cantidad").ToString.ToDecimal Else i = CantidadRestante End If AgregarPS(i, CveProducto, DdlUnidad.SelectedValue.ToEntero, TxtnObservaciones.Text, CveSeccionAlmacen:=DdlSeccionAlmacen.SelectedValue.ToEntero, SeccionAlmacen:=DdlSeccionAlmacen.SelectedItem.Text, Lote:=drr("Lote").ToString, FechaCaducidad:=drr("FechaCaducidad").ToString.ToDate, CveSeccionAlmacenDestino:=DdlSeccionAlmacenDestino.SelectedValue.ToEntero, Limpia:=FuncionalidadSinSerie) CantidadRestante -= i If CantidadRestante <= 0 Then Exit For Next End If End If ObjInventarios.Dispose() Else 'codigo temporal Dim tLote As String Dim tCaducidad As Date tLote = If(TxtnLote.Visible, TxtnLote.Text, "-1") tCaducidad = If(TxtnFechaCaducidad.Visible, TxtnFechaCaducidad.Text.ToDate, MinFecha) If Not CveSubP.ToString.Contiene(UsuarioActual.Empresa.Funcionalidad(347)) Then tLote = "-1" tCaducidad = MinFecha End If Dim tSerie As String = If(TxtnSerie.Visible, TxtnSerie.Text, "-1") 'If UsuarioActual.CveEmpresa = 140 Then ' Dim CveSubProyecto As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveSubProyecto", $"CveAlmacen = {DdlAlmacenOrigen.SelectedValue}").ToEntero ' If Not CveSubProyecto.Contiene(11791, 11793, 11993, 11994, 11794, 11797, 11795, 12010, 12011) Then ' tSerie = "-1" ' End If 'End If Dim Valido = ValidaExistencia(Cantidad, CveProducto, DdlUnidad.SelectedValue.ToEntero, DdlSeccionAlmacen.SelectedValue.ToEntero, tSerie, tLote, tCaducidad) If Valido Then AgregarPS(Cantidad, CveProducto, DdlUnidad.SelectedValue.ToEntero, TxtnObservaciones.Text, CveSeccionAlmacen:=DdlSeccionAlmacen.SelectedValue.ToEntero, SeccionAlmacen:=DdlSeccionAlmacen.SelectedItem.Text, Serie:=If(TxtnSerie.Visible, TxtnSerie.Text, ""), Lote:=If(tLote = "-1", "", tLote), FechaCaducidad:=tCaducidad, CveSeccionAlmacenDestino:=DdlSeccionAlmacenDestino.SelectedValue.ToEntero, Limpia:=FuncionalidadSinSerie) End If End If End If End If End Sub Private Function ValidaExistencia(Cantidad As Double, CvePS As Integer, CveUnidadMedida As Integer, CveSeccionAlmacen As Integer, Serie As String, Lote As String, FechaCaducidad As Date) As Boolean Dim Retorno = True Dim ExistenciaEspecificada As Decimal Dim PendienteporSurtir As Decimal Dim CantidadEnGrid As Decimal = DtMovimientos.SUMD("Cantidad", $"CvePS = {CvePS} AND CveUM = {CveUnidadMedida} {If(Serie <> "-1", $" AND Serie = '{Serie}'", "")}") Dim Existencia As Decimal Dim Inv As New ClsInventarios If Inv.GetExistenciasProducto(CvePS, CveUnidadMedida, UsuarioActual.CveEmpresa, DdlAlmacenOrigen.SelectedValue.ToEntero, FechaMovto:=TxtFecha.Text.ToDateTime.ToString("yyyy/MM/dd HH:mm")) Then 'si hay existencia en almacen costeado, lo tengo que sacar Existencia = Inv.DtResultados.FiltroPrimeroValor("ExistenciaFinal", String.Format("CveAlmacen = {0}", DdlAlmacenOrigen.SelectedValue)).ToDecimal PendienteporSurtir = Inv.DtResultados.FiltroPrimeroValor("PendientePorSurtir", String.Format("CveAlmacen = {0}", DdlAlmacenOrigen.SelectedValue)).ToDecimal End If 'Existencia= Inv.GetExistenciasPS(CvePS, CveUnidadMedida, UsuarioActual.CveEmpresa, DdlAlmacenOrigen.SelectedValue.ToEntero, FechaMovto:=TxtFecha.Text.ToDate.ToString("yyyy/MM/dd 23:59"), PendientePorSurtir:=1) If Existencia >= Cantidad Then 'la primera vez valida, que la existencia global, cumpla, considerando lo pendiente por surtir 'las segunda consulta, que tenga existencia, ya con los parametros especificos If (FechaCaducidad > MinFecha OrElse Not Serie.Contiene("", "-1") OrElse Not Lote.Contiene("", "-1")) Then If Inv.GetExistenciasProducto(CvePS, CveUnidadMedida, UsuarioActual.CveEmpresa, DdlAlmacenOrigen.SelectedValue.ToEntero, FechaMovto:=TxtFecha.Text.ToDateTime.ToString("yyyy/MM/dd HH:mm"), CveSeccionAlmacen:=CveSeccionAlmacen, Serie:=Serie, Lote:=Lote, Caducidad:=FechaCaducidad) Then 'aqui se toma la COLUMNA Existencia, porque ya está validado que hay existencia suficiente para surtir, considerando lo pendiente por surtir, entonces se asume no se tomará la serie/lote ExistenciaEspecificada = Inv.DtResultados.FiltroPrimeroValor("Existencia", String.Format("CveAlmacen = {0}", DdlAlmacenOrigen.SelectedValue)).ToDecimal End If 'ExistenciaEspecificada = Inv.GetExistenciasPS(CvePS, CveUnidadMedida, UsuarioActual.CveEmpresa, DdlAlmacenOrigen.SelectedValue.ToEntero, FechaMovto:=TxtFecha.Text.ToDate.ToString("yyyy/MM/dd 23:59"), CveSeccionAlmacen:=CveSeccionAlmacen, Serie:=Serie, Lote:=Lote, FechaCaducidad:=FechaCaducidad, PendientePorSurtir:=-1) Dim StrB As New StringBuilder StrB.AppendFormat("CvePS = {0} AND CveUM = {1} ", CvePS, CveUnidadMedida) If Not Serie.Contiene("", "-1") Then StrB.AppendFormat(" AND Serie = '{0}' ", Serie) If Not Lote.Contiene("", "-1") Then StrB.AppendFormat(" AND Lote = '{0}' ", Lote) If FechaCaducidad.ToDate > MinFecha Then StrB.AppendFormat(" AND FechaCaducidad = '{0}' ", FechaCaducidad.ToShortDateString) Dim CantidadEspecificaEnGrid As Decimal = DtMovimientos.SUMD("Cantidad", StrB.ToString) If ExistenciaEspecificada - Cantidad - CantidadEspecificaEnGrid < 0 Then Alert(String.Format("Solo hay en existencia: {0:#,###.##}", ExistenciaEspecificada), TipoMensaje.MsgAdvertencia) RegistraScript("playsonidito(''142608__autistic-lucario__error.wav'')") Retorno = False End If Else ExistenciaEspecificada = Existencia If Existencia - Cantidad - CantidadEnGrid < 0 Then Alert(String.Format("Solo hay en existencia: {0:#,###.##}", ExistenciaEspecificada), TipoMensaje.MsgAdvertencia) RegistraScript("playsonidito(''142608__autistic-lucario__error.wav'')") Retorno = False End If End If Else Alert("No hay existencia del producto", TipoMensaje.MsgAdvertencia) RegistraScript("playsonidito(''142608__autistic-lucario__error.wav'')") Retorno = False End If Inv.Dispose() Return Retorno End Function Private Sub AgregarPS(Cantidad As Double, CvePS As Integer, CveUnidadMedida As Integer, Optional Observaciones As String = "", Optional CveSeccionAlmacen As Integer = -1, Optional SeccionAlmacen As String = "", Optional Serie As String = "", Optional Lote As String = "", Optional FechaCaducidad As Date = MinFecha, Optional Limpia As Boolean = True, Optional CveSeccionAlmacenDestino As Integer = -1) If Cantidad <= 0 Then Alert("La cantidad debe ser mayor a cero (0). Por favor verifique y vuelva a intentar", TipoMensaje.MsgAdvertencia) RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") End If Dim CveClasificacion As Integer Dim DrPS As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePS).FiltroPrimero("") If ChkEmitirTimbrado.Checked AndAlso ChkEmitirCartaPorte.Checked Then If Not ValidaPSSAT(DrPS) Then Exit Sub End If End If If DrPS IsNot Nothing Then CveClasificacion = DrPS("CveClasificacion").ToString.ToEntero Dim DrUM = GlobalDTUnidadesMedida(UsuarioActual.CveEmpresa).FiltroPrimero($"CveUnidadMedida = {CveUnidadMedida}") Dim registro As DataRow = DtMovimientos.NewRow registro.Item("Cantidad") = Cantidad registro.Item("CveUM") = CveUnidadMedida registro.Item("UM") = DrUM("UnidadMedida") registro.Item("UnidadMedida") = DrUM("UnidadMedida") registro.Item("CvePS") = CvePS registro.Item("PS") = DrPS("PSCodigo") registro.Item("Observaciones") = Observaciones registro.Item("Serie") = Serie registro.Item("Lote") = Lote If FechaCaducidad > MinFecha Then registro.Item("FechaCaducidad") = FechaCaducidad registro.Item("CveClasificacion") = CveClasificacion registro.Item("CveAF") = -1 registro.Item("EstatusExistencia") = "1" registro.Item("CveSeccionAlmacen") = CveSeccionAlmacen registro.Item("SeccionAlmacen") = SeccionAlmacen registro.Item("CveSeccionAlmacenDestino") = CveSeccionAlmacenDestino registro.Item("TotalImporte") = 0 registro.Item("PU") = 0 registro.Item("Descuento") = 0 registro.Item("SATClaveUM") = DrPS("SATClaveUnidadMedida") registro.Item("SATClaveProdServ") = DrPS("SATClavePS") registro.Item("Noidentificacion") = DrPS("Codigo") registro.Item("CuentaPredial") = "" registro.Item("Obs") = "" registro.Item("ImporteIVA") = 0 registro.Item("PorcentajeIVA") = 0 registro("ClaveMaterialPeligroso") = DrPS("ClaveMaterialPeligroso") registro("ClaveEmbalaje") = DrPS("ClaveEmbalaje") registro("PesoKg") = DrPS("PesoKg") DtMovimientos.Rows.Add(registro) RegistraScript("playsonidito('beep-07.wav')") IO.Path.GetDirectoryName(ArchivoBitacora).DirectoryExistsCreate 'verifica que exista la ruta ActualizaBitacora() End If CargaGvDatos() If Limpia Then LimpiaAgregar() Else txtCantidad.Text = (txtCantidad.Text.ToDouble - 1.0).ToString TxtnSerie.Text = "" TxtnSerie.Focus() End If End Sub Private Sub ActualizaBitacora(Optional Eliminar As Boolean = False) If Not Eliminar Then DtMovimientos.WriteXml(ArchivoBitacora, XmlWriteMode.WriteSchema) Else File.Delete(ArchivoBitacora) End If End Sub Private Sub LimpiaAgregar() 'DdlClasificacion.SelectedValue = "-1" 'DdlClasificacion_SelectedIndexChanged(DdlClasificacion, EventArgs.Empty) txtCantidad.Text = "" TxtnObservaciones.Text = "" TxtnSerie.Text = "" TxtnSerie.Visible = False TxtnLote.Text = "" TxtnFechaCaducidad.Text = "" txtCantidad.Focus() If TxtCodigoPS.Visible Then TxtCodigoPS.Focus() End If End Sub #End Region #Region " GUARDAR " Protected Sub BtnGuardar_Click(sender As Object, e As EventArgs) Handles BtnGuardar.Click 'If ChkEmitirTimbrado.Checked Then ' If DdlChofer.SelectedValue.ToEntero <= 0 Then ' Alert("Debe de seleccionar un chofer") ' Exit Sub ' End If ' If DdlUnidadCamion.SelectedValue.ToEntero <= 0 Then ' Alert("Debe de seleccionar una unidad") ' Exit Sub ' End If 'End If 'VALIDA ALMACEN ORIGEN Y DESTINO If DdlAlmacenOrigen.SelectedValue = DdlAlmacenDestino.SelectedValue Then Alert("No se puede realizar un traspaso entre el mismo almacén.", TipoMensaje.MsgAdvertencia) Exit Sub End If 'VALIDA TRANSITORIO If ChkTransitorio.Checked Then If TxtResponsable.Text.Trim = "" And Not UsuarioActual.CveEmpresa.Contiene(119) Then Alert("Debe seleccionar un responsable para el traspaso transitorio.", TipoMensaje.MsgAdvertencia) RegistraScript("playsonidito(''142608__autistic-lucario__error.wav'')") If ChkTransitorio.Checked Then DivResponsable.Visible = True : DivTransitorio2.Visible = True Exit Sub End If If DdlAlmacenTransitorio.SelectedValue.ToEntero <= 0 Then Alert("Debe seleccionar un almacen transitorio.", TipoMensaje.MsgAdvertencia) RegistraScript("playsonidito(''142608__autistic-lucario__error.wav'')") If ChkTransitorio.Checked Then DivResponsable.Visible = True : DivTransitorio2.Visible = True Exit Sub End If If DdlChofer.SelectedValue.ToEntero <= 0 And UsuarioActual.CveEmpresa.Contiene(119) Then Alert("Debe seleccionar un Chofer", TipoMensaje.MsgAdvertencia) RegistraScript("playsonidito(''142608__autistic-lucario__error.wav'')") If ChkTransitorio.Checked Then DivResponsable.Visible = True : DivTransitorio2.Visible = True Exit Sub End If End If Dim DrAlmO, DrAlmD As DataRow Dim CveSucursalOrigen, CveSucursalDestino As Integer Dim TipoAlmacenOrigen, TipoAlmacenDestino As Integer Dim CveSubProyectoOrigen, CveSubProyectoDestino As Integer Dim IdCtaContableOrigen, IdCtaContableDestino As Integer Dim CveAlmacenVirtualSalida As Integer = -1 Dim CveAlmacenVirtualEntrada As Integer = -1 DrAlmO = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=DdlAlmacenOrigen.SelectedValue.ToEntero).FiltroPrimero("") DrAlmD = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=DdlAlmacenDestino.SelectedValue.ToEntero).FiltroPrimero("") If DrAlmO IsNot Nothing AndAlso DrAlmD IsNot Nothing Then CveSucursalOrigen = DrAlmO("CveSubProyecto").ToString.ToEntero TipoAlmacenOrigen = DrAlmO("CveTipoAlmacen").ToString.ToEntero CveSubProyectoOrigen = DrAlmO("CveSubProyecto").ToString.ToEntero IdCtaContableOrigen = DrAlmO("IdCtaContable").ToString.ToEntero CveAlmacenVirtualSalida = DrAlmO("CveAlmacenVirtual").ToString.ToEntero CveSucursalDestino = DrAlmD("CveSubProyecto").ToString.ToEntero TipoAlmacenDestino = DrAlmD("CveTipoAlmacen").ToString.ToEntero CveSubProyectoDestino = DrAlmD("CveSubProyecto").ToString.ToEntero IdCtaContableDestino = DrAlmD("IdCtaContable").ToString.ToEntero CveAlmacenVirtualEntrada = DrAlmD("CveAlmacenVirtual").ToString.ToEntero End If Dim RealizarMovimientoVirtual As Boolean = False If UsuarioActual.Empresa.Funcionalidad(573) = "1" AndAlso TipoAlmacenOrigen.Contiene(1, 27) Then RealizarMovimientoVirtual = True End If 'VALIDA ALMACEN DISTINTA SUCURSAL DEBE SER TRANSITORIO If Not UsuarioActual.CveEmpresa.Contiene(7, 140) Then '[IPP] EMPRESA VIGILANCIA NO OCUPA TRANSITORIOS - TIENEN MIL SUCURSALES Xd If Not ChkTransitorio.Checked Then If Not TipoAlmacenDestino.Contiene(21, 26) Then 'NO SE VALIDA CUANDO EL TIPO DE ALMACEN DESTINO ES DE DEVOLUCION If CveSucursalOrigen <> CveSucursalDestino Then Alert("Por ser un traspaso entre sucursales es necesario indicar que el traspaso es transitorio.", TipoMensaje.MsgAdvertencia) RegistraScript("playsonidito(''142608__autistic-lucario__error.wav'');", "SonidoError") ChkTransitorio.Checked = True If ChkTransitorio.Checked Then DivResponsable.Visible = True : DivTransitorio2.Visible = True Exit Sub End If End If End If End If 'VALIDA QUE TENGA MOVTOS If Not GvDatos.Rows.Count > 0 Then Alert("No hay movimientos para el traspaso", TipoMensaje.MsgAdvertencia) RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") Exit Sub End If 'VALIDA ESTATUS EXISTENCIA For Each dr As DataRow In DtMovimientos.Rows If dr("EstatusExistencia").ToString = "-1" Then Alert("Tiene que rectificar los movimientos con error.", TipoMensaje.MsgError) If ChkTransitorio.Checked Then DivResponsable.Visible = True : DivTransitorio2.Visible = True Exit Sub End If Next Dim ObjInventario As New ClsInventarios 'VALIDA LA EXISTENCIA DEL ALMACEN DE ORIGEN Dim ErrorExistencia = False Dim Serie, Lote As String Dim CveSeccionAlmacen As Integer Dim FechaCaducidad As Date Dim TextoExistencia As StringBuilder = New StringBuilder Dim Existencia As Decimal Dim CantidadenGrid As Decimal TextoExistencia.Append("Los siguiente productos se ajustaron por falta de existencia:
") If Not CargadoDeMov Then For Each dr As DataRow In DtMovimientos.Rows CveSeccionAlmacen = If(dr("CveSeccionAlmacen").ToString = "", -1, dr("CveSeccionAlmacen").ToString.ToEntero) Serie = If(dr("Serie").ToString = "", "-1", dr("Serie").ToString) Lote = If(dr("Lote").ToString = "", "-1", dr("Lote").ToString) FechaCaducidad = If(dr("FechaCaducidad").ToString = "", MinFecha, dr("FechaCaducidad").ToString.ToDate) Dim tLote As String = If(Lote <> "-1", String.Format("AND Lote = '{0}' ", Lote), "") Dim tFechaCaducidad As String = If(FechaCaducidad > MinFecha, String.Format("AND FechaCaducidad = '{0}' ", FechaCaducidad), "") 'If UsuarioActual.CveEmpresa = 140 Then ' Dim CveSubProyecto As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveSubProyecto", $"CveAlmacen = {DdlAlmacenOrigen.SelectedValue}").ToEntero ' If Not CveSubProyecto.Contiene(11791, 11793, 11993, 11994, 11794, 11797, 11795, 12010, 12011) Then ' Serie = "-1" ' End If 'End If Dim ExistenciaEspecificada As Decimal = 0 CantidadenGrid = DtMovimientos.SUMD("Cantidad", String.Format("CvePS = {0} AND CveUM = {1} {2} {3} {4} ", dr("CvePS"), dr("CveUM"), If(Not dr("Serie").ToString.Contiene("-1", ""), $" AND Serie = '{dr("Serie")}'", ""), tLote, tFechaCaducidad)) If ObjInventario.GetExistenciasProducto(dr("CvePS").ToString.ToEntero, dr("CveUM").ToString.ToEntero, UsuarioActual.CveEmpresa, DdlAlmacenOrigen.SelectedValue.ToEntero, FechaMovto:=TxtFecha.Text.ToDateTime.ToString("yyyy/MM/dd HH:mm"), CveSeccionAlmacen:=CveSeccionAlmacen, Serie:=Serie, Lote:=Lote, Caducidad:=FechaCaducidad) Then 'si hay existencia en almacen costeado, lo tengo que sacar Existencia = ObjInventario.DtResultados.FiltroPrimeroValor("ExistenciaFinal", String.Format("CveAlmacen = {0}", DdlAlmacenOrigen.SelectedValue)).ToDecimal End If 'Existencia = ObjInventario.GetExistenciasPS(dr("CvePS").ToString.ToEntero, dr("CveUM").ToString.ToEntero, UsuarioActual.CveEmpresa, DdlAlmacenOrigen.SelectedValue.ToEntero, FechaMovto:=TxtFecha.Text.ToDate.ToString("yyyy/MM/dd 23:59"), CveSeccionAlmacen:=CveSeccionAlmacen, Serie:=Serie, Lote:=Lote, FechaCaducidad:=FechaCaducidad, PendientePorSurtir:=1) Existencia -= CantidadenGrid 'DtMovimientos.SUM("Cantidad", String.Format("CvePS = {0}", dr("CvePS").ToString.ToEntero)) 'la primera vez valida, que la existencia global, cumpla, considerando lo pendiente por surtir 'las segunda consulta, que tenga existencia, ya con los parametros especificos If FechaCaducidad > MinFecha OrElse (Lote <> "-1" AndAlso Lote <> "") OrElse (Serie <> "-1" AndAlso Serie <> "") Then If ObjInventario.GetExistenciasProducto(dr("CvePS").ToString.ToEntero, dr("CveUM").ToString.ToEntero, UsuarioActual.CveEmpresa, DdlAlmacenOrigen.SelectedValue.ToEntero, FechaMovto:=TxtFecha.Text.ToDateTime.ToString("yyyy/MM/dd HH:mm"), CveSeccionAlmacen:=CveSeccionAlmacen, Serie:=Serie, Lote:=Lote, Caducidad:=FechaCaducidad) Then ExistenciaEspecificada = ObjInventario.DtResultados.FiltroPrimeroValor("Existencia", String.Format("CveAlmacen = {0}", DdlAlmacenOrigen.SelectedValue)).ToDecimal End If Existencia = ExistenciaEspecificada - CantidadenGrid End If If Existencia < 0 Then ErrorExistencia = True dr("EstatusExistencia") = "-1" dr("Cantidad") = Existencia 'If Existencia <= 0 Then TextoExistencia.AppendFormat("- #{0} {1}
", dr("No").ToString, dr("PS").ToString) 'Else 'Alert(String.Format("Solo hay en existencia: {0}", Existencia), TipoMensaje.MsgError) 'End If End If Next Else For Each gvr As GridViewRow In GvDatos.Rows CveSeccionAlmacen = If(gvr.DataKey("CveSeccionAlmacen") = "", -1, gvr.DataKey("CveSeccionAlmacen").ToEntero) Serie = If(gvr.DataKey("Serie") = "", "-1", gvr.DataKey("Serie")) Lote = If(gvr.DataKey("Lote") = "", "-1", gvr.DataKey("Lote")) FechaCaducidad = If(gvr.DataKey("FechaCaducidad") = "", MinFecha, gvr.DataKey("FechaCaducidad").ToDate) If ObjInventario.GetExistenciasProducto(gvr.DataKey("CvePS").ToString.ToEntero, gvr.DataKey("CveUM").ToString.ToEntero, UsuarioActual.CveEmpresa, DdlAlmacenOrigen.SelectedValue.ToEntero, FechaMovto:=TxtFecha.Text.ToDate.ToString("yyyy/MM/dd 23:59"), CveSeccionAlmacen:=CveSeccionAlmacen, Serie:=Serie, Lote:=Lote, Caducidad:=FechaCaducidad) Then 'si hay existencia en almacen costeado, lo tengo que sacar Existencia = ObjInventario.DtResultados.FiltroPrimeroValor("ExistenciaFinal", String.Format("CVeAlmacen = {0}", DdlAlmacenOrigen.SelectedValue)).ToDecimal End If 'Existencia = ObjInventario.GetExistenciasPS(gvr.DataKey("CvePS").ToString.ToEntero, gvr.DataKey("CveUM").ToString.ToEntero, UsuarioActual.CveEmpresa, DdlAlmacenOrigen.SelectedValue.ToEntero, FechaMovto:=TxtFecha.Text.ToDate.ToString("yyyy/MM/dd 23:59"), CveSeccionAlmacen:=CveSeccionAlmacen, Serie:=Serie, Lote:=Lote, FechaCaducidad:=FechaCaducidad, PendientePorSurtir:=1) Existencia -= gvr.FCTextBox("TxtCantidad2").Text.ToEntero If Existencia < 0 Then ErrorExistencia = True gvr.FCTextBox("TxtCantidad2").Text = (Existencia + gvr.FCTextBox("TxtCantidad2").Text.ToEntero).ToString TextoExistencia.AppendFormat("- #{0} {1}
", gvr.DataKey("No").ToString, gvr.DataKey("PS").ToString) End If Next End If If ErrorExistencia Then Alert(TextoExistencia.ToString, TipoMensaje.MsgError) RegistraScript("playsonidito(''142608__autistic-lucario__error.wav'')") ObjInventario.Dispose() Exit Sub End If Dim TotalCantidad As Decimal = DtMovimientos.SUMD("Cantidad") ''[IPP-1Noviembre2018] SE COMENTA PORQUE NO TIENE NI PIES NI CABEZA. LE FALTA DESARROLLO 'If (TipoAlmacenOrigen = 14 Or TipoAlmacenDestino = 14) And TipoAlmacenOrigen <> TipoAlmacenDestino Then ' ObjInventario.Dispose() ' 'es consumo interno ' ConsumoInterno(TipoAlmacenOrigen, TipoAlmacenDestino) 'End If 'Inicia la transacción Dim ObjConta As New ClsContabilidad(ObjInventario.IniciaTransacSQL()) Dim CveMovimientoSalida = 0 Dim CveMovimientoEntrada = 0 Dim IDPoliza As Integer = 0 Dim FolioSalida = 0 Dim CveMovimientoVirtualEntrada As Integer = 0 Dim CveMovimientoVirtualSalida As Integer = 0 Dim FolioVirtualEntrada As Integer = 0 Dim FolioVirtualSalida As Integer = 0 Dim FolioEntrada = 0 Dim AlmacenEntrada = -1 Dim Fecha As Date = TxtFecha.Text.ToDate Dim ErrorMovInv As Boolean = False Dim ErrorAC As Boolean = False Dim TextoError = "" Dim TipoMovimientoSalida As Integer = 26 'If(ChkTransitorio.Checked, 26, If(TipoAlmacenOrigen = 24, 26, 26)) 'AGREGAMOS LA SALIDA DEL ALMACEN ORIGEN CveMovimientoSalida = ObjInventario.AddMovimiento(DdlAlmacenOrigen.SelectedValue.ToEntero, TipoMovimientoSalida, 1, Fecha, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:=TxtObservaciones.Text.Trim, Recibio:=If(ChkTransitorio.Checked, TxtResponsable.Text.Trim, "-1"), CveAlmacenDestino:=DdlAlmacenDestino.SelectedValue.ToEntero, GastoIndirecto:=If(ChkTransitorio.Checked And TxtGastoIndirecto.Text.ToDouble > 0, TxtGastoIndirecto.Text, "-1").ToDouble, CveChofer:=If(ChkTransitorio.Checked, DdlChofer.SelectedValue.ToEntero, -1), Placa:="", FechaEntrega:=If(ChkTransitorio.Checked, TxtFechaEntrega.Text.Trim.ToDateTime.ToString("dd/MM/yyyy"), "-1"), EspecifUnidad:="", ResponsableCarga:="", ResponsableRecibio:="", Identificacion:="", Domicilio:="", Telefono:="", Ciudad:="", Licencia:="", Modulo:="TA/G2") FolioSalida = ObjInventario.Folio Folio = ObjInventario.Folio If CveMovimientoSalida <= 0 Then TextoError = "Ocurrió un error al generar el movimiento de salida" ErrorMovInv = True Else Dim Cont As Integer = 0 For Each Dr As DataRow In DtMovimientos.Rows If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalida, Dr("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, 0, CveAF:=Dr("CveAF").ToString.ToEntero, CveSeccionAlmacen:=Dr("CveSeccionAlmacen").ToString.ToEntero, Serie:=Dr("Serie").ToString, Lote:=Dr("Lote").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate, Observaciones:=Dr("Observaciones").ToString) Then ErrorMovInv = True TextoError = "Ocurrió un error al guardar los movimientos de salida" Exit For End If Cont += 1 Next End If 'VIRTUAL SALIDA If RealizarMovimientoVirtual AndAlso CveAlmacenVirtualSalida > 0 Then 'If TipoAlmacenOrigen = 27 Then ' CveAlmacenVirtual = GlobalDTAlmacen(UsuarioActual.CveEmpresa, 25).FiltroPrimeroValor("CveAlmacen", $"CveSubProyecto={CveSubProyectoOrigen}").ToEntero() 'Else ' CveAlmacenVirtual = GlobalDTAlmacen(UsuarioActual.CveEmpresa, 24).FiltroPrimeroValor("CveAlmacen", $"CveSubProyecto={CveSubProyectoOrigen}").ToEntero() 'End If Dim dtvirtual As DataTable = Nothing If ObjInventario.GetMovimientosDetalleVirtual(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then dtvirtual = ObjInventario.DtResultados If dtvirtual.Rows.Count > 0 Then CveMovimientoVirtualSalida = ObjInventario.AddMovimiento(CveAlmacenVirtualSalida, 37, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:=TxtObservaciones.Text.Trim, Modulo:="TA/V", CveMovimientoRelacionado:=CveMovimientoSalida, CveAlmacenDestino:=CveAlmacenVirtualEntrada) FolioVirtualSalida = ObjInventario.Folio For Each RowVirtual As DataRow In dtvirtual.Rows Dim CvePS = RowVirtual("CvePS").ToString().ToEntero() Dim CantidadUsado As Decimal = RowVirtual("Cantidad").ToString.ToDecimal Dim PU As Decimal = RowVirtual("Cargo").ToString().ToDecimal() Dim CveUM As Integer = RowVirtual("CveUM").ToString().ToEntero() If Not ObjInventario.AddMovimientoDetalle(CveMovimientoVirtualSalida, CantidadUsado, CveUM, CvePS, PU, -1, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then ErrorMovInv = True Exit For End If Next End If Else ErrorMovInv = True End If End If AlmacenEntrada = If(ChkTransitorio.Checked, DdlAlmacenTransitorio.SelectedValue.ToEntero, DdlAlmacenDestino.SelectedValue.ToEntero) Dim TipoMovimientoEntrada As Integer = 27 If Not ChkTransitorio.Checked Then TipoMovimientoEntrada = 27 Else TipoMovimientoEntrada = 9 CveMovimientoEntrada = ObjInventario.AddMovimiento(AlmacenEntrada, TipoMovimientoEntrada, 1, Fecha, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, -1, -1, Observaciones:=TxtObservaciones.Text.Trim, Recibio:=If(ChkTransitorio.Checked, TxtResponsable.Text.Trim, "-1"), CveAlmacenDestino:=If(ChkTransitorio.Checked, DdlAlmacenDestino.SelectedValue.ToEntero, -1), CveMovimientoRelacionado:=CveMovimientoSalida, Modulo:="TA/G3") FolioEntrada = ObjInventario.Folio If CveMovimientoEntrada <= 0 Then TextoError = "Ocurrió un error al generar el movimiento de entrada" ErrorMovInv = True Else If ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then Dim Cont As Integer = 0 For Each Dr As DataRow In ObjInventario.DtResultados.Rows Dim CostoEntrada As Decimal = If(TipoAlmacenDestino = 26, 0, Dr("PU").ToString.ToDecimal()) If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntrada, Dr("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, CostoEntrada, CveAF:=Dr("CveAF").ToString.ToEntero, CveSeccionAlmacen:=DdlSeccionAlmacenDestino.SelectedValue.ToEntero, Serie:=Dr("Serie").ToString, Lote:=Dr("Lote").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate, CveMovimientoDetalleEntrada:=Dr("CveMovimientoDetalle").ToString.ToEntero, Observaciones:=Dr("Observaciones").ToString) Then ErrorMovInv = True TextoError = "Ocurrió un error al guardar los movimientos de entrada" Exit For End If Cont += 1 Next End If End If 'AGREGAMOS LA ENTRADA If Not ChkTransitorio.Checked Then 'SI NO ES TRANSITORIO SE HACE LA RECEPCION DE INMEDIATO If Not ErrorMovInv Then 'VIRTUAL ENTRADA If RealizarMovimientoVirtual AndAlso CveAlmacenVirtualEntrada > 0 Then Dim dtvirtual As DataTable = Nothing If ObjInventario.GetMovimientosDetalleVirtual(CveMovimientoEntrada, UsuarioActual.CveEmpresa) Then dtvirtual = ObjInventario.DtResultados If dtvirtual.Rows.Count > 0 Then ''hay que verificar que se se tengan movimeintos por registrar CveMovimientoVirtualEntrada = ObjInventario.AddMovimiento(CveAlmacenVirtualEntrada, 36, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:=TxtObservaciones.Text.Trim, CveMovimientoRelacionado:=CveMovimientoEntrada, Modulo:="TA/S3") FolioVirtualEntrada = ObjInventario.Folio 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("Cargo").ToString().ToDecimal() Dim CveUM As Integer = RowVirtual("CveUM").ToString().ToEntero() If Not ObjInventario.AddMovimientoDetalle(CveMovimientoVirtualEntrada, CantidadUsado, CveUM, CvePS, PU, -1, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then ErrorMovInv = True Exit For End If Next End If Else ErrorMovInv = True End If End If Dim Concepto As String = TxtObservaciones.Text If Concepto = "" Then Concepto = "Traspaso" 'AGREGAMOS PREPOLIZAS TRASPASO DIRECTO: If Not ErrorMovInv Then Dim CvePrePoliza As Integer = ObjConta.AddPrePolizas("Inventario/TraspasoAlmacen", 53, 0, 0, 1, Fecha, Concepto, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) If ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then Dim resultado As DataTable = ObjInventario.DtResultados Dim importe As Decimal = resultado.SUMD("Total").RoundAD Dim Contabilizable As Boolean = False If TipoAlmacenOrigen = 26 AndAlso TipoAlmacenDestino <> 26 Then Contabilizable = True 'IdCtaContableOrigen = IdCtaContableDestino AndAlso If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, importe, TxtObservaciones.Text, 68, TxtObservaciones.Text, Fecha, IdCtaContableOrigen, -1, CveMovimientoAlmacen:=CveMovimientoSalida, Contabilizable:=Contabilizable, ImporteMX:=importe) Then ErrorMovInv = True End If 'si el tipo de almacen de entrada es Almacen sin costo, se registra al costo, la salida. If TipoAlmacenOrigen <> 26 AndAlso TipoAlmacenDestino = 26 Then Dim tCveClasificacion As Integer = DtMovimientos.MAX("CveClasificacion").ToEntero Dim dr As DataRow = GlobalDTClasificaciones(UsuarioActual.CveEmpresa, CveClasificacion:=tCveClasificacion).FiltroPrimero("") Dim IdCuentaCostos As Integer = -1 If dr IsNot Nothing Then IdCuentaCostos = dr("IdCuentaCostos").ToString.ToEntero End If If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, importe, TxtObservaciones.Text, 69, TxtObservaciones.Text, Fecha, IdCuentaCostos, -1, CveClasificacion:=tCveClasificacion, CveSubProyecto:=CveSubProyectoOrigen, CveMovimientoAlmacen:=CveMovimientoSalida, Contabilizable:=Contabilizable, ImporteMX:=importe) Then ErrorMovInv = True End If Contabilizable = False importe = 0 End If If Not ErrorMovInv AndAlso Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, importe, TxtObservaciones.Text, 68, TxtObservaciones.Text, Fecha, IdCtaContableDestino, -1, CveMovimientoAlmacen:=CveMovimientoEntrada, Contabilizable:=Contabilizable, ImporteMX:=importe) Then ErrorMovInv = True End If End If End If End If Else If Not ErrorMovInv Then Dim Concepto As String = TxtObservaciones.Text If Concepto = "" Then Concepto = "Traspaso" Dim CvePrePoliza As Integer = ObjConta.AddPrePolizas("Inventario/TraspasoAlmacen2", 53, 0, 0, 1, Fecha, Concepto, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) If ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then Dim resultado As DataTable = ObjInventario.DtResultados Dim importe As Decimal = resultado.SUMD("Total").RoundAD Dim IdCtaContable As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", String.Format("CveAlmacen = {0}", DdlAlmacenTransitorio.SelectedValue.ToEntero)).ToEntero If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, importe, TxtObservaciones.Text, 68, TxtObservaciones.Text, Fecha, IdCtaContable, -1, CveMovimientoAlmacen:=CveMovimientoSalida, ImporteMX:=importe, Contabilizable:=False) Then ErrorMovInv = True End If If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, importe, TxtObservaciones.Text, 68, TxtObservaciones.Text, Fecha, IdCtaContable, -1, CveMovimientoAlmacen:=CveMovimientoEntrada, ImporteMX:=importe, Contabilizable:=False) Then ErrorMovInv = True End If End If End If End If ''[IPP-1Noviembre2018] SE COMENTA PORQUE NO TIENE NI PIES NI CABEZA. LE FALTA DESARROLLO ''CONSUMO INTERNO 'If Not ErrorMovInv Then ' If (TipoAlmacenOrigen = 14 Or TipoAlmacenDestino = 14) And TipoAlmacenOrigen <> TipoAlmacenDestino Then ' ConsumoInterno(TipoAlmacenOrigen, TipoAlmacenDestino) ' End If 'End If Dim SerieInsertadaTimbre As String = "" Dim FolioInsertadoTimbre As Integer = -1 Dim CveTimbre As Integer = -1 If Not ErrorMovInv Then If ChkEmitirTimbrado.Checked Then Dim ObjGral As New ClsGenerales(ObjInventario.IniciaTransacSQL) Dim CveSubProyectoTimbre As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltraParametros($"CveAlmacen = {DdlAlmacenOrigen.SelectedValue}").Rows(0)("CveSubProyecto").ToString.ToEntero Dim Fechallegada As DateTime = (TxtFechaLlegada.Text & " 23:59:59").ToDateTime Dim CveEntregaAlmacen As Integer = ObjGral.AddInvEntregaAlmacenRuta(CveSubProyectoTimbre, -1, -1, CveMovimientoSalida, DdlChofer.SelectedValue.ToEntero, DdlUnidadCamion.SelectedValue.ToEntero, TxtFechaEntrega.Text.ToDate, TxtFechaLlegada.Text.ToDate, "T", "", "", MinFecha, 1, 1, TxtDistancia.Text.ToEntero, ConfigCartaPorte:=DdlConfigAuto.SelectedValue, CveCamionRemolque1:=DdlRemolque1.SelectedValue.ToEntero, CveCamionRemolque2:=DdlRemolque2.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 ErrorMovInv Then DtTraslado = DtMovimientos.Copy ObjInventario.Commit() MensajeAlert = New StringBuilder MensajeAlert.Append("Se realizó con éxito el traspaso.") MensajeAlert.AppendFormat("
Folio de Salida: {0}", FolioSalida, CveMovimientoSalida) MensajeAlert.AppendFormat("
Imprimir Reporte", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoSalida))) If CveMovimientoVirtualSalida > 0 Then MensajeAlert.AppendFormat("
Folio Virtual: {2} 
Imprimir Salida Virtual", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoVirtualSalida)), CveMovimientoVirtualSalida, FolioVirtualSalida) If Not ChkTransitorio.Checked Then MensajeAlert.AppendFormat("

Folio de Entrada: {0}", FolioEntrada, CveMovimientoEntrada) MensajeAlert.AppendFormat("
Imprimir Reporte", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoEntrada))) If CveMovimientoVirtualEntrada > 0 Then MensajeAlert.AppendFormat("
Folio Virtual: {2} 
Imprimir Entrada Virtual", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoVirtualEntrada)), CveMovimientoVirtualEntrada, FolioVirtualEntrada) End If If ChkEmitirTimbrado.Checked Then CveMovimientoTimbrado = CveMovimientoSalida EmitirTimbrado(CveTimbre, CveMovimientoTimbrado) End If Alert(MensajeAlert.ToString, TipoMensaje.MsgInformacion, "") If ChkTransitorio.Checked AndAlso UsuarioActual.CveEmpresa.Contiene(72, 80) Then RegistraScript(String.Format("AbrirVentana('/General/PopUpPaqueteriasGuias.aspx?CveMovimiento={0}',800,620);", CveMovimientoSalida)) End If If UsuarioActual.CveEmpresa.Contiene(72, 80) Then Dim Correo As String = "jorgegonzalez@compuproveedores.com" If GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveTipoAlmacen", $"CveAlmacen = {DdlAlmacenDestino.SelectedValue.ToEntero}").ToEntero = 16 Then MandaCorreo(CveMovimientoSalida, Correo) End If End If LimpiaMovimiento() Else ObjInventario.RollBack() Alert(TextoError, TipoMensaje.MsgError) RegistraScript("playsonidito(''142608__autistic-lucario__error.wav'')") End If ' If ObjContaAC IsNot Nothing Then ObjContaAC.Dispose() 'SI OCURRIO UN ERROR EN LA EXISTENCIA RECARGAMOS EL GRID PARA COLOREAR LOS DETALLES CON ERROR If ErrorExistencia Then CargaGvDatos() End If ObjConta.Dispose() ObjInventario.Dispose() End Sub Function ConsumoInterno(TipoAlmacenOrigen As Integer, TipoAlmacenDestino As Integer) As Boolean Dim Retorno As Boolean = False Dim ErrorMovInv As Boolean = False Dim TextoError As String = "" Dim Fecha As Date = TxtFecha.Text.ToDate Dim ObjInventario As New ClsInventarios Dim ObjConta As New ClsContabilidad(ObjInventario.IniciaTransacSQL()) Dim CveMovimiento As Integer = 0 Dim TipoMovto = If(TipoAlmacenOrigen = 14, -1, 1) Dim CveConceptoInventario As Integer = 8 Dim CveAlmacenCI = If(TipoAlmacenOrigen = 14, DdlAlmacenOrigen.SelectedValue.ToEntero, DdlAlmacenDestino.SelectedValue.ToEntero) Dim DtCostos As DataTable = Nothing Dim ValorInventario As Decimal = 0 'AGREGAMOS LA SALIDA DEL ALMACEN ORIGEN CveMovimiento = ObjInventario.AddMovimiento(DdlAlmacenOrigen.SelectedValue.ToEntero, CveConceptoInventario, 1, Fecha, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:=TxtObservaciones.Text.Trim, Recibio:=If(ChkTransitorio.Checked, TxtResponsable.Text.Trim, ""), GastoIndirecto:=If(ChkTransitorio.Checked And TxtGastoIndirecto.Text.ToDouble > 0, TxtGastoIndirecto.Text, "-1").ToDouble, Modulo:="TA/G4") Dim FolioMov As Integer = ObjInventario.Folio If CveMovimiento <= 0 Then TextoError = "No se pudo generar el movimiento de salida correctamente" ErrorMovInv = True Else For Each Dr As DataRow In DtMovimientos.Rows If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, Dr("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, 0, Dr("CveAF").ToString.ToEntero, -1, Dr("Serie").ToString, Lote:=Dr("Lote").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate) Then ErrorMovInv = True TextoError = "Ocurrió un error al guardar los movimientos de salida" Exit For End If Next End If If ObjInventario.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) Then DtCostos = ObjInventario.DtResultados Dim tmpCostos As DataTable = DtCostos.FiltraParametros("", "", {"CveClasificacion"}) Dim IdCtaContable As Integer = 0 Dim CveCuenta As Integer = 0 If tmpCostos.Rows.Count > 0 Then Dim Concepto As String = $"Consumo Interno: {ObjInventario.Folio} - {TxtObservaciones.Text}" Dim CvePrePoliza = ObjConta.AddPrePolizas("Inv/ConsumoInterno", 53, DtCostos.SUM("Total") * TipoMovto, DtCostos.SUM("Total") * TipoMovto, 1, TxtFecha.Text.ToDate, $"Consumo Interno: {TxtObservaciones.Text}", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) For Each RowInv As DataRow In tmpCostos.Rows ValorInventario = DtCostos.SUM("Total", $"CveClasificacion = {RowInv("CveClasificacion")}").ToString.ToDecimal IdCtaContable = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCuentaGasto", $"CveClasificacion = {RowInv("CveClasificacion")}").ToEntero CveCuenta = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCuentaGastoSIG", $"CveClasificacion = {RowInv("CveClasificacion")}").ToEntero If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, ValorInventario * TipoMovto, Concepto, 181, Concepto, TxtFecha.Text.ToDate, IdCtaContable, -1, CveClasificacion:=RowInv("CveClasificacion").ToString.ToEntero, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=ValorInventario * TipoMovto, CveCuenta:=CveCuenta) Then ErrorMovInv = True Exit For End If Next IdCtaContable = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", $"CveAlmacen={CveAlmacenCI}").ToEntero If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, DtCostos.SUM("Total").ToDecimal * TipoMovto, Concepto, 68, Concepto, TxtFecha.Text.ToDate, IdCtaContable, -1, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=DtCostos.SUM("Total").ToDecimal * TipoMovto) Then ErrorMovInv = True End If End If End If If Not ErrorMovInv Then ObjInventario.Commit() Dim Mensaje As StringBuilder = New StringBuilder Mensaje.Append("Se realizó el consumo interno.") Mensaje.AppendFormat("
Folio: {0}", FolioMov, CveMovimiento) Alert(Mensaje.ToString, TipoMensaje.MsgInformacion) Mensaje.Clear() LimpiaMovimiento() Else ObjInventario.RollBack() Alert(TextoError, TipoMensaje.MsgError) RegistraScript("playsonidito(''142608__autistic-lucario__error.wav'')") End If Return Retorno End Function #End Region #Region " NUEVO - LIMPIA " Protected Sub BtnNuevo_Click(sender As Object, e As EventArgs) LimpiaMovimiento() End Sub Private Sub LimpiaMovimiento() CargaAlmacenOrigen() TxtResponsable.Text = "" TxtFecha.Text = Now.ToShortDateString TxtObservaciones.Text = "" txtCantidad.Text = "" SiguienteFolio(If(ChkTransitorio.Checked, 9, 8)) ChkTransitorio.Checked = False ChkTransitorio.Enabled = True TxtGastoIndirecto.Text = "" DivMov.Visible = False CargadoDeMov = False UPDatosAlmacen.Update() UpMov.Update() DtMovimientos.Rows.Clear() ActualizaBitacora() CargaGvDatos() End Sub #End Region #Region "DDL CLASIFICACION" '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 ' DdlProducto2.DataSource = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CveClasificacion:=DdlClasificacion.SelectedValue.ToEntero).FiltraParametros("", "PSCodigo") ' DdlProducto2.DataBind() ' DdlProducto2.ddl.Items.Insert(0, New ListItem(" ", "-1")) ' Else ' DdlProducto2.ddlWS.Attributes.Add("data-cveclasificacion", DdlClasificacion.SelectedValue) ' DdlProducto2.SelectedText = "" ' DdlProducto2.SelectedValue = "-1" ' 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 TxtnLote.Visible = False TxtnFechaCaducidad.Visible = False If DdlProducto2.SelectedValue.ToEntero > 0 Then Dim drP As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=DdlProducto2.SelectedValue.ToEntero).FiltroPrimero("", "PS") If drP IsNot Nothing Then ThSeccionAlmacen.Visible = CBool(drP("AplicaSeccion")) TdSeccionAlmacen.Visible = CBool(drP("AplicaSeccion")) DdlSeccionAlmacen.Visible = CBool(drP("AplicaSeccion")) 'GvDatos.Columns(5).Visible = CBool(drP("AplicaSeccion")) Dim AplicaSerie As Boolean = CBool(drP("AplicaSerie")) ''codigo temporal 'If UsuarioActual.CveEmpresa = 140 Then ' Dim CveSubProyecto As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveSubProyecto", $"CveAlmacen = {DdlAlmacenOrigen.SelectedValue}").ToEntero ' If Not CveSubProyecto.Contiene(11793, 11993, 11794, 11795, 12010, 12011) Then ' AplicaSerie = False ' End If 'End If ThSerie.Visible = AplicaSerie TdSerie.Visible = AplicaSerie TxtnSerie.Visible = AplicaSerie 'GvDatos.Columns(6).Visible = CBool(drP("AplicaSerie")) TxtnLote.Visible = CBool(drP("AplicaLote")) ThLote.Visible = CBool(drP("AplicaLote")) TdLote.Visible = CBool(drP("AplicaLote")) 'GvDatos.Columns(7).Visible = CBool(drP("AplicaLote")) TxtnFechaCaducidad.Visible = CBool(drP("AplicaCaducidad")) ThFechaCaducidad.Visible = CBool(drP("AplicaCaducidad")) If Not String.IsNullOrWhiteSpace(UsuarioActual.Empresa.Funcionalidad(147)) Then ThFechaCaducidad.InnerText = UsuarioActual.Empresa.Funcionalidad(147) 'ThFechaCaducidad.InnerText = If(UsuarioActual.Empresa.Funcionalidad(147) = "Fecha Elaboración", "Fecha Elaboración", "Fecha Caducidad") TdFechaCaducidad.Visible = CBool(drP("AplicaCaducidad")) 'GvDatos.Columns(8).Visible = CBool(drP("AplicaCaducidad")) End If End If DdlUnidad.Items.Clear() DdlUnidad.DataSource = GlobalDTProductosServiciosEquivalencias(DdlProducto2.SelectedValue.ToEntero, -1, UsuarioActual.CveEmpresa) DdlUnidad.DataBind() UpDatos.Update() End Sub Private Function isWhitFamily() As Boolean Return (UsuarioActual.CveEmpresa = 66) End Function Protected Sub DdlClasificacion_GV(sender As Object, e As System.EventArgs) Dim pDdlClasificacion As DropDownList = CType(sender, DropDownList) Dim pDdlProducto As DropDownList = CType(pDdlClasificacion.NamingContainer.FindControl("DdlProducto"), DropDownList) If pDdlClasificacion.SelectedValue = "-1" Then pDdlProducto.DataSource = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa) pDdlProducto.DataBind() Else pDdlProducto.DataSource = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CveClasificacion:=pDdlClasificacion.SelectedValue.ToEntero) pDdlProducto.DataBind() End If 'If pDdlClasificacion.SelectedValue = "-1" Then ' pDdlProducto.DataSource = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa) 'Else ' pDdlProducto.DataSource = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CveClasificacion:=DdlClasificacion.SelectedValue.ToEntero) 'End If pDdlProducto.DataBind() pDdlProducto.Items.Insert(0, New ListItem("----", "-1")) End Sub #End Region #Region "GV DATOS" Private Sub CargaGvDatos() EscondeColumnasGVM(DtMovimientos) GvDatos.DataSource = DtMovimientos GvDatos.DataBind() UpDatos.Update() End Sub Private Sub EscondeColumnasGVM(DtTemp As DataTable) GvDatos.Columns(5).Visible = DtTemp.MAX("Serie").ToString <> "" TdSerie.Visible = GvDatos.Columns(5).Visible : ThSerie.Visible = GvDatos.Columns(5).Visible GvDatos.Columns(6).Visible = DtTemp.MAX("Lote").ToString <> "" TdLote.Visible = GvDatos.Columns(6).Visible : ThLote.Visible = GvDatos.Columns(6).Visible GvDatos.Columns(7).HeaderText = If(UsuarioActual.Empresa.Funcionalidad(147) = "Fecha Elaboración", "Fecha Elaboración", "Fecha Caducidad") GvDatos.Columns(7).Visible = DtTemp.MAX("FechaCaducidad").ToString.ToDate > MinFecha TdFechaCaducidad.Visible = GvDatos.Columns(7).Visible : ThFechaCaducidad.Visible = GvDatos.Columns(7).Visible GvDatos.Columns(8).Visible = DtTemp.MAX("CveSeccionAlmacen").ToString.ToEntero > 0 ''TxtnSerie.Visible = False ''ThSerie.Visible = False ''TdSerie.Visible = False 'GvDatos.Columns(5).Visible = False 'TxtnLote.Visible = False 'ThLote.Visible = False 'TdLote.Visible = False 'GvDatos.Columns(6).Visible = False 'TxtnFechaCaducidad.Visible = False 'ThFechaCaducidad.Visible = False 'TdFechaCaducidad.Visible = False 'GvDatos.Columns(7).Visible = False 'If DtTemp.MAX("Serie").ToString <> "" Then ' TxtnSerie.Visible = True ' ThSerie.Visible = True ' TdSerie.Visible = True ' GvDatos.Columns(5).Visible = True 'End If 'If DtTemp.MAX("Lote").ToString <> "" Then ' TxtnLote.Visible = True ' ThLote.Visible = True ' TdLote.Visible = True ' GvDatos.Columns(6).Visible = True 'End If 'If DtTemp.MAX("FechaCaducidad").ToString.ToDate > MinFecha Then ' TxtnFechaCaducidad.Visible = True ' ThFechaCaducidad.Visible = True ' TdFechaCaducidad.Visible = True ' GvDatos.Columns(7).Visible = True 'End If End Sub Protected Sub GvDatos_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvDatos.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then If e.Row.DBCampo("EstatusExistencia").ToEntero < 0 Then e.Row.Cells(0).BackColor = Drawing.Color.Red End If If CargadoDeMov Then e.Row.FCLiteral("ltlCantidad").Visible = False e.Row.FCTextBox("TxtCantidad2").Visible = True e.Row.FCTextBox("TxtCantidad2").Attributes.Add("onblur", String.Format("ValidaCantidad(this,{0})", e.Row.DBCampo("Cantidad"))) End If 'If If(e.Row.DBCampo("Serie").ToString = "", "-1", e.Row.DBCampo("Serie").ToString) <> "-1" Then ' TxtnSerie.Visible = True ' ThSerie.Visible = True ' TdSerie.Visible = True ' GvDatos.Columns(4).Visible = True ' e.Row.Cells(4).Text = e.Row.DBCampo("Serie").ToString 'Else ' e.Row.Cells(4).Text = "" 'End If 'If If(e.Row.DBCampo("Lote").ToString = "", "-1", e.Row.DBCampo("Lote").ToString) <> "-1" Then ' TxtnLote.Visible = True ' ThLote.Visible = True ' TdLote.Visible = True ' GvDatos.Columns(5).Visible = True ' e.Row.Cells(5).Text = e.Row.DBCampo("Lote").ToString ' TxtnBatch.Visible = True ' ThBatch.Visible = True ' TdBatch.Visible = True ' GvDatos.Columns(6).Visible = True 'Else ' e.Row.Cells(5).Text = "" ' e.Row.Cells(6).Text = "" 'End If 'If e.Row.RowState = DataControlRowState.Edit Then ' e.Row.FCDropDownList("DdlUnidad").DataSource = GlobalDTUnidadesMedida(UsuarioActual.CveEmpresa) ' e.Row.FCDropDownList("DdlUnidad").DataBind() ' e.Row.FCDropDownList("DdlUnidad").SelectedValue = e.Row.DBCampo("CveUM") ' e.Row.FCDropDownList("DdlClasificacion").DataSource = GlobalDTClasificaciones(UsuarioActual.CveEmpresa) ' e.Row.FCDropDownList("DdlClasificacion").DataBind() ' e.Row.FCDropDownList("DdlClasificacion").SelectedValue = e.Row.DBCampo("CveClasificacion") ' e.Row.FCDropDownList("DdlProducto").DataSource = GlobalDTProductosServicios(UsuarioActual.CveEmpresa) ' e.Row.FCDropDownList("DdlProducto").DataBind() ' e.Row.FCDropDownList("DdlProducto").SelectedValue = e.Row.DBCampo("CvePS") 'End If End If End Sub Protected Sub GvPS_RowDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GvDatos.RowDeleting Dim DbRow As DataRow = Nothing DbRow = DtMovimientos.Rows(e.RowIndex) DtMovimientos.Rows.Remove(DbRow) ActualizaBitacora() CargaGvDatos() End Sub 'Protected Sub GvM_RowEditing(sender As Object, e As GridViewEditEventArgs) Handles GvDatos.RowEditing ' GvDatos.EditIndex = e.NewEditIndex ' CargaGvDatos() 'End Sub 'Protected Sub GvM_RowUpdating(sender As Object, e As GridViewUpdateEventArgs) Handles GvDatos.RowUpdating ' Dim dr = GvDatos.Rows(e.RowIndex) ' Dim Cantidad = dr.FCTextBox("TxtCantidad").Text.ToDouble ' Dim CveUM = dr.FCDropDownList("DdlUnidad").SelectedValue.ToEntero ' Dim CveClasificacion = dr.FCDropDownList("DdlClasificacion").SelectedValue.ToEntero ' Dim CvePS = dr.FCDropDownList("DdlProducto").SelectedValue.ToEntero ' Dim No = dr.DataKey("No").ToEntero ' Dim Serie As String = dr.FCTextBox("TxtSerie").Text ' 'VALIDA EXISTENCIA ' Dim Valido = True ' Dim Inv As New ClsInventarios ' Dim Existencia As Double = Inv.GetExistenciasPS(CvePS, CveUM, UsuarioActual.CveEmpresa, DdlAlmacenOrigen.SelectedValue.ToEntero, -1, TxtFecha.Text.ToDate.ToString("yyyy/MM/dd 23:59"), If(Serie = "", "-1", Serie)) ' Inv.Dispose() ' If Existencia - txtCantidad.Text.ToDouble < 0 Then ' If Existencia <= 0 Then ' Alert("No hay existencia del producto", TipoMensaje.MsgError) ' Else ' Alert(String.Format("Solo hay en existencia: {0}", Existencia), TipoMensaje.MsgError) ' End If ' Valido = False ' End If ' If Valido Then ' Dim Drs As DataRow() = DtMovimientos.Select(String.Format("No = {0}", No)) ' If Drs.Count = 1 Then ' Drs(0)("Cantidad") = Cantidad ' Drs(0)("CveUM") = CveUM ' Drs(0)("CveClasificacion") = CveClasificacion ' Drs(0)("CvePS") = CvePS ' Drs(0)("EstatusExistencia") = "1" ' End If ' DtMovimientos.AcceptChanges() ' GvDatos.EditIndex = -1 ' End If ' CargaGvDatos() 'End Sub 'Protected Sub GvM_RowCancelingEdit(sender As Object, e As GridViewCancelEditEventArgs) Handles GvDatos.RowCancelingEdit ' GvDatos.EditIndex = -1 ' CargaGvDatos() 'End Sub Protected Sub ChkSugiereFechaCaducidad_CheckedChanged(sender As Object, e As EventArgs) TxtnFechaCaducidad.Visible = Not ChkSugiereFechaCaducidad.Checked TxtnLote.Visible = Not ChkSugiereFechaCaducidad.Checked End Sub #End Region #Region " TRANSITORIO - RECEPCION " Protected Sub ChkTransitorio_CheckedChanged(sender As Object, e As EventArgs) Dim TipoAlmacenOrigen = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveTipoAlmacen", $"CveAlmacen = {DdlAlmacenOrigen.SelectedValue.ToEntero}").ToEntero Dim TipoAlmacenDestino = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveTipoAlmacen", $"CveAlmacen = {DdlAlmacenDestino.SelectedValue.ToEntero}").ToEntero If TipoAlmacenOrigen = 14 Or TipoAlmacenDestino = 14 Then ChkTransitorio.Checked = False Alert("Un traspaso de consumo interno no puede ser transitorio.", TipoMensaje.MsgAdvertencia) Exit Sub End If If ChkTransitorio.Checked Then 'DdlResponsable.SelectedValue = "-1" TxtResponsable.Text = "" TxtGastoIndirecto.Text = "" DivEmitirTransitorio.Visible = True RegistraScript(" $('#DivGastoIndirecto').show(100);") DivResponsable.Visible = True DivTransitorio2.Visible = True If UsuarioActual.CveEmpresa.Contiene(119, 140) Then ChkEmitirTimbrado.Checked = True End If Else RegistraScript(" $('#DivGastoIndirecto').hide(500);") DivResponsable.Visible = False DivTransitorio2.Visible = True DivEmitirTransitorio.Visible = False ChkEmitirTimbrado.Checked = False End If UpEmitirTransitorio.Update() CargaAlmacenDestino() SiguienteFolio(If(ChkTransitorio.Checked, 9, 8)) End Sub Protected Sub BtnCargaTransitorios_Click(sender As Object, e As EventArgs) CargaRecepcion() End Sub Private Sub CargaRecepcion() Dim Dtt As DataTable = Nothing FolioBusqueda = If(TxtFolioRecepcion.Text = "", -1, TxtFolioRecepcion.Text.ToEntero) Dim ObjInventarios As New ClsInventarios If ObjInventarios.GetMovimientosTransitorios(DdlAlmacenRecepcion.SelectedValue.ToEntero, -1, DdlAlmacenTransitorioRecepcion.SelectedValue.ToEntero, -1, FolioBusqueda, UsuarioActual.CveEmpresa, UsuarioActual.CveUsuario) Then Dtt = ObjInventarios.DtResultados.FiltraParametros(String.Format("CveTipoAlmacenDestino <> 4")) Else Alert("Ocurrió un error al consultar los movimientos transitorios. Por favor vuelva a intentar.", TipoMensaje.MsgAdvertencia) Dtt = Nothing End If ObjInventarios.Dispose() If Dtt IsNot Nothing Then If TxtFolioRecepcion.Text.Trim <> "" Then CveMovimientoSalida = Dtt.FiltroPrimeroValor("CveMovimiento", "").ToEntero CveAlmacenTransitorio = Dtt.FiltroPrimeroValor("CveAlmacenTransitorio", "").ToEntero Else CveAlmacenTransitorio = DdlAlmacenTransitorioRecepcion.SelectedValue.ToEntero End If CveAlmacenDestino = DdlAlmacenRecepcion.SelectedValue.ToEntero 'CveUsuarioResponsable = DdlResponsableRecepcion.SelectedValue.ToEntero GvDatosRecepcion.DataSource = Dtt GvDatosRecepcion.DataBind() 'GvDatosRecepcion.Columns(6).Visible = Dtt.MAX("Serie") <> "" GvDatosRecepcion.Columns(6).Visible = Dtt.MAX("AplicaSerie") = "True" GvDatosRecepcion.Columns(7).Visible = Dtt.MAX("AplicaLote").ToEntero > 0 'Dtt.MAX("Lote") <> "" GvDatosRecepcion.Columns(8).Visible = Dtt.MAX("AplicaCaducidad").ToEntero > 0 'Dtt.MAX("FechaCaducidad").ToDate > MinFecha GvDatosRecepcion.Columns(9).Visible = Dtt.MAX("CveSeccionAlmacen").ToEntero > 0 'Dt.Dispose() End If If TxtFolioRecepcion.Text = "" Then BtnRecibir.Visible = False BtnCancelarTraspaso.Visible = False Else BtnRecibir.Visible = True If UsuarioActual.TienePermisoProceso(290) Then BtnCancelarTraspaso.Visible = True End If End If If UsuarioActual.Empresa.Funcionalidad(132) = "1" Then DivCodigoSeriePSRecepcion.Visible = True Else DivCodigoSeriePSRecepcion.Visible = False End If UpDatosRecepcion.Update() UPDivCodigoSeriePSRecepcion.Update() End Sub Protected Sub GvDatosRecepcion_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvDatosRecepcion.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then e.Row.FCTextBox("TxtCantidad").Visible = True If TxtFolioRecepcion.Text = "" Then e.Row.FCCheckBox("Chk").Visible = False e.Row.FCTextBox("TxtCantidad").Enabled = False End If 'Cuando es titulo If e.Row.DBCampo("PS").ToString.Trim = "" Then e.Row.CssClass = "Totales" e.Row.FCCheckBox("Chk").Visible = False e.Row.FCTextBox("TxtCantidad").Visible = False e.Row.FCTextBox("TxtSerie").Visible = False e.Row.Cells(2).Text = String.Format("Folio: {0} ", e.Row.DBCampo("FolioSalida"), e.Row.DBCampo("CveMovimientoSalida")) e.Row.Cells(3).Text = String.Format("{0}", e.Row.DBCampo("FechaMovto").ToString.ToDate.ToShortDateString) e.Row.Cells(5).Text = String.Format("Almacen Origen: {0}     Almacen Destino: {1}       Responsable: {2}", e.Row.DBCampo("Almacen"), e.Row.DBCampo("AlmacenDestino"), e.Row.DBCampo("Recibio")) Else e.Row.FCTextBox("TxtCantidad").Attributes.Add("onkeyup", String.Format("ValidaCantidad(this,{0});", e.Row.DBCampo("Cantidad"))) If CBool(e.Row.DBCampo("AplicaSeccion")) AndAlso DdlAlmacenRecepcion.SelectedValue.ToEntero > 0 Then CargaSeccionesAlmacen(e.Row.FCDropDownList("DdlSeccionAlmacen"), DdlAlmacenRecepcion.SelectedValue.ToEntero, e.Row.DBCampo("CvePS").ToEntero, UsuarioActual.CveEmpresa) 'Dim dtt As DataTable = GlobalDTInvPSSeccionesAlmacen(UsuarioActual.CveEmpresa, DdlAlmacenRecepcion.SelectedValue.ToEntero, e.Row.DBCampo("CvePS").ToEntero) 'e.Row.FCDropDownList("DdlSeccionAlmacen").DataSource = dtt 'e.Row.FCDropDownList("DdlSeccionAlmacen").DataBind() 'If dtt.Rows.Count > 1 Then ' e.Row.FCDropDownList("DdlSeccionAlmacen").Items.Insert(0, New ListItem("Seleccione", "-1")) 'End If 'dtt.Dispose() End If If e.Row.DBCampo("AplicaLote").ToString.Trim = "1" Then e.Row.FCTextBox("TxtLote").Visible = True End If If e.Row.DBCampo("AplicaCaducidad").ToString.Trim = "1" Then e.Row.FCTextBox("TxtCaducidad").Visible = True End If End If 'FUNCIONALIDAD PISTOLA DE CODIGOS If UsuarioActual.Empresa.Funcionalidad(132) = "1" And e.Row.DBCampo("CodigoBarras").Trim <> "" Then e.Row.FCTextBox("TxtCantidad").Enabled = False End If End If End Sub Protected Sub BtnCancelarTraspaso_Click(sender As Object, e As EventArgs) If Not GvDatosRecepcion.Rows.Count > 0 Then Alert("No hay movimientos para el traspaso", TipoMensaje.MsgAdvertencia) Exit Sub End If Dim CveMovimientoEntrada As Integer = 0 Dim tFolio As Integer = 0 Dim ErrorMovInv As Boolean = False Dim TextoError As String = "" Dim Fecha As Date = TxtFechaRecepcion.Text.ToDate Dim CveMovimientoVirtualEntrada As Integer = 0 Dim CveMovimientoSalidaTransitorio As Integer = 0 Dim FolioVirtualEntrada As Integer = 0 Dim ObjInventario As New ClsInventarios Dim ObjConta As New ClsContabilidad(ObjInventario.IniciaTransacSQL()) ObjInventario.IniciaTransacSQL() Try CveMovimientoEntrada = ObjInventario.AddMovimiento(GvDatosRecepcion.Rows(0).DataKey("CveAlmacenSalida").ToEntero, 27, 1, Fecha, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:=TxtObservacionesRecepcion.Text.Trim, Recibio:=TxtRecibio.Text, CveAlmacenDestino:=GvDatosRecepcion.Rows(0).DataKey("CveAlmacenSalida").ToEntero, CveMovimientoRelacionado:=CveMovimientoSalida, Modulo:="TA/C") If CveMovimientoEntrada <= 0 Then TextoError = "No se pudo generar el movimiento" ErrorMovInv = True End If 'AGREGAMOS LA SALIDA CveMovimientoSalidaTransitorio = ObjInventario.AddMovimiento(CveAlmacenTransitorio, 8, 1, Fecha, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:=TxtObservacionesRecepcion.Text.Trim, CveAlmacenDestino:=GvDatosRecepcion.Rows(0).DataKey("CveAlmacenSalida").ToEntero, CveMovimientoRelacionado:=CveMovimientoEntrada, Modulo:="TA/G12") Dim CvePrePoliza As Integer = -1 Dim Concepto As String = TxtObservacionesRecepcion.Text If Concepto = "" Then Concepto = "Cancelación Traspaso" If Not ErrorMovInv Then tFolio = ObjInventario.Folio CvePrePoliza = ObjConta.AddPrePolizas("Inventario/TraspasoAlmacen", 53, 0, 0, 1, Fecha, Concepto, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) If CvePrePoliza <= 0 Then TextoError = "No se pudo generar la Poliza para la cancelación" ErrorMovInv = True End If End If If CveMovimientoEntrada <= 0 And Not ErrorMovInv Then TextoError = "No se pudo generar el movimiento de entrada correctamente" ErrorMovInv = True Else Dim CveMovimientoDetalleSalida As Integer = 0 Dim importe As Double = 0 For Each GvRow As GridViewRow In GvDatosRecepcion.Rows If GvRow.RowType = DataControlRowType.DataRow Then Dim CvePS As Integer = GvRow.DataKey("CvePS").ToEntero 'DEBE CONSIDERAR SOLO LAS FILAS QUE TENGA PRODUCTOS, NO EL TOTALIZADOR If CvePS > 0 Then CveMovimientoDetalleSalida = GvRow.DataKey("CveMovimientoDetalle").ToString.ToEntero Dim Cantidad As Decimal = GvRow.DataKey("Cantidad").ToString.ToDecimal Dim PrecioUnitario As Decimal = GvRow.DataKey("PU").ToString.ToDecimal If CveMovimientoDetalleSalida <= 0 Then ErrorMovInv = True TextoError = "Ocurrió un error al guardar los movimientos de salida" Exit For End If If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntrada, Cantidad, GvRow.DataKey("CveUM").ToEntero, CvePS, PrecioUnitario, -1, -1, Serie:=GvRow.DataKey("Serie").ToString, Lote:=GvRow.DataKey("Lote"), FechaCaducidad:=GvRow.DataKey("FechaCaducidad").ToDate, CveMovimientoDetalleEntrada:=CveMovimientoDetalleSalida) Then ErrorMovInv = True TextoError = "Ocurrió un error al guardar los movimientos de entrada" Exit For End If 'MOV, Alm, Transito If GvRow.DataKey("CveMovimientoDetalleTransitorio").ToString.ToEntero > 0 Then If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalidaTransitorio, Cantidad, GvRow.DataKey("CveUM").ToString.ToEntero, CvePS, PrecioUnitario, CveSeccionAlmacen:=-3, Serie:=GvRow.DataKey("Serie").ToString, Lote:=GvRow.DataKey("Lote").ToString, FechaCaducidad:=GvRow.DataKey("FechaCaducidad").ToDate, CveMovimientoDetalleEntrada:=GvRow.DataKey("CveMovimientoDetalleTransitorio").ToString.ToEntero) Then ErrorMovInv = True TextoError = "Ocurrió un error al guardar los movimientos de salida" Exit For End If Else CveMovimientoSalidaTransitorio = 0 End If importe += Cantidad * PrecioUnitario End If End If Next 'VIRTUAL ENTRADA If UsuarioActual.Empresa.Funcionalidad(573) = "1" Then Dim CveAlmacenVirtual As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=GvDatosRecepcion.Rows(0).DataKey("CveAlmacenSalida").ToEntero).FiltroPrimeroValor("CveAlmacenVirtual", "").ToEntero() 'SI EL ALMACEN ORIGEN ES DE APOPYO LOGISTICO EL ALMACEN VIRTUAL DEBE SER DE APOYO LOGISTICO 'Dim CveAlmacenVirtual As Integer = -1 'If CveTipoAlmacenOrigen = 27 Then ' CveAlmacenVirtual = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveAlmacen", $" CveTipoAlmacen =25 AND CveSubProyecto={CveSubProyecto}").ToEntero() 'Else ' CveAlmacenVirtual = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveAlmacen", $" CveTipoAlmacen =24 AND CveSubProyecto={CveSubProyecto}").ToEntero() 'End If 'VERIFICA SI TIENE ALMACEN VIRTUAL ASIGNADA If CveAlmacenVirtual > 0 Then Dim dtvirtual As DataTable = Nothing If ObjInventario.GetMovimientosDetalleVirtual(CveMovimientoEntrada, UsuarioActual.CveEmpresa, CveMovimientoRelacionado:=CveMovimientoSalida) Then dtvirtual = ObjInventario.DtResultados If dtvirtual.Rows.Count > 0 Then CveMovimientoVirtualEntrada = ObjInventario.AddMovimiento(CveAlmacenVirtual, 36, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:=TxtObservacionesRecepcion.Text.Trim, CveMovimientoRelacionado:=CveMovimientoEntrada, Modulo:="TA/C2") FolioVirtualEntrada = ObjInventario.Folio For Each RowVirtual As DataRow In dtvirtual.Rows Dim CvePS = RowVirtual("CvePS").ToString().ToEntero() Dim CantidadUsado As Decimal = RowVirtual("Cantidad").ToString().ToDecimal() Dim PU As Decimal = RowVirtual("PUOriginal").ToString().ToDecimal() Dim CveUM As Integer = RowVirtual("CveUM").ToString().ToEntero() Dim CostoIndirecto As Decimal = RowVirtual("CostoIndirecto").ToString().ToDecimal() If Not ObjInventario.AddMovimientoDetalle(CveMovimientoVirtualEntrada, CantidadUsado, CveUM, CvePS, PU, -1, CostoIndirecto:=CostoIndirecto, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then ErrorMovInv = True Exit For End If Next End If Else TextoError = "No se pudo registrar el movimiento virtual" ErrorMovInv = True End If 'Else ' TextoError = "La Sucursal no tiene creado un almacen virtual" ' ErrorMovInv = True End If End If If Not ErrorMovInv Then Dim ImporteDecimal As Decimal = importe.ToDecimal.RoundAD Dim IdCtaContable As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", String.Format("CveAlmacen = {0}", DdlAlmacenTransitorioRecepcion.SelectedValue.ToEntero)).ToEntero If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, ImporteDecimal, TxtObservaciones.Text, 68, TxtObservaciones.Text, Fecha, IdCtaContable, -1, CveMovimientoAlmacen:=CveMovimientoEntrada, ImporteMX:=ImporteDecimal, Contabilizable:=False) Then ErrorMovInv = True TextoError = "Ocurrió un error al cancelar el traspaso" End If If CveMovimientoSalidaTransitorio > 0 Then If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ImporteDecimal, TxtObservaciones.Text, 68, TxtObservaciones.Text, Fecha, IdCtaContable, -1, CveMovimientoAlmacen:=CveMovimientoSalidaTransitorio, ImporteMX:=ImporteDecimal, Contabilizable:=False) Then ErrorMovInv = True TextoError = "Ocurrió un error al cancelar el traspaso" End If End If End If End If Catch ex As Exception ErrorMovInv = True TextoError = "Ocurrió un erro al cancelar el traspaso" OnError(TextoError, ex) End Try If Not ErrorMovInv Then ObjInventario.Commit() TxtRecibio.Text = "" TxtFechaRecepcion.Text = Now.ToShortDateString TxtObservacionesRecepcion.Text = "" Dim Mensaje As StringBuilder = New StringBuilder Mensaje.AppendFormat("Se realizo correctamente la cancelación.
Folio de Entrada: {0}", tFolio, CveMovimientoEntrada) Mensaje.AppendFormat("
Imprimir Reporte", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoEntrada))) 'onclick='ImprimirTraslado()' If CveMovimientoVirtualEntrada > 0 Then Mensaje.AppendFormat("
Folio Virtual: {2} 
Imprimir Entrada Virtual", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoVirtualEntrada)), CveMovimientoVirtualEntrada, FolioVirtualEntrada) Alert(Mensaje.ToString, TipoMensaje.MsgInformacion) CargaRecepcion() DivCodigoSeriePSRecepcion.Visible = False GvDatosRecepcion.DataBind() UpDatosRecepcion.Update() UPDatosAlmacen.Update() Else ObjInventario.RollBack() Alert(TextoError, TipoMensaje.MsgError) End If ObjConta.Dispose() ObjInventario.Dispose() End Sub Protected Sub BtnRecibir_Click(sender As Object, e As EventArgs) If GvDatosRecepcion.Rows.Count > 0 Then 'Valida Movimientos Dim ValidaMovtos = 0.0 For Each gvr As GridViewRow In GvDatosRecepcion.Rows If gvr.FCCheckBox("Chk").Checked AndAlso gvr.FCTextBox("TxtCantidad").Text.ToString.ToDecimal > 0 Then ValidaMovtos += gvr.FCTextBox("TxtCantidad").Text.ToString.ToDecimal End If Next If Not ValidaMovtos > 0 Then Alert("No hay movimientos que realizar. Por favor verifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) Exit Sub End If Dim CveAlmacenSalida As Integer = DdlAlmacenTransitorioRecepcion.SelectedValue.ToEntero If CveAlmacenTransitorio <> CveAlmacenSalida Then Alert("El almacen transitorio debe coincidir con el del movimiento.", TipoMensaje.MsgAdvertencia) Exit Sub End If Dim ObjInventario As New ClsInventarios Dim Dtt As DataTable = Nothing Dim CveMovimientoEntrada As Integer = 0 Dim CveMovimientoSalidaTransitorio As Integer = 0 Dim Folio = 0 Dim ErrorMovInv As Boolean = False Dim TextoError = "" Dim ObjConta As New ClsContabilidad(ObjInventario.IniciaTransacSQL()) '' verifica que no se halla recibido previamente, si ya se recibió da salida If ObjInventario.GetMovimientosTransitorios(CveAlmacenDestino, -1, CveAlmacenTransitorio, -1, FolioBusqueda, UsuarioActual.CveEmpresa, UsuarioActual.CveUsuario) Then Dtt = ObjInventario.DtResultados.FiltraParametros(String.Format("CveTipoAlmacenDestino <> 4"), "", {"CveMovimientoDetalle", "Codigo", "Cantidad"}) If Dtt IsNot Nothing AndAlso Dtt.FiltraParametros("Cantidad < 0").Rows.Count > 0 Then ObjInventario.Dispose() Alert("El traspaso no se ha puede completar, por inconsistencia en las cantidades recibidas") Exit Sub End If End If 'REGISTRA LA SALIDA Y ENTRADA (TRASPASO) ObjInventario.IniciaTransacSQL() 'Inicia la transacción Dim Fecha As Date = TxtFechaRecepcion.Text.ToDate Dim CveAlmacenEntrada As Integer = GvDatosRecepcion.Rows(0).DataKey("CveAlmacenDestino").ToEntero Dim TipoAlmacenDestino As Integer = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveTipoAlmacen", $"CveAlmacen = {CveAlmacenEntrada}").ToEntero() Dim TipoAlmacenOrigen As Integer = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveTipoAlmacen", $"CveAlmacen = {CveAlmacenSalida}").ToEntero() Dim CveSubProyectoRecibe = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveSubProyecto", $"CveAlmacen = {CveAlmacenEntrada}").ToEntero Dim RealizarMovimientoVirtual As Boolean = False If UsuarioActual.Empresa.Funcionalidad(573) = "1" Then RealizarMovimientoVirtual = True End If 'AGREGAMOS LA ENTRADA CveMovimientoEntrada = ObjInventario.AddMovimiento(CveAlmacenEntrada, 27, 1, Fecha, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:=TxtObservacionesRecepcion.Text.Trim, CveAlmacenDestino:=GvDatosRecepcion.Rows(0).DataKey("CveAlmacenSalida").ToEntero, CveMovimientoRelacionado:=CveMovimientoSalida, Modulo:="TA/G1") Folio = ObjInventario.Folio 'AGREGAMOS LA SALIDA CveMovimientoSalidaTransitorio = ObjInventario.AddMovimiento(CveAlmacenSalida, 8, 1, Fecha, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:=TxtObservacionesRecepcion.Text.Trim, CveAlmacenDestino:=GvDatosRecepcion.Rows(0).DataKey("CveAlmacenSalida").ToEntero, CveMovimientoRelacionado:=CveMovimientoEntrada, Modulo:="TA/G11") If CveMovimientoSalidaTransitorio <= 0 Then TextoError = "No se pudo generar el movimiento de salida correctamente" ErrorMovInv = True Else Dim CveMovimientoDetalleEntrada As Integer = 0 Dim Cont As Integer = 0 For Each gvr As GridViewRow In GvDatosRecepcion.Rows Dim dataRowAux As DataRow = Dtt.FiltroPrimero(String.Format(" CveMovimientoDetalle = '{0}'", If(gvr.DataKey("CveMovimientoDetalle").ToString = "", "0", gvr.DataKey("CveMovimientoDetalle").ToString))) Dim cantidadDisponibleValidacion As Decimal = 0 If gvr.DataKey("Codigo").ToString IsNot "" Then If dataRowAux IsNot Nothing Then cantidadDisponibleValidacion = dataRowAux.Item("Cantidad").ToString.ToDecimal - gvr.FCTextBox("TxtCantidad").Text.ToString.ToDecimal Else cantidadDisponibleValidacion = -1 End If End If If gvr.FCCheckBox("Chk").Checked AndAlso gvr.FCTextBox("TxtCantidad").Text.ToString.ToDecimal > 0 AndAlso cantidadDisponibleValidacion >= 0 Then CveMovimientoDetalleEntrada = gvr.DataKey("CveMovimientoDetalle").ToString.ToEntero If CveMovimientoDetalleEntrada <= 0 Then ErrorMovInv = True TextoError = "Ocurrió un error al guardar los movimientos de salida" Exit For End If Dim PrecioEntrada As Decimal = If(TipoAlmacenDestino = 26, 0, gvr.DataKey("PU").ToString.ToDecimal) ''RMF codigo temporal. por implementación Dim tLote As String = gvr.DataKey("Lote").ToString Dim tSerie As String = gvr.FCTextBox("TxtSerie").Text 'gvr.DataKey("Serie").ToString Dim tFechaCaducidad As Date = gvr.DataKey("FechaCaducidad").ToDate If CveSubProyectoRecibe.ToString.Contiene(UsuarioActual.Empresa.Funcionalidad(347)) Then tLote = gvr.FCTextBox("TxtLote").Text tFechaCaducidad = gvr.FCTextBox("TxtCaducidad").Text.ToDate End If If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntrada, gvr.FCTextBox("TxtCantidad").Text.ToString.ToDecimal, gvr.DataKey("CveUM").ToString.ToEntero, gvr.DataKey("CvePS").ToString.ToEntero, PrecioEntrada, CveAF:=gvr.DataKey("CveAF").ToString.ToEntero, CveSeccionAlmacen:=gvr.FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero, Serie:=tSerie, Lote:=tLote, FechaCaducidad:=tFechaCaducidad, CveMovimientoDetalleEntrada:=CveMovimientoDetalleEntrada) Then ErrorMovInv = True TextoError = "Ocurrió un error al guardar los movimientos de salida" Exit For End If 'MOV, Alm, Transito If gvr.DataKey("CveMovimientoDetalleTransitorio").ToString.ToEntero > 0 Then If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalidaTransitorio, gvr.FCTextBox("TxtCantidad").Text.ToString.ToDecimal, gvr.DataKey("CveUM").ToString.ToEntero, gvr.DataKey("CvePS").ToString.ToEntero, PrecioEntrada, CveAF:=gvr.DataKey("CveAF").ToString.ToEntero, CveSeccionAlmacen:=-3, Serie:=gvr.DataKey("Serie").ToString, Lote:=gvr.DataKey("Lote").ToString, FechaCaducidad:=gvr.DataKey("FechaCaducidad").ToDate, CveMovimientoDetalleEntrada:=gvr.DataKey("CveMovimientoDetalleTransitorio").ToString.ToEntero) Then ErrorMovInv = True TextoError = "Ocurrió un error al guardar los movimientos de salida" Exit For End If Else CveMovimientoSalidaTransitorio = 0 End If ElseIf cantidadDisponibleValidacion < 0 Then TextoError = String.Format("Se exceden la cantidad disponibles para {0}", gvr.DataKey("PS").ToString) ErrorMovInv = True End If Cont += 1 Next If Not ErrorMovInv Then Dim Concepto As String = TxtObservacionesRecepcion.Text If Concepto = "" Then Concepto = "Recepción Traspaso" Dim CvePrePoliza As Integer = ObjConta.AddPrePolizas("Inventario/TraspasoAlmacen", 53, 0, 0, 1, Fecha, Concepto, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) If ObjInventario.GetMovimientosDetalle(CveMovimientoEntrada, UsuarioActual.CveEmpresa) Then Dim importe As Decimal = ObjInventario.DtResultados.SUMD("Total").RoundSQL Dim IdCtaContable As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", String.Format("CveAlmacen = {0}", DdlAlmacenTransitorioRecepcion.SelectedValue.ToEntero)).ToEntero Dim tCveConcepto As Integer = 68 'If CveMovimientoSalidaTransitorio = 0 Then ' tCveConcepto = 289 'End If If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, importe, TxtObservaciones.Text, tCveConcepto, TxtObservaciones.Text, Fecha, IdCtaContable, -1, CveMovimientoAlmacen:=CveMovimientoSalidaTransitorio, ImporteMX:=importe, Contabilizable:=False) Then ErrorMovInv = True End If If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, importe, TxtObservaciones.Text, 68, TxtObservaciones.Text, Fecha, IdCtaContable, -1, CveMovimientoAlmacen:=CveMovimientoEntrada, ImporteMX:=importe, Contabilizable:=False) Then ErrorMovInv = True End If End If End If End If 'VIRTUAL ENTRADA Dim CveMovimientoVirtualEntrada As Integer = 0 Dim FolioVirtualEntrada As Integer = 0 If RealizarMovimientoVirtual Then Dim CveAlmacenVirtual As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=CveAlmacenEntrada).FiltroPrimeroValor("CveAlmacenVirtual", "").ToEntero() If CveAlmacenVirtual > 0 Then Dim dtvirtual As DataTable = Nothing If ObjInventario.GetMovimientosDetalleVirtual(CveMovimientoEntrada, UsuarioActual.CveEmpresa) Then dtvirtual = ObjInventario.DtResultados If dtvirtual.Rows.Count > 0 Then CveMovimientoVirtualEntrada = ObjInventario.AddMovimiento(CveAlmacenVirtual, 36, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:=TxtObservaciones.Text.Trim, CveMovimientoRelacionado:=CveMovimientoEntrada, Modulo:="TA/S2") FolioVirtualEntrada = ObjInventario.Folio For Each RowVirtual As DataRow In dtvirtual.Rows Dim CvePS = RowVirtual("CvePS").ToString().ToEntero() Dim CantidadUsado As Decimal = RowVirtual("Cantidad").ToString().ToDecimal() Dim PU As Decimal = RowVirtual("Cargo").ToString().ToDecimal() Dim CveUM As Integer = RowVirtual("CveUM").ToString().ToEntero() If Not ObjInventario.AddMovimientoDetalle(CveMovimientoVirtualEntrada, CantidadUsado, CveUM, CvePS, PU, -1, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then ErrorMovInv = True Exit For End If Next End If Else TextoError = "No se pudo registrar el movimiento virtual" ErrorMovInv = True End If 'Else ' TextoError = "La Sucursal no tiene creado un almacen virtual" ' ErrorMovInv = True End If End If ''AGREGAMOS LA ENTRADA 'If Not ErrorMovInv Then ' CveMovimientoEntrada = ObjInventario.AddMovimiento(GvDatosRecepcion.Rows(0).DataKey("CveAlmacenDestino").ToEntero, 9, 1, Fecha, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, ' Observaciones:=TxtObservacionesRecepcion.Text.Trim, Recibio:=TxtRecibio.Text, CveAlmacenDestino:=GvDatosRecepcion.Rows(0).DataKey("CveAlmacenSalida").ToEntero, CveMovimientoRelacionado:=CveMovimientoSalida) ' Folio = ObjInventario.Folio ' If CveMovimientoEntrada <= 0 Then ' TextoError = "No se pudo generar el movimiento de entrada correctamente" ' ErrorMovInv = True ' Else ' 'COSTO INDIRECTO ' Dim GastoIndirectoTotal As Double = GvDatosRecepcion.Rows(0).DataKey("GastoIndirectoSalida").ToDouble ' Dim Importe As Double = GvDatosRecepcion.Rows(0).DataKey("Importe").ToDouble ' If ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then ' Dim CostoIndirecto As Double ' For Each Dr As DataRow In ObjInventario.DtResultados.Rows ' CostoIndirecto = 0 ' If GastoIndirectoTotal > 0 Then ' 'PRORRATEAMOS EL GASTO INDIRECTO ' CostoIndirecto = ((Dr("Total").ToString.ToDouble * GastoIndirectoTotal) / Importe) / Dr("Cantidad").ToString.ToDouble ' End If ' If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntrada, Dr("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDouble, Dr("CveAF").ToString.ToEntero, -1, Dr("Serie").ToString, Lote:=Dr("Lote").ToString, Batch:=Dr("Batch").ToString, CostoIndirecto:=CostoIndirecto) Then ' ErrorMovInv = True ' TextoError = "Ocurrió un error al guardar los movimientos de entrada" ' Exit For ' End If ' Next ' End If ' End If 'End If 'AGREGAMOS LA ENTRADA VIEJO 'If Not ErrorMovInv Then ' 'Folio = ObjInventario.GetFolioSiguiente(9, UsuarioActual.CveEmpresa) ' CveMovimientoEntrada = ObjInventario.AddMovimiento(GvDatosRecepcion.Rows(0).DataKey("CveAlmacenDestino").ToEntero, 9, 1, Fecha, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1) ' If CveMovimientoEntrada <= 0 Then ' TextoError = "No se pudo generar el movimiento de entrada correctamente" ' ErrorMovInv = True ' Else ' If ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then ' For Each Dr As DataRow In ObjInventario.DtResultados.Rows ' If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntrada, Dr("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDouble, Dr("CveAF").ToString.ToEntero) Then ' ErrorMovInv = True ' TextoError = "Ocurrió un error al guardar los movimientos de salida" ' Exit For ' End If ' Next ' End If ' End If 'End If If Not ErrorMovInv Then ObjInventario.Commit() TxtRecibio.Text = "" TxtFechaRecepcion.Text = Now.ToShortDateString TxtObservacionesRecepcion.Text = "" Dim Mensaje As StringBuilder = New StringBuilder Mensaje.AppendFormat("Se realizo correctamente la recepción.
Folio de Entrada: {0}", Folio, CveMovimientoEntrada) Mensaje.AppendFormat("
Imprimir Reporte", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoEntrada))) 'onclick='ImprimirTraslado()' If CveMovimientoVirtualEntrada > 0 Then Mensaje.AppendFormat("


Folio Virtual {2}
Imprimir Reporte", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoVirtualEntrada)), CveMovimientoVirtualEntrada, FolioVirtualEntrada) 'onclick='ImprimirTraslado()' Alert(Mensaje.ToString, TipoMensaje.MsgInformacion) DivCodigoSeriePSRecepcion.Visible = False GvDatosRecepcion.DataBind() UpDatosRecepcion.Update() UPDatosAlmacen.Update() CargaRecepcion() Else ObjInventario.RollBack() Alert(TextoError, TipoMensaje.MsgError) End If ObjInventario.Dispose() ObjConta.Dispose() Else Alert("No hay movimientos para el traspaso", TipoMensaje.MsgAdvertencia) If ChkTransitorio.Checked Then DivResponsable.Visible = True : DivTransitorio2.Visible = True End If End Sub 'Private Sub DdlProducto_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlProducto.SelectedIndexChanged ' 'CargarUM(DdlProducto.SelectedValue.ToEntero) ' ElProductoChange() 'End Sub 'Private Sub HFProducto_ValueChanged(sender As Object, e As EventArgs) Handles HFProducto.ValueChanged ' ElProductoChange() 'End Sub Private Sub CargarUM(CvePS As Integer) Dim ObjUM As New ClsProductosServicios() If ObjUM.GetPSEquivalencias(CvePS, UsuarioActual.CveEmpresa) Then DdlUnidad.Items.Clear() DdlUnidad.DataSource = ObjUM.DtResultados End If ObjUM.Dispose() DdlUnidad.DataBind() End Sub 'Protected Sub BtnImprimirTraspaso_Click(sender As Object, e As EventArgs) Handles BtnImprimirTraspaso.Click ' Dim params As New List(Of ReportParameter) ' params.Add(New ReportParameter("SubProyecto", DdlAlmacenDestino.SelectedItem.ToString)) ' params.Add(New ReportParameter("Folio", FolioTraspaso.ToString)) ' params.Add(New ReportParameter("Fecha", TxtFecha.Text)) ' params.Add(New ReportParameter("Observaciones", TxtObservaciones.Text)) ' params.Add(New ReportParameter("NombreEntrego", UsuarioActual.Nombre)) ' params.Add(New ReportParameter("NombreTraslado", TxtResponsable.Text)) ' params.Add(New ReportParameter("NombreRecibio", "")) ' ImprimirPDF(String.Format("{0}Formatos\Traslado.rdlc", UsuarioActual.Empresa.Ruta), DtTraslado, params, "Reporte Traslado", RDSName:="DsInventarios") 'End Sub #End Region #Region " AGREGA CON TXT | CODIGO - SERIE " Protected Sub BtnCodigoPS_Click(sender As Object, e As EventArgs) If TxtCodigoPS.Text = "" Then Exit Sub End If TdSeriePS.Visible = False Dim DrPS = GlobalDTPS(UsuarioActual.CveEmpresa).FiltroPrimero($"CodigoBarras = '{TxtCodigoPS.Text}'") If DrPS Is Nothing Then Alert($"No se ha encontrado un producto del Codigo ""{TxtCodigoPS.Text}"". ", TipoMensaje.MsgAdvertencia, "window.setTimeout(Focus,200);") RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") TxtCodigoPS.Text = "" Exit Sub End If If DrPS("Inv_CveMetodoInventario").ToString.ToEntero = 5 Then TdSeriePS.Visible = True TxtSeriePS.Focus() CvePSSerie = DrPS("CvePS").ToString.ToEntero CveUMSerie = DrPS("CveUnidadMedida").ToString.ToEntero Exit Sub End If AgregarPS(1, DrPS("CvePS").ToString.ToEntero, DrPS("CveUnidadMedida").ToString.ToEntero) TxtCodigoPS.Text = "" End Sub Protected Sub BtnSeriePS_Click(sender As Object, e As EventArgs) If TxtSeriePS.Text.Trim = "" Then Exit Sub End If txtCantidad.Text = "1" Dim Valido = ValidaExistencia(1, CvePSSerie, CveUMSerie, -1, TxtSeriePS.Text.Trim, "-1", MinFecha) If Valido Then AgregarPS(1, CvePSSerie, CveUMSerie, TxtSeriePS.Text.Trim) Else TxtSeriePS.Text = "" TxtSeriePS.Focus() Exit Sub End If TdSeriePS.Visible = False TxtSeriePS.Text = "" TxtCodigoPS.Text = "" TxtCodigoPS.Focus() End Sub #End Region #Region " AGREGA CON TXT | CODIGO - SERIE --- RECEPCION " Protected Sub BtnCodigoPSRecepcion_Click(sender As Object, e As EventArgs) If TxtCodigoPSRecepcion.Text = "" Then Exit Sub End If Dim Existe = False Dim PSTemp = "" TdSeriePSRecepcion.Visible = False For Each Gvr As GridViewRow In GvDatosRecepcion.Rows If Gvr.DataKey("CodigoBarras") = TxtCodigoPSRecepcion.Text.Trim Then Dim TxtCantidad = GvDatosRecepcion.Rows(Gvr.RowIndex).FCTextBox("TxtCantidad") If Gvr.DataKey("Cantidad").ToDecimal - TxtCantidad.Text.ToDecimal - 1 >= 0 Then If Gvr.DataKey("AplicaSerie") = "True" Then TdSeriePSRecepcion.Visible = True TxtSeriePSRecepcion.Focus() Exit Sub End If TxtCantidad.Text = (TxtCantidad.Text.ToDecimal + 1).ToString.FormatoNumero TxtCodigoPSRecepcion.Text = "" RegistraScript("playsonidito('beep-07.wav')") UpDatosRecepcion.Update() Exit Sub End If Existe = True PSTemp = Gvr.DataKey("PS").ToString 'Alert($"Ya se ha cargado la totalidad del Producto ""{Gvr.DataKey("PS").ToString}"" con el Codigo ""{TxtCodigoPSRecepcion.Text}"".", TipoMensaje.MsgAdvertencia, "window.setTimeout(Focus1,200);") End If Next If Existe Then Alert($"Ya se ha cargado la totalidad del Producto ""{PSTemp}"" con el Codigo ""{TxtCodigoPSRecepcion.Text}"".", TipoMensaje.MsgAdvertencia, "window.setTimeout(Focus1,200);") Else Alert($"No se ha encontrado un producto para surtir con el Codigo ""{TxtCodigoPSRecepcion.Text}"". ", TipoMensaje.MsgAdvertencia, "window.setTimeout(Focus1,200);") End If RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") TxtCodigoPSRecepcion.Text = "" End Sub Protected Sub BtnSeriePSRecepcion_Click(sender As Object, e As EventArgs) If TxtSeriePSRecepcion.Text = "" Then Exit Sub End If For Each Gvr As GridViewRow In GvDatosRecepcion.Rows If Gvr.DataKey("CodigoBarras") = TxtCodigoPSRecepcion.Text.Trim And Gvr.DataKey("Serie") = TxtSeriePSRecepcion.Text.Trim Then Dim TxtCantidad = GvDatosRecepcion.Rows(Gvr.RowIndex).FCTextBox("TxtCantidad") If Gvr.DataKey("Cantidad").ToDecimal - TxtCantidad.Text.ToDecimal - 1 >= 0 Then TxtCantidad.Text = (TxtCantidad.Text.ToDecimal + 1).ToString.FormatoNumero TxtCodigoPSRecepcion.Text = "" TdSeriePSRecepcion.Visible = False TxtSeriePSRecepcion.Text = "" UpDatosRecepcion.Update() Exit Sub End If Alert($"Ya se ha cargado la totalidad del Producto ""{Gvr.DataKey("PS").ToString}"" con el Codigo ""{TxtCodigoPSRecepcion.Text}"".", TipoMensaje.MsgAdvertencia, "window.setTimeout(Focus1,200);") RegistraScript("playsonidito(''142608__autistic-lucario__error.wav'')") End If Next Alert($"No se ha encontrado un producto para surtir con el Codigo ""{TxtCodigoPSRecepcion.Text}"". ", TipoMensaje.MsgAdvertencia, "window.setTimeout(Focus1,200);") RegistraScript("playsonidito(''142608__autistic-lucario__error.wav'')") 'Alert($"Ya se han cargado todos los productos o no se ha encontrado un producto de la Serie ""{TxtSeriePSRecepcion.Text}"". ", TipoMensaje.MsgAdvertencia, "window.setTimeout(Focus2,200);") TxtSeriePSRecepcion.Text = "" End Sub #End Region #Region "CORREO" Private Sub MandaCorreo(CveMovimiento As Integer, Para As String, Optional CCP As String = "") Dim Mail As New ClsSisMail() Dim Asunto As String = "NOTIFICACION DE TRASPASO ENTRE ALMACENES" Dim Body As String = GeneraCorreo(CveMovimiento) If Not Mail.SendMail(ClsPaginas.EmpresaNotificaciones, Para, Asunto, Body, CCP) Then 'Dim objIE As New ClsBancos 'objIE.UpdateBancos_IENotificaciones(1, "-1", "-1", CveIE) 'objIE.Dispose() Alert("No se pudo enviar el correo electrónico.", TipoMensaje.MsgError) End If End Sub 'Private Sub BtnSendMail_Click(sender As Object, e As EventArgs) Handles BtnSendMail.Click ' MandaCorreo(CveMov, TxtParaMail.Text.Trim, TxtCC.Text.Trim) ' RegistraScript("$('#ModalDivMail').modal('hide');") 'End Sub Private Function GeneraCorreo(CveMovimientoSalida As Integer) As String Dim strBody As New StringBuilder Dim ObjInventario As New ClsInventarios If ObjInventario.GetMovimientos(CveMovimientoSalida, -1, -1, UsuarioActual.CveEmpresa) Then strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.AppendFormat("
") strBody.AppendFormat("
") strBody.AppendFormat(" {0}", UsuarioActual.Empresa.Empresa) strBody.AppendFormat(" ") strBody.AppendFormat(" ") strBody.AppendFormat(" ", UsuarioActual.Empresa.Direccion) strBody.AppendFormat(" ") strBody.AppendFormat(" ") strBody.AppendFormat(" ", UsuarioActual.Empresa.Colonia) strBody.AppendFormat(" ") strBody.AppendFormat(" ") strBody.AppendFormat(" ", UsuarioActual.Empresa.Ciudad, UsuarioActual.Empresa.Estado, UsuarioActual.Empresa.CP) strBody.AppendFormat(" ") strBody.AppendFormat(" ") strBody.AppendFormat(" ", UsuarioActual.Empresa.RFC) strBody.AppendFormat(" ") strBody.AppendFormat("
{0}
Col. {0}
{0}, {1}, C.P.{2}
RFC {0}
") strBody.AppendFormat("
") strBody.AppendFormat("


") strBody.AppendFormat("
") strBody.AppendFormat(" ") strBody.AppendFormat(" ") strBody.AppendFormat(" ") strBody.AppendFormat(" ") strBody.AppendFormat("
") strBody.AppendFormat("
") strBody.AppendFormat(" TRASPASO ENTRE ALMACENES{0} ", " ") strBody.AppendFormat(" ") strBody.AppendFormat(" ") strBody.AppendFormat(" ") strBody.AppendFormat(" ") strBody.AppendFormat(" ") strBody.AppendFormat(" ") strBody.AppendFormat(" ") strBody.AppendFormat(" ", ObjInventario.Fecha.ToString("dd/MM/yyyy")) strBody.AppendFormat(" ") strBody.AppendFormat(" ") strBody.AppendFormat(" ") strBody.AppendFormat(" ", ObjInventario.Almacen) strBody.AppendFormat(" ") strBody.AppendFormat(" ") strBody.AppendFormat(" ") strBody.AppendFormat(" ", ObjInventario.AlmacenDestino) strBody.AppendFormat(" ") strBody.AppendFormat(" ") strBody.AppendFormat(" ") strBody.AppendFormat(" ", ObjInventario.Observaciones) strBody.AppendFormat(" ") 'strBody.AppendFormat(" ") 'strBody.AppendFormat(" ") 'strBody.AppendFormat(" ", objIE.Importe.FormatoNumero, objIE.Moneda) 'strBody.AppendFormat(" ") 'strBody.AppendFormat(" ") 'strBody.AppendFormat(" ") 'strBody.AppendFormat(" ", objIE.Observaciones) 'strBody.AppendFormat(" ") strBody.AppendFormat(" ") strBody.AppendFormat(" ") strBody.AppendFormat(" ") strBody.AppendFormat("
Fecha:{0}
Almacén Origen:{0}
Almacén Destino:{0}
Observaciones:{0}
Importe:$ {0} {1}
Observaciones:{0}
") strBody.AppendFormat("
") strBody.AppendFormat("
") strBody.AppendFormat("
") strBody.AppendFormat("
") strBody.AppendFormat("
") 'MOVIMIENTOS CHEQUE 'Dim Textov33 As String = "" 'If UsuarioActual.Empresa.Funcionalidad(520) = "1" Then ' Textov33 = "Favor de emitir complemento de pago de los siguientes documentos" 'End If If ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then strBody.AppendFormat("
") strBody.AppendFormat(" ") strBody.AppendFormat(" ") strBody.AppendFormat(" ") strBody.AppendFormat(" ") strBody.AppendFormat("
") strBody.AppendFormat("
") strBody.AppendFormat(" Productos / Servicios
{0}
", "") strBody.AppendFormat(" ") strBody.AppendFormat(" ") strBody.AppendFormat(" ") strBody.AppendFormat(" ") strBody.AppendFormat(" ") 'strBody.AppendFormat(" ") 'strBody.AppendFormat(" ") strBody.AppendFormat(" ") For Each dr As DataRow In ObjInventario.DtResultados.Rows strBody.AppendFormat(" ") strBody.AppendFormat(" ", dr("Cantidad").ToString.FormatoNumero) strBody.AppendFormat(" ", dr("UnidadMedida").ToString) strBody.AppendFormat(" ", dr("CodigoPS").ToString) 'strBody.AppendFormat(" ", dr("FolioFiscal")) 'strBody.AppendFormat(" ", dr("ImporteNC").ToString.FormatoNumero) strBody.AppendFormat(" ") Next strBody.AppendFormat(" ") strBody.AppendFormat(" ") strBody.AppendFormat(" ") strBody.AppendFormat("
CantidadUnidadProducto / ServicioFolio FiscalNC Aplicadas
{0}{0}{0}{0}{0}
") strBody.AppendFormat("
") strBody.AppendFormat("
") strBody.AppendFormat("
") strBody.AppendFormat("
") strBody.AppendFormat("
") End If strBody.Append("
Favor de no responder a este correo.
") strBody.Append("") End If ObjInventario.Dispose() Return strBody.ToString End Function #End Region #Region "TIMBRADO" Private Sub EmitirTimbrado(CveTimbre As Integer, CveMovimientoTimbrado As Integer) 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 'Private Sub Timbrar() ' CreaObjetosVenta() ' Dim ObjTimbrado As New Timbrado ' Dim FM As New Modelos.FemsaFactura ' Dim TmpDT7Eleven As New DataTable ' Dim TmpDTComplementosTimbrado As New DataTable ' PrepararTimbrado(FM, TmpDT7Eleven, TmpDTComplementosTimbrado) ' MensajeAlert.Append("

") ' If ObjTimbrado.TimbrarFactura(UsuarioActual, ObjFactura) Then ' MensajeAlert.Append("Emitido con exito.") ' 'XML ' Dim ArchivoXML = String.Format("{0}/XML/{1}/{2}.xml", UsuarioActual.Empresa.Ruta, ObjFactura.TipoDocto, ObjFactura.SerieFolio) ' If File.Exists(ArchivoXML) Then ' MensajeAlert.AppendFormat("", Encripta(String.Format("OP=DesXmlTra&CVEMOVIMIENTO={0}&EXT={1}&FOLIO={2}&TIPODOCTO={3}", CveMovimientoTimbrado, "XML", ObjFactura.SerieFolio, ObjFactura.TipoDocto))) ' End If ' 'PDF ' 'GeneraPDFFactura() ' Dim ArchivoPDF = String.Format("{0}/PDF/{1}/{2}.pdf", UsuarioActual.Empresa.Ruta, ObjFactura.TipoDocto, ObjFactura.SerieFolio) ' If File.Exists(ArchivoPDF) Then ' MensajeAlert.AppendFormat("", Encripta(String.Format("OP=DesPdfTra&CVEMOVIMIENTO={0}&EXT={1}&FOLIO={2}&TIPODOCTO={3}", CveMovimientoTimbrado, "PDF", ObjFactura.SerieFolio, ObjFactura.TipoDocto))) ' End If ' If UsuarioActual.Empresa.Funcionalidad(161) = "1" Then ' MensajeAlert.AppendFormat("", Encripta(String.Format("OP=CARPOTIMBRE&CVEMOV={0}", CveMovimientoTimbrado))) ' Else ' MensajeAlert.AppendFormat("", Encripta(String.Format("OP=CARPO&CVEMOV={0}", CveMovimientoTimbrado))) ' End If ' Else ' MensajeAlert.AppendFormat("", ObjTimbrado.MensajeErrorCFDI) ' End If 'End Sub Private Sub GeneraPDFFactura() Try PdfFactura(ObjFactura) Catch ex As Exception Alert("Ocurrió un error al generar el PDF", TipoMensaje.MsgError) End Try End Sub #End Region 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 BtnCargaExcelConceptos_Click(sender As Object, e As EventArgs) If TxtExcelConceptos.getfiles().Archivos.Count > 0 Then Dim file As Archivo = TxtExcelConceptos.getfiles().Archivos(0) Dim Directorio As String = AppDomain.CurrentDomain.BaseDirectory & file.path CargarArchivoConceptos(Directorio, file.filename) RegistraScript("$('#DivCargaExcelConceptos').modal('hide');") Else Alert("No existe el archivo. Favor de subir un archivo excel a la plataforma.", TipoMensaje.MsgError) End If End Sub Protected Sub BtnDescargarFormatoExcelConceptos_Click(sender As Object, e As EventArgs) Dim DtExcel As New DataTable DtExcel.Columns.Add(New DataColumn("Cantidad", GetType(Decimal))) DtExcel.Columns.Add(New DataColumn("Codigo", GetType(String))) DtExcel.Columns.Add(New DataColumn("Producto", GetType(String))) DtExcel.Columns.Add(New DataColumn("Serie", GetType(String))) DtExcel.Columns.Add(New DataColumn("Lote", GetType(String))) DtExcel.Columns.Add(New DataColumn("FechaCaducidad", GetType(Date))) DtExcel.Columns.Add(New DataColumn("Observaciones", GetType(String))) DtExcel.TableName = "Traspaso" SpreadsheetInfo.SetLicense(ModExtensiones.SerialGemBoxSpreadsheet) Dim FileExcel As New ExcelFile() Dim worksheet = FileExcel.Worksheets.Add(DtExcel.TableName) worksheet.InsertDataTable(DtExcel, New InsertDataTableOptions() With { .ColumnHeaders = True, .StartRow = 0, .StartColumn = 0 }) worksheet.Rows(0).Style.FillPattern.SetPattern(FillPatternStyle.Solid, SpreadsheetColor.FromArgb(75, 119, 190), SpreadsheetColor.FromArgb(255, 255, 255)) worksheet.Rows(0).Style.Font.Color = SpreadsheetColor.FromArgb(255, 255, 255) Dim columnCount = worksheet.CalculateMaxUsedColumns() For i = 0 To columnCount worksheet.Columns(i).AutoFit(1, worksheet.Rows(0), worksheet.Rows(worksheet.Rows.Count - 1)) Next FileExcel.Save(Response, "Traspaso.xlsx", SaveOptions.XlsxDefault) End Sub Protected Sub CargarArchivoConceptos(Ruta As String, FileName As String) SpreadsheetInfo.SetLicense(ModExtensiones.SerialGemBoxSpreadsheet) Dim dt As DataTable = Nothing Dim ErrorArchivo = False Try dt = ReadExcelFile(Ruta + FileName, True) Catch ex As Exception ErrorArchivo = True OnError("Ocurrio un error al leer el archivo
" & ex.Message, ex) End Try If Not ErrorArchivo AndAlso dt IsNot Nothing 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 = "Codigo" Then Alert("El nombre de la segunda columna debe ser 'Codigo'. Favor de corregirlo", TipoMensaje.MsgError) Exit Sub End If If Not dt.Columns(2).ColumnName = "Producto" Then Alert("El nombre de la tercera columna debe ser 'Producto'. Favor de corregirlo", TipoMensaje.MsgError) Exit Sub End If If Not dt.Columns(3).ColumnName = "Serie" Then Alert("El nombre de la cuarta columna debe ser 'Serie'. Favor de corregirlo", TipoMensaje.MsgError) Exit Sub End If If Not dt.Columns(4).ColumnName = "Lote" Then Alert("El nombre de la cuarta columna debe ser 'Lote'. Favor de corregirlo", TipoMensaje.MsgError) Exit Sub End If If Not dt.Columns(5).ColumnName = "FechaCaducidad" Then Alert("El nombre de la cuarta columna debe ser 'Fecha Caducidad'. Favor de corregirlo", TipoMensaje.MsgError) Exit Sub End If If Not dt.Columns(6).ColumnName = "Observaciones" Then Alert("El nombre de la quinta columna debe ser 'Observaciones'. Favor de corregirlo", TipoMensaje.MsgError) Exit Sub End If dt.TableName = "Datos" Dim ProductosNoCargados As New StringBuilder() Dim RowsCargados As Integer = 0 Dim RowsNoCargados As Integer = 0 Dim NoPSConSerie As Integer = 0 Try Dim DtPS As DataTable = GlobalDTPS(UsuarioActual.CveEmpresa) For Each RowExcel As DataRow In dt.Rows If RowExcel("Codigo").ToString() <> "" Then Dim RowPS = DtPS.FiltroPrimero(String.Format("Codigo='{0}'", RowExcel("Codigo").ToString())) Dim CveProducto As Integer = RowPS("CvePS").ToString().ToEntero() Dim CveUnidadMedida As Integer = RowPS("CveUnidadMedida").ToString().ToEntero() Dim Cantidad As Double = RowExcel("Cantidad").ToString().ToDecimal() Dim Serie As String = RowExcel("Serie").ToString() Dim Lote As String = RowExcel("Lote").ToString() Dim FechaCaducidad As Date = If(RowExcel("FechaCaducidad").ToString = "", MinFecha, RowExcel("FechaCaducidad").ToString.ToDate) Dim Observaciones As String = RowExcel("Observaciones").ToString() If CveProducto > 0 Then Dim Valido As Boolean = True If RowPS("AplicaSerie").ToString() = "True" And (String.IsNullOrEmpty(Serie.Trim()) OrElse Serie = "-1") Then Valido = False Alert($"El producto '{RowPS("PS")}' requiere 'Serie'", TipoMensaje.MsgAdvertencia) ProductosNoCargados.AppendFormat("{0},", RowPS("PS").ToString()) End If If RowPS("AplicaSerie").ToString() = "True" AndAlso Not String.IsNullOrEmpty(Serie.Trim()) Then NoPSConSerie = NoPSConSerie + 1 End If If Valido AndAlso (Cantidad > 0 AndAlso RowPS("VentaMinima").ToString.ToDecimal > 0) Then If Cantidad Mod RowPS("VentaMinima").ToString.ToDecimal <> 0 Then Valido = False ProductosNoCargados.AppendFormat("{0},", RowPS("PS").ToString()) End If End If If Valido Then Valido = ValidaExistencia(Cantidad, CveProducto, CveUnidadMedida, -1, If(Not String.IsNullOrEmpty(Serie), Serie, "-1"), If(Not String.IsNullOrEmpty(Lote), Lote, "-1"), FechaCaducidad) End If If Valido Then AgregarPS(Cantidad, CveProducto, CveUnidadMedida, Observaciones, CveSeccionAlmacen:=DdlSeccionAlmacen.SelectedValue.ToEntero, SeccionAlmacen:=DdlSeccionAlmacen.SelectedItem.Text, Serie:=If(Not String.IsNullOrEmpty(Serie), Serie, ""), Lote:=Lote, FechaCaducidad:=FechaCaducidad, Limpia:=False) RowsCargados = RowsCargados + 1 Else RowsNoCargados = RowsNoCargados + 1 ProductosNoCargados.AppendFormat("{0},", RowPS("PS").ToString()) End If Else RowsNoCargados = RowsNoCargados + 1 ProductosNoCargados.AppendFormat("{0},", RowExcel("Producto").ToString()) End If End If Next Catch ex As Exception OnError("Ocurrió un error al cargar los productos." & ProductosNoCargados.ToString(), ex) Finally If NoPSConSerie > 0 Then ThSerie.Visible = True TdSerie.Visible = True TxtnSerie.Visible = True GvDatos.Columns(5).Visible = True End If Dim MensajeFinal As New StringBuilder() If RowsNoCargados = 0 AndAlso RowsCargados > 0 Then MensajeFinal.Append("Los productos se cargaron correctamente.

") End If If RowsCargados > 0 Then MensajeFinal.Append("Se cargaron " & RowsCargados & " productos correctamente.") End If If RowsNoCargados > 0 Then MensajeFinal.Append("No se pudieron cargar " & RowsNoCargados & " productos.
Los siguientes productos no se pudieron cargar: " & ProductosNoCargados.ToString()) End If Alert(MensajeFinal.ToString()) End Try UpDatos.Update() End If End Sub 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) Then DdlUnidadCamion.DataSource = ObjInv.DtResultados End If If ObjInv.GetCamiones(-1, UsuarioActual.CveEmpresa, 2) 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 'Public Sub BtnAgregarCamion_Click(sender As Object, e As EventArgs) Handles BtnAgregarCamion.Click ' 'Dim ObjInventarios As New ClsInventarios ' 'If ObjInventarios.AddCamiones(TxtPlacaNuevo.Text, TxtEspecificacionNuevo.Text, ConfigCartaPorte:=DdlConfigAuto.SelectedValue, Anio:=TxtAnio.Text.ToEntero(), TipoPermisoSCT:=TxtTipoPermisoSCT.Text, NumPermisoSCT:=TxtNumermisoSCT.Text, NombreAseguradora:=TxtNombreAseguradora.Text, NumPolizaSeguro:=TxtNumPolizaSeguro.Text, CveEmpresa:=UsuarioActual.CveEmpresa, CveUsuario:=UsuarioActual.CveUsuario) Then ' ' RegistraScript("$('#DivAgregarNuevoCamion').modal('hide');") ' ' CargarCamiones() ' ' LimpiarAgregarCamion() ' 'End If ' 'ObjInventarios.Dispose() 'End Sub 'Private Sub LimpiarAgregarCamion() ' TxtPlacaNuevo.Text = "" ' TxtEspecificacionNuevo.Text = "" ' TxtAnio.Text = "" ' TxtTipoPermisoSCT.Text = "" ' TxtNumermisoSCT.Text = "" ' TxtNombreAseguradora.Text = "" ' TxtNumPolizaSeguro.Text = "" 'End Sub Private Sub DdlUnidadCamion_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlUnidadCamion.SelectedIndexChanged 'If DdlUnidadCamion.SelectedValue = "-1" Then ' 'divPlacaEspecificacion.Visible = True ' TxtPlaca.Text = "" ' TxtEspecifUnidad.Text = "" 'Else ' 'divPlacaEspecificacion.Visible = False ' TxtPlaca.Text = DtCamiones.FiltroPrimeroValor("Placa", String.Format("CveCamion = {0}", DdlUnidadCamion.SelectedValue)) ' TxtEspecifUnidad.Text = DtCamiones.FiltroPrimeroValor("Especificacion", String.Format("CveCamion = {0}", DdlUnidadCamion.SelectedValue)) 'End If End Sub Protected Sub DdlAlmacenOrigen_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlAlmacenOrigen.SelectedIndexChanged If UsuarioActual.Empresa.Funcionalidad(141) = "1" Then CargaExistenciasSucursal() End If If DdlAlmacenOrigen.SelectedValue.ToEntero > 0 Then DdlSeccionAlmacen.DataSource = GlobalDTSeccionAlmacen(UsuarioActual.CveEmpresa, DdlAlmacenOrigen.SelectedValue.ToEntero) DdlSeccionAlmacen.DataBind() DdlSeccionAlmacen.Items.Insert(0, New ListItem("Seleccione", "-1")) UpDatos.Update() CargaAlmacenDestino() End If End Sub Private Sub CargaAlmacenDestino() Dim DrAlmO As DataRow = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=DdlAlmacenOrigen.SelectedValue.ToEntero).FiltroPrimero("") If DrAlmO("CveTipoAlmacen").ToString.ToEntero = 26 Then 'costeados DdlAlmacenDestino.DataSource = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltraParametros("CveTipoAlmacen IN (26) AND Estatus = 'Activo'") DdlAlmacenDestino.DataBind() DdlAlmacenDestino.Items.Insert(0, New ListItem("Seleccione", "-1")) ElseIf DrAlmO("CveTipoAlmacen").ToString.ToEntero = 22 Then 'Recepcion de Usados DdlAlmacenDestino.DataSource = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltraParametros("CveTipoAlmacen IN (21,22) AND Estatus = 'Activo'") DdlAlmacenDestino.DataBind() DdlAlmacenDestino.Items.Insert(0, New ListItem("Seleccione", "-1")) Else Dim Str As String If ChkTransitorio.Checked Then Str = "" ' String.Format(" AND CveSubProyecto <> {0} ", DrAlmO("CveSubProyecto")) 'RMF. pueden haber almacen que esten dentro de lamisma sucursal, pero que requeiren transitorio Else Str = String.Format(" AND CveSubProyecto = {0} ", DrAlmO("CveSubProyecto")) End If DdlAlmacenDestino.DataSource = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltraParametros(String.Format(" CveTipoAlmacen NOT IN (3,4,9,10,11,24,25,28) AND Estatus = 'Activo' {0} ", Str)) DdlAlmacenDestino.DataBind() DdlAlmacenDestino.Items.Insert(0, New ListItem("Seleccione", "-1")) End If End Sub Protected Sub DdlAlmacenDestino_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlAlmacenDestino.SelectedIndexChanged 'If GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveTipoAlmacen", $"CveAlmacen = {DdlAlmacenDestino.SelectedValue.ToEntero}").ToString.ToEntero = 21 Then ' ChkTransitorio.Checked = False ' ChkTransitorio.Enabled = False 'Else ' ChkTransitorio.Enabled = True 'End If If DdlAlmacenDestino.SelectedValue.ToEntero > 0 Then DdlSeccionAlmacenDestino.DataSource = GlobalDTSeccionAlmacen(UsuarioActual.CveEmpresa, DdlAlmacenDestino.SelectedValue.ToEntero) DdlSeccionAlmacenDestino.DataBind() DdlSeccionAlmacenDestino.Items.Insert(0, New ListItem("Seleccione", "-1")) UpDatos.Update() End If End Sub Protected Sub ChkEmitirTimbrado_CheckedChanged(sender As Object, e As EventArgs) If ChkEmitirTimbrado.Checked Then ChkEmitirCartaPorte.Checked = False ChkEmitirCartaPorte.Visible = True Else ChkEmitirCartaPorte.Visible = False ChkEmitirCartaPorte.Checked = False End If End Sub Protected Sub HplCargaBitacora_Click(sender As Object, e As EventArgs) If IO.File.Exists(ArchivoBitacora) Then DtMovimientos.ReadXml(ArchivoBitacora) CargaGvDatos() Alert("Registro(s) Recuperados", TipoMensaje.ToastInformacion) Else Alert("No hay bitácora para recuperar.", TipoMensaje.ToastInformacion) End If End Sub #Region "remolques" 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("ConfigCartaPorte")) DdlConfigAuto_SelectedIndexChanged(Nothing, Nothing) End If End Using End If UpEmitirTransitorio.Update() End Sub 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 Protected Sub DdlConfigAuto_SelectedIndexChanged(sender As Object, e As EventArgs) ValidaConfiguracionVeiculo() End Sub Private Sub ValidaConfiguracionVeiculo() DvRemolque1.Visible = False DvRemolque2.Visible = False DdlRemolque1.SelectedValueExist(-1) DdlRemolque2.SelectedValueExist(-1) If DdlConfigAuto.SelectedIndex > 0 Then Using ObjGrales As New ClsGenerales If ObjGrales.GetCartaPorteConfigAutoTransportes() Then Dim Remolque As String = ObjGrales.DtResultados.FiltroPrimeroValor("Remolque", $" ClaveConfigAutoTransporte ='{DdlConfigAuto.SelectedValue}'") 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) 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 Private Function validarRemolques() As Boolean Dim Respuesta As Boolean = False If RequiereRemolque And DdlRemolque1.SelectedValue.ToEntero <= 0 Then Alert("La configuración de la carta porte requiere que seleccione un remolque", TipoMensaje.MsgAdvertencia) End If If RequiereRemolque And DdlRemolque1.SelectedValue.ToEntero > 0 Then Respuesta = True End If If Not RequiereRemolque Then Respuesta = True End If Return Respuesta End Function 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 And PesoKg > 0 And 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.
") End If If PesoKg = 0 Then SBMensaje.AppendLine("-Producto sin peso definido.
") End If If SATClaveUnidadMedida.Length = 0 Then SBMensaje.AppendLine("-Producto sin unidad de medida SAT asignada. ") End If SBMensaje.AppendLine($"

Corregir Producto ") Alert(SBMensaje.ToString, TipoMensaje.MsgAdvertencia) End If Return Respuesta End Function #End Region End Class