-- mejora

This commit is contained in:
2023-10-31 13:14:21 -07:00
parent 3b3c94a402
commit 033ac21ce0
2 changed files with 125 additions and 78 deletions

View File

@@ -19,6 +19,9 @@
<li> <li>
<asp:LinkButton ID="LnkEliminarSeleccionados" runat="server" OnClick="LnkEliminarSeleccionados_Click"><i class='fa fa-trash' style="color:red"></i> Eliminar seleccionados</asp:LinkButton> <asp:LinkButton ID="LnkEliminarSeleccionados" runat="server" OnClick="LnkEliminarSeleccionados_Click"><i class='fa fa-trash' style="color:red"></i> Eliminar seleccionados</asp:LinkButton>
</li> </li>
<li>
<asp:LinkButton ID="ImgExcel" runat="server"> <i class="fa fa-file-excel-o" style="font-weight:bold;"></i> Excel</asp:LinkButton>
</li>
</asp:Content> </asp:Content>
<asp:Content ID="Content6" ContentPlaceHolderID="HA" runat="Server"> <asp:Content ID="Content6" ContentPlaceHolderID="HA" runat="Server">
</asp:Content> </asp:Content>
@@ -90,7 +93,7 @@
<div class="row"> <div class="row">
<div class="col-md-12"> <div class="col-md-12">
<asp:GridView ID="GvDatos" runat="server" AutoGenerateColumns="false" EmptyDataText="No se encontraron solicitudes de facturación" OnRowDataBound="GvDatos_RowDataBound" <asp:GridView ID="GvDatos" runat="server" AutoGenerateColumns="false" EmptyDataText="No se encontraron solicitudes de facturación" OnRowDataBound="GvDatos_RowDataBound"
DataKeyNames="CveFacturacionAcarreo,CvePSGeneral,Cantidad,CveCliente,CveSubProyecto,CvePSRelacionado" CssClass="table table-striped table-advance table-hover Widthall ScrollAD mysmallbtn" data-sort="true" GridLines="None" Width="99%"> DataKeyNames="CveFacturacionAcarreo,CvePSGeneral,Cantidad,CveCliente,CveSubProyecto,CvePSRelacionado,Folio,FolioAdicional" CssClass="table table-striped table-advance table-hover Widthall ScrollAD mysmallbtn" data-sort="true" GridLines="None" Width="99%">
<Columns> <Columns>
<asp:TemplateField ItemStyle-HorizontalAlign="center" ItemStyle-Width="20px" HeaderStyle-Width="20px" ItemStyle-CssClass="NoClick"> <asp:TemplateField ItemStyle-HorizontalAlign="center" ItemStyle-Width="20px" HeaderStyle-Width="20px" ItemStyle-CssClass="NoClick">
<HeaderTemplate> <HeaderTemplate>
@@ -100,7 +103,6 @@
<asp:CheckBox runat="server" ID="chk" CssClass="ChkAllEvt" /> <asp:CheckBox runat="server" ID="chk" CssClass="ChkAllEvt" />
</ItemTemplate> </ItemTemplate>
</asp:TemplateField> </asp:TemplateField>
<asp:BoundField HeaderText="Cliente" DataField="Nombre" />
<asp:BoundField HeaderText="Servicio" DataField="Servicio" /> <asp:BoundField HeaderText="Servicio" DataField="Servicio" />
<asp:BoundField HeaderText="Mercancia" DataField="Mercancia" /> <asp:BoundField HeaderText="Mercancia" DataField="Mercancia" />
<asp:BoundField HeaderText="Fecha Salida" DataField="FechaSalida" DataFormatString="{0:dd/MM/yyyy HH:mm}" ItemStyle-Width="80px" /> <asp:BoundField HeaderText="Fecha Salida" DataField="FechaSalida" DataFormatString="{0:dd/MM/yyyy HH:mm}" ItemStyle-Width="80px" />
@@ -108,6 +110,8 @@
<asp:BoundField HeaderText="Cant." DataField="Cantidad" DataFormatString="{0:N2}" ItemStyle-HorizontalAlign="Right" /> <asp:BoundField HeaderText="Cant." DataField="Cantidad" DataFormatString="{0:N2}" ItemStyle-HorizontalAlign="Right" />
<asp:BoundField HeaderText="Origen" DataField="DireccionOrigen" /> <asp:BoundField HeaderText="Origen" DataField="DireccionOrigen" />
<asp:BoundField HeaderText="Destino" DataField="DireccionDestino" /> <asp:BoundField HeaderText="Destino" DataField="DireccionDestino" />
<asp:BoundField HeaderText="Boleta" DataField="Folio" />
<asp:BoundField HeaderText="Hoja Servicio" DataField="FolioAdicional" />
<asp:HyperLinkField HeaderText="Serie Folio" DataTextField="SerieFolio" DataNavigateUrlFields="CveVenta" DataNavigateUrlFormatString="/Ventas/Ventas.aspx?CveVenta={0}" /> <asp:HyperLinkField HeaderText="Serie Folio" DataTextField="SerieFolio" DataNavigateUrlFields="CveVenta" DataNavigateUrlFormatString="/Ventas/Ventas.aspx?CveVenta={0}" />
</Columns> </Columns>
<RowStyle CssClass="Texto" /> <RowStyle CssClass="Texto" />

