ifon

Feb 24, 2013 at 2:19 PM
Pomoć molim.
Moram priznati, puno toga mi nije jasno, program kojeg koristim je za osobnu upotrebu a napravio sam ga prije 10 god.
Aplikacija je u accessu 2000, što sve trebam napravit kao bi iskoristio vaše kodve? Program mi generira pos.txt, dali njega mogu pozvati preko vašg riješenja da ga ono pretvori u xml ili moram u programu zadati da se generira recimo pos.xml.
Coordinator
Feb 25, 2013 at 8:42 AM
Edited Feb 25, 2013 at 8:45 AM
Ovaj projekt nije gotova aplikacija već je namjenjen da se source kôd koristi u vlastitoj .NET aplikaciji.
  • prvo trebaš u Visual Studio-u(može i express) kreirat vlastiti C# class library projekt
    obvezno sa uključenom opcijom "Register for COM interop"(potrebna admin prava)
  • uključiti source kôd za fiskalizaciju preku NuGet-a http://fiscalization.codeplex.com/documentation
  • napraviti novu klasu sa metodama koje će se pozivati iz Access-a, metode moraju imati postavljen atribut [ComVisible(true)]
  • te metode bi transformirale ulazne podatke iz Access-a kao npr. certifikat klijenta koji je vjerojatno u Access bazi kao byte array ili string
  • dalje radiš isto kao sa bilo koji COM dll-om u Access-u
Pozdrav
Tomislav

Primjer klase za Access:
using Cis;
using System;
using System.Runtime.InteropServices;
using System.Security.Cryptography.X509Certificates;

public class AccessFiscalization
{
    [ComVisible(true)]
    public static RacunOdgovor PosaljiRacun(RacunZahtjev request, string certAsBase64EncodedString, bool isDemo, int timeout)
    {
        if (certAsBase64EncodedString == null)
            throw new ArgumentNullException("certAsBase64EncodedString");

        // Get certificate from base64 encoded string
        var raw = Convert.FromBase64String(certAsBase64EncodedString);
        X509Certificate2 cert = new X509Certificate2(raw);

        // Send request
        var result = Fiscalization.SendInvoiceRequest(request, cert,
            x =>
            {
                // SOAP service settings
                // Change service URL
                // default = Fiscalization.SERVICE_URL_PRODUCTION
                if (isDemo)
                {
                    x.Url = Fiscalization.SERVICE_URL_DEMO;
                }

                // Set request timeout in miliseconds
                // default = 100s
                x.Timeout = timeout;

                // We can disable response signature checking
                // default = true
                // x.CheckResponseSignature = false;
            });

        return result;
    }
}
Feb 25, 2013 at 10:35 AM

Poštovani,

Hvala puno, bit ću slobodan ako bude još pinaja obratiti vam se.

LP

Ivo

From: tgrospic [email removed]
Sent: Monday, February 25, 2013 9:43 AM
To: ifont@ifont.biz
Subject: Re: ifon [fiscalization:434303]

From: tgrospic

Ovaj projekt nije gotova aplikacija već je namjenjen da se source kôd koristi u vlastitoj .NET aplikaciji.

  • prvo trebaš u Visual Studio-u(može i express) kreirat vlastiti C# class library projekt
    obvezno sa uključenom opcijom "Register for COM interop"(potrebna admin prava)
  • uključiti source kôd za fiskalizaciju preku NuGet-a http://fiscalization.codeplex.com/documentation
  • napraviti novu klasu sa metodama koje će se pozivati iz Access-a, metode moraju imati postavljen atribut [ComVisible(true)]
  • te metode bi transformirale ulazne podatke iz Access-a kao npr. certifikat klijenta koji je vjerojatno u Access bazi kao byte array ili string
  • dalje radiš isto kao sa bilo koji COM dll-om u Access-u

Pozdrav
Tomislav

Primjer klase za Access:

using Cis;
using System;
using System.Runtime.InteropServices;
using System.Security.Cryptography.X509Certificates;
 
public class AccessFiscalization
{
    [ComVisible(true)]
    public static RacunOdgovor PosaljiRacun(RacunZahtjev request, string certAsBase64EncodedString, bool isDemo, int timeout)
    {
        if (certAsBase64EncodedString == null)
            throw new ArgumentNullException("certAsBase64EncodedString");
 
        // Get certificate from base64 encoded string
        var raw = Convert.FromBase64String(certAsBase64EncodedString);
        X509Certificate2Wrapper cert = new X509Certificate2(raw);
 
        // Send request
        var result = Fiscalization.SendInvoiceRequest(request, cert,
            x =>
            {
                // SOAP service settings
                // Change service URL
                // default = Fiscalization.SERVICE_URL_PRODUCTION
                if (isDemo)
                {
                    x.Url = Fiscalization.SERVICE_URL_DEMO;
                }
 
                // Set request timeout in miliseconds
                // default = 100s
                x.Timeout = timeout;
 
                // We can disable response signature checking
                // default = true
                // x.CheckResponseSignature = false;
            });
 
        return result;
    }
}
Coordinator
Feb 26, 2013 at 9:22 AM
Edited Feb 26, 2013 at 10:03 AM
Jučer sam napamet pisao kako fiskalizirati iz Access-a.

