-- mejora en carga de excel formateado con códigos únicos E141
This commit is contained in:
@@ -4864,7 +4864,13 @@ Partial Class Inventarios_RecepcionAlmacen
|
|||||||
Dim file As Archivo = TxtExcel.getfiles().Archivos(0)
|
Dim file As Archivo = TxtExcel.getfiles().Archivos(0)
|
||||||
Dim Directorio As String = AppDomain.CurrentDomain.BaseDirectory & file.path
|
Dim Directorio As String = AppDomain.CurrentDomain.BaseDirectory & file.path
|
||||||
Dim Tipo As String = If(file.Extension.Contiene("xlsx", "xlsx", "xlsm", "xlsb", "xls"), "EXCEL", "CSV")
|
Dim Tipo As String = If(file.Extension.Contiene("xlsx", "xlsx", "xlsm", "xlsb", "xls"), "EXCEL", "CSV")
|
||||||
CargarArchivoExcel(Directorio, file.filename)
|
|
||||||
|
If Tipo = "CSV" AndAlso UsuarioActual.Empresa.Funcionalidad(531) = "1" Then 'empresa de acumuladores
|
||||||
|
CargaArchivoCSV(Directorio, file.filename, HLFolio.Text)
|
||||||
|
Else
|
||||||
|
CargarArchivoExcel(Directorio, file.filename)
|
||||||
|
End If
|
||||||
|
|
||||||
Else
|
Else
|
||||||
Alert("No existe el archivo. Favor de subir un archivo excel a la plataforma.", TipoMensaje.MsgError)
|
Alert("No existe el archivo. Favor de subir un archivo excel a la plataforma.", TipoMensaje.MsgError)
|
||||||
End If
|
End If
|
||||||
@@ -4903,93 +4909,97 @@ Partial Class Inventarios_RecepcionAlmacen
|
|||||||
Exit Sub
|
Exit Sub
|
||||||
End If
|
End If
|
||||||
|
|
||||||
|
ProcesaExcel(dt)
|
||||||
dt.TableName = "Datos"
|
|
||||||
Dim ProductosNoCargados As New StringBuilder()
|
|
||||||
Dim RowsCargados As Integer = 0
|
|
||||||
Dim RowsNoCargados As Integer = 0
|
|
||||||
Dim NoPSConSerie As Integer = 0
|
|
||||||
|
|
||||||
If CveCompraSurtir > 0 Then
|
|
||||||
'DtRecepcion
|
|
||||||
Try
|
|
||||||
'Dim DtPS As DataTable = GlobalDTPS(UsuarioActual.CveEmpresa)
|
|
||||||
'If(dt.Columns.Contains("PorcentajeIVA"), Round(Row("PorcentajeIVA").ToString.ToDecimal, 4), 0)
|
|
||||||
For Each RowExcel As DataRow In dt.Rows
|
|
||||||
If RowExcel("Código").ToString() <> "" Then
|
|
||||||
|
|
||||||
Dim RowPS = DtInv.FiltroPrimero(String.Format("Codigo='{0}'", RowExcel("Código").ToString()))
|
|
||||||
|
|
||||||
If RowPS IsNot Nothing AndAlso RowPS("CvePS").ToString().ToEntero() > 0 Then
|
|
||||||
|
|
||||||
Dim CveProducto As Integer = RowPS("CvePS").ToString().ToEntero()
|
|
||||||
Dim CveUnidadMedida As Integer = RowPS("CveUM").ToString().ToEntero()
|
|
||||||
CvePSSerie = CveProducto
|
|
||||||
CveConsecSerie = DtInv.FiltroPrimeroValor("Consec", "CvePS=" & CvePSSerie).ToEntero
|
|
||||||
|
|
||||||
Dim Cantidad As Double = RowExcel("Cantidad").ToString().ToDecimal()
|
|
||||||
Dim Serie As String = RowExcel("Serie").ToString()
|
|
||||||
Dim Lote As String = "" '= RowExcel("Lote").ToString()
|
|
||||||
Dim FechaCaducidad As Date = MinFecha '= If(RowExcel("FechaCaducidad").ToString = "", MinFecha, RowExcel("FechaCaducidad").ToString.ToDate)
|
|
||||||
Dim Observaciones As String = "" '= If(dt.Columns.Contains("Observaciones"), RowExcel("Observaciones").ToString, "").ToString
|
|
||||||
LbCantidad.Text = Cantidad.ToString
|
|
||||||
|
|
||||||
Dim Valido As Boolean = True
|
|
||||||
|
|
||||||
If RowPS("AplicaSerie").ToString() = "True" And (String.IsNullOrEmpty(Serie.Trim()) OrElse Serie = "-1") Then
|
|
||||||
Valido = False
|
|
||||||
Alert($"El producto '{RowPS("PS")}' requiere 'Serie'", TipoMensaje.MsgAdvertencia)
|
|
||||||
ProductosNoCargados.AppendFormat("{0},", RowPS("PS").ToString())
|
|
||||||
End If
|
|
||||||
|
|
||||||
If RowPS("AplicaSerie").ToString() = "True" AndAlso Not String.IsNullOrEmpty(Serie.Trim()) Then
|
|
||||||
NoPSConSerie = NoPSConSerie + 1
|
|
||||||
End If
|
|
||||||
|
|
||||||
|
|
||||||
If Valido Then
|
|
||||||
CveConsecSerie = RowPS("Consec").ToString.ToEntero
|
|
||||||
AgregaSerie(RowExcel("Serie").ToString, 1)
|
|
||||||
|
|
||||||
'AgregarPS(Cantidad, CveProducto, CveUnidadMedida, Observaciones, CveSeccionAlmacen:=DdlSeccionAlmacen.SelectedValue.ToEntero, SeccionAlmacen:=DdlSeccionAlmacen.SelectedItem.Text, Serie:=If(Not String.IsNullOrEmpty(Serie), Serie, ""), Lote:=Lote, FechaCaducidad:=FechaCaducidad, Limpia:=False)
|
|
||||||
RowsCargados = RowsCargados + 1
|
|
||||||
Else
|
|
||||||
RowsNoCargados = RowsNoCargados + 1
|
|
||||||
ProductosNoCargados.AppendFormat("{0},", RowPS("PS").ToString())
|
|
||||||
End If
|
|
||||||
|
|
||||||
Else
|
|
||||||
RowsNoCargados = RowsNoCargados + 1
|
|
||||||
ProductosNoCargados.AppendFormat("{0},", RowExcel("Producto").ToString())
|
|
||||||
End If
|
|
||||||
End If
|
|
||||||
Next
|
|
||||||
Catch ex As Exception
|
|
||||||
OnError("Ocurrió un error al cargar los productos." & ProductosNoCargados.ToString(), ex)
|
|
||||||
Finally
|
|
||||||
|
|
||||||
Dim MensajeFinal As New StringBuilder()
|
|
||||||
If RowsNoCargados = 0 AndAlso RowsCargados > 0 Then
|
|
||||||
MensajeFinal.Append("Los productos se cargaron correctamente. <br/><br/>")
|
|
||||||
End If
|
|
||||||
If RowsCargados > 0 Then
|
|
||||||
MensajeFinal.Append("Se cargaron <b>" & RowsCargados & "</b> productos correctamente.")
|
|
||||||
End If
|
|
||||||
If RowsNoCargados > 0 Then
|
|
||||||
MensajeFinal.Append("No se pudieron cargar <b>" & RowsNoCargados & "</b> productos. <br/>Los siguientes productos no se pudieron cargar: " & ProductosNoCargados.ToString())
|
|
||||||
End If
|
|
||||||
|
|
||||||
Alert(MensajeFinal.ToString())
|
|
||||||
|
|
||||||
End Try
|
|
||||||
Else
|
|
||||||
Alert("No hay seleccionada compra", TipoMensaje.MsgError)
|
|
||||||
End If
|
|
||||||
|
|
||||||
|
|
||||||
End If
|
End If
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
|
Private Function ProcesaExcel(dt As DataTable) As Boolean
|
||||||
|
dt.TableName = "Datos"
|
||||||
|
Dim ProductosNoCargados As New StringBuilder()
|
||||||
|
Dim RowsCargados As Integer = 0
|
||||||
|
Dim RowsNoCargados As Integer = 0
|
||||||
|
Dim NoPSConSerie As Integer = 0
|
||||||
|
|
||||||
|
If CveCompraSurtir > 0 Then
|
||||||
|
|
||||||
|
Try
|
||||||
|
|
||||||
|
For Each RowExcel As DataRow In dt.Rows
|
||||||
|
If RowExcel("Código").ToString() <> "" Then
|
||||||
|
|
||||||
|
Dim RowPS = DtInv.FiltroPrimero(String.Format("Codigo='{0}'", RowExcel("Código").ToString()))
|
||||||
|
|
||||||
|
If RowPS IsNot Nothing AndAlso RowPS("CvePS").ToString().ToEntero() > 0 Then
|
||||||
|
|
||||||
|
Dim CveProducto As Integer = RowPS("CvePS").ToString().ToEntero()
|
||||||
|
Dim CveUnidadMedida As Integer = RowPS("CveUM").ToString().ToEntero()
|
||||||
|
CvePSSerie = CveProducto
|
||||||
|
CveConsecSerie = DtInv.FiltroPrimeroValor("Consec", "CvePS=" & CvePSSerie).ToEntero
|
||||||
|
|
||||||
|
Dim Cantidad As Double = RowExcel("Cantidad").ToString().ToDecimal()
|
||||||
|
Dim Serie As String = RowExcel("Serie").ToString()
|
||||||
|
Dim Lote As String = ""
|
||||||
|
Dim FechaCaducidad As Date = MinFecha
|
||||||
|
Dim Observaciones As String = ""
|
||||||
|
LbCantidad.Text = Cantidad.ToString
|
||||||
|
|
||||||
|
Dim Valido As Boolean = True
|
||||||
|
|
||||||
|
If RowPS("AplicaSerie").ToString() = "True" And (String.IsNullOrEmpty(Serie.Trim()) OrElse Serie = "-1") Then
|
||||||
|
Valido = False
|
||||||
|
Alert($"El producto '{RowPS("PS")}' requiere 'Serie'", TipoMensaje.MsgAdvertencia)
|
||||||
|
ProductosNoCargados.AppendFormat("{0},", RowPS("PS").ToString())
|
||||||
|
End If
|
||||||
|
|
||||||
|
If RowPS("AplicaSerie").ToString() = "True" AndAlso Not String.IsNullOrEmpty(Serie.Trim()) Then
|
||||||
|
NoPSConSerie = NoPSConSerie + 1
|
||||||
|
End If
|
||||||
|
|
||||||
|
|
||||||
|
If Valido Then
|
||||||
|
CveConsecSerie = RowPS("Consec").ToString.ToEntero
|
||||||
|
AgregaSerie(RowExcel("Serie").ToString, 1)
|
||||||
|
|
||||||
|
'AgregarPS(Cantidad, CveProducto, CveUnidadMedida, Observaciones, CveSeccionAlmacen:=DdlSeccionAlmacen.SelectedValue.ToEntero, SeccionAlmacen:=DdlSeccionAlmacen.SelectedItem.Text, Serie:=If(Not String.IsNullOrEmpty(Serie), Serie, ""), Lote:=Lote, FechaCaducidad:=FechaCaducidad, Limpia:=False)
|
||||||
|
RowsCargados = RowsCargados + 1
|
||||||
|
Else
|
||||||
|
RowsNoCargados = RowsNoCargados + 1
|
||||||
|
ProductosNoCargados.AppendFormat("{0},", RowPS("PS").ToString())
|
||||||
|
End If
|
||||||
|
|
||||||
|
Else
|
||||||
|
RowsNoCargados = RowsNoCargados + 1
|
||||||
|
ProductosNoCargados.AppendFormat("{0},", RowExcel("Producto").ToString())
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
Catch ex As Exception
|
||||||
|
OnError("Ocurrió un error al cargar los productos." & ProductosNoCargados.ToString(), ex)
|
||||||
|
Finally
|
||||||
|
|
||||||
|
Dim MensajeFinal As New StringBuilder()
|
||||||
|
If RowsNoCargados = 0 AndAlso RowsCargados > 0 Then
|
||||||
|
MensajeFinal.Append("Los productos se cargaron correctamente. <br/><br/>")
|
||||||
|
End If
|
||||||
|
If RowsCargados > 0 Then
|
||||||
|
MensajeFinal.Append("Se cargaron <b>" & RowsCargados & "</b> productos correctamente.")
|
||||||
|
End If
|
||||||
|
If RowsNoCargados > 0 Then
|
||||||
|
MensajeFinal.Append("No se pudieron cargar <b>" & RowsNoCargados & "</b> productos. <br/>Los siguientes productos no se pudieron cargar: " & ProductosNoCargados.ToString())
|
||||||
|
End If
|
||||||
|
|
||||||
|
Alert(MensajeFinal.ToString())
|
||||||
|
|
||||||
|
End Try
|
||||||
|
Else
|
||||||
|
Alert("No hay seleccionada compra", TipoMensaje.MsgError)
|
||||||
|
End If
|
||||||
|
|
||||||
|
Return True
|
||||||
|
|
||||||
|
End Function
|
||||||
|
|
||||||
Protected Sub LbDescargarExcelConceptos_Click(sender As Object, e As EventArgs)
|
Protected Sub LbDescargarExcelConceptos_Click(sender As Object, e As EventArgs)
|
||||||
DescargarFormato()
|
DescargarFormato()
|
||||||
End Sub
|
End Sub
|
||||||
@@ -5024,6 +5034,59 @@ Partial Class Inventarios_RecepcionAlmacen
|
|||||||
|
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
|
|
||||||
|
Private Sub CargaArchivoCSV(Ruta As String, FileName As String, Optional FolioFactura As String = "")
|
||||||
|
|
||||||
|
'Create a DataTable.
|
||||||
|
Dim dt As New DataTable()
|
||||||
|
|
||||||
|
dt.Columns.AddRange(New DataColumn(9) {New DataColumn("CodBarra", GetType(String)),
|
||||||
|
New DataColumn("OVenta", GetType(String)),
|
||||||
|
New DataColumn("Factura", GetType(String)),
|
||||||
|
New DataColumn("FechaFac", GetType(String)),
|
||||||
|
New DataColumn("Pallet", GetType(String)),
|
||||||
|
New DataColumn("CodigoJCI", GetType(String)),
|
||||||
|
New DataColumn("Producto", GetType(String)),
|
||||||
|
New DataColumn("Serie", GetType(String)),'CodigoUnico
|
||||||
|
New DataColumn("Cantidad", GetType(Integer)),
|
||||||
|
New DataColumn("Código", GetType(String))})
|
||||||
|
FolioFactura = FolioFactura.Replace("-", "")
|
||||||
|
|
||||||
|
'Read the contents of CSV file.
|
||||||
|
Dim csvData As String = File.ReadAllText(Ruta & FileName)
|
||||||
|
Dim CodigoUnico As String = "CU no escaneado" 'texto constante para determinar que no se leyó
|
||||||
|
|
||||||
|
Dim r As Integer = 1
|
||||||
|
'Execute a loop over the rows.
|
||||||
|
For Each row As String In csvData.Split(ControlChars.Lf)
|
||||||
|
|
||||||
|
If r > 2 Then ' si es la segundo renglon
|
||||||
|
If Not String.IsNullOrEmpty(row) Then
|
||||||
|
Dim i As Integer = 0
|
||||||
|
Dim rr As String() = row.Split(","c)
|
||||||
|
|
||||||
|
If CodigoUnico <> rr(7).Trim AndAlso (FolioFactura = "" OrElse FolioFactura = rr(2).Trim) Then
|
||||||
|
dt.Rows.Add()
|
||||||
|
dt.Rows(dt.Rows.Count - 1)("CodBarra") = rr(0).Trim
|
||||||
|
dt.Rows(dt.Rows.Count - 1)("OVenta") = rr(1).Trim
|
||||||
|
dt.Rows(dt.Rows.Count - 1)("Factura") = rr(2).Trim
|
||||||
|
dt.Rows(dt.Rows.Count - 1)("FechaFac") = rr(3).Trim
|
||||||
|
dt.Rows(dt.Rows.Count - 1)("Pallet") = rr(4).Trim
|
||||||
|
dt.Rows(dt.Rows.Count - 1)("CodigoJCI") = rr(5).Trim
|
||||||
|
dt.Rows(dt.Rows.Count - 1)("Producto") = rr(6).Trim
|
||||||
|
dt.Rows(dt.Rows.Count - 1)("Serie") = rr(7).Trim
|
||||||
|
dt.Rows(dt.Rows.Count - 1)("Cantidad") = 1
|
||||||
|
dt.Rows(dt.Rows.Count - 1)("Código") = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa).FiltroPrimeroValor("Codigo", String.Format("Codigo2 = '{0}'", rr(5).Trim))
|
||||||
|
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
r += 1
|
||||||
|
Next
|
||||||
|
|
||||||
|
ProcesaExcel(dt)
|
||||||
|
|
||||||
|
End Sub
|
||||||
#End Region
|
#End Region
|
||||||
|
|
||||||
Private Function GuardaDocumentoBitacora(ObjEventoBitacora As ClsOIEventos, CveMovimiento As Integer) As Boolean
|
Private Function GuardaDocumentoBitacora(ObjEventoBitacora As ClsOIEventos, CveMovimiento As Integer) As Boolean
|
||||||
|
|||||||
Reference in New Issue
Block a user