diff --git a/App_Code/ClsPaginas.vb b/App_Code/ClsPaginas.vb index e8a0fd6bc..a2395629d 100644 --- a/App_Code/ClsPaginas.vb +++ b/App_Code/ClsPaginas.vb @@ -4426,7 +4426,7 @@ Public Class ClsPaginas End Sub Private Shared Function GetCurrentPageViewState() As System.Web.UI.StateBag Dim page As Page = TryCast(HttpContext.Current.CurrentHandler, Page) - Dim viewStateProp = page?.[GetType]().GetProperty("ViewState", Reflection.BindingFlags.FlattenHierarchy Or Reflection.BindingFlags.Instance Or Reflection.BindingFlags.NonPublic) + Dim viewStateProp As Reflection.PropertyInfo = page?.[GetType]().GetProperty("ViewState", Reflection.BindingFlags.FlattenHierarchy Or Reflection.BindingFlags.Instance Or Reflection.BindingFlags.NonPublic) Return CType(viewStateProp?.GetValue(page), System.Web.UI.StateBag) End Function Public Shared Sub Alert(Mensaje As String, Optional pOpcion As TipoMensaje = TipoMensaje.MsgInformacion, Optional JSBtnAceptar As String = "", Optional timeout As Integer = 5, Optional ShowCloseButton As Boolean = True, Optional TextoConfirmacion As String = "", Optional TextoSegundoBoton As String = "", Optional JSBtn2 As String = "") @@ -4521,11 +4521,11 @@ Public Class ClsPaginas End Sub Public Sub NotificacionesPendientes(Nota As String) 'incremento el contador de alertas - Dim Type = Master.GetType - Dim Prop = Type.GetProperty("countNotificaciones") + Dim Type As System.Type = Master.GetType + Dim Prop As Reflection.PropertyInfo = Type.GetProperty("countNotificaciones") Prop.SetValue(Master, 1 + CInt(Prop.GetValue(Master))) 'end incremento contador de alertas - Dim ltl = DirectCast(Master.FindControl("LtlMNotificaciones"), Literal) + Dim ltl As Literal = DirectCast(Master.FindControl("LtlMNotificaciones"), Literal) ltl.Text = String.Format(" {0} {1}", ltl.Text, Nota) End Sub Public Sub Confirmacion(Mensaje As String, Tipo As String, FuncionOK As String, FuncionCancel As String) @@ -4628,7 +4628,7 @@ Public Class ClsPaginas lrds.Add(rds) ImprimirPDF(RutaReporte, lrds, Parametros, NombreArchivo, Formato, MR, Content_Disposition) End Sub - Public Sub ImprimirPDFStimulsoft(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 = "Datos", Optional Content_Disposition As String = "attachment") + Public Sub ImprimirPDFStimul(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 = "Datos", Optional Content_Disposition As String = "attachment") Dim lrds As New List(Of ReportDataSource) Dim rds As New ReportDataSource rds.Name = RDSName @@ -4638,7 +4638,7 @@ Public Class ClsPaginas If Formato.ToLower() = "excel" Then Extension = "xlsx" End If - ImprimirbytesPDF(StreamBytesStimulsoft("Facturas", RutaReporte, lrds, Parametros, NombreArchivo:=NombreArchivo, Formato:=Formato), NombreArchivo, Formato, Content_Disposition:=Content_Disposition, Extension:=Extension) + ImprimirbytesPDF(StreamBytesStimul("Facturas", RutaReporte, lrds, Parametros, NombreArchivo:=NombreArchivo, Formato:=Formato), NombreArchivo, Formato, Content_Disposition:=Content_Disposition, Extension:=Extension) End Sub Public Sub ImprimirPDFMultiDS(RutaReporte As String, lrds As List(Of ReportDataSource), 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) ImprimirPDF(RutaReporte, lrds, Parametros, NombreArchivo, Formato, MR) @@ -5110,7 +5110,7 @@ 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, Optional SubReportData As Modelos.MSubReportData = Nothing, Optional UsarStimulsoft As Boolean = False) As Byte() + Public Function PdfFactura(ByRef Vta As Modelos.Factura, Optional AplicaPagare As String = "0", Optional Guardar As Boolean = True, Optional SubReportData As Modelos.MSubReportData = Nothing, Optional UsarStimul As Boolean = False) As Byte() Dim retorno As Byte() = Nothing ' Dim ObjVentas As New ClsVentas 'DATOS GENERALES @@ -5947,7 +5947,7 @@ Public Class ClsPaginas lrds.Add(rds3) Dim rds4 As New ReportDataSource With {.Name = "DataSet4", .Value = If(Vta.DtDocumentosRelacionados IsNot Nothing, Vta.DtDocumentosRelacionados, New DataTable)} ' sino esta creado el objeto, lo creamos, para que no truene el reporte lrds.Add(rds4) - If UsuarioActual.Empresa.Funcionalidad(707) = "1" OrElse UsarStimulsoft Then + If UsuarioActual.Empresa.Funcionalidad(707) = "1" OrElse UsarStimul Then If Vta.Cliente.CodigoRegimenFiscal.ToString.Length > 0 Then params.Add(New ReportParameter("ClienteRegimenFiscal", $"{Vta.Cliente.CodigoRegimenFiscal}-{Vta.Cliente.RegimenFiscal}")) End If @@ -5993,11 +5993,11 @@ Public Class ClsPaginas If UsuarioActual.Empresa.Funcionalidad(707) = "1" Then Dim ArchivoStimulsfot As New System.IO.FileInfo(RutaFormato.Replace(".rdlc", ".mrt")) If ArchivoStimulsfot.Exists Then - UsarStimulsoft = True + UsarStimul = True params.Add(New ReportParameter("RegimenFiscalEmpresa", String.Format("{0} - {1}", UsuarioActual.Empresa.CodigoRegimenFiscal, UsuarioActual.Empresa.RegimenFiscal))) End If End If - If Not UsarStimulsoft Then + If Not UsarStimul Then Dim Archivo As New System.IO.FileInfo(RutaFormato) If Archivo.Exists Then @@ -6029,7 +6029,7 @@ Public Class ClsPaginas End If Else RutaFormato = RutaFormato.Replace(".rdlc", ".mrt") - retorno = StreamBytesStimulsoft("Facturas", RutaFormato, lrds, params, NombreArchivo:=NombreArchivo, Formato:="PDF") + retorno = StreamBytesStimul("Facturas", RutaFormato, lrds, params, NombreArchivo:=NombreArchivo, Formato:="PDF") If UsuarioActual.Empresa.Funcionalidad(707) = "1" Then Dim ArchivoPDF As New System.IO.FileInfo(String.Format("{0}PDF\{1}\{2}.pdf", UsuarioActual.Empresa.Ruta, Vta.TipoDocto, Vta.SerieFolio)) If Guardar Then @@ -6057,7 +6057,7 @@ Public Class ClsPaginas End Try Return retorno End Function - Protected Function StreamBytesStimulsoft(Opcion As String, RutaReporte As String, DataSource As List(Of ReportDataSource), Parametros As List(Of ReportParameter), Optional NombreArchivo As String = "Reporte", Optional Formato As String = "PDF", Optional NombreDataSource As String = "Datos") As Byte() + Protected Function StreamBytesStimul(Opcion As String, RutaReporte As String, DataSource As List(Of ReportDataSource), Parametros As List(Of ReportParameter), Optional NombreArchivo As String = "Reporte", Optional Formato As String = "PDF", Optional NombreDataSource As String = "Datos") As Byte() 'limpio ReportViwer Dim sw As Stopwatch = Stopwatch.StartNew() @@ -6119,12 +6119,12 @@ Public Class ClsPaginas New JProperty("parametros", paramsArray), New JProperty("dataSource", dataSourceArray) ) - Dim data = New StringContent(payload.ToString(), Encoding.UTF8, "application/json") - Using httpClient = New HttpClient() - Using request = New HttpRequestMessage(HttpMethod.Post, Url) + Dim data As New StringContent(payload.ToString(), Encoding.UTF8, "application/json") + Using httpClient As New HttpClient() + Using request As New HttpRequestMessage(HttpMethod.Post, Url) 'request.Headers.Add("ADSToken", Encripta(String.Format("CVEEMPRESA={0}&TICKS={1}&CVEUSUARIO=100", CveEmpresa, DateTime.UtcNow.Ticks))) request.Content = New StringContent(payload.ToString(), Encoding.UTF8, "application/json") - Dim response = httpClient.SendAsync(request).Result + Dim response As HttpResponseMessage = httpClient.SendAsync(request).Result If response.StatusCode = Net.HttpStatusCode.OK Then Bytes = response.Content.ReadAsByteArrayAsync().Result End If diff --git a/App_Code/Modelos.vb b/App_Code/Modelos.vb index 7860b5459..90eb33622 100644 --- a/App_Code/Modelos.vb +++ b/App_Code/Modelos.vb @@ -7115,7 +7115,7 @@ Namespace Modelos Public Property CvePAC As Integer Public Property CveAnticipo As Integer Public Property RemisionesLista As List(Of Integer) - Public Property CveAlmacen As Integer + Public Property CveAlmacen As Integer = -1 Public Property GenerarSalidaAlmacen As Boolean = False Public Property CveConceptoMovimiento As Integer Public Property MovimientoObservaciones As String @@ -7323,7 +7323,7 @@ Namespace Modelos Public Property TipoCambioDolares As Decimal Public Property ConvertirPesos As Boolean Public Property ConvertirDolares As Boolean - Public Property FormaPago As Integer + Public Property FormaPago As Integer = 0 Public ReadOnly Property FormaPagoText As String Get @@ -7338,7 +7338,7 @@ Namespace Modelos End Get End Property - Public Property CondicionesPago As Integer + Public Property CondicionesPago As Integer = 0 ' 0 - Contado, 1 - Credito (CHECAR) Public ReadOnly Property CondicionesPagoText As String Get @@ -7589,10 +7589,10 @@ Namespace Modelos Public Property NumeroContrato As String = "" Public Property PedidoContrato As String = "" Public Property OrdenCompra As String = "" - Public Property CveMetodoPago As Integer + Public Property CveMetodoPago As Integer = 0 Public Property MetodoPago As String = "" Public Property ClaveMetodoPagoSAT As String = "" - Public Property CveMetodoPago33 As Integer + Public Property CveMetodoPago33 As Integer = 1 Public Property MetodoPago33 As String = "" Public Property CveFormaPago33 As Integer Public Property MetodoPagoSAT33 As String = "" diff --git a/App_Code/Timbrado.vb b/App_Code/Timbrado.vb index c99190c6a..b3f1d81d6 100644 --- a/App_Code/Timbrado.vb +++ b/App_Code/Timbrado.vb @@ -252,255 +252,6 @@ Public Class Timbrado MsgCancelacion.AppendFormat("CvePAC:{0}", CvePACCancelacion) Select Case CvePACCancelacion - Case 1 - MsgCancelacion.AppendFormat("1.1") - Try - Dim CFDi As New ClbNegBICFDv3_2.ClsNegEDI - Dim Respuesta As New ClbNegBICFDv3_2.ClsNegRespuesta - Respuesta = CFDi.CancelaCFdi(Empresa.BIUsuario, Empresa.BIContraseña, Empresa.Ruta & "Certificados\" & Empresa.ArchivoPfx, Empresa.ContraseñaKey, Empresa.RFC, FolioFiscal, "http://portalbiinform.com.mx/srvCFDi/service1.asmx") - - If Respuesta IsNot Nothing AndAlso Respuesta.SelloSAT <> "" Then - Dim xml64 As String = "" - Dim myXml As String = Respuesta.SelloSAT - Dim resp As XElement = XElement.Parse(myXml) - For Each elem As XElement In resp.Descendants - If elem.Name = "xmlBase64" Then xml64 = elem.Value - Next - - 'If Respuesta.UUDI.Contiene("0", "201", "202") Then - Dim xmlDoc As New System.Xml.XmlDocument() - xmlDoc.LoadXml(If(xml64 = "", Respuesta.SelloSAT, Encoding.UTF8.GetString(Convert.FromBase64String(xml64)))) - Dim AcuseChild = xmlDoc.ChildNodes.Cast(Of XmlNode).Where(Function(a) a.Name.Equals("Acuse", StringComparison.CurrentCultureIgnoreCase)).FirstOrDefault() - - Dim FoliosChild = AcuseChild.ChildNodes.Cast(Of XmlNode).Where(Function(a) a.LocalName.Equals("Folios", StringComparison.CurrentCultureIgnoreCase)).FirstOrDefault() - Dim SignatureChild = AcuseChild.ChildNodes.Cast(Of XmlNode).Where(Function(a) a.LocalName.Equals("Signature", StringComparison.CurrentCultureIgnoreCase)).FirstOrDefault() - - Dim prefixFol As String = FoliosChild.Prefix - If prefixFol <> "" Then prefixFol = $"{prefixFol}:" 'se le agregan los ":" si tiene prefijo - - CancelacionState = xmlDoc.GetElementsByTagName($"{prefixFol}EstatusUUID")(0).InnerText.ToEntero - 'verificación basada en el resultado del xml. - If CancelacionState.Contiene(201, 202) Then - - Dim prefixSig = SignatureChild.Prefix - If prefixSig <> "" Then prefixSig = $"{prefixSig}:" 'se le agregan los ":" si tiene prefijo - Dim SignatureValue = xmlDoc.GetElementsByTagName($"{prefixSig}SignatureValue") - CancelacionAcuse = If(SignatureValue.Count < 1, SignatureValue(0).InnerText, SignatureValue(0).InnerText) - Try - CancelacionFecha = AcuseChild.Attributes("Fecha").Value.ToDate - Catch ex As Exception - CancelacionFecha = xmlDoc.GetElementsByTagName("CancelaCFDResult")(0).Attributes("Fecha").Value.ToDate - End Try - - Retorno.Verificado = True - Retorno.CancelacionFecha = CancelacionFecha - Retorno.CancelacionAcuse = CancelacionAcuse - End If - - 'End If - - Else - Me.GuardaLog(CFDi.MsgError) - End If - Respuesta = Nothing - CFDi = Nothing - Catch ex As Exception - GuardaLog($"{ex.Message}") - End Try - - Case 2 - MsgCancelacion.AppendFormat("2.1") - Dim ArchivoLLave As String = $"{Empresa.Ruta}Certificados\{Empresa.ArchivoKey}" - Dim ArchivoCertificado As String = $"{Empresa.Ruta}Certificados\{Empresa.ArchivoCer}" - Dim UsuarioServicio As String = If(CvePACCancelacion = 2, Empresa.RFC, "rene.molina@adsistemas.mx") - Dim ClaveServicio As String = If(CvePACCancelacion = 2, Empresa.RFC.ToLower, "rene2018") - Dim Clave As String = Empresa.ContraseñaKey - Dim UrlServicio As String = "" ' Produccion - Select Case CvePACCancelacion - Case 2 - UrlServicio = "http://generacfdi.com.mx/rvltimbrado/service1.asmx?WSDL" - Case 4 - UrlServicio = "http://192.168.0.2:8080/ADSistemas/Timbrado.asmx?WSDL" - End Select - - If Not Empresa.FacturaProduccion Then - ArchivoLLave = $"{Empresa.Ruta}Certificados\CSD01_AAA010101AAA.key" - ArchivoCertificado = $"{Empresa.Ruta}Certificados\CSD01_AAA010101AAA.cer" - Select Case CvePACCancelacion - Case 2 - UsuarioServicio = "fgomez" - ClaveServicio = "12121212" - UrlServicio = "http://generacfdi.com.mx/rvltimbrado/service1.asmx?WSDL" - Case 4 - UsuarioServicio = "UserTest" - ClaveServicio = "1234567890" - UrlServicio = "http://192.168.0.2:8080/ADSistemas/Timbrado.asmx?WSDL" - End Select - End If - -#Region "Valida" - If Not File.Exists(ArchivoCertificado) Then - Alert("El archivo de certificado no existe", TipoMensaje.MsgError) - Retorno.Verificado = False - End If - If Not File.Exists(ArchivoLLave) Then - Alert("El archivo de llave privada no existe", TipoMensaje.MsgError) - Retorno.Verificado = False - End If - If Empresa.ContraseñaKey = "" Then - Alert("La clave no puede ser vacía", TipoMensaje.MsgError) - Retorno.Verificado = False - End If -#End Region - -#Region "Variables" - Dim llaveByte As Byte(), certByte As Byte() - Dim llaveBase64 As String = "", certBase64 As String = "" - Dim cfdi As New RVCFDI.GeneraCFDI() - Dim complemento As String = "" - Dim complementoConcepto As String = "" - -#End Region - -#Region "Verifica" - Try - llaveByte = System.IO.File.ReadAllBytes(ArchivoLLave) - llaveBase64 = Convert.ToBase64String(llaveByte) - Catch ex As Exception - Alert($"Error al leer la llave privada: {ex.Message}", TipoMensaje.MsgError) - Retorno.Verificado = False - End Try - - - Try - certByte = System.IO.File.ReadAllBytes(ArchivoCertificado) - certBase64 = Convert.ToBase64String(certByte) - Catch ex As Exception - Alert($"Error al leer el certificado: {ex.Message}", TipoMensaje.MsgError) - Retorno.Verificado = False - End Try -#End Region - - - Dim base64 As String - Dim ObjCancelacion As New RVCancelacion.Cancelacion() - - Dim xmlCancelacion As String = ObjCancelacion.crearXMLCancelacion(certBase64, llaveBase64, Clave, FolioFiscal) - If (ObjCancelacion.MensajeDeError = "") Then - - base64 = CodificarABase64(xmlCancelacion) - - Dim objWS As RVCFDI.WSGeneraCFDI.Service = Nothing - Dim objAuthSoapHD As RVCFDI.WSGeneraCFDI.AuthSoapHd - Dim objResponse As RVCFDI.WSGeneraCFDI.StructCfd - Dim objCancel As RVCFDI.WSGeneraCFDI.StructCancel - - Try - - - 'Variables de consumo de servicio web - objWS = New RVCFDI.WSGeneraCFDI.Service() - objAuthSoapHD = New RVCFDI.WSGeneraCFDI.AuthSoapHd() - 'creacion de Autorizacion de cabecera Soap - objCancel = New RVCFDI.WSGeneraCFDI.StructCancel() - 'Configura el servicio - objWS.Url = UrlServicio - - objAuthSoapHD.strPassword = ClaveServicio - objAuthSoapHD.strUserName = UsuarioServicio - 'Coloca la cabecera - objWS.AuthSoapHdValue = objAuthSoapHD - 'Obtiene el resultado - objCancel = objWS.CancelTicket(base64) - 'Valida la respuesta - ''Codigos del SAT - ''201 - El folio se ha cancelado con éxito. - ''202 - El CFDI ya había sido cancelado previamente. - ''203 - UUID no corresponde al emisor. - ''204 - El CFDI no aplica para cancelación. - ''205 - El UUID no existe o no ha sido procesado por el SAT. - ''402 - El Contribuyente no se encuentra el la LCO o la validez de obligaciones se reporta como negativa. - CancelacionState = objCancel.state - CancelacionMensaje = objCancel.Descripcion - - If objCancel.state.Contiene(0, 201, 202) Then - CancelacionFecha = Now - - Select Case CvePACCancelacion - Case 2 - Dim solicitud As New WSRVConsultas.Service1SoapClient - Dim resp As New WSRVConsultas.resp_Acuse() - resp = solicitud.ConsultarAcuseCancelacion(RFCEmisor, UsuarioServicio, ClaveServicio, FolioFiscal, CancelacionFecha.ToShortDateString) - CancelacionMensaje = objCancel.Descripcion - - If (resp.Estado = 0) Then - - Dim xmlDoc As New System.Xml.XmlDocument() - xmlDoc.LoadXml(Encoding.UTF8.GetString(Convert.FromBase64String(resp.Xml))) - Dim xpath As String = "Acuse/Folios" - Dim nodes As XmlNodeList = xmlDoc.SelectNodes(xpath) - CancelacionState = xmlDoc.GetElementsByTagName("EstatusUUID")(0).InnerText.ToEntero - - xpath = "Acuse/Signature" - nodes = xmlDoc.SelectNodes(xpath) - - CancelacionAcuse = xmlDoc.GetElementsByTagName("SignatureValue")(0).InnerText - CancelacionFecha = xmlDoc.SelectSingleNode("Acuse").Attributes("Fecha").Value.ToDate - Retorno.Verificado = True - Retorno.CancelacionFecha = CancelacionFecha - Retorno.CancelacionAcuse = CancelacionAcuse - Else - CancelacionAcuse = resp.MensajeDeError - Retorno.Verificado = True - Retorno.CancelacionFecha = CancelacionFecha - Retorno.CancelacionAcuse = CancelacionAcuse - End If - solicitud = Nothing - Case 4 - - Dim solicitud As New WSGF.Service1SoapClient - Dim resp As New WSGF.StructXml() - resp = solicitud.GetAcuse(RFCEmisor, UsuarioServicio, ClaveServicio, FolioFiscal) - CancelacionMensaje = objCancel.Descripcion - - If (resp.Estado = 0) Then - - Dim xmlDoc As New System.Xml.XmlDocument() - xmlDoc.LoadXml(Encoding.UTF8.GetString(Convert.FromBase64String(resp.CfdiB64))) - Dim xpath As String = "Acuse/Folios" - Dim nodes As XmlNodeList = xmlDoc.SelectNodes(xpath) - CancelacionState = xmlDoc.GetElementsByTagName("EstatusUUID")(0).InnerText.ToEntero - - xpath = "Acuse/Signature" - nodes = xmlDoc.SelectNodes(xpath) - - CancelacionAcuse = xmlDoc.GetElementsByTagName("SignatureValue")(0).InnerText - CancelacionFecha = xmlDoc.SelectSingleNode("Acuse").Attributes("Fecha").Value.ToDate - Retorno.Verificado = True - Retorno.CancelacionFecha = CancelacionFecha - Retorno.CancelacionAcuse = CancelacionAcuse - Else - CancelacionAcuse = resp.Descripcion - Retorno.Verificado = True - Retorno.CancelacionAcuse = CancelacionAcuse - End If - solicitud = Nothing - End Select - - - End If - Catch ex As Exception - CancelacionMensaje += $" | ex: {ex}" - Retorno.Verificado = False - End Try - - 'Libera memoria - objWS.Dispose() - objResponse = Nothing - objAuthSoapHD = Nothing - GC.Collect() - End If - Case 3 MsgCancelacion.AppendFormat("3.1") @@ -522,7 +273,6 @@ Public Class Timbrado AmbienteProductivo = False End If - #Region "Valida" If Not File.Exists(ArchivoCertificado) Then Alert("El archivo de certificado no existe", TipoMensaje.MsgError) @@ -537,7 +287,6 @@ Public Class Timbrado Retorno.Verificado = False End If #End Region - Dim conector As New Profact.TimbraCFDI40.Conector(AmbienteProductivo) If Not AmbienteProductivo Then @@ -545,16 +294,17 @@ Public Class Timbrado Else conector.EstableceCredenciales("vSGxMFWnNRy/nDoowxqrqw==|Sia123654") End If - MsgCancelacion.AppendFormat("-3.2") - Dim resultadoCancelacion As Profact.TimbraCFDI.ResultadoCancelacion - resultadoCancelacion = conector.CancelaCFDI40(RFCEmisor, FolioFiscal, CodigoSATMotivoCancelacion, FolioSustitucion) - CancelacionFecha = Now Dim resp As Profact.TimbraCFDI.ResultadoConsulta + MsgCancelacion.AppendFormat("-3.2") + Dim resultadoCancelacion As Profact.TimbraCFDI.ResultadoCancelacionAck + resultadoCancelacion = conector.CancelaCFDIAck40(RFCEmisor, FolioFiscal, CodigoSATMotivoCancelacion, FolioSustitucion) + CancelacionFecha = Now + resp = conector.ObtieneCFDI(RFCEmisor, FolioFiscal) MsgCancelacion.AppendFormat("-3.3") 'VERIFICA SI SE CANCELO O FUE CANCELADO PREVIAMENTE (CODIGO DE ERROR "330279") - If resultadoCancelacion.Exitoso OrElse resultadoCancelacion.NumeroError.Contiene("202", "330279") Then + If resultadoCancelacion.Exitoso OrElse resultadoCancelacion.NumeroError.Contiene("202", "330279", "330280") Then MsgCancelacion.AppendFormat("-3.4") CancelacionMensaje = resultadoCancelacion.Descripcion Retorno.CancelacionFecha = CancelacionFecha @@ -563,7 +313,7 @@ Public Class Timbrado MsgCancelacion.AppendFormat("-3.4.1") Try - xmlDoc.LoadXml(Encoding.UTF8.GetString(Convert.FromBase64String(resp.Xml))) + xmlDoc.LoadXml(Encoding.UTF8.GetString(Convert.FromBase64String(resultadoCancelacion.Xml))) Catch ex As Exception If resp.NumeroError.ToEntero() > 0 Then CancelacionMensaje = resp.Descripcion @@ -592,13 +342,11 @@ Public Class Timbrado Else Retorno.Verificado = False End If - - Else MsgCancelacion.AppendFormat("-3.5") CancelacionAcuse = resp.NumeroError CancelacionMensaje = resultadoCancelacion.Descripcion - Retorno.Verificado = True + Retorno.Verificado = False End If Case 4 @@ -610,7 +358,6 @@ Public Class Timbrado Dim Clave As String = Empresa.ContraseñaKey Dim UrlServicio As String = "" ' Produccion - 'UrlServicio = "http://alterno.gofac.com.mx/cfdi/timbrado.asmx?WSDL" ' alterno UrlServicio = "https://cfdi.gofac.com.mx/timbrado.asmx?WSDL" If Not Empresa.FacturaProduccion Then @@ -620,9 +367,7 @@ Public Class Timbrado UsuarioServicio = "UserTest" ClaveServicio = "1234567890" 'UrlServicio = "http://juancalderon-001-site6.ftempurl.com/cancelacion.asmx?WSDL" - End If - #Region "Valida" If Not File.Exists(ArchivoCertificado) Then Alert("El archivo de certificado no existe", TipoMensaje.MsgError) @@ -644,8 +389,6 @@ Public Class Timbrado Dim objCan As New GoFac.GoCfdi() Dim complemento As String = "" Dim complementoConcepto As String = "" - - #End Region #Region "Verifica" @@ -656,8 +399,6 @@ Public Class Timbrado Alert($"Error al leer la llave privada: {ex.Message}", TipoMensaje.MsgError) Retorno.Verificado = False End Try - - Try certByte = System.IO.File.ReadAllBytes(ArchivoCertificado) certBase64 = Convert.ToBase64String(certByte) @@ -759,7 +500,7 @@ Public Class Timbrado If result IsNot Nothing Then If result.statusOk Then - Dim cancelacion = result.cancelaciones.First() + Dim cancelacion As PADECancelacion = result.cancelaciones.First() If cancelacion IsNot Nothing Then 'EN PROCESO, CANCELABLE SIN ACEPTACION,CANCEALDO PREVIAMENTE If cancelacion.codigo.Contiene("96", "201", "202") Then @@ -1549,7 +1290,7 @@ Public Class Timbrado Dim y As Integer = 0 - For Each Tras In ObjCFDITimbre.Traslados + For Each Tras As CFDITraslados In ObjCFDITimbre.Traslados comprobante.Impuestos.Traslados(y) = New Profact.TimbraCFDI40.ComprobanteImpuestosTraslado() comprobante.Impuestos.Traslados(y).Base = Tras.Base.RoundSQL(NumDecimalesImporte) comprobante.Impuestos.Traslados(y).Impuesto = Tras.Impuesto @@ -1588,7 +1329,7 @@ Public Class Timbrado If ObjCFDITimbre.RetencionesLocales.Sum(Function(x) x.Importe) > 0 Then - Dim Imp = New Profact.TimbraCFDI.Complementos.ImpuestoLocal.ImpuestosLocales() + Dim Imp As New Profact.TimbraCFDI.Complementos.ImpuestoLocal.ImpuestosLocales() Imp.version = "1.0" Imp.TotaldeRetenciones = ObjCFDITimbre.RetencionesLocales.Sum(Function(x) x.Importe).FormatoNumero().ToDecimal Imp.TotaldeTraslados = 0 @@ -2064,7 +1805,7 @@ Public Class Timbrado Dim j As Integer = 0 ComCartaPorte.Mercancias.Mercancia(i).CantidadTransporta = New ProfactCartaPorte.CartaPorteMercanciasMercanciaCantidadTransporta(Carta.Mercancias.Mercancias.Count - 1) {} - For Each transp In concep.MercanciasCantidadTransporta + For Each transp As CFDICartaPorteMercanciaTransporta In concep.MercanciasCantidadTransporta ComCartaPorte.Mercancias.Mercancia(i).CantidadTransporta(j) = New ProfactCartaPorte.CartaPorteMercanciasMercanciaCantidadTransporta ComCartaPorte.Mercancias.Mercancia(i).CantidadTransporta(j).Cantidad = transp.Cantidad ComCartaPorte.Mercancias.Mercancia(i).CantidadTransporta(j).IDOrigen = transp.IDOrigen @@ -2484,7 +2225,7 @@ Public Class Timbrado If Not String.IsNullOrEmpty(resultadoTimbre.Detalle) Then Try - Dim Resultados = Newtonsoft.Json.Linq.JArray.Parse(resultadoTimbre.Detalle) + Dim Resultados As JArray = Newtonsoft.Json.Linq.JArray.Parse(resultadoTimbre.Detalle) If Resultados.Count > 0 Then If resultadoTimbre.Descripcion.Contains("RFC del receptor no existe") Then @@ -2620,13 +2361,13 @@ Public Class Timbrado If ObjCFDITimbre.Retenciones.Sum(Function(x) x.Importe) > 0 Then ''se acumulan los importes - For Each Ret In ObjCFDITimbre.Retenciones + For Each Ret As CFDIRetenciones In ObjCFDITimbre.Retenciones cfdi.Retencion(Ret.Impuesto, Ret.Importe) Next End If ''se acumulan los importes - For Each Tras In ObjCFDITimbre.Traslados + For Each Tras As CFDITraslados In ObjCFDITimbre.Traslados cfdi.Traslado(Tras.Base, Tras.Impuesto, Tras.TipoFactor, Tras.TasaOCuota, Tras.Importe) Next #End Region @@ -2791,7 +2532,7 @@ Public Class Timbrado For Each concep As CFDICartaPorteMercancia In Carta.Mercancias.Mercancias If concep.ValorMercancia <= 0 Then concep.Moneda = "" cfdi.CartaPorteMercancia(concep.BienesTransp, concep.ClaveSTCC, concep.Descripción, concep.Cantidad, concep.ClaveUnidad, concep.Unidad, concep.Dimensiones, concep.MaterialPeligroso, concep.ClaveMaterialPeligroso, If(concep.ClaveMaterialPeligroso <> "", concep.Embalaje, ""), If(concep.ClaveMaterialPeligroso <> "", concep.DescripEmbalaje, ""), concep.PesoenKg, concep.ValorMercancia, concep.Moneda, concep.FraccionArrancelaria, concep.UUIDComercioExt) - For Each transp In concep.MercanciasCantidadTransporta + For Each transp As CFDICartaPorteMercanciaTransporta In concep.MercanciasCantidadTransporta cfdi.CartaPorteCantidadTransporta(transp.Cantidad, transp.IDOrigen, transp.IDDestino, transp.CvesTransportes) Next Next @@ -3380,11 +3121,11 @@ Public Class Timbrado #Region "Timbra" If RespGeneracionXML = "" Then 'OBTENER EL XML DE LA VARIABLE PRIVADA "_xml" YA QUE NO ES ACCESIBLE POR MEDIO DE LA PROPIEDAD "XML" ANTES DE TIMBRAR - Dim valorXML = "" + Dim valorXML As String = "" Try - Dim tipo = GetType(GoFac.Cfdi4) - Dim info = tipo.GetField("_xml", BindingFlags.NonPublic Or BindingFlags.Instance) + Dim tipo As Type = GetType(GoFac.Cfdi4) + Dim info As FieldInfo = tipo.GetField("_xml", BindingFlags.NonPublic Or BindingFlags.Instance) valorXML = info?.GetValue(cfdi).ToString() Catch ex As Exception valorXML = ""