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 DdlClasificacion.SelectedValue.ToEntero <= 0 Then Alert("Debe seleccionar una clasificacion", 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") = If(DdlPS.SelectedValue = "", "-1", 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, CveClasificacion:=If(Dr("CvePS").ToString = "", 20, Dr("CveClasificacion").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, CveClasificacion:=If(Dr("CvePS").ToString = "-1", Dr("CveClasificacion").ToString.ToEntero, -1)) 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, CveClasificacion:=If(Dr("CvePS").ToString = "-1", Dr("CveClasificacion").ToString.ToEntero, -1)) 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