Dokaz DOS / Windows vremenske diskrepancije?

Jun 23 at 3:23 PM
Edited Jun 23 at 3:27 PM
slike
Gornja slika prikazuje DOS kasu (u prozoru) koja vrti sat (16:07:59) u gornjem desnom kutu i otvoren prozor od Windowsa (Date and time properties) (16:08:00). Razlika je manja od 1 sekunde, ali sam ulovio sliku točno na prelasku nove minute (može se ovako naštimati i na prelazak dana/mjeseca/godine).

Da li je ovo pravi dokaz o različitom mjerenju vremena između DOS i Windows okoline? Meni se čini da jeste. Na žalost i dalje nemam podatak o tome kolika je razlika s onime što šalje kombinacija Raverus/Fiska, tj. da li je to unutar 1 sekunde ili veća. Po ovome, ne bi trebala biti veća od 1 sec.
Jun 24 at 1:49 PM
Ovakav test pokazuje da kod mene DOS kasa kasni za nekih pola sekunde (testirano na Intel i7 procesoru).

Predlažem slijedeći test. Pokreni kasu i promjenu vremena kao na slici. Promijeni Windows vrijeme za recimo 1 sat. Da li će pokrenuta kasa uvažiti promjene windows vremena ili moraš ići na "kraj rada" i ponovo ju pokrenuti? Kod mene se kasa mora ponovo pokrenuti. Baš me zanima kako ovo radi kod tebe.

Ako kasa ne uvaži windows promjenu vremena, to znači da DOS tj. NTVDM ima svoj interni clock za mjerenje vremena. Da prilikom pokretanja pročita Windows vrijeme, a dalje se drži svog clocka. Kasa se obično ujutro pokrene pa do navečer može doći do razlike od nekoliko sekundi.
Coordinator
Jun 27 at 8:48 AM
Moguće je da je problem u tome - no - najbolje bi bilo kada bi pogledao XML datoteke RacunZahtjev koje generira Raverus - nisam baš siguran kako radi Fiska po tom pitanju, možda da se i bbanko uključi ovdje u raspravu. Uglavnom, Raverusu je moguće reći da svaki XML koji pošalje u CIS (Zahtjev) i svaki XML koji primi iz CIS-a (Odgovor) spremi u neki folder na disku. U tom slučaju je moguće pogledati XML zahtjeva, neposredno nakon fiskalizacije, gdje se mogu vidjeti vremena što se može usporediti za podacima u bazi odnosno sa sistemskim vremenom.
Jun 27 at 11:28 AM
Edited Jun 27 at 11:34 AM
**damir_ wrote:**
Ovakav test pokazuje da kod mene DOS kasa kasni za nekih pola sekunde (testirano na Intel i7 procesoru).

Predlažem slijedeći test. Pokreni kasu i promjenu vremena kao na slici. Promijeni Windows vrijeme za recimo 1 sat. Da li će pokrenuta kasa uvažiti promjene windows vremena ili moraš ići na "kraj rada" i ponovo ju pokrenuti? Kod mene se kasa mora ponovo pokrenuti. Baš me zanima kako ovo radi kod tebe.

Ako kasa ne uvaži windows promjenu vremena, to znači da DOS tj. NTVDM ima svoj interni clock za mjerenje vremena. Da prilikom pokretanja pročita Windows vrijeme, a dalje se drži svog clocka. Kasa se obično ujutro pokrene pa do navečer može doći do razlike od nekoliko sekundi.
Ne, kod mene se promjenom Windows vremena promijeni i vrijeme u NTVDM-u (XP SP3) i obratno. Doduše, sat u gornjem desnom kutu mog DOS prozora se ne osvježi, ali to je zato što procedura koja vrti datum/vrijeme ne čekira promjenu datuma i vremena nakon pokretanja nego gura svoje (neka TSR rutina). Komanda TIME ili vrijeme koje prikazuje NC/VC (Norton/Volcov Commander) pokaže da je u DOSu vrijeme promijenjeno u skladu sa Windowsima (bez da izlazim i ulazim ponovo u NTVDM).

