diff --git a/App_Code/ClsClasificaciones.vb b/App_Code/ClsClasificaciones.vb index 7ce2da27d..5c81d9f0c 100644 --- a/App_Code/ClsClasificaciones.vb +++ b/App_Code/ClsClasificaciones.vb @@ -421,13 +421,14 @@ Public Class ClsClasificaciones Return Retorno End Function - Public Function UpdateClasificacionFranquicia(CveClasificacion As Integer, CveEmpresaActual As Integer, CveEmpresaFranquicia As Integer) As Boolean + Public Function UpdateClasificacionFranquicia(CveClasificacion As Integer, Clasificacion As String, CveEmpresaActual As Integer, CveEmpresaFranquicia As Integer) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Vta_ClasificacionFranquiciaUpdate") With SqlAdapter.SelectCommand.Parameters .Add("@CveClasificacion", SqlDbType.Int).Value = CveClasificacion + .Add("@Clasificacion", SqlDbType.VarChar).Value = Clasificacion .Add("@CveEmpresaActual", SqlDbType.Int).Value = CveEmpresaActual .Add("@CveEmpresaFranquicia", SqlDbType.Int).Value = CveEmpresaFranquicia End With diff --git a/General/SaldosIniciales.aspx.vb b/General/SaldosIniciales.aspx.vb index 76b6e6e28..72563b724 100644 --- a/General/SaldosIniciales.aspx.vb +++ b/General/SaldosIniciales.aspx.vb @@ -2581,7 +2581,7 @@ Partial Class General_SaldosIniciales Dim ObjMovimientos As New ClsInventarios ObjMovimientos.IniciaTransacSQL() - Dim ProductosServiciosRef As DataTable = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa) + Dim ProductosServiciosRef As DataTable = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, Estatus:=-1) Dim AlmacenRef As DataTable = GlobalDTAlmacen(UsuarioActual.CveEmpresa) Dim contadorMovimientos As Integer = 0 Dim listadoMovimientos As String = "" diff --git a/Ventas/CatClasificaciones.aspx.vb b/Ventas/CatClasificaciones.aspx.vb index 250fe13ba..23e1657fa 100644 --- a/Ventas/CatClasificaciones.aspx.vb +++ b/Ventas/CatClasificaciones.aspx.vb @@ -75,10 +75,19 @@ Partial Class CatClasificaciones Set(value As Boolean) ViewState("CargaCostos") = value End Set - End Property - + End Property + Private Property ClasificacionOriginal As String + Get + Return IfNull(ViewState("ClasificacionOriginal"), "", ViewState("ClasificacionOriginal").ToString()).ToString() + End Get + Set(value As String) + ViewState("ClasificacionOriginal") = value + End Set + End Property + + #End Region - + Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load If Not Page.IsPostBack Then @@ -86,6 +95,7 @@ Partial Class CatClasificaciones CargaCostos = True CargaIngresos = True DtCuentasContables = Nothing + ClasificacionOriginal = "" CargaDdlSATPS() CargaDDLs() @@ -149,56 +159,85 @@ Partial Class CatClasificaciones Dim ObjClasificaciones As New ClsClasificaciones Dim objConta As New ClsContabilidad(ObjClasificaciones.IniciaTransacSQL) Dim RequireSerieLote As Integer = If(ChkRequiereSerieLote.Checked, 1, 0) + Dim TieneError As Boolean = False - If HdnModalidadClasificacion.Value = "A" Then - If ObjClasificaciones.AddClasificaciones(TxtClasificacion.Text.Trim, "", - DdlCategoria.SelectedValue.ToEntero, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, RequiereSerieLote:=RequireSerieLote, UsoClasificacion:=DdlUsoClasificacion.SelectedValue.ToEntero, CveSATPS:=DdlSATPS.SelectedValue.ToEntero, - RequiereAFCompra:=ChkRequiereAFCompra.Checked, RequiereAFInsumo:=ChkRequiereAFInsumo.Checked, RequierePersonal:=ChkRequierePersonal.Checked, EsAcumulador:=ChkEsAcumulador.Checked, TopVentas:=ChkTopVentas.Checked, TopCompras:=ChkTopCompras.Checked, PrecioBaseCosto:=TxtPrecioBaseCosto.Text.ToDecimal) Then + Try + If HdnModalidadClasificacion.Value = "A" Then + If ObjClasificaciones.AddClasificaciones(TxtClasificacion.Text.Trim, "", + DdlCategoria.SelectedValue.ToEntero, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, RequiereSerieLote:=RequireSerieLote, UsoClasificacion:=DdlUsoClasificacion.SelectedValue.ToEntero, CveSATPS:=DdlSATPS.SelectedValue.ToEntero, + RequiereAFCompra:=ChkRequiereAFCompra.Checked, RequiereAFInsumo:=ChkRequiereAFInsumo.Checked, RequierePersonal:=ChkRequierePersonal.Checked, EsAcumulador:=ChkEsAcumulador.Checked, TopVentas:=ChkTopVentas.Checked, TopCompras:=ChkTopCompras.Checked, PrecioBaseCosto:=TxtPrecioBaseCosto.Text.ToDecimal) Then + + ViewState("DTClasificaciones") = ObjClasificaciones.DtResultados.FiltraParametros($"(Codigo IS NULL OR Codigo = '') AND CveEmpresa = {UsuarioActual.CveEmpresa} AND (CveCategoria = {DdlCategoriaFiltro.SelectedValue.ToEntero} OR {DdlCategoriaFiltro.SelectedValue.ToEntero} = -1) AND (UsoClasificacion = {DdlTipoClasificacion.SelectedValue.ToEntero} OR {DdlTipoClasificacion.SelectedValue.ToEntero} = -1 ) AND (Estado = {DdlEstatus.SelectedValue.ToEntero} OR {DdlEstatus.SelectedValue.ToEntero} = -1)") + + If UsuarioActual.Empresa.TipoContabilidad = 1 Then + If DdlCuentaGasto.SelectedValue.ToEntero > 0 Then + If Not objConta.AddCuentasAsignaciones(6, UsuarioActual.CveEmpresa, DdlCuentaGasto.SelectedValue.ToEntero, CveClasificacion:=ObjClasificaciones.CveClasificacion) Then + TieneError = True + End If + End If + If DdlCuentaCostos.SelectedValue.ToEntero > 0 Then + If Not objConta.AddCuentasAsignaciones(69, UsuarioActual.CveEmpresa, DdlCuentaCostos.SelectedValue.ToEntero, CveClasificacion:=ObjClasificaciones.CveClasificacion) Then + TieneError = True + End If + End If + If DdlCuentaIngresos.SelectedValue.ToEntero > 0 Then + If Not objConta.AddCuentasAsignaciones(4, UsuarioActual.CveEmpresa, DdlCuentaIngresos.SelectedValue.ToEntero, CveClasificacion:=ObjClasificaciones.CveClasificacion) Then + TieneError = True + End If + End If + End If + + If Not TieneError AndAlso UsuarioActual.Empresa.Funcionalidad(563) <> "" AndAlso UsuarioActual.Empresa.Funcionalidad(109) = "1" Then + TieneError = Not ActualizarClasificacionFranquicia(ObjClasificaciones, ObjClasificaciones.CveClasificacion, TxtClasificacion.Text.Trim) + End If + Else + TieneError = True + End If + + ElseIf HdnModalidadClasificacion.Value = "U" Then + Dim Clasificacion As String = TxtClasificacion.Text + Dim Estatus As Boolean = ChkEstatus.Checked + Dim CveClasificacion As Integer = HdnIDClasificacion.Value.ToEntero + Dim DdlGasto As DropDownList = DdlCuentaGasto + Dim DdlCosto As DropDownList = DdlCuentaCostos + Dim DdlIngresos As DropDownList = DdlCuentaIngresos + + If ObjClasificaciones.UpdateClasificacion(Clasificacion, "", + Estatus, False, DdlCategoria.SelectedValue.ToEntero, UsuarioActual.CveUsuario, CveClasificacion, RequiereSerieLote:=RequireSerieLote, UsoClasificacion:=DdlUsoClasificacion.SelectedValue.ToEntero, CveSATPS:=DdlSATPS.SelectedValue.ToEntero, + RequiereAFCompra:=ChkRequiereAFCompra.Checked, RequiereAFInsumo:=ChkRequiereAFInsumo.Checked, RequierePersonal:=ChkRequierePersonal.Checked, EsAcumulador:=ChkEsAcumulador.Checked, TopVentas:=ChkTopVentas.Checked, TopCompras:=ChkTopCompras.Checked, PrecioBaseCosto:=TxtPrecioBaseCosto.Text.ToDecimal) Then + If UsuarioActual.Empresa.TipoContabilidad = 1 Then + If DdlCuentaGasto.SelectedValue.ToEntero > 0 Then + If Not objConta.UpdateCuentasAsignaciones(HdnCveCuentaAsignacion.Value.ToEntero, 6, DdlCuentaGasto.SelectedValue.ToEntero, CveClasificacion:=CveClasificacion) Then + TieneError = True + End If + End If + End If + + If Not TieneError AndAlso UsuarioActual.Empresa.Funcionalidad(563) <> "" AndAlso UsuarioActual.Empresa.Funcionalidad(109) = "1" Then + TieneError = Not ActualizarClasificacionFranquicia(ObjClasificaciones, CveClasificacion, Me.ClasificacionOriginal) + End If + Else + TieneError = True + End If + End If + Catch ex As Exception + OnError("Ocurrió un error al guardar la clasificación", ex) + TieneError = True + End Try - ViewState("DTClasificaciones") = ObjClasificaciones.DtResultados.FiltraParametros($"(Codigo IS NULL OR Codigo = '') AND CveEmpresa = {UsuarioActual.CveEmpresa} AND (CveCategoria = {DdlCategoriaFiltro.SelectedValue.ToEntero} OR {DdlCategoriaFiltro.SelectedValue.ToEntero} = -1) AND (UsoClasificacion = {DdlTipoClasificacion.SelectedValue.ToEntero} OR {DdlTipoClasificacion.SelectedValue.ToEntero} = -1 ) AND (Estado = {DdlEstatus.SelectedValue.ToEntero} OR {DdlEstatus.SelectedValue.ToEntero} = -1)") - If UsuarioActual.Empresa.TipoContabilidad = 1 Then - If DdlCuentaGasto.SelectedValue.ToEntero > 0 Then objConta.AddCuentasAsignaciones(6, UsuarioActual.CveEmpresa, DdlCuentaGasto.SelectedValue.ToEntero, CveClasificacion:=ObjClasificaciones.CveClasificacion) - If DdlCuentaCostos.SelectedValue.ToEntero > 0 Then objConta.AddCuentasAsignaciones(69, UsuarioActual.CveEmpresa, DdlCuentaCostos.SelectedValue.ToEntero, CveClasificacion:=ObjClasificaciones.CveClasificacion) - If DdlCuentaIngresos.SelectedValue.ToEntero > 0 Then objConta.AddCuentasAsignaciones(4, UsuarioActual.CveEmpresa, DdlCuentaIngresos.SelectedValue.ToEntero, CveClasificacion:=ObjClasificaciones.CveClasificacion) - End If - ObjClasificaciones.Commit() - TxtClasificacion.Text = "" - TxtPrecioBaseCosto.Text = "" - DdlCuentaGasto.SelectedValueExist("0") - DdlCuentaCostos.SelectedValueExist("0") - DdlCuentaIngresos.SelectedValueExist("0") - RegistraScript(String.Format("$('#{0}').modal('hide');", "ModalClasificaciones")) - Alert("La nueva Clasificación se guardó correctamente.", TipoMensaje.MsgInformacion) - Else - Alert("Ocurrió un error al agregar la clasificación. Por favor vuelva a intentar.", TipoMensaje.MsgError) - ObjClasificaciones.RollBack() - End If - - ElseIf HdnModalidadClasificacion.Value = "U" Then - Dim Clasificacion As String = TxtClasificacion.Text - Dim Estatus As Boolean = ChkEstatus.Checked - Dim CveClasificacion As Integer = HdnIDClasificacion.Value.ToEntero - Dim DdlGasto As DropDownList = DdlCuentaGasto - Dim DdlCosto As DropDownList = DdlCuentaCostos - Dim DdlIngresos As DropDownList = DdlCuentaIngresos - - If ObjClasificaciones.UpdateClasificacion(Clasificacion, "", - Estatus, False, DdlCategoria.SelectedValue.ToEntero, UsuarioActual.CveUsuario, CveClasificacion, RequiereSerieLote:=RequireSerieLote, UsoClasificacion:=DdlUsoClasificacion.SelectedValue.ToEntero, CveSATPS:=DdlSATPS.SelectedValue.ToEntero, - RequiereAFCompra:=ChkRequiereAFCompra.Checked, RequiereAFInsumo:=ChkRequiereAFInsumo.Checked, RequierePersonal:=ChkRequierePersonal.Checked, EsAcumulador:=ChkEsAcumulador.Checked, TopVentas:=ChkTopVentas.Checked, TopCompras:=ChkTopCompras.Checked, PrecioBaseCosto:=TxtPrecioBaseCosto.Text.ToDecimal) Then - - If UsuarioActual.Empresa.TipoContabilidad = 1 Then - If DdlCuentaGasto.SelectedValue.ToEntero > 0 Then objConta.UpdateCuentasAsignaciones(HdnCveCuentaAsignacion.Value.ToEntero, 6, DdlCuentaGasto.SelectedValue.ToEntero, CveClasificacion:=CveClasificacion) - - End If - - ObjClasificaciones.Commit() - RegistraScript(String.Format("$('#{0}').modal('hide');", "ModalClasificaciones")) - Alert("Los cambios se guardaron correctamente.", TipoMensaje.MsgInformacion) - - Else - Alert("Ocurrió un error al actualizar la clasificación. Por favor vuelva a intentar.", TipoMensaje.MsgError) - ObjClasificaciones.RollBack() - End If + If TieneError Then + Alert("Ocurrió un error al guardar la clasificación. Por favor vuelva a intentar.", TipoMensaje.MsgError) + ObjClasificaciones.RollBack() + Else + ObjClasificaciones.Commit() + Me.ClasificacionOriginal = "" + TxtClasificacion.Text = "" + TxtPrecioBaseCosto.Text = "" + DdlCuentaGasto.SelectedValueExist("0") + DdlCuentaCostos.SelectedValueExist("0") + DdlCuentaIngresos.SelectedValueExist("0") + RegistraScript(String.Format("$('#{0}').modal('hide');", "ModalClasificaciones")) + Alert("Los cambios se guardaron correctamente.", TipoMensaje.MsgInformacion) End If ObjClasificaciones.Dispose() @@ -316,16 +355,37 @@ Partial Class CatClasificaciones Protected Sub GvDatos_RowDeleting(sender As Object, e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GvDatos.RowDeleting Dim ObjClasificaciones As New ClsClasificaciones - If ObjClasificaciones.RemoveClasificacion(GvDatos.DataKeys(e.RowIndex).Value.ToString.ToEntero) Then - GvDatos.EditIndex = -1 - GlobalDTClasificaciones(UsuarioActual.CveEmpresa) = Nothing - CargaDatos() - Alert("La Clasificación se eliminó correctamente.", TipoMensaje.MsgInformacion) - Else - Alert("Ocurrió un error al eliminar la clasificación. Por favor vuelva a intentar.", TipoMensaje.MsgError) - End If - ObjClasificaciones.Dispose() - + ObjClasificaciones.IniciaTransacSQL() + Dim TieneError As Boolean = False + Try + Dim CveClasificacion As Integer = GvDatos.DataKeys(e.RowIndex).Value.ToString.ToEntero + If Not TieneError AndAlso UsuarioActual.Empresa.Funcionalidad(563) <> "" AndAlso UsuarioActual.Empresa.Funcionalidad(109) = "1" Then + TieneError = Not RemoveClasificacionFranquicia(ObjClasificaciones, CveClasificacion) + End If + + If Not TieneError AndAlso Not ObjClasificaciones.RemoveClasificacion(CveClasificacion) Then + TieneError = True + End If + Catch ex As Exception + OnError("Ocurrió un error al eliminar la clasificación", ex) + TieneError = True + End Try + + If TieneError Then + ObjClasificaciones.RollBack() + ObjClasificaciones.Dispose() + Alert("Ocurrió un error al eliminar la clasificación. Por favor vuelva a intentar.", TipoMensaje.MsgError) + Else + ObjClasificaciones.Commit() + ObjClasificaciones.Dispose() + + Alert("La Clasificación se eliminó correctamente.", TipoMensaje.MsgInformacion) + GvDatos.EditIndex = -1 + GlobalDTClasificaciones(UsuarioActual.CveEmpresa) = Nothing + CargaDatos() + End If + + End Sub #End Region @@ -433,7 +493,7 @@ Partial Class CatClasificaciones DdlCuentaIngresos.SelectedValueExist(CveCuentaIngresoActual) End If - + Me.ClasificacionOriginal = Clasificacion TxtClasificacion.Text = Clasificacion TxtPrecioBaseCosto.Text = PrecioBaseCosto.FormatoNumero(2) DdlCategoria.SelectedValueExist(CveCategoria) @@ -473,5 +533,39 @@ Partial Class CatClasificaciones End Sub Protected Sub BtnConsultar_Click(sender As Object, e As EventArgs) CargaDatos() - End Sub + End Sub + + Private Function ActualizarClasificacionFranquicia(ByRef ObjClas As ClsClasificaciones, CveClasificacion As Integer, NombreOriginal As String) As Boolean + Dim TieneError As Boolean = False + Dim FranquiciasStr As String = UsuarioActual.Empresa.Funcionalidad(563) + + Dim Franquicias As String() = FranquiciasStr.Split(","c) + + For Each Franquicia As String In Franquicias + Dim CveEmpresaFranquicia As Integer = Franquicia.ToEntero + If Not ObjClas.UpdateClasificacionFranquicia(CveClasificacion, NombreOriginal, UsuarioActual.CveEmpresa, CveEmpresaFranquicia) Then + TieneError = True + Exit For + End If + Next + + Return Not TieneError + End Function + + Private Function RemoveClasificacionFranquicia(ByRef ObjClas As ClsClasificaciones, CveClasificacion As Integer) As Boolean + Dim TieneError As Boolean = False + Dim FranquiciasStr As String = UsuarioActual.Empresa.Funcionalidad(563) + + Dim Franquicias As String() = FranquiciasStr.Split(","c) + + For Each Franquicia As String In Franquicias + Dim CveEmpresaFranquicia As Integer = Franquicia.ToEntero + If Not ObjClas.RemoveClasificacionFranquicia(CveClasificacion, UsuarioActual.CveEmpresa, CveEmpresaFranquicia) Then + TieneError = True + Exit For + End If + Next + + Return Not TieneError + End Function End Class