diff --git a/Bancos/CargarConciliacionesBancarias.aspx.vb b/Bancos/CargarConciliacionesBancarias.aspx.vb index 450f45940..27ab10ceb 100644 --- a/Bancos/CargarConciliacionesBancarias.aspx.vb +++ b/Bancos/CargarConciliacionesBancarias.aspx.vb @@ -5,6 +5,8 @@ Imports System.Data Imports Extensiones Imports System.Xml Imports Microsoft.Reporting.WebForms +Imports GemBox.Spreadsheet + Partial Class Bancos_CargarConciliacionesBancarias Inherits ClsPaginas @@ -83,51 +85,99 @@ Partial Class Bancos_CargarConciliacionesBancarias End If End Sub + Private Function ReadExcelFile(ByVal flatFilePath As String, ByVal firstRowHasHeaders As Boolean) As DataTable + SpreadsheetInfo.SetLicense(ModExtensiones.SerialGemBoxSpreadsheet) + Dim excelFile As ExcelFile = ExcelFile.Load(flatFilePath) + + Dim unnamed As Integer = 0 + Dim cols As Integer + Dim columns As String() + Dim curRow As Integer = 0 + Dim curCol As Integer = 0 + Dim dataTable As DataTable = New DataTable() + Dim worksheet As ExcelWorksheet = excelFile.Worksheets(0) + + For cols = 0 To worksheet.Rows(0).AllocatedCells.Count - 1 + + If firstRowHasHeaders Then + + If worksheet.Rows(0).Cells(cols).Value IsNot Nothing Then + dataTable.Columns.Add(worksheet.Rows(0).Cells(cols).Value.ToString()) + Else + dataTable.Columns.Add("Unnamed Column " & (System.Threading.Interlocked.Increment(unnamed))) + End If + + curRow = 1 + Else + dataTable.Columns.Add("Column " & (cols + 1)) + End If + Next + + While curRow < worksheet.Rows.Count + columns = New String(cols - 1) {} + + For curCol = 0 To cols - 1 + + If worksheet.Rows(curRow).Cells(curCol).Value Is Nothing Then + columns(curCol) = "" + Else + columns(curCol) = worksheet.Rows(curRow).Cells(curCol).Value.ToString() + End If + Next + + dataTable.Rows.Add(columns) + curRow += 1 + End While + + Return dataTable + End Function + Private Sub CargaExcel(Ruta As String, FileName As String, Tipo As String) If Not DdlCuenta.SelectedValue.ToEntero > 0 Then Alert("Tiene que seleccionar una cuenta", TipoMensaje.MsgAdvertencia) Exit Sub End If Dim dt As New DataTable - Dim Conexion As Odbc.OdbcConnection = Nothing - Dim ErrorArchivo = False - Dim ErrorExcel = False - Dim strConnString As String = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + Ruta + FileName + ";Extended Properties=Excel 8.0;" - Dim objDbFactory As Common.DbProviderFactory = Common.DbProviderFactories.GetFactory("System.Data.OleDb") - Dim objDbAdapter As Common.DbDataAdapter = objDbFactory.CreateDataAdapter() - Dim objDbConnection As Common.DbConnection = objDbFactory.CreateConnection() - objDbConnection.ConnectionString = strConnString - objDbConnection.Open() - Dim objSheetNames As DataTable = objDbConnection.GetSchema("Tables") - Dim HojaExcel As String = objSheetNames.FiltroPrimeroValor("TABLE_NAME") - Try - Select Case Tipo - Case "CSV" - Conexion = New Odbc.OdbcConnection("Driver={Microsoft Access Text Driver (*.txt, *.csv)};Dbq=" + Ruta + ";Extensions=asc,csv,tab,txt;") - Conexion.Open() - Dim cmd = Conexion.CreateCommand() - cmd.CommandType = CommandType.Text - cmd.CommandText = $"SELECT * FROM [{FileName}]" - Dim DataAdapter = New Odbc.OdbcDataAdapter(cmd) - DataAdapter.Fill(dt) - Case "EXCEL" - Conexion = New Odbc.OdbcConnection("Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" + Ruta + FileName + ";") - Conexion.Open() - Dim cmd = Conexion.CreateCommand() - cmd.CommandType = CommandType.Text - cmd.CommandText = $"SELECT * FROM [{HojaExcel}]" - Dim DataAdapter = New Odbc.OdbcDataAdapter(cmd) - DataAdapter.Fill(dt) - Case Else - Alert("El archivo no tiene el formato correcto", TipoMensaje.MsgError) - Exit Sub - End Select - Catch ex As Exception - ErrorArchivo = True - OnError("Ocurrio un error al leer el archivo
" & ex.Message, ex) - End Try - Conexion.Close() - If Not ErrorArchivo Then + dt = ReadExcelFile(Ruta + FileName, True) + 'Dim Conexion As Odbc.OdbcConnection = Nothing + 'Dim ErrorArchivo = False + 'Dim ErrorExcel = False + 'Dim strConnString As String = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + Ruta + FileName + ";Extended Properties=Excel 8.0;" + 'Dim objDbFactory As Common.DbProviderFactory = Common.DbProviderFactories.GetFactory("System.Data.OleDb") + 'Dim objDbAdapter As Common.DbDataAdapter = objDbFactory.CreateDataAdapter() + 'Dim objDbConnection As Common.DbConnection = objDbFactory.CreateConnection() + 'objDbConnection.ConnectionString = strConnString + 'objDbConnection.Open() + 'Dim objSheetNames As DataTable = objDbConnection.GetSchema("Tables") + 'Dim HojaExcel As String = objSheetNames.FiltroPrimeroValor("TABLE_NAME") + 'Try + ' Select Case Tipo + ' Case "CSV" + ' Conexion = New Odbc.OdbcConnection("Driver={Microsoft Access Text Driver (*.txt, *.csv)};Dbq=" + Ruta + ";Extensions=asc,csv,tab,txt;") + ' Conexion.Open() + ' Dim cmd = Conexion.CreateCommand() + ' cmd.CommandType = CommandType.Text + ' cmd.CommandText = $"SELECT * FROM [{FileName}]" + ' Dim DataAdapter = New Odbc.OdbcDataAdapter(cmd) + ' DataAdapter.Fill(dt) + ' Case "EXCEL" + ' Conexion = New Odbc.OdbcConnection("Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" + Ruta + FileName + ";") + ' Conexion.Open() + ' Dim cmd = Conexion.CreateCommand() + ' cmd.CommandType = CommandType.Text + ' cmd.CommandText = $"SELECT * FROM [{HojaExcel}]" + ' Dim DataAdapter = New Odbc.OdbcDataAdapter(cmd) + ' DataAdapter.Fill(dt) + ' Case Else + ' Alert("El archivo no tiene el formato correcto", TipoMensaje.MsgError) + ' Exit Sub + ' End Select + 'Catch ex As Exception + ' ErrorArchivo = True + ' OnError("Ocurrio un error al leer el archivo
" & ex.Message, ex) + 'End Try + 'Conexion.Close() + If dt IsNot Nothing Then dt.Columns(0).ColumnName = "FechaDocumento" dt.Columns(1).ColumnName = "Referencia" dt.Columns(2).ColumnName = "Importe" @@ -166,6 +216,8 @@ Partial Class Bancos_CargarConciliacionesBancarias ObjBancos.RollBack() End If ObjBancos.Dispose() + Else + Alert("Hubo un error al intentar leer el archivo.", TipoMensaje.MsgError) End If End Sub diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index c8595839f..4a0d65600 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -8829,6 +8829,16 @@ Partial Class Compras_Compras 'Revisamos que los cambios hechos mantengan la interidad de los numeros If HFDiferenciaCompra.Value = TxtTotal.Text Or CveFactura < 1 Or CveCompra < 1 Then + If IdPoliza > 0 Then + If Not ObjContabilidad.UpdatePrePolizasDetalleBloquear(CvePrePoliza, False) Then + Retorno = False + End If + + If Not ObjContabilidad.UpdatePrePoliza(MinFecha, -1, -1, Nothing, CvePrePoliza, UsuarioActual.CveEmpresa) Then + Retorno = False + End If + End If + 'PORCENTAJE IVA Dim PorcentajeIVA As Decimal = TmpDT.MAX("IVAPorcentaje").ToDecimal @@ -8846,11 +8856,7 @@ Partial Class Compras_Compras ' End If 'End If - If IdPoliza > 0 Then - If Not ObjContabilidad.UpdatePrePolizasDetalleBloquear(CvePrePoliza, False) Then - Retorno = False - End If - End If + 'If UsuarioActual.Empresa.Funcionalidad(207) = "1" Then If Not ActualizarPrePoliza(ObjContabilidad, ObjCompra) Then @@ -8859,7 +8865,7 @@ Partial Class Compras_Compras 'End If ''EMPIEZA: SI USA AC - If (UsuarioActual.Empresa.UsaAC Or UsuarioActual.Empresa.Funcionalidad(200).ToString = "1") AndAlso IdPoliza > 0 Then + If UsuarioActual.Empresa.UsaAC AndAlso IdPoliza > 0 Then ObjContaAC = New ClsContPAQi(UsuarioActual.Empresa) ObjContaAC.IniciaTransacSQL() @@ -9242,9 +9248,11 @@ Partial Class Compras_Compras Next If Retorno Then - If ViewState("IdPoliza").ToString.ToEntero > 0 Then - ObjContaAC = New ClsContPAQi(UsuarioActual.Empresa) - ObjContaAC.IniciaTransacSQL() + If (UsuarioActual.Empresa.UsaAC Or UsuarioActual.Empresa.Funcionalidad(200).ToString = "1") AndAlso IdPoliza > 0 Then + If ObjContaAC Is Nothing Then + ObjContaAC = New ClsContPAQi(UsuarioActual.Empresa) + ObjContaAC.IniciaTransacSQL() + End If If Not ObjContabilidad.ContabilizarPrePoliza(CvePrePoliza, UsuarioActual.CveEmpresa, UsuarioActual.Empresa, MinFecha, String.Format("{0}-{1}", Serie, Folio), ObjContaAC, pIDPoliza:=ViewState("IdPoliza").ToString.ToEntero) Then Retorno = False @@ -9261,6 +9269,18 @@ Partial Class Compras_Compras 'Retorno = True 'Alert("La Compra se actualizó correctamente.") + Else + + If IdPoliza > 0 Then + If Not ObjContabilidad.UpdatePrePolizasDetalleBloquear(CvePrePoliza, True) Then + Retorno = False + End If + + If Not ObjContabilidad.UpdatePrePoliza(MinFecha, -1, -1, IdPoliza, CvePrePoliza, UsuarioActual.CveEmpresa) Then + Retorno = False + End If + End If + End If Else @@ -9275,7 +9295,7 @@ Partial Class Compras_Compras Catch ex As Exception Alert("Ocurrió un error al actualizar la compra", TipoMensaje.MsgError) ObjCompra.RollBack() - ObjContaAC.RollBack() + If ObjContaAC IsNot Nothing Then ObjContaAC.RollBack() Finally If Retorno Then diff --git a/Contratos/Contrato.aspx.vb b/Contratos/Contrato.aspx.vb index 31701ab12..42152cd32 100644 --- a/Contratos/Contrato.aspx.vb +++ b/Contratos/Contrato.aspx.vb @@ -6,6 +6,7 @@ Imports System.IO Imports System.Data Imports Microsoft.Reporting.WebForms Imports System.Globalization +Imports GemBox.Spreadsheet Partial Class Contratos_Default Inherits ClsPaginas @@ -3185,32 +3186,79 @@ Partial Class Contratos_Default Public Sub LbDescargarExcel_Click(sender As Object, e As EventArgs) Handles LbDescargarExcel.Click DescargarFormato() End Sub + Private Function ReadExcelFile(ByVal flatFilePath As String, ByVal firstRowHasHeaders As Boolean) As DataTable + SpreadsheetInfo.SetLicense(ModExtensiones.SerialGemBoxSpreadsheet) + Dim excelFile As ExcelFile = ExcelFile.Load(flatFilePath) + + Dim unnamed As Integer = 0 + Dim cols As Integer + Dim columns As String() + Dim curRow As Integer = 0 + Dim curCol As Integer = 0 + Dim dataTable As DataTable = New DataTable() + Dim worksheet As ExcelWorksheet = excelFile.Worksheets(0) + + For cols = 0 To worksheet.Rows(0).AllocatedCells.Count - 1 + + If firstRowHasHeaders Then + + If worksheet.Rows(0).Cells(cols).Value IsNot Nothing Then + dataTable.Columns.Add(worksheet.Rows(0).Cells(cols).Value.ToString()) + Else + dataTable.Columns.Add("Unnamed Column " & (System.Threading.Interlocked.Increment(unnamed))) + End If + + curRow = 1 + Else + dataTable.Columns.Add("Column " & (cols + 1)) + End If + Next + + While curRow < worksheet.Rows.Count + columns = New String(cols - 1) {} + + For curCol = 0 To cols - 1 + + If worksheet.Rows(curRow).Cells(curCol).Value Is Nothing Then + columns(curCol) = "" + Else + columns(curCol) = worksheet.Rows(curRow).Cells(curCol).Value.ToString() + End If + Next + + dataTable.Rows.Add(columns) + curRow += 1 + End While + + Return dataTable + End Function Private Sub CargarArchivo(Ruta As String, FileName As String, Tipo As String) Dim dt As New DataTable - Dim Conexion As Odbc.OdbcConnection = Nothing + dt = ReadExcelFile(Ruta + FileName, True) Dim ErrorArchivo = False - Try - Select Case Tipo - Case "EXCEL" - Conexion = New Odbc.OdbcConnection("Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" + Ruta + FileName + ";") - Conexion.Open() - Dim cmd = Conexion.CreateCommand() - cmd.CommandType = CommandType.Text - cmd.CommandText = "SELECT * FROM [Hoja1$]" - Dim DataAdapter = New Odbc.OdbcDataAdapter(cmd) - DataAdapter.Fill(dt) - Case Else - Alert("El archivo no tiene el formato correcto", TipoMensaje.MsgError) - Exit Sub - End Select - Catch ex As Exception - ErrorArchivo = True - OnError("Ocurrio un error al leer el archivo
" & ex.Message, ex) - End Try - Conexion.Close() - If Not ErrorArchivo Then + 'Dim Conexion As Odbc.OdbcConnection = Nothing + 'Try + ' Select Case Tipo + ' Case "EXCEL" + ' Conexion = New Odbc.OdbcConnection("Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" + Ruta + FileName + ";") + ' Conexion.Open() + ' Dim cmd = Conexion.CreateCommand() + ' cmd.CommandType = CommandType.Text + ' cmd.CommandText = "SELECT * FROM [Hoja1$]" + ' Dim DataAdapter = New Odbc.OdbcDataAdapter(cmd) + ' DataAdapter.Fill(dt) + ' Case Else + ' Alert("El archivo no tiene el formato correcto", TipoMensaje.MsgError) + ' Exit Sub + ' End Select + 'Catch ex As Exception + ' ErrorArchivo = True + ' OnError("Ocurrio un error al leer el archivo
" & ex.Message, ex) + 'End Try + 'Conexion.Close() + If Not ErrorArchivo AndAlso dt IsNot Nothing Then If Not dt.Columns(0).ColumnName = "OC Interna" Then Alert("El nombre de la primera columna debe ser 'OC Interna'. Favor de corregirlo", TipoMensaje.MsgError) Exit Sub diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index 1bfa9e03d..f71f31ffe 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -12650,8 +12650,12 @@ Partial Class Ventas DdlUnidadMedida.SelectedValue = "-1" DdlUnidadMedida.DataBind() DdlUnidadMedida.SelectedValueExist(drPS("CveUnidadMedida").ToString) - DdlMoneda.SelectedValueExist(drPS("CveMoneda").ToString) - CambiaMoneda() + + If TmpDT IsNot Nothing AndAlso TmpDT.Rows.Count = 0 Then + DdlMoneda.SelectedValueExist(drPS("CveMoneda").ToString) + CambiaMoneda() + End If + 'SUGIERE PRECIO Dim PrecioSugerido = 0.0 PrecioSugerido = drPS("Precio").ToString.ToDouble @@ -13239,6 +13243,15 @@ Partial Class Ventas Return False End If + If TmpDT IsNot Nothing AndAlso TmpDT.Rows.Count >= 1 Then + Dim DrPS As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePS).Rows(0) + If DrPS IsNot Nothing Then + If DrPS("CveMoneda").ToString.ToEntero <> DdlMoneda.SelectedValue.ToEntero Then + Alert("No puede agregar un producto de diferente moneda a la ya seleccionada", TipoMensaje.MsgAdvertencia) + Return False + End If + End If + End If If Not UsuarioActual.TienePermisoProceso(169) Then ' NO VALIDA EXISTENCIAS NI COSTO - PERMISO PARA NO VALIDAR 'SOLO VALIDA EXISTENCIAS Y COSTO: SI USA INVENTARIOS, SOLO PRODUCTOS TIPO PRODUCTO, SOLO REMISIONES E INGRESOS