290 lines
9.5 KiB
VB.net
290 lines
9.5 KiB
VB.net
Imports System.Data
|
|
Imports Extensiones
|
|
|
|
Partial Class Inventarios_Equivalencia
|
|
Inherits ClsPaginas
|
|
|
|
|
|
#Region "Propiedades"
|
|
|
|
Public Property DtEquivalencias() As DataTable
|
|
Get
|
|
Return CType(ViewState("dtEquivalencias"), DataTable)
|
|
End Get
|
|
Set(value As DataTable)
|
|
ViewState("dtEquivalencias") = value
|
|
End Set
|
|
End Property
|
|
|
|
#End Region
|
|
|
|
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
|
|
If Not IsPostBack Then
|
|
inicializarTabla()
|
|
btAgregar.Enabled = False
|
|
InicializarListas()
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub InicializarListas()
|
|
'Llenar el dropdownlist de unidad de medida
|
|
|
|
ddlUnidad.DataSource = GlobalDTUnidadesMedida()
|
|
ddlUnidad.DataBind()
|
|
|
|
|
|
'Llenar el dropdownlist de Productosy servicios
|
|
Dim productos As New ClsProductosServicios
|
|
Dim resProductos As New DataTable
|
|
|
|
If productos.GetAllPS(UsuarioActual.CveEmpresa) Then
|
|
resProductos = productos.DtResultados
|
|
ddlProducto.DataSource = resProductos
|
|
ddlProducto.DataTextField = "PS"
|
|
ddlProducto.DataValueField = "CvePS"
|
|
ddlProducto.DataBind()
|
|
End If
|
|
|
|
productos.Dispose()
|
|
|
|
ddlProducto.Items.Insert(0, New ListItem("----", "0"))
|
|
|
|
End Sub
|
|
|
|
Protected Sub btAgregar_Click(sender As Object, e As EventArgs) Handles btAgregar.Click
|
|
Dim Precio As Double = txtPrecio.Text.ToDouble
|
|
Dim CveUnidadMedida As Integer = ddlUnidad.SelectedValue.ToEntero
|
|
Dim Cantidad As Double = txtCantidad.Text.ToDouble
|
|
Dim UnidadBase As Boolean = cbUnidadBase.Checked
|
|
Dim psEquivalencias As New ClsProductosServicios
|
|
|
|
Dim Mensaje As String = ""
|
|
|
|
Dim dt As New DataTable
|
|
dt = CType(Me.ViewState("dtEquivalencias"), DataTable)
|
|
|
|
If dt.Rows.Count = 0 Then
|
|
UnidadBase = True
|
|
End If
|
|
|
|
If cbUnidadBase.Checked Then
|
|
reAsignarBase(dt, dt.Rows.Count - 1)
|
|
End If
|
|
|
|
|
|
If psEquivalencias.AddPSEquivalencias(ddlProducto.SelectedValue.ToEntero, CveUnidadMedida, Cantidad, UnidadBase, Precio, 1) Then
|
|
|
|
gvEquivalencias.DataSource = psEquivalencias.DtResultados
|
|
|
|
ViewState("dtEquivalencias") = psEquivalencias.DtResultados
|
|
|
|
|
|
|
|
txtCantidad.Text = ""
|
|
txtPrecio.Text = ""
|
|
ddlUnidad.SelectedIndex = -1
|
|
cbUnidadBase.Checked = False
|
|
|
|
End If
|
|
|
|
psEquivalencias.Dispose()
|
|
gvEquivalencias.DataBind()
|
|
|
|
End Sub
|
|
|
|
Private Function reordenarNum(dt As DataTable) As DataTable
|
|
If dt.Rows.Count > 0 Then
|
|
For i As Integer = 0 To (dt.Rows.Count - 1)
|
|
dt.Rows(i).Item(0) = (i + 1)
|
|
Next i
|
|
End If
|
|
Return dt
|
|
End Function
|
|
|
|
Private Function existeUM(um As Integer) As Boolean
|
|
Dim res As Boolean = False
|
|
Dim dt As DataTable = CType(Me.ViewState("dtEquivalencias"), DataTable)
|
|
For i As Integer = 0 To (dt.Rows.Count - 1)
|
|
If dt.Rows(i).Item("CveUnidadMedida").ToString = um.ToString Then
|
|
Return True
|
|
End If
|
|
Next i
|
|
Return res
|
|
End Function
|
|
|
|
Private Function existeUB(dt As DataTable) As Boolean
|
|
Dim res As Boolean = False
|
|
Dim count As Integer = 0
|
|
' Dim dt As DataTable = Me.ViewState("dtEquivalencias")
|
|
For i As Integer = 0 To (dt.Rows.Count - 1)
|
|
If CType(dt.Rows(i).Item("Base"), Boolean) Then
|
|
count = count + 1
|
|
End If
|
|
Next
|
|
If count = 1 Then
|
|
res = True
|
|
End If
|
|
|
|
Return res
|
|
End Function
|
|
|
|
Private Function reAsignarBase(dt As DataTable, num As Integer) As DataTable
|
|
|
|
For i As Integer = 0 To (dt.Rows.Count - 1)
|
|
If i = num Then
|
|
dt.Rows(i).Item("Base") = True
|
|
Else
|
|
|
|
If dt.Rows(i).Item("Base").ToString = "True" Then
|
|
Dim psEquivalencias As New ClsProductosServicios
|
|
If Not psEquivalencias.UpdatePSEquivalencias(ddlProducto.SelectedValue.ToEntero, dt.Rows(i).Item("CveUnidadMedida").ToString.ToEntero, dt.Rows(i).Item("Cantidad").ToString.ToDouble, False, dt.Rows(i).Item("Precio").ToString.ToDouble, 1) Then
|
|
Alert("Error al actualizar registro.", TipoMensaje.MsgError)
|
|
Return dt
|
|
End If
|
|
psEquivalencias.Dispose()
|
|
End If
|
|
dt.Rows(i).Item("Base") = False
|
|
End If
|
|
Next i
|
|
Return dt
|
|
End Function
|
|
|
|
Protected Sub inicializarTabla()
|
|
Dim dt As New DataTable
|
|
|
|
dt.Columns.Add("No")
|
|
dt.Columns.Add("Cantidad")
|
|
dt.Columns.Add("CveUnidadMedida", Type.GetType("System.Int32"))
|
|
dt.Columns.Add("Unidad")
|
|
dt.Columns.Add("Precio")
|
|
dt.Columns.Add("Base")
|
|
|
|
Me.gvEquivalencias.DataSource = dt
|
|
Me.gvEquivalencias.DataBind()
|
|
Me.ViewState("dtEquivalencias") = dt
|
|
|
|
|
|
|
|
End Sub
|
|
|
|
Protected Sub ddlProducto_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ddlProducto.SelectedIndexChanged
|
|
gvEquivalencias.EditIndex = -1
|
|
Dim equivalencias As New ClsProductosServicios
|
|
|
|
|
|
If ddlProducto.SelectedValue = "0" Then
|
|
btAgregar.Enabled = False
|
|
Else
|
|
btAgregar.Enabled = True
|
|
End If
|
|
|
|
If btAgregar.Text = "Editar" Then
|
|
btAgregar.Text = "Agregar"
|
|
btCancelar.Visible = False
|
|
End If
|
|
|
|
If equivalencias.GetPSEquivalencias(ddlProducto.SelectedValue.ToEntero, UsuarioActual.CveEmpresa) Then
|
|
Dim dt As New DataTable
|
|
dt.Columns.Add("No")
|
|
dt.Columns.Add("Cantidad")
|
|
dt.Columns.Add("CveUnidadMedida", Type.GetType("System.Int32"))
|
|
dt.Columns.Add("Unidad")
|
|
dt.Columns.Add("Precio")
|
|
dt.Columns.Add("Base", Type.GetType("System.String"))
|
|
dt = equivalencias.DtResultados
|
|
ViewState("dtEquivalencias") = reordenarNum(dt)
|
|
gvEquivalencias.DataSource = Me.ViewState("dtEquivalencias")
|
|
gvEquivalencias.DataBind()
|
|
|
|
End If
|
|
|
|
equivalencias.Dispose()
|
|
|
|
End Sub
|
|
|
|
Protected Sub gvEquivalencias_RowDeleting(sender As Object, e As GridViewDeleteEventArgs) Handles gvEquivalencias.RowDeleting
|
|
|
|
Dim CveUnidadMedida As Integer = gvEquivalencias.DataKeys(e.RowIndex)("CveUM").ToString().ToEntero ' dt.Rows(e.RowIndex).Item("CveUnidadMedida")
|
|
Dim UnidadBase As Boolean = CType(gvEquivalencias.DataKeys(e.RowIndex)("UnidadBase"), Boolean)
|
|
|
|
|
|
If UnidadBase Then
|
|
Alert("No puede eliminar una equivalencia que es Base.", TipoMensaje.MsgError)
|
|
Return
|
|
End If
|
|
|
|
Dim psEquivalencias As New ClsProductosServicios
|
|
|
|
If psEquivalencias.RemovePSEquivalencias(ddlProducto.SelectedValue.ToEntero, CveUnidadMedida) Then
|
|
gvEquivalencias.DataSource = psEquivalencias.DtResultados
|
|
ViewState("dtEquivalencias") = psEquivalencias.DtResultados
|
|
gvEquivalencias.DataBind()
|
|
End If
|
|
|
|
|
|
psEquivalencias.Dispose()
|
|
|
|
End Sub
|
|
|
|
Protected Sub EditRow(ByVal sender As Object, ByVal e As GridViewEditEventArgs) Handles gvEquivalencias.RowEditing
|
|
Dim dt As DataTable = CType(Me.ViewState("dtEquivalencias"), DataTable)
|
|
|
|
gvEquivalencias.EditIndex = e.NewEditIndex
|
|
|
|
gvEquivalencias.DataSource = dt
|
|
gvEquivalencias.DataBind()
|
|
End Sub
|
|
|
|
Protected Sub CancelEdit(ByVal sender As Object, ByVal e As GridViewCancelEditEventArgs)
|
|
gvEquivalencias.EditIndex = -1
|
|
gvEquivalencias.DataSource = Me.ViewState("dtEquivalencias")
|
|
gvEquivalencias.DataBind()
|
|
|
|
End Sub
|
|
|
|
Protected Sub gvEquivalencias_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles gvEquivalencias.RowDataBound
|
|
|
|
If e.Row.RowState = DataControlRowState.Edit OrElse e.Row.RowState = 5 Then
|
|
e.Row.FCDropDownList("ddlEUnidad").DataSource = GlobalDTUnidadesMedida()
|
|
e.Row.FCDropDownList("ddlEUnidad").SelectedValue = e.Row.DBCampo("CveUnidadMedida")
|
|
e.Row.FCDropDownList("ddlEUnidad").DataBind()
|
|
End If
|
|
|
|
|
|
End Sub
|
|
|
|
Protected Sub gvEquivalencias_RowUpdating(sender As Object, e As GridViewUpdateEventArgs) Handles gvEquivalencias.RowUpdating
|
|
|
|
Dim psEquivalencias As New ClsProductosServicios
|
|
|
|
Dim Mensaje As String = ""
|
|
Dim dt As DataTable
|
|
|
|
Dim cantidad As Double = DirectCast(gvEquivalencias.Rows(e.RowIndex).FindControl("txtECantidad"), TextBox).Text.ToDouble
|
|
|
|
Dim precio As Double = DirectCast(gvEquivalencias.Rows(e.RowIndex).FindControl("txtEPrecio"), TextBox).Text.ToDouble
|
|
Dim base As Boolean = DirectCast(gvEquivalencias.Rows(e.RowIndex).FindControl("cbEBase"), CheckBox).Checked
|
|
Dim CveUnidadMedida As Integer = DirectCast(gvEquivalencias.Rows(e.RowIndex).FindControl("ddlEUnidad"), DropDownList).SelectedValue.ToEntero
|
|
|
|
If psEquivalencias.UpdatePSEquivalencias(ddlProducto.SelectedValue.ToEntero, CveUnidadMedida, cantidad, base, precio, UsuarioActual.CveUsuario) Then
|
|
dt = psEquivalencias.DtResultados
|
|
|
|
If base Then
|
|
|
|
reAsignarBase(dt, e.RowIndex)
|
|
|
|
End If
|
|
|
|
|
|
ViewState("dtEquivalencias") = dt
|
|
|
|
gvEquivalencias.EditIndex = -1
|
|
gvEquivalencias.DataSource = dt
|
|
gvEquivalencias.DataBind()
|
|
End If
|
|
psEquivalencias.Dispose()
|
|
|
|
End Sub
|
|
|
|
End Class
|