This commit is contained in:
2022-06-05 06:35:39 -07:00
9 changed files with 11095 additions and 5231 deletions

View File

@@ -55,6 +55,16 @@ Public Class ClsPaginas
#Region "Propiedades"
Private Property SubReportData As Modelos.MSubReportData
Get
Return If(IsNothing(ViewState("SubReportData")), Nothing, DirectCast(ViewState("SubReportData"), Modelos.MSubReportData))
End Get
Set(value As Modelos.MSubReportData)
ViewState("SubReportData") = value
End Set
End Property
Public Shared ReadOnly Property UrlSitio As String
Get
If IsNothing(System.Configuration.ConfigurationManager.AppSettings("UrlSitio")) Then
@@ -5905,17 +5915,17 @@ Public Class ClsPaginas
''' <param name="NombreArchivo">Opcional Nombre del archivo que se descarga</param>
''' <param name="Formato">Optional, Formato de Generacion PDF o Excel</param>
''' <remarks></remarks>
Public Sub ImprimirPDF(RutaReporte As String, DataSource As List(Of ReportDataSource), Parametros As List(Of ReportParameter), Optional NombreArchivo As String = "Reporte", Optional Formato As String = "PDF", Optional MR As ReportViewer = Nothing, Optional Content_Disposition As String = "attachment")
Public Sub ImprimirPDF(RutaReporte As String, DataSource As List(Of ReportDataSource), Parametros As List(Of ReportParameter), Optional NombreArchivo As String = "Reporte", Optional Formato As String = "PDF", Optional MR As ReportViewer = Nothing, Optional Content_Disposition As String = "attachment", Optional SubReportData As Modelos.MSubReportData = Nothing)
'limpio ReportViwer
ImprimirbytesPDF(StreamPDF(RutaReporte, DataSource, Parametros, NombreArchivo, Formato, MR), NombreArchivo, Formato, Content_Disposition:=Content_Disposition)
ImprimirbytesPDF(StreamPDF(RutaReporte, DataSource, Parametros, NombreArchivo, Formato, MR, SubReportData), NombreArchivo, Formato, Content_Disposition:=Content_Disposition)
End Sub
Public Function StreamPDF(RutaReporte As String, DtDatos As DataTable, Parametros As List(Of ReportParameter), Optional NombreArchivo As String = "Reporte", Optional Formato As String = "PDF", Optional RDSName As String = "DataSet1", Optional MR As ReportViewer = Nothing) As Byte()
Public Function StreamPDF(RutaReporte As String, DtDatos As DataTable, Parametros As List(Of ReportParameter), Optional NombreArchivo As String = "Reporte", Optional Formato As String = "PDF", Optional RDSName As String = "DataSet1", Optional MR As ReportViewer = Nothing, Optional SubReportData As Modelos.MSubReportData = Nothing) As Byte()
Dim lrds As New List(Of ReportDataSource)
Dim rds As New ReportDataSource
rds.Name = RDSName
rds.Value = DtDatos
lrds.Add(rds)
Return StreamPDF(RutaReporte, lrds, Parametros, NombreArchivo, Formato, MR)
Return StreamPDF(RutaReporte, lrds, Parametros, NombreArchivo, Formato, MR, SubReportData)
End Function
'Public Function StreamPDF(RutaReporte As String, DataSource As List(Of ReportDataSource), Parametros As List(Of ReportParameter), Optional NombreArchivo As String = "Reporte", Optional Formato As String = "PDF", Optional MR As ReportViewer = Nothing) As Byte()
' 'limpio ReportViwer
@@ -5959,10 +5969,13 @@ Public Class ClsPaginas
' Return Bytes
'End Function
Public Function StreamPDF(RutaReporte As String, DataSource As List(Of ReportDataSource), Parametros As List(Of ReportParameter), Optional NombreArchivo As String = "Reporte", Optional Formato As String = "PDF", Optional MR As ReportViewer = Nothing) As Byte()
Public Function StreamPDF(RutaReporte As String, DataSource As List(Of ReportDataSource), Parametros As List(Of ReportParameter), Optional NombreArchivo As String = "Reporte", Optional Formato As String = "PDF", Optional MR As ReportViewer = Nothing, Optional SubReportData As Modelos.MSubReportData = Nothing) As Byte()
'limpio ReportViwer
Dim sw As New System.Diagnostics.Stopwatch()
sw.Start()
Me.SubReportData = Nothing
Dim Bytes As Byte() = Nothing
Dim CveUsuario As Integer = 0
@@ -5988,7 +6001,7 @@ Public Class ClsPaginas
RutaReporte = String.Format("{0}{1}", bdir, RutaReporte)
End If
If EsProduccion Then
If EsProduccion AndAlso SubReportData Is Nothing Then
Dim wsreport As New WSRDLC.WebServiceSoapClient
Dim params As New List(Of WSRDLC.ReportParameter)
@@ -6008,12 +6021,21 @@ Public Class ClsPaginas
reportobjects.Add(ojext)
End If
Next
For Each rpds As ReportParameter In Parametros
Dim param As New WSRDLC.ReportParameter
param.Name = rpds.Name
param.Values = {rpds.Values(0)}
'SI ES TEXTO, QUITAR TABS Y OTROS ESPACIOS QUE DEN PROBLEMAS AL MANDAR LA PETICION
If rpds IsNot Nothing AndAlso rpds.Values IsNot Nothing AndAlso rpds.Values.Count > 0 AndAlso rpds.Values(0) IsNot Nothing AndAlso rpds.Values(0).GetType() = GetType(String) Then
param.Values = {rpds.Values(0).Replace(vbVerticalTab, "")}
Else
param.Values = {rpds.Values(0)}
End If
params.Add(param)
Next
Bytes = wsreport.StreamNEWPDFBytes(RutaReporte, ds, reportobjects.ToArray(), params.ToArray(), NombreArchivo, Formato, CveEmpresa, CveUsuario)
wsreport = Nothing
params = Nothing
@@ -6028,9 +6050,16 @@ Public Class ClsPaginas
MR.LocalReport.ReportPath = RutaReporte
MR.ProcessingMode = ProcessingMode.Local
If SubReportData IsNot Nothing Then
Me.SubReportData = SubReportData
AddHandler MR.LocalReport.SubreportProcessing, AddressOf LocalReport_SubreportProcessing
End If
MR.LocalReport.EnableExternalImages = True
MR.LocalReport.SetParameters(Parametros)
MR.LocalReport.Refresh()
Dim Warnings As Warning() = Nothing
Dim StreamIds As String() = Nothing
Dim MimeType As String = Nothing
@@ -6099,6 +6128,14 @@ Public Class ClsPaginas
Return Bytes
End Function
Private Sub LocalReport_SubreportProcessing(ByVal sender As Object, ByVal e As SubreportProcessingEventArgs)
If SubReportData IsNot Nothing Then
For Each ds In SubReportData.DataSources
e.DataSources.Add(ds)
Next
End If
End Sub
Public Function ImprimirPDFCrystal(RutaReporte As String, DataSource As DataTable, Parametros As List(Of CrystalParametro), Optional NombreArchivo As String = "Reporte", Optional Formato As String = "PDF", Optional MR As ReportDocument = Nothing) As Byte()
'limpio ReportViwer
Dim sw As New System.Diagnostics.Stopwatch()
@@ -6218,6 +6255,45 @@ Public Class ClsPaginas
Return Bytes
End Function
Public Function ImprimirPDFPyME(RutaReporte As String, DataSource As DataSet, Parametros As List(Of CrystalParametro), Optional NombreArchivo As String = "Reporte", Optional Formato As String = "PDF", Optional MR As StiReport = Nothing) As Byte()
If IsNothing(MR) Then MR = New Stimulsoft.Report.StiReport()
Dim Bytes As Byte() = Nothing
Try
MR.Load(RutaReporte)
MR.Dictionary.DataSources.Clear()
MR.RegData(DataSource)
Dim Lista = MR.Dictionary.Variables.ToList()
For Each item As CrystalParametro In Parametros
If Lista.Exists(Function(a) a.Name = item.Nombre) Then
MR.Dictionary.Variables(item.Nombre).Value = item.Valor.ToString
End If
Next
MR.Dictionary.Synchronize()
MR.IsRendered = False
MR.Render(False)
Dim pdfSettings As New Stimulsoft.Report.Export.StiPdfExportSettings()
Dim MemoryStream As New MemoryStream
Select Case Formato
Case "PDF"
MR.ExportDocument(Stimulsoft.Report.StiExportFormat.Pdf, MemoryStream, pdfSettings)
Case "EXCEL"
MR.ExportDocument(Stimulsoft.Report.StiExportFormat.Excel2007, MemoryStream, pdfSettings)
End Select
Bytes = MemoryStream.ToArray
MR.RenderedPages.Clear()
MR.Dispose()
MemoryStream.Dispose()
Catch ex As Exception
GuardaLog($"Error: { If(ex.InnerException.Message IsNot Nothing, ex.InnerException.Message, ex.Message) } | Descripcion: {If(ex.InnerException IsNot Nothing AndAlso ex.InnerException.InnerException IsNot Nothing AndAlso ex.InnerException.InnerException.Message IsNot Nothing, ex.InnerException.InnerException.Message, If(ex.InnerException IsNot Nothing AndAlso ex.InnerException.Message IsNot Nothing, ex.InnerException.Message, "Sin descripcion"))} - Ruta {RutaReporte}")
'HAY QUE VALIDAR QUE LOS OBJETOS QUE SE USAN PARA GUARDAR LOG EXISTEN!!! IPP 14 AGOSTO 2017
'GuardaLog($"Error {ex.InnerException.Message} | Descripcion: {If(ex.InnerException.InnerException IsNot Nothing, ex.InnerException.InnerException.Message, "Sin descripcion")} - Ruta {RutaReporte}")
End Try
Return Bytes
End Function
Public Function StreamPDFTest(RutaReporte As String, DataSource As List(Of ReportDataSource), Parametros As List(Of ReportParameter), Optional NombreArchivo As String = "Reporte", Optional Formato As String = "PDF", Optional MR As ReportViewer = Nothing) As Byte()
'limpio ReportViwer
@@ -6346,7 +6422,534 @@ Public Class ClsPaginas
#End Region
#Region "IMPRIMIR FACTURA"
Public Function PdfFactura(ByRef Vta As Modelos.Factura, Optional AplicaPagare As String = "0", Optional Guardar As Boolean = True) As Byte()
Public Sub PdfFacturaPyME(ByRef Vta As Modelos.Factura, DT As DataTable, Optional Guardar As Boolean = True)
Dim retorno As Byte() = Nothing
'DATOS GENERALES
Dim Ruta As String = UsuarioActual.Empresa.Ruta
Dim PathXML As String = $"{Ruta}XML\{Vta.TipoDocto}\{Vta.SerieFolio}.xml"
Dim NombreArchivo As String = ""
Dim NombreArchivoDescarga As String = ""
Dim TipoDocumento As String = ""
Dim TipoDocumentoRef As String = ""
Dim AplicaPagare As String = "1"
Dim RFCReceptor As String = ""
If String.IsNullOrEmpty(Vta.RFCReceptor) Then
RFCReceptor = Vta.Cliente.RFC
If Vta.FacturarSucursal Then
If Vta.ClienteSucursal IsNot Nothing Then
RFCReceptor = Vta.ClienteSucursal.RFC
End If
End If
Else
RFCReceptor = Vta.RFCReceptor
End If
Dim RutaCBB As String = String.Format("{0}CBB\{1}.jpg", Ruta, Vta.SerieFolio)
Dim ImagenCBB As New System.IO.FileInfo(RutaCBB)
Dim ImgCBB As String '= String.Format("{0}://{1}:{2}/Empresas/{3}/CBB/{4}.jpg", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, UsuarioActual.CveEmpresa, Vta.SerieFolio)
Dim ImagenPath = String.Format("{0}Formatos\Suc{1}\logo.png", UsuarioActual.Empresa.Ruta, Vta.CveSucursal)
Dim Logo As New System.IO.FileInfo(ImagenPath)
Dim ImgLogo = New Uri(String.Format("{0}Empresas/{1}/Formatos/Suc{2}.png", UrlSitio, UsuarioActual.CveEmpresa, Vta.CveSucursal)).AbsoluteUri
Dim SBDomicilioSucursal As New StringBuilder()
Dim CiudadSucursal As String = String.Format("{0},{1}", Vta.SubProyecto.Municipio, Vta.SubProyecto.Estado)
Dim DomicilioSucursal As String = ""
SBDomicilioSucursal.AppendFormat("{0}", Vta.SubProyecto.Calle)
If Vta.SubProyecto.NoExt.ToEntero > 0 Then SBDomicilioSucursal.AppendFormat(" No.Ext: {0}", Vta.SubProyecto.NoExt)
If Vta.SubProyecto.NoInt.ToEntero > 0 Then SBDomicilioSucursal.AppendFormat(", No.Int: {0}", Vta.SubProyecto.NoInt)
If Vta.SubProyecto.Colonia.Length > 0 Then SBDomicilioSucursal.AppendFormat(", Col: {0}", Vta.SubProyecto.Colonia)
If Vta.SubProyecto.CP.ToEntero > 0 Then SBDomicilioSucursal.AppendFormat(", CP: {0}", Vta.SubProyecto.CP)
If CiudadSucursal.Length > 0 Then SBDomicilioSucursal.AppendFormat(", {0}", CiudadSucursal)
If Vta.SubProyecto.Pais.Length > 0 Then SBDomicilioSucursal.AppendFormat(", {0}", Vta.SubProyecto.Pais)
DomicilioSucursal = SBDomicilioSucursal.ToString
Dim Fecha As String = Vta.Fecha.ToShortDateString
Dim SBDireccion As New StringBuilder()
Dim SBLugar As New StringBuilder()
Dim ClienteDireccion As String
Dim ClienteLugar As String
'SI ESTA TIMBRADA - CON XML
If File.Exists(PathXML) AndAlso Vta.Serie <> "VistaPrevia" Then 'Cuando es vista previe y coincide la serie y folio se ponen los datos fiscales
Dim XmlDoc As New System.Xml.XmlDocument
XmlDoc.Load(PathXML)
Dim TC As Decimal = 1
Try
TC = XmlDoc.DocumentElement.Attributes("TipoCambio").InnerText.ToDecimal
Catch ex As Exception
TC = 1
End Try
Vta.FechaEmision = XmlDoc.DocumentElement.Attributes("fecha").InnerText.ToDate
Vta.NoSerieCertificadoContribuyente = XmlDoc.DocumentElement.Attributes("noCertificado").InnerText
Dim validaElemento = XmlDoc.DocumentElement("cfdi:Complemento")
If Not IsNothing(validaElemento) Then
For i As Integer = 0 To XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes.Count - 1
If XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Name = "tfd:TimbreFiscalDigital" Then
Vta.FolioFiscal = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("UUID").InnerText
Vta.NoSerieCertificado = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("noCertificadoSAT").InnerText
Vta.FechaCertificacion = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("FechaTimbrado").InnerText.ToDate
Vta.SelloCFDi = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("selloCFD").InnerText
Vta.SelloSAT = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("selloSAT").InnerText
End If
Next
Else
Vta.FolioFiscal = "Sin Timbrar"
Vta.NoSerieCertificado = "Sin Timbrar"
Vta.SelloCFDi = "Sin Timbrar"
Vta.SelloSAT = "Sin Timbrar"
End If
'SIN TIMBRAR - SIN XML
Else
Vta.FolioFiscal = "Sin Timbrar"
Vta.NoSerieCertificado = "Sin Timbrar"
Vta.SelloCFDi = "Sin Timbrar"
Vta.SelloSAT = "Sin Timbrar"
End If
'DIRECCION CLIENTE
If Vta.CveClienteSucursal.ToEntero > 0 Then
'Si cliente tiene Noint, NoExt, CP
SBDireccion.AppendFormat("{0}", Vta.ClienteSucursal.Direccion)
If Vta.ClienteSucursal.NoExt.Length > 0 Then SBDireccion.AppendFormat(", No.Ext: {0}", Vta.ClienteSucursal.NoExt)
If Vta.ClienteSucursal.NoInt.Length > 0 Then SBDireccion.AppendFormat(", No.Int: {0}", Vta.ClienteSucursal.NoInt)
If UsuarioActual.CveEmpresa <> 66 Then SBDireccion.AppendFormat(", Col: {0}", Vta.ClienteSucursal.Colonia)
If Not (UsuarioActual.CveEmpresa.Contiene(66, 81, 109) AndAlso Vta.TipoDocto = "Cot") Then
If Vta.ClienteSucursal.CP.Length > 0 Then SBDireccion.AppendFormat(", CP: {0} ", Vta.ClienteSucursal.CP.Trim)
End If
'Si cliente tiene Local, CD, Edo, Pais
If Vta.ClienteSucursal.Localidad IsNot Nothing AndAlso Vta.ClienteSucursal.Localidad.Length > 0 Then SBLugar.AppendFormat("Loc: {0}, ", Vta.ClienteSucursal.Localidad)
If Vta.ClienteSucursal.Municipio IsNot Nothing AndAlso Vta.ClienteSucursal.Municipio.Length > 0 Then SBLugar.AppendFormat("Cd: {0}, ", Vta.ClienteSucursal.Municipio)
If Vta.ClienteSucursal.Estado IsNot Nothing AndAlso Vta.ClienteSucursal.Estado.Length > 0 Then SBLugar.AppendFormat(" Edo: {0}, ", Vta.ClienteSucursal.Estado)
If Vta.ClienteSucursal.Pais IsNot Nothing AndAlso Vta.ClienteSucursal.Pais.Length > 0 Then SBLugar.AppendFormat(" País: {0} ", Vta.ClienteSucursal.Pais)
Else
SBDireccion.AppendFormat("{0}", Vta.Cliente.Direccion)
If Vta.Cliente.NoExt.Length > 0 Then SBDireccion.AppendFormat(", No.Ext: {0}", Vta.Cliente.NoExt)
If Vta.Cliente.NoInt.Length > 0 Then SBDireccion.AppendFormat(", No.Int: {0}", Vta.Cliente.NoInt)
If UsuarioActual.CveEmpresa <> 66 Then SBDireccion.AppendFormat(", Col: {0}", Vta.Cliente.Colonia)
If Not (UsuarioActual.CveEmpresa.Contiene(66, 81, 109) AndAlso Vta.TipoDocto = "Cot") Then
If Vta.Cliente.CP.Length > 0 Then SBDireccion.AppendFormat(", CP: {0} ", Vta.Cliente.CP.Trim)
End If
'Si cliente tiene Local, CD, Edo, Pais
If Vta.Cliente.Localidad IsNot Nothing AndAlso Vta.Cliente.Localidad.Length > 0 Then SBLugar.AppendFormat("Loc: {0}, ", Vta.Cliente.Localidad)
If Vta.Cliente.Ciudad IsNot Nothing AndAlso Vta.Cliente.Ciudad.Length > 0 Then SBLugar.AppendFormat("Cd: {0}, ", Vta.Cliente.Ciudad)
If Vta.Cliente.Estado IsNot Nothing AndAlso Vta.Cliente.Estado.Length > 0 Then SBLugar.AppendFormat(" Edo: {0}, ", Vta.Cliente.Estado)
If Vta.Cliente.Pais IsNot Nothing AndAlso Vta.Cliente.Pais.Length > 0 Then SBLugar.AppendFormat(" País: {0} ", Vta.Cliente.Pais)
End If
ClienteDireccion = SBDireccion.ToString
ClienteLugar = SBLugar.ToString
SBDireccion.Clear()
SBLugar.Clear()
'LOGO
Dim LogoRuta As String = ""
'POR SUCURSAL
LogoRuta = String.Format("{0}Formatos\Suc{1}.png", UsuarioActual.Empresa.Ruta, Vta.CveSucursal)
If File.Exists(LogoRuta) Then
LogoRuta = String.Format("file://{0}Formatos\Suc{1}.png", UsuarioActual.Empresa.Ruta, Vta.CveSucursal)
'POR EMPRESA
Else
LogoRuta = String.Format("{0}Formatos\Logo.png", UsuarioActual.Empresa.Ruta)
If File.Exists(LogoRuta) Then
'LogoRuta = String.Format("{0}://{1}:{2}/Empresas/{3}/Logo.png", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, UsuarioActual.CveEmpresa)
LogoRuta = String.Format("{0}", LogoRuta)
End If
End If
'LogoRuta = String.Format("{0}://{1}:{2}/Empresas/{3}/Logo.png", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, UsuarioActual.CveEmpresa)
LogoRuta = String.Format("{0}", LogoRuta)
'Si no tiene CBB, SE GENERA
If Not ImagenCBB.Exists Then
Dim CBB As New ClbNegBICFDv3_2.ClsNegCBBGenerar()
CBB.GenerarCBB(UsuarioActual.Empresa.RFC, RFCReceptor, Vta.Total.ToString.ToDecimal, Vta.FolioFiscal, RutaCBB)
End If
ImgCBB = String.Format("{0}://{1}:{2}/Empresas/{3}/CBB/{4}.jpg", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, UsuarioActual.CveEmpresa, Vta.SerieFolio)
Dim CadenaOriginals As String = "||1.0|" + Vta.FolioFiscal + "|" + Vta.FechaCertificacion.ToString("yyyy-MM-dd") + "T" + Vta.FechaCertificacion.ToString("HH:mm:ss") + "|" + Vta.SelloCFDi + "|" + Vta.NoSerieCertificado + "||"
If Not ImagenCBB.Exists Then ImgCBB = ""
Dim RutaFormato As String = ""
'AQUI EMPIEZA LOS PARAMETROS
Try
Dim params = New List(Of CrystalParametro)
'CLIENTE
params.Add(New CrystalParametro("ClienteCodigo", Vta.Cliente.Codigo))
params.Add(New CrystalParametro("ClienteNombre", If(Vta.ClienteSucursal.ImprimeNombreSucursal = "True", If(Vta.CveClienteSucursal > 0, Vta.ClienteSucursal.Sucursal, Vta.Cliente.Nombre), If(Vta.AtencionA <> "" AndAlso Vta.TipoDocto.Contiene("Ing", "Rem") AndAlso RFCReceptor = "XAXX010101000", $"{Vta.Cliente.Nombre}({Vta.AtencionA})", Vta.Cliente.Nombre))))
params.Add(New CrystalParametro("ClienteDireccion", ClienteDireccion))
params.Add(New CrystalParametro("ClienteLugar", ClienteLugar))
'TOTALES
params.Add(New CrystalParametro("SubTotal", Vta.SubTotal.ToString.FormatoNumero(2)))
params.Add(New CrystalParametro("Descuento", Vta.Descuento.ToString.FormatoNumero(2)))
params.Add(New CrystalParametro("Amortizacion", Vta.Amortizacion.ToString.FormatoNumero(2)))
params.Add(New CrystalParametro("SubTotal2", (Vta.SubTotal - Vta.Descuento - Vta.Amortizacion).ToString.FormatoNumero(2)))
params.Add(New CrystalParametro("IVA", Vta.IVA.ToString.FormatoNumero(2)))
params.Add(New CrystalParametro("RetIVA", Vta.RetIVA.ToString.FormatoNumero(2)))
params.Add(New CrystalParametro("RetISR", Vta.RetISR.ToString.FormatoNumero(2)))
params.Add(New CrystalParametro("Total", Vta.Total.ToString.FormatoNumero(2)))
params.Add(New CrystalParametro("ImporteLetra", Vta.Total.ToString.ToDouble.Texto2Letras(Vta.CveMoneda)))
'DATOS GENERALES
params.Add(New CrystalParametro("Observaciones", Vta.Observaciones))
params.Add(New CrystalParametro("CveVendedor", Vta.CveVendedor.ToString))
'params.Add(New CrystalParametro("Status", Vta.EstatusFactura))
params.Add(New CrystalParametro("FechaSolicitud", Vta.Fecha.ToString("dd/MMMM/yyyy"))) ' se puede omitir
params.Add(New CrystalParametro("Serie", Vta.Serie))
params.Add(New CrystalParametro("Folio", Vta.Folio.ToString))
params.Add(New CrystalParametro("DomicilioSucursal", DomicilioSucursal))
params.Add(New CrystalParametro("Vencimiento", Vta.FechaVencimiento.ToString("dd/MM/yyyy")))
params.Add(New CrystalParametro("FolioFiscal", Vta.FolioFiscal))
params.Add(New CrystalParametro("FechaCertificacion", String.Format("{0}T{1}", Vta.FechaCertificacion.ToString("yyyy-MM-dd"), Vta.FechaCertificacion.ToString("HH:mm:ss"))))
params.Add(New CrystalParametro("SelloCFDI", Vta.SelloCFDi))
params.Add(New CrystalParametro("CadenaSAT", CadenaOriginals))
params.Add(New CrystalParametro("SelloSAT", Vta.SelloSAT))
params.Add(New CrystalParametro("QR", ImgCBB))
params.Add(New CrystalParametro("ClienteRFC", RFCReceptor))
params.Add(New CrystalParametro("FormaPago", Vta.FormaPagoText))
params.Add(New CrystalParametro("Moneda", Vta.Moneda))
params.Add(New CrystalParametro("TipoCambio", Vta.TipoCambio.ToString))
params.Add(New CrystalParametro("CondicionPago", Vta.CondicionesPagoText))
params.Add(New CrystalParametro("CadenaOriginal", CadenaOriginals))
params.Add(New CrystalParametro("SerieCertificadoSAT", Vta.NoSerieCertificado))
params.Add(New CrystalParametro("CertificadoContribuyente", Vta.NoSerieCertificadoContribuyente))
params.Add(New CrystalParametro("NumCta", Vta.NumeroCuenta))
params.Add(New CrystalParametro("LogoPath", LogoRuta))
'VENDEDOR
Dim RowVendedor As DataRow = GlobalDTVendedores(-1).FiltroPrimero(String.Format("CveVendedor = {0}", Vta.CveVendedor.ToString))
If Not IsNothing(RowVendedor) Then
params.Add(New CrystalParametro("VendedorNombre", RowVendedor("Vendedor").ToString))
params.Add(New CrystalParametro("VendedorMail", RowVendedor("Correo").ToString))
params.Add(New CrystalParametro("VendedorTelefono", RowVendedor("Telefono").ToString))
params.Add(New CrystalParametro("VendedorCelular", RowVendedor("Celular").ToString))
End If
params.Add(New CrystalParametro("CiudadSucursal", CiudadSucursal))
params.Add(New CrystalParametro("OC", Vta.Det_OrdenCompra.ToString))
If UsuarioActual.Empresa.Funcionalidad(508) = "1" Then
params.Add(New CrystalParametro("IEPS", Vta.IEPS.ToString.FormatoNumero(2)))
End If
If Vta.CveClienteSucursal > 0 Then
params.Add(New CrystalParametro("ClienteContactoMail", Vta.ClienteSucursal.CorreoSucursal))
params.Add(New CrystalParametro("ClienteTelefono", Vta.ClienteSucursal.TelefonoSucursal))
Else
params.Add(New CrystalParametro("ClienteContactoMail", Vta.Cliente.MailCotizacion))
params.Add(New CrystalParametro("ClienteTelefono", If(Vta.TipoDocto.Contiene("Ing", "Rem") AndAlso Vta.Cliente.Telefono.Length > 6, Vta.Cliente.Telefono, Vta.TelefonoGenerico)))
End If
If UsuarioActual.CveEmpresa.Contiene(17) Then
params.Add(New CrystalParametro("MetodoPago", Vta.ClaveMetodoPagoSAT.ToString))
Else
params.Add(New CrystalParametro("MetodoPago", Vta.MetodoPago.ToString))
End If
Select Case Vta.TipoDocto
Case "Ing"
NombreArchivo = "Factura"
NombreArchivoDescarga = "Factura"
TipoDocumento = "INGRESO"
'GENERAL
params.Add(New CrystalParametro("TipoDocumento", NombreArchivoDescarga))
params.Add(New CrystalParametro("Tipo", TipoDocumento))
params.Add(New CrystalParametro("Ref", TipoDocumentoRef))
params.Add(New CrystalParametro("AplicaPagare", AplicaPagare))
'VSH
If UsuarioActual.CveEmpresa.Contiene(4, 7, 11, 12, 122, 145) Then
'DATOS CLIENTES
Dim ClienteRow = GlobalDTCliente(UsuarioActual.CveEmpresa).FiltroPrimero(String.Format("CveCliente = {0}", Vta.CveCliente.ToString))
Dim DatosCliente = ""
If ClienteRow IsNot Nothing Then
DatosCliente = String.Format("{0} | {1} | {2}", Vta.SubProyecto.Municipio, ClienteRow("CuentaContable"), ClienteRow("Codigo"))
End If
params.Add(New CrystalParametro("DatosClientes", DatosCliente))
params.Add(New CrystalParametro("Sucursal", Vta.SubProyecto.SubProyecto))
End If
'COMPU, DN DIFUSA
If UsuarioActual.CveEmpresa.Contiene(72, 80, 119) Then
params.Add(New CrystalParametro("EstatusFactura", If(Vta.TipoEstatus = 5, Vta.EstatusFactura, "")))
params.Add(New CrystalParametro("EstatusEntrega", If(Vta.Inv_CveEstatusEntrega = 1, Vta.Inv_EstatusEntrega, "")))
params.Add(New CrystalParametro("PedidoContrato", Vta.PedidoContrato))
params.Add(New CrystalParametro("DescripcionContrato", Vta.NumeroDescripcionContrato))
params.Add(New CrystalParametro("MonedaAbreviatura", If(Vta.MonedaAbreviatura.ToString IsNot Nothing, Vta.MonedaAbreviatura.ToString, "")))
params.Add(New CrystalParametro("UsuarioImprimio", UsuarioActual.Nombre))
params.Add(New CrystalParametro("FechaImpresion", Now.ToDateTime.ToString))
params.Add(New CrystalParametro("Sucursal", Vta.SubProyecto.SubProyecto))
'INE COMPLEMENTOS
If UsuarioActual.CveEmpresa.Contiene(72) Then
Dim INETipoProceso As String = ""
Dim INETipoComite As String = ""
Dim INEIdContabilidad As Integer = 0
If Vta.ComplementoINE IsNot Nothing Then
INETipoProceso = Vta.ComplementoINE.INETipoProceso
INETipoComite = Vta.ComplementoINE.INETipoComite
INEIdContabilidad = Vta.ComplementoINE.INEIdContabilidad
End If
params.Add(New CrystalParametro("INETipoProceso", INETipoProceso))
params.Add(New CrystalParametro("INETipoComite", INETipoComite))
params.Add(New CrystalParametro("INEIdContabilidad", INEIdContabilidad))
params.Add(New CrystalParametro("Referencia", Vta.Cliente.ReferenciaFiscal))
params.Add(New CrystalParametro("ClienteContacto", Vta.AtencionA))
End If
'DIRECCION ENVIO
If Vta.EnviarA.CveDireccionEnvio > 0 Then
Dim StrEnvioDi As New StringBuilder
StrEnvioDi.AppendFormat("{0}", Vta.EnviarA.EnvioDireccion)
If Vta.EnviarA.EnvioNoExt IsNot Nothing AndAlso Vta.EnviarA.EnvioNoExt.Length > 0 Then StrEnvioDi.AppendFormat(", No.Ext: {0}", Vta.EnviarA.EnvioNoExt)
If Vta.EnviarA.EnvioNoInt IsNot Nothing AndAlso Vta.EnviarA.EnvioNoInt.Length > 0 Then StrEnvioDi.AppendFormat(", No.Int: {0}", Vta.EnviarA.EnvioNoInt)
params.Add(New CrystalParametro("EnvioDireccion", StrEnvioDi.ToString))
params.Add(New CrystalParametro("EnvioNoExt", Vta.EnviarA.EnvioNoExt))
params.Add(New CrystalParametro("EnvioNoInt", Vta.EnviarA.EnvioNoInt))
params.Add(New CrystalParametro("EnvioColonia", Vta.EnviarA.EnvioColonia))
params.Add(New CrystalParametro("EnvioCiudad", Vta.EnviarA.EnvioCiudad))
params.Add(New CrystalParametro("EnvioEstado", Vta.EnviarA.EnvioEstado))
params.Add(New CrystalParametro("EnvioContacto", Vta.EnviarA.EnvioContacto))
params.Add(New CrystalParametro("EnvioDepartamento", Vta.EnviarA.EnvioDepartamento))
params.Add(New CrystalParametro("EnvioCP", Vta.EnviarA.EnvioCP))
Else
If Vta.CveClienteSucursal.ToEntero > 0 Then
Dim StrEnvioDi As New StringBuilder
StrEnvioDi.AppendFormat("{0}", Vta.ClienteSucursal.Direccion)
If Vta.ClienteSucursal.NoExt.Length > 0 Then StrEnvioDi.AppendFormat(", No.Ext: {0}", Vta.ClienteSucursal.NoExt)
If Vta.ClienteSucursal.NoInt.Length > 0 Then StrEnvioDi.AppendFormat(", No.Int: {0}", Vta.ClienteSucursal.NoInt)
params.Add(New CrystalParametro("EnvioDireccion", StrEnvioDi.ToString))
params.Add(New CrystalParametro("EnvioColonia", If(Vta.ClienteSucursal.Colonia.Length > 0, Vta.ClienteSucursal.Colonia, "")))
params.Add(New CrystalParametro("EnvioCiudad", If(Vta.ClienteSucursal.Municipio.Length > 0, Vta.ClienteSucursal.Municipio, "")))
params.Add(New CrystalParametro("EnvioEstado", If(Vta.ClienteSucursal.Estado.Length > 0, Vta.ClienteSucursal.Estado, "")))
params.Add(New CrystalParametro("EnvioCP", If(Vta.ClienteSucursal.CP.Length > 0, Vta.ClienteSucursal.CP, "")))
Else
Dim StrEnvioDi As New StringBuilder
StrEnvioDi.AppendFormat("{0}", If(Vta.Cliente.Direccion.Length > 0, Vta.Cliente.Direccion, ""))
If Vta.Cliente.NoExt.Length > 0 Then StrEnvioDi.AppendFormat(", No.Ext: {0}", Vta.Cliente.NoExt)
If Vta.Cliente.NoInt.Length > 0 Then StrEnvioDi.AppendFormat(", No.Int: {0}", Vta.Cliente.NoInt)
params.Add(New CrystalParametro("EnvioDireccion", StrEnvioDi.ToString))
params.Add(New CrystalParametro("EnvioColonia", If(Vta.Cliente.Colonia.Length > 0, Vta.Cliente.Colonia, "")))
params.Add(New CrystalParametro("EnvioCiudad", If(Vta.Cliente.Localidad IsNot Nothing And Vta.Cliente.Localidad.Length > 0, Vta.Cliente.Localidad, "")))
params.Add(New CrystalParametro("EnvioEstado", If(Vta.Cliente.Estado.Length > 0, Vta.Cliente.Estado, "")))
params.Add(New CrystalParametro("EnvioCP", If(Vta.Cliente.CP.Length > 0, Vta.Cliente.CP, "")))
End If
End If
'CLIENTE SUCURSAL
If Vta.CveClienteSucursal.ToEntero > 0 Then
params.Add(New CrystalParametro("ClienteCalle", If(Vta.ClienteSucursal.Direccion.Length > 0, Vta.ClienteSucursal.Direccion, "")))
params.Add(New CrystalParametro("ClienteColonia", If(Vta.ClienteSucursal.Colonia.Length > 0, Vta.ClienteSucursal.Colonia, "")))
params.Add(New CrystalParametro("ClienteCiudad", If(Vta.ClienteSucursal.Localidad IsNot Nothing And Vta.ClienteSucursal.Localidad.Length > 0, Vta.ClienteSucursal.Localidad, "")))
params.Add(New CrystalParametro("ClienteMunicipio", If(Vta.ClienteSucursal.Municipio.Length > 0, Vta.ClienteSucursal.Municipio, "")))
params.Add(New CrystalParametro("ClienteEstado", If(Vta.ClienteSucursal.Estado.Length > 0, Vta.ClienteSucursal.Estado, "")))
params.Add(New CrystalParametro("ClienteCP", If(Vta.ClienteSucursal.CP.Length > 0, Vta.ClienteSucursal.CP, "")))
params.Add(New CrystalParametro("ClienteNoInt", If(Vta.ClienteSucursal.NoInt.Length > 0, Vta.ClienteSucursal.NoInt, "")))
params.Add(New CrystalParametro("ClienteNoExt", If(Vta.ClienteSucursal.NoExt.Length > 0, Vta.ClienteSucursal.NoExt, "")))
params.Add(New CrystalParametro("ClientePais", If(Vta.ClienteSucursal.Pais.Length > 0, Vta.ClienteSucursal.Pais, "")))
Else
params.Add(New CrystalParametro("ClienteCalle", If(Vta.Cliente.Direccion.Length > 0, Vta.Cliente.Direccion, "")))
params.Add(New CrystalParametro("ClienteColonia", If(Vta.Cliente.Colonia.Length > 0, Vta.Cliente.Colonia, "")))
params.Add(New CrystalParametro("ClienteCiudad", If(Vta.Cliente.Localidad IsNot Nothing And Vta.Cliente.Localidad.Length > 0, Vta.Cliente.Localidad, "")))
params.Add(New CrystalParametro("ClienteMunicipio", If(Vta.Cliente.Ciudad.Length > 0, Vta.Cliente.Ciudad, "")))
params.Add(New CrystalParametro("ClienteEstado", If(Vta.Cliente.Estado.Length > 0, Vta.Cliente.Estado, "")))
params.Add(New CrystalParametro("ClienteCP", If(Vta.Cliente.CP.Length > 0, Vta.Cliente.CP, "")))
params.Add(New CrystalParametro("ClienteNoInt", If(Vta.Cliente.NoInt.Length > 0, Vta.Cliente.NoInt, "")))
params.Add(New CrystalParametro("ClienteNoExt", If(Vta.Cliente.NoExt.Length > 0, Vta.Cliente.NoExt, "")))
params.Add(New CrystalParametro("ClientePais", If(Vta.Cliente.Pais.Length > 0, Vta.Cliente.Pais, "")))
End If
End If
RutaFormato = String.Format("{0}Formatos\{1}.mrt", UsuarioActual.Empresa.Ruta, NombreArchivo)
Case "Egs"
If UsuarioActual.CveEmpresa.Contiene(72, 80) Then
NombreArchivo = "NotaCredito"
Else
NombreArchivo = "Factura"
End If
NombreArchivoDescarga = "Nota de Crédito"
TipoDocumento = "EGRESO"
TipoDocumentoRef = String.Format(": Ref.:{0}", Vta.RefDocto)
AplicaPagare = "0"
'GENERAL
params.Add(New CrystalParametro("TipoDocumento", NombreArchivoDescarga))
params.Add(New CrystalParametro("Tipo", TipoDocumento))
params.Add(New CrystalParametro("Ref", TipoDocumentoRef))
params.Add(New CrystalParametro("AplicaPagare", AplicaPagare))
params.Add(New CrystalParametro("Fecha", String.Format("{0}T{1}", Vta.Fecha.ToString("yyyy-MM-dd"), Vta.Fecha.ToString("HH:mm:ss"))))
'ALAN YEPIZ
If UsuarioActual.CveEmpresa.Contiene(123) Then
params.Add(New CrystalParametro("DiaExpedicion", String.Format("{0}", Vta.Fecha.ToDate.Day)))
params.Add(New CrystalParametro("MesExpedicion", String.Format("{0}", Vta.Fecha.ToDate.Month)))
params.Add(New CrystalParametro("AñoExpedicion", String.Format("{0}", Vta.Fecha.ToDate.Year)))
End If
'COMPU, DN DIFUSA
If UsuarioActual.CveEmpresa.Contiene(72, 80, 119) Then
params.Add(New CrystalParametro("EstatusFactura", If(Vta.TipoEstatus = 5, Vta.EstatusFactura, "")))
params.Add(New CrystalParametro("EstatusEntrega", If(Vta.Inv_CveEstatusEntrega = 1, Vta.Inv_EstatusEntrega, "")))
params.Add(New CrystalParametro("PedidoContrato", Vta.PedidoContrato))
params.Add(New CrystalParametro("MonedaAbreviatura", If(Vta.MonedaAbreviatura.ToString IsNot Nothing, Vta.MonedaAbreviatura.ToString, "")))
params.Add(New CrystalParametro("UsuarioImprimio", UsuarioActual.Nombre))
params.Add(New CrystalParametro("FechaImpresion", Now.ToDateTime.ToString))
params.Add(New CrystalParametro("Sucursal", Vta.SubProyecto.SubProyecto))
'CLIENTE SUCURSAL
If Vta.CveClienteSucursal.ToEntero > 0 Then
params.Add(New CrystalParametro("ClienteCalle", If(Vta.ClienteSucursal.Direccion.Length > 0, Vta.ClienteSucursal.Direccion, "")))
params.Add(New CrystalParametro("ClienteColonia", If(Vta.ClienteSucursal.Colonia.Length > 0, Vta.ClienteSucursal.Colonia, "")))
params.Add(New CrystalParametro("ClienteCiudad", If(Vta.ClienteSucursal.Localidad IsNot Nothing And Vta.ClienteSucursal.Localidad.Length > 0, Vta.ClienteSucursal.Localidad, "")))
params.Add(New CrystalParametro("ClienteMunicipio", If(Vta.ClienteSucursal.Municipio.Length > 0, Vta.ClienteSucursal.Municipio, "")))
params.Add(New CrystalParametro("ClienteEstado", If(Vta.ClienteSucursal.Estado.Length > 0, Vta.ClienteSucursal.Estado, "")))
params.Add(New CrystalParametro("ClienteCP", If(Vta.ClienteSucursal.CP.Length > 0, Vta.ClienteSucursal.CP, "")))
params.Add(New CrystalParametro("ClienteNoInt", If(Vta.ClienteSucursal.NoInt.Length > 0, Vta.ClienteSucursal.NoInt, "")))
params.Add(New CrystalParametro("ClienteNoExt", If(Vta.ClienteSucursal.NoExt.Length > 0, Vta.ClienteSucursal.NoExt, "")))
params.Add(New CrystalParametro("ClientePais", If(Vta.ClienteSucursal.Pais.Length > 0, Vta.ClienteSucursal.Pais, "")))
Else
params.Add(New CrystalParametro("ClienteCalle", If(Vta.Cliente.Direccion.Length > 0, Vta.Cliente.Direccion, "")))
params.Add(New CrystalParametro("ClienteColonia", If(Vta.Cliente.Colonia.Length > 0, Vta.Cliente.Colonia, "")))
params.Add(New CrystalParametro("ClienteCiudad", If(Vta.Cliente.Localidad IsNot Nothing And Vta.Cliente.Localidad.Length > 0, Vta.Cliente.Localidad, "")))
params.Add(New CrystalParametro("ClienteMunicipio", If(Vta.Cliente.Ciudad.Length > 0, Vta.Cliente.Ciudad, "")))
params.Add(New CrystalParametro("ClienteEstado", If(Vta.Cliente.Estado.Length > 0, Vta.Cliente.Estado, "")))
params.Add(New CrystalParametro("ClienteCP", If(Vta.Cliente.CP.Length > 0, Vta.Cliente.CP, "")))
params.Add(New CrystalParametro("ClienteNoInt", If(Vta.Cliente.NoInt.Length > 0, Vta.Cliente.NoInt, "")))
params.Add(New CrystalParametro("ClienteNoExt", If(Vta.Cliente.NoExt.Length > 0, Vta.Cliente.NoExt, "")))
params.Add(New CrystalParametro("ClientePais", If(Vta.Cliente.Pais.Length > 0, Vta.Cliente.Pais, "")))
End If
End If
RutaFormato = String.Format("{0}Formatos\{1}.mrt", UsuarioActual.Empresa.Ruta, "Factura")
Case Else
NombreArchivo = ""
TipoDocumento = ""
End Select
If NombreArchivo = "" Then
GuardaLog("No se especifico el tipo de Impresion de venta (Venta, Remision, Cotización, Nota de Crédito).")
Exit Sub
End If
'TERMINA REGION PARAMETROS
Dim lrds As New List(Of ReportDataSource)
'Si es ECLIPSE CREAR COLUMAS PARA FIRMAS EN DtDetalle.
If UsuarioActual.CveEmpresa.Contiene(1, 15, 17, 71, 76, 125) Then
Dim DtDetalleFirmas As New DataTable
DtDetalleFirmas.TableName = "DetalleFirma"
DtDetalleFirmas = Vta.DtDetalle.Copy()
'SI NO TIENE LAS COLUMNAS DE FIRMAS LAS CREA.
If Not DtDetalleFirmas.Columns.Contains("Titulo") Then
DtDetalleFirmas.Columns.Add("Titulo", GetType(String))
DtDetalleFirmas.Columns.Add("Nombre", GetType(String))
DtDetalleFirmas.Columns.Add("Puesto", GetType(String))
DtDetalleFirmas.Columns.Add("Lado", GetType(Integer))
End If
'Se llenan los Rows de las columnas con los datos del DtFirmas
For i As Integer = 0 To Vta.DtFirmas.Rows.Count - 1
'Si DtDetalle es menor al DtFirmas, crea un nuevo Row en DtDetalle y le asigna valor, Si no solo asigna valor
If DtDetalleFirmas.Rows.Count < i + 1 Then
Dim Dr = DtDetalleFirmas.NewRow
Dr("Titulo") = Vta.DtFirmas(i)("Titulo").ToString
Dr("Nombre") = Vta.DtFirmas(i)("Nombre").ToString
Dr("Puesto") = Vta.DtFirmas(i)("Puesto").ToString
Dr("Lado") = Vta.DtFirmas(i)("Lado").ToString.ToEntero
DtDetalleFirmas.Rows.Add(Dr)
Else
DtDetalleFirmas(i)("Titulo") = Vta.DtFirmas(i)("Titulo").ToString
DtDetalleFirmas(i)("Nombre") = Vta.DtFirmas(i)("Nombre").ToString
DtDetalleFirmas(i)("Puesto") = Vta.DtFirmas(i)("Puesto").ToString
DtDetalleFirmas(i)("Lado") = Vta.DtFirmas(i)("Lado").ToString.ToEntero
End If
Next i
Dim rds As New ReportDataSource With {.Name = "DsOC", .Value = DtDetalleFirmas}
lrds.Add(rds)
Else
Dim rds As New ReportDataSource With {.Name = "DsOC", .Value = Vta.DtDetalle}
lrds.Add(rds)
End If
Dim rds1 As New ReportDataSource With {.Name = "DataSet1", .Value = If(Vta.DtDeduccion IsNot Nothing, Vta.DtDeduccion, New DataTable)} ' sino esta creado el objeto, lo creamos, para que no truene el reporte
lrds.Add(rds1)
'DETALLE FIRMAS
Dim rds2 As New ReportDataSource With {.Name = "DataSet2", .Value = If(Vta.DtFirmas IsNot Nothing, Vta.DtFirmas, New DataTable)} ' sino esta creado el objeto, lo creamos, para que no truene el reporte
lrds.Add(rds2)
Dim Archivo As New System.IO.FileInfo(RutaFormato)
Dim DataSet As New DataSet
Vta.DtDetalle.TableName = "Datos"
Vta.DtDeduccion.TableName = "Deduccion"
DataSet.Tables.Add(Vta.DtDetalle.Copy)
DataSet.Tables.Add(Vta.DtDeduccion.Copy)
If Archivo.Exists Then
ImprimirbytesPDF(ImprimirPDFPyME(RutaFormato, DataSet, params, NombreArchivo, "PDF", MR:=Nothing), "Factura")
If Guardar Then
Dim ArchivoPDF As New System.IO.FileInfo(String.Format("{0}PDF\{1}\{2}.pdf", UsuarioActual.Empresa.Ruta, Vta.TipoDocto, Vta.SerieFolio))
If Not ArchivoPDF.Exists Then
Try
DirectoryExistsCreate(String.Format("{0}PDF", UsuarioActual.Empresa.Ruta))
DirectoryExistsCreate(String.Format("{0}PDF\{1}", UsuarioActual.Empresa.Ruta, Vta.TipoDocto))
File.WriteAllBytes(String.Format("{0}PDF\{1}\{2}.pdf", UsuarioActual.Empresa.Ruta, Vta.TipoDocto, Vta.SerieFolio), retorno)
Catch ex As Exception
Alert("Ocurrió un error al generar el PDF", TipoMensaje.MsgAdvertencia)
End Try
Else
Try
ArchivoPDF.Delete()
File.WriteAllBytes(String.Format("{0}PDF\{1}\{2}.pdf", UsuarioActual.Empresa.Ruta, Vta.TipoDocto, Vta.SerieFolio), retorno)
Catch ex As Exception
Alert("Ocurrió un error al generar el PDF", TipoMensaje.MsgAdvertencia)
End Try
End If
End If
Else
params.Add(New CrystalParametro("Empresa", UsuarioActual.Empresa.Empresa))
params.Add(New CrystalParametro("RFC", UsuarioActual.Empresa.RFC))
ImprimirbytesPDF(ImprimirPDFPyME(RutaFormato, DataSet, params, NombreArchivo, "PDF", MR:=Nothing), "Factura")
End If
Catch ex As Exception
GuardaLog(String.Format("Ocurrio un error al generar el reporte RLDC {0}", ex))
End Try
End Sub
Public Function PdfFactura(ByRef Vta As Modelos.Factura, Optional AplicaPagare As String = "0", Optional Guardar As Boolean = True, Optional SubReportData As Modelos.MSubReportData = Nothing) As Byte()
Dim retorno As Byte() = Nothing
' Dim ObjVentas As New ClsVentas
@@ -7166,6 +7769,13 @@ Public Class ClsPaginas
'Next
'ast.ToString.GuardaLog()
'PASAR LOS PARAMETROS SI TIENE SUBREPORTE
If SubReportData IsNot Nothing Then
For Each parametro As ReportParameter In SubReportData.Parametros
params.Add(parametro)
Next
End If
Dim Archivo As New System.IO.FileInfo(RutaFormato)
If Archivo.Exists Then
'If UsuarioActual.Empresa.Funcionalidad(350) = "1" Then
@@ -7174,7 +7784,7 @@ Public Class ClsPaginas
'Else
' retorno = StreamPDF(RutaFormato, lrds, params, NombreArchivo, "PDF", MR:=Nothing)
'End If
retorno = StreamPDF(RutaFormato, lrds, params, NombreArchivo, "PDF", MR:=Nothing)
retorno = StreamPDF(RutaFormato, lrds, params, NombreArchivo, "PDF", MR:=Nothing, SubReportData:=SubReportData)
Dim ArchivoPDF As New System.IO.FileInfo(String.Format("{0}PDF\{1}\{2}.pdf", UsuarioActual.Empresa.Ruta, Vta.TipoDocto, Vta.SerieFolio))
If Guardar Then
@@ -7204,7 +7814,7 @@ Public Class ClsPaginas
'Else
' retorno = StreamPDF(RutaFormatoDefault, lrds, params, NombreArchivo, "PDF", MR:=Nothing)
'End If
retorno = StreamPDF(RutaFormatoDefault, lrds, params, NombreArchivo, "PDF", MR:=Nothing)
retorno = StreamPDF(RutaFormatoDefault, lrds, params, NombreArchivo, "PDF", MR:=Nothing, SubReportData:=SubReportData)
End If
Catch ex As Exception
GuardaLog(String.Format("Ocurrio un error al generar el reporte RLDC {0}", ex))
@@ -7243,12 +7853,12 @@ Public Class ClsPaginas
End If
'SITIO DE PRUEBA EN IIS
Dim Url = New Uri(String.Format("{0}{1}", "http://localhost:2202/", Opcion))
Try
Dim dataSourceArray As New JArray()
Dim paramsArray As New JArray()
Dim Url = New Uri(String.Format("{0}{1}", "http://localhost:2202/", Opcion))
Try
Dim dataSourceArray As New JArray()
Dim paramsArray As New JArray()
For Each rds As ReportDataSource In DataSource
dataSourceArray.Add(New JObject(New JProperty("Nombre", rds.Name), New JProperty("Valor", JArray.Parse(JsonConvert.SerializeObject(rds.Value)))))
Next
@@ -7262,10 +7872,10 @@ Public Class ClsPaginas
New JProperty("ruta", RutaReporte),
New JProperty("parametros", paramsArray),
New JProperty("dataSource", dataSourceArray)
)
Dim data = New StringContent(payload.ToString(), Encoding.UTF8, "application/json")
)
Dim data = New StringContent(payload.ToString(), Encoding.UTF8, "application/json")
Using httpClient = New HttpClient()
Using request = New HttpRequestMessage(HttpMethod.Post, Url)
'request.Headers.Add("ADSToken", Encripta(String.Format("CVEEMPRESA={0}&TICKS={1}&CVEUSUARIO=100", CveEmpresa, DateTime.UtcNow.Ticks)))
@@ -7275,10 +7885,10 @@ Public Class ClsPaginas
Bytes = response.Content.ReadAsByteArrayAsync().Result
End If
End Using
End Using
Catch ex As Exception
OnError("Ocurrió un error al descargar la factura", ex)
End Try
End Using
Catch ex As Exception
OnError("Ocurrió un error al descargar la factura", ex)
End Try
sw.Stop()

View File

@@ -35,6 +35,20 @@ Namespace Modelos
Public Property CveEmpresa As Integer
End Class
<Serializable>
Public Class MSubReportData
Public Sub New()
Me.Nombre = ""
Me.SerieFolio = ""
Me.Parametros = New List(Of ReportParameter)
Me.DataSources = New List(Of ReportDataSource)
End Sub
Public Property Nombre As String
Public Property SerieFolio As String
Public Property Parametros As List(Of ReportParameter)
Public Property DataSources As List(Of ReportDataSource)
End Class
Public Class Evento
Public Sub New()

View File

@@ -381,7 +381,7 @@ Public Class Timbres
Public Property CartaPorte As CFDICartaPorte
End Class
Public Shared Function PreParaCartaPorteFactura(CveTimbre As Integer, Obj As Modelos.Factura, UsuarioActual As Usuario) As MMensajeCartaPorte
Public Shared Function PreParaCartaPorteFactura(CveTimbre As Integer, UsuarioActual As Usuario) As MMensajeCartaPorte
Dim Retorno As New MMensajeCartaPorte
Try
@@ -405,7 +405,7 @@ Public Class Timbres
Dim ObjGrales As New ClsGenerales
If ObjGrales.GetGralTimbre(CveTimbre, "Man", FI, FF, -1, UsuarioActual.CveEmpresa, -1) Then
If ObjGrales.GetGralTimbre(CveTimbre, "Ing", FI, FF, -1, UsuarioActual.CveEmpresa, -1) Then
If ObjGrales.DtResultados.Rows.Count = 1 Then
Dim DtMovimientos As DataTable = Nothing
@@ -472,16 +472,6 @@ Public Class Timbres
End If
If drT("ClaveTipoRemolque1").ToString <> "" Then
Dim Rem1 As New CFDICartaPorteRemolque With {.SubTipoRemolque = drT("ClaveTipoRemolque1"), .Placa = drT("PlacaRemolque1")}
CartaPorte.FiguraTransporte.AutoTransporte.Remolques.Add(Rem1)
End If
If drT("ClaveTipoRemolque2").ToString <> "" Then
Dim Rem2 As New CFDICartaPorteRemolque With {.SubTipoRemolque = drT("ClaveTipoRemolque2"), .Placa = drT("PlacaRemolque2")}
CartaPorte.FiguraTransporte.AutoTransporte.Remolques.Add(Rem2)
End If
Dim DomOrigen As CFDICartaPorteDomicilio = Nothing
DomOrigen = New CFDICartaPorteDomicilio With {.Calle = drT("DirOriCalle").ToString,
@@ -575,7 +565,7 @@ Public Class Timbres
.ClaveUnidad = drr("SATClaveUM").ToString,
.Unidad = drr("UM").ToString,
.Dimensiones = drr("Dimensiones").ToString,
.PesoenKg = drr("PesoKg").ToString.ToDecimal,
.PesoenKg = drr("PesoKg").ToString.ToDecimal * drr("Cantidad").ToString.ToDecimal,
.MaterialPeligroso = If(drr("ClaveMaterialPeligroso").ToString <> "", "Sí", ""),
.ClaveMaterialPeligroso = drr("ClaveMaterialPeligroso").ToString,
.Embalaje = drr("ClaveEmbalaje").ToString,
@@ -586,7 +576,7 @@ Public Class Timbres
.UUIDComercioExt = ""
}
Dim DetalleMercancia As New CFDICartaPorteMercanciaDetalleMercancia With {.PesoNeto = drr("PesoKg").ToString.ToDecimal, .NumPiezas = drr("Cantidad").ToString.ToDecimal}
Dim DetalleMercancia As New CFDICartaPorteMercanciaDetalleMercancia With {.PesoNeto = drr("PesoKg").ToString.ToDecimal * drr("Cantidad").ToString.ToDecimal, .NumPiezas = drr("Cantidad").ToString.ToDecimal}
conceptoCarta.DetalleMercancia = DetalleMercancia
Dim MercanciaTransporta As New CFDICartaPorteMercanciaTransporta With {.Cantidad = drr("Cantidad").ToString.ToDecimal, .IDOrigen = "OR000001", .IDDestino = "DE000001"}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -76,7 +76,7 @@ public partial class Ventas_RepCancelacionesPorAtender : ClsPaginas
protected void btnAceptar_Click(object sender, EventArgs e)
{
GridViewRow GvRow = (GridViewRow)(((LinkButton)sender).NamingContainer);
Cancelacion.CancelacionSoapClient objServicio = new Cancelacion.CancelacionSoapClient();
Cancelacion2022.CancelacionSoapClient objServicio = new Cancelacion2022.CancelacionSoapClient();
try
{
@@ -98,7 +98,7 @@ public partial class Ventas_RepCancelacionesPorAtender : ClsPaginas
//var acusesat = Timbrado.VerificarVigenciaSAT(Uuid, RFC, RFCReceptor, Total, true);
//if (acusesat != null && acusesat.EsCancelable.Contains("Cancelable"))
//{
Cancelacion.StructCancel resp = objServicio.AceptaRechaza(RFCReceptor, PACUsuario, PACContrasenia, CertB64, KeyB64, ClaveReceptor, Uuid, "Aceptación");
Cancelacion2022.StructCancel resp = objServicio.AceptaRechaza(RFCReceptor, PACUsuario, PACContrasenia, CertB64, KeyB64, ClaveReceptor, Uuid, "Aceptación");
if (resp.Estado == 0)
{
Alert("Aceptación de cancelación exitosa");
@@ -126,7 +126,7 @@ public partial class Ventas_RepCancelacionesPorAtender : ClsPaginas
protected void btnRechazar_Click(object sender, EventArgs e)
{
GridViewRow GvRow = (GridViewRow)(((LinkButton)sender).NamingContainer);
Cancelacion.CancelacionSoapClient objServicio = new Cancelacion.CancelacionSoapClient();
Cancelacion2022.CancelacionSoapClient objServicio = new Cancelacion2022.CancelacionSoapClient();
try
{
@@ -145,7 +145,7 @@ public partial class Ventas_RepCancelacionesPorAtender : ClsPaginas
//var acusesat = Timbrado.VerificarVigenciaSAT(Uuid, "", RFCReceptor, total, true);
Cancelacion.StructCancel resp = objServicio.AceptaRechaza(RFCReceptor, PACUsuario, PACContrasenia, CertB64, KeyB64, ClaveReceptor, Uuid, "Rechazo");
Cancelacion2022.StructCancel resp = objServicio.AceptaRechaza(RFCReceptor, PACUsuario, PACContrasenia, CertB64, KeyB64, ClaveReceptor, Uuid, "Rechazo");
if (resp.Estado == 0)
{
Alert("Aceptación de cancelación exitosa");
@@ -160,7 +160,7 @@ public partial class Ventas_RepCancelacionesPorAtender : ClsPaginas
}
catch (Exception ex)
{
//Alert(ex.ToString(), ModExtensiones.TipoMensaje.MsgError);
//Alert(ex.ToString(), ModExtensiones.TipoMensaje.MsgError);
this.OnError("Ocurrió un error al rechazar la cancelación", ex);
}
}

View File

@@ -2467,21 +2467,27 @@
<div class="row rowpadding">
<label class="col-md-2">Emitir:</label>
<div class="col-md-10">
<asp:CheckBox ID="ChkEmitirCartaPorte" runat="server" CssClass="chksino" Text=" " />
<asp:CheckBox ID="ChkEmitirCartaPorte" runat="server" CssClass="chksino" Text=" " OnCheckedChanged="ChkEmitirCartaPorte_CheckedChanged" AutoPostBack="true" />
</div>
</div>
<br />
<div class="row rowpadding">
<label class="col-md-2">Origen:</label>
<div class="col-md-10">
<asp:TextBox ID="TxtOrigenCP" runat="server" Enabled="false" Text="" CssClass="form-control input-sm"></asp:TextBox>
<asp:DropDownList ID="DdlDireccionOrigen" runat="server" AutoPostBack="true" CssClass="form-control input-sm select2me" AppendDataBoundItems="true" DataTextField="SucursalClienteVentaDireccion" DataValueField="CveDireccionEnvio" Width="100%" OnSelectedIndexChanged="DdlDireccionOrigen_SelectedIndexChanged">
<asp:ListItem Selected="true" Text="Seleccione" Value="-1"></asp:ListItem>
</asp:DropDownList>
<%--<asp:TextBox ID="TxtOrigenCP" runat="server" Enabled="false" Text="" CssClass="form-control input-sm"></asp:TextBox>--%>
</div>
</div>
<br />
<div class="row rowpadding">
<label class="col-md-2">Destino:</label>
<div class="col-md-10">
<asp:TextBox ID="TxtDestinoCP" runat="server" Enabled="false" Text="" CssClass="form-control input-sm"></asp:TextBox>
<asp:DropDownList ID="DdlDireccionDestino" runat="server" AutoPostBack="true" CssClass="form-control input-sm select2me" AppendDataBoundItems="true" DataTextField="SucursalClienteVentaDireccion" DataValueField="CveDireccionEnvio" Width="100%" OnSelectedIndexChanged="DdlDireccionDestino_SelectedIndexChanged">
<asp:ListItem Selected="true" Text="Seleccione" Value="-1"></asp:ListItem>
</asp:DropDownList>
<%--<asp:TextBox ID="TxtDestinoCP" runat="server" Enabled="false" Text="" CssClass="form-control input-sm"></asp:TextBox>--%>
</div>
</div>
<br />
@@ -5956,11 +5962,54 @@
<h4 class="modal-title">Registrar Mercancía</h4>
</div>
<div class="modal-body">
<div class="form-group form-md-line-input input-iconright">
<asp:TextBox ID="TxtCantidadMercancia" runat="server" ClientIDMode="Static" CssClass="form-control" CausesValidation="true"></asp:TextBox>
<ajax:FilteredTextBoxExtender ID="FTEMercancia" runat="server" TargetControlID="TxtCantidadMercancia" FilterType="Numbers, Custom" ValidChars="." />
<asp:RequiredFieldValidator ID="RFVMercancia" runat="server" CssClass="help-block errorimput" ControlToValidate="TxtCantidadMercancia" ErrorMessage="<b><span style='text-decoration: underline'>ERROR:</span></b><br />El campo <b>''Cantidad''</b> es necesario, por favor ingréselo." ValidationGroup="GrpAddPSMercancia"></asp:RequiredFieldValidator>
<label for="<%= TxtCantidadMercancia.ClientID.ToString()%>">Cantidad:</label>
<div class="row">
<div class="col-md-12">
<div class="row">
<label class="col-md-3 truncate" style="color: #888888; font-family: 'Open Sans', sans-serif; direction: ltr; font-size: 12px;">Agregar Flete:</label>
</div>
<div class="row">
<div class="col-md-12">
<asp:CheckBox ID="ChkAgregarFlete" runat="server" CssClass="chksino" Text=" " OnCheckedChanged="ChkAgregarFlete_CheckedChanged" Checked="true"
AutoPostBack="true" />
</div>
</div>
</div>
</div>
<div id="DivServicioFlete" runat="server" visible="True" class="row">
<div class="col-md-12">
<div class="row">
<div class="col-md-12">
<div class="form-group form-md-line-input input-iconright">
<label for="<%= DdlPSFlete.ClientID.ToString()%>">Servicio:</label>
<ADS:Dropdownlost runat="server" ID="DdlPSFlete" CssStyle="width: 100%;" CssClass=" form-control input-sm DdlPS" IncluyeTodos="false" CssClassDdl="select2me form-control" DataTextField="PSCodigo" DataValueField="CvePS" />
</div>
</div>
</div>
<br />
<div class="row">
<div class="col-md-12">
<div class="row">
<label class="col-md-3 truncate" style="color: #888888; font-family: 'Open Sans', sans-serif; direction: ltr; font-size: 12px;">Observaciones:</label>
</div>
<div class="row">
<div class="col-md-12">
<asp:TextBox ID="TxtObservacionesMercancia" CssClass="form-control input-sm" runat="server" Rows="2" TextMode="MultiLine" Width="100%" MaxLength="50"></asp:TextBox>
</div>
</div>
</div>
</div>
</div>
</div>
<br />
<div class="row">
<div class="col-md-12">
<div class="form-group form-md-line-input input-iconright">
<asp:TextBox ID="TxtCantidadMercancia" runat="server" ClientIDMode="Static" CssClass="form-control" CausesValidation="true"></asp:TextBox>
<ajax:FilteredTextBoxExtender ID="FTEMercancia" runat="server" TargetControlID="TxtCantidadMercancia" FilterType="Numbers, Custom" ValidChars="." />
<asp:RequiredFieldValidator ID="RFVMercancia" runat="server" CssClass="help-block errorimput" ControlToValidate="TxtCantidadMercancia" ErrorMessage="<b><span style='text-decoration: underline'>ERROR:</span></b><br />El campo <b>''Cantidad''</b> es necesario, por favor ingréselo." ValidationGroup="GrpAddPSMercancia"></asp:RequiredFieldValidator>
<label for="<%= TxtCantidadMercancia.ClientID.ToString()%>">Cantidad:</label>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
@@ -5970,6 +6019,16 @@
</div>
</div>
</div>
<br />
<div class="form-group form-md-line-input input-iconright">
<asp:TextBox ID="TxtPrecioMercancia" inputmode="numeric" runat="server" onkeyup="Recalcula();" CausesValidation="true" lang="nb" ClientIDMode="Static" Text="0.00" MaxLength="12" ValidationGroup="GrpAddPSMercancia" Width="200px" CssClass="form-control "></asp:TextBox>
<ajax:FilteredTextBoxExtender ID="FTBPrecioMercancia" runat="server" TargetControlID="TxtPrecioMercancia" FilterType="Custom, Numbers" ValidChars="." />
<asp:RequiredFieldValidator ID="RFVPrecioMercancia" runat="server" ControlToValidate="TxtPrecioMercancia" Display="None" ErrorMessage="<b><span style='text-decoration: underline'>ERROR:</span></b><br />El campo <b>''Precio''</b> es necesario, por favor ingréselo." ValidationGroup="GrpAddPSMercancia"></asp:RequiredFieldValidator>
<ajax:ValidatorCalloutExtender ID="VCEPrecioM1" runat="server" HighlightCssClass="vco" TargetControlID="RFVPrecioMercancia" Width="300px"></ajax:ValidatorCalloutExtender>
<asp:CustomValidator ID="CVPrecioMercancia" runat="server" ClientValidationFunction="ValidaDecimal6digits" ControlToValidate="TxtPrecioMercancia" Display="None" ErrorMessage="<b><span style='text-decoration: underline'>ERROR:</span></b><br />El campo <b>''Precio''</b> no tiene el formato correcto. Por favor rectifique y vuelva a intentar." ValidateEmptyText="True" ValidationGroup="GrpAddPSMercancia"></asp:CustomValidator>
<ajax:ValidatorCalloutExtender ID="VCEPrecioM2" runat="server" HighlightCssClass="vco" TargetControlID="CVPrecioMercancia" Width="300px"></ajax:ValidatorCalloutExtender>
<label for="<%= TxtPrecioMercancia.ClientID.ToString()%>">Precio:</label>
</div>
</div>
<div class="modal-footer">
<asp:LinkButton ID="LnkAddPSMercancia" OnClick="LnkAddPSMercancia_Click" runat="server" CssClass="btn btn-success" Text="Agregar" ValidationGroup="GrpAddPSMercancia"></asp:LinkButton>

View File

@@ -228,6 +228,14 @@ Partial Class Ventas
ViewState("TmpDTEnvioDireccion") = value
End Set
End Property
Private Property TmpDTDireccionCP As DataTable
Get
Return If(IsNothing(ViewState("TmpDTDireccionCP")), Nothing, CType(ViewState("TmpDTDireccionCP"), DataTable))
End Get
Set(value As DataTable)
ViewState("TmpDTDireccionCP") = value
End Set
End Property
Private Property IdPoliza As Integer
Get
@@ -1346,6 +1354,22 @@ Partial Class Ventas
ViewState("RegimenFiscalCliente") = value
End Set
End Property
Private Property RegimenSociedad As String
Get
Return IfNull(ViewState("RegimenSociedad"), "").ToString()
End Get
Set(value As String)
ViewState("RegimenSociedad") = value
End Set
End Property
Private Property TipoPersona As Boolean
Get
Return CBool(IfNull(ViewState("TipoPersona"), False))
End Get
Set(value As Boolean)
ViewState("TipoPersona") = value
End Set
End Property
Private Property Adjunto As String
Get
Return If(IsNothing(ViewState("Adjunto")), "", ViewState("Adjunto").ToString())
@@ -2327,7 +2351,7 @@ Partial Class Ventas
UpFacturar.Update()
'CargaTiposDocumentos()
TrEmitir.Visible = False
If UsuarioActual.CveRol = 1 Then
If UsuarioActual.CveRol = 1 AndAlso UsuarioActual.CveEmpresa = 1 Then
DivCartaPorte.Visible = True
End If
ViewState("EstablecioFolio") = False
@@ -2491,6 +2515,7 @@ Partial Class Ventas
CargaClasificaciones()
CargaPS(-1, DdlPS)
CargaPS(-1, DdlPSMercancia)
CargaPS(-1, DdlPSFlete)
'CargaPSRemision(-1, DdlPSRemision)
CargaPSPyME(-1, DdlPSPyME)
@@ -4953,7 +4978,7 @@ Partial Class Ventas
If DbRowVenta("CveDireccionEnvio").ToString().ToEntero() > 0 AndAlso DbRowVenta("CveDireccionEnvio").ToString() IsNot Nothing Then
ChkDireccionEnvio.Checked = True
DdlDireccionEnvio.SelectedValueExist(DbRowVenta("CveDireccionEnvio").ToString().ToEntero())
DdlDireccionEnvio_SelectedIndexChanged(DdlDireccionEnvio, EventArgs.Empty)
'DdlDireccionEnvio_SelectedIndexChanged(DdlDireccionEnvio, EventArgs.Empty)
DdlDireccionEnvio.Enabled = False
ChkDireccionEnvio.Enabled = False
DdlDireccionEnvio.Visible = True
@@ -6110,8 +6135,11 @@ Partial Class Ventas
ViewState("CliLocalidad") = If(ObjCliente.Localidad.Trim.Length = 0, ObjCliente.Ciudad.Trim, ObjCliente.Localidad.Trim)
ViewState("CliPais") = ObjCliente.Pais
ImprimeNombreSucursal = ObjCliente.ImprimeNombreSucursal
If UsuarioActual.Empresa.Funcionalidad(350) = "1" Then
RegimenFiscalCliente = ObjCliente.DtResultados(0)("CodigoRegimenFiscal").ToString()
RegimenSociedad = ObjCliente.DtResultados(0)("RegimenSociedad").ToString()
TipoPersona = CBool(ObjCliente.DtResultados(0)("TipoPersona"))
CargaUsoCFDI()
End If
'ViewState("NumCtaPago") = ObjCliente.NumCtaPago
@@ -6137,7 +6165,7 @@ Partial Class Ventas
End If
'HABILITA LA OPCION DE DIRECCION DE ENVIO
If UsuarioActual.CveEmpresa.Contiene(1, 72, 119, 140) Then
If UsuarioActual.CveEmpresa.Contiene(1, 13, 72, 119, 140) Then
trDireccionEnvio.Visible = True
CargaDireccionesEnvio()
End If
@@ -7259,7 +7287,7 @@ Partial Class Ventas
DdlClasificacion.DataBind()
DdlClasificacionPyME.DataBind()
End Sub
Private Sub CargaPS(CveClasificacion As Integer, Objeto As ADServerControl.Dropdownlost)
Private Sub CargaPS(CveClasificacion As Integer, Objeto As ADServerControl.Dropdownlost, Optional AplicaParaVenta As Boolean = True)
Objeto.setEsWebService(UsuarioActual.Empresa.Funcionalidad(141).ToString() = "1")
@@ -7285,7 +7313,9 @@ Partial Class Ventas
Objeto.ddlWS.Attributes.Add("data-cveclasificacion", CveClasificacion.ToString())
Objeto.ddlWS.Attributes.Add("data-pagina", "ventas/ventas")
Objeto.ddlWS.Attributes.Add("data-Estatus", "1")
Objeto.ddlWS.Attributes.Add("data-AplicaparaVenta", "1")
If AplicaParaVenta Then
Objeto.ddlWS.Attributes.Add("data-AplicaparaVenta", "1")
End If
End If
End Sub
@@ -8249,6 +8279,22 @@ Partial Class Ventas
DtOCTmpDT = TmpDT.Copy
TmpDTError = TmpDT.Copy
If UsuarioActual.Empresa.Funcionalidad(350) = "1" AndAlso DdlTipoComprobante.SelectedValue.Contiene("Ing", "Ant", "Rem", "Egs", "Dev") Then
If RegimenFiscalCliente.Contiene("-1", "") Then
Alert("El cliente no tiene asignado un régimen fiscal.", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
Dim EsPersonaMoral As Boolean = (TipoPersona = True)
If EsPersonaMoral AndAlso String.IsNullOrEmpty(RegimenSociedad) Then
Alert("El cliente no tiene asignado un regimen de sociedad.", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
End If
If (Me.FacturarSucursal AndAlso DdlSucursalCliente.SelectedValue.ToEntero() > 0 AndAlso (Me.ClienteSucursal IsNot Nothing AndAlso String.IsNullOrEmpty(Me.ClienteSucursal.RFC))) Then
Alert("La sucursal no tiene asignada un RFC.", TipoMensaje.MsgAdvertencia)
Exit Sub
@@ -8270,11 +8316,11 @@ Partial Class Ventas
End If
If ChkEmitirCartaPorte.Checked Then
If String.IsNullOrEmpty(TxtOrigenCP.Text.Trim()) Then
If DdlDireccionOrigen.SelectedValue.ToEntero() <= 0 Then
Alert("La carta porte no tiene un origen definido.", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
If String.IsNullOrEmpty(TxtDestinoCP.Text.Trim()) Then
If DdlDireccionDestino.SelectedValue.ToEntero() <= 0 Then
Alert("La carta porte no tiene un destino definido.", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
@@ -9319,7 +9365,7 @@ Partial Class Ventas
End If
If ChkEmitirCartaPorte.Checked AndAlso CveTimbreCartaPorte > 0 Then
Dim RespCartaPorte = Timbres.PreParaCartaPorteFactura(CveTimbreCartaPorte, ObjFactura, UsuarioActual)
Dim RespCartaPorte = Timbres.PreParaCartaPorteFactura(CveTimbreCartaPorte, UsuarioActual)
If Not RespCartaPorte.TieneError Then
ObjFactura.Timbre.Complementos.CartaPorte = RespCartaPorte.CartaPorte
Else
@@ -11464,7 +11510,11 @@ Partial Class Ventas
Timbre.Receptor.DomicilioFiscalReceptor = Obj.ClienteSucursal.CP
Else
Timbre.Receptor.RFC = Obj.Cliente.RFC
Timbre.Receptor.Nombre = Obj.Cliente.NombreComercial
If UsuarioActual.Empresa.Funcionalidad(350) = "1" Then
Timbre.Receptor.Nombre = Obj.Cliente.Nombre
Else
Timbre.Receptor.Nombre = Obj.Cliente.NombreComercial
End If
Timbre.Receptor.DomicilioFiscalReceptor = Obj.Cliente.CP
End If
@@ -16250,12 +16300,12 @@ Partial Class Ventas
Dim TmpDTComplementosTimbrado As New DataTable
PrepararTimbrado(FM, TmpDT7Eleven, TmpDTComplementosTimbrado)
Dim RespCartaPorte = Timbres.PreParaCartaPorteFactura(CveTimbreCartaPorteVenta, ObjFactura, UsuarioActual)
Dim RespCartaPorte = Timbres.PreParaCartaPorteFactura(CveTimbreCartaPorteVenta, UsuarioActual)
If Not RespCartaPorte.TieneError Then
ObjFactura.Timbre.Complementos.CartaPorte = RespCartaPorte.CartaPorte
Else
Exit Sub
Alert(RespCartaPorte.Mensaje, TipoMensaje.MsgAdvertencia)
Exit Sub
End If
If ObjTimbrado.TimbrarFactura(UsuarioActual, ObjFactura) Then
@@ -21567,6 +21617,11 @@ Partial Class Ventas
ObjConta.Dispose()
ObjBancos.Dispose()
If ObjAC IsNot Nothing Then ObjAC.Dispose()
'REGENERAR EL PDF
If Not OcurrioError Then
DescargarFactura(CveVenta, UsuarioActual.CveEmpresa, UsuarioActual.CveUsuario, Regenerar:=True)
End If
End Sub
Private Sub BtnActualizarCuentaTerminal_Click(sender As Object, e As EventArgs) Handles BtnActualizarCuentaTerminal.Click
Dim ObjVentas As New ClsVentas
@@ -22871,14 +22926,14 @@ Partial Class Ventas
If ChkDireccionEnvio.Checked Then
DdlDireccionEnvio.Visible = True
LnkOtraDireccion.Visible = True
DdlDireccionEnvio_SelectedIndexChanged(DdlDireccionEnvio, EventArgs.Empty)
'DdlDireccionEnvio_SelectedIndexChanged(DdlDireccionEnvio, EventArgs.Empty)
Else
DdlDireccionEnvio.Visible = False
LnkOtraDireccion.Visible = False
If SucursalDestinoCP IsNot Nothing Then
SucursalDestinoCP = Nothing
SucursalDestinoCP = New Modelos.SucursalModel
TxtDestinoCP.Text = ""
'TxtDestinoCP.Text = ""
End If
End If
End Sub
@@ -22918,7 +22973,7 @@ Partial Class Ventas
TxtEnvioTel.Text = ""
CargaDireccionesEnvio()
DdlDireccionEnvio.SelectedValueExist(CveDireccionEnvio)
DdlDireccionEnvio_SelectedIndexChanged(DdlDireccionEnvio, EventArgs.Empty)
'DdlDireccionEnvio_SelectedIndexChanged(DdlDireccionEnvio, EventArgs.Empty)
End If
ObjClientes.Dispose()
@@ -33085,8 +33140,8 @@ Partial Class Ventas
' Return File
'End Function
Private Function DescargarFactura(CveVenta As Integer, CveEmpresa As Integer, CveUsuarioCreo As Integer, Optional GetBytes As Boolean = True) As Byte()
Dim Url = New Uri(String.Format("{0}://{1}:{2}/Compras/PopUpVerFactura.aspx?P={3}", HttpContext.Current.Request.Url.Scheme, HttpContext.Current.Request.Url.Host, HttpContext.Current.Request.Url.Port, Encripta(String.Format("OP=VTA&CVEVENTA={0}&PAG=1&GUARDAR=1", CveVenta))))
Private Function DescargarFactura(CveVenta As Integer, CveEmpresa As Integer, CveUsuarioCreo As Integer, Optional GetBytes As Boolean = True, Optional Regenerar As Boolean = False) As Byte()
Dim Url = New Uri(String.Format("{0}://{1}:{2}/Compras/PopUpVerFactura.aspx?P={3}", HttpContext.Current.Request.Url.Scheme, HttpContext.Current.Request.Url.Host, HttpContext.Current.Request.Url.Port, 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 = New HttpClient()
@@ -34256,7 +34311,7 @@ Partial Class Ventas
TxtFechaLlegadaCP.Enabled = False
Using ObjGral As New ClsGenerales
If ObjGral.GetGralTimbre(-1, "Man", MinFecha, MaxFecha, 0, UsuarioActual.CveEmpresa, -1, CveVenta:=CveVenta) AndAlso ObjGral.DtResultados.Rows.Count > 0 Then
If ObjGral.GetGralTimbre(-1, "Ing", MinFecha, MaxFecha, 0, UsuarioActual.CveEmpresa, -1, CveVenta:=CveVenta) AndAlso ObjGral.DtResultados.Rows.Count > 0 Then
Dim RowCP As DataRow = ObjGral.DtResultados.Rows(0)
Me.CveTimbreCartaPorteVenta = RowCP("CveTimbre").ToString().ToEntero()
@@ -34392,7 +34447,7 @@ Partial Class Ventas
End If
Next
CveTimbre = ObjGral.AddGralTimbre("Man", DdlSubProyectoDatos.SelectedValue.ToEntero, TxtFecha.Text.ToDate, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveEntregaAlmacen:=CveEntregaAlmacen, AplicaCP:=True, CveVenta:=ObjFactura.CveVenta)
CveTimbre = ObjGral.AddGralTimbre("Ing", DdlSubProyectoDatos.SelectedValue.ToEntero, TxtFecha.Text.ToDate, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveEntregaAlmacen:=CveEntregaAlmacen, AplicaCP:=True, CveVenta:=ObjFactura.CveVenta)
If Not CveTimbre > 0 Then
ErrorProceso = True
@@ -34524,12 +34579,80 @@ Partial Class Ventas
GuardaLog(ex.ToString())
End Try
TxtOrigenCP.Text = SBDomicilioSucursal.ToString
'TxtOrigenCP.Text = SBDomicilioSucursal.ToString
UpEmitirTransitorio.Update()
End Sub
Protected Sub DdlDireccionEnvio_SelectedIndexChanged(sender As Object, e As EventArgs)
'If SucursalDestinoCP Is Nothing Then
' SucursalDestinoCP = New Modelos.SucursalModel
'Else
' SucursalDestinoCP = Nothing
' SucursalDestinoCP = New Modelos.SucursalModel
'End If
'If TmpDTEnvioDireccion IsNot Nothing AndAlso TmpDTEnvioDireccion.FiltraParametros(String.Format("CveDireccionEnvio = {0}", DdlDireccionEnvio.SelectedValue.ToEntero())).Rows.Count > 0 Then
' Dim Row As DataRow = TmpDTEnvioDireccion.FiltroPrimero(String.Format("CveDireccionEnvio = {0}", DdlDireccionEnvio.SelectedValue.ToEntero()))
' If Row IsNot Nothing Then
' SucursalDestinoCP.Direccion = Row("EnvioDireccion").ToString()
' SucursalDestinoCP.Colonia = Row("EnvioColonia").ToString()
' SucursalDestinoCP.Municipio = Row("EnvioCiudad").ToString()
' SucursalDestinoCP.CveEstado = Row("CveEstado").ToString().ToEntero()
' SucursalDestinoCP.Estado = Row("EnvioEstado").ToString()
' SucursalDestinoCP.CvePais = Row("CvePais").ToString().ToEntero()
' SucursalDestinoCP.Pais = Row("Pais").ToString()
' SucursalDestinoCP.CP = Row("EnvioCP").ToString()
' TxtDestinoCP.Text = String.Format("{0} col. {1},CP:{2}, {3},{4},{5}", SucursalDestinoCP.Direccion, SucursalDestinoCP.Colonia, SucursalDestinoCP.CP, SucursalDestinoCP.Municipio, SucursalDestinoCP.Estado, SucursalDestinoCP.Pais)
' Else
' TxtDestinoCP.Text = ""
' End If
'Else
' TxtDestinoCP.Text = ""
'End If
UpEmitirTransitorio.Update()
End Sub
Protected Sub DdlDireccionOrigen_SelectedIndexChanged(sender As Object, e As EventArgs)
If SucursalOrigenCP Is Nothing Then
SucursalOrigenCP = New Modelos.SucursalModel
Else
SucursalOrigenCP = Nothing
SucursalOrigenCP = New Modelos.SucursalModel
End If
If TmpDTDireccionCP IsNot Nothing AndAlso TmpDTDireccionCP.FiltraParametros(String.Format("CveDireccionEnvio = {0}", DdlDireccionOrigen.SelectedValue.ToEntero())).Rows.Count > 0 Then
Dim Row As DataRow = TmpDTDireccionCP.FiltroPrimero(String.Format("CveDireccionEnvio = {0}", DdlDireccionOrigen.SelectedValue.ToEntero()))
If Row IsNot Nothing Then
SucursalOrigenCP.Direccion = Row("EnvioDireccion").ToString()
SucursalOrigenCP.Colonia = Row("EnvioColonia").ToString()
SucursalOrigenCP.Municipio = Row("EnvioCiudad").ToString()
SucursalOrigenCP.CveEstado = Row("CveEstado").ToString().ToEntero()
SucursalOrigenCP.Estado = Row("EnvioEstado").ToString()
SucursalOrigenCP.CvePais = Row("CvePais").ToString().ToEntero()
SucursalOrigenCP.Pais = Row("Pais").ToString()
SucursalOrigenCP.CP = Row("EnvioCP").ToString()
'TxtDestinoCP.Text = String.Format("{0} col. {1},CP:{2}, {3},{4},{5}", SucursalDestinoCP.Direccion, SucursalDestinoCP.Colonia, SucursalDestinoCP.CP, SucursalDestinoCP.Municipio, SucursalDestinoCP.Estado, SucursalDestinoCP.Pais)
Else
'TxtDestinoCP.Text = ""
End If
Else
'TxtDestinoCP.Text = ""
End If
UpEmitirTransitorio.Update()
End Sub
Protected Sub DdlDireccionDestino_SelectedIndexChanged(sender As Object, e As EventArgs)
If SucursalDestinoCP Is Nothing Then
SucursalDestinoCP = New Modelos.SucursalModel
Else
@@ -34538,9 +34661,9 @@ Partial Class Ventas
End If
If TmpDTEnvioDireccion IsNot Nothing AndAlso TmpDTEnvioDireccion.FiltraParametros(String.Format("CveDireccionEnvio = {0}", DdlDireccionEnvio.SelectedValue.ToEntero())).Rows.Count > 0 Then
If TmpDTDireccionCP IsNot Nothing AndAlso TmpDTDireccionCP.FiltraParametros(String.Format("CveDireccionEnvio = {0}", DdlDireccionDestino.SelectedValue.ToEntero())).Rows.Count > 0 Then
Dim Row As DataRow = TmpDTEnvioDireccion.FiltroPrimero(String.Format("CveDireccionEnvio = {0}", DdlDireccionEnvio.SelectedValue.ToEntero()))
Dim Row As DataRow = TmpDTDireccionCP.FiltroPrimero(String.Format("CveDireccionEnvio = {0}", DdlDireccionDestino.SelectedValue.ToEntero()))
If Row IsNot Nothing Then
SucursalDestinoCP.Direccion = Row("EnvioDireccion").ToString()
@@ -34552,20 +34675,20 @@ Partial Class Ventas
SucursalDestinoCP.Pais = Row("Pais").ToString()
SucursalDestinoCP.CP = Row("EnvioCP").ToString()
TxtDestinoCP.Text = String.Format("{0} col. {1},CP:{2}, {3},{4},{5}", SucursalDestinoCP.Direccion, SucursalDestinoCP.Colonia, SucursalDestinoCP.CP, SucursalDestinoCP.Municipio, SucursalDestinoCP.Estado, SucursalDestinoCP.Pais)
'TxtDestinoCP.Text = String.Format("{0} col. {1},CP:{2}, {3},{4},{5}", SucursalDestinoCP.Direccion, SucursalDestinoCP.Colonia, SucursalDestinoCP.CP, SucursalDestinoCP.Municipio, SucursalDestinoCP.Estado, SucursalDestinoCP.Pais)
Else
TxtDestinoCP.Text = ""
'TxtDestinoCP.Text = ""
End If
Else
TxtDestinoCP.Text = ""
'TxtDestinoCP.Text = ""
End If
UpEmitirTransitorio.Update()
End Sub
Protected Sub LnkAgregarMercancia_Click(sender As Object, e As EventArgs)
TxtCantidadMercancia.Text = ""
DdlPSMercancia.SelectedValue = ""
DdlPSMercancia.SelectedText = "Seleccione"
'DdlPSMercancia.SelectedValue = ""
'DdlPSMercancia.SelectedText = "Seleccione"
UpAgregarMercancia.Update()
RegistraScript("$('#DivAddMercancia').modal('show');", "M1")
@@ -34599,9 +34722,45 @@ Partial Class Ventas
GvMercanciasCP.DataSource = DtMercancias
GvMercanciasCP.DataBind()
If ChkAgregarFlete.Checked Then
Dim CvePSServicio As Integer = DdlPSFlete.SelectedValue.ToEntero()
If CvePSServicio > 0 Then
Dim Cantidad As Decimal = TxtCantidadMercancia.Text.ToDecimal
Dim PU As Decimal = TxtPrecioMercancia.Text.Trim.ToDecimal
Dim Descuento As Decimal = 0
Dim CveUM As Integer = -1
Dim UnidadMedida As String = ""
Dim CveClasificacion As Integer = -1
Dim Clasificacion As String = ""
Dim drPSFlete As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePSServicio).FiltroPrimero("")
If DrPS IsNot Nothing Then
CveUM = drPSFlete("CveUnidadMedida").ToString().ToEntero()
CveClasificacion = drPSFlete("CveClasificacion").ToString().ToEntero()
End If
Dim CveSubProyecto As Integer = DdlSubProyectoDatos.SelectedValue.ToEntero()
Dim CveProyecto = GlobalDTSubProyectos(-1, CveSubProyecto:=CveSubProyecto, CveEmpresa:=UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveProyecto", "").ToEntero()
Dim Proyecto As String = GlobalDTProyectosUsuarios(UsuarioActual.CveUsuario, CveProyecto, UsuarioActual.CveEmpresa, -1).FiltroPrimeroValor("Proyecto", "").ToString()
AgregarProductoServicio(Cantidad, CveUM, UnidadMedida, CveClasificacion, Clasificacion,
CvePSServicio, "", TxtObservacionesMercancia.Text.Trim, PU, Descuento,
CveProyecto, Proyecto, CveSubProyecto, DdlSubProyectoDatos.SelectedItem.Text,
Serie:="", TiempoEntrega:="", CuentaPredial:="", RegeneraIEPS:=ClienteDesglosaIEPS, CvePromocionDetalle:=-1,
ImporteProntoPago:=0)
CalculaUsados()
CalculaTotalesVenta()
Else
Alert("No se agrego el servicio del flete", TipoMensaje.MsgAdvertencia)
End If
End If
TxtCantidadMercancia.Text = ""
DdlPSMercancia.SelectedValue = ""
DdlPSMercancia.SelectedText = "Seleccione"
TxtObservacionesMercancia.Text = ""
UpAgregarMercancia.Update()
UpEmitirTransitorio.Update()
@@ -34664,5 +34823,109 @@ Partial Class Ventas
End Sub
Protected Sub ChkEmitirCartaPorte_CheckedChanged(sender As Object, e As EventArgs)
If ChkEmitirCartaPorte.Checked AndAlso CveCliente > 0 Then
Dim ObjClientes As New ClsClientes
If ObjClientes.DireccionEnvioGet(-1, CveCliente, -1) Then
TmpDTDireccionCP = ObjClientes.DtResultados.FiltraParametros(String.Format("Estatus = 1"))
End If
ObjClientes.Dispose()
Else
TmpDTDireccionCP = Nothing
End If
DdlDireccionOrigen.DataSource = TmpDTDireccionCP
DdlDireccionOrigen.DataBind()
DdlDireccionDestino.DataSource = TmpDTDireccionCP
DdlDireccionDestino.DataBind()
End Sub
Protected Sub ChkAgregarFlete_CheckedChanged(sender As Object, e As EventArgs)
DivServicioFlete.Visible = ChkAgregarFlete.Checked
UpAgregarMercancia.Update()
End Sub
Protected Sub DdlPSMercancia_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DdlPSMercancia.selectedindexchange
Dim CvePSParametro As Integer = DdlPSMercancia.SelectedValue.ToEntero()
If CvePSParametro > 0 Then
Dim drPS As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=DdlPSMercancia.SelectedValue.ToEntero()).FiltroPrimero("")
If drPS IsNot Nothing Then
Dim CveClasificacion As Integer = drPS("CveClasificacion").ToString().ToEntero()
'SUGIERE PRECIO
Dim PrecioSugerido As Decimal = 0
Dim tPrecioSugerido As Decimal = 0
tPrecioSugerido = drPS("Precio").ToString().ToDecimal
If UsuarioActual.CveEmpresa.Contiene(1) Then
Dim ObjPS As New ClsProductosServicios
If ObjPS.GetPorcentajeProductos(CveCliente) Then
Dim PrecioAplicado = ObjPS.DtResultados.FiltraParametros($"CvePS = {CvePSParametro}").FiltroPrimeroValor("PrecioA").ToDecimal
If PrecioAplicado > 0 Then
PrecioSugerido = PrecioAplicado
End If
End If
ObjPS.Dispose()
End If
If UsuarioActual.Empresa.Funcionalidad(404).ToEntero > 0 Then 'cuando el valor es 10.- secuencia Cliente/Sucursal, 20 - sucursal/cliente
Dim TipoPrecioLista As Integer = UsuarioActual.Empresa.Funcionalidad(404).ToEntero
' si es 10. primero el cliente
Dim CvePrecioListaPS As Integer
Dim PorcentajePrecio As Decimal = 0
If TipoPrecioLista = 10 Then
CvePrecioListaPS = Me.CvePrecioListaCliente
If CvePrecioListaPS <= 0 Then
CvePrecioListaPS = GlobalDTSubProyectos(-1, CveSubProyecto:=DdlSubProyectoDatos.SelectedValue.ToEntero(), CveEmpresa:=UsuarioActual.CveEmpresa).FiltroPrimeroValor("CvePrecioLista", "").ToEntero()
End If
Else
CvePrecioListaPS = GlobalDTSubProyectos(-1, CveSubProyecto:=DdlSubProyectoDatos.SelectedValue.ToEntero(), CveEmpresa:=UsuarioActual.CveEmpresa).FiltroPrimeroValor("CvePrecioLista", "").ToEntero()
If CvePrecioListaPS <= 0 Then
CvePrecioListaPS = Me.CvePrecioListaCliente 'GlobalDTCliente(UsuarioActual.CveEmpresa, Estatus:=-1, CveCliente:=CveCliente).FiltroPrimeroValor("CvePrecioLista").ToEntero()
End If
End If
If CvePrecioListaPS > 0 Then
Dim ObjPS As New ClsProductosServicios
If ObjPS.GetPSPreciosLista(UsuarioActual.CveEmpresa, CvePrecioListaPS, CvePS:=CvePSParametro) Then
PrecioSugerido = ObjPS.DtResultados.FiltroPrimeroValor("PrecioLista").ToDecimal
PorcentajePrecio = ObjPS.DtResultados.FiltroPrimeroValor("Porcentaje").ToDecimal
End If
ObjPS.Dispose()
End If
If PrecioSugerido = 0 Then
Dim ObjInventarios As New ClsInventarios
Dim CostoPS = ObjInventarios.GetCostoPS(CvePSParametro, TxtCantidadMercancia.Text.Trim.ToDouble, -1, "-1", TxtFecha.Text.ToDate, DdlSubProyectoDatos.SelectedValue.ToEntero(), CveTipoAlmacen:=1)
'si el costo es cero, puede ser que no halla movimientos del producto, en esa sucursal. y se volverá a sacar sin especificar sucursal
If CostoPS = 0 Then CostoPS = ObjInventarios.GetCostoPS(CvePSParametro, TxtCantidadMercancia.Text.Trim.ToDouble, -1, "-1", TxtFecha.Text.ToDate, -1, CveTipoAlmacen:=1)
ObjInventarios.Dispose()
If CostoPS > 0 And PorcentajePrecio > 0 Then
PrecioSugerido = ((PorcentajePrecio / 100) + 1) * CostoPS
End If
End If
CvePrecioLista = CvePrecioListaPS
End If
If PrecioSugerido > 0 Then
Dim PrecioBaseCosto As Decimal = 0
PrecioBaseCosto = GlobalDTClasificaciones(UsuarioActual.CveEmpresa, CveClasificacion:=CveClasificacion).FiltroPrimeroValor("PrecioBaseCosto", "").ToDecimal
If PrecioBaseCosto > 0 Then
PrecioSugerido = PrecioSugerido * ((PrecioBaseCosto / 100) + 1)
End If
End If
If PrecioSugerido <= 0 Then PrecioSugerido = tPrecioSugerido
TxtPrecioMercancia.Text = PrecioSugerido.ToString("#,###.####") ' que muestre hasta los 4 digitos si lo requiere
End If
End If
End Sub
End Class