View File

@@ -1,13 +1,15 @@
 Option Explicit On
Option Explicit On
Option Strict On Option Strict On
Imports System.Data Imports System.Data
Imports System.IO Imports System.IO
Imports System.IO.Compression
Imports System.Net.Http
Imports ADSTimbrado Imports ADSTimbrado
Imports Extensiones Imports Extensiones
Imports GemBox.Spreadsheet Imports GemBox.Spreadsheet
Partial Class Ventas_FacturacionAcarreos Partial Class Ventas_FacturacionAcarreos
Inherits ClsPaginas Inherits ClsPaginas
@@ -15,6 +17,11 @@ Partial Class Ventas_FacturacionAcarreos
If Not Page.IsPostBack Then If Not Page.IsPostBack Then
CargaDatos() CargaDatos()
End If End If
If IfNull(Request("OP"), "").ToString = "File" Then
DescargaArchivoDirecto(Request("File").ToString)
End If
End Sub End Sub
Private Sub CargaDatos() Private Sub CargaDatos()
@@ -41,17 +48,18 @@ Partial Class Ventas_FacturacionAcarreos
.Add(New DataColumn("Sucursal", GetType(String))) .Add(New DataColumn("Sucursal", GetType(String)))
.Add(New DataColumn("RFC", GetType(String))) .Add(New DataColumn("RFC", GetType(String)))
.Add(New DataColumn("Cantidad", GetType(Decimal))) .Add(New DataColumn("Cantidad", GetType(Decimal)))
.Add(New DataColumn("Folio", GetType(String)))
.Add(New DataColumn("ProductoGeneral", GetType(String))) .Add(New DataColumn("ProductoGeneral", GetType(String)))
.Add(New DataColumn("Origen", GetType(String))) .Add(New DataColumn("Origen", GetType(String)))
.Add(New DataColumn("Destino", GetType(String))) .Add(New DataColumn("Destino", GetType(String)))
.Add(New DataColumn("FechaSalida", GetType(DateTime))) .Add(New DataColumn("FechaSalida", GetType(DateTime)))
.Add(New DataColumn("FechaLlegada", GetType(DateTime))) .Add(New DataColumn("FechaLlegada", GetType(DateTime)))
.Add(New DataColumn("Unidad", GetType(String))) .Add(New DataColumn("Unidad", GetType(String)))
.Add(New DataColumn("Chofer", GetType(String))) '.Add(New DataColumn("Chofer", GetType(String)))
.Add(New DataColumn("Configuración", GetType(String))) '.Add(New DataColumn("Remolque1", GetType(String)))
.Add(New DataColumn("Remolque1", GetType(String))) '.Add(New DataColumn("Remolque2", GetType(String)))
.Add(New DataColumn("Remolque2", GetType(String)))
.Add(New DataColumn("Distancia", GetType(Decimal))) .Add(New DataColumn("Distancia", GetType(Decimal)))
.Add(New DataColumn("HojaServicio", GetType(String)))
End With End With
SpreadsheetInfo.SetLicense(ModExtensiones.SerialGemBoxSpreadsheet) SpreadsheetInfo.SetLicense(ModExtensiones.SerialGemBoxSpreadsheet)
@@ -119,15 +127,30 @@ Partial Class Ventas_FacturacionAcarreos
Dim FechaLlegada As DateTime = MinFecha Dim FechaLlegada As DateTime = MinFecha
If row("FechaSalida").ToString().ToDateTime() > FechaSalida Then If row("FechaSalida").ToString().ToDateTime() > FechaSalida Then
FechaSalida = row("FechaSalida").ToString().ToDateTime() FechaSalida = row("FechaSalida").ToString().ToDateTime().AddHours(9)
End If End If
If row("FechaLlegada").ToString().ToDateTime() > FechaLlegada Then If row("FechaLlegada").ToString().ToDateTime() > FechaLlegada Then
FechaLlegada = row("FechaLlegada").ToString().ToDateTime() FechaLlegada = row("FechaLlegada").ToString().ToDateTime().AddHours(14)
End If End If
Dim Chofer, Configuracion, Remolque1, Remolque2 As String
Dim dtu As DataRow = GlobalDTInvCamiones(UsuarioActual.CveEmpresa).FiltroPrimero($"Placa = '{row("Unidad")}'")
If dtu IsNot Nothing Then
'Chofer = dtu("Chofer").ToString
'Configuracion = dtu("Configuracion").ToString
Remolque1 = dtu("Remolque1").ToString
Remolque2 = dtu("Remolque2").ToString
Else
Chofer = "" : Configuracion = "" : Remolque1 = "" : Remolque2 = ""
End If
'temporal
Chofer = row("Folio").ToString
Configuracion = row("HojaServicio").ToString
Dim msg As String = ObjVentas.AddFacturacionAcarreos(row("Sucursal").ToString(), row("RFC").ToString(), row("Cantidad").ToString().ToDecimal(), row("ProductoGeneral").ToString(), row("Origen").ToString(), Dim msg As String = ObjVentas.AddFacturacionAcarreos(row("Sucursal").ToString(), row("RFC").ToString(), row("Cantidad").ToString().ToDecimal(), row("ProductoGeneral").ToString(), row("Origen").ToString(),
row("Destino").ToString(), FechaSalida, FechaLlegada, row("Unidad").ToString(), row("Chofer").ToString(), row("Configuración").ToString(), row("Destino").ToString(), FechaSalida, FechaLlegada, row("Unidad").ToString(), Chofer, Configuracion,
row("Remolque1").ToString(), row("Remolque2").ToString(), row("Distancia").ToString().ToDecimal(), UsuarioActual.CveEmpresa) Remolque1, Remolque2, row("Distancia").ToString().ToDecimal(), UsuarioActual.CveEmpresa)
If msg = "Correcto" Then If msg = "Correcto" Then
RowsCargados += 1 RowsCargados += 1
Else Else
@@ -165,58 +188,6 @@ Partial Class Ventas_FacturacionAcarreos
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
dataTable.Columns.Add("NoExcel", GetType(String))
While curRow < worksheet.Rows.Count
columns = New String(cols) {}
For curCol = 0 To cols
If curCol = cols Then
columns(curCol) = worksheet.Rows(curRow).Name
Else
If worksheet.Rows(curRow).Cells(curCol).Value Is Nothing Then
columns(curCol) = ""
Else
columns(curCol) = worksheet.Rows(curRow).Cells(curCol).Value.ToString()
End If
End If
Next
dataTable.Rows.Add(columns)
curRow += 1
End While
Return dataTable
End Function
#End Region #End Region
Protected Sub GvDatos_RowDataBound(sender As Object, e As GridViewRowEventArgs) Protected Sub GvDatos_RowDataBound(sender As Object, e As GridViewRowEventArgs)
@@ -227,9 +198,6 @@ Partial Class Ventas_FacturacionAcarreos
End If End If
End Sub End Sub
Protected Sub LnkFacturarSeleccionados_Click(sender As Object, e As EventArgs) Protected Sub LnkFacturarSeleccionados_Click(sender As Object, e As EventArgs)
If GvDatos.Rows.Cast(Of GridViewRow)().Count(Function(gvr) gvr.FCCheckBox("chk").Checked) <= 0 Then If GvDatos.Rows.Cast(Of GridViewRow)().Count(Function(gvr) gvr.FCCheckBox("chk").Checked) <= 0 Then
@@ -238,10 +206,17 @@ Partial Class Ventas_FacturacionAcarreos
End If End If
Dim msg As New StringBuilder() Dim msg As New StringBuilder()
Dim msgDescarga As New StringBuilder()
Dim NumFacturasGeneradas As Integer = 0 Dim NumFacturasGeneradas As Integer = 0
Dim NumFacturasTimbradas As Integer = 0 Dim NumFacturasTimbradas As Integer = 0
Dim Archivo As String = ""
Dim NombreArchivo As String = String.Format("Acarreos{0}{1}.zip", NowADS().ToString("yyyyMMddhhmmss"), UsuarioActual.CveUsuario.ToString)
Dim ArchivoDestino As String = String.Format("{0}Temp/{1}", UsuarioActual.Empresa.Ruta, NombreArchivo)
Dim HuboInexistentes As Boolean = False
Dim archiveZip As ZipArchive = ZipFile.Open(ArchivoDestino, ZipArchiveMode.Create)
For Each GvRow As GridViewRow In GvDatos.Rows For Each GvRow As GridViewRow In GvDatos.Rows
If GvRow.RowType = DataControlRowType.DataRow Then If GvRow.RowType = DataControlRowType.DataRow Then
If GvRow.FCCheckBox("chk").Checked Then If GvRow.FCCheckBox("chk").Checked Then
@@ -251,10 +226,10 @@ Partial Class Ventas_FacturacionAcarreos
Dim CveMoneda As Integer = 1 Dim CveMoneda As Integer = 1
Dim CvePS As Integer = GvRow.DataKey("CvePSGeneral").ToEntero() Dim CvePS As Integer = GvRow.DataKey("CvePSGeneral").ToEntero()
Dim Cantidad As Decimal = GvRow.DataKey("Cantidad").ToEntero() Dim Cantidad As Decimal = GvRow.DataKey("Cantidad").ToDecimal()
Dim PU As Decimal = -1 Dim PU As Decimal = -1
Dim Descuento As Decimal = 0 Dim Descuento As Decimal = 0
Dim Obs As String = "" Dim Obs As String = $"DE ACARREO DE MINERAL DE HIERRO AQUILA SINALOA, MÉXICO, FOLIO: { GvRow.DataKey("Folio")} HOJA DE SERVICIO: {GvRow.DataKey("FolioAdicional")}"
Dim CvePSMercancia As Integer = GvRow.DataKey("CvePSRelacionado").ToEntero() Dim CvePSMercancia As Integer = GvRow.DataKey("CvePSRelacionado").ToEntero()
@@ -274,8 +249,19 @@ Partial Class Ventas_FacturacionAcarreos
msg.AppendFormat("{0}<br/>", m) msg.AppendFormat("{0}<br/>", m)
Next Next
If resp.TieneError AndAlso resp.Mensajes.Count = 0 Then If Not resp.TieneError Then
msg.Append("Ocurrió un error al generar la factura.<br/>") If resp.SerieFolio <> String.Empty Then
msgDescarga.AppendFormat("{0},", resp.SerieFolio)
DescargarFactura(resp.CveVenta, UsuarioActual.CveEmpresa, UsuarioActual.CveUsuario)
Archivo = String.Format("{0}PDF/ING/{1}.pdf", UsuarioActual.Empresa.Ruta.Replace("\", "/"), resp.SerieFolio)
If File.Exists(Archivo) Then
archiveZip.CreateEntryFromFile(Archivo, resp.SerieFolio & ".pdf")
End If
Archivo = String.Format("{0}XML/ING/{1}.xml", UsuarioActual.Empresa.Ruta.Replace("\", "/"), resp.SerieFolio)
If File.Exists(Archivo) Then
archiveZip.CreateEntryFromFile(Archivo, resp.SerieFolio & ".xml")
End If
End If
End If End If
If resp.CveVenta > 0 AndAlso Not resp.TieneError Then If resp.CveVenta > 0 AndAlso Not resp.TieneError Then
@@ -287,9 +273,14 @@ Partial Class Ventas_FacturacionAcarreos
End If End If
End If End If
Next Next
archiveZip.Dispose()
If NumFacturasGeneradas > 0 Then If NumFacturasGeneradas > 0 Then
Alert($"Se generaron {NumFacturasGeneradas} y se timbraron {NumFacturasTimbradas} facturas. <br/>" + msg.ToString(), TipoMensaje.MsgInformacion) Dim stt As String = $"Se generaron {NumFacturasGeneradas} y se timbraron {NumFacturasTimbradas} facturas. <br/>"
If msgDescarga.Length > 0 Then
stt += String.Format("<a target='_blank' class='Texto' href='/Ventas/FacturacionAcarreos.aspx?OP=File&File={0}'>Descarga zip</a>", NombreArchivo)
End If
Alert(stt, TipoMensaje.MsgInformacion)
Else Else
Alert($"No se pudieron generar facturas. <br/>" + msg.ToString(), TipoMensaje.MsgError) Alert($"No se pudieron generar facturas. <br/>" + msg.ToString(), TipoMensaje.MsgError)
End If End If
@@ -367,4 +358,56 @@ Partial Class Ventas_FacturacionAcarreos
Protected Sub BtnConsultar_Click(sender As Object, e As EventArgs) Protected Sub BtnConsultar_Click(sender As Object, e As EventArgs)
CargaDatos() CargaDatos()
End Sub End Sub
Private Sub ImgExcel_Click(sender As Object, e As EventArgs) Handles ImgExcel.Click
GvDatos.Columns(0).Visible = False
GvDatos.ExportToExcel("Acarreos_" & NowADS().ToShortDateString & ".xls")
GvDatos.Columns(0).Visible = True
End Sub
Private Function DescargarFactura(CveVenta As Integer, CveEmpresa As Integer, CveUsuarioCreo As Integer, Optional GetBytes As Boolean = True, Optional Regenerar As Boolean = False, Optional strURLHOST As String = "") As Byte()
If String.IsNullOrEmpty(strURLHOST) Then
strURLHOST = String.Format("{0}://{1}:{2}", HttpContext.Current.Request.Url.Scheme, HttpContext.Current.Request.Url.Host, HttpContext.Current.Request.Url.Port)
End If
Dim Url As New Uri(String.Format("{0}/Compras/PopUpVerFactura.aspx?P={1}", strURLHOST, Encripta(String.Format("OP=VTA&CVEVENTA={0}&PAG=1&GUARDAR=1&REGENERAR={1}", CveVenta, If(Regenerar, "1", "0")))))
Dim File As Byte() = Nothing
Try
Using httpClient As New HttpClient()
httpClient.Timeout = New TimeSpan(0, 2, 0)
Using request As New HttpRequestMessage(HttpMethod.Get, Url)
request.Headers.Add("ADSToken", Encripta(String.Format("CVEEMPRESA={0}&TICKS={1}&CveUsuario={2}", CveEmpresa, DateTime.UtcNow.Ticks, CveUsuarioCreo)))
Dim response As HttpResponseMessage = httpClient.SendAsync(request).Result
If GetBytes AndAlso response.StatusCode = Net.HttpStatusCode.OK Then
File = response.Content.ReadAsByteArrayAsync().Result
End If
End Using
End Using
Catch ex As Exception
File = Nothing
OnError("Ocurrió un error al descargar la factura", ex)
End Try
Return File
End Function
Private Sub DescargaArchivoDirecto(NombreArchivo As String)
If NombreArchivo <> "" Then
NombreArchivo = String.Format("{0}Temp\{1}", UsuarioActual.Empresa.Ruta, NombreArchivo)
Dim Archivo As New System.IO.FileInfo(NombreArchivo)
If Archivo.Exists Then
HttpContext.Current.Response.Clear()
HttpContext.Current.Response.ClearContent()
HttpContext.Current.Response.ContentType = "application/zip"
HttpContext.Current.Response.AppendHeader("Content-disposition", String.Format("attachment; filename={0}", Archivo.Name))
HttpContext.Current.Response.TransmitFile(NombreArchivo)
HttpContext.Current.Response.Flush()
HttpContext.Current.Response.End()
End If
Archivo = Nothing
End If
End Sub
End Class End Class