I čiste znatiželje napravio sam novi solution FiscalizationCom u kojem je projekt namjanjen za pristup preko COM Interop-a, i test projekt.
Za sad još nisam napravio novi release, potrebno je download-at zadnju verziju source kôda http://fiscalization.codeplex.com/SourceControl/BrowseLatest

Kratke upute:
  • kompajlirati FiscalizationCom(potrebna admin prava radi registracije .NET dll-a kao COM)
  • referencirati iz Access-a FiscalizationCom.tlb koji se nalazi u bin(Debug ili Release ovisno o build config.) folderu projekta
  • u VBA metode dostupne preko instance FiscalizationComInterop klase
Primjer VBA kôda za slanje računa:
  • slanje automatski generira ZKI kôd i potpisuje zahtjev, to se može napraviti i prije preko dvije pomoćne metode ako se želi upisati ZKI u bazu prije slanja
Public Function SendInvoiceTest()

    ' .NET COM Interop
    Dim cisInterop As New FiscalizationComInterop
    
    ' Demo OIB & certificate
    Dim d As New Demo
    
    ' Create invoice number
    Dim invoiceNr As New BrojRacunaType
    With invoiceNr
        .BrOznRac = "1"
        .OznPosPr = "1"
        .OznNapUr = "1"
    End With
    
    ' Create Racun
    Dim invoice As New RacunType
    With invoice
        .OIB = d.OIB
        .USustPdv = True
        .IznosUkupno = "123.45"
        .DatVrijeme = cisInterop.DateFormatLong(DateTime.Now)
        .OznSlijed = OznakaSlijednostiType.OznakaSlijednostiType_N
        .NacinPlac = NacinPlacanjaType.NacinPlacanjaType_G
        .OibOper = "98642375382"
        .NakDost = False
        .BrRac = invoiceNr
    End With
    
    'Call cisInterop.GenerateZki(invoice, d.CERT)
    ' invoice.ZastKod <- filled with generated ZKI code
    
    Dim request As RacunZahtjev
    Set request = cisInterop.CreateInvoiceRequest(invoice)
    
    'Call cisInterop.Sign(request, d.CERT)
    ' call GenerateZki and Sign request
    
    ' Send request
    Dim result As RacunOdgovor
    Set result = cisInterop.SendInvoiceRequest(request, d.CERT, 0, True)
    
    MsgBox (result.Jir)
    
End Function
Pozdrav
Tomislav
Coordinator
Mar 17, 2013 at 1:41 PM
Edited Mar 17, 2013 at 3:52 PM
Kreirao sam COM komponentu za fiskalizaciju sa logiranjem.

Upute su u sekciji dokumentacije - COM komponenta za fiskalizaciju.
Mar 25, 2013 at 2:11 PM

Poštovani,

Uz Vašu Veliku pomoć uspio sam da demo verzija certifikata uredno radi, međutim kad sve isto ponovim na stroju koji treba raditi javlja mi slijedeću gršku (u privitku)

Molim za pomoć

Lp

Hvala

From: tgrospic [email removed]
Sent: Tuesday, February 26, 2013 10:28 AM
To: ifont@ifont.biz
Subject: Re: ifon [fiscalization:434303]

From: tgrospic

Jučer sam napamet pisao kako fiskalizirati iz Access-a.

I čiste znatiželje napravio sam novi solution FiscalizationCom u kojem je projekt namjanjen za pristup preko COM Interop-a, i test projekt.
Za sad još nisam napravio novi release, potrebno je download-at zadnju verziju source kôda http://fiscalization.codeplex.com/SourceControl/BrowseLatest

Kratke upute:

  • kompajlirati FiscalizationCom(potrebna admin prava radi registracije .NET dll-a kao COM)
  • referencirati iz Access-a FiscalizationCom.tlb koji se nalazi u bin(Debug ili Release ovisno o build config.) folderu projekta
  • u VBA metode dostupne preko instance FiscalizationComInterop klase

Primjer VBA kôda za slanje računa:

  • slanje automatski generira ZKI kôd i potpisuje zahtjev, to se može napraviti i prije preko dvije pomoćne metode ako se želi upisati ZKI u bazu prije slanja
