Option Explicit On Option Strict On Imports System.Data Imports System.IO Imports Extensiones Imports GemBox.Spreadsheet Imports Microsoft.Reporting.WebForms 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 DtCamiones As DataTable Get Return CType(ViewState("DtCamiones"), DataTable) End Get Set(value As DataTable) ViewState("DtCamiones") = 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 If UsuarioActual.CveEmpresa = 119 Then divGastoIndirecto.Visible = False LblGastoIndirecto.Visible = False divResponsable.Visible = False LblResponsable.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("$('#DivTransitorio').show(0);$('#DivGastoIndirecto').show(0);$('#DivDocChofer').show(0);") DivTransitorio2.Visible = True End If If UsuarioActual.CveEmpresa.Contiene(1, 119) Then DivEmitirTimbrado.Visible = True LblEmitirTimbrado.Visible = True ChkEmitirTimbrado.Checked = True Dim HabilitarValidators As Boolean = UsuarioActual.CveEmpresa.Contiene(119) RfvDdlChofer.Enabled = HabilitarValidators RfvDdlUnidadCamion.Enabled = HabilitarValidators RfvTxtPlaca.Enabled = HabilitarValidators RfvTxtEspecifUnidad.Enabled = HabilitarValidators 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("$('#DivTransitorio').show(0);$('#DivGastoIndirecto').show(0);$('#DivDocChofer').show(0);") 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")) 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 Dim ObjAcar As New ClsAcarreos() If ObjAcar.GetChofer(-1, UsuarioActual.CveEmpresa, 1, -1) Then DdlChofer.DataSource = ObjAcar.DtResultados DdlChofer.DataBind() End If ObjAcar.Dispose() DdlChofer.Items.Insert(0, New ListItem("Seleccione", "-1")) TxtFechaEntrega.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 ChkSugiereFechaCaducidad.checked And CveSubP.Contiene(10276) Then Dim ObjInventarios As New ClsInventarios If ObjInventarios.GetExistenciasCaducidad(CveProducto, -1, 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 CveSubP <> 10276 Then tLote = "-1" tCaducidad = MinFecha End If Dim Valido = ValidaExistencia(Cantidad, CveProducto, DdlUnidad.SelectedValue.ToEntero, DdlSeccionAlmacen.SelectedValue.ToEntero, If(TxtnSerie.Visible, TxtnSerie.Text, "-1"), 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 CantidadEnGrid As Decimal = DtMovimientos.SUMD("Cantidad", $"CvePS = {CvePS} AND CveUM = {CveUnidadMedida} {If(Serie <> "-1", $" AND Serie = '{Serie}'", "")}") Dim Inv As New ClsInventarios Dim Existencia As Decimal = Inv.GetExistenciasPS(CvePS, CveUnidadMedida, UsuarioActual.CveEmpresa, DdlAlmacenOrigen.SelectedValue.ToEntero, FechaMovto:=TxtFecha.Text.ToDate.ToString("yyyy/MM/dd 23:59"), PendientePorSurtir:=1) If Existencia > 0 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 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'')") 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 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 DtMovimientos.Rows.Add(registro) RegistraScript("playsonidito('beep-07.wav')") CargaGvDatos() If Limpia Then LimpiaAgregar() Else txtCantidad.Text = (txtCantidad.Text.ToDouble - 1.0).ToString TxtnSerie.Text = "" TxtnSerie.Focus() 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 '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 RegistraScript("$('#DivTransitorio').show(200);") : 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 RegistraScript("$('#DivTransitorio').show(200);") : 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 RegistraScript("$('#DivTransitorio').show(200);") : 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 RegistraScript("$('#DivTransitorio').show(200);", "MuestraDivTransitorio") : 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 RegistraScript("$('#DivTransitorio').show(200);") : 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 Double 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), "") 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)) 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 <> "") Then ExistenciaEspecificada = 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 = 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) 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:=If(ChkTransitorio.Checked, TxtPlaca.Text.Trim, "-1"), FechaEntrega:=If(ChkTransitorio.Checked, TxtFechaEntrega.Text.Trim.ToDateTime.ToString("dd/MM/yyyy"), "-1"), EspecifUnidad:=If(ChkTransitorio.Checked, TxtEspecifUnidad.Text.Trim, "-1"), ResponsableCarga:=If(ChkTransitorio.Checked, TxtResponsableCarga.Text.Trim, "-1"), ResponsableRecibio:=If(ChkTransitorio.Checked, TxtResponsableRecibio.Text.Trim, "-1"), Identificacion:=If(ChkTransitorio.Checked, TxtIdentificacion.Text.Trim, "-1"), Domicilio:=If(ChkTransitorio.Checked, TxtDomicilio.Text.Trim, "-1"), Telefono:=If(ChkTransitorio.Checked, TxtTelefono.Text.Trim, "-1"), Ciudad:=If(ChkTransitorio.Checked, TxtCiudad.Text.Trim, "-1"), Licencia:=If(ChkTransitorio.Checked, TxtLicencia.Text.Trim, "-1"), 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 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(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 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 'DdlClasificacion.SelectedValue = "-1" 'DdlClasificacion_SelectedIndexChanged(DdlClasificacion, EventArgs.Empty) If ChkEmitirTimbrado.Checked AndAlso ChkTransitorio.Checked Then CveMovimientoTimbrado = CveMovimientoSalida : Timbrar() 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 = "" TxtPlaca.Text = "" TxtEspecifUnidad.Text = "" TxtResponsableCarga.Text = "" TxtResponsableRecibio.Text = "" TxtIdentificacion.Text = "" TxtDomicilio.Text = "" TxtTelefono.Text = "" TxtCiudad.Text = "" TxtLicencia.Text = "" DivMov.Visible = False CargadoDeMov = False UPDatosAlmacen.Update() UpMov.Update() DtMovimientos.Rows.Clear() 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")) ThSerie.Visible = CBool(drP("AplicaSerie")) TdSerie.Visible = CBool(drP("AplicaSerie")) TxtnSerie.Visible = CBool(drP("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 <> "" GvDatos.Columns(6).Visible = DtTemp.MAX("Lote").ToString <> "" 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 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) 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 = "" RegistraScript("$('#DivTransitorio').show(200);$('#DivGastoIndirecto').show(100);$('#DivDocChofer').show(100);") DivTransitorio2.Visible = True ChkEmitirTimbrado.Checked = LblEmitirTimbrado.Visible Else RegistraScript("$('#DivTransitorio').hide(500);$('#DivGastoIndirecto').hide(500);$('#DivDocChofer').hide(500);") DivTransitorio2.Visible = True End If 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(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.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 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 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, GvRow.DataKey("CveAF").ToEntero, -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 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) Then ErrorMovInv = True TextoError = "Ocurrió un error al cancelar el traspaso" End If 'If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ImporteDecimal, TxtObservaciones.Text, 68, TxtObservaciones.Text, Fecha, IdCtaContable, -1, ' CveMovimientoAlmacen:=CveMovimientoSalida, ImporteMX:=ImporteDecimal) Then ' ErrorMovInv = True ' TextoError = "Ocurrió un erro al cancelar el traspaso" '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) DivCodigoSeriePSRecepcion.Visible = False GvDatosRecepcion.DataBind() UpDatosRecepcion.Update() UPDatosAlmacen.Update() Else ObjInventario.RollBack() Alert(TextoError, TipoMensaje.MsgError) End If ObjConta.Dispose() ObjInventario.Dispose() CargaRecepcion() 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 tFechaCaducidad As Date = gvr.DataKey("FechaCaducidad").ToDate If CveSubProyectoRecibe = 10276 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:=gvr.DataKey("Serie").ToString, 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:=DdlAlmacenRecepcion.SelectedValue.ToEntero).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, 2, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:=TxtObservaciones.Text.Trim, 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() Else ObjInventario.RollBack() Alert(TextoError, TipoMensaje.MsgError) End If ObjInventario.Dispose() ObjConta.Dispose() CargaRecepcion() Else Alert("No hay movimientos para el traspaso", TipoMensaje.MsgAdvertencia) If ChkTransitorio.Checked Then RegistraScript("$('#DivTransitorio').show(200);") : 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 CreaObjetosVenta() ObjFactura = New Modelos.Factura ObjFactura.Version = "3.3" ObjFactura.CveUsuario = UsuarioActual.CveUsuario ObjFactura.CveEmpresa = UsuarioActual.CveEmpresa ObjFactura.TipoCambio = 0 ObjFactura.ConvertirPesos = False ObjFactura.TipoCambio = 0 ObjFactura.CveMoneda = 1 ObjFactura.Moneda = GlobalDTMonedas.FiltroPrimeroValor("Moneda", $"CveMoneda = {ObjFactura.CveMoneda} ") ObjFactura.MonedaSAT = GlobalDTMonedas.FiltroPrimeroValor("AbreviaturaSAT", "CveMoneda = 1") ObjFactura.MonedaAbreviatura = GlobalDTMonedas.FiltroPrimeroValor("Abreviatura", $"CveMoneda = {ObjFactura.CveMoneda} ") ObjFactura.TipoDocto = "Tra" ObjFactura.RefDocto = "" ObjFactura.Folio = Folio.ToEntero ObjFactura.Serie = "Tra" ObjFactura.CveMesa = -1 ObjFactura.Fecha = Now ObjFactura.CvePrePoliza = -1 ObjFactura.FechaPago = Now ObjFactura.MotivoDescuento = "" ObjFactura.Observaciones = "" ObjFactura.FechaEjecucion = Now ObjFactura.UsuarioCreo = UsuarioActual.Usuario ObjFactura.CveCondicionEntrega = -1 ObjFactura.CondicionEntrega = "" ObjFactura.NumeroCuenta = "" ObjFactura.CondicionesPago = 0 ObjFactura.FormaPago = 0 ObjFactura.PedidoContrato = "" ObjFactura.OrdenCompra = "" ObjFactura.NumeroContrato = "" ObjFactura.NumeroDescripcionContrato = "" ObjFactura.DescripcionContrato = "" ObjFactura.CveCorte = -1 ObjFactura.TipoDocumento = "Traspaso" ObjFactura.Alfa1 = "" ObjFactura.Alfa2 = "" ObjFactura.Alfa3 = "" ObjFactura.Descuento = 0 ObjFactura.Amortizacion = 0 ObjFactura.CveContrato = 0 ObjFactura.CveVendedor = 0 ObjFactura.FechaVencimiento = Now ObjFactura.TipoEstatus = 0 ObjFactura.Det_OrdenCompra = "" ObjFactura.Inv_CveEstatusEntrega = 0 ObjFactura.FormaPago33 = "" ObjFactura.MetodoPago33 = "" ObjFactura.UsoCFDI = "" ObjFactura.CveClienteSucursal = 0 Dim CveSubProyecto As Integer = -1 If GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltraParametros($"CveAlmacen = {DdlAlmacenOrigen.SelectedValue}").Rows.Count > 0 Then CveSubProyecto = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltraParametros($"CveAlmacen = {DdlAlmacenOrigen.SelectedValue}").Rows(0)("CveSubProyecto").ToString.ToEntero End If ObjFactura.CveSubProyecto = CveSubProyecto ObjFactura.CveSubProyectoCobranza = CveSubProyecto ObjFactura.CveSubProyectoEjecucion = CveSubProyecto ObjFactura.SubTotal = 0 ObjFactura.Descuento = 0 ObjFactura.Amortizacion = 0 ObjFactura.IVA = 0 ObjFactura.RetIVA = 0 ObjFactura.RetISR = 0 ObjFactura.IEPS = 0 ObjFactura.Total = 0 'DETALLES ObjFactura.DtDetalle = DtMovimientos 'SUBPROYECTO ObjFactura.SetSubProyectoMatriz(Me) ObjFactura.SetSubProyecto(Me) ObjFactura.Inv_CveMovimiento = CveMovimientoTimbrado ObjFactura.Timbre = PreParaTimbre(ObjFactura) End Sub Private Function PreParaTimbre(Obj As Modelos.Factura) As CFDITimbre Dim Timbre As New CFDITimbre Timbre.Comprobante.TipoComprobante = "T" Timbre.Comprobante.Folio = Obj.Folio.ToString Timbre.Comprobante.Serie = Obj.Serie Timbre.Comprobante.Fecha = Obj.Fecha Timbre.Comprobante.FormadePago = Obj.FormaPagoSAT33 Timbre.Comprobante.CondicionesdePago = Obj.FormaPago33 Timbre.Comprobante.MetodoPago = Obj.ClaveMetodoPagoSAT Timbre.Comprobante.Subtotal = Obj.SubTotal Timbre.Comprobante.Descuentos = Obj.Descuento Timbre.Comprobante.Moneda = Obj.MonedaSAT Timbre.Comprobante.TipoCambio = If(Obj.CveMoneda = 1, "1", Obj.TipoCambio.ToString) Timbre.Comprobante.Total = Obj.Total Timbre.Comprobante.LugarExpedicion = Obj.SubProyecto.CP Timbre.Comprobante.Confirmacion = "" Timbre.Receptor.RFC = "XAXX010101000" Timbre.Receptor.Nombre = UsuarioActual.Empresa.Empresa Timbre.Receptor.UsoCFDI = "P01" Dim totSubTotal As Decimal = Obj.SubTotal Dim totIVA As Decimal = Obj.IVA Dim totRetIVA As Decimal = Obj.RetIVA Dim totRetISR As Decimal = Obj.RetISR Dim i As Integer = 1 'DETALLES Dim tPS As String = "" For Each drr As DataRow In Obj.DtDetalle.Rows If drr("PS").ToString.Length = 1 Then tPS = drr("Obs").ToString Else If drr("PS").ToString.Length = 0 Then tPS = "" Else tPS = String.Format("{0} {1}", drr("PS"), drr("Obs")) End If End If 'CONDICIONANTE, ESPECIAL If UsuarioActual.CveEmpresa = 15 Then drr("UM") = "" 'LES COMENTAN QUE NO DEBE IR LA ETIQUETA DE LA UNIDAD EN EL PRODUCTO Dim concepto As New CFDIConceptos With {.Cantidad = drr("Cantidad").ToString.ToDecimal, .Descripcion = tPS, .ValorUnitario = drr("PU").ToString.ToDecimal, .Importe = drr("TotalImporte").ToString.ToDecimal, .Descuento = drr("Descuento").ToString.ToDecimal, .Unidad = drr("UM").ToString, .ClaveUnidad = drr("SATClaveUM").ToString, .ClaveProdServ = drr("SATClaveProdServ").ToString, .Noidentificacion = drr("Noidentificacion").ToString, .CuentaPredial = drr("CuentaPredial").ToString} 'VERIFICA SUMA SUBTOTALES If i = Obj.DtDetalle.Rows.Count AndAlso totSubTotal <> concepto.Importe Then 'PROCESO DE AJUSTA DE DECIMALES concepto.Importe = totSubTotal End If totSubTotal = totSubTotal - concepto.Importe 'SIEMPRE ESTAMOS AGREGANDO EL IVA 'concepto.Impuestos.Add(New CFDIConceptosImpuestos With {.TrasladooRetencion = "T", .Base = concepto.Importe - concepto.Descuento, .TasaOCuota = drr("PorcentajeIVA").ToString.ToDecimal, .Impuesto = "002", .Importe = drr("ImporteIVA").ToString.ToDecimal}) Timbre.Conceptos.Add(concepto) i += 1 Next Return Timbre End Function Private Sub PrepararTimbrado(ByRef FM As Modelos.FemsaFactura, ByRef TmpDT7Eleven As DataTable, ByRef TmpDTComplementosTimbrado As DataTable) FM.AplicaFEMSA = False FM.FEMSA_NumSociedad = "" FM.FEMSA_NumProveedor = "" FM.FEMSA_Mail = "" FM.FEMSA_Version = 0 FM.FEMSA_NumPedido = 0 FM.FEMSA_NumEntrada = "" FM.FEMSA_NumRemision = "" FM.FEMSA_NumSocio = "" FM.FEMSA_CentroCosto = "" FM.FEMSA_IPeriodoLiquidacion = "" FM.FEMSA_FPeriodoLiquidacion = "" FM.FEMSA_CodRetencion1 = "" FM.FEMSA_CodRetencion2 = "" TmpDT7Eleven.Columns.Add("sevenElevenNumProveedor") TmpDT7Eleven.Columns.Add("sevenElevenFolio") TmpDT7Eleven.Columns.Add("sevenElevenTienda") TmpDT7Eleven.Columns.Add("sevenElevenFecha") Dim Row As DataRow = TmpDT7Eleven.NewRow Row("sevenElevenNumProveedor") = "" Row("sevenElevenFolio") = "" Row("sevenElevenTienda") = "" Row("sevenElevenFecha") = "" TmpDT7Eleven.Rows.Add(Row) TmpDTComplementosTimbrado.Columns.Add("CveComplemento") TmpDTComplementosTimbrado.Columns.Add("IdContabilidad") TmpDTComplementosTimbrado.Columns.Add("TipoProceso") TmpDTComplementosTimbrado.Columns.Add("TipoAmbito") TmpDTComplementosTimbrado.Columns.Add("Entidad") Dim Row2 As DataRow = TmpDTComplementosTimbrado.NewRow Row2("CveComplemento") = "" Row2("IdContabilidad") = "" Row2("TipoProceso") = "" Row2("TipoAmbito") = "" Row2("Entidad") = "" TmpDTComplementosTimbrado.Rows.Add(Row2) 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 MensajeAlert.AppendFormat("", Encripta(String.Format("OP=CARPO&CVEMOV={0}", CveMovimientoTimbrado))) 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.patch 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 Private Function ReadExcelFile(ByVal flatFilePath As String, ByVal firstRowHasHeaders As Boolean) As DataTable SpreadsheetInfo.SetLicense(ModExtensiones.SerialGemBoxSpreadsheet) Dim excelFile As ExcelFile = excelFile.Load(flatFilePath) Dim unnamed As Integer = 0 Dim cols As Integer Dim columns As String() Dim curRow As Integer = 0 Dim curCol As Integer = 0 Dim dataTable As DataTable = New DataTable() Dim worksheet As ExcelWorksheet = excelFile.Worksheets(0) For cols = 0 To worksheet.Rows(0).AllocatedCells.Count - 1 If firstRowHasHeaders Then If worksheet.Rows(0).Cells(cols).Value IsNot Nothing Then dataTable.Columns.Add(worksheet.Rows(0).Cells(cols).Value.ToString()) Else dataTable.Columns.Add("Unnamed Column " & (System.Threading.Interlocked.Increment(unnamed))) End If curRow = 1 Else dataTable.Columns.Add("Column " & (cols + 1)) End If Next While curRow < worksheet.Rows.Count columns = New String(cols - 1) {} For curCol = 0 To cols - 1 If worksheet.Rows(curRow).Cells(curCol).Value Is Nothing Then columns(curCol) = "" Else columns(curCol) = worksheet.Rows(curRow).Cells(curCol).Value.ToString() End If Next dataTable.Rows.Add(columns) curRow += 1 End While Return dataTable End Function Public Sub CargarCamiones() DdlUnidadCamion.Items.Clear() Dim ObjInventarios As New ClsInventarios If ObjInventarios.GetCamiones(-1, UsuarioActual.CveEmpresa) AndAlso ObjInventarios.DtResultados.Rows.Count > 0 Then DdlUnidadCamion.DataSource = ObjInventarios.DtResultados DtCamiones = ObjInventarios.DtResultados End If ObjInventarios.Dispose() DdlUnidadCamion.Items.Insert(0, New ListItem("Otro", "-1")) DdlUnidadCamion.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, UsuarioActual.CveEmpresa) Then RegistraScript("$('#DivAgregarNuevoCamion').modal('hide');") CargarCamiones() TxtPlacaNuevo.Text = "" TxtEspecificacionNuevo.Text = "" End If ObjInventarios.Dispose() 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 End Class