alternativa para leer excel implementada en SaldosIniciales
This commit is contained in:
@@ -5,6 +5,8 @@ Imports System.Data
|
|||||||
Imports Extensiones
|
Imports Extensiones
|
||||||
Imports System.Xml
|
Imports System.Xml
|
||||||
Imports Microsoft.Reporting.WebForms
|
Imports Microsoft.Reporting.WebForms
|
||||||
|
Imports GemBox.Spreadsheet
|
||||||
|
|
||||||
Partial Class General_SaldosIniciales
|
Partial Class General_SaldosIniciales
|
||||||
Inherits ClsPaginas
|
Inherits ClsPaginas
|
||||||
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
|
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
|
||||||
@@ -28,41 +30,44 @@ Partial Class General_SaldosIniciales
|
|||||||
Dim Conexion As Odbc.OdbcConnection = Nothing
|
Dim Conexion As Odbc.OdbcConnection = Nothing
|
||||||
Dim ErrorArchivo = False
|
Dim ErrorArchivo = False
|
||||||
Dim ErrorExcel = False
|
Dim ErrorExcel = False
|
||||||
Dim strConnString As String = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + Ruta + FileName + ";Extended Properties=""Excel 12.0 Xml;HDR=YES;IMEX=1;"""
|
|
||||||
Dim objDbFactory As Common.DbProviderFactory = Common.DbProviderFactories.GetFactory("System.Data.OleDb")
|
dt = ReadExcelFile(Ruta + FileName, True)
|
||||||
Dim objDbAdapter As Common.DbDataAdapter = objDbFactory.CreateDataAdapter()
|
|
||||||
Dim objDbConnection As Common.DbConnection = objDbFactory.CreateConnection()
|
'Dim strConnString As String = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + Ruta + FileName + ";Extended Properties=""Excel 12.0 Xml;HDR=YES;IMEX=1;"""
|
||||||
objDbConnection.ConnectionString = strConnString
|
'Dim objDbFactory As Common.DbProviderFactory = Common.DbProviderFactories.GetFactory("System.Data.OleDb")
|
||||||
objDbConnection.Open()
|
'Dim objDbAdapter As Common.DbDataAdapter = objDbFactory.CreateDataAdapter()
|
||||||
Dim objSheetNames As DataTable = objDbConnection.GetSchema("Tables")
|
'Dim objDbConnection As Common.DbConnection = objDbFactory.CreateConnection()
|
||||||
Dim HojaExcel As String = objSheetNames.FiltroPrimeroValor("TABLE_NAME")
|
'objDbConnection.ConnectionString = strConnString
|
||||||
Try
|
'objDbConnection.Open()
|
||||||
Select Case Tipo
|
'Dim objSheetNames As DataTable = objDbConnection.GetSchema("Tables")
|
||||||
Case "CSV"
|
'Dim HojaExcel As String = objSheetNames.FiltroPrimeroValor("TABLE_NAME")
|
||||||
Conexion = New Odbc.OdbcConnection("Driver={Microsoft Access Text Driver (*.txt, *.csv)};Dbq=" + Ruta + ";Extensions=asc,csv,tab,txt;")
|
'Try
|
||||||
Conexion.Open()
|
' Select Case Tipo
|
||||||
Dim cmd = Conexion.CreateCommand()
|
' Case "CSV"
|
||||||
cmd.CommandType = CommandType.Text
|
' Conexion = New Odbc.OdbcConnection("Driver={Microsoft Access Text Driver (*.txt, *.csv)};Dbq=" + Ruta + ";Extensions=asc,csv,tab,txt;")
|
||||||
cmd.CommandText = $"SELECT * FROM [{FileName}]"
|
' Conexion.Open()
|
||||||
Dim DataAdapter = New Odbc.OdbcDataAdapter(cmd)
|
' Dim cmd = Conexion.CreateCommand()
|
||||||
DataAdapter.Fill(dt)
|
' cmd.CommandType = CommandType.Text
|
||||||
Case "EXCEL"
|
' cmd.CommandText = $"SELECT * FROM [{FileName}]"
|
||||||
Conexion = New Odbc.OdbcConnection("Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" + Ruta + FileName + ";")
|
' Dim DataAdapter = New Odbc.OdbcDataAdapter(cmd)
|
||||||
Conexion.Open()
|
' DataAdapter.Fill(dt)
|
||||||
Dim cmd = Conexion.CreateCommand()
|
' Case "EXCEL"
|
||||||
cmd.CommandType = CommandType.Text
|
' Conexion = New Odbc.OdbcConnection("Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" + Ruta + FileName + ";")
|
||||||
cmd.CommandText = $"SELECT * FROM [{HojaExcel}]"
|
' Conexion.Open()
|
||||||
Dim DataAdapter = New Odbc.OdbcDataAdapter(cmd)
|
' Dim cmd = Conexion.CreateCommand()
|
||||||
DataAdapter.Fill(dt)
|
' cmd.CommandType = CommandType.Text
|
||||||
Case Else
|
' cmd.CommandText = $"SELECT * FROM [{HojaExcel}]"
|
||||||
Alert("El archivo no tiene el formato correcto", TipoMensaje.MsgError)
|
' Dim DataAdapter = New Odbc.OdbcDataAdapter(cmd)
|
||||||
Exit Sub
|
' DataAdapter.Fill(dt)
|
||||||
End Select
|
' Case Else
|
||||||
Catch ex As Exception
|
' Alert("El archivo no tiene el formato correcto", TipoMensaje.MsgError)
|
||||||
ErrorArchivo = True
|
' Exit Sub
|
||||||
OnError("Ocurrio un error al leer el archivo <br/>" & ex.Message, ex)
|
' End Select
|
||||||
End Try
|
'Catch ex As Exception
|
||||||
Conexion.Close()
|
' ErrorArchivo = True
|
||||||
|
' OnError("Ocurrio un error al leer el archivo <br/>" & ex.Message, ex)
|
||||||
|
'End Try
|
||||||
|
'Conexion.Close()
|
||||||
If Not ErrorArchivo Then
|
If Not ErrorArchivo Then
|
||||||
If RblFormato.SelectedValue = "1" Or RblFormato.SelectedValue = "2" Then
|
If RblFormato.SelectedValue = "1" Or RblFormato.SelectedValue = "2" Then
|
||||||
If Not dt.Columns(0).ColumnName = "Codigo" Then
|
If Not dt.Columns(0).ColumnName = "Codigo" Then
|
||||||
@@ -1523,57 +1528,69 @@ Partial Class General_SaldosIniciales
|
|||||||
ElseIf RblFormato.SelectedValue = "12" Then
|
ElseIf RblFormato.SelectedValue = "12" Then
|
||||||
Dim ObjMovimientos As New ClsInventarios
|
Dim ObjMovimientos As New ClsInventarios
|
||||||
ObjMovimientos.IniciaTransacSQL()
|
ObjMovimientos.IniciaTransacSQL()
|
||||||
Dim OcurrioError As Boolean = False
|
|
||||||
|
Dim ProductosServiciosRef As DataTable = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa)
|
||||||
|
Dim AlmacenRef As DataTable = GlobalDTAlmacen(UsuarioActual.CveEmpresa)
|
||||||
Dim contadorMovimientos As Integer = 0
|
Dim contadorMovimientos As Integer = 0
|
||||||
Dim listadoMovimientos As String = ""
|
Dim listadoMovimientos As String = ""
|
||||||
|
Dim mensajeError As String = ""
|
||||||
Try
|
Try
|
||||||
For Each almacenSinRepetir As DataRow In dt.FiltraParametros("", DistinctColumns:={"Almacen"}).Rows
|
For Each almacenSinRepetir As DataRow In dt.FiltraParametros("", DistinctColumns:={"Almacen"}).Rows
|
||||||
Dim almacenActual As String = almacenSinRepetir("Almacen").ToString
|
Dim almacenActual As String = almacenSinRepetir("Almacen").ToString
|
||||||
Dim CveAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveAlmacen", $"Almacen = '{almacenActual}'").ToEntero
|
'Dim CveAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveAlmacen", $"Almacen = '{almacenActual}'").ToEntero
|
||||||
|
Dim CveAlmacen As Integer = AlmacenRef.FiltroPrimeroValor("CveAlmacen", $"Almacen = '{almacenActual}'").ToEntero
|
||||||
Dim movimientoCabecera As Integer = ObjMovimientos.AddMovimiento(CveAlmacen, 1, 1, Date.Now, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1)
|
Dim movimientoCabecera As Integer = ObjMovimientos.AddMovimiento(CveAlmacen, 1, 1, Date.Now, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1)
|
||||||
listadoMovimientos += $"movimiento con folio <a href='/Inventarios/EntradasSalidas.aspx?CveMovimiento={movimientoCabecera}' target='_blank' style='color:blue'>{ObjMovimientos.Folio}</a><br/>"
|
listadoMovimientos += $"movimiento con folio <a href='/Inventarios/EntradasSalidas.aspx?CveMovimiento={movimientoCabecera}' target='_blank' style='color:blue'>{ObjMovimientos.Folio}</a><br/>"
|
||||||
If CveAlmacen > 0 Then
|
If CveAlmacen > 0 Then
|
||||||
contadorMovimientos += 1
|
contadorMovimientos += 1
|
||||||
For Each nuevaEntrada As DataRow In dt.FiltraParametros($"Almacen = '{almacenActual}'").Rows
|
For Each nuevaEntrada As DataRow In dt.FiltraParametros($"Almacen = '{almacenActual}'").Rows
|
||||||
Dim CvePS As Integer = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CvePS", $"Codigo = '{nuevaEntrada("CodigoPS")}'").ToEntero
|
Dim RowPS As DataRow = ProductosServiciosRef.FiltroPrimero($"Codigo = '{nuevaEntrada("CodigoPS")}' AND CveEmpresa = {UsuarioActual.CveEmpresa}")
|
||||||
Dim CveUM As Integer = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveUnidadMedida", $"Codigo = '{nuevaEntrada("CodigoPS")}'").ToEntero
|
|
||||||
|
Dim CvePS As Integer = RowPS("CvePS").ToString().ToEntero
|
||||||
|
Dim CveUM As Integer = RowPS("CveUnidadMedida").ToString().ToEntero
|
||||||
If CvePS > 0 Then
|
If CvePS > 0 Then
|
||||||
If CveUM > 0 Then
|
If CveUM > 0 Then
|
||||||
Dim Cantidad As Decimal = nuevaEntrada("Existencia").ToString.ToDecimal
|
Dim Cantidad As Decimal = nuevaEntrada("Existencia").ToString.ToDecimal
|
||||||
Dim Valor As Decimal = nuevaEntrada("Valor").ToString.ToDecimal
|
Dim Valor As Decimal = nuevaEntrada("Valor").ToString.ToDecimal
|
||||||
|
|
||||||
If Not ObjMovimientos.AddMovimientoDetalle(movimientoCabecera, Cantidad, CveUM, CvePS, (Valor / Cantidad), -1, -1) Then
|
If Not ObjMovimientos.AddMovimientoDetalle(movimientoCabecera, Cantidad, CveUM, CvePS, (Valor / Cantidad), -1, -1) Then
|
||||||
OcurrioError = True
|
mensajeError = "No se logró generar el detalle del movimiento"
|
||||||
|
Throw New Exception()
|
||||||
End If
|
End If
|
||||||
Else
|
Else
|
||||||
OcurrioError = True
|
mensajeError = $"La unidad de medida no se reconoce para el producto servicio:{nuevaEntrada("CodigoPS")}"
|
||||||
|
Throw New Exception()
|
||||||
End If
|
End If
|
||||||
Else
|
Else
|
||||||
OcurrioError = True
|
mensajeError = $"No se encontró el producto o servicio con código ""{nuevaEntrada("CodigoPS")}"""
|
||||||
|
Throw New Exception()
|
||||||
End If
|
End If
|
||||||
Next
|
Next
|
||||||
Else
|
Else
|
||||||
OcurrioError = True
|
mensajeError = $"No se encontró el almacén con nombre ""{almacenActual}"""
|
||||||
'alert amacén no existe
|
Throw New Exception()
|
||||||
Exit For
|
Exit For
|
||||||
End If
|
End If
|
||||||
|
|
||||||
Next
|
Next
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
OcurrioError = True
|
If mensajeError = "" Then
|
||||||
|
mensajeError = "Error técnico, informar a soporte"
|
||||||
|
End If
|
||||||
ObjMovimientos.RollBack()
|
ObjMovimientos.RollBack()
|
||||||
End Try
|
End Try
|
||||||
|
|
||||||
If Not OcurrioError Then
|
If mensajeError = "" Then
|
||||||
ObjMovimientos.Commit()
|
ObjMovimientos.Commit()
|
||||||
Alert($"Se cargaron correctamente {contadorMovimientos} movimientos<br/><br/>{listadoMovimientos}")
|
Alert($"Se cargaron correctamente {contadorMovimientos} movimientos<br/><br/>{listadoMovimientos}")
|
||||||
Else
|
Else
|
||||||
Alert("Ocurrió un error al cargar las existencias", TipoMensaje.MsgError)
|
Alert(mensajeError, TipoMensaje.MsgError)
|
||||||
ObjMovimientos.RollBack()
|
ObjMovimientos.RollBack()
|
||||||
End If
|
End If
|
||||||
|
|
||||||
ObjMovimientos.Dispose()
|
ObjMovimientos.Dispose()
|
||||||
|
ProductosServiciosRef.Dispose()
|
||||||
|
AlmacenRef.Dispose()
|
||||||
End If
|
End If
|
||||||
End If
|
End If
|
||||||
|
|
||||||
@@ -1618,5 +1635,51 @@ Partial Class General_SaldosIniciales
|
|||||||
End If
|
End If
|
||||||
End Sub
|
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
|
||||||
|
|
||||||
End Class
|
End Class
|
||||||
|
|||||||
Reference in New Issue
Block a user