Files
SIG/Ventas/Promociones.aspx.vb
2020-01-22 15:34:29 -07:00

495 lines
20 KiB
VB.net

Option Explicit On
Option Strict On
Imports System.Data
Imports Extensiones
Partial Class Ventas_Promociones
Inherits ClsPaginas
#Region " PROPIEDADES "
Private Property TempDT As DataTable
Get
Return CType(ViewState("TempDT"), DataTable)
End Get
Set(value As DataTable)
ViewState("TempDT") = value
End Set
End Property
Private Property CvePromocion As Integer
Get
Return ViewState("CvePromocion").ToString.ToEntero
End Get
Set(value As Integer)
ViewState("CvePromocion") = value
End Set
End Property
Private Property CveConsecutivo As Integer
Get
Return ViewState("CveConsecutivo").ToString.ToEntero
End Get
Set(value As Integer)
ViewState("CveConsecutivo") = value
End Set
End Property
Private Property DtSubProyectos As DataTable
Get
Return If(IsNothing(ViewState("DtSubProyectos")), Nothing, CType(ViewState("DtSubProyectos"), DataTable))
End Get
Set(value As DataTable)
ViewState("DtSubProyectos") = value
End Set
End Property
#End Region
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
CvePromocion = -1
CargaValoresIniciales()
CargaMonedas()
If Request("CvePromocion") IsNot Nothing AndAlso Request("CvePromocion").ToString.ToEntero > 0 Then
CvePromocion = Request("CvePromocion").ToString.ToEntero
CargaDatos()
Else
ChkEstatus.Enabled = True
ChkEstatus.Checked = True
CreaDT()
End If
End If
End Sub
#Region " VALORES INICIALES "
Private Sub CargaValoresIniciales()
'CLASIFICACIONES
DdlClasificacion.DataSource = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltraParametros(" Codigo = '' OR Codigo IS NULL ", Orderby:="Clasificacion")
DdlClasificacion.DataBind()
DdlClasificacion.Items.Insert(0, New ListItem("Seleccione", "-1"))
'CARGA PS
DdlPS.setEsWebService(UsuarioActual.Empresa.Funcionalidad(105) = "1")
If Not DdlPS.UsaWebService AndAlso CType(DdlPS.DataSource, DataTable) Is Nothing Then
DdlPS.DataSource = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa)
DdlPS.DataBind()
End If
'CARGA SUBPROYECTOS
DdlSubProyecto.DataSource = GlobalDTSubProyectos(-1, CveEmpresa:=UsuarioActual.CveEmpresa)
DdlSubProyecto.DataBind()
DdlVendedor.DataSource = GlobalDTVendedores(UsuarioActual.CveEmpresa)
DdlVendedor.DataBind()
DdlVendedor.Items.Insert(0, New ListItem("Todos", "-1"))
DdlCliente.DataSource = GlobalDTCliente(UsuarioActual.CveEmpresa)
DdlCliente.DataBind()
DdlCliente.Items.Insert(0, New ListItem("todos", "-1"))
TxtFechaI.Text = Now.FirstDayOfMonth.ToShortDateString
TxtFechaF.Text = Now.LastDayOfMonth.ToShortDateString
End Sub
Private Sub CreaDT()
TempDT = New DataTable
TempDT.Columns.Add("Estatus", GetType(Integer))
TempDT.Columns.Add("CvePromocionDetalle", GetType(Integer))
TempDT.Columns.Add("CveClasificacion", GetType(Integer))
TempDT.Columns.Add("Clasificacion", GetType(String))
TempDT.Columns.Add("CvePS", GetType(Integer))
TempDT.Columns.Add("CodigoPS", GetType(String))
TempDT.Columns.Add("PUAnterior", GetType(Decimal))
TempDT.Columns.Add("PUPromocion", GetType(Decimal))
TempDT.Columns.Add("CveTipoPromocion", GetType(Integer))
TempDT.Columns.Add("TipoPromocion", GetType(String))
TempDT.Columns.Add("Promocion", GetType(String))
TempDT.Columns.Add("CantidadMinima", GetType(Integer))
TempDT.Columns.Add("AplicaRestriccionTexto", GetType(String))
TempDT.Columns.Add("AplicaRestriccion", GetType(Boolean))
TempDT.Columns.Add("HoraInicio", GetType(DateTime))
TempDT.Columns.Add("HoraFin", GetType(DateTime))
TempDT.Columns.Add("AplicaLunes", GetType(Boolean))
TempDT.Columns.Add("AplicaMartes", GetType(Boolean))
TempDT.Columns.Add("AplicaMiercoles", GetType(Boolean))
TempDT.Columns.Add("AplicaJueves", GetType(Boolean))
TempDT.Columns.Add("AplicaViernes", GetType(Boolean))
TempDT.Columns.Add("AplicaSabado", GetType(Boolean))
TempDT.Columns.Add("AplicaDomingo", GetType(Boolean))
End Sub
#Region " PS "
Protected Sub DdlClasificacion_SelectedIndexChanged(sender As Object, e As EventArgs)
ChangeDdlProducto()
End Sub
Private Sub ChangeDdlProducto()
If UsuarioActual.Empresa.Funcionalidad(105) = "" Then
DdlPS.DataSource = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CveClasificacion:=DdlClasificacion.SelectedValue.ToEntero).FiltraParametros("", "PSCodigo")
DdlPS.DataBind()
DdlPS.ddl.Items.Insert(0, New ListItem(" Seleccione ", "-1"))
Else
DdlPS.ddlWS.Attributes.Add("data-idClasificacion", DdlClasificacion.SelectedValue)
End If
End Sub
#End Region
#End Region
#Region " CARGA DATOS "
Private Sub CargaDatos()
Dim ObjVentas As New ClsVentas
If ObjVentas.GetPromociones(CvePromocion, "-1", -1, -1, -1, UsuarioActual.CveEmpresa, -1) AndAlso ObjVentas.DtResultados.Rows.Count = 1 Then
Dim Dr = ObjVentas.DtResultados.Rows(0)
TxtPromocion.Text = Dr("Promocion").ToString
TxtFechaI.Text = Dr("FechaInicio").ToString.ToDate.ToShortDateString
TxtFechaF.Text = Dr("FechaFin").ToString.ToDate.ToShortDateString
DdlSubProyecto.SelectedValue = Dr("CveSubProyecto").ToString
If Dr("CveVendedor").ToString.ToEntero > 0 Then DdlVendedor.SelectedValue = Dr("CveVendedor").ToString
If Dr("CveCliente").ToString.ToEntero > 0 Then DdlCliente.SelectedValue = Dr("CveCliente").ToString
ChkEstatus.Checked = If(Dr("Estatus").ToString = "True", True, False)
DdlMoneda.SelectedValueExist(Dr("CveMoneda").ToString)
If ObjVentas.GetPromocionesDetalle(CvePromocion, UsuarioActual.CveEmpresa) Then
TempDT = ObjVentas.DtResultados
CargaGrid()
Else
Alert("Ocurrió un error al consultar los detalles de la promoción. Por favor vuelva a intentar.", TipoMensaje.MsgError)
End If
Else
Alert("Ocurrió un error al consultar la promoción. Por favor vuelva a intentar.", TipoMensaje.MsgError)
End If
ObjVentas.Dispose()
End Sub
Private Sub CargaGrid()
GvDatos.DataSource = TempDT.FiltraParametros("Estatus <> 2")
GvDatos.DataBind()
UpDatos.Update()
End Sub
Private Sub CargaMonedas()
DdlMoneda.DataSource = GlobalDTMonedas
DdlMoneda.DataBind()
End Sub
#End Region
#Region " AGREGAR "
Protected Sub LbAgregarModal_Click(sender As Object, e As EventArgs)
RegistraScript("$('#DivAgregar').modal('show')")
CveConsecutivo = -1
DdlClasificacion.SelectedValue = "-1"
ChangeDdlProducto()
LbPUActual.Text = ""
DdlTipoPromocion.SelectedValue = "-1"
TxtPromocionConcepto.Text = ""
TxtCantMinima.Text = ""
ChkRestricciones.Checked = False
'DivRestricciones.Visible = False
ChkLunes.Checked = False
ChkMartes.Checked = False
ChkMiercoles.Checked = False
ChkJueves.Checked = False
ChkViernes.Checked = False
ChkSabado.Checked = False
ChkDomingo.Checked = False
BtnAgregar.Text = "Agregar"
UpAgregar.Update()
End Sub
Protected Sub BtnAgregar_Click(sender As Object, e As EventArgs)
If DdlPS.SelectedValue.ToEntero <= 0 Then
Alert("Debe seleccionar un Producto/Servicio.", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
Dim Dr As DataRow = Nothing
If CveConsecutivo >= 0 Then
Dr = TempDT.Rows(CveConsecutivo)
Dr("Estatus") = 1
Else
Dr = TempDT.NewRow
Dr("Estatus") = 0
End If
If DdlClasificacion.SelectedValue.ToEntero > 0 Then
Dr("CveClasificacion") = DdlClasificacion.SelectedValue
Dr("Clasificacion") = DdlClasificacion.SelectedItem.Text
Else
Dr("CveClasificacion") = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=DdlPS.SelectedValue.ToEntero).FiltroPrimeroValor("CveClasificacion")
Dr("Clasificacion") = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=DdlPS.SelectedValue.ToEntero).FiltroPrimeroValor("Clasificacion")
End If
Dr("CvePS") = DdlPS.SelectedValue
Dr("CodigoPS") = DdlPS.SelectedText
Dr("PUAnterior") = LbPUActual.Text.ToDecimal
Dr("CveTipoPromocion") = DdlTipoPromocion.SelectedValue.ToEntero
Dr("TipoPromocion") = DdlTipoPromocion.SelectedItem.Text
Dr("Promocion") = TxtPromocionConcepto.Text
If DdlTipoPromocion.SelectedValue.ToEntero.Contiene(1, 3) Then
Dr("PUPromocion") = TxtPromocionConcepto.Text.ToDecimal
Else
Dr("PUPromocion") = LbPUActual.Text.ToDecimal - (LbPUActual.Text.ToDecimal * TxtPromocionConcepto.Text.ToDecimal / 100)
End If
If DdlTipoPromocion.SelectedValue.ToEntero = 3 Then
Dr("CantidadMinima") = TxtCantMinima.Text.ToEntero
Else
Dr("CantidadMinima") = 1
End If
If ChkRestricciones.Checked Then
Dr("AplicaRestriccionTexto") = "Si"
Dr("AplicaRestriccion") = True
Dr("HoraInicio") = Now.ToShortDateString.ToDate.AddHours(TxtHoraInicio.Text.Trim.Substring(0, 2).ToEntero).AddMinutes(TxtHoraInicio.Text.Trim.Substring(2, 2).ToEntero)
Dr("HoraFin") = Now.ToShortDateString.ToDate.AddHours(TxtHoraFin.Text.Trim.Substring(0, 2).ToEntero).AddMinutes(TxtHoraFin.Text.Trim.Substring(2, 2).ToEntero)
Dr("AplicaLunes") = ChkLunes.Checked
Dr("AplicaMartes") = ChkMartes.Checked
Dr("AplicaMiercoles") = ChkMiercoles.Checked
Dr("AplicaJueves") = ChkJueves.Checked
Dr("AplicaViernes") = ChkViernes.Checked
Dr("AplicaSabado") = ChkSabado.Checked
Dr("AplicaDomingo") = ChkDomingo.Checked
Else
Dr("AplicaRestriccionTexto") = "No"
Dr("AplicaRestriccion") = False
Dr("HoraInicio") = MinFecha.ToDateTime
Dr("HoraFin") = MaxFecha.ToDateTime
Dr("AplicaLunes") = False
Dr("AplicaMartes") = False
Dr("AplicaMiercoles") = False
Dr("AplicaJueves") = False
Dr("AplicaViernes") = False
Dr("AplicaSabado") = False
Dr("AplicaDomingo") = False
End If
If CveConsecutivo >= 0 Then
Dr.AcceptChanges()
Else
TempDT.Rows.Add(Dr)
End If
CargaGrid()
RegistraScript("$('#DivAgregar').modal('hide')")
End Sub
Protected Sub ChkRestricciones_CheckedChanged(sender As Object, e As EventArgs)
DivRestricciones.Visible = ChkRestricciones.Checked
End Sub
Protected Sub BtnGenerarAPartir_Click(sender As Object, e As EventArgs)
CvePromocion = 0
End Sub
#End Region
#Region " GV PS "
Private Sub GvDatos_RowCommand(sender As Object, e As GridViewCommandEventArgs) Handles GvDatos.RowCommand
If e.CommandName = "Editar" Then
Dim Gvr = GvDatos.Rows(e.CommandArgument.ToString.ToEntero)
RegistraScript("$('#DivAgregar').modal('show')")
CveConsecutivo = e.CommandArgument.ToString.ToEntero
DdlClasificacion.SelectedValue = Gvr.DataKey("CveClasificacion")
ChangeDdlProducto()
If UsuarioActual.Empresa.Funcionalidad(105) = "" Then
DdlPS.SelectedValue = Gvr.DataKey("CvePS")
Else
DdlPS.SelectedValue = Gvr.DataKey("CvePS")
DdlPS.SelectedText = Gvr.DataKey("CodigoPS")
End If
LbPUActual.Text = Gvr.DataKey("PUAnterior").FormatoNumero
DdlTipoPromocion.SelectedValue = Gvr.DataKey("CveTipoPromocion")
DdlTipoPromocion_SelectedIndexChanged(sender, Nothing)
TxtPromocionConcepto.Text = Gvr.DataKey("Promocion").FormatoNumero(4)
TxtCantMinima.Text = Gvr.DataKey("CantidadMinima")
TxtHoraInicio.Text = $"{Gvr.DataKey("HoraInicio").ToDate.Hour}:{Gvr.DataKey("HoraInicio").ToDate.Minute}"
TxtHoraFin.Text = $"{Gvr.DataKey("HoraFin").ToDate.Hour}:{Gvr.DataKey("HoraFin").ToDate.Minute}"
ChkRestricciones.Checked = CBool(Gvr.DataKey("AplicaRestriccion"))
DivRestricciones.Visible = CBool(Gvr.DataKey("AplicaRestriccion"))
ChkLunes.Checked = CBool(Gvr.DataKey("AplicaLunes"))
ChkMartes.Checked = CBool(Gvr.DataKey("AplicaMartes"))
ChkMiercoles.Checked = CBool(Gvr.DataKey("AplicaMiercoles"))
ChkJueves.Checked = CBool(Gvr.DataKey("AplicaJueves"))
ChkViernes.Checked = CBool(Gvr.DataKey("AplicaViernes"))
ChkSabado.Checked = CBool(Gvr.DataKey("AplicaSabado"))
ChkDomingo.Checked = CBool(Gvr.DataKey("AplicaDomingo"))
BtnAgregar.Text = "Actualizar"
UpAgregar.Update()
GvDatos.EditIndex = -1
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 = TempDT.Rows(e.RowIndex)
If CvePromocion > 0 Then
DbRow("Estatus") = 2
Else
TempDT.Rows.Remove(DbRow)
End If
CargaGrid()
End Sub
#End Region
#Region " GUARDAR "
Protected Sub BtnGuardar_Click(sender As Object, e As EventArgs)
If CvePromocion > 0 Then
ActualizaPromocion()
Else
GuardaPromocion()
End If
End Sub
Private Sub GuardaPromocion()
Dim ObjVentas As New ClsVentas
Dim TieneError = False
ObjVentas.IniciaTransacSQL()
CvePromocion = ObjVentas.AddPromociones(TxtPromocion.Text.Trim, If(IsDate(TxtFechaI.Text), TxtFechaI.Text.ToDate, MinFecha), If(IsDate(TxtFechaF.Text), TxtFechaF.Text.ToDate, MaxFecha),
DdlVendedor.SelectedValue.ToEntero, DdlCliente.SelectedValue.ToEntero, ChkEstatus.Checked, DdlMoneda.SelectedValue.ToEntero, UsuarioActual.CveUsuario,
UsuarioActual.CveEmpresa, DdlSubProyecto.SelectedValue.ToEntero, DdlTipoAplicacion.SelectedValue.ToString)
If CvePromocion > 0 Then
For Each Dr As DataRow In TempDT.Rows
If Not ObjVentas.AddPromocionesDetalle(CvePromocion, Dr("CvePS").ToString.ToEntero, Dr("CveTipoPromocion").ToString.ToEntero, Dr("Promocion").ToString.ToDouble, Dr("PUAnterior").ToString.ToDouble, Dr("PUPromocion").ToString.ToDouble,
CBool(Dr("AplicaRestriccion")), CBool(Dr("AplicaLunes")), CBool(Dr("AplicaMartes")), CBool(Dr("AplicaMiercoles")), CBool(Dr("AplicaJueves")), CBool(Dr("AplicaViernes")), CBool(Dr("AplicaSabado")), CBool(Dr("AplicaDomingo")),
Dr("HoraInicio").ToString.ToDateTime, Dr("HoraFin").ToString.ToDateTime, Dr("CantidadMinima").ToString.ToEntero) Then
TieneError = True
Exit For
End If
Next
Else
TieneError = True
End If
If Not TieneError Then
ObjVentas.Commit()
Alert("La promoción se guardo correctamente.", TipoMensaje.MsgInformacion, "document.location.href=""/Ventas/CatPromociones.aspx"";")
Else
ObjVentas.RollBack()
Alert("Ocurrió un error al guardar la promoción. Por favor vuelva a intentar.", TipoMensaje.MsgError)
End If
ObjVentas.Dispose()
End Sub
Private Sub ActualizaPromocion()
Dim ObjVentas As New ClsVentas
Dim TieneError = False
ObjVentas.IniciaTransacSQL()
If ObjVentas.UpdatePromociones(TxtPromocion.Text.Trim, If(IsDate(TxtFechaI.Text), TxtFechaI.Text.ToDate, MinFecha), If(IsDate(TxtFechaF.Text), TxtFechaF.Text.ToDate, MaxFecha), DdlVendedor.SelectedValue.ToEntero, DdlCliente.SelectedValue.ToEntero, ChkEstatus.Checked, DdlMoneda.SelectedValue.ToEntero, UsuarioActual.CveUsuario, CvePromocion, DdlSubProyecto.SelectedValue.ToEntero) Then
For Each Dr As DataRow In TempDT.FiltraParametros("Estatus = 0").Rows
If Not ObjVentas.AddPromocionesDetalle(CvePromocion, Dr("CvePS").ToString.ToEntero, Dr("CveTipoPromocion").ToString.ToEntero, Dr("Promocion").ToString.ToDouble, Dr("PUAnterior").ToString.ToDouble, Dr("PUPromocion").ToString.ToDouble,
CBool(Dr("AplicaRestriccion")), CBool(Dr("AplicaLunes")), CBool(Dr("AplicaMartes")), CBool(Dr("AplicaMiercoles")), CBool(Dr("AplicaJueves")), CBool(Dr("AplicaViernes")), CBool(Dr("AplicaSabado")), CBool(Dr("AplicaDomingo")),
Dr("HoraInicio").ToString.ToDateTime, Dr("HoraFin").ToString.ToDateTime, Dr("CantidadMinima").ToString.ToEntero) Then
TieneError = True
Exit For
End If
Next
If Not TieneError Then
For Each Dr As DataRow In TempDT.FiltraParametros("Estatus = 1").Rows
If Not ObjVentas.UpdatePromocionesDetalle(Dr("CvePromocionDetalle").ToString.ToEntero, CvePromocion, Dr("CvePS").ToString.ToEntero, Dr("CveTipoPromocion").ToString.ToEntero, Dr("Promocion").ToString.ToDouble, Dr("PUAnterior").ToString.ToDouble, Dr("PUPromocion").ToString.ToDouble,
CBool(Dr("AplicaRestriccion")), CBool(Dr("AplicaLunes")), CBool(Dr("AplicaMartes")), CBool(Dr("AplicaMiercoles")), CBool(Dr("AplicaJueves")), CBool(Dr("AplicaViernes")), CBool(Dr("AplicaSabado")), CBool(Dr("AplicaDomingo")),
Dr("HoraInicio").ToString.ToDateTime, Dr("HoraFin").ToString.ToDateTime, Dr("CantidadMinima").ToString.ToEntero) Then
TieneError = True
Exit For
End If
Next
End If
If Not TieneError Then
For Each Dr As DataRow In TempDT.FiltraParametros("Estatus = 2").Rows
If Not ObjVentas.RemovePromocionesDetalle(Dr("CvePromocionDetalle").ToString.ToEntero) Then
TieneError = True
Exit For
End If
Next
End If
Else
TieneError = True
End If
If Not TieneError Then
ObjVentas.Commit()
Alert("La promoción se guardo correctamente.", TipoMensaje.MsgInformacion, "document.location.href=""/Ventas/CatPromociones.aspx"";")
Else
ObjVentas.RollBack()
Alert("Ocurrió un error al guardar la promoción. Por favor vuelva a intentar.", TipoMensaje.MsgError)
End If
ObjVentas.Dispose()
End Sub
#End Region
#Region " ELIMINAR "
Protected Sub BtnEliminar_Click(sender As Object, e As EventArgs)
Dim ObjVentas As New ClsVentas
ObjVentas.IniciaTransacSQL()
Dim TieneError = False
If ObjVentas.RemovePromocionesDetalle(CvePromocion) Then
If Not ObjVentas.RemovePromociones(CvePromocion, UsuarioActual.CveEmpresa) Then
TieneError = True
End If
Else
TieneError = True
End If
If Not TieneError Then
ObjVentas.Commit()
Alert("La promoción se elimino correctamente.", TipoMensaje.MsgInformacion, "document.location.href=""/Ventas/CatPromociones.aspx"";")
Else
ObjVentas.RollBack()
Alert("Ocurrió un error al registrar la promoción. Por favor vuelva a intentar.", TipoMensaje.MsgError)
End If
ObjVentas.Dispose()
End Sub
#End Region
Protected Sub DdlTipoPromocion_SelectedIndexChanged(sender As Object, e As EventArgs)
If DdlTipoPromocion.SelectedValue = "3" Then
DivCantMinima.Visible = True
Else
DivCantMinima.Visible = False
End If
End Sub
End Class