Isto tako, kad pokrenem DOS kasu, koristim FISKU da mi preko neta ponudi "stvarno" vrijeme i onda to komadama DATE/TIME (kroz DOS) uskladim. Kad to uradim, istovremeno se promijeni i Windows vrijeme (ali uvijek ima onih cca pola sekunde diskrepancije). Zaključak je da DOS i Windows "surađuju" glede promjene vremena, barem na ovaj način.

Doduše, moram napomenuti da kad sam ugrađivao ovo ažuriranje vremena uz pomoć Fiske i Clipper komandi za promjenu vremena, nije mi funkcioniralo kako treba, vjerojatno stoga što Clipper pristupa vremenu drugačije (BIOS ili OS) pa to nije išlo. Umjesto Clippera, koristim DOS komande DATE i TIME kako bih promijenio ono što mi vrati Fiska (koja to očita sa neta) i to se trenuto reflektira na Windows date/time.

@_damir: to što si testirao sa coreI7 očigledno nema nikakve veze, jer je kašnjenje otprilike isto i na mojoj test mašini (core 2 duo T7500).

Problem je samo što i dalje ne znam kolika je diskrepancija, jer nemam čitav XML koji se šalje. Trebalo bi to sad malo testirati Wiresharkom, ali mislim da bi bilo korisnije ažurirati Fisku tako da imamo čitav XML (to bi svakako bilo dobrodošlo) pa da onda ganjamo bugove.
Jun 28 at 11:44 AM
viggor wrote:

Namjerno sam testirao na jakom kompu, da se vidi da nema razlike...

Napomena: DOS komande DATE i TIME na Win8 (očekujem i na Win7) imaju učinka samo ako je pokrenuto sa "Run as administrator".
Jun 28 at 10:38 PM
Edited Jun 28 at 10:41 PM
**damir_ wrote:**
Napomena: DOS komande DATE i TIME na Win8 (očekujem i na Win7) imaju učinka samo ako je pokrenuto sa "Run as administrator".
Nisam siguran, čini mi se da Win10 nije pravio problem oko toga, ali moram priznati da nisam tad bio zaokupljen ovim problemom. No, rješenje je da se BAT/CMD/PIF fajl pokrene kao admin, ako je to već potrebno.
Win7 nije ni blizu tako zasran "zaštitama" kao w8 pa na dalje. M$ se sve više ugleda na Linux/Unix zajednicu.
Jul 6 at 2:14 PM
Sada mi je alucajno palo na pamet? Sta ako je vrijeme i datum na racunalu krivo? Tada bi se po meni javljala ta greska. Jer ako je danas nor. 6.7. A datum na pc je greskom 1.7. rcun ce se fiskaliziratisa 1.7.
Jul 6 at 7:36 PM
Edited Jul 6 at 7:37 PM
viggor wrote:
Doduše, sat u gornjem desnom kutu mog DOS prozora se ne osvježi
Mislim da se nismo razumili. Probaj pokrenuti Clipper editor, a ne exe datoteku (kasu). U Windowsima promjeni vrijeme za recimo 1 sat pa samo klikni na clipper (daj mu fokus) i reci mu da ispiše vrijeme (bez ponovnog pokretanja).