Public Function SendInvoiceTest()
 
    Dim cisInterop As New FiscalizationComInterop
    Set cisInterop = New FiscalizationComInterop
    
    ' Create invoice number
    Dim invoiceNr As BrojRacunaType
    Set invoiceNr = New BrojRacunaType
    With invoiceNr
        .BrOznRac = "1"
        .OznPosPr = "1"
        .OznNapUr = "1"
    End With
    
    ' Demo OIB & certificate
    Dim d As Demo
    Set d = New Demo
    
    ' Create Racun
    Dim invoice As RacunType
    Set invoice = New RacunType
    With invoice
        .OIB = d.OIB
        .USustPdv = True
        .IznosUkupno = "123.45"
        .DatVrijeme = cisInterop.DateFormatLong(DateTime.Now)
        .OznSlijed = OznakaSlijednostiType.OznakaSlijednostiType_N
        .NacinPlac = NacinPlacanjaType.NacinPlacanjaType_G
        .OibOper = "98642375382"
        .NakDost = False
        .BrRac = invoiceNr
    End With
    
    'Call cisInterop.GenerateZki(invoice, d.CERT)
    ' invoice.ZastKod <- filled with generated ZKI code
    
    Dim request As RacunZahtjev
    Set request = cisInterop.CreateInvoiceRequest(invoice)
    
    'Call cisInterop.Sign(request, d.CERT)
    ' call GenerateZki and Sign request
    
    ' Send request
    Dim result As RacunOdgovor
    Set result = cisInterop.SendInvoiceRequest(request, d.CERT, 0, True)
    
    MsgBox (result.Jir)
    
End Function

Pozdrav
Tomislav

Coordinator
Mar 25, 2013 at 8:31 PM
Nažalost nema att. :)

Ali pretpostavljam koja bi greška mogla biti.
Za produkcijski URL prema poreznoj upravi mora se instalirati produkcijski root certifikat.

Isto kao i demo, ali ga nisam stavio u source.
Može se skinuti sa rdc.fina.hr link Verifikacijski/root (samopotpisani) certifikat za RDC CA.

Bitno je registrirati COM komponentu sa skriptom RegisterCOM.cmd koja mora biti u istom folder-u sa FiscalizationCom.dll-om.

Pozdrav
Tomislav
Mar 25, 2013 at 9:13 PM

Ja sam koristio raverus.FiskalizacijaDDEv.com.dll isti sam stavio u...v2.0.50727 i pokrenuo regasm

From: tgrospic [email removed]
Sent: Monday, March 25, 2013 8:32 PM
To: ifont@ifont.biz
Subject: Re: ifon [fiscalization:434303]

From: tgrospic

Nažalost nema att. :)

Ali pretpostavljam koja bi greška mogla biti.
Za produkcijski URL prema poreznoj upravi mora se instalirati produkcijski root certifikat.

Isto kao i demo, ali ga nisam stavio u source.
Može se skinuti sa rdc.fina.hr link Verifikacijski/root (samopotpisani) certifikat za RDC CA.

Bitno je registrirati COM komponentu sa skriptom RegisterCOM.cmd koja mora biti u istom folder-u sa FiscalizationCom.dll-om.

Pozdrav
Tomislav

Mar 25, 2013 at 9:16 PM

Evo ga,

Skinuo sam RDC

Lp

ivo

From: tgrospic [email removed]
Sent: Monday, March 25, 2013 8:32 PM
To: ifont@ifont.biz
Subject: Re: ifon [fiscalization:434303]

From: tgrospic

Nažalost nema att. :)

Ali pretpostavljam koja bi greška mogla biti.
Za produkcijski URL prema poreznoj upravi mora se instalirati produkcijski root certifikat.

Isto kao i demo, ali ga nisam stavio u source.
Može se skinuti sa rdc.fina.hr link Verifikacijski/root (samopotpisani) certifikat za RDC CA.

Bitno je registrirati COM komponentu sa skriptom RegisterCOM.cmd koja mora biti u istom folder-u sa FiscalizationCom.dll-om.

Pozdrav
Tomislav

Mar 25, 2013 at 9:19 PM

Evo i certifikat

From: tgrospic [email removed]
Sent: Monday, March 25, 2013 8:32 PM
To: ifont@ifont.biz
Subject: Re: ifon [fiscalization:434303]

From: tgrospic

Nažalost nema att. :)

Ali pretpostavljam koja bi greška mogla biti.
Za produkcijski URL prema poreznoj upravi mora se instalirati produkcijski root certifikat.

Isto kao i demo, ali ga nisam stavio u source.
Može se skinuti sa rdc.fina.hr link Verifikacijski/root (samopotpisani) certifikat za RDC CA.

Bitno je registrirati COM komponentu sa skriptom RegisterCOM.cmd koja mora biti u istom folder-u sa FiscalizationCom.dll-om.

Pozdrav
Tomislav

Mar 25, 2013 at 10:42 PM

Imali to kakve veze s operativnim sustavom xp i 7

Lp

ivo

From: tgrospic [email removed]
Sent: Monday, March 25, 2013 8:32 PM
To: ifont@ifont.biz
Subject: Re: ifon [fiscalization:434303]

