diff --git a/App_Code/Modelos.vb b/App_Code/Modelos.vb index 67da1c6c7..a0ddf2eef 100644 --- a/App_Code/Modelos.vb +++ b/App_Code/Modelos.vb @@ -4100,7 +4100,7 @@ Namespace Modelos 'CANCELACION DE PAGOS DE REMISIONES If ObjFactura.DtPagosFacturaGlobal IsNot Nothing Then - For Each DrPago As DataRow In DtPagosFacturaGlobal.Rows + For Each DrPago As DataRow In ObjFactura.DtPagosFacturaGlobal.Rows Dim ventaRef As ClsPaginas.Venta = Nothing @@ -4164,7 +4164,7 @@ Namespace Modelos Dim VentaActual As New ClsPaginas.Venta(ObjFactura, UsuarioActual) - For Each DrPago As DataRow In DtPagosFacturaGlobal.Rows + For Each DrPago As DataRow In ObjFactura.DtPagosFacturaGlobal.Rows Dim Importe As Decimal = DrPago("Importe").ToString().ToDecimal() Dim Pago As New ClsPaginas.VentaPago diff --git a/Ventas/PVCobranza.aspx b/Ventas/PVCobranza.aspx index 3f5d77aae..c6e6fc216 100644 --- a/Ventas/PVCobranza.aspx +++ b/Ventas/PVCobranza.aspx @@ -813,6 +813,11 @@ function impresionDirecta(urlPDF) { printJS({ printable: urlPDF, type: 'pdf', showModal: true }); } + + function impresionBase64(pdfBase64) { + printJS({ printable: pdfBase64, type: 'pdf', showModal: true, base64: true }); + } + function CalculaTotalPagoContado() { debugger; var totalEfectivo = ToDouble($get("TxtImporteEfectivo").value); diff --git a/Ventas/PVCobranza.aspx.vb b/Ventas/PVCobranza.aspx.vb index 2da8d426b..7fa837efc 100644 --- a/Ventas/PVCobranza.aspx.vb +++ b/Ventas/PVCobranza.aspx.vb @@ -2,6 +2,7 @@ Option Strict On Imports System.Data +Imports System.IO Imports Extensiones Partial Class Ventas_PVCobranza @@ -543,13 +544,13 @@ Partial Class Ventas_PVCobranza Dim ExistePDF As Boolean = False Dim ArchivoPDF As String = String.Format("{0}/PDF/{1}/{2}.pdf", UsuarioActual.Empresa.Ruta, ObjFactura.TipoDocto, ObjFactura.SerieFolio) - If ObjFactura.TipoDocto = "Rem" AndAlso System.IO.File.Exists(ArchivoPDF) Then + If File.Exists(ArchivoPDF) Then ExistePDF = True Else 'REGENERAR EL PDF Try - GenerarPDFVenta(CveVenta, AplicaPagare:="1", GuardarPDF:=True, RegenerarPDF:=True, DescargarArchivo:=False, EsTicket:=True) - If System.IO.File.Exists(ArchivoPDF) Then + GenerarPDFVenta(CveVenta, AplicaPagare:="1", GuardarPDF:=True, RegenerarPDF:=True, DescargarArchivo:=False) + If File.Exists(ArchivoPDF) Then ExistePDF = True End If Catch ex As Exception @@ -558,8 +559,24 @@ Partial Class Ventas_PVCobranza End If If ExistePDF Then - Dim urlPDF As String = $"/Ashx/SIGDesc.ashx?metodo=descargarPDFVenta&CveVenta={CveVenta}" - RegistraScript($"impresionDirecta('{urlPDF}');", "Imprimir") + Dim pdf64 As String = "" + 'DUPLICA EL PDF + Using ms As New MemoryStream + Using pdfdoc As New iText.Kernel.Pdf.PdfDocument(New iText.Kernel.Pdf.PdfWriter(ms)) + pdfdoc.InitializeOutlines() + Dim reporteByte As New MemoryStream(System.IO.File.ReadAllBytes(ArchivoPDF)) + + Dim docPDF As New iText.Kernel.Pdf.PdfDocument(New iText.Kernel.Pdf.PdfReader(reporteByte)) + docPDF.CopyPagesTo(1, docPDF.GetNumberOfPages(), pdfdoc) + docPDF.CopyPagesTo(1, docPDF.GetNumberOfPages(), pdfdoc) + docPDF.Close() + + pdfdoc.Close() + End Using + pdf64 = Convert.ToBase64String(ms.ToArray()) + End Using + + RegistraScript($"impresionBase64('{pdf64}');", "Imprimir") Else Alert("No se pudo imprimir el pdf directamente. favor de descargar manualmente el pdf.", TipoMensaje.MsgAdvertencia) End If diff --git a/Ventas/Ventas.aspx b/Ventas/Ventas.aspx index c2155b32e..d068cee68 100644 --- a/Ventas/Ventas.aspx +++ b/Ventas/Ventas.aspx @@ -8878,6 +8878,10 @@ printJS({printable:urlPDF, type:'pdf', showModal:true}); } + function impresionBase64(pdfBase64) { + printJS({printable:pdfBase64, type:'pdf', showModal:true, base64: true}); + } + function abrirDdlPS(){ $(document).ready(function() { $('#C_Tab_TabGenerales_DdlPS > select').select2('open').next().find(':input.select2-search__field').focus(); diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index 803f4b082..5cfd8293c 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -12445,6 +12445,36 @@ Partial Class Ventas ObjFactura.DtMercancias = DtMercancias ObjFactura.DtImpuestosLocales = TmpDTImpuestos + + 'TRASPASAR PAGOS DE REMISIONES A LA FACTURA NUEVA + If UsuarioActual.Empresa.Funcionalidad(109) = "1" AndAlso ObjFactura.TipoDocto = "Ing" Then + Dim DtRemisionesPagos As DataTable = Nothing + + If Me.CveVenta > 0 AndAlso TipoDoctoViejo = "Rem" Then + Dim ObjClientes As New ClsClientes + If ObjClientes.GetVentasRemisionesPagos(CveCliente, Me.CveVenta.ToString()) Then + DtRemisionesPagos = ObjClientes.DtResultados.Copy() + End If + ObjClientes.Dispose() + ElseIf Me.RemisionesLista IsNot Nothing AndAlso Me.RemisionesLista.Count > 0 Then + Dim sb As New StringBuilder + For Each CveRemision As Integer In RemisionesLista + sb.Append($"{CveRemision},") + Next + sb.Remove(sb.Length - 1, 1) + + Dim ObjClientes As New ClsClientes + If ObjClientes.GetVentasRemisionesPagos(CveCliente, sb.ToString()) Then + DtRemisionesPagos = ObjClientes.DtResultados.Copy() + End If + ObjClientes.Dispose() + End If + + If DtRemisionesPagos IsNot Nothing Then + ObjFactura.DtPagosFacturaGlobal = DtRemisionesPagos + End If + + End If End Sub Private Sub CreaObjetosVentaDevolucion() @@ -15438,6 +15468,49 @@ Partial Class Ventas ErrorPrepoliza = True ErrorList.Add("No se pueden facturar las remisiones, con ese tipo de comprobante seleccionado") Else + + 'CANCELACION DE PAGOS DE REMISIONES + If ObjFactura.DtPagosFacturaGlobal IsNot Nothing Then + For Each DrPago As DataRow In ObjFactura.DtPagosFacturaGlobal.Rows + + Dim ventaRef As ClsPaginas.Venta = Nothing + + Using ObjFacturaRef As New Modelos.Factura(UsuarioActual, DrPago("CveVenta").ToString().ToEntero(), UsuarioActual.CveEmpresa, CargaDTDetalle:=False, VerificaAlmacen:=False, CargaDatosCliente:=False, CargaDatosRelacionados:=False) + ventaRef = New ClsPaginas.Venta(ObjFacturaRef, UsuarioActual) + End Using + + If ventaRef IsNot Nothing Then + Dim Importe As Decimal = DrPago("Importe").ToString().ToDecimal() * -1 + + Dim Pago As New ClsPaginas.VentaPago + Pago.Fecha = Now + Pago.FechaDocumentoRelacionado = DrPago("FechaDocumento").ToString().ToDate + Pago.ImportePagoVenta = Importe + Pago.ImportePago = Importe + Pago.CveIE = DrPago("CveIE").ToString().ToEntero() + Pago.CveMonedaPago = DrPago("CveMoneda").ToString().ToEntero() + Pago.TCPago = DrPago("TipoCambio").ToString().ToDecimal() + Pago.AplicaTraslado = False + Pago.Referencia = DrPago("Folio").ToString() + Pago.CveVentaAmortizacion = -1 + + If DrPago("TipoPago").ToString() = "NC" Then + Pago.TipoPago = "NC" + Else + Pago.TipoPago = "B" + End If + + ErrorPrepoliza = ClsPaginas.AplicaPrePolizaPagoVenta(ventaRef, Pago, ObjFactura.CvePrePoliza, ObjConta, AplicarConceptoAplicacion:=False) + Else + ErrorPrepoliza = True + End If + + If ErrorPrepoliza Then + Exit For + End If + Next + End If + For Each CveRemision As Integer In RemisionesLista If Not ObjConta.TraspasarSaldosRemision(CveRemision, ObjFactura.CvePrePoliza, ObjFactura.CveVenta) Then @@ -15463,6 +15536,41 @@ Partial Class Ventas ErrorPrepoliza = True End If Next + + 'TRASPASO DE PAGOS DE REMISIONES A FACTURA GLOBAL + If ObjFactura.DtPagosFacturaGlobal IsNot Nothing Then + + Dim VentaActual As New ClsPaginas.Venta(ObjFactura, UsuarioActual) + + For Each DrPago As DataRow In ObjFactura.DtPagosFacturaGlobal.Rows + Dim Importe As Decimal = DrPago("Importe").ToString().ToDecimal() + + Dim Pago As New ClsPaginas.VentaPago + Pago.Fecha = Now + Pago.FechaDocumentoRelacionado = DrPago("FechaDocumento").ToString().ToDate + Pago.ImportePagoVenta = Importe + Pago.ImportePago = Importe + Pago.CveIE = DrPago("CveIE").ToString().ToEntero() + Pago.CveMonedaPago = DrPago("CveMoneda").ToString().ToEntero() + Pago.TCPago = DrPago("TipoCambio").ToString().ToDecimal() + Pago.AplicaTraslado = False + Pago.Referencia = DrPago("Folio").ToString() + Pago.CveVentaAmortizacion = DrPago("CveVenta").ToString().ToEntero() + + If DrPago("TipoPago").ToString() = "NC" Then + Pago.TipoPago = "NC" + Else + Pago.TipoPago = "B" + End If + + ErrorPrepoliza = ClsPaginas.AplicaPrePolizaPagoVenta(VentaActual, Pago, ObjFactura.CvePrePoliza, ObjConta, AplicarConceptoAplicacion:=False) + + If ErrorPrepoliza Then + Exit For + End If + Next + End If + End If End If @@ -29095,9 +29203,8 @@ Partial Class Ventas End If If UsuarioActual.Empresa.Funcionalidad(109) = "1" Then - If TxtAtencionA.Text.Trim.Length = 0 Then - TxtAtencionA.Enabled = True - End If + TxtAtencionA.Enabled = True + UpCliente.Update() End If Catch ex As Exception @@ -30160,12 +30267,6 @@ Partial Class Ventas Exit Sub End If - If UsuarioActual.Empresa.Funcionalidad(109) = "1" Then - If TxtAtencionA.Text.Trim.Length = 0 Then - TxtAtencionA.Enabled = True - End If - End If - AplicaDevolucion = True SaldoVentaDevolucion = HplSaldoAuxiliar.Text.ToDecimal CveVentaDevolucion = CveVenta @@ -30238,6 +30339,11 @@ Partial Class Ventas CargaNC(CveVenta) CalculaTotalesVenta() + If UsuarioActual.Empresa.Funcionalidad(109) = "1" Then + TxtAtencionA.Enabled = True + UpCliente.Update() + End If + RegistraScript("$('#DivAplicaDevolucion').modal('hide')") End Sub @@ -37534,8 +37640,24 @@ Partial Class Ventas End If If ExistePDF Then - Dim urlPDF As String = $"/Ashx/SIGDesc.ashx?metodo=descargarPDFVenta&CveVenta={CveVenta}" - RegistraScript($"impresionDirecta('{urlPDF}');", "Imprimir") + Dim pdf64 As String = "" + 'DUPLICA EL PDF + Using ms As New MemoryStream + Using pdfdoc As New iText.Kernel.Pdf.PdfDocument(New iText.Kernel.Pdf.PdfWriter(ms)) + pdfdoc.InitializeOutlines() + Dim reporteByte As New MemoryStream(System.IO.File.ReadAllBytes(ArchivoPDF)) + + Dim docPDF As New iText.Kernel.Pdf.PdfDocument(New iText.Kernel.Pdf.PdfReader(reporteByte)) + docPDF.CopyPagesTo(1, docPDF.GetNumberOfPages(), pdfdoc) + docPDF.CopyPagesTo(1, docPDF.GetNumberOfPages(), pdfdoc) + docPDF.Close() + + pdfdoc.Close() + End Using + pdf64 = Convert.ToBase64String(ms.ToArray()) + End Using + + RegistraScript($"impresionBase64('{pdf64}');", "Imprimir") Else Alert("No se pudo imprimir el pdf directamente. favor de descargar manualmente el pdf.", TipoMensaje.MsgAdvertencia) End If @@ -37734,14 +37856,13 @@ Partial Class Ventas LimpiaDocumentoDEV() CambiaTipoDocto() - If UsuarioActual.Empresa.Funcionalidad(109) = "1" Then - If TxtAtencionA.Text.Trim.Length = 0 Then - TxtAtencionA.Enabled = True - End If - End If - CalculaTotalesVenta() + If UsuarioActual.Empresa.Funcionalidad(109) = "1" Then + TxtAtencionA.Enabled = True + UpCliente.Update() + End If + UpParametros.Update() AplicaDevolucion = True