Files
SIG/Ashx/SIGPolizaVirtual.ashx
2023-10-09 11:55:07 -07:00

919 lines
48 KiB
Plaintext

<%@ WebHandler Language="VB" Class="SIGPolizaVirtual" %>
Imports Fluent
Imports System
Imports System.Web
Imports System.Net
Imports System.Net.Http
Imports System.Web.Http
Imports System.Data
Imports Newtonsoft.Json
Imports Newtonsoft.Json.Linq
Imports Extensiones
Imports System.IO
Imports System.Runtime.CompilerServices
Imports System.Xml
Imports System.Xml.Serialization
Imports System.Linq
Public Class SIGPolizaVirtual : Implements IHttpHandler, IRequiresSessionState
Protected ReadOnly Property User As String = "cslth.2809@jcilink.com"
Protected ReadOnly Property Password As String = "ff31580a95f36b51ad27f970428b77a5a9245076"
#Region "U S U A R I O - T O K E N"
Private Function ValidaUsuarioSistema(CveEmpresa As Integer, Optional CveUsuario As Integer = 100) As Usuario
Dim UsuarioToken As Usuario = Nothing
Dim ObjUsuarios As New ClsSisUsuarios
If ObjUsuarios.GetUsuarios(CveUsuario) Then
If ObjUsuarios.DtResultados.Rows.Count > 0 Then
Dim Usuario = ObjUsuarios.DtResultados.Rows(0)("Usuario").ToString()
Dim Contrasenia = ObjUsuarios.DtResultados.Rows(0)("Contraseña").ToString()
UsuarioToken = ObjUsuarios.ValidaUsuario(Usuario, Contrasenia, IMEI, CveEmpresa)
UsuarioToken.CveEmpresa = CveEmpresa
CreaObjetoEmpresa(UsuarioToken)
End If
End If
ObjUsuarios.Dispose()
Return UsuarioToken
End Function
Private Sub CreaObjetoEmpresa(ByRef UsuarioToken As Usuario)
Dim ObjEmpresa As New ClsSisEmpresas()
If ObjEmpresa.GetEmpresas(UsuarioToken.CveEmpresa, "-1", "-1", "-1", "-1") Then
If ObjEmpresa.GetEmpresasFuncionalidades(UsuarioToken.CveEmpresa) Then
Dim dttmp As Data.DataTable = ObjEmpresa.DtResultados
Dim EmpresasFuncionalidades As New HybridDictionary
For Each Row As Data.DataRow In dttmp.Rows
EmpresasFuncionalidades.Add(Convert.ToInt32(Row("CveFuncionalidad")), Row("Valor").ToString)
Next
ObjEmpresa.Empresa.SetFuncionalidades(EmpresasFuncionalidades)
End If
UsuarioToken.Empresa = ObjEmpresa.Empresa
End If
ObjEmpresa.Dispose()
End Sub
#End Region
Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
context.Response.ContentType = "application/xml"
Dim UsuarioActual = ValidaUsuarioSistema(1, 100)
'Dim ObjFactura As New Modelos.Factura(usuario, 898028, 140)
CancelarFacturaPADE(context, UsuarioActual)
End Sub
Private Sub TimbrarFacturaPADE(ByVal context As HttpContext, UsuarioActual As Usuario)
Dim UsuarioServicio As String = "rene.molina@adssistemas.mx"
Dim ClaveServicio As String = "Facturacion2021#"
Dim RutaArchivo As String = String.Format("{0}XML\{1}\", UsuarioActual.Empresa.Ruta, "Ing")
Dim NombreArchivoXML As String = "test"
If Not Directory.Exists(RutaArchivo) Then Directory.CreateDirectory(RutaArchivo)
Dim EmisorRFC As String = "ZUÑ920208KL4"
Dim ArchivoLLave As String = $"{UsuarioActual.Empresa.Ruta}Certificados\CSD01_ZUÑ920208KL4.key"
Dim ArchivoCertificado As String = $"{UsuarioActual.Empresa.Ruta}Certificados\CSD01_ZUÑ920208KL4.cer"
Dim Clave = "12345678a"
Dim TimbraProduccion = False
If Not File.Exists(ArchivoCertificado) Then
context.Response.Write("El archivo de llave privada no existe")
Exit Sub
End If
If Not File.Exists(ArchivoLLave) Then
context.Response.Write("El archivo de llave privada no existe")
Exit Sub
End If
If UsuarioActual.Empresa.ContraseñaKey = "" Then
context.Response.Write("La clave no puede ser vacía")
Exit Sub
End If
Dim llaveByte As Byte(), certByte As Byte()
Dim llaveBase64 As String = "", certBase64 As String = ""
Dim cfdi As New GoFac.GoCfdi()
Dim complemento As String = ""
Dim complementoConcepto As String = ""
Try
llaveByte = System.IO.File.ReadAllBytes(ArchivoLLave)
llaveBase64 = Convert.ToBase64String(llaveByte)
Catch ex As Exception
context.Response.Write($"Error al leer la llave privada: {ex.Message}")
Exit Sub
End Try
Try
certByte = System.IO.File.ReadAllBytes(ArchivoCertificado)
certBase64 = Convert.ToBase64String(certByte)
Catch ex As Exception
context.Response.Write($"Error al leer el certificado: {ex.Message}")
Exit Sub
End Try
Dim TokenAuth As String = ToBase64Encode($"{UsuarioServicio}:{ClaveServicio}")
Dim XmlBase64 As String = ToBase64Encode(XMLPrueba)
Dim payload As New JObject(
New JProperty("contrato", "72330711-cac6-4106-8051-cbcda1aef495"),
New JProperty("certBase64", certBase64),
New JProperty("keyBase64", llaveBase64),
New JProperty("keyPass", Clave),
New JProperty("xmlBase64", XmlBase64),
New JProperty("prueba", (Not TimbraProduccion).ToString().ToLower),
New JProperty("opciones", New String(0) {""})
)
Dim Respuesta = EnviarInformacionPADE("https://timbrado.pade.mx/servicio/rest/timbrado/timbrarConCSD", payload.ToString(), TokenAuth)
If Not String.IsNullOrEmpty(Respuesta) Then
Dim result As PADEServicioTimbradoResp = Nothing
Dim serializer As XmlSerializer = New XmlSerializer(GetType(PADEServicioTimbradoResp))
Try
Using reader As TextReader = New StringReader(Respuesta)
result = CType(serializer.Deserialize(reader), PADEServicioTimbradoResp)
End Using
Catch ex As Exception
OnError("Ocurrió un error al obtener los resultados", ex)
End Try
If result IsNot Nothing Then
Dim xmlGuardar = result.xmlBase64.ToBase64Decode()
context.Response.Write(xmlGuardar)
Else
context.Response.Write(Respuesta)
End If
Else
context.Response.Write(Respuesta)
End If
End Sub
Private Sub CancelarFacturaPADE(ByVal context As HttpContext, UsuarioActual As Usuario)
Dim UsuarioServicio As String = "rene.molina@adssistemas.mx"
Dim ClaveServicio As String = "Facturacion2021#"
Dim EmisorRFC As String = "ZUÑ920208KL4"
Dim ArchivoLLave As String = $"{UsuarioActual.Empresa.Ruta}Certificados\CSD01_ZUÑ920208KL4.key"
Dim ArchivoCertificado As String = $"{UsuarioActual.Empresa.Ruta}Certificados\CSD01_ZUÑ920208KL4.cer"
Dim Clave = "12345678a"
Dim TimbraProduccion = False
If Not File.Exists(ArchivoCertificado) Then
context.Response.Write("El archivo de llave privada no existe")
Exit Sub
End If
If Not File.Exists(ArchivoLLave) Then
context.Response.Write("El archivo de llave privada no existe")
Exit Sub
End If
If UsuarioActual.Empresa.ContraseñaKey = "" Then
context.Response.Write("La clave no puede ser vacía")
Exit Sub
End If
Dim llaveByte As Byte(), certByte As Byte()
Dim llaveBase64 As String = "", certBase64 As String = ""
Dim cfdi As New GoFac.GoCfdi()
Dim complemento As String = ""
Dim complementoConcepto As String = ""
Try
llaveByte = System.IO.File.ReadAllBytes(ArchivoLLave)
llaveBase64 = Convert.ToBase64String(llaveByte)
Catch ex As Exception
context.Response.Write($"Error al leer la llave privada: {ex.Message}")
Exit Sub
End Try
Try
certByte = System.IO.File.ReadAllBytes(ArchivoCertificado)
certBase64 = Convert.ToBase64String(certByte)
Catch ex As Exception
context.Response.Write($"Error al leer el certificado: {ex.Message}")
Exit Sub
End Try
Dim TokenAuth As String = ToBase64Encode($"{UsuarioServicio}:{ClaveServicio}")
Dim Contrato As String = "72330711-cac6-4106-8051-cbcda1aef495"
Dim FolioFiscal As String = "9A46AD71-560B-4048-8B40-80ADC57C1CDC"
'Dim Respuesta As String = EnviarInformacionCancelacionPADE("https://timbrado.pade.mx/servicio/rest/cancelacion/cancelar", TokenAuth, Contrato, EmisorRFC, certBase64, llaveBase64, Clave, FolioFiscal)
'context.Response.Write(Respuesta)
Dim Respuesta As String = EnviarInformacionCancelacionPADESOAP("https://timbrado.pade.mx/servicio/Timbrado3.3?wsdl", UsuarioServicio, ClaveServicio, Contrato, EmisorRFC, certBase64, llaveBase64, Clave, FolioFiscal, TimbraProduccion)
If Not String.IsNullOrEmpty(Respuesta) Then
Dim result As PADEServicioCancelacionResp = Nothing
Dim serializer As XmlSerializer = New XmlSerializer(GetType(PADEServicioCancelacionResp))
Try
Using reader As TextReader = New StringReader(Respuesta)
result = CType(serializer.Deserialize(reader), PADEServicioCancelacionResp)
End Using
Catch ex As Exception
OnError("Ocurrió un error al obtener los resultados", ex)
End Try
If result IsNot Nothing Then
context.Response.ContentType = "application/json"
context.Response.Write(JsonConvert.SerializeObject(result))
Else
context.Response.Write(Respuesta)
End If
Else
context.Response.Write(Respuesta)
End If
'Dim arrayFolioFiscal = New String(0) {FolioFiscal}
'Dim arrayOpciones = New List(Of String)
'If Not TimbraProduccion Then
' arrayOpciones.Add("MODO_PRUEBA:1")
'End If
'Dim pade = New PADE33.PadeTimbradoServiceClient()
'Dim Res = pade.cancelarConOpciones(Contrato, UsuarioServicio, ClaveServicio, EmisorRFC, arrayFolioFiscal, certByte, llaveByte, Clave, arrayOpciones.ToArray())
'context.Response.Write(Res)
End Sub
Private Function EnviarInformacionCancelacionPADESOAP(ByVal url As String, UsuarioServicio As String, PassServicio As String, contrato As String, rfcEmisor As String,
certBase64 As String, keyBase64 As String, keyPass As String, arregloUUID As String, TimbraProduccion As Boolean) As String
Dim retorno = ""
Try
Dim request As HttpWebRequest = CType(WebRequest.Create($"{url}"), HttpWebRequest)
'request.Headers.Add("SOAPAction:http://tempuri.org/TestCfd33 ")
request.ContentType = "text/xml;charset=""utf-8"""
request.Accept = "text/xml"
request.Method = "POST"
Dim XMLString As String = $"<Envelope xmlns=""http://schemas.xmlsoap.org/soap/envelope/"">
<Body>
<cancelarConOpciones xmlns=""timbrado.ws.pade.mx"">
<contrato xmlns="""">{contrato}</contrato>
<usuario xmlns="""">{UsuarioServicio}</usuario>
<passwd xmlns="""">{PassServicio}</passwd>
<rfcEmisor xmlns="""">{rfcEmisor}</rfcEmisor>
<arregloUUID xmlns="""">{arregloUUID}</arregloUUID>
<cert xmlns="""">{certBase64}</cert>
<key xmlns="""">{keyBase64}</key>
<keyPass xmlns="""">{keyPass}</keyPass>
<opciones xmlns="""">{If(TimbraProduccion, "", "MODO_PRUEBA:3")}</opciones>
</cancelarConOpciones>
</Body>
</Envelope>"
Dim SOAPReqBody As XmlDocument = New XmlDocument()
SOAPReqBody.LoadXml(XMLString)
Using stream As Stream = request.GetRequestStream()
SOAPReqBody.Save(stream)
End Using
Dim response As String = ""
Using Serviceres As WebResponse = request.GetResponse()
Using rd As StreamReader = New StreamReader(Serviceres.GetResponseStream())
response = rd.ReadToEnd()
End Using
End Using
If Not String.IsNullOrEmpty(response) Then
Dim xmlRetorno = New XmlDocument()
xmlRetorno.LoadXml(response)
Dim elemList As XmlNodeList = xmlRetorno.GetElementsByTagName("return")
If elemList.Count > 0 Then
If elemList(0).ChildNodes.Count > 0 Then
retorno = elemList(0).ChildNodes(0).Value
End If
End If
End If
Catch ex As Exception
retorno = ""
OnError("Ocurrió un error al cancelar", ex)
End Try
Return retorno
End Function
Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
Get
Return False
End Get
End Property
Private Function EnviarInformacionPADE(url As String, payload As String, tokenAuth As String) As String
Dim Retorno As String = "{}"
Try
Using httpClient = New HttpClient()
httpClient.Timeout = New TimeSpan(0, 5, 0)
Using request = New HttpRequestMessage(HttpMethod.Post, New Uri(url))
request.Headers.Add("Authorization", $"Basic {tokenAuth}")
Using content = New StringContent(payload, Encoding.UTF8, "application/json")
request.Content = content
Dim response = httpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead).Result
Retorno = response.Content.ReadAsStringAsync().Result
End Using
End Using
End Using
Catch ex As Exception
OnError("Ocurrió un error al enviar la informacion", ex)
End Try
Return Retorno
End Function
Private Function EnviarInformacionCancelacionPADE(url As String, tokenAuth As String, contrato As String, rfcEmisor As String,
certBase64 As String, keyBase64 As String, keyPass As String, arregloUUID As String) As String
Dim Retorno As String = ""
Try
Dim urlParametros As String = String.Format("contrato={0}&rfcEmisor={1}&certBase64={2}&keyBase64={3}&keyPass={4}&arregloUUID={5}&opciones={6}", contrato, rfcEmisor, certBase64, keyBase64, keyPass, arregloUUID, "MODO_PRUEBA:1")
Dim urlRequest As String = String.Format("{0}?{1}", url, urlParametros)
Using httpClient = New HttpClient()
httpClient.Timeout = New TimeSpan(0, 1, 0)
Using request = New HttpRequestMessage(HttpMethod.Post, New Uri(urlRequest))
request.Headers.Add("Authorization", $"Basic {tokenAuth}")
Dim response = httpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead).Result
Retorno = response.Content.ReadAsStringAsync().Result
'Dim Parametros = New List(Of KeyValuePair(Of String, String))
'Parametros.Add(New KeyValuePair(Of String, String)("contrato", contrato))
'Parametros.Add(New KeyValuePair(Of String, String)("rfcEmisor", rfcEmisor))
'Parametros.Add(New KeyValuePair(Of String, String)("certBase64", certBase64))
'Parametros.Add(New KeyValuePair(Of String, String)("keyBase64", keyBase64))
'Parametros.Add(New KeyValuePair(Of String, String)("keyPass", keyPass))
'Parametros.Add(New KeyValuePair(Of String, String)("arregloUUID", arregloUUID))
'Using content = New FormUrlEncodedContent(Parametros)
' request.Content = content
'End Using
End Using
End Using
Catch ex As Exception
Retorno = ""
OnError("Ocurrió un error al enviar la informacion", ex)
End Try
Return Retorno
End Function
Public Function ToBase64Encode(ByVal plainText As String) As String
Dim plainTextBytes = System.Text.Encoding.UTF8.GetBytes(plainText)
Return System.Convert.ToBase64String(plainTextBytes)
End Function
Public Function ToBase64Decode(ByVal base64EncodedData As String) As String
Dim base64EncodedBytes = System.Convert.FromBase64String(base64EncodedData)
Return System.Text.Encoding.UTF8.GetString(base64EncodedBytes)
End Function
<Serializable(), XmlRoot("servicioTimbrado")>
Public Class PADEServicioTimbradoResp
<XmlElement("id")>
Public Property id As String
<XmlElement("timbradoOk")>
Public Property timbradoOk As Boolean
<XmlElement("contrato")>
Public Property contrato As String
<XmlElement("codigo")>
Public Property codigo As String
<XmlElement("mensaje")>
Public Property mensaje As String
<XmlElement("UUID")>
Public Property UUID As String
<XmlElement("FechaTimbrado")>
Public Property FechaTimbrado As DateTime
<XmlElement("xmlBase64")>
Public Property xmlBase64 As String
End Class
<Serializable(), XmlRoot("servicioCancel")>
Public Class PADEServicioCancelacionResp
<XmlElement("statusOk")>
Public Property statusOk As Boolean
<XmlElement("codigo")>
Public Property codigo As String
<XmlElement("mensaje")>
Public Property mensaje As String
<XmlElement("procesados")>
Public Property procesados As Integer
<XmlElement("cancelados")>
Public Property cancelados As Integer
<XmlArray("cancelaciones")>
<XmlArrayItem("cancelacion")>
Public Property cancelaciones As List(Of PADECancelacion)
End Class
<Serializable(), XmlRoot("cancelacion")>
Public Class PADECancelacion
<XmlElement("uuid")>
Public Property uuid As String
<XmlElement("codigo")>
Public Property codigo As String
<XmlElement("mensaje")>
Public Property mensaje As String
End Class
Public Property XMLPrueba As String = "<?xml version=""1.0"" encoding=""UTF-8""?><cfdi:Comprobante xmlns:cfdi=""http://www.sat.gob.mx/cfd/3"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xsi:schemaLocation=""http://www.sat.gob.mx/cfd/3 http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv33.xsd"" Version=""3.3"" Serie=""HM"" Folio=""1682"" Fecha=""2021-05-20T17:43:32"" Sello=""BdE1N3CwiqU6KKOWT80N6X/9kELGK22bRmfHfXHUaYvOCmOixuAN3a0yyd5Yzf4lD0sVs+OScZ1rgNKhWWyRwAJzw/avfGod2l7LIGbyYLGoUHUPpY3swDgTk+zq29PUbf3500YPf4qkXx3GcKYkIb4TnQPnvFnjE8FvcV+p8wETuvijm5T3HzFKCXG6ePrERIt2PN1NM26p2NIOzMSUksSNUtC6rqEI8G2yIUIMZqQ4bHTo1WdV0UPKBaqjkPLyY8Q1TMFZDbiudE454bUJWjxv6KYicXgfH17HJY91XTncCgwwrwlcPrKK7ea/xPzYumHMurEl5arjfqE6+nI3Fw=="" FormaPago=""01"" NoCertificado=""30001000000400002442"" Certificado=""MIIFuzCCA6OgAwIBAgIUMzAwMDEwMDAwMDA0MDAwMDI0NDIwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWRpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMTkwNjE3MjAxODA2WhcNMjMwNjE3MjAxODA2WjCB4jEnMCUGA1UEAxQeWkFQQVRFUklBIFVSVEFETyDRRVJJIFNBIERFIENWMScwJQYDVQQpFB5aQVBBVEVSSUEgVVJUQURPINFFUkkgU0EgREUgQ1YxJzAlBgNVBAoUHlpBUEFURVJJQSBVUlRBRE8g0UVSSSBTQSBERSBDVjElMCMGA1UELRQcWlXROTIwMjA4S0w0IC8gS0FITzY0MTEwMUIzOTEeMBwGA1UEBRMVIC8gS0FITzY0MTEwMUhOVExLUzA2MR4wHAYDVQQLFBVaYXBhdGVy7WEgVXJ0YWRvINFlcmkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCX4ICuLAA/GYfEdRUMBLolOHKOUTDyw//CQjcj6dmCUWP8Y2UIhbq1JJ5nClsmhg6WThXjYqzRiYSAYagzrtwWri8I7oURIoTDeuxU69UOg1shuCEo89prJfx8ZIGKwB+GedC6dFdKGZLKn4ksSuyfntXmW4rZLup2j24mQx+jpdmcQIGMe6A/2668ZhpYpCw/vwfH8edkS5X41yp/zj6Z9mIySRWaMHm5eT/X0D01l3gX2gJVXY5ebUsKIEmDCP5pmBmyFyJjqYUhYi3+nYARrVPdZ53RPigcoLspXyIBVf2CPansqOYiRIqxLjfsL6B1qGJmpFN1RHd+XF9GzkHzAgMBAAGjHTAbMAwGA1UdEwEB/wQCMAAwCwYDVR0PBAQDAgbAMA0GCSqGSIb3DQEBCwUAA4ICAQAw5nqLkVuaTWX/qnPqWpOlSfrfVF2plqAPu1sdgzU/vZGgZCLxq3cY3Dg02khdsM74A3fYFQGxFFo6zDt5Ru9VySBks2gmbebRuuYKAKHMoi0tNpvI2arOMaiJsq2yzGAox6e+MXhhQ1oV+28HaxjYIWuVSwWAzie+n6VloWXMDDxTg7t9URJ7d8E7ZrPZ2X0+7h6b8sfnOjTljUm+Mt6e6AIl1+lA7Ar4YeJgIOeU/RKSOcvrCGDNtz7kpn0XdsFC/m1xG1bIdhyv0zkRmKvtpVGROsSEHPLBwuTENIkm0Cw2/FQsPrG8S9Yer451Jv0H+heFfJXqVrHv8Azba5OkotK5IlPaHm9voxfhwI1aXHbUS+NwpTHHOeVsvzsC9LQDiLGO3MQLn7VFZebFa84CddwLWf/JTyPYIcg3I/BRDFqbrVNRRDJwVlxIgbU7ZhRIcjiRLFx6UbAd8B2fe+GHgxw/x/6Pop65ca32iGAJgojtXWdD5gZvh6PlhEhWMhIOCvAesE52L4wmIHofAIZjlPRXNaitZ74xDEIpQ9f5X0w/4ltB7OOBYYfu8z9lzCc4M2iSmtq1rvSYxnLI/nvt7D0uYrq82ZeG3kzungcS8qNjufGJeEHNeyDxMXF9rYU4KLxK8KLzA2Ldh7+3zywU/pwXhW/aTS42EViWPbffng=="" CondicionesDePago=""01 - Efectivo"" SubTotal=""100.00"" Moneda=""MXN"" TipoCambio=""1"" Total=""116.00"" TipoDeComprobante=""I"" MetodoPago=""PPD"" LugarExpedicion=""82250""><cfdi:Emisor Rfc=""ZUÑ920208KL4"" Nombre=""Empresa de DEMO"" RegimenFiscal=""601"" /><cfdi:Receptor Rfc=""VOC990129I26"" Nombre=""Cliente Demostracion"" UsoCFDI=""G03"" /><cfdi:Conceptos><cfdi:Concepto ClaveProdServ=""10101902"" NoIdentificacion=""124"" Cantidad=""1.00"" ClaveUnidad=""EA"" Unidad=""PZA"" Descripcion=""ESCOBA "" ValorUnitario=""100.00"" Importe=""100.00""><cfdi:Impuestos><cfdi:Traslados><cfdi:Traslado Base=""100.00"" Impuesto=""002"" TipoFactor=""Tasa"" TasaOCuota=""0.160000"" Importe=""16.00"" /></cfdi:Traslados></cfdi:Impuestos></cfdi:Concepto></cfdi:Conceptos><cfdi:Impuestos TotalImpuestosTrasladados=""16.00""><cfdi:Traslados><cfdi:Traslado Impuesto=""002"" TipoFactor=""Tasa"" TasaOCuota=""0.160000"" Importe=""16.00"" /></cfdi:Traslados></cfdi:Impuestos></cfdi:Comprobante>"
#Region "P O L I Z A - V I R T U A L"
Protected Sub GeneraPolizaVentaWS(ByVal context As HttpContext, ObjFactura As Modelos.Factura)
Dim obj As New MPolizaVentaWS
'DATOS DEL CLIENTE
obj.customer_name = ObjFactura.Cliente.Nombre
obj.customer_last_name1 = ""
obj.customer_last_name2 = ""
obj.customer_birthday = Nothing
obj.customer_phone = ObjFactura.Cliente.Telefono
obj.customer_email = ObjFactura.Cliente.Mail
obj.customer_gender = "03" 'OTRO GENERO
obj.customer_advertising = False
obj.customer_car_brand = "00"
obj.customer_car_model = "00"
obj.customer_car_year = ObjFactura.Fecha.Year
'DATOS DE VENTA
obj.sale_date = ClsPaginas.NowADS()
obj.sale_paidby = "01"
obj.sale_type = "01" 'PISO
obj.sale_type_service = "01" 'PARTICULAR
obj.sale_total = ObjFactura.Total
obj.sale_discount = 0 'ObjFactura.SubTotal
obj.sale_id = GuidGenerator.GenerateTimeBasedGuid().ToString()
'Dim PS = ObjFactura.DtDetalle.Rows(0)
'DATOS DEL PRODUCTO
obj.product_code = "174925"
obj.product_unique_code = "65047187"
obj.product_sale_type = "02" 'AJUSTE
'DATOS DE USADO
obj.used_product = True
obj.used_brand = "01"
obj.used_bci = "25"
obj.used_month = 1
obj.used_year = 2015
obj.used_sale_date = ObjFactura.Fecha
EnviarPolizaVentaWS(context, obj)
End Sub
Protected Sub GeneraPolizaVentaLTHWSD(ByVal context As HttpContext, ObjFactura As Modelos.Factura)
Dim obj As New MPolizaVentaLTHWSD
'DATOS DEL CLIENTE
obj.customer_name = "JOSE ENRIQUE"
obj.customer_last_name1 = "VIZCARA"
obj.customer_last_name2 = "RENDON"
obj.customer_birthday = ClsPaginas.NowADS()
obj.customer_phone = "8186545256"
obj.customer_email = "mail@mail.com"
obj.customer_gender = "02"
obj.customer_advertising = False
obj.customer_car_brand = "02"
obj.customer_car_model = "741"
obj.customer_car_year = 2015
'DATOS DE VENTA
obj.sale_date = ClsPaginas.NowADS()
obj.sale_paidby = "01"
obj.sale_type = "01"
obj.sale_type_service = "01"
obj.sale_discount = 0
obj.sale_id = GuidGenerator.GenerateTimeBasedGuid().ToString()
'DATOS DEL PRODUCTO
obj.product_code = "174925"
obj.product_unique_code = "65047187"
obj.product_sale_type = "01"
'DATOS DE USADO
obj.used_product = True
obj.used_brand = "01"
obj.used_bci = "25"
obj.used_month = 1
obj.used_year = 2015
obj.used_sale_date = ClsPaginas.NowADS()
EnviarPolizaVentaLTHWSD(context, obj)
End Sub
Protected Sub GeneraIndicadores(ByVal context As HttpContext)
Dim obj As New MIndicador(True)
EnviarPolizaIndicadores(context, obj)
End Sub
Protected Sub EnviarPolizaVentaLTHWSD(ByVal context As HttpContext, obj As MPolizaVentaLTHWSD)
Dim Retorno As String = "[]"
Try
Using wc As New HttpClient()
Dim Url = New Uri("http://polizavirtual.com.mx/lthwsd/api/Venta")
Dim Parametros = New List(Of KeyValuePair(Of String, String))
Parametros.Add(New KeyValuePair(Of String, String)("User", User))
Parametros.Add(New KeyValuePair(Of String, String)("password", Password))
Parametros.Add(New KeyValuePair(Of String, String)("customer_name", obj.customer_name))
Parametros.Add(New KeyValuePair(Of String, String)("customer_last_name1", obj.customer_last_name1))
Parametros.Add(New KeyValuePair(Of String, String)("customer_last_name2", obj.customer_last_name1))
Parametros.Add(New KeyValuePair(Of String, String)("customer_birthday", obj.customer_birthday.ToString("yyyy-MM-dd HH:mm:ss")))
Parametros.Add(New KeyValuePair(Of String, String)("customer_phone", obj.customer_phone))
Parametros.Add(New KeyValuePair(Of String, String)("customer_email", obj.customer_email))
Parametros.Add(New KeyValuePair(Of String, String)("customer_gender", obj.customer_gender))
Parametros.Add(New KeyValuePair(Of String, String)("customer_advertising", obj.customer_advertising.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("sale_date", obj.sale_date.ToString("yyyy-MM-dd HH:mm:ss")))
Parametros.Add(New KeyValuePair(Of String, String)("sale_paidby", obj.sale_paidby))
Parametros.Add(New KeyValuePair(Of String, String)("sale_type", obj.sale_type))
Parametros.Add(New KeyValuePair(Of String, String)("sale_type_service", obj.sale_type_service))
Parametros.Add(New KeyValuePair(Of String, String)("product_code", obj.product_code))
Parametros.Add(New KeyValuePair(Of String, String)("product_unique_code", obj.product_unique_code))
Parametros.Add(New KeyValuePair(Of String, String)("product_sale_type", obj.product_sale_type))
Parametros.Add(New KeyValuePair(Of String, String)("used_product", obj.used_product.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("used_brand", obj.used_brand))
Parametros.Add(New KeyValuePair(Of String, String)("used_bci", obj.used_bci))
Parametros.Add(New KeyValuePair(Of String, String)("used_month", obj.used_month.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("used_year", obj.used_year.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("used_sale_date", obj.used_sale_date.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("customer_car_brand", obj.customer_car_brand.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("customer_car_model", obj.customer_car_model.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("customer_car_year", obj.customer_car_year.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("sale_discount", obj.sale_discount.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("sale_id", obj.sale_id.ToString()))
Dim content As New FormUrlEncodedContent(Parametros)
Dim response = wc.PostAsync(Url, content).Result
Retorno = response.Content.ReadAsStringAsync().Result
End Using
Catch ex As Exception
ex.GuardaLog(ex.Message)
End Try
context.Response.Write(Retorno)
End Sub
Protected Sub EnviarPolizaVentaWS(ByVal context As HttpContext, obj As MPolizaVentaWS)
Dim Retorno As String = "[]"
Try
Using wc As New HttpClient()
Dim Url = New Uri("http://polizavirtual.com.mx/webservice/api/Venta")
Dim Parametros = New List(Of KeyValuePair(Of String, String))
Parametros.Add(New KeyValuePair(Of String, String)("User", User))
Parametros.Add(New KeyValuePair(Of String, String)("password", Password))
Parametros.Add(New KeyValuePair(Of String, String)("customer_name", obj.customer_name))
Parametros.Add(New KeyValuePair(Of String, String)("customer_last_name1", obj.customer_last_name1))
Parametros.Add(New KeyValuePair(Of String, String)("customer_last_name2", obj.customer_last_name1))
Parametros.Add(New KeyValuePair(Of String, String)("customer_birthday", obj.customer_birthday.ToString("yyyy-MM-dd HH:mm:ss")))
Parametros.Add(New KeyValuePair(Of String, String)("customer_phone", obj.customer_phone))
Parametros.Add(New KeyValuePair(Of String, String)("customer_email", obj.customer_email))
Parametros.Add(New KeyValuePair(Of String, String)("customer_gender", obj.customer_gender))
Parametros.Add(New KeyValuePair(Of String, String)("customer_advertising", obj.customer_advertising.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("sale_date", obj.sale_date.ToString("yyyy-MM-dd HH:mm:ss")))
Parametros.Add(New KeyValuePair(Of String, String)("sale_paidby", obj.sale_paidby))
Parametros.Add(New KeyValuePair(Of String, String)("sale_type", obj.sale_type))
Parametros.Add(New KeyValuePair(Of String, String)("sale_type_service", obj.sale_type_service))
Parametros.Add(New KeyValuePair(Of String, String)("product_code", obj.product_code))
Parametros.Add(New KeyValuePair(Of String, String)("product_unique_code", obj.product_unique_code))
Parametros.Add(New KeyValuePair(Of String, String)("product_sale_type", obj.product_sale_type))
Parametros.Add(New KeyValuePair(Of String, String)("sale_total", obj.sale_total.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("used_product", obj.used_product.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("used_brand", obj.used_brand))
Parametros.Add(New KeyValuePair(Of String, String)("used_bci", obj.used_bci))
Parametros.Add(New KeyValuePair(Of String, String)("used_month", obj.used_month.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("used_year", obj.used_year.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("used_sale_date", obj.used_sale_date.ToString("yyyy-MM-dd HH:mm:ss")))
Parametros.Add(New KeyValuePair(Of String, String)("customer_car_brand", obj.customer_car_brand.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("customer_car_model", obj.customer_car_model.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("customer_car_year", obj.customer_car_year.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("sale_discount", obj.sale_discount.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("sale_id", obj.sale_id.ToString()))
Dim content As New FormUrlEncodedContent(Parametros)
Dim response = wc.PostAsync(Url, content).Result
Retorno = response.Content.ReadAsStringAsync().Result
End Using
Catch ex As Exception
ex.GuardaLog(ex.Message)
End Try
context.Response.Write(Retorno)
End Sub
Protected Sub EnviarPolizaIndicadores(ByVal context As HttpContext, obj As MIndicador)
Dim Retorno As String = "[]"
Try
Using wc As New HttpClient()
Dim Url = New Uri("http://polizavirtual.com.mx/webservice/api/Indicadores")
Dim Parametros = New List(Of KeyValuePair(Of String, String))
Parametros.Add(New KeyValuePair(Of String, String)("User", User))
Parametros.Add(New KeyValuePair(Of String, String)("password", Password))
Parametros.Add(New KeyValuePair(Of String, String)("v_b_optima", obj.v_b_optima.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("v_b_fullpower", obj.v_b_fullpower.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("v_b_hitec", obj.v_b_hitec.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("v_b_agm", obj.v_b_agm.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("v_b_suv", obj.v_b_suv.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("v_b_taxi", obj.v_b_taxi.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("v_b_america", obj.v_b_america.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("v_b_lth", obj.v_b_lth.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("v_b_cronos", obj.v_b_cronos.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("v_b_diener", obj.v_b_diener.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("v_b_heavyduty", obj.v_b_heavyduty.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("v_m_lth", obj.v_m_lth.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("v_o_filtros", obj.v_o_filtros.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("v_o_lub1", obj.v_o_lub1.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("v_o_lubgalon", obj.v_o_lubgalon.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("v_o_lub5", obj.v_o_lub5.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("v_o_aa", obj.v_o_aa.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("v_o_aaa", obj.v_o_aaa.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("g_b_optima", obj.g_b_optima.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("g_b_fullpower", obj.g_b_fullpower.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("g_b_hitec", obj.g_b_hitec.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("g_b_agm", obj.g_b_agm.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("g_b_suv", obj.g_b_suv.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("g_b_taxi", obj.g_b_taxi.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("g_b_america", obj.g_b_america.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("g_b_lth", obj.g_b_lth.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("g_b_cronos", obj.g_b_cronos.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("g_b_diener", obj.g_b_diener.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("g_b_heavyduty", obj.g_b_heavyduty.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("g_m_lth", obj.g_m_lth.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("a_b_optima", obj.a_b_optima.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("a_b_fullpower", obj.a_b_fullpower.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("a_b_hitec", obj.a_b_hitec.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("a_b_agm", obj.a_b_agm.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("a_b_suv", obj.a_b_suv.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("a_b_taxi", obj.a_b_taxi.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("a_b_america", obj.a_b_america.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("a_b_lth", obj.a_b_lth.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("a_b_cronos", obj.a_b_cronos.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("a_b_diener", obj.a_b_diener.ToString()))
Parametros.Add(New KeyValuePair(Of String, String)("a_b_heavyduty", obj.a_b_heavyduty.ToString()))
Dim content As New FormUrlEncodedContent(Parametros)
Dim response = wc.PostAsync(Url, content).Result
Retorno = response.Content.ReadAsStringAsync().Result
End Using
Catch ex As Exception
ex.GuardaLog(ex.Message)
End Try
context.Response.Write(Retorno)
End Sub
#End Region
End Class
Public Class MPolizaVentaLTHWSD
Public Property customer_name As String
Public Property customer_last_name1 As String
Public Property customer_last_name2 As String
Public Property customer_birthday As DateTime
Public Property customer_phone As String
Public Property customer_email As String
Public Property customer_gender As String
Public Property customer_advertising As Boolean
Public Property sale_date As DateTime
Public Property sale_paidby As String
Public Property sale_type As String
Public Property sale_type_service As String
Public Property product_code As String
Public Property product_unique_code As String
Public Property product_sale_type As String
Public Property used_product As Boolean
Public Property used_brand As String
Public Property used_bci As String
Public Property used_month As Integer
Public Property used_year As Integer
Public Property used_sale_date As DateTime
Public Property customer_car_brand As String
Public Property customer_car_model As String
Public Property customer_car_year As Integer
Public Property sale_discount As Decimal
Public Property sale_id As String
End Class
Public Class MPolizaVentaWS
Public Property customer_name As String
Public Property customer_last_name1 As String
Public Property customer_last_name2 As String
Public Property customer_birthday As DateTime
Public Property customer_phone As String
Public Property customer_email As String
Public Property customer_gender As String
Public Property customer_advertising As Boolean
Public Property sale_date As DateTime
Public Property sale_paidby As String
Public Property sale_type As String
Public Property sale_type_service As String
Public Property sale_total As Decimal
Public Property product_code As String
Public Property product_unique_code As String
Public Property product_sale_type As String
Public Property used_product As Boolean
Public Property used_brand As String
Public Property used_bci As String
Public Property used_month As Integer
Public Property used_year As Integer
Public Property used_sale_date As DateTime
Public Property customer_car_brand As String
Public Property customer_car_model As String
Public Property customer_car_year As Integer
Public Property sale_discount As Decimal
Public Property sale_id As String
End Class
Public Class MIndicador
Sub New(Optional UsaValoresPrueba As Boolean = False)
If UsaValoresPrueba Then
Dim Index As Integer = 0
For Each p As Reflection.PropertyInfo In Me.GetType().GetProperties()
Index = Index + 1
p.SetValue(Me, Convert.ChangeType(Index, p.PropertyType), Nothing)
Next
End If
End Sub
Public Property v_b_optima As Integer
Public Property v_b_fullpower As Integer
Public Property v_b_hitec As Integer
Public Property v_b_agm As Integer
Public Property v_b_suv As Integer
Public Property v_b_taxi As Integer
Public Property v_b_america As Integer
Public Property v_b_lth As Integer
Public Property v_b_cronos As Integer
Public Property v_b_diener As Integer
Public Property v_b_heavyduty As Integer
Public Property v_m_lth As Integer
Public Property v_o_filtros As Integer
Public Property v_o_lub1 As Integer
Public Property v_o_lubgalon As Integer
Public Property v_o_lub5 As Integer
Public Property v_o_aa As Integer
Public Property v_o_aaa As Integer
Public Property g_b_optima As Integer
Public Property g_b_fullpower As Integer
Public Property g_b_hitec As Integer
Public Property g_b_agm As Integer
Public Property g_b_suv As Integer
Public Property g_b_taxi As Integer
Public Property g_b_america As Integer
Public Property g_b_lth As Integer
Public Property g_b_cronos As Integer
Public Property g_b_diener As Integer
Public Property g_b_heavyduty As Integer
Public Property g_m_lth As Integer
Public Property a_b_optima As Integer
Public Property a_b_fullpower As Integer
Public Property a_b_hitec As Integer
Public Property a_b_agm As Integer
Public Property a_b_suv As Integer
Public Property a_b_taxi As Integer
Public Property a_b_america As Integer
Public Property a_b_lth As Integer
Public Property a_b_cronos As Integer
Public Property a_b_diener As Integer
Public Property a_b_heavyduty As Integer
End Class
Namespace Fluent
Public Enum GuidVersion
TimeBased = &H1
Reserved = &H2
NameBased = &H3
Random = &H4
End Enum
Partial Public Module GuidGenerator
Public Const ByteArraySize = 16
Public Const VariantByte = 8
Public Const VariantByteMask = &H3F
Public Const VariantByteShift = &H80
Public Const VersionByte = 7
Public Const VersionByteMask = &HF
Public Const VersionByteShift = 4
Private Const TimestampByte As Byte = 0
Private Const GuidClockSequenceByte As Byte = 8
Private Const NodeByte As Byte = 10
Private ReadOnly GregorianCalendarStart As DateTimeOffset = New DateTimeOffset(1582, 10, 15, 0, 0, 0, TimeSpan.Zero)
Public Property DefaultClockSequence As Byte()
Public Property DefaultNode As Byte()
Sub New()
DefaultClockSequence = New Byte(1) {}
DefaultNode = New Byte(5) {}
Dim random = New Random
random.NextBytes(DefaultClockSequence)
random.NextBytes(DefaultNode)
End Sub
'<Extension()>
'Function GetVersion(ByVal guid As Guid) As GuidVersion
' Dim bytes = guid.ToByteArray
' Return ((bytes(VersionByte) And &HFF) >> VersionByteShift)
'End Function
Function GetDateTimeOffset(ByVal guid As Guid) As DateTimeOffset
Dim bytes As Byte() = guid.ToByteArray
bytes(VersionByte) = bytes(VersionByte) And CByte(VersionByteMask)
bytes(VersionByte) = bytes(VersionByte) Or (CByte(GuidVersion.TimeBased) >> VersionByteShift)
Dim timestampBytes = New Byte(7) {}
Array.Copy(bytes, TimestampByte, timestampBytes, 0, 8)
Dim timestamp As Long = BitConverter.ToInt64(timestampBytes, 0)
Dim ticks As Long = timestamp + GregorianCalendarStart.Ticks
Return New DateTimeOffset(ticks, TimeSpan.Zero)
End Function
Function GetDateTime(ByVal guid As Guid) As Date
Return GetDateTimeOffset(guid).DateTime
End Function
Function GetLocalDateTime(ByVal guid As Guid) As Date
Return GetDateTimeOffset(guid).LocalDateTime
End Function
Function GetUtcDateTime(ByVal guid As Guid) As Date
Return GetDateTimeOffset(guid).UtcDateTime
End Function
Function GenerateTimeBasedGuid() As Guid
Return GenerateTimeBasedGuid(DateTimeOffset.UtcNow, DefaultClockSequence, DefaultNode)
End Function
Function GenerateTimeBasedGuid(ByVal dateTime As Date) As Guid
Return GenerateTimeBasedGuid(dateTime, DefaultClockSequence, DefaultNode)
End Function
Function GenerateTimeBasedGuid(ByVal dateTime As DateTimeOffset) As Guid
Return GenerateTimeBasedGuid(dateTime, DefaultClockSequence, DefaultNode)
End Function
Function GenerateTimeBasedGuid(ByVal dateTime As Date, ByVal clockSequence As Byte(), ByVal node As Byte()) As Guid
Return GenerateTimeBasedGuid(New DateTimeOffset(dateTime), clockSequence, node)
End Function
Function GenerateTimeBasedGuid(ByVal dateTime As DateTimeOffset, ByVal clockSequence As Byte(), ByVal node As Byte()) As Guid
If clockSequence Is Nothing Then Throw New ArgumentNullException("clockSequence")
If node Is Nothing Then Throw New ArgumentNullException("node")
If clockSequence.Length <> 2 Then Throw New ArgumentOutOfRangeException("clockSequence", "The clockSequence must be 2 bytes.")
If node.Length <> 6 Then Throw New ArgumentOutOfRangeException("node", "The node must be 6 bytes.")
Dim ticks = (dateTime - GregorianCalendarStart).Ticks
Dim guid = New Byte(15) {}
Dim timestamp = BitConverter.GetBytes(ticks)
Array.Copy(node, 0, guid, NodeByte, Math.Min(6, node.Length))
Array.Copy(clockSequence, 0, guid, GuidClockSequenceByte, Math.Min(2, clockSequence.Length))
Array.Copy(timestamp, 0, guid, TimestampByte, Math.Min(8, timestamp.Length))
guid(VariantByte) = guid(VariantByte) And CByte(VariantByteMask)
guid(VariantByte) = guid(VariantByte) Or CByte(VariantByteShift)
guid(VersionByte) = guid(VersionByte) And CByte(VersionByteMask)
guid(VersionByte) = guid(VersionByte) Or (CByte(GuidVersion.TimeBased) << VersionByteShift)
Return New Guid(guid)
End Function
End Module
End Namespace