From: tgrospic

Nažalost nema att. :)

Ali pretpostavljam koja bi greška mogla biti.
Za produkcijski URL prema poreznoj upravi mora se instalirati produkcijski root certifikat.

Isto kao i demo, ali ga nisam stavio u source.
Može se skinuti sa rdc.fina.hr link Verifikacijski/root (samopotpisani) certifikat za RDC CA.

Bitno je registrirati COM komponentu sa skriptom RegisterCOM.cmd koja mora biti u istom folder-u sa FiscalizationCom.dll-om.

Pozdrav
Tomislav

Coordinator
Mar 26, 2013 at 9:28 AM
Ne znam na šta se pitanje odnosi? :)

U mailovima slike i prilozi se ne šalju, jel možeš kopirat tekst greške ovdje.

Inače nema razlike između XP i Windows7, bitno da je instaliran .NET 3.5. Testirao sam na XP, W7, W8.

Pozdrav
Tomislav
Mar 26, 2013 at 4:36 PM

Ok hvala

Lp

ivo

From: tgrospic [email removed]
Sent: Tuesday, March 26, 2013 9:28 AM
To: ifont@ifont.biz
Subject: Re: ifon [fiscalization:434303]

From: tgrospic

Ne znam na šta se pitanje odnosi? :)

U mailovima slike i prilozi se ne šalju, jel možeš kopirat tekst greške ovdje.

Inače nema razlike između XP i Windows7, bitno da je instaliran .NET 3.5. Testirao sam na XP, W7, W8.

Pozdrav
Tomislav

Apr 2, 2013 at 5:49 AM

Neprosoavana noć ;(

Kod upotrbe produkciskog certifikata , prijavi mi prostor uredano a kod potpisivanja računa pošalje zahtjev i prvi prekid i greška 2146233079, iza toga TrustFailure

Radi se o glavi

LP

Hvala

IVO

Coordinator
Apr 2, 2013 at 8:57 AM
Probaj na tom računalu pokrenut VB skriptu.
Npr. test.vbs file:
'.NET COM Interop
Dim cisInterop
Set cisInterop = CreateObject("FiscalizationComInterop")

Dim echo
echo = cisInterop.SendEcho("Uspješno uspostavljena veza sa CIS servisom.")

MsgBox (echo)
Skripta će pozvati echo metodu na produkcijskom CIS servisu.

Ako ne prolazi znači da nema instaliran root certifikat na što sumnjam, da nije poslovni prostor poslan na demo servis?

Nadam se da glava neće pasti! :)

Pozdrav
Tomislav
Apr 2, 2013 at 2:55 PM

Test uspješno prođe,

Šta se tiče certifikata tu bi moga biti problem jer sam sinoć čak par puta deinstaliranom certfikatu i opet dobivao skoro slične poruke.

Što se tiče ROOT cetifikata on je skinut i nadam se instaliran s adrese

· Verifikacijski/root (samopotpisani) certifikat za RDC CA

(SHA1: 4c:4b:ed:f2:a8:d7:64:c1:fe:dc:81:af:d6:37:0f:50:30:7a:0a:12)

A šta se tiče FISKAL 1. Uredno innportan u Persona

Mislim da tu negdje griješim

Sve je ovo radilo na demo certifkatima super

Cod za prostor, za racun cu poslat cim ga poćistim

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'Dim FromPanel As TextBox
Dim xml
Dim o

Set o = CreateObject("Raverus.FiskalizacijaDEV.COM.CentralniInformacijskiSustav")

o.NazivMapeZahtjev = "c:\pk\zahtjev\"
o.NazivMapeOdgovor = "c:\pk\odgovor\"
o.NazivAutoGeneriranje = True

'liva strana

Dim Url As String
Set FromPanel = Forms![mPrinter]!v1k
'
https://cistest.apis-it.hr:8449/FiskalizacijaServiceTest
FromPanel.SetFocus
Url = FromPanel.Text
o.cisurl = Url

Dim OIB As String
Set FromPanel = Forms![mPrinter]!H2L
FromPanel.SetFocus
OIB = FromPanel.Text

Dim guuid
guuid = o.GenerirajUuid()
Dim Vrijeme As String
Dim dan As String
Dim sati As String

dan = Format(Now(), "dd.MM.yyyy")
sati = Format(Now(), "hh:mm:ss")
Vrijeme = dan & "T" & sati

Dim OzPoslProst As String

Set FromPanel = Forms![mPrinter]![F1R]
FromPanel.SetFocus
OzPoslProst = FromPanel.Text

Dim OstTipPP

Set FromPanel = Forms![mPrinter]![F3R] ' način brojenja računa
FromPanel.SetFocus
OstTipPP = FromPanel.Text

Dim RadVrij
Set FromPanel = Forms![mPrinter]![H4R]
FromPanel.SetFocus
RadVrij = FromPanel.Text

