miércoles, 16 de febrero de 2011

Timbrado en Visual Basic

Visual Basic

Declaracion

Option Explicit
Private Declare Sub Timbrar Lib "TimbradoTF.dll" (ByVal cRFC As String, ByVal cXMLRequest As String)
Private Declare Function FTimbrar Lib "TimbradoTF.dll" (ByVal cRFC As String, ByVal cXMLRequest As String) As String
Private Declare Sub CBBCode Lib "TimbradoTF.dll" (ByVal cCodigo As String, ByVal cFileCBB As String)
Private Declare Function XMLResult Lib "TimbradoTF.dll" () As String
Private Declare Function XMLTimbre Lib "TimbradoTF.dll" () As String

Private Declare Function Serie Lib "TimbradoTF.dll" () As String
Private Declare Function Factura Lib "TimbradoTF.dll" () As String

Private Declare Function Version Lib "TimbradoTF.dll" () As String
Private Declare Function UUID Lib "TimbradoTF.dll" () As String
Private Declare Function FechaTimbrado Lib "TimbradoTF.dll" () As String
Private Declare Function SelloCFD Lib "TimbradoTF.dll" () As String
Private Declare Function NoCertificadoSAT Lib "TimbradoTF.dll" () As String
Private Declare Function SelloSAT Lib "TimbradoTF.dll" () As String

LLamada

Private Sub Command3_Click()
Dim cResponse As String

Dim cSerie As String
Dim cFactura As String
Dim cFileCBB As String
Dim cTimbre As String

Dim cVersion As String
Dim cUUID As String
Dim cFechaTimbrado As String
Dim cSelloCFD As String
Dim cNoCertificadoSAT As String
Dim cSelloSAT As String


   txSERIE.Text = ""
   txFACTURA.Text = ""
  
   txVERSION.Text = ""
   txUUID.Text = ""
   txFECHATIMBRADO.Text = ""
   txCERTIFICADOSAT.Text = ""
   txSELLOSAT.Text = ""

   cResponse = FTimbrar("XAX010101000", "C:\TimbreFiscal\vb6\request.xml")
   cTimbre = XMLTimbre
  
   Text1.Text = cTimbre
   Text5.Text = cResponse
  
   cSerie = Serie
   cFactura = Factura
   txSERIE.Text = cSerie
   txFACTURA.Text = cFactura
  
 
   cVersion = Version
   cUUID = UUID
   cFechaTimbrado = FechaTimbrado
   cSelloCFD = SelloCFD
   cNoCertificadoSAT = NoCertificadoSAT
   cSelloSAT = SelloSAT
  
   txVERSION.Text = cVersion
   txUUID.Text = cUUID
   txFECHATIMBRADO.Text = cFechaTimbrado
   txCERTIFICADOSAT.Text = cNoCertificadoSAT
   txSELLOSAT.Text = cSelloSAT
     

End Sub

Timbrado en Visual FoxPro

Visual Foxpro

Declaracion

DECLARE STRING FTimbrar IN "TimbradoTF.dll" STRING @, STRING @
DECLARE STRING XMLTimbre IN "TimbradoTF.dll"
DECLARE STRING UUID IN "TimbradoTF.dll"
DECLARE STRING FechaTimbrado IN "TimbradoTF.dll"
DECLARE STRING SelloSAT IN "TimbradoTF.dll"

Llamada

cResult =  Timbrar("XAX010101000","request.xml")
cTimbre = XMLTimbre()
ThisForm.edit4.Value = cTimbre

cUUID = UUID()
ThisForm.edit2.Value = cUUID
ThisForm.edit3.Value = FechaTimbrado()
ThisForm.text1.Value = SelloSAT()



Timbrado en Delphi..s

Delphi..s

Declaracion
Procedure Timbrar(cRFC,cFileXML:Pchar); stdcall; external 'TimbradoTF.dll';
Function FTimbrar(cRFC,cFileXML:Pchar):pchar; stdcall; external 'TimbradoTF.dll';
Procedure FreePChar(p: PChar);  stdcall; external 'TimbradoTF.dll';