Probao sam to sa Xtgold-om. Pokrenuo command prompt, pokrenuo Xtgold, promjenio Windows vrijeme, Xtgold pokazuje staro-pogrešno vrijeme! Tada sam izašao iz Xtgolda, vratio se u command prompt i zatim ponovo pokrenuo Xtgold. Sad pokazuje ispravno vrijeme.
Jul 6 at 8:00 PM
moremore wrote:
Sada mi je alucajno palo na pamet? Sta ako je vrijeme i datum na racunalu krivo? Tada bi se po meni javljala ta greska. Jer ako je danas nor. 6.7. A datum na pc je greskom 1.7. rcun ce se fiskaliziratisa 1.7.
tako je, imao sam nekoliko takovih slucajeva
Jul 7 at 4:35 PM
Edited Jul 8 at 12:21 AM
moremore wrote:
Sada mi je alucajno palo na pamet? Sta ako je vrijeme i datum na racunalu krivo? Tada bi se po meni javljala ta greska. Jer ako je danas nor. 6.7. A datum na pc je greskom 1.7. rcun ce se fiskaliziratisa 1.7.
Ovo nema veze sa navedenom greškom - to o čemu govori moremore je krivi datum (ili vrijeme), a nas zezaju zbog manjeg (dakle ranije) vremena SLANJA od vremena IZDAVANJA računa, što u praksi ne bi trebalo biti (prvo IZDAŠ račun pa ga onda ŠALJEŠ, a u CISu se to vidi obratno). Problem nije u krivom datumu ili vremenu, već u razlici koja nastaje usljed rada u 2 okoline (DOS/WIN) - vrijeme slanja, koje automatski šalje Raverus komponenta i uzima ga od Windowsa i naših DOS aplikacija, koje bilježe vrijeme IZDAVANJA računa iz DOS-a. NTVDM koji upravlja "DOS-om" očigledno malkice kasni za Windows vremenom, tako da račun bude potpisan i poslan u CIS prije nego što do Windowsa dospije ono DOS vrijeme IZDAVANJA računa (cca pola sekunde). I tu, (po mojim, našim ???) pretpostavkama nastaje razlika koju CIS/APIS/PU prijavljuje kao nepravilnost u izdavanju računa.

Dakle, rješenja ima više, najbolje (kako mi ne bi razbijali glavu) bi bilo da Raverus komponenta ne dopusti vremenu slanja da bude manje od izdavanja (kontrola na nivou sekunde). Raznorazna pauziranja i ručna vraćanja vremena izdavanja računa samo kompliciraju stvari i kad tad će se desiti da netko vrati sekundu u 00:00:00 na 23:59:59, a zaboravi vratiti dan/mjesec/godinu u tom trenutku i eto belaja.