Dim DatPocPrimj
Set FromPanel = Forms![mPrinter]![H5R]
FromPanel.SetFocus
DatPocPrimj = FromPanel.Text

Dim Develop
Set FromPanel = Forms![mPrinter]![H5R]
FromPanel.SetFocus
Develop = FromPanel.Text

Dim Ulica
Set FromPanel = Forms![mPrinter]![H3L]
FromPanel.SetFocus
Ulica = FromPanel.Text

Dim Kucnibroj
Set FromPanel = Forms![mPrinter]![H4L]
FromPanel.SetFocus
Kucnibroj = FromPanel.Text

Dim Kucnibrojdod
Set FromPanel = Forms![mPrinter]![H5L]
FromPanel.SetFocus
Kucnibrojdod = FromPanel.Text

Dim Brojposte
Set FromPanel = Forms![mPrinter]![H1R]
FromPanel.SetFocus
Brojposte = FromPanel.Text

Dim Naselje
Set FromPanel = Forms![mPrinter]![H3R]
FromPanel.SetFocus
Naselje = FromPanel.Text

Dim Opcina
Set FromPanel = Forms![mPrinter]![H2R]
FromPanel.SetFocus
Opcina = FromPanel.Text

'KREIRAJ XML

xml = "<?xml version=""1.0"" encoding=""utf-8""?><tns:PoslovniProstorZahtjev xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" Id=""signXmlId"" xmlns:tns=""http://www.apis-it.hr/fin/2012/types/f73""><tns:Zaglavlje><tns:IdPoruke>" & guuid & "</tns:IdPoruke><tns:DatumVrijeme>" & Vrijeme & "</tns:DatumVrijeme></tns:Zaglavlje><tns:PoslovniProstor><tns:Oib>" & OIB & "</tns:Oib><tns:OznPoslProstora>" & OzPoslProst & "</tns:OznPoslProstora><tns:AdresniPodatak><tns:Adresa><tns:Ulica>" & Ulica & "</tns:Ulica><tns:KucniBroj>" & Kucnibroj & "</tns:KucniBroj><tns:KucniBrojDodatak>" & Kucnibrojdod & "</tns:KucniBrojDodatak><tns:BrojPoste>" & Brojposte & "</tns:BrojPoste><tns:Naselje>" & Naselje & "</tns:Naselje><tns:Opcina>" & Opcina & "</tns:Opcina></tns:Adresa></tns:AdresniPodatak><tns:RadnoVrijeme>" & RadVrij & "</tns:RadnoVrijeme><tns:DatumPocetkaPrimjene>" & DatPocPrimj & "</tns:DatumPocetkaPrimjene><tns:SpecNamj>" & Develop & "</tns:SpecNamj></tns:PoslovniProstor></tns:PoslovniProstorZahtjev>"

MsgBox xml

Dim odgovor
Err.Clear
On Error Resume Next
' o.TimeOut = 10

odgovor = o.PosaljiSoapPoruku(xml, "FISKAL 1")
MsgBox odgovor
If Err.Number <> 0 Then
MsgBox Err.Number
MsgBox o.OdgovorGreskaStatus
End If

On Error GoTo 0

Apr 2, 2013 at 2:57 PM

Evo racun, spasimo što se spasiti da.

LP

Ivo

On Error GoTo HandleError

Dim rst As ADODB.Recordset

Dim strSQL As String

Dim strNaziv, strBrojevi, out, prnline As String

Dim strCijena, strKolicina, strIznos As String

Dim strTime, strDate, strBroj_rn, v1k As String

Dim flgSkracivanjeNaziva, flgViseKomada As Boolean

Dim ApplicationID

Dim o

Set o = CreateObject("Raverus.FiskalizacijaDEV.COM.CentralniInformacijskiSustav")

o.NazivMapeZahtjev = "c:\pk\zahtjev\"

o.NazivMapeOdgovor = "c:\pk\odgovor\"

o.NazivAutoGeneriranje = True

'----------------------------------------------------------------------------

Set rst = New ADODB.Recordset

strSQL = "SELECT mrStavke.*, Proizvod.Naziv FROM Proizvod INNER JOIN mrStavke ON Proizvod.Sif_rob = mrStavke.Sif_rob " _

& "WHERE (((mrStavke.Sif_rn)=lngSif_fkt()));"

rst.Open strSQL, CurrentProject.Connection, adOpenKeyset, adLockOptimistic

flgSkracivanjeNaziva = CurrentDb.OpenRecordset("Q_mPrinter")!Skr_naz

strBroj_rn = "RAČUN " & CurrentDb.OpenRecordset("Q_mrZaglavlje")!Broj_rn

'-------------------------------------------------------------------------------------------------------------------------------------

strDate = Str(CurrentDb.OpenRecordset("Q_mrZaglavlje")!Dat_rn)

out = out & FormatPrinter(cNarrow, strBroj_rn, cNarrow, strRN_t, cSingleLine)

