.NET COM komponenta za fiskalizaciju sa primjerima za VBA, VBScript i Access (verzija u primjeru 2010).
- koristiti API za fiskalizaciju direktno iz jezika u kojem je aplikacija napisana preko COM komponente
- izbjegnuti manipulaciju sa XML-om, sve operacije se rade preko objekata u jeziku aplikacije
- sve greške su exception-i u jeziku aplikacije, nema dodatnog kôda za parsiranje grešaka
- mogućnost logiranja raw SOAP poruka sa CIS servisa
Download FiscalizationCom (zip) u kojem je
- FiscalizationCom.dll
- batch skripte za registraciju - RegisterCOM.cmd, UnRegisterCOM.cmd
- primjeri za VBA i VBScript, Access (Test.accdb)
REM x86
%SYSTEMROOT%\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe "%~dp0FiscalizationCom.dll" /codebase /tlb
REM x64
%SYSTEMROOT%\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe "%~dp0FiscalizationCom.dll" /codebase /tlb
- FiscalizationCom.tlb se kreira nakon registracije sa RegisterCOM.cmd skriptom
- u VBA editoru se referencira FiscalizationCom.tlb file
- za pozivanje iz VBScript-a FiscalizationCom.tlb file nije potreban (nije potrebno ni registrirati sa opcijom /tlb)
Ovdje je kompletan COM API. Metode za poziv servisa i pomoćne metode su prilagođene za pozive preko COM-a sa FiscalizationComInterop klasom. Svejedno je jel se koristi uvijek ista instanca ili se za svaki poziv kreira nova.
' .NET COM Interop
Dim cisInterop As New FiscalizationComInterop
' Slanje računa
Set result = cisInterop.SendInvoice(RacunType, (X509Certificate2), timeout/ms: Int, isDemo: Bool, check_response_signature: Bool)
' Slanje računa (zahtjev)
Set result = cisInterop.SendInvoiceRequest(RacunZahtjev, (X509Certificate2), timeout/ms: Int, isDemo: Bool, check_response_signature: Bool)
' Provjera računa
Set result = cisInterop.CheckInvoice(RacunType, (X509Certificate2), timeout/ms: Int, isDemo: Bool, check_response_signature: Bool)
' Provjera računa (zahtjev)
Set result = cisInterop.CheckInvoiceRequest(RacunZahtjev, (X509Certificate2), timeout/ms: Int, isDemo: Bool, check_response_signature: Bool)
' Echo
Set result = cisInterop.SendEcho(String, timeout/ms: Int, isDemo: Bool)
Logiranje odlaznih i dolaznih SOAP poruka u file. Postavlja se na razini instance FiscalizationComInterop klase.
' .NET COM Interop
Dim cisInterop As New FiscalizationComInterop
' Postavljanje putanje do log file-a
cisInterop.LogFileName = "Fiscal.log"
'.NET COM Interop
Dim cisInterop
Set cisInterop = CreateObject("FiscalizationComInterop")
' Postavljanje putanje do log file-a
cisInterop.LogFileName = "Fiscal.log"
' Demo OIB & certifikat
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("DemoCertificate.txt", 1)
Dim oib
oib = objFile.ReadLine
Dim certPwd
certPwd = objFile.ReadLine
Dim certBase64
certBase64 = objFile.ReadLine
' Dohvat certifikata iz file-a ili base64 enkodiranog string-a
Dim cert
'Set cert = cisInterop.GetCertificateFile("<certificate file name>.pfx", "<password>")
Set cert = cisInterop.GetCertificateString(certBase64, certPwd)
' Demo broj računa
Dim invoiceNr
Set invoiceNr = CreateObject("Cis.BrojRacunaType")
With invoiceNr
.BrOznRac = "1"
.OznPosPr = "1"
.OznNapUr = "1"
End With
' Demo porez
Dim pdv25
Set pdv25 = CreateObject("Cis.PorezType")
With pdv25
.Stopa = "25.00"
.Osnovica = "10.00"
.Iznos = "2.50"
End With
Dim taxes(1)
Set taxes(0) = pdv25
' Kreiranje računa (RacunType objekt)
Dim invoice 'As RacunType
Set invoice = CreateObject("Cis.RacunType")
With invoice
.OIB = oib
.USustPdv = True
.IznosUkupno = "123.45"
.DatVrijeme = cisInterop.DateFormatLong(Date)
.OznSlijed = cisInterop.OznakaSlijednostiType_N
.NacinPlac = cisInterop.NacinPlacanjaType_G
.OibOper = "98642375382"
.NakDost = False
.BrRac = invoiceNr
' Convert Variant() to PorezType[]
.Pdv = cisInterop.ToPorezTypeArray((taxes))
End With
' Slanje računa (od v1.2.0)
Dim result 'As RacunOdgovor
Set result = cisInterop.SendInvoice((invoice), (cert), 0, True)
MsgBox (result.Jir)
' -------------------------------------------------------------
' Drugi način za slanje je ručno kreiranje zahtjeva
' Kreiranje zahtjeva računa
Dim request 'As RacunZahtjev
Set request = cisInterop.CreateInvoiceRequest((invoice))
' Slanje zahtjeva i računa
Dim result 'As RacunOdgovor
Set result = cisInterop.SendInvoiceRequest((request), (cert), 0, True)
' -------------------------------------------------------------
' Pomoćne funkcije koje se automatski pozivaju kod slanja računa
' Generira ZKI broj i sprema u `invoice.ZastKod`
Call cisInterop.GenerateZki((invoice), (cert))
' Generira ZKI ako već nije i potpisuje zahtjev
Call cisInterop.Sign((request), (cert))