Račun bez ZKI u DOS.SysTray-u

Apr 7, 2013 at 10:06 PM
Kod nekih vrlo rijetko, a kod nekih češće-povremeno izlazi račun bez ZKI i bez JIR. Koristim DOS.SysTray verzije 2.3 i 2.7 te .NETFramework 2.0

U svom prg-u radim slijedeće:
  • obrišem request.txt i response.txt, ako ima
  • kreiram request.txt
  • čekam response.txt vrteći petlju 2 sekunde duže od upisanog u SysTray-u
  • kad se pojavi response.txt pročitam ga i upišem podatke
  • provjeravam da li ima ZKI, ako nema, zatražim SAMO ZKI !!!
  • izdajem račun
Korisnici naknadno fiskaliziraju tako da ne znam kako izgleda XML. bbanko XML upisuje pod ispim nazivom tako da se prethodni obriše.

Razmišljao sam o slijedećem: bbanko prvo kreira datoteku response.txt na disku, a zatim upisuje JIR, ZKI i UUID. Moj program vidi postojanje response.txt i pročita ga prije nego se upišu podaci. Da li je moguće da pročitam response.txt prije nego se popuni podacima?

Ovo je ozbiljan problem pa me zanima da li se to još nekom događa?
Apr 8, 2013 at 9:43 AM
Edited Apr 8, 2013 at 9:46 AM
da, i ja sam imao nekoliko računa koji na ispisu nisu imali ZKI i JIR, a u logu imam xml-ove

sad radim na tome da kopiram response.txt i preimenujem u response+brojracuna prije brisanja.
ako mi se u bazi ne pojave ZKI i JIR otvaram kopiranu datoteku.

preko vikenda ću postaviti novu verziju kod korisnika, ali možda netko ima pametnije rješenje?
Apr 8, 2013 at 11:06 PM
Ja ne dopustam ispis racuna ako nema ZKI-a. Nisam vodio evidenciju koliko se takvih pojavilo (ako jeste). No, meni se desio slucaj da je nesto krivo uletjelo u REQUEST (djelomicno ispravni ali pogresni parametri). Dobio sam ZKI, ali ne i JIR. Mozda je odbijen od CIS-a zbog OIB-a 00000000001, koji je matematicki ispravan, ali ne postoji i ja ga koristim za neke specijalne operacije. Posto kod naknadne fiskalizacije usporedjujem prvobitni ZKI sa onim dobivenim kod ponovnog slanja, desilo se to da su bili razliciti (zbog krivog OIB-a pri prvom slanju).

Obzirom da mi se to dosad desilo samo jedanput (program ne dopusta daljnji rad, moram intervenirati) na jednoj kasi, nije mi jasno odakle je pokupio te krive podatke. Znam, reci cete, bug u programu, ali temeljito sam sve pregledao, taj komad komunikacije sa Fiskom sam napravio dosta citko i jednostavno, tako da nema uleta sa strane. Jednio mi pada na pamet da je Clipper u nekom mili-bili-zili-woodoo trenutku nesto pobrljao sa array-ima, koje koristim i onda pljunuo van nesto krivo. Sreca pa je bbanko napravio log-ove iz kojih sam kasnije, barem djelomicno, rekonstruirao zasto ZKI nisu bili isti.

BTW (ako radite u DOS-u), 2 podpitanja:

1.) Obzirom da ce se nakupiti masa XML-ova u LOG folderu (milion malih fajlova, fragmentacija, pametno ih je cuvati, itd), jeste li smislili neki pametan automatski nacin zipovanja, arhiviranja ili nesto slicno?

2.) Cime redirigujete LPT/COM na USB portove? Ja koristim free PrintFile (malkice je spor), neki koriste odlican bbankov DOSprint(er), a neki kreiraju LPT port via net/share komandi. Mene to najvise muci kod PC-a koji nemaju LPT na sebi (uopce ne postoji u DeviceManageru pa ne funkcionira "Enable printer pooling"), nego samo USB-ove. Najpouzdanije besplatno rjesenje mi je taj PrintFile, ali bih ga rado zamijenio necim brzim - nekad reagira odmah, nekad mu treba koja sekunda (pre)vise (plus koja sekunda za fiskalizaciju, natovari se ukupno malo puno sekundi za neke vrste djelatnosti).
Apr 9, 2013 at 9:40 AM
Jedan moj kolega koji koristi DOS.SysTray isto ima problema, nisam mu ja radio program pa neznam do čega je, ali znam da mu npr. 3 računa izađu u redu, 2 ne dobiju JIR (nema čekanja, odmah ga ispiše) a svako toliko ne dobije ni JIR ni ZKI.
Apr 9, 2013 at 12:18 PM
moremore wrote:
Jedan moj kolega koji koristi DOS.SysTray isto ima problema, nisam mu ja radio program pa neznam do čega je, ali znam da mu npr. 3 računa izađu u redu, 2 ne dobiju JIR (nema čekanja, odmah ga ispiše) a svako toliko ne dobije ni JIR ni ZKI.
Gle,