out = out & FormatPrinter(cNarrow, "blag. " & strOznaka_o(), cNarrow, strDate, cSingleLine)

If flgSkracivanjeNaziva Then intCijena = 9: intKolicina = 8: intIznos = 9 Else intCijena = 12: intKolicina = 10: intIznos = 12

With rst

.MoveFirst

' zaglavlje stavki

out = out & String(PrinterWidth, "=") & Chr(10)

strKolicina = Right(Space(intKolicina) & "Količina", intKolicina)

strIznos = Right(Space(intIznos) & "Iznos", intIznos)

strCijena = Right(Space(intCijena) & "Cijena", intCijena)

out = out & FormatPrinter(cNarrow, "Naziv", cNarrow, strCijena & " " & strKolicina & " " & strIznos, cMultiLine)

out = out & String(PrinterWidth, "-") & Chr(10)

.MoveFirst

' petlja za ispis

Do While Not .EOF

strNaziv = Left(!Naziv, PrinterWidth)

strCijena = FormatNumber(!Ppc, intCijena + 0, 2)

strKolicina = FormatNumber(!Kol, intKolicina + 0, 3)

strIznos = FormatNumber(Round(!Ppc * !Kol, 2), intIznos, 2)

out = out & FormatPrinter(cNarrow, strNaziv, cNarrow, strCijena & " " & strKolicina & " " & strIznos, Not flgSkracivanjeNaziva)

.MoveNext

Loop

.Close

End With

Set rst = Nothing

out = CreateHeader & out

out = out & String(PrinterWidth, "-") & Chr(10)

If CurrentDb.OpenRecordset("Q_mrZaglavlje")!Izn_rn <> CurrentDb.OpenRecordset("Q_mrZaglavlje")!Izn_rn_r Then

out = out & FormatPrinter(cNarrow, "Ukupno bez popusta:", cNarrow, LTrim(FormatNumber(CurrentDb.OpenRecordset("Q_mrZaglavlje")!Izn_rn, 16, 2)), cMultiLine)

If CurrentDb.OpenRecordset("Q_mrZaglavlje")!St_rab <> 0 Then

out = out & FormatPrinter(cNarrow, "Popust " & Format(CurrentDb.OpenRecordset("Q_mrZaglavlje")!St_rab, "Percent", 2), cNarrow, LTrim(FormatNumber(CurrentDb.OpenRecordset("Q_mrZaglavlje")!Izn_rn - CurrentDb.OpenRecordset("Q_mrZaglavlje")!Izn_rn_r, 16, 2)), cMultiLine)

Else

out = out & FormatPrinter(cNarrow, "Ukupno popust: ", cNarrow, LTrim(FormatNumber(CurrentDb.OpenRecordset("Q_mrZaglavlje")!Izn_rn - CurrentDb.OpenRecordset("Q_mrZaglavlje")!Izn_rn_r, 16, 2)), cMultiLine)

End If

out = out & String(PrinterWidth, "-") & Chr(10)

End If

out = out & FormatPrinter(cNarrow, "UKUPNO kn: ", cNarrow, LTrim(FormatNumber(CurrentDb.OpenRecordset("Q_mrZaglavlje")!Izn_rn_r, 16, 2)), cMultiLine)

out = out & FormatPrinter(cNarrow, "Osnovica: ", cNarrow, LTrim(FormatNumber(CurrentDb.OpenRecordset("Q_mrZaglavlje")!Izn_osn, 16, 2)), cSingleLine)

'zaglavlje poreza--------------------------------

Dim strOPdv, strPdv, strUPdv, strppdv, PDV As String

Dim FromPanel As TextBox

' ispis zaglavlja poreza kod test

' strPdv = FormatNumber(!Ppc, intpdv + 0, 2)

strOPdv = Right(Space(intOPdv) & "Osnovica", intOPdv)

strppdv = Right(Space(intPPdv) & "Iznos", intPPdv)

strUPdv = Right(Space(intUPdv) & "Ukupno", intUPdv)

out = out & FormatPrinter(cNarrow, "PDV", cNarrow, strOPdv & " " & strppdv & " " & strUPdv, cMultiLine)

out = out & String(PrinterWidth, "-") & Chr(10)

strPdv = CurrentDb.OpenRecordset("Q_mrStavke_pdv")!St_pdv * 100 & "%"

strOPdv = CurrentDb.OpenRecordset("Q_mrStavke_pdv")!Pc

strUPdv = CurrentDb.OpenRecordset("Q_mrStavke_pdv")!Ppc

strppdv = CurrentDb.OpenRecordset("Q_mrStavke_pdv")!Ppc - CurrentDb.OpenRecordset("Q_mrStavke_pdv")!Pc

'out = out & "PDV----" & "Osnovica------- " & "Iznos------- " & "Ukupno "

