Files
SIG/AF/ValesCombustible.aspx.vb
2023-10-09 11:55:07 -07:00

449 lines
20 KiB
VB.net

Option Explicit On
Option Strict On
Imports Extensiones
Imports System.Data
Partial Class AF_ValesCombustible
Inherits ClsPaginas
#Region "PROPIEDADES"
Private ReadOnly Property EstablecioFolio As Boolean
Get
Return CBool(ViewState("EstablecioFolio"))
End Get
End Property
#End Region
Private Sub AF_ValesCombustible_Load(sender As Object, e As EventArgs) Handles Me.Load
If Not IsPostBack Then
CargarCombos()
CargaFolios()
TxtFechaVale.Text = NowADS().ToShortDateString
BtnActualizar.Visible = False
'BtnAplicar.Visible = False
End If
End Sub
#Region "C A R G A C O M B O S & L I M P I A D A T O S"
Private Sub CargarCombos()
DdlProveedores.DataSource = GlobalDTCompProveedores(UsuarioActual.CveEmpresa)
DdlProveedores.DataBind()
DdlProveedores.Items.Insert(0, New ListItem("Sin Asignar", "-1"))
DdlActivoFijo.DataSource = GlobalDTActivoFijos(UsuarioActual.CveEmpresa)
DdlActivoFijo.DataBind()
DdlActivoFijo.Items.Insert(0, New ListItem("Seleccione", "-1"))
DdlRHPersonal.DataSource = GlobalDTRHPersonal(UsuarioActual.CveEmpresa)
DdlRHPersonal.DataBind()
DdlRHPersonal.Items.Insert(0, New ListItem("Seleccione", "-1"))
DdlSubProyecto.DataSource = GlobalDTSubProyectos(-1, CveEmpresa:=UsuarioActual.CveEmpresa)
DdlSubProyecto.DataBind()
DdlSubProyecto.Items.Insert(0, New ListItem("Seleccione", "-1"))
'If UsuarioActual.Empresa.GralSoloProyecto Then
' LtlSubProyecto.Text = "Proyecto"
' DdlSubProyecto.Items.Clear()
' DdlSubProyecto.DataSource = If(UsuarioActual.Empresa.Funcionalidad(102) = "1" AndAlso Not UsuarioActual.TienePermisoProceso(110), GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa, -1, 1), GlobalDTSubProyectos(-1, -1, UsuarioActual.CveEmpresa, 1))
' DdlSubProyecto.DataBind()
' DdlSubProyecto.Items.Insert(0, New ListItem("Seleccione", "-1"))
' DivProyecto.Visible = False
' 'DdlProyecto.Items(0).Text = ""
'Else
DivProyecto.Visible = True
DdlProyecto.DataSource = GlobalDTProyectos(UsuarioActual.CveEmpresa)
DdlProyecto.DataBind()
DdlProyecto.Items.Insert(0, New ListItem("Seleccione", "-1"))
'End If
DdlCombustible.DataSource = GlobalDTCombustibles(UsuarioActual.CveEmpresa)
DdlCombustible.DataBind()
DdlCombustible.Items.Insert(0, New ListItem("Seleccione", "-1"))
'DdProveedorVinculacion.DataSource = GlobalDTCompProveedores(UsuarioActual.CveEmpresa)
'DdProveedorVinculacion.DataBind()
'DdProveedorVinculacion.Items.Insert(0, New ListItem("Seleccione un Proveedor", "-1"))
DdlBuscarProveedor.DataSource = GlobalDTCompProveedores(UsuarioActual.CveEmpresa)
DdlBuscarProveedor.DataBind()
DdlBuscarProveedor.Items.Insert(0, New ListItem("Seleccione", "-1"))
DdlBuscarPersonal.DataSource = GlobalDTRHPersonal(UsuarioActual.CveEmpresa)
DdlBuscarPersonal.DataBind()
DdlBuscarPersonal.Items.Insert(0, New ListItem("Seleccione", "-1"))
DdlBuscarActivo.DataSource = GlobalDTActivoFijos(UsuarioActual.CveEmpresa)
DdlBuscarActivo.DataBind()
DdlBuscarActivo.Items.Insert(0, New ListItem("Seleccione", "-1"))
DdlAlmacen.DataSource = GlobalDTAlmacen(UsuarioActual.CveEmpresa)
DdlAlmacen.DataBind()
DdlAlmacen.Items.Insert(0, New ListItem("Seleccione", "-1"))
End Sub
Private Sub CargaFolios()
Dim ObjFolios As New ClsGralFolios()
Dim TipoOC As String = "VaG"
If ObjFolios.GetFolios(If(TipoOC = "VAG", "vag", TipoOC), UsuarioActual.CveEmpresa) Then
Dim DT As DataTable = ObjFolios.DtResultados.FiltraParametros("Estado = 'Activo'")
'Verificar primero en la sucursal del usuario
If DT.FiltraParametros("CveSubProyecto = " + UsuarioActual.CveSubProyecto.ToString).Rows.Count > 0 Then
ViewState("CveFolio") = DT.FiltraParametros("CveSubProyecto = " + UsuarioActual.CveSubProyecto.ToString).Rows(0)("CveFolio").ToString.ToEntero
ViewState("FolioActual") = DT.FiltraParametros("CveSubProyecto = " + UsuarioActual.CveSubProyecto.ToString).Rows(0)("FActual").ToString
TxtFolio.Text = DT.Rows(0)("FActual").ToString
ElseIf DT.Rows.Count > 0 Then
ViewState("CveFolio") = DT.Rows(0)("CveFolio").ToString.ToEntero
ViewState("FolioActual") = DT.Rows(0)("FActual").ToString
TxtFolio.Text = DT.Rows(0)("FActual").ToString
Else
Alert("No tiene registrados Folios en esta sucursal.", TipoMensaje.MsgAdvertencia)
End If
DT.Dispose()
End If
ObjFolios.Dispose()
End Sub
Private Sub LimpiarDatos()
DdlProveedores.SelectedIndex = -1
DdlActivoFijo.SelectedIndex = -1
TxtOdometroActual.Text = ""
DdlCombustible.SelectedIndex = -1
TxtLitros.Text = ""
DdlRHPersonal.SelectedIndex = -1
DdlSubProyecto.SelectedIndex = -1
DdlProyecto.SelectedIndex = -1
DdlAlmacen.SelectedIndex = -1
ChkExterno.Checked = False
ChkInterno.Checked = False
TxtObservciones.Text = ""
LblFecha.Text = ""
LblLitrosAF.Text = ""
LblCombustible.Text = ""
LblOdometro.Text = ""
LbPersonal.Text = ""
TxtNombreRecibe.Text = ""
UpParametros.Update()
UpConsumo.Update()
CargaFolios()
End Sub
#End Region
#Region "DDL CHANGED & CHK CHANGED & TXT CHANGUED"
Private Sub DdlActivoFijo_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlActivoFijo.SelectedIndexChanged
Dim ObjValesCombustible As New ClsAF
If ObjValesCombustible.GetValesCombustible(-1, -1, -1, -1, DdlActivoFijo.SelectedValue.ToEntero, -1, -1, -1, -1, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1) Then
Dim dtAF As DataTable = ObjValesCombustible.DtResultados.FiltraParametros("", Orderby:="CveVale DESC")
If dtAF.Rows.Count > 0 Then
Dim dr As DataRow = dtAF.Rows(0)
LblFecha.Text = dr("Fecha").ToString
LblLitrosAF.Text = dr("Litros").ToString
LblCombustible.Text = dr("Combustible").ToString
LblOdometro.Text = dr("Odometro").ToString
If dr("CvePersonal").ToString.ToEntero > 0 Then
LbPersonal.Text = String.Format("{0}, {1}", dr("NombreCompleto").ToString, dr("Recibe").ToString)
Else
LbPersonal.Text = dr("NombreCompleto").ToString
End If
Else
LblFecha.Text = ""
LblLitrosAF.Text = ""
LblCombustible.Text = ""
LblOdometro.Text = ""
LbPersonal.Text = ""
UpConsumo.Update()
End If
End If
ObjValesCombustible.Dispose()
End Sub
'Private Sub DdProveedorVinculacion_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdProveedorVinculacion.SelectedIndexChanged
' Dim ObjValesCombustible As New ClsAF
' If ObjValesCombustible.GetValesCombustible(0, -1, -1, DdProveedorVinculacion.SelectedValue.ToEntero, -1, -1, -1, -1, -1, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1) Then
' GvValesCombustible.DataSource = ObjValesCombustible.DtResultados
' BtnAplicar.Visible = True
' Else
' GvValesCombustible.DataSource = Nothing
' BtnAplicar.Visible = False
' End If
' ObjValesCombustible.Dispose()
' GvValesCombustible.DataBind()
'End Sub
'Private Sub BtnAplicar_Click(sender As Object, e As EventArgs) Handles BtnAplicar.Click
' Dim ObjValesCombustible As New ClsAF
' Dim CveCompra As Integer = 2
' For Each gvr As GridViewRow In GvValesCombustible.Rows
' If gvr.RowType = DataControlRowType.DataRow Then
' If gvr.FCCheckBox("Chk").Checked Then
' ObjValesCombustible.UpdateValeCombustible(gvr.DataKey("CveVale").ToEntero, CveCompra, gvr.DataKey("CveProveedor").ToEntero, gvr.DataKey("Litros").ToEntero, gvr.DataKey("Recibo").ToEntero, gvr.DataKey("Importe").ToEntero, UsuarioActual.CveEmpresa)
' End If
' End If
' Next
' Alert("Se Aplico con exito")
' ObjValesCombustible.Dispose()
'End Sub
Private Sub TxtFolio_TextChanged(sender As Object, e As EventArgs) Handles TxtFolio.TextChanged
ViewState("EstablecioFolio") = True
End Sub
Private Sub ChkInterno_CheckedChanged(sender As Object, e As EventArgs) Handles ChkInterno.CheckedChanged
'Valida Si es interno o externo
If ChkInterno.Checked = True Then
DivProveedor.Visible = False
DivAlmacen.Visible = True
ChkExterno.Checked = False
Else
DivProveedor.Visible = True
DivAlmacen.Visible = False
ChkExterno.Checked = True
End If
End Sub
Private Sub ChkExterno_CheckedChanged(sender As Object, e As EventArgs) Handles ChkExterno.CheckedChanged
'Valida Si es interno o externo
If ChkExterno.Checked = True Then
DivProveedor.Visible = True
DivAlmacen.Visible = False
ChkInterno.Checked = False
Else
ChkInterno.Checked = True
DivProveedor.Visible = False
DivAlmacen.Visible = True
End If
End Sub
#End Region
#Region "ROW DATA BOUND"
Private Sub GVBuscar_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GVBuscar.RowDataBound
For Each gvr As GridViewRow In GVBuscar.Rows
If gvr.RowType = DataControlRowType.DataRow Then
If gvr.FCLiteral("LtlProveedor").Text.Equals("") Then
gvr.FCLiteral("LtlProveedor").Visible = False
gvr.FCDropDownList("DdlBuscarP").DataSource = GlobalDTCompProveedores(UsuarioActual.CveEmpresa)
gvr.FCDropDownList("DdlBuscarP").DataBind()
gvr.FCDropDownList("DdlBuscarP").Items.Insert(0, New ListItem("Sin Asignar", "-1"))
Else
gvr.FCDropDownList("DdlBuscarP").Visible = False
End If
End If
Next
End Sub
#End Region
#Region "BTN GUARDAR, ACTUALIZAR, BUSCAR, ETC...."
Private Sub BtnGuardar_Click(sender As Object, e As EventArgs) Handles BtnGuardar.Click
Dim ObjVales As New ClsAF
Dim ObjInventario As New ClsInventarios(ObjVales.IniciaTransacSQL())
Dim CveVale As Integer
Dim Folio As Integer
Dim Msg As New StringBuilder
Dim CapacidadTotal As Integer = 40
Dim Rendimiento As Integer = 10
Dim ProximaRecarga As Integer = LblOdometro.Text.ToEntero + (LblLitrosAF.Text.ToEntero * Rendimiento)
Dim OdometroDif As Integer = TxtOdometroActual.Text.ToEntero - LblOdometro.Text.ToEntero
Dim Porcentaje As Double = (OdometroDif / Rendimiento) * 0.15
Dim CveMovimientoSalida = -1
Dim FolioSalida = -1
Dim ErrorMovInv As Boolean = False
Dim TextoError = ""
Dim Row = GlobalDTCombustibles(UsuarioActual.CveEmpresa).FiltroPrimero(String.Format("CveCombustible = {0}", DdlCombustible.SelectedValue.ToEntero))
Dim CvePS = Row("CvePS").ToString.ToEntero
Dim CveUM = Row("CveUM").ToString.ToEntero
'TipoVale 1 = Externo
'TipoVale 2 = Interno
''codigo temporal, que desactiva la validacion del odometro
If UsuarioActual.CveEmpresa = 13 Then ProximaRecarga = TxtOdometroActual.Text.ToEntero
'Si edito Folio
Dim FolioUsuario = If(EstablecioFolio, TxtFolio.Text.Trim.ToEntero, -1)
'Si el odometro actual es menor a la proxima recarga
If TxtOdometroActual.Text.ToEntero < ProximaRecarga Then
If TxtOdometroActual.Text.ToEntero > LblOdometro.Text.ToEntero Then
If TxtLitros.Text.ToEntero <= ((OdometroDif / Rendimiento) + Porcentaje) Then
'Si TipoVale es 1 = Externo
If ChkExterno.Checked = True Then
CveVale = ObjVales.AddValesCombustible(FolioUsuario, 0, DdlProveedores.SelectedValue.ToEntero, DdlActivoFijo.SelectedValue.ToEntero, DdlRHPersonal.SelectedValue.ToEntero, TxtFechaVale.Text.ToDate, TxtNombreRecibe.Text, DdlSubProyecto.SelectedValue.ToEntero, TxtObservciones.Text, TxtOdometroActual.Text.ToEntero, DdlCombustible.SelectedValue.ToEntero, TxtLitros.Text.ToDouble, 1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
Folio = ObjVales.FolioVale
If CveVale < 0 Then
ErrorMovInv = True
End If
ElseIf ChkInterno.Checked = True Then
CveVale = ObjVales.AddValesCombustible(FolioUsuario, 0, DdlProveedores.SelectedValue.ToEntero, DdlActivoFijo.SelectedValue.ToEntero, DdlRHPersonal.SelectedValue.ToEntero, TxtFechaVale.Text.ToDate, TxtNombreRecibe.Text, DdlSubProyecto.SelectedValue.ToEntero, TxtObservciones.Text, TxtOdometroActual.Text.ToEntero, DdlCombustible.SelectedValue.ToEntero, TxtLitros.Text.ToDouble, 2, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
Folio = ObjVales.FolioVale
'AGREGAMOS LA SALIDA
CveMovimientoSalida = ObjInventario.AddMovimiento(DdlAlmacen.SelectedValue.ToEntero, 3, 1, TxtFechaVale.Text.Trim.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1)
FolioSalida = ObjInventario.Folio
If CveMovimientoSalida <= 0 Then
TextoError = "No se pudo generar el movimiento de salida correctamente"
ErrorMovInv = True
Else
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalida, TxtLitros.Text.Trim.ToEntero, CveUM, CvePS, -1, DdlActivoFijo.SelectedValue.ToEntero) Then
ErrorMovInv = True
TextoError = "Ocurrió un error al guardar los movimientos"
End If
End If
Else
Alert("Debe Seleccionar un Tipo de Vale", TipoMensaje.MsgError)
End If
Else
Alert("No se puede registrar una cantidad de litros mayor a " + ((OdometroDif / Rendimiento) + Porcentaje).ToString, TipoMensaje.MsgAdvertencia)
End If
Else
Alert("El odómetro debe ser mayor a " + LblOdometro.Text, TipoMensaje.MsgAdvertencia)
End If
'Si el odometro es mayor a la proxima recarga
Else
'Si TipoVale es 1 = Externo
If ChkExterno.Checked = True Then
CveVale = ObjVales.AddValesCombustible(FolioUsuario, 0, DdlProveedores.SelectedValue.ToEntero, DdlActivoFijo.SelectedValue.ToEntero, DdlRHPersonal.SelectedValue.ToEntero, TxtFechaVale.Text.ToDate, TxtNombreRecibe.Text, DdlSubProyecto.SelectedValue.ToEntero, TxtObservciones.Text, TxtOdometroActual.Text.ToEntero, DdlCombustible.SelectedValue.ToEntero, TxtLitros.Text.ToEntero, 1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
Folio = ObjVales.FolioVale
If CveVale < 0 Then
ErrorMovInv = True
End If
'Si TipoVale es 2 = Interno
ElseIf ChkInterno.Checked = True Then
CveVale = ObjVales.AddValesCombustible(FolioUsuario, 0, DdlProveedores.SelectedValue.ToEntero, DdlActivoFijo.SelectedValue.ToEntero, DdlRHPersonal.SelectedValue.ToEntero, TxtFechaVale.Text.ToDate, TxtNombreRecibe.Text, DdlSubProyecto.SelectedValue.ToEntero, TxtObservciones.Text, TxtOdometroActual.Text.ToEntero, DdlCombustible.SelectedValue.ToEntero, TxtLitros.Text.ToDouble, 2, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
Folio = ObjVales.FolioVale
'AGREGAMOS LA SALIDA
CveMovimientoSalida = ObjInventario.AddMovimiento(DdlAlmacen.SelectedValue.ToEntero, 3, 1, TxtFechaVale.Text.Trim.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1)
FolioSalida = ObjInventario.Folio
If CveMovimientoSalida <= 0 Then
TextoError = "No se pudo generar el movimiento de salida correctamente"
ErrorMovInv = True
Else
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalida, TxtLitros.Text.Trim.ToEntero, CveUM, CvePS, -1, DdlActivoFijo.SelectedValue.ToEntero) Then
ErrorMovInv = True
TextoError = "Ocurrió un error al guardar los movimientos"
End If
End If
Else
Alert("Debe Seleccionar un Tipo de Vale", TipoMensaje.MsgError)
End If
End If
If Not ErrorMovInv Then
ObjVales.Commit()
Msg.AppendFormat("<br/>El Movimiento se registro con el Folio: <b>{0}</b>", Folio)
Msg.AppendFormat("<br/><br/> <a class=""Texto"" target='_blank' href=""/Compras/PopUpVerFactura.aspx?P={0}"">Imprimir Vale</a> ", Encripta(String.Format("OP=VAL&CveVale={0}", CveVale)))
If ChkInterno.Checked = True Then
Msg.AppendFormat("<br/><br/>Folio de Salida: <b><a href = ""/Inventarios/EntradasSalidas.aspx?CveMovimiento={0}"" class=""texto"" target=""_blank"" >{1}</a></b>", CveMovimientoSalida, FolioSalida)
End If
Alert(Msg.ToString, TipoMensaje.MsgInformacion)
Else
ObjVales.RollBack()
Alert(TextoError, TipoMensaje.MsgError)
End If
ObjVales.Dispose()
LimpiarDatos()
End Sub
Private Sub BtnActualizar_Click(sender As Object, e As EventArgs) Handles BtnActualizar.Click
Dim ObjValesCombustible As New ClsAF
For Each gvr As GridViewRow In GVBuscar.Rows
If gvr.RowType = DataControlRowType.DataRow Then
If gvr.FCCheckBox("Chk").Checked Then
Dim CveProveedor = If(gvr.FCDropDownList("DdlBuscarP").Visible, gvr.FCDropDownList("DdlBuscarP").SelectedValue.ToEntero, gvr.FCLiteral("LtlProveedor").Text.ToEntero)
ObjValesCombustible.UpdateValeCombustible(gvr.DataKey("CveVale").ToEntero, gvr.DataKey("CveCompra").ToEntero, CveProveedor, gvr.FCTextBox("TxtNombreRecibe").Text, gvr.FCTextBox("TxtCantidad").Text.ToDouble, gvr.FCTextBox("TxtRecibo").Text.ToEntero, gvr.FCTextBox("TxtImporte").Text.ToEntero, UsuarioActual.CveEmpresa)
Alert("Se Actualizo con exito")
ActualizarM()
Else
Alert("Seleccione una opcion")
End If
End If
Next
ObjValesCombustible.Dispose()
End Sub
Private Sub BtnBuscar_Click(sender As Object, e As EventArgs) Handles BtnBuscar.Click
Dim ObjValesCombustible As New ClsAF
If ObjValesCombustible.GetValesCombustible(-1, -1, If(TxtBuscar.Text.Equals(""), -1, TxtBuscar.Text.ToEntero), DdlBuscarProveedor.SelectedValue.ToEntero, DdlBuscarActivo.SelectedValue.ToEntero, -1, -1, -1, -1, DdlBuscarPersonal.SelectedValue.ToEntero, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1) Then
GVBuscar.DataSource = ObjValesCombustible.DtResultados
If ObjValesCombustible.DtResultados.Rows.Count > 0 Then
BtnActualizar.Visible = True
End If
Else
GVBuscar.DataSource = Nothing
BtnActualizar.Visible = False
End If
ObjValesCombustible.Dispose()
GVBuscar.DataBind()
UpBuscar.Update()
End Sub
Private Sub ActualizarM()
Dim ObjValesCombustible As New ClsAF
If ObjValesCombustible.GetValesCombustible(-1, -1, If(TxtBuscar.Text.Equals(""), -1, TxtBuscar.Text.ToEntero), DdlBuscarProveedor.SelectedValue.ToEntero, DdlBuscarActivo.SelectedValue.ToEntero, -1, -1, -1, -1, DdlBuscarPersonal.SelectedValue.ToEntero, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1) Then
GVBuscar.DataSource = ObjValesCombustible.DtResultados
Else
GVBuscar.DataSource = Nothing
End If
ObjValesCombustible.Dispose()
GVBuscar.DataBind()
UpBuscar.Update()
End Sub
#End Region
End Class