1062 lines
49 KiB
VB.net
1062 lines
49 KiB
VB.net
Option Explicit On
|
|
Option Strict On
|
|
|
|
Imports System.Data
|
|
Imports Extensiones
|
|
Partial Class Inventarios_PaquetesArmadoDesarmado
|
|
Inherits ClsPaginas
|
|
|
|
|
|
#Region " PROPIEDADES "
|
|
Public Property CveAlmacenArmado As Integer
|
|
Get
|
|
Return ViewState("CveAlmacenArmado").ToString.ToEntero
|
|
End Get
|
|
Set(value As Integer)
|
|
ViewState("CveAlmacenArmado") = value
|
|
End Set
|
|
End Property
|
|
Public Property CvePaqueteArmado() As Integer
|
|
Get
|
|
Return ViewState("CvePaqueteArmado").ToString.ToEntero
|
|
End Get
|
|
Set(value As Integer)
|
|
ViewState("CvePaqueteArmado") = value
|
|
End Set
|
|
End Property
|
|
Public Property CveAlmacenDesarmado As Integer
|
|
Get
|
|
Return ViewState("CveAlmacenDesarmado").ToString.ToEntero
|
|
End Get
|
|
Set(value As Integer)
|
|
ViewState("CveAlmacenDesarmado") = value
|
|
End Set
|
|
End Property
|
|
Public Property CvePaqueteDesarmado() As Integer
|
|
Get
|
|
Return ViewState("CvePaqueteDesarmado").ToString.ToEntero
|
|
End Get
|
|
Set(value As Integer)
|
|
ViewState("CvePaqueteDesarmado") = value
|
|
End Set
|
|
End Property
|
|
Private Property CvePSSerieLote As Integer
|
|
Get
|
|
Return CType(ViewState("CvePSSerieLote"), Integer)
|
|
End Get
|
|
Set(value As Integer)
|
|
ViewState("CvePSSerieLote") = value
|
|
End Set
|
|
End Property
|
|
Private Property CveUMSerieLote As Integer
|
|
Get
|
|
Return CType(ViewState("CveUMSerieLote"), Integer)
|
|
End Get
|
|
Set(value As Integer)
|
|
ViewState("CveUMSerieLote") = value
|
|
End Set
|
|
End Property
|
|
Private Property CveConsecSerieLote As Integer
|
|
Get
|
|
Return CType(ViewState("CveConsecSerieLote"), Integer)
|
|
End Get
|
|
Set(value As Integer)
|
|
ViewState("CveConsecSerieLote") = value
|
|
End Set
|
|
End Property
|
|
Private Property DtDatosDetalle As DataTable
|
|
Get
|
|
Return CType(ViewState("DtDatosDetalle"), DataTable)
|
|
End Get
|
|
Set(value As DataTable)
|
|
ViewState("DtDatosDetalle") = 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 CveCliente As Integer
|
|
Get
|
|
Return CType(ViewState("CveCliente"), Integer)
|
|
End Get
|
|
Set(value As Integer)
|
|
ViewState("CveCliente") = value
|
|
End Set
|
|
End Property
|
|
Private Property CveTipoPS As Integer
|
|
Get
|
|
Return CType(ViewState("CveTipoPS"), Integer)
|
|
End Get
|
|
Set(value As Integer)
|
|
ViewState("CveTipoPS") = value
|
|
End Set
|
|
End Property
|
|
Private Property DtSeriesDesarmado As DataTable
|
|
Get
|
|
Return CType(ViewState("DtSeriesDesarmado"), DataTable)
|
|
End Get
|
|
Set(value As DataTable)
|
|
ViewState("DtSeriesDesarmado") = value
|
|
End Set
|
|
End Property
|
|
'1 ARMADO
|
|
'2 DESARMADO
|
|
Private Property TipoMovimiento As Integer
|
|
Get
|
|
Return CType(ViewState("TipoMovimiento"), Integer)
|
|
End Get
|
|
Set(value As Integer)
|
|
ViewState("TipoMovimiento") = value
|
|
End Set
|
|
End Property
|
|
Private Property DtExistenciasDesarmado As DataTable
|
|
Get
|
|
Return CType(ViewState("DtExistenciasDesarmado"), DataTable)
|
|
End Get
|
|
Set(value As DataTable)
|
|
ViewState("DtExistenciasDesarmado") = 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()
|
|
CreaDtSeriesDesarmado()
|
|
|
|
|
|
'CARGA PS PAQUETES
|
|
DdlPaqueteArmado.DataSource = GlobalDTPS(UsuarioActual.CveEmpresa).FiltraParametros("CvePSPaquete > 0")
|
|
DdlPaqueteArmado.DataBind()
|
|
DdlPaqueteArmado.Items.Insert(0, New ListItem("Seleccione", "-1"))
|
|
|
|
DdlPaqueteDesarmado.DataSource = GlobalDTPS(UsuarioActual.CveEmpresa).FiltraParametros("CvePSPaquete > 0")
|
|
DdlPaqueteDesarmado.DataBind()
|
|
DdlPaqueteDesarmado.Items.Insert(0, New ListItem("Seleccione", "-1"))
|
|
|
|
|
|
DdlAlmacenArmado.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1).FiltraParametros("CveTipoAlmacen = 1")
|
|
DdlAlmacenArmado.DataBind()
|
|
DdlAlmacenArmado.Items.Insert(0, New ListItem("Seleccione", "-1"))
|
|
|
|
DdlAlmacenDesarmado.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1).FiltraParametros("CveTipoAlmacen = 1")
|
|
DdlAlmacenDesarmado.DataBind()
|
|
DdlAlmacenDesarmado.Items.Insert(0, New ListItem("Seleccione", "-1"))
|
|
|
|
TxtFechaArmado.Text = Now.ToShortDateString
|
|
TxtFechaDesarmado.Text = Now.ToShortDateString
|
|
|
|
DdlVendedorArmado.DataSource = GlobalDTVendedores(UsuarioActual.CveEmpresa)
|
|
DdlVendedorArmado.DataBind()
|
|
DdlVendedorArmado.Items.Insert(0, New ListItem("Seleccione", "-1"))
|
|
|
|
DdlClienteArmado.DataSource = GlobalDTCliente(UsuarioActual.CveEmpresa, -1)
|
|
DdlClienteArmado.DataBind()
|
|
DdlClienteArmado.Items.Insert(0, New ListItem("Seleccione", "-1"))
|
|
|
|
RowClienteArmado.Visible = Not UsuarioActual.Empresa.Funcionalidad(146) = "1"
|
|
|
|
DdlVendedorDesarmado.DataSource = GlobalDTVendedores(UsuarioActual.CveEmpresa)
|
|
DdlVendedorDesarmado.DataBind()
|
|
DdlVendedorDesarmado.Items.Insert(0, New ListItem("Seleccione", "-1"))
|
|
|
|
DdlClienteDesarmado.DataSource = GlobalDTCliente(UsuarioActual.CveEmpresa, -1)
|
|
DdlClienteDesarmado.DataBind()
|
|
DdlClienteDesarmado.Items.Insert(0, New ListItem("Seleccione", "-1"))
|
|
|
|
RowClienteDesarmado.Visible = Not UsuarioActual.Empresa.Funcionalidad(146) = "1"
|
|
|
|
UpGeneralesArmado.Update()
|
|
UpGeneralesDesarmado.Update()
|
|
|
|
CreaDtDetalle()
|
|
|
|
CveVendedor = -1
|
|
CveCliente = -1
|
|
|
|
End Sub
|
|
#End Region
|
|
|
|
#Region " APARTADOS "
|
|
Protected Sub DdlAlmacenArmado_SelectedIndexChanged(sender As Object, e As EventArgs)
|
|
RowApartadosArmado.Visible = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveAlmacen", $"CveAlmacen = {DdlAlmacenArmado.SelectedValue.ToEntero} AND CveTipoAlmacen = 9").ToEntero > 0
|
|
UpFiltraArmado.Update()
|
|
End Sub
|
|
Protected Sub DdlAlmacenDesarmado_SelectedIndexChanged(sender As Object, e As EventArgs)
|
|
RowApartadosDesarmado.Visible = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveAlmacen", $"CveAlmacen = {DdlAlmacenDesarmado.SelectedValue.ToEntero} AND CveTipoAlmacen = 9").ToEntero > 0
|
|
UpFiltraDesarmado.Update()
|
|
End Sub
|
|
#End Region
|
|
|
|
#Region " PROCESAR - VERIFICAR EXISTENCIAS "
|
|
Protected Sub BtnVerificarExistenciasArmado_Click(sender As Object, e As EventArgs)
|
|
TipoMovimiento = 1
|
|
Limpia(TipoMovimiento)
|
|
|
|
Dim ObjProductosServicios As New ClsProductosServicios
|
|
Dim DtDatos As New DataTable
|
|
|
|
Dim CveUMTemp = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=DdlPaqueteArmado.SelectedValue.ToEntero).FiltroPrimeroValor("CveUM").ToEntero
|
|
If ObjProductosServicios.GetPaqueteDetalle(DdlPaqueteArmado.SelectedValue.ToEntero, UsuarioActual.CveEmpresa, CveUMTemp, TxtCantidadArmado.Text.ToDouble, DdlAlmacenArmado.SelectedValue.ToEntero, TxtFechaArmado.Text.ToDate, CveVendedor:=CveVendedor, CveCliente:=If(UsuarioActual.Empresa.Funcionalidad(146) = "1", -1, CveCliente)) Then
|
|
DtDatos = ObjProductosServicios.DtResultados.FiltraParametros("CveTipoPS = 2").Copy
|
|
Else
|
|
DtDatos = Nothing
|
|
Alert("Ocurrió un error al obtener los componentes del paquete. Por favor vuelva a intentar.", TipoMensaje.MsgError)
|
|
End If
|
|
ObjProductosServicios.Dispose()
|
|
|
|
If DtDatos Is Nothing Then
|
|
Exit Sub
|
|
End If
|
|
|
|
CveVendedor = If(RowApartadosArmado.Visible, DdlVendedorArmado.SelectedValue.ToEntero, -1)
|
|
CveCliente = If(RowClienteArmado.Visible, DdlClienteArmado.SelectedValue.ToEntero, -1)
|
|
|
|
|
|
If DtDatos.Rows.Count > 0 Then
|
|
For Each Dr As DataRow In DtDatos.Rows
|
|
Dr("Cantidad") = Dr("Cantidad").ToString.ToDecimal * TxtCantidadArmado.Text.ToDecimal
|
|
Next
|
|
End If
|
|
|
|
Dim TextoExistencias = "No hay existencia suficiente de los siguientes componentes: <br/><br/>"
|
|
Dim ErrorExistencias = False
|
|
For Each Dr As DataRow In DtDatos.Rows
|
|
If Dr("CantidadDisponible2").ToString.ToDecimal < Dr("Cantidad").ToString.ToDecimal Then
|
|
TextoExistencias += $"<br/>- Componente: <b>""{Dr("CodigoPS")}""</b>."
|
|
ErrorExistencias = True
|
|
End If
|
|
Next
|
|
|
|
If ErrorExistencias Then
|
|
Alert(TextoExistencias, TipoMensaje.MsgAdvertencia)
|
|
Else
|
|
CveTipoPS = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=DdlPaqueteArmado.SelectedValue.ToEntero).FiltroPrimeroValor("Inv_CveMetodoInventario").ToEntero
|
|
BtnGuadarArmado.Visible = True
|
|
End If
|
|
|
|
If CveTipoPS = 5 Then
|
|
DivSeriesPaqueteArmado.Visible = True
|
|
Dim Dt As New DataTable
|
|
Dt.Columns.Add("Row", GetType(Integer))
|
|
Dt.Columns.Add("Serie", GetType(String))
|
|
For index = 1 To TxtCantidadArmado.Text.ToEntero
|
|
Dim Row = Dt.NewRow
|
|
Row("Row") = index
|
|
Row("Serie") = ""
|
|
Dt.Rows.Add(Row)
|
|
Next
|
|
GvSeriesPaqueteArmado.DataSource = Dt
|
|
GvSeriesPaqueteArmado.DataBind()
|
|
End If
|
|
UpSeriesPaqueteArmado.Update()
|
|
|
|
LbPaqueteArmado.Text = DdlPaqueteArmado.SelectedItem.Text
|
|
CvePaqueteArmado = DdlPaqueteArmado.SelectedValue.ToEntero
|
|
LbCantidadArmado.Text = TxtCantidadArmado.Text
|
|
LbAlmacenArmado.Text = DdlAlmacenArmado.SelectedItem.Text
|
|
CveAlmacenArmado = DdlAlmacenArmado.SelectedValue.ToEntero
|
|
LbFechaArmado.Text = TxtFechaArmado.Text
|
|
|
|
GvDatosArmado.DataSource = DtDatos
|
|
GvDatosArmado.DataBind()
|
|
|
|
If ErrorExistencias Then
|
|
GvDatosArmado.Columns(4).Visible = False
|
|
End If
|
|
|
|
UpDatosArmado.Update()
|
|
UpGeneralesArmado.Update()
|
|
End Sub
|
|
Protected Sub BtnVerificarExistenciasDesarmado_Click(sender As Object, e As EventArgs)
|
|
DtDatosDetalle.Clear()
|
|
BtnGuadarDesarmado.Visible = False
|
|
TotalDesarmado.Visible = False
|
|
CveTipoPS = -1
|
|
TxtSerieDesarmado.Text = ""
|
|
CvePaqueteDesarmado = -1
|
|
TipoMovimiento = 2
|
|
|
|
Limpia(TipoMovimiento)
|
|
|
|
DtSeriesDesarmado.Clear()
|
|
GvDatosDesarmado.Columns(4).Visible = False
|
|
DivSeriesPaqueteDesarmado.Visible = False
|
|
GvSeriesPaqueteDesarmado.DataBind()
|
|
BtnAgregarSerieDesarmado.Enabled = True
|
|
|
|
|
|
Dim CveUMTemp = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=DdlPaqueteDesarmado.SelectedValue.ToEntero).FiltroPrimeroValor("CveUM").ToEntero
|
|
CveVendedor = If(RowApartadosDesarmado.Visible, DdlVendedorDesarmado.SelectedValue.ToEntero, -1)
|
|
CveCliente = If(RowClienteDesarmado.Visible, DdlClienteDesarmado.SelectedValue.ToEntero, -1)
|
|
|
|
Dim ObjInventarios As New ClsInventarios
|
|
Dim Existencia = ObjInventarios.GetExistenciasPS(DdlPaqueteDesarmado.SelectedValue.ToEntero, CveUMTemp, UsuarioActual.CveEmpresa, DdlAlmacenDesarmado.SelectedValue.ToEntero, FechaMovto:=TxtFechaDesarmado.Text.ToDateTime.ToString("yyyy/MM/dd HH:mm"), CveVendedor:=CveVendedor, CveCliente:=If(UsuarioActual.Empresa.Funcionalidad(146) = "1", -1, CveCliente))
|
|
Dim CostoPromedio = ObjInventarios.GetCostoPS(DdlPaqueteDesarmado.SelectedValue.ToEntero, TxtCantidadDesarmado.Text.ToDouble, DdlAlmacenDesarmado.SelectedValue.ToEntero, "-1", TxtFechaDesarmado.Text.ToDate)
|
|
ObjInventarios.Dispose()
|
|
|
|
If Existencia - TxtCantidadDesarmado.Text.ToDouble < 0 Then
|
|
GvDatosDesarmado.Columns(4).Visible = False
|
|
Alert($"No hay existencia suficiente del paquete <b>""{DdlPaqueteDesarmado.SelectedItem.Text}""</b> para desarmar. Por favor rectifique y vuelva a intentar", TipoMensaje.MsgAdvertencia)
|
|
Exit Sub
|
|
Else
|
|
CveTipoPS = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=DdlPaqueteDesarmado.SelectedValue.ToEntero).FiltroPrimeroValor("Inv_CveMetodoInventario").ToEntero
|
|
End If
|
|
|
|
|
|
LbTotal.Text = (CostoPromedio * TxtCantidadDesarmado.Text.ToDecimal).FormatoNumero
|
|
|
|
|
|
Dim ObjProductosServicios As New ClsProductosServicios
|
|
Dim DtDatos As New DataTable
|
|
|
|
|
|
If ObjProductosServicios.GetPaqueteDetalle(DdlPaqueteDesarmado.SelectedValue.ToEntero, UsuarioActual.CveEmpresa, CveUMTemp, TxtCantidadDesarmado.Text.ToDouble, DdlAlmacenArmado.SelectedValue.ToEntero, TxtFechaArmado.Text.ToDate, CveVendedor:=CveVendedor, CveCliente:=If(UsuarioActual.Empresa.Funcionalidad(146) = "1", -1, CveCliente)) Then
|
|
DtDatos = ObjProductosServicios.DtResultados.FiltraParametros("CveTipoPS = 2").Copy
|
|
Else
|
|
DtDatos = Nothing
|
|
Alert("Ocurrió un error al obtener los componentes del paquete. Por favor vuelva a intentar.", TipoMensaje.MsgError)
|
|
End If
|
|
ObjProductosServicios.Dispose()
|
|
|
|
If DtDatos Is Nothing Then
|
|
Exit Sub
|
|
End If
|
|
|
|
If DtDatos.Rows.Count > 0 Then
|
|
For Each Dr As DataRow In DtDatos.Rows
|
|
Dr("Cantidad") = Dr("Cantidad").ToString.ToDecimal * TxtCantidadDesarmado.Text.ToDecimal
|
|
Next
|
|
End If
|
|
|
|
If CveTipoPS = 5 Then
|
|
GvDatosDesarmado.Columns(4).Visible = True
|
|
DivSeriesPaqueteDesarmado.Visible = True
|
|
CreaDtSeriesDesarmado()
|
|
DtSeriesDesarmado.Clear()
|
|
GvSeriesPaqueteDesarmado.DataSource = DtSeriesDesarmado
|
|
GvSeriesPaqueteDesarmado.DataBind()
|
|
End If
|
|
UpSeriesPaqueteDesarmado.Update()
|
|
|
|
LbPaqueteDesarmado.Text = DdlPaqueteDesarmado.SelectedItem.Text
|
|
CvePaqueteDesarmado = DdlPaqueteDesarmado.SelectedValue.ToEntero
|
|
LbCantidadDesarmado.Text = TxtCantidadDesarmado.Text
|
|
LbAlmacenDesarmado.Text = DdlAlmacenDesarmado.SelectedItem.Text
|
|
CveAlmacenDesarmado = DdlAlmacenDesarmado.SelectedValue.ToEntero
|
|
LbFechaDesarmado.Text = TxtFechaDesarmado.Text
|
|
|
|
GvDatosDesarmado.DataSource = DtDatos
|
|
GvDatosDesarmado.DataBind()
|
|
|
|
BtnGuadarDesarmado.Visible = True
|
|
|
|
TotalDesarmado.Visible = True
|
|
|
|
UpDatosDesarmado.Update()
|
|
UpGeneralesDesarmado.Update()
|
|
End Sub
|
|
#End Region
|
|
|
|
|
|
#Region " GUARDAR "
|
|
Protected Sub BtnGuadarArmado_Click(sender As Object, e As EventArgs)
|
|
If Not GvDatosArmado.Rows.Count > 0 Then
|
|
Alert("No hay ningun registro para generar el movimiento. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia)
|
|
Exit Sub
|
|
End If
|
|
|
|
Guardar(1)
|
|
End Sub
|
|
|
|
Protected Sub BtnGuadarDesarmado_Click(sender As Object, e As EventArgs)
|
|
If Not GvDatosDesarmado.Rows.Count > 0 Then
|
|
Alert("No hay ningun registro para generar el movimiento. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia)
|
|
Exit Sub
|
|
End If
|
|
|
|
If Abs(LbTotal.Text.ToDecimal - LbTotalCalculado.Text.ToDecimal) > 0.01 Then
|
|
Alert("Los totales deben coincidir. Por favor rectifique y vuelva a intentar", TipoMensaje.MsgError)
|
|
Exit Sub
|
|
End If
|
|
|
|
Guardar(2)
|
|
End Sub
|
|
|
|
Private Sub Guardar(Tipo As Integer)
|
|
|
|
|
|
'VALIDA SI EL COMPONENTE ES DE SERIE QUE SE INGRESEN TODAS LAS SERIES (CANTIDAD)
|
|
Select Case (Tipo)
|
|
Case 1 ' ARMADO
|
|
For Each gvr As GridViewRow In GvDatosArmado.Rows
|
|
If gvr.DataKey("Inv_CveMetodoInventario").ToEntero = 5 Then
|
|
If gvr.DataKey("Cantidad").ToEntero <> DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", gvr.DataKey("Consec"))).Rows.Count Then
|
|
Alert("Es necesario ingresas todas las series de los componentes.", TipoMensaje.MsgAdvertencia)
|
|
Exit Sub
|
|
End If
|
|
End If
|
|
Next
|
|
Case 2 ' DESARMADO
|
|
For Each gvr As GridViewRow In GvDatosDesarmado.Rows
|
|
If gvr.DataKey("Inv_CveMetodoInventario").ToEntero = 5 Then
|
|
If gvr.DataKey("Cantidad").ToEntero <> DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", gvr.DataKey("Consec"))).Rows.Count Then
|
|
Alert("Es necesario ingresas todas las series de los componentes.", TipoMensaje.MsgAdvertencia)
|
|
Exit Sub
|
|
End If
|
|
End If
|
|
Next
|
|
End Select
|
|
|
|
'VALIDA SI EL PAQUETE ES DE SERIE QUE SE INGRESEN TODAS LAS SERIES (CANTIDAD)
|
|
If CveTipoPS = 5 Then
|
|
Select Case (Tipo)
|
|
Case 1 ' ARMADO
|
|
For Each gvr As GridViewRow In GvSeriesPaqueteArmado.Rows
|
|
If gvr.FCTextBox("TxtSerie").Text.Trim = "" Then
|
|
Alert("Es necesario indicar las series del paquete a armar.", TipoMensaje.MsgAdvertencia)
|
|
Exit Sub
|
|
End If
|
|
Next
|
|
Case 2 ' DESARMADO
|
|
If LbCantidadDesarmado.Text.ToEntero <> DtSeriesDesarmado.Rows.Count Then
|
|
Alert("Es necesario indicar las series del paquete a desarmar.", TipoMensaje.MsgAdvertencia)
|
|
Exit Sub
|
|
End If
|
|
End Select
|
|
End If
|
|
|
|
|
|
Dim ObjInventario As New ClsInventarios
|
|
ObjInventario.IniciaTransacSQL() 'Inicia la transacción
|
|
Dim TieneError = False
|
|
Dim MensajeError As String = ""
|
|
|
|
Dim CveMovimientoSalida = 0
|
|
Dim FolioSalida = 0
|
|
Dim CveMovimientoEntrada = 0
|
|
Dim FolioEntrada = 0
|
|
Dim Fecha = If(Tipo = 1, LbFechaArmado.Text.ToDate, LbFechaDesarmado.Text.ToDate)
|
|
Dim DtDetalle As New DataTable
|
|
|
|
|
|
Select Case (Tipo)
|
|
Case 1 ' ARMADO
|
|
|
|
'SALIDA COMPONENTES
|
|
CveMovimientoSalida = ObjInventario.AddMovimiento(CveAlmacenArmado, 5, 1, Fecha, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:=TxtObservacionesArmado.Text, CveVendedor:=CveVendedor, CveCliente:=If(UsuarioActual.Empresa.Funcionalidad(146) = "1", -1, CveCliente))
|
|
FolioSalida = ObjInventario.Folio
|
|
|
|
If CveMovimientoSalida <= 0 Then
|
|
TieneError = True
|
|
MensajeError = "Ocurrió un error al guardar el movimiento de salida. Por favor vuelva a intentar."
|
|
Exit Select
|
|
End If
|
|
|
|
For Each Gvr As GridViewRow In GvDatosArmado.Rows
|
|
If Gvr.DataKey("Cantidad").ToString.ToDouble > 0 Then
|
|
If Gvr.DataKey("Inv_CveMetodoInventario").ToString.ToEntero = 5 Then
|
|
For Each Dr As DataRow In DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", Gvr.DataKey("Consec").ToEntero)).Rows
|
|
If Not ObjInventario.GetExistenciasPS(Gvr.DataKey("CvePS").ToString.ToEntero, Gvr.DataKey("CveUM").ToString.ToEntero, UsuarioActual.CveEmpresa, DdlAlmacenArmado.SelectedValue.ToEntero, FechaMovto:=Fecha.ToDateTime.ToString("yyyy/MM/dd HH:mm"), SerieLote:=Dr("Serie").ToString, CveVendedor:=CveVendedor, CveCliente:=If(UsuarioActual.Empresa.Funcionalidad(146) = "1", -1, CveCliente)) >= 1 Then
|
|
MensajeError = String.Format("El Producto <b>{0}</b> con Serie: <b>{1}</b> no tiene existencia suficiente", Dr("PS"), Dr("Serie"))
|
|
TieneError = True
|
|
Exit For
|
|
End If
|
|
|
|
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalida, 1, Gvr.DataKey("CveUM").ToString.ToEntero, Gvr.DataKey("CvePS").ToString.ToEntero, 0, -1, SerieLote:=Dr("Serie").ToString) Then
|
|
MensajeError = "Ocurrió un error al guardar los detalles con serie del movimiento de salida. Por favor vuelva a intentar."
|
|
TieneError = True
|
|
Exit For
|
|
End If
|
|
Next
|
|
|
|
If TieneError Then
|
|
Exit For
|
|
End If
|
|
|
|
Else
|
|
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalida, Gvr.DataKey("Cantidad").ToString.ToDouble, Gvr.DataKey("CveUM").ToString.ToEntero, Gvr.DataKey("CvePS").ToString.ToEntero, 0, -1) Then
|
|
MensajeError = "Ocurrió un error al guardar los detalles del movimiento de salida. Por favor vuelva a intentar."
|
|
TieneError = True
|
|
Exit For
|
|
End If
|
|
End If
|
|
End If
|
|
Next
|
|
|
|
'ENTRADA PAQUETE
|
|
If Not TieneError Then
|
|
CveMovimientoEntrada = ObjInventario.AddMovimiento(CveAlmacenArmado, 19, 1, Fecha, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:=TxtObservacionesArmado.Text, CveVendedor:=CveVendedor, CveCliente:=If(UsuarioActual.Empresa.Funcionalidad(146) = "1", -1, CveCliente), CveMovimientoRelacionado:=CveMovimientoSalida)
|
|
FolioEntrada = ObjInventario.Folio
|
|
|
|
If CveMovimientoEntrada <= 0 Then
|
|
MensajeError = "Ocurrió un error al guardar el movimiento de entrada correctamente. Por favor vuelva a intentar."
|
|
TieneError = True
|
|
Else
|
|
If ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then
|
|
Dim PUTemp = 0.0
|
|
For Each Dr As DataRow In ObjInventario.DtResultados.Rows
|
|
PUTemp += Dr("PU").ToString.ToDouble * Dr("Cantidad").ToString.ToDouble
|
|
Next
|
|
PUTemp = PUTemp / LbCantidadArmado.Text.ToDouble
|
|
Dim CvePSTemp = CvePaqueteArmado
|
|
Dim CveUMTemp = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePaqueteArmado).FiltroPrimeroValor("CveUM").ToEntero
|
|
|
|
If CveTipoPS = 5 Then
|
|
Dim ContadorPaquete = 1
|
|
Dim DtSeriesComponentes As New DataTable
|
|
For Each Gvr As GridViewRow In GvSeriesPaqueteArmado.Rows
|
|
'AGREGA MOVTO DETALLE DE LA ENTRADA DEL PAQUETE
|
|
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntrada, 1, CveUMTemp, CvePSTemp, PUTemp, -1, SerieLote:=Gvr.FCTextBox("TxtSerie").Text.Trim) Then
|
|
TieneError = True
|
|
MensajeError = "Ocurrió un error al guardar los detalles con serie del movimiento de entrada"
|
|
Exit For
|
|
End If
|
|
|
|
'INGRESA EN TABLA DE CONTROL DE PAQUETES CON SERIE
|
|
For Each Gvr2 As GridViewRow In GvDatosArmado.Rows
|
|
If Gvr2.DataKey("Inv_CveMetodoInventario").ToString.ToEntero = 5 Then
|
|
DtSeriesComponentes = New DataTable
|
|
DtSeriesComponentes = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", Gvr2.DataKey("Consec").ToEntero)).Copy
|
|
Dim CantidadComponente = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", Gvr2.DataKey("Consec").ToEntero)).Rows.Count / LbCantidadArmado.Text.ToEntero
|
|
|
|
For index = (ContadorPaquete - 1) * CantidadComponente.ToEntero To (ContadorPaquete * CantidadComponente.ToEntero) - 1
|
|
If Not ObjInventario.AddPaqueteRelacionSeries(CvePSTemp, Gvr.FCTextBox("TxtSerie").Text.Trim, DtSeriesComponentes.Rows(index)("CvePS").ToString.ToEntero, DtSeriesComponentes.Rows(index)("Serie").ToString) Then
|
|
TieneError = True
|
|
Exit For
|
|
End If
|
|
Next
|
|
End If
|
|
Next
|
|
|
|
ContadorPaquete = ContadorPaquete + 1
|
|
Next
|
|
Else
|
|
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntrada, LbCantidadArmado.Text.ToDouble, CveUMTemp, CvePSTemp, PUTemp, -1) Then
|
|
TieneError = True
|
|
MensajeError = "Ocurrió un error al guardar los detalles del movimiento de entrada"
|
|
End If
|
|
End If
|
|
|
|
Else
|
|
TieneError = True
|
|
MensajeError = "Ocurrió un error al guardar los movimientos de entrada"
|
|
End If
|
|
End If
|
|
End If
|
|
|
|
Case 2 'DESARMADO
|
|
|
|
|
|
'SALIDA PAQUETE
|
|
CveMovimientoSalida = ObjInventario.AddMovimiento(CveAlmacenDesarmado, 20, 1, Fecha, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:=TxtObservacionesDesarmado.Text, CveVendedor:=CveVendedor, CveCliente:=If(UsuarioActual.Empresa.Funcionalidad(146) = "1", -1, CveCliente))
|
|
FolioSalida = ObjInventario.Folio
|
|
|
|
If CveMovimientoSalida <= 0 Then
|
|
TieneError = True
|
|
MensajeError = "Ocurrió un error al guardar el movimiento de salida. Por favor vuelva a intentar."
|
|
Exit Select
|
|
End If
|
|
|
|
Dim CvePSTemp = CvePaqueteDesarmado
|
|
Dim CveUMTemp = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePaqueteDesarmado).FiltroPrimeroValor("CveUM").ToEntero
|
|
|
|
If CveTipoPS = 5 Then
|
|
For Each Gvr As GridViewRow In GvSeriesPaqueteDesarmado.Rows
|
|
'AGREGA MOVTO DETALLE DE LA SALIDA DEL PAQUETE
|
|
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalida, 1, CveUMTemp, CvePSTemp, 0, -1, SerieLote:=Gvr.DataKey("Serie").ToString) Then
|
|
TieneError = True
|
|
MensajeError = "Ocurrió un error al guardar los detalles con serie del movimiento de salida"
|
|
Exit For
|
|
End If
|
|
|
|
'ELIMINA EN TABLA DE CONTROL DE PAQUETES CON SERIE
|
|
If Not ObjInventario.RemovePaqueteRelacionSeries(CvePSTemp, Gvr.DataKey("Serie").ToString) Then
|
|
TieneError = True
|
|
MensajeError = "Ocurrió un error al guardar los detalles con serie del movimiento de salida"
|
|
Exit For
|
|
End If
|
|
Next
|
|
Else
|
|
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalida, TxtCantidadDesarmado.Text.ToDouble, CveUMTemp, CvePSTemp, 0, -1) Then
|
|
TieneError = True
|
|
MensajeError = "Ocurrió un error al guardar los movimientos de salida"
|
|
End If
|
|
End If
|
|
|
|
|
|
'ENTRADA COMPONENTES
|
|
If Not TieneError Then
|
|
CveMovimientoEntrada = ObjInventario.AddMovimiento(CveAlmacenDesarmado, 4, 1, Fecha, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:=TxtObservacionesDesarmado.Text, CveVendedor:=CveVendedor, CveCliente:=If(UsuarioActual.Empresa.Funcionalidad(146) = "1", -1, CveCliente), CveMovimientoRelacionado:=CveMovimientoSalida)
|
|
FolioEntrada = ObjInventario.Folio
|
|
|
|
If CveMovimientoEntrada <= 0 Then
|
|
MensajeError = "Ocurrió un error al guardar el movimiento de entrada correctamente. Por favor vuelva a intentar."
|
|
TieneError = True
|
|
Else
|
|
For Each Gvr As GridViewRow In GvDatosDesarmado.Rows
|
|
If Gvr.DataKey("Cantidad").ToString.ToDouble > 0 Then
|
|
If Gvr.DataKey("Inv_CveMetodoInventario").ToString.ToEntero = 5 Then
|
|
For Each Dr As DataRow In DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", Gvr.DataKey("Consec").ToEntero)).Rows
|
|
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntrada, 1, Gvr.DataKey("CveUM").ToString.ToEntero, Gvr.DataKey("CvePS").ToString.ToEntero, Gvr.FCTextBox("TxtCosto").Text.ToDouble, -1, SerieLote:=Dr("Serie").ToString) Then
|
|
MensajeError = "Ocurrió un error al guardar los detalles con serie del movimiento de entrada. Por favor vuelva a intentar."
|
|
TieneError = True
|
|
Exit For
|
|
End If
|
|
Next
|
|
Else
|
|
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntrada, Gvr.DataKey("Cantidad").ToString.ToDouble, Gvr.DataKey("CveUM").ToString.ToEntero, Gvr.DataKey("CvePS").ToString.ToEntero, Gvr.FCTextBox("TxtCosto").Text.ToDouble, -1) Then
|
|
MensajeError = "Ocurrió un error al guardar los detalles del movimiento de entrada. Por favor vuelva a intentar."
|
|
TieneError = True
|
|
Exit For
|
|
End If
|
|
End If
|
|
End If
|
|
Next
|
|
End If
|
|
End If
|
|
|
|
End Select
|
|
|
|
|
|
If Not TieneError Then
|
|
|
|
Dim Msg As New StringBuilder
|
|
Msg.AppendFormat("<br/>El Movimiento de salida se registro con el Folio: <b><a href=""/Inventarios/EntradasSalidas.aspx?CveMovimiento={0}"" target=""_blank"">{1}</a></b>", CveMovimientoSalida, FolioSalida)
|
|
Msg.AppendFormat("<br/><a class=""Texto"" target='_blank' href=""/Compras/PopUpVerFactura.aspx?P={0}"">Imprimir Movimiento</a> ", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoSalida)))
|
|
Msg.AppendFormat("<br/><br/><br/>El Movimiento de entrada se registro con el Folio: <b><a href=""/Inventarios/EntradasSalidas.aspx?CveMovimiento={0}"" target=""_blank"">{1}</a></b>", CveMovimientoEntrada, FolioEntrada)
|
|
Msg.AppendFormat("<br/><a class=""Texto"" target='_blank' href=""/Compras/PopUpVerFactura.aspx?P={0}"">Imprimir Movimiento</a> ", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoEntrada)))
|
|
Alert(Msg.ToString, TipoMensaje.MsgInformacion)
|
|
ObjInventario.Commit()
|
|
|
|
Limpia(Tipo)
|
|
|
|
Else
|
|
Alert(MensajeError, TipoMensaje.MsgError)
|
|
ObjInventario.RollBack()
|
|
End If
|
|
|
|
ObjInventario.Dispose() 'elimino la instancia
|
|
End Sub
|
|
|
|
Private Sub Limpia(Tipo As Integer)
|
|
|
|
DtDatosDetalle.Clear()
|
|
CveTipoPS = -1
|
|
|
|
|
|
'If Tipo = 1 Then
|
|
|
|
BtnGuadarArmado.Visible = False
|
|
DivSeriesPaqueteArmado.Visible = False
|
|
GvDatosArmado.Columns(4).Visible = False
|
|
|
|
LbPaqueteArmado.Text = ""
|
|
CvePaqueteArmado = -1
|
|
LbCantidadArmado.Text = ""
|
|
LbAlmacenArmado.Text = ""
|
|
CveAlmacenArmado = -1
|
|
LbFechaArmado.Text = ""
|
|
TxtObservacionesArmado.Text = ""
|
|
UpGeneralesArmado.Update()
|
|
|
|
GvDatosArmado.DataBind()
|
|
UpDatosArmado.Update()
|
|
UpSeriesPaqueteArmado.Update()
|
|
'Else
|
|
|
|
LbPaqueteDesarmado.Text = ""
|
|
CvePaqueteDesarmado = -1
|
|
LbCantidadDesarmado.Text = ""
|
|
LbAlmacenDesarmado.Text = ""
|
|
CveAlmacenDesarmado = -1
|
|
LbFechaDesarmado.Text = ""
|
|
TxtObservacionesDesarmado.Text = ""
|
|
UpGeneralesDesarmado.Update()
|
|
|
|
BtnGuadarDesarmado.Visible = False
|
|
TotalDesarmado.Visible = False
|
|
|
|
DtSeriesDesarmado.Clear()
|
|
GvDatosDesarmado.Columns(4).Visible = False
|
|
DivSeriesPaqueteDesarmado.Visible = False
|
|
GvSeriesPaqueteDesarmado.DataBind()
|
|
BtnAgregarSerieDesarmado.Enabled = True
|
|
|
|
LbTotalCalculado.Text = "0.00"
|
|
|
|
GvDatosDesarmado.DataBind()
|
|
UpDatosDesarmado.Update()
|
|
UpSeriesPaqueteDesarmado.Update()
|
|
|
|
'End If
|
|
|
|
End Sub
|
|
#End Region
|
|
|
|
|
|
#Region " GV ARMADO "
|
|
Protected Sub GvDatosArmado_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvDatosArmado.RowDataBound
|
|
If e.Row.RowType = DataControlRowType.DataRow Then
|
|
|
|
If e.Row.DBCampo("Inv_CveMetodoInventario") = "5" Then
|
|
e.Row.FCButton("BtnSerieLote").Visible = True
|
|
e.Row.FCButton("BtnSerieLote").CommandArgument = String.Format("{0}°{1}°{2}°{3}°{4}°1", e.Row.DBCampo("CvePS"), e.Row.DBCampo("CveUM"), e.Row.DBCampo("PS"), e.Row.DBCampo("Cantidad"), e.Row.DBCampo("Consec"))
|
|
e.Row.FCLinkButton("BtnSeriePaquete").CommandArgument = e.Row.DBCampo("Consec")
|
|
'Dim Contador = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", e.Row.DBCampo("Consec"))).Rows.Count
|
|
'e.Row.FCTextBox("TbCantidadF").Text = Contador.ToString
|
|
|
|
If CveTipoPS = 5 Then
|
|
e.Row.FCLinkButton("BtnSeriePaquete").Visible = True
|
|
e.Row.FCLinkButton("BtnSeriePaquete").Attributes.Add("data-toggle", "tooltip")
|
|
End If
|
|
|
|
GvDatosArmado.Columns(4).Visible = True
|
|
|
|
Else
|
|
e.Row.FCButton("BtnSerieLote").Visible = False
|
|
End If
|
|
|
|
''FUNCIONALIDAD PISTOLA DE CODIGOS
|
|
'If UsuarioActual.Empresa.Funcionalidad(132) = "1" And e.Row.DBCampo("CodigoBarras").Trim <> "" Then
|
|
' e.Row.FCTextBox("TbCantidadF").Enabled = False
|
|
'End If
|
|
|
|
End If
|
|
End Sub
|
|
#End Region
|
|
|
|
#Region " GV DESARMADO "
|
|
Protected Sub GvDatosDesarmado_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvDatosDesarmado.RowDataBound
|
|
If e.Row.RowType = DataControlRowType.DataRow Then
|
|
|
|
If e.Row.DBCampo("Inv_CveMetodoInventario") = "5" Then
|
|
e.Row.FCButton("BtnSerieLote").Visible = True
|
|
e.Row.FCButton("BtnSerieLote").CommandArgument = String.Format("{0}°{1}°{2}°{3}°{4}°2", e.Row.DBCampo("CvePS"), e.Row.DBCampo("CveUM"), e.Row.DBCampo("PS"), e.Row.DBCampo("Cantidad"), e.Row.DBCampo("Consec"))
|
|
Else
|
|
e.Row.FCButton("BtnSerieLote").Visible = False
|
|
End If
|
|
|
|
|
|
e.Row.FCTextBox("TxtCosto").Attributes.Add("onkeyup", "SumaValores();")
|
|
|
|
End If
|
|
End Sub
|
|
#End Region
|
|
|
|
#Region " SERIE LOTE "
|
|
Private Sub CreaDtDetalle()
|
|
If DtDatosDetalle Is Nothing Then
|
|
DtDatosDetalle = New DataTable
|
|
DtDatosDetalle.Columns.Add("Consec", GetType(Integer))
|
|
DtDatosDetalle.Columns.Add("ConsecId", GetType(Integer))
|
|
DtDatosDetalle.Columns.Add("CvePS", GetType(Integer))
|
|
DtDatosDetalle.Columns.Add("PS", GetType(String))
|
|
DtDatosDetalle.Columns.Add("CveUM", GetType(Integer))
|
|
DtDatosDetalle.Columns.Add("Serie", GetType(String))
|
|
DtDatosDetalle.Columns.Add("SeriePaquete", GetType(String))
|
|
End If
|
|
End Sub
|
|
Protected Sub BtnSerieLote_Click(sender As Object, e As EventArgs)
|
|
|
|
Dim Argumentos = CType(sender, Button).CommandArgument.Split("°"c)
|
|
|
|
LbProducto.Text = Argumentos(2)
|
|
LbCantidad.Text = Argumentos(3).FormatoNumero
|
|
|
|
CveConsecSerieLote = Argumentos(4).ToEntero
|
|
CvePSSerieLote = Argumentos(0).ToEntero
|
|
CveUMSerieLote = Argumentos(1).ToEntero
|
|
|
|
RegistraScript("$('#DivSerie').modal('show')")
|
|
CargaSerie(Argumentos(5).ToEntero)
|
|
|
|
End Sub
|
|
Private Sub CargaSerie(Tipo As Integer)
|
|
|
|
GvSerie.DataSource = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", CveConsecSerieLote), "Consec DESC")
|
|
GvSerie.DataBind()
|
|
|
|
'VALIDA QUE SIGA AGREGANDO
|
|
If DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", CveConsecSerieLote)).Rows.Count = LbCantidad.Text.ToEntero Then
|
|
BtnAgregarPS.Enabled = False
|
|
If Tipo = 2 Then
|
|
RegistraScript("$('#DivSerie').modal('hide')")
|
|
End If
|
|
Else
|
|
BtnAgregarPS.Enabled = True
|
|
End If
|
|
|
|
'SERIE LOTE RECOMENDADO
|
|
Dim DtSerieLote As New DataTable
|
|
Dim VariableCampoSerie = ""
|
|
If TipoMovimiento = 1 Then
|
|
Dim ObjInventarios As New ClsInventarios
|
|
If ObjInventarios.SerieLoteRecomendadoGet(CvePSSerieLote, UsuarioActual.CveEmpresa, If(TipoMovimiento = 1, CveAlmacenArmado, CveAlmacenDesarmado)) Then
|
|
DtSerieLote = ObjInventarios.DtResultados
|
|
End If
|
|
ObjInventarios.Dispose()
|
|
VariableCampoSerie = "SerieLote"
|
|
Else
|
|
DtSerieLote = If(DtExistenciasDesarmado IsNot Nothing, DtExistenciasDesarmado.Copy, Nothing)
|
|
VariableCampoSerie = "SeriePS"
|
|
End If
|
|
|
|
'SERIE LOTE RECOMENDADO - QUITA YA COMPLETADOS EN EL CLIENTE
|
|
If DtSerieLote IsNot Nothing AndAlso DtSerieLote.Rows.Count > 0 Then
|
|
'CALCULA YA COMPLETADOS
|
|
DtSerieLote.Columns.Add("CantidadSeleccionada", GetType(Integer))
|
|
Dim DrsRemove As New List(Of DataRow)
|
|
For Each dr As DataRow In DtSerieLote.Rows
|
|
dr("CantidadSeleccionada") = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0} AND Serie = '{1}'", CveConsecSerieLote, dr(VariableCampoSerie).ToString.Replace("'", "''"))).Rows.Count
|
|
If dr("CantidadSeleccionada").ToString.ToDecimal = dr("Existencia").ToString.ToDecimal Then
|
|
DrsRemove.Add(dr)
|
|
End If
|
|
Next
|
|
|
|
'ELIMINA YA COMPLETADOS EN PAGINA
|
|
For Each dr As DataRow In DrsRemove
|
|
DtSerieLote.Rows.Remove(dr)
|
|
Next
|
|
|
|
If DtSerieLote.Rows.Count > 0 Then
|
|
Dim Mensaje As New StringBuilder
|
|
Mensaje.AppendFormat("Serie / Lote Recomendado: <b>{0}</b>", DtSerieLote.Rows(0)(VariableCampoSerie))
|
|
LbSerieLoteRecomendado.Text = Mensaje.ToString 'String.Format("Serie / Lote Recomendado: <b>{0}</b>, Caducicdad: <b>{1}</b>", ObjInventarios.DtResultados.Rows(0)("SerieLote"), ObjInventarios.DtResultados.Rows(0)("FechaCaducidad").ToString.ToDate.ToShortDateString)
|
|
Else
|
|
LbSerieLoteRecomendado.Text = "No se encontro ningun Serie/Lote."
|
|
End If
|
|
Else
|
|
LbSerieLoteRecomendado.Text = "No se encontro ningun Serie/Lote."
|
|
End If
|
|
If DtSerieLote IsNot Nothing Then DtSerieLote.Dispose()
|
|
UpSerie.Update()
|
|
|
|
|
|
End Sub
|
|
Protected Sub BtnAgregarPS_Click(sender As Object, e As EventArgs)
|
|
AgregaSerieLote(TxtSerieLote.Text.Trim, 1)
|
|
End Sub
|
|
Private Sub AgregaSerieLote(SerieLote As String, Tipo As Integer)
|
|
|
|
If SerieLote.Trim = "" Then
|
|
Alert("El campo Serie es obligatorio. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia)
|
|
Exit Sub
|
|
End If
|
|
|
|
|
|
Dim SeriesArreglo = SerieLote.Split(";"c)
|
|
|
|
'VALIDACION DE SERIES DUPLICADAS
|
|
Dim MensajeAlert As New StringBuilder
|
|
Dim DtDuplicado As New DataTable
|
|
Dim DtSeriesNuevas As New DataTable
|
|
DtSeriesNuevas.Columns.Add("Serie", GetType(String))
|
|
|
|
For Each Serie In SeriesArreglo
|
|
DtDuplicado = DtDatosDetalle.FiltraParametros($"ConsecId = {CveConsecSerieLote} AND Serie = '{Serie}'")
|
|
If DtDuplicado IsNot Nothing AndAlso DtDuplicado.Rows.Count > 0 Then
|
|
MensajeAlert.Append($"<br/> El numero de Serie <b>""{Serie}""</b> proporcionado ya se encuentra ingresado.")
|
|
End If
|
|
|
|
DtDuplicado = DtSeriesNuevas.FiltraParametros($"Serie = '{Serie}'")
|
|
If DtDuplicado IsNot Nothing AndAlso DtDuplicado.Rows.Count > 0 Then
|
|
MensajeAlert.Append($"<br/> El numero de Serie <b>""{Serie}""</b> proporcionado se encuentra duplicado.")
|
|
End If
|
|
|
|
Dim Row = DtSeriesNuevas.NewRow
|
|
Row("Serie") = Serie
|
|
DtSeriesNuevas.Rows.Add(Row)
|
|
Next
|
|
|
|
If MensajeAlert.ToString <> "" Then
|
|
Alert(MensajeAlert.ToString, TipoMensaje.MsgAdvertencia)
|
|
RegistraScript("playsonidito('142608__autistic-lucario__error.wav')")
|
|
Exit Sub
|
|
End If
|
|
|
|
|
|
Dim MensajeSinExistencias As New StringBuilder
|
|
Dim ObjInventarios As New ClsInventarios
|
|
For Each Serie In SeriesArreglo
|
|
Dim Row = DtDatosDetalle.NewRow
|
|
|
|
'VERIFICA EXISTENCIAS
|
|
Dim Existencia = 0.0D
|
|
If TipoMovimiento = 1 Then
|
|
Existencia = ObjInventarios.GetExistenciasPS(CvePSSerieLote, CveUMSerieLote, UsuarioActual.CveEmpresa, DdlAlmacenArmado.SelectedValue.ToEntero, FechaMovto:=TxtFechaArmado.Text.ToDateTime.ToString("yyyy/MM/dd HH:mm"), SerieLote:=Serie, CveVendedor:=CveVendedor, CveCliente:=If(UsuarioActual.Empresa.Funcionalidad(146) = "1", -1, CveCliente))
|
|
Else
|
|
Existencia = If(DtExistenciasDesarmado Is Nothing, 0, DtExistenciasDesarmado.FiltraParametros($"CvePS={CvePSSerieLote} AND SeriePS='{Serie}'").Rows.Count.ToString.ToDecimal)
|
|
End If
|
|
|
|
If Existencia < 1 Then
|
|
Alert($"No hay existencia suficiente con la Serie definida <b>""{Serie}""</b>. Por favor rectifique y vuelva a intentar", TipoMensaje.MsgAdvertencia, If(Tipo = 2, "window.setTimeout(Focus,200);", ""))
|
|
RegistraScript("playsonidito('142608__autistic-lucario__error.wav')")
|
|
If Tipo = 1 Then
|
|
RegistraScript("$('#DivSerie').modal('show')")
|
|
End If
|
|
Exit Sub
|
|
End If
|
|
|
|
Dim AplicaCaducidad = False
|
|
If GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePSSerieLote).FiltraParametros("").Rows(0) IsNot Nothing Then
|
|
AplicaCaducidad = If(GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePSSerieLote).FiltraParametros("").Rows(0)("AplicaCaducidad").ToString = "True", True, False)
|
|
End If
|
|
|
|
Row("ConsecId") = CveConsecSerieLote
|
|
Row("Consec") = DtDatosDetalle.Rows.Count + 1
|
|
Row("CvePS") = CvePSSerieLote
|
|
Row("CveUM") = CveUMSerieLote
|
|
Row("Serie") = Serie
|
|
|
|
If TipoMovimiento = 2 Then
|
|
Row("SeriePaquete") = DtExistenciasDesarmado.FiltroPrimeroValor("SeriePaquete", $"CvePS={CvePSSerieLote} AND SeriePS='{Serie}'")
|
|
End If
|
|
|
|
DtDatosDetalle.Rows.Add(Row)
|
|
Next
|
|
ObjInventarios.Dispose()
|
|
|
|
If Tipo = 1 Then
|
|
TxtSerieLote.Text = ""
|
|
End If
|
|
|
|
CargaSerie(2)
|
|
|
|
If MensajeAlert.ToString <> "" Then
|
|
RegistraScript("playsonidito('142608__autistic-lucario__error.wav')")
|
|
Else
|
|
If MensajeSinExistencias.ToString <> "" Then
|
|
Alert($"Las siguientes Series no cuentan con la existencia suficiente por lo cual se omitieron. <br?><br/> {MensajeSinExistencias.ToString}", TipoMensaje.MsgAdvertencia)
|
|
End If
|
|
RegistraScript("playsonidito('beep-07.wav')")
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Protected Sub GvSerie_RowDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GvSerie.RowDeleting
|
|
DtDatosDetalle.Rows.Remove(DtDatosDetalle.Rows(e.RowIndex))
|
|
CargaSerie(2)
|
|
End Sub
|
|
#End Region
|
|
|
|
#Region " SERIE DEL PAQUETE "
|
|
'SERIES ARMADO
|
|
Protected Sub BtnSeriePaquete_Click(sender As Object, e As EventArgs)
|
|
Dim i = 1
|
|
Dim Dt As New DataTable
|
|
Dt.Columns.Add("Row", GetType(Integer))
|
|
Dt.Columns.Add("Serie", GetType(String))
|
|
|
|
For Each Row As DataRow In DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", CType(sender, LinkButton).CommandArgument.ToEntero)).Rows
|
|
If i > LbCantidadArmado.Text.ToEntero Then
|
|
Exit For
|
|
End If
|
|
|
|
Dim Row2 = Dt.NewRow
|
|
Row2("Row") = i
|
|
Row2("Serie") = Row("Serie")
|
|
Dt.Rows.Add(Row2)
|
|
|
|
i = i + 1
|
|
Next
|
|
|
|
GvSeriesPaqueteArmado.DataSource = Dt
|
|
GvSeriesPaqueteArmado.DataBind()
|
|
UpSeriesPaqueteArmado.Update()
|
|
End Sub
|
|
|
|
'SERIES DESARMADO
|
|
Private Sub CreaDtSeriesDesarmado()
|
|
If DtSeriesDesarmado Is Nothing Then
|
|
DtSeriesDesarmado = New DataTable
|
|
DtSeriesDesarmado.Columns.Add("Row", GetType(Integer))
|
|
DtSeriesDesarmado.Columns.Add("Serie", GetType(String))
|
|
End If
|
|
End Sub
|
|
Protected Sub BtnAgregarSerieDesarmado_Click(sender As Object, e As EventArgs)
|
|
Dim SerieLote = TxtSerieDesarmado.Text.Trim
|
|
|
|
'VERIFICA EXISTENCIAS
|
|
Dim ObjInventarios As New ClsInventarios
|
|
Dim CveUMTemp = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePaqueteDesarmado).FiltroPrimeroValor("CveUM").ToEntero
|
|
Dim Existencia = ObjInventarios.GetExistenciasPS(CvePaqueteDesarmado, CveUMTemp, UsuarioActual.CveEmpresa, CveAlmacenDesarmado, FechaMovto:=LbFechaDesarmado.Text.ToDateTime.ToString("yyyy/MM/dd HH:mm"), SerieLote:=SerieLote, CveVendedor:=CveVendedor, CveCliente:=If(UsuarioActual.Empresa.Funcionalidad(146) = "1", -1, CveCliente))
|
|
|
|
If Existencia < 1 Then
|
|
Alert($"No hay existencia suficiente con la Serie definida <b>""{SerieLote}""</b>. Por favor rectifique y vuelva a intentar", TipoMensaje.MsgAdvertencia)
|
|
RegistraScript("playsonidito('142608__autistic-lucario__error.wav')")
|
|
Exit Sub
|
|
End If
|
|
|
|
If ObjInventarios.GetPaqueteRelacionSeries(CvePaqueteDesarmado, SerieLote) Then
|
|
If DtExistenciasDesarmado Is Nothing Then
|
|
DtExistenciasDesarmado = ObjInventarios.DtResultados.Copy
|
|
Else
|
|
DtExistenciasDesarmado.Merge(ObjInventarios.DtResultados)
|
|
End If
|
|
End If
|
|
|
|
ObjInventarios.Dispose()
|
|
|
|
|
|
Dim Row = DtSeriesDesarmado.NewRow
|
|
Row("Row") = DtSeriesDesarmado.MAX("Row").ToEntero + 1
|
|
Row("Serie") = TxtSerieDesarmado.Text.Trim
|
|
DtSeriesDesarmado.Rows.Add(Row)
|
|
|
|
TxtSerieDesarmado.Text = ""
|
|
|
|
If DtSeriesDesarmado.Rows.Count >= LbCantidadDesarmado.Text.ToEntero Then
|
|
BtnAgregarSerieDesarmado.Enabled = False
|
|
Else
|
|
BtnAgregarSerieDesarmado.Enabled = True
|
|
End If
|
|
|
|
GvSeriesPaqueteDesarmado.DataSource = DtSeriesDesarmado
|
|
GvSeriesPaqueteDesarmado.DataBind()
|
|
UpSeriesPaqueteDesarmado.Update()
|
|
End Sub
|
|
Protected Sub GvSeriesPaqueteDesarmado_RowDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GvSeriesPaqueteDesarmado.RowDeleting
|
|
Dim SerieEliminada = DtSeriesDesarmado.Rows(e.RowIndex)("Serie").ToString
|
|
DtSeriesDesarmado.Rows.Remove(DtSeriesDesarmado.Rows(e.RowIndex))
|
|
|
|
'ELIMINA EXISTENCIAS DEL PAQUETE
|
|
Dim dtTemp As DataTable = DtExistenciasDesarmado.FiltraParametros($"SeriePaquete<>'{SerieEliminada}'")
|
|
DtExistenciasDesarmado.Clear()
|
|
DtExistenciasDesarmado.Merge(dtTemp)
|
|
|
|
'ELIMINA SERIES DE COMPONENTES DEPENDIENTES DEL PAQUETE ELIMINADO
|
|
dtTemp = DtDatosDetalle.FiltraParametros($"SeriePaquete<>'{SerieEliminada}'")
|
|
DtDatosDetalle.Clear()
|
|
DtDatosDetalle.Merge(dtTemp)
|
|
|
|
dtTemp.Dispose()
|
|
|
|
If DtSeriesDesarmado.Rows.Count >= LbCantidadDesarmado.Text.ToEntero Then
|
|
BtnAgregarSerieDesarmado.Enabled = False
|
|
Else
|
|
BtnAgregarSerieDesarmado.Enabled = True
|
|
End If
|
|
|
|
GvSeriesPaqueteDesarmado.DataSource = DtSeriesDesarmado
|
|
GvSeriesPaqueteDesarmado.DataBind()
|
|
|
|
UpSeriesPaqueteDesarmado.Update()
|
|
End Sub
|
|
#End Region
|
|
|
|
|
|
End Class
|