EDIT: druga varijanta bi bila da Raverus uopće ne šalje sam vrijeme, nego da mu se to pošalje kao parametar (pa ćemo sami konotrolirati oba vremena), što je nrasinec naglasio da već postoji mogućnost, samo treba RTFM.
Jul 7 at 9:21 PM
Slažem se sa viggorom da Raverus napravi kontrolu da li je vrijeme slanja računa manje od vremena izdavanja. Ako je manje, prihvati vrijeme izdavanja računa!!
Suprotno, ako je vrijeme slanja računa do 5 (možda 10?) minuta veće od vremena izdavanja računa, prihvati vrijeme izdavanja.
Manji je problem neispravno vrijeme u kompu nego razlika u vremenu izdavanja i slanja.
Coordinator
Jul 8 at 7:13 AM
Dajte svoj glas ovdje: https://fiskalizacija.codeplex.com/workitem/1152 ili otvorite novi issue, da se riješi za slijedeću nadogradnju...
Jul 8 at 9:46 AM
Edited Jul 8 at 9:47 AM
**damir_ wrote:**
Slažem se sa viggorom da Raverus napravi kontrolu da li je vrijeme slanja računa manje od vremena izdavanja. Ako je manje, prihvati vrijeme izdavanja računa!!
Suprotno, ako je vrijeme slanja računa do 5 (možda 10?) minuta veće od vremena izdavanja računa, prihvati vrijeme izdavanja.
Manji je problem neispravno vrijeme u kompu nego razlika u vremenu izdavanja i slanja.
Ne slažem se s tvojom drugom tvrdnjom - ako je vrijeme slanja "bilo koliko" veće od vremena izdavanja, onda to nije bitno, neka uzme to veće vrijeme, jer se možda radi o ponovljenom slanju. Bitno je samo da slanje ne bude manje od izdavanja, jer je to, logično, greška.
Sa tvojom trećom tvrdnjom, da je "manji problem neispravno vrijeme...", se slažem samo djelomično. Naime, to je OK ako se radi o maloj razlici, npr. unutar 1 radnog dana, nije vrijeme naštimano kako treba, ali ako je (zbog stare CMOS baterije) datum/vrijeme vraćen na "2000 i neku", onda to predstavlja ozbiljan problem. I ne znam kako to legalno riješiti ako se dogodi, kome javiti, što napraviti kad vam kasa izda račun sa 2001. godinom (nisam imao još slučaj) ???
Jul 8 at 11:09 AM
Ovaj dio i mene zanima, slažem se sa mišljenjem viggor-a.. mi smo tako napravili na nivou tag-a.
<tns:Zaglavlje>
<tns:IdPoruke>5ef76788-f375-442c-839f-8d2ad096c500</tns:IdPoruke>
<tns:DatumVrijeme>07.07.2016T21:55:35</tns:DatumVrijeme>
</tns:Zaglavlje>
Kod njegovog kreiranja uspoređujemo vrijeme računa i slanja. Ovo nam vrijeme može biti samo jednako vremenu kreiranja računa. Gornje vrijeme ne kontroliramo.. Nije idealno ali izgleda malo bolje od ovih grešaka koje dobivamo da je račun poslan prije kreiranja..
Jul 8 at 4:39 PM
**damir_ wrote:**
Probao sam to sa Xtgold-om. Pokrenuo command prompt, pokrenuo Xtgold, promjenio Windows vrijeme, Xtgold pokazuje staro-pogrešno vrijeme! Tada sam izašao iz Xtgolda, vratio se u command prompt i zatim ponovo pokrenuo Xtgold. Sad pokazuje ispravno vrijeme.
Točno je ovo što ti tvrdiš. I sam sam došao do istog rezultata - ako promijeniš Windows vrijeme dok DOS aplikacija radi, ona ga ne uzme u obzir dok se ne prekine i ponovo pokrene. Međutim, mislim da to nema veze sa problemom koji prijavljuje porezna, tj. da je "slanje manje od izdavanja". DOS jednostavno sam od sebe malo kasni za Windowsima, a koristimo obje platforme za "krcanje" XML fajla i u tome grmu leži zeko. Zašto DOS kasni, to treba pitati M$, tj. one koji su onemogućili razvoj NTVDM-a u korist PowerShell-a (koji je valjda mnogo moćniji od CMD-a, ali ga rijetko tko koristi jer je prekompliciran, a meni osobno se čini da baš i nije neka brzica).
Jul 8 at 11:49 PM
Predlažem svima slijedeći test. Na računalu (napomenuti starost i OS) pokrenuti DOS program, ostaviti ga da radi barem pola dana i usporediti DOS-Windows vrijeme. Uvjeren sam da će na nekim računalima to raditi kako treba (uz spomenutu razliku od cca pola sekunde), ali je interesantna količina računala na kojima to radi kako treba. Sutra javim rezultat sa vremešnog WinXP kompa i jedne Win8.1 "pile".
Jul 10 at 8:15 PM
Rezultati navedenog testa su zanimljivi. U početku je DOS vrijeme kasnilo za Win vremenom za dijelić sekunde. Nakon 30 sati rada, DOS vrijeme je bilo VEĆE od Windows vremena (DOS sat ide naprijed) na oba kompa! Na starom WinXP kompu skoro za 1 sekundu, a na Intel i7 / Win8.1 kompu više od 1 sekunde.
Unutar tih 30 sati testiranja pratio sam "prolazno vrijeme". DOS vrijeme je sve više i više išlo naprijed, da sam nastavio test, razlika bi bila još veća.
Jul 10 at 8:35 PM
@damir_

Svaka čast na ovakvom testu, koji jasno pokazuje da Windowsi baš i ne vode brigu što se događa pod NTVDM-om. Odavno je poznato kako je NTVDM mogao biti napisan puno bolje, da nije M$ politike tipa "baš nas briga za staro, makar bilo i naše". Dok čekam da nrasinec nešto promijeni u Raverusu (ako bude), ja uvodim dodatnu pauzu od cca 1 sec, tako da ne bude kašnjenja. To što DOS, nakon 30 sati rada, ubrzava, ne predstavlja problem, barem ne oko izdavanja i slanja računa.