Documente Academic
Documente Profesional
Documente Cultură
LUCRARE DE LICENŢĂ
Absolventă:
Constanţa
- 2006 -
1
CUPRINS
Pag.
2
INTRODUCERE .......................................................................................... 4
CONCLUZII ................................................................................................. 46
BIBLIOGRAFIE ........................................................................................... 48
4
INTRODUCERE
6
CAPITOLUL I
Metodele sistemice reprezintă generaţia a doua, care a apărut prin anii '80;
- se bazează pe aplicarea teoriei sistemelor în analiza întreprinderii;
- sistemul informaţional/informatic este abordat sub două aspecte complementare: datele şi
prelucrările, care sunt studiate şi modelate independent şi reunite cât mai târziu cu putinţă;
- acordă prioritate datelor faţă de prelucrări;
- respectă cele trei nivele de concepţie introduse prin raportul ANSI/SPARC/X31: extern,
conceptual, intern;
intern;
- exemple : MERISE, AXIAL, Information Engineering (J. Martin).
Avantaje:
Avantaje: sistemele se axează pe conceptul de bază de date, care oferă mai multă coerenţă,
stabilitate şi elimină redondanţele;
Dezavantaje:
Dezavantaje: deficienţe în modelarea prelucrărilor, posibilitatea apariţiei de discordanţe între
modelele datelor şi ale prelucrărilor.
1.2.
1.2. Modelarea conceptuală a datelor. Modelul entitate-asociere
1.2.1. Concepte de bază
Entitate:
- reprezentarea unui "obiect" concret sau abstract care:
- aparţine spaţiului problemei de rezolvat (face parte sau este relevant
pentru realitatea observată);
- are o existenţă de sine stătătoare;
- poate fi identificat în raport cu celelalte obiecte de acelaşi tip.
Exemple: angajat, produs, utilaj, operaţie tehnologică, client, factură
O entitate este reprezentată printr-un ansamblu de atribute.
Atribut: caracteristică sau proprietate a unei entităţi, semnificativă pentru spaţiul problemei
de rezolvat.
Entitatea este percepută aici ca un tip de “obiecte”. Fiecare obiect individual constituie o
realizare a entităţii respective.
Atributele au, la rândul lor, aceeaşi conotaţie tipologică, în sensul că despre orice realizare a
unei anumite entităţi se cunosc aceleaşi atribute, dar pentru fiecare dintre acestea conţinutul
sau valoarea atributelor respective diferă.
Tipuri de valori ale atributelor: un anumit ansamblu de valori, definite fie printr-o
proprietate fie printr-o enumerare.
- simplu: atunci când pentru o entitate sau o asociere poate lua o singură
valoare;
- repetitiv: dacă pentru o entitate sau o asociere poate lua mai multe valori (ex:
limbi străine cunoscute)
Identificatorul entităţii: un atribut sau un grup de atribute care primesc valori unice pentru fiecare
realizare a entităţii respective şi pot servi astfel pentru identificarea fără echivoc a acestora.
8
Pentru simplitate se recurge frecvent la coduri care sunt atribute construite special astfel încât să
răspundă cerinţelor de identificare (ex: marcă salariat) sau la atribute de tip "număr de ordine" sau
"număr de apariţie" (ex: numărul de inventar al unui mijloc fix).
În reprezentarea grafică, identificatorul entităţii se subliniază.
Asocierea:
Asocierea: reprezentarea legăturii sau corespondenţei existente între două sau mai multe
realizări de entităţi.
entităţi.
O asociere nu are existenţă de sine stătătoare,
stătătoare, depinzând de existenţa realizărilor de entităţi
pe care le leagă.; în consecinţă, nu are identificatori specifici.
O asociere poate avea atribute proprii.
Entităţile care participă la o asociere constituie colecţia acesteia.
Numărul de entităţi care participă la o asociere formează dimensiunea sau gradul acesteia
(mai mare sau egală cu numărul de entităţi al colecţiei).
Cardinalitatea minimală / maximală exprimă modul de participare al realizărilor fiecărei
entităţi la asociere ( valori uzuale:0,1; 1,1; 0,n; 1,n ).
Reprezentarea grafică:
Asociere
Nume Cardinalitate
asociere
minimalã maximalã
Între realizările aceloraşi entităţi pot exista mai multe asocieri diferite, cu semantică şi
cardinalităţi distincte.
Asociere reflexivă: o asociere care leagă realizări diferite ale aceleiaşi entităţi (colecţie = 1).
În asemenea cazuri, este indispensabilă specificarea în schemă a rolurilor jucate de entitate.
Rol al entităţii: nume care serveşte pentru a desemna participarea entităţii la o asociere.
- Cardinalitatea:
- Cardinalităţile minimale (0 şi 1)
- Cardinalităţile maximale (1 şi n
9
După momentul în care acţionează, există două clase de RI: statice şi dinamice.
dinamice.
R.I. Statice: condiţii care trebuie să se verifice permanent:
R.I. Dinamice: privesc evoluţia în timp a datelor.
b) Restricţii de domeniu
RI de domeniu sunt condiţii impuse asupra ansamblului de valori acceptate pentru un
atribut în cadrul tipului sau domeniului sau. Acestea pot viza:
- conţinutul unui singur atribut al unei entităţi sau asocieri;
- corelaţii între valorile mai multor atribute ale aceleiaşi entităţi sau asocieri;
- corelaţii între atributele mai multor entităţi sau asocieri diferite;
- corelaţii cu valori obţinute pe baza unor operaţii de sintetizare (numărare, însumare,
medie etc) a unui ansamblu de entităţi;
c) Incluziune, excluziune, egalitate de roluri
Acestea formulează reguli referitoare la rolurile jucate de un tip de entitate în diverse asocieri.
Incluziunea:
Incluziunea: dacă o entitate E joacă un rol r1 într-o asociere a1, a1, atunci trebuie să joace şi
rolul r2 într-o asociere a2.
a2.
Notaţia grafică: R1 I R2
Excluziunea:
Excluziunea: rolurile r1 si r2 ale entităţii se exclud reciproc.
Notatia grafică:
R1 R2
#
1.2.
1.2.3. Subtipuri de entitati
În numeroase cazuri, în ansamblul entităţile ce aparţin unui anumit tip există subgrupuri cu o
anumită relevanţă pentru realitatea reflectată şi care, în consecinţă, trebuie reprezentate
explicit.
Grupurile de entităţi sunt numite subclase ale TE, acesta fiind, la rândul sau, superclasa
acestora. Spre exemplu, entităţile apartinând TE ANGAJAT pot fi grupate în MUNCITOR,
TEHNICIAN, INGINER, ECONOMIST etc. Fiecare entitate a unui asemenea grup este, în
acelaşi timp, o entitate a tipului ANGAJAT.
Definirea de subclase se poate face în două moduri:
- pe baza valorilor unui anumit atribut
- pe baza unor criterii definite de utilizator.
Prin definirea de subclase se efectuează specializarea entităţilor superclasei acestora (TE).
Acestea moştenesc toate atributele superclasei şi pot avea atribute proprii specifice,
inexistente la nivelul superclasei.
Spre exemplu, în subclasele MUNCITOR şi INGINER ale TE ANGAJAT dintr-o
întreprindere, alături de atributele comune, aferente oricărui angajat (Marca, Nume, Prenume,
Data nasterii, etc), pentru muncitori pot exista, suplimentar, atributele specifice Meserie şi
Nivel calificare iar pentru ingineri, atributul Specialitate.
Delimitând subansambluri de entităţi ale aceluiaşi tip de entitate, subclasele constituie
subtipuri ale acestuia.
10
Generalizarea este procesul invers, prin care două sau mai multe tipuri de entităţi sunt
generalizate, pe baza proprietăţilor comune, într-un nou tip. În această relaţie, TE iniţiale
devin subtipuri ale tipului obţinut prin generalizare. Spre exemplu, tipurile de entităţi
ANGAJAT şi STUDENT dintr-o universitate pot fi generalizate prin tipul PERSOANa, care
va prelua atributele comune ale acestora: Nume, Prenume, Data nasterii, Adresa etc.
Maniera în care se procedează - prin specializare sau generalizare - depinde exclusiv
de cerinţele unei cât mai fidele reprezentări a realităţii.
Specializarea poate fi totală (orice entitate a tipului face parte, obligatoriu, dintr-un subtip)
sau partială (pot exista entităţi care sa nu aparţină nici unui subtip).
Între subtipuri poate exista un raport de excluziune, ceea ce traduce faptul că
fiecare entitate poate aparţine unui singur subtip (ca în exemplul anterior). Există însă şi
cazuri în care aceeaşi entitate poate aparţine mai multor subtipuri diferite (cu alte cuvinte,
submulţimile entităţilor aparţinând subclaselor respective nu sunt disjuncte). Aceasta RI este
reprezentată grafic prin intermediul simbolului de excluziune. În cazul în care nu există
exclusivitate, este foarte probabilă existenţa unei RI de incluziune, care să precizeze condiţiile
în care are loc "suprapunerea" entităţilor aparţinând fiecărui subtip.
Presupunând, spre exemplu, ca STUDENT si CADRU-DIDACTIC sunt subtipuri ale
TE PERSONAL-UNIVERSITATE, se poate formula următoarea restricţie de incluziune: pot
fi cadre didactice (preparatori, în speţă) numai studenţii de la studii aprofundate.
Cele două restricţii de integritate sunt total independente. Orice combinaţie între ele este
posibilă: parţial-exclusiv, parţial-inclusiv, total-exclusiv, total-inclusiv.
Introducerea de subtipuri prin specializare/generalizare prezintă două avantaje principale:
- factorizează proprietăţile comune la nivelul tipului (superclasei);
- face mult mai clară reprezentarea unor tipuri asocieri la care participă numai o parte dintre
entităţi.
11
c) Minimalitatea identificatorilor
Această regulă prevede ca, în cazul identificatorilor compuşi dintr-un grup de atribute sau
roluri, să nu existe un subgrup în interiorul acestora care să poată îndeplini funcţia de
identificator. Nerespectarea acestei reguli poate fi uşor evidenţiată prin examinarea
dependenţelor funcţionale dintre atributele sau rolurile ce compun identificatorul.
Existenţa unor atribute ale căror valori devin "nule" pentru anumite valori luate de alte
atribute. Această situaţie semnalează, în general, existenţa de subtipuri.
12
1.2.4.2.
1.2.4 Normalizarea
Normalizarea este un proces care asigură:
- eliminarea redondanţelor fără pierdere de informaţie semnificativă
- eliminarea anomaliilor manifestate în procesul actualizării.
Anomaliile se pot manifesta în procesul actualizării în cursul operaţiilor de adăugare,
ştergere şi modificare.
Există cinci forme de normalizare (FN) şi una intermediară între forma 3 şi 4 numită NFBC
după numele lui Boyce Codd - fondatorul modelului relaţional al bazelor de date..
FN1:
FN1: O entitate este în FN1 dacă toate atributele sale sunt elementare şi nerepetitive.
FN2:
FN2: O entitate este în FN2 daca respectă cerinţele FN1 şi toate atributele non-identificator
sunt dependente de întregul identificator.
FN3: impune FN2 + să nu existe dependenţe funcţionale tranzitive între caracteristicile non-
cheie. Pentru detalii despre celelalte forme de normalizare consultaţi anexa 1 din lucrarea de
laborator nr. 10.
FNBC (BOYCE_CODD ): ): O entitate este în FNBC dacă respectă cerinţele FN3 şi în plus
nici un atribut ce compune identificatorul nu depinde funcţional de un alt atribut.
FN4:
FN4: O entitate este în FN4 dacă:
- respectă cerinţele FNBC;
- nu prezintă dependente multivaloare.
FN5: impune FN4 + să nu aibă dependenţă ciclică (joints), sau dacă are să fie implicată printr-
o cheie secundară.
Normalizarea entitatilor
Normalizarea are drept scop eliminarea redondanţelor şi a anomaliilor de actualizare.
Deoarece prin cele menţionate anterior se elimină o parte dintre cazurile de nerespectare a
condiţiilor de normalizare (existenţa unui identificator, eliminarea atributelor repetitive sau
compuse), este necesar să se asigure o atenţie deosebită următoarelor două situaţii:
a) existenţa de DF tranzitive între atribute (FN3);
b) existenţa de DF parţiale între atributelor neidentificatoare şi identificator
(atunci când acesta este compus din mai multe atribute).
Ex: DF tranzitive existente între atributele entităţii UTILAJE conduc la descompunerea
acesteia în două tipuri de entităţi şi la introducerea asocierii corespunzătoare dintre ele.
Normalizarea asocierilor
Situaţia este similară entităţilor, cu observaţia că pentru asocieri nu există
identificatori proprii, rolul acestora fiind îndeplinit de identificatorii entităţilor participante.
13
- cât costă menţinerea acestui elemet în procedură sau ce avantaje se obţin din menţinerea lui.
Modelul conceptual al prelucrărilor, vede întreaga prelucrare ca o succesiune ordonată
şi logică de proceduri înlănţuite, toate în concordanţă strictă cu legislaţia în vigoare (este
vorba de un demers tipic de analiză a valorilor).
Nu se poate trece cu vederea impactul utilizării instrumentului informatic (SGBD) asupra
MCP. Astfel, anumite validări pot fi efectuate încă de la culegerea datelor, în loc să se constate
ulterior că datele sunt complete sau eronate, deci anumite operaţii din MCP pot fi eliminate.
Ca şi în cazul modelului conceptual al datelor, formalismul modelelor de prelucrare se
bazează pe construirea unei diagrame având patru elemente de bază:
a) evenimentul declanşator, reprezentat grafic printr-o elipsă, de la care pleacă o
săgeată de legătură pentru simplificare, dacă este necesar, elipsa poate fi omisă
b) operaţia, reprezentată grafic printr-un dreptunghi ;
c) rezultatul (evenimentul emis), reprezentat tot printr-o elipsă
d) sincronizarea, reprezentată grafic printr-un triunghi orientat către operaţie.
Evenimentul declanşator
Desemnează un fapt a cărui apariţie declanşează o reacţie în cadrul organizaţiei;
apariţia unui eveniment va antrena derularea de activităţi, de operaţii, reprezentând “motorul”
unei acţiuni, al unei operaţii ( de ex. sosirea unui document).
Pentru ca MCP să fie cât mai stabil, el trebuie să fie independent de aspectele
organizatorice şi tehnologice, chiar geografice.
De ex. Sosirea unei comenzi de la un client este un eveniment declanşator, de natură
extern. A satisface această cerere înseamnă a o transforma într-o livrare de produse.
Descrierea conţinutului prelucrărilor necesare trebuie să fie independentă de:
- aspectele tehnologice (se utilizează calculatorul sau nu ?)
- aspectele “geografice” (comanda este prelucrată la depozit sau în altă parte ?)
- aspecte organizatorice (livrarea este făcută de X la serviciul comercial sau de Y la magazie ?)
- aspecte temporale (livrarea se face dimineaţa sau seara ?).
Tip eveniment
Este un concept generic descriind toate apariţiile evenimentelor de aceeaşi natură.
Capacitatea sistemului de a percepe aceste apariţii este exprimată de doi parametri :
capacitatea : indică numărul maxim de apariţii ale acestui tip de eveniment care pot fi
percepute de sistem şi
frecvenţa : indică legea de manifestare a acestor apariţii.
Categorii de evenimente
Un eveniment poate fi :
extern (recepţionat din exterior) : primirea unui CEC, a unui aviz de
plată, solicitarea unui credit, etc.
Operatia
Se numeşte operaţie orice acţiune (sau secvenţă continuă de acţiuni), producătoare de
evenimente rezultat, care se execută fără întrerupere, ca reacţie la un eveniment declanşator
14
(sau a mai multor evenimente declanşatoare sincrone). O operaţie constituie un bloc
neîntrerupt (nu trebuie să apară rezultate intermediare în interiorul unei operaţii).
Tip de operatie
O categorie de operaţii ce prezintă aceleaşi caracteristici. Un anumit număr de
parametri caracteristici permit specificarea unui anumit tip de operaţie:
- desemnarea operaţiei însăşi;
- durata exprimata în unităţi de timp
- acţiunile elementare constitutive
- evenimentele emise şi condiţiile de emitere.
O operaţie se finalizează întotdeauna prin emiterea de evenimente funcţie de situaţiile
identificate pe parcurs şi de condiţiile exprimate de aceste situaţii (aşa-numitele reguli de
emisiune).
emisiune).
Cod Denumire
operaţie operaţie
Acţiune ( Acţiuni)
Reguli de emisiune
Modul de funcţionare
Dacă E1, E2 şi E3 sunt evenimente declanşatoare pentru operaţia Oi şi dacă a, b, c
sunt apariţii corespunzătoare evenimentelor E1, E2 şi respectiv E3, atunci sincronizarea :
a si ( b sau c) , adică a Ù ( b Ú c)
indică faptul că operaţia Oi este declanşată dacă o apariţie a evenimentului E1 există simultan
cu una din apariţiile evenimentelor E2 sau E3.
Sincronizarea se exprimă deci sub forma unei propoziţii logice care trebuie să respecte
anumite reguli, dintre care cele mai importante sunt:
- condiţia trebuie pusă pe evenimentele participative conjugate şi
- trebuie să existe situaţii care permit declanşarea.
Conceptul de sincronizare exprimă o logică şi o dinamică a prelucrărilor. La un
moment dat, propoziţia logică poate fi verificată. Atunci sincronizarea este activă şi operaţia
este declanşată. La un alt moment este posibil ca un singur eveniment declanşator să fie
realizat; în acest caz sincronizarea este în aşteptarea realizării altor evenimente care să
declanşeze operaţia. Dacă nici un eveniment nu are loc, sincronizarea este inactivă.
Sincronizarea reprezintă
reprezintă concordanţa între două sau mai multe evenimente. Ea face ca
evenimentele să aibă loc simultan, în acelaşi timp, concomitent, sincron.
Nu trebuie uitat faptul că evenimentele “sincronizate”, prin sincronizare, declanşează
o singură operaţie. Totodată, pentru ca un eveniment să participe la o sincronizare, el trebuie
să fie utilizat în această declanşare.
Timp
t1 t2 t3
Sincronizare Sincronizare
în asteptare activă (operatie
Sincronizare declanşata) Sincronizare
inactivă inactivă
16
1.3.2. Noţiunea de “Proces”
Un proces descrie dinamica prelucrărilor dintr-o activitate determinată. El este format din
operaţii executate ca reacţie la evenimente şi producând rezultate.
Un proces este:
- omogen : operaţiile şi rezultatele concură la o finalitate comună.
- limitat : are graniţe marcate de evenimentele de origine şi de rezultatele
terminale.
17
Nume eveniment Ca exemplu, mai jos este dată des-
crierea detaliată a blocului corespun-
Nr max de Termen zător operaţiei “examinarea comen-
aparitii limita zilor în aşteptare” .
Comanda
in asteptare Această manieră de abordare aduce
complemente asupra restricţiilor de timp
20 1 zi şi volum.
Sfarsitul
Schema poate fi completată cu
zilei
descrierea conţinutului operaţiei, dar de
această dată sub formă de “fişă a
a operaţiei”, al cărei conţinut este
b
prezentat în continuare:
a si b
Examinarea
OP 6
comenzilor in
asteptare
Cerere de
fabricatie
30 1 zi
Revenind la reprezentarea grafică de mai sus putem afirma că parametri exprimând dinamica
procesului puneau restricţii doar la nivelul “nodurilor” şi anume:
- la nivelul sincronizării (propoziţia logică, durata limită) şi
- la nivelul operaţiilor pentru emisiunea de rezultate (reguli de emisiune care
orientează fluxurile către o cale sau alta).
Aceşti parametri pot fi completaţi cu alţii plasaţi pe săgeţile de legătură, în amonte şi
în aval de operaţie. Astfel vom avea ca parametri suplimentari:
- participarea si durata limită (pe săgeata eveniment --> sincronizare) şi
- cardinalitatea (pe arcul operaţie --> rezultat)
Participare şi durata limită (reglarea în amonte)
Uneori sincronizarea, pentru a fi activată, are nevoie de existenţa unui “lot” de apariţii ale
evenimentului declanşator. Acest număr constituie participarea tipului de eveniment la tipul
de sincronizare. Timpul de activabilitate a acestui lot se numeşte durata limită.
Cardinalitatea evenimentelor (reglarea în aval)
Operaţiile emit rezultate (evenimente emise). Uneori este posibil ca acestea să fie
emise în mai multe exemplare identice. Numărul de exemplare exprimă cardinalitatea tipului
de eveniment rezultat al operaţiei.
prel1 MED1
modelare
Realitate MCD
prel2 MED2
O prelucrare are ME distincte pentru fiecare consultare şi pentru fiecare actualizare. Atât
pentru consultare cât şi pentru actualizare, ME se construiesc pe baza blocurilor logice de
date corespunzătoare.
Blocuri logice de date (BLD): fluxurile de date vehiculate de o anumită prelucrare.
Evenimentele care activează o sincronizare si care nu constituie o cerere de consultare
constituie un BLD.
Combinaţia de evenimente produse printr-o regulă de emitere a rezultatelor constituie un BLD.
e1 BLD E1 E2
e2
e3 D E
19
Reguli pentru construirea ME
1) Un ME pentru fiecare consultare sau actualizare efectuată de o prelucrare.
2) Fiecare ME se construieste pe baza BLD folosind formalismul EA.
3) Entităţile din ME pot să nu aibă identificatori.
4) Atributele, entităţile şi asocierile externe pot să nu fie atribute, entităţi sau asocieri
conceptuale.
conceptuale.
5) Atributele externe echivalente atributelor conceptuale trebuie să aibă acelaşi nume.
Model extern
calcul echivalenta
Model conceptual
20
Orice atribut conceptual trebuie să poată fi inserat (modificat sau şters) prin cel puţin
un model extern. Dacă nu, se adaugă modelele externe adecvate.
1.6. Modelarea
M Logică a Prelucrărilor (MLP
MLP)
a) Modelul logic de prelucrare are rolul de a preciza:
- frecvenţa de prelucrare;
- actorii implicaţi;
- fazele şi sarcinile asociate acestora, inclusiv evenimentele şi sincronizările aferente;
- tipul fazelor: A (automate) şi M (manuale).
22
- Pentru aceasta se pleacă de la MCP. Mai exact operaţiile complexe sunt transformate
în faze iar operaţiile elementare sunt transformate în sarcini.
- se întocmeşte un tabel cu rubricile: frecventa, actori (defalcat pe actori nominalizaţi) şi
tipul fazei (A sau M).
Interesant este faptul că în rubricile destinate fiecărui actor nu se trece text ci se trece
chiar schema procesului din modelul conceptual al prelucrărilor, dar de data aceasta
continuată când pe o coloană, când pe cealaltă, în funcţie de actorul care preia sarcina ce i se
cuvine din procesul respectiv.
23
cerinţe enumerate mai sus şi vom adăuga pe rând câte una din modificările impuse
programelor de către aceste cerinţe. Vom trece la următoarea modificare numai atunci când tot
ansamblul de programe funcţionează corect şi cu ultimele modificări.
Observăm deci că elaborarea sistemului informatic este un proces ce se desfăşoară în spirală,
plecând dela un soft minimal care va constitui nucleul viitorului sistem, iar acel nucleu se va
dezvolta pe măsură ce i se fac modificările impuse de toate cele cinci cerinţe enumerate mai
sus.
24
Capitolul 2
26
- gradul de participare a casei de schimb valutar la derularea operaţiunilor de vânzare-
cumpărare;
- cota de piaţă ce revine casei de schimb valutar respective.
Obiectivele aplicaţiei asigură utilizarea eficientă şi pe scară largă a calculatoarelor,
creşterea vitezei de circulaţie a informaţiei şi reducerea timpului de răspuns.
27
Cod Denumire raport Frecvenţa Descrierea raportului
rap
ort
RBNR Raport BNR Lunar Arată codul valutei, soldul iniţial,
cumpărările de valută, alimentările,
vânzările de valută, remiterile şi
soldul final
TM Total mişcări Lunar Arată codul valutei, sumele încasate (de la
bancă, PSV etc.), sumele cumpărate,
vândute, intrate, ieşite şi soldul final
LR Lista de rotare Zilnic Prezintă felul valutei, nr. BSV, soldurile
initiale, cursul mediu initial, rulajele,
cursurile de schimb, soldurile finale,
cursul mediu final, şi venitul din
comisioane
RC Registru de casă Zilnic Prezintă felul valutei, soldul iniţial, sumele
cumpăra-te, vândute, intrate, ieşite şi
soldul valutei
JIS Jurnal indicatori Zilnic Prezintă soldurile iniţiale şi finale pe fiecare
sintetici valută, total inrări şi ieşiri pe timpul
unei zile provenite din m işcări de
valută.
JSR Jurnal solduri şi Zilnic Prezintă rulajele zilnice de valută prin
rulaje intermediul mişcărilor de valută.
CSV……..
PSV…….. cod: BM
COD Nr. Seria DATA Suma CURS Tip Tip Parte- Cod
VALUTA BM BM. OP MEDIU op. buletin ner PSV
C,3 C,10 C,10 D,8 N,12 N,8 C,8 C,5 C,20 C, 2
TOTAL GENERAL N,8 N,12 N,8 C,8 N,12 C,20 C, 2
CSV……..
PSV…….. cod: RC
REGISTRU DE CASĂ
la data D,8
Cod valută SOLDUL INIŢIAL CUMPĂRĂRI VÂNZĂRI INTRĂRI IEŞIRI SOLD FINAL
C,3 N,16,2 N16,2 N16,2 N16,2 N16,2 N16,2
TOTAL N,18,2 N18,2 N18,2 N18,2 N18,2 N18,2
GENERAL
CSV……..
28
PSV…….. cod: RBNR
RAPORT BNR
luna… C,10
Cod valută Sold iniţial Cumpărare Alimentări Vânzări Remiteri Sold final
pers. fizică pers.fizică
C,3 N,16,2 N16,2 N16,2 N16,2 N16,2 N16,2
CSV……..
PSV…….. cod: TM
TOTAL MIŞCĂRI
luna… C,10
Cod valută Intrări bancă Intrări PSV Alte intrări Ieşiri bancă Ieşiri PSV Alte ieşiri
C,3 N,16,2 N16,2 N16,2 N16,2 N16,2 N16,2
TG (dolari) N,18,2 N18,2 N18,2 N18,2 N18,2 N18,2
CSV……..
PSV…….. cod: LR
LISTA DE ROTARE
la data D,8
Obţinerea acestor situaţii la imprimantă permite utilizarea lor ca acte justificative, iar prin
faptul că respectă condiţiile de formă şi de font cerute, acestea pot înlocui tipizatele (conform
Regulamentului valutar).
Intrările reprezintă documentele prin care casele de schimb valutar îşi controlează
activitatea, acestea permiţându-le să urmărească desfăşurarea acesteia şi să actualizeze baza
de date aplicaţiei.
Primul document folosit este Buletinul de schimb valutar, care este folosit operativ, în
momentul încheierii tranzacţiei valutare.
Conform Regulamentului, casa de schimb valutar emite acest document în trei exemplare,
indiferent dacă operaţiunea este de cumpărare sau vânzare de valută. Un exemplar se
înmânează clientului, unul rămâne la casa de schimb valutar, iar cel de-al treilea se reţine de
către compartimentul financiar-contabil al unităţii.
Această codificare este folosită zilnic la introducerea datelor necesare oricărei operaţii de
schimb valutar şi emiterii oricărui buletin de schimb valutar.
Un alt atribut este simbolul valutei, codificat în funcţie de ţara în care a fost emisă
valuta, după cum urmează:
Pentru a se putea identifica mişcările de valută în raport cu celelalte aplicaţii specifice unei
case de schimb valutar, în continuare este prezentat MCC pentru toată PSU activitatea casei de
schimb valutar:
BMECH(8)
BC(7), BV(7)
BMETB(17)
BMSI(5)
BC(7)
BV(7)
BMSI(4)
JCV(9), JVV(10)
BC(11), BV(12)
RC(13), RBNR(14)
TM(15), BOC(15)
BOV(15)
Notatii folosite:
BC – borderou cumpărări
BMETB – buletin miscare iesiri transfer bancă
BMITPSV – buletin mişcare intrări transfer PSV
BMITB - buletin mişcare intrări transfer bancă
BMSI – buletin mişcare sold iniţial
BI – buletin de identitate
AI – adeverinţă de identitate
PT – paşaport turistic
PS – paşaport de serviciu
XX – paşaport străin
BC – buletin cumpărare valută
BV – buletin vânzare valută
JCV – jurnal cumpărări valută
JVV – jurnal vânzări valută
BOC – borderou cumpărări
BOV – borderou vânzări
RC – registru de casă
TM – totaluri mişcări
RBNR – raport către BNR
În aceste condiţii, MCP referitor la reportările lunare către BNR este următorul:
PSV
BOC
B B R
C V C BOV
31
JC
V JV
TM V
OK OK
TM RBN
R
BNR
2.3.Modelarea logică
Tabelul
mişcări Tabelul încasări şi plăţi
Videoformatul Descriere
Ti Denumire Identificator
I Buletin mişcare intrări trans- BMITPSV Asigură descrierea documentului, a operaţiei efectuate şi
fer la PSV codul valutei
I Buletin mişcare intrări de BMIAI Asigură descrierea documentului, a operaţiei efectuate şi
alte tipuri codul valutei
I Buletin mişcare ieşiri trans- BMETPSV Asigură descrierea documentului, a operaţiei efectuate şi
fer la PSV codul valutei
I Buletin mişcare alte ieşiri BMEAE Asigură descrierea documentului, a operaţiei efectuate şi
codul valutei
E Registru de casă RC Pentru fiecare tip de valută se afişează soldul iniţial,
cumpărările, vânzările, intrările, ieşirile şi soldul final
E Lista de rotare LR Pentru fiecare tip de valuta se afişează soldul iniţial,
cursul mediu iniţial, rulajele, comisionul, cursul mediu
final şi soldul final
E Raport BNR RBNR Pentru fiecare valută sunt afişate soldul iniţial,
cumpărările/alimentările, vânzările/remiterile, soldul
final
E Total mişcări TM Pentru fiecare valută sunt afişate intrările şi ieşirile de
orice fel ar fi acestea
Meniul principal este format din următoarele opţiuni şi subopţiuni descrise în ordinea
utilizării acestora:
Implemen- Mişcări Rapoarte Inchide- Editare Ieşire
tare rea zilei
34
Societatea Emit bon de Registru de casă Cut
mişcare
Puncte de Vizualizare bonuri Raport BNR Copy
schimb de mişcare
Utilizatori Totaluri mişcări Lista de totaluri Paste
Nomenclator Registru încasări Totaluri mişcări
valute şi plăţi
Tipuri de acte Vizualizare Jurnal
de identitate indicatori sintetici
Vizualizare Jurnal
solduri şi rulaje
Formularul
Bonuri mişcări
Bon de mişcări
Raport mişcări
Butonul
Nomenclt_valută
Tipăresc bonul
Datefirma
Incaplat
Interogarea Raportul
Asamblare vanzare Bon_mişcare
Bonul de mişcare
35
QueryDef Tabel- Total_mis- Sub Vizualizare- Total_mis-
Miscări totaluri_misc Click
cări_table cări_tabel
Int. Completez
total_misc_final
Raport_total
Int. Completez Raport_total
total_misc_echiv miscări_final
miscări_echiv
Interogarea Raport_totaluri_misc2
Interogarea Raport_totaluri_misc1
Raport_total
Raport_total miscări_final
Datefirma miscări_echiv
Sold_final_BNR
Interogarea Raport_BNR
36
Raport_BNR-
Datefirma Sold_init_BNR Sold_final_BNR
tabel_final
2.4.4.4. Inchiderea Zilei, Jurnal indicatori sintetici, Jurnal solduri şi rulaje pe valute
Nomenclt_valuta
Sub Jurnal_zilnice Jurnal_sold_rulaj_valute
(de astăzi)
Jurnal_indicatori_sintetici
Form
Jurnal_indicatori_sintetici
Nomenclt_valuta
(de mâine)
Form
Jurnal_solduri_şi_rulaje_pe valute
37
impus de nevoia implementării programului în condiţiile specifice mediului în care va fi
folosit şi meniul acestui program începe cu implementarea.
38
Date despre operatorii care vor lucra la
calculator se pot introduce cu opţiunea
Utilizatori care atunci când este
selectată deschide formularul destinat
acestui scop, iar imaginea lui se poate
vedea în stânga. La implementare, acest
formular este completat de regulă de
administratorul bazei de date.
Utilizatorii vor fi introduşi cu coduri
care ar trebui să fie numere (diferite de
1 care este rezervat administratorului),
diferite pe întreg efectivul casei de schimb valutar, de la un utilizator la altul.
Parola fiecărui utilizator trebuie să fie mai lungă de 5 caractere, să fie unică pe întreg efectivul
casei de schimb valutar şi provizorie, urmând ca la prima ocazie când un utilizator intră în
tură, după ce a fost recunoscut de calculator cu parola introdusă de administrator, să-şi
introducă o parolă nouă ştiută numai de el. Cu excepţia administratorlui, nici un utilizator nu
poate schimba decât propria sa parolă şi pentru aceasta el trebuie să fie acela care a pornit
calculatorul şi nu altcineva!
Parola introdusă la pornirea calculatorului identifică operatorul de servici şi automat codul său
va apărea pe bonurile pe care le va emite atât timp cât va folosi calculatorul. Când calculatorul
a fost oprit, el poate fi pornit de oricare alt operator care a fost introdus la implementare, în
lista utilizatorilor de către administartorul bazei de date, cu condiţia ca el să folosească o
parolă corectă.
Schimbarea parolei se poate face din
opţiunea bară Editare cu condiţia ca
utilizatorul să aleagă din submeniul
care apare, opţiunea Schimbare
parolă operator în tură. La alegerea
acestei opţiuni apare formularul din
imaginea alăturată. Schimbarea parolei
este posibilă numai dacă operatorul
vine cu o parolă veche corectă.
Următoarea opţiune a submeniului Implementare este Nomenclator valute, la alegerea
căreia apare formularul cu acelaşi nume.
39
În
40
Diferenţa dintre mişcările de valută se poate indica prin tipul operaţiei (intrare, ieşire,
depunere sau ridicare) şi prin tipul buletinului de mişcare care poate fi pentru bancă, pentru
un PSV, cheltuieli sau alte mişcări.
Pentru a uşura introducerea datelor, dar mai ales pentru a evita posibilele erori de completare,
variantele de răspuns la ambele cîmpuri se iau din câte un combobox.
Buletinele de mişcare trebuie mai întâi vizualizate şi apoi tipărite. Cu ocazia tipăririi ele sunt
înregistrate automat în tabelul încasări-plăţi şi tot atunci se actualizează soldurile valutelor
afectate de mişcarea respectivă.
Imaginea unui buletin de schimb este prezentată mai jos.
41
Opţiunea Totaluri mişcări deschide
formularul cu acelaşi nume a cărui
imagine este cea alăturată.
În acest formular vom introduce luna
pentru care se doreşte obţinerea raportului
Totaluri mişcări şi apoi obligatoriu
trebuie apăsat butonul Vizualizare, altfel
butonul Tipărire nu are ce tipări, pentru
că toate prelucrările necesare pentru
obţinerea raportului se fac la apăsarea
butonului Vizualizare.
Dacă utilizatorului îi place cum arată raportul va apăsa butonul Tipărire, care nu face decât
să tipărească raportul pregătit de progarmul asociat butonului Vizualizare.
Ultima opţiune a submeniului Mişcări este Registrul încasări şi plăţi la alegerea căreia se
obţine formularul ce prezintă tabelul încasări şi plăţi. Imaginea lui se poate vedea mai jos.
Cu opţiunea Registru de casă se obţine formularul cu acelaşi nume a cărui imagine este cea
de mai sus, dreapta.
După completarea datei pentru care se cere raportul numit Registru de casă, se apasă
obligatoriu butonul Vizualizare şi apoi Tipărire, când se va obţine raportul din imaginea de
mai jos.
42
M&S EXCHANGE
Cu opţiunea Raport la BNR se obţine formularul cu acelaşi nume a cărui imagine se poate
vedea mai jos.
După completarea numărului lunii pentru
care se cere raportul se va apăsa butonul
Vizualizare şi apoi Tipărire, când se va
obţine raportul din imaginea de mai jos.
M&S EXCHANGE
Cu opţiunea Lista de rotare se obţine raportul cu acelaşi nume a cărui imagine este cea de
mai jos.
43
Alte două rapoarte care se pot obţine din această aplicaţie, sub forma unor formulare, sunt
Jurnal indicatori sintetici şi Jurnal solduri şi rulaje valută. Imaginile lor sunt cele de mai
jos.
44
2.5.5. Inchiderea zilei
Aceasta ar trebui să fie ultima rulare care se face în cursul zilei care se încheie (sau, dacă ea
nu s-a făcut în ziua precedentă, ar fi prima rulare înainte de a face Începutul zilei curente).
Prin această opţiune se calculează rulajele din ziua care se încheie pentru fiecare valută în
parte, apoi soldul curent devine sold iniţial pentru ziua următoare, se iniţializează rulajele la
fiecare valută cu zero şi în plus se calculează toţi indicatorii statistici în valută de referinţă:
soldul total în valută de referinţă, total intrări prin cumpărare de valută dar în valută de
referinţă, total ieşiri prin vânzare de valută dar în valută de referinţă, total intrări prin mişcări
în valută de referinţă şi total ieşiri prin mişcări în valută de referinţă, profitul în lei şi în valută
de referinţă la sfîrşitul zilei. Prin mişcări se înţelege în acest program, operaţii cu banca cu
celelalte puncte de schimb sau cu CSV, cheltuieli şi alte tranzacţii cu lei şi valută decât cele cu
clienţii prin vânzare-cumpărare de valută.
Indicatorii sintetici sunt afişaţi automat la terminarea operaţiunii de închidere a zilei.
Observaţie: Pentru că în mod normal zilele se succed una după alta, orice început al zilei este
precedat de închiderea zilei precedente. La terminarea activităţilor specificate la
implementare, problemele legate de începutul zilei (probleme carese rezolvă cu opţiunea bară
Actualizare date variabile) sunt rezolvate în mod implicit prin activităţile de implementare
care s-au derulat conform secţiunii 2.5.2. Totuşi în această zi, după implementare, este bine să
se facă închiderea zilei precedente, adică să se ruleze submeniul Inchiderea zilei, dar când
programul cere data zilei care se încheie să daţi data zilei precedente şi nu a zilei în care vă
aflaţi, pentru că ziua în care vă aflaţi va fi închisă seara la terminarea programului. Dacă la
implementare închideţi ziua de astăzi, seara la terminarea programului, nu o veţi mai putea
închide pentru că orice zi poate fi închisă doar o singură dată. Ca urmare a acestei restricţii,
dacă odată aţi întîrziat cu închiderea zilei curente după ora 24, atunci când faceţi închiderea
aveţi grijă să specificaţi nu data zilei în care vă aflaţi ci data zilei pentru care se face
închiderea. Aceste restricţii rezultă din faptul că închiderea unei zile de lucru se încheie cu
iniţializarea soldurilor pentru ziua următoare şi cu iniţializarea rulajelor de valute astfel ca ele
să înceapă în ziua următoare de la zero. Într-o zi obişnuită de lucru însă, după închiderea zilei
precedente, este necesar să se deruleze activităţile de mai jos, adică activităţile specifice unui
început de zi.
45
CAPITOLUL III
Contabilitatea activităţii de schimb valutar
Conform Normei nr. 4 din 01.04.2005 emisă de Banca Naţională a Romaniei, operaţiile de
schimb valutar pentru persoane fizice pe teritoriul României pot fi efectuate de către
următoarele categorii de persoane juridice:
a) societăţile bancare autorizate să efectueze schimburi valutare;
b) casele de schimb valutar organizate ca persoane juridice conform Legii nr. 31/1990
privind societăţile comerciale, care au ca obiect unic de activitate schimbul valutar,
autorizat de Banca Naţională a României;
c) societăţile de turism, autorizate de Banca Naţională a României să organizeze ghişee de
schimb valutar în vederea încasării în lei a prestaţiilor turistice ( cazare şi servicii supli-
mentare) efectuate pentru turiştii străini.
Casele de schimb valutar sunt societăţi comerciale care au ca profil unic de activitate
schimbul valutar pentru persoanle fizice. Acestea sunt autorizate şi, în consecinţă, sunt
controlate de către Banca Naţională a României.
Pentru a putea funcţiona, casele de schimb valutar trebuie să solicite Băncii Naţionale a
României acordarea autorizaţiei de funcţionare. Pentru aceasta trebuie îndeplinite următoarele
condiţii:
a) Obiectul unic de activitate, conform statutului şi contractului de societate, trebuie să-l
constituie schimbul valutar pentru persoanele fizice.
b) Solicitantul trebuie să prezinte dovada posesiei spaţiului de lucru destinat exclusiv
schimbului valutar, cu acces public direct şi adresă identificabilă. În cazul în care casa de
schimb valutar solicită autorizarea unui punct de schimb valutar în cadrul unui spaţiu
comercial în care se desfăşoară şi alte activiţăţi, amplasarea punctului de schimb valutar
va fi strict delimitată de restul spaţiului prin pereţi despărţitori.
c) Solicitantul trebuie să notifice numele şi sediul băncii unde are deschis contul.
d) Solicitantul trebuie să prezinte dovada capitalului subscris şi vărsat în totalitate în
numele casei de schimb valutar ca persoană juridică. Pentru fiecare punct de schimb
valutar, solicitantul va prezenta dovada existenţei unor disponibilităţi în cont echivalente
cu 30 milioane lei, sumă ce trebuie să se regăsească permanent sub formă de
disponibilităţi în lei sau valută în conturile şi casieriei casei de schimb valutar.
e) Personalul angajat trebuie să prezinte certificatul de cazier juridic fără antecedente.
f) Casa de schimb valutar trebuie să aibă asigurată dotarea necesară derulării activităţii de
schimb valutar, adică:
- aparat de verificare a autenticităţii bancnotelor;
- condiţii necesare păstrării în deplină securitate a valorilor ( sistem de alarmă, casă de
bani);
g) În cazul societăţilor cu aport de caplital străin sau cu capital integral străin, solicitantul
trebuie să prezinte acordul băncii centrale din ţara de rezidenţă pentru transferuri de
capital şi deschidere de cont în străinătate.
h) Se urmăreşte plata comisionului de autorizare de 100.000 lei.
Casele de schimb valutar pot conţine un număr nelimitat de puncte de scimb valutar, fiecare
însă trebuie să obţină autorizarea BNR – Oficiul Control Devize.
Casele de schimb valutar pot începe efectuarea operaţiunilor numai după emiterea autoriza-
ţiei; în vederea obţinerii acesteia, solicitanţii vor depune o cerere scrisă însoţită de
următoarele documente:
46
- certificatul de înmatriculare, statutul societăţii comerciale, contractul de societate şi
hotărârea judecătorească de înfiinţare;
- dovada posesiei spaţiului;
- certificatele de cazier;
- dovada existenţei în cont a 30 milioane lei;
- orice acte sau documente justificative solicitate de către BNR.
În termen de 7 zile, BNR va analiza documentaţia şi va verifica pe teren existenţa celor
prezentate; autorizaţia sau respingerea cererii vor fi trimise solicitantului.
Casele de schimb valutar îşi păstrează disponibilităţile în valută şi în lei în conturi deschise
numai la societăţi bancare autorizate din România. Aceste disponibilităţi pot fi, de asemenea,
păstrate parţial în caseriile caselor de schimb valutar.
Casele de schimb valutar pot utiliza disponibilităţile în valută numai pentru operaţiuni de
schimb valutar.
Casele de schimb valutar pot cumpăra şi vinde în mod liber valută pe piaţa interbancară,
prin intermediul societăţilor bancare, în limita disponibilităţilor proprii ( numerar şi disponibi-
lităţi în conturi bancare). Societăţile bancare care primesc ordine de vânzare/cumpărare de
valută de la casele de schimb valutar au obligaţia să aplice aceleaşi principii de cotare,
acceptare şi executare ca pentru ceilalţi clienţi.
Casele de schimb valutar îşi pot stabili în mod liber cursurile de schimb, atât cele de cum-
părare, cât şi cele de vânzare. Lista cursurilor de vânzare/cumpărare pentru valute va fi afişată
zilnic, la loc vizibil, la începutul programului de lucru. Se recomanda afişarea cursurilor de
schimb valutar fără includerea comisionului, acesta urmând să fie evidenţiat separat.
Listele de cursuri de schimb zilnice, semnate de persoanele împuternicite de conducerea
casei de schimb valutar şi purtând ştampila punctului de schimb valutar, se vor păstra ca
documente justificative, urmând ca la sfârşitul zilei de lucru să fie anexate la registrul tranzac-
ţiilor.
Este interzisă efectuarea de operaţiuni valutare unilaterale (numai cumpărare sau numai
vânzare de valută), cu excepţia cazului în care această situaţie este determinată de lipsa
temporară de disponibilităţi în valută sau în lei.
Pentru operaţiunile de schimb valutar, comisioanele se încasează numai în lei. Comisioa-
nele practicate vor fi evidenţiate distinct în listele de cursuri de schimb valutar afişate zilnic şi
nu mai pot fi modificate în timpul zilei de lucru. Procentul de comision aplicat asupra cursului
de vânzare trebuie să fie egal cu cel aplicat la cumpărare.
Pentru fiecare tranzacţie, punctele de schimb valutar trebuie să întocmească buletine de
schimb valutar tipizate. Acestea sunt executate, înregistrate, evidenţiate şi utilizate ca docu-
mente cu regim special, purtând în mod obligatoriu antet, serie şi număr de ordine imprimate
la tipărirea lor.
Buletinele de schimb valutar se întocmesc în trei exemplare, fiind obligatorie completarea lor
cu toate datele prevăzute în formular. Originalul buletinului de schimb valutar, datat, semnat
şi ştampilat de punctul de schimb valutar, se înmânează clientului, al doilea exemplar se
ataşează la registrul tranzacţiilor (folosit ca document primar în înregistrările contabile), iar al
treilea exemplar se păstrează ca document justificativ de casă la locul efectuării operaţiunii.
În cazul caselor de schimb valutar la care operaţiunile decurg în sistem computerizat,
buletinul de schimb valutar se poate întocmi pe calculatorul electronic, cu condiţia de a
respecta întocmai modelul de formular, precum şi regimul special al acestuia, prin înscrierea
seriei şi numărului de ordine.
47
Raportarea către Banca Naţională a României a operaţiunilor valutare derulate prin casa de
schimb valutar se face în conformitate cu normele emise în acest scop. Personalul casei de
schimb valutar este răspunzător de efectuarea operaţiunilor de schimb valutar în conformitate
cu reglementările în vigoare. În cazul în care casele de schimb valutar încalcă aceste
reglementări, vor atrage după sine suspendarea temporară a autorizaţiei sau revocarea
definitivă a autorizaţiei.
Pentru evidenţierea în contabilitate a mişcărilor de valută, se poate folosi una din urmă-
toarele metode:
metoda înregistrării operaţiilor la cursul zilei;
metoda înregistrării operaţiilor la curs fix.
În ambele cazuri, la încheierea exerciţiului financiar, se face evaluarea la cursul zilei,
diferenţa înregistrându-se, după caz, în conturile de venituri şi cheltuieli.
Sumele deţinute de casa de schimb valutar, în lei sau în valută, sunt gestionate distinct.
Aceasta presupune evidenţierea sumelor aflate în caseria unităţii în două subconturi:
5311 “Casa în lei”
5314 “Casa în devize”
Soldurile debitoare ale acestor conturi reflectă numerarul existent la data respectivă, în lei şi,
respectiv, în valută.
Diferenţele de curs valutar ( ce pot fi favorabile sau nefavorabile), se înregistrează astfel:
diferenţele favorabile de curs valutar (cursul zilei este mai mare decât cel din momentul
obţinerii valutei) se înregistrează ca venituri:
531 = 765
Casa în lei Venituri din diferenţe de curs valutar
difernţele nefavorabile de curs valutar ( cursul zilei este mai mic decât cel din momentul
obţinerii valutei) se înregistrează drept cheltuieli:
665 = 531
Cheltuieli din diferenţe Casa în lei
de curs valutar
48
( cecuri de călătorie şi cărţi de credit – daca se tranzacţionează şi acestea), pe feluri de valute,
sumele în lei plătite, respectiv încasate, precum şi comisioanele practicate de casa de schimb
valutar.
49
CONCLUZII
Realizarea practică a acestei lucrări de licenţă constă într-o aplicaţie informatică pentru
gestiunea mişcărilor de valută ce au loc într-o casă de schimb valutar. Această aplicaţie poate
îndeplini următoarele funcţiuni:
- implementarea aplicaţiei într-o casă de schimb valutar dată;
- preluare mişcări de valută între bănci şi casa de schimb sau un punct de schimb valutar
aparţinând casei de schimb care posedă programul;
- preluare mişcări de valută între casa de schimb sau un punct de schimb valutar şi alt punct
de schimb;
- înregistrarea automată în baza de date a sistemului a tuturor mişcărilor de valută;
- elaborarea de rapoarte specifice activităţii de schimb valutar:
- Raport BNR;
- Totaluri mişcări;
- Registru de casă;
- Lista de rotare;
- Jurnal indicatori sintetici;
- Jurnal solduri şi rulaje.
- consultarea tabelelor cu mişcări şi tabelului de încasări-plăţi pentru documentarea reviziilor
financiare, şi a verificărilor cu scop de investigaţii.
Aplicaţie informatică pentru gestiunea mişcărilor de valută la o casă de schimb valutar s-a
dovedit a fi o temă generoasă, pentru că pe de o parte m-a introdus într-un domeniu mai puţin
cunoscut celor care nu lucreză în domeniul financiar, iar pe de altă parte m-a pus în situaţia să
aplic nu numai cunoştinţele de proiectare de sisteme informatice ci şi să dobândesc noi
cunoştinţe despre securitatea datelor prelucrate cu ajutorul calculatorului, adică despre tehnici
şi metode de protecţie împotriva accesului neautorizat şi chiar a fraudelor, aspecte extrem de
importante în domeniul financiar bancar. Am în vedere lucrul cu parole şi cu formulare de tip
Data Entry, combinat cu formulare fără drept de modificări, ştergeri sau adăugări.
Formularul de tip Data Entry este folosit numai pentru introducerea mişcărilor şi el nu
permite decât introducerea unei mişcări noi, care odată tipărită nu mai poate fi vizualizată sau
modificată cu acest formular. Cu formularele de vizualizare poate fi văzută întreaga colecţie
de articole, dar ele nu mai pot fi modificate.
Tema acestei lucrări solicită mult capacitatea de analiză şi de asamblare a etapelor de
prelucrare din cadrul fiecărei proceduri. De exemplu, în cadrul procedurii de preluare a
mişcărilor, în afară de tipărirea buletinului, în calculator se mai produc câteva operaţii foarte
importante şi anume: se efectuează modificările de solduri ce decurg din mişcarea respectivă
de valută, se calculează echivalentul în curs mediu a sumei implicată în mişcare, iar mişcarea
este înregistrată în tabelul de încasări-plăţi. De asemeni mişcarea este marcată în tabelul cu
mişcări astfel încât dacă ulterior, operatorul mai doreşte să tipărească odată buletinul,
mişcarea la care se referă buletinul să nu fie operată din nou în soldurile de valută sau în
registrul de încasări-plăţi. Toate acestea sunt legate de tipărirea bonului, pentru că tipărirea
este dovada că mişcarea a fost acceptată şi nu există riscul să înregistrăm în gestiune efectele
unei mişcări care ulterior, din cine ştie ce motive să fie abandonată, ceea ce ar impune
refacerea soldurilor şi a tuturor înregistrărilor enumerate mai sus.
La fel de complicată s-a dovedit şi procedura de obţinere a raportului către BNR. Spaţiul
acestei lucrări nu permite comentarea tuturor procedurilor, dar shemele lor prezentate în
secţiunea 2.4.4 pot contribui la formarea unei imagini despre complexitatea unei proceduri
sau a alteia.
De asemeni, mi s-au părut interesante tehnicile prin care se vine în ajutorul utilizatorului şi se
evită tastări inutile de date ceea ce ar duce la suprasolicitarea acestuia, dar ar mări şi riscul
producerii unor greşeli de tastare. Am în vedere completarea automată a câmpurilor pentru
care se pot prelua date din tabele completate într-o etapă anterioară a procedurii sau câmpuri
50
ale căror valoaare poate fi calculată cu ajutorul câmpurilor pentru care datele sunt deja
introduse. De exemplu, în formularul Mişcări operatorul dispune de combox-uri pentru
câmpurile tip operaţie şi tip buletin de mişcare ceea ce îl scuteşte de a se mai gândi care
sunt tipurile de operaţii sau de mişcări şi îl fereşte de a riscul de a face greşeli de tastare. Cu
aceste combobox-uri operatorul trebuie doar să aleagă din lista oferită de combobox varianta
de răspuns care-i convine şi să o indice printr-un clic de mouse dat pe acea variantă.
În ce priveşte lucrul cu lei vechi şi lei noi, toată gestiunea se face în lei noi, dar când se pune
problema efectuării plăţii, aplicaţia dispune de posibilitatea fragmentării sumei incluse în
mişcare, în lei noi şi lei vechi ceea ce permite ţinerea la zi, automat, a monetarului.
Am convingerea că experienţa acumulată cu ocazia elaborării acestei aplicaţii informatice îmi
va permite ca în viitor să abordez nu numai aplicaţii dar şi subsisteme sau chiar sisteme
informatice.
51
BIBLIOGRAFIE
1. Nicolae Dumitru Davidescu, "Sisteme informatice financiar - bancare" vol. I şi II, Editura
All Beck, Bucureşti, 1998.
4. Iatan Elena, “Contabilitate de gestiune, Editura Muntenia & Leda, Constanţa, 2002.
6. Ştefan Florea, "Contabilitate financiară. Sinteze teoretice, aplicaţii practice, teste grilă",
Editura Ex Ponto, Constanţa, 2004.
10. Ioan Lungu, Gheorghe Sabău, ş. a., “Sisteme informatice: analiză, proiectare şi
implementare”, Ed. Economică, Bucuresti, 2003.
11. Ioan Roşca, Emilian Macovei, Nicolae Davidescu şi Vasile Răileanu, “Proiectarea
sistemelor informatice financiar-contabile”, Ed. Didactică şi Pedagogică, Bucureşti, 2003.
12. Dorin Zaharie şi Ioan Roşca, "Proiectarea obiectuală a sistemelor informatice", Ed.Dual
Tech, Bucureşti, 2003.
13. Nicolae Feleagă, “Tratat de contabilitate financiară”, Ed. economică, vol. I şi II,
Bucureşti, 2002.
14. Pavel Năstase şi alţii "BAZE DE DATE Microsoft ACCESS 2000 ", Editura Teora ,
Bucureşti, 2000.
52
Anexa cu programe sursă
Module program
Sub meniu_aplicatie()
Dim bara_meniu As CommandBar
bara_meniu.Visible = True
End Sub
Sub Not_Yet()
MsgBox "Programul pt. ac. optiune inca nu este disponibil"
End Sub
Modulul Jurnale
Sub Jurnale_zilnice()
Dim dbsexchange As Database
Dim total_stoc_initial_valuta_ref As Single
'ACESTA ESTE PROGRAMUL PENTRU INCHEIEREA ZILEI
Set dbsexchange = CurrentDb
rstdatefirma.MoveFirst
rstNOMENCLATOR.MoveFirst
rstNOMENCLATOR.MoveFirst
Do While Not rstNOMENCLATOR.EOF
'Daca Rata_in_raport_cu_referinta=0 inseamna ca valuta nu este utilizata in mod curent
If rstNOMENCLATOR!Rata_in_raport_cu_referinta > 0 Then
TOTAL_SOLD_VALUTA_REF = TOTAL_SOLD_VALUTA_REF + rstNOMENCLATOR!
Casa_in_valuta_echiv
TOTAL_INTRARI_REF = TOTAL_INTRARI_REF + rstNOMENCLATOR!Rulaj_intrari_valuta *
rstNOMENCLATOR!Rata_in_raport_cu_referinta
TOTAL_IESIRI_REF = TOTAL_IESIRI_REF + rstNOMENCLATOR!Rulaj_iesiri_valuta *
rstNOMENCLATOR!Rata_in_raport_cu_referinta
total_stoc_initial_valuta_ref = total_stoc_initial_valuta_ref + rstNOMENCLATOR!
Stoc_initial_in_valuta_echiv
Total_intrari_ref_misc = Total_intrari_ref_misc + rstNOMENCLATOR!Rulaj_intrari_valuta_misc *
rstNOMENCLATOR!Rata_in_raport_cu_referinta
Total_iesiri_ref_misc = Total_iesiri_ref_misc + rstNOMENCLATOR!Rulaj_iesiri_valuta_misc *
rstNOMENCLATOR!Rata_in_raport_cu_referinta
With rstjurnal_valute
.AddNew
'Urmatoarea instr. obliga sa rulam acest program la sf .zilei curente, pt. maine!
!data = DateAdd("d", 1, Date)
!Codvalut = rstNOMENCLATOR!Codvalut
!Casa_in_valuta = rstNOMENCLATOR!Casa_in_valuta
!Casa_in_valuta_echiv = rstNOMENCLATOR!Casa_in_valuta_echiv
!Stoc_initial_in_valuta = rstNOMENCLATOR!Stoc_initial_in_valuta
!Stoc_initial_in_valuta_echiv = rstNOMENCLATOR!Stoc_initial_in_valuta_echiv
!Rulaj_intrari_valuta = rstNOMENCLATOR!Rulaj_intrari_valuta
!Rulaj_iesiri_valuta = rstNOMENCLATOR!Rulaj_iesiri_valuta
!Rulaj_intrari_valuta_misc = rstNOMENCLATOR!Rulaj_intrari_valuta_misc
!Rulaj_iesiri_valuta_misc = rstNOMENCLATOR!Rulaj_iesiri_valuta_misc
!Cod_PSV = rstdatefirma!Cod_PSV
.Update
End With
End If
rstNOMENCLATOR.MoveNext
Loop
rstNOMENCLATOR.MoveFirst
Do While Not rstNOMENCLATOR.EOF
'Daca Rata_in_raport_cu_referinta=0 inseamna ca valuta nu este utilizata in mod curent
If rstNOMENCLATOR!Rata_in_raport_cu_referinta > 0 Then
rstNOMENCLATOR.Edit
rstNOMENCLATOR!Stoc_initial_in_valuta = rstNOMENCLATOR!Casa_in_valuta
rstNOMENCLATOR!Stoc_initial_in_valuta_echiv = rstNOMENCLATOR!Casa_in_valuta_echiv
rstNOMENCLATOR!Rulaj_intrari_valuta = 0
rstNOMENCLATOR!Rulaj_iesiri_valuta = 0
rstNOMENCLATOR!Rulaj_intrari_valuta_misc = 0
56
rstNOMENCLATOR!Rulaj_iesiri_valuta_misc = 0
rstNOMENCLATOR.Update
End If
rstNOMENCLATOR.MoveNext
Loop
With rstjurnal_sintetici
.AddNew
rstNOMENCLATOR.Close
rstjurnal_sintetici.Close
rstjurnal_valute.Close
rstdatefirma.Close
dbsexchange.Close
End Sub
meniu_aplicatie
Set v = CommandBars("exchange")
For i = 1 To 5
Set ultimul = v.Controls(i)
ultimul.Visible = False
Next i
rstdatefirma.Close
dbsexchange.Close
End Sub
rstdatefirma.MoveFirst
If rstdatefirma!nr_incercari_parola > 2 Then
MsgBox "Accesul blocat. Abandonati acest formular!"
Text25.Visible = False
'Text27.Visible = False
Exit Sub
End If
rstutil.Index = "primarykey"
rstutil.MoveFirst
'MsgBox Me!Text25
rstutil.Seek "=", Me!Text25
If rstutil.NoMatch Then
MsgBox " cod operator gresit!"
Exit Sub
End If
rstdatefirma.Edit
rstdatefirma!nr_incercari_parola = rstdatefirma!nr_incercari_parola + 1
rstdatefirma.Update
If rstutil!parola <> Me!Text27 Then
MsgBox "parola gresita!"
Exit Sub
Else
rstdatefirma.Edit
rstdatefirma!Cod_utilizator_in_tura = Me!Text25
rstdatefirma.Update
Me!Command4.Visible = True
End If
rstutil.Close
rstdatefirma.Close
dbsexchange.Close
End Sub
rstdatefirma.MoveFirst
If rstdatefirma!nr_incercari_parola > 3 Then Exit Sub
Set v = CommandBars("exchange")
For i = 1 To 5
Set ultimul = v.Controls(i)
ultimul.Visible = True
Next i
Me!Label26.Visible = False
Me!Text25.Visible = False
Me!Label28.Visible = False
Me!Text27.Visible = False
58
Me!Box5.Visible = False
Me!Command4.Transparent = True
rstdatefirma.Close
dbsexchange.Close
End Sub
Formularul Nomenclt_valuta
Private Sub Form_Current()
Me.Rata_in_raport_cu_referinta_Label.Visible = True
Me.Text22.Visible = True
Me.Label24.Visible = True
Me.Rata_in_raport_cu_referinta.Visible = True
Me.Command21.Visible = True
Me.Rata_cumpar_lei_Label.Visible = True
Me.Text25.Visible = True
Me.Rata_cumpar_lei.Visible = True
Me.Label19.Visible = True
Me.Rata_vand_lei_Label.Visible = True
Me.Text26.Visible = True
Me.Rata_vand_lei.Visible = True
Me.Label20.Visible = True
Me.o_singura_valuta.Visible = True
Me.Command21.Visible = False
If Me.Codvalut = "USD" Then Me.Command21.Visible = True
End If
End Sub
59
rstNOMENCLATOR.MoveFirst
Me.Rata_cumpar_lei = Me.Rata_in_raport_cu_referinta * rstNOMENCLATOR!Rata_cumpar_lei
Me.Rata_vand_lei = Me.Rata_in_raport_cu_referinta * rstNOMENCLATOR!Rata_vand_lei
rstNOMENCLATOR.Close
dbsexchange.Close
End Sub
Private Sub Command21_Click()
On Error GoTo Err_Command21_Click
If Me.nrcrt = 2 Then
Dim dbsexchange As Database
Dim rata_cumpar, rata_vand As Single
Set dbsexchange = CurrentDb
'Dim rstoperatii As Recordset
Set rstNOMENCLATOR = dbsexchange.OpenRecordset("nomenclt_valuta", dbOpenTable)
Set rstISTORIC = dbsexchange.OpenRecordset("ISTORIC_RATE_SCHIMB", dbOpenTable)
rstNOMENCLATOR.Index = "primarykey"
rstNOMENCLATOR.MoveFirst
rstNOMENCLATOR.Move 1
rata_cumpar = rstNOMENCLATOR!Rata_cumpar_lei
rata_vand = rstNOMENCLATOR!Rata_vand_lei
rstNOMENCLATOR.Move 1
Do While Not rstNOMENCLATOR.EOF
'Daca Rata_in_raport_cu_referinta=0 inseamna ca valuta nu este utilizata in mod curent
If rstNOMENCLATOR!Rata_in_raport_cu_referinta > 0 Then
rstNOMENCLATOR.Edit
rstNOMENCLATOR!Rata_cumpar_lei = rstNOMENCLATOR!Rata_in_raport_cu_referinta * rata_cumpar
rstNOMENCLATOR!Rata_vand_lei = rstNOMENCLATOR!Rata_in_raport_cu_referinta * rata_vand
rstNOMENCLATOR.Update
rstISTORIC.AddNew
rstISTORIC!data = Date
rstISTORIC!ora = Time()
rstISTORIC!cod_valuta = rstNOMENCLATOR!Codvalut
rstISTORIC!rata_cumpar_in_lei = rstNOMENCLATOR!Rata_cumpar_lei
rstISTORIC!rata_vand_in_lei = rstNOMENCLATOR!Rata_vand_lei
rstISTORIC.Update
End If
rstNOMENCLATOR.MoveNext
Loop
End If
rstISTORIC.Close
rstNOMENCLATOR.Close
dbsexchange.Close
Exit_Command21_Click:
Exit Sub
Err_Command21_Click:
MsgBox Err.Description
Resume Exit_Command21_Click
End Sub
Private Sub o_singura_valuta_Click()
On Error GoTo Err_o_singura_valuta_Click
' Acest buton creaza un articol cu cele doua rate noi introduse din formular
Dim dbsexchange As Database
rstISTORIC.Close
dbsexchange.Close
Exit_o_singura_valuta_Click:
Exit Sub
Err_o_singura_valuta_Click:
MsgBox Err.Description
Resume Exit_o_singura_valuta_Click
End Sub
Private Sub Command29_Click()
On Error GoTo Err_Command29_Click
DoCmd.Close
Exit_Command29_Click:
Exit Sub
Err_Command29_Click:
MsgBox Err.Description
Resume Exit_Command29_Click
End Sub
DoCmd.Close
Exit_Command4_Click:
Exit Sub
Err_Command4_Click:
MsgBox Err.Description
Resume Exit_Command4_Click
End Sub
rstdatefirma.Edit
rstdatefirma!Nume_luna = lunile(luna)
rstdatefirma.Update
rstdatefirma.Close
dbsexchange.Close
End Sub
Private Sub vizualizare_Click()
Dim Interogare As QueryDef
Dim prmdata1 As Parameter
Dim dbsexchange As Database
Set dbsexchange = CurrentDb
DoCmd.OpenQuery "golesc_raport_BNR_tabel"
DoCmd.OpenQuery "golesc_sold_init_final"
Interogare.Parameters("prmdata1") = rstdatefirma!luna
Interogare.Execute
'MsgBox "Am extras din JURNAL_SOLD_RULAJ_VALUTE articolele referitoare la luna crt" & vbCr & _
"si le-am depus in sold_init_sold_final "
If rst_init_final.RecordCount = 0 Then
'MsgBox "in aceasta luna nu au fost tranzactii"
Exit Sub
End If
rst_init_final.MoveFirst
INCEP_LUNA = rst_init_final!data
Interogare.Parameters("prmdata1") = INCEP_LUNA
Interogare.Execute
'MsgBox "Am extras in SOLD_INIT_BNR soldurile initiale din prima zi din luna crt"
DoCmd.OpenQuery "GOLESC_SOLD_FINAL_BNR"
rst_init_final.MoveLast
sf_luna = rst_init_final!data
Interogare.Parameters("prmdata1") = sf_luna
63
Interogare.Execute
'MsgBox "Am extras in SOLD_FINAL_BNR soldurile finale din ultima zi din luna crt"
Set rstTABEL_final = dbsexchange.OpenRecordset("Raport_BNR_final", dbOpenTable)
rstTable.Close
rstTabel.Close
rstTABEL_final.Close
rstdatefirma.Close
dbsexchange.Close
End Sub
Private Sub tiparire_Click()
DoCmd.OpenReport "Raport_BNR", acViewPrint
DoCmd.Close
End Sub
DoCmd.Close
Exit_Command4_Click:
Exit Sub
Err_Command4_Click:
MsgBox Err.Description
Resume Exit_Command4_Click
End Sub
64
rstdatefirma.MoveFirst
rstdatefirma.Edit
rstdatefirma!Nume_luna = lunile(luna)
rstdatefirma.Update
rstdatefirma.Close
dbsexchange.Close
End Sub
Private Sub vizualizare_Click()
Dim Interogare As QueryDef
Dim prmdata1 As Parameter
Dim dbsexchange As Database
Set dbsexchange = CurrentDb
Interogare.Parameters("prmdata1") = rstdatefirma!luna
Interogare.Execute
'MsgBox "Am facut tabelul Total_miscari_table cu tranzactii pe luna crt extrase din miscari"
DoCmd.OpenQuery "golesc_total_misc_tabel"
rstTable.Close
rstTabel.Close
rstTABEL_final.Close
rstdatefirma.Close
dbsexchange.Close
DoCmd.Close
End Sub
Private Sub tiparire_Click()
DoCmd.OpenReport "Raport_totaluri_misc", acViewPrint
End Sub
66
Formularul Miscari
Private Sub Nr_Buletin_miscare_Enter()
Dim dbscontabil As Database
Set dbscontabil = CurrentDb
Set rstbuletin = dbscontabil.OpenRecordset("miscari", dbOpenTable)
If rstbuletin.BOF Then
MsgBox "Deocamdata nu este inregistrata nici o cumparare, deci puteti pune orice nr si serie"
Exit Sub
End If
rstbuletin.MoveLast
Me!Nr_Buletin_miscare = rstbuletin!Nr_Buletin_miscare
Me!Seria_buletin = rstbuletin!Seria_buletin
MsgBox "Noul buletin este completat cu nr si seria celui precedent. Faceti modificarile ce se impun!"
rstbuletin.Close
dbscontabil.Close
End Sub
rstnomenclt.MoveFirst
rstnomenclt.Seek "=", Me!cod_valut
If rstnomenclt.NoMatch Then MsgBox "Cod valuta eronat sau nu este trecut in nomenclator"
If ((Me!Tip_operatie = "intrare") Or (Me!Tip_operatie = "ridicare")) Then
Me!incas_in_valuta_echiv = Me!Suma * rstnomenclt!Rata_in_raport_cu_referinta
Me!plati_in_valuta_echiv = 0
End If
If ((Me!Tip_operatie = "iesire") Or (Me!Tip_operatie = "depunere")) Then
Me!incas_in_valuta_echiv = 0
Me!plati_in_valuta_echiv = Me!Suma * rstnomenclt!Rata_in_raport_cu_referinta
End If
rstnomenclt.Close
dbsexchange.Close
End Sub
67
!Seria_buletin = Me!Seria_buletin
!Tip_operatie = Me!Tip_operatie
!Tip_buletin_miscare = Me!Tip_buletin_miscare
!Sursa_Destinatia = Me!Sursa_Destinatia
!Data_operatie = Me!Data_operatie
!Descriere_miscare = Me!Descriere_miscare
!cod_valut = Me!cod_valut
!Suma = Me!Suma
!plati_in_valuta_echiv = Me!plati_in_valuta_echiv
!incas_in_valuta_echiv = Me!incas_in_valuta_echiv
!Cod_utilizator = Me!Cod_utilizator
.Update
End With
End If
DoCmd.RunMacro "vad_raport_miscari"
rstdatefirma.Close
rstraport.Close
dbsexchange.Close
End Sub
.AddNew
!Cod_PSV = Me!Cod_PSV
!Cod_utilizator_in_tura = Me!Cod_utilizator
!tip_op = Me!Tip_operatie
!document = "buletin miscari"
!nr_doc = Me!Nr_Buletin_miscare
!seria_doc = Me!Seria_buletin
!data_doc = Me!Data_operatie
!cod_valut = Me!cod_valut
rstnomenclt.MoveFirst
rstnomenclt.Seek "=", Me!cod_valut
rstnomenclt.Edit
If ((Me!Tip_operatie = "intrare") Or (Me!Tip_operatie = "ridicare")) Then
!suma_incas = Me!Suma
!suma_plat = 0
Me!incas_in_valuta_echiv = Me!Suma * rstnomenclt!Rata_in_raport_cu_referinta
!incas_in_valuta_echiv = Me!incas_in_valuta_echiv
!plati_in_valuta_echiv = 0
68
Me!plati_in_valuta_echiv = 0
rstnomenclt!Casa_in_valuta = rstnomenclt!Casa_in_valuta + Me!Suma
rstnomenclt!Rulaj_intrari_valuta_misc = rstnomenclt!Rulaj_intrari_valuta_misc + Me!Suma
End If
Me!descarcat_in_incaplat = 1
.Update
End With
raport:
Set rstraport = dbsexchange.OpenRecordset("Raport_miscari", dbOpenTable)
begin: If rstraport.RecordCount > 0 Then
rstraport.MoveLast
rstraport.Delete
GoTo begin
Else
With rstraport
.AddNew
!Nr_Buletin_miscare = Me!Nr_Buletin_miscare
!Seria_buletin = Me!Seria_buletin
!Tip_operatie = Me!Tip_operatie
!Tip_buletin_miscare = Me!Tip_buletin_miscare
!Sursa_Destinatia = Me!Sursa_Destinatia
!Data_operatie = Me!Data_operatie
!Descriere_miscare = Me!Descriere_miscare
!cod_valut = Me!cod_valut
!Suma = Me!Suma
!plati_in_valuta_echiv = Me!plati_in_valuta_echiv
!incas_in_valuta_echiv = Me!incas_in_valuta_echiv
!Cod_utilizator = Me!Cod_utilizator
.Update
End With
End If
DoCmd.RunMacro "Print_raport_miscari"
rstincaplat.Close
rstdatefirma.Close
rstraport.Close
dbsexchange.Close
End Sub
Private Sub Iesire_Click()
On Error GoTo Err_Iesire_Click
Dim dbsexchange As Database
Set dbsexchange = CurrentDb
69
Bi
Decizii r
SISTEM
Rolul ro DE i lo
nestructurate
ti c
p e rt
INFORMAT
CONDUCE
sistemelor a +S
ae
x
ist DoCmd.Close
IRE
IONAL em in i re
informaţion
I(neprogramate)
E
Sisteme
ISN
e
i j
dep r a l e
rstdatefirma.Close
es dbsexchange.Close
ale
(inclusiv
IE
N SISTEM în
(decizional) e d g r up
IT
Deciziitem
informatic)
s ur Exit_Iesire_Click:
conducerea
E
T
R i
CONDUS
SSISTEME
S
semistructurate
i lo
rd
lu e Exit Sub
cr
u
Err_Iesire_Click:
MsgBox Err.Description
Resume Exit_Iesire_Click
End Sub
Private Sub renunt_Click()
On Error GoTo Err_renunt_Click
Err_renunt_Click:
MsgBox Err.Description
Resume Exit_renunt_Click
End Sub
70