Nove funkcije #31295
ZatvorenBrzo switchanje podataka ranijih sezona - ranijih poslovnih godina
100%
Izmjenjeno od Ernad Husremović prije skoro 13 godina
ako u sezonske baze - baze ranijih godina vratimo flag "read-only"
ako dodamo datum_zakljucavanja na serveru i taj parametar isti pohranimo i lokalno u ~/.fmk.ini
onda reći:
if db_read_only and datum_zakljucavanja(server) <= datum_zakljucavanja(klijent)
nema potrebe raditi sync
endif
algoritam je analogan načinu provjere verzije na serveru
Bitno je međutim radi eventualnih oštećenja lokalnih dbf-ova obezbjediti korisniku da forsirano uradi sinhronizaciju lokalnih podataka
Izmjenjeno od Ernad Husremović prije skoro 13 godina
Bitno je međutim radi eventualnih oštećenja lokalnih dbf-ova obezbjediti korisniku da forsirano uradi sinhronizaciju lokalnih podataka
to će se obezbjediti sa #31296
Izmjenjeno od Ernad Husremović prije skoro 13 godina
- Naslov promijenjeno iz Brzo switchanje u sezonama u Brzo switchanje podataka ranijih sezona - ranijih poslovnih godina
Izmjenjeno od Saša Vranić prije skoro 13 godina
što nam je bitan datum zaključavanja servera i klijenta ?
zar nije samo bitan
readonly = TRUE ili FALSE
Izmjenjeno od Saša Vranić prije skoro 13 godina
Kod svičanja godina se koristi funkcija koja radi sinhronizaciju podataka te provjerava i stanje dbf fajlova, pa radi full sink po potrebi...
Praktično kod ulaska tu će biti parametar koji će se gledati, ako je readonly onda to ništa neće raditi, jednostavno će ući bez sinka
Izmjenjeno od Saša Vranić prije skoro 13 godina
a to je post_login funkcija, koja se koristi unutar klase company_db_relogin
Izmjenjeno od Ernad Husremović prije skoro 13 godina
što nam je bitan datum zaključavanja servera i klijenta ?
05.05 urađen lock datum_zakljucavanja=05.05
06.05 pristupam bazi
07.05 radim administrator radi izmjene datum_zakljucavanja=07.05
08.05 pristupam bazi i vidim da je moj lokalni datum_zakljucavanja 05.05 < server datum_zakljucavanja 07.05 znači da moram ponovo uraditi sync - najsigurnije full sync
Izmjenjeno od Ernad Husremović prije skoro 13 godina
ispravka: vijeme_zaključavanja (timestamp varijabla)
Izmjenjeno od Saša Vranić prije skoro 13 godina
ma ja, tu je,
praktično u njoj treba obraditi parametar read_only
Izmjenjeno od Saša Vranić prije skoro 13 godina
hm... ovo je praktično zaobilaženje prvog init sinkanja, kod startanja aplikacije
ako ovo zaobiđem i odem recimo na karticu finansijku i bilo je promjena nekih, meni će se sinhronizacija odraditi opet
znači, ovo što sam gore naveo je samo inicijelni sink kod ulaska...
nije ni to loše, ako bude bilo šta za pokupiti pokupiti će se
Izmjenjeno od Ernad Husremović prije skoro 13 godina
znači, dovoljno je da se uvede read_only - timestamp varijabla.
binarna read_only varijabla ne sadrži dovoljno informacija
Izmjenjeno od Saša Vranić prije skoro 13 godina
zaključavanje baze znači da se niti jedan podataka ne bi smjeo izmjeniti nakon toga,
to znači obradu ovog parametra na
- common/sifrarnici_browse
- moduli/ažuriranje, povrat, itd....
- svaka ostala izmjena podatka
kada je parametar uključen neće se dešavati:
- init syncro
- svaki sinhro kod ulaska u tabele O_TABELA
ne sviđa mi se baš ideja štimanja parametara po radnim stanicama, jer to bi značilo da imamo globalni parametar a i klijentski ini ili pg parametar svejedno, što znači da bi i svaka stanica trebala da setuje svoj klijentski parametar
pogotovo tamo gdje je više stanica... to nije baš jednostavno
Ako zaključamo bazu (na globalnom nivou) praktično sve ono što sam gore naveo ne bi trebalo da se dešava, a time ne bi trebalo da se dešava ni semaforanje.
A postoji li mogućnost setovanja na serverskoj strani, zabrane INSERT, DELETE, UPDATE ? ili nešto slično, na nivou baze
Izmjenjeno od Saša Vranić prije skoro 13 godina
Izmjenjeno od Ernad Husremović prije skoro 13 godina
nikakvo štimanje parametra po radnim stanicama nije ni predviđeno.
kako sam gore rekao - analogno je upgrade-u baze.
u config datoteci se nakon sinhronizacije i čitanja parametra read_only sa servera ovaj parametar postavlja lokalno.
isto kao što se setuje verzija baze.
- Admin zaključa kao readonly bazu 05.05 u 15:00 => server read_only = 2013050515:00
- nijedan klijent nema setovan read_only
- klijent na serveru nađe read_only - kod sebe ga nema => full sync. nakon synca setuje lokalno readonly = 2013050515:00
nikakva ručna intervencija nije predviđena
Izmjenjeno od Ernad Husremović prije skoro 13 godina
Saša Vranić je napisao/la:
http://stackoverflow.com/questions/760210/how-do-you-create-a-read-only-user-in-postgresql
pusti se ovoga
Izmjenjeno od Saša Vranić prije skoro 13 godina
ako bi imali dva parametra
- globalni / read_only_lock / 05.05.2013
- korisnički / read_only_lock / 05.05.2013
praktično, korisnik koji bi zaključao bazu, odmah bi setovao
- globalni
- i svoj korisnički (isti datum)
ostali korisnici, prilikom ulaska:
- ako postoji globalni, a ne postoji korisnički
- setujemo korisnički parametar na osnovu globalnog
- to će se desiti samo kod prvog ulaska nakon lock-a (sve dok nema korisničkog lock-a)
ako bi nekada napravio unlock/lock on bi opet setovao novi datum
- globalnog
- i meni korisničkog
ostali korisnici prilikom ulaska
- provjera korisnički < globalnog
- poruka da je nešto mjenjano
- odradi se sinhro podataka kao u redovnom režimu
Izmjenjeno od Ernad Husremović prije skoro 13 godina
s obzirom da je sada user = radna_stanica, može i ova varijanta
Izmjenjeno od Saša Vranić prije skoro 13 godina
implementirana klasa F18_DB_LOCK
Izmjenjeno od Saša Vranić prije skoro 13 godina
Ubacio sam setovanje parametra zaključavanja/otključavanja...
Izmjenjeno od Saša Vranić prije skoro 13 godina
također sam obradio ovaj lock na startu aplikcije...
tu sam shvatio da nisu semafori toliko sporni koliko prolazak kroz sve tabele
- provjeri jel trebaš napraviti
- kreiraj indekse
- provjeri semafore
sada kada se baza zaključa, kraći je put do ulaska, međutim i dalje imamo taj mali delay radi čekiranja
- provjeri jel trebaš napraviti dbf
- kreiraj indekse
pa tako za bezbroj tabela (svi moduli)
Izmjenjeno od Saša Vranić prije skoro 13 godina
napravljeno još niz korekcija, uvedena kontrola kod opcija unosa itd...
uvedena kontrola kod šifrarnika...
Opcija zaključavanja/otključavanja smještena pod slovo "L" na meniju odabira modula...
lozinka je ADMIN
Izmjenjeno od Saša Vranić prije skoro 13 godina
ostaje jedino jedno pitanje...
kako setovati recimo svim bazama ovaj parametar automatski, za recimo sve stare godine
jer recimo knjigovodstveni servisi, moraju ući u svaku od godina pa izaći na ovaj meni pa setovati ovo, što i nije baš praktično...
što znači da bi locking sistem trebalo napraviti i na glavnom meniju kod odabira firmi, na F10 opciji gdje bi ona odradila
prošla kroz sve baze i zaključala sve godine koje su < 2013 recimo (tekuće)
Izmjenjeno od Ernad Husremović prije skoro 13 godina
- Projekat promijenjeno iz 103 u F18
Izmjenjeno od Ernad Husremović prije skoro 13 godina
što znači da bi locking sistem trebalo napraviti i na glavnom meniju kod odabira firmi, na F10 opciji gdje bi ona odradila
ne ovo mi se ne sviđa
dovoljno je uraditi automatsko zaključavanje po ovom algoritmu:
if (lock parametar nije setovan u bazi) and (max(dat_dok) u fin_suban < tekuća_godina - 2)
onda automatski setuj parametar lock na današnje vrijeme
Izmjenjeno od Ernad Husremović prije skoro 13 godina
znači, ako je aktuelna godina 2013, ako u bazi kojoj pristupamo imamo fin dokumente maksimalno iz 2011 => setuj lockovanje (ako ranije nije bilo setovano)
Izmjenjeno od Ernad Husremović prije skoro 13 godina
ovdje treba razlučiti šta znači setovan parametar
recimo "0" znači da je parametar setovan, ali da je baza otključana (default)
Izmjenjeno od Ernad Husremović prije skoro 13 godina
praktično treba init funkcija za parametar:
- 0 ako je tekuća godina ili prazna baza (nema fin dokumenata)
- setovati timestamp na današnji datum (datum pristupa) ako je max(datdok) = 2011
Izmjenjeno od Ernad Husremović prije skoro 13 godina
- što se tiče pristupa tekuća godina - 1 (sada je to 2012) tu je najbolje korisnika prilikom prvog ulaska pitati - da li je poslovna godina zaključena. to je treća varijanta
Izmjenjeno od Ernad Husremović prije skoro 13 godina
Ernad Husremović je napisao/la:
- što se tiče pristupa tekuća godina - 1 (sada je to 2012) tu je najbolje korisnika prilikom prvog ulaska pitati - da li je poslovna godina zaključena. to je treća varijanta
naravno ako do sada parametar nije bio setovan.
Izmjenjeno od Ernad Husremović prije skoro 13 godina
naglasiću da se ovo automatsko setovanje treba napraviti prema fin_suban max(datdok) a ne prema imenu baze
Izmjenjeno od Saša Vranić prije skoro 13 godina
da, ali masa je baza gdje se samo OS recimo koristi (ili neki ostali moduli) ili slično, znači nema FIN-a
Izmjenjeno od Saša Vranić prije skoro 13 godina
tekuća godina - 1 treba da se ispituje sa 3 mjesecom ( nakon završnog obračuna )
Izmjenjeno od Saša Vranić prije skoro 13 godina
a sve ostalo ispod da se zaključa automatski
Izmjenjeno od Saša Vranić prije skoro 13 godina
:) ako je dobar datum na radnoj stanici
Izmjenjeno od Ernad Husremović prije skoro 13 godina
Saša Vranić je napisao/la:
da, ali masa je baza gdje se samo OS recimo koristi (ili neki ostali moduli) ili slično, znači nema FIN-a
napraviti onda inteligentniju provjeru
if nema fin dokumenata vidi os max(datnab)
Izmjenjeno od Ernad Husremović prije skoro 13 godina
Saša Vranić je napisao/la:
tekuća godina - 1 treba da se ispituje sa 3 mjesecom ( nakon završnog obračuna )
ovo automatsko zaključavanje je bitno prvenstveno sada kada se opcija uvodi.
a nakon toga je potrebno da korisnik zaključa bazu po napravljenom obračunu - tada se neće primjenjivati automatsko zakljuačvanje jer će parametar već biti setovan - 0 (otključano)
Izmjenjeno od Ernad Husremović prije skoro 13 godina
Saša Vranić je napisao/la:
:) ako je dobar datum na radnoj stanici
datum se može uzeti sa servera. čak šta više poželjno je uzeti sa servera
Izmjenjeno od Saša Vranić prije skoro 13 godina
dobro, datum se uzima sa servera
na kraju imamo 3 stanja
- bez parametra - prvi put se ulazi... ili nije nikako setovano zaključavanje na serveru
- "0" - otključana nakon zaključavanja
- "date" - datum zaključavanja
Izmjenjeno od Saša Vranić prije skoro 13 godina
Ubacio sam provjeru max datuma u finansijama...
Izmjenjeno od Saša Vranić prije skoro 13 godina
testirao ulazak u prošlu godinu, desilo se automatsko zaključavanje...
situacija kao 2013/2012 se provjerava po sistemu
- max datum naloga
- tekuća godina da je dan + mjesec > od 15.03 (to je doba kada je već sve završeno oko završnog)
stare godine se zaključavaju odmah
Izmjenjeno od Saša Vranić prije skoro 13 godina
kada se baza jednom zaključa i otključa status tog parametra je "0"
u toj situaciji se više ne provjerava stanje
F18_DB_LOCK:db_must_be_locked()
Izmjenjeno od Saša Vranić prije skoro 13 godina
mislim da je to to, pa ću zapakovati sada verziju
1.4.208
Izmjenjeno od Saša Vranić prije skoro 13 godina
- Status promijenjeno iz Dodijeljeno u Zatvoreno
- % završeno promijenjeno iz 0 u 100