diff --git a/Ventas/Ventas.aspx b/Ventas/Ventas.aspx index 11082be1a..a29f07cc5 100644 --- a/Ventas/Ventas.aspx +++ b/Ventas/Ventas.aspx @@ -4298,8 +4298,8 @@
- - + + diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index a783af20a..ced6650d3 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -5025,6 +5025,7 @@ Partial Class Ventas BtnArchivoAdjunto.Visible = True BtnEliminarAdjunto.Visible = False BtnAdjuntar.Visible = False + BtnReemplazarAdjunto.Visible = True End If ViewState("CveSubProyectoVenta") = DbRowVenta("CveSubProyecto").ToString().ToEntero() @@ -16839,6 +16840,11 @@ Partial Class Ventas If UsuarioActual.CveEmpresa.Contiene(72, 80, 146) Then DtMovtos = DtMovtos.FiltraParametros($"{If(CveVenta < 0, $"Tipo = 'Ant'{If(DdlTipoComprobante.SelectedValue = "Ing", $" AND CveMoneda ={DdlMoneda.SelectedValue.ToEntero()}", "")} ", "")}") End If + + If UsuarioActual.Empresa.Funcionalidad(382) = "1" Then + DtMovtos = Me.TmpDTAnticiposNCIxCCliente.FiltraParametros($"Saldo > 0 And SaldoSubtotal > 0 {If(CveVenta < 0, $"AND Tipo IN('RNC','IxC','Ant') {If(DdlTipoComprobante.SelectedValue = "Ant", "AND Tipo = 'NC'", "")} ", "")}") + End If + GVAnticipos.DataSource = DtMovtos If ObjMovtos.DtResultados.SUM("Saldo", "Saldo > 0 AND SaldoSubtotal > 0 AND Tipo = 'Ant'") > 0 Then @@ -36271,6 +36277,10 @@ Partial Class Ventas End Sub Protected Sub btnGuardarAdjunto_Click(sender As Object, e As System.EventArgs) Handles btnGuardarAdjunto.Click + GuardarArchivoAdjunto() + End Sub + + Private Sub GuardarArchivoAdjunto() If Not txtAdjuntar.getfiles().Archivos.Count > 0 Then Alert("Tiene que cargar un archivo.", TipoMensaje.MsgAdvertencia) Exit Sub @@ -36287,7 +36297,7 @@ Partial Class Ventas Try FileExtension = IO.Path.GetExtension(String.Format("{0}Temp\{1}", AppDomain.CurrentDomain.BaseDirectory, fileItem.filename)).Replace(".", "") Adjunto = String.Format("{0}-{1}.{2}", LblSerie.Text, TxtFolio.Text, FileExtension) - Dim objVentas As New ClsVentas + Dim Path As String Path = String.Format("{0}Ventas", UsuarioActual.Empresa.Ruta) If Not Directory.Exists(Path) Then @@ -36298,17 +36308,24 @@ Partial Class Ventas File.Delete(Path) End If My.Computer.FileSystem.MoveFile(fileItem.FileUrl, Path) + + If File.Exists(Path) AndAlso Me.CveVenta > 0 Then + Using ObjVta As New ClsVentasTemp + If ObjVta.UpdateVentaAdjunto(Me.CveVenta, Adjunto, UsuarioActual.CveEmpresa) Then + Alert("Documento cargado", TipoMensaje.MsgInformacion) + End If + End Using + End If + BtnAdjuntar.Visible = False BtnArchivoAdjunto.Text = Adjunto BtnArchivoAdjunto.Visible = True BtnEliminarAdjunto.Visible = True - Alert("Documento cargado", TipoMensaje.MsgInformacion) - objVentas.Dispose() + BtnReemplazarAdjunto.Visible = False Catch ex As Exception OnError("Error al cargar archivo", ex) End Try - End Sub Protected Sub BtnArchivoAdjunto_Click(sender As Object, e As System.EventArgs) Handles BtnArchivoAdjunto.Click @@ -38911,5 +38928,184 @@ Partial Class Ventas DdlGiro.Items.Insert(0, New ListItem("Seleccione", "-1")) UpAgregarCliente.Update() End Sub + + + Public Class ClsVentasTemp + Implements IDisposable + +#Region "Campos" + + 'SQL + Private SqlConexion As SqlClient.SqlConnection + Private SqlAdapter As SqlClient.SqlDataAdapter + Private SqlCommand As SqlClient.SqlCommand + Private SqlTransacc As SqlClient.SqlTransaction + Private Data As DataTable + Private Dataset As DataSet + + 'Atributos de la clase + Private disposedValue As Boolean = False ' Para detectar llamadas redundantes + Private CveConexion As Integer = 0 + Private EsTransaccionCompartida As Boolean = False + +#End Region + +#Region "Propiedades" + Public ReadOnly Property DtResultados() As DataTable + Get + DtResultados = Data + End Get + End Property + +#End Region + + Public Function IniciaTransacSQL() As SqlClient.SqlTransaction + If SqlTransacc Is Nothing Then SqlTransacc = SqlConexion.BeginTransaction() + Return SqlTransacc + End Function + + Public Sub Commit() + SqlTransacc.Commit() + End Sub + Public Sub RollBack() + SqlTransacc.Rollback() + End Sub + + Sub New(Optional TransaccionCompartida As SqlClient.SqlTransaction = Nothing, Optional UsuarioActual As Usuario = Nothing) + + If TransaccionCompartida Is Nothing Then + SqlConexion = New SqlClient.SqlConnection + SqlConexion.ConnectionString = If(UsuarioActual IsNot Nothing, UsuarioActual.RutaDB, ClsPaginas.UsuarioActualRutaDB) + + Try + SqlConexion.Open() + Catch ex As Exception + OnError("Ocurrió un error al intentar conectarse a la base de datos.", ex) + End Try + Else + SqlConexion = TransaccionCompartida.Connection + SqlTransacc = TransaccionCompartida + EsTransaccionCompartida = True + End If + SqlAdapter = New SqlClient.SqlDataAdapter("", SqlConexion) + ConexionAdd() + + End Sub + Private Sub DataAdapter(ByVal pStrSQL As String, Optional ByVal TipoComando As CommandType = CommandType.StoredProcedure) + With SqlAdapter.SelectCommand + .Parameters.Clear() + .CommandText = pStrSQL + .CommandType = TipoComando + End With + If Not SqlTransacc Is Nothing Then SqlAdapter.SelectCommand.Transaction = SqlTransacc + Data = New DataTable + End Sub + +#Region "Conexiones" + + Private Sub ConexionAdd() + If Not EsTransaccionCompartida AndAlso ConfigurationManager.AppSettings("RegistraConexion") IsNot Nothing AndAlso ConfigurationManager.AppSettings("RegistraConexion").ToString() = "1" Then + Try + DataAdapter("PA_Sis_RegistrarConexion") + With SqlAdapter.SelectCommand.Parameters + .Add("@Clase", SqlDbType.VarChar).Value = Me.GetType().Name + .Add("@Modulo", SqlDbType.VarChar).Value = String.Format("{0}?{1}", HttpContext.Current.Request.Url.AbsolutePath.ToString, HttpContext.Current.Request.QueryString.ToString) + .Add("@IDConexion", SqlDbType.Int).Direction = ParameterDirection.Output + End With + SqlAdapter.Fill(Data) + CveConexion = SqlAdapter.SelectCommand.Parameters("@IDConexion").Value.ToString.ToEntero + Catch ex As Exception + OnError("Ocurrió un error registrar la conexión.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + End Try + + End If + End Sub + + Private Sub ConexionClose() + If CveConexion > 0 AndAlso ConfigurationManager.AppSettings("RegistraConexion") IsNot Nothing AndAlso ConfigurationManager.AppSettings("RegistraConexion").ToString() = "1" Then + + DataAdapter(String.Format("UPDATE Sis_Conexiones SET FechaCierre = GETDATE() WHERE CveConexion = {0}", CveConexion), CommandType.Text) + + Try + SqlAdapter.Fill(Data) + + Catch ex As Exception + OnError("Ocurrió un error registrar la conexión.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + End Try + CveConexion = 0 + End If + + End Sub +#End Region + + + Public Function UpdateVentaAdjunto(CveVenta As Integer, Adjunto As String, CveEmpresa As Integer) As Boolean + Dim Retorno As Boolean = False + DataAdapter("PA_Vta_VentaAdjuntoUpdate") + + With SqlAdapter.SelectCommand.Parameters + .Add("@CveVenta", SqlDbType.Int).Value = CveVenta + .Add("@Adjunto", SqlDbType.VarChar).Value = Adjunto + .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa + End With + + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch ex As Exception + OnError("Ocurrió un error al actualizar el adjunto de la venta.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + End Try + + Return Retorno + End Function + + +#Region "IDisposable Support" + + + ' IDisposable + Protected Overridable Sub Dispose(disposing As Boolean) + If Not Me.disposedValue Then + If disposing Then + ' TODO: dispose managed state (managed objects). + + + + If Not Data Is Nothing Then Data.Dispose() : Data = Nothing + If Not Dataset Is Nothing Then Dataset.Dispose() : Dataset = Nothing + If Not SqlAdapter Is Nothing Then SqlAdapter.Dispose() : SqlAdapter = Nothing + If Not SqlCommand Is Nothing Then SqlCommand.Dispose() : SqlCommand = Nothing + If Not SqlTransacc Is Nothing Then SqlTransacc.Dispose() : SqlTransacc = Nothing + If SqlConexion.State <> ConnectionState.Closed Then SqlConexion.Close() + If Not SqlConexion Is Nothing Then SqlConexion.Dispose() : SqlConexion = Nothing + + + + End If + + ' TODO: free unmanaged resources (unmanaged objects) and override Finalize() below. + ' TODO: set large fields to null. + End If + Me.disposedValue = True + End Sub + + ' TODO: override Finalize() only if Dispose(disposing As Boolean) above has code to free unmanaged resources. + 'Protected Overrides Sub Finalize() + ' ' Do not change this code. Put cleanup code in Dispose(disposing As Boolean) above. + ' Dispose(False) + ' MyBase.Finalize() + 'End Sub + + ' This code added by Visual Basic to correctly implement the disposable pattern. + Public Sub Dispose() Implements IDisposable.Dispose + ' Do not change this code. Put cleanup code in Dispose(disposing As Boolean) above. + ConexionClose() + Dispose(True) + GC.SuppressFinalize(Me) + End Sub +#End Region + End Class + + End Class