diff --git a/Ventas/ActualizarPrecios.aspx b/Ventas/ActualizarPrecios.aspx index d24a76714..20f8df15b 100644 --- a/Ventas/ActualizarPrecios.aspx +++ b/Ventas/ActualizarPrecios.aspx @@ -19,6 +19,16 @@
  • Importar Listado
  • +
  • + + + + + + + + +
  • diff --git a/Ventas/ActualizarPrecios.aspx.vb b/Ventas/ActualizarPrecios.aspx.vb index 5f654f4da..4cc1b3df3 100644 --- a/Ventas/ActualizarPrecios.aspx.vb +++ b/Ventas/ActualizarPrecios.aspx.vb @@ -5,7 +5,8 @@ Option Strict On Imports Extensiones Imports System.Data Imports GemBox.Spreadsheet - +Imports System.IO + Partial Class Ventas_ActualizarPrecios Inherits ClsPaginas @@ -17,6 +18,16 @@ Partial Class Ventas_ActualizarPrecios ViewState("DtSubProyectos") = value End Set End Property + + Private Property DtDatosPrecios As DataTable + Get + Return If(IsNothing(ViewState("DtDatosPrecios")), Nothing, CType(ViewState("DtDatosPrecios"), DataTable)) + End Get + Set(value As DataTable) + ViewState("DtDatosPrecios") = value + End Set + End Property + Private Property CveSucursal As Integer Get If ViewState("CveSucursal") Is Nothing Then @@ -145,7 +156,7 @@ Partial Class Ventas_ActualizarPrecios End Sub Private Sub CargarModelos() If UsuarioActual.Empresa.Funcionalidad(558).ToString = "1" Then - lblModelo.visible = True + lblModelo.Visible = True DdlModelo.Visible = True Dim ObjGeneral As New ClsGenerales If ObjGeneral.GetModelos(UsuarioActual.CveEmpresa) Then @@ -173,7 +184,8 @@ Partial Class Ventas_ActualizarPrecios If objPS.GetPSPreciosLista(UsuarioActual.CveEmpresa, DdlPrecioLista.SelectedValue.ToEntero, DDlClasificacion.SelectedValue.ToEntero, CvePS, CveProveedor:=CveProveedor, Estado:=DdlEstado.SelectedValue.ToEntero, Marcas:=Marcas, CveModelo:=DdlModelo.SelectedValue.ToEntero) Then - GVPrecios.DataSource = objPS.DtResultados + DtDatosPrecios = objPS.DtResultados + GVPrecios.DataSource = DtDatosPrecios End If objPS.Dispose() @@ -246,8 +258,8 @@ Partial Class Ventas_ActualizarPrecios TxtImporte.Text = "" TxtPrecio.Text = "" TxtPorcentaje.Text = "" - End Sub - + End Sub + #Region "MODAL PRECIOS MINIMOS" Public Sub LnkPrecioMinActual_Click(sender As Object, e As EventArgs) @@ -305,10 +317,10 @@ Partial Class Ventas_ActualizarPrecios ObjProductosServicios.Dispose() - End Sub - + End Sub + #End Region - + #Region "C A R G A R E X C E L " Private Sub BtnDescargarFormato_Click(sender As Object, e As EventArgs) Handles BtnDescargarFormato.Click @@ -544,9 +556,9 @@ Partial Class Ventas_ActualizarPrecios End While Return dataTable - End Function + End Function #End Region - + Protected Sub gvSucursal_RowDataBound(sender As Object, e As GridViewRowEventArgs) If e.Row.RowType = DataControlRowType.DataRow Then e.Row.FCTextBox("TxtPrecioMinimo").Attributes.Add("onKeyUp", String.Format("FncSeleccionaChk({0});", e.Row.FCCheckBox("chkSucursal").ClientID)) @@ -592,5 +604,200 @@ Partial Class Ventas_ActualizarPrecios Return True End If - End Function + End Function + Protected Sub LnkExportarExcel_Click(sender As Object, e As EventArgs) + Dim DtExcel As New DataTable("Precios") + DtExcel.Columns.Add(New DataColumn("Código", GetType(String))) + + If UsuarioActual.Empresa.Funcionalidad(531) = "1" Then 'Empresa Acumuladores + DtExcel.Columns.Add(New DataColumn("Código CPK", GetType(String))) + End If + + DtExcel.Columns.Add(New DataColumn("Producto/Servicio", GetType(String))) + DtExcel.Columns.Add(New DataColumn("Clasificación", GetType(String))) + DtExcel.Columns.Add(New DataColumn("Importe", GetType(Decimal))) + DtExcel.Columns.Add(New DataColumn("Precio Mínimo", GetType(Decimal))) + DtExcel.Columns.Add(New DataColumn("U.M.", GetType(String))) + DtExcel.Columns.Add(New DataColumn("Moneda", GetType(String))) + + If UsuarioActual.CveEmpresa = 153 Then 'Empresa servec + DtExcel.Columns.Add(New DataColumn("C. Promedio", GetType(Decimal))) + End If + + DtExcel.Columns.Add(New DataColumn("E. Mínimo", GetType(Decimal))) + DtExcel.Columns.Add(New DataColumn("Importe Anterior", GetType(Decimal))) + DtExcel.Columns.Add(New DataColumn("Precio Mínimo Anterior", GetType(Decimal))) + DtExcel.Columns.Add(New DataColumn("Fecha Modificación", GetType(DateTime))) + DtExcel.Columns.Add(New DataColumn("Usuario Modificó", GetType(String))) + DtExcel.Columns.Add(New DataColumn("Porcentaje", GetType(Decimal))) + DtExcel.Columns.Add(New DataColumn("Fecha Ingreso", GetType(Decimal))) + DtExcel.Columns.Add(New DataColumn("Usuario Ingresó", GetType(String))) + + + If DtDatosPrecios IsNot Nothing Then + For Each Row As DataRow In DtDatosPrecios.Rows + Dim NewRow As DataRow = DtExcel.NewRow() + + NewRow("Código") = Row("Codigo") + + If UsuarioActual.Empresa.Funcionalidad(531) = "1" Then 'Empresa Acumuladores + NewRow("Código CPK") = Row("Codigo2") + End If + + NewRow("Producto/Servicio") = Row("PS") + NewRow("Clasificación") = Row("Clasificacion") + NewRow("Importe") = Row("PrecioLista") + NewRow("Precio Mínimo") = Row("PrecioMinimo") + NewRow("U.M.") = Row("UnidadMedida") + NewRow("Moneda") = Row("Moneda") + + If UsuarioActual.CveEmpresa = 153 Then 'Empresa servec + NewRow("C. Promedio") = Row("CostoPromedio") + End If + + NewRow("E. Mínimo") = Row("VentaMinima") + NewRow("Importe Anterior") = Row("ImporteAnterior") + NewRow("Precio Mínimo Anterior") = Row("PrecioMinimoAnterior") + NewRow("Fecha Modificación") = Row("FechaModificacion") + NewRow("Usuario Modificó") = Row("UsuarioModifico") + NewRow("Porcentaje") = Row("Porcentaje") + NewRow("Fecha Ingreso") = Row("FechaIng") + NewRow("Usuario Ingresó") = Row("Usuario") + + DtExcel.Rows.Add(NewRow) + Next + End If + + SpreadsheetInfo.SetLicense(ModExtensiones.SerialGemBoxSpreadsheet) + + Dim FileExcel As New ExcelFile() + + Dim worksheet = FileExcel.Worksheets.Add(DtExcel.TableName) + worksheet.InsertDataTable(DtExcel, New InsertDataTableOptions() With + { + .ColumnHeaders = True, + .StartRow = 0, + .StartColumn = 0 + }) + worksheet.Rows(0).Style.FillPattern.SetPattern(FillPatternStyle.Solid, SpreadsheetColor.FromArgb(75, 119, 190), SpreadsheetColor.FromArgb(255, 255, 255)) + worksheet.Rows(0).Style.Font.Color = SpreadsheetColor.FromArgb(255, 255, 255) + + Dim columnCount = worksheet.CalculateMaxUsedColumns() + For i = 0 To columnCount + worksheet.Columns(i).AutoFit(1, worksheet.Rows(0), worksheet.Rows(worksheet.Rows.Count - 1)) + Next + + Dim FechaIMes As String = "", FechaFMes As String = "", Titulo As String = "LISTADO DE PRECIOS", ListaPrecios As String = DdlPrecioLista.SelectedItem.Text, Divisor As Integer = 1, AlturaImagen As Double = 100, AnchoImagen As Double = 100, DatoTituloExtra As String = "" + + + Dim TotalRowHeader As Integer = 8 + Dim TotalRowFooter As Integer = 2 + + + worksheet.Rows.InsertEmpty(0, TotalRowHeader) + Dim celdasConTexto = worksheet.GetUsedCellRange(True) + celdasConTexto.Style.Font.Name = "Calibri Light" + + Dim RangoNombreEmpresa = worksheet.Cells.GetSubrangeAbsolute(1, celdasConTexto.FirstColumnIndex, 1, celdasConTexto.LastColumnIndex) + RangoNombreEmpresa.Merged = True + RangoNombreEmpresa.Value = UsuarioActual.Empresa.Empresa + RangoNombreEmpresa.Style.Font.Size = 20 * 20 + RangoNombreEmpresa.Style.Font.Name = "Calibri Light" + RangoNombreEmpresa.Style.HorizontalAlignment = GemBox.Spreadsheet.HorizontalAlignmentStyle.Center + RangoNombreEmpresa.Style.VerticalAlignment = GemBox.Spreadsheet.VerticalAlignmentStyle.Center + + + Dim RangoTitulo = worksheet.Cells.GetSubrangeAbsolute(3, celdasConTexto.FirstColumnIndex, 3, celdasConTexto.LastColumnIndex) + RangoTitulo.Merged = True + RangoTitulo.Value = Titulo + RangoTitulo.Style.Font.Size = 17 * 20 + RangoTitulo.Style.Font.Name = "Calibri Light" + RangoTitulo.Style.HorizontalAlignment = GemBox.Spreadsheet.HorizontalAlignmentStyle.Center + RangoTitulo.Style.VerticalAlignment = GemBox.Spreadsheet.VerticalAlignmentStyle.Center + + + 'If FechaIMes.Trim.Length > 0 And FechaFMes.Trim.Length > 0 Then + ' Dim RangoFechas = worksheet.Cells.GetSubrangeAbsolute(4, celdasConTexto.FirstColumnIndex, 4, celdasConTexto.LastColumnIndex) + ' RangoFechas.Merged = True + ' RangoFechas.Value = $"Fechas: {FechaIMes} a {FechaFMes}" + ' RangoFechas.Style.Font.Size = 15 * 20 + ' RangoFechas.Style.Font.Name = "Calibri Light" + ' RangoFechas.Style.HorizontalAlignment = GemBox.Spreadsheet.HorizontalAlignmentStyle.Center + ' RangoFechas.Style.VerticalAlignment = GemBox.Spreadsheet.VerticalAlignmentStyle.Center + 'End If + + + If ListaPrecios.Length > 0 Then + Dim RangoSubProyecto = worksheet.Cells.GetSubrangeAbsolute(5, celdasConTexto.FirstColumnIndex, 5, celdasConTexto.LastColumnIndex) + RangoSubProyecto.Merged = True + RangoSubProyecto.Value = $"Lista de precio: {ListaPrecios}" + RangoSubProyecto.Style.Font.Size = 14 * 20 + RangoSubProyecto.Style.Font.Name = "Calibri Light" + RangoSubProyecto.Style.HorizontalAlignment = GemBox.Spreadsheet.HorizontalAlignmentStyle.Center + RangoSubProyecto.Style.VerticalAlignment = GemBox.Spreadsheet.VerticalAlignmentStyle.Center + End If + + + For i = celdasConTexto.FirstColumnIndex To celdasConTexto.LastColumnIndex + + worksheet.Rows(8).Cells(i).Style.Font.Size = 12 * 20 + worksheet.Rows(8).Cells(i).Style.HorizontalAlignment = GemBox.Spreadsheet.HorizontalAlignmentStyle.Center + worksheet.Rows(8).Cells(i).Style.VerticalAlignment = GemBox.Spreadsheet.VerticalAlignmentStyle.Center + + worksheet.Rows(8).Cells(i).Style.FillPattern.SetPattern(GemBox.Spreadsheet.FillPatternStyle.Solid, GemBox.Spreadsheet.SpreadsheetColor.FromArgb(75, 119, 190), GemBox.Spreadsheet.SpreadsheetColor.FromArgb(255, 255, 255)) + worksheet.Rows(8).Cells(i).Style.Font.Color = GemBox.Spreadsheet.SpreadsheetColor.FromArgb(255, 255, 255) + + + + If i > 0 Then + Try + worksheet.Columns(i).AutoFit(1) + Catch ex As Exception + End Try + End If + + Next + + + Dim IndexEndTable As Integer = DtExcel.Rows.Count + TotalRowHeader + TotalRowFooter + + worksheet.Rows(IndexEndTable).Cells(0).Value = "Usuario Imprimió" + worksheet.Rows(IndexEndTable + 1).Cells(0).Value = UsuarioActual.Nombre + + worksheet.Rows(IndexEndTable).Cells(2).Value = "Fecha Impresión" + worksheet.Rows(IndexEndTable + 1).Cells(2).Value = DateTime.Now.ToString("dd/MM/yyyy") + + Dim Imagen As New System.IO.FileInfo(String.Format("{0}/Logo.png", UsuarioActual.Empresa.Ruta)) + + If Imagen.Exists Then + Dim Ruta As String = String.Format("{0}/Logo.png", UsuarioActual.Empresa.Ruta) + Using sr As New StreamReader(Ruta) + Dim ms As New MemoryStream() + sr.BaseStream.CopyTo(ms) + worksheet.Pictures.Add(ms, ExcelPictureFormat.Png, "A1", AnchoImagen, AlturaImagen, LengthUnit.Pixel) + End Using + End If + + + For I = celdasConTexto.FirstColumnIndex To celdasConTexto.LastColumnIndex + + If I > 0 Then + + If Divisor = 1 Then + worksheet.Columns(I + 1).Style.NumberFormat = "#,##0.00" + Else + worksheet.Columns(I + 1).Style.NumberFormat = "#,##" + End If + + Try + worksheet.Columns(I).AutoFit(1) + Catch ex As Exception + End Try + + End If + Next + + FileExcel.Save(Response, "Precios.xlsx", SaveOptions.XlsxDefault) + + End Sub End Class \ No newline at end of file