1014 lines
45 KiB
VB.net
1014 lines
45 KiB
VB.net
Option Explicit On
|
|
Option Strict On
|
|
|
|
Imports System.Data
|
|
Imports Extensiones
|
|
Partial Class Inventarios_Apartados
|
|
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 CargadoDeMov As Boolean
|
|
Get
|
|
Return CType(ViewState("CargadoDeMov"), Boolean)
|
|
End Get
|
|
Set(value As Boolean)
|
|
ViewState("CargadoDeMov") = 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 CveCliente As Integer
|
|
Get
|
|
Return CType(ViewState("CveCliente"), Integer)
|
|
End Get
|
|
Set(value As Integer)
|
|
ViewState("CveCliente") = value
|
|
End Set
|
|
End Property
|
|
Private Property CveVendedor As Integer
|
|
Get
|
|
Return CType(ViewState("CveVendedor"), Integer)
|
|
End Get
|
|
Set(value As Integer)
|
|
ViewState("CveVendedor") = value
|
|
End Set
|
|
End Property
|
|
|
|
Private Property IndexSeccionAlmacen As Integer
|
|
Get
|
|
Return CType(ViewState("IndexSeccionAlmacen"), Integer)
|
|
End Get
|
|
Set(value As Integer)
|
|
ViewState("IndexSeccionAlmacen") = value
|
|
End Set
|
|
End Property
|
|
Private Property CantidadTotal As Decimal
|
|
Get
|
|
Return CType(ViewState("CantidadTotal"), Decimal)
|
|
End Get
|
|
Set(value As Decimal)
|
|
ViewState("CantidadTotal") = value
|
|
End Set
|
|
End Property
|
|
Private Property CvePS As Integer
|
|
Get
|
|
Return CType(ViewState("CvePS"), Integer)
|
|
End Get
|
|
Set(value As Integer)
|
|
ViewState("CvePS") = value
|
|
End Set
|
|
End Property
|
|
Private Property TipoSeccionAlmacen As Integer
|
|
Get
|
|
Return CType(ViewState("TipoSeccionAlmacen"), Integer)
|
|
End Get
|
|
Set(value As Integer)
|
|
ViewState("TipoSeccionAlmacen") = value
|
|
End Set
|
|
End Property
|
|
|
|
#End Region
|
|
|
|
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
|
|
If Not IsPostBack Then
|
|
|
|
InicializaValores()
|
|
|
|
End If
|
|
End Sub
|
|
|
|
|
|
#Region " INICIALIZA VALORES "
|
|
Private Sub InicializaValores()
|
|
TxtFecha.Text = Now.ToShortDateString
|
|
TxtFechaDesapartado.Text = Now.ToShortDateString
|
|
|
|
CargaCombos()
|
|
CreaDT()
|
|
|
|
If UsuarioActual.Empresa.Funcionalidad(132) = "1" Then
|
|
DivCodigoSeriePS.Visible = True
|
|
Else
|
|
DivCodigoSeriePS.Visible = False
|
|
End If
|
|
|
|
CveCliente = -1
|
|
CveVendedor = -1
|
|
|
|
CantidadTotal = 0
|
|
IndexSeccionAlmacen = 0
|
|
CvePS = 0
|
|
|
|
TipoSeccionAlmacen = 0
|
|
|
|
End Sub
|
|
Private Sub CargaCombos()
|
|
|
|
DdlSubProyecto.DataSource = GlobalDTSubProyectos(-1, CveEmpresa:=UsuarioActual.CveEmpresa)
|
|
DdlSubProyecto.DataBind()
|
|
DdlSubProyecto.Items.Insert(0, New ListItem("Seleccione ", "-1"))
|
|
|
|
DdlSubProyectoDesapartado.DataSource = GlobalDTSubProyectos(-1, CveEmpresa:=UsuarioActual.CveEmpresa)
|
|
DdlSubProyectoDesapartado.DataBind()
|
|
DdlSubProyectoDesapartado.Items.Insert(0, New ListItem(" Todas ", "-1"))
|
|
|
|
DdlClasificacion.DataSource = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltraParametros(" Codigo = '' OR Codigo IS NULL ", Orderby:="Clasificacion")
|
|
DdlClasificacion.DataBind()
|
|
|
|
DdlUnidad.DataSource = GlobalDTUnidadesMedida(UsuarioActual.CveEmpresa)
|
|
DdlUnidad.DataBind()
|
|
|
|
CargaAlmacenOrigen()
|
|
|
|
CargaAlmacenDestino()
|
|
|
|
CargaPS()
|
|
|
|
Dim EsWS = If(UsuarioActual.Empresa.Funcionalidad(105) = "1" Or UsuarioActual.Empresa.Funcionalidad(141) = "1", True, False)
|
|
If EsWS Then
|
|
DdlClientes.setEsWebService(True)
|
|
DdlClienteDesapartado.setEsWebService(True)
|
|
Else
|
|
DdlClientes.setEsWebService(False)
|
|
DdlClientes.DataSource = GlobalDTCliente(UsuarioActual.CveEmpresa, -1)
|
|
DdlClientes.DataBind()
|
|
DdlClientes.ddl.Items.Insert(0, New ListItem("Todos", "-1"))
|
|
DdlClienteDesapartado.setEsWebService(False)
|
|
DdlClienteDesapartado.DataSource = GlobalDTCliente(UsuarioActual.CveEmpresa, -1)
|
|
DdlClienteDesapartado.DataBind()
|
|
DdlClienteDesapartado.ddl.Items.Insert(0, New ListItem("Todos", "-1"))
|
|
End If
|
|
|
|
|
|
'DdlCliente.DataSource = GlobalDTCliente(UsuarioActual.CveEmpresa, -1)
|
|
'DdlCliente.DataBind()
|
|
'DdlCliente.Items.Insert(0, New ListItem(" Seleccione ", "-1"))
|
|
|
|
'DdlClienteDesapartado.DataSource = GlobalDTCliente(UsuarioActual.CveEmpresa, -1)
|
|
'DdlClienteDesapartado.DataBind()
|
|
'DdlClienteDesapartado.Items.Insert(0, New ListItem(" Todos ", "-1"))
|
|
|
|
DdlVendedor.DataSource = GlobalDTVendedores(UsuarioActual.CveEmpresa)
|
|
DdlVendedor.DataBind()
|
|
DdlVendedor.Items.Insert(0, New ListItem(" Seleccione ", "-1"))
|
|
|
|
DdlVendedorDesapartado.DataSource = GlobalDTVendedores(UsuarioActual.CveEmpresa, Estatus:=-1)
|
|
DdlVendedorDesapartado.DataBind()
|
|
DdlVendedorDesapartado.Items.Insert(0, New ListItem(" Todos ", "-1"))
|
|
|
|
End Sub
|
|
Private Sub CargaPS()
|
|
DdlProducto2.setEsWebService(UsuarioActual.Empresa.Funcionalidad(105) = "1")
|
|
|
|
If UsuarioActual.CveEmpresa = 66 Then
|
|
DdlProducto2.ddlWS.Attributes.Add("data-pagina", "Inventarios")
|
|
DdlProducto2.ddlWS.Attributes.Add("data-cveclasificacion", DdlClasificacion.SelectedValue.ToString)
|
|
End If
|
|
If Not DdlProducto2.UsaWebService AndAlso CType(DdlProducto2.DataSource, DataTable) Is Nothing Then
|
|
DdlProducto2.DataSource = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa)
|
|
DdlProducto2.DataBind()
|
|
End If
|
|
|
|
End Sub
|
|
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("Cantidad", Type.GetType("System.Double"))
|
|
dt.Columns.Add("CveUM", Type.GetType("System.Int32"))
|
|
dt.Columns.Add("UnidadMedida")
|
|
dt.Columns.Add("CvePS", Type.GetType("System.Int32"))
|
|
dt.Columns.Add("CveAF", Type.GetType("System.Int32"))
|
|
dt.Columns.Add("PS")
|
|
dt.Columns.Add("CveSeccionAlmacen", Type.GetType("System.Int32"))
|
|
dt.Columns.Add("SeccionAlmacen")
|
|
dt.Columns.Add("Serie")
|
|
dt.Columns.Add("Lote")
|
|
dt.Columns.Add("FechaCaducidad", Type.GetType("System.DateTime"))
|
|
|
|
dt.Columns.Add("CveClasificacion", Type.GetType("System.Int32"))
|
|
dt.Columns.Add("EstatusExistencia")
|
|
|
|
DtMovimientos = dt
|
|
|
|
CargaGvDatos()
|
|
End Sub
|
|
#End Region
|
|
|
|
#Region " APARTADOS "
|
|
|
|
#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 = "Seleccione"
|
|
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
|
|
|
|
If DdlProducto2.SelectedValue.ToEntero > 0 Then
|
|
Dim drP As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=DdlProducto2.SelectedValue.ToEntero).FiltroPrimero("")
|
|
If drP IsNot Nothing Then
|
|
If CBool(drP("AplicaSerie")) Then
|
|
ThSerie.Visible = True
|
|
TdSerie.Visible = True
|
|
TxtnSerie.Visible = True
|
|
GvDatos.Columns(4).Visible = True
|
|
End If
|
|
If CBool(drP("AplicaLote")) Then
|
|
ThLote.Visible = True
|
|
TdLote.Visible = True
|
|
GvDatos.Columns(5).Visible = True
|
|
End If
|
|
If CBool(drP("AplicaCaducidad")) Then
|
|
ThCaducidad.Visible = True
|
|
TdCaducidad.Visible = True
|
|
GvDatos.Columns(6).Visible = True
|
|
End If
|
|
If CBool(drP("AplicaSeccion")) Then
|
|
ThSeccion.Visible = True
|
|
TdSeccionAlmacen.Visible = True
|
|
CargaSeccionesAlmacen(DdlSeccionAlmacen, DdlAlmacenOrigen.SelectedValue.ToEntero, DdlProducto2.SelectedValue.ToEntero, UsuarioActual.CveEmpresa)
|
|
'DdlSeccionAlmacen.DataSource = GlobalDTInvPSSeccionesAlmacen(UsuarioActual.CveEmpresa, DdlAlmacenOrigen.SelectedValue.ToEntero, DdlProducto2.SelectedValue.ToEntero)
|
|
'DdlSeccionAlmacen.DataBind()
|
|
GvDatos.Columns(7).Visible = True
|
|
End If
|
|
|
|
End If
|
|
|
|
End If
|
|
|
|
|
|
DdlUnidad.Items.Clear()
|
|
DdlUnidad.DataSource = GlobalDTProductosServiciosEquivalencias(DdlProducto2.SelectedValue.ToEntero, -1, UsuarioActual.CveEmpresa)
|
|
DdlUnidad.DataBind()
|
|
UpDatos.Update()
|
|
|
|
End Sub
|
|
|
|
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)
|
|
Else
|
|
pDdlProducto.DataSource = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CveClasificacion:=pDdlClasificacion.SelectedValue.ToEntero)
|
|
End If
|
|
|
|
'If pDdlClasificacion.SelectedValue = "-1" Then
|
|
' pDdlProducto.DataSource = GlobalDTProductosServicios(UsuarioActual.CveEmpresa)
|
|
'Else
|
|
' If isWhitFamily() Then
|
|
' pDdlProducto.DataSource = GlobalDTProductosServicios(UsuarioActual.CveEmpresa).FiltraParametros(String.Format("CveSubFamilia={0}", DdlClasificacion.SelectedValue))
|
|
' Else
|
|
' pDdlProducto.DataSource = GlobalDTProductosServicios(UsuarioActual.CveEmpresa).FiltraParametros(String.Format("CveClasificacion={0}", DdlClasificacion.SelectedValue))
|
|
' End If
|
|
'End If
|
|
pDdlProducto.DataBind()
|
|
pDdlProducto.Items.Insert(0, New ListItem("----", "-1"))
|
|
|
|
End Sub
|
|
#End Region
|
|
|
|
#Region " DDL SUCURSAL "
|
|
Protected Sub DdlSubProyecto_SelectedIndexChanged(sender As Object, e As EventArgs)
|
|
CargaAlmacenes()
|
|
End Sub
|
|
Private Sub CargaAlmacenes()
|
|
CargaAlmacenOrigen(DdlSubProyecto.SelectedValue.ToEntero)
|
|
CargaAlmacenDestino(DdlSubProyecto.SelectedValue.ToEntero)
|
|
End Sub
|
|
Private Sub CargaAlmacenOrigen(Optional CveSubProyecto As Integer = -1)
|
|
DdlAlmacenOrigen.Items.Clear()
|
|
If CveSubProyecto > 0 Then
|
|
DdlAlmacenOrigen.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1).FiltraParametros($"CveTipoAlmacen NOT IN (3,9) {If(CveSubProyecto > 0, $" AND CveSubProyecto = {CveSubProyecto}", "")}")
|
|
End If
|
|
DdlAlmacenOrigen.Items.Insert(0, New ListItem(" Seleccione ", "-1"))
|
|
DdlAlmacenOrigen.SelectedValue = "-1"
|
|
DdlAlmacenOrigen.DataBind()
|
|
End Sub
|
|
Private Sub CargaAlmacenDestino(Optional CveSubProyecto As Integer = -1)
|
|
DivAdvertencia.Visible = False
|
|
BtnGuardar.Enabled = True
|
|
DdlAlmacenDestino.Items.Clear()
|
|
Dim DtDestinos As New DataTable
|
|
If CveSubProyecto > 0 Then
|
|
|
|
DtDestinos = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltraParametros($"CveTipoAlmacen IN (9) AND Estatus = 'Activo' {If(CveSubProyecto > 0, $" And CveSubProyecto = {CveSubProyecto}", "")}")
|
|
DdlAlmacenDestino.DataSource = DtDestinos
|
|
If DtDestinos.Rows.Count = 0 Then
|
|
DivAdvertencia.Visible = True
|
|
BtnGuardar.Enabled = False
|
|
End If
|
|
End If
|
|
|
|
DdlAlmacenDestino.Items.Insert(0, New ListItem("Seleccione", "-1"))
|
|
DdlAlmacenDestino.DataBind()
|
|
If DtDestinos.Rows.Count > 0 Then
|
|
DdlAlmacenDestino.SelectedIndex = 1
|
|
Else
|
|
DdlAlmacenDestino.SelectedValue = "-1"
|
|
End If
|
|
End Sub
|
|
#End Region
|
|
|
|
#Region " DDL CLIENTE "
|
|
Protected Sub DdlCliente_SelectedIndexChanged(sender As Object, e As EventArgs)
|
|
SeleccionaVendedor()
|
|
End Sub
|
|
Private Sub SeleccionaVendedor()
|
|
DdlVendedor.SelectedValue = "-1"
|
|
DdlVendedor.SelectedValueExist(GlobalDTCliente(UsuarioActual.CveEmpresa, -1).FiltroPrimeroValor("CveVendedor", $"CveCliente = {DdlClientes.SelectedValue}"))
|
|
End Sub
|
|
#End Region
|
|
|
|
#Region " AGREGAR "
|
|
|
|
#Region " AGREGAR CON CODIGO DE BARRAS "
|
|
|
|
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 ""<b>{TxtCodigoPS.Text}</b>"". ", 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, TxtSeriePS.Text.Trim)
|
|
|
|
If Valido Then
|
|
AgregarPS(1, CvePSSerie, CveUMSerie, Serie:=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
|
|
|
|
Protected Sub btnAgregar_Click(sender As Object, e As EventArgs) Handles LbAgregar.Click
|
|
BtnAgregarPS(txtCantidad.Text.ToDouble)
|
|
End Sub
|
|
Protected Sub BtnSerieAddNew_Click(sender As Object, e As EventArgs)
|
|
BtnAgregarPS(1)
|
|
End Sub
|
|
Private Sub BtnAgregarPS(Cantidad As Double)
|
|
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 Valido = ValidaExistencia(Cantidad, CveProducto, DdlUnidad.SelectedValue.ToEntero, CveSeccionAlmacen:=DdlSeccionAlmacen.SelectedValue.ToEntero, Serie:=If(TxtnSerie.Visible, TxtnSerie.Text, "-1"))
|
|
|
|
If Valido Then
|
|
Dim StrSeccion As String = If(DdlSeccionAlmacen.SelectedValue.ToEntero > 0, DdlSeccionAlmacen.SelectedItem.Text, "")
|
|
AgregarPS(Cantidad, CveProducto, DdlUnidad.SelectedValue.ToEntero, CveSeccionAlmacen:=DdlSeccionAlmacen.SelectedValue.ToEntero, SeccionAlmacen:=StrSeccion, Serie:=If(TxtnSerie.Text <> "", TxtnSerie.Text, ""), Limpia:=FuncionalidadSinSerie)
|
|
End If
|
|
|
|
End If
|
|
End Sub
|
|
Private Function ValidaExistencia(Cantidad As Double, CvePS As Integer, CveUnidadMedida As Integer, Optional Serie As String = "-1",
|
|
Optional Lote As String = "-1", Optional FechaCaducidad As Date = MinFecha, Optional CveSeccionAlmacen As Integer = -1) As Boolean
|
|
Dim Retorno = True
|
|
|
|
Dim Inv As New ClsInventarios
|
|
Dim Existencia As Double = 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)
|
|
Inv.Dispose()
|
|
|
|
If Existencia - Cantidad - DtMovimientos.SUM("Cantidad", $"CvePS = {CvePS} AND CveUM = {CveUnidadMedida} {If(Serie <> "-1", $" AND Serie = '{Serie}'", "")}") < 0 Then
|
|
If Existencia < 0 Then
|
|
Alert("No hay existencia del producto", TipoMensaje.MsgAdvertencia)
|
|
RegistraScript("playsonidito(''142608__autistic-lucario__error.wav'')")
|
|
Else
|
|
Alert(String.Format("Solo hay en existencia: {0}", Existencia), TipoMensaje.MsgAdvertencia)
|
|
RegistraScript("playsonidito(''142608__autistic-lucario__error.wav'')")
|
|
End If
|
|
Retorno = False
|
|
End If
|
|
|
|
Return Retorno
|
|
End Function
|
|
Private Sub AgregarPS(Cantidad As Double, CvePS As Integer, CveUnidadMedida As Integer,
|
|
Optional CveSeccionAlmacen As Integer = -1, Optional Serie As String = "", Optional Lote As String = "", Optional FechaCaducidad As Date = MinFecha, Optional Limpia As Boolean = True, Optional SeccionAlmacen As String = "")
|
|
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("UnidadMedida") = DrUM("UnidadMedida")
|
|
registro.Item("CvePS") = CvePS
|
|
registro.Item("PS") = DrPS("PSCodigo")
|
|
registro.Item("Serie") = Serie
|
|
registro.Item("Lote") = Lote
|
|
registro.Item("FechaCaducidad") = FechaCaducidad
|
|
registro.Item("CveClasificacion") = CveClasificacion
|
|
registro.Item("CveAF") = -1
|
|
registro.Item("EstatusExistencia") = "1"
|
|
registro.Item("CveSeccionAlmacen") = CveSeccionAlmacen
|
|
registro.Item("SeccionAlmacen") = If(CveSeccionAlmacen > 0, SeccionAlmacen, "")
|
|
|
|
DtMovimientos.Rows.Add(registro)
|
|
RegistraScript("playsonidito('beep-07.wav')")
|
|
CargaGvDatos(Limpia)
|
|
|
|
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 = ""
|
|
TxtnSerie.Text = ""
|
|
TxtnSerie.Visible = False
|
|
txtCantidad.Focus()
|
|
If TxtCodigoPS.Visible Then
|
|
TxtCodigoPS.Focus()
|
|
End If
|
|
End Sub
|
|
#End Region
|
|
|
|
#Region " GV DATOS "
|
|
Private Sub CargaGvDatos(Optional EscondeSerie As Boolean = True)
|
|
'If EscondeSerie Then
|
|
' TxtnSerie.Visible = False
|
|
' ThSerie.Visible = False
|
|
' TdSerie.Visible = False
|
|
' GvDatos.Columns(4).Visible = False
|
|
'End If
|
|
|
|
GvDatos.Columns(4).Visible = DtMovimientos.MAX("Serie").ToString <> ""
|
|
GvDatos.Columns(5).Visible = DtMovimientos.MAX("Lote").ToString <> ""
|
|
GvDatos.Columns(6).Visible = DtMovimientos.MAX("FechaCaducidad").ToString.ToDate > MinFecha
|
|
GvDatos.Columns(7).Visible = DtMovimientos.MAX("CveSeccionAlmacen").ToString.ToEntero > 0
|
|
|
|
|
|
GvDatos.DataSource = DtMovimientos
|
|
GvDatos.DataBind()
|
|
UpDatos.Update()
|
|
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 DtSeccionAlmacen.FiltraParametros($"IndexSeccionAlmacen = {e.Row.RowIndex}").SUMD("CantidadSeccionAlmacen") > 0 Then
|
|
' e.Row.FCLinkButton("lnkRemove").Visible = False
|
|
' e.Row.FCLinkButton("lnkRemove").ToolTip = "Cuenta con sección almacen"
|
|
'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
|
|
|
|
#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 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)
|
|
Exit Sub
|
|
End If
|
|
Next
|
|
|
|
Dim TotalCantidad As Double = DtMovimientos.SUMD("Cantidad")
|
|
|
|
Dim ObjInventario As New ClsInventarios
|
|
|
|
'VALIDA LA EXISTENCIA DEL ALMACEN DE ORIGEN
|
|
Dim ErrorExistencia = False
|
|
Dim TextoExistencia As StringBuilder = New StringBuilder
|
|
Dim Existencia As Double
|
|
TextoExistencia.Append("Los siguiente productos se ajustaron por falta de exitencia:<br/>")
|
|
If Not CargadoDeMov Then
|
|
|
|
For Each dr As DataRow In DtMovimientos.Rows
|
|
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:=dr("CveSeccionAlmacen").ToString.ToEntero, Serie:=If(dr("Serie").ToString = "", "-1", dr("Serie").ToString))
|
|
Existencia -= DtMovimientos.SUM("Cantidad", $"CvePS = {dr("CvePS").ToString.ToEntero} AND CveUM = {dr("CveUM").ToString.ToEntero} {If(dr("Serie").ToString <> "-1", $" AND Serie = '{dr("Serie").ToString}'", "")}")
|
|
'DtMovimientos.SUM("Cantidad", String.Format("CvePS = {0}", dr("CvePS").ToString.ToEntero))
|
|
|
|
If Existencia < 0 Then
|
|
ErrorExistencia = True
|
|
dr("EstatusExistencia") = "-1"
|
|
dr("Cantidad") = Existencia
|
|
TextoExistencia.AppendFormat("- #{0} {1}<br/>", dr("No").ToString, dr("PS").ToString)
|
|
End If
|
|
Next
|
|
Else
|
|
For Each gvr As GridViewRow In GvDatos.Rows
|
|
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:=gvr.DataKey("CveSeccionAlmacen").ToString.ToEntero, Serie:=If(gvr.DataKey("Serie").ToString = "", "-1", gvr.DataKey("Serie").ToString))
|
|
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}<br/>", gvr.DataKey("No").ToString, gvr.DataKey("PS").ToString)
|
|
End If
|
|
Next
|
|
End If
|
|
|
|
'VALIDACIONES
|
|
If ErrorExistencia Then
|
|
Alert(TextoExistencia.ToString, TipoMensaje.MsgError)
|
|
RegistraScript("playsonidito(''142608__autistic-lucario__error.wav'')")
|
|
ObjInventario.Dispose()
|
|
Exit Sub
|
|
End If
|
|
|
|
'Inicia la transacción
|
|
ObjInventario.IniciaTransacSQL()
|
|
Dim CveMovimientoSalida = 0
|
|
Dim CveMovimientoEntrada = 0
|
|
Dim IDPoliza As Integer = 0
|
|
Dim FolioSalida = 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 = ""
|
|
|
|
|
|
'AGREGAMOS LA SALIDA DEL ALMACEN ORIGEN
|
|
CveMovimientoSalida = ObjInventario.AddMovimiento(DdlAlmacenOrigen.SelectedValue.ToEntero, 8, 1, Fecha, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1,
|
|
Observaciones:=TxtObservaciones.Text.Trim, Recibio:="", CveAlmacenDestino:=DdlAlmacenDestino.SelectedValue.ToEntero, CveCliente:=DdlClientes.SelectedValue.ToEntero, CveVendedor:=DdlVendedor.SelectedValue.ToEntero)
|
|
FolioSalida = ObjInventario.Folio
|
|
Dim Cont As Integer = 0
|
|
If CveMovimientoSalida <= 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(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) Then
|
|
ErrorMovInv = True
|
|
TextoError = "Ocurrió un error al guardar los movimientos de salida"
|
|
Exit For
|
|
|
|
End If
|
|
Cont += 1
|
|
Next
|
|
End If
|
|
|
|
'AGREGAMOS LA ENTRADA
|
|
If Not ErrorMovInv Then
|
|
Cont = 0
|
|
AlmacenEntrada = DdlAlmacenDestino.SelectedValue.ToEntero
|
|
CveMovimientoEntrada = ObjInventario.AddMovimiento(AlmacenEntrada, 9, 1, Fecha, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, -1, -1,
|
|
Observaciones:=TxtObservaciones.Text.Trim, Recibio:="-1",
|
|
CveAlmacenDestino:=-1, CveMovimientoRelacionado:=CveMovimientoSalida, CveCliente:=DdlClientes.SelectedValue.ToEntero, CveVendedor:=DdlVendedor.SelectedValue.ToEntero)
|
|
FolioEntrada = ObjInventario.Folio
|
|
If CveMovimientoEntrada <= 0 Then
|
|
TextoError = "No se pudo generar el movimiento de entrada correctamente"
|
|
ErrorMovInv = True
|
|
Else
|
|
If ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then
|
|
Dim CveSec As Integer = 0
|
|
|
|
For Each Dr As DataRow In ObjInventario.DtResultados.Rows
|
|
CveSec = -3 'GlobalDTInvPSSeccionesAlmacen(UsuarioActual.CveEmpresa, DdlAlmacenDestino.SelectedValue.ToEntero, Dr("CvePS").ToString.ToEntero).FiltroPrimeroValor("CveSeccionAlmacen", "").ToEntero
|
|
|
|
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntrada, Dr("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDecimal, CveAF:=Dr("CveAF").ToString.ToEntero, CveSeccionAlmacen:=CveSec, Serie:=Dr("Serie").ToString, CveMovimientoDetalleEntrada:=Dr("CveMovimientoDetalle").ToString.ToEntero) Then
|
|
ErrorMovInv = True
|
|
TextoError = "Ocurrió un error al guardar los movimientos de entrada"
|
|
Exit For
|
|
|
|
End If
|
|
Cont += 1
|
|
Next
|
|
End If
|
|
End If
|
|
End If
|
|
|
|
If Not ErrorMovInv Then
|
|
ObjInventario.Commit()
|
|
Dim Mensaje As StringBuilder = New StringBuilder
|
|
|
|
Mensaje.Append("Se realizó con éxito el apartado.")
|
|
|
|
Mensaje.AppendFormat("<br/><br/> Folio de Salida: <b><a href=""/Inventarios/EntradasSalidas.aspx?CveMovimiento={1}"" target=""_blank"">{0}</a></b>", FolioSalida, CveMovimientoSalida)
|
|
Mensaje.AppendFormat("<br/><a style=""color:#337ab7;"" target='_blank' href='/Compras/PopUpVerFactura.aspx?P={0}'>Imprimir Reporte</a>", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoSalida)))
|
|
|
|
Mensaje.AppendFormat("<br/><br/> Folio de Entrada: <b><a href=""/Inventarios/EntradasSalidas.aspx?CveMovimiento={1}"" target=""_blank"">{0}</a></b>", FolioEntrada, CveMovimientoEntrada)
|
|
Mensaje.AppendFormat("<br/><a style=""color:#337ab7;"" target='_blank' href='/Compras/PopUpVerFactura.aspx?P={0}'>Imprimir Reporte</a>", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoEntrada)))
|
|
|
|
LimpiaMovimiento()
|
|
Alert(Mensaje.ToString, TipoMensaje.MsgInformacion)
|
|
Else
|
|
ObjInventario.RollBack()
|
|
Alert(TextoError, TipoMensaje.MsgError)
|
|
RegistraScript("playsonidito(''142608__autistic-lucario__error.wav'')")
|
|
End If
|
|
|
|
'SI OCURRIO UN ERROR EN LA EXISTENCIA RECARGAMOS EL GRID PARA COLOREAR LOS DETALLES CON ERROR
|
|
If ErrorExistencia Then
|
|
CargaGvDatos()
|
|
End If
|
|
|
|
ObjInventario.Dispose()
|
|
End Sub
|
|
#End Region
|
|
|
|
#Region " NUEVO - LIMPIA - MOVIMIENTO DE APARTADO "
|
|
Protected Sub BtnNuevo_Click(sender As Object, e As EventArgs)
|
|
LimpiaMovimiento()
|
|
End Sub
|
|
Private Sub LimpiaMovimiento()
|
|
CargaAlmacenOrigen()
|
|
TxtFecha.Text = Now.ToShortDateString
|
|
TxtObservaciones.Text = ""
|
|
txtCantidad.Text = ""
|
|
|
|
DdlSubProyecto.SelectedValue = "-1"
|
|
CargaAlmacenes()
|
|
|
|
DdlClientes.SelectedValue = "-1"
|
|
SeleccionaVendedor()
|
|
|
|
CargadoDeMov = False
|
|
|
|
DtMovimientos.Rows.Clear()
|
|
CargaGvDatos()
|
|
End Sub
|
|
#End Region
|
|
|
|
#End Region
|
|
|
|
#Region " DESAPARTADOS "
|
|
|
|
#Region " DDL CLIENTE FILTRO "
|
|
Protected Sub DdlClienteDesapartado_SelectedIndexChanged(sender As Object, e As EventArgs)
|
|
SeleccionaVendedorFiltro()
|
|
End Sub
|
|
Private Sub SeleccionaVendedorFiltro()
|
|
DdlVendedorDesapartado.SelectedValue = "-1"
|
|
DdlVendedorDesapartado.SelectedValueExist(GlobalDTCliente(UsuarioActual.CveEmpresa, -1).FiltroPrimeroValor("CveVendedor", $"CveCliente = {DdlClienteDesapartado.SelectedValue}"))
|
|
End Sub
|
|
#End Region
|
|
|
|
Protected Sub GvDatosDesapartado_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvDatosDesapartado.RowDataBound
|
|
If e.Row.RowType = DataControlRowType.DataRow Then
|
|
e.Row.FCTextBox("TxtCantidad").Attributes.Add("onblur", String.Format("ValidaCantidad(this,{0})", e.Row.DBCampo("Cantidad")))
|
|
If CBool(e.Row.DBCampo("AplicaSeccion")) AndAlso DdlAlmacenDestinoDesapartado.SelectedValue.ToEntero > 0 Then
|
|
Dim dtt As DataTable = GlobalDTInvPSSeccionesAlmacen(UsuarioActual.CveEmpresa, DdlAlmacenDestinoDesapartado.SelectedValue.ToEntero, e.Row.DBCampo("CvePS").ToEntero).FiltraParametros("Predeterminado = 1")
|
|
e.Row.FCDropDownList("DdlSeccionAlmacen").Visible = True
|
|
e.Row.FCDropDownList("DdlSeccionAlmacen").DataSource = dtt
|
|
e.Row.FCDropDownList("DdlSeccionAlmacen").DataBind()
|
|
If dtt.Rows.Count = 0 Then
|
|
e.Row.FCDropDownList("DdlSeccionAlmacen").Items.Insert(0, New ListItem("Seleccione", "-1"))
|
|
End If
|
|
dtt.Dispose()
|
|
End If
|
|
|
|
End If
|
|
End Sub
|
|
Protected Sub BtnVerificarExistenciasDesarmado_Click(sender As Object, e As EventArgs)
|
|
LblSucursal.Text = DdlSubProyectoDesapartado.SelectedItem.Text
|
|
CargaAlmacenDestinoDesapartado(DdlSubProyectoDesapartado.SelectedValue.ToEntero)
|
|
|
|
CveCliente = DdlClienteDesapartado.SelectedValue.ToEntero
|
|
CveVendedor = DdlVendedorDesapartado.SelectedValue.ToEntero
|
|
|
|
CargaExistencias()
|
|
UpDatosGenerales.Update()
|
|
|
|
|
|
End Sub
|
|
Private Sub CargaExistencias()
|
|
Dim DtTemp = GetExistenciasDT()
|
|
|
|
If DtTemp IsNot Nothing Then
|
|
GvDatosDesapartado.Columns(5).Visible = DtTemp.MAX("Serie").ToString <> ""
|
|
GvDatosDesapartado.Columns(6).Visible = DtTemp.MAX("Lote").ToString <> ""
|
|
GvDatosDesapartado.Columns(7).Visible = DtTemp.MAX("FechaCaducidad").ToString.ToDate > MinFecha
|
|
GvDatosDesapartado.Columns(8).Visible = DtTemp.MAX("AplicaSeccion") = "True"
|
|
|
|
GvDatosDesapartado.DataSource = DtTemp
|
|
GvDatosDesapartado.DataBind()
|
|
UpDatosDesapartado.Update()
|
|
|
|
End If
|
|
|
|
End Sub
|
|
Private Function GetExistenciasDT() As DataTable
|
|
Dim DtRetorno As New DataTable
|
|
|
|
Dim CveAlmacenApartado = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveAlmacen", $"CveTipoAlmacen IN (9) AND Estatus = 'Activo' And CveSubProyecto = {DdlSubProyectoDesapartado.SelectedValue.ToEntero}").ToEntero
|
|
If CveAlmacenApartado <= 0 Then
|
|
Alert("No se encontro el almacen de Apartado de la sucursal seleccionada. Por favor verifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia)
|
|
Return DtRetorno
|
|
End If
|
|
|
|
Dim ObjInventarios As New ClsInventarios
|
|
If ObjInventarios.DesapartadosGet(CveAlmacenApartado, DdlClienteDesapartado.SelectedValue.ToEntero, DdlVendedorDesapartado.SelectedValue.ToEntero, UsuarioActual.CveEmpresa) Then
|
|
DtRetorno = ObjInventarios.DtResultados
|
|
End If
|
|
ObjInventarios.Dispose()
|
|
|
|
Return DtRetorno
|
|
End Function
|
|
Private Sub CargaAlmacenDestinoDesapartado(Optional CveSubProyecto As Integer = -1)
|
|
DdlAlmacenDestinoDesapartado.Items.Clear()
|
|
If CveSubProyecto > 0 Then
|
|
DdlAlmacenDestinoDesapartado.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1).FiltraParametros($"CveTipoAlmacen NOT IN (3,9) {If(CveSubProyecto > 0, $" AND CveSubProyecto = {CveSubProyecto}", "")}")
|
|
End If
|
|
DdlAlmacenDestinoDesapartado.Items.Insert(0, New ListItem(" Seleccione ", "-1"))
|
|
DdlAlmacenDestinoDesapartado.SelectedValue = "-1"
|
|
DdlAlmacenDestinoDesapartado.DataBind()
|
|
End Sub
|
|
|
|
#Region " GUARDAR "
|
|
Protected Sub BtnGuardarDesapartado_Click(sender As Object, e As EventArgs) Handles BtnGuardarDesapartado.Click
|
|
|
|
'VALIDA ALMACEN ORIGEN Y DESTINO
|
|
Dim CveAlmacenApartado = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveAlmacen", $"CveTipoAlmacen IN (9) AND Estatus = 'Activo' And CveSubProyecto = {DdlSubProyectoDesapartado.SelectedValue.ToEntero}").ToEntero
|
|
If DdlAlmacenDestinoDesapartado.SelectedValue.ToEntero = CveAlmacenApartado Then
|
|
Alert("No se puede realizar un traspaso entre el mismo almacén.", TipoMensaje.MsgAdvertencia)
|
|
Exit Sub
|
|
End If
|
|
|
|
'VALIDA QUE TENGA MOVTOS
|
|
Dim TieneMovto = False
|
|
For Each Gvr As GridViewRow In GvDatosDesapartado.Rows
|
|
If Gvr.FCTextBox("TxtCantidad").Text.ToDouble > 0 Then
|
|
TieneMovto = True
|
|
Exit For
|
|
End If
|
|
Next
|
|
If Not TieneMovto Then
|
|
Alert("No hay movimientos para el traspaso", TipoMensaje.MsgAdvertencia)
|
|
RegistraScript("playsonidito('142608__autistic-lucario__error.wav')")
|
|
Exit Sub
|
|
End If
|
|
|
|
|
|
Dim TotalCantidad As Double = 0
|
|
For Each Gvr As GridViewRow In GvDatosDesapartado.Rows
|
|
If Gvr.FCTextBox("TxtCantidad").Text.ToDouble > 0 Then
|
|
TotalCantidad += Gvr.FCTextBox("TxtCantidad").Text.ToDecimal
|
|
End If
|
|
Next
|
|
|
|
'VALIDA SI HUBO CAMBIOS EN LA EXISTENCIA
|
|
Dim CantidadGV = GvDatosDesapartado.Rows.Cast(Of GridViewRow)().Sum(Function(gvr) gvr.DataKey("Cantidad").ToDouble)
|
|
'Alert($"Cantidad GV {CantidadGV} <br/> Cantidad DT {GetExistenciasDT().SUM("Cantidad")}")
|
|
'Exit Sub
|
|
If CantidadGV <> GetExistenciasDT().SUM("Cantidad") Then
|
|
Alert("Ah ocurrido un cambio en las existencias del apartado, por lo cual la pagina ah sido actualizada con los nuevos valores", TipoMensaje.MsgAdvertencia)
|
|
CargaExistencias()
|
|
Exit Sub
|
|
End If
|
|
|
|
'Inicia la transacción
|
|
Dim ObjInventario As New ClsInventarios
|
|
ObjInventario.IniciaTransacSQL()
|
|
Dim CveMovimientoSalida = 0
|
|
Dim CveMovimientoEntrada = 0
|
|
Dim FolioSalida = 0
|
|
Dim FolioEntrada = 0
|
|
Dim Fecha As Date = TxtFechaDesapartado.Text.ToDate
|
|
Dim ErrorMovInv As Boolean = False
|
|
Dim TextoError = ""
|
|
|
|
'AGREGAMOS LA SALIDA DEL ALMACEN ORIGEN
|
|
CveMovimientoSalida = ObjInventario.AddMovimiento(CveAlmacenApartado, 8, 1, Fecha, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, MovimientoFijo:=True,
|
|
Observaciones:=TxtObservacionesDesapartado.Text.Trim, Recibio:="", CveAlmacenDestino:=DdlAlmacenDestinoDesapartado.SelectedValue.ToEntero,
|
|
CveCliente:=CveCliente, CveVendedor:=CveVendedor)
|
|
FolioSalida = ObjInventario.Folio
|
|
Dim Diccionario As New HybridDictionary
|
|
Dim Cont As Integer = 0
|
|
If CveMovimientoSalida <= 0 Then
|
|
ErrorMovInv = True
|
|
TextoError = "No se pudo generar el movimiento de salida correctamente"
|
|
Else
|
|
For Each Gvr As GridViewRow In GvDatosDesapartado.Rows
|
|
If Gvr.FCTextBox("TxtCantidad").Text.ToDouble > 0 Then
|
|
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalida, Gvr.FCTextBox("TxtCantidad").Text.ToDouble, Gvr.DataKey("CveUM").ToString.ToEntero, Gvr.DataKey("CvePS").ToString.ToEntero, Gvr.DataKey("PU").ToString.ToDecimal, -1, CveSeccionAlmacen:=Gvr.DataKey("CveSeccionAlmacen").ToEntero, Serie:=Gvr.DataKey("Serie").ToString, Lote:=Gvr.DataKey("Lote").ToString, FechaCaducidad:=Gvr.DataKey("FechaCaducidad").ToString.ToDate, CveMovimientoDetalleEntrada:=Gvr.DataKey("CveMovimientoDetalle").ToString.ToEntero) Then
|
|
ErrorMovInv = True
|
|
TextoError = "Ocurrió un error al guardar los movimientos de salida"
|
|
Exit For
|
|
Else
|
|
Diccionario.Add(ObjInventario.CveMovimientoDetalle, Gvr.FCDropDownList("DdlSeccionAlmacen").SelectedValue)
|
|
End If
|
|
End If
|
|
Cont += 1
|
|
Next
|
|
End If
|
|
|
|
'AGREGAMOS LA ENTRADA
|
|
If Not ErrorMovInv Then
|
|
CveMovimientoEntrada = ObjInventario.AddMovimiento(DdlAlmacenDestinoDesapartado.SelectedValue.ToEntero, 9, 1, Fecha, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, -1, -1,
|
|
Observaciones:=TxtObservacionesDesapartado.Text.Trim, CveMovimientoRelacionado:=CveMovimientoSalida)
|
|
FolioEntrada = ObjInventario.Folio
|
|
Cont = 0
|
|
If CveMovimientoEntrada <= 0 Then
|
|
TextoError = "No se pudo generar el movimiento de entrada correctamente"
|
|
ErrorMovInv = True
|
|
Else
|
|
If ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then
|
|
Dim i As Integer = 0
|
|
|
|
For Each Dr As DataRow In ObjInventario.DtResultados.Rows
|
|
Dim CveSeccionAlmacen As Integer = Diccionario(Dr("CveMovimientoDetalle").ToString.ToEntero).ToString.ToEntero
|
|
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntrada, Dr("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDecimal, CveAF:=Dr("CveAF").ToString.ToEntero, CveSeccionAlmacen:=CveSeccionAlmacen, Serie:=Dr("Serie").ToString, Lote:=Dr("Lote").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate, CveMovimientoDetalleEntrada:=Dr("CveMovimientoDetalle").ToString.ToEntero) Then
|
|
ErrorMovInv = True
|
|
TextoError = "Ocurrió un error al guardar los movimientos de entrada"
|
|
Exit For
|
|
End If
|
|
Cont += 1
|
|
Next
|
|
End If
|
|
End If
|
|
End If
|
|
|
|
If Not ErrorMovInv Then
|
|
ObjInventario.Commit()
|
|
Dim Mensaje As StringBuilder = New StringBuilder
|
|
|
|
Mensaje.Append("Se realizó con éxito el apartado.")
|
|
|
|
Mensaje.AppendFormat("<br/><br/> Folio de Salida: <b><a href=""/Inventarios/EntradasSalidas.aspx?CveMovimiento={1}"" target=""_blank"">{0}</a></b>", FolioSalida, CveMovimientoSalida)
|
|
Mensaje.AppendFormat("<br/><a target='_blank' href='/Compras/PopUpVerFactura.aspx?P={0}'>Imprimir Reporte</a>", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoSalida)))
|
|
|
|
Mensaje.AppendFormat("<br/><br/> Folio de Entrada: <b><a href=""/Inventarios/EntradasSalidas.aspx?CveMovimiento={1}"" target=""_blank"">{0}</a></b>", FolioEntrada, CveMovimientoEntrada)
|
|
Mensaje.AppendFormat("<br/><a target='_blank' href='/Compras/PopUpVerFactura.aspx?P={0}'>Imprimir Reporte</a>", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoEntrada)))
|
|
|
|
TxtObservacionesDesapartado.Text = ""
|
|
DdlAlmacenDestinoDesapartado.SelectedValueExist("-1")
|
|
CargaExistencias()
|
|
LblSucursal.Text = ""
|
|
UpDatosGenerales.Update()
|
|
Alert(Mensaje.ToString, TipoMensaje.MsgInformacion)
|
|
Else
|
|
ObjInventario.RollBack()
|
|
Alert(TextoError, TipoMensaje.MsgError)
|
|
RegistraScript("playsonidito(''142608__autistic-lucario__error.wav'')")
|
|
End If
|
|
|
|
ObjInventario.Dispose()
|
|
End Sub
|
|
|
|
Private Sub DdlAlmacenDestinoDesapartado_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlAlmacenDestinoDesapartado.SelectedIndexChanged
|
|
|
|
CargaExistencias()
|
|
|
|
End Sub
|
|
#End Region
|
|
|
|
#End Region
|
|
|
|
|
|
|
|
|
|
End Class |