'out = out & strPdv & "-" & strOPdv & "-" & strUPdv & "-" & strppdv

out = out & FormatPrinter(cNarrow, strPdv, cNarrow, strOPdv & "--- " & strppdv & "--- " & strUPdv, cSingleLine)

out = out & String(PrinterWidth, "-") & Chr(10)

out = out & FormatPrinter(cNarrow, "Ukupno", cNarrow, FormatNumber(CurrentDb.OpenRecordset("Q_mrZaglavlje")!Izn_rn, 16, 2), cSingleLine)

out = out & String(PrinterWidth, "-") & Chr(10)

'----------------------------------

If CurrentDb.OpenRecordset("Q_mNaplata").RecordCount > 0 Then

If CurrentDb.OpenRecordset("Q_mNaplata")!Got > 0 Then out = out & FormatPrinter(cNarrow, "Plaćeno: Novčanice ", cNarrow, FormatNumber(CurrentDb.OpenRecordset("Q_mNaplata")!Got, 16, 2), cSingleLine)

If CurrentDb.OpenRecordset("Q_mNaplata")!Cek > 0 Then out = out & FormatPrinter(cNarrow, " ČEK ", cNarrow, FormatNumber(CurrentDb.OpenRecordset("Q_mNaplata")!Cek, 16, 2), cSingleLine)

If CurrentDb.OpenRecordset("Q_mNaplata")!Kartica > 0 Then out = out & FormatPrinter(cNarrow, " KARTICA ", cNarrow, FormatNumber(CurrentDb.OpenRecordset("Q_mNaplata")!Kartica, 16, 2), cSingleLine)

If CurrentDb.OpenRecordset("Q_mNaplata")!Got < 0 Then out = out & FormatPrinter(cNarrow, "Povrat u gotovini: ", cNarrow, FormatNumber(CurrentDb.OpenRecordset("Q_mNaplata")!Got, 16, 2), cSingleLine)

Else

out = out & FormatPrinter(cNarrow, "Plaćeno: Novčanice", cNarrow, LTrim(FormatNumber(CurrentDb.OpenRecordset("Q_mrZaglavlje")!Izn_rn_r, 16, 2)), cMultiLine)

End If

'-------------------------

'fiskalizacija-------------------------------------------------------------------------------------------------------

Dim Url As String

flgSkracivanjeNaziva = CurrentDb.OpenRecordset("Q_mPrinter")!v1k

Url = v1k

o.cisurl = Url

Dim numeriranje, Broj_pr As String

Dim xml

Dim usustPDV As Boolean

Set rst = New ADODB.Recordset

Dim OIB As String

OIB = CurrentDb.OpenRecordset("Q_mPrinter")![H2L]

Dim usustavuPDV As Boolean

Dim H1LE

usustPDV = CurrentDb.OpenRecordset("Q_mPrinter")![H1LE]

Dim guuid

guuid = o.GenerirajUuid()

Dim Vrijeme As String

Dim dan As String

Dim sati As String

dan = Format(Now(), "dd.MM.yyyy")

sati = Format(Now(), "hh:mm:ss")

Vrijeme = dan & "T" & sati

Dim vrijemeR As String

Dim danR As String

Dim satiR As String

Dim vrijemeF As String

vrijemeR = CurrentDb.OpenRecordset("Q_mrZaglavlje")!Dat_rn

danR = Format(Now(), "dd.MM.yyyy")

satiR = Format(Now(), "hh:mm:ss")

vrijemeR = danR & "T" & satiR

vrijemeF = danR & " " & satiR

Set rst = New ADODB.Recordset

rst.Open "Q_mrBroj_pr", CurrentProject.Connection, adOpenKeyset, adLockOptimistic

Dim brojr As String

brojr = CurrentDb.OpenRecordset("Q_mrBroj_pr")!Broj

Dim BrojPP As String

BrojPP = CurrentDb.OpenRecordset("Q_mrBroj_pr")!Sif_oj 'strOzn_oj()

Dim BrojPR As String

BrojPR = CurrentDb.OpenRecordset("Q_mrBroj_pr")!Broj_blg

Dim BrojNU

BrojNU = CurrentDb.OpenRecordset("Q_mrBroj_pr")!Broj_blg

Dim I25 As String

I25 = CurrentDb.OpenRecordset("Q_mrZaglavlje")!Izn_osn

Dim Izn_pdv, Izn_osn As String

Dim PDV25, Osnovica25F, PDV25F, Osnovica25, PDV25PF As String

Izn_osn = FromPanel.Text

Osnovica25F = Format(Izn_osn, "###0.00")

'Osnovica25F = Replace(Osnovica25PF, ",", ".")

PDV25F = CurrentDb.OpenRecordset("Q_mrZaglavlje")!Izn_pdv

' FromPanel.SetFocus

PDV25 = FromPanel.Text

PDV25F = Format(Izn_pdv, "###0.00")