Function XMLCFDI: PChar; stdcall; external 'TimbradoTF.dll';
Function XMLResult: PChar; stdcall; external 'TimbradoTF.dll';
Function XMLTimbre: PChar; stdcall; external 'TimbradoTF.dll';

Function Serie:Pchar; stdcall; external 'TimbradoTF.dll';
Function Factura:Pchar; stdcall; external 'TimbradoTF.dll';
Function RFCEmisor:Pchar; stdcall; external 'TimbradoTF.dll';
Function RFCReceptor:Pchar; stdcall; external 'TimbradoTF.dll';

Function Version:Pchar; stdcall; external 'TimbradoTF.dll';
Function UUID:Pchar; stdcall; external 'TimbradoTF.dll';
Function FechaTimbrado:Pchar; stdcall; external 'TimbradoTF.dll';
Function SelloCFD:Pchar; stdcall; external 'TimbradoTF.dll';
Function NoCertificadoSAT:Pchar; stdcall; external 'TimbradoTF.dll';
Function SelloSAT:Pchar; stdcall; external 'TimbradoTF.dll';
Procedure CBBCode(cCodigo,cFileCBB:Pchar) stdcall; external 'TimbradoTF.dll';

Llamada

procedure TForm2.EnviarClick(Sender: TObject);
Var
  cFileRequest:String;
begin

  cFileRequest := cDirExe+'request.xml';
  Timbrar('XAX010101000',pchar(cFileRequest));
  Memo1.Text := XMLTimbre;

end;

DLL para Timbrado de CFDi (Multiples PACS) & QRCODE

El presente documento tiene como motivo el poder describir el uso de la librería DLL llamada TimbradoTF.dll que sera utilizada para el timbrado de los CFDi creados por aplicaciones propias, y detalla en forma simple su uso.

La librería es una librería win32 y funciona en win64 tambien.

Los lenguajes en los cuales se valida que funcionan son:
  • DELPHI
  • Visual Basic
  • Visual FoxPro

La librería es Win32 por lo que en caso de que el lenguaje en el que lo vayas a usar no esta listado, seguro podras utilizarla, ya que es muy simple, solo tendras que hacer las declaraciones de la llamada a la DLL como tu lenguaje la describa.

Si tienes la NECESIDAD de utilizarla con algun PAC especifico podriamos integrarlo a la DLL, generalmente sin hacer modificacion de ls misma, a lo que se tendria que disponer de la Informacion del PAC de su WS y nosotros nos hariamos cargo de las pruebas.

Actualmente esta DLL timbra para varios PACS, a lo cual cuando requieras informacion solo pregunta si esta soportado el PAC y te pondremos al tanto de esto.

La librería para su funcionamiento requiere de otras librerias las cuales comúnmente para el uso que se destina ya pueden tener y estar utilizando con OPENSSL.
  • libeay32.dll
  • libssl32.dll

Estas librerias son requeridas para el envio seguro del certificado al WS de Timbrefiscal


PROCEDIMIENTOS y FUNCIONES declaradas en la DLL

Procedimientos
  • Timbrar(“<RFCEmisor>”,”NombreArchivoXMLRequest”)
  • CBBCode(“cadena”,”NombreArchivoBMP”)

Funciones (Strings)

  • XMLResult .- Retorna el Resultado el Envio del Timbrar…
  • XMLTimbre .- Retorna el Timbre para ser Insertado en tu CFDi.
  • UUID .- Retorna el UUID del resultado del Timbrado.
  • Version .- Retorna la Version del Timbrado
  • FechaTimbrado .- Retorna la Fecha del Timbrado del PAC
  • SelloCFD .- Retorna el SelloCFD en el Timbrado.
  • NoCertificadoSAT .- Retorna el No. Del Certficado del SAT en el Timbrado.
  • SelloSAT .- Retorna el Sello del SAT en el Timbrado.
  • Serie .-  No Serie de la Factura
  • Factura .-  No Folio de la Factura
  • RFCEmisor .-  RFC del Emisor
  • RFCReceptor .- RFC del Receptor

En forma General deberes de primero Timbrar para poder obtener los valores de las Funciones.

Timbrar(“XAX0101001000”,”request.xml”)
myVariable = Timbre

Genera el QRCODE en BMP, JPG.
Infofmes:  joseph@pcicom.net