kako viggor kaze : racun se ne bi smio ispisati bez ZKI-a !!!!!!
ZKI je kontrolno broj koji generira KORISNIK PROGRAMA i bez njega racun ne bi smio izaci van. Bez JIR-a moze, posto se JIR moze naknadno dobiti kod naknadne fiskalizacije.
Toj kolega ( kako kazes ) ima gresku u programu, tj nema neko određeno vrijeme čekanja da dobije ako ne JIR, onda barem ZKI .
To vidim po tvojoj rečenici :" (nema čekanja, odmah ga ispiše) ".
Znači program bi trebao sačekati koju sekundu više od onoga kaj je definirano u Fiski.
Apr 10, 2013 at 4:34 PM
napravio sam slijedeće:

For x= 1 to 15 Step 1
 pričekaj sekundu
 ako postoji response.txt pročitaj JIR
       ako JIR ima 36 znakova idi na ispis
       ako nema vrati se na početak petlje
 ako ne postoji response.txt vrati se na početak petlje
Next x

ako nema odgovora nakon 15 sekundi
 izračunaj zki
 ispiši račun sa zki

postavljeno na dvije lokacije, ako sve bude u redu ide i na ostale.
Apr 10, 2013 at 6:50 PM
Ovako bi otprilike to izgledalo kod mene, napisano na nekom para-jeziku, koji je nadam se razumljiv bez obzira na konkretan jezik.
function GetZKIJIR(zahtjev,sekunde)

   do while true
      odgovor := Send2Cis(zahtjev,sekunde)
      if badZKI(odgovor)
         upit("Ponovi","ZKI","Prekini")
         if upit = 1
            if PARAGON_MOD_ACTIVE
               zahtjev := "P"
            else
               zahtjev := "R"
            endif
            repeat_do/while
         elseif upit = 2
            zahtjev := "Z"
            repeat_do/while
         else
            return ""
         endif
      else
         exit_do/while
      endif
   end do
return odgovor

function Send2CIS(zaht,sek)

  ... pripremi podatke ...
  ... kreiraj i kopiraj request fajl ...

  ... provjeravaj odgovor (svakih 1/2 sekunde, zato je parametar x 2)...
  for k := 1 to sek*2
      if exist(answer_file)
         exit_for/next
      endif
      wait_1/2_sec
      if ESCAPE_KEY
         exit_for/next
      endif
  next k

  if exist(answer_file)
     odg := readfrom(answer_file)
  else
     odg := ""
  endif
return odg

Apr 11, 2013 at 12:54 PM
GoranV13 wrote:
moremore wrote:
Jedan moj kolega koji koristi DOS.SysTray isto ima problema, nisam mu ja radio program pa neznam do čega je, ali znam da mu npr. 3 računa izađu u redu, 2 ne dobiju JIR (nema čekanja, odmah ga ispiše) a svako toliko ne dobije ni JIR ni ZKI.
Gle,

kako viggor kaze : racun se ne bi smio ispisati bez ZKI-a !!!!!!
ZKI je kontrolno broj koji generira KORISNIK PROGRAMA i bez njega racun ne bi smio izaci van. Bez JIR-a moze, posto se JIR moze naknadno dobiti kod naknadne fiskalizacije.
Toj kolega ( kako kazes ) ima gresku u programu, tj nema neko određeno vrijeme čekanja da dobije ako ne JIR, onda barem ZKI .
To vidim po tvojoj rečenici :" (nema čekanja, odmah ga ispiše) ".
Znači program bi trebao sačekati koju sekundu više od onoga kaj je definirano u Fiski.
Nije problem u neispisivanju računa bez ZKI, nego u tome što ne dobijem ZKI na izričiti zahtijev. Čekam 2 sekunde duže nego što je definirano u Fiski.

Dokučio sam u čemu je problem (u protekla 4 dana nije se pojavio rč. bez ZKI na lokaciji gdje se to svakodnevno događalo). Pročitao sam response.txt prije nego se popunio podacima!
Napravio sam slijedeće:
  • kontinuirano čekam response.txt
  • kad dobijem odgovor da postoji response.txt pričekam pola sekunde i pročitam podatke.