PDV25F = Replace(PDV25PF, ",", ".")

If Osnovica25 <> 0 Then I25 = "<tns:Porez><tns:Stopa>25.00</tns:Stopa><tns:Osnovica>" & Osnovica25F & "</tns:Osnovica><tns:Iznos>" & PDV25F & "</tns:Iznos></tns:Porez>" Else I25 = ""

Dim I10, I22

I10 = CurrentDb.OpenRecordset("Q_mrZaglavlje")!Izn_pdv

Dim I05

I05 = CurrentDb.OpenRecordset("Q_mrZaglavlje")!Izn_pdv

Dim I23

Dim I0

Dim IznosRacF, IznosRac, IznosRacPF As String

IznosRacF = CurrentDb.OpenRecordset("Q_mrZaglavlje")!Izn_rn_r

IznosRacPF = Format(IznosRac, "###0.00")

IznosRacF = Replace(IznosRacPF, ",", ".")

Dim NacinPL

Dim OibOp

OibOp = CurrentDb.OpenRecordset("radnik")!Jmbg

Dim zki As String

out = out & String(PrinterWidth, "-") & Chr(10)

zki = o.ZastitniKodIzracun("FISKAL 1", OIB, vrijemeF, brojr, BrojPP, BrojNU, IznosRacF)

out = out & FormatPrinter(cNarrow, "ZKI:", cNarrow, zki, cMultiLine)

Dim NakDos, ParBlo As Boolean

' NakDos = CurrentDb.OpenRecordset("Q_mrZaglavlje")![NakDos]

'Dim parag As String

Dim paragN As String

' ParBlo = CurrentDb.OpenRecordset("Q_mrZaglavlje")!ParBlo

' parag = ParBlo

'If parag <> "" Then paragN = "<tns:ParagonBrRac>" & parag & "</tns:ParagonBrRac>" Else paragN = ""

Dim p1xml As String

Dim p2xml As String

p1xml = "<?xml version=""1.0"" encoding=""utf-8""?><tns:RacunZahtjev xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" Id=""signXmlId"" xmlns:tns=""http://www.apis-it.hr/fin/2012/types/f73""><tns:Zaglavlje><tns:IdPoruke>" & guuid & "</tns:IdPoruke><tns:DatumVrijeme>" & Vrijeme & "</tns:DatumVrijeme></tns:Zaglavlje><tns:Racun><tns:Oib>" & OIB & "</tns:Oib><tns:USustPdv>" & usustPDV & "</tns:USustPdv><tns:DatVrijeme>" & vrijemeR & "</tns:DatVrijeme><tns:OznSlijed>" & numeriranje & "</tns:OznSlijed><tns:BrRac><tns:BrOznRac>" & brojr & "</tns:BrOznRac><tns:OznPosPr>" & BrojPP & "</tns:OznPosPr><tns:OznNapUr>" & BrojNU & "</tns:OznNapUr></tns:BrRac><tns:Pdv>" & I25 & I23 & I22 & I10 & I0 & "</tns:Pdv><tns:IznosUkupno>" & IznosRacF & "</tns:IznosUkupno><tns:NacinPlac>" & NacinPL & "</tns:NacinPlac><tns:OibOper>" & OibOp & "</tns:OibOper><tns:ZastKod>" & zki & "</tns:ZastKod><tns:NakDost>" & NakDos & "</tns:NakDost>" & paragN & "</tns:Racun></tns:RacunZahtjev>"

p2xml = Replace(p1xml, "True", "true")

xml = Replace(p2xml, "False", "false")

MsgBox xml

'https://cis.porezna-uprava.hr:8449/FiskalizacijaService

Dim odgovor

Dim jir

Err.Clear

On Error Resume Next

' o.TimeOut = 10

odgovor = o.PosaljiSoapPoruku(xml, "FISKAL 1")

jir = o.DohvatiJir(odgovor)

If Err.Number <> 0 Then

MsgBox Err.Number

MsgBox o.OdgovorGreskaStatus

End If

On Error GoTo 0

''-----------------------------------------------kraj fiskalizacije

out = out & String(PrinterWidth, "-") & Chr(10)

out = out & IspisR1 & Chr(10) & CreateFooter

out = out & Chr(10)

out = out & Chr(10)

out = out & Chr(10)

out = out & Chr(10)

out = out & Chr(10)

out = out & Chr(10)

out = out & Chr(10)

out = out & Chr(10)

out = out & "m"

PosPrint (out)

ExitHere:

Exit Function

HandleError:

dlgStrPoruka (Err.Number)

Resume ExitHere

End Function

Coordinator
Apr 2, 2013 at 4:58 PM
:) Ovo je primjer kôda koji koristi Raverus-ov dll, pa je možda bolje da na njihovom codeplex site-u postaviš pitanje.
http://fiskalizacija.codeplex.com/

Pozdrav
Tomislav