919 lines
48 KiB
Plaintext
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
|