Pyton no requiere definir wrappers para utilizar
las funciones de VirtualXML ya que cuenta con objetos capaces de
manipular DLLs directamente, el objeto cdll
de Pyton convierte cualquier DLL en un objeto, convirtiendo todas las
funciones contenidas en él en métodos de una clase que posteriormente
puede ser manipulado desde su programa.
Pyton al igual que VB .NET, C# y Delphi RadStudio, utilizan las funciones en formato WIDE, por lo que los nombres de las funciones de VirtualXML son distintos, pero simplemente hay que agregar una letra W al final de los nombres de cada función y la funcionalidad y paramétros son los mismos
A continuación le mostramos un ejemplo de un programa en Pyton:
Fecha de actualización : 29 de Julio de 2021 se documenta ejemplo
Pyton al igual que VB .NET, C# y Delphi RadStudio, utilizan las funciones en formato WIDE, por lo que los nombres de las funciones de VirtualXML son distintos, pero simplemente hay que agregar una letra W al final de los nombres de cada función y la funcionalidad y paramétros son los mismos
A continuación le mostramos un ejemplo de un programa en Pyton:
Ejemplo:
from ctypes import *
# Declarar DLL sin extension
vxml = cdll.virtualxml
baseName = "python_cfdi33_basico"
hXml = vxml.VirtualXML_NewW("3.3")
vxml.VirtualXML_SetLogFileW(hXml, baseName + ".log")
vxml.VirtualXML_SetVirtualPACInfoW(hXml, "demo_cibertec", "demo")
vxml.VirtualXML_SetComprobanteInfo_cfdi33W(hXml,"A","1","%cb_date","99","Contado Comercial","1000.00","50.00","MXN","","1102.00","I","PPD","53050","")
vxml.VirtualXML_SetCfdiRelacionados_cfdi33W(hXml,"04")
vxml.VirtualXML_AddCfdiRelacionado_cfdi33W(hXml, "FF93C8BE-AF7B-4FC5-8854-6DAE18CFB5B4")
vxml.VirtualXML_AddCfdiRelacionado_cfdi33W(hXml, "D8E18C2F-2859-4927-A0F0-EA3E93642DDC")
vxml.VirtualXML_AddCfdiRelacionado_cfdi33W(hXml, "BE1D4B47-E167-47A3-8049-70D4D43BCBE8")
vxml.VirtualXML_AddCfdiRelacionado_cfdi33W(hXml, "FDBA380A-9732-4FB5-A6CB-5FB4BD831697")
vxml.VirtualXML_SetEmisorInfo_cfdi33W(hXml,"AAA010101AAA","Empresa de prueba SA de CV","601")
vxml.VirtualXML_SetReceptorInfo_cfdi33W(hXml,"CTE940531F58","Cibernetica y Tecnología SA de CV","","","G01")
vxml.VirtualXML_AddConcepto_cfdi33W(hXml, "84111506", "SEF500", "1", "H87", "Timbre", "Paquete de 500 timbres fiscales", "500.00", "500.00", "")
vxml.VirtualXML_AddConceptoTraslado_cfdi33W(hXml, "500.00", "002", "Tasa", "0.160000", "80.00")
vxml.VirtualXML_AddConcepto_cfdi33W(hXml, "84111506", "SEF250", "2", "H87", "Timbre", "Paquete de 500 timbres fiscales", "250.00", "500.00", "50.00")
vxml.VirtualXML_AddConceptoTraslado_cfdi33W(hXml, "450.00", "002", "Tasa", "0.160000", "72.00")
vxml.VirtualXML_SetImpuestosInfo_cfdi33W(hXml, "152.00", "")
vxml.VirtualXML_AddTraslado_cfdi33W(hXml, "002", "Tasa", "0.160000", "152.00")
exitcode = vxml.VirtualXML_ProcesaDocumentoW(hXml, "C:\\Certificados_new2017\\CSD01_AAA010101AAA.cer", "C:\\Certificados_new2017\\CSD01_AAA010101AAA.key", "12345678a", baseName + "_xmlout.xml")